{"nodes":[{"id":"filter_domainhasher_class","label":"DomainHasher (Android)","file_type":"code","source_file":"apps/rebreak-native/modules/rebreak-protection/android/src/main/java/expo/modules/rebreakprotection/filter/DomainHasher.kt","source_location":"line 15","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"filter_domainhasher_normalize","label":"DomainHasher.normalize() — strip scheme/path/www","file_type":"code","source_file":"apps/rebreak-native/modules/rebreak-protection/android/src/main/java/expo/modules/rebreakprotection/filter/DomainHasher.kt","source_location":"line 24","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"filter_domainhasher_hash","label":"DomainHasher.hash() — SHA-256 first 8 bytes as big-endian UInt64","file_type":"code","source_file":"apps/rebreak-native/modules/rebreak-protection/android/src/main/java/expo/modules/rebreakprotection/filter/DomainHasher.kt","source_location":"line 38","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"filter_domainhasher_privacy_principle","label":"Domain hashing privacy principle — no plaintext domain leaves device","file_type":"concept","source_file":"apps/rebreak-native/modules/rebreak-protection/android/src/main/java/expo/modules/rebreakprotection/filter/DomainHasher.kt","source_location":"line 13","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"accessibility_rebreaka11yservice_class","label":"RebreakAccessibilityService — Android tamper-lock","file_type":"code","source_file":"apps/rebreak-native/modules/rebreak-protection/android/src/main/java/expo/modules/rebreakprotection/accessibility/RebreakAccessibilityService.kt","source_location":"line 38","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"accessibility_tamperlock_concept","label":"Tamper-Lock — blocks settings access when protection armed","file_type":"concept","source_file":"apps/rebreak-native/modules/rebreak-protection/android/src/main/java/expo/modules/rebreakprotection/accessibility/RebreakAccessibilityService.kt","source_location":"line 7","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"accessibility_watched_packages","label":"WATCHED_SETTINGS_PACKAGES — monitored Android system packages","file_type":"code","source_file":"apps/rebreak-native/modules/rebreak-protection/android/src/main/java/expo/modules/rebreakprotection/accessibility/RebreakAccessibilityService.kt","source_location":"line 242","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"accessibility_high_confidence_keywords","label":"HIGH_CONFIDENCE_KEYWORDS — block-trigger strings in Settings","file_type":"code","source_file":"apps/rebreak-native/modules/rebreak-protection/android/src/main/java/expo/modules/rebreakprotection/accessibility/RebreakAccessibilityService.kt","source_location":"line 260","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"accessibility_dangerous_activity_patterns","label":"DANGEROUS_ACTIVITY_PATTERNS — VPN/Uninstall/A11y activity class names","file_type":"code","source_file":"apps/rebreak-native/modules/rebreak-protection/android/src/main/java/expo/modules/rebreakprotection/accessibility/RebreakAccessibilityService.kt","source_location":"line 273","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"accessibility_vpn_dns_architecture","label":"Architecture decision: VPN DNS-filter does URL blocking, A11y only does tamper-lock","file_type":"rationale","source_file":"apps/rebreak-native/modules/rebreak-protection/android/src/main/java/expo/modules/rebreakprotection/accessibility/RebreakAccessibilityService.kt","source_location":"line 12","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"src_rebreakprotectionmodule_ts","label":"RebreakProtectionModule.ts — cross-platform native module interface","file_type":"code","source_file":"apps/rebreak-native/modules/rebreak-protection/src/RebreakProtectionModule.ts","source_location":"line 1","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"src_activate_url_filter","label":"activateUrlFilter() — iOS Layer 1 (NEFilter/VPN tunnel, MDM-branch)","file_type":"code","source_file":"apps/rebreak-native/modules/rebreak-protection/src/RebreakProtectionModule.ts","source_location":"line 61","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"src_activate_ne_url_filter","label":"activateNeUrlFilter() — iOS NEURLFilter (iOS 26, inactive)","file_type":"code","source_file":"apps/rebreak-native/modules/rebreak-protection/src/RebreakProtectionModule.ts","source_location":"line 74","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"src_probe_content_filter","label":"probeContentFilter() — MDM capability probe for iOS","file_type":"code","source_file":"apps/rebreak-native/modules/rebreak-protection/src/RebreakProtectionModule.ts","source_location":"line 46","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"src_sync_blocklist","label":"syncBlocklist() — fetch blocklist.bin from server, plan-aware","file_type":"code","source_file":"apps/rebreak-native/modules/rebreak-protection/src/RebreakProtectionModule.ts","source_location":"line 173","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"src_sync_webcontent_domains","label":"syncWebContentDomains() — iOS Layer 2 curated list sync","file_type":"code","source_file":"apps/rebreak-native/modules/rebreak-protection/src/RebreakProtectionModule.ts","source_location":"line 162","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"src_run_health_probe","label":"runHealthProbe() — E2E verification via hidden WebView","file_type":"code","source_file":"apps/rebreak-native/modules/rebreak-protection/src/RebreakProtectionModule.ts","source_location":"line 180","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"src_reconcile_url_filter","label":"reconcileUrlFilter() — silent tunnel recreation if deleted by user","file_type":"code","source_file":"apps/rebreak-native/modules/rebreak-protection/src/RebreakProtectionModule.ts","source_location":"line 101","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"src_apply_web_content_filter","label":"applyWebContentFilter() — iOS Layer 2 ManagedSettings blockedByFilter","file_type":"code","source_file":"apps/rebreak-native/modules/rebreak-protection/src/RebreakProtectionModule.ts","source_location":"line 139","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"src_arm_tamper_lock","label":"armTamperLock() / disarmTamperLock() — Android Settings watchdog toggle","file_type":"code","source_file":"apps/rebreak-native/modules/rebreak-protection/src/RebreakProtectionModule.ts","source_location":"line 215","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"types_device_layers","label":"DeviceLayers — cross-platform protection state type","file_type":"code","source_file":"apps/rebreak-native/modules/rebreak-protection/src/RebreakProtection.types.ts","source_location":"line 7","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"types_mdm_managed_heuristic","label":"mdmManaged heuristic — NETunnelProviderManager count > 1 means MDM VPN pushed","file_type":"concept","source_file":"apps/rebreak-native/modules/rebreak-protection/src/RebreakProtection.types.ts","source_location":"line 20","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"types_webcontent_filter_result","label":"WebContentFilterResult — iOS Layer 2 apply result (50-domain limit)","file_type":"code","source_file":"apps/rebreak-native/modules/rebreak-protection/src/RebreakProtection.types.ts","source_location":"line 52","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"types_activate_result","label":"ActivateResult — allLayersOn + missingLayers + errors","file_type":"code","source_file":"apps/rebreak-native/modules/rebreak-protection/src/RebreakProtection.types.ts","source_location":"line 59","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"types_health_probe_result","label":"HealthProbeResult — outcome: blocked/loaded/offline/timeout","file_type":"code","source_file":"apps/rebreak-native/modules/rebreak-protection/src/RebreakProtection.types.ts","source_location":"line 130","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"types_rebreak_protection_events","label":"RebreakProtectionEvents — onLayerChange native event","file_type":"code","source_file":"apps/rebreak-native/modules/rebreak-protection/src/RebreakProtection.types.ts","source_location":"line 152","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"web_rebreakprotectionmodule_web","label":"RebreakProtectionModuleWeb — no-op web stub","file_type":"code","source_file":"apps/rebreak-native/modules/rebreak-protection/src/RebreakProtectionModule.web.ts","source_location":"line 1","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"pir_service_config","label":"PIR service-config.json — tier-based token auth + use-case registry","file_type":"document","source_file":"apps/rebreak-native/tmp/FilteringTrafficByURL/PIR Server/service-config.json","source_location":null,"source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"pir_url_config","label":"PIR url-config.json — RLWE parameters n_4096, 50k entries/shard, 5 trials","file_type":"document","source_file":"apps/rebreak-native/tmp/FilteringTrafficByURL/PIR Server/data/url-config.json","source_location":null,"source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"pir_rlwe_params","label":"PIR RLWE parameters — n=4096, logq=27_28_28, logt=5","file_type":"concept","source_file":"apps/rebreak-native/tmp/FilteringTrafficByURL/PIR Server/data/url-config.json","source_location":"line 5","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"bloom_bloomfilter_swift","label":"BloomFilter.swift — probabilistic set membership (FNV1a + Murmur3)","file_type":"code","source_file":"apps/rebreak-native/tmp/FilteringTrafficByURL/SwiftBloomFilter/SwiftBloomFilter/BloomFilter.swift","source_location":"line 15","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"bloom_bloomfilter_hash_combo","label":"Bloom filter hash combination: index = (fnv + k * murmur) % bitCount","file_type":"concept","source_file":"apps/rebreak-native/tmp/FilteringTrafficByURL/SwiftBloomFilter/SwiftBloomFilter/BloomFilter.swift","source_location":"line 80","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"bloom_fnv1a_hash_swift","label":"FNV1a hash (Swift) — 32-bit, prime 0x01000193, offset 0x811c9dc5","file_type":"code","source_file":"apps/rebreak-native/tmp/FilteringTrafficByURL/SwiftBloomFilter/SwiftBloomFilter/FNV1aHash.swift","source_location":"line 14","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"bloom_murmur3_hash_swift","label":"Murmur3A hash (Swift) — 32-bit seeded, fmix finalization","file_type":"code","source_file":"apps/rebreak-native/tmp/FilteringTrafficByURL/SwiftBloomFilter/SwiftBloomFilter/Murmur3Hash.swift","source_location":"line 16","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"bloom_bloomfilter_tests","label":"SwiftBloomFilterTests — filter internals + bit manipulation tests","file_type":"code","source_file":"apps/rebreak-native/tmp/FilteringTrafficByURL/SwiftBloomFilter/SwiftBloomFilterTests/SwiftBloomFilterTests.swift","source_location":"line 1","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"bloom_murmur_tests","label":"MurmurHashTests — known-value test vectors for Murmur3","file_type":"code","source_file":"apps/rebreak-native/tmp/FilteringTrafficByURL/SwiftBloomFilter/SwiftBloomFilterTests/MurmurHashTests.swift","source_location":"line 1","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"bloom_fnv_tests","label":"FNVHashTests — known-value test vectors for FNV1a","file_type":"code","source_file":"apps/rebreak-native/tmp/FilteringTrafficByURL/SwiftBloomFilter/SwiftBloomFilterTests/FNVHashTests.swift","source_location":"line 1","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"bloomtool_bloomfiltertool_swift","label":"BloomFilterTool CLI — generates bloom_filter.plist + input.txtpb for PIR server","file_type":"code","source_file":"apps/rebreak-native/tmp/FilteringTrafficByURL/BloomFilterTool/BloomFilterTool/BloomFilterTool.swift","source_location":"line 21","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"bloomtool_pir_database_proto","label":"PIR KeywordDatabase protobuf — keyword+value rows for PIR server input","file_type":"code","source_file":"apps/rebreak-native/tmp/FilteringTrafficByURL/BloomFilterTool/BloomFilterTool/pir_database.pb.swift","source_location":"line 46","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"bloomtool_swift_protobuf_sh","label":"swift_protobuf.sh — build-phase script to generate Swift from pir_database.proto","file_type":"code","source_file":"apps/rebreak-native/tmp/FilteringTrafficByURL/BloomFilterTool/BloomFilterTool/swift_protobuf.sh","source_location":"line 1","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"simpleurlfilter_urlfiltercontrolprovider","label":"URLFilterControlProvider — NEURLFilterControlProvider with Bloom prefilter","file_type":"code","source_file":"apps/rebreak-native/tmp/FilteringTrafficByURL/SimpleURLFilter/SimpleURLFilterExtension/URLFilterControlProvider.swift","source_location":"line 17","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"simpleurlfilter_app","label":"SimpleURLFilterApp — SwiftUI host app for NEURLFilter demo","file_type":"code","source_file":"apps/rebreak-native/tmp/FilteringTrafficByURL/SimpleURLFilter/SimpleURLFilter/SimpleURLFilterApp.swift","source_location":"line 12","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"simpleurlfilter_contentviewmodel","label":"ContentViewModel — filter enable/disable + PIR cache/parameters management","file_type":"code","source_file":"apps/rebreak-native/tmp/FilteringTrafficByURL/SimpleURLFilter/SimpleURLFilter/View Models/ContentViewModel.swift","source_location":"line 17","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"simpleurlfilter_neprefilter_concept","label":"NEURLFilterPrefilter — Bloom filter as pre-filter hint to PIR lookup","file_type":"concept","source_file":"apps/rebreak-native/tmp/FilteringTrafficByURL/SimpleURLFilter/SimpleURLFilterExtension/URLFilterControlProvider.swift","source_location":"line 98","source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"pir_two_tier_architecture","label":"PIR two-tier architecture — Bloom prefilter + RLWE PIR query","file_type":"concept","source_file":"apps/rebreak-native/tmp/FilteringTrafficByURL/SimpleURLFilter/SimpleURLFilterExtension/URLFilterControlProvider.swift","source_location":null,"source_url":null,"captured_at":null,"author":null,"contributor":null},{"id":"appicon_simpleurlfilter","label":"SimpleURLFilter app icon","file_type":"image","source_file":"apps/rebreak-native/tmp/FilteringTrafficByURL/SimpleURLFilter/SimpleURLFilter/Assets.xcassets/AppIcon.appiconset/icon_32x32@2x.png","source_location":null,"source_url":null,"captured_at":null,"author":null,"contributor":null}],"edges":[{"source":"filter_domainhasher_normalize","target":"filter_domainhasher_hash","relation":"calls","confidence":"EXTRACTED","confidence_score":1.0,"source_file":"apps/rebreak-native/modules/rebreak-protection/android/src/main/java/expo/modules/rebreakprotection/filter/DomainHasher.kt","source_location":"line 39","weight":1.0},{"source":"filter_domainhasher_class","target":"filter_domainhasher_privacy_principle","relation":"rationale_for","confidence":"EXTRACTED","confidence_score":1.0,"source_file":"apps/rebreak-native/modules/rebreak-protection/android/src/main/java/expo/modules/rebreakprotection/filter/DomainHasher.kt","source_location":"line 13","weight":1.0},{"source":"filter_domainhasher_hash","target":"bloom_fnv1a_hash_swift","relation":"semantically_similar_to","confidence":"INFERRED","confidence_score":0.85,"source_file":"apps/rebreak-native/modules/rebreak-protection/android/src/main/java/expo/modules/rebreakprotection/filter/DomainHasher.kt","source_location":null,"weight":0.85},{"source":"accessibility_rebreaka11yservice_class","target":"accessibility_tamperlock_concept","relation":"implements","confidence":"EXTRACTED","confidence_score":1.0,"source_file":"apps/rebreak-native/modules/rebreak-protection/android/src/main/java/expo/modules/rebreakprotection/accessibility/RebreakAccessibilityService.kt","source_location":"line 7","weight":1.0},{"source":"accessibility_rebreaka11yservice_class","target":"accessibility_vpn_dns_architecture","relation":"rationale_for","confidence":"EXTRACTED","confidence_score":1.0,"source_file":"apps/rebreak-native/modules/rebreak-protection/android/src/main/java/expo/modules/rebreakprotection/accessibility/RebreakAccessibilityService.kt","source_location":"line 12","weight":1.0},{"source":"accessibility_rebreaka11yservice_class","target":"accessibility_watched_packages","relation":"references","confidence":"EXTRACTED","confidence_score":1.0,"source_file":"apps/rebreak-native/modules/rebreak-protection/android/src/main/java/expo/modules/rebreakprotection/accessibility/RebreakAccessibilityService.kt","source_location":"line 65","weight":1.0},{"source":"accessibility_rebreaka11yservice_class","target":"accessibility_high_confidence_keywords","relation":"references","confidence":"EXTRACTED","confidence_score":1.0,"source_file":"apps/rebreak-native/modules/rebreak-protection/android/src/main/java/expo/modules/rebreakprotection/accessibility/RebreakAccessibilityService.kt","source_location":"line 128","weight":1.0},{"source":"accessibility_rebreaka11yservice_class","target":"accessibility_dangerous_activity_patterns","relation":"references","confidence":"EXTRACTED","confidence_score":1.0,"source_file":"apps/rebreak-native/modules/rebreak-protection/android/src/main/java/expo/modules/rebreakprotection/accessibility/RebreakAccessibilityService.kt","source_location":"line 136","weight":1.0},{"source":"src_rebreakprotectionmodule_ts","target":"types_device_layers","relation":"references","confidence":"EXTRACTED","confidence_score":1.0,"source_file":"apps/rebreak-native/modules/rebreak-protection/src/RebreakProtectionModule.ts","source_location":"line 6","weight":1.0},{"source":"src_rebreakprotectionmodule_ts","target":"src_activate_url_filter","relation":"implements","confidence":"EXTRACTED","confidence_score":1.0,"source_file":"apps/rebreak-native/modules/rebreak-protection/src/RebreakProtectionModule.ts","source_location":"line 61","weight":1.0},{"source":"src_rebreakprotectionmodule_ts","target":"src_activate_ne_url_filter","relation":"implements","confidence":"EXTRACTED","confidence_score":1.0,"source_file":"apps/rebreak-native/modules/rebreak-protection/src/RebreakProtectionModule.ts","source_location":"line 74","weight":1.0},{"source":"src_rebreakprotectionmodule_ts","target":"src_probe_content_filter","relation":"implements","confidence":"EXTRACTED","confidence_score":1.0,"source_file":"apps/rebreak-native/modules/rebreak-protection/src/RebreakProtectionModule.ts","source_location":"line 46","weight":1.0},{"source":"src_rebreakprotectionmodule_ts","target":"src_sync_blocklist","relation":"implements","confidence":"EXTRACTED","confidence_score":1.0,"source_file":"apps/rebreak-native/modules/rebreak-protection/src/RebreakProtectionModule.ts","source_location":"line 173","weight":1.0},{"source":"src_rebreakprotectionmodule_ts","target":"src_sync_webcontent_domains","relation":"implements","confidence":"EXTRACTED","confidence_score":1.0,"source_file":"apps/rebreak-native/modules/rebreak-protection/src/RebreakProtectionModule.ts","source_location":"line 162","weight":1.0},{"source":"src_rebreakprotectionmodule_ts","target":"src_run_health_probe","relation":"implements","confidence":"EXTRACTED","confidence_score":1.0,"source_file":"apps/rebreak-native/modules/rebreak-protection/src/RebreakProtectionModule.ts","source_location":"line 180","weight":1.0},{"source":"src_rebreakprotectionmodule_ts","target":"src_reconcile_url_filter","relation":"implements","confidence":"EXTRACTED","confidence_score":1.0,"source_file":"apps/rebreak-native/modules/rebreak-protection/src/RebreakProtectionModule.ts","source_location":"line 101","weight":1.0},{"source":"src_rebreakprotectionmodule_ts","target":"src_apply_web_content_filter","relation":"implements","confidence":"EXTRACTED","confidence_score":1.0,"source_file":"apps/rebreak-native/modules/rebreak-protection/src/RebreakProtectionModule.ts","source_location":"line 139","weight":1.0},{"source":"src_rebreakprotectionmodule_ts","target":"src_arm_tamper_lock","relation":"implements","confidence":"EXTRACTED","confidence_score":1.0,"source_file":"apps/rebreak-native/modules/rebreak-protection/src/RebreakProtectionModule.ts","source_location":"line 215","weight":1.0},{"source":"src_arm_tamper_lock","target":"accessibility_tamperlock_concept","relation":"conceptually_related_to","confidence":"INFERRED","confidence_score":0.95,"source_file":"apps/rebreak-native/modules/rebreak-protection/src/RebreakProtectionModule.ts","source_location":null,"weight":0.95},{"source":"src_rebreakprotectionmodule_ts","target":"types_activate_result","relation":"references","confidence":"EXTRACTED","confidence_score":1.0,"source_file":"apps/rebreak-native/modules/rebreak-protection/src/RebreakProtectionModule.ts","source_location":"line 118","weight":1.0},{"source":"src_rebreakprotectionmodule_ts","target":"types_health_probe_result","relation":"references","confidence":"EXTRACTED","confidence_score":1.0,"source_file":"apps/rebreak-native/modules/rebreak-protection/src/RebreakProtectionModule.ts","source_location":"line 180","weight":1.0},{"source":"src_rebreakprotectionmodule_ts","target":"types_rebreak_protection_events","relation":"references","confidence":"EXTRACTED","confidence_score":1.0,"source_file":"apps/rebreak-native/modules/rebreak-protection/src/RebreakProtectionModule.ts","source_location":"line 18","weight":1.0},{"source":"types_device_layers","target":"types_mdm_managed_heuristic","relation":"conceptually_related_to","confidence":"EXTRACTED","confidence_score":1.0,"source_file":"apps/rebreak-native/modules/rebreak-protection/src/RebreakProtection.types.ts","source_location":"line 20","weight":1.0},{"source":"types_device_layers","target":"types_webcontent_filter_result","relation":"conceptually_related_to","confidence":"INFERRED","confidence_score":0.85,"source_file":"apps/rebreak-native/modules/rebreak-protection/src/RebreakProtection.types.ts","source_location":null,"weight":0.85},{"source":"web_rebreakprotectionmodule_web","target":"src_rebreakprotectionmodule_ts","relation":"implements","confidence":"EXTRACTED","confidence_score":1.0,"source_file":"apps/rebreak-native/modules/rebreak-protection/src/RebreakProtectionModule.web.ts","source_location":"line 16","weight":1.0},{"source":"web_rebreakprotectionmodule_web","target":"types_device_layers","relation":"references","confidence":"EXTRACTED","confidence_score":1.0,"source_file":"apps/rebreak-native/modules/rebreak-protection/src/RebreakProtectionModule.web.ts","source_location":"line 11","weight":1.0},{"source":"bloomtool_bloomfiltertool_swift","target":"bloom_bloomfilter_swift","relation":"calls","confidence":"EXTRACTED","confidence_score":1.0,"source_file":"apps/rebreak-native/tmp/FilteringTrafficByURL/BloomFilterTool/BloomFilterTool/BloomFilterTool.swift","source_location":"line 138","weight":1.0},{"source":"bloomtool_bloomfiltertool_swift","target":"bloomtool_pir_database_proto","relation":"calls","confidence":"EXTRACTED","confidence_score":1.0,"source_file":"apps/rebreak-native/tmp/FilteringTrafficByURL/BloomFilterTool/BloomFilterTool/BloomFilterTool.swift","source_location":"line 156","weight":1.0},{"source":"bloomtool_bloomfiltertool_swift","target":"pir_url_config","relation":"conceptually_related_to","confidence":"INFERRED","confidence_score":0.85,"source_file":"apps/rebreak-native/tmp/FilteringTrafficByURL/BloomFilterTool/BloomFilterTool/BloomFilterTool.swift","source_location":null,"weight":0.85},{"source":"bloomtool_swift_protobuf_sh","target":"bloomtool_pir_database_proto","relation":"calls","confidence":"EXTRACTED","confidence_score":1.0,"source_file":"apps/rebreak-native/tmp/FilteringTrafficByURL/BloomFilterTool/BloomFilterTool/swift_protobuf.sh","source_location":"line 32","weight":1.0},{"source":"bloom_bloomfilter_swift","target":"bloom_fnv1a_hash_swift","relation":"calls","confidence":"EXTRACTED","confidence_score":1.0,"source_file":"apps/rebreak-native/tmp/FilteringTrafficByURL/SwiftBloomFilter/SwiftBloomFilter/BloomFilter.swift","source_location":"line 79","weight":1.0},{"source":"bloom_bloomfilter_swift","target":"bloom_murmur3_hash_swift","relation":"calls","confidence":"EXTRACTED","confidence_score":1.0,"source_file":"apps/rebreak-native/tmp/FilteringTrafficByURL/SwiftBloomFilter/SwiftBloomFilter/BloomFilter.swift","source_location":"line 80","weight":1.0},{"source":"bloom_bloomfilter_swift","target":"bloom_bloomfilter_hash_combo","relation":"implements","confidence":"EXTRACTED","confidence_score":1.0,"source_file":"apps/rebreak-native/tmp/FilteringTrafficByURL/SwiftBloomFilter/SwiftBloomFilter/BloomFilter.swift","source_location":"line 81","weight":1.0},{"source":"bloom_bloomfilter_tests","target":"bloom_bloomfilter_swift","relation":"references","confidence":"EXTRACTED","confidence_score":1.0,"source_file":"apps/rebreak-native/tmp/FilteringTrafficByURL/SwiftBloomFilter/SwiftBloomFilterTests/SwiftBloomFilterTests.swift","source_location":"line 9","weight":1.0},{"source":"bloom_murmur_tests","target":"bloom_murmur3_hash_swift","relation":"references","confidence":"EXTRACTED","confidence_score":1.0,"source_file":"apps/rebreak-native/tmp/FilteringTrafficByURL/SwiftBloomFilter/SwiftBloomFilterTests/MurmurHashTests.swift","source_location":"line 9","weight":1.0},{"source":"bloom_fnv_tests","target":"bloom_fnv1a_hash_swift","relation":"references","confidence":"EXTRACTED","confidence_score":1.0,"source_file":"apps/rebreak-native/tmp/FilteringTrafficByURL/SwiftBloomFilter/SwiftBloomFilterTests/FNVHashTests.swift","source_location":"line 9","weight":1.0},{"source":"simpleurlfilter_urlfiltercontrolprovider","target":"bloom_bloomfilter_swift","relation":"calls","confidence":"EXTRACTED","confidence_score":1.0,"source_file":"apps/rebreak-native/tmp/FilteringTrafficByURL/SimpleURLFilter/SimpleURLFilterExtension/URLFilterControlProvider.swift","source_location":"line 34","weight":1.0},{"source":"simpleurlfilter_urlfiltercontrolprovider","target":"simpleurlfilter_neprefilter_concept","relation":"implements","confidence":"EXTRACTED","confidence_score":1.0,"source_file":"apps/rebreak-native/tmp/FilteringTrafficByURL/SimpleURLFilter/SimpleURLFilterExtension/URLFilterControlProvider.swift","source_location":"line 60","weight":1.0},{"source":"simpleurlfilter_neprefilter_concept","target":"pir_two_tier_architecture","relation":"rationale_for","confidence":"INFERRED","confidence_score":0.9,"source_file":"apps/rebreak-native/tmp/FilteringTrafficByURL/SimpleURLFilter/SimpleURLFilterExtension/URLFilterControlProvider.swift","source_location":null,"weight":0.9},{"source":"pir_two_tier_architecture","target":"pir_rlwe_params","relation":"references","confidence":"INFERRED","confidence_score":0.85,"source_file":"apps/rebreak-native/tmp/FilteringTrafficByURL/PIR Server/data/url-config.json","source_location":null,"weight":0.85},{"source":"simpleurlfilter_app","target":"simpleurlfilter_urlfiltercontrolprovider","relation":"calls","confidence":"INFERRED","confidence_score":0.85,"source_file":"apps/rebreak-native/tmp/FilteringTrafficByURL/SimpleURLFilter/SimpleURLFilter/SimpleURLFilterApp.swift","source_location":null,"weight":0.85},{"source":"simpleurlfilter_app","target":"simpleurlfilter_contentviewmodel","relation":"calls","confidence":"EXTRACTED","confidence_score":1.0,"source_file":"apps/rebreak-native/tmp/FilteringTrafficByURL/SimpleURLFilter/SimpleURLFilter/SimpleURLFilterApp.swift","source_location":"line 16","weight":1.0},{"source":"simpleurlfilter_contentviewmodel","target":"pir_two_tier_architecture","relation":"conceptually_related_to","confidence":"INFERRED","confidence_score":0.75,"source_file":"apps/rebreak-native/tmp/FilteringTrafficByURL/SimpleURLFilter/SimpleURLFilter/View Models/ContentViewModel.swift","source_location":"line 39","weight":0.75},{"source":"pir_service_config","target":"pir_url_config","relation":"references","confidence":"INFERRED","confidence_score":0.85,"source_file":"apps/rebreak-native/tmp/FilteringTrafficByURL/PIR Server/service-config.json","source_location":null,"weight":0.85},{"source":"src_activate_ne_url_filter","target":"pir_two_tier_architecture","relation":"conceptually_related_to","confidence":"INFERRED","confidence_score":0.75,"source_file":"apps/rebreak-native/modules/rebreak-protection/src/RebreakProtectionModule.ts","source_location":"line 68","weight":0.75},{"source":"filter_domainhasher_hash","target":"pir_two_tier_architecture","relation":"conceptually_related_to","confidence":"INFERRED","confidence_score":0.75,"source_file":"apps/rebreak-native/modules/rebreak-protection/android/src/main/java/expo/modules/rebreakprotection/filter/DomainHasher.kt","source_location":null,"weight":0.75},{"source":"appicon_simpleurlfilter","target":"simpleurlfilter_app","relation":"references","confidence":"EXTRACTED","confidence_score":1.0,"source_file":"apps/rebreak-native/tmp/FilteringTrafficByURL/SimpleURLFilter/SimpleURLFilter/Assets.xcassets/AppIcon.appiconset/Contents.json","source_location":null,"weight":1.0}],"hyperedges":[],"input_tokens":0,"output_tokens":0}