From 2cbea3f111dad5bd78cf3bce1124cddadc95cdea Mon Sep 17 00:00:00 2001 From: ziad hany Date: Tue, 22 Sep 2026 14:47:23 +0300 Subject: [PATCH] Create an initial pipeline for other reachability tools and integration layer ( Cpg, ... ) Signed-off-by: ziad hany --- pyproject.toml | 1 + .../pipelines/cpg_symbols_reachability.py | 71 + scanpipe/pipes/cpg.py | 652 + .../data/cpg_reachability/java/fixed-app.java | 60 + .../data/cpg_reachability/java/main/app.java | 50 + .../data/cpg_reachability/java/vuln-app.java | 46 + .../data/cpg_reachability/python/fixed-app.py | 47 + .../data/cpg_reachability/python/main/app.py | 41 + .../cpg_reachability/python/python-cpg.json | 17004 ++++++++++++++++ .../data/cpg_reachability/python/vuln-app.py | 41 + .../pipes/test_cpg_symbols_reachability.py | 164 + 11 files changed, 18177 insertions(+) create mode 100644 scanpipe/pipelines/cpg_symbols_reachability.py create mode 100644 scanpipe/pipes/cpg.py create mode 100644 scanpipe/tests/data/cpg_reachability/java/fixed-app.java create mode 100644 scanpipe/tests/data/cpg_reachability/java/main/app.java create mode 100644 scanpipe/tests/data/cpg_reachability/java/vuln-app.java create mode 100644 scanpipe/tests/data/cpg_reachability/python/fixed-app.py create mode 100644 scanpipe/tests/data/cpg_reachability/python/main/app.py create mode 100644 scanpipe/tests/data/cpg_reachability/python/python-cpg.json create mode 100644 scanpipe/tests/data/cpg_reachability/python/vuln-app.py create mode 100644 scanpipe/tests/pipes/test_cpg_symbols_reachability.py diff --git a/pyproject.toml b/pyproject.toml index c79e34f087..3d73fe8fbb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -155,6 +155,7 @@ analyze_docker_image = "scanpipe.pipelines.analyze_docker:Docker" analyze_root_filesystem_or_vm_image = "scanpipe.pipelines.analyze_root_filesystem:RootFS" analyze_windows_docker_image = "scanpipe.pipelines.analyze_docker_windows:DockerWindows" analyze_symbols_reachability = "scanpipe.pipelines.analyze_symbols_reachability:SymbolReachability" +cpg_symbols_reachability = "scanpipe.pipelines.cpg_symbols_reachability:CPGSymbolReachability" benchmark_purls = "scanpipe.pipelines.benchmark_purls:BenchmarkPurls" collect_strings_gettext = "scanpipe.pipelines.collect_strings_gettext:CollectStringsGettext" collect_symbols_ctags = "scanpipe.pipelines.collect_symbols_ctags:CollectSymbolsCtags" diff --git a/scanpipe/pipelines/cpg_symbols_reachability.py b/scanpipe/pipelines/cpg_symbols_reachability.py new file mode 100644 index 0000000000..30d5c4831d --- /dev/null +++ b/scanpipe/pipelines/cpg_symbols_reachability.py @@ -0,0 +1,71 @@ +# SPDX-License-Identifier: Apache-2.0 +# +# http://nexb.com and https://github.com/aboutcode-org/scancode.io +# The ScanCode.io software is licensed under the Apache License version 2.0. +# Data generated with ScanCode.io is provided as-is without warranties. +# ScanCode is a trademark of nexB Inc. +# +# You may not use this software except in compliance with the License. +# You may obtain a copy of the License at: http://apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software distributed +# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +# CONDITIONS OF ANY KIND, either express or implied. See the License for the +# specific language governing permissions and limitations under the License. +# +# Data Generated with ScanCode.io is provided on an "AS IS" BASIS, WITHOUT WARRANTIES +# OR CONDITIONS OF ANY KIND, either express or implied. No content created from +# ScanCode.io should be considered or used as legal advice. Consult an Attorney +# for any legal advice. +# +# ScanCode.io is a free software code scanning tool from nexB Inc. and others. +# Visit https://github.com/aboutcode-org/scancode.io for support and download. + +from scanpipe.pipelines.analyze_symbols_reachability import SymbolReachability +from scanpipe.pipes import cpg +from scanpipe.pipes.cpg import CPG_NEO4J_EXECUTABLE +from scanpipe.pipes.symbols import TS_QUERIES + + +class CPGSymbolReachability(SymbolReachability): + """ """ + + download_inputs = False + is_addon = True + results_url = "/project/{slug}/resources/?extra_data=symbols_reachability" + + @classmethod + def steps(cls): + return ( + cls.get_vulnerabilities_patches, + cls.collect_resource_index, + cls.collect_patch_symbols, + cls.collect_and_match_resources, + cls.generate_advisory_reachability_report, + cls.apply_reachability_to_packages_and_dependencies, + ) + + @classmethod + def get_availability(cls): + if not CPG_NEO4J_EXECUTABLE: + return "CPG is not configured." + + def collect_resource_index(self): + """Collect resources symbols for each resource""" + self.candidate_resources = self.project.codebaseresources.files().filter( + is_binary=False, + is_archive=False, + is_media=False, + programming_language__in=TS_QUERIES.keys(), + ) + self.resource_indexes = cpg.collect_resource_index( + project=self.project, logger=self.log + ) + + def collect_and_match_resources(self): + cpg.match_patches_to_resources( + patches=self.patches, + patch_symbols=self.patch_symbols, + resource_indexes=self.resource_indexes, + candidate_resources=self.candidate_resources, + logger=self.log, + ) diff --git a/scanpipe/pipes/cpg.py b/scanpipe/pipes/cpg.py new file mode 100644 index 0000000000..4176b31383 --- /dev/null +++ b/scanpipe/pipes/cpg.py @@ -0,0 +1,652 @@ +# scanpipe/pipes/cpg.py + +# SPDX-License-Identifier: Apache-2.0 +# +# http://nexb.com and https://github.com/aboutcode-org/scancode.io +# ScanCode.io is a free software code scanning tool from nexB Inc. and others. +# Visit https://github.com/aboutcode-org/scancode.io for support and download. + +import json +import subprocess +from collections import deque +from os import environ + +from aboutcode.pipeline import LoopProgress +from scanpipe.pipes import run_command_safely +from scanpipe.pipes.reachability import ReachabilityStatus +from scanpipe.pipes.reachability import save_resource_reachability_report + +CPG_NEO4J_EXECUTABLE = environ.get("CPG_NEO4J_EXECUTABLE") + + +def clean_symbol_name(name): + """ + Normalize a CPG symbol name: strip a trailing signature, e.g. + ``app.serve_report.build_file_path()`` -> + ``app.serve_report.build_file_path``. + """ + name = str(name or "") + if not name.endswith(")"): + return name + depth = 0 + for index in range(len(name) - 1, -1, -1): + char = name[index] + if char == ")": + depth += 1 + elif char == "(": + depth -= 1 + if depth == 0: + return name[:index].rstrip() + return name + + +def collect_resource_index(project, logger=None): + """ + Execute the cpg-neo4j binary to generate a CPG JSON export for the + project codebase and return the parsed project-wide graph. + """ + if not CPG_NEO4J_EXECUTABLE: + raise ValueError("CPG_NEO4J_EXECUTABLE is not set or found.") + + target_path = getattr(project, "codebase_path", None) + if not target_path: + resources = project.codebaseresources.all() + if not resources: + raise ValueError("No codebase resources found for this project.") + target_path = resources[0].location_path + + export_json_path = project.get_output_file_path("cpg_reachability", "json") + command_args = [ + CPG_NEO4J_EXECUTABLE, + "--no-neo4j", + "--top-level", + str(target_path), + "--export-json", + str(export_json_path), + str(target_path), + ] + + if logger: + logger(f"Generating CPG JSON for {target_path} ...") + try: + run_command_safely(command_args=command_args) + if logger: + logger("CPG resource_index pipeline completed successfully") + except subprocess.SubprocessError as error: + raise RuntimeError(f"CPG client failure: {error!r}") + except FileNotFoundError: + raise FileNotFoundError( + "CPG not found. Please ensure CPG is correctly configured." + ) + + with open(export_json_path) as f: + return json.load(f) + + +class Node: + """A node of the CPG property graph.""" + + def __init__(self, data): + self.id = data["id"] + self.labels = frozenset(data.get("labels") or []) + self.properties = data.get("properties") or {} + + def is_a(self, *labels): + return any(label in self.labels for label in labels) + + @property + def name(self): + return self.properties.get("name") or "" + + @property + def full_name(self): + return self.properties.get("fullName") or "" + + def describe(self): + """Identifier used in the reported ``eog_path``.""" + return ( + clean_symbol_name(self.full_name) + or clean_symbol_name(self.name) + or f"node-{self.id}" + ) + + +class Graph: + """ + A CPG property-graph dump with the lookups needed for symbol + matching and EOG traversal. Supports both the old + (``FunctionDeclaration``/``FileNode``) and the 2023+ (``Function``/ + ``File``) label schemas, and both naming conventions (bare and + module-prefixed names, with or without a trailing signature). + """ + + DECLARATION_LABELS = ( + "FunctionDeclaration", + "MethodDeclaration", + "ConstructorDeclaration", + "RecordDeclaration", + "ClassDeclaration", + "EnumDeclaration", # old + "Function", + "Method", + "Constructor", + "Record", + "Enum", + "Interface", # new + ) + RECORD_LABELS = ( + "RecordDeclaration", + "ClassDeclaration", + "EnumDeclaration", # old + "Record", + "Enum", + "Interface", # new + ) + METHOD_LABELS = ( + "FunctionDeclaration", + "MethodDeclaration", + "ConstructorDeclaration", + "Function", + "Method", + "Constructor", + ) + FILE_LABELS = ("FileNode", "File", "FileLikeObject") + STRUCTURAL_EDGE_TYPES = ("AST", "CONTAINS", "DECLARATIONS", "STATEMENTS", "BODY") + CALL_EDGE_TYPES = ("INVOKES", "CONSTRUCTORS", "CALLS") + + def __init__(self, graph_json): + graph_json = graph_json or {} + self.nodes = {data["id"]: Node(data) for data in graph_json.get("nodes", [])} + + self._successors = {} # edge type -> source id -> [target ids] + self._predecessors = {} # edge type -> target id -> [source ids] + self._parents = {} # child id -> parent id + self._children = {} # parent id -> [child ids] + for edge in graph_json.get("edges", []): + src = edge["startNode"] + dst = edge["endNode"] + edge_type = edge.get("type") or edge.get("edgeType") + if not edge_type: + continue + self._successors.setdefault(edge_type, {}).setdefault(src, []).append(dst) + self._predecessors.setdefault(edge_type, {}).setdefault(dst, []).append(src) + if edge_type in self.STRUCTURAL_EDGE_TYPES: + self._parents.setdefault(dst, src) + self._children.setdefault(src, []).append(dst) + + self._call_edge_types = [ + edge_type + for edge_type in self.CALL_EDGE_TYPES + if self._successors.get(edge_type) + ] + self.invokers_of = {} + for edge_type in self._call_edge_types: + for src, targets in self._successors[edge_type].items(): + for dst in targets: + self.invokers_of.setdefault(dst, set()).add(src) + + self.delimiter = "." + for node in self.nodes.values(): + if node.properties.get("nameDelimiter"): + self.delimiter = node.properties["nameDelimiter"] + break + + self.has_file_nodes = any( + n.is_a(*self.FILE_LABELS) for n in self.nodes.values() + ) + self._file_of = {} + self._entries = None + self._descendants = {} + + def successors(self, node, edge_type="EOG"): + ids = self._successors.get(edge_type, {}).get(node.id, []) + return [self.nodes[i] for i in ids if i in self.nodes] + + def predecessors(self, node, edge_type="EOG"): + ids = self._predecessors.get(edge_type, {}).get(node.id, []) + return [self.nodes[i] for i in ids if i in self.nodes] + + def invokes(self, node): + """Declarations invoked by a call-expression-like node.""" + callees = [] + for edge_type in self._call_edge_types: + callees.extend(self.successors(node, edge_type)) + return callees + + def parent(self, node): + parent_id = self._parents.get(node.id) + return self.nodes.get(parent_id) if parent_id is not None else None + + def is_inside(self, node, ancestor): + """True if ``node`` is ``ancestor`` or lies in its subtree.""" + while node is not None: + if node is ancestor: + return True + node = self.parent(node) + return False + + def declarations(self, labels=DECLARATION_LABELS): + return [n for n in self.nodes.values() if n.is_a(*labels)] + + def members(self, record): + """ + Method/function declarations of a class (record): AST-contained, + linked via DECLARATIONS, or linked via the reverse DECLARATION edge + (whichever direction the schema uses). + """ + found = { + n.id: n + for n in self.declarations(self.METHOD_LABELS) + if self.is_inside(n, record) + } + for node in self.successors(record, "DECLARATIONS"): + if node.is_a(*self.METHOD_LABELS): + found.setdefault(node.id, node) + for node in self.predecessors(record, "DECLARATION"): + if node.is_a(*self.METHOD_LABELS): + found.setdefault(node.id, node) + return list(found.values()) + + def ast_descendants(self, node): + if node.id not in self._descendants: + stack = list(self._children.get(node.id, [])) + out = [] + while stack: + child_id = stack.pop() + child = self.nodes.get(child_id) + if child: + out.append(child) + stack.extend(self._children.get(child_id, [])) + self._descendants[node.id] = out + return self._descendants[node.id] + + def file_of(self, node): + """The File node containing ``node``, or ``None``.""" + if node.id not in self._file_of: + current = self.parent(node) + while current is not None and not current.is_a(*self.FILE_LABELS): + current = self.parent(current) + self._file_of[node.id] = current + return self._file_of[node.id] + + @staticmethod + def paths_match(a, b): + """ + True when two file paths denote the same file, allowing one to + be longer than the other (resource path vs CPG file path). + """ + + def clean(path): + path = str(path).replace("\\", "/").rstrip("/") + path = path.removeprefix("file://") + return path + + a, b = clean(a), clean(b) + return a == b or a.endswith("/" + b) or b.endswith("/" + a) + + def in_file(self, node, file_path): + """ + True if ``node`` is declared in the file matching ``file_path``. + + When the node's file cannot be resolved from the export, the node + is not excluded: dropping it would silently lose symbols on + exports whose structural edges differ from what we map. + """ + file_node = self.file_of(node) + if file_node is None: + return True # cannot scope this node: don't drop the symbol + candidates = ( + file_node.full_name, + file_node.name, + file_node.properties.get("file"), + file_node.properties.get("path"), + ) + return any( + candidate and self.paths_match(candidate, file_path) + for candidate in candidates + ) + + def find_symbols(self, qualified_name, file_path=None): + """ + Declaration nodes matching a patch symbol name, scoped to + ``file_path`` when given. Matches the qualified name exactly or as + a suffix (the CPG prefixes module/component names, e.g. + ``app.serve_report.build_file_path``), falling back to a + bare-name match. Names are cleaned of trailing signatures. + """ + qualified_name = clean_symbol_name(qualified_name) + short_name = qualified_name.rsplit(self.delimiter, 1)[-1] + suffix = self.delimiter + qualified_name + + exact = [] + by_name = [] + for node in self.declarations(): + full_name = clean_symbol_name(node.full_name) + name = clean_symbol_name(node.name) + if ( + full_name == qualified_name + or full_name.endswith(suffix) + or name == qualified_name + or name.endswith(suffix) + ): + exact.append(node) + elif ( + full_name.rsplit(self.delimiter, 1)[-1] == short_name + or name.rsplit(self.delimiter, 1)[-1] == short_name + ): + by_name.append(node) + + for candidates in (exact, by_name): + if not candidates: + continue + if not file_path: + return candidates + scoped = [node for node in candidates if self.in_file(node, file_path)] + if scoped: + return scoped + return [] + + def entry_declarations(self): + """ + Traversal roots of the codebase: public declarations never + invoked anywhere in the graph (dunders such as ``__init__`` count + as public). Falls back to module-level EOG roots when every + declaration is invoked. + """ + if self._entries is not None: + return self._entries + + invoked = set(self.invokers_of) + entries = [] + for node in self.declarations(self.METHOD_LABELS): + if node.id in invoked: + continue + # The privacy check applies to the bare name: the CPG may + # prefix module names (``app._secret``). + name = ( + clean_symbol_name(node.name).rsplit(self.delimiter, 1)[-1] or node.name + ) + is_private = name.startswith("_") and not ( + name.startswith("__") and name.endswith("__") + ) + if not is_private: + entries.append(node) + + if not entries: + # Fallback: EOG roots outside of any declaration, i.e. the + # first statements executed at module level. + declaration_ids = {n.id for n in self.declarations()} + for node in self.nodes.values(): + if node.is_a(*self.DECLARATION_LABELS): + continue + current = self.parent(node) + inside_declaration = False + while current is not None: + if current.id in declaration_ids: + inside_declaration = True + break + current = self.parent(current) + if not inside_declaration and not self.predecessors(node, "EOG"): + entries.append(node) + + self._entries = entries + return entries + + def eog_entries(self, declaration): + """ + Where evaluation starts inside a declaration: its EOG successors + (frontends that put the declaration on the EOG), else the EOG roots + of its subtree (the first statement of its body). + """ + entries = self.successors(declaration, "EOG") + if entries: + return entries + return [ + node + for node in self.ast_descendants(declaration) + if not self.predecessors(node, "EOG") + ] + + def eog_successors(self, node): + """ + Evaluation-order successors of a node: EOG edges, entering + declarations at the start of their body, plus the interprocedural + hop into called declarations. + + Calls nested inside the node's subtree are also followed: newer + CPG schemas keep call expressions off the EOG (the EOG runs through + statements), so a statement's calls must be reached from the + statement itself. + """ + if node.is_a(*self.DECLARATION_LABELS): + successors = list(self.eog_entries(node)) + else: + successors = list(self.successors(node, "EOG")) + successors.extend(self.invokes(node)) + for descendant in self.ast_descendants(node): + successors.extend(self.invokes(descendant)) + return successors + + +def follow_eog_edges_until_hit(graph, start, predicate, max_steps=1_000_000): + """ + Follow EOG edges forward from ``start`` (a node or an iterable of nodes) + until a node satisfies ``predicate``. Simplified + ``Node.followEOGEdgesUntilHit``: + + - ``Forward(GraphToFollow.EOG)``: walk EOG successors; + - ``Interprocedural()``: at call expressions, follow INVOKES edges into + the callee and continue from its body; + - ``FilterUnreachableEOG``: only nodes reachable from ``start`` are + visited, so dead code is never entered; + - ``findAllPossiblePaths = false``: return the first (shortest) path. + + Returns the path of nodes leading to the hit, or ``None``. + """ + starts = [start] if isinstance(start, Node) else list(start or []) + parents = {node.id: None for node in starts} + queue = deque(starts) + steps = 0 + + while queue: + node = queue.popleft() + steps += 1 + if steps > max_steps: + return None + + if predicate(node): + path = [node] + while parents[path[-1].id] is not None: + path.append(parents[path[-1].id]) + path.reverse() + return path + + for successor in graph.eog_successors(node): + if successor.id not in parents: + parents[successor.id] = node + queue.append(successor) + + return None + + +class ResourcePatchMatcher: + """ + Match patch symbols against the CPG graph: find the symbol by name + (scoped to a file), then check with ``follow_eog_edges_until_hit`` + that it lies on an evaluation path from the codebase entry points. + """ + + def __init__(self, resource_index): + self.graph = ( + resource_index + if isinstance(resource_index, Graph) + else Graph(resource_index or {}) + ) + self.entry_points = self.graph.entry_declarations() + self._cache = {} + + def match(self, patch_symbols_metadata, file_path=None): + """ + Return ``{symbol_key: result}`` for each patch symbol that + belongs to ``file_path`` (or to the file part of its key) and is + defined in the graph. Results are keyed by the original symbol + key (``file::name``), preserving the report format. + """ + results = {} + for symbol_key, metadata in (patch_symbols_metadata or {}).items(): + if not isinstance(metadata, dict): + continue + + symbol_file, sep, qualified_name = str(symbol_key).partition("::") + if not sep: + qualified_name, symbol_file = symbol_key, None + + # Strip the "#2" duplicate suffix added by the patch collector. + base, _, suffix = qualified_name.rpartition("#") + if suffix.isdigit(): + qualified_name = base + if not qualified_name: + continue + + # Scope to the resource: the symbol's file must match it. + if ( + file_path + and symbol_file + and not Graph.paths_match(file_path, symbol_file) + ): + continue + + cache_key = (qualified_name, symbol_file or file_path) + if cache_key not in self._cache: + self._cache[cache_key] = self.match_symbol( + qualified_name, symbol_file=symbol_file or file_path + ) + result = self._cache[cache_key] + if result: + results[symbol_key] = result + return results + + def match_symbol(self, qualified_name, symbol_file=None): + nodes = self.graph.find_symbols(qualified_name, file_path=symbol_file) + if not nodes: + return None + + path = None + for node in nodes: # prefer a reachable candidate on name collisions + path = self.reachable_path(node) + if path: + break + + return { + "symbol_name": qualified_name, + "is_defined": True, + "is_reachable": path is not None, + "eog_path": [node.describe() for node in path] if path else [], + } + + def reachable_path(self, node): + """ + EOG path from an entry point to ``node``, or ``None``. + + A class (record) is reachable through any of its members; a symbol + is reachable when the traversal reaches the declaration itself, a + node inside it, or a call site that invokes it. + """ + targets = {node} + if node.is_a(*Graph.RECORD_LABELS): + targets.update(self.graph.members(node)) + + target_ids = {target.id for target in targets} + hit_ids = set(target_ids) + for target in targets: + hit_ids.update(child.id for child in self.graph.ast_descendants(target)) + for target_id in target_ids: + hit_ids.update(self.graph.invokers_of.get(target_id, ())) + + return follow_eog_edges_until_hit( + self.graph, + self.entry_points, + predicate=lambda current: current.id in hit_ids, + ) + + +def classify_reachability(matched_symbols): + """Classify reachability from the simple matcher results.""" + if not matched_symbols: + return ReachabilityStatus.NOT_REACHABLE + if any(m.get("is_reachable") for m in matched_symbols.values()): + return ReachabilityStatus.REACHABLE + if any(m.get("is_defined") for m in matched_symbols.values()): + return ReachabilityStatus.UNKNOWN + return ReachabilityStatus.NOT_REACHABLE + + +def match_patches_to_resources( + patches, patch_symbols, candidate_resources, resource_indexes, logger=None +): + """ + Match resource symbols against patch symbols. + """ + project_matcher = None + legacy_indexes = None + if isinstance(resource_indexes, Graph) or "nodes" in (resource_indexes or {}): + project_matcher = ResourcePatchMatcher(resource_indexes) + elif resource_indexes: + legacy_indexes = resource_indexes + + patches_count = len(patches) + patch_progress = LoopProgress(patches_count, logger=logger) + for patch in patch_progress.iter(patches): + vcs_url = patch.get("vcs_url") + commit_hash = patch.get("commit_hash") + advisory_uids = patch.get("advisory_uids", []) + + patch_symbols_by_language = patch_symbols.get(commit_hash, {}) + if not patch_symbols_by_language: + continue + + for resource in candidate_resources: + lang_patch_symbols = patch_symbols_by_language.get( + resource.programming_language + ) + if not lang_patch_symbols: + continue + + vulnerable_symbols = lang_patch_symbols.get("vulnerable", {}) + fixed_symbols = lang_patch_symbols.get("fixed", {}) + if not (vulnerable_symbols or fixed_symbols): + continue + + matcher = project_matcher + if matcher is None: + resource_graph = ( + legacy_indexes.get(resource.path) if legacy_indexes else None + ) + if not resource_graph: + continue + matcher = ResourcePatchMatcher(resource_graph) + + vuln_details = matcher.match(vulnerable_symbols, file_path=resource.path) + fixed_details = matcher.match(fixed_symbols, file_path=resource.path) + + if not any([vuln_details, fixed_details]): + continue + + report = { + "patch": { + "vcs_url": vcs_url, + "commit_hash": commit_hash, + }, + "advisory_uids": advisory_uids, + "tool_details": list(vuln_details.values()), + "fixed_symbols": sorted(fixed_details.keys()), + "vulnerable_symbols": sorted(vuln_details.keys()), + "is_reachable": classify_reachability(vuln_details).value, + } + + save_resource_reachability_report( + resource=resource, + commit_hash=commit_hash, + vcs_url=vcs_url, + new_report=report, + ) diff --git a/scanpipe/tests/data/cpg_reachability/java/fixed-app.java b/scanpipe/tests/data/cpg_reachability/java/fixed-app.java new file mode 100644 index 0000000000..39234131b0 --- /dev/null +++ b/scanpipe/tests/data/cpg_reachability/java/fixed-app.java @@ -0,0 +1,60 @@ +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Map; + +public class App { + public static boolean debug = false; + + public static class ReportGenerator { + public String baseDir; + + public ReportGenerator(String baseDir) { + this.baseDir = baseDir; + } + } + + public static String serveReport(Map requestPayload) { + ReportGenerator generator = new ReportGenerator("/var/reports"); + String requestedFile = requestPayload.get("file"); + + if (requestedFile == null || requestedFile.isEmpty()) { + return "Error: No file specified"; + } + + String targetPath; + try { + targetPath = buildFilePath(generator, requestedFile); + } catch (Exception e) { + return "Error: Invalid path"; + } + + try { + if (Files.exists(Paths.get(targetPath))) { + return "Serving content of " + targetPath; + } + } catch (Exception e) { + return "Error: Invalid path"; + } + + return "Error: File not found"; + } + + /** + * FIXED: Validate that the resolved path stays within the base_dir + */ + private static String buildFilePath(ReportGenerator generator, String filename) throws Exception { + Path base = Paths.get(generator.baseDir).toAbsolutePath().normalize(); + Path target = Paths.get(generator.baseDir, filename).toAbsolutePath().normalize(); + + if (!target.startsWith(base)) { + throw new Exception("Path Traversal Detected"); + } + return target.toString(); + } + + + public static String unrelatedTopLevelFunction() { + return "I am just here to add AST complexity."; + } +} \ No newline at end of file diff --git a/scanpipe/tests/data/cpg_reachability/java/main/app.java b/scanpipe/tests/data/cpg_reachability/java/main/app.java new file mode 100644 index 0000000000..0e0b52b178 --- /dev/null +++ b/scanpipe/tests/data/cpg_reachability/java/main/app.java @@ -0,0 +1,50 @@ +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.Map; + +public class App { + public static boolean debug = true; + + public static class ReportGenerator { + private String baseDir; + + public ReportGenerator(String baseDir) { + this.baseDir = baseDir; + } + + public String getBaseDir() { + return baseDir; + } + } + + public static String serveReport(Map requestPayload) { + ReportGenerator generator = new ReportGenerator("/var/reports"); + String requestedFile = requestPayload.get("file"); + + if (requestedFile == null || requestedFile.isEmpty()) { + return "Error: No file specified"; + } + + // VULNERABLE: Direct concatenation allows Path Traversal + // An attacker passing "../../etc/passwd" could read system files. + String targetPath = buildFilePath(generator, requestedFile); + + try { + if (Files.exists(Paths.get(targetPath))) { + return "Serving content of " + targetPath; + } + } catch (Exception e) { + return "Error: Invalid path"; + } + + return "Error: File not found"; + } + + private static String buildFilePath(ReportGenerator generator, String filename) { + return Paths.get(generator.getBaseDir(), filename).toString(); + } + + public static String unrelatedTopLevelFunction() { + return "I am just here to add AST complexity."; + } +} \ No newline at end of file diff --git a/scanpipe/tests/data/cpg_reachability/java/vuln-app.java b/scanpipe/tests/data/cpg_reachability/java/vuln-app.java new file mode 100644 index 0000000000..548ffd9eab --- /dev/null +++ b/scanpipe/tests/data/cpg_reachability/java/vuln-app.java @@ -0,0 +1,46 @@ +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.Map; + +public class App { + public static boolean debug = true; + + public static class ReportGenerator { + public String baseDir; + + public ReportGenerator(String baseDir) { + this.baseDir = baseDir; + } + } + + public static String serveReport(Map requestPayload) { + ReportGenerator generator = new ReportGenerator("/var/reports"); + String requestedFile = requestPayload.get("file"); + + if (requestedFile == null || requestedFile.isEmpty()) { + return "Error: No file specified"; + } + + // VULNERABLE: Direct concatenation allows Path Traversal + // An attacker passing "../../etc/passwd" could read system files. + String targetPath = buildFilePath(generator, requestedFile); + + try { + if (Files.exists(Paths.get(targetPath))) { + return "Serving content of " + targetPath; + } + } catch (Exception e) { + return "Error: Invalid path"; + } + + return "Error: File not found"; + } + + private static String buildFilePath(ReportGenerator generator, String filename) { + return Paths.get(generator.baseDir, filename).toString(); + } + + public static String unrelatedTopLevelFunction() { + return "I am just here to add AST complexity."; + } +} \ No newline at end of file diff --git a/scanpipe/tests/data/cpg_reachability/python/fixed-app.py b/scanpipe/tests/data/cpg_reachability/python/fixed-app.py new file mode 100644 index 0000000000..23f5633e80 --- /dev/null +++ b/scanpipe/tests/data/cpg_reachability/python/fixed-app.py @@ -0,0 +1,47 @@ +import os + +debug = True + + +class ReportGenerator: + """A dummy class to test AST class method parsing.""" + + def __init__(self, base_dir): + self.base_dir = base_dir + + +def serve_report(request_payload): + """Top-level function handling a request.""" + generator = ReportGenerator("/var/reports") + requested_file = request_payload.get("file") + + # Helper function nested inside serve_report + def build_file_path(filename): + # FIXED: Validate that the resolved path stays within the base_dir + base = os.path.abspath(generator.base_dir) + target = os.path.abspath(os.path.join(base, filename)) + if not target.startswith(base): + raise ValueError("Path Traversal Detected") + return target + + if not requested_file: + return "Error: No file specified" + + try: + target_path = build_file_path(requested_file) + except ValueError: + return "Error: Invalid path" + + if os.path.exists(target_path): + return f"Serving content of {target_path}" + + return "Error: File not found" + + +def handle_request(req): + return serve_report(req) + + +def unrelated_top_level_function(): + """Test AST node boundaries.""" + return "I am just here to add AST complexity." diff --git a/scanpipe/tests/data/cpg_reachability/python/main/app.py b/scanpipe/tests/data/cpg_reachability/python/main/app.py new file mode 100644 index 0000000000..dae9bce750 --- /dev/null +++ b/scanpipe/tests/data/cpg_reachability/python/main/app.py @@ -0,0 +1,41 @@ +import os + +debug = False + + +class ReportGenerator: + """A dummy class to test AST class method parsing.""" + + def __init__(self, base_dir): + self.base_dir = base_dir + + +def serve_report(request_payload): + """Top-level function handling a request.""" + generator = ReportGenerator("/var/reports") + requested_file = request_payload.get("file") + + # Helper function nested inside serve_report + def build_file_path(filename): + # VULNERABLE: Direct concatenation allows Path Traversal + # An attacker passing "../../etc/passwd" could read system files. + return os.path.join(generator.base_dir, filename) + + if not requested_file: + return "Error: No file specified" + + target_path = build_file_path(requested_file) + + if os.path.exists(target_path): + return f"Serving content of {target_path}" + + return "Error: File not found" + + +def handle_request(req): + return serve_report(req) + + +def unrelated_top_level_function(): + """Test AST node boundaries.""" + return "I am just here to add AST complexity." diff --git a/scanpipe/tests/data/cpg_reachability/python/python-cpg.json b/scanpipe/tests/data/cpg_reachability/python/python-cpg.json new file mode 100644 index 0000000000..12f9a94fa4 --- /dev/null +++ b/scanpipe/tests/data/cpg_reachability/python/python-cpg.json @@ -0,0 +1,17004 @@ +{ + "nodes": [ + { + "id": 59, + "labels": [ + "Node", + "AstNode", + "TranslationResult" + ], + "properties": { + "isCancelled": false, + "totalLinesOfCode": "0", + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "" + } + }, + { + "id": 60, + "labels": [ + "Node", + "AstNode", + "Component" + ], + "properties": { + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false, + "artifact": "file:///home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/", + "endLine": -1, + "endColumn": -1, + "startColumn": -1, + "startLine": -1, + "fullName": "application", + "localName": "application", + "nameDelimiter": ".", + "name": "application" + } + }, + { + "id": 61, + "labels": [ + "Node", + "AstNode", + "Declaration", + "TranslationUnit" + ], + "properties": { + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 42, + "endColumn": 0, + "startColumn": 1, + "startLine": 1, + "argumentIndex": 0, + "code": "import os\n\ndebug = False\n\n\nclass ReportGenerator:\n \"\"\"A dummy class to test AST class method parsing.\"\"\"\n\n def __init__(self, base_dir):\n self.base_dir = base_dir\n\n\ndef serve_report(request_payload):\n \"\"\"Top-level function handling a request.\"\"\"\n generator = ReportGenerator(\"/var/reports\")\n requested_file = request_payload.get(\"file\")\n\n # Helper function nested inside serve_report\n def build_file_path(filename):\n # VULNERABLE: Direct concatenation allows Path Traversal\n # An attacker passing \"../../etc/passwd\" could read system files.\n return os.path.join(generator.base_dir, filename)\n\n if not requested_file:\n return \"Error: No file specified\"\n\n target_path = build_file_path(requested_file)\n\n if os.path.exists(target_path):\n return f\"Serving content of {target_path}\"\n\n return \"Error: File not found\"\n\n\ndef handle_request(req):\n return serve_report(req)\n\n\ndef unrelated_top_level_function():\n \"\"\"Test AST node boundaries.\"\"\"\n return \"I am just here to add AST complexity.\"\n", + "isImplicit": false, + "isInferred": false, + "fullName": "app.py", + "localName": "py", + "nameDelimiter": ".", + "name": "app.py", + "visibility": "UNKNOWN" + } + }, + { + "id": 62, + "labels": [ + "Node", + "AstNode", + "Declaration", + "Namespace" + ], + "properties": { + "path": "null/app", + "argumentIndex": 0, + "code": "import os\n\ndebug = False\n\n\nclass ReportGenerator:\n \"\"\"A dummy class to test AST class method parsing.\"\"\"\n\n def __init__(self, base_dir):\n self.base_dir = base_dir\n\n\ndef serve_report(request_payload):\n \"\"\"Top-level function handling a request.\"\"\"\n generator = ReportGenerator(\"/var/reports\")\n requested_file = request_payload.get(\"file\")\n\n # Helper function nested inside serve_report\n def build_file_path(filename):\n # VULNERABLE: Direct concatenation allows Path Traversal\n # An attacker passing \"../../etc/passwd\" could read system files.\n return os.path.join(generator.base_dir, filename)\n\n if not requested_file:\n return \"Error: No file specified\"\n\n target_path = build_file_path(requested_file)\n\n if os.path.exists(target_path):\n return f\"Serving content of {target_path}\"\n\n return \"Error: File not found\"\n\n\ndef handle_request(req):\n return serve_report(req)\n\n\ndef unrelated_top_level_function():\n \"\"\"Test AST node boundaries.\"\"\"\n return \"I am just here to add AST complexity.\"\n", + "isImplicit": false, + "isInferred": false, + "fullName": "app", + "localName": "app", + "nameDelimiter": ".", + "name": "app", + "visibility": "UNKNOWN" + } + }, + { + "id": 72, + "labels": [ + "Node", + "AstNode", + "Declaration", + "Record" + ], + "properties": { + "kind": "class", + "argumentIndex": 0, + "code": "class ReportGenerator:\n \"\"\"A dummy class to test AST class method parsing.\"\"\"\n\n def __init__(self, base_dir):\n self.base_dir = base_dir", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 10, + "endColumn": 33, + "startColumn": 1, + "startLine": 6, + "fullName": "app.ReportGenerator", + "localName": "ReportGenerator", + "nameDelimiter": ".", + "name": "app.ReportGenerator", + "visibility": "UNKNOWN" + } + }, + { + "id": 196, + "labels": [ + "Node", + "AstNode", + "Declaration", + "ValueDeclaration", + "Variable", + "Field" + ], + "properties": { + "isDefinition": false, + "argumentIndex": 0, + "code": "self.base_dir", + "isArray": false, + "isGlobal": false, + "isImplicit": true, + "isImplicitInitializerAllowed": false, + "isInferred": false, + "isStatic": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 10, + "endColumn": 22, + "startColumn": 9, + "startLine": 10, + "fullName": "UNKNOWN.base_dir", + "localName": "base_dir", + "nameDelimiter": ".", + "name": "UNKNOWN.base_dir", + "visibility": "PUBLIC" + } + }, + { + "id": 75, + "labels": [ + "Node", + "AstNode", + "Declaration", + "ValueDeclaration", + "Function", + "Method", + "Constructor" + ], + "properties": { + "argumentIndex": 0, + "code": "def __init__(self, base_dir):\n self.base_dir = base_dir", + "complexity": 0, + "isDefinition": false, + "isImplicit": false, + "isInferred": false, + "isStatic": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 10, + "endColumn": 33, + "startColumn": 5, + "startLine": 9, + "fullName": "app.ReportGenerator.__init__", + "localName": "__init__", + "nameDelimiter": ".", + "name": "app.ReportGenerator.__init__", + "signature": "__init__(dynamic)app.ReportGenerator", + "visibility": "PUBLIC" + } + }, + { + "id": 86, + "labels": [ + "Node", + "AstNode", + "Expression", + "Block" + ], + "properties": { + "isStaticBlock": false, + "access": "READ", + "argumentIndex": 0, + "code": "self.base_dir = base_dir", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 10, + "endColumn": 33, + "startColumn": 9, + "startLine": 10, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "", + "usedAsExpression": false + } + }, + { + "id": 91, + "labels": [ + "Node", + "AstNode", + "Expression", + "Assign" + ], + "properties": { + "isCompoundAssignment": false, + "isSimpleAssignment": true, + "operatorCode": "=", + "access": "READ", + "argumentIndex": 0, + "code": "self.base_dir = base_dir", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 10, + "endColumn": 33, + "startColumn": 9, + "startLine": 10, + "fullName": "=", + "localName": "=", + "nameDelimiter": ".", + "name": "=", + "usedAsExpression": false + } + }, + { + "id": 88, + "labels": [ + "Node", + "AstNode", + "Expression", + "Reference", + "MemberAccess" + ], + "properties": { + "operatorCode": ".", + "access": "WRITE", + "argumentIndex": 0, + "code": "self.base_dir", + "dfgHandlerHint": true, + "isImplicit": false, + "isInferred": false, + "isStaticAccess": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 10, + "endColumn": 22, + "startColumn": 9, + "startLine": 10, + "fullName": "app.ReportGenerator.base_dir", + "localName": "base_dir", + "nameDelimiter": ".", + "name": "app.ReportGenerator.base_dir", + "referenceTag": 1012472563, + "usedAsExpression": true + } + }, + { + "id": 87, + "labels": [ + "Node", + "AstNode", + "Expression", + "Reference" + ], + "properties": { + "access": "READ", + "dfgHandlerHint": false, + "isStaticAccess": false, + "referenceTag": -1772085666, + "argumentIndex": 0, + "code": "self", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 10, + "endColumn": 13, + "startColumn": 9, + "startLine": 10, + "fullName": "self", + "localName": "self", + "nameDelimiter": ".", + "name": "self", + "usedAsExpression": true + } + }, + { + "id": 90, + "labels": [ + "Node", + "AstNode", + "Expression", + "Reference" + ], + "properties": { + "access": "READ", + "dfgHandlerHint": false, + "isStaticAccess": false, + "referenceTag": -669804623, + "argumentIndex": 0, + "code": "base_dir", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 10, + "endColumn": 33, + "startColumn": 25, + "startLine": 10, + "fullName": "base_dir", + "localName": "base_dir", + "nameDelimiter": ".", + "name": "base_dir", + "usedAsExpression": true + } + }, + { + "id": 92, + "labels": [ + "Node", + "AstNode", + "Expression", + "Return" + ], + "properties": { + "access": "READ", + "argumentIndex": 0, + "code": "def __init__(self, base_dir):\n self.base_dir = base_dir", + "isImplicit": true, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 10, + "endColumn": 33, + "startColumn": 5, + "startLine": 9, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "", + "usedAsExpression": false + } + }, + { + "id": 93, + "labels": [ + "Node", + "AstNode", + "Expression", + "Reference" + ], + "properties": { + "access": "READ", + "dfgHandlerHint": false, + "isStaticAccess": false, + "referenceTag": -1772085666, + "argumentIndex": 0, + "isImplicit": true, + "isInferred": false, + "fullName": "self", + "localName": "self", + "nameDelimiter": ".", + "name": "self", + "usedAsExpression": true + } + }, + { + "id": 84, + "labels": [ + "Node", + "AstNode", + "Declaration", + "ValueDeclaration", + "Parameter" + ], + "properties": { + "isVariadic": false, + "argumentIndex": 0, + "code": "base_dir", + "isImplicit": false, + "isInferred": false, + "isStatic": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 9, + "endColumn": 32, + "startColumn": 24, + "startLine": 9, + "fullName": "base_dir", + "localName": "base_dir", + "nameDelimiter": ".", + "name": "base_dir", + "visibility": "UNKNOWN" + } + }, + { + "id": 82, + "labels": [ + "Node", + "AstNode", + "Declaration", + "ValueDeclaration", + "Variable" + ], + "properties": { + "isArray": false, + "isGlobal": false, + "isImplicitInitializerAllowed": false, + "argumentIndex": 0, + "code": "self", + "isImplicit": false, + "isInferred": false, + "isStatic": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 9, + "endColumn": 22, + "startColumn": 18, + "startLine": 9, + "fullName": "self", + "localName": "self", + "nameDelimiter": ".", + "name": "self", + "visibility": "UNKNOWN" + } + }, + { + "id": 74, + "labels": [ + "Node", + "AstNode", + "Expression", + "Literal" + ], + "properties": { + "value": "A dummy class to test AST class method parsing.", + "access": "READ", + "argumentIndex": 0, + "code": "\"\"\"A dummy class to test AST class method parsing.\"\"\"", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 7, + "endColumn": 58, + "startColumn": 5, + "startLine": 7, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "", + "usedAsExpression": true + } + }, + { + "id": 94, + "labels": [ + "Node", + "AstNode", + "Declaration", + "ValueDeclaration", + "Function" + ], + "properties": { + "complexity": 0, + "isDefinition": false, + "signature": "serve_report(dynamic)dynamic", + "argumentIndex": 0, + "code": "def serve_report(request_payload):\n \"\"\"Top-level function handling a request.\"\"\"\n generator = ReportGenerator(\"/var/reports\")\n requested_file = request_payload.get(\"file\")\n\n # Helper function nested inside serve_report\n def build_file_path(filename):\n # VULNERABLE: Direct concatenation allows Path Traversal\n # An attacker passing \"../../etc/passwd\" could read system files.\n return os.path.join(generator.base_dir, filename)\n\n if not requested_file:\n return \"Error: No file specified\"\n\n target_path = build_file_path(requested_file)\n\n if os.path.exists(target_path):\n return f\"Serving content of {target_path}\"\n\n return \"Error: File not found\"", + "isImplicit": false, + "isInferred": false, + "isStatic": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 32, + "endColumn": 35, + "startColumn": 1, + "startLine": 13, + "fullName": "app.serve_report", + "localName": "serve_report", + "nameDelimiter": ".", + "name": "app.serve_report", + "visibility": "UNKNOWN" + } + }, + { + "id": 101, + "labels": [ + "Node", + "AstNode", + "Expression", + "Block" + ], + "properties": { + "isStaticBlock": false, + "access": "READ", + "argumentIndex": 0, + "code": "\"\"\"Top-level function handling a request.\"\"\"\n generator = ReportGenerator(\"/var/reports\")\n requested_file = request_payload.get(\"file\")\n\n # Helper function nested inside serve_report\n def build_file_path(filename):\n # VULNERABLE: Direct concatenation allows Path Traversal\n # An attacker passing \"../../etc/passwd\" could read system files.\n return os.path.join(generator.base_dir, filename)\n\n if not requested_file:\n return \"Error: No file specified\"\n\n target_path = build_file_path(requested_file)\n\n if os.path.exists(target_path):\n return f\"Serving content of {target_path}\"\n\n return \"Error: File not found\"", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 32, + "endColumn": 35, + "startColumn": 5, + "startLine": 14, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "", + "usedAsExpression": false + } + }, + { + "id": 102, + "labels": [ + "Node", + "AstNode", + "Expression", + "Literal" + ], + "properties": { + "value": "Top-level function handling a request.", + "access": "READ", + "argumentIndex": 0, + "code": "\"\"\"Top-level function handling a request.\"\"\"", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 14, + "endColumn": 49, + "startColumn": 5, + "startLine": 14, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "", + "usedAsExpression": true + } + }, + { + "id": 108, + "labels": [ + "Node", + "AstNode", + "Expression", + "Assign" + ], + "properties": { + "isCompoundAssignment": false, + "isSimpleAssignment": true, + "operatorCode": "=", + "access": "READ", + "argumentIndex": 0, + "code": "generator = ReportGenerator(\"/var/reports\")", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 15, + "endColumn": 48, + "startColumn": 5, + "startLine": 15, + "fullName": "=", + "localName": "=", + "nameDelimiter": ".", + "name": "=", + "usedAsExpression": false + } + }, + { + "id": 103, + "labels": [ + "Node", + "AstNode", + "Expression", + "Reference" + ], + "properties": { + "access": "WRITE", + "dfgHandlerHint": true, + "isStaticAccess": false, + "referenceTag": 1518714625, + "argumentIndex": 0, + "code": "generator", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 15, + "endColumn": 14, + "startColumn": 5, + "startLine": 15, + "fullName": "generator", + "localName": "generator", + "nameDelimiter": ".", + "name": "generator", + "usedAsExpression": true + } + }, + { + "id": 212, + "labels": [ + "Node", + "AstNode", + "Expression", + "Call", + "Construction" + ], + "properties": { + "access": "READ", + "argumentIndex": 0, + "code": "ReportGenerator(\"/var/reports\")", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 15, + "endColumn": 48, + "startColumn": 17, + "startLine": 15, + "fullName": "ReportGenerator", + "localName": "ReportGenerator", + "nameDelimiter": ".", + "name": "ReportGenerator", + "operatorCode": "()", + "template": false, + "usedAsExpression": true + } + }, + { + "id": 107, + "labels": [ + "Node", + "AstNode", + "Expression", + "Literal" + ], + "properties": { + "value": "/var/reports", + "access": "READ", + "argumentIndex": 0, + "code": "\"/var/reports\"", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 15, + "endColumn": 47, + "startColumn": 33, + "startLine": 15, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "", + "usedAsExpression": true + } + }, + { + "id": 104, + "labels": [ + "Node", + "AstNode", + "Expression", + "Reference" + ], + "properties": { + "access": "READ", + "dfgHandlerHint": false, + "isStaticAccess": false, + "referenceTag": -7385422, + "argumentIndex": 0, + "code": "ReportGenerator", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 15, + "endColumn": 32, + "startColumn": 17, + "startLine": 15, + "fullName": "ReportGenerator", + "localName": "ReportGenerator", + "nameDelimiter": ".", + "name": "ReportGenerator", + "usedAsExpression": true + } + }, + { + "id": 197, + "labels": [ + "Node", + "AstNode", + "Declaration", + "ValueDeclaration", + "Variable" + ], + "properties": { + "isArray": false, + "isGlobal": false, + "isImplicitInitializerAllowed": false, + "argumentIndex": 0, + "code": "generator", + "isImplicit": true, + "isInferred": false, + "isStatic": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 15, + "endColumn": 14, + "startColumn": 5, + "startLine": 15, + "fullName": "generator", + "localName": "generator", + "nameDelimiter": ".", + "name": "generator", + "visibility": "UNKNOWN" + } + }, + { + "id": 116, + "labels": [ + "Node", + "AstNode", + "Expression", + "Assign" + ], + "properties": { + "isCompoundAssignment": false, + "isSimpleAssignment": true, + "operatorCode": "=", + "access": "READ", + "argumentIndex": 0, + "code": "requested_file = request_payload.get(\"file\")", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 16, + "endColumn": 49, + "startColumn": 5, + "startLine": 16, + "fullName": "=", + "localName": "=", + "nameDelimiter": ".", + "name": "=", + "usedAsExpression": false + } + }, + { + "id": 109, + "labels": [ + "Node", + "AstNode", + "Expression", + "Reference" + ], + "properties": { + "access": "WRITE", + "dfgHandlerHint": true, + "isStaticAccess": false, + "referenceTag": -1585663269, + "argumentIndex": 0, + "code": "requested_file", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 16, + "endColumn": 19, + "startColumn": 5, + "startLine": 16, + "fullName": "requested_file", + "localName": "requested_file", + "nameDelimiter": ".", + "name": "requested_file", + "usedAsExpression": true + } + }, + { + "id": 113, + "labels": [ + "Node", + "AstNode", + "Expression", + "Call", + "MemberCall" + ], + "properties": { + "isStatic": false, + "operatorCode": ".", + "access": "READ", + "argumentIndex": 0, + "code": "request_payload.get(\"file\")", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 16, + "endColumn": 49, + "startColumn": 22, + "startLine": 16, + "fullName": "dynamic.get", + "localName": "get", + "nameDelimiter": ".", + "name": "dynamic.get", + "template": false, + "usedAsExpression": true + } + }, + { + "id": 115, + "labels": [ + "Node", + "AstNode", + "Expression", + "Literal" + ], + "properties": { + "value": "file", + "access": "READ", + "argumentIndex": 0, + "code": "\"file\"", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 16, + "endColumn": 48, + "startColumn": 42, + "startLine": 16, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "", + "usedAsExpression": true + } + }, + { + "id": 111, + "labels": [ + "Node", + "AstNode", + "Expression", + "Reference", + "MemberAccess" + ], + "properties": { + "operatorCode": ".", + "access": "READ", + "argumentIndex": 0, + "code": "request_payload.get", + "dfgHandlerHint": false, + "isImplicit": false, + "isInferred": false, + "isStaticAccess": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 16, + "endColumn": 41, + "startColumn": 22, + "startLine": 16, + "fullName": "dynamic.get", + "localName": "get", + "nameDelimiter": ".", + "name": "dynamic.get", + "referenceTag": -719317990, + "usedAsExpression": true + } + }, + { + "id": 110, + "labels": [ + "Node", + "AstNode", + "Expression", + "Reference" + ], + "properties": { + "access": "READ", + "dfgHandlerHint": false, + "isStaticAccess": false, + "referenceTag": -984604020, + "argumentIndex": 0, + "code": "request_payload", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 16, + "endColumn": 37, + "startColumn": 22, + "startLine": 16, + "fullName": "request_payload", + "localName": "request_payload", + "nameDelimiter": ".", + "name": "request_payload", + "usedAsExpression": true + } + }, + { + "id": 198, + "labels": [ + "Node", + "AstNode", + "Declaration", + "ValueDeclaration", + "Variable" + ], + "properties": { + "isArray": false, + "isGlobal": false, + "isImplicitInitializerAllowed": false, + "argumentIndex": 0, + "code": "requested_file", + "isImplicit": true, + "isInferred": false, + "isStatic": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 16, + "endColumn": 19, + "startColumn": 5, + "startLine": 16, + "fullName": "requested_file", + "localName": "requested_file", + "nameDelimiter": ".", + "name": "requested_file", + "visibility": "UNKNOWN" + } + }, + { + "id": 137, + "labels": [ + "Node", + "AstNode", + "Expression", + "DeclarationStatement" + ], + "properties": { + "access": "READ", + "argumentIndex": 0, + "code": "def build_file_path(filename):\n # VULNERABLE: Direct concatenation allows Path Traversal\n # An attacker passing \"../../etc/passwd\" could read system files.\n return os.path.join(generator.base_dir, filename)", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 22, + "endColumn": 58, + "startColumn": 5, + "startLine": 19, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "", + "usedAsExpression": false + } + }, + { + "id": 117, + "labels": [ + "Node", + "AstNode", + "Declaration", + "ValueDeclaration", + "Function" + ], + "properties": { + "complexity": 0, + "isDefinition": false, + "signature": "build_file_path(dynamic)dynamic", + "argumentIndex": 0, + "code": "def build_file_path(filename):\n # VULNERABLE: Direct concatenation allows Path Traversal\n # An attacker passing \"../../etc/passwd\" could read system files.\n return os.path.join(generator.base_dir, filename)", + "isImplicit": false, + "isInferred": false, + "isStatic": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 22, + "endColumn": 58, + "startColumn": 5, + "startLine": 19, + "fullName": "app.build_file_path", + "localName": "build_file_path", + "nameDelimiter": ".", + "name": "app.build_file_path", + "visibility": "UNKNOWN" + } + }, + { + "id": 124, + "labels": [ + "Node", + "AstNode", + "Expression", + "Block" + ], + "properties": { + "isStaticBlock": false, + "access": "READ", + "argumentIndex": 0, + "code": "return os.path.join(generator.base_dir, filename)", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 22, + "endColumn": 58, + "startColumn": 9, + "startLine": 22, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "", + "usedAsExpression": false + } + }, + { + "id": 125, + "labels": [ + "Node", + "AstNode", + "Expression", + "Return" + ], + "properties": { + "access": "READ", + "argumentIndex": 0, + "code": "return os.path.join(generator.base_dir, filename)", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 22, + "endColumn": 58, + "startColumn": 9, + "startLine": 22, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "", + "usedAsExpression": false + } + }, + { + "id": 131, + "labels": [ + "Node", + "AstNode", + "Expression", + "Call", + "MemberCall" + ], + "properties": { + "isStatic": false, + "operatorCode": ".", + "access": "READ", + "argumentIndex": 0, + "code": "os.path.join(generator.base_dir, filename)", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 22, + "endColumn": 58, + "startColumn": 16, + "startLine": 22, + "fullName": "UNKNOWN.join", + "localName": "join", + "nameDelimiter": ".", + "name": "UNKNOWN.join", + "template": false, + "usedAsExpression": true + } + }, + { + "id": 134, + "labels": [ + "Node", + "AstNode", + "Expression", + "Reference", + "MemberAccess" + ], + "properties": { + "operatorCode": ".", + "access": "READ", + "argumentIndex": 0, + "code": "generator.base_dir", + "dfgHandlerHint": false, + "isImplicit": false, + "isInferred": false, + "isStaticAccess": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 22, + "endColumn": 47, + "startColumn": 29, + "startLine": 22, + "fullName": "app.ReportGenerator.base_dir", + "localName": "base_dir", + "nameDelimiter": ".", + "name": "app.ReportGenerator.base_dir", + "referenceTag": -1652829666, + "usedAsExpression": true + } + }, + { + "id": 133, + "labels": [ + "Node", + "AstNode", + "Expression", + "Reference" + ], + "properties": { + "access": "READ", + "dfgHandlerHint": false, + "isStaticAccess": false, + "referenceTag": 712541584, + "argumentIndex": 0, + "code": "generator", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 22, + "endColumn": 38, + "startColumn": 29, + "startLine": 22, + "fullName": "generator", + "localName": "generator", + "nameDelimiter": ".", + "name": "generator", + "usedAsExpression": true + } + }, + { + "id": 136, + "labels": [ + "Node", + "AstNode", + "Expression", + "Reference" + ], + "properties": { + "access": "READ", + "dfgHandlerHint": false, + "isStaticAccess": false, + "referenceTag": -826572092, + "argumentIndex": 0, + "code": "filename", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 22, + "endColumn": 57, + "startColumn": 49, + "startLine": 22, + "fullName": "filename", + "localName": "filename", + "nameDelimiter": ".", + "name": "filename", + "usedAsExpression": true + } + }, + { + "id": 129, + "labels": [ + "Node", + "AstNode", + "Expression", + "Reference", + "MemberAccess" + ], + "properties": { + "operatorCode": ".", + "access": "READ", + "argumentIndex": 0, + "code": "os.path.join", + "dfgHandlerHint": false, + "isImplicit": false, + "isInferred": false, + "isStaticAccess": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 22, + "endColumn": 28, + "startColumn": 16, + "startLine": 22, + "fullName": "UNKNOWN.join", + "localName": "join", + "nameDelimiter": ".", + "name": "UNKNOWN.join", + "referenceTag": 1785755860, + "usedAsExpression": true + } + }, + { + "id": 208, + "labels": [ + "Node", + "AstNode", + "Expression", + "Reference" + ], + "properties": { + "access": "READ", + "dfgHandlerHint": false, + "isStaticAccess": false, + "referenceTag": -485131567, + "argumentIndex": 0, + "code": "os.path", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 22, + "endColumn": 23, + "startColumn": 16, + "startLine": 22, + "fullName": "os.path", + "localName": "path", + "nameDelimiter": ".", + "name": "os.path", + "usedAsExpression": true + } + }, + { + "id": 122, + "labels": [ + "Node", + "AstNode", + "Declaration", + "ValueDeclaration", + "Parameter" + ], + "properties": { + "isVariadic": false, + "argumentIndex": 0, + "code": "filename", + "isImplicit": false, + "isInferred": false, + "isStatic": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 19, + "endColumn": 33, + "startColumn": 25, + "startLine": 19, + "fullName": "filename", + "localName": "filename", + "nameDelimiter": ".", + "name": "filename", + "visibility": "UNKNOWN" + } + }, + { + "id": 138, + "labels": [ + "Node", + "AstNode", + "Expression", + "IfElse" + ], + "properties": { + "isConstExpression": false, + "access": "READ", + "argumentIndex": 0, + "code": "if not requested_file:\n return \"Error: No file specified\"", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 25, + "endColumn": 42, + "startColumn": 5, + "startLine": 24, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "", + "usedAsExpression": false + } + }, + { + "id": 139, + "labels": [ + "Node", + "AstNode", + "Expression", + "UnaryOperator" + ], + "properties": { + "access": "READ", + "isPostfix": false, + "isPrefix": false, + "operatorCode": "not", + "argumentIndex": 0, + "code": "not requested_file", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 24, + "endColumn": 26, + "startColumn": 8, + "startLine": 24, + "fullName": "not", + "localName": "not", + "nameDelimiter": ".", + "name": "not", + "usedAsExpression": true + } + }, + { + "id": 141, + "labels": [ + "Node", + "AstNode", + "Expression", + "Reference" + ], + "properties": { + "access": "READ", + "dfgHandlerHint": false, + "isStaticAccess": false, + "referenceTag": -1585663269, + "argumentIndex": 0, + "code": "requested_file", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 24, + "endColumn": 26, + "startColumn": 12, + "startLine": 24, + "fullName": "requested_file", + "localName": "requested_file", + "nameDelimiter": ".", + "name": "requested_file", + "usedAsExpression": true + } + }, + { + "id": 142, + "labels": [ + "Node", + "AstNode", + "Expression", + "Block" + ], + "properties": { + "isStaticBlock": false, + "access": "READ", + "argumentIndex": 0, + "code": "return \"Error: No file specified\"", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 25, + "endColumn": 42, + "startColumn": 9, + "startLine": 25, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "", + "usedAsExpression": false + } + }, + { + "id": 143, + "labels": [ + "Node", + "AstNode", + "Expression", + "Return" + ], + "properties": { + "access": "READ", + "argumentIndex": 0, + "code": "return \"Error: No file specified\"", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 25, + "endColumn": 42, + "startColumn": 9, + "startLine": 25, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "", + "usedAsExpression": false + } + }, + { + "id": 144, + "labels": [ + "Node", + "AstNode", + "Expression", + "Literal" + ], + "properties": { + "value": "Error: No file specified", + "access": "READ", + "argumentIndex": 0, + "code": "\"Error: No file specified\"", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 25, + "endColumn": 42, + "startColumn": 16, + "startLine": 25, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "", + "usedAsExpression": true + } + }, + { + "id": 151, + "labels": [ + "Node", + "AstNode", + "Expression", + "Assign" + ], + "properties": { + "isCompoundAssignment": false, + "isSimpleAssignment": true, + "operatorCode": "=", + "access": "READ", + "argumentIndex": 0, + "code": "target_path = build_file_path(requested_file)", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 27, + "endColumn": 50, + "startColumn": 5, + "startLine": 27, + "fullName": "=", + "localName": "=", + "nameDelimiter": ".", + "name": "=", + "usedAsExpression": false + } + }, + { + "id": 146, + "labels": [ + "Node", + "AstNode", + "Expression", + "Reference" + ], + "properties": { + "access": "WRITE", + "dfgHandlerHint": true, + "isStaticAccess": false, + "referenceTag": 977633857, + "argumentIndex": 0, + "code": "target_path", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 27, + "endColumn": 16, + "startColumn": 5, + "startLine": 27, + "fullName": "target_path", + "localName": "target_path", + "nameDelimiter": ".", + "name": "target_path", + "usedAsExpression": true + } + }, + { + "id": 148, + "labels": [ + "Node", + "AstNode", + "Expression", + "Call" + ], + "properties": { + "fullName": "build_file_path", + "localName": "build_file_path", + "nameDelimiter": ".", + "name": "build_file_path", + "operatorCode": "()", + "template": false, + "access": "READ", + "argumentIndex": 0, + "code": "build_file_path(requested_file)", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 27, + "endColumn": 50, + "startColumn": 19, + "startLine": 27, + "usedAsExpression": true + } + }, + { + "id": 150, + "labels": [ + "Node", + "AstNode", + "Expression", + "Reference" + ], + "properties": { + "access": "READ", + "dfgHandlerHint": false, + "isStaticAccess": false, + "referenceTag": -1585663269, + "argumentIndex": 0, + "code": "requested_file", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 27, + "endColumn": 49, + "startColumn": 35, + "startLine": 27, + "fullName": "requested_file", + "localName": "requested_file", + "nameDelimiter": ".", + "name": "requested_file", + "usedAsExpression": true + } + }, + { + "id": 147, + "labels": [ + "Node", + "AstNode", + "Expression", + "Reference" + ], + "properties": { + "access": "READ", + "dfgHandlerHint": false, + "isStaticAccess": false, + "referenceTag": -1683361871, + "argumentIndex": 0, + "code": "build_file_path", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 27, + "endColumn": 34, + "startColumn": 19, + "startLine": 27, + "fullName": "build_file_path", + "localName": "build_file_path", + "nameDelimiter": ".", + "name": "build_file_path", + "usedAsExpression": true + } + }, + { + "id": 199, + "labels": [ + "Node", + "AstNode", + "Declaration", + "ValueDeclaration", + "Variable" + ], + "properties": { + "isArray": false, + "isGlobal": false, + "isImplicitInitializerAllowed": false, + "argumentIndex": 0, + "code": "target_path", + "isImplicit": true, + "isInferred": false, + "isStatic": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 27, + "endColumn": 16, + "startColumn": 5, + "startLine": 27, + "fullName": "target_path", + "localName": "target_path", + "nameDelimiter": ".", + "name": "target_path", + "visibility": "UNKNOWN" + } + }, + { + "id": 152, + "labels": [ + "Node", + "AstNode", + "Expression", + "IfElse" + ], + "properties": { + "isConstExpression": false, + "access": "READ", + "argumentIndex": 0, + "code": "if os.path.exists(target_path):\n return f\"Serving content of {target_path}\"", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 30, + "endColumn": 51, + "startColumn": 5, + "startLine": 29, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "", + "usedAsExpression": false + } + }, + { + "id": 158, + "labels": [ + "Node", + "AstNode", + "Expression", + "Call", + "MemberCall" + ], + "properties": { + "isStatic": false, + "operatorCode": ".", + "access": "READ", + "argumentIndex": 0, + "code": "os.path.exists(target_path)", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 29, + "endColumn": 35, + "startColumn": 8, + "startLine": 29, + "fullName": "UNKNOWN.exists", + "localName": "exists", + "nameDelimiter": ".", + "name": "UNKNOWN.exists", + "template": false, + "usedAsExpression": true + } + }, + { + "id": 160, + "labels": [ + "Node", + "AstNode", + "Expression", + "Reference" + ], + "properties": { + "access": "READ", + "dfgHandlerHint": false, + "isStaticAccess": false, + "referenceTag": 977633857, + "argumentIndex": 0, + "code": "target_path", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 29, + "endColumn": 34, + "startColumn": 23, + "startLine": 29, + "fullName": "target_path", + "localName": "target_path", + "nameDelimiter": ".", + "name": "target_path", + "usedAsExpression": true + } + }, + { + "id": 156, + "labels": [ + "Node", + "AstNode", + "Expression", + "Reference", + "MemberAccess" + ], + "properties": { + "operatorCode": ".", + "access": "READ", + "argumentIndex": 0, + "code": "os.path.exists", + "dfgHandlerHint": false, + "isImplicit": false, + "isInferred": false, + "isStaticAccess": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 29, + "endColumn": 22, + "startColumn": 8, + "startLine": 29, + "fullName": "UNKNOWN.exists", + "localName": "exists", + "nameDelimiter": ".", + "name": "UNKNOWN.exists", + "referenceTag": 2033418845, + "usedAsExpression": true + } + }, + { + "id": 209, + "labels": [ + "Node", + "AstNode", + "Expression", + "Reference" + ], + "properties": { + "access": "READ", + "dfgHandlerHint": false, + "isStaticAccess": false, + "referenceTag": 321041474, + "argumentIndex": 0, + "code": "os.path", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 29, + "endColumn": 15, + "startColumn": 8, + "startLine": 29, + "fullName": "os.path", + "localName": "path", + "nameDelimiter": ".", + "name": "os.path", + "usedAsExpression": true + } + }, + { + "id": 161, + "labels": [ + "Node", + "AstNode", + "Expression", + "Block" + ], + "properties": { + "isStaticBlock": false, + "access": "READ", + "argumentIndex": 0, + "code": "return f\"Serving content of {target_path}\"", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 30, + "endColumn": 51, + "startColumn": 9, + "startLine": 30, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "", + "usedAsExpression": false + } + }, + { + "id": 162, + "labels": [ + "Node", + "AstNode", + "Expression", + "Return" + ], + "properties": { + "access": "READ", + "argumentIndex": 0, + "code": "return f\"Serving content of {target_path}\"", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 30, + "endColumn": 51, + "startColumn": 9, + "startLine": 30, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "", + "usedAsExpression": false + } + }, + { + "id": 165, + "labels": [ + "Node", + "AstNode", + "Expression", + "BinaryOperator" + ], + "properties": { + "operatorCode": "+", + "access": "READ", + "argumentIndex": 0, + "code": "f\"Serving content of {target_path}\"", + "isImplicit": true, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 30, + "endColumn": 51, + "startColumn": 16, + "startLine": 30, + "fullName": "+", + "localName": "+", + "nameDelimiter": ".", + "name": "+", + "usedAsExpression": true + } + }, + { + "id": 163, + "labels": [ + "Node", + "AstNode", + "Expression", + "Literal" + ], + "properties": { + "value": "Serving content of ", + "access": "READ", + "argumentIndex": 0, + "code": "Serving content of ", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 30, + "endColumn": 37, + "startColumn": 18, + "startLine": 30, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "", + "usedAsExpression": true + } + }, + { + "id": 164, + "labels": [ + "Node", + "AstNode", + "Expression", + "Reference" + ], + "properties": { + "access": "READ", + "dfgHandlerHint": false, + "isStaticAccess": false, + "referenceTag": 977633857, + "argumentIndex": 0, + "code": "target_path", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 30, + "endColumn": 49, + "startColumn": 38, + "startLine": 30, + "fullName": "target_path", + "localName": "target_path", + "nameDelimiter": ".", + "name": "target_path", + "usedAsExpression": true + } + }, + { + "id": 169, + "labels": [ + "Node", + "AstNode", + "Expression", + "Return" + ], + "properties": { + "access": "READ", + "argumentIndex": 0, + "code": "return \"Error: File not found\"", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 32, + "endColumn": 35, + "startColumn": 5, + "startLine": 32, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "", + "usedAsExpression": false + } + }, + { + "id": 170, + "labels": [ + "Node", + "AstNode", + "Expression", + "Literal" + ], + "properties": { + "value": "Error: File not found", + "access": "READ", + "argumentIndex": 0, + "code": "\"Error: File not found\"", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 32, + "endColumn": 35, + "startColumn": 12, + "startLine": 32, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "", + "usedAsExpression": true + } + }, + { + "id": 99, + "labels": [ + "Node", + "AstNode", + "Declaration", + "ValueDeclaration", + "Parameter" + ], + "properties": { + "isVariadic": false, + "argumentIndex": 0, + "code": "request_payload", + "isImplicit": false, + "isInferred": false, + "isStatic": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 13, + "endColumn": 33, + "startColumn": 18, + "startLine": 13, + "fullName": "request_payload", + "localName": "request_payload", + "nameDelimiter": ".", + "name": "request_payload", + "visibility": "UNKNOWN" + } + }, + { + "id": 172, + "labels": [ + "Node", + "AstNode", + "Declaration", + "ValueDeclaration", + "Function" + ], + "properties": { + "complexity": 0, + "isDefinition": false, + "signature": "handle_request(dynamic)dynamic", + "argumentIndex": 0, + "code": "def handle_request(req):\n return serve_report(req)", + "isImplicit": false, + "isInferred": false, + "isStatic": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 36, + "endColumn": 29, + "startColumn": 1, + "startLine": 35, + "fullName": "app.handle_request", + "localName": "handle_request", + "nameDelimiter": ".", + "name": "app.handle_request", + "visibility": "UNKNOWN" + } + }, + { + "id": 179, + "labels": [ + "Node", + "AstNode", + "Expression", + "Block" + ], + "properties": { + "isStaticBlock": false, + "access": "READ", + "argumentIndex": 0, + "code": "return serve_report(req)", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 36, + "endColumn": 29, + "startColumn": 5, + "startLine": 36, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "", + "usedAsExpression": false + } + }, + { + "id": 180, + "labels": [ + "Node", + "AstNode", + "Expression", + "Return" + ], + "properties": { + "access": "READ", + "argumentIndex": 0, + "code": "return serve_report(req)", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 36, + "endColumn": 29, + "startColumn": 5, + "startLine": 36, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "", + "usedAsExpression": false + } + }, + { + "id": 182, + "labels": [ + "Node", + "AstNode", + "Expression", + "Call" + ], + "properties": { + "fullName": "serve_report", + "localName": "serve_report", + "nameDelimiter": ".", + "name": "serve_report", + "operatorCode": "()", + "template": false, + "access": "READ", + "argumentIndex": 0, + "code": "serve_report(req)", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 36, + "endColumn": 29, + "startColumn": 12, + "startLine": 36, + "usedAsExpression": true + } + }, + { + "id": 184, + "labels": [ + "Node", + "AstNode", + "Expression", + "Reference" + ], + "properties": { + "access": "READ", + "dfgHandlerHint": false, + "isStaticAccess": false, + "referenceTag": 312893088, + "argumentIndex": 0, + "code": "req", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 36, + "endColumn": 28, + "startColumn": 25, + "startLine": 36, + "fullName": "req", + "localName": "req", + "nameDelimiter": ".", + "name": "req", + "usedAsExpression": true + } + }, + { + "id": 181, + "labels": [ + "Node", + "AstNode", + "Expression", + "Reference" + ], + "properties": { + "access": "READ", + "dfgHandlerHint": false, + "isStaticAccess": false, + "referenceTag": -1065441901, + "argumentIndex": 0, + "code": "serve_report", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 36, + "endColumn": 24, + "startColumn": 12, + "startLine": 36, + "fullName": "serve_report", + "localName": "serve_report", + "nameDelimiter": ".", + "name": "serve_report", + "usedAsExpression": true + } + }, + { + "id": 177, + "labels": [ + "Node", + "AstNode", + "Declaration", + "ValueDeclaration", + "Parameter" + ], + "properties": { + "isVariadic": false, + "argumentIndex": 0, + "code": "req", + "isImplicit": false, + "isInferred": false, + "isStatic": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 35, + "endColumn": 23, + "startColumn": 20, + "startLine": 35, + "fullName": "req", + "localName": "req", + "nameDelimiter": ".", + "name": "req", + "visibility": "UNKNOWN" + } + }, + { + "id": 185, + "labels": [ + "Node", + "AstNode", + "Declaration", + "ValueDeclaration", + "Function" + ], + "properties": { + "complexity": 0, + "isDefinition": false, + "signature": "unrelated_top_level_function()dynamic", + "argumentIndex": 0, + "code": "def unrelated_top_level_function():\n \"\"\"Test AST node boundaries.\"\"\"\n return \"I am just here to add AST complexity.\"", + "isImplicit": false, + "isInferred": false, + "isStatic": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 41, + "endColumn": 51, + "startColumn": 1, + "startLine": 39, + "fullName": "app.unrelated_top_level_function", + "localName": "unrelated_top_level_function", + "nameDelimiter": ".", + "name": "app.unrelated_top_level_function", + "visibility": "UNKNOWN" + } + }, + { + "id": 189, + "labels": [ + "Node", + "AstNode", + "Expression", + "Block" + ], + "properties": { + "isStaticBlock": false, + "access": "READ", + "argumentIndex": 0, + "code": "\"\"\"Test AST node boundaries.\"\"\"\n return \"I am just here to add AST complexity.\"", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 41, + "endColumn": 51, + "startColumn": 5, + "startLine": 40, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "", + "usedAsExpression": false + } + }, + { + "id": 190, + "labels": [ + "Node", + "AstNode", + "Expression", + "Literal" + ], + "properties": { + "value": "Test AST node boundaries.", + "access": "READ", + "argumentIndex": 0, + "code": "\"\"\"Test AST node boundaries.\"\"\"", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 40, + "endColumn": 36, + "startColumn": 5, + "startLine": 40, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "", + "usedAsExpression": true + } + }, + { + "id": 191, + "labels": [ + "Node", + "AstNode", + "Expression", + "Return" + ], + "properties": { + "access": "READ", + "argumentIndex": 0, + "code": "return \"I am just here to add AST complexity.\"", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 41, + "endColumn": 51, + "startColumn": 5, + "startLine": 41, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "", + "usedAsExpression": false + } + }, + { + "id": 192, + "labels": [ + "Node", + "AstNode", + "Expression", + "Literal" + ], + "properties": { + "value": "I am just here to add AST complexity.", + "access": "READ", + "argumentIndex": 0, + "code": "\"I am just here to add AST complexity.\"", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 41, + "endColumn": 51, + "startColumn": 12, + "startLine": 41, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "", + "usedAsExpression": true + } + }, + { + "id": 64, + "labels": [ + "Node", + "AstNode", + "Expression", + "DeclarationStatement" + ], + "properties": { + "access": "READ", + "argumentIndex": 0, + "code": "import os", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 1, + "endColumn": 10, + "startColumn": 1, + "startLine": 1, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "", + "usedAsExpression": false + } + }, + { + "id": 68, + "labels": [ + "Node", + "AstNode", + "Declaration", + "Import" + ], + "properties": { + "import": "os", + "style": "IMPORT_NAMESPACE", + "argumentIndex": 0, + "code": "os", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 1, + "endColumn": 10, + "startColumn": 8, + "startLine": 1, + "fullName": "os", + "localName": "os", + "nameDelimiter": ".", + "name": "os", + "visibility": "UNKNOWN" + } + }, + { + "id": 71, + "labels": [ + "Node", + "AstNode", + "Expression", + "Assign" + ], + "properties": { + "isCompoundAssignment": false, + "isSimpleAssignment": true, + "operatorCode": "=", + "access": "READ", + "argumentIndex": 0, + "code": "debug = False", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 3, + "endColumn": 14, + "startColumn": 1, + "startLine": 3, + "fullName": "=", + "localName": "=", + "nameDelimiter": ".", + "name": "=", + "usedAsExpression": false + } + }, + { + "id": 69, + "labels": [ + "Node", + "AstNode", + "Expression", + "Reference" + ], + "properties": { + "access": "WRITE", + "dfgHandlerHint": true, + "isStaticAccess": false, + "referenceTag": -834686024, + "argumentIndex": 0, + "code": "debug", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 3, + "endColumn": 6, + "startColumn": 1, + "startLine": 3, + "fullName": "debug", + "localName": "debug", + "nameDelimiter": ".", + "name": "debug", + "usedAsExpression": true + } + }, + { + "id": 70, + "labels": [ + "Node", + "AstNode", + "Expression", + "Literal" + ], + "properties": { + "value": false, + "access": "READ", + "argumentIndex": 0, + "code": "False", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 3, + "endColumn": 14, + "startColumn": 9, + "startLine": 3, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "", + "usedAsExpression": true + } + }, + { + "id": 200, + "labels": [ + "Node", + "AstNode", + "Declaration", + "ValueDeclaration", + "Variable" + ], + "properties": { + "isArray": false, + "isGlobal": false, + "isImplicitInitializerAllowed": false, + "argumentIndex": 0, + "code": "debug", + "isImplicit": true, + "isInferred": false, + "isStatic": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 3, + "endColumn": 6, + "startColumn": 1, + "startLine": 3, + "fullName": "debug", + "localName": "debug", + "nameDelimiter": ".", + "name": "debug", + "visibility": "UNKNOWN" + } + }, + { + "id": 201, + "labels": [ + "Node", + "AstNode", + "Declaration", + "Namespace" + ], + "properties": { + "argumentIndex": 0, + "isImplicit": false, + "isInferred": true, + "fullName": "os", + "localName": "os", + "nameDelimiter": ".", + "name": "os", + "visibility": "UNKNOWN" + } + }, + { + "id": 45, + "labels": [ + "Node", + "Language", + "PythonLanguage" + ], + "properties": { + "builtinsNamespace": "builtins", + "namespaceDelimiter": ".", + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false, + "fullName": "PythonLanguage", + "localName": "PythonLanguage", + "nameDelimiter": ".", + "name": "PythonLanguage" + } + }, + { + "id": 44, + "labels": [ + "Node", + "Scope", + "GlobalScope" + ], + "properties": { + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "" + } + }, + { + "id": 217, + "labels": [ + "Node", + "OverlayNode", + "BasicBlock" + ], + "properties": { + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 42, + "endColumn": 0, + "startColumn": 1, + "startLine": 1, + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "" + } + }, + { + "id": 194, + "labels": [ + "Node", + "OverlayNode", + "SystemInformation" + ], + "properties": { + "argumentIndex": 0, + "code": "import os\n\ndebug = False\n\n\nclass ReportGenerator:\n \"\"\"A dummy class to test AST class method parsing.\"\"\"\n\n def __init__(self, base_dir):\n self.base_dir = base_dir\n\n\ndef serve_report(request_payload):\n \"\"\"Top-level function handling a request.\"\"\"\n generator = ReportGenerator(\"/var/reports\")\n requested_file = request_payload.get(\"file\")\n\n # Helper function nested inside serve_report\n def build_file_path(filename):\n # VULNERABLE: Direct concatenation allows Path Traversal\n # An attacker passing \"../../etc/passwd\" could read system files.\n return os.path.join(generator.base_dir, filename)\n\n if not requested_file:\n return \"Error: No file specified\"\n\n target_path = build_file_path(requested_file)\n\n if os.path.exists(target_path):\n return f\"Serving content of {target_path}\"\n\n return \"Error: File not found\"\n\n\ndef handle_request(req):\n return serve_report(req)\n\n\ndef unrelated_top_level_function():\n \"\"\"Test AST node boundaries.\"\"\"\n return \"I am just here to add AST complexity.\"\n", + "isImplicit": false, + "isInferred": false, + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 42, + "endColumn": 0, + "startColumn": 1, + "startLine": 1, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "" + } + }, + { + "id": 63, + "labels": [ + "Node", + "Scope", + "NameScope", + "NamespaceScope" + ], + "properties": { + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false, + "fullName": "app", + "localName": "app", + "nameDelimiter": ".", + "name": "app", + "scopedName": "app" + } + }, + { + "id": 215, + "labels": [ + "Node", + "OverlayNode", + "BasicBlock" + ], + "properties": { + "artifact": "", + "endLine": 3, + "endColumn": 14, + "startColumn": 1, + "startLine": 1, + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "" + } + }, + { + "id": 218, + "labels": [ + "Node", + "OverlayNode", + "BasicBlock" + ], + "properties": { + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 10, + "endColumn": 33, + "startColumn": 1, + "startLine": 6, + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "" + } + }, + { + "id": 73, + "labels": [ + "Node", + "Scope", + "NameScope", + "RecordScope" + ], + "properties": { + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false, + "fullName": "app.ReportGenerator", + "localName": "ReportGenerator", + "nameDelimiter": ".", + "name": "app.ReportGenerator", + "scopedName": "app.ReportGenerator" + } + }, + { + "id": 259, + "labels": [ + "Node", + "Type", + "ObjectType" + ], + "properties": { + "argumentIndex": 0, + "isFirstOrderType": true, + "isImplicit": false, + "isInferred": false, + "isMutable": true, + "isPrimitive": false, + "fullName": "app.ReportGenerator", + "localName": "ReportGenerator", + "nameDelimiter": ".", + "name": "app.ReportGenerator", + "typeName": "app.ReportGenerator", + "typeOrigin": "UNRESOLVED" + } + }, + { + "id": 226, + "labels": [ + "Node", + "OverlayNode", + "BasicBlock" + ], + "properties": { + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 10, + "endColumn": 22, + "startColumn": 9, + "startLine": 10, + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "" + } + }, + { + "id": 83, + "labels": [ + "Node", + "Type", + "DynamicType" + ], + "properties": { + "argumentIndex": 0, + "isFirstOrderType": false, + "isImplicit": false, + "isInferred": false, + "isMutable": true, + "isPrimitive": false, + "fullName": "dynamic", + "localName": "dynamic", + "nameDelimiter": ".", + "name": "dynamic", + "typeName": "dynamic", + "typeOrigin": "UNRESOLVED" + } + }, + { + "id": 257, + "labels": [ + "Node", + "MemoryAddress" + ], + "properties": { + "isGlobal": false, + "fullName": "UNKNOWN.base_dir", + "localName": "base_dir", + "nameDelimiter": ".", + "name": "UNKNOWN.base_dir", + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false + } + }, + { + "id": 78, + "labels": [ + "Node", + "Scope", + "FunctionScope" + ], + "properties": { + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "", + "scopedName": "app.ReportGenerator" + } + }, + { + "id": 80, + "labels": [ + "Node", + "Type", + "FunctionType" + ], + "properties": { + "argumentIndex": 0, + "isFirstOrderType": true, + "isImplicit": false, + "isInferred": false, + "isMutable": true, + "isPrimitive": false, + "fullName": "__init__()app.ReportGenerator", + "localName": "__init__()app.ReportGenerator", + "nameDelimiter": ".", + "name": "__init__()app.ReportGenerator", + "typeName": "__init__()app.ReportGenerator", + "typeOrigin": "UNRESOLVED" + } + }, + { + "id": 227, + "labels": [ + "Node", + "OverlayNode", + "BasicBlock" + ], + "properties": { + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 10, + "endColumn": 33, + "startColumn": 5, + "startLine": 9, + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "" + } + }, + { + "id": 229, + "labels": [ + "Node", + "MemoryAddress" + ], + "properties": { + "isGlobal": true, + "fullName": "app.ReportGenerator.__init__", + "localName": "__init__", + "nameDelimiter": ".", + "name": "app.ReportGenerator.__init__", + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false + } + }, + { + "id": 67, + "labels": [ + "Node", + "Type", + "UnknownType" + ], + "properties": { + "argumentIndex": 0, + "isFirstOrderType": true, + "isImplicit": false, + "isInferred": false, + "isMutable": true, + "isPrimitive": false, + "fullName": "UNKNOWN", + "localName": "UNKNOWN", + "nameDelimiter": ".", + "name": "UNKNOWN", + "typeName": "UNKNOWN" + } + }, + { + "id": 231, + "labels": [ + "Node", + "MemoryAddress", + "ParameterMemoryValue" + ], + "properties": { + "fullName": "app.ReportGenerator.__init__.base_dir.value", + "localName": "value", + "nameDelimiter": ".", + "name": "app.ReportGenerator.__init__.base_dir.value", + "argumentIndex": 0, + "isGlobal": false, + "isImplicit": false, + "isInferred": false + } + }, + { + "id": 234, + "labels": [ + "Node", + "MemoryAddress" + ], + "properties": { + "isGlobal": false, + "fullName": "self.base_dir", + "localName": "base_dir", + "nameDelimiter": ".", + "name": "self.base_dir", + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false + } + }, + { + "id": 233, + "labels": [ + "Node", + "MemoryAddress", + "UnknownMemoryValue" + ], + "properties": { + "isGlobal": false, + "fullName": "self", + "localName": "self", + "nameDelimiter": ".", + "name": "self", + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false + } + }, + { + "id": 232, + "labels": [ + "Node", + "MemoryAddress" + ], + "properties": { + "isGlobal": false, + "fullName": "self", + "localName": "self", + "nameDelimiter": ".", + "name": "self", + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false + } + }, + { + "id": 230, + "labels": [ + "Node", + "MemoryAddress" + ], + "properties": { + "isGlobal": false, + "fullName": "base_dir", + "localName": "base_dir", + "nameDelimiter": ".", + "name": "base_dir", + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false + } + }, + { + "id": 50, + "labels": [ + "Node", + "Type", + "ObjectType", + "StringType" + ], + "properties": { + "argumentIndex": 0, + "isFirstOrderType": true, + "isImplicit": false, + "isInferred": false, + "isMutable": false, + "isPrimitive": false, + "fullName": "str", + "localName": "str", + "nameDelimiter": ".", + "name": "str", + "typeName": "str", + "typeOrigin": "RESOLVED" + } + }, + { + "id": 219, + "labels": [ + "Node", + "OverlayNode", + "BasicBlock" + ], + "properties": { + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 32, + "endColumn": 35, + "startColumn": 1, + "startLine": 13, + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "" + } + }, + { + "id": 244, + "labels": [ + "Node", + "MemoryAddress" + ], + "properties": { + "isGlobal": true, + "fullName": "app.serve_report", + "localName": "serve_report", + "nameDelimiter": ".", + "name": "app.serve_report", + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false + } + }, + { + "id": 97, + "labels": [ + "Node", + "Type", + "FunctionType" + ], + "properties": { + "argumentIndex": 0, + "isFirstOrderType": true, + "isImplicit": false, + "isInferred": false, + "isMutable": true, + "isPrimitive": false, + "fullName": "serve_report()dynamic", + "localName": "serve_report()dynamic", + "nameDelimiter": ".", + "name": "serve_report()dynamic", + "typeName": "serve_report()dynamic", + "typeOrigin": "UNRESOLVED" + } + }, + { + "id": 95, + "labels": [ + "Node", + "Scope", + "FunctionScope" + ], + "properties": { + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "", + "scopedName": "app" + } + }, + { + "id": 239, + "labels": [ + "Node", + "MemoryAddress" + ], + "properties": { + "isGlobal": true, + "fullName": "generator", + "localName": "generator", + "nameDelimiter": ".", + "name": "generator", + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false + } + }, + { + "id": 249, + "labels": [ + "Node", + "MemoryAddress", + "UnknownMemoryValue" + ], + "properties": { + "isGlobal": false, + "fullName": "dynamic.get", + "localName": "get", + "nameDelimiter": ".", + "name": "dynamic.get", + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false + } + }, + { + "id": 247, + "labels": [ + "Node", + "MemoryAddress" + ], + "properties": { + "isGlobal": false, + "fullName": "requested_file", + "localName": "requested_file", + "nameDelimiter": ".", + "name": "requested_file", + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false + } + }, + { + "id": 248, + "labels": [ + "Node", + "MemoryAddress" + ], + "properties": { + "isGlobal": false, + "fullName": "request_payload.get", + "localName": "get", + "nameDelimiter": ".", + "name": "request_payload.get", + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false + } + }, + { + "id": 246, + "labels": [ + "Node", + "MemoryAddress", + "ParameterMemoryValue" + ], + "properties": { + "fullName": "app.serve_report.request_payload.value", + "localName": "value", + "nameDelimiter": ".", + "name": "app.serve_report.request_payload.value", + "argumentIndex": 0, + "isGlobal": false, + "isImplicit": false, + "isInferred": false + } + }, + { + "id": 245, + "labels": [ + "Node", + "MemoryAddress" + ], + "properties": { + "isGlobal": false, + "fullName": "request_payload", + "localName": "request_payload", + "nameDelimiter": ".", + "name": "request_payload", + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false + } + }, + { + "id": 120, + "labels": [ + "Node", + "Type", + "FunctionType" + ], + "properties": { + "argumentIndex": 0, + "isFirstOrderType": true, + "isImplicit": false, + "isInferred": false, + "isMutable": true, + "isPrimitive": false, + "fullName": "build_file_path()dynamic", + "localName": "build_file_path()dynamic", + "nameDelimiter": ".", + "name": "build_file_path()dynamic", + "typeName": "build_file_path()dynamic", + "typeOrigin": "UNRESOLVED" + } + }, + { + "id": 118, + "labels": [ + "Node", + "Scope", + "FunctionScope" + ], + "properties": { + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "", + "scopedName": "app" + } + }, + { + "id": 235, + "labels": [ + "Node", + "MemoryAddress" + ], + "properties": { + "isGlobal": true, + "fullName": "app.build_file_path", + "localName": "build_file_path", + "nameDelimiter": ".", + "name": "app.build_file_path", + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false + } + }, + { + "id": 228, + "labels": [ + "Node", + "OverlayNode", + "BasicBlock" + ], + "properties": { + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 22, + "endColumn": 58, + "startColumn": 5, + "startLine": 19, + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "" + } + }, + { + "id": 258, + "labels": [ + "Node", + "OverlayNode", + "Concept", + "FileLikeObject", + "File" + ], + "properties": { + "deleteOnClose": false, + "argumentIndex": 0, + "code": "os.path.join(generator.base_dir, filename)", + "fileName": "", + "isImplicit": false, + "isInferred": false, + "isTempFile": "NOT_A_TEMP_FILE", + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 22, + "endColumn": 58, + "startColumn": 16, + "startLine": 22, + "fullName": "UNKNOWN.join.File", + "localName": "File", + "nameDelimiter": ".", + "name": "UNKNOWN.join.File" + } + }, + { + "id": 240, + "labels": [ + "Node", + "MemoryAddress", + "UnknownMemoryValue" + ], + "properties": { + "isGlobal": true, + "fullName": "generator", + "localName": "generator", + "nameDelimiter": ".", + "name": "generator", + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false + } + }, + { + "id": 241, + "labels": [ + "Node", + "MemoryAddress" + ], + "properties": { + "isGlobal": true, + "fullName": "generator.base_dir", + "localName": "base_dir", + "nameDelimiter": ".", + "name": "generator.base_dir", + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false + } + }, + { + "id": 237, + "labels": [ + "Node", + "MemoryAddress", + "ParameterMemoryValue" + ], + "properties": { + "fullName": "app.build_file_path.filename.value", + "localName": "value", + "nameDelimiter": ".", + "name": "app.build_file_path.filename.value", + "argumentIndex": 0, + "isGlobal": false, + "isImplicit": false, + "isInferred": false + } + }, + { + "id": 236, + "labels": [ + "Node", + "MemoryAddress" + ], + "properties": { + "isGlobal": false, + "fullName": "filename", + "localName": "filename", + "nameDelimiter": ".", + "name": "filename", + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false + } + }, + { + "id": 238, + "labels": [ + "Node", + "MemoryAddress", + "UnknownMemoryValue" + ], + "properties": { + "isGlobal": false, + "fullName": "os.path.join", + "localName": "join", + "nameDelimiter": ".", + "name": "os.path.join", + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false + } + }, + { + "id": 221, + "labels": [ + "Node", + "OverlayNode", + "BasicBlock" + ], + "properties": { + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 29, + "endColumn": 35, + "startColumn": 5, + "startLine": 24, + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "" + } + }, + { + "id": 220, + "labels": [ + "Node", + "OverlayNode", + "BasicBlock" + ], + "properties": { + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 25, + "endColumn": 42, + "startColumn": 9, + "startLine": 25, + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "" + } + }, + { + "id": 242, + "labels": [ + "Node", + "MemoryAddress", + "UnknownMemoryValue" + ], + "properties": { + "isGlobal": false, + "fullName": "UNKNOWN.join", + "localName": "join", + "nameDelimiter": ".", + "name": "UNKNOWN.join", + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false + } + }, + { + "id": 250, + "labels": [ + "Node", + "MemoryAddress" + ], + "properties": { + "isGlobal": false, + "fullName": "target_path", + "localName": "target_path", + "nameDelimiter": ".", + "name": "target_path", + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false + } + }, + { + "id": 223, + "labels": [ + "Node", + "OverlayNode", + "BasicBlock" + ], + "properties": { + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 32, + "endColumn": 35, + "startColumn": 5, + "startLine": 29, + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "" + } + }, + { + "id": 251, + "labels": [ + "Node", + "MemoryAddress", + "UnknownMemoryValue" + ], + "properties": { + "isGlobal": false, + "fullName": "os.path.exists", + "localName": "exists", + "nameDelimiter": ".", + "name": "os.path.exists", + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false + } + }, + { + "id": 222, + "labels": [ + "Node", + "OverlayNode", + "BasicBlock" + ], + "properties": { + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 30, + "endColumn": 51, + "startColumn": 9, + "startLine": 30, + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "" + } + }, + { + "id": 252, + "labels": [ + "Node", + "MemoryAddress" + ], + "properties": { + "isGlobal": false, + "fullName": "+", + "localName": "+", + "nameDelimiter": ".", + "name": "+", + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false + } + }, + { + "id": 253, + "labels": [ + "Node", + "MemoryAddress" + ], + "properties": { + "isGlobal": true, + "fullName": "app.handle_request", + "localName": "handle_request", + "nameDelimiter": ".", + "name": "app.handle_request", + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false + } + }, + { + "id": 175, + "labels": [ + "Node", + "Type", + "FunctionType" + ], + "properties": { + "argumentIndex": 0, + "isFirstOrderType": true, + "isImplicit": false, + "isInferred": false, + "isMutable": true, + "isPrimitive": false, + "fullName": "handle_request()dynamic", + "localName": "handle_request()dynamic", + "nameDelimiter": ".", + "name": "handle_request()dynamic", + "typeName": "handle_request()dynamic", + "typeOrigin": "UNRESOLVED" + } + }, + { + "id": 173, + "labels": [ + "Node", + "Scope", + "FunctionScope" + ], + "properties": { + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "", + "scopedName": "app" + } + }, + { + "id": 224, + "labels": [ + "Node", + "OverlayNode", + "BasicBlock" + ], + "properties": { + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 36, + "endColumn": 29, + "startColumn": 1, + "startLine": 35, + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "" + } + }, + { + "id": 255, + "labels": [ + "Node", + "MemoryAddress", + "ParameterMemoryValue" + ], + "properties": { + "fullName": "app.handle_request.req.value", + "localName": "value", + "nameDelimiter": ".", + "name": "app.handle_request.req.value", + "argumentIndex": 0, + "isGlobal": false, + "isImplicit": false, + "isInferred": false + } + }, + { + "id": 254, + "labels": [ + "Node", + "MemoryAddress" + ], + "properties": { + "isGlobal": false, + "fullName": "req", + "localName": "req", + "nameDelimiter": ".", + "name": "req", + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false + } + }, + { + "id": 243, + "labels": [ + "Node", + "MemoryAddress" + ], + "properties": { + "isGlobal": true, + "fullName": "app.unrelated_top_level_function", + "localName": "unrelated_top_level_function", + "nameDelimiter": ".", + "name": "app.unrelated_top_level_function", + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false + } + }, + { + "id": 225, + "labels": [ + "Node", + "OverlayNode", + "BasicBlock" + ], + "properties": { + "artifact": "file:/home/ziad-hany/PycharmProjects/scancode.io/scanpipe/tests/data/cpg_reachability/python/main/app.py", + "endLine": 41, + "endColumn": 51, + "startColumn": 1, + "startLine": 39, + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "" + } + }, + { + "id": 186, + "labels": [ + "Node", + "Scope", + "FunctionScope" + ], + "properties": { + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "", + "scopedName": "app" + } + }, + { + "id": 188, + "labels": [ + "Node", + "Type", + "FunctionType" + ], + "properties": { + "argumentIndex": 0, + "isFirstOrderType": true, + "isImplicit": false, + "isInferred": false, + "isMutable": true, + "isPrimitive": false, + "fullName": "unrelated_top_level_function()dynamic", + "localName": "unrelated_top_level_function()dynamic", + "nameDelimiter": ".", + "name": "unrelated_top_level_function()dynamic", + "typeName": "unrelated_top_level_function()dynamic", + "typeOrigin": "UNRESOLVED" + } + }, + { + "id": 46, + "labels": [ + "Node", + "Type", + "ObjectType", + "NumericType", + "BooleanType" + ], + "properties": { + "argumentIndex": 0, + "bitWidth": 1, + "isFirstOrderType": true, + "isImplicit": false, + "isInferred": false, + "isMutable": false, + "isPrimitive": true, + "modifier": "NOT_APPLICABLE", + "fullName": "bool", + "localName": "bool", + "nameDelimiter": ".", + "name": "bool", + "typeName": "bool", + "typeOrigin": "RESOLVED" + } + }, + { + "id": 256, + "labels": [ + "Node", + "MemoryAddress" + ], + "properties": { + "isGlobal": false, + "fullName": "debug", + "localName": "debug", + "nameDelimiter": ".", + "name": "debug", + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false + } + }, + { + "id": 216, + "labels": [ + "Node", + "OverlayNode", + "BasicBlock" + ], + "properties": { + "artifact": "", + "endLine": -1, + "endColumn": -1, + "startColumn": -1, + "startLine": -1, + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false, + "fullName": "", + "localName": "", + "nameDelimiter": ".", + "name": "" + } + }, + { + "id": 202, + "labels": [ + "Node", + "Scope", + "NameScope", + "NamespaceScope" + ], + "properties": { + "argumentIndex": 0, + "isImplicit": false, + "isInferred": false, + "fullName": "os", + "localName": "os", + "nameDelimiter": ".", + "name": "os", + "scopedName": "os" + } + } + ], + "edges": [ + { + "id": 0, + "type": "COMPONENTS", + "startNode": 59, + "endNode": 60, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffce71fefe", + "endId": "ffffffff-ce71-fefe-0000-000073f5c4bb", + "index": 0, + "overlaying": false + } + }, + { + "id": 1, + "type": "LANGUAGE", + "startNode": 59, + "endNode": 45, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffce71fefe", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 2, + "type": "AST", + "startNode": 59, + "endNode": 60, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffce71fefe", + "endId": "ffffffff-ce71-fefe-0000-000073f5c4bb" + } + }, + { + "id": 3, + "type": "LANGUAGE", + "startNode": 60, + "endNode": 45, + "properties": { + "startId": "ffffffff-ce71-fefe-0000-000073f5c4bb", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 4, + "type": "TRANSLATION_UNITS", + "startNode": 60, + "endNode": 61, + "properties": { + "startId": "ffffffff-ce71-fefe-0000-000073f5c4bb", + "endId": "00000000-73f5-c4bb-ffff-ffffc1c50235", + "index": 0, + "overlaying": false + } + }, + { + "id": 5, + "type": "AST", + "startNode": 60, + "endNode": 61, + "properties": { + "startId": "ffffffff-ce71-fefe-0000-000073f5c4bb", + "endId": "00000000-73f5-c4bb-ffff-ffffc1c50235" + } + }, + { + "id": 6, + "type": "DECLARATIONS", + "startNode": 61, + "endNode": 62, + "properties": { + "startId": "00000000-73f5-c4bb-ffff-ffffc1c50235", + "endId": "ffffffff-c1c5-0235-ffff-ffffa3b55fd5", + "index": 0, + "overlaying": false + } + }, + { + "id": 7, + "type": "DECLARATIONS", + "startNode": 61, + "endNode": 201, + "properties": { + "startId": "00000000-73f5-c4bb-ffff-ffffc1c50235", + "endId": "ffffffff-c1c5-0235-0000-0000179badee", + "index": 1, + "overlaying": false + } + }, + { + "id": 8, + "type": "FIRST_BASIC_BLOCK", + "startNode": 61, + "endNode": 217, + "properties": { + "startId": "00000000-73f5-c4bb-ffff-ffffc1c50235", + "endId": "00000000-0000-0000-ffff-ffffb978cec4" + } + }, + { + "id": 9, + "type": "NAMESPACES", + "startNode": 61, + "endNode": 62, + "properties": { + "startId": "00000000-73f5-c4bb-ffff-ffffc1c50235", + "endId": "ffffffff-c1c5-0235-ffff-ffffa3b55fd5" + } + }, + { + "id": 10, + "type": "NAMESPACES", + "startNode": 61, + "endNode": 201, + "properties": { + "startId": "00000000-73f5-c4bb-ffff-ffffc1c50235", + "endId": "ffffffff-c1c5-0235-0000-0000179badee" + } + }, + { + "id": 11, + "type": "AST", + "startNode": 61, + "endNode": 62, + "properties": { + "startId": "00000000-73f5-c4bb-ffff-ffffc1c50235", + "endId": "ffffffff-c1c5-0235-ffff-ffffa3b55fd5" + } + }, + { + "id": 12, + "type": "AST", + "startNode": 61, + "endNode": 201, + "properties": { + "startId": "00000000-73f5-c4bb-ffff-ffffc1c50235", + "endId": "ffffffff-c1c5-0235-0000-0000179badee" + } + }, + { + "id": 13, + "type": "BB", + "startNode": 61, + "endNode": 217, + "properties": { + "startId": "00000000-73f5-c4bb-ffff-ffffc1c50235", + "endId": "00000000-0000-0000-ffff-ffffb978cec4", + "index": 0, + "overlaying": true + } + }, + { + "id": 14, + "type": "LANGUAGE", + "startNode": 61, + "endNode": 45, + "properties": { + "startId": "00000000-73f5-c4bb-ffff-ffffc1c50235", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 15, + "type": "OVERLAY", + "startNode": 61, + "endNode": 194, + "properties": { + "startId": "00000000-73f5-c4bb-ffff-ffffc1c50235", + "endId": "00000000-0000-0000-0000-000000000000", + "overlaying": true + } + }, + { + "id": 16, + "type": "SCOPE", + "startNode": 61, + "endNode": 44, + "properties": { + "startId": "00000000-73f5-c4bb-ffff-ffffc1c50235", + "endId": "00000000-0000-0000-0000-000076dbb8f8" + } + }, + { + "id": 17, + "type": "DECLARATION", + "startNode": 62, + "endNode": 72, + "properties": { + "startId": "ffffffff-c1c5-0235-ffff-ffffa3b55fd5", + "endId": "ffffffff-a3b5-5fd5-0000-00002050f08d", + "index": 0, + "overlaying": false + } + }, + { + "id": 18, + "type": "DECLARATION", + "startNode": 62, + "endNode": 94, + "properties": { + "startId": "ffffffff-c1c5-0235-ffff-ffffa3b55fd5", + "endId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "index": 1, + "overlaying": false + } + }, + { + "id": 19, + "type": "DECLARATION", + "startNode": 62, + "endNode": 172, + "properties": { + "startId": "ffffffff-c1c5-0235-ffff-ffffa3b55fd5", + "endId": "ffffffff-a3b5-5fd5-ffff-ffffbc61cc17", + "index": 2, + "overlaying": false + } + }, + { + "id": 20, + "type": "DECLARATION", + "startNode": 62, + "endNode": 185, + "properties": { + "startId": "ffffffff-c1c5-0235-ffff-ffffa3b55fd5", + "endId": "ffffffff-a3b5-5fd5-0000-00006d51c74c", + "index": 3, + "overlaying": false + } + }, + { + "id": 21, + "type": "FIRST_BASIC_BLOCK", + "startNode": 62, + "endNode": 215, + "properties": { + "startId": "ffffffff-c1c5-0235-ffff-ffffa3b55fd5", + "endId": "00000000-0000-0000-ffff-ffff92bdc769" + } + }, + { + "id": 22, + "type": "STATEMENTS", + "startNode": 62, + "endNode": 64, + "properties": { + "startId": "ffffffff-c1c5-0235-ffff-ffffa3b55fd5", + "endId": "ffffffff-a3b5-5fd5-ffff-ffff965090ae", + "index": 0, + "overlaying": false + } + }, + { + "id": 23, + "type": "STATEMENTS", + "startNode": 62, + "endNode": 71, + "properties": { + "startId": "ffffffff-c1c5-0235-ffff-ffffa3b55fd5", + "endId": "ffffffff-a3b5-5fd5-ffff-ffffdbbc3c9c", + "index": 1, + "overlaying": false + } + }, + { + "id": 24, + "type": "AST", + "startNode": 62, + "endNode": 72, + "properties": { + "startId": "ffffffff-c1c5-0235-ffff-ffffa3b55fd5", + "endId": "ffffffff-a3b5-5fd5-0000-00002050f08d" + } + }, + { + "id": 25, + "type": "AST", + "startNode": 62, + "endNode": 94, + "properties": { + "startId": "ffffffff-c1c5-0235-ffff-ffffa3b55fd5", + "endId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb" + } + }, + { + "id": 26, + "type": "AST", + "startNode": 62, + "endNode": 172, + "properties": { + "startId": "ffffffff-c1c5-0235-ffff-ffffa3b55fd5", + "endId": "ffffffff-a3b5-5fd5-ffff-ffffbc61cc17" + } + }, + { + "id": 27, + "type": "AST", + "startNode": 62, + "endNode": 185, + "properties": { + "startId": "ffffffff-c1c5-0235-ffff-ffffa3b55fd5", + "endId": "ffffffff-a3b5-5fd5-0000-00006d51c74c" + } + }, + { + "id": 28, + "type": "AST", + "startNode": 62, + "endNode": 64, + "properties": { + "startId": "ffffffff-c1c5-0235-ffff-ffffa3b55fd5", + "endId": "ffffffff-a3b5-5fd5-ffff-ffff965090ae" + } + }, + { + "id": 29, + "type": "AST", + "startNode": 62, + "endNode": 71, + "properties": { + "startId": "ffffffff-c1c5-0235-ffff-ffffa3b55fd5", + "endId": "ffffffff-a3b5-5fd5-ffff-ffffdbbc3c9c" + } + }, + { + "id": 30, + "type": "BB", + "startNode": 62, + "endNode": 215, + "properties": { + "startId": "ffffffff-c1c5-0235-ffff-ffffa3b55fd5", + "endId": "00000000-0000-0000-ffff-ffff92bdc769", + "index": 0, + "overlaying": true + } + }, + { + "id": 31, + "type": "DECLARING_SCOPE", + "startNode": 62, + "endNode": 63, + "properties": { + "startId": "ffffffff-c1c5-0235-ffff-ffffa3b55fd5", + "endId": "00000000-0000-0000-ffff-ffffd8828539" + } + }, + { + "id": 32, + "type": "LANGUAGE", + "startNode": 62, + "endNode": 45, + "properties": { + "startId": "ffffffff-c1c5-0235-ffff-ffffa3b55fd5", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 33, + "type": "EOG", + "startNode": 62, + "endNode": 68, + "properties": { + "startId": "ffffffff-c1c5-0235-ffff-ffffa3b55fd5", + "endId": "ffffffff-9650-90ae-ffff-ffffd403f3d2", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 34, + "type": "SCOPE", + "startNode": 62, + "endNode": 44, + "properties": { + "startId": "ffffffff-c1c5-0235-ffff-ffffa3b55fd5", + "endId": "00000000-0000-0000-0000-000076dbb8f8" + } + }, + { + "id": 35, + "type": "CONSTRUCTORS", + "startNode": 72, + "endNode": 75, + "properties": { + "startId": "ffffffff-a3b5-5fd5-0000-00002050f08d", + "endId": "00000000-2050-f08d-0000-00005516da07", + "index": 0, + "overlaying": false + } + }, + { + "id": 36, + "type": "DECLARED_TYPE", + "startNode": 72, + "endNode": 260, + "properties": { + "startId": "ffffffff-a3b5-5fd5-0000-00002050f08d", + "endId": "00000000-0000-0000-0000-000000007d14" + } + }, + { + "id": 37, + "type": "FIELDS", + "startNode": 72, + "endNode": 196, + "properties": { + "startId": "ffffffff-a3b5-5fd5-0000-00002050f08d", + "endId": "00000000-2050-f08d-0000-00000a118353", + "index": 0, + "overlaying": false + } + }, + { + "id": 38, + "type": "FIRST_BASIC_BLOCK", + "startNode": 72, + "endNode": 218, + "properties": { + "startId": "ffffffff-a3b5-5fd5-0000-00002050f08d", + "endId": "00000000-0000-0000-ffff-ffffc3c385a1" + } + }, + { + "id": 39, + "type": "STATEMENTS", + "startNode": 72, + "endNode": 74, + "properties": { + "startId": "ffffffff-a3b5-5fd5-0000-00002050f08d", + "endId": "00000000-2050-f08d-ffff-ffff8e3bfa01", + "index": 0, + "overlaying": false + } + }, + { + "id": 40, + "type": "AST", + "startNode": 72, + "endNode": 196, + "properties": { + "startId": "ffffffff-a3b5-5fd5-0000-00002050f08d", + "endId": "00000000-2050-f08d-0000-00000a118353" + } + }, + { + "id": 41, + "type": "AST", + "startNode": 72, + "endNode": 75, + "properties": { + "startId": "ffffffff-a3b5-5fd5-0000-00002050f08d", + "endId": "00000000-2050-f08d-0000-00005516da07" + } + }, + { + "id": 42, + "type": "AST", + "startNode": 72, + "endNode": 74, + "properties": { + "startId": "ffffffff-a3b5-5fd5-0000-00002050f08d", + "endId": "00000000-2050-f08d-ffff-ffff8e3bfa01" + } + }, + { + "id": 43, + "type": "BB", + "startNode": 72, + "endNode": 218, + "properties": { + "startId": "ffffffff-a3b5-5fd5-0000-00002050f08d", + "endId": "00000000-0000-0000-ffff-ffffc3c385a1", + "index": 0, + "overlaying": true + } + }, + { + "id": 44, + "type": "DECLARING_SCOPE", + "startNode": 72, + "endNode": 73, + "properties": { + "startId": "ffffffff-a3b5-5fd5-0000-00002050f08d", + "endId": "00000000-0000-0000-ffff-fffff4fe3511" + } + }, + { + "id": 45, + "type": "LANGUAGE", + "startNode": 72, + "endNode": 45, + "properties": { + "startId": "ffffffff-a3b5-5fd5-0000-00002050f08d", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 46, + "type": "EOG", + "startNode": 72, + "endNode": 74, + "properties": { + "startId": "ffffffff-a3b5-5fd5-0000-00002050f08d", + "endId": "00000000-2050-f08d-ffff-ffff8e3bfa01", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 47, + "type": "SCOPE", + "startNode": 72, + "endNode": 63, + "properties": { + "startId": "ffffffff-a3b5-5fd5-0000-00002050f08d", + "endId": "00000000-0000-0000-ffff-ffffd8828539" + } + }, + { + "id": 48, + "type": "DEFINES", + "startNode": 196, + "endNode": 196, + "properties": { + "startId": "00000000-2050-f08d-0000-00000a118353", + "endId": "00000000-2050-f08d-0000-00000a118353" + } + }, + { + "id": 49, + "type": "BB", + "startNode": 196, + "endNode": 226, + "properties": { + "startId": "00000000-2050-f08d-0000-00000a118353", + "endId": "00000000-0000-0000-0000-0000712dbf99", + "index": 0, + "overlaying": true + } + }, + { + "id": 50, + "type": "LANGUAGE", + "startNode": 196, + "endNode": 45, + "properties": { + "startId": "00000000-2050-f08d-0000-00000a118353", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 51, + "type": "MEMORY_ADDRESS", + "startNode": 196, + "endNode": 257, + "properties": { + "startId": "00000000-2050-f08d-0000-00000a118353", + "endId": "00000000-0000-0000-0000-00006b6e7218", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 52, + "type": "SCOPE", + "startNode": 196, + "endNode": 73, + "properties": { + "startId": "00000000-2050-f08d-0000-00000a118353", + "endId": "00000000-0000-0000-ffff-fffff4fe3511" + } + }, + { + "id": 53, + "type": "TYPE", + "startNode": 196, + "endNode": 83, + "properties": { + "startId": "00000000-2050-f08d-0000-00000a118353", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 54, + "type": "USAGE", + "startNode": 196, + "endNode": 88, + "properties": { + "startId": "00000000-2050-f08d-0000-00000a118353", + "endId": "ffffffff-e9ce-636f-ffff-ffffbc25f070", + "access": "WRITE", + "index": 0, + "overlaying": false + } + }, + { + "id": 55, + "type": "USAGE", + "startNode": 196, + "endNode": 134, + "properties": { + "startId": "00000000-2050-f08d-0000-00000a118353", + "endId": "00000000-052e-f17c-0000-000042985aa9", + "access": "READ", + "index": 1, + "overlaying": false + } + }, + { + "id": 56, + "type": "RECORD_DECLARATION", + "startNode": 75, + "endNode": 72, + "properties": { + "startId": "00000000-2050-f08d-0000-00005516da07", + "endId": "ffffffff-a3b5-5fd5-0000-00002050f08d" + } + }, + { + "id": 57, + "type": "AST", + "startNode": 75, + "endNode": 86, + "properties": { + "startId": "00000000-2050-f08d-0000-00005516da07", + "endId": "00000000-5516-da07-ffff-ffffe74efacb" + } + }, + { + "id": 58, + "type": "AST", + "startNode": 75, + "endNode": 84, + "properties": { + "startId": "00000000-2050-f08d-0000-00005516da07", + "endId": "00000000-5516-da07-ffff-ffff8b77f73f" + } + }, + { + "id": 59, + "type": "AST", + "startNode": 75, + "endNode": 82, + "properties": { + "startId": "00000000-2050-f08d-0000-00005516da07", + "endId": "00000000-5516-da07-ffff-ffffcb1c39d7" + } + }, + { + "id": 60, + "type": "BB", + "startNode": 75, + "endNode": 227, + "properties": { + "startId": "00000000-2050-f08d-0000-00005516da07", + "endId": "00000000-0000-0000-ffff-ffff9c7afc87", + "index": 0, + "overlaying": true + } + }, + { + "id": 61, + "type": "BODY", + "startNode": 75, + "endNode": 86, + "properties": { + "startId": "00000000-2050-f08d-0000-00005516da07", + "endId": "00000000-5516-da07-ffff-ffffe74efacb", + "overlaying": false + } + }, + { + "id": 62, + "type": "DECLARING_SCOPE", + "startNode": 75, + "endNode": 78, + "properties": { + "startId": "00000000-2050-f08d-0000-00005516da07", + "endId": "00000000-0000-0000-0000-00004dc4db66" + } + }, + { + "id": 63, + "type": "FIRST_BASIC_BLOCK", + "startNode": 75, + "endNode": 227, + "properties": { + "startId": "00000000-2050-f08d-0000-00005516da07", + "endId": "00000000-0000-0000-ffff-ffff9c7afc87" + } + }, + { + "id": 64, + "type": "LANGUAGE", + "startNode": 75, + "endNode": 45, + "properties": { + "startId": "00000000-2050-f08d-0000-00005516da07", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 65, + "type": "MEMORY_ADDRESS", + "startNode": 75, + "endNode": 229, + "properties": { + "startId": "00000000-2050-f08d-0000-00005516da07", + "endId": "00000000-0000-0000-0000-00001899e522", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 66, + "type": "CDG", + "startNode": 75, + "endNode": 87, + "properties": { + "startId": "00000000-2050-f08d-0000-00005516da07", + "endId": "ffffffff-bc25-f070-ffff-ffffca1d50f6", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 67, + "type": "CDG", + "startNode": 75, + "endNode": 88, + "properties": { + "startId": "00000000-2050-f08d-0000-00005516da07", + "endId": "ffffffff-e9ce-636f-ffff-ffffbc25f070", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 68, + "type": "CDG", + "startNode": 75, + "endNode": 90, + "properties": { + "startId": "00000000-2050-f08d-0000-00005516da07", + "endId": "ffffffff-e9ce-636f-ffff-ffffda2fa35f", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 69, + "type": "CDG", + "startNode": 75, + "endNode": 91, + "properties": { + "startId": "00000000-2050-f08d-0000-00005516da07", + "endId": "ffffffff-e74e-facb-ffff-ffffe9ce636f", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 70, + "type": "CDG", + "startNode": 75, + "endNode": 93, + "properties": { + "startId": "00000000-2050-f08d-0000-00005516da07", + "endId": "ffffffff-e393-da33-0000-00006b2e93ec", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 71, + "type": "CDG", + "startNode": 75, + "endNode": 92, + "properties": { + "startId": "00000000-2050-f08d-0000-00005516da07", + "endId": "ffffffff-e74e-facb-ffff-ffffe393da33", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 72, + "type": "DFG", + "startNode": 92, + "endNode": 75, + "properties": { + "startId": "ffffffff-e74e-facb-ffff-ffffe393da33", + "endId": "00000000-2050-f08d-0000-00005516da07", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 73, + "type": "EOG", + "startNode": 75, + "endNode": 87, + "properties": { + "startId": "00000000-2050-f08d-0000-00005516da07", + "endId": "ffffffff-bc25-f070-ffff-ffffca1d50f6", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 74, + "type": "PDG", + "startNode": 75, + "endNode": 91, + "properties": { + "startId": "00000000-2050-f08d-0000-00005516da07", + "endId": "ffffffff-e74e-facb-ffff-ffffe9ce636f", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 75, + "type": "PDG", + "startNode": 75, + "endNode": 88, + "properties": { + "startId": "00000000-2050-f08d-0000-00005516da07", + "endId": "ffffffff-e9ce-636f-ffff-ffffbc25f070", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 76, + "type": "PDG", + "startNode": 75, + "endNode": 212, + "properties": { + "startId": "00000000-2050-f08d-0000-00005516da07", + "endId": "ffffffff-e348-5ace-0000-00000cfbfebb", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 77, + "type": "PDG", + "startNode": 75, + "endNode": 87, + "properties": { + "startId": "00000000-2050-f08d-0000-00005516da07", + "endId": "ffffffff-bc25-f070-ffff-ffffca1d50f6", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 78, + "type": "PDG", + "startNode": 75, + "endNode": 93, + "properties": { + "startId": "00000000-2050-f08d-0000-00005516da07", + "endId": "ffffffff-e393-da33-0000-00006b2e93ec", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 79, + "type": "PDG", + "startNode": 75, + "endNode": 90, + "properties": { + "startId": "00000000-2050-f08d-0000-00005516da07", + "endId": "ffffffff-e9ce-636f-ffff-ffffda2fa35f", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 80, + "type": "PDG", + "startNode": 75, + "endNode": 92, + "properties": { + "startId": "00000000-2050-f08d-0000-00005516da07", + "endId": "ffffffff-e74e-facb-ffff-ffffe393da33", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 81, + "type": "PARAMETERS", + "startNode": 75, + "endNode": 84, + "properties": { + "startId": "00000000-2050-f08d-0000-00005516da07", + "endId": "00000000-5516-da07-ffff-ffff8b77f73f", + "index": 0, + "overlaying": false + } + }, + { + "id": 82, + "type": "RECEIVER", + "startNode": 75, + "endNode": 82, + "properties": { + "startId": "00000000-2050-f08d-0000-00005516da07", + "endId": "00000000-5516-da07-ffff-ffffcb1c39d7", + "overlaying": false + } + }, + { + "id": 83, + "type": "RETURN_TYPES", + "startNode": 75, + "endNode": 79, + "properties": { + "startId": "00000000-2050-f08d-0000-00005516da07", + "endId": "00000000-0000-0000-0000-000000007d14" + } + }, + { + "id": 84, + "type": "SCOPE", + "startNode": 75, + "endNode": 73, + "properties": { + "startId": "00000000-2050-f08d-0000-00005516da07", + "endId": "00000000-0000-0000-ffff-fffff4fe3511" + } + }, + { + "id": 85, + "type": "SECONDARY_TYPES", + "startNode": 75, + "endNode": 79, + "properties": { + "startId": "00000000-2050-f08d-0000-00005516da07", + "endId": "00000000-0000-0000-0000-000000007d14" + } + }, + { + "id": 86, + "type": "SECONDARY_TYPES", + "startNode": 75, + "endNode": 83, + "properties": { + "startId": "00000000-2050-f08d-0000-00005516da07", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 87, + "type": "SIGNATURE_TYPES", + "startNode": 75, + "endNode": 83, + "properties": { + "startId": "00000000-2050-f08d-0000-00005516da07", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 88, + "type": "TYPE", + "startNode": 75, + "endNode": 80, + "properties": { + "startId": "00000000-2050-f08d-0000-00005516da07", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 89, + "type": "STATEMENTS", + "startNode": 86, + "endNode": 91, + "properties": { + "startId": "00000000-5516-da07-ffff-ffffe74efacb", + "endId": "ffffffff-e74e-facb-ffff-ffffe9ce636f", + "index": 0, + "overlaying": false + } + }, + { + "id": 90, + "type": "STATEMENTS", + "startNode": 86, + "endNode": 92, + "properties": { + "startId": "00000000-5516-da07-ffff-ffffe74efacb", + "endId": "ffffffff-e74e-facb-ffff-ffffe393da33", + "index": 1, + "overlaying": false + } + }, + { + "id": 91, + "type": "AST", + "startNode": 86, + "endNode": 91, + "properties": { + "startId": "00000000-5516-da07-ffff-ffffe74efacb", + "endId": "ffffffff-e74e-facb-ffff-ffffe9ce636f" + } + }, + { + "id": 92, + "type": "AST", + "startNode": 86, + "endNode": 92, + "properties": { + "startId": "00000000-5516-da07-ffff-ffffe74efacb", + "endId": "ffffffff-e74e-facb-ffff-ffffe393da33" + } + }, + { + "id": 93, + "type": "LANGUAGE", + "startNode": 86, + "endNode": 45, + "properties": { + "startId": "00000000-5516-da07-ffff-ffffe74efacb", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 94, + "type": "SCOPE", + "startNode": 86, + "endNode": 78, + "properties": { + "startId": "00000000-5516-da07-ffff-ffffe74efacb", + "endId": "00000000-0000-0000-0000-00004dc4db66" + } + }, + { + "id": 95, + "type": "TYPE", + "startNode": 86, + "endNode": 67, + "properties": { + "startId": "00000000-5516-da07-ffff-ffffe74efacb", + "endId": "00000000-0000-0000-0000-000000000020" + } + }, + { + "id": 96, + "type": "LHS", + "startNode": 91, + "endNode": 88, + "properties": { + "startId": "ffffffff-e74e-facb-ffff-ffffe9ce636f", + "endId": "ffffffff-e9ce-636f-ffff-ffffbc25f070", + "index": 0, + "overlaying": false + } + }, + { + "id": 97, + "type": "RHS", + "startNode": 91, + "endNode": 90, + "properties": { + "startId": "ffffffff-e74e-facb-ffff-ffffe9ce636f", + "endId": "ffffffff-e9ce-636f-ffff-ffffda2fa35f", + "index": 0, + "overlaying": false + } + }, + { + "id": 98, + "type": "AST", + "startNode": 91, + "endNode": 88, + "properties": { + "startId": "ffffffff-e74e-facb-ffff-ffffe9ce636f", + "endId": "ffffffff-e9ce-636f-ffff-ffffbc25f070" + } + }, + { + "id": 99, + "type": "AST", + "startNode": 91, + "endNode": 90, + "properties": { + "startId": "ffffffff-e74e-facb-ffff-ffffe9ce636f", + "endId": "ffffffff-e9ce-636f-ffff-ffffda2fa35f" + } + }, + { + "id": 100, + "type": "BB", + "startNode": 91, + "endNode": 227, + "properties": { + "startId": "ffffffff-e74e-facb-ffff-ffffe9ce636f", + "endId": "00000000-0000-0000-ffff-ffff9c7afc87", + "index": 4, + "overlaying": true + } + }, + { + "id": 101, + "type": "LANGUAGE", + "startNode": 91, + "endNode": 45, + "properties": { + "startId": "ffffffff-e74e-facb-ffff-ffffe9ce636f", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 102, + "type": "EOG", + "startNode": 91, + "endNode": 93, + "properties": { + "startId": "ffffffff-e74e-facb-ffff-ffffe9ce636f", + "endId": "ffffffff-e393-da33-0000-00006b2e93ec", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 103, + "type": "SCOPE", + "startNode": 91, + "endNode": 78, + "properties": { + "startId": "ffffffff-e74e-facb-ffff-ffffe9ce636f", + "endId": "00000000-0000-0000-0000-00004dc4db66" + } + }, + { + "id": 104, + "type": "TYPE", + "startNode": 91, + "endNode": 67, + "properties": { + "startId": "ffffffff-e74e-facb-ffff-ffffe9ce636f", + "endId": "00000000-0000-0000-0000-000000000020" + } + }, + { + "id": 105, + "type": "BASE", + "startNode": 88, + "endNode": 87, + "properties": { + "startId": "ffffffff-e9ce-636f-ffff-ffffbc25f070", + "endId": "ffffffff-bc25-f070-ffff-ffffca1d50f6", + "overlaying": false + } + }, + { + "id": 106, + "type": "OPERATOR_BASE", + "startNode": 88, + "endNode": 87, + "properties": { + "startId": "ffffffff-e9ce-636f-ffff-ffffbc25f070", + "endId": "ffffffff-bc25-f070-ffff-ffffca1d50f6" + } + }, + { + "id": 107, + "type": "AST", + "startNode": 88, + "endNode": 87, + "properties": { + "startId": "ffffffff-e9ce-636f-ffff-ffffbc25f070", + "endId": "ffffffff-bc25-f070-ffff-ffffca1d50f6" + } + }, + { + "id": 108, + "type": "BB", + "startNode": 88, + "endNode": 227, + "properties": { + "startId": "ffffffff-e9ce-636f-ffff-ffffbc25f070", + "endId": "00000000-0000-0000-ffff-ffff9c7afc87", + "index": 2, + "overlaying": true + } + }, + { + "id": 109, + "type": "LANGUAGE", + "startNode": 88, + "endNode": 45, + "properties": { + "startId": "ffffffff-e9ce-636f-ffff-ffffbc25f070", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 110, + "type": "MEMORY_ADDRESS", + "startNode": 88, + "endNode": 234, + "properties": { + "startId": "ffffffff-e9ce-636f-ffff-ffffbc25f070", + "endId": "00000000-0000-0000-ffff-ffffc9550036", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 111, + "type": "MEMORY_VALUE", + "startNode": 231, + "endNode": 88, + "properties": { + "startId": "00000000-0000-0000-ffff-ffff85bdfe86", + "endId": "ffffffff-e9ce-636f-ffff-ffffbc25f070", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 112, + "type": "DFG", + "startNode": 90, + "endNode": 88, + "properties": { + "startId": "ffffffff-e9ce-636f-ffff-ffffda2fa35f", + "endId": "ffffffff-e9ce-636f-ffff-ffffbc25f070", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 113, + "type": "EOG", + "startNode": 88, + "endNode": 90, + "properties": { + "startId": "ffffffff-e9ce-636f-ffff-ffffbc25f070", + "endId": "ffffffff-e9ce-636f-ffff-ffffda2fa35f", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 114, + "type": "PDG", + "startNode": 88, + "endNode": 87, + "properties": { + "startId": "ffffffff-e9ce-636f-ffff-ffffbc25f070", + "endId": "ffffffff-bc25-f070-ffff-ffffca1d50f6", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 115, + "type": "REFERS_TO", + "startNode": 88, + "endNode": 196, + "properties": { + "startId": "ffffffff-e9ce-636f-ffff-ffffbc25f070", + "endId": "00000000-2050-f08d-0000-00000a118353" + } + }, + { + "id": 116, + "type": "SCOPE", + "startNode": 88, + "endNode": 78, + "properties": { + "startId": "ffffffff-e9ce-636f-ffff-ffffbc25f070", + "endId": "00000000-0000-0000-0000-00004dc4db66" + } + }, + { + "id": 117, + "type": "TYPE", + "startNode": 88, + "endNode": 83, + "properties": { + "startId": "ffffffff-e9ce-636f-ffff-ffffbc25f070", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 118, + "type": "REFERS_TO", + "startNode": 87, + "endNode": 82, + "properties": { + "startId": "ffffffff-bc25-f070-ffff-ffffca1d50f6", + "endId": "00000000-5516-da07-ffff-ffffcb1c39d7" + } + }, + { + "id": 119, + "type": "BB", + "startNode": 87, + "endNode": 227, + "properties": { + "startId": "ffffffff-bc25-f070-ffff-ffffca1d50f6", + "endId": "00000000-0000-0000-ffff-ffff9c7afc87", + "index": 1, + "overlaying": true + } + }, + { + "id": 120, + "type": "LANGUAGE", + "startNode": 87, + "endNode": 45, + "properties": { + "startId": "ffffffff-bc25-f070-ffff-ffffca1d50f6", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 121, + "type": "MEMORY_ADDRESS", + "startNode": 87, + "endNode": 232, + "properties": { + "startId": "ffffffff-bc25-f070-ffff-ffffca1d50f6", + "endId": "00000000-0000-0000-ffff-ffffbce2825c", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 122, + "type": "MEMORY_VALUE", + "startNode": 233, + "endNode": 87, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffe13ed42d", + "endId": "ffffffff-bc25-f070-ffff-ffffca1d50f6", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 123, + "type": "DFG", + "startNode": 88, + "endNode": 87, + "properties": { + "startId": "ffffffff-e9ce-636f-ffff-ffffbc25f070", + "endId": "ffffffff-bc25-f070-ffff-ffffca1d50f6", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 124, + "type": "EOG", + "startNode": 87, + "endNode": 88, + "properties": { + "startId": "ffffffff-bc25-f070-ffff-ffffca1d50f6", + "endId": "ffffffff-e9ce-636f-ffff-ffffbc25f070", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 125, + "type": "PDG", + "startNode": 87, + "endNode": 93, + "properties": { + "startId": "ffffffff-bc25-f070-ffff-ffffca1d50f6", + "endId": "ffffffff-e393-da33-0000-00006b2e93ec", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 126, + "type": "SCOPE", + "startNode": 87, + "endNode": 78, + "properties": { + "startId": "ffffffff-bc25-f070-ffff-ffffca1d50f6", + "endId": "00000000-0000-0000-0000-00004dc4db66" + } + }, + { + "id": 127, + "type": "TYPE", + "startNode": 87, + "endNode": 81, + "properties": { + "startId": "ffffffff-bc25-f070-ffff-ffffca1d50f6", + "endId": "00000000-0000-0000-0000-000000007d14" + } + }, + { + "id": 128, + "type": "REFERS_TO", + "startNode": 90, + "endNode": 84, + "properties": { + "startId": "ffffffff-e9ce-636f-ffff-ffffda2fa35f", + "endId": "00000000-5516-da07-ffff-ffff8b77f73f" + } + }, + { + "id": 129, + "type": "BB", + "startNode": 90, + "endNode": 227, + "properties": { + "startId": "ffffffff-e9ce-636f-ffff-ffffda2fa35f", + "endId": "00000000-0000-0000-ffff-ffff9c7afc87", + "index": 3, + "overlaying": true + } + }, + { + "id": 130, + "type": "LANGUAGE", + "startNode": 90, + "endNode": 45, + "properties": { + "startId": "ffffffff-e9ce-636f-ffff-ffffda2fa35f", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 131, + "type": "MEMORY_ADDRESS", + "startNode": 90, + "endNode": 230, + "properties": { + "startId": "ffffffff-e9ce-636f-ffff-ffffda2fa35f", + "endId": "00000000-0000-0000-ffff-fffffe95fbaf", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 132, + "type": "MEMORY_VALUE", + "startNode": 231, + "endNode": 90, + "properties": { + "startId": "00000000-0000-0000-ffff-ffff85bdfe86", + "endId": "ffffffff-e9ce-636f-ffff-ffffda2fa35f", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 133, + "type": "DFG", + "startNode": 84, + "endNode": 90, + "properties": { + "startId": "00000000-5516-da07-ffff-ffff8b77f73f", + "endId": "ffffffff-e9ce-636f-ffff-ffffda2fa35f", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 134, + "type": "EOG", + "startNode": 90, + "endNode": 91, + "properties": { + "startId": "ffffffff-e9ce-636f-ffff-ffffda2fa35f", + "endId": "ffffffff-e74e-facb-ffff-ffffe9ce636f", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 135, + "type": "PDG", + "startNode": 90, + "endNode": 88, + "properties": { + "startId": "ffffffff-e9ce-636f-ffff-ffffda2fa35f", + "endId": "ffffffff-e9ce-636f-ffff-ffffbc25f070", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 136, + "type": "SCOPE", + "startNode": 90, + "endNode": 78, + "properties": { + "startId": "ffffffff-e9ce-636f-ffff-ffffda2fa35f", + "endId": "00000000-0000-0000-0000-00004dc4db66" + } + }, + { + "id": 137, + "type": "TYPE", + "startNode": 90, + "endNode": 83, + "properties": { + "startId": "ffffffff-e9ce-636f-ffff-ffffda2fa35f", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 138, + "type": "RETURN_VALUE", + "startNode": 92, + "endNode": 93, + "properties": { + "startId": "ffffffff-e74e-facb-ffff-ffffe393da33", + "endId": "ffffffff-e393-da33-0000-00006b2e93ec" + } + }, + { + "id": 139, + "type": "RETURN_VALUES", + "startNode": 92, + "endNode": 93, + "properties": { + "startId": "ffffffff-e74e-facb-ffff-ffffe393da33", + "endId": "ffffffff-e393-da33-0000-00006b2e93ec", + "index": 0, + "overlaying": false + } + }, + { + "id": 140, + "type": "AST", + "startNode": 92, + "endNode": 93, + "properties": { + "startId": "ffffffff-e74e-facb-ffff-ffffe393da33", + "endId": "ffffffff-e393-da33-0000-00006b2e93ec" + } + }, + { + "id": 141, + "type": "BB", + "startNode": 92, + "endNode": 227, + "properties": { + "startId": "ffffffff-e74e-facb-ffff-ffffe393da33", + "endId": "00000000-0000-0000-ffff-ffff9c7afc87", + "index": 6, + "overlaying": true + } + }, + { + "id": 142, + "type": "LANGUAGE", + "startNode": 92, + "endNode": 45, + "properties": { + "startId": "ffffffff-e74e-facb-ffff-ffffe393da33", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 143, + "type": "DFG", + "startNode": 93, + "endNode": 92, + "properties": { + "startId": "ffffffff-e393-da33-0000-00006b2e93ec", + "endId": "ffffffff-e74e-facb-ffff-ffffe393da33", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 144, + "type": "PDG", + "startNode": 92, + "endNode": 75, + "properties": { + "startId": "ffffffff-e74e-facb-ffff-ffffe393da33", + "endId": "00000000-2050-f08d-0000-00005516da07", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 145, + "type": "SCOPE", + "startNode": 92, + "endNode": 78, + "properties": { + "startId": "ffffffff-e74e-facb-ffff-ffffe393da33", + "endId": "00000000-0000-0000-0000-00004dc4db66" + } + }, + { + "id": 146, + "type": "TYPE", + "startNode": 92, + "endNode": 67, + "properties": { + "startId": "ffffffff-e74e-facb-ffff-ffffe393da33", + "endId": "00000000-0000-0000-0000-000000000020" + } + }, + { + "id": 147, + "type": "REFERS_TO", + "startNode": 93, + "endNode": 82, + "properties": { + "startId": "ffffffff-e393-da33-0000-00006b2e93ec", + "endId": "00000000-5516-da07-ffff-ffffcb1c39d7" + } + }, + { + "id": 148, + "type": "BB", + "startNode": 93, + "endNode": 227, + "properties": { + "startId": "ffffffff-e393-da33-0000-00006b2e93ec", + "endId": "00000000-0000-0000-ffff-ffff9c7afc87", + "index": 5, + "overlaying": true + } + }, + { + "id": 149, + "type": "LANGUAGE", + "startNode": 93, + "endNode": 45, + "properties": { + "startId": "ffffffff-e393-da33-0000-00006b2e93ec", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 150, + "type": "MEMORY_ADDRESS", + "startNode": 93, + "endNode": 232, + "properties": { + "startId": "ffffffff-e393-da33-0000-00006b2e93ec", + "endId": "00000000-0000-0000-ffff-ffffbce2825c", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 151, + "type": "MEMORY_VALUE", + "startNode": 233, + "endNode": 93, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffe13ed42d", + "endId": "ffffffff-e393-da33-0000-00006b2e93ec", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 152, + "type": "DFG", + "startNode": 87, + "endNode": 93, + "properties": { + "startId": "ffffffff-bc25-f070-ffff-ffffca1d50f6", + "endId": "ffffffff-e393-da33-0000-00006b2e93ec", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 153, + "type": "EOG", + "startNode": 93, + "endNode": 92, + "properties": { + "startId": "ffffffff-e393-da33-0000-00006b2e93ec", + "endId": "ffffffff-e74e-facb-ffff-ffffe393da33", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 154, + "type": "PDG", + "startNode": 93, + "endNode": 92, + "properties": { + "startId": "ffffffff-e393-da33-0000-00006b2e93ec", + "endId": "ffffffff-e74e-facb-ffff-ffffe393da33", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 155, + "type": "SCOPE", + "startNode": 93, + "endNode": 78, + "properties": { + "startId": "ffffffff-e393-da33-0000-00006b2e93ec", + "endId": "00000000-0000-0000-0000-00004dc4db66" + } + }, + { + "id": 156, + "type": "TYPE", + "startNode": 93, + "endNode": 81, + "properties": { + "startId": "ffffffff-e393-da33-0000-00006b2e93ec", + "endId": "00000000-0000-0000-0000-000000007d14" + } + }, + { + "id": 157, + "type": "LANGUAGE", + "startNode": 84, + "endNode": 45, + "properties": { + "startId": "00000000-5516-da07-ffff-ffff8b77f73f", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 158, + "type": "MEMORY_ADDRESS", + "startNode": 84, + "endNode": 230, + "properties": { + "startId": "00000000-5516-da07-ffff-ffff8b77f73f", + "endId": "00000000-0000-0000-ffff-fffffe95fbaf", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 159, + "type": "MEMORY_VALUE", + "startNode": 231, + "endNode": 84, + "properties": { + "startId": "00000000-0000-0000-ffff-ffff85bdfe86", + "endId": "00000000-5516-da07-ffff-ffff8b77f73f", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 160, + "type": "MEMORY_VALUE", + "startNode": 107, + "endNode": 84, + "properties": { + "startId": "00000000-0cfb-febb-ffff-ffffb5ced55b", + "endId": "00000000-5516-da07-ffff-ffff8b77f73f", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 161, + "type": "DFG", + "startNode": 107, + "endNode": 84, + "properties": { + "startId": "00000000-0cfb-febb-ffff-ffffb5ced55b", + "endId": "00000000-5516-da07-ffff-ffff8b77f73f", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 162, + "type": "PDG", + "startNode": 84, + "endNode": 90, + "properties": { + "startId": "00000000-5516-da07-ffff-ffff8b77f73f", + "endId": "ffffffff-e9ce-636f-ffff-ffffda2fa35f", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 163, + "type": "SCOPE", + "startNode": 84, + "endNode": 78, + "properties": { + "startId": "00000000-5516-da07-ffff-ffff8b77f73f", + "endId": "00000000-0000-0000-0000-00004dc4db66" + } + }, + { + "id": 164, + "type": "TYPE", + "startNode": 84, + "endNode": 83, + "properties": { + "startId": "00000000-5516-da07-ffff-ffff8b77f73f", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 165, + "type": "USAGE", + "startNode": 84, + "endNode": 90, + "properties": { + "startId": "00000000-5516-da07-ffff-ffff8b77f73f", + "endId": "ffffffff-e9ce-636f-ffff-ffffda2fa35f", + "access": "READ", + "index": 0, + "overlaying": false + } + }, + { + "id": 166, + "type": "LANGUAGE", + "startNode": 82, + "endNode": 45, + "properties": { + "startId": "00000000-5516-da07-ffff-ffffcb1c39d7", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 167, + "type": "MEMORY_ADDRESS", + "startNode": 82, + "endNode": 232, + "properties": { + "startId": "00000000-5516-da07-ffff-ffffcb1c39d7", + "endId": "00000000-0000-0000-ffff-ffffbce2825c", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 168, + "type": "SCOPE", + "startNode": 82, + "endNode": 78, + "properties": { + "startId": "00000000-5516-da07-ffff-ffffcb1c39d7", + "endId": "00000000-0000-0000-0000-00004dc4db66" + } + }, + { + "id": 169, + "type": "TYPE", + "startNode": 82, + "endNode": 81, + "properties": { + "startId": "00000000-5516-da07-ffff-ffffcb1c39d7", + "endId": "00000000-0000-0000-0000-000000007d14" + } + }, + { + "id": 170, + "type": "USAGE", + "startNode": 82, + "endNode": 87, + "properties": { + "startId": "00000000-5516-da07-ffff-ffffcb1c39d7", + "endId": "ffffffff-bc25-f070-ffff-ffffca1d50f6", + "access": "READ", + "index": 0, + "overlaying": false + } + }, + { + "id": 171, + "type": "USAGE", + "startNode": 82, + "endNode": 93, + "properties": { + "startId": "00000000-5516-da07-ffff-ffffcb1c39d7", + "endId": "ffffffff-e393-da33-0000-00006b2e93ec", + "access": "READ", + "index": 1, + "overlaying": false + } + }, + { + "id": 172, + "type": "BB", + "startNode": 74, + "endNode": 218, + "properties": { + "startId": "00000000-2050-f08d-ffff-ffff8e3bfa01", + "endId": "00000000-0000-0000-ffff-ffffc3c385a1", + "index": 1, + "overlaying": true + } + }, + { + "id": 173, + "type": "LANGUAGE", + "startNode": 74, + "endNode": 45, + "properties": { + "startId": "00000000-2050-f08d-ffff-ffff8e3bfa01", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 174, + "type": "SCOPE", + "startNode": 74, + "endNode": 73, + "properties": { + "startId": "00000000-2050-f08d-ffff-ffff8e3bfa01", + "endId": "00000000-0000-0000-ffff-fffff4fe3511" + } + }, + { + "id": 175, + "type": "TYPE", + "startNode": 74, + "endNode": 50, + "properties": { + "startId": "00000000-2050-f08d-ffff-ffff8e3bfa01", + "endId": "00000000-0000-0000-0000-000000007d14" + } + }, + { + "id": 176, + "type": "BODY", + "startNode": 94, + "endNode": 101, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "ffffffff-a418-65eb-ffff-ffffe0b531a7", + "overlaying": false + } + }, + { + "id": 177, + "type": "FIRST_BASIC_BLOCK", + "startNode": 94, + "endNode": 219, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "00000000-0000-0000-ffff-ffffcfdba135" + } + }, + { + "id": 178, + "type": "PARAMETERS", + "startNode": 94, + "endNode": 99, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "ffffffff-a418-65eb-ffff-ffffe044e5b1", + "index": 0, + "overlaying": false + } + }, + { + "id": 179, + "type": "RETURN_TYPES", + "startNode": 94, + "endNode": 96, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 180, + "type": "SECONDARY_TYPES", + "startNode": 94, + "endNode": 96, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 181, + "type": "SECONDARY_TYPES", + "startNode": 94, + "endNode": 98, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 182, + "type": "SIGNATURE_TYPES", + "startNode": 94, + "endNode": 98, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 183, + "type": "AST", + "startNode": 94, + "endNode": 101, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "ffffffff-a418-65eb-ffff-ffffe0b531a7" + } + }, + { + "id": 184, + "type": "AST", + "startNode": 94, + "endNode": 99, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "ffffffff-a418-65eb-ffff-ffffe044e5b1" + } + }, + { + "id": 185, + "type": "BB", + "startNode": 94, + "endNode": 219, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "00000000-0000-0000-ffff-ffffcfdba135", + "index": 0, + "overlaying": true + } + }, + { + "id": 186, + "type": "DECLARING_SCOPE", + "startNode": 94, + "endNode": 95, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 187, + "type": "LANGUAGE", + "startNode": 94, + "endNode": 45, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 188, + "type": "MEMORY_ADDRESS", + "startNode": 94, + "endNode": 244, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "00000000-0000-0000-ffff-fffff54e9e46", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 189, + "type": "MEMORY_VALUE_USAGE", + "startNode": 94, + "endNode": 181, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "00000000-38ed-9433-0000-00007631fd84", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 190, + "type": "CDG", + "startNode": 94, + "endNode": 102, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "ffffffff-e0b5-31a7-0000-000030db11e0", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 191, + "type": "CDG", + "startNode": 94, + "endNode": 197, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "ffffffff-e348-5ace-ffff-fffffd5d553d", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 192, + "type": "CDG", + "startNode": 94, + "endNode": 103, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "ffffffff-e348-5ace-ffff-ffffef513bfc", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 193, + "type": "CDG", + "startNode": 94, + "endNode": 107, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "00000000-0cfb-febb-ffff-ffffb5ced55b", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 194, + "type": "CDG", + "startNode": 94, + "endNode": 212, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "ffffffff-e348-5ace-0000-00000cfbfebb", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 195, + "type": "CDG", + "startNode": 94, + "endNode": 108, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "ffffffff-e0b5-31a7-ffff-ffffe3485ace", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 196, + "type": "CDG", + "startNode": 94, + "endNode": 198, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "ffffffff-e356-ea6f-0000-00004454d05a", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 197, + "type": "CDG", + "startNode": 94, + "endNode": 109, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "ffffffff-e356-ea6f-ffff-ffff8749247f", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 198, + "type": "CDG", + "startNode": 94, + "endNode": 110, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "ffffffff-a6fd-5622-ffff-fffffaee3c2b", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 199, + "type": "CDG", + "startNode": 94, + "endNode": 111, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "ffffffff-9a07-5d1e-ffff-ffffa6fd5622", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 200, + "type": "CDG", + "startNode": 94, + "endNode": 115, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "ffffffff-9a07-5d1e-ffff-ffff9eefa957", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 201, + "type": "CDG", + "startNode": 94, + "endNode": 113, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "ffffffff-e356-ea6f-ffff-ffff9a075d1e", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 202, + "type": "CDG", + "startNode": 94, + "endNode": 116, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "ffffffff-e0b5-31a7-ffff-ffffe356ea6f", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 203, + "type": "CDG", + "startNode": 94, + "endNode": 137, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "ffffffff-e0b5-31a7-ffff-ffff8b4eacdb", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 204, + "type": "CDG", + "startNode": 94, + "endNode": 141, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "ffffffff-8d1a-9d77-ffff-ffff93af1981", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 205, + "type": "CDG", + "startNode": 94, + "endNode": 139, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 206, + "type": "DFG", + "startNode": 162, + "endNode": 94, + "properties": { + "startId": "ffffffff-e871-4aa1-ffff-ffffdc094ac0", + "endId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 207, + "type": "DFG", + "startNode": 169, + "endNode": 94, + "properties": { + "startId": "ffffffff-e0b5-31a7-0000-00000af97fa8", + "endId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 208, + "type": "DFG", + "startNode": 143, + "endNode": 94, + "properties": { + "startId": "ffffffff-e826-ab00-ffff-ffffd2fff641", + "endId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 209, + "type": "EOG", + "startNode": 94, + "endNode": 102, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "ffffffff-e0b5-31a7-0000-000030db11e0", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 210, + "type": "PDG", + "startNode": 94, + "endNode": 102, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "ffffffff-e0b5-31a7-0000-000030db11e0", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 211, + "type": "PDG", + "startNode": 94, + "endNode": 108, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "ffffffff-e0b5-31a7-ffff-ffffe3485ace", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 212, + "type": "PDG", + "startNode": 94, + "endNode": 197, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "ffffffff-e348-5ace-ffff-fffffd5d553d", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 213, + "type": "PDG", + "startNode": 94, + "endNode": 182, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "00000000-117a-269a-0000-000038ed9433", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 214, + "type": "PDG", + "startNode": 94, + "endNode": 115, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "ffffffff-9a07-5d1e-ffff-ffff9eefa957", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 215, + "type": "PDG", + "startNode": 94, + "endNode": 137, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "ffffffff-e0b5-31a7-ffff-ffff8b4eacdb", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 216, + "type": "PDG", + "startNode": 94, + "endNode": 141, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "ffffffff-8d1a-9d77-ffff-ffff93af1981", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 217, + "type": "PDG", + "startNode": 94, + "endNode": 116, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "ffffffff-e0b5-31a7-ffff-ffffe356ea6f", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 218, + "type": "PDG", + "startNode": 94, + "endNode": 103, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "ffffffff-e348-5ace-ffff-ffffef513bfc", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 219, + "type": "PDG", + "startNode": 94, + "endNode": 198, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "ffffffff-e356-ea6f-0000-00004454d05a", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 220, + "type": "PDG", + "startNode": 94, + "endNode": 107, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "00000000-0cfb-febb-ffff-ffffb5ced55b", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 221, + "type": "PDG", + "startNode": 94, + "endNode": 110, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "ffffffff-a6fd-5622-ffff-fffffaee3c2b", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 222, + "type": "PDG", + "startNode": 94, + "endNode": 113, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "ffffffff-e356-ea6f-ffff-ffff9a075d1e", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 223, + "type": "PDG", + "startNode": 94, + "endNode": 139, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 224, + "type": "PDG", + "startNode": 94, + "endNode": 109, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "ffffffff-e356-ea6f-ffff-ffff8749247f", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 225, + "type": "PDG", + "startNode": 94, + "endNode": 212, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "ffffffff-e348-5ace-0000-00000cfbfebb", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 226, + "type": "PDG", + "startNode": 94, + "endNode": 111, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "ffffffff-9a07-5d1e-ffff-ffffa6fd5622", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 227, + "type": "PDG", + "startNode": 94, + "endNode": 181, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "00000000-38ed-9433-0000-00007631fd84", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 228, + "type": "SCOPE", + "startNode": 94, + "endNode": 63, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "00000000-0000-0000-ffff-ffffd8828539" + } + }, + { + "id": 229, + "type": "TYPE", + "startNode": 94, + "endNode": 97, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 230, + "type": "USAGE", + "startNode": 94, + "endNode": 181, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "00000000-38ed-9433-0000-00007631fd84", + "access": "READ", + "index": 0, + "overlaying": false + } + }, + { + "id": 231, + "type": "STATEMENTS", + "startNode": 101, + "endNode": 102, + "properties": { + "startId": "ffffffff-a418-65eb-ffff-ffffe0b531a7", + "endId": "ffffffff-e0b5-31a7-0000-000030db11e0", + "index": 0, + "overlaying": false + } + }, + { + "id": 232, + "type": "STATEMENTS", + "startNode": 101, + "endNode": 108, + "properties": { + "startId": "ffffffff-a418-65eb-ffff-ffffe0b531a7", + "endId": "ffffffff-e0b5-31a7-ffff-ffffe3485ace", + "index": 1, + "overlaying": false + } + }, + { + "id": 233, + "type": "STATEMENTS", + "startNode": 101, + "endNode": 116, + "properties": { + "startId": "ffffffff-a418-65eb-ffff-ffffe0b531a7", + "endId": "ffffffff-e0b5-31a7-ffff-ffffe356ea6f", + "index": 2, + "overlaying": false + } + }, + { + "id": 234, + "type": "STATEMENTS", + "startNode": 101, + "endNode": 137, + "properties": { + "startId": "ffffffff-a418-65eb-ffff-ffffe0b531a7", + "endId": "ffffffff-e0b5-31a7-ffff-ffff8b4eacdb", + "index": 3, + "overlaying": false + } + }, + { + "id": 235, + "type": "STATEMENTS", + "startNode": 101, + "endNode": 138, + "properties": { + "startId": "ffffffff-a418-65eb-ffff-ffffe0b531a7", + "endId": "ffffffff-e0b5-31a7-0000-0000337f71be", + "index": 4, + "overlaying": false + } + }, + { + "id": 236, + "type": "STATEMENTS", + "startNode": 101, + "endNode": 151, + "properties": { + "startId": "ffffffff-a418-65eb-ffff-ffffe0b531a7", + "endId": "ffffffff-e0b5-31a7-ffff-ffffe3f28aa4", + "index": 5, + "overlaying": false + } + }, + { + "id": 237, + "type": "STATEMENTS", + "startNode": 101, + "endNode": 152, + "properties": { + "startId": "ffffffff-a418-65eb-ffff-ffffe0b531a7", + "endId": "ffffffff-e0b5-31a7-ffff-ffffc2ea6abd", + "index": 6, + "overlaying": false + } + }, + { + "id": 238, + "type": "STATEMENTS", + "startNode": 101, + "endNode": 169, + "properties": { + "startId": "ffffffff-a418-65eb-ffff-ffffe0b531a7", + "endId": "ffffffff-e0b5-31a7-0000-00000af97fa8", + "index": 7, + "overlaying": false + } + }, + { + "id": 239, + "type": "AST", + "startNode": 101, + "endNode": 102, + "properties": { + "startId": "ffffffff-a418-65eb-ffff-ffffe0b531a7", + "endId": "ffffffff-e0b5-31a7-0000-000030db11e0" + } + }, + { + "id": 240, + "type": "AST", + "startNode": 101, + "endNode": 108, + "properties": { + "startId": "ffffffff-a418-65eb-ffff-ffffe0b531a7", + "endId": "ffffffff-e0b5-31a7-ffff-ffffe3485ace" + } + }, + { + "id": 241, + "type": "AST", + "startNode": 101, + "endNode": 116, + "properties": { + "startId": "ffffffff-a418-65eb-ffff-ffffe0b531a7", + "endId": "ffffffff-e0b5-31a7-ffff-ffffe356ea6f" + } + }, + { + "id": 242, + "type": "AST", + "startNode": 101, + "endNode": 137, + "properties": { + "startId": "ffffffff-a418-65eb-ffff-ffffe0b531a7", + "endId": "ffffffff-e0b5-31a7-ffff-ffff8b4eacdb" + } + }, + { + "id": 243, + "type": "AST", + "startNode": 101, + "endNode": 138, + "properties": { + "startId": "ffffffff-a418-65eb-ffff-ffffe0b531a7", + "endId": "ffffffff-e0b5-31a7-0000-0000337f71be" + } + }, + { + "id": 244, + "type": "AST", + "startNode": 101, + "endNode": 151, + "properties": { + "startId": "ffffffff-a418-65eb-ffff-ffffe0b531a7", + "endId": "ffffffff-e0b5-31a7-ffff-ffffe3f28aa4" + } + }, + { + "id": 245, + "type": "AST", + "startNode": 101, + "endNode": 152, + "properties": { + "startId": "ffffffff-a418-65eb-ffff-ffffe0b531a7", + "endId": "ffffffff-e0b5-31a7-ffff-ffffc2ea6abd" + } + }, + { + "id": 246, + "type": "AST", + "startNode": 101, + "endNode": 169, + "properties": { + "startId": "ffffffff-a418-65eb-ffff-ffffe0b531a7", + "endId": "ffffffff-e0b5-31a7-0000-00000af97fa8" + } + }, + { + "id": 247, + "type": "LANGUAGE", + "startNode": 101, + "endNode": 45, + "properties": { + "startId": "ffffffff-a418-65eb-ffff-ffffe0b531a7", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 248, + "type": "SCOPE", + "startNode": 101, + "endNode": 95, + "properties": { + "startId": "ffffffff-a418-65eb-ffff-ffffe0b531a7", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 249, + "type": "TYPE", + "startNode": 101, + "endNode": 67, + "properties": { + "startId": "ffffffff-a418-65eb-ffff-ffffe0b531a7", + "endId": "00000000-0000-0000-0000-000000000020" + } + }, + { + "id": 250, + "type": "BB", + "startNode": 102, + "endNode": 219, + "properties": { + "startId": "ffffffff-e0b5-31a7-0000-000030db11e0", + "endId": "00000000-0000-0000-ffff-ffffcfdba135", + "index": 1, + "overlaying": true + } + }, + { + "id": 251, + "type": "LANGUAGE", + "startNode": 102, + "endNode": 45, + "properties": { + "startId": "ffffffff-e0b5-31a7-0000-000030db11e0", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 252, + "type": "EOG", + "startNode": 102, + "endNode": 197, + "properties": { + "startId": "ffffffff-e0b5-31a7-0000-000030db11e0", + "endId": "ffffffff-e348-5ace-ffff-fffffd5d553d", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 253, + "type": "SCOPE", + "startNode": 102, + "endNode": 95, + "properties": { + "startId": "ffffffff-e0b5-31a7-0000-000030db11e0", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 254, + "type": "TYPE", + "startNode": 102, + "endNode": 50, + "properties": { + "startId": "ffffffff-e0b5-31a7-0000-000030db11e0", + "endId": "00000000-0000-0000-0000-000000007d14" + } + }, + { + "id": 255, + "type": "DECLARATIONS", + "startNode": 108, + "endNode": 197, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffe3485ace", + "endId": "ffffffff-e348-5ace-ffff-fffffd5d553d", + "index": 0, + "overlaying": false + } + }, + { + "id": 256, + "type": "LHS", + "startNode": 108, + "endNode": 103, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffe3485ace", + "endId": "ffffffff-e348-5ace-ffff-ffffef513bfc", + "index": 0, + "overlaying": false + } + }, + { + "id": 257, + "type": "RHS", + "startNode": 108, + "endNode": 212, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffe3485ace", + "endId": "ffffffff-e348-5ace-0000-00000cfbfebb", + "index": 0, + "overlaying": false + } + }, + { + "id": 258, + "type": "AST", + "startNode": 108, + "endNode": 103, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffe3485ace", + "endId": "ffffffff-e348-5ace-ffff-ffffef513bfc" + } + }, + { + "id": 259, + "type": "AST", + "startNode": 108, + "endNode": 212, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffe3485ace", + "endId": "ffffffff-e348-5ace-0000-00000cfbfebb" + } + }, + { + "id": 260, + "type": "AST", + "startNode": 108, + "endNode": 197, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffe3485ace", + "endId": "ffffffff-e348-5ace-ffff-fffffd5d553d" + } + }, + { + "id": 261, + "type": "BB", + "startNode": 108, + "endNode": 219, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffe3485ace", + "endId": "00000000-0000-0000-ffff-ffffcfdba135", + "index": 6, + "overlaying": true + } + }, + { + "id": 262, + "type": "LANGUAGE", + "startNode": 108, + "endNode": 45, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffe3485ace", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 263, + "type": "EOG", + "startNode": 108, + "endNode": 198, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffe3485ace", + "endId": "ffffffff-e356-ea6f-0000-00004454d05a", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 264, + "type": "SCOPE", + "startNode": 108, + "endNode": 95, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffe3485ace", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 265, + "type": "TYPE", + "startNode": 108, + "endNode": 67, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffe3485ace", + "endId": "00000000-0000-0000-0000-000000000020" + } + }, + { + "id": 266, + "type": "REFERS_TO", + "startNode": 103, + "endNode": 197, + "properties": { + "startId": "ffffffff-e348-5ace-ffff-ffffef513bfc", + "endId": "ffffffff-e348-5ace-ffff-fffffd5d553d" + } + }, + { + "id": 267, + "type": "BB", + "startNode": 103, + "endNode": 219, + "properties": { + "startId": "ffffffff-e348-5ace-ffff-ffffef513bfc", + "endId": "00000000-0000-0000-ffff-ffffcfdba135", + "index": 3, + "overlaying": true + } + }, + { + "id": 268, + "type": "LANGUAGE", + "startNode": 103, + "endNode": 45, + "properties": { + "startId": "ffffffff-e348-5ace-ffff-ffffef513bfc", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 269, + "type": "MEMORY_ADDRESS", + "startNode": 103, + "endNode": 239, + "properties": { + "startId": "ffffffff-e348-5ace-ffff-ffffef513bfc", + "endId": "00000000-0000-0000-ffff-ffffefd83263", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 270, + "type": "DFG", + "startNode": 212, + "endNode": 103, + "properties": { + "startId": "ffffffff-e348-5ace-0000-00000cfbfebb", + "endId": "ffffffff-e348-5ace-ffff-ffffef513bfc", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 271, + "type": "DFG", + "startNode": 233, + "endNode": 103, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffe13ed42d", + "endId": "ffffffff-e348-5ace-ffff-ffffef513bfc", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 272, + "type": "EOG", + "startNode": 103, + "endNode": 107, + "properties": { + "startId": "ffffffff-e348-5ace-ffff-ffffef513bfc", + "endId": "00000000-0cfb-febb-ffff-ffffb5ced55b", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 273, + "type": "PDG", + "startNode": 103, + "endNode": 197, + "properties": { + "startId": "ffffffff-e348-5ace-ffff-ffffef513bfc", + "endId": "ffffffff-e348-5ace-ffff-fffffd5d553d", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 274, + "type": "SCOPE", + "startNode": 103, + "endNode": 95, + "properties": { + "startId": "ffffffff-e348-5ace-ffff-ffffef513bfc", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 275, + "type": "TYPE", + "startNode": 103, + "endNode": 211, + "properties": { + "startId": "ffffffff-e348-5ace-ffff-ffffef513bfc", + "endId": "00000000-0000-0000-0000-000000007d14" + } + }, + { + "id": 276, + "type": "CONSTRUCTOR", + "startNode": 212, + "endNode": 75, + "properties": { + "startId": "ffffffff-e348-5ace-0000-00000cfbfebb", + "endId": "00000000-2050-f08d-0000-00005516da07" + } + }, + { + "id": 277, + "type": "INSTANTIATES", + "startNode": 212, + "endNode": 72, + "properties": { + "startId": "ffffffff-e348-5ace-0000-00000cfbfebb", + "endId": "ffffffff-a3b5-5fd5-0000-00002050f08d" + } + }, + { + "id": 278, + "type": "ARGUMENTS", + "startNode": 212, + "endNode": 107, + "properties": { + "startId": "ffffffff-e348-5ace-0000-00000cfbfebb", + "endId": "00000000-0cfb-febb-ffff-ffffb5ced55b", + "index": 0, + "overlaying": false + } + }, + { + "id": 279, + "type": "AST", + "startNode": 212, + "endNode": 107, + "properties": { + "startId": "ffffffff-e348-5ace-0000-00000cfbfebb", + "endId": "00000000-0cfb-febb-ffff-ffffb5ced55b" + } + }, + { + "id": 280, + "type": "AST", + "startNode": 212, + "endNode": 104, + "properties": { + "startId": "ffffffff-e348-5ace-0000-00000cfbfebb", + "endId": "00000000-0cfb-febb-0000-00004204bc92" + } + }, + { + "id": 281, + "type": "BB", + "startNode": 212, + "endNode": 219, + "properties": { + "startId": "ffffffff-e348-5ace-0000-00000cfbfebb", + "endId": "00000000-0000-0000-ffff-ffffcfdba135", + "index": 5, + "overlaying": true + } + }, + { + "id": 282, + "type": "INVOKES", + "startNode": 212, + "endNode": 75, + "properties": { + "startId": "ffffffff-e348-5ace-0000-00000cfbfebb", + "endId": "00000000-2050-f08d-0000-00005516da07", + "dynamicInvoke": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 283, + "type": "LANGUAGE", + "startNode": 212, + "endNode": 45, + "properties": { + "startId": "ffffffff-e348-5ace-0000-00000cfbfebb", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 284, + "type": "DFG", + "startNode": 75, + "endNode": 212, + "properties": { + "startId": "00000000-2050-f08d-0000-00005516da07", + "endId": "ffffffff-e348-5ace-0000-00000cfbfebb", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 285, + "type": "EOG", + "startNode": 212, + "endNode": 108, + "properties": { + "startId": "ffffffff-e348-5ace-0000-00000cfbfebb", + "endId": "ffffffff-e0b5-31a7-ffff-ffffe3485ace", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 286, + "type": "PDG", + "startNode": 212, + "endNode": 103, + "properties": { + "startId": "ffffffff-e348-5ace-0000-00000cfbfebb", + "endId": "ffffffff-e348-5ace-ffff-ffffef513bfc", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 287, + "type": "OPERATOR_ARGUMENTS", + "startNode": 212, + "endNode": 107, + "properties": { + "startId": "ffffffff-e348-5ace-0000-00000cfbfebb", + "endId": "00000000-0cfb-febb-ffff-ffffb5ced55b" + } + }, + { + "id": 288, + "type": "OPERATOR_BASE", + "startNode": 212, + "endNode": 104, + "properties": { + "startId": "ffffffff-e348-5ace-0000-00000cfbfebb", + "endId": "00000000-0cfb-febb-0000-00004204bc92" + } + }, + { + "id": 289, + "type": "SCOPE", + "startNode": 212, + "endNode": 95, + "properties": { + "startId": "ffffffff-e348-5ace-0000-00000cfbfebb", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 290, + "type": "SECONDARY_TYPES", + "startNode": 212, + "endNode": 50, + "properties": { + "startId": "ffffffff-e348-5ace-0000-00000cfbfebb", + "endId": "00000000-0000-0000-0000-000000007d14" + } + }, + { + "id": 291, + "type": "SIGNATURE", + "startNode": 212, + "endNode": 50, + "properties": { + "startId": "ffffffff-e348-5ace-0000-00000cfbfebb", + "endId": "00000000-0000-0000-0000-000000007d14" + } + }, + { + "id": 292, + "type": "TYPE", + "startNode": 212, + "endNode": 79, + "properties": { + "startId": "ffffffff-e348-5ace-0000-00000cfbfebb", + "endId": "00000000-0000-0000-0000-000000007d14" + } + }, + { + "id": 293, + "type": "BB", + "startNode": 107, + "endNode": 219, + "properties": { + "startId": "00000000-0cfb-febb-ffff-ffffb5ced55b", + "endId": "00000000-0000-0000-ffff-ffffcfdba135", + "index": 4, + "overlaying": true + } + }, + { + "id": 294, + "type": "LANGUAGE", + "startNode": 107, + "endNode": 45, + "properties": { + "startId": "00000000-0cfb-febb-ffff-ffffb5ced55b", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 295, + "type": "MEMORY_VALUE_USAGE", + "startNode": 107, + "endNode": 84, + "properties": { + "startId": "00000000-0cfb-febb-ffff-ffffb5ced55b", + "endId": "00000000-5516-da07-ffff-ffff8b77f73f", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 296, + "type": "EOG", + "startNode": 107, + "endNode": 212, + "properties": { + "startId": "00000000-0cfb-febb-ffff-ffffb5ced55b", + "endId": "ffffffff-e348-5ace-0000-00000cfbfebb", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 297, + "type": "PDG", + "startNode": 107, + "endNode": 84, + "properties": { + "startId": "00000000-0cfb-febb-ffff-ffffb5ced55b", + "endId": "00000000-5516-da07-ffff-ffff8b77f73f", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 298, + "type": "SCOPE", + "startNode": 107, + "endNode": 95, + "properties": { + "startId": "00000000-0cfb-febb-ffff-ffffb5ced55b", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 299, + "type": "TYPE", + "startNode": 107, + "endNode": 50, + "properties": { + "startId": "00000000-0cfb-febb-ffff-ffffb5ced55b", + "endId": "00000000-0000-0000-0000-000000007d14" + } + }, + { + "id": 300, + "type": "LANGUAGE", + "startNode": 104, + "endNode": 45, + "properties": { + "startId": "00000000-0cfb-febb-0000-00004204bc92", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 301, + "type": "SCOPE", + "startNode": 104, + "endNode": 95, + "properties": { + "startId": "00000000-0cfb-febb-0000-00004204bc92", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 302, + "type": "TYPE", + "startNode": 104, + "endNode": 67, + "properties": { + "startId": "00000000-0cfb-febb-0000-00004204bc92", + "endId": "00000000-0000-0000-0000-000000000020" + } + }, + { + "id": 303, + "type": "BB", + "startNode": 197, + "endNode": 219, + "properties": { + "startId": "ffffffff-e348-5ace-ffff-fffffd5d553d", + "endId": "00000000-0000-0000-ffff-ffffcfdba135", + "index": 2, + "overlaying": true + } + }, + { + "id": 304, + "type": "LANGUAGE", + "startNode": 197, + "endNode": 45, + "properties": { + "startId": "ffffffff-e348-5ace-ffff-fffffd5d553d", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 305, + "type": "MEMORY_ADDRESS", + "startNode": 197, + "endNode": 239, + "properties": { + "startId": "ffffffff-e348-5ace-ffff-fffffd5d553d", + "endId": "00000000-0000-0000-ffff-ffffefd83263", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 306, + "type": "DFG", + "startNode": 103, + "endNode": 197, + "properties": { + "startId": "ffffffff-e348-5ace-ffff-ffffef513bfc", + "endId": "ffffffff-e348-5ace-ffff-fffffd5d553d", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 307, + "type": "EOG", + "startNode": 197, + "endNode": 103, + "properties": { + "startId": "ffffffff-e348-5ace-ffff-fffffd5d553d", + "endId": "ffffffff-e348-5ace-ffff-ffffef513bfc", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 308, + "type": "PDG", + "startNode": 197, + "endNode": 134, + "properties": { + "startId": "ffffffff-e348-5ace-ffff-fffffd5d553d", + "endId": "00000000-052e-f17c-0000-000042985aa9", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 309, + "type": "PDG", + "startNode": 197, + "endNode": 133, + "properties": { + "startId": "ffffffff-e348-5ace-ffff-fffffd5d553d", + "endId": "00000000-4298-5aa9-0000-000018b3329a", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 310, + "type": "SCOPE", + "startNode": 197, + "endNode": 95, + "properties": { + "startId": "ffffffff-e348-5ace-ffff-fffffd5d553d", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 311, + "type": "TYPE", + "startNode": 197, + "endNode": 211, + "properties": { + "startId": "ffffffff-e348-5ace-ffff-fffffd5d553d", + "endId": "00000000-0000-0000-0000-000000007d14" + } + }, + { + "id": 312, + "type": "USAGE", + "startNode": 197, + "endNode": 103, + "properties": { + "startId": "ffffffff-e348-5ace-ffff-fffffd5d553d", + "endId": "ffffffff-e348-5ace-ffff-ffffef513bfc", + "access": "WRITE", + "index": 0, + "overlaying": false + } + }, + { + "id": 313, + "type": "USAGE", + "startNode": 197, + "endNode": 133, + "properties": { + "startId": "ffffffff-e348-5ace-ffff-fffffd5d553d", + "endId": "00000000-4298-5aa9-0000-000018b3329a", + "access": "READ", + "index": 1, + "overlaying": false + } + }, + { + "id": 314, + "type": "DECLARATIONS", + "startNode": 116, + "endNode": 198, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffe356ea6f", + "endId": "ffffffff-e356-ea6f-0000-00004454d05a", + "index": 0, + "overlaying": false + } + }, + { + "id": 315, + "type": "LHS", + "startNode": 116, + "endNode": 109, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffe356ea6f", + "endId": "ffffffff-e356-ea6f-ffff-ffff8749247f", + "index": 0, + "overlaying": false + } + }, + { + "id": 316, + "type": "RHS", + "startNode": 116, + "endNode": 113, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffe356ea6f", + "endId": "ffffffff-e356-ea6f-ffff-ffff9a075d1e", + "index": 0, + "overlaying": false + } + }, + { + "id": 317, + "type": "AST", + "startNode": 116, + "endNode": 109, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffe356ea6f", + "endId": "ffffffff-e356-ea6f-ffff-ffff8749247f" + } + }, + { + "id": 318, + "type": "AST", + "startNode": 116, + "endNode": 113, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffe356ea6f", + "endId": "ffffffff-e356-ea6f-ffff-ffff9a075d1e" + } + }, + { + "id": 319, + "type": "AST", + "startNode": 116, + "endNode": 198, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffe356ea6f", + "endId": "ffffffff-e356-ea6f-0000-00004454d05a" + } + }, + { + "id": 320, + "type": "BB", + "startNode": 116, + "endNode": 219, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffe356ea6f", + "endId": "00000000-0000-0000-ffff-ffffcfdba135", + "index": 13, + "overlaying": true + } + }, + { + "id": 321, + "type": "LANGUAGE", + "startNode": 116, + "endNode": 45, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffe356ea6f", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 322, + "type": "EOG", + "startNode": 116, + "endNode": 137, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffe356ea6f", + "endId": "ffffffff-e0b5-31a7-ffff-ffff8b4eacdb", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 323, + "type": "SCOPE", + "startNode": 116, + "endNode": 95, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffe356ea6f", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 324, + "type": "TYPE", + "startNode": 116, + "endNode": 67, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffe356ea6f", + "endId": "00000000-0000-0000-0000-000000000020" + } + }, + { + "id": 325, + "type": "REFERS_TO", + "startNode": 109, + "endNode": 198, + "properties": { + "startId": "ffffffff-e356-ea6f-ffff-ffff8749247f", + "endId": "ffffffff-e356-ea6f-0000-00004454d05a" + } + }, + { + "id": 326, + "type": "BB", + "startNode": 109, + "endNode": 219, + "properties": { + "startId": "ffffffff-e356-ea6f-ffff-ffff8749247f", + "endId": "00000000-0000-0000-ffff-ffffcfdba135", + "index": 8, + "overlaying": true + } + }, + { + "id": 327, + "type": "LANGUAGE", + "startNode": 109, + "endNode": 45, + "properties": { + "startId": "ffffffff-e356-ea6f-ffff-ffff8749247f", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 328, + "type": "MEMORY_ADDRESS", + "startNode": 109, + "endNode": 247, + "properties": { + "startId": "ffffffff-e356-ea6f-ffff-ffff8749247f", + "endId": "00000000-0000-0000-0000-000036cf263d", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 329, + "type": "MEMORY_VALUE", + "startNode": 249, + "endNode": 109, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffe7ea92ab", + "endId": "ffffffff-e356-ea6f-ffff-ffff8749247f", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 330, + "type": "DFG", + "startNode": 113, + "endNode": 109, + "properties": { + "startId": "ffffffff-e356-ea6f-ffff-ffff9a075d1e", + "endId": "ffffffff-e356-ea6f-ffff-ffff8749247f", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 331, + "type": "EOG", + "startNode": 109, + "endNode": 110, + "properties": { + "startId": "ffffffff-e356-ea6f-ffff-ffff8749247f", + "endId": "ffffffff-a6fd-5622-ffff-fffffaee3c2b", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 332, + "type": "PDG", + "startNode": 109, + "endNode": 141, + "properties": { + "startId": "ffffffff-e356-ea6f-ffff-ffff8749247f", + "endId": "ffffffff-8d1a-9d77-ffff-ffff93af1981", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 333, + "type": "PDG", + "startNode": 109, + "endNode": 150, + "properties": { + "startId": "ffffffff-e356-ea6f-ffff-ffff8749247f", + "endId": "ffffffff-972d-b574-ffff-ffffbb235619", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 334, + "type": "SCOPE", + "startNode": 109, + "endNode": 95, + "properties": { + "startId": "ffffffff-e356-ea6f-ffff-ffff8749247f", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 335, + "type": "TYPE", + "startNode": 109, + "endNode": 67, + "properties": { + "startId": "ffffffff-e356-ea6f-ffff-ffff8749247f", + "endId": "00000000-0000-0000-0000-000000000020" + } + }, + { + "id": 336, + "type": "BASE", + "startNode": 113, + "endNode": 110, + "properties": { + "startId": "ffffffff-e356-ea6f-ffff-ffff9a075d1e", + "endId": "ffffffff-a6fd-5622-ffff-fffffaee3c2b" + } + }, + { + "id": 337, + "type": "ARGUMENTS", + "startNode": 113, + "endNode": 115, + "properties": { + "startId": "ffffffff-e356-ea6f-ffff-ffff9a075d1e", + "endId": "ffffffff-9a07-5d1e-ffff-ffff9eefa957", + "index": 0, + "overlaying": false + } + }, + { + "id": 338, + "type": "AST", + "startNode": 113, + "endNode": 115, + "properties": { + "startId": "ffffffff-e356-ea6f-ffff-ffff9a075d1e", + "endId": "ffffffff-9a07-5d1e-ffff-ffff9eefa957" + } + }, + { + "id": 339, + "type": "AST", + "startNode": 113, + "endNode": 111, + "properties": { + "startId": "ffffffff-e356-ea6f-ffff-ffff9a075d1e", + "endId": "ffffffff-9a07-5d1e-ffff-ffffa6fd5622" + } + }, + { + "id": 340, + "type": "BB", + "startNode": 113, + "endNode": 219, + "properties": { + "startId": "ffffffff-e356-ea6f-ffff-ffff9a075d1e", + "endId": "00000000-0000-0000-ffff-ffffcfdba135", + "index": 12, + "overlaying": true + } + }, + { + "id": 341, + "type": "LANGUAGE", + "startNode": 113, + "endNode": 45, + "properties": { + "startId": "ffffffff-e356-ea6f-ffff-ffff9a075d1e", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 342, + "type": "DFG", + "startNode": 110, + "endNode": 113, + "properties": { + "startId": "ffffffff-a6fd-5622-ffff-fffffaee3c2b", + "endId": "ffffffff-e356-ea6f-ffff-ffff9a075d1e", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 343, + "type": "DFG", + "startNode": 115, + "endNode": 113, + "properties": { + "startId": "ffffffff-9a07-5d1e-ffff-ffff9eefa957", + "endId": "ffffffff-e356-ea6f-ffff-ffff9a075d1e", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 344, + "type": "EOG", + "startNode": 113, + "endNode": 116, + "properties": { + "startId": "ffffffff-e356-ea6f-ffff-ffff9a075d1e", + "endId": "ffffffff-e0b5-31a7-ffff-ffffe356ea6f", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 345, + "type": "PDG", + "startNode": 113, + "endNode": 109, + "properties": { + "startId": "ffffffff-e356-ea6f-ffff-ffff9a075d1e", + "endId": "ffffffff-e356-ea6f-ffff-ffff8749247f", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 346, + "type": "OPERATOR_ARGUMENTS", + "startNode": 113, + "endNode": 115, + "properties": { + "startId": "ffffffff-e356-ea6f-ffff-ffff9a075d1e", + "endId": "ffffffff-9a07-5d1e-ffff-ffff9eefa957" + } + }, + { + "id": 347, + "type": "OPERATOR_BASE", + "startNode": 113, + "endNode": 111, + "properties": { + "startId": "ffffffff-e356-ea6f-ffff-ffff9a075d1e", + "endId": "ffffffff-9a07-5d1e-ffff-ffffa6fd5622" + } + }, + { + "id": 348, + "type": "SCOPE", + "startNode": 113, + "endNode": 95, + "properties": { + "startId": "ffffffff-e356-ea6f-ffff-ffff9a075d1e", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 349, + "type": "SECONDARY_TYPES", + "startNode": 113, + "endNode": 50, + "properties": { + "startId": "ffffffff-e356-ea6f-ffff-ffff9a075d1e", + "endId": "00000000-0000-0000-0000-000000007d14" + } + }, + { + "id": 350, + "type": "SIGNATURE", + "startNode": 113, + "endNode": 50, + "properties": { + "startId": "ffffffff-e356-ea6f-ffff-ffff9a075d1e", + "endId": "00000000-0000-0000-0000-000000007d14" + } + }, + { + "id": 351, + "type": "TYPE", + "startNode": 113, + "endNode": 67, + "properties": { + "startId": "ffffffff-e356-ea6f-ffff-ffff9a075d1e", + "endId": "00000000-0000-0000-0000-000000000020" + } + }, + { + "id": 352, + "type": "BB", + "startNode": 115, + "endNode": 219, + "properties": { + "startId": "ffffffff-9a07-5d1e-ffff-ffff9eefa957", + "endId": "00000000-0000-0000-ffff-ffffcfdba135", + "index": 11, + "overlaying": true + } + }, + { + "id": 353, + "type": "LANGUAGE", + "startNode": 115, + "endNode": 45, + "properties": { + "startId": "ffffffff-9a07-5d1e-ffff-ffff9eefa957", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 354, + "type": "EOG", + "startNode": 115, + "endNode": 113, + "properties": { + "startId": "ffffffff-9a07-5d1e-ffff-ffff9eefa957", + "endId": "ffffffff-e356-ea6f-ffff-ffff9a075d1e", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 355, + "type": "PDG", + "startNode": 115, + "endNode": 113, + "properties": { + "startId": "ffffffff-9a07-5d1e-ffff-ffff9eefa957", + "endId": "ffffffff-e356-ea6f-ffff-ffff9a075d1e", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 356, + "type": "SCOPE", + "startNode": 115, + "endNode": 95, + "properties": { + "startId": "ffffffff-9a07-5d1e-ffff-ffff9eefa957", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 357, + "type": "TYPE", + "startNode": 115, + "endNode": 50, + "properties": { + "startId": "ffffffff-9a07-5d1e-ffff-ffff9eefa957", + "endId": "00000000-0000-0000-0000-000000007d14" + } + }, + { + "id": 358, + "type": "BASE", + "startNode": 111, + "endNode": 110, + "properties": { + "startId": "ffffffff-9a07-5d1e-ffff-ffffa6fd5622", + "endId": "ffffffff-a6fd-5622-ffff-fffffaee3c2b", + "overlaying": false + } + }, + { + "id": 359, + "type": "OPERATOR_BASE", + "startNode": 111, + "endNode": 110, + "properties": { + "startId": "ffffffff-9a07-5d1e-ffff-ffffa6fd5622", + "endId": "ffffffff-a6fd-5622-ffff-fffffaee3c2b" + } + }, + { + "id": 360, + "type": "AST", + "startNode": 111, + "endNode": 110, + "properties": { + "startId": "ffffffff-9a07-5d1e-ffff-ffffa6fd5622", + "endId": "ffffffff-a6fd-5622-ffff-fffffaee3c2b" + } + }, + { + "id": 361, + "type": "BB", + "startNode": 111, + "endNode": 219, + "properties": { + "startId": "ffffffff-9a07-5d1e-ffff-ffffa6fd5622", + "endId": "00000000-0000-0000-ffff-ffffcfdba135", + "index": 10, + "overlaying": true + } + }, + { + "id": 362, + "type": "LANGUAGE", + "startNode": 111, + "endNode": 45, + "properties": { + "startId": "ffffffff-9a07-5d1e-ffff-ffffa6fd5622", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 363, + "type": "MEMORY_ADDRESS", + "startNode": 111, + "endNode": 248, + "properties": { + "startId": "ffffffff-9a07-5d1e-ffff-ffffa6fd5622", + "endId": "00000000-0000-0000-0000-0000565c909b", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 364, + "type": "MEMORY_VALUE", + "startNode": 246, + "endNode": 111, + "properties": { + "startId": "00000000-0000-0000-0000-00002dafac4b", + "endId": "ffffffff-9a07-5d1e-ffff-ffffa6fd5622", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 365, + "type": "DFG", + "startNode": 110, + "endNode": 111, + "properties": { + "startId": "ffffffff-a6fd-5622-ffff-fffffaee3c2b", + "endId": "ffffffff-9a07-5d1e-ffff-ffffa6fd5622", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 366, + "type": "EOG", + "startNode": 111, + "endNode": 115, + "properties": { + "startId": "ffffffff-9a07-5d1e-ffff-ffffa6fd5622", + "endId": "ffffffff-9a07-5d1e-ffff-ffff9eefa957", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 367, + "type": "SCOPE", + "startNode": 111, + "endNode": 95, + "properties": { + "startId": "ffffffff-9a07-5d1e-ffff-ffffa6fd5622", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 368, + "type": "TYPE", + "startNode": 111, + "endNode": 67, + "properties": { + "startId": "ffffffff-9a07-5d1e-ffff-ffffa6fd5622", + "endId": "00000000-0000-0000-0000-000000000020" + } + }, + { + "id": 369, + "type": "REFERS_TO", + "startNode": 110, + "endNode": 99, + "properties": { + "startId": "ffffffff-a6fd-5622-ffff-fffffaee3c2b", + "endId": "ffffffff-a418-65eb-ffff-ffffe044e5b1" + } + }, + { + "id": 370, + "type": "BB", + "startNode": 110, + "endNode": 219, + "properties": { + "startId": "ffffffff-a6fd-5622-ffff-fffffaee3c2b", + "endId": "00000000-0000-0000-ffff-ffffcfdba135", + "index": 9, + "overlaying": true + } + }, + { + "id": 371, + "type": "LANGUAGE", + "startNode": 110, + "endNode": 45, + "properties": { + "startId": "ffffffff-a6fd-5622-ffff-fffffaee3c2b", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 372, + "type": "MEMORY_ADDRESS", + "startNode": 110, + "endNode": 245, + "properties": { + "startId": "ffffffff-a6fd-5622-ffff-fffffaee3c2b", + "endId": "00000000-0000-0000-0000-00005aa295ee", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 373, + "type": "MEMORY_VALUE", + "startNode": 246, + "endNode": 110, + "properties": { + "startId": "00000000-0000-0000-0000-00002dafac4b", + "endId": "ffffffff-a6fd-5622-ffff-fffffaee3c2b", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 374, + "type": "DFG", + "startNode": 99, + "endNode": 110, + "properties": { + "startId": "ffffffff-a418-65eb-ffff-ffffe044e5b1", + "endId": "ffffffff-a6fd-5622-ffff-fffffaee3c2b", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 375, + "type": "EOG", + "startNode": 110, + "endNode": 111, + "properties": { + "startId": "ffffffff-a6fd-5622-ffff-fffffaee3c2b", + "endId": "ffffffff-9a07-5d1e-ffff-ffffa6fd5622", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 376, + "type": "PDG", + "startNode": 110, + "endNode": 113, + "properties": { + "startId": "ffffffff-a6fd-5622-ffff-fffffaee3c2b", + "endId": "ffffffff-e356-ea6f-ffff-ffff9a075d1e", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 377, + "type": "PDG", + "startNode": 110, + "endNode": 111, + "properties": { + "startId": "ffffffff-a6fd-5622-ffff-fffffaee3c2b", + "endId": "ffffffff-9a07-5d1e-ffff-ffffa6fd5622", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 378, + "type": "SCOPE", + "startNode": 110, + "endNode": 95, + "properties": { + "startId": "ffffffff-a6fd-5622-ffff-fffffaee3c2b", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 379, + "type": "TYPE", + "startNode": 110, + "endNode": 98, + "properties": { + "startId": "ffffffff-a6fd-5622-ffff-fffffaee3c2b", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 380, + "type": "BB", + "startNode": 198, + "endNode": 219, + "properties": { + "startId": "ffffffff-e356-ea6f-0000-00004454d05a", + "endId": "00000000-0000-0000-ffff-ffffcfdba135", + "index": 7, + "overlaying": true + } + }, + { + "id": 381, + "type": "LANGUAGE", + "startNode": 198, + "endNode": 45, + "properties": { + "startId": "ffffffff-e356-ea6f-0000-00004454d05a", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 382, + "type": "MEMORY_ADDRESS", + "startNode": 198, + "endNode": 247, + "properties": { + "startId": "ffffffff-e356-ea6f-0000-00004454d05a", + "endId": "00000000-0000-0000-0000-000036cf263d", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 383, + "type": "EOG", + "startNode": 198, + "endNode": 109, + "properties": { + "startId": "ffffffff-e356-ea6f-0000-00004454d05a", + "endId": "ffffffff-e356-ea6f-ffff-ffff8749247f", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 384, + "type": "SCOPE", + "startNode": 198, + "endNode": 95, + "properties": { + "startId": "ffffffff-e356-ea6f-0000-00004454d05a", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 385, + "type": "TYPE", + "startNode": 198, + "endNode": 67, + "properties": { + "startId": "ffffffff-e356-ea6f-0000-00004454d05a", + "endId": "00000000-0000-0000-0000-000000000020" + } + }, + { + "id": 386, + "type": "USAGE", + "startNode": 198, + "endNode": 109, + "properties": { + "startId": "ffffffff-e356-ea6f-0000-00004454d05a", + "endId": "ffffffff-e356-ea6f-ffff-ffff8749247f", + "access": "WRITE", + "index": 0, + "overlaying": false + } + }, + { + "id": 387, + "type": "USAGE", + "startNode": 198, + "endNode": 141, + "properties": { + "startId": "ffffffff-e356-ea6f-0000-00004454d05a", + "endId": "ffffffff-8d1a-9d77-ffff-ffff93af1981", + "access": "READ", + "index": 1, + "overlaying": false + } + }, + { + "id": 388, + "type": "USAGE", + "startNode": 198, + "endNode": 150, + "properties": { + "startId": "ffffffff-e356-ea6f-0000-00004454d05a", + "endId": "ffffffff-972d-b574-ffff-ffffbb235619", + "access": "READ", + "index": 2, + "overlaying": false + } + }, + { + "id": 389, + "type": "DECLARATIONS", + "startNode": 137, + "endNode": 117, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffff8b4eacdb", + "endId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "index": 0, + "overlaying": false + } + }, + { + "id": 390, + "type": "SINGLE_DECLARATION", + "startNode": 137, + "endNode": 117, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffff8b4eacdb", + "endId": "ffffffff-8b4e-acdb-0000-0000607b117c" + } + }, + { + "id": 391, + "type": "AST", + "startNode": 137, + "endNode": 117, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffff8b4eacdb", + "endId": "ffffffff-8b4e-acdb-0000-0000607b117c" + } + }, + { + "id": 392, + "type": "BB", + "startNode": 137, + "endNode": 219, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffff8b4eacdb", + "endId": "00000000-0000-0000-ffff-ffffcfdba135", + "index": 14, + "overlaying": true + } + }, + { + "id": 393, + "type": "LANGUAGE", + "startNode": 137, + "endNode": 45, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffff8b4eacdb", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 394, + "type": "EOG", + "startNode": 137, + "endNode": 141, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffff8b4eacdb", + "endId": "ffffffff-8d1a-9d77-ffff-ffff93af1981", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 395, + "type": "SCOPE", + "startNode": 137, + "endNode": 95, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffff8b4eacdb", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 396, + "type": "TYPE", + "startNode": 137, + "endNode": 67, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffff8b4eacdb", + "endId": "00000000-0000-0000-0000-000000000020" + } + }, + { + "id": 397, + "type": "BODY", + "startNode": 117, + "endNode": 124, + "properties": { + "startId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "endId": "00000000-607b-117c-ffff-ffffe8039f2a", + "overlaying": false + } + }, + { + "id": 398, + "type": "FIRST_BASIC_BLOCK", + "startNode": 117, + "endNode": 228, + "properties": { + "startId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "endId": "00000000-0000-0000-ffff-ffffaef132cb" + } + }, + { + "id": 399, + "type": "PARAMETERS", + "startNode": 117, + "endNode": 122, + "properties": { + "startId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "endId": "00000000-607b-117c-0000-00001a8925d5", + "index": 0, + "overlaying": false + } + }, + { + "id": 400, + "type": "RETURN_TYPES", + "startNode": 117, + "endNode": 119, + "properties": { + "startId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 401, + "type": "SECONDARY_TYPES", + "startNode": 117, + "endNode": 119, + "properties": { + "startId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 402, + "type": "SECONDARY_TYPES", + "startNode": 117, + "endNode": 121, + "properties": { + "startId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 403, + "type": "SIGNATURE_TYPES", + "startNode": 117, + "endNode": 121, + "properties": { + "startId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 404, + "type": "AST", + "startNode": 117, + "endNode": 124, + "properties": { + "startId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "endId": "00000000-607b-117c-ffff-ffffe8039f2a" + } + }, + { + "id": 405, + "type": "AST", + "startNode": 117, + "endNode": 122, + "properties": { + "startId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "endId": "00000000-607b-117c-0000-00001a8925d5" + } + }, + { + "id": 406, + "type": "BB", + "startNode": 117, + "endNode": 228, + "properties": { + "startId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "endId": "00000000-0000-0000-ffff-ffffaef132cb", + "index": 0, + "overlaying": true + } + }, + { + "id": 407, + "type": "DECLARING_SCOPE", + "startNode": 117, + "endNode": 118, + "properties": { + "startId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "endId": "00000000-0000-0000-ffff-ffffaee79291" + } + }, + { + "id": 408, + "type": "LANGUAGE", + "startNode": 117, + "endNode": 45, + "properties": { + "startId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 409, + "type": "MEMORY_ADDRESS", + "startNode": 117, + "endNode": 235, + "properties": { + "startId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "endId": "00000000-0000-0000-0000-0000579940d9", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 410, + "type": "MEMORY_VALUE_USAGE", + "startNode": 117, + "endNode": 147, + "properties": { + "startId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "endId": "ffffffff-972d-b574-0000-000068b3300e", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 411, + "type": "CDG", + "startNode": 117, + "endNode": 208, + "properties": { + "startId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "endId": "00000000-0735-7f36-0000-00005d7f13d5", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 412, + "type": "CDG", + "startNode": 117, + "endNode": 129, + "properties": { + "startId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "endId": "00000000-052e-f17c-0000-000007357f36", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 413, + "type": "CDG", + "startNode": 117, + "endNode": 133, + "properties": { + "startId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "endId": "00000000-4298-5aa9-0000-000018b3329a", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 414, + "type": "CDG", + "startNode": 117, + "endNode": 134, + "properties": { + "startId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "endId": "00000000-052e-f17c-0000-000042985aa9", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 415, + "type": "CDG", + "startNode": 117, + "endNode": 136, + "properties": { + "startId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "endId": "00000000-052e-f17c-0000-00001ef96b5f", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 416, + "type": "CDG", + "startNode": 117, + "endNode": 131, + "properties": { + "startId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "endId": "ffffffff-cec1-8757-0000-0000052ef17c", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 417, + "type": "CDG", + "startNode": 117, + "endNode": 125, + "properties": { + "startId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "endId": "ffffffff-e803-9f2a-ffff-ffffcec18757", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 418, + "type": "DFG", + "startNode": 125, + "endNode": 117, + "properties": { + "startId": "ffffffff-e803-9f2a-ffff-ffffcec18757", + "endId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 419, + "type": "EOG", + "startNode": 117, + "endNode": 208, + "properties": { + "startId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "endId": "00000000-0735-7f36-0000-00005d7f13d5", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 420, + "type": "PDG", + "startNode": 117, + "endNode": 125, + "properties": { + "startId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "endId": "ffffffff-e803-9f2a-ffff-ffffcec18757", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 421, + "type": "PDG", + "startNode": 117, + "endNode": 131, + "properties": { + "startId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "endId": "ffffffff-cec1-8757-0000-0000052ef17c", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 422, + "type": "PDG", + "startNode": 117, + "endNode": 133, + "properties": { + "startId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "endId": "00000000-4298-5aa9-0000-000018b3329a", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 423, + "type": "PDG", + "startNode": 117, + "endNode": 136, + "properties": { + "startId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "endId": "00000000-052e-f17c-0000-00001ef96b5f", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 424, + "type": "PDG", + "startNode": 117, + "endNode": 148, + "properties": { + "startId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "endId": "ffffffff-e3f2-8aa4-ffff-ffff972db574", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 425, + "type": "PDG", + "startNode": 117, + "endNode": 134, + "properties": { + "startId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "endId": "00000000-052e-f17c-0000-000042985aa9", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 426, + "type": "PDG", + "startNode": 117, + "endNode": 208, + "properties": { + "startId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "endId": "00000000-0735-7f36-0000-00005d7f13d5", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 427, + "type": "PDG", + "startNode": 117, + "endNode": 129, + "properties": { + "startId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "endId": "00000000-052e-f17c-0000-000007357f36", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 428, + "type": "PDG", + "startNode": 117, + "endNode": 147, + "properties": { + "startId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "endId": "ffffffff-972d-b574-0000-000068b3300e", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 429, + "type": "SCOPE", + "startNode": 117, + "endNode": 95, + "properties": { + "startId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 430, + "type": "TYPE", + "startNode": 117, + "endNode": 120, + "properties": { + "startId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 431, + "type": "USAGE", + "startNode": 117, + "endNode": 147, + "properties": { + "startId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "endId": "ffffffff-972d-b574-0000-000068b3300e", + "access": "READ", + "index": 0, + "overlaying": false + } + }, + { + "id": 432, + "type": "STATEMENTS", + "startNode": 124, + "endNode": 125, + "properties": { + "startId": "00000000-607b-117c-ffff-ffffe8039f2a", + "endId": "ffffffff-e803-9f2a-ffff-ffffcec18757", + "index": 0, + "overlaying": false + } + }, + { + "id": 433, + "type": "AST", + "startNode": 124, + "endNode": 125, + "properties": { + "startId": "00000000-607b-117c-ffff-ffffe8039f2a", + "endId": "ffffffff-e803-9f2a-ffff-ffffcec18757" + } + }, + { + "id": 434, + "type": "LANGUAGE", + "startNode": 124, + "endNode": 45, + "properties": { + "startId": "00000000-607b-117c-ffff-ffffe8039f2a", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 435, + "type": "SCOPE", + "startNode": 124, + "endNode": 118, + "properties": { + "startId": "00000000-607b-117c-ffff-ffffe8039f2a", + "endId": "00000000-0000-0000-ffff-ffffaee79291" + } + }, + { + "id": 436, + "type": "TYPE", + "startNode": 124, + "endNode": 67, + "properties": { + "startId": "00000000-607b-117c-ffff-ffffe8039f2a", + "endId": "00000000-0000-0000-0000-000000000020" + } + }, + { + "id": 437, + "type": "RETURN_VALUE", + "startNode": 125, + "endNode": 131, + "properties": { + "startId": "ffffffff-e803-9f2a-ffff-ffffcec18757", + "endId": "ffffffff-cec1-8757-0000-0000052ef17c" + } + }, + { + "id": 438, + "type": "RETURN_VALUES", + "startNode": 125, + "endNode": 131, + "properties": { + "startId": "ffffffff-e803-9f2a-ffff-ffffcec18757", + "endId": "ffffffff-cec1-8757-0000-0000052ef17c", + "index": 0, + "overlaying": false + } + }, + { + "id": 439, + "type": "AST", + "startNode": 125, + "endNode": 131, + "properties": { + "startId": "ffffffff-e803-9f2a-ffff-ffffcec18757", + "endId": "ffffffff-cec1-8757-0000-0000052ef17c" + } + }, + { + "id": 440, + "type": "BB", + "startNode": 125, + "endNode": 228, + "properties": { + "startId": "ffffffff-e803-9f2a-ffff-ffffcec18757", + "endId": "00000000-0000-0000-ffff-ffffaef132cb", + "index": 7, + "overlaying": true + } + }, + { + "id": 441, + "type": "LANGUAGE", + "startNode": 125, + "endNode": 45, + "properties": { + "startId": "ffffffff-e803-9f2a-ffff-ffffcec18757", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 442, + "type": "DFG", + "startNode": 131, + "endNode": 125, + "properties": { + "startId": "ffffffff-cec1-8757-0000-0000052ef17c", + "endId": "ffffffff-e803-9f2a-ffff-ffffcec18757", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 443, + "type": "PDG", + "startNode": 125, + "endNode": 117, + "properties": { + "startId": "ffffffff-e803-9f2a-ffff-ffffcec18757", + "endId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 444, + "type": "SCOPE", + "startNode": 125, + "endNode": 118, + "properties": { + "startId": "ffffffff-e803-9f2a-ffff-ffffcec18757", + "endId": "00000000-0000-0000-ffff-ffffaee79291" + } + }, + { + "id": 445, + "type": "TYPE", + "startNode": 125, + "endNode": 67, + "properties": { + "startId": "ffffffff-e803-9f2a-ffff-ffffcec18757", + "endId": "00000000-0000-0000-0000-000000000020" + } + }, + { + "id": 446, + "type": "BASE", + "startNode": 131, + "endNode": 208, + "properties": { + "startId": "ffffffff-cec1-8757-0000-0000052ef17c", + "endId": "00000000-0735-7f36-0000-00005d7f13d5" + } + }, + { + "id": 447, + "type": "ARGUMENTS", + "startNode": 131, + "endNode": 134, + "properties": { + "startId": "ffffffff-cec1-8757-0000-0000052ef17c", + "endId": "00000000-052e-f17c-0000-000042985aa9", + "index": 0, + "overlaying": false + } + }, + { + "id": 448, + "type": "ARGUMENTS", + "startNode": 131, + "endNode": 136, + "properties": { + "startId": "ffffffff-cec1-8757-0000-0000052ef17c", + "endId": "00000000-052e-f17c-0000-00001ef96b5f", + "index": 1, + "overlaying": false + } + }, + { + "id": 449, + "type": "AST", + "startNode": 131, + "endNode": 134, + "properties": { + "startId": "ffffffff-cec1-8757-0000-0000052ef17c", + "endId": "00000000-052e-f17c-0000-000042985aa9" + } + }, + { + "id": 450, + "type": "AST", + "startNode": 131, + "endNode": 136, + "properties": { + "startId": "ffffffff-cec1-8757-0000-0000052ef17c", + "endId": "00000000-052e-f17c-0000-00001ef96b5f" + } + }, + { + "id": 451, + "type": "AST", + "startNode": 131, + "endNode": 129, + "properties": { + "startId": "ffffffff-cec1-8757-0000-0000052ef17c", + "endId": "00000000-052e-f17c-0000-000007357f36" + } + }, + { + "id": 452, + "type": "BB", + "startNode": 131, + "endNode": 228, + "properties": { + "startId": "ffffffff-cec1-8757-0000-0000052ef17c", + "endId": "00000000-0000-0000-ffff-ffffaef132cb", + "index": 6, + "overlaying": true + } + }, + { + "id": 453, + "type": "LANGUAGE", + "startNode": 131, + "endNode": 45, + "properties": { + "startId": "ffffffff-cec1-8757-0000-0000052ef17c", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 454, + "type": "DFG", + "startNode": 208, + "endNode": 131, + "properties": { + "startId": "00000000-0735-7f36-0000-00005d7f13d5", + "endId": "ffffffff-cec1-8757-0000-0000052ef17c", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 455, + "type": "DFG", + "startNode": 134, + "endNode": 131, + "properties": { + "startId": "00000000-052e-f17c-0000-000042985aa9", + "endId": "ffffffff-cec1-8757-0000-0000052ef17c", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 456, + "type": "DFG", + "startNode": 136, + "endNode": 131, + "properties": { + "startId": "00000000-052e-f17c-0000-00001ef96b5f", + "endId": "ffffffff-cec1-8757-0000-0000052ef17c", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 457, + "type": "EOG", + "startNode": 131, + "endNode": 125, + "properties": { + "startId": "ffffffff-cec1-8757-0000-0000052ef17c", + "endId": "ffffffff-e803-9f2a-ffff-ffffcec18757", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 458, + "type": "PDG", + "startNode": 131, + "endNode": 125, + "properties": { + "startId": "ffffffff-cec1-8757-0000-0000052ef17c", + "endId": "ffffffff-e803-9f2a-ffff-ffffcec18757", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 459, + "type": "OPERATOR_ARGUMENTS", + "startNode": 131, + "endNode": 134, + "properties": { + "startId": "ffffffff-cec1-8757-0000-0000052ef17c", + "endId": "00000000-052e-f17c-0000-000042985aa9" + } + }, + { + "id": 460, + "type": "OPERATOR_ARGUMENTS", + "startNode": 131, + "endNode": 136, + "properties": { + "startId": "ffffffff-cec1-8757-0000-0000052ef17c", + "endId": "00000000-052e-f17c-0000-00001ef96b5f" + } + }, + { + "id": 461, + "type": "OPERATOR_BASE", + "startNode": 131, + "endNode": 129, + "properties": { + "startId": "ffffffff-cec1-8757-0000-0000052ef17c", + "endId": "00000000-052e-f17c-0000-000007357f36" + } + }, + { + "id": 462, + "type": "OVERLAY", + "startNode": 131, + "endNode": 258, + "properties": { + "startId": "ffffffff-cec1-8757-0000-0000052ef17c", + "endId": "00000000-0000-0000-ffff-ffffc44188ec", + "overlaying": true + } + }, + { + "id": 463, + "type": "SCOPE", + "startNode": 131, + "endNode": 118, + "properties": { + "startId": "ffffffff-cec1-8757-0000-0000052ef17c", + "endId": "00000000-0000-0000-ffff-ffffaee79291" + } + }, + { + "id": 464, + "type": "SECONDARY_TYPES", + "startNode": 131, + "endNode": 83, + "properties": { + "startId": "ffffffff-cec1-8757-0000-0000052ef17c", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 465, + "type": "SECONDARY_TYPES", + "startNode": 131, + "endNode": 121, + "properties": { + "startId": "ffffffff-cec1-8757-0000-0000052ef17c", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 466, + "type": "SIGNATURE", + "startNode": 131, + "endNode": 83, + "properties": { + "startId": "ffffffff-cec1-8757-0000-0000052ef17c", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 467, + "type": "SIGNATURE", + "startNode": 131, + "endNode": 121, + "properties": { + "startId": "ffffffff-cec1-8757-0000-0000052ef17c", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 468, + "type": "TYPE", + "startNode": 131, + "endNode": 67, + "properties": { + "startId": "ffffffff-cec1-8757-0000-0000052ef17c", + "endId": "00000000-0000-0000-0000-000000000020" + } + }, + { + "id": 469, + "type": "BASE", + "startNode": 134, + "endNode": 133, + "properties": { + "startId": "00000000-052e-f17c-0000-000042985aa9", + "endId": "00000000-4298-5aa9-0000-000018b3329a", + "overlaying": false + } + }, + { + "id": 470, + "type": "OPERATOR_BASE", + "startNode": 134, + "endNode": 133, + "properties": { + "startId": "00000000-052e-f17c-0000-000042985aa9", + "endId": "00000000-4298-5aa9-0000-000018b3329a" + } + }, + { + "id": 471, + "type": "AST", + "startNode": 134, + "endNode": 133, + "properties": { + "startId": "00000000-052e-f17c-0000-000042985aa9", + "endId": "00000000-4298-5aa9-0000-000018b3329a" + } + }, + { + "id": 472, + "type": "BB", + "startNode": 134, + "endNode": 228, + "properties": { + "startId": "00000000-052e-f17c-0000-000042985aa9", + "endId": "00000000-0000-0000-ffff-ffffaef132cb", + "index": 4, + "overlaying": true + } + }, + { + "id": 473, + "type": "LANGUAGE", + "startNode": 134, + "endNode": 45, + "properties": { + "startId": "00000000-052e-f17c-0000-000042985aa9", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 474, + "type": "MEMORY_ADDRESS", + "startNode": 134, + "endNode": 241, + "properties": { + "startId": "00000000-052e-f17c-0000-000042985aa9", + "endId": "00000000-0000-0000-ffff-fffff515510f", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 475, + "type": "MEMORY_VALUE", + "startNode": 240, + "endNode": 134, + "properties": { + "startId": "00000000-0000-0000-0000-000014348434", + "endId": "00000000-052e-f17c-0000-000042985aa9", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 476, + "type": "DFG", + "startNode": 133, + "endNode": 134, + "properties": { + "startId": "00000000-4298-5aa9-0000-000018b3329a", + "endId": "00000000-052e-f17c-0000-000042985aa9", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 477, + "type": "DFG", + "startNode": 197, + "endNode": 134, + "properties": { + "startId": "ffffffff-e348-5ace-ffff-fffffd5d553d", + "endId": "00000000-052e-f17c-0000-000042985aa9", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 478, + "type": "EOG", + "startNode": 134, + "endNode": 136, + "properties": { + "startId": "00000000-052e-f17c-0000-000042985aa9", + "endId": "00000000-052e-f17c-0000-00001ef96b5f", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 479, + "type": "PDG", + "startNode": 134, + "endNode": 131, + "properties": { + "startId": "00000000-052e-f17c-0000-000042985aa9", + "endId": "ffffffff-cec1-8757-0000-0000052ef17c", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 480, + "type": "REFERS_TO", + "startNode": 134, + "endNode": 196, + "properties": { + "startId": "00000000-052e-f17c-0000-000042985aa9", + "endId": "00000000-2050-f08d-0000-00000a118353" + } + }, + { + "id": 481, + "type": "SCOPE", + "startNode": 134, + "endNode": 118, + "properties": { + "startId": "00000000-052e-f17c-0000-000042985aa9", + "endId": "00000000-0000-0000-ffff-ffffaee79291" + } + }, + { + "id": 482, + "type": "TYPE", + "startNode": 134, + "endNode": 83, + "properties": { + "startId": "00000000-052e-f17c-0000-000042985aa9", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 483, + "type": "REFERS_TO", + "startNode": 133, + "endNode": 197, + "properties": { + "startId": "00000000-4298-5aa9-0000-000018b3329a", + "endId": "ffffffff-e348-5ace-ffff-fffffd5d553d" + } + }, + { + "id": 484, + "type": "BB", + "startNode": 133, + "endNode": 228, + "properties": { + "startId": "00000000-4298-5aa9-0000-000018b3329a", + "endId": "00000000-0000-0000-ffff-ffffaef132cb", + "index": 3, + "overlaying": true + } + }, + { + "id": 485, + "type": "LANGUAGE", + "startNode": 133, + "endNode": 45, + "properties": { + "startId": "00000000-4298-5aa9-0000-000018b3329a", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 486, + "type": "MEMORY_ADDRESS", + "startNode": 133, + "endNode": 239, + "properties": { + "startId": "00000000-4298-5aa9-0000-000018b3329a", + "endId": "00000000-0000-0000-ffff-ffffefd83263", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 487, + "type": "MEMORY_VALUE", + "startNode": 240, + "endNode": 133, + "properties": { + "startId": "00000000-0000-0000-0000-000014348434", + "endId": "00000000-4298-5aa9-0000-000018b3329a", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 488, + "type": "DFG", + "startNode": 197, + "endNode": 133, + "properties": { + "startId": "ffffffff-e348-5ace-ffff-fffffd5d553d", + "endId": "00000000-4298-5aa9-0000-000018b3329a", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 489, + "type": "EOG", + "startNode": 133, + "endNode": 134, + "properties": { + "startId": "00000000-4298-5aa9-0000-000018b3329a", + "endId": "00000000-052e-f17c-0000-000042985aa9", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 490, + "type": "PDG", + "startNode": 133, + "endNode": 134, + "properties": { + "startId": "00000000-4298-5aa9-0000-000018b3329a", + "endId": "00000000-052e-f17c-0000-000042985aa9", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 491, + "type": "SCOPE", + "startNode": 133, + "endNode": 118, + "properties": { + "startId": "00000000-4298-5aa9-0000-000018b3329a", + "endId": "00000000-0000-0000-ffff-ffffaee79291" + } + }, + { + "id": 492, + "type": "TYPE", + "startNode": 133, + "endNode": 211, + "properties": { + "startId": "00000000-4298-5aa9-0000-000018b3329a", + "endId": "00000000-0000-0000-0000-000000007d14" + } + }, + { + "id": 493, + "type": "REFERS_TO", + "startNode": 136, + "endNode": 122, + "properties": { + "startId": "00000000-052e-f17c-0000-00001ef96b5f", + "endId": "00000000-607b-117c-0000-00001a8925d5" + } + }, + { + "id": 494, + "type": "BB", + "startNode": 136, + "endNode": 228, + "properties": { + "startId": "00000000-052e-f17c-0000-00001ef96b5f", + "endId": "00000000-0000-0000-ffff-ffffaef132cb", + "index": 5, + "overlaying": true + } + }, + { + "id": 495, + "type": "LANGUAGE", + "startNode": 136, + "endNode": 45, + "properties": { + "startId": "00000000-052e-f17c-0000-00001ef96b5f", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 496, + "type": "MEMORY_ADDRESS", + "startNode": 136, + "endNode": 236, + "properties": { + "startId": "00000000-052e-f17c-0000-00001ef96b5f", + "endId": "00000000-0000-0000-ffff-ffff941b2f97", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 497, + "type": "MEMORY_VALUE", + "startNode": 237, + "endNode": 136, + "properties": { + "startId": "00000000-0000-0000-0000-00001d769195", + "endId": "00000000-052e-f17c-0000-00001ef96b5f", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 498, + "type": "DFG", + "startNode": 122, + "endNode": 136, + "properties": { + "startId": "00000000-607b-117c-0000-00001a8925d5", + "endId": "00000000-052e-f17c-0000-00001ef96b5f", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 499, + "type": "EOG", + "startNode": 136, + "endNode": 131, + "properties": { + "startId": "00000000-052e-f17c-0000-00001ef96b5f", + "endId": "ffffffff-cec1-8757-0000-0000052ef17c", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 500, + "type": "PDG", + "startNode": 136, + "endNode": 131, + "properties": { + "startId": "00000000-052e-f17c-0000-00001ef96b5f", + "endId": "ffffffff-cec1-8757-0000-0000052ef17c", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 501, + "type": "SCOPE", + "startNode": 136, + "endNode": 118, + "properties": { + "startId": "00000000-052e-f17c-0000-00001ef96b5f", + "endId": "00000000-0000-0000-ffff-ffffaee79291" + } + }, + { + "id": 502, + "type": "TYPE", + "startNode": 136, + "endNode": 121, + "properties": { + "startId": "00000000-052e-f17c-0000-00001ef96b5f", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 503, + "type": "BASE", + "startNode": 129, + "endNode": 208, + "properties": { + "startId": "00000000-052e-f17c-0000-000007357f36", + "endId": "00000000-0735-7f36-0000-00005d7f13d5", + "overlaying": false + } + }, + { + "id": 504, + "type": "OPERATOR_BASE", + "startNode": 129, + "endNode": 208, + "properties": { + "startId": "00000000-052e-f17c-0000-000007357f36", + "endId": "00000000-0735-7f36-0000-00005d7f13d5" + } + }, + { + "id": 505, + "type": "AST", + "startNode": 129, + "endNode": 208, + "properties": { + "startId": "00000000-052e-f17c-0000-000007357f36", + "endId": "00000000-0735-7f36-0000-00005d7f13d5" + } + }, + { + "id": 506, + "type": "BB", + "startNode": 129, + "endNode": 228, + "properties": { + "startId": "00000000-052e-f17c-0000-000007357f36", + "endId": "00000000-0000-0000-ffff-ffffaef132cb", + "index": 2, + "overlaying": true + } + }, + { + "id": 507, + "type": "LANGUAGE", + "startNode": 129, + "endNode": 45, + "properties": { + "startId": "00000000-052e-f17c-0000-000007357f36", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 508, + "type": "MEMORY_VALUE", + "startNode": 238, + "endNode": 129, + "properties": { + "startId": "00000000-0000-0000-ffff-ffff9825cb4a", + "endId": "00000000-052e-f17c-0000-000007357f36", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 509, + "type": "DFG", + "startNode": 208, + "endNode": 129, + "properties": { + "startId": "00000000-0735-7f36-0000-00005d7f13d5", + "endId": "00000000-052e-f17c-0000-000007357f36", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 510, + "type": "EOG", + "startNode": 129, + "endNode": 133, + "properties": { + "startId": "00000000-052e-f17c-0000-000007357f36", + "endId": "00000000-4298-5aa9-0000-000018b3329a", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 511, + "type": "SCOPE", + "startNode": 129, + "endNode": 118, + "properties": { + "startId": "00000000-052e-f17c-0000-000007357f36", + "endId": "00000000-0000-0000-ffff-ffffaee79291" + } + }, + { + "id": 512, + "type": "TYPE", + "startNode": 129, + "endNode": 67, + "properties": { + "startId": "00000000-052e-f17c-0000-000007357f36", + "endId": "00000000-0000-0000-0000-000000000020" + } + }, + { + "id": 513, + "type": "BB", + "startNode": 208, + "endNode": 228, + "properties": { + "startId": "00000000-0735-7f36-0000-00005d7f13d5", + "endId": "00000000-0000-0000-ffff-ffffaef132cb", + "index": 1, + "overlaying": true + } + }, + { + "id": 514, + "type": "LANGUAGE", + "startNode": 208, + "endNode": 45, + "properties": { + "startId": "00000000-0735-7f36-0000-00005d7f13d5", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 515, + "type": "EOG", + "startNode": 208, + "endNode": 129, + "properties": { + "startId": "00000000-0735-7f36-0000-00005d7f13d5", + "endId": "00000000-052e-f17c-0000-000007357f36", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 516, + "type": "PDG", + "startNode": 208, + "endNode": 131, + "properties": { + "startId": "00000000-0735-7f36-0000-00005d7f13d5", + "endId": "ffffffff-cec1-8757-0000-0000052ef17c", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 517, + "type": "PDG", + "startNode": 208, + "endNode": 129, + "properties": { + "startId": "00000000-0735-7f36-0000-00005d7f13d5", + "endId": "00000000-052e-f17c-0000-000007357f36", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 518, + "type": "SCOPE", + "startNode": 208, + "endNode": 118, + "properties": { + "startId": "00000000-0735-7f36-0000-00005d7f13d5", + "endId": "00000000-0000-0000-ffff-ffffaee79291" + } + }, + { + "id": 519, + "type": "TYPE", + "startNode": 208, + "endNode": 67, + "properties": { + "startId": "00000000-0735-7f36-0000-00005d7f13d5", + "endId": "00000000-0000-0000-0000-000000000020" + } + }, + { + "id": 520, + "type": "LANGUAGE", + "startNode": 122, + "endNode": 45, + "properties": { + "startId": "00000000-607b-117c-0000-00001a8925d5", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 521, + "type": "MEMORY_ADDRESS", + "startNode": 122, + "endNode": 236, + "properties": { + "startId": "00000000-607b-117c-0000-00001a8925d5", + "endId": "00000000-0000-0000-ffff-ffff941b2f97", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 522, + "type": "MEMORY_VALUE", + "startNode": 237, + "endNode": 122, + "properties": { + "startId": "00000000-0000-0000-0000-00001d769195", + "endId": "00000000-607b-117c-0000-00001a8925d5", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 523, + "type": "MEMORY_VALUE", + "startNode": 150, + "endNode": 122, + "properties": { + "startId": "ffffffff-972d-b574-ffff-ffffbb235619", + "endId": "00000000-607b-117c-0000-00001a8925d5", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 524, + "type": "DFG", + "startNode": 150, + "endNode": 122, + "properties": { + "startId": "ffffffff-972d-b574-ffff-ffffbb235619", + "endId": "00000000-607b-117c-0000-00001a8925d5", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 525, + "type": "PDG", + "startNode": 122, + "endNode": 136, + "properties": { + "startId": "00000000-607b-117c-0000-00001a8925d5", + "endId": "00000000-052e-f17c-0000-00001ef96b5f", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 526, + "type": "SCOPE", + "startNode": 122, + "endNode": 118, + "properties": { + "startId": "00000000-607b-117c-0000-00001a8925d5", + "endId": "00000000-0000-0000-ffff-ffffaee79291" + } + }, + { + "id": 527, + "type": "TYPE", + "startNode": 122, + "endNode": 121, + "properties": { + "startId": "00000000-607b-117c-0000-00001a8925d5", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 528, + "type": "USAGE", + "startNode": 122, + "endNode": 136, + "properties": { + "startId": "00000000-607b-117c-0000-00001a8925d5", + "endId": "00000000-052e-f17c-0000-00001ef96b5f", + "access": "READ", + "index": 0, + "overlaying": false + } + }, + { + "id": 529, + "type": "BRANCHED_BY", + "startNode": 138, + "endNode": 139, + "properties": { + "startId": "ffffffff-e0b5-31a7-0000-0000337f71be", + "endId": "00000000-337f-71be-ffff-ffff8d1a9d77" + } + }, + { + "id": 530, + "type": "CONDITION", + "startNode": 138, + "endNode": 139, + "properties": { + "startId": "ffffffff-e0b5-31a7-0000-0000337f71be", + "endId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "overlaying": false + } + }, + { + "id": 531, + "type": "THEN_STATEMENT", + "startNode": 138, + "endNode": 142, + "properties": { + "startId": "ffffffff-e0b5-31a7-0000-0000337f71be", + "endId": "00000000-337f-71be-ffff-ffffe826ab00", + "overlaying": false + } + }, + { + "id": 532, + "type": "AST", + "startNode": 138, + "endNode": 139, + "properties": { + "startId": "ffffffff-e0b5-31a7-0000-0000337f71be", + "endId": "00000000-337f-71be-ffff-ffff8d1a9d77" + } + }, + { + "id": 533, + "type": "AST", + "startNode": 138, + "endNode": 142, + "properties": { + "startId": "ffffffff-e0b5-31a7-0000-0000337f71be", + "endId": "00000000-337f-71be-ffff-ffffe826ab00" + } + }, + { + "id": 534, + "type": "BB", + "startNode": 138, + "endNode": 221, + "properties": { + "startId": "ffffffff-e0b5-31a7-0000-0000337f71be", + "endId": "00000000-0000-0000-ffff-ffffb6387feb", + "index": 0, + "overlaying": true + } + }, + { + "id": 535, + "type": "LANGUAGE", + "startNode": 138, + "endNode": 45, + "properties": { + "startId": "ffffffff-e0b5-31a7-0000-0000337f71be", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 536, + "type": "EOG", + "startNode": 138, + "endNode": 199, + "properties": { + "startId": "ffffffff-e0b5-31a7-0000-0000337f71be", + "endId": "ffffffff-e3f2-8aa4-ffff-ffffdd2295e7", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 537, + "type": "SCOPE", + "startNode": 138, + "endNode": 95, + "properties": { + "startId": "ffffffff-e0b5-31a7-0000-0000337f71be", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 538, + "type": "TYPE", + "startNode": 138, + "endNode": 67, + "properties": { + "startId": "ffffffff-e0b5-31a7-0000-0000337f71be", + "endId": "00000000-0000-0000-0000-000000000020" + } + }, + { + "id": 539, + "type": "INPUT", + "startNode": 139, + "endNode": 141, + "properties": { + "startId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "endId": "ffffffff-8d1a-9d77-ffff-ffff93af1981", + "overlaying": false + } + }, + { + "id": 540, + "type": "OPERATOR_BASE", + "startNode": 139, + "endNode": 141, + "properties": { + "startId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "endId": "ffffffff-8d1a-9d77-ffff-ffff93af1981" + } + }, + { + "id": 541, + "type": "AST", + "startNode": 139, + "endNode": 141, + "properties": { + "startId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "endId": "ffffffff-8d1a-9d77-ffff-ffff93af1981" + } + }, + { + "id": 542, + "type": "BB", + "startNode": 139, + "endNode": 219, + "properties": { + "startId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "endId": "00000000-0000-0000-ffff-ffffcfdba135", + "index": 16, + "overlaying": true + } + }, + { + "id": 543, + "type": "LANGUAGE", + "startNode": 139, + "endNode": 45, + "properties": { + "startId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 544, + "type": "MEMORY_VALUE", + "startNode": 139, + "endNode": 139, + "properties": { + "startId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "endId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 545, + "type": "MEMORY_VALUE_USAGE", + "startNode": 139, + "endNode": 139, + "properties": { + "startId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "endId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 546, + "type": "CDG", + "startNode": 139, + "endNode": 138, + "properties": { + "startId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "endId": "ffffffff-e0b5-31a7-0000-0000337f71be", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 547, + "type": "CDG", + "startNode": 139, + "endNode": 199, + "properties": { + "startId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "endId": "ffffffff-e3f2-8aa4-ffff-ffffdd2295e7", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 548, + "type": "CDG", + "startNode": 139, + "endNode": 146, + "properties": { + "startId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "endId": "ffffffff-e3f2-8aa4-0000-000008341092", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 549, + "type": "CDG", + "startNode": 139, + "endNode": 147, + "properties": { + "startId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "endId": "ffffffff-972d-b574-0000-000068b3300e", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 550, + "type": "CDG", + "startNode": 139, + "endNode": 150, + "properties": { + "startId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "endId": "ffffffff-972d-b574-ffff-ffffbb235619", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 551, + "type": "CDG", + "startNode": 139, + "endNode": 148, + "properties": { + "startId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "endId": "ffffffff-e3f2-8aa4-ffff-ffff972db574", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 552, + "type": "CDG", + "startNode": 139, + "endNode": 151, + "properties": { + "startId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "endId": "ffffffff-e0b5-31a7-ffff-ffffe3f28aa4", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 553, + "type": "CDG", + "startNode": 139, + "endNode": 209, + "properties": { + "startId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "endId": "00000000-0e9a-f3aa-0000-000050376ab3", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 554, + "type": "CDG", + "startNode": 139, + "endNode": 156, + "properties": { + "startId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "endId": "00000000-5bdb-7ad6-0000-00000e9af3aa", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 555, + "type": "CDG", + "startNode": 139, + "endNode": 160, + "properties": { + "startId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "endId": "00000000-5bdb-7ad6-0000-0000270fb0f2", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 556, + "type": "CDG", + "startNode": 139, + "endNode": 158, + "properties": { + "startId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "endId": "ffffffff-c2ea-6abd-0000-00005bdb7ad6", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 557, + "type": "CDG", + "startNode": 139, + "endNode": 144, + "properties": { + "startId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "endId": "ffffffff-d2ff-f641-ffff-ffff8494d206", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 558, + "type": "CDG", + "startNode": 139, + "endNode": 143, + "properties": { + "startId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "endId": "ffffffff-e826-ab00-ffff-ffffd2fff641", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 559, + "type": "DFG", + "startNode": 141, + "endNode": 139, + "properties": { + "startId": "ffffffff-8d1a-9d77-ffff-ffff93af1981", + "endId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 560, + "type": "EOG", + "startNode": 139, + "endNode": 144, + "properties": { + "startId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "endId": "ffffffff-d2ff-f641-ffff-ffff8494d206", + "branch": true, + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 561, + "type": "EOG", + "startNode": 139, + "endNode": 138, + "properties": { + "startId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "endId": "ffffffff-e0b5-31a7-0000-0000337f71be", + "branch": false, + "unreachable": false, + "index": 1, + "overlaying": false + } + }, + { + "id": 562, + "type": "PDG", + "startNode": 139, + "endNode": 138, + "properties": { + "startId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "endId": "ffffffff-e0b5-31a7-0000-0000337f71be", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 563, + "type": "PDG", + "startNode": 139, + "endNode": 143, + "properties": { + "startId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "endId": "ffffffff-e826-ab00-ffff-ffffd2fff641", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 564, + "type": "PDG", + "startNode": 139, + "endNode": 146, + "properties": { + "startId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "endId": "ffffffff-e3f2-8aa4-0000-000008341092", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 565, + "type": "PDG", + "startNode": 139, + "endNode": 147, + "properties": { + "startId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "endId": "ffffffff-972d-b574-0000-000068b3300e", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 566, + "type": "PDG", + "startNode": 139, + "endNode": 151, + "properties": { + "startId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "endId": "ffffffff-e0b5-31a7-ffff-ffffe3f28aa4", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 567, + "type": "PDG", + "startNode": 139, + "endNode": 158, + "properties": { + "startId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "endId": "ffffffff-c2ea-6abd-0000-00005bdb7ad6", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 568, + "type": "PDG", + "startNode": 139, + "endNode": 160, + "properties": { + "startId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "endId": "00000000-5bdb-7ad6-0000-0000270fb0f2", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 569, + "type": "PDG", + "startNode": 139, + "endNode": 156, + "properties": { + "startId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "endId": "00000000-5bdb-7ad6-0000-00000e9af3aa", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 570, + "type": "PDG", + "startNode": 139, + "endNode": 144, + "properties": { + "startId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "endId": "ffffffff-d2ff-f641-ffff-ffff8494d206", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 571, + "type": "PDG", + "startNode": 139, + "endNode": 199, + "properties": { + "startId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "endId": "ffffffff-e3f2-8aa4-ffff-ffffdd2295e7", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 572, + "type": "PDG", + "startNode": 139, + "endNode": 148, + "properties": { + "startId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "endId": "ffffffff-e3f2-8aa4-ffff-ffff972db574", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 573, + "type": "PDG", + "startNode": 139, + "endNode": 209, + "properties": { + "startId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "endId": "00000000-0e9a-f3aa-0000-000050376ab3", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 574, + "type": "PDG", + "startNode": 139, + "endNode": 150, + "properties": { + "startId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "endId": "ffffffff-972d-b574-ffff-ffffbb235619", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 575, + "type": "SCOPE", + "startNode": 139, + "endNode": 95, + "properties": { + "startId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 576, + "type": "TYPE", + "startNode": 139, + "endNode": 67, + "properties": { + "startId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "endId": "00000000-0000-0000-0000-000000000020" + } + }, + { + "id": 577, + "type": "REFERS_TO", + "startNode": 141, + "endNode": 198, + "properties": { + "startId": "ffffffff-8d1a-9d77-ffff-ffff93af1981", + "endId": "ffffffff-e356-ea6f-0000-00004454d05a" + } + }, + { + "id": 578, + "type": "BB", + "startNode": 141, + "endNode": 219, + "properties": { + "startId": "ffffffff-8d1a-9d77-ffff-ffff93af1981", + "endId": "00000000-0000-0000-ffff-ffffcfdba135", + "index": 15, + "overlaying": true + } + }, + { + "id": 579, + "type": "LANGUAGE", + "startNode": 141, + "endNode": 45, + "properties": { + "startId": "ffffffff-8d1a-9d77-ffff-ffff93af1981", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 580, + "type": "MEMORY_ADDRESS", + "startNode": 141, + "endNode": 247, + "properties": { + "startId": "ffffffff-8d1a-9d77-ffff-ffff93af1981", + "endId": "00000000-0000-0000-0000-000036cf263d", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 581, + "type": "MEMORY_VALUE", + "startNode": 249, + "endNode": 141, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffe7ea92ab", + "endId": "ffffffff-8d1a-9d77-ffff-ffff93af1981", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 582, + "type": "DFG", + "startNode": 109, + "endNode": 141, + "properties": { + "startId": "ffffffff-e356-ea6f-ffff-ffff8749247f", + "endId": "ffffffff-8d1a-9d77-ffff-ffff93af1981", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 583, + "type": "EOG", + "startNode": 141, + "endNode": 139, + "properties": { + "startId": "ffffffff-8d1a-9d77-ffff-ffff93af1981", + "endId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 584, + "type": "PDG", + "startNode": 141, + "endNode": 139, + "properties": { + "startId": "ffffffff-8d1a-9d77-ffff-ffff93af1981", + "endId": "00000000-337f-71be-ffff-ffff8d1a9d77", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 585, + "type": "SCOPE", + "startNode": 141, + "endNode": 95, + "properties": { + "startId": "ffffffff-8d1a-9d77-ffff-ffff93af1981", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 586, + "type": "TYPE", + "startNode": 141, + "endNode": 67, + "properties": { + "startId": "ffffffff-8d1a-9d77-ffff-ffff93af1981", + "endId": "00000000-0000-0000-0000-000000000020" + } + }, + { + "id": 587, + "type": "STATEMENTS", + "startNode": 142, + "endNode": 143, + "properties": { + "startId": "00000000-337f-71be-ffff-ffffe826ab00", + "endId": "ffffffff-e826-ab00-ffff-ffffd2fff641", + "index": 0, + "overlaying": false + } + }, + { + "id": 588, + "type": "AST", + "startNode": 142, + "endNode": 143, + "properties": { + "startId": "00000000-337f-71be-ffff-ffffe826ab00", + "endId": "ffffffff-e826-ab00-ffff-ffffd2fff641" + } + }, + { + "id": 589, + "type": "LANGUAGE", + "startNode": 142, + "endNode": 45, + "properties": { + "startId": "00000000-337f-71be-ffff-ffffe826ab00", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 590, + "type": "SCOPE", + "startNode": 142, + "endNode": 95, + "properties": { + "startId": "00000000-337f-71be-ffff-ffffe826ab00", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 591, + "type": "TYPE", + "startNode": 142, + "endNode": 67, + "properties": { + "startId": "00000000-337f-71be-ffff-ffffe826ab00", + "endId": "00000000-0000-0000-0000-000000000020" + } + }, + { + "id": 592, + "type": "RETURN_VALUE", + "startNode": 143, + "endNode": 144, + "properties": { + "startId": "ffffffff-e826-ab00-ffff-ffffd2fff641", + "endId": "ffffffff-d2ff-f641-ffff-ffff8494d206" + } + }, + { + "id": 593, + "type": "RETURN_VALUES", + "startNode": 143, + "endNode": 144, + "properties": { + "startId": "ffffffff-e826-ab00-ffff-ffffd2fff641", + "endId": "ffffffff-d2ff-f641-ffff-ffff8494d206", + "index": 0, + "overlaying": false + } + }, + { + "id": 594, + "type": "AST", + "startNode": 143, + "endNode": 144, + "properties": { + "startId": "ffffffff-e826-ab00-ffff-ffffd2fff641", + "endId": "ffffffff-d2ff-f641-ffff-ffff8494d206" + } + }, + { + "id": 595, + "type": "BB", + "startNode": 143, + "endNode": 220, + "properties": { + "startId": "ffffffff-e826-ab00-ffff-ffffd2fff641", + "endId": "00000000-0000-0000-ffff-ffff8be71890", + "index": 1, + "overlaying": true + } + }, + { + "id": 596, + "type": "LANGUAGE", + "startNode": 143, + "endNode": 45, + "properties": { + "startId": "ffffffff-e826-ab00-ffff-ffffd2fff641", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 597, + "type": "DFG", + "startNode": 144, + "endNode": 143, + "properties": { + "startId": "ffffffff-d2ff-f641-ffff-ffff8494d206", + "endId": "ffffffff-e826-ab00-ffff-ffffd2fff641", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 598, + "type": "PDG", + "startNode": 143, + "endNode": 94, + "properties": { + "startId": "ffffffff-e826-ab00-ffff-ffffd2fff641", + "endId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 599, + "type": "SCOPE", + "startNode": 143, + "endNode": 95, + "properties": { + "startId": "ffffffff-e826-ab00-ffff-ffffd2fff641", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 600, + "type": "TYPE", + "startNode": 143, + "endNode": 67, + "properties": { + "startId": "ffffffff-e826-ab00-ffff-ffffd2fff641", + "endId": "00000000-0000-0000-0000-000000000020" + } + }, + { + "id": 601, + "type": "BB", + "startNode": 144, + "endNode": 220, + "properties": { + "startId": "ffffffff-d2ff-f641-ffff-ffff8494d206", + "endId": "00000000-0000-0000-ffff-ffff8be71890", + "index": 0, + "overlaying": true + } + }, + { + "id": 602, + "type": "LANGUAGE", + "startNode": 144, + "endNode": 45, + "properties": { + "startId": "ffffffff-d2ff-f641-ffff-ffff8494d206", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 603, + "type": "EOG", + "startNode": 144, + "endNode": 143, + "properties": { + "startId": "ffffffff-d2ff-f641-ffff-ffff8494d206", + "endId": "ffffffff-e826-ab00-ffff-ffffd2fff641", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 604, + "type": "PDG", + "startNode": 144, + "endNode": 143, + "properties": { + "startId": "ffffffff-d2ff-f641-ffff-ffff8494d206", + "endId": "ffffffff-e826-ab00-ffff-ffffd2fff641", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 605, + "type": "SCOPE", + "startNode": 144, + "endNode": 95, + "properties": { + "startId": "ffffffff-d2ff-f641-ffff-ffff8494d206", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 606, + "type": "TYPE", + "startNode": 144, + "endNode": 50, + "properties": { + "startId": "ffffffff-d2ff-f641-ffff-ffff8494d206", + "endId": "00000000-0000-0000-0000-000000007d14" + } + }, + { + "id": 607, + "type": "DECLARATIONS", + "startNode": 151, + "endNode": 199, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffe3f28aa4", + "endId": "ffffffff-e3f2-8aa4-ffff-ffffdd2295e7", + "index": 0, + "overlaying": false + } + }, + { + "id": 608, + "type": "LHS", + "startNode": 151, + "endNode": 146, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffe3f28aa4", + "endId": "ffffffff-e3f2-8aa4-0000-000008341092", + "index": 0, + "overlaying": false + } + }, + { + "id": 609, + "type": "RHS", + "startNode": 151, + "endNode": 148, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffe3f28aa4", + "endId": "ffffffff-e3f2-8aa4-ffff-ffff972db574", + "index": 0, + "overlaying": false + } + }, + { + "id": 610, + "type": "AST", + "startNode": 151, + "endNode": 146, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffe3f28aa4", + "endId": "ffffffff-e3f2-8aa4-0000-000008341092" + } + }, + { + "id": 611, + "type": "AST", + "startNode": 151, + "endNode": 148, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffe3f28aa4", + "endId": "ffffffff-e3f2-8aa4-ffff-ffff972db574" + } + }, + { + "id": 612, + "type": "AST", + "startNode": 151, + "endNode": 199, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffe3f28aa4", + "endId": "ffffffff-e3f2-8aa4-ffff-ffffdd2295e7" + } + }, + { + "id": 613, + "type": "BB", + "startNode": 151, + "endNode": 221, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffe3f28aa4", + "endId": "00000000-0000-0000-ffff-ffffb6387feb", + "index": 6, + "overlaying": true + } + }, + { + "id": 614, + "type": "LANGUAGE", + "startNode": 151, + "endNode": 45, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffe3f28aa4", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 615, + "type": "EOG", + "startNode": 151, + "endNode": 209, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffe3f28aa4", + "endId": "00000000-0e9a-f3aa-0000-000050376ab3", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 616, + "type": "SCOPE", + "startNode": 151, + "endNode": 95, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffe3f28aa4", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 617, + "type": "TYPE", + "startNode": 151, + "endNode": 67, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffe3f28aa4", + "endId": "00000000-0000-0000-0000-000000000020" + } + }, + { + "id": 618, + "type": "REFERS_TO", + "startNode": 146, + "endNode": 199, + "properties": { + "startId": "ffffffff-e3f2-8aa4-0000-000008341092", + "endId": "ffffffff-e3f2-8aa4-ffff-ffffdd2295e7" + } + }, + { + "id": 619, + "type": "BB", + "startNode": 146, + "endNode": 221, + "properties": { + "startId": "ffffffff-e3f2-8aa4-0000-000008341092", + "endId": "00000000-0000-0000-ffff-ffffb6387feb", + "index": 2, + "overlaying": true + } + }, + { + "id": 620, + "type": "LANGUAGE", + "startNode": 146, + "endNode": 45, + "properties": { + "startId": "ffffffff-e3f2-8aa4-0000-000008341092", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 621, + "type": "MEMORY_ADDRESS", + "startNode": 146, + "endNode": 250, + "properties": { + "startId": "ffffffff-e3f2-8aa4-0000-000008341092", + "endId": "00000000-0000-0000-ffff-ffffcf97f5a3", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 622, + "type": "MEMORY_VALUE", + "startNode": 242, + "endNode": 146, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffb37d3974", + "endId": "ffffffff-e3f2-8aa4-0000-000008341092", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 623, + "type": "DFG", + "startNode": 148, + "endNode": 146, + "properties": { + "startId": "ffffffff-e3f2-8aa4-ffff-ffff972db574", + "endId": "ffffffff-e3f2-8aa4-0000-000008341092", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 624, + "type": "EOG", + "startNode": 146, + "endNode": 147, + "properties": { + "startId": "ffffffff-e3f2-8aa4-0000-000008341092", + "endId": "ffffffff-972d-b574-0000-000068b3300e", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 625, + "type": "PDG", + "startNode": 146, + "endNode": 160, + "properties": { + "startId": "ffffffff-e3f2-8aa4-0000-000008341092", + "endId": "00000000-5bdb-7ad6-0000-0000270fb0f2", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 626, + "type": "PDG", + "startNode": 146, + "endNode": 164, + "properties": { + "startId": "ffffffff-e3f2-8aa4-0000-000008341092", + "endId": "00000000-5d02-9726-0000-000040bd4f16", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 627, + "type": "SCOPE", + "startNode": 146, + "endNode": 95, + "properties": { + "startId": "ffffffff-e3f2-8aa4-0000-000008341092", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 628, + "type": "TYPE", + "startNode": 146, + "endNode": 119, + "properties": { + "startId": "ffffffff-e3f2-8aa4-0000-000008341092", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 629, + "type": "ARGUMENTS", + "startNode": 148, + "endNode": 150, + "properties": { + "startId": "ffffffff-e3f2-8aa4-ffff-ffff972db574", + "endId": "ffffffff-972d-b574-ffff-ffffbb235619", + "index": 0, + "overlaying": false + } + }, + { + "id": 630, + "type": "INVOKES", + "startNode": 148, + "endNode": 117, + "properties": { + "startId": "ffffffff-e3f2-8aa4-ffff-ffff972db574", + "endId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "dynamicInvoke": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 631, + "type": "OPERATOR_ARGUMENTS", + "startNode": 148, + "endNode": 150, + "properties": { + "startId": "ffffffff-e3f2-8aa4-ffff-ffff972db574", + "endId": "ffffffff-972d-b574-ffff-ffffbb235619" + } + }, + { + "id": 632, + "type": "OPERATOR_BASE", + "startNode": 148, + "endNode": 147, + "properties": { + "startId": "ffffffff-e3f2-8aa4-ffff-ffff972db574", + "endId": "ffffffff-972d-b574-0000-000068b3300e" + } + }, + { + "id": 633, + "type": "SECONDARY_TYPES", + "startNode": 148, + "endNode": 67, + "properties": { + "startId": "ffffffff-e3f2-8aa4-ffff-ffff972db574", + "endId": "00000000-0000-0000-0000-000000000020" + } + }, + { + "id": 634, + "type": "SIGNATURE", + "startNode": 148, + "endNode": 67, + "properties": { + "startId": "ffffffff-e3f2-8aa4-ffff-ffff972db574", + "endId": "00000000-0000-0000-0000-000000000020" + } + }, + { + "id": 635, + "type": "AST", + "startNode": 148, + "endNode": 150, + "properties": { + "startId": "ffffffff-e3f2-8aa4-ffff-ffff972db574", + "endId": "ffffffff-972d-b574-ffff-ffffbb235619" + } + }, + { + "id": 636, + "type": "AST", + "startNode": 148, + "endNode": 147, + "properties": { + "startId": "ffffffff-e3f2-8aa4-ffff-ffff972db574", + "endId": "ffffffff-972d-b574-0000-000068b3300e" + } + }, + { + "id": 637, + "type": "BB", + "startNode": 148, + "endNode": 221, + "properties": { + "startId": "ffffffff-e3f2-8aa4-ffff-ffff972db574", + "endId": "00000000-0000-0000-ffff-ffffb6387feb", + "index": 5, + "overlaying": true + } + }, + { + "id": 638, + "type": "LANGUAGE", + "startNode": 148, + "endNode": 45, + "properties": { + "startId": "ffffffff-e3f2-8aa4-ffff-ffff972db574", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 639, + "type": "DFG", + "startNode": 117, + "endNode": 148, + "properties": { + "startId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "endId": "ffffffff-e3f2-8aa4-ffff-ffff972db574", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 640, + "type": "EOG", + "startNode": 148, + "endNode": 151, + "properties": { + "startId": "ffffffff-e3f2-8aa4-ffff-ffff972db574", + "endId": "ffffffff-e0b5-31a7-ffff-ffffe3f28aa4", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 641, + "type": "PDG", + "startNode": 148, + "endNode": 146, + "properties": { + "startId": "ffffffff-e3f2-8aa4-ffff-ffff972db574", + "endId": "ffffffff-e3f2-8aa4-0000-000008341092", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 642, + "type": "SCOPE", + "startNode": 148, + "endNode": 95, + "properties": { + "startId": "ffffffff-e3f2-8aa4-ffff-ffff972db574", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 643, + "type": "TYPE", + "startNode": 148, + "endNode": 119, + "properties": { + "startId": "ffffffff-e3f2-8aa4-ffff-ffff972db574", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 644, + "type": "REFERS_TO", + "startNode": 150, + "endNode": 198, + "properties": { + "startId": "ffffffff-972d-b574-ffff-ffffbb235619", + "endId": "ffffffff-e356-ea6f-0000-00004454d05a" + } + }, + { + "id": 645, + "type": "BB", + "startNode": 150, + "endNode": 221, + "properties": { + "startId": "ffffffff-972d-b574-ffff-ffffbb235619", + "endId": "00000000-0000-0000-ffff-ffffb6387feb", + "index": 4, + "overlaying": true + } + }, + { + "id": 646, + "type": "LANGUAGE", + "startNode": 150, + "endNode": 45, + "properties": { + "startId": "ffffffff-972d-b574-ffff-ffffbb235619", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 647, + "type": "MEMORY_ADDRESS", + "startNode": 150, + "endNode": 247, + "properties": { + "startId": "ffffffff-972d-b574-ffff-ffffbb235619", + "endId": "00000000-0000-0000-0000-000036cf263d", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 648, + "type": "MEMORY_VALUE", + "startNode": 249, + "endNode": 150, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffe7ea92ab", + "endId": "ffffffff-972d-b574-ffff-ffffbb235619", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 649, + "type": "MEMORY_VALUE_USAGE", + "startNode": 150, + "endNode": 122, + "properties": { + "startId": "ffffffff-972d-b574-ffff-ffffbb235619", + "endId": "00000000-607b-117c-0000-00001a8925d5", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 650, + "type": "DFG", + "startNode": 109, + "endNode": 150, + "properties": { + "startId": "ffffffff-e356-ea6f-ffff-ffff8749247f", + "endId": "ffffffff-972d-b574-ffff-ffffbb235619", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 651, + "type": "EOG", + "startNode": 150, + "endNode": 148, + "properties": { + "startId": "ffffffff-972d-b574-ffff-ffffbb235619", + "endId": "ffffffff-e3f2-8aa4-ffff-ffff972db574", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 652, + "type": "PDG", + "startNode": 150, + "endNode": 122, + "properties": { + "startId": "ffffffff-972d-b574-ffff-ffffbb235619", + "endId": "00000000-607b-117c-0000-00001a8925d5", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 653, + "type": "SCOPE", + "startNode": 150, + "endNode": 95, + "properties": { + "startId": "ffffffff-972d-b574-ffff-ffffbb235619", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 654, + "type": "TYPE", + "startNode": 150, + "endNode": 67, + "properties": { + "startId": "ffffffff-972d-b574-ffff-ffffbb235619", + "endId": "00000000-0000-0000-0000-000000000020" + } + }, + { + "id": 655, + "type": "REFERS_TO", + "startNode": 147, + "endNode": 117, + "properties": { + "startId": "ffffffff-972d-b574-0000-000068b3300e", + "endId": "ffffffff-8b4e-acdb-0000-0000607b117c" + } + }, + { + "id": 656, + "type": "BB", + "startNode": 147, + "endNode": 221, + "properties": { + "startId": "ffffffff-972d-b574-0000-000068b3300e", + "endId": "00000000-0000-0000-ffff-ffffb6387feb", + "index": 3, + "overlaying": true + } + }, + { + "id": 657, + "type": "LANGUAGE", + "startNode": 147, + "endNode": 45, + "properties": { + "startId": "ffffffff-972d-b574-0000-000068b3300e", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 658, + "type": "MEMORY_VALUE", + "startNode": 117, + "endNode": 147, + "properties": { + "startId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "endId": "ffffffff-972d-b574-0000-000068b3300e", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 659, + "type": "DFG", + "startNode": 117, + "endNode": 147, + "properties": { + "startId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "endId": "ffffffff-972d-b574-0000-000068b3300e", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 660, + "type": "EOG", + "startNode": 147, + "endNode": 150, + "properties": { + "startId": "ffffffff-972d-b574-0000-000068b3300e", + "endId": "ffffffff-972d-b574-ffff-ffffbb235619", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 661, + "type": "SCOPE", + "startNode": 147, + "endNode": 95, + "properties": { + "startId": "ffffffff-972d-b574-0000-000068b3300e", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 662, + "type": "TYPE", + "startNode": 147, + "endNode": 120, + "properties": { + "startId": "ffffffff-972d-b574-0000-000068b3300e", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 663, + "type": "BB", + "startNode": 199, + "endNode": 221, + "properties": { + "startId": "ffffffff-e3f2-8aa4-ffff-ffffdd2295e7", + "endId": "00000000-0000-0000-ffff-ffffb6387feb", + "index": 1, + "overlaying": true + } + }, + { + "id": 664, + "type": "LANGUAGE", + "startNode": 199, + "endNode": 45, + "properties": { + "startId": "ffffffff-e3f2-8aa4-ffff-ffffdd2295e7", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 665, + "type": "MEMORY_ADDRESS", + "startNode": 199, + "endNode": 250, + "properties": { + "startId": "ffffffff-e3f2-8aa4-ffff-ffffdd2295e7", + "endId": "00000000-0000-0000-ffff-ffffcf97f5a3", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 666, + "type": "EOG", + "startNode": 199, + "endNode": 146, + "properties": { + "startId": "ffffffff-e3f2-8aa4-ffff-ffffdd2295e7", + "endId": "ffffffff-e3f2-8aa4-0000-000008341092", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 667, + "type": "SCOPE", + "startNode": 199, + "endNode": 95, + "properties": { + "startId": "ffffffff-e3f2-8aa4-ffff-ffffdd2295e7", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 668, + "type": "TYPE", + "startNode": 199, + "endNode": 119, + "properties": { + "startId": "ffffffff-e3f2-8aa4-ffff-ffffdd2295e7", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 669, + "type": "USAGE", + "startNode": 199, + "endNode": 146, + "properties": { + "startId": "ffffffff-e3f2-8aa4-ffff-ffffdd2295e7", + "endId": "ffffffff-e3f2-8aa4-0000-000008341092", + "access": "WRITE", + "index": 0, + "overlaying": false + } + }, + { + "id": 670, + "type": "USAGE", + "startNode": 199, + "endNode": 160, + "properties": { + "startId": "ffffffff-e3f2-8aa4-ffff-ffffdd2295e7", + "endId": "00000000-5bdb-7ad6-0000-0000270fb0f2", + "access": "READ", + "index": 1, + "overlaying": false + } + }, + { + "id": 671, + "type": "USAGE", + "startNode": 199, + "endNode": 164, + "properties": { + "startId": "ffffffff-e3f2-8aa4-ffff-ffffdd2295e7", + "endId": "00000000-5d02-9726-0000-000040bd4f16", + "access": "READ", + "index": 2, + "overlaying": false + } + }, + { + "id": 672, + "type": "BRANCHED_BY", + "startNode": 152, + "endNode": 158, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffc2ea6abd", + "endId": "ffffffff-c2ea-6abd-0000-00005bdb7ad6" + } + }, + { + "id": 673, + "type": "CONDITION", + "startNode": 152, + "endNode": 158, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffc2ea6abd", + "endId": "ffffffff-c2ea-6abd-0000-00005bdb7ad6", + "overlaying": false + } + }, + { + "id": 674, + "type": "THEN_STATEMENT", + "startNode": 152, + "endNode": 161, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffc2ea6abd", + "endId": "ffffffff-c2ea-6abd-ffff-ffffe8714aa1", + "overlaying": false + } + }, + { + "id": 675, + "type": "AST", + "startNode": 152, + "endNode": 158, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffc2ea6abd", + "endId": "ffffffff-c2ea-6abd-0000-00005bdb7ad6" + } + }, + { + "id": 676, + "type": "AST", + "startNode": 152, + "endNode": 161, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffc2ea6abd", + "endId": "ffffffff-c2ea-6abd-ffff-ffffe8714aa1" + } + }, + { + "id": 677, + "type": "BB", + "startNode": 152, + "endNode": 223, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffc2ea6abd", + "endId": "00000000-0000-0000-ffff-ffffbec2181b", + "index": 0, + "overlaying": true + } + }, + { + "id": 678, + "type": "LANGUAGE", + "startNode": 152, + "endNode": 45, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffc2ea6abd", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 679, + "type": "EOG", + "startNode": 152, + "endNode": 170, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffc2ea6abd", + "endId": "00000000-0af9-7fa8-0000-00003673e58f", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 680, + "type": "SCOPE", + "startNode": 152, + "endNode": 95, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffc2ea6abd", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 681, + "type": "TYPE", + "startNode": 152, + "endNode": 67, + "properties": { + "startId": "ffffffff-e0b5-31a7-ffff-ffffc2ea6abd", + "endId": "00000000-0000-0000-0000-000000000020" + } + }, + { + "id": 682, + "type": "BASE", + "startNode": 158, + "endNode": 209, + "properties": { + "startId": "ffffffff-c2ea-6abd-0000-00005bdb7ad6", + "endId": "00000000-0e9a-f3aa-0000-000050376ab3" + } + }, + { + "id": 683, + "type": "ARGUMENTS", + "startNode": 158, + "endNode": 160, + "properties": { + "startId": "ffffffff-c2ea-6abd-0000-00005bdb7ad6", + "endId": "00000000-5bdb-7ad6-0000-0000270fb0f2", + "index": 0, + "overlaying": false + } + }, + { + "id": 684, + "type": "AST", + "startNode": 158, + "endNode": 160, + "properties": { + "startId": "ffffffff-c2ea-6abd-0000-00005bdb7ad6", + "endId": "00000000-5bdb-7ad6-0000-0000270fb0f2" + } + }, + { + "id": 685, + "type": "AST", + "startNode": 158, + "endNode": 156, + "properties": { + "startId": "ffffffff-c2ea-6abd-0000-00005bdb7ad6", + "endId": "00000000-5bdb-7ad6-0000-00000e9af3aa" + } + }, + { + "id": 686, + "type": "BB", + "startNode": 158, + "endNode": 221, + "properties": { + "startId": "ffffffff-c2ea-6abd-0000-00005bdb7ad6", + "endId": "00000000-0000-0000-ffff-ffffb6387feb", + "index": 10, + "overlaying": true + } + }, + { + "id": 687, + "type": "LANGUAGE", + "startNode": 158, + "endNode": 45, + "properties": { + "startId": "ffffffff-c2ea-6abd-0000-00005bdb7ad6", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 688, + "type": "CDG", + "startNode": 158, + "endNode": 163, + "properties": { + "startId": "ffffffff-c2ea-6abd-0000-00005bdb7ad6", + "endId": "00000000-5d02-9726-ffff-ffff9f146bea", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 689, + "type": "CDG", + "startNode": 158, + "endNode": 164, + "properties": { + "startId": "ffffffff-c2ea-6abd-0000-00005bdb7ad6", + "endId": "00000000-5d02-9726-0000-000040bd4f16", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 690, + "type": "CDG", + "startNode": 158, + "endNode": 165, + "properties": { + "startId": "ffffffff-c2ea-6abd-0000-00005bdb7ad6", + "endId": "ffffffff-dc09-4ac0-0000-00005d029726", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 691, + "type": "CDG", + "startNode": 158, + "endNode": 162, + "properties": { + "startId": "ffffffff-c2ea-6abd-0000-00005bdb7ad6", + "endId": "ffffffff-e871-4aa1-ffff-ffffdc094ac0", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 692, + "type": "CDG", + "startNode": 158, + "endNode": 152, + "properties": { + "startId": "ffffffff-c2ea-6abd-0000-00005bdb7ad6", + "endId": "ffffffff-e0b5-31a7-ffff-ffffc2ea6abd", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 693, + "type": "CDG", + "startNode": 158, + "endNode": 170, + "properties": { + "startId": "ffffffff-c2ea-6abd-0000-00005bdb7ad6", + "endId": "00000000-0af9-7fa8-0000-00003673e58f", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 694, + "type": "CDG", + "startNode": 158, + "endNode": 169, + "properties": { + "startId": "ffffffff-c2ea-6abd-0000-00005bdb7ad6", + "endId": "ffffffff-e0b5-31a7-0000-00000af97fa8", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 695, + "type": "DFG", + "startNode": 209, + "endNode": 158, + "properties": { + "startId": "00000000-0e9a-f3aa-0000-000050376ab3", + "endId": "ffffffff-c2ea-6abd-0000-00005bdb7ad6", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 696, + "type": "DFG", + "startNode": 160, + "endNode": 158, + "properties": { + "startId": "00000000-5bdb-7ad6-0000-0000270fb0f2", + "endId": "ffffffff-c2ea-6abd-0000-00005bdb7ad6", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 697, + "type": "EOG", + "startNode": 158, + "endNode": 163, + "properties": { + "startId": "ffffffff-c2ea-6abd-0000-00005bdb7ad6", + "endId": "00000000-5d02-9726-ffff-ffff9f146bea", + "branch": true, + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 698, + "type": "EOG", + "startNode": 158, + "endNode": 152, + "properties": { + "startId": "ffffffff-c2ea-6abd-0000-00005bdb7ad6", + "endId": "ffffffff-e0b5-31a7-ffff-ffffc2ea6abd", + "branch": false, + "unreachable": false, + "index": 1, + "overlaying": false + } + }, + { + "id": 699, + "type": "PDG", + "startNode": 158, + "endNode": 152, + "properties": { + "startId": "ffffffff-c2ea-6abd-0000-00005bdb7ad6", + "endId": "ffffffff-e0b5-31a7-ffff-ffffc2ea6abd", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 700, + "type": "PDG", + "startNode": 158, + "endNode": 162, + "properties": { + "startId": "ffffffff-c2ea-6abd-0000-00005bdb7ad6", + "endId": "ffffffff-e871-4aa1-ffff-ffffdc094ac0", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 701, + "type": "PDG", + "startNode": 158, + "endNode": 170, + "properties": { + "startId": "ffffffff-c2ea-6abd-0000-00005bdb7ad6", + "endId": "00000000-0af9-7fa8-0000-00003673e58f", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 702, + "type": "PDG", + "startNode": 158, + "endNode": 165, + "properties": { + "startId": "ffffffff-c2ea-6abd-0000-00005bdb7ad6", + "endId": "ffffffff-dc09-4ac0-0000-00005d029726", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 703, + "type": "PDG", + "startNode": 158, + "endNode": 163, + "properties": { + "startId": "ffffffff-c2ea-6abd-0000-00005bdb7ad6", + "endId": "00000000-5d02-9726-ffff-ffff9f146bea", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 704, + "type": "PDG", + "startNode": 158, + "endNode": 169, + "properties": { + "startId": "ffffffff-c2ea-6abd-0000-00005bdb7ad6", + "endId": "ffffffff-e0b5-31a7-0000-00000af97fa8", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 705, + "type": "PDG", + "startNode": 158, + "endNode": 164, + "properties": { + "startId": "ffffffff-c2ea-6abd-0000-00005bdb7ad6", + "endId": "00000000-5d02-9726-0000-000040bd4f16", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 706, + "type": "OPERATOR_ARGUMENTS", + "startNode": 158, + "endNode": 160, + "properties": { + "startId": "ffffffff-c2ea-6abd-0000-00005bdb7ad6", + "endId": "00000000-5bdb-7ad6-0000-0000270fb0f2" + } + }, + { + "id": 707, + "type": "OPERATOR_BASE", + "startNode": 158, + "endNode": 156, + "properties": { + "startId": "ffffffff-c2ea-6abd-0000-00005bdb7ad6", + "endId": "00000000-5bdb-7ad6-0000-00000e9af3aa" + } + }, + { + "id": 708, + "type": "SCOPE", + "startNode": 158, + "endNode": 95, + "properties": { + "startId": "ffffffff-c2ea-6abd-0000-00005bdb7ad6", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 709, + "type": "SECONDARY_TYPES", + "startNode": 158, + "endNode": 119, + "properties": { + "startId": "ffffffff-c2ea-6abd-0000-00005bdb7ad6", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 710, + "type": "SIGNATURE", + "startNode": 158, + "endNode": 119, + "properties": { + "startId": "ffffffff-c2ea-6abd-0000-00005bdb7ad6", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 711, + "type": "TYPE", + "startNode": 158, + "endNode": 67, + "properties": { + "startId": "ffffffff-c2ea-6abd-0000-00005bdb7ad6", + "endId": "00000000-0000-0000-0000-000000000020" + } + }, + { + "id": 712, + "type": "REFERS_TO", + "startNode": 160, + "endNode": 199, + "properties": { + "startId": "00000000-5bdb-7ad6-0000-0000270fb0f2", + "endId": "ffffffff-e3f2-8aa4-ffff-ffffdd2295e7" + } + }, + { + "id": 713, + "type": "BB", + "startNode": 160, + "endNode": 221, + "properties": { + "startId": "00000000-5bdb-7ad6-0000-0000270fb0f2", + "endId": "00000000-0000-0000-ffff-ffffb6387feb", + "index": 9, + "overlaying": true + } + }, + { + "id": 714, + "type": "LANGUAGE", + "startNode": 160, + "endNode": 45, + "properties": { + "startId": "00000000-5bdb-7ad6-0000-0000270fb0f2", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 715, + "type": "MEMORY_ADDRESS", + "startNode": 160, + "endNode": 250, + "properties": { + "startId": "00000000-5bdb-7ad6-0000-0000270fb0f2", + "endId": "00000000-0000-0000-ffff-ffffcf97f5a3", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 716, + "type": "MEMORY_VALUE", + "startNode": 242, + "endNode": 160, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffb37d3974", + "endId": "00000000-5bdb-7ad6-0000-0000270fb0f2", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 717, + "type": "DFG", + "startNode": 146, + "endNode": 160, + "properties": { + "startId": "ffffffff-e3f2-8aa4-0000-000008341092", + "endId": "00000000-5bdb-7ad6-0000-0000270fb0f2", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 718, + "type": "EOG", + "startNode": 160, + "endNode": 158, + "properties": { + "startId": "00000000-5bdb-7ad6-0000-0000270fb0f2", + "endId": "ffffffff-c2ea-6abd-0000-00005bdb7ad6", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 719, + "type": "PDG", + "startNode": 160, + "endNode": 158, + "properties": { + "startId": "00000000-5bdb-7ad6-0000-0000270fb0f2", + "endId": "ffffffff-c2ea-6abd-0000-00005bdb7ad6", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 720, + "type": "SCOPE", + "startNode": 160, + "endNode": 95, + "properties": { + "startId": "00000000-5bdb-7ad6-0000-0000270fb0f2", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 721, + "type": "TYPE", + "startNode": 160, + "endNode": 119, + "properties": { + "startId": "00000000-5bdb-7ad6-0000-0000270fb0f2", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 722, + "type": "BASE", + "startNode": 156, + "endNode": 209, + "properties": { + "startId": "00000000-5bdb-7ad6-0000-00000e9af3aa", + "endId": "00000000-0e9a-f3aa-0000-000050376ab3", + "overlaying": false + } + }, + { + "id": 723, + "type": "OPERATOR_BASE", + "startNode": 156, + "endNode": 209, + "properties": { + "startId": "00000000-5bdb-7ad6-0000-00000e9af3aa", + "endId": "00000000-0e9a-f3aa-0000-000050376ab3" + } + }, + { + "id": 724, + "type": "AST", + "startNode": 156, + "endNode": 209, + "properties": { + "startId": "00000000-5bdb-7ad6-0000-00000e9af3aa", + "endId": "00000000-0e9a-f3aa-0000-000050376ab3" + } + }, + { + "id": 725, + "type": "BB", + "startNode": 156, + "endNode": 221, + "properties": { + "startId": "00000000-5bdb-7ad6-0000-00000e9af3aa", + "endId": "00000000-0000-0000-ffff-ffffb6387feb", + "index": 8, + "overlaying": true + } + }, + { + "id": 726, + "type": "LANGUAGE", + "startNode": 156, + "endNode": 45, + "properties": { + "startId": "00000000-5bdb-7ad6-0000-00000e9af3aa", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 727, + "type": "MEMORY_VALUE", + "startNode": 251, + "endNode": 156, + "properties": { + "startId": "00000000-0000-0000-ffff-fffff7f6f97c", + "endId": "00000000-5bdb-7ad6-0000-00000e9af3aa", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 728, + "type": "DFG", + "startNode": 209, + "endNode": 156, + "properties": { + "startId": "00000000-0e9a-f3aa-0000-000050376ab3", + "endId": "00000000-5bdb-7ad6-0000-00000e9af3aa", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 729, + "type": "EOG", + "startNode": 156, + "endNode": 160, + "properties": { + "startId": "00000000-5bdb-7ad6-0000-00000e9af3aa", + "endId": "00000000-5bdb-7ad6-0000-0000270fb0f2", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 730, + "type": "SCOPE", + "startNode": 156, + "endNode": 95, + "properties": { + "startId": "00000000-5bdb-7ad6-0000-00000e9af3aa", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 731, + "type": "TYPE", + "startNode": 156, + "endNode": 67, + "properties": { + "startId": "00000000-5bdb-7ad6-0000-00000e9af3aa", + "endId": "00000000-0000-0000-0000-000000000020" + } + }, + { + "id": 732, + "type": "BB", + "startNode": 209, + "endNode": 221, + "properties": { + "startId": "00000000-0e9a-f3aa-0000-000050376ab3", + "endId": "00000000-0000-0000-ffff-ffffb6387feb", + "index": 7, + "overlaying": true + } + }, + { + "id": 733, + "type": "LANGUAGE", + "startNode": 209, + "endNode": 45, + "properties": { + "startId": "00000000-0e9a-f3aa-0000-000050376ab3", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 734, + "type": "EOG", + "startNode": 209, + "endNode": 156, + "properties": { + "startId": "00000000-0e9a-f3aa-0000-000050376ab3", + "endId": "00000000-5bdb-7ad6-0000-00000e9af3aa", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 735, + "type": "PDG", + "startNode": 209, + "endNode": 158, + "properties": { + "startId": "00000000-0e9a-f3aa-0000-000050376ab3", + "endId": "ffffffff-c2ea-6abd-0000-00005bdb7ad6", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 736, + "type": "PDG", + "startNode": 209, + "endNode": 156, + "properties": { + "startId": "00000000-0e9a-f3aa-0000-000050376ab3", + "endId": "00000000-5bdb-7ad6-0000-00000e9af3aa", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 737, + "type": "SCOPE", + "startNode": 209, + "endNode": 95, + "properties": { + "startId": "00000000-0e9a-f3aa-0000-000050376ab3", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 738, + "type": "TYPE", + "startNode": 209, + "endNode": 67, + "properties": { + "startId": "00000000-0e9a-f3aa-0000-000050376ab3", + "endId": "00000000-0000-0000-0000-000000000020" + } + }, + { + "id": 739, + "type": "STATEMENTS", + "startNode": 161, + "endNode": 162, + "properties": { + "startId": "ffffffff-c2ea-6abd-ffff-ffffe8714aa1", + "endId": "ffffffff-e871-4aa1-ffff-ffffdc094ac0", + "index": 0, + "overlaying": false + } + }, + { + "id": 740, + "type": "AST", + "startNode": 161, + "endNode": 162, + "properties": { + "startId": "ffffffff-c2ea-6abd-ffff-ffffe8714aa1", + "endId": "ffffffff-e871-4aa1-ffff-ffffdc094ac0" + } + }, + { + "id": 741, + "type": "LANGUAGE", + "startNode": 161, + "endNode": 45, + "properties": { + "startId": "ffffffff-c2ea-6abd-ffff-ffffe8714aa1", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 742, + "type": "SCOPE", + "startNode": 161, + "endNode": 95, + "properties": { + "startId": "ffffffff-c2ea-6abd-ffff-ffffe8714aa1", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 743, + "type": "TYPE", + "startNode": 161, + "endNode": 67, + "properties": { + "startId": "ffffffff-c2ea-6abd-ffff-ffffe8714aa1", + "endId": "00000000-0000-0000-0000-000000000020" + } + }, + { + "id": 744, + "type": "RETURN_VALUE", + "startNode": 162, + "endNode": 165, + "properties": { + "startId": "ffffffff-e871-4aa1-ffff-ffffdc094ac0", + "endId": "ffffffff-dc09-4ac0-0000-00005d029726" + } + }, + { + "id": 745, + "type": "RETURN_VALUES", + "startNode": 162, + "endNode": 165, + "properties": { + "startId": "ffffffff-e871-4aa1-ffff-ffffdc094ac0", + "endId": "ffffffff-dc09-4ac0-0000-00005d029726", + "index": 0, + "overlaying": false + } + }, + { + "id": 746, + "type": "AST", + "startNode": 162, + "endNode": 165, + "properties": { + "startId": "ffffffff-e871-4aa1-ffff-ffffdc094ac0", + "endId": "ffffffff-dc09-4ac0-0000-00005d029726" + } + }, + { + "id": 747, + "type": "BB", + "startNode": 162, + "endNode": 222, + "properties": { + "startId": "ffffffff-e871-4aa1-ffff-ffffdc094ac0", + "endId": "00000000-0000-0000-ffff-ffff94f06d11", + "index": 3, + "overlaying": true + } + }, + { + "id": 748, + "type": "LANGUAGE", + "startNode": 162, + "endNode": 45, + "properties": { + "startId": "ffffffff-e871-4aa1-ffff-ffffdc094ac0", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 749, + "type": "DFG", + "startNode": 165, + "endNode": 162, + "properties": { + "startId": "ffffffff-dc09-4ac0-0000-00005d029726", + "endId": "ffffffff-e871-4aa1-ffff-ffffdc094ac0", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 750, + "type": "PDG", + "startNode": 162, + "endNode": 94, + "properties": { + "startId": "ffffffff-e871-4aa1-ffff-ffffdc094ac0", + "endId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 751, + "type": "SCOPE", + "startNode": 162, + "endNode": 95, + "properties": { + "startId": "ffffffff-e871-4aa1-ffff-ffffdc094ac0", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 752, + "type": "TYPE", + "startNode": 162, + "endNode": 67, + "properties": { + "startId": "ffffffff-e871-4aa1-ffff-ffffdc094ac0", + "endId": "00000000-0000-0000-0000-000000000020" + } + }, + { + "id": 753, + "type": "LHS", + "startNode": 165, + "endNode": 163, + "properties": { + "startId": "ffffffff-dc09-4ac0-0000-00005d029726", + "endId": "00000000-5d02-9726-ffff-ffff9f146bea", + "overlaying": false + } + }, + { + "id": 754, + "type": "OPERATOR_ARGUMENTS", + "startNode": 165, + "endNode": 164, + "properties": { + "startId": "ffffffff-dc09-4ac0-0000-00005d029726", + "endId": "00000000-5d02-9726-0000-000040bd4f16" + } + }, + { + "id": 755, + "type": "OPERATOR_BASE", + "startNode": 165, + "endNode": 163, + "properties": { + "startId": "ffffffff-dc09-4ac0-0000-00005d029726", + "endId": "00000000-5d02-9726-ffff-ffff9f146bea" + } + }, + { + "id": 756, + "type": "RHS", + "startNode": 165, + "endNode": 164, + "properties": { + "startId": "ffffffff-dc09-4ac0-0000-00005d029726", + "endId": "00000000-5d02-9726-0000-000040bd4f16", + "overlaying": false + } + }, + { + "id": 757, + "type": "AST", + "startNode": 165, + "endNode": 163, + "properties": { + "startId": "ffffffff-dc09-4ac0-0000-00005d029726", + "endId": "00000000-5d02-9726-ffff-ffff9f146bea" + } + }, + { + "id": 758, + "type": "AST", + "startNode": 165, + "endNode": 164, + "properties": { + "startId": "ffffffff-dc09-4ac0-0000-00005d029726", + "endId": "00000000-5d02-9726-0000-000040bd4f16" + } + }, + { + "id": 759, + "type": "BB", + "startNode": 165, + "endNode": 222, + "properties": { + "startId": "ffffffff-dc09-4ac0-0000-00005d029726", + "endId": "00000000-0000-0000-ffff-ffff94f06d11", + "index": 2, + "overlaying": true + } + }, + { + "id": 760, + "type": "LANGUAGE", + "startNode": 165, + "endNode": 45, + "properties": { + "startId": "ffffffff-dc09-4ac0-0000-00005d029726", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 761, + "type": "MEMORY_ADDRESS", + "startNode": 165, + "endNode": 252, + "properties": { + "startId": "ffffffff-dc09-4ac0-0000-00005d029726", + "endId": "00000000-0000-0000-0000-0000785b2bbb", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 762, + "type": "MEMORY_VALUE", + "startNode": 165, + "endNode": 165, + "properties": { + "startId": "ffffffff-dc09-4ac0-0000-00005d029726", + "endId": "ffffffff-dc09-4ac0-0000-00005d029726", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 763, + "type": "MEMORY_VALUE_USAGE", + "startNode": 165, + "endNode": 165, + "properties": { + "startId": "ffffffff-dc09-4ac0-0000-00005d029726", + "endId": "ffffffff-dc09-4ac0-0000-00005d029726", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 764, + "type": "DFG", + "startNode": 163, + "endNode": 165, + "properties": { + "startId": "00000000-5d02-9726-ffff-ffff9f146bea", + "endId": "ffffffff-dc09-4ac0-0000-00005d029726", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 765, + "type": "DFG", + "startNode": 164, + "endNode": 165, + "properties": { + "startId": "00000000-5d02-9726-0000-000040bd4f16", + "endId": "ffffffff-dc09-4ac0-0000-00005d029726", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 766, + "type": "EOG", + "startNode": 165, + "endNode": 162, + "properties": { + "startId": "ffffffff-dc09-4ac0-0000-00005d029726", + "endId": "ffffffff-e871-4aa1-ffff-ffffdc094ac0", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 767, + "type": "PDG", + "startNode": 165, + "endNode": 162, + "properties": { + "startId": "ffffffff-dc09-4ac0-0000-00005d029726", + "endId": "ffffffff-e871-4aa1-ffff-ffffdc094ac0", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 768, + "type": "SCOPE", + "startNode": 165, + "endNode": 95, + "properties": { + "startId": "ffffffff-dc09-4ac0-0000-00005d029726", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 769, + "type": "TYPE", + "startNode": 165, + "endNode": 50, + "properties": { + "startId": "ffffffff-dc09-4ac0-0000-00005d029726", + "endId": "00000000-0000-0000-0000-000000007d14" + } + }, + { + "id": 770, + "type": "BB", + "startNode": 163, + "endNode": 222, + "properties": { + "startId": "00000000-5d02-9726-ffff-ffff9f146bea", + "endId": "00000000-0000-0000-ffff-ffff94f06d11", + "index": 0, + "overlaying": true + } + }, + { + "id": 771, + "type": "LANGUAGE", + "startNode": 163, + "endNode": 45, + "properties": { + "startId": "00000000-5d02-9726-ffff-ffff9f146bea", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 772, + "type": "EOG", + "startNode": 163, + "endNode": 164, + "properties": { + "startId": "00000000-5d02-9726-ffff-ffff9f146bea", + "endId": "00000000-5d02-9726-0000-000040bd4f16", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 773, + "type": "PDG", + "startNode": 163, + "endNode": 165, + "properties": { + "startId": "00000000-5d02-9726-ffff-ffff9f146bea", + "endId": "ffffffff-dc09-4ac0-0000-00005d029726", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 774, + "type": "SCOPE", + "startNode": 163, + "endNode": 95, + "properties": { + "startId": "00000000-5d02-9726-ffff-ffff9f146bea", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 775, + "type": "TYPE", + "startNode": 163, + "endNode": 50, + "properties": { + "startId": "00000000-5d02-9726-ffff-ffff9f146bea", + "endId": "00000000-0000-0000-0000-000000007d14" + } + }, + { + "id": 776, + "type": "REFERS_TO", + "startNode": 164, + "endNode": 199, + "properties": { + "startId": "00000000-5d02-9726-0000-000040bd4f16", + "endId": "ffffffff-e3f2-8aa4-ffff-ffffdd2295e7" + } + }, + { + "id": 777, + "type": "BB", + "startNode": 164, + "endNode": 222, + "properties": { + "startId": "00000000-5d02-9726-0000-000040bd4f16", + "endId": "00000000-0000-0000-ffff-ffff94f06d11", + "index": 1, + "overlaying": true + } + }, + { + "id": 778, + "type": "LANGUAGE", + "startNode": 164, + "endNode": 45, + "properties": { + "startId": "00000000-5d02-9726-0000-000040bd4f16", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 779, + "type": "MEMORY_ADDRESS", + "startNode": 164, + "endNode": 250, + "properties": { + "startId": "00000000-5d02-9726-0000-000040bd4f16", + "endId": "00000000-0000-0000-ffff-ffffcf97f5a3", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 780, + "type": "MEMORY_VALUE", + "startNode": 242, + "endNode": 164, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffb37d3974", + "endId": "00000000-5d02-9726-0000-000040bd4f16", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 781, + "type": "DFG", + "startNode": 146, + "endNode": 164, + "properties": { + "startId": "ffffffff-e3f2-8aa4-0000-000008341092", + "endId": "00000000-5d02-9726-0000-000040bd4f16", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 782, + "type": "EOG", + "startNode": 164, + "endNode": 165, + "properties": { + "startId": "00000000-5d02-9726-0000-000040bd4f16", + "endId": "ffffffff-dc09-4ac0-0000-00005d029726", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 783, + "type": "PDG", + "startNode": 164, + "endNode": 165, + "properties": { + "startId": "00000000-5d02-9726-0000-000040bd4f16", + "endId": "ffffffff-dc09-4ac0-0000-00005d029726", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 784, + "type": "SCOPE", + "startNode": 164, + "endNode": 95, + "properties": { + "startId": "00000000-5d02-9726-0000-000040bd4f16", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 785, + "type": "TYPE", + "startNode": 164, + "endNode": 119, + "properties": { + "startId": "00000000-5d02-9726-0000-000040bd4f16", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 786, + "type": "RETURN_VALUE", + "startNode": 169, + "endNode": 170, + "properties": { + "startId": "ffffffff-e0b5-31a7-0000-00000af97fa8", + "endId": "00000000-0af9-7fa8-0000-00003673e58f" + } + }, + { + "id": 787, + "type": "RETURN_VALUES", + "startNode": 169, + "endNode": 170, + "properties": { + "startId": "ffffffff-e0b5-31a7-0000-00000af97fa8", + "endId": "00000000-0af9-7fa8-0000-00003673e58f", + "index": 0, + "overlaying": false + } + }, + { + "id": 788, + "type": "AST", + "startNode": 169, + "endNode": 170, + "properties": { + "startId": "ffffffff-e0b5-31a7-0000-00000af97fa8", + "endId": "00000000-0af9-7fa8-0000-00003673e58f" + } + }, + { + "id": 789, + "type": "BB", + "startNode": 169, + "endNode": 223, + "properties": { + "startId": "ffffffff-e0b5-31a7-0000-00000af97fa8", + "endId": "00000000-0000-0000-ffff-ffffbec2181b", + "index": 2, + "overlaying": true + } + }, + { + "id": 790, + "type": "LANGUAGE", + "startNode": 169, + "endNode": 45, + "properties": { + "startId": "ffffffff-e0b5-31a7-0000-00000af97fa8", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 791, + "type": "DFG", + "startNode": 170, + "endNode": 169, + "properties": { + "startId": "00000000-0af9-7fa8-0000-00003673e58f", + "endId": "ffffffff-e0b5-31a7-0000-00000af97fa8", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 792, + "type": "PDG", + "startNode": 169, + "endNode": 94, + "properties": { + "startId": "ffffffff-e0b5-31a7-0000-00000af97fa8", + "endId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 793, + "type": "SCOPE", + "startNode": 169, + "endNode": 95, + "properties": { + "startId": "ffffffff-e0b5-31a7-0000-00000af97fa8", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 794, + "type": "TYPE", + "startNode": 169, + "endNode": 67, + "properties": { + "startId": "ffffffff-e0b5-31a7-0000-00000af97fa8", + "endId": "00000000-0000-0000-0000-000000000020" + } + }, + { + "id": 795, + "type": "BB", + "startNode": 170, + "endNode": 223, + "properties": { + "startId": "00000000-0af9-7fa8-0000-00003673e58f", + "endId": "00000000-0000-0000-ffff-ffffbec2181b", + "index": 1, + "overlaying": true + } + }, + { + "id": 796, + "type": "LANGUAGE", + "startNode": 170, + "endNode": 45, + "properties": { + "startId": "00000000-0af9-7fa8-0000-00003673e58f", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 797, + "type": "EOG", + "startNode": 170, + "endNode": 169, + "properties": { + "startId": "00000000-0af9-7fa8-0000-00003673e58f", + "endId": "ffffffff-e0b5-31a7-0000-00000af97fa8", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 798, + "type": "PDG", + "startNode": 170, + "endNode": 169, + "properties": { + "startId": "00000000-0af9-7fa8-0000-00003673e58f", + "endId": "ffffffff-e0b5-31a7-0000-00000af97fa8", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 799, + "type": "SCOPE", + "startNode": 170, + "endNode": 95, + "properties": { + "startId": "00000000-0af9-7fa8-0000-00003673e58f", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 800, + "type": "TYPE", + "startNode": 170, + "endNode": 50, + "properties": { + "startId": "00000000-0af9-7fa8-0000-00003673e58f", + "endId": "00000000-0000-0000-0000-000000007d14" + } + }, + { + "id": 801, + "type": "LANGUAGE", + "startNode": 99, + "endNode": 45, + "properties": { + "startId": "ffffffff-a418-65eb-ffff-ffffe044e5b1", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 802, + "type": "MEMORY_ADDRESS", + "startNode": 99, + "endNode": 245, + "properties": { + "startId": "ffffffff-a418-65eb-ffff-ffffe044e5b1", + "endId": "00000000-0000-0000-0000-00005aa295ee", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 803, + "type": "MEMORY_VALUE", + "startNode": 246, + "endNode": 99, + "properties": { + "startId": "00000000-0000-0000-0000-00002dafac4b", + "endId": "ffffffff-a418-65eb-ffff-ffffe044e5b1", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 804, + "type": "MEMORY_VALUE", + "startNode": 184, + "endNode": 99, + "properties": { + "startId": "00000000-38ed-9433-0000-0000330b8b19", + "endId": "ffffffff-a418-65eb-ffff-ffffe044e5b1", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 805, + "type": "DFG", + "startNode": 184, + "endNode": 99, + "properties": { + "startId": "00000000-38ed-9433-0000-0000330b8b19", + "endId": "ffffffff-a418-65eb-ffff-ffffe044e5b1", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 806, + "type": "PDG", + "startNode": 99, + "endNode": 110, + "properties": { + "startId": "ffffffff-a418-65eb-ffff-ffffe044e5b1", + "endId": "ffffffff-a6fd-5622-ffff-fffffaee3c2b", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 807, + "type": "SCOPE", + "startNode": 99, + "endNode": 95, + "properties": { + "startId": "ffffffff-a418-65eb-ffff-ffffe044e5b1", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 808, + "type": "TYPE", + "startNode": 99, + "endNode": 98, + "properties": { + "startId": "ffffffff-a418-65eb-ffff-ffffe044e5b1", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 809, + "type": "USAGE", + "startNode": 99, + "endNode": 110, + "properties": { + "startId": "ffffffff-a418-65eb-ffff-ffffe044e5b1", + "endId": "ffffffff-a6fd-5622-ffff-fffffaee3c2b", + "access": "READ", + "index": 0, + "overlaying": false + } + }, + { + "id": 810, + "type": "BODY", + "startNode": 172, + "endNode": 179, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffbc61cc17", + "endId": "ffffffff-bc61-cc17-ffff-ffffe1e88b87", + "overlaying": false + } + }, + { + "id": 811, + "type": "FIRST_BASIC_BLOCK", + "startNode": 172, + "endNode": 224, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffbc61cc17", + "endId": "00000000-0000-0000-ffff-fffff5138349" + } + }, + { + "id": 812, + "type": "PARAMETERS", + "startNode": 172, + "endNode": 177, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffbc61cc17", + "endId": "ffffffff-bc61-cc17-0000-00007a47bbbd", + "index": 0, + "overlaying": false + } + }, + { + "id": 813, + "type": "RETURN_TYPES", + "startNode": 172, + "endNode": 174, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffbc61cc17", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 814, + "type": "SECONDARY_TYPES", + "startNode": 172, + "endNode": 174, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffbc61cc17", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 815, + "type": "SECONDARY_TYPES", + "startNode": 172, + "endNode": 176, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffbc61cc17", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 816, + "type": "SIGNATURE_TYPES", + "startNode": 172, + "endNode": 176, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffbc61cc17", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 817, + "type": "AST", + "startNode": 172, + "endNode": 179, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffbc61cc17", + "endId": "ffffffff-bc61-cc17-ffff-ffffe1e88b87" + } + }, + { + "id": 818, + "type": "AST", + "startNode": 172, + "endNode": 177, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffbc61cc17", + "endId": "ffffffff-bc61-cc17-0000-00007a47bbbd" + } + }, + { + "id": 819, + "type": "BB", + "startNode": 172, + "endNode": 224, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffbc61cc17", + "endId": "00000000-0000-0000-ffff-fffff5138349", + "index": 0, + "overlaying": true + } + }, + { + "id": 820, + "type": "DECLARING_SCOPE", + "startNode": 172, + "endNode": 173, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffbc61cc17", + "endId": "00000000-0000-0000-ffff-ffffcfd82b56" + } + }, + { + "id": 821, + "type": "LANGUAGE", + "startNode": 172, + "endNode": 45, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffbc61cc17", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 822, + "type": "MEMORY_ADDRESS", + "startNode": 172, + "endNode": 253, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffbc61cc17", + "endId": "00000000-0000-0000-ffff-ffffdfbaf35a", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 823, + "type": "CDG", + "startNode": 172, + "endNode": 181, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffbc61cc17", + "endId": "00000000-38ed-9433-0000-00007631fd84", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 824, + "type": "CDG", + "startNode": 172, + "endNode": 184, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffbc61cc17", + "endId": "00000000-38ed-9433-0000-0000330b8b19", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 825, + "type": "CDG", + "startNode": 172, + "endNode": 182, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffbc61cc17", + "endId": "00000000-117a-269a-0000-000038ed9433", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 826, + "type": "CDG", + "startNode": 172, + "endNode": 180, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffbc61cc17", + "endId": "ffffffff-e1e8-8b87-0000-0000117a269a", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 827, + "type": "DFG", + "startNode": 180, + "endNode": 172, + "properties": { + "startId": "ffffffff-e1e8-8b87-0000-0000117a269a", + "endId": "ffffffff-a3b5-5fd5-ffff-ffffbc61cc17", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 828, + "type": "EOG", + "startNode": 172, + "endNode": 181, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffbc61cc17", + "endId": "00000000-38ed-9433-0000-00007631fd84", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 829, + "type": "PDG", + "startNode": 172, + "endNode": 180, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffbc61cc17", + "endId": "ffffffff-e1e8-8b87-0000-0000117a269a", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 830, + "type": "PDG", + "startNode": 172, + "endNode": 182, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffbc61cc17", + "endId": "00000000-117a-269a-0000-000038ed9433", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 831, + "type": "PDG", + "startNode": 172, + "endNode": 181, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffbc61cc17", + "endId": "00000000-38ed-9433-0000-00007631fd84", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 832, + "type": "PDG", + "startNode": 172, + "endNode": 184, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffbc61cc17", + "endId": "00000000-38ed-9433-0000-0000330b8b19", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 833, + "type": "SCOPE", + "startNode": 172, + "endNode": 63, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffbc61cc17", + "endId": "00000000-0000-0000-ffff-ffffd8828539" + } + }, + { + "id": 834, + "type": "TYPE", + "startNode": 172, + "endNode": 175, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffbc61cc17", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 835, + "type": "STATEMENTS", + "startNode": 179, + "endNode": 180, + "properties": { + "startId": "ffffffff-bc61-cc17-ffff-ffffe1e88b87", + "endId": "ffffffff-e1e8-8b87-0000-0000117a269a", + "index": 0, + "overlaying": false + } + }, + { + "id": 836, + "type": "AST", + "startNode": 179, + "endNode": 180, + "properties": { + "startId": "ffffffff-bc61-cc17-ffff-ffffe1e88b87", + "endId": "ffffffff-e1e8-8b87-0000-0000117a269a" + } + }, + { + "id": 837, + "type": "LANGUAGE", + "startNode": 179, + "endNode": 45, + "properties": { + "startId": "ffffffff-bc61-cc17-ffff-ffffe1e88b87", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 838, + "type": "SCOPE", + "startNode": 179, + "endNode": 173, + "properties": { + "startId": "ffffffff-bc61-cc17-ffff-ffffe1e88b87", + "endId": "00000000-0000-0000-ffff-ffffcfd82b56" + } + }, + { + "id": 839, + "type": "TYPE", + "startNode": 179, + "endNode": 67, + "properties": { + "startId": "ffffffff-bc61-cc17-ffff-ffffe1e88b87", + "endId": "00000000-0000-0000-0000-000000000020" + } + }, + { + "id": 840, + "type": "RETURN_VALUE", + "startNode": 180, + "endNode": 182, + "properties": { + "startId": "ffffffff-e1e8-8b87-0000-0000117a269a", + "endId": "00000000-117a-269a-0000-000038ed9433" + } + }, + { + "id": 841, + "type": "RETURN_VALUES", + "startNode": 180, + "endNode": 182, + "properties": { + "startId": "ffffffff-e1e8-8b87-0000-0000117a269a", + "endId": "00000000-117a-269a-0000-000038ed9433", + "index": 0, + "overlaying": false + } + }, + { + "id": 842, + "type": "AST", + "startNode": 180, + "endNode": 182, + "properties": { + "startId": "ffffffff-e1e8-8b87-0000-0000117a269a", + "endId": "00000000-117a-269a-0000-000038ed9433" + } + }, + { + "id": 843, + "type": "BB", + "startNode": 180, + "endNode": 224, + "properties": { + "startId": "ffffffff-e1e8-8b87-0000-0000117a269a", + "endId": "00000000-0000-0000-ffff-fffff5138349", + "index": 4, + "overlaying": true + } + }, + { + "id": 844, + "type": "LANGUAGE", + "startNode": 180, + "endNode": 45, + "properties": { + "startId": "ffffffff-e1e8-8b87-0000-0000117a269a", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 845, + "type": "DFG", + "startNode": 182, + "endNode": 180, + "properties": { + "startId": "00000000-117a-269a-0000-000038ed9433", + "endId": "ffffffff-e1e8-8b87-0000-0000117a269a", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 846, + "type": "PDG", + "startNode": 180, + "endNode": 172, + "properties": { + "startId": "ffffffff-e1e8-8b87-0000-0000117a269a", + "endId": "ffffffff-a3b5-5fd5-ffff-ffffbc61cc17", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 847, + "type": "SCOPE", + "startNode": 180, + "endNode": 173, + "properties": { + "startId": "ffffffff-e1e8-8b87-0000-0000117a269a", + "endId": "00000000-0000-0000-ffff-ffffcfd82b56" + } + }, + { + "id": 848, + "type": "TYPE", + "startNode": 180, + "endNode": 67, + "properties": { + "startId": "ffffffff-e1e8-8b87-0000-0000117a269a", + "endId": "00000000-0000-0000-0000-000000000020" + } + }, + { + "id": 849, + "type": "ARGUMENTS", + "startNode": 182, + "endNode": 184, + "properties": { + "startId": "00000000-117a-269a-0000-000038ed9433", + "endId": "00000000-38ed-9433-0000-0000330b8b19", + "index": 0, + "overlaying": false + } + }, + { + "id": 850, + "type": "INVOKES", + "startNode": 182, + "endNode": 94, + "properties": { + "startId": "00000000-117a-269a-0000-000038ed9433", + "endId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "dynamicInvoke": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 851, + "type": "OPERATOR_ARGUMENTS", + "startNode": 182, + "endNode": 184, + "properties": { + "startId": "00000000-117a-269a-0000-000038ed9433", + "endId": "00000000-38ed-9433-0000-0000330b8b19" + } + }, + { + "id": 852, + "type": "OPERATOR_BASE", + "startNode": 182, + "endNode": 181, + "properties": { + "startId": "00000000-117a-269a-0000-000038ed9433", + "endId": "00000000-38ed-9433-0000-00007631fd84" + } + }, + { + "id": 853, + "type": "SECONDARY_TYPES", + "startNode": 182, + "endNode": 176, + "properties": { + "startId": "00000000-117a-269a-0000-000038ed9433", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 854, + "type": "SIGNATURE", + "startNode": 182, + "endNode": 176, + "properties": { + "startId": "00000000-117a-269a-0000-000038ed9433", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 855, + "type": "AST", + "startNode": 182, + "endNode": 184, + "properties": { + "startId": "00000000-117a-269a-0000-000038ed9433", + "endId": "00000000-38ed-9433-0000-0000330b8b19" + } + }, + { + "id": 856, + "type": "AST", + "startNode": 182, + "endNode": 181, + "properties": { + "startId": "00000000-117a-269a-0000-000038ed9433", + "endId": "00000000-38ed-9433-0000-00007631fd84" + } + }, + { + "id": 857, + "type": "BB", + "startNode": 182, + "endNode": 224, + "properties": { + "startId": "00000000-117a-269a-0000-000038ed9433", + "endId": "00000000-0000-0000-ffff-fffff5138349", + "index": 3, + "overlaying": true + } + }, + { + "id": 858, + "type": "LANGUAGE", + "startNode": 182, + "endNode": 45, + "properties": { + "startId": "00000000-117a-269a-0000-000038ed9433", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 859, + "type": "DFG", + "startNode": 94, + "endNode": 182, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "00000000-117a-269a-0000-000038ed9433", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 860, + "type": "EOG", + "startNode": 182, + "endNode": 180, + "properties": { + "startId": "00000000-117a-269a-0000-000038ed9433", + "endId": "ffffffff-e1e8-8b87-0000-0000117a269a", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 861, + "type": "PDG", + "startNode": 182, + "endNode": 180, + "properties": { + "startId": "00000000-117a-269a-0000-000038ed9433", + "endId": "ffffffff-e1e8-8b87-0000-0000117a269a", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 862, + "type": "SCOPE", + "startNode": 182, + "endNode": 173, + "properties": { + "startId": "00000000-117a-269a-0000-000038ed9433", + "endId": "00000000-0000-0000-ffff-ffffcfd82b56" + } + }, + { + "id": 863, + "type": "TYPE", + "startNode": 182, + "endNode": 96, + "properties": { + "startId": "00000000-117a-269a-0000-000038ed9433", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 864, + "type": "REFERS_TO", + "startNode": 184, + "endNode": 177, + "properties": { + "startId": "00000000-38ed-9433-0000-0000330b8b19", + "endId": "ffffffff-bc61-cc17-0000-00007a47bbbd" + } + }, + { + "id": 865, + "type": "BB", + "startNode": 184, + "endNode": 224, + "properties": { + "startId": "00000000-38ed-9433-0000-0000330b8b19", + "endId": "00000000-0000-0000-ffff-fffff5138349", + "index": 2, + "overlaying": true + } + }, + { + "id": 866, + "type": "LANGUAGE", + "startNode": 184, + "endNode": 45, + "properties": { + "startId": "00000000-38ed-9433-0000-0000330b8b19", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 867, + "type": "MEMORY_ADDRESS", + "startNode": 184, + "endNode": 254, + "properties": { + "startId": "00000000-38ed-9433-0000-0000330b8b19", + "endId": "00000000-0000-0000-ffff-ffffb71572ae", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 868, + "type": "MEMORY_VALUE", + "startNode": 255, + "endNode": 184, + "properties": { + "startId": "00000000-0000-0000-0000-00006043c79f", + "endId": "00000000-38ed-9433-0000-0000330b8b19", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 869, + "type": "MEMORY_VALUE_USAGE", + "startNode": 184, + "endNode": 99, + "properties": { + "startId": "00000000-38ed-9433-0000-0000330b8b19", + "endId": "ffffffff-a418-65eb-ffff-ffffe044e5b1", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 870, + "type": "DFG", + "startNode": 177, + "endNode": 184, + "properties": { + "startId": "ffffffff-bc61-cc17-0000-00007a47bbbd", + "endId": "00000000-38ed-9433-0000-0000330b8b19", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 871, + "type": "EOG", + "startNode": 184, + "endNode": 182, + "properties": { + "startId": "00000000-38ed-9433-0000-0000330b8b19", + "endId": "00000000-117a-269a-0000-000038ed9433", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 872, + "type": "PDG", + "startNode": 184, + "endNode": 99, + "properties": { + "startId": "00000000-38ed-9433-0000-0000330b8b19", + "endId": "ffffffff-a418-65eb-ffff-ffffe044e5b1", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 873, + "type": "SCOPE", + "startNode": 184, + "endNode": 173, + "properties": { + "startId": "00000000-38ed-9433-0000-0000330b8b19", + "endId": "00000000-0000-0000-ffff-ffffcfd82b56" + } + }, + { + "id": 874, + "type": "TYPE", + "startNode": 184, + "endNode": 176, + "properties": { + "startId": "00000000-38ed-9433-0000-0000330b8b19", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 875, + "type": "REFERS_TO", + "startNode": 181, + "endNode": 94, + "properties": { + "startId": "00000000-38ed-9433-0000-00007631fd84", + "endId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb" + } + }, + { + "id": 876, + "type": "BB", + "startNode": 181, + "endNode": 224, + "properties": { + "startId": "00000000-38ed-9433-0000-00007631fd84", + "endId": "00000000-0000-0000-ffff-fffff5138349", + "index": 1, + "overlaying": true + } + }, + { + "id": 877, + "type": "LANGUAGE", + "startNode": 181, + "endNode": 45, + "properties": { + "startId": "00000000-38ed-9433-0000-00007631fd84", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 878, + "type": "MEMORY_VALUE", + "startNode": 94, + "endNode": 181, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "00000000-38ed-9433-0000-00007631fd84", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 879, + "type": "DFG", + "startNode": 94, + "endNode": 181, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "00000000-38ed-9433-0000-00007631fd84", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 880, + "type": "EOG", + "startNode": 181, + "endNode": 184, + "properties": { + "startId": "00000000-38ed-9433-0000-00007631fd84", + "endId": "00000000-38ed-9433-0000-0000330b8b19", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 881, + "type": "SCOPE", + "startNode": 181, + "endNode": 173, + "properties": { + "startId": "00000000-38ed-9433-0000-00007631fd84", + "endId": "00000000-0000-0000-ffff-ffffcfd82b56" + } + }, + { + "id": 882, + "type": "TYPE", + "startNode": 181, + "endNode": 97, + "properties": { + "startId": "00000000-38ed-9433-0000-00007631fd84", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 883, + "type": "LANGUAGE", + "startNode": 177, + "endNode": 45, + "properties": { + "startId": "ffffffff-bc61-cc17-0000-00007a47bbbd", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 884, + "type": "MEMORY_ADDRESS", + "startNode": 177, + "endNode": 254, + "properties": { + "startId": "ffffffff-bc61-cc17-0000-00007a47bbbd", + "endId": "00000000-0000-0000-ffff-ffffb71572ae", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 885, + "type": "MEMORY_VALUE", + "startNode": 255, + "endNode": 177, + "properties": { + "startId": "00000000-0000-0000-0000-00006043c79f", + "endId": "ffffffff-bc61-cc17-0000-00007a47bbbd", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 886, + "type": "PDG", + "startNode": 177, + "endNode": 184, + "properties": { + "startId": "ffffffff-bc61-cc17-0000-00007a47bbbd", + "endId": "00000000-38ed-9433-0000-0000330b8b19", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 887, + "type": "SCOPE", + "startNode": 177, + "endNode": 173, + "properties": { + "startId": "ffffffff-bc61-cc17-0000-00007a47bbbd", + "endId": "00000000-0000-0000-ffff-ffffcfd82b56" + } + }, + { + "id": 888, + "type": "TYPE", + "startNode": 177, + "endNode": 176, + "properties": { + "startId": "ffffffff-bc61-cc17-0000-00007a47bbbd", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 889, + "type": "USAGE", + "startNode": 177, + "endNode": 184, + "properties": { + "startId": "ffffffff-bc61-cc17-0000-00007a47bbbd", + "endId": "00000000-38ed-9433-0000-0000330b8b19", + "access": "READ", + "index": 0, + "overlaying": false + } + }, + { + "id": 890, + "type": "BODY", + "startNode": 185, + "endNode": 189, + "properties": { + "startId": "ffffffff-a3b5-5fd5-0000-00006d51c74c", + "endId": "00000000-6d51-c74c-ffff-ffffe22afc7a", + "overlaying": false + } + }, + { + "id": 891, + "type": "FIRST_BASIC_BLOCK", + "startNode": 185, + "endNode": 225, + "properties": { + "startId": "ffffffff-a3b5-5fd5-0000-00006d51c74c", + "endId": "00000000-0000-0000-ffff-fffffd1f30b5" + } + }, + { + "id": 892, + "type": "RETURN_TYPES", + "startNode": 185, + "endNode": 187, + "properties": { + "startId": "ffffffff-a3b5-5fd5-0000-00006d51c74c", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 893, + "type": "SECONDARY_TYPES", + "startNode": 185, + "endNode": 187, + "properties": { + "startId": "ffffffff-a3b5-5fd5-0000-00006d51c74c", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 894, + "type": "AST", + "startNode": 185, + "endNode": 189, + "properties": { + "startId": "ffffffff-a3b5-5fd5-0000-00006d51c74c", + "endId": "00000000-6d51-c74c-ffff-ffffe22afc7a" + } + }, + { + "id": 895, + "type": "BB", + "startNode": 185, + "endNode": 225, + "properties": { + "startId": "ffffffff-a3b5-5fd5-0000-00006d51c74c", + "endId": "00000000-0000-0000-ffff-fffffd1f30b5", + "index": 0, + "overlaying": true + } + }, + { + "id": 896, + "type": "DECLARING_SCOPE", + "startNode": 185, + "endNode": 186, + "properties": { + "startId": "ffffffff-a3b5-5fd5-0000-00006d51c74c", + "endId": "00000000-0000-0000-0000-00003ce796c1" + } + }, + { + "id": 897, + "type": "LANGUAGE", + "startNode": 185, + "endNode": 45, + "properties": { + "startId": "ffffffff-a3b5-5fd5-0000-00006d51c74c", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 898, + "type": "MEMORY_ADDRESS", + "startNode": 185, + "endNode": 243, + "properties": { + "startId": "ffffffff-a3b5-5fd5-0000-00006d51c74c", + "endId": "00000000-0000-0000-0000-000005d48f2c", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 899, + "type": "CDG", + "startNode": 185, + "endNode": 190, + "properties": { + "startId": "ffffffff-a3b5-5fd5-0000-00006d51c74c", + "endId": "ffffffff-e22a-fc7a-ffff-ffffb266e7ae", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 900, + "type": "CDG", + "startNode": 185, + "endNode": 192, + "properties": { + "startId": "ffffffff-a3b5-5fd5-0000-00006d51c74c", + "endId": "00000000-1b3a-aca6-0000-000040975635", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 901, + "type": "CDG", + "startNode": 185, + "endNode": 191, + "properties": { + "startId": "ffffffff-a3b5-5fd5-0000-00006d51c74c", + "endId": "ffffffff-e22a-fc7a-0000-00001b3aaca6", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 902, + "type": "DFG", + "startNode": 191, + "endNode": 185, + "properties": { + "startId": "ffffffff-e22a-fc7a-0000-00001b3aaca6", + "endId": "ffffffff-a3b5-5fd5-0000-00006d51c74c", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 903, + "type": "EOG", + "startNode": 185, + "endNode": 190, + "properties": { + "startId": "ffffffff-a3b5-5fd5-0000-00006d51c74c", + "endId": "ffffffff-e22a-fc7a-ffff-ffffb266e7ae", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 904, + "type": "PDG", + "startNode": 185, + "endNode": 190, + "properties": { + "startId": "ffffffff-a3b5-5fd5-0000-00006d51c74c", + "endId": "ffffffff-e22a-fc7a-ffff-ffffb266e7ae", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 905, + "type": "PDG", + "startNode": 185, + "endNode": 191, + "properties": { + "startId": "ffffffff-a3b5-5fd5-0000-00006d51c74c", + "endId": "ffffffff-e22a-fc7a-0000-00001b3aaca6", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 906, + "type": "PDG", + "startNode": 185, + "endNode": 192, + "properties": { + "startId": "ffffffff-a3b5-5fd5-0000-00006d51c74c", + "endId": "00000000-1b3a-aca6-0000-000040975635", + "dependence": "CONTROL", + "index": 0, + "overlaying": false + } + }, + { + "id": 907, + "type": "SCOPE", + "startNode": 185, + "endNode": 63, + "properties": { + "startId": "ffffffff-a3b5-5fd5-0000-00006d51c74c", + "endId": "00000000-0000-0000-ffff-ffffd8828539" + } + }, + { + "id": 908, + "type": "TYPE", + "startNode": 185, + "endNode": 188, + "properties": { + "startId": "ffffffff-a3b5-5fd5-0000-00006d51c74c", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 909, + "type": "STATEMENTS", + "startNode": 189, + "endNode": 190, + "properties": { + "startId": "00000000-6d51-c74c-ffff-ffffe22afc7a", + "endId": "ffffffff-e22a-fc7a-ffff-ffffb266e7ae", + "index": 0, + "overlaying": false + } + }, + { + "id": 910, + "type": "STATEMENTS", + "startNode": 189, + "endNode": 191, + "properties": { + "startId": "00000000-6d51-c74c-ffff-ffffe22afc7a", + "endId": "ffffffff-e22a-fc7a-0000-00001b3aaca6", + "index": 1, + "overlaying": false + } + }, + { + "id": 911, + "type": "AST", + "startNode": 189, + "endNode": 190, + "properties": { + "startId": "00000000-6d51-c74c-ffff-ffffe22afc7a", + "endId": "ffffffff-e22a-fc7a-ffff-ffffb266e7ae" + } + }, + { + "id": 912, + "type": "AST", + "startNode": 189, + "endNode": 191, + "properties": { + "startId": "00000000-6d51-c74c-ffff-ffffe22afc7a", + "endId": "ffffffff-e22a-fc7a-0000-00001b3aaca6" + } + }, + { + "id": 913, + "type": "LANGUAGE", + "startNode": 189, + "endNode": 45, + "properties": { + "startId": "00000000-6d51-c74c-ffff-ffffe22afc7a", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 914, + "type": "SCOPE", + "startNode": 189, + "endNode": 186, + "properties": { + "startId": "00000000-6d51-c74c-ffff-ffffe22afc7a", + "endId": "00000000-0000-0000-0000-00003ce796c1" + } + }, + { + "id": 915, + "type": "TYPE", + "startNode": 189, + "endNode": 67, + "properties": { + "startId": "00000000-6d51-c74c-ffff-ffffe22afc7a", + "endId": "00000000-0000-0000-0000-000000000020" + } + }, + { + "id": 916, + "type": "BB", + "startNode": 190, + "endNode": 225, + "properties": { + "startId": "ffffffff-e22a-fc7a-ffff-ffffb266e7ae", + "endId": "00000000-0000-0000-ffff-fffffd1f30b5", + "index": 1, + "overlaying": true + } + }, + { + "id": 917, + "type": "LANGUAGE", + "startNode": 190, + "endNode": 45, + "properties": { + "startId": "ffffffff-e22a-fc7a-ffff-ffffb266e7ae", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 918, + "type": "EOG", + "startNode": 190, + "endNode": 192, + "properties": { + "startId": "ffffffff-e22a-fc7a-ffff-ffffb266e7ae", + "endId": "00000000-1b3a-aca6-0000-000040975635", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 919, + "type": "SCOPE", + "startNode": 190, + "endNode": 186, + "properties": { + "startId": "ffffffff-e22a-fc7a-ffff-ffffb266e7ae", + "endId": "00000000-0000-0000-0000-00003ce796c1" + } + }, + { + "id": 920, + "type": "TYPE", + "startNode": 190, + "endNode": 50, + "properties": { + "startId": "ffffffff-e22a-fc7a-ffff-ffffb266e7ae", + "endId": "00000000-0000-0000-0000-000000007d14" + } + }, + { + "id": 921, + "type": "RETURN_VALUE", + "startNode": 191, + "endNode": 192, + "properties": { + "startId": "ffffffff-e22a-fc7a-0000-00001b3aaca6", + "endId": "00000000-1b3a-aca6-0000-000040975635" + } + }, + { + "id": 922, + "type": "RETURN_VALUES", + "startNode": 191, + "endNode": 192, + "properties": { + "startId": "ffffffff-e22a-fc7a-0000-00001b3aaca6", + "endId": "00000000-1b3a-aca6-0000-000040975635", + "index": 0, + "overlaying": false + } + }, + { + "id": 923, + "type": "AST", + "startNode": 191, + "endNode": 192, + "properties": { + "startId": "ffffffff-e22a-fc7a-0000-00001b3aaca6", + "endId": "00000000-1b3a-aca6-0000-000040975635" + } + }, + { + "id": 924, + "type": "BB", + "startNode": 191, + "endNode": 225, + "properties": { + "startId": "ffffffff-e22a-fc7a-0000-00001b3aaca6", + "endId": "00000000-0000-0000-ffff-fffffd1f30b5", + "index": 3, + "overlaying": true + } + }, + { + "id": 925, + "type": "LANGUAGE", + "startNode": 191, + "endNode": 45, + "properties": { + "startId": "ffffffff-e22a-fc7a-0000-00001b3aaca6", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 926, + "type": "DFG", + "startNode": 192, + "endNode": 191, + "properties": { + "startId": "00000000-1b3a-aca6-0000-000040975635", + "endId": "ffffffff-e22a-fc7a-0000-00001b3aaca6", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 927, + "type": "PDG", + "startNode": 191, + "endNode": 185, + "properties": { + "startId": "ffffffff-e22a-fc7a-0000-00001b3aaca6", + "endId": "ffffffff-a3b5-5fd5-0000-00006d51c74c", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 928, + "type": "SCOPE", + "startNode": 191, + "endNode": 186, + "properties": { + "startId": "ffffffff-e22a-fc7a-0000-00001b3aaca6", + "endId": "00000000-0000-0000-0000-00003ce796c1" + } + }, + { + "id": 929, + "type": "TYPE", + "startNode": 191, + "endNode": 67, + "properties": { + "startId": "ffffffff-e22a-fc7a-0000-00001b3aaca6", + "endId": "00000000-0000-0000-0000-000000000020" + } + }, + { + "id": 930, + "type": "BB", + "startNode": 192, + "endNode": 225, + "properties": { + "startId": "00000000-1b3a-aca6-0000-000040975635", + "endId": "00000000-0000-0000-ffff-fffffd1f30b5", + "index": 2, + "overlaying": true + } + }, + { + "id": 931, + "type": "LANGUAGE", + "startNode": 192, + "endNode": 45, + "properties": { + "startId": "00000000-1b3a-aca6-0000-000040975635", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 932, + "type": "EOG", + "startNode": 192, + "endNode": 191, + "properties": { + "startId": "00000000-1b3a-aca6-0000-000040975635", + "endId": "ffffffff-e22a-fc7a-0000-00001b3aaca6", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 933, + "type": "PDG", + "startNode": 192, + "endNode": 191, + "properties": { + "startId": "00000000-1b3a-aca6-0000-000040975635", + "endId": "ffffffff-e22a-fc7a-0000-00001b3aaca6", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 934, + "type": "SCOPE", + "startNode": 192, + "endNode": 186, + "properties": { + "startId": "00000000-1b3a-aca6-0000-000040975635", + "endId": "00000000-0000-0000-0000-00003ce796c1" + } + }, + { + "id": 935, + "type": "TYPE", + "startNode": 192, + "endNode": 50, + "properties": { + "startId": "00000000-1b3a-aca6-0000-000040975635", + "endId": "00000000-0000-0000-0000-000000007d14" + } + }, + { + "id": 936, + "type": "DECLARATIONS", + "startNode": 64, + "endNode": 68, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffff965090ae", + "endId": "ffffffff-9650-90ae-ffff-ffffd403f3d2", + "index": 0, + "overlaying": false + } + }, + { + "id": 937, + "type": "SINGLE_DECLARATION", + "startNode": 64, + "endNode": 68, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffff965090ae", + "endId": "ffffffff-9650-90ae-ffff-ffffd403f3d2" + } + }, + { + "id": 938, + "type": "AST", + "startNode": 64, + "endNode": 68, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffff965090ae", + "endId": "ffffffff-9650-90ae-ffff-ffffd403f3d2" + } + }, + { + "id": 939, + "type": "BB", + "startNode": 64, + "endNode": 215, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffff965090ae", + "endId": "00000000-0000-0000-ffff-ffff92bdc769", + "index": 2, + "overlaying": true + } + }, + { + "id": 940, + "type": "LANGUAGE", + "startNode": 64, + "endNode": 45, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffff965090ae", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 941, + "type": "EOG", + "startNode": 64, + "endNode": 200, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffff965090ae", + "endId": "ffffffff-dbbc-3c9c-0000-0000774b9ec9", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 942, + "type": "SCOPE", + "startNode": 64, + "endNode": 63, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffff965090ae", + "endId": "00000000-0000-0000-ffff-ffffd8828539" + } + }, + { + "id": 943, + "type": "TYPE", + "startNode": 64, + "endNode": 67, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffff965090ae", + "endId": "00000000-0000-0000-0000-000000000020" + } + }, + { + "id": 944, + "type": "BB", + "startNode": 68, + "endNode": 215, + "properties": { + "startId": "ffffffff-9650-90ae-ffff-ffffd403f3d2", + "endId": "00000000-0000-0000-ffff-ffff92bdc769", + "index": 1, + "overlaying": true + } + }, + { + "id": 945, + "type": "LANGUAGE", + "startNode": 68, + "endNode": 45, + "properties": { + "startId": "ffffffff-9650-90ae-ffff-ffffd403f3d2", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 946, + "type": "EOG", + "startNode": 68, + "endNode": 64, + "properties": { + "startId": "ffffffff-9650-90ae-ffff-ffffd403f3d2", + "endId": "ffffffff-a3b5-5fd5-ffff-ffff965090ae", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 947, + "type": "SCOPE", + "startNode": 68, + "endNode": 63, + "properties": { + "startId": "ffffffff-9650-90ae-ffff-ffffd403f3d2", + "endId": "00000000-0000-0000-ffff-ffffd8828539" + } + }, + { + "id": 948, + "type": "DECLARATIONS", + "startNode": 71, + "endNode": 200, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffdbbc3c9c", + "endId": "ffffffff-dbbc-3c9c-0000-0000774b9ec9", + "index": 0, + "overlaying": false + } + }, + { + "id": 949, + "type": "LHS", + "startNode": 71, + "endNode": 69, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffdbbc3c9c", + "endId": "ffffffff-dbbc-3c9c-ffff-ffffb32c23f0", + "index": 0, + "overlaying": false + } + }, + { + "id": 950, + "type": "RHS", + "startNode": 71, + "endNode": 70, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffdbbc3c9c", + "endId": "ffffffff-dbbc-3c9c-ffff-ffffb4fe0d47", + "index": 0, + "overlaying": false + } + }, + { + "id": 951, + "type": "AST", + "startNode": 71, + "endNode": 69, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffdbbc3c9c", + "endId": "ffffffff-dbbc-3c9c-ffff-ffffb32c23f0" + } + }, + { + "id": 952, + "type": "AST", + "startNode": 71, + "endNode": 70, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffdbbc3c9c", + "endId": "ffffffff-dbbc-3c9c-ffff-ffffb4fe0d47" + } + }, + { + "id": 953, + "type": "AST", + "startNode": 71, + "endNode": 200, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffdbbc3c9c", + "endId": "ffffffff-dbbc-3c9c-0000-0000774b9ec9" + } + }, + { + "id": 954, + "type": "BB", + "startNode": 71, + "endNode": 215, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffdbbc3c9c", + "endId": "00000000-0000-0000-ffff-ffff92bdc769", + "index": 6, + "overlaying": true + } + }, + { + "id": 955, + "type": "LANGUAGE", + "startNode": 71, + "endNode": 45, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffdbbc3c9c", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 956, + "type": "SCOPE", + "startNode": 71, + "endNode": 63, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffdbbc3c9c", + "endId": "00000000-0000-0000-ffff-ffffd8828539" + } + }, + { + "id": 957, + "type": "TYPE", + "startNode": 71, + "endNode": 67, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffdbbc3c9c", + "endId": "00000000-0000-0000-0000-000000000020" + } + }, + { + "id": 958, + "type": "REFERS_TO", + "startNode": 69, + "endNode": 200, + "properties": { + "startId": "ffffffff-dbbc-3c9c-ffff-ffffb32c23f0", + "endId": "ffffffff-dbbc-3c9c-0000-0000774b9ec9" + } + }, + { + "id": 959, + "type": "BB", + "startNode": 69, + "endNode": 215, + "properties": { + "startId": "ffffffff-dbbc-3c9c-ffff-ffffb32c23f0", + "endId": "00000000-0000-0000-ffff-ffff92bdc769", + "index": 4, + "overlaying": true + } + }, + { + "id": 960, + "type": "LANGUAGE", + "startNode": 69, + "endNode": 45, + "properties": { + "startId": "ffffffff-dbbc-3c9c-ffff-ffffb32c23f0", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 961, + "type": "MEMORY_ADDRESS", + "startNode": 69, + "endNode": 256, + "properties": { + "startId": "ffffffff-dbbc-3c9c-ffff-ffffb32c23f0", + "endId": "00000000-0000-0000-0000-00006a046de3", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 962, + "type": "MEMORY_VALUE", + "startNode": 70, + "endNode": 69, + "properties": { + "startId": "ffffffff-dbbc-3c9c-ffff-ffffb4fe0d47", + "endId": "ffffffff-dbbc-3c9c-ffff-ffffb32c23f0", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 963, + "type": "DFG", + "startNode": 70, + "endNode": 69, + "properties": { + "startId": "ffffffff-dbbc-3c9c-ffff-ffffb4fe0d47", + "endId": "ffffffff-dbbc-3c9c-ffff-ffffb32c23f0", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 964, + "type": "EOG", + "startNode": 69, + "endNode": 70, + "properties": { + "startId": "ffffffff-dbbc-3c9c-ffff-ffffb32c23f0", + "endId": "ffffffff-dbbc-3c9c-ffff-ffffb4fe0d47", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 965, + "type": "SCOPE", + "startNode": 69, + "endNode": 63, + "properties": { + "startId": "ffffffff-dbbc-3c9c-ffff-ffffb32c23f0", + "endId": "00000000-0000-0000-ffff-ffffd8828539" + } + }, + { + "id": 966, + "type": "TYPE", + "startNode": 69, + "endNode": 46, + "properties": { + "startId": "ffffffff-dbbc-3c9c-ffff-ffffb32c23f0", + "endId": "00000000-0000-0000-0000-0000761bc2cc" + } + }, + { + "id": 967, + "type": "BB", + "startNode": 70, + "endNode": 215, + "properties": { + "startId": "ffffffff-dbbc-3c9c-ffff-ffffb4fe0d47", + "endId": "00000000-0000-0000-ffff-ffff92bdc769", + "index": 5, + "overlaying": true + } + }, + { + "id": 968, + "type": "LANGUAGE", + "startNode": 70, + "endNode": 45, + "properties": { + "startId": "ffffffff-dbbc-3c9c-ffff-ffffb4fe0d47", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 969, + "type": "MEMORY_VALUE_USAGE", + "startNode": 70, + "endNode": 69, + "properties": { + "startId": "ffffffff-dbbc-3c9c-ffff-ffffb4fe0d47", + "endId": "ffffffff-dbbc-3c9c-ffff-ffffb32c23f0", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 970, + "type": "EOG", + "startNode": 70, + "endNode": 71, + "properties": { + "startId": "ffffffff-dbbc-3c9c-ffff-ffffb4fe0d47", + "endId": "ffffffff-a3b5-5fd5-ffff-ffffdbbc3c9c", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 971, + "type": "PDG", + "startNode": 70, + "endNode": 69, + "properties": { + "startId": "ffffffff-dbbc-3c9c-ffff-ffffb4fe0d47", + "endId": "ffffffff-dbbc-3c9c-ffff-ffffb32c23f0", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 972, + "type": "SCOPE", + "startNode": 70, + "endNode": 63, + "properties": { + "startId": "ffffffff-dbbc-3c9c-ffff-ffffb4fe0d47", + "endId": "00000000-0000-0000-ffff-ffffd8828539" + } + }, + { + "id": 973, + "type": "TYPE", + "startNode": 70, + "endNode": 46, + "properties": { + "startId": "ffffffff-dbbc-3c9c-ffff-ffffb4fe0d47", + "endId": "00000000-0000-0000-0000-0000761bc2cc" + } + }, + { + "id": 974, + "type": "BB", + "startNode": 200, + "endNode": 215, + "properties": { + "startId": "ffffffff-dbbc-3c9c-0000-0000774b9ec9", + "endId": "00000000-0000-0000-ffff-ffff92bdc769", + "index": 3, + "overlaying": true + } + }, + { + "id": 975, + "type": "LANGUAGE", + "startNode": 200, + "endNode": 45, + "properties": { + "startId": "ffffffff-dbbc-3c9c-0000-0000774b9ec9", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 976, + "type": "MEMORY_ADDRESS", + "startNode": 200, + "endNode": 256, + "properties": { + "startId": "ffffffff-dbbc-3c9c-0000-0000774b9ec9", + "endId": "00000000-0000-0000-0000-00006a046de3", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 977, + "type": "EOG", + "startNode": 200, + "endNode": 69, + "properties": { + "startId": "ffffffff-dbbc-3c9c-0000-0000774b9ec9", + "endId": "ffffffff-dbbc-3c9c-ffff-ffffb32c23f0", + "unreachable": false, + "index": 0, + "overlaying": false + } + }, + { + "id": 978, + "type": "SCOPE", + "startNode": 200, + "endNode": 63, + "properties": { + "startId": "ffffffff-dbbc-3c9c-0000-0000774b9ec9", + "endId": "00000000-0000-0000-ffff-ffffd8828539" + } + }, + { + "id": 979, + "type": "TYPE", + "startNode": 200, + "endNode": 46, + "properties": { + "startId": "ffffffff-dbbc-3c9c-0000-0000774b9ec9", + "endId": "00000000-0000-0000-0000-0000761bc2cc" + } + }, + { + "id": 980, + "type": "USAGE", + "startNode": 200, + "endNode": 69, + "properties": { + "startId": "ffffffff-dbbc-3c9c-0000-0000774b9ec9", + "endId": "ffffffff-dbbc-3c9c-ffff-ffffb32c23f0", + "access": "WRITE", + "index": 0, + "overlaying": false + } + }, + { + "id": 981, + "type": "FIRST_BASIC_BLOCK", + "startNode": 201, + "endNode": 216, + "properties": { + "startId": "ffffffff-c1c5-0235-0000-0000179badee", + "endId": "00000000-0000-0000-0000-000024b26d98" + } + }, + { + "id": 982, + "type": "BB", + "startNode": 201, + "endNode": 216, + "properties": { + "startId": "ffffffff-c1c5-0235-0000-0000179badee", + "endId": "00000000-0000-0000-0000-000024b26d98", + "index": 0, + "overlaying": true + } + }, + { + "id": 983, + "type": "DECLARING_SCOPE", + "startNode": 201, + "endNode": 202, + "properties": { + "startId": "ffffffff-c1c5-0235-0000-0000179badee", + "endId": "00000000-0000-0000-ffff-ffffdc0ea943" + } + }, + { + "id": 984, + "type": "LANGUAGE", + "startNode": 201, + "endNode": 45, + "properties": { + "startId": "ffffffff-c1c5-0235-0000-0000179badee", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 985, + "type": "SCOPE", + "startNode": 201, + "endNode": 44, + "properties": { + "startId": "ffffffff-c1c5-0235-0000-0000179badee", + "endId": "00000000-0000-0000-0000-000076dbb8f8" + } + }, + { + "id": 986, + "type": "LANGUAGE", + "startNode": 45, + "endNode": 45, + "properties": { + "startId": "00000000-0000-0000-0000-00000c19302d", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 987, + "type": "GLOBAL_SCOPE", + "startNode": 44, + "endNode": 44, + "properties": { + "startId": "00000000-0000-0000-0000-000076dbb8f8", + "endId": "00000000-0000-0000-0000-000076dbb8f8" + } + }, + { + "id": 988, + "type": "LANGUAGE", + "startNode": 44, + "endNode": 1, + "properties": { + "startId": "00000000-0000-0000-0000-000076dbb8f8", + "endId": "00000000-0000-0000-ffff-ffff93eb63d9" + } + }, + { + "id": 989, + "type": "END_NODE", + "startNode": 217, + "endNode": 61, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffb978cec4", + "endId": "00000000-73f5-c4bb-ffff-ffffc1c50235" + } + }, + { + "id": 990, + "type": "START_NODE", + "startNode": 217, + "endNode": 61, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffb978cec4", + "endId": "00000000-73f5-c4bb-ffff-ffffc1c50235" + } + }, + { + "id": 991, + "type": "LANGUAGE", + "startNode": 217, + "endNode": 195, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffb978cec4", + "endId": "00000000-0000-0000-0000-0000128d2439" + } + }, + { + "id": 992, + "type": "LANGUAGE", + "startNode": 194, + "endNode": 195, + "properties": { + "startId": "00000000-0000-0000-0000-000000000000", + "endId": "00000000-0000-0000-0000-0000128d2439" + } + }, + { + "id": 993, + "type": "GLOBAL_SCOPE", + "startNode": 63, + "endNode": 44, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffd8828539", + "endId": "00000000-0000-0000-0000-000076dbb8f8" + } + }, + { + "id": 994, + "type": "IMPORTS_SCOPE", + "startNode": 63, + "endNode": 202, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffd8828539", + "endId": "00000000-0000-0000-ffff-ffffdc0ea943", + "style": "IMPORT_NAMESPACE", + "name": "os", + "overlaying": false + } + }, + { + "id": 995, + "type": "LANGUAGE", + "startNode": 63, + "endNode": 1, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffd8828539", + "endId": "00000000-0000-0000-ffff-ffff93eb63d9" + } + }, + { + "id": 996, + "type": "PARENT", + "startNode": 63, + "endNode": 44, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffd8828539", + "endId": "00000000-0000-0000-0000-000076dbb8f8" + } + }, + { + "id": 997, + "type": "END_NODE", + "startNode": 215, + "endNode": 71, + "properties": { + "startId": "00000000-0000-0000-ffff-ffff92bdc769", + "endId": "ffffffff-a3b5-5fd5-ffff-ffffdbbc3c9c" + } + }, + { + "id": 998, + "type": "START_NODE", + "startNode": 215, + "endNode": 62, + "properties": { + "startId": "00000000-0000-0000-ffff-ffff92bdc769", + "endId": "ffffffff-c1c5-0235-ffff-ffffa3b55fd5" + } + }, + { + "id": 999, + "type": "LANGUAGE", + "startNode": 215, + "endNode": 195, + "properties": { + "startId": "00000000-0000-0000-ffff-ffff92bdc769", + "endId": "00000000-0000-0000-0000-0000128d2439" + } + }, + { + "id": 1000, + "type": "END_NODE", + "startNode": 218, + "endNode": 74, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffc3c385a1", + "endId": "00000000-2050-f08d-ffff-ffff8e3bfa01" + } + }, + { + "id": 1001, + "type": "START_NODE", + "startNode": 218, + "endNode": 72, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffc3c385a1", + "endId": "ffffffff-a3b5-5fd5-0000-00002050f08d" + } + }, + { + "id": 1002, + "type": "LANGUAGE", + "startNode": 218, + "endNode": 195, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffc3c385a1", + "endId": "00000000-0000-0000-0000-0000128d2439" + } + }, + { + "id": 1003, + "type": "GLOBAL_SCOPE", + "startNode": 73, + "endNode": 44, + "properties": { + "startId": "00000000-0000-0000-ffff-fffff4fe3511", + "endId": "00000000-0000-0000-0000-000076dbb8f8" + } + }, + { + "id": 1004, + "type": "LANGUAGE", + "startNode": 73, + "endNode": 1, + "properties": { + "startId": "00000000-0000-0000-ffff-fffff4fe3511", + "endId": "00000000-0000-0000-ffff-ffff93eb63d9" + } + }, + { + "id": 1005, + "type": "PARENT", + "startNode": 73, + "endNode": 63, + "properties": { + "startId": "00000000-0000-0000-ffff-fffff4fe3511", + "endId": "00000000-0000-0000-ffff-ffffd8828539" + } + }, + { + "id": 1006, + "type": "RECORD_DECLARATION", + "startNode": 259, + "endNode": 72, + "properties": { + "startId": "00000000-0000-0000-0000-000000007d14", + "endId": "ffffffff-a3b5-5fd5-0000-00002050f08d" + } + }, + { + "id": 1007, + "type": "LANGUAGE", + "startNode": 259, + "endNode": 45, + "properties": { + "startId": "00000000-0000-0000-0000-000000007d14", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 1008, + "type": "SCOPE", + "startNode": 259, + "endNode": 63, + "properties": { + "startId": "00000000-0000-0000-0000-000000007d14", + "endId": "00000000-0000-0000-ffff-ffffd8828539" + } + }, + { + "id": 1009, + "type": "END_NODE", + "startNode": 226, + "endNode": 196, + "properties": { + "startId": "00000000-0000-0000-0000-0000712dbf99", + "endId": "00000000-2050-f08d-0000-00000a118353" + } + }, + { + "id": 1010, + "type": "START_NODE", + "startNode": 226, + "endNode": 196, + "properties": { + "startId": "00000000-0000-0000-0000-0000712dbf99", + "endId": "00000000-2050-f08d-0000-00000a118353" + } + }, + { + "id": 1011, + "type": "LANGUAGE", + "startNode": 226, + "endNode": 195, + "properties": { + "startId": "00000000-0000-0000-0000-0000712dbf99", + "endId": "00000000-0000-0000-0000-0000128d2439" + } + }, + { + "id": 1012, + "type": "LANGUAGE", + "startNode": 83, + "endNode": 45, + "properties": { + "startId": "00000000-0000-0000-0000-000000000001", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 1013, + "type": "USAGE", + "startNode": 196, + "endNode": 257, + "properties": { + "startId": "00000000-2050-f08d-0000-00000a118353", + "endId": "00000000-0000-0000-0000-00006b6e7218", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 1014, + "type": "LANGUAGE", + "startNode": 257, + "endNode": 1, + "properties": { + "startId": "00000000-0000-0000-0000-00006b6e7218", + "endId": "00000000-0000-0000-ffff-ffff93eb63d9" + } + }, + { + "id": 1015, + "type": "GLOBAL_SCOPE", + "startNode": 78, + "endNode": 44, + "properties": { + "startId": "00000000-0000-0000-0000-00004dc4db66", + "endId": "00000000-0000-0000-0000-000076dbb8f8" + } + }, + { + "id": 1016, + "type": "LANGUAGE", + "startNode": 78, + "endNode": 1, + "properties": { + "startId": "00000000-0000-0000-0000-00004dc4db66", + "endId": "00000000-0000-0000-ffff-ffff93eb63d9" + } + }, + { + "id": 1017, + "type": "PARENT", + "startNode": 78, + "endNode": 73, + "properties": { + "startId": "00000000-0000-0000-0000-00004dc4db66", + "endId": "00000000-0000-0000-ffff-fffff4fe3511" + } + }, + { + "id": 1018, + "type": "RETURN_TYPES", + "startNode": 80, + "endNode": 79, + "properties": { + "startId": "00000000-0000-0000-0000-000000000001", + "endId": "00000000-0000-0000-0000-000000007d14" + } + }, + { + "id": 1019, + "type": "SECONDARY_TYPES", + "startNode": 80, + "endNode": 79, + "properties": { + "startId": "00000000-0000-0000-0000-000000000001", + "endId": "00000000-0000-0000-0000-000000007d14" + } + }, + { + "id": 1020, + "type": "LANGUAGE", + "startNode": 80, + "endNode": 45, + "properties": { + "startId": "00000000-0000-0000-0000-000000000001", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 1021, + "type": "END_NODE", + "startNode": 227, + "endNode": 92, + "properties": { + "startId": "00000000-0000-0000-ffff-ffff9c7afc87", + "endId": "ffffffff-e74e-facb-ffff-ffffe393da33" + } + }, + { + "id": 1022, + "type": "START_NODE", + "startNode": 227, + "endNode": 75, + "properties": { + "startId": "00000000-0000-0000-ffff-ffff9c7afc87", + "endId": "00000000-2050-f08d-0000-00005516da07" + } + }, + { + "id": 1023, + "type": "LANGUAGE", + "startNode": 227, + "endNode": 195, + "properties": { + "startId": "00000000-0000-0000-ffff-ffff9c7afc87", + "endId": "00000000-0000-0000-0000-0000128d2439" + } + }, + { + "id": 1024, + "type": "USAGE", + "startNode": 75, + "endNode": 229, + "properties": { + "startId": "00000000-2050-f08d-0000-00005516da07", + "endId": "00000000-0000-0000-0000-00001899e522", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 1025, + "type": "LANGUAGE", + "startNode": 229, + "endNode": 1, + "properties": { + "startId": "00000000-0000-0000-0000-00001899e522", + "endId": "00000000-0000-0000-ffff-ffff93eb63d9" + } + }, + { + "id": 1026, + "type": "LANGUAGE", + "startNode": 67, + "endNode": 45, + "properties": { + "startId": "00000000-0000-0000-0000-000000000020", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 1027, + "type": "LANGUAGE", + "startNode": 231, + "endNode": 1, + "properties": { + "startId": "00000000-0000-0000-ffff-ffff85bdfe86", + "endId": "00000000-0000-0000-ffff-ffff93eb63d9" + } + }, + { + "id": 1028, + "type": "MEMORY_VALUE_USAGE", + "startNode": 231, + "endNode": 84, + "properties": { + "startId": "00000000-0000-0000-ffff-ffff85bdfe86", + "endId": "00000000-5516-da07-ffff-ffff8b77f73f", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 1029, + "type": "MEMORY_VALUE_USAGE", + "startNode": 231, + "endNode": 90, + "properties": { + "startId": "00000000-0000-0000-ffff-ffff85bdfe86", + "endId": "ffffffff-e9ce-636f-ffff-ffffda2fa35f", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 1030, + "type": "MEMORY_VALUE_USAGE", + "startNode": 231, + "endNode": 88, + "properties": { + "startId": "00000000-0000-0000-ffff-ffff85bdfe86", + "endId": "ffffffff-e9ce-636f-ffff-ffffbc25f070", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 1031, + "type": "USAGE", + "startNode": 88, + "endNode": 234, + "properties": { + "startId": "ffffffff-e9ce-636f-ffff-ffffbc25f070", + "endId": "00000000-0000-0000-ffff-ffffc9550036", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 1032, + "type": "LANGUAGE", + "startNode": 234, + "endNode": 1, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffc9550036", + "endId": "00000000-0000-0000-ffff-ffff93eb63d9" + } + }, + { + "id": 1033, + "type": "LANGUAGE", + "startNode": 233, + "endNode": 1, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffe13ed42d", + "endId": "00000000-0000-0000-ffff-ffff93eb63d9" + } + }, + { + "id": 1034, + "type": "MEMORY_VALUE_USAGE", + "startNode": 233, + "endNode": 87, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffe13ed42d", + "endId": "ffffffff-bc25-f070-ffff-ffffca1d50f6", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 1035, + "type": "MEMORY_VALUE_USAGE", + "startNode": 233, + "endNode": 93, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffe13ed42d", + "endId": "ffffffff-e393-da33-0000-00006b2e93ec", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 1036, + "type": "PDG", + "startNode": 233, + "endNode": 103, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffe13ed42d", + "endId": "ffffffff-e348-5ace-ffff-ffffef513bfc", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 1037, + "type": "USAGE", + "startNode": 82, + "endNode": 232, + "properties": { + "startId": "00000000-5516-da07-ffff-ffffcb1c39d7", + "endId": "00000000-0000-0000-ffff-ffffbce2825c", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 1038, + "type": "USAGE", + "startNode": 87, + "endNode": 232, + "properties": { + "startId": "ffffffff-bc25-f070-ffff-ffffca1d50f6", + "endId": "00000000-0000-0000-ffff-ffffbce2825c", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 1039, + "type": "USAGE", + "startNode": 93, + "endNode": 232, + "properties": { + "startId": "ffffffff-e393-da33-0000-00006b2e93ec", + "endId": "00000000-0000-0000-ffff-ffffbce2825c", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 1040, + "type": "LANGUAGE", + "startNode": 232, + "endNode": 1, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffbce2825c", + "endId": "00000000-0000-0000-ffff-ffff93eb63d9" + } + }, + { + "id": 1041, + "type": "USAGE", + "startNode": 84, + "endNode": 230, + "properties": { + "startId": "00000000-5516-da07-ffff-ffff8b77f73f", + "endId": "00000000-0000-0000-ffff-fffffe95fbaf", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 1042, + "type": "USAGE", + "startNode": 90, + "endNode": 230, + "properties": { + "startId": "ffffffff-e9ce-636f-ffff-ffffda2fa35f", + "endId": "00000000-0000-0000-ffff-fffffe95fbaf", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 1043, + "type": "LANGUAGE", + "startNode": 230, + "endNode": 1, + "properties": { + "startId": "00000000-0000-0000-ffff-fffffe95fbaf", + "endId": "00000000-0000-0000-ffff-ffff93eb63d9" + } + }, + { + "id": 1044, + "type": "LANGUAGE", + "startNode": 50, + "endNode": 45, + "properties": { + "startId": "00000000-0000-0000-0000-000000007d14", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 1045, + "type": "BRANCHING_NODE", + "startNode": 219, + "endNode": 139, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffcfdba135", + "endId": "00000000-337f-71be-ffff-ffff8d1a9d77" + } + }, + { + "id": 1046, + "type": "END_NODE", + "startNode": 219, + "endNode": 139, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffcfdba135", + "endId": "00000000-337f-71be-ffff-ffff8d1a9d77" + } + }, + { + "id": 1047, + "type": "START_NODE", + "startNode": 219, + "endNode": 94, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffcfdba135", + "endId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb" + } + }, + { + "id": 1048, + "type": "LANGUAGE", + "startNode": 219, + "endNode": 195, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffcfdba135", + "endId": "00000000-0000-0000-0000-0000128d2439" + } + }, + { + "id": 1049, + "type": "EOG", + "startNode": 219, + "endNode": 220, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffcfdba135", + "endId": "00000000-0000-0000-ffff-ffff8be71890", + "branch": true, + "unreachable": false, + "index": 0, + "overlaying": true + } + }, + { + "id": 1050, + "type": "EOG", + "startNode": 219, + "endNode": 221, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffcfdba135", + "endId": "00000000-0000-0000-ffff-ffffb6387feb", + "branch": false, + "unreachable": false, + "index": 0, + "overlaying": true + } + }, + { + "id": 1051, + "type": "USAGE", + "startNode": 94, + "endNode": 244, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffa41865eb", + "endId": "00000000-0000-0000-ffff-fffff54e9e46", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 1052, + "type": "LANGUAGE", + "startNode": 244, + "endNode": 1, + "properties": { + "startId": "00000000-0000-0000-ffff-fffff54e9e46", + "endId": "00000000-0000-0000-ffff-ffff93eb63d9" + } + }, + { + "id": 1053, + "type": "RETURN_TYPES", + "startNode": 97, + "endNode": 96, + "properties": { + "startId": "00000000-0000-0000-0000-000000000001", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 1054, + "type": "SECONDARY_TYPES", + "startNode": 97, + "endNode": 96, + "properties": { + "startId": "00000000-0000-0000-0000-000000000001", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 1055, + "type": "LANGUAGE", + "startNode": 97, + "endNode": 45, + "properties": { + "startId": "00000000-0000-0000-0000-000000000001", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 1056, + "type": "GLOBAL_SCOPE", + "startNode": 95, + "endNode": 44, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffdef4cc02", + "endId": "00000000-0000-0000-0000-000076dbb8f8" + } + }, + { + "id": 1057, + "type": "LANGUAGE", + "startNode": 95, + "endNode": 1, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffdef4cc02", + "endId": "00000000-0000-0000-ffff-ffff93eb63d9" + } + }, + { + "id": 1058, + "type": "PARENT", + "startNode": 95, + "endNode": 63, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffdef4cc02", + "endId": "00000000-0000-0000-ffff-ffffd8828539" + } + }, + { + "id": 1059, + "type": "USAGE", + "startNode": 197, + "endNode": 239, + "properties": { + "startId": "ffffffff-e348-5ace-ffff-fffffd5d553d", + "endId": "00000000-0000-0000-ffff-ffffefd83263", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 1060, + "type": "USAGE", + "startNode": 133, + "endNode": 239, + "properties": { + "startId": "00000000-4298-5aa9-0000-000018b3329a", + "endId": "00000000-0000-0000-ffff-ffffefd83263", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 1061, + "type": "USAGE", + "startNode": 103, + "endNode": 239, + "properties": { + "startId": "ffffffff-e348-5ace-ffff-ffffef513bfc", + "endId": "00000000-0000-0000-ffff-ffffefd83263", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 1062, + "type": "LANGUAGE", + "startNode": 239, + "endNode": 1, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffefd83263", + "endId": "00000000-0000-0000-ffff-ffff93eb63d9" + } + }, + { + "id": 1063, + "type": "LANGUAGE", + "startNode": 249, + "endNode": 1, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffe7ea92ab", + "endId": "00000000-0000-0000-ffff-ffff93eb63d9" + } + }, + { + "id": 1064, + "type": "MEMORY_VALUE_USAGE", + "startNode": 249, + "endNode": 109, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffe7ea92ab", + "endId": "ffffffff-e356-ea6f-ffff-ffff8749247f", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 1065, + "type": "MEMORY_VALUE_USAGE", + "startNode": 249, + "endNode": 150, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffe7ea92ab", + "endId": "ffffffff-972d-b574-ffff-ffffbb235619", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 1066, + "type": "MEMORY_VALUE_USAGE", + "startNode": 249, + "endNode": 141, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffe7ea92ab", + "endId": "ffffffff-8d1a-9d77-ffff-ffff93af1981", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 1067, + "type": "USAGE", + "startNode": 198, + "endNode": 247, + "properties": { + "startId": "ffffffff-e356-ea6f-0000-00004454d05a", + "endId": "00000000-0000-0000-0000-000036cf263d", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 1068, + "type": "USAGE", + "startNode": 109, + "endNode": 247, + "properties": { + "startId": "ffffffff-e356-ea6f-ffff-ffff8749247f", + "endId": "00000000-0000-0000-0000-000036cf263d", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 1069, + "type": "USAGE", + "startNode": 150, + "endNode": 247, + "properties": { + "startId": "ffffffff-972d-b574-ffff-ffffbb235619", + "endId": "00000000-0000-0000-0000-000036cf263d", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 1070, + "type": "USAGE", + "startNode": 141, + "endNode": 247, + "properties": { + "startId": "ffffffff-8d1a-9d77-ffff-ffff93af1981", + "endId": "00000000-0000-0000-0000-000036cf263d", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 1071, + "type": "LANGUAGE", + "startNode": 247, + "endNode": 1, + "properties": { + "startId": "00000000-0000-0000-0000-000036cf263d", + "endId": "00000000-0000-0000-ffff-ffff93eb63d9" + } + }, + { + "id": 1072, + "type": "USAGE", + "startNode": 111, + "endNode": 248, + "properties": { + "startId": "ffffffff-9a07-5d1e-ffff-ffffa6fd5622", + "endId": "00000000-0000-0000-0000-0000565c909b", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 1073, + "type": "LANGUAGE", + "startNode": 248, + "endNode": 1, + "properties": { + "startId": "00000000-0000-0000-0000-0000565c909b", + "endId": "00000000-0000-0000-ffff-ffff93eb63d9" + } + }, + { + "id": 1074, + "type": "LANGUAGE", + "startNode": 246, + "endNode": 1, + "properties": { + "startId": "00000000-0000-0000-0000-00002dafac4b", + "endId": "00000000-0000-0000-ffff-ffff93eb63d9" + } + }, + { + "id": 1075, + "type": "MEMORY_VALUE_USAGE", + "startNode": 246, + "endNode": 99, + "properties": { + "startId": "00000000-0000-0000-0000-00002dafac4b", + "endId": "ffffffff-a418-65eb-ffff-ffffe044e5b1", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 1076, + "type": "MEMORY_VALUE_USAGE", + "startNode": 246, + "endNode": 111, + "properties": { + "startId": "00000000-0000-0000-0000-00002dafac4b", + "endId": "ffffffff-9a07-5d1e-ffff-ffffa6fd5622", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 1077, + "type": "MEMORY_VALUE_USAGE", + "startNode": 246, + "endNode": 110, + "properties": { + "startId": "00000000-0000-0000-0000-00002dafac4b", + "endId": "ffffffff-a6fd-5622-ffff-fffffaee3c2b", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 1078, + "type": "USAGE", + "startNode": 99, + "endNode": 245, + "properties": { + "startId": "ffffffff-a418-65eb-ffff-ffffe044e5b1", + "endId": "00000000-0000-0000-0000-00005aa295ee", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 1079, + "type": "USAGE", + "startNode": 110, + "endNode": 245, + "properties": { + "startId": "ffffffff-a6fd-5622-ffff-fffffaee3c2b", + "endId": "00000000-0000-0000-0000-00005aa295ee", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 1080, + "type": "LANGUAGE", + "startNode": 245, + "endNode": 1, + "properties": { + "startId": "00000000-0000-0000-0000-00005aa295ee", + "endId": "00000000-0000-0000-ffff-ffff93eb63d9" + } + }, + { + "id": 1081, + "type": "RETURN_TYPES", + "startNode": 120, + "endNode": 119, + "properties": { + "startId": "00000000-0000-0000-0000-000000000001", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 1082, + "type": "SECONDARY_TYPES", + "startNode": 120, + "endNode": 119, + "properties": { + "startId": "00000000-0000-0000-0000-000000000001", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 1083, + "type": "LANGUAGE", + "startNode": 120, + "endNode": 45, + "properties": { + "startId": "00000000-0000-0000-0000-000000000001", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 1084, + "type": "GLOBAL_SCOPE", + "startNode": 118, + "endNode": 44, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffaee79291", + "endId": "00000000-0000-0000-0000-000076dbb8f8" + } + }, + { + "id": 1085, + "type": "LANGUAGE", + "startNode": 118, + "endNode": 1, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffaee79291", + "endId": "00000000-0000-0000-ffff-ffff93eb63d9" + } + }, + { + "id": 1086, + "type": "PARENT", + "startNode": 118, + "endNode": 95, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffaee79291", + "endId": "00000000-0000-0000-ffff-ffffdef4cc02" + } + }, + { + "id": 1087, + "type": "USAGE", + "startNode": 117, + "endNode": 235, + "properties": { + "startId": "ffffffff-8b4e-acdb-0000-0000607b117c", + "endId": "00000000-0000-0000-0000-0000579940d9", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 1088, + "type": "LANGUAGE", + "startNode": 235, + "endNode": 1, + "properties": { + "startId": "00000000-0000-0000-0000-0000579940d9", + "endId": "00000000-0000-0000-ffff-ffff93eb63d9" + } + }, + { + "id": 1089, + "type": "END_NODE", + "startNode": 228, + "endNode": 125, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffaef132cb", + "endId": "ffffffff-e803-9f2a-ffff-ffffcec18757" + } + }, + { + "id": 1090, + "type": "START_NODE", + "startNode": 228, + "endNode": 117, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffaef132cb", + "endId": "ffffffff-8b4e-acdb-0000-0000607b117c" + } + }, + { + "id": 1091, + "type": "LANGUAGE", + "startNode": 228, + "endNode": 195, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffaef132cb", + "endId": "00000000-0000-0000-0000-0000128d2439" + } + }, + { + "id": 1092, + "type": "LANGUAGE", + "startNode": 258, + "endNode": 195, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffc44188ec", + "endId": "00000000-0000-0000-0000-0000128d2439" + } + }, + { + "id": 1093, + "type": "LANGUAGE", + "startNode": 240, + "endNode": 1, + "properties": { + "startId": "00000000-0000-0000-0000-000014348434", + "endId": "00000000-0000-0000-ffff-ffff93eb63d9" + } + }, + { + "id": 1094, + "type": "MEMORY_VALUE_USAGE", + "startNode": 240, + "endNode": 134, + "properties": { + "startId": "00000000-0000-0000-0000-000014348434", + "endId": "00000000-052e-f17c-0000-000042985aa9", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 1095, + "type": "MEMORY_VALUE_USAGE", + "startNode": 240, + "endNode": 133, + "properties": { + "startId": "00000000-0000-0000-0000-000014348434", + "endId": "00000000-4298-5aa9-0000-000018b3329a", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 1096, + "type": "USAGE", + "startNode": 134, + "endNode": 241, + "properties": { + "startId": "00000000-052e-f17c-0000-000042985aa9", + "endId": "00000000-0000-0000-ffff-fffff515510f", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 1097, + "type": "LANGUAGE", + "startNode": 241, + "endNode": 1, + "properties": { + "startId": "00000000-0000-0000-ffff-fffff515510f", + "endId": "00000000-0000-0000-ffff-ffff93eb63d9" + } + }, + { + "id": 1098, + "type": "LANGUAGE", + "startNode": 237, + "endNode": 1, + "properties": { + "startId": "00000000-0000-0000-0000-00001d769195", + "endId": "00000000-0000-0000-ffff-ffff93eb63d9" + } + }, + { + "id": 1099, + "type": "MEMORY_VALUE_USAGE", + "startNode": 237, + "endNode": 122, + "properties": { + "startId": "00000000-0000-0000-0000-00001d769195", + "endId": "00000000-607b-117c-0000-00001a8925d5", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 1100, + "type": "MEMORY_VALUE_USAGE", + "startNode": 237, + "endNode": 136, + "properties": { + "startId": "00000000-0000-0000-0000-00001d769195", + "endId": "00000000-052e-f17c-0000-00001ef96b5f", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 1101, + "type": "USAGE", + "startNode": 122, + "endNode": 236, + "properties": { + "startId": "00000000-607b-117c-0000-00001a8925d5", + "endId": "00000000-0000-0000-ffff-ffff941b2f97", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 1102, + "type": "USAGE", + "startNode": 136, + "endNode": 236, + "properties": { + "startId": "00000000-052e-f17c-0000-00001ef96b5f", + "endId": "00000000-0000-0000-ffff-ffff941b2f97", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 1103, + "type": "LANGUAGE", + "startNode": 236, + "endNode": 1, + "properties": { + "startId": "00000000-0000-0000-ffff-ffff941b2f97", + "endId": "00000000-0000-0000-ffff-ffff93eb63d9" + } + }, + { + "id": 1104, + "type": "LANGUAGE", + "startNode": 238, + "endNode": 1, + "properties": { + "startId": "00000000-0000-0000-ffff-ffff9825cb4a", + "endId": "00000000-0000-0000-ffff-ffff93eb63d9" + } + }, + { + "id": 1105, + "type": "MEMORY_VALUE_USAGE", + "startNode": 238, + "endNode": 129, + "properties": { + "startId": "00000000-0000-0000-ffff-ffff9825cb4a", + "endId": "00000000-052e-f17c-0000-000007357f36", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 1106, + "type": "BRANCHING_NODE", + "startNode": 221, + "endNode": 158, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffb6387feb", + "endId": "ffffffff-c2ea-6abd-0000-00005bdb7ad6" + } + }, + { + "id": 1107, + "type": "END_NODE", + "startNode": 221, + "endNode": 158, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffb6387feb", + "endId": "ffffffff-c2ea-6abd-0000-00005bdb7ad6" + } + }, + { + "id": 1108, + "type": "START_NODE", + "startNode": 221, + "endNode": 138, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffb6387feb", + "endId": "ffffffff-e0b5-31a7-0000-0000337f71be" + } + }, + { + "id": 1109, + "type": "LANGUAGE", + "startNode": 221, + "endNode": 195, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffb6387feb", + "endId": "00000000-0000-0000-0000-0000128d2439" + } + }, + { + "id": 1110, + "type": "EOG", + "startNode": 221, + "endNode": 222, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffb6387feb", + "endId": "00000000-0000-0000-ffff-ffff94f06d11", + "branch": true, + "unreachable": false, + "index": 0, + "overlaying": true + } + }, + { + "id": 1111, + "type": "EOG", + "startNode": 221, + "endNode": 223, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffb6387feb", + "endId": "00000000-0000-0000-ffff-ffffbec2181b", + "branch": false, + "unreachable": false, + "index": 0, + "overlaying": true + } + }, + { + "id": 1112, + "type": "END_NODE", + "startNode": 220, + "endNode": 143, + "properties": { + "startId": "00000000-0000-0000-ffff-ffff8be71890", + "endId": "ffffffff-e826-ab00-ffff-ffffd2fff641" + } + }, + { + "id": 1113, + "type": "START_NODE", + "startNode": 220, + "endNode": 144, + "properties": { + "startId": "00000000-0000-0000-ffff-ffff8be71890", + "endId": "ffffffff-d2ff-f641-ffff-ffff8494d206" + } + }, + { + "id": 1114, + "type": "LANGUAGE", + "startNode": 220, + "endNode": 195, + "properties": { + "startId": "00000000-0000-0000-ffff-ffff8be71890", + "endId": "00000000-0000-0000-0000-0000128d2439" + } + }, + { + "id": 1115, + "type": "LANGUAGE", + "startNode": 242, + "endNode": 1, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffb37d3974", + "endId": "00000000-0000-0000-ffff-ffff93eb63d9" + } + }, + { + "id": 1116, + "type": "MEMORY_VALUE_USAGE", + "startNode": 242, + "endNode": 146, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffb37d3974", + "endId": "ffffffff-e3f2-8aa4-0000-000008341092", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 1117, + "type": "MEMORY_VALUE_USAGE", + "startNode": 242, + "endNode": 164, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffb37d3974", + "endId": "00000000-5d02-9726-0000-000040bd4f16", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 1118, + "type": "MEMORY_VALUE_USAGE", + "startNode": 242, + "endNode": 160, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffb37d3974", + "endId": "00000000-5bdb-7ad6-0000-0000270fb0f2", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 1119, + "type": "USAGE", + "startNode": 199, + "endNode": 250, + "properties": { + "startId": "ffffffff-e3f2-8aa4-ffff-ffffdd2295e7", + "endId": "00000000-0000-0000-ffff-ffffcf97f5a3", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 1120, + "type": "USAGE", + "startNode": 146, + "endNode": 250, + "properties": { + "startId": "ffffffff-e3f2-8aa4-0000-000008341092", + "endId": "00000000-0000-0000-ffff-ffffcf97f5a3", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 1121, + "type": "USAGE", + "startNode": 164, + "endNode": 250, + "properties": { + "startId": "00000000-5d02-9726-0000-000040bd4f16", + "endId": "00000000-0000-0000-ffff-ffffcf97f5a3", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 1122, + "type": "USAGE", + "startNode": 160, + "endNode": 250, + "properties": { + "startId": "00000000-5bdb-7ad6-0000-0000270fb0f2", + "endId": "00000000-0000-0000-ffff-ffffcf97f5a3", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 1123, + "type": "LANGUAGE", + "startNode": 250, + "endNode": 1, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffcf97f5a3", + "endId": "00000000-0000-0000-ffff-ffff93eb63d9" + } + }, + { + "id": 1124, + "type": "END_NODE", + "startNode": 223, + "endNode": 169, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffbec2181b", + "endId": "ffffffff-e0b5-31a7-0000-00000af97fa8" + } + }, + { + "id": 1125, + "type": "START_NODE", + "startNode": 223, + "endNode": 152, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffbec2181b", + "endId": "ffffffff-e0b5-31a7-ffff-ffffc2ea6abd" + } + }, + { + "id": 1126, + "type": "LANGUAGE", + "startNode": 223, + "endNode": 195, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffbec2181b", + "endId": "00000000-0000-0000-0000-0000128d2439" + } + }, + { + "id": 1127, + "type": "LANGUAGE", + "startNode": 251, + "endNode": 1, + "properties": { + "startId": "00000000-0000-0000-ffff-fffff7f6f97c", + "endId": "00000000-0000-0000-ffff-ffff93eb63d9" + } + }, + { + "id": 1128, + "type": "MEMORY_VALUE_USAGE", + "startNode": 251, + "endNode": 156, + "properties": { + "startId": "00000000-0000-0000-ffff-fffff7f6f97c", + "endId": "00000000-5bdb-7ad6-0000-00000e9af3aa", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 1129, + "type": "END_NODE", + "startNode": 222, + "endNode": 162, + "properties": { + "startId": "00000000-0000-0000-ffff-ffff94f06d11", + "endId": "ffffffff-e871-4aa1-ffff-ffffdc094ac0" + } + }, + { + "id": 1130, + "type": "START_NODE", + "startNode": 222, + "endNode": 163, + "properties": { + "startId": "00000000-0000-0000-ffff-ffff94f06d11", + "endId": "00000000-5d02-9726-ffff-ffff9f146bea" + } + }, + { + "id": 1131, + "type": "LANGUAGE", + "startNode": 222, + "endNode": 195, + "properties": { + "startId": "00000000-0000-0000-ffff-ffff94f06d11", + "endId": "00000000-0000-0000-0000-0000128d2439" + } + }, + { + "id": 1132, + "type": "USAGE", + "startNode": 165, + "endNode": 252, + "properties": { + "startId": "ffffffff-dc09-4ac0-0000-00005d029726", + "endId": "00000000-0000-0000-0000-0000785b2bbb", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 1133, + "type": "LANGUAGE", + "startNode": 252, + "endNode": 1, + "properties": { + "startId": "00000000-0000-0000-0000-0000785b2bbb", + "endId": "00000000-0000-0000-ffff-ffff93eb63d9" + } + }, + { + "id": 1134, + "type": "USAGE", + "startNode": 172, + "endNode": 253, + "properties": { + "startId": "ffffffff-a3b5-5fd5-ffff-ffffbc61cc17", + "endId": "00000000-0000-0000-ffff-ffffdfbaf35a", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 1135, + "type": "LANGUAGE", + "startNode": 253, + "endNode": 1, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffdfbaf35a", + "endId": "00000000-0000-0000-ffff-ffff93eb63d9" + } + }, + { + "id": 1136, + "type": "RETURN_TYPES", + "startNode": 175, + "endNode": 174, + "properties": { + "startId": "00000000-0000-0000-0000-000000000001", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 1137, + "type": "SECONDARY_TYPES", + "startNode": 175, + "endNode": 174, + "properties": { + "startId": "00000000-0000-0000-0000-000000000001", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 1138, + "type": "LANGUAGE", + "startNode": 175, + "endNode": 45, + "properties": { + "startId": "00000000-0000-0000-0000-000000000001", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 1139, + "type": "GLOBAL_SCOPE", + "startNode": 173, + "endNode": 44, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffcfd82b56", + "endId": "00000000-0000-0000-0000-000076dbb8f8" + } + }, + { + "id": 1140, + "type": "LANGUAGE", + "startNode": 173, + "endNode": 1, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffcfd82b56", + "endId": "00000000-0000-0000-ffff-ffff93eb63d9" + } + }, + { + "id": 1141, + "type": "PARENT", + "startNode": 173, + "endNode": 63, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffcfd82b56", + "endId": "00000000-0000-0000-ffff-ffffd8828539" + } + }, + { + "id": 1142, + "type": "END_NODE", + "startNode": 224, + "endNode": 180, + "properties": { + "startId": "00000000-0000-0000-ffff-fffff5138349", + "endId": "ffffffff-e1e8-8b87-0000-0000117a269a" + } + }, + { + "id": 1143, + "type": "START_NODE", + "startNode": 224, + "endNode": 172, + "properties": { + "startId": "00000000-0000-0000-ffff-fffff5138349", + "endId": "ffffffff-a3b5-5fd5-ffff-ffffbc61cc17" + } + }, + { + "id": 1144, + "type": "LANGUAGE", + "startNode": 224, + "endNode": 195, + "properties": { + "startId": "00000000-0000-0000-ffff-fffff5138349", + "endId": "00000000-0000-0000-0000-0000128d2439" + } + }, + { + "id": 1145, + "type": "LANGUAGE", + "startNode": 255, + "endNode": 1, + "properties": { + "startId": "00000000-0000-0000-0000-00006043c79f", + "endId": "00000000-0000-0000-ffff-ffff93eb63d9" + } + }, + { + "id": 1146, + "type": "MEMORY_VALUE_USAGE", + "startNode": 255, + "endNode": 177, + "properties": { + "startId": "00000000-0000-0000-0000-00006043c79f", + "endId": "ffffffff-bc61-cc17-0000-00007a47bbbd", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 1147, + "type": "MEMORY_VALUE_USAGE", + "startNode": 255, + "endNode": 184, + "properties": { + "startId": "00000000-0000-0000-0000-00006043c79f", + "endId": "00000000-38ed-9433-0000-0000330b8b19", + "functionSummary": false, + "dependence": "DATA", + "overlaying": false + } + }, + { + "id": 1148, + "type": "USAGE", + "startNode": 177, + "endNode": 254, + "properties": { + "startId": "ffffffff-bc61-cc17-0000-00007a47bbbd", + "endId": "00000000-0000-0000-ffff-ffffb71572ae", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 1149, + "type": "USAGE", + "startNode": 184, + "endNode": 254, + "properties": { + "startId": "00000000-38ed-9433-0000-0000330b8b19", + "endId": "00000000-0000-0000-ffff-ffffb71572ae", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 1150, + "type": "LANGUAGE", + "startNode": 254, + "endNode": 1, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffb71572ae", + "endId": "00000000-0000-0000-ffff-ffff93eb63d9" + } + }, + { + "id": 1151, + "type": "USAGE", + "startNode": 185, + "endNode": 243, + "properties": { + "startId": "ffffffff-a3b5-5fd5-0000-00006d51c74c", + "endId": "00000000-0000-0000-0000-000005d48f2c", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 1152, + "type": "LANGUAGE", + "startNode": 243, + "endNode": 1, + "properties": { + "startId": "00000000-0000-0000-0000-000005d48f2c", + "endId": "00000000-0000-0000-ffff-ffff93eb63d9" + } + }, + { + "id": 1153, + "type": "END_NODE", + "startNode": 225, + "endNode": 191, + "properties": { + "startId": "00000000-0000-0000-ffff-fffffd1f30b5", + "endId": "ffffffff-e22a-fc7a-0000-00001b3aaca6" + } + }, + { + "id": 1154, + "type": "START_NODE", + "startNode": 225, + "endNode": 185, + "properties": { + "startId": "00000000-0000-0000-ffff-fffffd1f30b5", + "endId": "ffffffff-a3b5-5fd5-0000-00006d51c74c" + } + }, + { + "id": 1155, + "type": "LANGUAGE", + "startNode": 225, + "endNode": 195, + "properties": { + "startId": "00000000-0000-0000-ffff-fffffd1f30b5", + "endId": "00000000-0000-0000-0000-0000128d2439" + } + }, + { + "id": 1156, + "type": "GLOBAL_SCOPE", + "startNode": 186, + "endNode": 44, + "properties": { + "startId": "00000000-0000-0000-0000-00003ce796c1", + "endId": "00000000-0000-0000-0000-000076dbb8f8" + } + }, + { + "id": 1157, + "type": "LANGUAGE", + "startNode": 186, + "endNode": 1, + "properties": { + "startId": "00000000-0000-0000-0000-00003ce796c1", + "endId": "00000000-0000-0000-ffff-ffff93eb63d9" + } + }, + { + "id": 1158, + "type": "PARENT", + "startNode": 186, + "endNode": 63, + "properties": { + "startId": "00000000-0000-0000-0000-00003ce796c1", + "endId": "00000000-0000-0000-ffff-ffffd8828539" + } + }, + { + "id": 1159, + "type": "RETURN_TYPES", + "startNode": 188, + "endNode": 187, + "properties": { + "startId": "00000000-0000-0000-0000-000000000001", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 1160, + "type": "SECONDARY_TYPES", + "startNode": 188, + "endNode": 187, + "properties": { + "startId": "00000000-0000-0000-0000-000000000001", + "endId": "00000000-0000-0000-0000-000000000001" + } + }, + { + "id": 1161, + "type": "LANGUAGE", + "startNode": 188, + "endNode": 45, + "properties": { + "startId": "00000000-0000-0000-0000-000000000001", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 1162, + "type": "LANGUAGE", + "startNode": 46, + "endNode": 45, + "properties": { + "startId": "00000000-0000-0000-0000-0000761bc2cc", + "endId": "00000000-0000-0000-0000-00000c19302d" + } + }, + { + "id": 1163, + "type": "USAGE", + "startNode": 200, + "endNode": 256, + "properties": { + "startId": "ffffffff-dbbc-3c9c-0000-0000774b9ec9", + "endId": "00000000-0000-0000-0000-00006a046de3", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 1164, + "type": "USAGE", + "startNode": 69, + "endNode": 256, + "properties": { + "startId": "ffffffff-dbbc-3c9c-ffff-ffffb32c23f0", + "endId": "00000000-0000-0000-0000-00006a046de3", + "outgoing": true, + "overlaying": false + } + }, + { + "id": 1165, + "type": "LANGUAGE", + "startNode": 256, + "endNode": 1, + "properties": { + "startId": "00000000-0000-0000-0000-00006a046de3", + "endId": "00000000-0000-0000-ffff-ffff93eb63d9" + } + }, + { + "id": 1166, + "type": "END_NODE", + "startNode": 216, + "endNode": 201, + "properties": { + "startId": "00000000-0000-0000-0000-000024b26d98", + "endId": "ffffffff-c1c5-0235-0000-0000179badee" + } + }, + { + "id": 1167, + "type": "START_NODE", + "startNode": 216, + "endNode": 201, + "properties": { + "startId": "00000000-0000-0000-0000-000024b26d98", + "endId": "ffffffff-c1c5-0235-0000-0000179badee" + } + }, + { + "id": 1168, + "type": "LANGUAGE", + "startNode": 216, + "endNode": 195, + "properties": { + "startId": "00000000-0000-0000-0000-000024b26d98", + "endId": "00000000-0000-0000-0000-0000128d2439" + } + }, + { + "id": 1169, + "type": "GLOBAL_SCOPE", + "startNode": 202, + "endNode": 44, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffdc0ea943", + "endId": "00000000-0000-0000-0000-000076dbb8f8" + } + }, + { + "id": 1170, + "type": "LANGUAGE", + "startNode": 202, + "endNode": 1, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffdc0ea943", + "endId": "00000000-0000-0000-ffff-ffff93eb63d9" + } + }, + { + "id": 1171, + "type": "PARENT", + "startNode": 202, + "endNode": 44, + "properties": { + "startId": "00000000-0000-0000-ffff-ffffdc0ea943", + "endId": "00000000-0000-0000-0000-000076dbb8f8" + } + } + ] +} \ No newline at end of file diff --git a/scanpipe/tests/data/cpg_reachability/python/vuln-app.py b/scanpipe/tests/data/cpg_reachability/python/vuln-app.py new file mode 100644 index 0000000000..dae9bce750 --- /dev/null +++ b/scanpipe/tests/data/cpg_reachability/python/vuln-app.py @@ -0,0 +1,41 @@ +import os + +debug = False + + +class ReportGenerator: + """A dummy class to test AST class method parsing.""" + + def __init__(self, base_dir): + self.base_dir = base_dir + + +def serve_report(request_payload): + """Top-level function handling a request.""" + generator = ReportGenerator("/var/reports") + requested_file = request_payload.get("file") + + # Helper function nested inside serve_report + def build_file_path(filename): + # VULNERABLE: Direct concatenation allows Path Traversal + # An attacker passing "../../etc/passwd" could read system files. + return os.path.join(generator.base_dir, filename) + + if not requested_file: + return "Error: No file specified" + + target_path = build_file_path(requested_file) + + if os.path.exists(target_path): + return f"Serving content of {target_path}" + + return "Error: File not found" + + +def handle_request(req): + return serve_report(req) + + +def unrelated_top_level_function(): + """Test AST node boundaries.""" + return "I am just here to add AST complexity." diff --git a/scanpipe/tests/pipes/test_cpg_symbols_reachability.py b/scanpipe/tests/pipes/test_cpg_symbols_reachability.py new file mode 100644 index 0000000000..a93bd2fc3c --- /dev/null +++ b/scanpipe/tests/pipes/test_cpg_symbols_reachability.py @@ -0,0 +1,164 @@ +import json +import shutil +import sys +from pathlib import Path +from unittest import skipIf +from unittest.mock import PropertyMock +from unittest.mock import patch + +from django.test import TestCase + +from scanpipe.models import Project +from scanpipe.pipes import collect_and_create_codebase_resources +from scanpipe.pipes.cpg import ResourcePatchMatcher +from scanpipe.pipes.reachability import PatchAnalyzer +from scanpipe.pipes.reachability import ReachabilityStatus + +TEST_DATA = Path(__file__).parent.parent / "data" / "cpg_reachability" / "python" +COMMIT_HASH = "07ec0de1964b14bf085a1c9a27ece2b61ab6105c" +VCS_URL = "https://github.com/aboutcode-org/test" + + +@skipIf(sys.platform == "darwin", "Not supported on macOS") +class CPGQueryReachabilityPipesTest(TestCase): + def setUp(self): + self.project1 = Project.objects.create(name="Analysis") + self.project1.codebase_path.mkdir(parents=True, exist_ok=True) + + def get_real_patch_symbols(self): + """ + Patch symbols of the fixture commit, computed with the real + analyzer from the real vulnerable/fixed file contents. + """ + vulnerable_text = (TEST_DATA / "vuln-app.py").read_text() + fixed_text = (TEST_DATA / "fixed-app.py").read_text() + removed_lines, added_lines = PatchAnalyzer.compute_changed_lines( + vulnerable_text, fixed_text + ) + return PatchAnalyzer.analyze( + vulnerable_text=vulnerable_text, + fixed_text=fixed_text, + removed_lines=removed_lines, + added_lines=added_lines, + file_path="app.py", + ) + + @staticmethod + def get_symbol_key(symbols, ending="build_file_path"): + """ + The analyzer's key for the vulnerable helper, tolerating + qualified-name variations in the real extraction. + """ + for key in symbols: + if key.endswith(ending): + return key + return None + + @patch("scanpipe.pipes.cpg.run_command_safely") + @patch("scanpipe.pipes.cpg.CPG_NEO4J_EXECUTABLE", "cpg-neo4j") + @patch("scanpipe.pipes.reachability.Repo") + @patch("scanpipe.pipes.reachability.PatchAnalyzer.collect_patch_symbols") + @patch.object(Project, "package_vulnerabilities", new_callable=PropertyMock) + def test_end_to_end_query_reachability_pipeline( + self, mock_vulnerabilities, mock_collect_symbols, mock_repo, mock_run_command + ): + python_dir = self.project1.codebase_path / "python" + shutil.copytree(TEST_DATA, python_dir) + + collect_and_create_codebase_resources(self.project1) + for codebase_resource in self.project1.codebaseresources.all(): + if codebase_resource.path.endswith(".py"): + codebase_resource.programming_language = "Python" + codebase_resource.save() + resource = self.project1.codebaseresources.get(path="python/main/app.py") + + export_path = self.project1.get_output_file_path("cpg_reachability", "json") + export_path.parent.mkdir(parents=True, exist_ok=True) + shutil.copyfile(python_dir / "python-cpg.json", export_path) + + vulnerable, fixed, language = self.get_real_patch_symbols() + self.assertEqual("Python", language) + + mock_collect_symbols.return_value = { + language: { + "vulnerable": { + f"app.py::{key}": meta for key, meta in vulnerable.items() + }, + "fixed": {f"app.py::{key}": meta for key, meta in fixed.items()}, + }, + } + mock_vulnerabilities.return_value = [ + { + "advisory_uid": "pypi/app/PYSEC-0001", + "fixed_in_patches": [{"vcs_url": VCS_URL, "commit_hash": COMMIT_HASH}], + } + ] + + run = self.project1.add_pipeline("cpg_symbols_reachability") + pipeline = run.make_pipeline_instance() + pipeline.execute() + + mock_collect_symbols.assert_called_once() + mock_run_command.assert_called_once() + resource.refresh_from_db() + results = (resource.extra_data or {}).get("symbols_reachability") or [] + self.assertEqual( + results, + [ + { + "patch": { + "vcs_url": "https://github.com/aboutcode-org/test", + "commit_hash": "07ec0de1964b14bf085a1c9a27ece2b61ab6105c", + }, + "is_reachable": ReachabilityStatus.REACHABLE.value, + "tool_details": [ + { + "eog_path": [ + "app.handle_request", + "app.serve_report", + "app.build_file_path", + ], + "is_defined": True, + "symbol_name": "serve_report.build_file_path", + "is_reachable": True, + }, + { + "eog_path": ["app.handle_request", "app.serve_report"], + "is_defined": True, + "symbol_name": "serve_report", + "is_reachable": True, + }, + ], + "advisory_uids": ["pypi/app/PYSEC-0001"], + "fixed_symbols": [ + "app.py::serve_report", + "app.py::serve_report.build_file_path", + ], + "vulnerable_symbols": [ + "app.py::serve_report", + "app.py::serve_report.build_file_path", + ], + } + ], + ) + + def test_resource_patch_matcher(self): + graph = json.loads((TEST_DATA / "python-cpg.json").read_text()) + vulnerable, _, _ = self.get_real_patch_symbols() + build_key = self.get_symbol_key(vulnerable) + matcher = ResourcePatchMatcher(graph) + results = matcher.match(vulnerable, file_path="python/main/app.py") + detail = results.get(build_key) + self.assertEqual( + detail, + { + "symbol_name": "serve_report.build_file_path", + "is_defined": True, + "is_reachable": True, + "eog_path": [ + "app.handle_request", + "app.serve_report", + "app.build_file_path", + ], + }, + )