{
  "version": 1,
  "generatedAt": "2026-05-25T11:41:33.166Z",
  "fileId": "file:hiutf5:wasmepubservice-cs",
  "executableScope": true,
  "executableSymbolCount": 3,
  "fileNodeId": "file:hiutf5:wasmepubservice-cs",
  "symbolNodeIds": [
    "class:veazt0:wasmepubreader",
    "method:10zr37d:wasmepubreader",
    "method:10bpn0:getepubcontentasync",
    "method:1do3jf2:extractmetadataasync",
    "type:uf4ds6:wasmepubreader",
    "type:5mx9m5:wasmepubmetadataextractor"
  ],
  "containmentEdgeIds": [
    "edge:14fnzxu:contains",
    "edge:120c5js:contains",
    "edge:173dxji:contains",
    "edge:1lo6fcn:contains",
    "edge:5mlzgq:defines-type",
    "edge:17chvmx:defines-type"
  ],
  "relationshipEdgeIds": [
    "edge:14fnzxu:contains",
    "edge:120c5js:contains",
    "edge:173dxji:contains",
    "edge:1lo6fcn:contains",
    "edge:5mlzgq:defines-type",
    "edge:17chvmx:defines-type"
  ],
  "integrationEdgeIds": [],
  "controlFlowFragments": [
    {
      "fragmentId": "method:10zr37d:wasmepubreader__fragment",
      "ownerFileId": "file:hiutf5:wasmepubservice-cs",
      "ownerSymbolId": "method:10zr37d:wasmepubreader",
      "ownerSymbolName": "WasmEpubReader",
      "entryNodeId": "method:10zr37d:wasmepubreader__entry",
      "exitNodeIds": [
        "method:10zr37d:wasmepubreader__implicit_return"
      ],
      "nodes": [
        {
          "id": "method:10zr37d:wasmepubreader__entry",
          "kind": "entry",
          "label": "WasmEpubReader entry",
          "line": 12,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.99,
          "detail": "Constructor that stores the injected HttpClient for later HTTP calls."
        },
        {
          "id": "method:10zr37d:wasmepubreader__action_14_assignment_14__linear",
          "kind": "statement",
          "label": "Stores HttpClient dependency",
          "line": 14,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7,
          "detail": "_httpClient = httpClient"
        },
        {
          "id": "method:10zr37d:wasmepubreader__implicit_return",
          "kind": "return",
          "label": "return",
          "line": 15,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.72,
          "detail": "Implicit method exit inferred from method boundary."
        }
      ],
      "edges": [
        {
          "id": "method:10zr37d:wasmepubreader__entry__method:10zr37d:wasmepubreader__action_14_assignment_14__linear",
          "from": "method:10zr37d:wasmepubreader__entry",
          "to": "method:10zr37d:wasmepubreader__action_14_assignment_14__linear",
          "kind": "next",
          "line": 14,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7
        },
        {
          "id": "method:10zr37d:wasmepubreader__action_14_assignment_14__linear__implicit_return",
          "from": "method:10zr37d:wasmepubreader__action_14_assignment_14__linear",
          "to": "method:10zr37d:wasmepubreader__implicit_return",
          "kind": "return",
          "line": 15,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.72
        }
      ],
      "jumpTargets": [],
      "exceptionTargets": [],
      "loopBackEdges": [],
      "mergeNodeIds": [],
      "language": "csharp",
      "confidence": 0.76,
      "lineSpan": {
        "start": 12,
        "end": 15
      },
      "unsupportedConstructs": [],
      "evidence": [
        {
          "path": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "line": 12,
          "summary": "Control-flow fragment extracted for method WasmEpubReader.",
          "kind": "file-summary"
        }
      ]
    },
    {
      "fragmentId": "method:10bpn0:getepubcontentasync__fragment",
      "ownerFileId": "file:hiutf5:wasmepubservice-cs",
      "ownerSymbolId": "method:10bpn0:getepubcontentasync",
      "ownerSymbolName": "GetEpubContentAsync",
      "entryNodeId": "method:10bpn0:getepubcontentasync__entry",
      "exitNodeIds": [
        "method:10bpn0:getepubcontentasync__action_29_getepubcontentasync_return_29_4__return",
        "method:10bpn0:getepubcontentasync__action_33_getepubcontentasync_return_33_6__return",
        "method:10bpn0:getepubcontentasync__action_33_return_33__return",
        "method:10bpn0:getepubcontentasync__action_37_getepubcontentasync_return_37_8__return",
        "method:10bpn0:getepubcontentasync__action_37_return_37__return"
      ],
      "nodes": [
        {
          "id": "method:10bpn0:getepubcontentasync__entry",
          "kind": "entry",
          "label": "GetEpubContentAsync entry",
          "line": 17,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.99,
          "detail": "Fetches a chapter's reader page from the server API and returns a Result-wrapped ReaderPageViewModel, handling deserialization and errors."
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_23_try_catch_23__linear",
          "kind": "statement",
          "label": "Network/deserialization protection",
          "line": 23,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7,
          "detail": "Wraps HTTP call and parsing in try/catch; on exception returns Result.Fail with Error caused by exception."
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_23_getepubcontentasync_try_23_0__try",
          "kind": "try",
          "label": "Begins protected execution",
          "line": 23,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.84,
          "detail": "try"
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_25_getepubcontentasync_await_25_1__await",
          "kind": "await",
          "label": "Waits for async work",
          "line": 25,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.81,
          "detail": "var response = await _httpClient.GetAsync($\"/api/epub/{ebookId}/{chapterIndex}\", cancellationToken);"
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_25_external_call_25__linear",
          "kind": "http-call",
          "label": "HTTP GET to server EPUB endpoint",
          "line": 25,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7,
          "detail": "Calls _httpClient.GetAsync($\"/api/epub/{ebookId}/{chapterIndex}\", cancellationToken) to retrieve chapter content."
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_26_branch_26__condition",
          "kind": "condition",
          "label": "response.IsSuccessStatusCode",
          "line": 26,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_26_branch_26__true",
          "kind": "branch-true",
          "label": "success -> deserialize JSON to ReaderPageViewModel (line 28) and return Ok if not null (line 29)",
          "line": 26,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_26_branch_26__false",
          "kind": "branch-false",
          "label": "failure -> read error body (line 32) and return Fail with status and body (line 33)",
          "line": 26,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_26_branch_26__merge",
          "kind": "statement",
          "label": "merge",
          "line": 26,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_26_getepubcontentasync_branch_26_2__condition",
          "kind": "condition",
          "label": "response.IsSuccessStatusCode",
          "line": 26,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.78,
          "detail": "if (response.IsSuccessStatusCode)"
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_26_getepubcontentasync_branch_26_2__true",
          "kind": "branch-true",
          "label": "true",
          "line": 26,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.78
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_26_getepubcontentasync_branch_26_2__false",
          "kind": "branch-false",
          "label": "false",
          "line": 26,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.78
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_26_getepubcontentasync_branch_26_2__merge",
          "kind": "statement",
          "label": "merge",
          "line": 26,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.78
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_28_getepubcontentasync_await_28_3__await",
          "kind": "await",
          "label": "Waits for async work",
          "line": 28,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.81,
          "detail": "var viewModel = await response.Content.ReadFromJsonAsync<ReaderPageViewModel>(cancellationToken: cancellationToken);"
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_28_external_call_28__linear",
          "kind": "http-call",
          "label": "Deserialize JSON response",
          "line": 28,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7,
          "detail": "response.Content.ReadFromJsonAsync<ReaderPageViewModel>(cancellationToken: cancellationToken)"
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_29_getepubcontentasync_return_29_4__return",
          "kind": "return",
          "label": "Returns result",
          "line": 29,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7,
          "detail": "return viewModel != null ? Result.Ok(viewModel) : Result.Fail(\"Failed to deserialize response.\");"
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_29_guard_clause_29__condition",
          "kind": "condition",
          "label": "viewModel != null",
          "line": 29,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_29_guard_clause_29__true",
          "kind": "branch-true",
          "label": "return Result.Ok(viewModel)",
          "line": 29,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_29_guard_clause_29__false",
          "kind": "branch-false",
          "label": "return Result.Fail(\"Failed to deserialize response.\")",
          "line": 29,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_29_guard_clause_29__merge",
          "kind": "statement",
          "label": "merge",
          "line": 29,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_32_getepubcontentasync_await_32_5__await",
          "kind": "await",
          "label": "Waits for async work",
          "line": 32,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.81,
          "detail": "var errorBody = await response.Content.ReadAsStringAsync(cancellationToken);"
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_32_external_call_32__linear",
          "kind": "http-call",
          "label": "Read error response body",
          "line": 32,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7,
          "detail": "response.Content.ReadAsStringAsync(cancellationToken)"
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_33_getepubcontentasync_return_33_6__return",
          "kind": "return",
          "label": "Returns result",
          "line": 33,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7,
          "detail": "return Result.Fail($\"Server error ({response.StatusCode}): {errorBody}\");"
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_33_return_33__return",
          "kind": "return",
          "label": "Return failure Result for HTTP error",
          "line": 33,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7,
          "detail": "Result.Fail with server status and body"
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_35_getepubcontentasync_catch_35_7__catch",
          "kind": "catch",
          "label": "catch Exception ex",
          "line": 35,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.86,
          "detail": "catch (Exception ex)"
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_37_getepubcontentasync_return_37_8__return",
          "kind": "return",
          "label": "Returns result",
          "line": 37,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7,
          "detail": "return Result.Fail(new Error($\"Network or parsing error: {ex.Message}\").CausedBy(ex));"
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_37_return_37__return",
          "kind": "return",
          "label": "Return failure Result for exception",
          "line": 37,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7,
          "detail": "Result.Fail(new Error(...).CausedBy(ex))"
        }
      ],
      "edges": [
        {
          "id": "method:10bpn0:getepubcontentasync__entry__method:10bpn0:getepubcontentasync__action_23_try_catch_23__linear",
          "from": "method:10bpn0:getepubcontentasync__entry",
          "to": "method:10bpn0:getepubcontentasync__action_23_try_catch_23__linear",
          "kind": "next",
          "line": 23,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_23_try_catch_23__linear__method:10bpn0:getepubcontentasync__action_23_getepubcontentasync_try_23_0__try",
          "from": "method:10bpn0:getepubcontentasync__action_23_try_catch_23__linear",
          "to": "method:10bpn0:getepubcontentasync__action_23_getepubcontentasync_try_23_0__try",
          "kind": "next",
          "line": 23,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.84
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_23_getepubcontentasync_try_23_0__try__method:10bpn0:getepubcontentasync__action_25_getepubcontentasync_await_25_1__await",
          "from": "method:10bpn0:getepubcontentasync__action_23_getepubcontentasync_try_23_0__try",
          "to": "method:10bpn0:getepubcontentasync__action_25_getepubcontentasync_await_25_1__await",
          "kind": "next",
          "line": 25,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.81
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_25_getepubcontentasync_await_25_1__await__method:10bpn0:getepubcontentasync__action_25_external_call_25__linear",
          "from": "method:10bpn0:getepubcontentasync__action_25_getepubcontentasync_await_25_1__await",
          "to": "method:10bpn0:getepubcontentasync__action_25_external_call_25__linear",
          "kind": "next",
          "line": 25,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_25_external_call_25__linear__method:10bpn0:getepubcontentasync__action_26_branch_26__condition",
          "from": "method:10bpn0:getepubcontentasync__action_25_external_call_25__linear",
          "to": "method:10bpn0:getepubcontentasync__action_26_branch_26__condition",
          "kind": "next",
          "line": 26,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_26_branch_26__condition__method:10bpn0:getepubcontentasync__action_26_branch_26__true",
          "from": "method:10bpn0:getepubcontentasync__action_26_branch_26__condition",
          "to": "method:10bpn0:getepubcontentasync__action_26_branch_26__true",
          "kind": "condition-true",
          "label": "success -> deserialize JSON to ReaderPageViewModel (line 28) and return Ok if not null (line 29)",
          "line": 26,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_26_branch_26__condition__method:10bpn0:getepubcontentasync__action_26_branch_26__false",
          "from": "method:10bpn0:getepubcontentasync__action_26_branch_26__condition",
          "to": "method:10bpn0:getepubcontentasync__action_26_branch_26__false",
          "kind": "condition-false",
          "label": "failure -> read error body (line 32) and return Fail with status and body (line 33)",
          "line": 26,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_26_branch_26__true__method:10bpn0:getepubcontentasync__action_26_branch_26__merge",
          "from": "method:10bpn0:getepubcontentasync__action_26_branch_26__true",
          "to": "method:10bpn0:getepubcontentasync__action_26_branch_26__merge",
          "kind": "next",
          "line": 26,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_26_branch_26__false__method:10bpn0:getepubcontentasync__action_26_branch_26__merge",
          "from": "method:10bpn0:getepubcontentasync__action_26_branch_26__false",
          "to": "method:10bpn0:getepubcontentasync__action_26_branch_26__merge",
          "kind": "next",
          "line": 26,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_26_branch_26__merge__method:10bpn0:getepubcontentasync__action_26_getepubcontentasync_branch_26_2__condition",
          "from": "method:10bpn0:getepubcontentasync__action_26_branch_26__merge",
          "to": "method:10bpn0:getepubcontentasync__action_26_getepubcontentasync_branch_26_2__condition",
          "kind": "next",
          "line": 26,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.78
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_26_getepubcontentasync_branch_26_2__condition__method:10bpn0:getepubcontentasync__action_26_getepubcontentasync_branch_26_2__true",
          "from": "method:10bpn0:getepubcontentasync__action_26_getepubcontentasync_branch_26_2__condition",
          "to": "method:10bpn0:getepubcontentasync__action_26_getepubcontentasync_branch_26_2__true",
          "kind": "condition-true",
          "label": "true",
          "line": 26,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.78
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_26_getepubcontentasync_branch_26_2__condition__method:10bpn0:getepubcontentasync__action_26_getepubcontentasync_branch_26_2__false",
          "from": "method:10bpn0:getepubcontentasync__action_26_getepubcontentasync_branch_26_2__condition",
          "to": "method:10bpn0:getepubcontentasync__action_26_getepubcontentasync_branch_26_2__false",
          "kind": "condition-false",
          "label": "false",
          "line": 26,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.78
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_26_getepubcontentasync_branch_26_2__true__method:10bpn0:getepubcontentasync__action_26_getepubcontentasync_branch_26_2__merge",
          "from": "method:10bpn0:getepubcontentasync__action_26_getepubcontentasync_branch_26_2__true",
          "to": "method:10bpn0:getepubcontentasync__action_26_getepubcontentasync_branch_26_2__merge",
          "kind": "next",
          "line": 26,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.78
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_26_getepubcontentasync_branch_26_2__false__method:10bpn0:getepubcontentasync__action_26_getepubcontentasync_branch_26_2__merge",
          "from": "method:10bpn0:getepubcontentasync__action_26_getepubcontentasync_branch_26_2__false",
          "to": "method:10bpn0:getepubcontentasync__action_26_getepubcontentasync_branch_26_2__merge",
          "kind": "next",
          "line": 26,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.78
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_26_getepubcontentasync_branch_26_2__merge__method:10bpn0:getepubcontentasync__action_28_getepubcontentasync_await_28_3__await",
          "from": "method:10bpn0:getepubcontentasync__action_26_getepubcontentasync_branch_26_2__merge",
          "to": "method:10bpn0:getepubcontentasync__action_28_getepubcontentasync_await_28_3__await",
          "kind": "next",
          "line": 28,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.81
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_28_getepubcontentasync_await_28_3__await__method:10bpn0:getepubcontentasync__action_28_external_call_28__linear",
          "from": "method:10bpn0:getepubcontentasync__action_28_getepubcontentasync_await_28_3__await",
          "to": "method:10bpn0:getepubcontentasync__action_28_external_call_28__linear",
          "kind": "next",
          "line": 28,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_28_external_call_28__linear__method:10bpn0:getepubcontentasync__action_29_getepubcontentasync_return_29_4__return",
          "from": "method:10bpn0:getepubcontentasync__action_28_external_call_28__linear",
          "to": "method:10bpn0:getepubcontentasync__action_29_getepubcontentasync_return_29_4__return",
          "kind": "return",
          "line": 29,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_29_getepubcontentasync_return_29_4__return__method:10bpn0:getepubcontentasync__action_29_guard_clause_29__condition",
          "from": "method:10bpn0:getepubcontentasync__action_29_getepubcontentasync_return_29_4__return",
          "to": "method:10bpn0:getepubcontentasync__action_29_guard_clause_29__condition",
          "kind": "next",
          "line": 29,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_29_guard_clause_29__condition__method:10bpn0:getepubcontentasync__action_29_guard_clause_29__true",
          "from": "method:10bpn0:getepubcontentasync__action_29_guard_clause_29__condition",
          "to": "method:10bpn0:getepubcontentasync__action_29_guard_clause_29__true",
          "kind": "condition-true",
          "label": "return Result.Ok(viewModel)",
          "line": 29,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_29_guard_clause_29__condition__method:10bpn0:getepubcontentasync__action_29_guard_clause_29__false",
          "from": "method:10bpn0:getepubcontentasync__action_29_guard_clause_29__condition",
          "to": "method:10bpn0:getepubcontentasync__action_29_guard_clause_29__false",
          "kind": "condition-false",
          "label": "return Result.Fail(\"Failed to deserialize response.\")",
          "line": 29,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_29_guard_clause_29__true__method:10bpn0:getepubcontentasync__action_29_guard_clause_29__merge",
          "from": "method:10bpn0:getepubcontentasync__action_29_guard_clause_29__true",
          "to": "method:10bpn0:getepubcontentasync__action_29_guard_clause_29__merge",
          "kind": "next",
          "line": 29,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_29_guard_clause_29__false__method:10bpn0:getepubcontentasync__action_29_guard_clause_29__merge",
          "from": "method:10bpn0:getepubcontentasync__action_29_guard_clause_29__false",
          "to": "method:10bpn0:getepubcontentasync__action_29_guard_clause_29__merge",
          "kind": "next",
          "line": 29,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_29_guard_clause_29__merge__method:10bpn0:getepubcontentasync__action_32_getepubcontentasync_await_32_5__await",
          "from": "method:10bpn0:getepubcontentasync__action_29_guard_clause_29__merge",
          "to": "method:10bpn0:getepubcontentasync__action_32_getepubcontentasync_await_32_5__await",
          "kind": "next",
          "line": 32,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.81
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_32_getepubcontentasync_await_32_5__await__method:10bpn0:getepubcontentasync__action_32_external_call_32__linear",
          "from": "method:10bpn0:getepubcontentasync__action_32_getepubcontentasync_await_32_5__await",
          "to": "method:10bpn0:getepubcontentasync__action_32_external_call_32__linear",
          "kind": "next",
          "line": 32,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_32_external_call_32__linear__method:10bpn0:getepubcontentasync__action_33_getepubcontentasync_return_33_6__return",
          "from": "method:10bpn0:getepubcontentasync__action_32_external_call_32__linear",
          "to": "method:10bpn0:getepubcontentasync__action_33_getepubcontentasync_return_33_6__return",
          "kind": "return",
          "line": 33,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_33_getepubcontentasync_return_33_6__return__method:10bpn0:getepubcontentasync__action_33_return_33__return",
          "from": "method:10bpn0:getepubcontentasync__action_33_getepubcontentasync_return_33_6__return",
          "to": "method:10bpn0:getepubcontentasync__action_33_return_33__return",
          "kind": "return",
          "line": 33,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_33_return_33__return__method:10bpn0:getepubcontentasync__action_35_getepubcontentasync_catch_35_7__catch",
          "from": "method:10bpn0:getepubcontentasync__action_33_return_33__return",
          "to": "method:10bpn0:getepubcontentasync__action_35_getepubcontentasync_catch_35_7__catch",
          "kind": "exception",
          "line": 35,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.86
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_35_getepubcontentasync_catch_35_7__catch__method:10bpn0:getepubcontentasync__action_37_getepubcontentasync_return_37_8__return",
          "from": "method:10bpn0:getepubcontentasync__action_35_getepubcontentasync_catch_35_7__catch",
          "to": "method:10bpn0:getepubcontentasync__action_37_getepubcontentasync_return_37_8__return",
          "kind": "return",
          "line": 37,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7
        },
        {
          "id": "method:10bpn0:getepubcontentasync__action_37_getepubcontentasync_return_37_8__return__method:10bpn0:getepubcontentasync__action_37_return_37__return",
          "from": "method:10bpn0:getepubcontentasync__action_37_getepubcontentasync_return_37_8__return",
          "to": "method:10bpn0:getepubcontentasync__action_37_return_37__return",
          "kind": "return",
          "line": 37,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7
        }
      ],
      "jumpTargets": [],
      "exceptionTargets": [],
      "loopBackEdges": [],
      "mergeNodeIds": [
        "method:10bpn0:getepubcontentasync__action_26_branch_26__merge",
        "method:10bpn0:getepubcontentasync__action_26_getepubcontentasync_branch_26_2__merge",
        "method:10bpn0:getepubcontentasync__action_29_guard_clause_29__merge"
      ],
      "language": "csharp",
      "confidence": 0.98,
      "lineSpan": {
        "start": 17,
        "end": 39
      },
      "unsupportedConstructs": [],
      "evidence": [
        {
          "path": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "line": 17,
          "summary": "Control-flow fragment extracted for method GetEpubContentAsync.",
          "kind": "file-summary"
        }
      ]
    },
    {
      "fragmentId": "method:1do3jf2:extractmetadataasync__fragment",
      "ownerFileId": "file:hiutf5:wasmepubservice-cs",
      "ownerSymbolId": "method:1do3jf2:extractmetadataasync",
      "ownerSymbolName": "ExtractMetadataAsync",
      "entryNodeId": "method:1do3jf2:extractmetadataasync__entry",
      "exitNodeIds": [
        "method:1do3jf2:extractmetadataasync__action_53_extractmetadataasync_return_53_3__return",
        "method:1do3jf2:extractmetadataasync__action_53_return_53__return",
        "method:1do3jf2:extractmetadataasync__action_57_extractmetadataasync_return_57_5__return",
        "method:1do3jf2:extractmetadataasync__action_57_return_57__return"
      ],
      "nodes": [
        {
          "id": "method:1do3jf2:extractmetadataasync__entry",
          "kind": "entry",
          "label": "ExtractMetadataAsync entry",
          "line": 45,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.99,
          "detail": "Opens an EPUB stream locally, extracts title, author, and cover image, and returns them in a LocalEpubMetadata wrapped in a Result."
        },
        {
          "id": "method:1do3jf2:extractmetadataasync__action_47_try_catch_47__linear",
          "kind": "statement",
          "label": "Local EPUB parsing protection",
          "line": 47,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7,
          "detail": "Wraps EPUB parsing in try/catch; on exception returns Result.Fail with Error caused by exception."
        },
        {
          "id": "method:1do3jf2:extractmetadataasync__action_47_extractmetadataasync_try_47_0__try",
          "kind": "try",
          "label": "Begins protected execution",
          "line": 47,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.84,
          "detail": "try"
        },
        {
          "id": "method:1do3jf2:extractmetadataasync__action_49_extractmetadataasync_await_49_1__await",
          "kind": "await",
          "label": "Waits for async work",
          "line": 49,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.81,
          "detail": "using var bookRef = await VersOne.Epub.EpubReader.OpenBookAsync(epubStream);"
        },
        {
          "id": "method:1do3jf2:extractmetadataasync__action_49_external_call_49__linear",
          "kind": "http-call",
          "label": "Open EPUB book asynchronously",
          "line": 49,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7,
          "detail": "VersOne.Epub.EpubReader.OpenBookAsync(epubStream) to obtain book reference."
        },
        {
          "id": "method:1do3jf2:extractmetadataasync__action_50_assignment_50__linear",
          "kind": "statement",
          "label": "Normalize title and author with fallbacks",
          "line": 50,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7,
          "detail": "title = bookRef.Title ?? \"Unknown Title\"; author = bookRef.Author ?? \"Unknown Author\""
        },
        {
          "id": "method:1do3jf2:extractmetadataasync__action_52_extractmetadataasync_await_52_2__await",
          "kind": "await",
          "label": "Waits for async work",
          "line": 52,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.81,
          "detail": "byte[]? cover = await bookRef.ReadCoverAsync();"
        },
        {
          "id": "method:1do3jf2:extractmetadataasync__action_52_external_call_52__linear",
          "kind": "http-call",
          "label": "Read cover image bytes",
          "line": 52,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7,
          "detail": "bookRef.ReadCoverAsync()"
        },
        {
          "id": "method:1do3jf2:extractmetadataasync__action_53_extractmetadataasync_return_53_3__return",
          "kind": "return",
          "label": "Returns result",
          "line": 53,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7,
          "detail": "return Result.Ok(new LocalEpubMetadata { Title = title, Author = author, CoverImage = cover });"
        },
        {
          "id": "method:1do3jf2:extractmetadataasync__action_53_return_53__return",
          "kind": "return",
          "label": "Return success Result with LocalEpubMetadata",
          "line": 53,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7,
          "detail": "Result.Ok(new LocalEpubMetadata { Title, Author, CoverImage })"
        },
        {
          "id": "method:1do3jf2:extractmetadataasync__action_55_extractmetadataasync_catch_55_4__catch",
          "kind": "catch",
          "label": "catch Exception ex",
          "line": 55,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.86,
          "detail": "catch (Exception ex)"
        },
        {
          "id": "method:1do3jf2:extractmetadataasync__action_57_extractmetadataasync_return_57_5__return",
          "kind": "return",
          "label": "Returns result",
          "line": 57,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7,
          "detail": "return Result.Fail(new Error($\"Failed to extract EPUB metadata locally: {ex.Message}\").CausedBy(ex));"
        },
        {
          "id": "method:1do3jf2:extractmetadataasync__action_57_return_57__return",
          "kind": "return",
          "label": "Return failure Result for exception",
          "line": 57,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7,
          "detail": "Result.Fail(new Error(...).CausedBy(ex))"
        }
      ],
      "edges": [
        {
          "id": "method:1do3jf2:extractmetadataasync__entry__method:1do3jf2:extractmetadataasync__action_47_try_catch_47__linear",
          "from": "method:1do3jf2:extractmetadataasync__entry",
          "to": "method:1do3jf2:extractmetadataasync__action_47_try_catch_47__linear",
          "kind": "next",
          "line": 47,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7
        },
        {
          "id": "method:1do3jf2:extractmetadataasync__action_47_try_catch_47__linear__method:1do3jf2:extractmetadataasync__action_47_extractmetadataasync_try_47_0__try",
          "from": "method:1do3jf2:extractmetadataasync__action_47_try_catch_47__linear",
          "to": "method:1do3jf2:extractmetadataasync__action_47_extractmetadataasync_try_47_0__try",
          "kind": "next",
          "line": 47,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.84
        },
        {
          "id": "method:1do3jf2:extractmetadataasync__action_47_extractmetadataasync_try_47_0__try__method:1do3jf2:extractmetadataasync__action_49_extractmetadataasync_await_49_1__await",
          "from": "method:1do3jf2:extractmetadataasync__action_47_extractmetadataasync_try_47_0__try",
          "to": "method:1do3jf2:extractmetadataasync__action_49_extractmetadataasync_await_49_1__await",
          "kind": "next",
          "line": 49,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.81
        },
        {
          "id": "method:1do3jf2:extractmetadataasync__action_49_extractmetadataasync_await_49_1__await__method:1do3jf2:extractmetadataasync__action_49_external_call_49__linear",
          "from": "method:1do3jf2:extractmetadataasync__action_49_extractmetadataasync_await_49_1__await",
          "to": "method:1do3jf2:extractmetadataasync__action_49_external_call_49__linear",
          "kind": "next",
          "line": 49,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7
        },
        {
          "id": "method:1do3jf2:extractmetadataasync__action_49_external_call_49__linear__method:1do3jf2:extractmetadataasync__action_50_assignment_50__linear",
          "from": "method:1do3jf2:extractmetadataasync__action_49_external_call_49__linear",
          "to": "method:1do3jf2:extractmetadataasync__action_50_assignment_50__linear",
          "kind": "next",
          "line": 50,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7
        },
        {
          "id": "method:1do3jf2:extractmetadataasync__action_50_assignment_50__linear__method:1do3jf2:extractmetadataasync__action_52_extractmetadataasync_await_52_2__await",
          "from": "method:1do3jf2:extractmetadataasync__action_50_assignment_50__linear",
          "to": "method:1do3jf2:extractmetadataasync__action_52_extractmetadataasync_await_52_2__await",
          "kind": "next",
          "line": 52,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.81
        },
        {
          "id": "method:1do3jf2:extractmetadataasync__action_52_extractmetadataasync_await_52_2__await__method:1do3jf2:extractmetadataasync__action_52_external_call_52__linear",
          "from": "method:1do3jf2:extractmetadataasync__action_52_extractmetadataasync_await_52_2__await",
          "to": "method:1do3jf2:extractmetadataasync__action_52_external_call_52__linear",
          "kind": "next",
          "line": 52,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7
        },
        {
          "id": "method:1do3jf2:extractmetadataasync__action_52_external_call_52__linear__method:1do3jf2:extractmetadataasync__action_53_extractmetadataasync_return_53_3__return",
          "from": "method:1do3jf2:extractmetadataasync__action_52_external_call_52__linear",
          "to": "method:1do3jf2:extractmetadataasync__action_53_extractmetadataasync_return_53_3__return",
          "kind": "return",
          "line": 53,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7
        },
        {
          "id": "method:1do3jf2:extractmetadataasync__action_53_extractmetadataasync_return_53_3__return__method:1do3jf2:extractmetadataasync__action_53_return_53__return",
          "from": "method:1do3jf2:extractmetadataasync__action_53_extractmetadataasync_return_53_3__return",
          "to": "method:1do3jf2:extractmetadataasync__action_53_return_53__return",
          "kind": "return",
          "line": 53,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7
        },
        {
          "id": "method:1do3jf2:extractmetadataasync__action_53_return_53__return__method:1do3jf2:extractmetadataasync__action_55_extractmetadataasync_catch_55_4__catch",
          "from": "method:1do3jf2:extractmetadataasync__action_53_return_53__return",
          "to": "method:1do3jf2:extractmetadataasync__action_55_extractmetadataasync_catch_55_4__catch",
          "kind": "exception",
          "line": 55,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.86
        },
        {
          "id": "method:1do3jf2:extractmetadataasync__action_55_extractmetadataasync_catch_55_4__catch__method:1do3jf2:extractmetadataasync__action_57_extractmetadataasync_return_57_5__return",
          "from": "method:1do3jf2:extractmetadataasync__action_55_extractmetadataasync_catch_55_4__catch",
          "to": "method:1do3jf2:extractmetadataasync__action_57_extractmetadataasync_return_57_5__return",
          "kind": "return",
          "line": 57,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7
        },
        {
          "id": "method:1do3jf2:extractmetadataasync__action_57_extractmetadataasync_return_57_5__return__method:1do3jf2:extractmetadataasync__action_57_return_57__return",
          "from": "method:1do3jf2:extractmetadataasync__action_57_extractmetadataasync_return_57_5__return",
          "to": "method:1do3jf2:extractmetadataasync__action_57_return_57__return",
          "kind": "return",
          "line": 57,
          "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "confidence": 0.7
        }
      ],
      "jumpTargets": [],
      "exceptionTargets": [],
      "loopBackEdges": [],
      "mergeNodeIds": [],
      "language": "csharp",
      "confidence": 0.98,
      "lineSpan": {
        "start": 45,
        "end": 59
      },
      "unsupportedConstructs": [],
      "evidence": [
        {
          "path": "NexusReader.Web.Client/Services/WasmEpubService.cs",
          "line": 45,
          "summary": "Control-flow fragment extracted for method ExtractMetadataAsync.",
          "kind": "file-summary"
        }
      ]
    }
  ],
  "unresolvedJumps": [],
  "diagrams": [
    {
      "id": "file_hiutf5_wasmepubservice_cs_neighborhood_view",
      "purpose": "neighborhood-view",
      "title": "WasmEpubService Neighborhood",
      "required": true,
      "diagram": {
        "id": "file_hiutf5_wasmepubservice_cs_neighborhood_view",
        "kind": "dependency-map",
        "title": "WasmEpubService Neighborhood",
        "direction": "LR",
        "nodes": [
          {
            "id": "file_hiutf5_wasmepubservice_cs",
            "kind": "service",
            "label": "WasmEpubService",
            "shape": "rounded",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs"
          },
          {
            "id": "class_veazt0_wasmepubreader",
            "kind": "service",
            "label": "WasmEpubReader",
            "shape": "rounded",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs"
          },
          {
            "id": "method_10zr37d_wasmepubreader",
            "kind": "method",
            "label": "WasmEpubReader()",
            "shape": "subproc",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 12
          },
          {
            "id": "method_10bpn0_getepubcontentasync",
            "kind": "method",
            "label": "GetEpubContentAsync()",
            "shape": "subproc",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 17
          },
          {
            "id": "method_1do3jf2_extractmetadataasync",
            "kind": "method",
            "label": "ExtractMetadataAsync()",
            "shape": "subproc",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 45
          },
          {
            "id": "type_uf4ds6_wasmepubreader",
            "kind": "document",
            "label": "WasmEpubReader",
            "shape": "doc",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 8
          },
          {
            "id": "type_5mx9m5_wasmepubmetadataextractor",
            "kind": "document",
            "label": "WasmEpubMetadataExtractor",
            "shape": "doc",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 43
          }
        ],
        "edges": [],
        "metadata": {
          "evidencePaths": [
            "NexusReader.Web.Client/Services/WasmEpubService.cs"
          ]
        },
        "subgraphs": []
      },
      "mermaidSource": "flowchart LR\n    class_veazt0_wasmepubreader(\"WasmEpubReader\")\n    file_hiutf5_wasmepubservice_cs(\"WasmEpubService\")\n    method_10bpn0_getepubcontentasync[[\"GetEpubContentAsync()\"]]\n    method_10zr37d_wasmepubreader[[\"WasmEpubReader()\"]]\n    method_1do3jf2_extractmetadataasync[[\"ExtractMetadataAsync()\"]]\n    type_5mx9m5_wasmepubmetadataextractor[/\"WasmEpubMetadataExtractor\"/]\n    type_uf4ds6_wasmepubreader[/\"WasmEpubReader\"/]",
      "warnings": []
    },
    {
      "id": "file_hiutf5_wasmepubservice_cs_execution_view",
      "purpose": "execution-overview",
      "title": "WasmEpubService Execution Overview",
      "required": true,
      "diagram": {
        "id": "file_hiutf5_wasmepubservice_cs_execution_view",
        "kind": "method-flow",
        "title": "WasmEpubService Execution Overview",
        "direction": "TD",
        "nodes": [
          {
            "id": "class_veazt0_wasmepubreader",
            "kind": "service",
            "label": "WasmEpubReader",
            "shape": "rounded",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs"
          },
          {
            "id": "method_10zr37d_wasmepubreader",
            "kind": "method",
            "label": "WasmEpubReader()",
            "shape": "subproc",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 12
          },
          {
            "id": "method_10bpn0_getepubcontentasync",
            "kind": "method",
            "label": "GetEpubContentAsync()",
            "shape": "subproc",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 17
          },
          {
            "id": "method_1do3jf2_extractmetadataasync",
            "kind": "method",
            "label": "ExtractMetadataAsync()",
            "shape": "subproc",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 45
          },
          {
            "id": "unresolved_unresolved_y49oul_interaction_target",
            "kind": "prompt",
            "label": "Unresolved: Calls _httpClient.GetAsync($\\\"/api/epub/{ebookId}/{chapterIndex}\\\", cancellationToken) to retrieve chapter content.",
            "shape": "diamond",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 25
          },
          {
            "id": "unresolved_unresolved_ubjob5_interaction_target",
            "kind": "prompt",
            "label": "Unresolved: response.Content.ReadFromJsonAsync<ReaderPageViewModel>(cancellationToken: cancellationToken)",
            "shape": "diamond",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 28
          },
          {
            "id": "unresolved_unresolved_ds2njs_interaction_target",
            "kind": "prompt",
            "label": "Unresolved: response.Content.ReadAsStringAsync(cancellationToken)",
            "shape": "diamond",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 32
          },
          {
            "id": "unresolved_unresolved_i7268p_interaction_target",
            "kind": "prompt",
            "label": "Unresolved: VersOne.Epub.EpubReader.OpenBookAsync(epubStream) to obtain book reference.",
            "shape": "diamond",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 49
          },
          {
            "id": "unresolved_unresolved_155j8sa_interaction_target",
            "kind": "prompt",
            "label": "Unresolved: bookRef.ReadCoverAsync()",
            "shape": "diamond",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 52
          }
        ],
        "edges": [
          {
            "id": "class_veazt0_wasmepubreader_contains_method_10zr37d_wasmepubreader",
            "from": "class_veazt0_wasmepubreader",
            "to": "method_10zr37d_wasmepubreader",
            "semanticLabel": "contains executable method",
            "visibleLabel": "contains",
            "relation": "calls",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 12
          },
          {
            "id": "class_veazt0_wasmepubreader_contains_method_10bpn0_getepubcontentasync",
            "from": "class_veazt0_wasmepubreader",
            "to": "method_10bpn0_getepubcontentasync",
            "semanticLabel": "contains executable method",
            "visibleLabel": "contains",
            "relation": "calls",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 17
          },
          {
            "id": "class_veazt0_wasmepubreader_contains_method_1do3jf2_extractmetadataasync",
            "from": "class_veazt0_wasmepubreader",
            "to": "method_1do3jf2_extractmetadataasync",
            "semanticLabel": "contains executable method",
            "visibleLabel": "contains",
            "relation": "calls",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 45
          },
          {
            "id": "unresolved_y49oul_interaction_target_edge",
            "from": "class_veazt0_wasmepubreader",
            "to": "unresolved_unresolved_y49oul_interaction_target",
            "semanticLabel": "Interaction was identified in the file summary but does not yet map to a stable V5 target node.",
            "visibleLabel": "unresolved interaction",
            "relation": "uses",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 25
          },
          {
            "id": "unresolved_ubjob5_interaction_target_edge",
            "from": "class_veazt0_wasmepubreader",
            "to": "unresolved_unresolved_ubjob5_interaction_target",
            "semanticLabel": "Interaction was identified in the file summary but does not yet map to a stable V5 target node.",
            "visibleLabel": "unresolved interaction",
            "relation": "uses",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 28
          },
          {
            "id": "unresolved_ds2njs_interaction_target_edge",
            "from": "class_veazt0_wasmepubreader",
            "to": "unresolved_unresolved_ds2njs_interaction_target",
            "semanticLabel": "Interaction was identified in the file summary but does not yet map to a stable V5 target node.",
            "visibleLabel": "unresolved interaction",
            "relation": "uses",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 32
          },
          {
            "id": "unresolved_i7268p_interaction_target_edge",
            "from": "class_veazt0_wasmepubreader",
            "to": "unresolved_unresolved_i7268p_interaction_target",
            "semanticLabel": "Interaction was identified in the file summary but does not yet map to a stable V5 target node.",
            "visibleLabel": "unresolved interaction",
            "relation": "uses",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 49
          },
          {
            "id": "unresolved_155j8sa_interaction_target_edge",
            "from": "class_veazt0_wasmepubreader",
            "to": "unresolved_unresolved_155j8sa_interaction_target",
            "semanticLabel": "Interaction was identified in the file summary but does not yet map to a stable V5 target node.",
            "visibleLabel": "unresolved interaction",
            "relation": "uses",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 52
          }
        ],
        "metadata": {
          "evidencePaths": [
            "NexusReader.Web.Client/Services/WasmEpubService.cs"
          ],
          "warnings": [
            "Execution overview includes unresolved targets. Use validation artifacts before treating the flow as complete."
          ]
        },
        "subgraphs": []
      },
      "mermaidSource": "flowchart TD\n    class_veazt0_wasmepubreader(\"WasmEpubReader\")\n    method_10bpn0_getepubcontentasync[[\"GetEpubContentAsync()\"]]\n    method_10zr37d_wasmepubreader[[\"WasmEpubReader()\"]]\n    method_1do3jf2_extractmetadataasync[[\"ExtractMetadataAsync()\"]]\n    unresolved_unresolved_155j8sa_interaction_target{\"Unresolved: bookRef.ReadCoverAsync()\"}\n    unresolved_unresolved_ds2njs_interaction_target{\"Unresolved: response.Content.ReadAsStringAsync(cancellationToken)\"}\n    unresolved_unresolved_i7268p_interaction_target{\"Unresolved: VersOne.Epub.EpubReader.OpenBookAsync(epubStream) to obtain book reference.\"}\n    unresolved_unresolved_ubjob5_interaction_target{\"Unresolved: response.Content.ReadFromJsonAsync<ReaderPageViewModel>(cancellationToken: cancellationToken)\"}\n    unresolved_unresolved_y49oul_interaction_target{\"Unresolved: Calls _httpClient.GetAsync($\\\\\"/api/epub/{ebookId}/{chapterIndex}\\\\\", cancellationToken) to retrieve chapter content.\"}\n    class_veazt0_wasmepubreader -->|contains| method_10bpn0_getepubcontentasync\n    class_veazt0_wasmepubreader -->|contains| method_10zr37d_wasmepubreader\n    class_veazt0_wasmepubreader -->|contains| method_1do3jf2_extractmetadataasync\n    class_veazt0_wasmepubreader -->|unresolved interaction| unresolved_unresolved_155j8sa_interaction_target\n    class_veazt0_wasmepubreader -->|unresolved interaction| unresolved_unresolved_ds2njs_interaction_target\n    class_veazt0_wasmepubreader -->|unresolved interaction| unresolved_unresolved_i7268p_interaction_target\n    class_veazt0_wasmepubreader -->|unresolved interaction| unresolved_unresolved_ubjob5_interaction_target\n    class_veazt0_wasmepubreader -->|unresolved interaction| unresolved_unresolved_y49oul_interaction_target",
      "warnings": []
    },
    {
      "id": "method_10bpn0_getepubcontentasync__fragment_diagram",
      "purpose": "control-flow",
      "title": "GetEpubContentAsync() Control Flow",
      "required": true,
      "diagram": {
        "id": "method_10bpn0_getepubcontentasync__fragment_diagram",
        "kind": "control-flow",
        "title": "GetEpubContentAsync() Control Flow",
        "direction": "TD",
        "nodes": [
          {
            "id": "method_10bpn0_getepubcontentasync__entry",
            "kind": "step",
            "label": "GetEpubContentAsync entry",
            "shape": "stadium",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 17
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_23_try_catch_23__linear",
            "kind": "step",
            "label": "Network/deserialization protection",
            "shape": "rounded",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 23
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_23_getepubcontentasync_try_23_0__try",
            "kind": "step",
            "label": "Begins protected execution",
            "shape": "rounded",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 23
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_25_getepubcontentasync_await_25_1__await",
            "kind": "step",
            "label": "Waits for async work",
            "shape": "subproc",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 25
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_25_external_call_25__linear",
            "kind": "dependency",
            "label": "HTTP GET to server EPUB endpoint",
            "shape": "rounded",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 25
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_26_branch_26__condition",
            "kind": "step",
            "label": "response.IsSuccessStatusCode",
            "shape": "diamond",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 26
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_26_branch_26__true",
            "kind": "step",
            "label": "success -> deserialize JSON to ReaderPageViewModel (line 28) and return Ok if not null (line 29)",
            "shape": "rounded",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 26
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_26_branch_26__false",
            "kind": "step",
            "label": "failure -> read error body (line 32) and return Fail with status and body (line 33)",
            "shape": "rounded",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 26
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_26_branch_26__merge",
            "kind": "step",
            "label": "merge",
            "shape": "rounded",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 26
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_26_getepubcontentasync_branch_26_2__condition",
            "kind": "step",
            "label": "response.IsSuccessStatusCode",
            "shape": "diamond",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 26
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_26_getepubcontentasync_branch_26_2__true",
            "kind": "step",
            "label": "true",
            "shape": "rounded",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 26
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_26_getepubcontentasync_branch_26_2__false",
            "kind": "step",
            "label": "false",
            "shape": "rounded",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 26
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_26_getepubcontentasync_branch_26_2__merge",
            "kind": "step",
            "label": "merge",
            "shape": "rounded",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 26
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_28_getepubcontentasync_await_28_3__await",
            "kind": "step",
            "label": "Waits for async work",
            "shape": "subproc",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 28
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_28_external_call_28__linear",
            "kind": "dependency",
            "label": "Deserialize JSON response",
            "shape": "rounded",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 28
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_29_getepubcontentasync_return_29_4__return",
            "kind": "return",
            "label": "Returns result",
            "shape": "stadium",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 29
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_29_guard_clause_29__condition",
            "kind": "step",
            "label": "viewModel != null",
            "shape": "diamond",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 29
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_29_guard_clause_29__true",
            "kind": "step",
            "label": "return Result.Ok(viewModel)",
            "shape": "rounded",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 29
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_29_guard_clause_29__false",
            "kind": "step",
            "label": "return Result.Fail(\\\"Failed to deserialize response.\\\")",
            "shape": "rounded",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 29
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_29_guard_clause_29__merge",
            "kind": "step",
            "label": "merge",
            "shape": "rounded",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 29
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_32_getepubcontentasync_await_32_5__await",
            "kind": "step",
            "label": "Waits for async work",
            "shape": "subproc",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 32
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_32_external_call_32__linear",
            "kind": "dependency",
            "label": "Read error response body",
            "shape": "rounded",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 32
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_33_getepubcontentasync_return_33_6__return",
            "kind": "return",
            "label": "Returns result",
            "shape": "stadium",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 33
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_33_return_33__return",
            "kind": "return",
            "label": "Return failure Result for HTTP error",
            "shape": "stadium",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 33
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_35_getepubcontentasync_catch_35_7__catch",
            "kind": "step",
            "label": "catch Exception ex",
            "shape": "rounded",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 35
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_37_getepubcontentasync_return_37_8__return",
            "kind": "return",
            "label": "Returns result",
            "shape": "stadium",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 37
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_37_return_37__return",
            "kind": "return",
            "label": "Return failure Result for exception",
            "shape": "stadium",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 37
          }
        ],
        "edges": [
          {
            "id": "method_10bpn0_getepubcontentasync__entry__method_10bpn0_getepubcontentasync__action_23_try_catch_23__linear",
            "from": "method_10bpn0_getepubcontentasync__entry",
            "to": "method_10bpn0_getepubcontentasync__action_23_try_catch_23__linear",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 23
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_23_try_catch_23__linear__method_10bpn0_getepubcontentasync__action_23_getepubcontentasync_try_23_0__try",
            "from": "method_10bpn0_getepubcontentasync__action_23_try_catch_23__linear",
            "to": "method_10bpn0_getepubcontentasync__action_23_getepubcontentasync_try_23_0__try",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 23
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_23_getepubcontentasync_try_23_0__try__method_10bpn0_getepubcontentasync__action_25_getepubcontentasync_await_25_1__await",
            "from": "method_10bpn0_getepubcontentasync__action_23_getepubcontentasync_try_23_0__try",
            "to": "method_10bpn0_getepubcontentasync__action_25_getepubcontentasync_await_25_1__await",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 25
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_25_getepubcontentasync_await_25_1__await__method_10bpn0_getepubcontentasync__action_25_external_call_25__linear",
            "from": "method_10bpn0_getepubcontentasync__action_25_getepubcontentasync_await_25_1__await",
            "to": "method_10bpn0_getepubcontentasync__action_25_external_call_25__linear",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 25
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_25_external_call_25__linear__method_10bpn0_getepubcontentasync__action_26_branch_26__condition",
            "from": "method_10bpn0_getepubcontentasync__action_25_external_call_25__linear",
            "to": "method_10bpn0_getepubcontentasync__action_26_branch_26__condition",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 26
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_26_branch_26__condition__method_10bpn0_getepubcontentasync__action_26_branch_26__true",
            "from": "method_10bpn0_getepubcontentasync__action_26_branch_26__condition",
            "to": "method_10bpn0_getepubcontentasync__action_26_branch_26__true",
            "semanticLabel": "success -> deserialize JSON to ReaderPageViewModel (line 28) and return Ok if not null (line 29)",
            "visibleLabel": "success -> deserialize JSON to ReaderPageViewModel line 28 and return Ok if not null line 29",
            "relation": "transforms",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 26
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_26_branch_26__condition__method_10bpn0_getepubcontentasync__action_26_branch_26__false",
            "from": "method_10bpn0_getepubcontentasync__action_26_branch_26__condition",
            "to": "method_10bpn0_getepubcontentasync__action_26_branch_26__false",
            "semanticLabel": "failure -> read error body (line 32) and return Fail with status and body (line 33)",
            "visibleLabel": "failure -> read error body line 32 and return Fail with status and body line 33",
            "relation": "transforms",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 26
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_26_branch_26__true__method_10bpn0_getepubcontentasync__action_26_branch_26__merge",
            "from": "method_10bpn0_getepubcontentasync__action_26_branch_26__true",
            "to": "method_10bpn0_getepubcontentasync__action_26_branch_26__merge",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 26
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_26_branch_26__false__method_10bpn0_getepubcontentasync__action_26_branch_26__merge",
            "from": "method_10bpn0_getepubcontentasync__action_26_branch_26__false",
            "to": "method_10bpn0_getepubcontentasync__action_26_branch_26__merge",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 26
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_26_branch_26__merge__method_10bpn0_getepubcontentasync__action_26_getepubcontentasync_branch_26_2__condition",
            "from": "method_10bpn0_getepubcontentasync__action_26_branch_26__merge",
            "to": "method_10bpn0_getepubcontentasync__action_26_getepubcontentasync_branch_26_2__condition",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 26
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_26_getepubcontentasync_branch_26_2__condition__method_10bpn0_getepubcontentasync__action_26_getepubcontentasync_branch_26_2__true",
            "from": "method_10bpn0_getepubcontentasync__action_26_getepubcontentasync_branch_26_2__condition",
            "to": "method_10bpn0_getepubcontentasync__action_26_getepubcontentasync_branch_26_2__true",
            "semanticLabel": "true",
            "visibleLabel": "true",
            "relation": "transforms",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 26
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_26_getepubcontentasync_branch_26_2__condition__method_10bpn0_getepubcontentasync__action_26_getepubcontentasync_branch_26_2__false",
            "from": "method_10bpn0_getepubcontentasync__action_26_getepubcontentasync_branch_26_2__condition",
            "to": "method_10bpn0_getepubcontentasync__action_26_getepubcontentasync_branch_26_2__false",
            "semanticLabel": "false",
            "visibleLabel": "false",
            "relation": "transforms",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 26
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_26_getepubcontentasync_branch_26_2__true__method_10bpn0_getepubcontentasync__action_26_getepubcontentasync_branch_26_2__merge",
            "from": "method_10bpn0_getepubcontentasync__action_26_getepubcontentasync_branch_26_2__true",
            "to": "method_10bpn0_getepubcontentasync__action_26_getepubcontentasync_branch_26_2__merge",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 26
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_26_getepubcontentasync_branch_26_2__false__method_10bpn0_getepubcontentasync__action_26_getepubcontentasync_branch_26_2__merge",
            "from": "method_10bpn0_getepubcontentasync__action_26_getepubcontentasync_branch_26_2__false",
            "to": "method_10bpn0_getepubcontentasync__action_26_getepubcontentasync_branch_26_2__merge",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 26
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_26_getepubcontentasync_branch_26_2__merge__method_10bpn0_getepubcontentasync__action_28_getepubcontentasync_await_28_3__await",
            "from": "method_10bpn0_getepubcontentasync__action_26_getepubcontentasync_branch_26_2__merge",
            "to": "method_10bpn0_getepubcontentasync__action_28_getepubcontentasync_await_28_3__await",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 28
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_28_getepubcontentasync_await_28_3__await__method_10bpn0_getepubcontentasync__action_28_external_call_28__linear",
            "from": "method_10bpn0_getepubcontentasync__action_28_getepubcontentasync_await_28_3__await",
            "to": "method_10bpn0_getepubcontentasync__action_28_external_call_28__linear",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 28
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_28_external_call_28__linear__method_10bpn0_getepubcontentasync__action_29_getepubcontentasync_return_29_4__return",
            "from": "method_10bpn0_getepubcontentasync__action_28_external_call_28__linear",
            "to": "method_10bpn0_getepubcontentasync__action_29_getepubcontentasync_return_29_4__return",
            "semanticLabel": "return",
            "visibleLabel": "return",
            "relation": "returns",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 29
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_29_getepubcontentasync_return_29_4__return__method_10bpn0_getepubcontentasync__action_29_guard_clause_29__condition",
            "from": "method_10bpn0_getepubcontentasync__action_29_getepubcontentasync_return_29_4__return",
            "to": "method_10bpn0_getepubcontentasync__action_29_guard_clause_29__condition",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 29
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_29_guard_clause_29__condition__method_10bpn0_getepubcontentasync__action_29_guard_clause_29__true",
            "from": "method_10bpn0_getepubcontentasync__action_29_guard_clause_29__condition",
            "to": "method_10bpn0_getepubcontentasync__action_29_guard_clause_29__true",
            "semanticLabel": "return Result.Ok(viewModel)",
            "visibleLabel": "return Result.Ok viewModel",
            "relation": "transforms",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 29
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_29_guard_clause_29__condition__method_10bpn0_getepubcontentasync__action_29_guard_clause_29__false",
            "from": "method_10bpn0_getepubcontentasync__action_29_guard_clause_29__condition",
            "to": "method_10bpn0_getepubcontentasync__action_29_guard_clause_29__false",
            "semanticLabel": "return Result.Fail(\"Failed to deserialize response.\")",
            "visibleLabel": "return Result.Fail Failed to deserialize response.",
            "relation": "transforms",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 29
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_29_guard_clause_29__true__method_10bpn0_getepubcontentasync__action_29_guard_clause_29__merge",
            "from": "method_10bpn0_getepubcontentasync__action_29_guard_clause_29__true",
            "to": "method_10bpn0_getepubcontentasync__action_29_guard_clause_29__merge",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 29
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_29_guard_clause_29__false__method_10bpn0_getepubcontentasync__action_29_guard_clause_29__merge",
            "from": "method_10bpn0_getepubcontentasync__action_29_guard_clause_29__false",
            "to": "method_10bpn0_getepubcontentasync__action_29_guard_clause_29__merge",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 29
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_29_guard_clause_29__merge__method_10bpn0_getepubcontentasync__action_32_getepubcontentasync_await_32_5__await",
            "from": "method_10bpn0_getepubcontentasync__action_29_guard_clause_29__merge",
            "to": "method_10bpn0_getepubcontentasync__action_32_getepubcontentasync_await_32_5__await",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 32
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_32_getepubcontentasync_await_32_5__await__method_10bpn0_getepubcontentasync__action_32_external_call_32__linear",
            "from": "method_10bpn0_getepubcontentasync__action_32_getepubcontentasync_await_32_5__await",
            "to": "method_10bpn0_getepubcontentasync__action_32_external_call_32__linear",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 32
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_32_external_call_32__linear__method_10bpn0_getepubcontentasync__action_33_getepubcontentasync_return_33_6__return",
            "from": "method_10bpn0_getepubcontentasync__action_32_external_call_32__linear",
            "to": "method_10bpn0_getepubcontentasync__action_33_getepubcontentasync_return_33_6__return",
            "semanticLabel": "return",
            "visibleLabel": "return",
            "relation": "returns",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 33
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_33_getepubcontentasync_return_33_6__return__method_10bpn0_getepubcontentasync__action_33_return_33__return",
            "from": "method_10bpn0_getepubcontentasync__action_33_getepubcontentasync_return_33_6__return",
            "to": "method_10bpn0_getepubcontentasync__action_33_return_33__return",
            "semanticLabel": "return",
            "visibleLabel": "return",
            "relation": "returns",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 33
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_33_return_33__return__method_10bpn0_getepubcontentasync__action_35_getepubcontentasync_catch_35_7__catch",
            "from": "method_10bpn0_getepubcontentasync__action_33_return_33__return",
            "to": "method_10bpn0_getepubcontentasync__action_35_getepubcontentasync_catch_35_7__catch",
            "semanticLabel": "exception",
            "visibleLabel": "exception",
            "relation": "transforms",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 35
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_35_getepubcontentasync_catch_35_7__catch__method_10bpn0_getepubcontentasync__action_37_getepubcontentasync_return_37_8__return",
            "from": "method_10bpn0_getepubcontentasync__action_35_getepubcontentasync_catch_35_7__catch",
            "to": "method_10bpn0_getepubcontentasync__action_37_getepubcontentasync_return_37_8__return",
            "semanticLabel": "return",
            "visibleLabel": "return",
            "relation": "returns",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 37
          },
          {
            "id": "method_10bpn0_getepubcontentasync__action_37_getepubcontentasync_return_37_8__return__method_10bpn0_getepubcontentasync__action_37_return_37__return",
            "from": "method_10bpn0_getepubcontentasync__action_37_getepubcontentasync_return_37_8__return",
            "to": "method_10bpn0_getepubcontentasync__action_37_return_37__return",
            "semanticLabel": "return",
            "visibleLabel": "return",
            "relation": "returns",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 37
          }
        ],
        "metadata": {
          "evidencePaths": [
            "NexusReader.Web.Client/Services/WasmEpubService.cs"
          ],
          "warnings": []
        },
        "subgraphs": []
      },
      "mermaidSource": "---\nconfig:\n  flowchart:\n    defaultRenderer: \"elk\"\n---\nflowchart TD\n    method_10bpn0_getepubcontentasync__action_23_getepubcontentasync_try_23_0__try(\"Begins protected execution\")\n    method_10bpn0_getepubcontentasync__action_23_try_catch_23__linear(\"Network/deserialization protection\")\n    method_10bpn0_getepubcontentasync__action_25_getepubcontentasync_await_25_1__await[[\"Waits for async work\"]]\n    method_10bpn0_getepubcontentasync__action_26_branch_26__condition{\"response.IsSuccessStatusCode\"}\n    method_10bpn0_getepubcontentasync__action_26_branch_26__false(\"failure -> read error body (line 32) and return Fail with status and body (line 33)\")\n    method_10bpn0_getepubcontentasync__action_26_branch_26__merge(\"merge\")\n    method_10bpn0_getepubcontentasync__action_26_branch_26__true(\"success -> deserialize JSON to ReaderPageViewModel (line 28) and return Ok if not null (line 29)\")\n    method_10bpn0_getepubcontentasync__action_26_getepubcontentasync_branch_26_2__condition{\"response.IsSuccessStatusCode\"}\n    method_10bpn0_getepubcontentasync__action_26_getepubcontentasync_branch_26_2__false(\"false\")\n    method_10bpn0_getepubcontentasync__action_26_getepubcontentasync_branch_26_2__merge(\"merge\")\n    method_10bpn0_getepubcontentasync__action_26_getepubcontentasync_branch_26_2__true(\"true\")\n    method_10bpn0_getepubcontentasync__action_28_getepubcontentasync_await_28_3__await[[\"Waits for async work\"]]\n    method_10bpn0_getepubcontentasync__action_29_guard_clause_29__condition{\"viewModel != null\"}\n    method_10bpn0_getepubcontentasync__action_29_guard_clause_29__false(\"return Result.Fail(\\\\\"Failed to deserialize response.\\\\\")\")\n    method_10bpn0_getepubcontentasync__action_29_guard_clause_29__merge(\"merge\")\n    method_10bpn0_getepubcontentasync__action_29_guard_clause_29__true(\"return Result.Ok(viewModel)\")\n    method_10bpn0_getepubcontentasync__action_32_getepubcontentasync_await_32_5__await[[\"Waits for async work\"]]\n    method_10bpn0_getepubcontentasync__action_35_getepubcontentasync_catch_35_7__catch(\"catch Exception ex\")\n    method_10bpn0_getepubcontentasync__entry([\"GetEpubContentAsync entry\"])\n    method_10bpn0_getepubcontentasync__action_25_external_call_25__linear(\"HTTP GET to server EPUB endpoint\")\n    method_10bpn0_getepubcontentasync__action_28_external_call_28__linear(\"Deserialize JSON response\")\n    method_10bpn0_getepubcontentasync__action_32_external_call_32__linear(\"Read error response body\")\n    method_10bpn0_getepubcontentasync__action_29_getepubcontentasync_return_29_4__return([\"Returns result\"])\n    method_10bpn0_getepubcontentasync__action_33_getepubcontentasync_return_33_6__return([\"Returns result\"])\n    method_10bpn0_getepubcontentasync__action_33_return_33__return([\"Return failure Result for HTTP error\"])\n    method_10bpn0_getepubcontentasync__action_37_getepubcontentasync_return_37_8__return([\"Returns result\"])\n    method_10bpn0_getepubcontentasync__action_37_return_37__return([\"Return failure Result for exception\"])\n    method_10bpn0_getepubcontentasync__action_23_getepubcontentasync_try_23_0__try -->|next| method_10bpn0_getepubcontentasync__action_25_getepubcontentasync_await_25_1__await\n    method_10bpn0_getepubcontentasync__action_23_try_catch_23__linear -->|next| method_10bpn0_getepubcontentasync__action_23_getepubcontentasync_try_23_0__try\n    method_10bpn0_getepubcontentasync__action_25_external_call_25__linear -->|next| method_10bpn0_getepubcontentasync__action_26_branch_26__condition\n    method_10bpn0_getepubcontentasync__action_25_getepubcontentasync_await_25_1__await -->|next| method_10bpn0_getepubcontentasync__action_25_external_call_25__linear\n    method_10bpn0_getepubcontentasync__action_26_branch_26__condition -->|failure -> read error body line 32 and return Fail with status and body line 33| method_10bpn0_getepubcontentasync__action_26_branch_26__false\n    method_10bpn0_getepubcontentasync__action_26_branch_26__condition -->|success -> deserialize JSON to ReaderPageViewModel line 28 and return Ok if not null line 29| method_10bpn0_getepubcontentasync__action_26_branch_26__true\n    method_10bpn0_getepubcontentasync__action_26_branch_26__false -->|next| method_10bpn0_getepubcontentasync__action_26_branch_26__merge\n    method_10bpn0_getepubcontentasync__action_26_branch_26__merge -->|next| method_10bpn0_getepubcontentasync__action_26_getepubcontentasync_branch_26_2__condition\n    method_10bpn0_getepubcontentasync__action_26_branch_26__true -->|next| method_10bpn0_getepubcontentasync__action_26_branch_26__merge\n    method_10bpn0_getepubcontentasync__action_26_getepubcontentasync_branch_26_2__condition -->|false| method_10bpn0_getepubcontentasync__action_26_getepubcontentasync_branch_26_2__false\n    method_10bpn0_getepubcontentasync__action_26_getepubcontentasync_branch_26_2__condition -->|true| method_10bpn0_getepubcontentasync__action_26_getepubcontentasync_branch_26_2__true\n    method_10bpn0_getepubcontentasync__action_26_getepubcontentasync_branch_26_2__false -->|next| method_10bpn0_getepubcontentasync__action_26_getepubcontentasync_branch_26_2__merge\n    method_10bpn0_getepubcontentasync__action_26_getepubcontentasync_branch_26_2__merge -->|next| method_10bpn0_getepubcontentasync__action_28_getepubcontentasync_await_28_3__await\n    method_10bpn0_getepubcontentasync__action_26_getepubcontentasync_branch_26_2__true -->|next| method_10bpn0_getepubcontentasync__action_26_getepubcontentasync_branch_26_2__merge\n    method_10bpn0_getepubcontentasync__action_28_external_call_28__linear -->|return| method_10bpn0_getepubcontentasync__action_29_getepubcontentasync_return_29_4__return\n    method_10bpn0_getepubcontentasync__action_28_getepubcontentasync_await_28_3__await -->|next| method_10bpn0_getepubcontentasync__action_28_external_call_28__linear\n    method_10bpn0_getepubcontentasync__action_29_getepubcontentasync_return_29_4__return -->|next| method_10bpn0_getepubcontentasync__action_29_guard_clause_29__condition\n    method_10bpn0_getepubcontentasync__action_29_guard_clause_29__condition -->|return Result.Fail Failed to deserialize response.| method_10bpn0_getepubcontentasync__action_29_guard_clause_29__false\n    method_10bpn0_getepubcontentasync__action_29_guard_clause_29__condition -->|return Result.Ok viewModel| method_10bpn0_getepubcontentasync__action_29_guard_clause_29__true\n    method_10bpn0_getepubcontentasync__action_29_guard_clause_29__false -->|next| method_10bpn0_getepubcontentasync__action_29_guard_clause_29__merge\n    method_10bpn0_getepubcontentasync__action_29_guard_clause_29__merge -->|next| method_10bpn0_getepubcontentasync__action_32_getepubcontentasync_await_32_5__await\n    method_10bpn0_getepubcontentasync__action_29_guard_clause_29__true -->|next| method_10bpn0_getepubcontentasync__action_29_guard_clause_29__merge\n    method_10bpn0_getepubcontentasync__action_32_external_call_32__linear -->|return| method_10bpn0_getepubcontentasync__action_33_getepubcontentasync_return_33_6__return\n    method_10bpn0_getepubcontentasync__action_32_getepubcontentasync_await_32_5__await -->|next| method_10bpn0_getepubcontentasync__action_32_external_call_32__linear\n    method_10bpn0_getepubcontentasync__action_33_getepubcontentasync_return_33_6__return -->|return| method_10bpn0_getepubcontentasync__action_33_return_33__return\n    method_10bpn0_getepubcontentasync__action_33_return_33__return -->|exception| method_10bpn0_getepubcontentasync__action_35_getepubcontentasync_catch_35_7__catch\n    method_10bpn0_getepubcontentasync__action_35_getepubcontentasync_catch_35_7__catch -->|return| method_10bpn0_getepubcontentasync__action_37_getepubcontentasync_return_37_8__return\n    method_10bpn0_getepubcontentasync__action_37_getepubcontentasync_return_37_8__return -->|return| method_10bpn0_getepubcontentasync__action_37_return_37__return\n    method_10bpn0_getepubcontentasync__entry -->|next| method_10bpn0_getepubcontentasync__action_23_try_catch_23__linear",
      "warnings": [
        "diagram method_10bpn0_getepubcontentasync__fragment_diagram exceeds preferred complexity thresholds (27 nodes, 29 edges)."
      ]
    },
    {
      "id": "method_1do3jf2_extractmetadataasync__fragment_diagram",
      "purpose": "control-flow",
      "title": "ExtractMetadataAsync() Control Flow",
      "required": true,
      "diagram": {
        "id": "method_1do3jf2_extractmetadataasync__fragment_diagram",
        "kind": "control-flow",
        "title": "ExtractMetadataAsync() Control Flow",
        "direction": "TD",
        "nodes": [
          {
            "id": "method_1do3jf2_extractmetadataasync__entry",
            "kind": "step",
            "label": "ExtractMetadataAsync entry",
            "shape": "stadium",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 45
          },
          {
            "id": "method_1do3jf2_extractmetadataasync__action_47_try_catch_47__linear",
            "kind": "step",
            "label": "Local EPUB parsing protection",
            "shape": "rounded",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 47
          },
          {
            "id": "method_1do3jf2_extractmetadataasync__action_47_extractmetadataasync_try_47_0__try",
            "kind": "step",
            "label": "Begins protected execution",
            "shape": "rounded",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 47
          },
          {
            "id": "method_1do3jf2_extractmetadataasync__action_49_extractmetadataasync_await_49_1__await",
            "kind": "step",
            "label": "Waits for async work",
            "shape": "subproc",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 49
          },
          {
            "id": "method_1do3jf2_extractmetadataasync__action_49_external_call_49__linear",
            "kind": "dependency",
            "label": "Open EPUB book asynchronously",
            "shape": "rounded",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 49
          },
          {
            "id": "method_1do3jf2_extractmetadataasync__action_50_assignment_50__linear",
            "kind": "step",
            "label": "Normalize title and author with fallbacks",
            "shape": "rounded",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 50
          },
          {
            "id": "method_1do3jf2_extractmetadataasync__action_52_extractmetadataasync_await_52_2__await",
            "kind": "step",
            "label": "Waits for async work",
            "shape": "subproc",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 52
          },
          {
            "id": "method_1do3jf2_extractmetadataasync__action_52_external_call_52__linear",
            "kind": "dependency",
            "label": "Read cover image bytes",
            "shape": "rounded",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 52
          },
          {
            "id": "method_1do3jf2_extractmetadataasync__action_53_extractmetadataasync_return_53_3__return",
            "kind": "return",
            "label": "Returns result",
            "shape": "stadium",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 53
          },
          {
            "id": "method_1do3jf2_extractmetadataasync__action_53_return_53__return",
            "kind": "return",
            "label": "Return success Result with LocalEpubMetadata",
            "shape": "stadium",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 53
          },
          {
            "id": "method_1do3jf2_extractmetadataasync__action_55_extractmetadataasync_catch_55_4__catch",
            "kind": "step",
            "label": "catch Exception ex",
            "shape": "rounded",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 55
          },
          {
            "id": "method_1do3jf2_extractmetadataasync__action_57_extractmetadataasync_return_57_5__return",
            "kind": "return",
            "label": "Returns result",
            "shape": "stadium",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 57
          },
          {
            "id": "method_1do3jf2_extractmetadataasync__action_57_return_57__return",
            "kind": "return",
            "label": "Return failure Result for exception",
            "shape": "stadium",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 57
          }
        ],
        "edges": [
          {
            "id": "method_1do3jf2_extractmetadataasync__entry__method_1do3jf2_extractmetadataasync__action_47_try_catch_47__linear",
            "from": "method_1do3jf2_extractmetadataasync__entry",
            "to": "method_1do3jf2_extractmetadataasync__action_47_try_catch_47__linear",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 47
          },
          {
            "id": "method_1do3jf2_extractmetadataasync__action_47_try_catch_47__linear__method_1do3jf2_extractmetadataasync__action_47_extractmetadataasync_try_47_0__try",
            "from": "method_1do3jf2_extractmetadataasync__action_47_try_catch_47__linear",
            "to": "method_1do3jf2_extractmetadataasync__action_47_extractmetadataasync_try_47_0__try",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 47
          },
          {
            "id": "method_1do3jf2_extractmetadataasync__action_47_extractmetadataasync_try_47_0__try__method_1do3jf2_extractmetadataasync__action_49_extractmetadataasync_await_49_1__await",
            "from": "method_1do3jf2_extractmetadataasync__action_47_extractmetadataasync_try_47_0__try",
            "to": "method_1do3jf2_extractmetadataasync__action_49_extractmetadataasync_await_49_1__await",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 49
          },
          {
            "id": "method_1do3jf2_extractmetadataasync__action_49_extractmetadataasync_await_49_1__await__method_1do3jf2_extractmetadataasync__action_49_external_call_49__linear",
            "from": "method_1do3jf2_extractmetadataasync__action_49_extractmetadataasync_await_49_1__await",
            "to": "method_1do3jf2_extractmetadataasync__action_49_external_call_49__linear",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 49
          },
          {
            "id": "method_1do3jf2_extractmetadataasync__action_49_external_call_49__linear__method_1do3jf2_extractmetadataasync__action_50_assignment_50__linear",
            "from": "method_1do3jf2_extractmetadataasync__action_49_external_call_49__linear",
            "to": "method_1do3jf2_extractmetadataasync__action_50_assignment_50__linear",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 50
          },
          {
            "id": "method_1do3jf2_extractmetadataasync__action_50_assignment_50__linear__method_1do3jf2_extractmetadataasync__action_52_extractmetadataasync_await_52_2__await",
            "from": "method_1do3jf2_extractmetadataasync__action_50_assignment_50__linear",
            "to": "method_1do3jf2_extractmetadataasync__action_52_extractmetadataasync_await_52_2__await",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 52
          },
          {
            "id": "method_1do3jf2_extractmetadataasync__action_52_extractmetadataasync_await_52_2__await__method_1do3jf2_extractmetadataasync__action_52_external_call_52__linear",
            "from": "method_1do3jf2_extractmetadataasync__action_52_extractmetadataasync_await_52_2__await",
            "to": "method_1do3jf2_extractmetadataasync__action_52_external_call_52__linear",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 52
          },
          {
            "id": "method_1do3jf2_extractmetadataasync__action_52_external_call_52__linear__method_1do3jf2_extractmetadataasync__action_53_extractmetadataasync_return_53_3__return",
            "from": "method_1do3jf2_extractmetadataasync__action_52_external_call_52__linear",
            "to": "method_1do3jf2_extractmetadataasync__action_53_extractmetadataasync_return_53_3__return",
            "semanticLabel": "return",
            "visibleLabel": "return",
            "relation": "returns",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 53
          },
          {
            "id": "method_1do3jf2_extractmetadataasync__action_53_extractmetadataasync_return_53_3__return__method_1do3jf2_extractmetadataasync__action_53_return_53__return",
            "from": "method_1do3jf2_extractmetadataasync__action_53_extractmetadataasync_return_53_3__return",
            "to": "method_1do3jf2_extractmetadataasync__action_53_return_53__return",
            "semanticLabel": "return",
            "visibleLabel": "return",
            "relation": "returns",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 53
          },
          {
            "id": "method_1do3jf2_extractmetadataasync__action_53_return_53__return__method_1do3jf2_extractmetadataasync__action_55_extractmetadataasync_catch_55_4__catch",
            "from": "method_1do3jf2_extractmetadataasync__action_53_return_53__return",
            "to": "method_1do3jf2_extractmetadataasync__action_55_extractmetadataasync_catch_55_4__catch",
            "semanticLabel": "exception",
            "visibleLabel": "exception",
            "relation": "transforms",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 55
          },
          {
            "id": "method_1do3jf2_extractmetadataasync__action_55_extractmetadataasync_catch_55_4__catch__method_1do3jf2_extractmetadataasync__action_57_extractmetadataasync_return_57_5__return",
            "from": "method_1do3jf2_extractmetadataasync__action_55_extractmetadataasync_catch_55_4__catch",
            "to": "method_1do3jf2_extractmetadataasync__action_57_extractmetadataasync_return_57_5__return",
            "semanticLabel": "return",
            "visibleLabel": "return",
            "relation": "returns",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 57
          },
          {
            "id": "method_1do3jf2_extractmetadataasync__action_57_extractmetadataasync_return_57_5__return__method_1do3jf2_extractmetadataasync__action_57_return_57__return",
            "from": "method_1do3jf2_extractmetadataasync__action_57_extractmetadataasync_return_57_5__return",
            "to": "method_1do3jf2_extractmetadataasync__action_57_return_57__return",
            "semanticLabel": "return",
            "visibleLabel": "return",
            "relation": "returns",
            "sourcePath": "NexusReader.Web.Client/Services/WasmEpubService.cs",
            "sourceLine": 57
          }
        ],
        "metadata": {
          "evidencePaths": [
            "NexusReader.Web.Client/Services/WasmEpubService.cs"
          ],
          "warnings": []
        },
        "subgraphs": []
      },
      "mermaidSource": "flowchart TD\n    method_1do3jf2_extractmetadataasync__action_47_extractmetadataasync_try_47_0__try(\"Begins protected execution\")\n    method_1do3jf2_extractmetadataasync__action_47_try_catch_47__linear(\"Local EPUB parsing protection\")\n    method_1do3jf2_extractmetadataasync__action_49_extractmetadataasync_await_49_1__await[[\"Waits for async work\"]]\n    method_1do3jf2_extractmetadataasync__action_50_assignment_50__linear(\"Normalize title and author with fallbacks\")\n    method_1do3jf2_extractmetadataasync__action_52_extractmetadataasync_await_52_2__await[[\"Waits for async work\"]]\n    method_1do3jf2_extractmetadataasync__action_55_extractmetadataasync_catch_55_4__catch(\"catch Exception ex\")\n    method_1do3jf2_extractmetadataasync__entry([\"ExtractMetadataAsync entry\"])\n    method_1do3jf2_extractmetadataasync__action_49_external_call_49__linear(\"Open EPUB book asynchronously\")\n    method_1do3jf2_extractmetadataasync__action_52_external_call_52__linear(\"Read cover image bytes\")\n    method_1do3jf2_extractmetadataasync__action_53_extractmetadataasync_return_53_3__return([\"Returns result\"])\n    method_1do3jf2_extractmetadataasync__action_53_return_53__return([\"Return success Result with LocalEpubMetadata\"])\n    method_1do3jf2_extractmetadataasync__action_57_extractmetadataasync_return_57_5__return([\"Returns result\"])\n    method_1do3jf2_extractmetadataasync__action_57_return_57__return([\"Return failure Result for exception\"])\n    method_1do3jf2_extractmetadataasync__action_47_extractmetadataasync_try_47_0__try -->|next| method_1do3jf2_extractmetadataasync__action_49_extractmetadataasync_await_49_1__await\n    method_1do3jf2_extractmetadataasync__action_47_try_catch_47__linear -->|next| method_1do3jf2_extractmetadataasync__action_47_extractmetadataasync_try_47_0__try\n    method_1do3jf2_extractmetadataasync__action_49_external_call_49__linear -->|next| method_1do3jf2_extractmetadataasync__action_50_assignment_50__linear\n    method_1do3jf2_extractmetadataasync__action_49_extractmetadataasync_await_49_1__await -->|next| method_1do3jf2_extractmetadataasync__action_49_external_call_49__linear\n    method_1do3jf2_extractmetadataasync__action_50_assignment_50__linear -->|next| method_1do3jf2_extractmetadataasync__action_52_extractmetadataasync_await_52_2__await\n    method_1do3jf2_extractmetadataasync__action_52_external_call_52__linear -->|return| method_1do3jf2_extractmetadataasync__action_53_extractmetadataasync_return_53_3__return\n    method_1do3jf2_extractmetadataasync__action_52_extractmetadataasync_await_52_2__await -->|next| method_1do3jf2_extractmetadataasync__action_52_external_call_52__linear\n    method_1do3jf2_extractmetadataasync__action_53_extractmetadataasync_return_53_3__return -->|return| method_1do3jf2_extractmetadataasync__action_53_return_53__return\n    method_1do3jf2_extractmetadataasync__action_53_return_53__return -->|exception| method_1do3jf2_extractmetadataasync__action_55_extractmetadataasync_catch_55_4__catch\n    method_1do3jf2_extractmetadataasync__action_55_extractmetadataasync_catch_55_4__catch -->|return| method_1do3jf2_extractmetadataasync__action_57_extractmetadataasync_return_57_5__return\n    method_1do3jf2_extractmetadataasync__action_57_extractmetadataasync_return_57_5__return -->|return| method_1do3jf2_extractmetadataasync__action_57_return_57__return\n    method_1do3jf2_extractmetadataasync__entry -->|next| method_1do3jf2_extractmetadataasync__action_47_try_catch_47__linear",
      "warnings": []
    }
  ],
  "renderHints": {
    "preferredSurface": "three-d",
    "defaultDiagramId": "file_hiutf5_wasmepubservice_cs_execution_view",
    "controlFlowDiagramIds": [
      "method_10bpn0_getepubcontentasync__fragment_diagram",
      "method_1do3jf2_extractmetadataasync__fragment_diagram"
    ],
    "defaultControlFlowDiagramIdsBySymbolId": {
      "method:10bpn0:getepubcontentasync": "method_10bpn0_getepubcontentasync__fragment_diagram",
      "method:1do3jf2:extractmetadataasync": "method_1do3jf2_extractmetadataasync__fragment_diagram"
    }
  }
}