{
  "abi": [],
  "bytecode": {
    "object": "0x602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a",
    "sourceMap": "159:2908:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a",
    "sourceMap": "159:2908:2:-:0;;;;;;;;",
    "linkReferences": {}
  },
  "methodIdentifiers": {},
  "ast": {
    "absolutePath": "lib/forge-std/src/StdJson.sol",
    "id": 2381,
    "exportedSymbols": {
      "Vm": [
        6909
      ],
      "stdJson": [
        2380
      ]
    },
    "nodeType": "SourceUnit",
    "src": "32:3036:2",
    "nodes": [
      {
        "id": 2023,
        "nodeType": "PragmaDirective",
        "src": "32:31:2",
        "literals": [
          "solidity",
          ">=",
          "0.6",
          ".0",
          "<",
          "0.9",
          ".0"
        ]
      },
      {
        "id": 2024,
        "nodeType": "PragmaDirective",
        "src": "64:33:2",
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ]
      },
      {
        "id": 2025,
        "nodeType": "ImportDirective",
        "src": "99:18:2",
        "absolutePath": "lib/forge-std/src/Vm.sol",
        "file": "./Vm.sol",
        "scope": 2381,
        "sourceUnit": 6910,
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "id": 2380,
        "nodeType": "ContractDefinition",
        "src": "159:2908:2",
        "nodes": [
          {
            "id": 2041,
            "nodeType": "VariableDeclaration",
            "src": "182:84:2",
            "constant": true,
            "mutability": "constant",
            "name": "vm",
            "scope": 2380,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_Vm_$6909",
              "typeString": "contract Vm"
            },
            "typeName": {
              "id": 2026,
              "name": "Vm",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6909,
              "src": "182:2:2",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Vm_$6909",
                "typeString": "contract Vm"
              }
            },
            "value": {
              "arguments": [
                {
                  "arguments": [
                    {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6865766d20636865617420636f6465",
                                  "id": 2035,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "244:17:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d",
                                    "typeString": "literal_string \"hevm cheat code\""
                                  },
                                  "value": "hevm cheat code"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d",
                                    "typeString": "literal_string \"hevm cheat code\""
                                  }
                                ],
                                "id": 2034,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "234:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 2036,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "234:28:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 2033,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "226:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 2032,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "226:7:2",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 2037,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "226:37:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 2031,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "218:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint160_$",
                          "typeString": "type(uint160)"
                        },
                        "typeName": {
                          "id": 2030,
                          "name": "uint160",
                          "nodeType": "ElementaryTypeName",
                          "src": "218:7:2",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 2038,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "218:46:2",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    ],
                    "id": 2029,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "nodeType": "ElementaryTypeNameExpression",
                    "src": "210:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_address_$",
                      "typeString": "type(address)"
                    },
                    "typeName": {
                      "id": 2028,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "210:7:2",
                      "typeDescriptions": {}
                    }
                  },
                  "id": 2039,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "typeConversion",
                  "lValueRequested": false,
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "210:55:2",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_address_payable",
                    "typeString": "address payable"
                  }
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_address_payable",
                    "typeString": "address payable"
                  }
                ],
                "id": 2027,
                "name": "Vm",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 6909,
                "src": "207:2:2",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_contract$_Vm_$6909_$",
                  "typeString": "type(contract Vm)"
                }
              },
              "id": 2040,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "207:59:2",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Vm_$6909",
                "typeString": "contract Vm"
              }
            },
            "visibility": "private"
          },
          {
            "id": 2057,
            "nodeType": "FunctionDefinition",
            "src": "273:156:2",
            "body": {
              "id": 2056,
              "nodeType": "Block",
              "src": "382:47:2",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 2052,
                        "name": "json",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2043,
                        "src": "412:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 2053,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2045,
                        "src": "418:3:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "id": 2050,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2041,
                        "src": "399:2:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$6909",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 2051,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "parseJson",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6901,
                      "src": "399:12:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (string memory,string memory) external returns (bytes memory)"
                      }
                    },
                    "id": 2054,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "399:23:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 2049,
                  "id": 2055,
                  "nodeType": "Return",
                  "src": "392:30:2"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "parseRaw",
            "parameters": {
              "id": 2046,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2043,
                  "mutability": "mutable",
                  "name": "json",
                  "nodeType": "VariableDeclaration",
                  "scope": 2057,
                  "src": "291:18:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2042,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "291:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2045,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 2057,
                  "src": "311:17:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2044,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "311:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "290:39:2"
            },
            "returnParameters": {
              "id": 2049,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2048,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2057,
                  "src": "364:12:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2047,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "364:5:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "363:14:2"
            },
            "scope": 2380,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 2079,
            "nodeType": "FunctionDefinition",
            "src": "435:174:2",
            "body": {
              "id": 2078,
              "nodeType": "Block",
              "src": "539:70:2",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 2070,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2059,
                            "src": "580:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 2071,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2061,
                            "src": "586:3:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 2068,
                            "name": "vm",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2041,
                            "src": "567:2:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Vm_$6909",
                              "typeString": "contract Vm"
                            }
                          },
                          "id": 2069,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "parseJson",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6901,
                          "src": "567:12:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory,string memory) external returns (bytes memory)"
                          }
                        },
                        "id": 2072,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "567:23:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "id": 2074,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "593:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 2073,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "593:7:2",
                              "typeDescriptions": {}
                            }
                          }
                        ],
                        "id": 2075,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "592:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        }
                      ],
                      "expression": {
                        "id": 2066,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "556:3:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 2067,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "556:10:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 2076,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "556:46:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2065,
                  "id": 2077,
                  "nodeType": "Return",
                  "src": "549:53:2"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readUint",
            "parameters": {
              "id": 2062,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2059,
                  "mutability": "mutable",
                  "name": "json",
                  "nodeType": "VariableDeclaration",
                  "scope": 2079,
                  "src": "453:18:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2058,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "453:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2061,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 2079,
                  "src": "473:17:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2060,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "473:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "452:39:2"
            },
            "returnParameters": {
              "id": 2065,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2064,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2079,
                  "src": "526:7:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2063,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "526:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "525:9:2"
            },
            "scope": 2380,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 2103,
            "nodeType": "FunctionDefinition",
            "src": "615:190:2",
            "body": {
              "id": 2102,
              "nodeType": "Block",
              "src": "733:72:2",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 2093,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2081,
                            "src": "774:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 2094,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2083,
                            "src": "780:3:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 2091,
                            "name": "vm",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2041,
                            "src": "761:2:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Vm_$6909",
                              "typeString": "contract Vm"
                            }
                          },
                          "id": 2092,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "parseJson",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6901,
                          "src": "761:12:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory,string memory) external returns (bytes memory)"
                          }
                        },
                        "id": 2095,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "761:23:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "baseExpression": {
                              "id": 2097,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "787:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 2096,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "787:7:2",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 2098,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "787:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "type(uint256[] memory)"
                            }
                          }
                        ],
                        "id": 2099,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "786:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                          "typeString": "type(uint256[] memory)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                          "typeString": "type(uint256[] memory)"
                        }
                      ],
                      "expression": {
                        "id": 2089,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "750:3:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 2090,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "750:10:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 2100,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "750:48:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  },
                  "functionReturnParameters": 2088,
                  "id": 2101,
                  "nodeType": "Return",
                  "src": "743:55:2"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readUintArray",
            "parameters": {
              "id": 2084,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2081,
                  "mutability": "mutable",
                  "name": "json",
                  "nodeType": "VariableDeclaration",
                  "scope": 2103,
                  "src": "638:18:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2080,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "638:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2083,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 2103,
                  "src": "658:17:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2082,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "658:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "637:39:2"
            },
            "returnParameters": {
              "id": 2088,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2087,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2103,
                  "src": "711:16:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2085,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "711:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2086,
                    "nodeType": "ArrayTypeName",
                    "src": "711:9:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "710:18:2"
            },
            "scope": 2380,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 2125,
            "nodeType": "FunctionDefinition",
            "src": "811:171:2",
            "body": {
              "id": 2124,
              "nodeType": "Block",
              "src": "913:69:2",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 2116,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2105,
                            "src": "954:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 2117,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2107,
                            "src": "960:3:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 2114,
                            "name": "vm",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2041,
                            "src": "941:2:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Vm_$6909",
                              "typeString": "contract Vm"
                            }
                          },
                          "id": 2115,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "parseJson",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6901,
                          "src": "941:12:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory,string memory) external returns (bytes memory)"
                          }
                        },
                        "id": 2118,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "941:23:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "id": 2120,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "967:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_int256_$",
                              "typeString": "type(int256)"
                            },
                            "typeName": {
                              "id": 2119,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "967:6:2",
                              "typeDescriptions": {}
                            }
                          }
                        ],
                        "id": 2121,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "966:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_int256_$",
                          "typeString": "type(int256)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_int256_$",
                          "typeString": "type(int256)"
                        }
                      ],
                      "expression": {
                        "id": 2112,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "930:3:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 2113,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "930:10:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 2122,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "930:45:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "functionReturnParameters": 2111,
                  "id": 2123,
                  "nodeType": "Return",
                  "src": "923:52:2"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readInt",
            "parameters": {
              "id": 2108,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2105,
                  "mutability": "mutable",
                  "name": "json",
                  "nodeType": "VariableDeclaration",
                  "scope": 2125,
                  "src": "828:18:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2104,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "828:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2107,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 2125,
                  "src": "848:17:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2106,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "848:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "827:39:2"
            },
            "returnParameters": {
              "id": 2111,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2110,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2125,
                  "src": "901:6:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 2109,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "901:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "900:8:2"
            },
            "scope": 2380,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 2149,
            "nodeType": "FunctionDefinition",
            "src": "988:187:2",
            "body": {
              "id": 2148,
              "nodeType": "Block",
              "src": "1104:71:2",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 2139,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2127,
                            "src": "1145:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 2140,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2129,
                            "src": "1151:3:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 2137,
                            "name": "vm",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2041,
                            "src": "1132:2:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Vm_$6909",
                              "typeString": "contract Vm"
                            }
                          },
                          "id": 2138,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "parseJson",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6901,
                          "src": "1132:12:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory,string memory) external returns (bytes memory)"
                          }
                        },
                        "id": 2141,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1132:23:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "baseExpression": {
                              "id": 2143,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1158:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int256_$",
                                "typeString": "type(int256)"
                              },
                              "typeName": {
                                "id": 2142,
                                "name": "int256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1158:6:2",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 2144,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1158:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_array$_t_int256_$dyn_memory_ptr_$",
                              "typeString": "type(int256[] memory)"
                            }
                          }
                        ],
                        "id": 2145,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "1157:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_array$_t_int256_$dyn_memory_ptr_$",
                          "typeString": "type(int256[] memory)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_array$_t_int256_$dyn_memory_ptr_$",
                          "typeString": "type(int256[] memory)"
                        }
                      ],
                      "expression": {
                        "id": 2135,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "1121:3:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 2136,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "1121:10:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 2146,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1121:47:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_int256_$dyn_memory_ptr",
                      "typeString": "int256[] memory"
                    }
                  },
                  "functionReturnParameters": 2134,
                  "id": 2147,
                  "nodeType": "Return",
                  "src": "1114:54:2"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readIntArray",
            "parameters": {
              "id": 2130,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2127,
                  "mutability": "mutable",
                  "name": "json",
                  "nodeType": "VariableDeclaration",
                  "scope": 2149,
                  "src": "1010:18:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2126,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1010:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2129,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 2149,
                  "src": "1030:17:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2128,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1030:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1009:39:2"
            },
            "returnParameters": {
              "id": 2134,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2133,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2149,
                  "src": "1083:15:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_int256_$dyn_memory_ptr",
                    "typeString": "int256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2131,
                      "name": "int256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1083:6:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "id": 2132,
                    "nodeType": "ArrayTypeName",
                    "src": "1083:8:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_int256_$dyn_storage_ptr",
                      "typeString": "int256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1082:17:2"
            },
            "scope": 2380,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 2171,
            "nodeType": "FunctionDefinition",
            "src": "1181:177:2",
            "body": {
              "id": 2170,
              "nodeType": "Block",
              "src": "1288:70:2",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 2162,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2151,
                            "src": "1329:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 2163,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2153,
                            "src": "1335:3:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 2160,
                            "name": "vm",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2041,
                            "src": "1316:2:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Vm_$6909",
                              "typeString": "contract Vm"
                            }
                          },
                          "id": 2161,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "parseJson",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6901,
                          "src": "1316:12:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory,string memory) external returns (bytes memory)"
                          }
                        },
                        "id": 2164,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1316:23:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "id": 2166,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1342:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes32_$",
                              "typeString": "type(bytes32)"
                            },
                            "typeName": {
                              "id": 2165,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1342:7:2",
                              "typeDescriptions": {}
                            }
                          }
                        ],
                        "id": 2167,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "1341:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        }
                      ],
                      "expression": {
                        "id": 2158,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "1305:3:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 2159,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "1305:10:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 2168,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1305:46:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 2157,
                  "id": 2169,
                  "nodeType": "Return",
                  "src": "1298:53:2"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readBytes32",
            "parameters": {
              "id": 2154,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2151,
                  "mutability": "mutable",
                  "name": "json",
                  "nodeType": "VariableDeclaration",
                  "scope": 2171,
                  "src": "1202:18:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2150,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1202:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2153,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 2171,
                  "src": "1222:17:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2152,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1222:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1201:39:2"
            },
            "returnParameters": {
              "id": 2157,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2156,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2171,
                  "src": "1275:7:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2155,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1275:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1274:9:2"
            },
            "scope": 2380,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 2195,
            "nodeType": "FunctionDefinition",
            "src": "1364:193:2",
            "body": {
              "id": 2194,
              "nodeType": "Block",
              "src": "1485:72:2",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 2185,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2173,
                            "src": "1526:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 2186,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2175,
                            "src": "1532:3:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 2183,
                            "name": "vm",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2041,
                            "src": "1513:2:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Vm_$6909",
                              "typeString": "contract Vm"
                            }
                          },
                          "id": 2184,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "parseJson",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6901,
                          "src": "1513:12:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory,string memory) external returns (bytes memory)"
                          }
                        },
                        "id": 2187,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1513:23:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "baseExpression": {
                              "id": 2189,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1539:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 2188,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "1539:7:2",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 2190,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1539:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                              "typeString": "type(bytes32[] memory)"
                            }
                          }
                        ],
                        "id": 2191,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "1538:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                          "typeString": "type(bytes32[] memory)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                          "typeString": "type(bytes32[] memory)"
                        }
                      ],
                      "expression": {
                        "id": 2181,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "1502:3:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 2182,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "1502:10:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 2192,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1502:48:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "functionReturnParameters": 2180,
                  "id": 2193,
                  "nodeType": "Return",
                  "src": "1495:55:2"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readBytes32Array",
            "parameters": {
              "id": 2176,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2173,
                  "mutability": "mutable",
                  "name": "json",
                  "nodeType": "VariableDeclaration",
                  "scope": 2195,
                  "src": "1390:18:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2172,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1390:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2175,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 2195,
                  "src": "1410:17:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2174,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1410:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1389:39:2"
            },
            "returnParameters": {
              "id": 2180,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2179,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2195,
                  "src": "1463:16:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2177,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "1463:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 2178,
                    "nodeType": "ArrayTypeName",
                    "src": "1463:9:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1462:18:2"
            },
            "scope": 2380,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 2217,
            "nodeType": "FunctionDefinition",
            "src": "1563:181:2",
            "body": {
              "id": 2216,
              "nodeType": "Block",
              "src": "1675:69:2",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 2208,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2197,
                            "src": "1716:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 2209,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2199,
                            "src": "1722:3:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 2206,
                            "name": "vm",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2041,
                            "src": "1703:2:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Vm_$6909",
                              "typeString": "contract Vm"
                            }
                          },
                          "id": 2207,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "parseJson",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6901,
                          "src": "1703:12:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory,string memory) external returns (bytes memory)"
                          }
                        },
                        "id": 2210,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1703:23:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "id": 2212,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1729:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                              "typeString": "type(string storage pointer)"
                            },
                            "typeName": {
                              "id": 2211,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "1729:6:2",
                              "typeDescriptions": {}
                            }
                          }
                        ],
                        "id": 2213,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "1728:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                          "typeString": "type(string storage pointer)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                          "typeString": "type(string storage pointer)"
                        }
                      ],
                      "expression": {
                        "id": 2204,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "1692:3:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 2205,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "1692:10:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 2214,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1692:45:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 2203,
                  "id": 2215,
                  "nodeType": "Return",
                  "src": "1685:52:2"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readString",
            "parameters": {
              "id": 2200,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2197,
                  "mutability": "mutable",
                  "name": "json",
                  "nodeType": "VariableDeclaration",
                  "scope": 2217,
                  "src": "1583:18:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2196,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1583:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2199,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 2217,
                  "src": "1603:17:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2198,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1603:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1582:39:2"
            },
            "returnParameters": {
              "id": 2203,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2202,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2217,
                  "src": "1656:13:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2201,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1656:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1655:15:2"
            },
            "scope": 2380,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 2241,
            "nodeType": "FunctionDefinition",
            "src": "1750:190:2",
            "body": {
              "id": 2240,
              "nodeType": "Block",
              "src": "1869:71:2",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 2231,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2219,
                            "src": "1910:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 2232,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2221,
                            "src": "1916:3:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 2229,
                            "name": "vm",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2041,
                            "src": "1897:2:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Vm_$6909",
                              "typeString": "contract Vm"
                            }
                          },
                          "id": 2230,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "parseJson",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6901,
                          "src": "1897:12:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory,string memory) external returns (bytes memory)"
                          }
                        },
                        "id": 2233,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1897:23:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "baseExpression": {
                              "id": 2235,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1923:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                "typeString": "type(string storage pointer)"
                              },
                              "typeName": {
                                "id": 2234,
                                "name": "string",
                                "nodeType": "ElementaryTypeName",
                                "src": "1923:6:2",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 2236,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1923:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$",
                              "typeString": "type(string memory[] memory)"
                            }
                          }
                        ],
                        "id": 2237,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "1922:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$",
                          "typeString": "type(string memory[] memory)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$",
                          "typeString": "type(string memory[] memory)"
                        }
                      ],
                      "expression": {
                        "id": 2227,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "1886:3:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 2228,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "1886:10:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 2238,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1886:47:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                      "typeString": "string memory[] memory"
                    }
                  },
                  "functionReturnParameters": 2226,
                  "id": 2239,
                  "nodeType": "Return",
                  "src": "1879:54:2"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readStringArray",
            "parameters": {
              "id": 2222,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2219,
                  "mutability": "mutable",
                  "name": "json",
                  "nodeType": "VariableDeclaration",
                  "scope": 2241,
                  "src": "1775:18:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2218,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1775:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2221,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 2241,
                  "src": "1795:17:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2220,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1795:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1774:39:2"
            },
            "returnParameters": {
              "id": 2226,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2225,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2241,
                  "src": "1848:15:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                    "typeString": "string[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2223,
                      "name": "string",
                      "nodeType": "ElementaryTypeName",
                      "src": "1848:6:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      }
                    },
                    "id": 2224,
                    "nodeType": "ArrayTypeName",
                    "src": "1848:8:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                      "typeString": "string[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1847:17:2"
            },
            "scope": 2380,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 2263,
            "nodeType": "FunctionDefinition",
            "src": "1946:177:2",
            "body": {
              "id": 2262,
              "nodeType": "Block",
              "src": "2053:70:2",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 2254,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2243,
                            "src": "2094:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 2255,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2245,
                            "src": "2100:3:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 2252,
                            "name": "vm",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2041,
                            "src": "2081:2:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Vm_$6909",
                              "typeString": "contract Vm"
                            }
                          },
                          "id": 2253,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "parseJson",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6901,
                          "src": "2081:12:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory,string memory) external returns (bytes memory)"
                          }
                        },
                        "id": 2256,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2081:23:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "id": 2258,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2107:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 2257,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2107:7:2",
                              "typeDescriptions": {}
                            }
                          }
                        ],
                        "id": 2259,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "2106:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        }
                      ],
                      "expression": {
                        "id": 2250,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "2070:3:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 2251,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "2070:10:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 2260,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2070:46:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "functionReturnParameters": 2249,
                  "id": 2261,
                  "nodeType": "Return",
                  "src": "2063:53:2"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readAddress",
            "parameters": {
              "id": 2246,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2243,
                  "mutability": "mutable",
                  "name": "json",
                  "nodeType": "VariableDeclaration",
                  "scope": 2263,
                  "src": "1967:18:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2242,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1967:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2245,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 2263,
                  "src": "1987:17:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2244,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1987:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1966:39:2"
            },
            "returnParameters": {
              "id": 2249,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2248,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2263,
                  "src": "2040:7:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2247,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2040:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2039:9:2"
            },
            "scope": 2380,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 2287,
            "nodeType": "FunctionDefinition",
            "src": "2129:193:2",
            "body": {
              "id": 2286,
              "nodeType": "Block",
              "src": "2250:72:2",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 2277,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2265,
                            "src": "2291:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 2278,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2267,
                            "src": "2297:3:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 2275,
                            "name": "vm",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2041,
                            "src": "2278:2:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Vm_$6909",
                              "typeString": "contract Vm"
                            }
                          },
                          "id": 2276,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "parseJson",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6901,
                          "src": "2278:12:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory,string memory) external returns (bytes memory)"
                          }
                        },
                        "id": 2279,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2278:23:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "baseExpression": {
                              "id": 2281,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2304:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 2280,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2304:7:2",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 2282,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2304:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_array$_t_address_$dyn_memory_ptr_$",
                              "typeString": "type(address[] memory)"
                            }
                          }
                        ],
                        "id": 2283,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "2303:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_array$_t_address_$dyn_memory_ptr_$",
                          "typeString": "type(address[] memory)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_array$_t_address_$dyn_memory_ptr_$",
                          "typeString": "type(address[] memory)"
                        }
                      ],
                      "expression": {
                        "id": 2273,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "2267:3:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 2274,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "2267:10:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 2284,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2267:48:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "functionReturnParameters": 2272,
                  "id": 2285,
                  "nodeType": "Return",
                  "src": "2260:55:2"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readAddressArray",
            "parameters": {
              "id": 2268,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2265,
                  "mutability": "mutable",
                  "name": "json",
                  "nodeType": "VariableDeclaration",
                  "scope": 2287,
                  "src": "2155:18:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2264,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2155:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2267,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 2287,
                  "src": "2175:17:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2266,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2175:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2154:39:2"
            },
            "returnParameters": {
              "id": 2272,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2271,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2287,
                  "src": "2228:16:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2269,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2228:7:2",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2270,
                    "nodeType": "ArrayTypeName",
                    "src": "2228:9:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2227:18:2"
            },
            "scope": 2380,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 2309,
            "nodeType": "FunctionDefinition",
            "src": "2328:168:2",
            "body": {
              "id": 2308,
              "nodeType": "Block",
              "src": "2429:67:2",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 2300,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2289,
                            "src": "2470:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 2301,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2291,
                            "src": "2476:3:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 2298,
                            "name": "vm",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2041,
                            "src": "2457:2:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Vm_$6909",
                              "typeString": "contract Vm"
                            }
                          },
                          "id": 2299,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "parseJson",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6901,
                          "src": "2457:12:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory,string memory) external returns (bytes memory)"
                          }
                        },
                        "id": 2302,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2457:23:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "id": 2304,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2483:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bool_$",
                              "typeString": "type(bool)"
                            },
                            "typeName": {
                              "id": 2303,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "2483:4:2",
                              "typeDescriptions": {}
                            }
                          }
                        ],
                        "id": 2305,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "2482:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bool_$",
                          "typeString": "type(bool)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_bool_$",
                          "typeString": "type(bool)"
                        }
                      ],
                      "expression": {
                        "id": 2296,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "2446:3:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 2297,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "2446:10:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 2306,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2446:43:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 2295,
                  "id": 2307,
                  "nodeType": "Return",
                  "src": "2439:50:2"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readBool",
            "parameters": {
              "id": 2292,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2289,
                  "mutability": "mutable",
                  "name": "json",
                  "nodeType": "VariableDeclaration",
                  "scope": 2309,
                  "src": "2346:18:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2288,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2346:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2291,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 2309,
                  "src": "2366:17:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2290,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2366:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2345:39:2"
            },
            "returnParameters": {
              "id": 2295,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2294,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2309,
                  "src": "2419:4:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2293,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2419:4:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2418:6:2"
            },
            "scope": 2380,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 2333,
            "nodeType": "FunctionDefinition",
            "src": "2502:184:2",
            "body": {
              "id": 2332,
              "nodeType": "Block",
              "src": "2617:69:2",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 2323,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2311,
                            "src": "2658:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 2324,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2313,
                            "src": "2664:3:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 2321,
                            "name": "vm",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2041,
                            "src": "2645:2:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Vm_$6909",
                              "typeString": "contract Vm"
                            }
                          },
                          "id": 2322,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "parseJson",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6901,
                          "src": "2645:12:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory,string memory) external returns (bytes memory)"
                          }
                        },
                        "id": 2325,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2645:23:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "baseExpression": {
                              "id": 2327,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2671:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bool_$",
                                "typeString": "type(bool)"
                              },
                              "typeName": {
                                "id": 2326,
                                "name": "bool",
                                "nodeType": "ElementaryTypeName",
                                "src": "2671:4:2",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 2328,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2671:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_array$_t_bool_$dyn_memory_ptr_$",
                              "typeString": "type(bool[] memory)"
                            }
                          }
                        ],
                        "id": 2329,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "2670:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_array$_t_bool_$dyn_memory_ptr_$",
                          "typeString": "type(bool[] memory)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_array$_t_bool_$dyn_memory_ptr_$",
                          "typeString": "type(bool[] memory)"
                        }
                      ],
                      "expression": {
                        "id": 2319,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "2634:3:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 2320,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "2634:10:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 2330,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2634:45:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                      "typeString": "bool[] memory"
                    }
                  },
                  "functionReturnParameters": 2318,
                  "id": 2331,
                  "nodeType": "Return",
                  "src": "2627:52:2"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readBoolArray",
            "parameters": {
              "id": 2314,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2311,
                  "mutability": "mutable",
                  "name": "json",
                  "nodeType": "VariableDeclaration",
                  "scope": 2333,
                  "src": "2525:18:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2310,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2525:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2313,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 2333,
                  "src": "2545:17:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2312,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2545:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2524:39:2"
            },
            "returnParameters": {
              "id": 2318,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2317,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2333,
                  "src": "2598:13:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                    "typeString": "bool[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2315,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "2598:4:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 2316,
                    "nodeType": "ArrayTypeName",
                    "src": "2598:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                      "typeString": "bool[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2597:15:2"
            },
            "scope": 2380,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 2355,
            "nodeType": "FunctionDefinition",
            "src": "2692:178:2",
            "body": {
              "id": 2354,
              "nodeType": "Block",
              "src": "2802:68:2",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 2346,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2335,
                            "src": "2843:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 2347,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2337,
                            "src": "2849:3:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 2344,
                            "name": "vm",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2041,
                            "src": "2830:2:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Vm_$6909",
                              "typeString": "contract Vm"
                            }
                          },
                          "id": 2345,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "parseJson",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6901,
                          "src": "2830:12:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory,string memory) external returns (bytes memory)"
                          }
                        },
                        "id": 2348,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2830:23:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "id": 2350,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2856:5:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                              "typeString": "type(bytes storage pointer)"
                            },
                            "typeName": {
                              "id": 2349,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2856:5:2",
                              "typeDescriptions": {}
                            }
                          }
                        ],
                        "id": 2351,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "2855:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                          "typeString": "type(bytes storage pointer)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                          "typeString": "type(bytes storage pointer)"
                        }
                      ],
                      "expression": {
                        "id": 2342,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "2819:3:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 2343,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "2819:10:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 2352,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2819:44:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 2341,
                  "id": 2353,
                  "nodeType": "Return",
                  "src": "2812:51:2"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readBytes",
            "parameters": {
              "id": 2338,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2335,
                  "mutability": "mutable",
                  "name": "json",
                  "nodeType": "VariableDeclaration",
                  "scope": 2355,
                  "src": "2711:18:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2334,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2711:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2337,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 2355,
                  "src": "2731:17:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2336,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2731:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2710:39:2"
            },
            "returnParameters": {
              "id": 2341,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2340,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2355,
                  "src": "2784:12:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2339,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2784:5:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2783:14:2"
            },
            "scope": 2380,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 2379,
            "nodeType": "FunctionDefinition",
            "src": "2876:187:2",
            "body": {
              "id": 2378,
              "nodeType": "Block",
              "src": "2993:70:2",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 2369,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2357,
                            "src": "3034:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 2370,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2359,
                            "src": "3040:3:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 2367,
                            "name": "vm",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2041,
                            "src": "3021:2:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Vm_$6909",
                              "typeString": "contract Vm"
                            }
                          },
                          "id": 2368,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "parseJson",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6901,
                          "src": "3021:12:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory,string memory) external returns (bytes memory)"
                          }
                        },
                        "id": 2371,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3021:23:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "baseExpression": {
                              "id": 2373,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3047:5:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                "typeString": "type(bytes storage pointer)"
                              },
                              "typeName": {
                                "id": 2372,
                                "name": "bytes",
                                "nodeType": "ElementaryTypeName",
                                "src": "3047:5:2",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 2374,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3047:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$",
                              "typeString": "type(bytes memory[] memory)"
                            }
                          }
                        ],
                        "id": 2375,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "3046:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$",
                          "typeString": "type(bytes memory[] memory)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$",
                          "typeString": "type(bytes memory[] memory)"
                        }
                      ],
                      "expression": {
                        "id": 2365,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "3010:3:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 2366,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "3010:10:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 2376,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3010:46:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                      "typeString": "bytes memory[] memory"
                    }
                  },
                  "functionReturnParameters": 2364,
                  "id": 2377,
                  "nodeType": "Return",
                  "src": "3003:53:2"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readBytesArray",
            "parameters": {
              "id": 2360,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2357,
                  "mutability": "mutable",
                  "name": "json",
                  "nodeType": "VariableDeclaration",
                  "scope": 2379,
                  "src": "2900:18:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2356,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2900:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2359,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 2379,
                  "src": "2920:17:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2358,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2920:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2899:39:2"
            },
            "returnParameters": {
              "id": 2364,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2363,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2379,
                  "src": "2973:14:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                    "typeString": "bytes[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2361,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "2973:5:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "id": 2362,
                    "nodeType": "ArrayTypeName",
                    "src": "2973:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                      "typeString": "bytes[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2972:16:2"
            },
            "scope": 2380,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "fullyImplemented": true,
        "linearizedBaseContracts": [
          2380
        ],
        "name": "stdJson",
        "scope": 2381
      }
    ],
    "license": "MIT"
  },
  "id": 2
}