{
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IOracle",
          "name": "_oracle",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "Module_OnlyOracle",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "MultipleCallbackModule_InvalidParameters",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "MultipleCallbackModule_TargetHasNoCode",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_target",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "Callback",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_finalizer",
          "type": "address"
        }
      ],
      "name": "RequestFinalized",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "ORACLE",
      "outputs": [
        {
          "internalType": "contract IOracle",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        }
      ],
      "name": "decodeRequestData",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address[]",
              "name": "targets",
              "type": "address[]"
            },
            {
              "internalType": "bytes[]",
              "name": "data",
              "type": "bytes[]"
            }
          ],
          "internalType": "struct IMultipleCallbacksModule.RequestParameters",
          "name": "_params",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "_finalizer",
          "type": "address"
        }
      ],
      "name": "finalizeRequest",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "moduleName",
      "outputs": [
        {
          "internalType": "string",
          "name": "_moduleName",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "oracle",
      "outputs": [
        {
          "internalType": "address",
          "name": "_oracle",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        }
      ],
      "name": "requestData",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "_requestData",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "setupRequest",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": {
    "object": "0x60a060405234801561001057600080fd5b5060405161100d38038061100d83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610f6e61009f6000396000818160d801528181610141015281816101b6015261024f0152610f6e6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806338013f021161005b57806338013f02146100d35780634d610a461461011f5780637dc0d1d01461013f57806393f0899a1461016557600080fd5b80632e76be2a14610082578063309de607146100975780633661346b146100aa575b600080fd5b61009561009036600461067f565b61019e565b005b6100956100a5366004610720565b610237565b6100bd6100b8366004610750565b610447565b6040516100ca91906107d7565b60405180910390f35b6100fa7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ca565b61013261012d366004610750565b6104e1565b6040516100ca91906107f1565b7f00000000000000000000000000000000000000000000000000000000000000006100fa565b60408051808201909152601781527f4d756c7469706c6543616c6c6261636b734d6f64756c6500000000000000000060208201526100bd565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461020d576040517fbb44f97c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083815260208190526040902061022682848361099a565b506102328383836105a5565b505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102a6576040517fbb44f97c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006102b1836104e1565b80515190915060005b818110156103f55782518051829081106102d6576102d6610ab5565b602002602001015173ffffffffffffffffffffffffffffffffffffffff168360200151828151811061030a5761030a610ab5565b602002602001015160405161031f9190610ae4565b6000604051808303816000865af19150503d806000811461035c576040519150601f19603f3d011682016040523d82523d6000602084013e610361565b606091505b5050508260000151818151811061037a5761037a610ab5565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16857fd131974f482f422f20ac02414f7a54690924a59b94bf4d3e90ff57a042c708ed856020015184815181106103d0576103d0610ab5565b60200260200101516040516103e591906107d7565b60405180910390a36001016102ba565b5060405173ffffffffffffffffffffffffffffffffffffffff8416815284907f898b6025fbfa120421d24d3735eb8c51885040c2ba00c10ffe007e3356f058ff9060200160405180910390a250505050565b6000602081905290815260409020805461046090610901565b80601f016020809104026020016040519081016040528092919081815260200182805461048c90610901565b80156104d95780601f106104ae576101008083540402835291602001916104d9565b820191906000526020600020905b8154815290600101906020018083116104bc57829003601f168201915b505050505081565b60408051808201909152606080825260208201526000828152602081905260409020805461050e90610901565b80601f016020809104026020016040519081016040528092919081815260200182805461053a90610901565b80156105875780601f1061055c57610100808354040283529160200191610587565b820191906000526020600020905b81548152906001019060200180831161056a57829003601f168201915b505050505080602001905181019061059f9190610cae565b92915050565b60006105b382840184610e5b565b8051516020820151519192509081146105f8576040517f2ceb1b9b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8181101561067757825180518290811061061757610617610ab5565b602002602001015173ffffffffffffffffffffffffffffffffffffffff163b60000361066f576040517f6fc72c2c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001016105fb565b505050505050565b60008060006040848603121561069457600080fd5b83359250602084013567ffffffffffffffff808211156106b357600080fd5b818601915086601f8301126106c757600080fd5b8135818111156106d657600080fd5b8760208285010111156106e857600080fd5b6020830194508093505050509250925092565b73ffffffffffffffffffffffffffffffffffffffff8116811461071d57600080fd5b50565b6000806040838503121561073357600080fd5b823591506020830135610745816106fb565b809150509250929050565b60006020828403121561076257600080fd5b5035919050565b60005b8381101561078457818101518382015260200161076c565b50506000910152565b600081518084526107a5816020860160208601610769565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006107ea602083018461078d565b9392505050565b6020808252825160408383015280516060840181905260009291820190839060808601905b8083101561084c57835173ffffffffffffffffffffffffffffffffffffffff168252928401926001929092019190840190610816565b50838701517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08783038101604089015281518084529186019450925081850190600581901b8301860160005b828110156108c457858583030184526108b282885161078d565b96880196938801939150600101610898565b509998505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c9082168061091557607f821691505b60208210810361094e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f82111561023257600081815260208120601f850160051c8101602086101561097b5750805b601f850160051c820191505b8181101561067757828155600101610987565b67ffffffffffffffff8311156109b2576109b26108d2565b6109c6836109c08354610901565b83610954565b6000601f841160018114610a1857600085156109e25750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355610aae565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b82811015610a675786850135825560209485019460019092019101610a47565b5086821015610aa2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008251610af6818460208701610769565b9190910192915050565b6040805190810167ffffffffffffffff81118282101715610b2357610b236108d2565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610b7057610b706108d2565b604052919050565b600067ffffffffffffffff821115610b9257610b926108d2565b5060051b60200190565b600067ffffffffffffffff821115610bb657610bb66108d2565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112610bf357600080fd5b81516020610c08610c0383610b78565b610b29565b82815260059290921b84018101918181019086841115610c2757600080fd5b8286015b84811015610ca357805167ffffffffffffffff811115610c4b5760008081fd5b8701603f81018913610c5d5760008081fd5b848101516040610c6f610c0383610b9c565b8281528b82848601011115610c845760008081fd5b610c9383898301848701610769565b8652505050918301918301610c2b565b509695505050505050565b60006020808385031215610cc157600080fd5b825167ffffffffffffffff80821115610cd957600080fd5b9084019060408287031215610ced57600080fd5b610cf5610b00565b825182811115610d0457600080fd5b8301601f81018813610d1557600080fd5b8051610d23610c0382610b78565b81815260059190911b8201860190868101908a831115610d4257600080fd5b928701925b82841015610d69578351610d5a816106fb565b82529287019290870190610d47565b84525050508284015182811115610d7f57600080fd5b610d8b88828601610be2565b948201949094529695505050505050565b600082601f830112610dad57600080fd5b81356020610dbd610c0383610b78565b82815260059290921b84018101918181019086841115610ddc57600080fd5b8286015b84811015610ca357803567ffffffffffffffff811115610e005760008081fd5b8701603f81018913610e125760008081fd5b848101356040610e24610c0383610b9c565b8281528b82848601011115610e395760008081fd5b8282850189830137600092810188019290925250845250918301918301610de0565b60006020808385031215610e6e57600080fd5b823567ffffffffffffffff80821115610e8657600080fd5b9084019060408287031215610e9a57600080fd5b610ea2610b00565b823582811115610eb157600080fd5b8301601f81018813610ec257600080fd5b8035610ed0610c0382610b78565b81815260059190911b8201860190868101908a831115610eef57600080fd5b928701925b82841015610f16578335610f07816106fb565b82529287019290870190610ef4565b84525050508284013582811115610f2c57600080fd5b610d8b88828601610d9c56fea264697066735822122097243898d182286901249d09bec670f91b1ebb4d2c0f0ec8f6fba305d2157c7864736f6c63430008130033",
    "sourceMap": "414:1769:46:-:0;;;487:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;353:16:0;;;414:1769:46;;14:306:113;100:6;153:2;141:9;132:7;128:23;124:32;121:52;;;169:1;166;159:12;121:52;195:16;;-1:-1:-1;;;;;240:31:113;;230:42;;220:70;;286:1;283;276:12;220:70;309:5;14:306;-1:-1:-1;;;14:306:113:o;:::-;414:1769:46;;;;;;;;;;;;;;;;;;;;;;;;;;;",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c806338013f021161005b57806338013f02146100d35780634d610a461461011f5780637dc0d1d01461013f57806393f0899a1461016557600080fd5b80632e76be2a14610082578063309de607146100975780633661346b146100aa575b600080fd5b61009561009036600461067f565b61019e565b005b6100956100a5366004610720565b610237565b6100bd6100b8366004610750565b610447565b6040516100ca91906107d7565b60405180910390f35b6100fa7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ca565b61013261012d366004610750565b6104e1565b6040516100ca91906107f1565b7f00000000000000000000000000000000000000000000000000000000000000006100fa565b60408051808201909152601781527f4d756c7469706c6543616c6c6261636b734d6f64756c6500000000000000000060208201526100bd565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461020d576040517fbb44f97c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083815260208190526040902061022682848361099a565b506102328383836105a5565b505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102a6576040517fbb44f97c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006102b1836104e1565b80515190915060005b818110156103f55782518051829081106102d6576102d6610ab5565b602002602001015173ffffffffffffffffffffffffffffffffffffffff168360200151828151811061030a5761030a610ab5565b602002602001015160405161031f9190610ae4565b6000604051808303816000865af19150503d806000811461035c576040519150601f19603f3d011682016040523d82523d6000602084013e610361565b606091505b5050508260000151818151811061037a5761037a610ab5565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16857fd131974f482f422f20ac02414f7a54690924a59b94bf4d3e90ff57a042c708ed856020015184815181106103d0576103d0610ab5565b60200260200101516040516103e591906107d7565b60405180910390a36001016102ba565b5060405173ffffffffffffffffffffffffffffffffffffffff8416815284907f898b6025fbfa120421d24d3735eb8c51885040c2ba00c10ffe007e3356f058ff9060200160405180910390a250505050565b6000602081905290815260409020805461046090610901565b80601f016020809104026020016040519081016040528092919081815260200182805461048c90610901565b80156104d95780601f106104ae576101008083540402835291602001916104d9565b820191906000526020600020905b8154815290600101906020018083116104bc57829003601f168201915b505050505081565b60408051808201909152606080825260208201526000828152602081905260409020805461050e90610901565b80601f016020809104026020016040519081016040528092919081815260200182805461053a90610901565b80156105875780601f1061055c57610100808354040283529160200191610587565b820191906000526020600020905b81548152906001019060200180831161056a57829003601f168201915b505050505080602001905181019061059f9190610cae565b92915050565b60006105b382840184610e5b565b8051516020820151519192509081146105f8576040517f2ceb1b9b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8181101561067757825180518290811061061757610617610ab5565b602002602001015173ffffffffffffffffffffffffffffffffffffffff163b60000361066f576040517f6fc72c2c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001016105fb565b505050505050565b60008060006040848603121561069457600080fd5b83359250602084013567ffffffffffffffff808211156106b357600080fd5b818601915086601f8301126106c757600080fd5b8135818111156106d657600080fd5b8760208285010111156106e857600080fd5b6020830194508093505050509250925092565b73ffffffffffffffffffffffffffffffffffffffff8116811461071d57600080fd5b50565b6000806040838503121561073357600080fd5b823591506020830135610745816106fb565b809150509250929050565b60006020828403121561076257600080fd5b5035919050565b60005b8381101561078457818101518382015260200161076c565b50506000910152565b600081518084526107a5816020860160208601610769565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006107ea602083018461078d565b9392505050565b6020808252825160408383015280516060840181905260009291820190839060808601905b8083101561084c57835173ffffffffffffffffffffffffffffffffffffffff168252928401926001929092019190840190610816565b50838701517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08783038101604089015281518084529186019450925081850190600581901b8301860160005b828110156108c457858583030184526108b282885161078d565b96880196938801939150600101610898565b509998505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c9082168061091557607f821691505b60208210810361094e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f82111561023257600081815260208120601f850160051c8101602086101561097b5750805b601f850160051c820191505b8181101561067757828155600101610987565b67ffffffffffffffff8311156109b2576109b26108d2565b6109c6836109c08354610901565b83610954565b6000601f841160018114610a1857600085156109e25750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355610aae565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b82811015610a675786850135825560209485019460019092019101610a47565b5086821015610aa2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008251610af6818460208701610769565b9190910192915050565b6040805190810167ffffffffffffffff81118282101715610b2357610b236108d2565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610b7057610b706108d2565b604052919050565b600067ffffffffffffffff821115610b9257610b926108d2565b5060051b60200190565b600067ffffffffffffffff821115610bb657610bb66108d2565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112610bf357600080fd5b81516020610c08610c0383610b78565b610b29565b82815260059290921b84018101918181019086841115610c2757600080fd5b8286015b84811015610ca357805167ffffffffffffffff811115610c4b5760008081fd5b8701603f81018913610c5d5760008081fd5b848101516040610c6f610c0383610b9c565b8281528b82848601011115610c845760008081fd5b610c9383898301848701610769565b8652505050918301918301610c2b565b509695505050505050565b60006020808385031215610cc157600080fd5b825167ffffffffffffffff80821115610cd957600080fd5b9084019060408287031215610ced57600080fd5b610cf5610b00565b825182811115610d0457600080fd5b8301601f81018813610d1557600080fd5b8051610d23610c0382610b78565b81815260059190911b8201860190868101908a831115610d4257600080fd5b928701925b82841015610d69578351610d5a816106fb565b82529287019290870190610d47565b84525050508284015182811115610d7f57600080fd5b610d8b88828601610be2565b948201949094529695505050505050565b600082601f830112610dad57600080fd5b81356020610dbd610c0383610b78565b82815260059290921b84018101918181019086841115610ddc57600080fd5b8286015b84811015610ca357803567ffffffffffffffff811115610e005760008081fd5b8701603f81018913610e125760008081fd5b848101356040610e24610c0383610b9c565b8281528b82848601011115610e395760008081fd5b8282850189830137600092810188019290925250845250918301918301610de0565b60006020808385031215610e6e57600080fd5b823567ffffffffffffffff80821115610e8657600080fd5b9084019060408287031215610e9a57600080fd5b610ea2610b00565b823582811115610eb157600080fd5b8301601f81018813610ec257600080fd5b8035610ed0610c0382610b78565b81815260059190911b8201860190868101908a831115610eef57600080fd5b928701925b82841015610f16578335610f07816106fb565b82529287019290870190610ef4565b84525050508284013582811115610f2c57600080fd5b610d8b88828601610d9c56fea264697066735822122097243898d182286901249d09bec670f91b1ebb4d2c0f0ec8f6fba305d2157c7864736f6c63430008130033",
    "sourceMap": "414:1769:46:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;695:175:0;;;;;;:::i;:::-;;:::i;:::-;;1661:520:46;;;;;;:::i;:::-;;:::i;237:68:0:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;201:31;;;;;;;;2345:42:113;2333:55;;;2315:74;;2303:2;2288:18;201:31:0;2153:242:113;581:179:46;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;571:94:0:-;653:6;571:94;;790:120:46;866:39;;;;;;;;;;;;;;;;;790:120;;695:175:0;472:10;:29;494:6;472:29;;468:61;;510:19;;;;;;;;;;;;;;468:61;791:11:::1;:23:::0;;;::::1;::::0;;;;;;:31:::1;817:5:::0;;791:23;:31:::1;:::i;:::-;;828:37;847:10;859:5;;828:18;:37::i;:::-;695:175:::0;;;:::o;1661:520:46:-;472:10:0;:29;494:6;472:29;;468:61;;510:19;;;;;;;;;;;;;;468:61;1807:32:46::1;1842:29;1860:10;1842:17;:29::i;:::-;1895:15:::0;;:22;1807:64;;-1:-1:-1;1877:15:46::1;1924:201;1946:7;1941:2;:12;1924:201;;;1964:15:::0;;:19;;1980:2;;1964:19;::::1;;;;;:::i;:::-;;;;;;;:24;;1989:7;:12;;;2002:2;1989:16;;;;;;;;:::i;:::-;;;;;;;1964:42;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2040:7;:15;;;2056:2;2040:19;;;;;;;;:::i;:::-;;;;;;;2019:59;;2028:10;2019:59;2061:7;:12;;;2074:2;2061:16;;;;;;;;:::i;:::-;;;;;;;2019:59;;;;;;:::i;:::-;;;;;;;;2106:4;;1924:201;;;-1:-1:-1::0;2136:40:46::1;::::0;2345:42:113;2333:55;;2315:74;;2153:10:46;;2136:40:::1;::::0;2303:2:113;2288:18;2136:40:46::1;;;;;;;1801:380;;1661:520:::0;;:::o;237:68:0:-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;581:179:46:-;-1:-1:-1;;;;;;;;;;;;;;;;;710:11:46;:23;;;;;;;;;;699:56;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;689:66;581:179;-1:-1:-1;;581:179:46:o;1129:485::-;1217:32;1252:38;;;;1263:5;1252:38;:::i;:::-;1314:15;;:22;1357:12;;;;:19;1217:73;;-1:-1:-1;1314:22:46;1346:30;;1342:85;;1385:42;;;;;;;;;;;;;;1342:85;1439:10;1434:176;1456:7;1451:2;:12;1434:176;;;1478:15;;:19;;1494:2;;1478:19;;;;;;:::i;:::-;;;;;;;:31;;;1513:1;1478:36;1474:89;;1523:40;;;;;;;;;;;;;;1474:89;1591:4;;1434:176;;;;1211:403;;1129:485;;;:::o;14:659:113:-;93:6;101;109;162:2;150:9;141:7;137:23;133:32;130:52;;;178:1;175;168:12;130:52;214:9;201:23;191:33;;275:2;264:9;260:18;247:32;298:18;339:2;331:6;328:14;325:34;;;355:1;352;345:12;325:34;393:6;382:9;378:22;368:32;;438:7;431:4;427:2;423:13;419:27;409:55;;460:1;457;450:12;409:55;500:2;487:16;526:2;518:6;515:14;512:34;;;542:1;539;532:12;512:34;587:7;582:2;573:6;569:2;565:15;561:24;558:37;555:57;;;608:1;605;598:12;555:57;639:2;635;631:11;621:21;;661:6;651:16;;;;;14:659;;;;;:::o;678:154::-;764:42;757:5;753:54;746:5;743:65;733:93;;822:1;819;812:12;733:93;678:154;:::o;837:315::-;905:6;913;966:2;954:9;945:7;941:23;937:32;934:52;;;982:1;979;972:12;934:52;1018:9;1005:23;995:33;;1078:2;1067:9;1063:18;1050:32;1091:31;1116:5;1091:31;:::i;:::-;1141:5;1131:15;;;837:315;;;;;:::o;1157:180::-;1216:6;1269:2;1257:9;1248:7;1244:23;1240:32;1237:52;;;1285:1;1282;1275:12;1237:52;-1:-1:-1;1308:23:113;;1157:180;-1:-1:-1;1157:180:113:o;1342:250::-;1427:1;1437:113;1451:6;1448:1;1445:13;1437:113;;;1527:11;;;1521:18;1508:11;;;1501:39;1473:2;1466:10;1437:113;;;-1:-1:-1;;1584:1:113;1566:16;;1559:27;1342:250::o;1597:329::-;1638:3;1676:5;1670:12;1703:6;1698:3;1691:19;1719:76;1788:6;1781:4;1776:3;1772:14;1765:4;1758:5;1754:16;1719:76;:::i;:::-;1840:2;1828:15;1845:66;1824:88;1815:98;;;;1915:4;1811:109;;1597:329;-1:-1:-1;;1597:329:113:o;1931:217::-;2078:2;2067:9;2060:21;2041:4;2098:44;2138:2;2127:9;2123:18;2115:6;2098:44;:::i;:::-;2090:52;1931:217;-1:-1:-1;;;1931:217:113:o;2400:1537::-;2593:2;2604:21;;;2695:13;;2744:4;2724:18;;;2717:32;2798:19;;2663:2;2648:18;;2826:22;;;2564:4;;2593:2;2906:21;;;2564:4;;2879:3;2864:19;;;2955:218;2969:6;2966:1;2963:13;2955:218;;;3034:13;;3049:42;3030:62;3018:75;;3148:15;;;;2991:1;2984:9;;;;;3113:12;;;;2955:218;;;-1:-1:-1;3210:15:113;;;3204:22;3245:66;3353:19;;;3349:28;;3342:4;3327:20;;3320:58;3428:21;;3458;;;3592:23;;;;-1:-1:-1;3245:66:113;-1:-1:-1;3497:12:113;;;;3549:1;3545:16;;;3536:26;;3532:35;;3635:1;3645:263;3661:8;3656:3;3653:17;3645:263;;;3752:2;3746:3;3738:6;3734:16;3730:25;3723:5;3716:40;3779:41;3813:6;3802:8;3796:15;3779:41;:::i;:::-;3845:17;;;;3884:14;;;;3769:51;-1:-1:-1;3689:1:113;3680:11;3645:263;;;-1:-1:-1;3925:6:113;2400:1537;-1:-1:-1;;;;;;;;;2400:1537:113:o;4397:184::-;4449:77;4446:1;4439:88;4546:4;4543:1;4536:15;4570:4;4567:1;4560:15;4586:437;4665:1;4661:12;;;;4708;;;4729:61;;4783:4;4775:6;4771:17;4761:27;;4729:61;4836:2;4828:6;4825:14;4805:18;4802:38;4799:218;;4873:77;4870:1;4863:88;4974:4;4971:1;4964:15;5002:4;4999:1;4992:15;4799:218;;4586:437;;;:::o;5153:544::-;5254:2;5249:3;5246:11;5243:448;;;5290:1;5315:5;5311:2;5304:17;5360:4;5356:2;5346:19;5430:2;5418:10;5414:19;5411:1;5407:27;5401:4;5397:38;5466:4;5454:10;5451:20;5448:47;;;-1:-1:-1;5489:4:113;5448:47;5544:2;5539:3;5535:12;5532:1;5528:20;5522:4;5518:31;5508:41;;5599:82;5617:2;5610:5;5607:13;5599:82;;;5662:17;;;5643:1;5632:13;5599:82;;5933:1321;6055:18;6050:3;6047:27;6044:53;;;6077:18;;:::i;:::-;6106:93;6195:3;6155:38;6187:4;6181:11;6155:38;:::i;:::-;6149:4;6106:93;:::i;:::-;6225:1;6250:2;6245:3;6242:11;6267:1;6262:734;;;;7040:1;7057:3;7054:93;;;-1:-1:-1;7113:19:113;;;7100:33;7054:93;5839:66;5830:1;5826:11;;;5822:84;5818:89;5808:100;5914:1;5910:11;;;5805:117;7160:78;;6235:1013;;6262:734;5100:1;5093:14;;;5137:4;5124:18;;6307:66;6298:76;;;6457:9;6479:229;6493:7;6490:1;6487:14;6479:229;;;6582:19;;;6569:33;6554:49;;6689:4;6674:20;;;;6642:1;6630:14;;;;6509:12;6479:229;;;6483:3;6736;6727:7;6724:16;6721:219;;;6856:66;6850:3;6844;6841:1;6837:11;6833:21;6829:94;6825:99;6812:9;6807:3;6803:19;6790:33;6786:139;6778:6;6771:155;6721:219;;;6983:1;6977:3;6974:1;6970:11;6966:19;6960:4;6953:33;6235:1013;;;5933:1321;;;:::o;7259:184::-;7311:77;7308:1;7301:88;7408:4;7405:1;7398:15;7432:4;7429:1;7422:15;7448:287;7577:3;7615:6;7609:13;7631:66;7690:6;7685:3;7678:4;7670:6;7666:17;7631:66;:::i;:::-;7713:16;;;;;7448:287;-1:-1:-1;;7448:287:113:o;7740:257::-;7812:4;7806:11;;;7844:17;;7891:18;7876:34;;7912:22;;;7873:62;7870:88;;;7938:18;;:::i;:::-;7974:4;7967:24;7740:257;:::o;8002:334::-;8073:2;8067:9;8129:2;8119:13;;8134:66;8115:86;8103:99;;8232:18;8217:34;;8253:22;;;8214:62;8211:88;;;8279:18;;:::i;:::-;8315:2;8308:22;8002:334;;-1:-1:-1;8002:334:113:o;8341:183::-;8401:4;8434:18;8426:6;8423:30;8420:56;;;8456:18;;:::i;:::-;-1:-1:-1;8501:1:113;8497:14;8513:4;8493:25;;8341:183::o;8529:245::-;8577:4;8610:18;8602:6;8599:30;8596:56;;;8632:18;;:::i;:::-;-1:-1:-1;8689:2:113;8677:15;8694:66;8673:88;8763:4;8669:99;;8529:245::o;8779:1401::-;8842:5;8895:3;8888:4;8880:6;8876:17;8872:27;8862:55;;8913:1;8910;8903:12;8862:55;8942:6;8936:13;8968:4;8992:60;9008:43;9048:2;9008:43;:::i;:::-;8992:60;:::i;:::-;9086:15;;;9172:1;9168:10;;;;9156:23;;9152:32;;;9117:12;;;;9196:15;;;9193:35;;;9224:1;9221;9214:12;9193:35;9260:2;9252:6;9248:15;9272:879;9288:6;9283:3;9280:15;9272:879;;;9367:3;9361:10;9403:18;9390:11;9387:35;9384:125;;;9463:1;9492:2;9488;9481:14;9384:125;9532:24;;9591:2;9583:11;;9579:21;-1:-1:-1;9569:119:113;;9642:1;9671:2;9667;9660:14;9569:119;9725:2;9721;9717:11;9711:18;9752:2;9782:48;9798:31;9826:2;9798:31;:::i;9782:48::-;9859:2;9850:7;9843:19;9903:3;9898:2;9893;9889;9885:11;9881:20;9878:29;9875:119;;;9948:1;9977:2;9973;9966:14;9875:119;10007:69;10073:2;10068;10059:7;10055:16;10050:2;10046;10042:11;10007:69;:::i;:::-;10089:20;;-1:-1:-1;;;10129:12:113;;;;9305;;9272:879;;;-1:-1:-1;10169:5:113;8779:1401;-1:-1:-1;;;;;;8779:1401:113:o;10185:1424::-;10291:6;10322:2;10365;10353:9;10344:7;10340:23;10336:32;10333:52;;;10381:1;10378;10371:12;10333:52;10414:9;10408:16;10443:18;10484:2;10476:6;10473:14;10470:34;;;10500:1;10497;10490:12;10470:34;10523:22;;;;10579:4;10561:16;;;10557:27;10554:47;;;10597:1;10594;10587:12;10554:47;10623:22;;:::i;:::-;10676:2;10670:9;10704:2;10694:8;10691:16;10688:36;;;10720:1;10717;10710:12;10688:36;10743:17;;10791:4;10783:13;;10779:27;-1:-1:-1;10769:55:113;;10820:1;10817;10810:12;10769:55;10849:2;10843:9;10872:60;10888:43;10928:2;10888:43;:::i;10872:60::-;10966:15;;;11048:1;11044:10;;;;11036:19;;11032:28;;;10997:12;;;;11072:19;;;11069:39;;;11104:1;11101;11094:12;11069:39;11128:11;;;;11148:216;11164:6;11159:3;11156:15;11148:216;;;11239:3;11233:10;11256:33;11281:7;11256:33;:::i;:::-;11302:20;;11181:12;;;;11342;;;;11148:216;;;11373:20;;-1:-1:-1;;;11424:11:113;;;11418:18;11448:16;;;11445:36;;;11477:1;11474;11467:12;11445:36;11513:65;11570:7;11559:8;11555:2;11551:17;11513:65;:::i;:::-;11497:14;;;11490:89;;;;11501:5;10185:1424;-1:-1:-1;;;;;;10185:1424:113:o;11614:1438::-;11666:5;11719:3;11712:4;11704:6;11700:17;11696:27;11686:55;;11737:1;11734;11727:12;11686:55;11773:6;11760:20;11799:4;11823:60;11839:43;11879:2;11839:43;:::i;11823:60::-;11917:15;;;12003:1;11999:10;;;;11987:23;;11983:32;;;11948:12;;;;12027:15;;;12024:35;;;12055:1;12052;12045:12;12024:35;12091:2;12083:6;12079:15;12103:920;12119:6;12114:3;12111:15;12103:920;;;12205:3;12192:17;12241:18;12228:11;12225:35;12222:125;;;12301:1;12330:2;12326;12319:14;12222:125;12370:24;;12429:2;12421:11;;12417:21;-1:-1:-1;12407:119:113;;12480:1;12509:2;12505;12498:14;12407:119;12570:2;12566;12562:11;12549:25;12597:2;12627:48;12643:31;12671:2;12643:31;:::i;12627:48::-;12704:2;12695:7;12688:19;12748:3;12743:2;12738;12734;12730:11;12726:20;12723:29;12720:119;;;12793:1;12822:2;12818;12811:14;12720:119;12896:2;12891;12887;12883:11;12878:2;12869:7;12865:16;12852:47;12946:1;12923:16;;;12919:25;;12912:36;;;;-1:-1:-1;12961:20:113;;-1:-1:-1;13001:12:113;;;;12136;;12103:920;;13057:1437;13152:6;13183:2;13226;13214:9;13205:7;13201:23;13197:32;13194:52;;;13242:1;13239;13232:12;13194:52;13282:9;13269:23;13311:18;13352:2;13344:6;13341:14;13338:34;;;13368:1;13365;13358:12;13338:34;13391:22;;;;13447:4;13429:16;;;13425:27;13422:47;;;13465:1;13462;13455:12;13422:47;13491:22;;:::i;:::-;13551:2;13538:16;13579:2;13569:8;13566:16;13563:36;;;13595:1;13592;13585:12;13563:36;13618:17;;13666:4;13658:13;;13654:27;-1:-1:-1;13644:55:113;;13695:1;13692;13685:12;13644:55;13731:2;13718:16;13754:60;13770:43;13810:2;13770:43;:::i;13754:60::-;13848:15;;;13930:1;13926:10;;;;13918:19;;13914:28;;;13879:12;;;;13954:19;;;13951:39;;;13986:1;13983;13976:12;13951:39;14010:11;;;;14030:223;14046:6;14041:3;14038:15;14030:223;;;14128:3;14115:17;14145:33;14170:7;14145:33;:::i;:::-;14191:20;;14063:12;;;;14231;;;;14030:223;;;14262:20;;-1:-1:-1;;;14320:11:113;;;14307:25;14344:16;;;14341:36;;;14373:1;14370;14363:12;14341:36;14409:54;14455:7;14444:8;14440:2;14436:17;14409:54;:::i",
    "linkReferences": {},
    "immutableReferences": {
      "10": [
        {
          "start": 216,
          "length": 32
        },
        {
          "start": 321,
          "length": 32
        },
        {
          "start": 438,
          "length": 32
        },
        {
          "start": 591,
          "length": 32
        }
      ]
    }
  },
  "methodIdentifiers": {
    "ORACLE()": "38013f02",
    "decodeRequestData(bytes32)": "4d610a46",
    "finalizeRequest(bytes32,address)": "309de607",
    "moduleName()": "93f0899a",
    "oracle()": "7dc0d1d0",
    "requestData(bytes32)": "3661346b",
    "setupRequest(bytes32,bytes)": "2e76be2a"
  },
  "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IOracle\",\"name\":\"_oracle\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"Module_OnlyOracle\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MultipleCallbackModule_InvalidParameters\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MultipleCallbackModule_TargetHasNoCode\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"Callback\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_finalizer\",\"type\":\"address\"}],\"name\":\"RequestFinalized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ORACLE\",\"outputs\":[{\"internalType\":\"contract IOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"}],\"name\":\"decodeRequestData\",\"outputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"targets\",\"type\":\"address[]\"},{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"internalType\":\"struct IMultipleCallbacksModule.RequestParameters\",\"name\":\"_params\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_finalizer\",\"type\":\"address\"}],\"name\":\"finalizeRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"moduleName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"_moduleName\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"_oracle\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"}],\"name\":\"requestData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"_requestData\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"setupRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Callback(bytes32,address,bytes)\":{\"params\":{\"_data\":\"The calldata forwarded to the _target\",\"_requestId\":\"The id of the request being finalized\",\"_target\":\"The target address for the callback\"}},\"RequestFinalized(bytes32,address)\":{\"params\":{\"_finalizer\":\"The address that initiated the finalization\",\"_requestId\":\"The ID of the request that was finalized\"}}},\"kind\":\"dev\",\"methods\":{\"decodeRequestData(bytes32)\":{\"params\":{\"_requestId\":\"The id of the request\"},\"returns\":{\"_params\":\"The struct containing the parameters for the request\"}},\"finalizeRequest(bytes32,address)\":{\"details\":\"The success of the callback calls is purposely not checked\",\"params\":{\"_requestId\":\"The id of the request\"}},\"moduleName()\":{\"returns\":{\"_moduleName\":\"The name of the module.\"}},\"oracle()\":{\"returns\":{\"_oracle\":\"The address of the oracle\"}},\"setupRequest(bytes32,bytes)\":{\"params\":{\"_data\":\"The data of the request\",\"_requestId\":\"The ID of the request\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"Module_OnlyOracle()\":[{\"notice\":\"Thrown when the caller is not the oracle\"}],\"MultipleCallbackModule_InvalidParameters()\":[{\"notice\":\"Thrown when the targets array and the data array have different lengths\"}],\"MultipleCallbackModule_TargetHasNoCode()\":[{\"notice\":\"Thrown when then target address has no code (i.e. is not a contract)\"}]},\"events\":{\"Callback(bytes32,address,bytes)\":{\"notice\":\"A callback has been executed\"},\"RequestFinalized(bytes32,address)\":{\"notice\":\"Emitted when a request is finalized\"}},\"kind\":\"user\",\"methods\":{\"decodeRequestData(bytes32)\":{\"notice\":\"Returns the decoded data for a request\"},\"finalizeRequest(bytes32,address)\":{\"notice\":\"Finalizes the request by executing the callback calls on the targets\"},\"moduleName()\":{\"notice\":\"Returns the name of the module.\"},\"oracle()\":{\"notice\":\"Returns the address of the oracle\"},\"requestData(bytes32)\":{\"notice\":\"Returns the data of the request associated with the provided id\"},\"setupRequest(bytes32,bytes)\":{\"notice\":\"Stores the request data and runs module-specific hooks\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"solidity/contracts/modules/finality/MultipleCallbacksModule.sol\":\"MultipleCallbacksModule\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[\":@defi-wonderland/=node_modules/@defi-wonderland/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":solmate/=node_modules/solmate/src/\"]},\"sources\":{\"node_modules/@defi-wonderland/prophet-core-contracts/solidity/contracts/Module.sol\":{\"keccak256\":\"0xb528e0eea66984412d038db1edcbfe77ac642089975fae6b0b44e8be13319bbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e70d520407288d43d7c735fd7355502b514ba6feacaeb4a5dd86497e3f91eb41\",\"dweb:/ipfs/QmPXY7uXjnsFacp6VpL45bMrxCZGtQ8AAnecTXC9ASkpV7\"]},\"node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/IModule.sol\":{\"keccak256\":\"0x72c2f68e8c2b749d9ae745269c706b137a640d6bd6f65f966238b547d61e3a05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4edb1aae7c4abd875d2da44a2dd83781c3c0a3d059edf2d1f2be1c44f865456f\",\"dweb:/ipfs/QmbEHy8tENha1ANEEZADpH4THmqC8aHyCXxFYPw4tS5mf4\"]},\"node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/IOracle.sol\":{\"keccak256\":\"0x606262b4bb3b1447b1f6afef8a1b49088956b168a4b066f6f60da4712b95d3cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a763cdb6ba9f12a93e3d5238d6d3235c5c0c229df94793927f9d2abe00542823\",\"dweb:/ipfs/QmbAbfVyCiHvNvhHxc5r8tK5GUuVBATo15Ma5MirhZPtE6\"]},\"node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/dispute/IDisputeModule.sol\":{\"keccak256\":\"0x21707db43d55ba040893ef0ffefa7f9740c6e03b94d750637e6b2c047a16baa4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae582ca2fdd6fc82c650333066c95a917221282ad7ef15ea62fb4a31e4ed864d\",\"dweb:/ipfs/QmdxvkpNCK46uYv31TxAtxCiRPSoxbT4hrs94WQfR4ctTM\"]},\"node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/finality/IFinalityModule.sol\":{\"keccak256\":\"0xf6f465732ee119879e3317227f9cf6468055f4f98acdb4365f5b4eacda32948e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82e1928a7bbc5bce95e1b83d917e1470c72a0bec7494f6f42471b21c0f2b641e\",\"dweb:/ipfs/QmSjaBsNhzCfQd5xwZa98LNYSZ1TqAqo6inRTGD31ua4L8\"]},\"node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/request/IRequestModule.sol\":{\"keccak256\":\"0xefa5dd3334a1676cca1c1860c66c16adb1e399917742476d15de8737b5cb0032\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://03bcff0500f4054b5f71b0badd1779f8dfaa7fc74fc64788991438a1d9d2d14d\",\"dweb:/ipfs/QmdDjbGPgBfbbyT26Xtt9uBD7nYnhSK43fa9skfuBrfjCc\"]},\"node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/resolution/IResolutionModule.sol\":{\"keccak256\":\"0x36e75a87661b234be605a7455c88eaf4e7cbc9f5b4ea08133dd6d9d5af8d6bc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://232536c4e8b2e9114035e57360976ff24931459fb22a026114d392d3e315ea67\",\"dweb:/ipfs/QmPYKU5RDGMqTZZzCCvVy7ssush4EQGgCCbzbeGpnejGno\"]},\"node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/response/IResponseModule.sol\":{\"keccak256\":\"0xd0610065a22a8d3323427d871a73b835e4d0dffb3afe4bb7e8bbee81b8b9ed1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c72dcbd36f11e87fc21c922684e5524f0c83830dc945ac92614ea1cd770a1bf\",\"dweb:/ipfs/QmfYnQfSDd2jS9QEAdpmDF6wVXWqitQpmJsSeEHs1mtUQP\"]},\"solidity/contracts/modules/finality/MultipleCallbacksModule.sol\":{\"keccak256\":\"0x71695cc03866f0cc3c41ac594e69786f3fad4579f4330373bdc8be5fc6dbb4a2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://beb5a260fdc6f0f4660d2e2e10f314ba6bae9f68f618b837545743870e24f227\",\"dweb:/ipfs/QmemaiwNqhyKQXLbromqH1fXCnh25q4tW6UzcovkykvDii\"]},\"solidity/interfaces/modules/finality/IMultipleCallbacksModule.sol\":{\"keccak256\":\"0x9e572d32eb502074387b24c91b3a391e03acb166a2a9039216779cb73a6e3204\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://880dd7f946461bbcd698e32b745a1d6a331903fc05946f76b94f7c6372869b28\",\"dweb:/ipfs/Qmet9JDPakWMGeVfrh5AhDe7eJCVus2tM7aqHzq3uk7r7v\"]}},\"version\":1}",
  "metadata": {
    "compiler": {
      "version": "0.8.19+commit.7dd6d404"
    },
    "language": "Solidity",
    "output": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "contract IOracle",
              "name": "_oracle",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "Module_OnlyOracle"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "MultipleCallbackModule_InvalidParameters"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "MultipleCallbackModule_TargetHasNoCode"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "_target",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "bytes",
              "name": "_data",
              "type": "bytes",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "Callback",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "_finalizer",
              "type": "address",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "RequestFinalized",
          "anonymous": false
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "ORACLE",
          "outputs": [
            {
              "internalType": "contract IOracle",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "decodeRequestData",
          "outputs": [
            {
              "internalType": "struct IMultipleCallbacksModule.RequestParameters",
              "name": "_params",
              "type": "tuple",
              "components": [
                {
                  "internalType": "address[]",
                  "name": "targets",
                  "type": "address[]"
                },
                {
                  "internalType": "bytes[]",
                  "name": "data",
                  "type": "bytes[]"
                }
              ]
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "_finalizer",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "finalizeRequest"
        },
        {
          "inputs": [],
          "stateMutability": "pure",
          "type": "function",
          "name": "moduleName",
          "outputs": [
            {
              "internalType": "string",
              "name": "_moduleName",
              "type": "string"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "oracle",
          "outputs": [
            {
              "internalType": "address",
              "name": "_oracle",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "requestData",
          "outputs": [
            {
              "internalType": "bytes",
              "name": "_requestData",
              "type": "bytes"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32"
            },
            {
              "internalType": "bytes",
              "name": "_data",
              "type": "bytes"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setupRequest"
        }
      ],
      "devdoc": {
        "kind": "dev",
        "methods": {
          "decodeRequestData(bytes32)": {
            "params": {
              "_requestId": "The id of the request"
            },
            "returns": {
              "_params": "The struct containing the parameters for the request"
            }
          },
          "finalizeRequest(bytes32,address)": {
            "details": "The success of the callback calls is purposely not checked",
            "params": {
              "_requestId": "The id of the request"
            }
          },
          "moduleName()": {
            "returns": {
              "_moduleName": "The name of the module."
            }
          },
          "oracle()": {
            "returns": {
              "_oracle": "The address of the oracle"
            }
          },
          "setupRequest(bytes32,bytes)": {
            "params": {
              "_data": "The data of the request",
              "_requestId": "The ID of the request"
            }
          }
        },
        "version": 1
      },
      "userdoc": {
        "kind": "user",
        "methods": {
          "decodeRequestData(bytes32)": {
            "notice": "Returns the decoded data for a request"
          },
          "finalizeRequest(bytes32,address)": {
            "notice": "Finalizes the request by executing the callback calls on the targets"
          },
          "moduleName()": {
            "notice": "Returns the name of the module."
          },
          "oracle()": {
            "notice": "Returns the address of the oracle"
          },
          "requestData(bytes32)": {
            "notice": "Returns the data of the request associated with the provided id"
          },
          "setupRequest(bytes32,bytes)": {
            "notice": "Stores the request data and runs module-specific hooks"
          }
        },
        "version": 1
      }
    },
    "settings": {
      "remappings": [
        "@defi-wonderland/=node_modules/@defi-wonderland/",
        "@openzeppelin/=node_modules/@openzeppelin/",
        "ds-test/=node_modules/ds-test/src/",
        "forge-std/=node_modules/forge-std/src/",
        "solmate/=node_modules/solmate/src/"
      ],
      "optimizer": {
        "enabled": true,
        "runs": 10000
      },
      "metadata": {
        "bytecodeHash": "ipfs"
      },
      "compilationTarget": {
        "solidity/contracts/modules/finality/MultipleCallbacksModule.sol": "MultipleCallbacksModule"
      },
      "libraries": {}
    },
    "sources": {
      "node_modules/@defi-wonderland/prophet-core-contracts/solidity/contracts/Module.sol": {
        "keccak256": "0xb528e0eea66984412d038db1edcbfe77ac642089975fae6b0b44e8be13319bbf",
        "urls": [
          "bzz-raw://e70d520407288d43d7c735fd7355502b514ba6feacaeb4a5dd86497e3f91eb41",
          "dweb:/ipfs/QmPXY7uXjnsFacp6VpL45bMrxCZGtQ8AAnecTXC9ASkpV7"
        ],
        "license": "MIT"
      },
      "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/IModule.sol": {
        "keccak256": "0x72c2f68e8c2b749d9ae745269c706b137a640d6bd6f65f966238b547d61e3a05",
        "urls": [
          "bzz-raw://4edb1aae7c4abd875d2da44a2dd83781c3c0a3d059edf2d1f2be1c44f865456f",
          "dweb:/ipfs/QmbEHy8tENha1ANEEZADpH4THmqC8aHyCXxFYPw4tS5mf4"
        ],
        "license": "MIT"
      },
      "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/IOracle.sol": {
        "keccak256": "0x606262b4bb3b1447b1f6afef8a1b49088956b168a4b066f6f60da4712b95d3cf",
        "urls": [
          "bzz-raw://a763cdb6ba9f12a93e3d5238d6d3235c5c0c229df94793927f9d2abe00542823",
          "dweb:/ipfs/QmbAbfVyCiHvNvhHxc5r8tK5GUuVBATo15Ma5MirhZPtE6"
        ],
        "license": "MIT"
      },
      "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/dispute/IDisputeModule.sol": {
        "keccak256": "0x21707db43d55ba040893ef0ffefa7f9740c6e03b94d750637e6b2c047a16baa4",
        "urls": [
          "bzz-raw://ae582ca2fdd6fc82c650333066c95a917221282ad7ef15ea62fb4a31e4ed864d",
          "dweb:/ipfs/QmdxvkpNCK46uYv31TxAtxCiRPSoxbT4hrs94WQfR4ctTM"
        ],
        "license": "MIT"
      },
      "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/finality/IFinalityModule.sol": {
        "keccak256": "0xf6f465732ee119879e3317227f9cf6468055f4f98acdb4365f5b4eacda32948e",
        "urls": [
          "bzz-raw://82e1928a7bbc5bce95e1b83d917e1470c72a0bec7494f6f42471b21c0f2b641e",
          "dweb:/ipfs/QmSjaBsNhzCfQd5xwZa98LNYSZ1TqAqo6inRTGD31ua4L8"
        ],
        "license": "MIT"
      },
      "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/request/IRequestModule.sol": {
        "keccak256": "0xefa5dd3334a1676cca1c1860c66c16adb1e399917742476d15de8737b5cb0032",
        "urls": [
          "bzz-raw://03bcff0500f4054b5f71b0badd1779f8dfaa7fc74fc64788991438a1d9d2d14d",
          "dweb:/ipfs/QmdDjbGPgBfbbyT26Xtt9uBD7nYnhSK43fa9skfuBrfjCc"
        ],
        "license": "MIT"
      },
      "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/resolution/IResolutionModule.sol": {
        "keccak256": "0x36e75a87661b234be605a7455c88eaf4e7cbc9f5b4ea08133dd6d9d5af8d6bc6",
        "urls": [
          "bzz-raw://232536c4e8b2e9114035e57360976ff24931459fb22a026114d392d3e315ea67",
          "dweb:/ipfs/QmPYKU5RDGMqTZZzCCvVy7ssush4EQGgCCbzbeGpnejGno"
        ],
        "license": "MIT"
      },
      "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/response/IResponseModule.sol": {
        "keccak256": "0xd0610065a22a8d3323427d871a73b835e4d0dffb3afe4bb7e8bbee81b8b9ed1b",
        "urls": [
          "bzz-raw://8c72dcbd36f11e87fc21c922684e5524f0c83830dc945ac92614ea1cd770a1bf",
          "dweb:/ipfs/QmfYnQfSDd2jS9QEAdpmDF6wVXWqitQpmJsSeEHs1mtUQP"
        ],
        "license": "MIT"
      },
      "solidity/contracts/modules/finality/MultipleCallbacksModule.sol": {
        "keccak256": "0x71695cc03866f0cc3c41ac594e69786f3fad4579f4330373bdc8be5fc6dbb4a2",
        "urls": [
          "bzz-raw://beb5a260fdc6f0f4660d2e2e10f314ba6bae9f68f618b837545743870e24f227",
          "dweb:/ipfs/QmemaiwNqhyKQXLbromqH1fXCnh25q4tW6UzcovkykvDii"
        ],
        "license": "MIT"
      },
      "solidity/interfaces/modules/finality/IMultipleCallbacksModule.sol": {
        "keccak256": "0x9e572d32eb502074387b24c91b3a391e03acb166a2a9039216779cb73a6e3204",
        "urls": [
          "bzz-raw://880dd7f946461bbcd698e32b745a1d6a331903fc05946f76b94f7c6372869b28",
          "dweb:/ipfs/Qmet9JDPakWMGeVfrh5AhDe7eJCVus2tM7aqHzq3uk7r7v"
        ],
        "license": "MIT"
      }
    },
    "version": 1
  },
  "ast": {
    "absolutePath": "solidity/contracts/modules/finality/MultipleCallbacksModule.sol",
    "id": 38068,
    "exportedSymbols": {
      "IModule": [
        1782
      ],
      "IMultipleCallbacksModule": [
        43291
      ],
      "IOracle": [
        2282
      ],
      "Module": [
        98
      ],
      "MultipleCallbacksModule": [
        38067
      ]
    },
    "nodeType": "SourceUnit",
    "src": "32:2152:46",
    "nodes": [
      {
        "id": 37886,
        "nodeType": "PragmaDirective",
        "src": "32:24:46",
        "nodes": [],
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".19"
        ]
      },
      {
        "id": 37889,
        "nodeType": "ImportDirective",
        "src": "104:102:46",
        "nodes": [],
        "absolutePath": "node_modules/@defi-wonderland/prophet-core-contracts/solidity/contracts/Module.sol",
        "file": "@defi-wonderland/prophet-core-contracts/solidity/contracts/Module.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 38068,
        "sourceUnit": 99,
        "symbolAliases": [
          {
            "foreign": {
              "id": 37887,
              "name": "Module",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 98,
              "src": "112:6:46",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          },
          {
            "foreign": {
              "id": 37888,
              "name": "IModule",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 1782,
              "src": "120:7:46",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 37891,
        "nodeType": "ImportDirective",
        "src": "207:96:46",
        "nodes": [],
        "absolutePath": "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/IOracle.sol",
        "file": "@defi-wonderland/prophet-core-contracts/solidity/interfaces/IOracle.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 38068,
        "sourceUnit": 2283,
        "symbolAliases": [
          {
            "foreign": {
              "id": 37890,
              "name": "IOracle",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 2282,
              "src": "215:7:46",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 37893,
        "nodeType": "ImportDirective",
        "src": "305:107:46",
        "nodes": [],
        "absolutePath": "solidity/interfaces/modules/finality/IMultipleCallbacksModule.sol",
        "file": "../../../interfaces/modules/finality/IMultipleCallbacksModule.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 38068,
        "sourceUnit": 43292,
        "symbolAliases": [
          {
            "foreign": {
              "id": 37892,
              "name": "IMultipleCallbacksModule",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 43291,
              "src": "313:24:46",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 38067,
        "nodeType": "ContractDefinition",
        "src": "414:1769:46",
        "nodes": [
          {
            "id": 37907,
            "nodeType": "FunctionDefinition",
            "src": "487:47:46",
            "nodes": [],
            "body": {
              "id": 37906,
              "nodeType": "Block",
              "src": "532:2:46",
              "nodes": [],
              "statements": []
            },
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 37903,
                    "name": "_oracle",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 37900,
                    "src": "523:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IOracle_$2282",
                      "typeString": "contract IOracle"
                    }
                  }
                ],
                "id": 37904,
                "kind": "baseConstructorSpecifier",
                "modifierName": {
                  "id": 37902,
                  "name": "Module",
                  "nameLocations": [
                    "516:6:46"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 98,
                  "src": "516:6:46"
                },
                "nodeType": "ModifierInvocation",
                "src": "516:15:46"
              }
            ],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "parameters": {
              "id": 37901,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 37900,
                  "mutability": "mutable",
                  "name": "_oracle",
                  "nameLocation": "507:7:46",
                  "nodeType": "VariableDeclaration",
                  "scope": 37907,
                  "src": "499:15:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IOracle_$2282",
                    "typeString": "contract IOracle"
                  },
                  "typeName": {
                    "id": 37899,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 37898,
                      "name": "IOracle",
                      "nameLocations": [
                        "499:7:46"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2282,
                      "src": "499:7:46"
                    },
                    "referencedDeclaration": 2282,
                    "src": "499:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IOracle_$2282",
                      "typeString": "contract IOracle"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "498:17:46"
            },
            "returnParameters": {
              "id": 37905,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "532:0:46"
            },
            "scope": 38067,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 37928,
            "nodeType": "FunctionDefinition",
            "src": "581:179:46",
            "nodes": [],
            "body": {
              "id": 37927,
              "nodeType": "Block",
              "src": "683:77:46",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 37925,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 37916,
                      "name": "_params",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 37914,
                      "src": "689:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_RequestParameters_$43273_memory_ptr",
                        "typeString": "struct IMultipleCallbacksModule.RequestParameters memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "baseExpression": {
                            "id": 37919,
                            "name": "requestData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14,
                            "src": "710:11:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                              "typeString": "mapping(bytes32 => bytes storage ref)"
                            }
                          },
                          "id": 37921,
                          "indexExpression": {
                            "id": 37920,
                            "name": "_requestId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37910,
                            "src": "722:10:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "710:23:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        {
                          "components": [
                            {
                              "id": 37922,
                              "name": "RequestParameters",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43273,
                              "src": "736:17:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_RequestParameters_$43273_storage_ptr_$",
                                "typeString": "type(struct IMultipleCallbacksModule.RequestParameters storage pointer)"
                              }
                            }
                          ],
                          "id": 37923,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "735:19:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_RequestParameters_$43273_storage_ptr_$",
                            "typeString": "type(struct IMultipleCallbacksModule.RequestParameters storage pointer)"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          },
                          {
                            "typeIdentifier": "t_type$_t_struct$_RequestParameters_$43273_storage_ptr_$",
                            "typeString": "type(struct IMultipleCallbacksModule.RequestParameters storage pointer)"
                          }
                        ],
                        "expression": {
                          "id": 37917,
                          "name": "abi",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -1,
                          "src": "699:3:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_abi",
                            "typeString": "abi"
                          }
                        },
                        "id": 37918,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "703:6:46",
                        "memberName": "decode",
                        "nodeType": "MemberAccess",
                        "src": "699:10:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 37924,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "699:56:46",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_RequestParameters_$43273_memory_ptr",
                        "typeString": "struct IMultipleCallbacksModule.RequestParameters memory"
                      }
                    },
                    "src": "689:66:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RequestParameters_$43273_memory_ptr",
                      "typeString": "struct IMultipleCallbacksModule.RequestParameters memory"
                    }
                  },
                  "id": 37926,
                  "nodeType": "ExpressionStatement",
                  "src": "689:66:46"
                }
              ]
            },
            "baseFunctions": [
              43282
            ],
            "documentation": {
              "id": 37908,
              "nodeType": "StructuredDocumentation",
              "src": "538:40:46",
              "text": "@inheritdoc IMultipleCallbacksModule"
            },
            "functionSelector": "4d610a46",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "decodeRequestData",
            "nameLocation": "590:17:46",
            "parameters": {
              "id": 37911,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 37910,
                  "mutability": "mutable",
                  "name": "_requestId",
                  "nameLocation": "616:10:46",
                  "nodeType": "VariableDeclaration",
                  "scope": 37928,
                  "src": "608:18:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 37909,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "608:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "607:20:46"
            },
            "returnParameters": {
              "id": 37915,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 37914,
                  "mutability": "mutable",
                  "name": "_params",
                  "nameLocation": "674:7:46",
                  "nodeType": "VariableDeclaration",
                  "scope": 37928,
                  "src": "649:32:46",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RequestParameters_$43273_memory_ptr",
                    "typeString": "struct IMultipleCallbacksModule.RequestParameters"
                  },
                  "typeName": {
                    "id": 37913,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 37912,
                      "name": "RequestParameters",
                      "nameLocations": [
                        "649:17:46"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 43273,
                      "src": "649:17:46"
                    },
                    "referencedDeclaration": 43273,
                    "src": "649:17:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RequestParameters_$43273_storage_ptr",
                      "typeString": "struct IMultipleCallbacksModule.RequestParameters"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "648:34:46"
            },
            "scope": 38067,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 37939,
            "nodeType": "FunctionDefinition",
            "src": "790:120:46",
            "nodes": [],
            "body": {
              "id": 37938,
              "nodeType": "Block",
              "src": "860:50:46",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 37936,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 37934,
                      "name": "_moduleName",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 37932,
                      "src": "866:11:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "4d756c7469706c6543616c6c6261636b734d6f64756c65",
                      "id": 37935,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "string",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "880:25:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_stringliteral_1dace16fe8738392c42137c2148766b1d9cd7faaa26652041d6ce97320d1f050",
                        "typeString": "literal_string \"MultipleCallbacksModule\""
                      },
                      "value": "MultipleCallbacksModule"
                    },
                    "src": "866:39:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "id": 37937,
                  "nodeType": "ExpressionStatement",
                  "src": "866:39:46"
                }
              ]
            },
            "baseFunctions": [
              1781
            ],
            "documentation": {
              "id": 37929,
              "nodeType": "StructuredDocumentation",
              "src": "764:23:46",
              "text": "@inheritdoc IModule"
            },
            "functionSelector": "93f0899a",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "moduleName",
            "nameLocation": "799:10:46",
            "parameters": {
              "id": 37930,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "809:2:46"
            },
            "returnParameters": {
              "id": 37933,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 37932,
                  "mutability": "mutable",
                  "name": "_moduleName",
                  "nameLocation": "847:11:46",
                  "nodeType": "VariableDeclaration",
                  "scope": 37939,
                  "src": "833:25:46",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 37931,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "833:6:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "832:27:46"
            },
            "scope": 38067,
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 37998,
            "nodeType": "FunctionDefinition",
            "src": "1129:485:46",
            "nodes": [],
            "body": {
              "id": 37997,
              "nodeType": "Block",
              "src": "1211:403:46",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    37950
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37950,
                      "mutability": "mutable",
                      "name": "_params",
                      "nameLocation": "1242:7:46",
                      "nodeType": "VariableDeclaration",
                      "scope": 37997,
                      "src": "1217:32:46",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_RequestParameters_$43273_memory_ptr",
                        "typeString": "struct IMultipleCallbacksModule.RequestParameters"
                      },
                      "typeName": {
                        "id": 37949,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 37948,
                          "name": "RequestParameters",
                          "nameLocations": [
                            "1217:17:46"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 43273,
                          "src": "1217:17:46"
                        },
                        "referencedDeclaration": 43273,
                        "src": "1217:17:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestParameters_$43273_storage_ptr",
                          "typeString": "struct IMultipleCallbacksModule.RequestParameters"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37957,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 37953,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37944,
                        "src": "1263:5:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      },
                      {
                        "components": [
                          {
                            "id": 37954,
                            "name": "RequestParameters",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 43273,
                            "src": "1271:17:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_struct$_RequestParameters_$43273_storage_ptr_$",
                              "typeString": "type(struct IMultipleCallbacksModule.RequestParameters storage pointer)"
                            }
                          }
                        ],
                        "id": 37955,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "1270:19:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_RequestParameters_$43273_storage_ptr_$",
                          "typeString": "type(struct IMultipleCallbacksModule.RequestParameters storage pointer)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        },
                        {
                          "typeIdentifier": "t_type$_t_struct$_RequestParameters_$43273_storage_ptr_$",
                          "typeString": "type(struct IMultipleCallbacksModule.RequestParameters storage pointer)"
                        }
                      ],
                      "expression": {
                        "id": 37951,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "1252:3:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 37952,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "1256:6:46",
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "1252:10:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 37956,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1252:38:46",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RequestParameters_$43273_memory_ptr",
                      "typeString": "struct IMultipleCallbacksModule.RequestParameters memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1217:73:46"
                },
                {
                  "assignments": [
                    37959
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37959,
                      "mutability": "mutable",
                      "name": "_length",
                      "nameLocation": "1304:7:46",
                      "nodeType": "VariableDeclaration",
                      "scope": 37997,
                      "src": "1296:15:46",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 37958,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1296:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37963,
                  "initialValue": {
                    "expression": {
                      "expression": {
                        "id": 37960,
                        "name": "_params",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37950,
                        "src": "1314:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestParameters_$43273_memory_ptr",
                          "typeString": "struct IMultipleCallbacksModule.RequestParameters memory"
                        }
                      },
                      "id": 37961,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1322:7:46",
                      "memberName": "targets",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 43269,
                      "src": "1314:15:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[] memory"
                      }
                    },
                    "id": 37962,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "1330:6:46",
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "src": "1314:22:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1296:40:46"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 37968,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 37964,
                      "name": "_length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 37959,
                      "src": "1346:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "expression": {
                        "expression": {
                          "id": 37965,
                          "name": "_params",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 37950,
                          "src": "1357:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RequestParameters_$43273_memory_ptr",
                            "typeString": "struct IMultipleCallbacksModule.RequestParameters memory"
                          }
                        },
                        "id": 37966,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "1365:4:46",
                        "memberName": "data",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 43272,
                        "src": "1357:12:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                          "typeString": "bytes memory[] memory"
                        }
                      },
                      "id": 37967,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1370:6:46",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "1357:19:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1346:30:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 37972,
                  "nodeType": "IfStatement",
                  "src": "1342:85:46",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 37969,
                        "name": "MultipleCallbackModule_InvalidParameters",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 43266,
                        "src": "1385:40:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 37970,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1385:42:46",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 37971,
                    "nodeType": "RevertStatement",
                    "src": "1378:49:46"
                  }
                },
                {
                  "body": {
                    "id": 37995,
                    "nodeType": "Block",
                    "src": "1466:144:46",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 37986,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "expression": {
                                "baseExpression": {
                                  "expression": {
                                    "id": 37979,
                                    "name": "_params",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 37950,
                                    "src": "1478:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_RequestParameters_$43273_memory_ptr",
                                      "typeString": "struct IMultipleCallbacksModule.RequestParameters memory"
                                    }
                                  },
                                  "id": 37980,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "1486:7:46",
                                  "memberName": "targets",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 43269,
                                  "src": "1478:15:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 37982,
                                "indexExpression": {
                                  "id": 37981,
                                  "name": "_i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37974,
                                  "src": "1494:2:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1478:19:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 37983,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1498:4:46",
                              "memberName": "code",
                              "nodeType": "MemberAccess",
                              "src": "1478:24:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 37984,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1503:6:46",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "1478:31:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 37985,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1513:1:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1478:36:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 37990,
                        "nodeType": "IfStatement",
                        "src": "1474:89:46",
                        "trueBody": {
                          "errorCall": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 37987,
                              "name": "MultipleCallbackModule_TargetHasNoCode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43263,
                              "src": "1523:38:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 37988,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1523:40:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 37989,
                          "nodeType": "RevertStatement",
                          "src": "1516:47:46"
                        }
                      },
                      {
                        "id": 37994,
                        "nodeType": "UncheckedBlock",
                        "src": "1571:33:46",
                        "statements": [
                          {
                            "expression": {
                              "id": 37992,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "++",
                              "prefix": true,
                              "src": "1591:4:46",
                              "subExpression": {
                                "id": 37991,
                                "name": "_i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 37974,
                                "src": "1593:2:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 37993,
                            "nodeType": "ExpressionStatement",
                            "src": "1591:4:46"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 37978,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 37976,
                      "name": "_i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 37974,
                      "src": "1451:2:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "id": 37977,
                      "name": "_length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 37959,
                      "src": "1456:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1451:12:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 37996,
                  "initializationExpression": {
                    "assignments": [
                      37974
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 37974,
                        "mutability": "mutable",
                        "name": "_i",
                        "nameLocation": "1447:2:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 37996,
                        "src": "1439:10:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 37973,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1439:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 37975,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1439:10:46"
                  },
                  "nodeType": "ForStatement",
                  "src": "1434:176:46"
                }
              ]
            },
            "baseFunctions": [
              97
            ],
            "documentation": {
              "id": 37940,
              "nodeType": "StructuredDocumentation",
              "src": "914:212:46",
              "text": " @notice Checks if the target addresses have code and the calldata amount matches the targets amount\n @param _data The ABI encoded address of the target contracts and the calldata to be executed"
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_afterSetupRequest",
            "nameLocation": "1138:18:46",
            "overrides": {
              "id": 37946,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1202:8:46"
            },
            "parameters": {
              "id": 37945,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 37942,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 37998,
                  "src": "1157:7:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 37941,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1157:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 37944,
                  "mutability": "mutable",
                  "name": "_data",
                  "nameLocation": "1181:5:46",
                  "nodeType": "VariableDeclaration",
                  "scope": 37998,
                  "src": "1166:20:46",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 37943,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1166:5:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1156:31:46"
            },
            "returnParameters": {
              "id": 37947,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1211:0:46"
            },
            "scope": 38067,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 38066,
            "nodeType": "FunctionDefinition",
            "src": "1661:520:46",
            "nodes": [],
            "body": {
              "id": 38065,
              "nodeType": "Block",
              "src": "1801:380:46",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    38013
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 38013,
                      "mutability": "mutable",
                      "name": "_params",
                      "nameLocation": "1832:7:46",
                      "nodeType": "VariableDeclaration",
                      "scope": 38065,
                      "src": "1807:32:46",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_RequestParameters_$43273_memory_ptr",
                        "typeString": "struct IMultipleCallbacksModule.RequestParameters"
                      },
                      "typeName": {
                        "id": 38012,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 38011,
                          "name": "RequestParameters",
                          "nameLocations": [
                            "1807:17:46"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 43273,
                          "src": "1807:17:46"
                        },
                        "referencedDeclaration": 43273,
                        "src": "1807:17:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestParameters_$43273_storage_ptr",
                          "typeString": "struct IMultipleCallbacksModule.RequestParameters"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 38017,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 38015,
                        "name": "_requestId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 38001,
                        "src": "1860:10:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 38014,
                      "name": "decodeRequestData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 37928,
                      "src": "1842:17:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_struct$_RequestParameters_$43273_memory_ptr_$",
                        "typeString": "function (bytes32) view returns (struct IMultipleCallbacksModule.RequestParameters memory)"
                      }
                    },
                    "id": 38016,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1842:29:46",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RequestParameters_$43273_memory_ptr",
                      "typeString": "struct IMultipleCallbacksModule.RequestParameters memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1807:64:46"
                },
                {
                  "assignments": [
                    38019
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 38019,
                      "mutability": "mutable",
                      "name": "_length",
                      "nameLocation": "1885:7:46",
                      "nodeType": "VariableDeclaration",
                      "scope": 38065,
                      "src": "1877:15:46",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 38018,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1877:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 38023,
                  "initialValue": {
                    "expression": {
                      "expression": {
                        "id": 38020,
                        "name": "_params",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 38013,
                        "src": "1895:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestParameters_$43273_memory_ptr",
                          "typeString": "struct IMultipleCallbacksModule.RequestParameters memory"
                        }
                      },
                      "id": 38021,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1903:7:46",
                      "memberName": "targets",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 43269,
                      "src": "1895:15:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[] memory"
                      }
                    },
                    "id": 38022,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "1911:6:46",
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "src": "1895:22:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1877:40:46"
                },
                {
                  "body": {
                    "id": 38058,
                    "nodeType": "Block",
                    "src": "1956:169:46",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "baseExpression": {
                                "expression": {
                                  "id": 38036,
                                  "name": "_params",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 38013,
                                  "src": "1989:7:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_RequestParameters_$43273_memory_ptr",
                                    "typeString": "struct IMultipleCallbacksModule.RequestParameters memory"
                                  }
                                },
                                "id": 38037,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "1997:4:46",
                                "memberName": "data",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 43272,
                                "src": "1989:12:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "bytes memory[] memory"
                                }
                              },
                              "id": 38039,
                              "indexExpression": {
                                "id": 38038,
                                "name": "_i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 38025,
                                "src": "2002:2:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1989:16:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "baseExpression": {
                                "expression": {
                                  "id": 38030,
                                  "name": "_params",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 38013,
                                  "src": "1964:7:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_RequestParameters_$43273_memory_ptr",
                                    "typeString": "struct IMultipleCallbacksModule.RequestParameters memory"
                                  }
                                },
                                "id": 38033,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "1972:7:46",
                                "memberName": "targets",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 43269,
                                "src": "1964:15:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 38034,
                              "indexExpression": {
                                "id": 38032,
                                "name": "_i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 38025,
                                "src": "1980:2:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1964:19:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 38035,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1984:4:46",
                            "memberName": "call",
                            "nodeType": "MemberAccess",
                            "src": "1964:24:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 38040,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1964:42:46",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "id": 38041,
                        "nodeType": "ExpressionStatement",
                        "src": "1964:42:46"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 38043,
                              "name": "_requestId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38001,
                              "src": "2028:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "baseExpression": {
                                "expression": {
                                  "id": 38044,
                                  "name": "_params",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 38013,
                                  "src": "2040:7:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_RequestParameters_$43273_memory_ptr",
                                    "typeString": "struct IMultipleCallbacksModule.RequestParameters memory"
                                  }
                                },
                                "id": 38045,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "2048:7:46",
                                "memberName": "targets",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 43269,
                                "src": "2040:15:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 38047,
                              "indexExpression": {
                                "id": 38046,
                                "name": "_i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 38025,
                                "src": "2056:2:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2040:19:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "baseExpression": {
                                "expression": {
                                  "id": 38048,
                                  "name": "_params",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 38013,
                                  "src": "2061:7:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_RequestParameters_$43273_memory_ptr",
                                    "typeString": "struct IMultipleCallbacksModule.RequestParameters memory"
                                  }
                                },
                                "id": 38049,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "2069:4:46",
                                "memberName": "data",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 43272,
                                "src": "2061:12:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "bytes memory[] memory"
                                }
                              },
                              "id": 38051,
                              "indexExpression": {
                                "id": 38050,
                                "name": "_i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 38025,
                                "src": "2074:2:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2061:16:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 38042,
                            "name": "Callback",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 43260,
                            "src": "2019:8:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes32,address,bytes memory)"
                            }
                          },
                          "id": 38052,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2019:59:46",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38053,
                        "nodeType": "EmitStatement",
                        "src": "2014:64:46"
                      },
                      {
                        "id": 38057,
                        "nodeType": "UncheckedBlock",
                        "src": "2086:33:46",
                        "statements": [
                          {
                            "expression": {
                              "id": 38055,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "++",
                              "prefix": true,
                              "src": "2106:4:46",
                              "subExpression": {
                                "id": 38054,
                                "name": "_i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 38025,
                                "src": "2108:2:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 38056,
                            "nodeType": "ExpressionStatement",
                            "src": "2106:4:46"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 38029,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 38027,
                      "name": "_i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 38025,
                      "src": "1941:2:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "id": 38028,
                      "name": "_length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 38019,
                      "src": "1946:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1941:12:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 38059,
                  "initializationExpression": {
                    "assignments": [
                      38025
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 38025,
                        "mutability": "mutable",
                        "name": "_i",
                        "nameLocation": "1937:2:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 38059,
                        "src": "1929:10:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 38024,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1929:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 38026,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1929:10:46"
                  },
                  "nodeType": "ForStatement",
                  "src": "1924:201:46"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 38061,
                        "name": "_requestId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 38001,
                        "src": "2153:10:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 38062,
                        "name": "_finalizer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 38003,
                        "src": "2165:10:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 38060,
                      "name": "RequestFinalized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1742,
                      "src": "2136:16:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 38063,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2136:40:46",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 38064,
                  "nodeType": "EmitStatement",
                  "src": "2131:45:46"
                }
              ]
            },
            "baseFunctions": [
              88,
              43290
            ],
            "documentation": {
              "id": 37999,
              "nodeType": "StructuredDocumentation",
              "src": "1618:40:46",
              "text": "@inheritdoc IMultipleCallbacksModule"
            },
            "functionSelector": "309de607",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 38009,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 38008,
                  "name": "onlyOracle",
                  "nameLocations": [
                    "1790:10:46"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 41,
                  "src": "1790:10:46"
                },
                "nodeType": "ModifierInvocation",
                "src": "1790:10:46"
              }
            ],
            "name": "finalizeRequest",
            "nameLocation": "1670:15:46",
            "overrides": {
              "id": 38007,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "id": 38005,
                  "name": "IMultipleCallbacksModule",
                  "nameLocations": [
                    "1756:24:46"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 43291,
                  "src": "1756:24:46"
                },
                {
                  "id": 38006,
                  "name": "Module",
                  "nameLocations": [
                    "1782:6:46"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 98,
                  "src": "1782:6:46"
                }
              ],
              "src": "1747:42:46"
            },
            "parameters": {
              "id": 38004,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 38001,
                  "mutability": "mutable",
                  "name": "_requestId",
                  "nameLocation": "1699:10:46",
                  "nodeType": "VariableDeclaration",
                  "scope": 38066,
                  "src": "1691:18:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 38000,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1691:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 38003,
                  "mutability": "mutable",
                  "name": "_finalizer",
                  "nameLocation": "1723:10:46",
                  "nodeType": "VariableDeclaration",
                  "scope": 38066,
                  "src": "1715:18:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 38002,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1715:7:46",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1685:52:46"
            },
            "returnParameters": {
              "id": 38010,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1801:0:46"
            },
            "scope": 38067,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 37894,
              "name": "Module",
              "nameLocations": [
                "450:6:46"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 98,
              "src": "450:6:46"
            },
            "id": 37895,
            "nodeType": "InheritanceSpecifier",
            "src": "450:6:46"
          },
          {
            "baseName": {
              "id": 37896,
              "name": "IMultipleCallbacksModule",
              "nameLocations": [
                "458:24:46"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 43291,
              "src": "458:24:46"
            },
            "id": 37897,
            "nodeType": "InheritanceSpecifier",
            "src": "458:24:46"
          }
        ],
        "canonicalName": "MultipleCallbacksModule",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "linearizedBaseContracts": [
          38067,
          43291,
          2353,
          98,
          1782
        ],
        "name": "MultipleCallbacksModule",
        "nameLocation": "423:23:46",
        "scope": 38068,
        "usedErrors": [
          1745,
          43263,
          43266
        ]
      }
    ],
    "license": "MIT"
  },
  "id": 46
}