{"kind":"result","result":{"code":"benchmark_methods","methods":{"interpretation":"Native means an independently implemented measurement, not identical upstream parameters or a compatible score. Partial, unimplemented and inaccessible dependencies are explicit. Different method versions, thread counts, queue depths, node locations, packet sizes and protocols must be compared separately.","mail_smtp_extension_policy":"Standard AUTH capabilities remain visible. Recognized legacy AUTH= mechanism aliases are omitted; they do not block a valid TLS/capability check. Other malformed extension keywords remain explicit protocol failures.","projects":{"goecs":{"source_url":"https://github.com/oneclickvirt/ecs/tree/v0.2.15","version":"v0.2.15"},"netquality":{"source_url":"https://github.com/xykt/NetQuality","version":"v2026-09-01"},"yabs":{"source_url":"https://github.com/masonr/yet-another-bench-script","version":"v2026-10-07"}},"reviewed_at_rfc3339":"2026-10-17T22:54:27.374Z","schema":"vps-lab-benchmark-methods/v1","tests":[{"difference":"Read-only OS/CPU/RAM/swap/filesystem/virtualization; affinity and cgroup CPU/memory limits remain distinct from host-visible resources.","name_en":"System inventory and container quotas","name_zh":"基础信息与容器配额","report_fields":["system"],"rust_status":"native","test_id":"system-inventory","upstream_projects":["yabs","goecs","netquality"]},{"difference":"Reads settings only; does not tune sysctl, install BBR or change firewall rules.","name_en":"Congestion control, qdisc and socket buffers","name_zh":"拥塞控制、队列与缓冲区","report_fields":["system.network_stack"],"rust_status":"native","test_id":"kernel-network-settings","upstream_projects":["goecs","netquality"]},{"difference":"Independent prime kernel, fixed limit 10000; not a sysbench-compatible score.","name_en":"CPU single/multi-thread prime trial division","name_zh":"CPU 单核/多核素数试除","report_fields":["cpu.workloads"],"rust_status":"native","test_id":"cpu-primes-single-multi","upstream_projects":["goecs"]},{"difference":"Three independently warmed trials per workload. Allocation is untimed; common worker start; counters bracket the complete suite.","name_en":"CPU warmup, repeated trials and throttling","name_zh":"CPU 预热、重复与配额限流","report_fields":["cpu.workloads.trials","cpu.workloads.rate_variation_percent","cpu.throttling_before","cpu.throttling_after"],"rust_status":"native","test_id":"cpu-repeatability","upstream_projects":["goecs"]},{"difference":"Own fixed-workload rates, not a composite Geekbench score. Hardware SHA acceleration remains part of the measurement.","name_en":"Floating-point matrices and SHA-256","name_zh":"浮点矩阵与 SHA-256","report_fields":["cpu.workloads"],"rust_status":"native","test_id":"cpu-floating-point-and-hash","upstream_projects":["goecs","yabs"]},{"difference":"Verified prime-limit-50000 load, 20 seconds by default, explicitly bounded to 120 seconds or disabled. Per-second actual rates, first/final change, read-only CPU sysfs sensor samples and per-sensor summaries. Missing sensors remain unavailable. Short load or rate change alone does not establish thermal throttling or long-term stability.","name_en":"Sustained burn and temperature","name_zh":"持续负载与可见 CPU 温度","report_fields":["cpu.sustained"],"rust_status":"native","test_id":"cpu-temperature-burn","upstream_projects":["goecs"]},{"difference":"The proprietary benchmark is not downloaded, emulated or relabeled as a native Rust score.","name_en":"Official Geekbench 4 score","name_zh":"Geekbench 4 原版分数","report_fields":[],"rust_status":"external_score_not_reproduced","test_id":"geekbench-4","upstream_projects":["yabs","goecs"]},{"difference":"The proprietary benchmark is not downloaded, emulated or relabeled as a native Rust score.","name_en":"Official Geekbench 5 score","name_zh":"Geekbench 5 原版分数","report_fields":[],"rust_status":"external_score_not_reproduced","test_id":"geekbench-5","upstream_projects":["yabs","goecs"]},{"difference":"The proprietary benchmark is not downloaded, emulated or relabeled as a native Rust score.","name_en":"Official Geekbench 6 score","name_zh":"Geekbench 6 原版分数","report_fields":[],"rust_status":"external_score_not_reproduced","test_id":"geekbench-6","upstream_projects":["yabs","goecs"]},{"difference":"The proprietary benchmark is not downloaded, emulated or relabeled as a native Rust score.","name_en":"Official Geekbench 7 score","name_zh":"Geekbench 7 原版分数","report_fields":[],"rust_status":"external_score_not_reproduced","test_id":"geekbench-7","upstream_projects":["yabs","goecs"]},{"difference":"Independent f64 kernel; one warmup and ten iterations, verified result and explicit read/write traffic accounting; not an official STREAM score. Fresh allocation guards record OS/visible cgroup ancestor headroom and conservative clean-cache estimates; capacity and headroom can reduce working sets, with actual sizes retained.","name_en":"Memory copy","name_zh":"内存 copy","report_fields":["memory.kernels","memory.memory_budget"],"rust_status":"native","test_id":"memory-copy","upstream_projects":["goecs"]},{"difference":"Independent f64 kernel; one warmup and ten iterations, verified result and explicit read/write traffic accounting; not an official STREAM score. Fresh allocation guards record OS/visible cgroup ancestor headroom and conservative clean-cache estimates; capacity and headroom can reduce working sets, with actual sizes retained.","name_en":"Memory scale","name_zh":"内存 scale","report_fields":["memory.kernels","memory.memory_budget"],"rust_status":"native","test_id":"memory-scale","upstream_projects":["goecs"]},{"difference":"Independent f64 kernel; one warmup and ten iterations, verified result and explicit read/write traffic accounting; not an official STREAM score. Fresh allocation guards record OS/visible cgroup ancestor headroom and conservative clean-cache estimates; capacity and headroom can reduce working sets, with actual sizes retained.","name_en":"Memory add","name_zh":"内存 add","report_fields":["memory.kernels","memory.memory_budget"],"rust_status":"native","test_id":"memory-add","upstream_projects":["goecs"]},{"difference":"Independent f64 kernel; one warmup and ten iterations, verified result and explicit read/write traffic accounting; not an official STREAM score. Fresh allocation guards record OS/visible cgroup ancestor headroom and conservative clean-cache estimates; capacity and headroom can reduce working sets, with actual sizes retained.","name_en":"Memory triad","name_zh":"内存 triad","report_fields":["memory.kernels","memory.memory_budget"],"rust_status":"native","test_id":"memory-triad","upstream_projects":["goecs"]},{"difference":"Shuffled single cycle, untimed setup, one warmup and three verified trials; at most two million dependent loads per trial. Cache residency remains possible. Fresh allocation guards record OS/visible cgroup ancestor headroom and conservative clean-cache estimates; capacity and headroom can reduce working sets, with actual sizes retained.","name_en":"Random dependent memory access","name_zh":"内存随机依赖访问","report_fields":["memory.pointer_chase","memory.memory_budget"],"rust_status":"native","test_id":"memory-pointer-chase","upstream_projects":["goecs"]},{"difference":"Separate native sequential u64 stores and checksum reads with one resident array. Ten timed passes, untimed allocation/warmup/readback, analytical expected checksums. Counts logical bytes, not physical bus traffic or a sysbench score; cache residency is explicit. Fresh allocation guards record OS/visible cgroup ancestor headroom and conservative clean-cache estimates; capacity and headroom can reduce working sets, with actual sizes retained.","name_en":"Standalone sequential memory tests and platform fallbacks","name_zh":"独立顺序内存读写与平台回退","report_fields":["memory.sequential","memory.memory_budget"],"rust_status":"native","test_id":"memory-sequential-alternatives","upstream_projects":["goecs"]},{"difference":"Native direct QD1 plus Linux native AIO QD64 with two disjoint jobs. The short bounded dataset and fsync policy remain distinct from official fio/YABS scores; per-job peak outstanding requests are reported. AIO v2 refreshes per-profile allocation guards, reserves typed latency/queue storage and first-touches it before synchronized timing; compare v1/v2 separately. Fixed queue geometry is never silently reduced.","name_en":"Random mixed disk I/O at 4096 bytes","name_zh":"磁盘 4096 字节随机读写混合","report_fields":["disk.profiles","disk.async_profiles"],"rust_status":"native","test_id":"disk-mixed-4096","upstream_projects":["yabs","goecs"]},{"difference":"Native direct QD1 plus Linux native AIO QD64 with two disjoint jobs. The short bounded dataset and fsync policy remain distinct from official fio/YABS scores; per-job peak outstanding requests are reported. AIO v2 refreshes per-profile allocation guards, reserves typed latency/queue storage and first-touches it before synchronized timing; compare v1/v2 separately. Fixed queue geometry is never silently reduced.","name_en":"Random mixed disk I/O at 65536 bytes","name_zh":"磁盘 65536 字节随机读写混合","report_fields":["disk.profiles","disk.async_profiles"],"rust_status":"native","test_id":"disk-mixed-65536","upstream_projects":["yabs","goecs"]},{"difference":"Native direct QD1 plus Linux native AIO QD64 with two disjoint jobs. The short bounded dataset and fsync policy remain distinct from official fio/YABS scores; per-job peak outstanding requests are reported. AIO v2 refreshes per-profile allocation guards, reserves typed latency/queue storage and first-touches it before synchronized timing; compare v1/v2 separately. Fixed queue geometry is never silently reduced.","name_en":"Random mixed disk I/O at 524288 bytes","name_zh":"磁盘 524288 字节随机读写混合","report_fields":["disk.profiles","disk.async_profiles"],"rust_status":"native","test_id":"disk-mixed-524288","upstream_projects":["yabs","goecs"]},{"difference":"Native direct QD1 plus Linux native AIO QD64 with two disjoint jobs. The short bounded dataset and fsync policy remain distinct from official fio/YABS scores; per-job peak outstanding requests are reported. AIO v2 refreshes per-profile allocation guards, reserves typed latency/queue storage and first-touches it before synchronized timing; compare v1/v2 separately. Fixed queue geometry is never silently reduced.","name_en":"Random mixed disk I/O at 1048576 bytes","name_zh":"磁盘 1048576 字节随机读写混合","report_fields":["disk.profiles","disk.async_profiles"],"rust_status":"native","test_id":"disk-mixed-1048576","upstream_projects":["yabs","goecs"]},{"difference":"Anonymous bounded regular file; cached reads are labeled, with no global cache flush or raw-device writes.","name_en":"Sequential write, fsync and cached read","name_zh":"顺序写、同步与缓存读","report_fields":["disk.write_bytes_per_s","disk.fsync_ms","disk.cached_read_bytes_per_s"],"rust_status":"native","test_id":"disk-sequential-fsync","upstream_projects":["yabs","goecs"]},{"difference":"Four synchronous QD1 jobs on disjoint file regions, random 4 KiB and sequential 1 MiB read/write. Not asynchronous QD32/QD64.","name_en":"Concurrent disk access","name_zh":"多任务磁盘访问","report_fields":["disk.parallel_profiles"],"rust_status":"native","test_id":"disk-concurrent","upstream_projects":["goecs"]},{"difference":"A separate untimed 4 KiB canary and a 16 MiB free-space reserve; validates only the temporary file sample.","name_en":"Sync/readback integrity and free-space reserve","name_zh":"写后同步读回与空间保护","report_fields":["disk.integrity"],"rust_status":"native","test_id":"disk-integrity","upstream_projects":["goecs"]},{"difference":"Linux native AIO: four mixed block sizes at QD64/two jobs; random 4 KiB QD32 and sequential 1 MiB QD8. Own aligned buffers, completion accounting, preparation outside timing, final fsync inside timing. Requested and observed outstanding depth remain distinct; no fio-score equivalence. AIO v2 refreshes per-profile allocation guards, reserves typed latency/queue storage and first-touches it before synchronized timing; compare v1/v2 separately. Fixed queue geometry is never silently reduced.","name_en":"Asynchronous high-queue-depth matrix","name_zh":"异步高队列深度矩阵","report_fields":["disk.async_profiles"],"rust_status":"native","test_id":"disk-high-queue-depth","upstream_projects":["goecs","yabs"]},{"difference":"Native AIO sequential read/write at QD4 across 512 B through 64 MiB blocks, with a bounded temporary file and 256 MiB per-profile cap. Memory, sample-size or alignment restrictions retain explicit reasons. This is an ATTO-style workload, not an official ATTO score. AIO v2 refreshes per-profile allocation guards, reserves typed latency/queue storage and first-touches it before synchronized timing; compare v1/v2 separately. Fixed queue geometry is never silently reduced.","name_en":"ATTO-style sequential sweep at 512 bytes","name_zh":"ATTO 风格 512 字节顺序扫描","report_fields":["disk.async_profiles"],"rust_status":"native","test_id":"disk-atto-512","upstream_projects":["goecs"]},{"difference":"Native AIO sequential read/write at QD4 across 512 B through 64 MiB blocks, with a bounded temporary file and 256 MiB per-profile cap. Memory, sample-size or alignment restrictions retain explicit reasons. This is an ATTO-style workload, not an official ATTO score. AIO v2 refreshes per-profile allocation guards, reserves typed latency/queue storage and first-touches it before synchronized timing; compare v1/v2 separately. Fixed queue geometry is never silently reduced.","name_en":"ATTO-style sequential sweep at 2048 bytes","name_zh":"ATTO 风格 2048 字节顺序扫描","report_fields":["disk.async_profiles"],"rust_status":"native","test_id":"disk-atto-2048","upstream_projects":["goecs"]},{"difference":"Native AIO sequential read/write at QD4 across 512 B through 64 MiB blocks, with a bounded temporary file and 256 MiB per-profile cap. Memory, sample-size or alignment restrictions retain explicit reasons. This is an ATTO-style workload, not an official ATTO score. AIO v2 refreshes per-profile allocation guards, reserves typed latency/queue storage and first-touches it before synchronized timing; compare v1/v2 separately. Fixed queue geometry is never silently reduced.","name_en":"ATTO-style sequential sweep at 8192 bytes","name_zh":"ATTO 风格 8192 字节顺序扫描","report_fields":["disk.async_profiles"],"rust_status":"native","test_id":"disk-atto-8192","upstream_projects":["goecs"]},{"difference":"Native AIO sequential read/write at QD4 across 512 B through 64 MiB blocks, with a bounded temporary file and 256 MiB per-profile cap. Memory, sample-size or alignment restrictions retain explicit reasons. This is an ATTO-style workload, not an official ATTO score. AIO v2 refreshes per-profile allocation guards, reserves typed latency/queue storage and first-touches it before synchronized timing; compare v1/v2 separately. Fixed queue geometry is never silently reduced.","name_en":"ATTO-style sequential sweep at 32768 bytes","name_zh":"ATTO 风格 32768 字节顺序扫描","report_fields":["disk.async_profiles"],"rust_status":"native","test_id":"disk-atto-32768","upstream_projects":["goecs"]},{"difference":"Native AIO sequential read/write at QD4 across 512 B through 64 MiB blocks, with a bounded temporary file and 256 MiB per-profile cap. Memory, sample-size or alignment restrictions retain explicit reasons. This is an ATTO-style workload, not an official ATTO score. AIO v2 refreshes per-profile allocation guards, reserves typed latency/queue storage and first-touches it before synchronized timing; compare v1/v2 separately. Fixed queue geometry is never silently reduced.","name_en":"ATTO-style sequential sweep at 131072 bytes","name_zh":"ATTO 风格 131072 字节顺序扫描","report_fields":["disk.async_profiles"],"rust_status":"native","test_id":"disk-atto-131072","upstream_projects":["goecs"]},{"difference":"Native AIO sequential read/write at QD4 across 512 B through 64 MiB blocks, with a bounded temporary file and 256 MiB per-profile cap. Memory, sample-size or alignment restrictions retain explicit reasons. This is an ATTO-style workload, not an official ATTO score. AIO v2 refreshes per-profile allocation guards, reserves typed latency/queue storage and first-touches it before synchronized timing; compare v1/v2 separately. Fixed queue geometry is never silently reduced.","name_en":"ATTO-style sequential sweep at 524288 bytes","name_zh":"ATTO 风格 524288 字节顺序扫描","report_fields":["disk.async_profiles"],"rust_status":"native","test_id":"disk-atto-524288","upstream_projects":["goecs"]},{"difference":"Native AIO sequential read/write at QD4 across 512 B through 64 MiB blocks, with a bounded temporary file and 256 MiB per-profile cap. Memory, sample-size or alignment restrictions retain explicit reasons. This is an ATTO-style workload, not an official ATTO score. AIO v2 refreshes per-profile allocation guards, reserves typed latency/queue storage and first-touches it before synchronized timing; compare v1/v2 separately. Fixed queue geometry is never silently reduced.","name_en":"ATTO-style sequential sweep at 2097152 bytes","name_zh":"ATTO 风格 2097152 字节顺序扫描","report_fields":["disk.async_profiles"],"rust_status":"native","test_id":"disk-atto-2097152","upstream_projects":["goecs"]},{"difference":"Native AIO sequential read/write at QD4 across 512 B through 64 MiB blocks, with a bounded temporary file and 256 MiB per-profile cap. Memory, sample-size or alignment restrictions retain explicit reasons. This is an ATTO-style workload, not an official ATTO score. AIO v2 refreshes per-profile allocation guards, reserves typed latency/queue storage and first-touches it before synchronized timing; compare v1/v2 separately. Fixed queue geometry is never silently reduced.","name_en":"ATTO-style sequential sweep at 8388608 bytes","name_zh":"ATTO 风格 8388608 字节顺序扫描","report_fields":["disk.async_profiles"],"rust_status":"native","test_id":"disk-atto-8388608","upstream_projects":["goecs"]},{"difference":"Native AIO sequential read/write at QD4 across 512 B through 64 MiB blocks, with a bounded temporary file and 256 MiB per-profile cap. Memory, sample-size or alignment restrictions retain explicit reasons. This is an ATTO-style workload, not an official ATTO score. AIO v2 refreshes per-profile allocation guards, reserves typed latency/queue storage and first-touches it before synchronized timing; compare v1/v2 separately. Fixed queue geometry is never silently reduced.","name_en":"ATTO-style sequential sweep at 33554432 bytes","name_zh":"ATTO 风格 33554432 字节顺序扫描","report_fields":["disk.async_profiles"],"rust_status":"native","test_id":"disk-atto-33554432","upstream_projects":["goecs"]},{"difference":"Native AIO sequential read/write at QD4 across 512 B through 64 MiB blocks, with a bounded temporary file and 256 MiB per-profile cap. Memory, sample-size or alignment restrictions retain explicit reasons. This is an ATTO-style workload, not an official ATTO score. AIO v2 refreshes per-profile allocation guards, reserves typed latency/queue storage and first-touches it before synchronized timing; compare v1/v2 separately. Fixed queue geometry is never silently reduced.","name_en":"ATTO-style sequential sweep at 67108864 bytes","name_zh":"ATTO 风格 67108864 字节顺序扫描","report_fields":["disk.async_profiles"],"rust_status":"native","test_id":"disk-atto-67108864","upstream_projects":["goecs"]},{"difference":"Opt-in --deep-hardware on all/system: native read-only Linux cache/NUMA, DMI firmware, bounded SMBIOS Type 17 memory devices, PCI class/driver IDs, block/MD RAID/device-mapper topology and passive NVMe/ATA SMART. NVMe Get Log Page retains asynchronous events and checks nonzero completion status; exact 128-bit decimal counters never saturate unsafe JSON numbers. ATA page checksums, duplicate IDs, threshold coverage and raw vendor values remain explicit, without generic hours/temperature/health-score guesses. NVMe controller binding follows actual sysfs ancestry; native-multipath namespace prefixes never guess controller identity. Controller-wide NVMe scope, missing/denied devices, bounded scans and partial health remain separate. Serial numbers, UUIDs, WWIDs, asset tags and volume names are omitted. No automatic self-test, GPU compute benchmark, proprietary RAID member health or writes across arbitrary mounts; physical-drive calibration remains pending.","name_en":"SMART, NVMe, RAID and multiple paths","name_zh":"SMART、NVMe、RAID 与多路径","report_fields":["system.hardware_details"],"rust_status":"partial","test_id":"deep-hardware","upstream_projects":["goecs"]},{"difference":"Small configurable HTTPS samples. Upload body consumption and successful HTTP status do not imply server-confirmed received bytes.","name_en":"Nearest-CDN bidirectional HTTP transfer","name_zh":"就近 CDN 双向 HTTP 传输","report_fields":["network.downloads","network.uploads"],"rust_status":"native","test_id":"internet-http-transfer","upstream_projects":["goecs"]},{"difference":"Native TCP protocol subset; three reduced-profile locations, two streams, 16 MiB or five seconds per direction. Receiver-reported upload bytes, framed/limited JSON and bounded port fallback; not YABS-equivalent scoring. Upload rates pair server receiver bytes with receiver time; download uses local receiver bytes and time. Control/result exchange must complete.","name_en":"International IPv4/IPv6 bidirectional iperf3","name_zh":"国际 IPv4/IPv6 双向 iperf3","report_fields":["network.iperf_tests"],"rust_status":"native","test_id":"international-iperf3","upstream_projects":["yabs","goecs","netquality"]},{"difference":"Four streams, HELLO/PONG and matching upload acknowledgements. Fallback only if HTTPS consumed no payload for that carrier.","name_en":"Legacy carrier TCP speedtest protocol","name_zh":"三网旧版 TCP 测速协议","report_fields":["network.china_speedtests"],"rust_status":"native","test_id":"carrier-legacy-tcp","upstream_projects":["goecs","netquality"]},{"difference":"Native public HTTP(S) uses up to 24 recorded candidates, six concurrent preflights, six transfer attempts, six-second connection and eight-second request deadlines. Catalog active=1 and active=2 candidates undergo real preflight; status flags do not establish liveness. Each upload sample is at most 512 KiB. Timed downloads retain at least 64 KiB of validated received binary data as a partial sample. Each family retains independent 16 MiB down / 8 MiB up caps; attempts and remaining-budget IPv4 TCP share them. Actual peers, TLS identity, absent/contradictory receipts, missing address families and local failures remain explicit. Historical report contracts are preserved.","name_en":"Carrier HTTPS catalog and per-node fallback","name_zh":"三网 HTTPS 节点与逐节点回退","report_fields":["network.china_http_speedtests"],"rust_status":"native","test_id":"carrier-https","upstream_projects":["goecs","netquality"]},{"difference":"Fifteen upstream-declared targets; documentation-address negative controls invalidate synthetic replies. Local errors remain unknown, not 100% loss.","name_en":"Carrier IPv4/IPv6 ICMP round trips","name_zh":"三网 IPv4/IPv6 ICMP 往返","report_fields":["network.china_probes","network.icmp_control"],"rust_status":"native","test_id":"carrier-icmp","upstream_projects":["goecs"]},{"difference":"Beijing/Shanghai/Guangdong, three carriers and both families. Raw SYN packets at 64/1400 bytes with correlated replies and same-method negative controls. No raw permission means explicitly labeled TCP-connect fallback, with unknown packet size.","name_en":"Carrier TCP small/large packet response time","name_zh":"三网 TCP 小包/大包","report_fields":["network.china_tcp_probes","network.tcp_control"],"rust_status":"native","test_id":"carrier-tcp-small-large","upstream_projects":["goecs","netquality"]},{"difference":"Complete 31-province, three-carrier IPv4/IPv6 matrix: ten standard or 44 deep rounds. Raw SYN probes at 64/1400 bytes, or explicit TCP-connect fallback with packet size unknown. Packet-size-specific negative controls, bounded resolver threads and three retained address preflights. Measured rounds pin one public endpoint, keep actual round/sample timing and every outcome, and exclude preflights/local errors from response-failure statistics. Province labels remain upstream declarations; missing replies are not application packet loss.","name_en":"31-province repeated latency matrix","name_zh":"31 省持续延迟矩阵","report_fields":["network.china_province_matrix","network.china_tcp_probes"],"rust_status":"native","test_id":"province-mesh","upstream_projects":["goecs","netquality"]},{"difference":"Six bounded no-root Linux UDP routes plus 12 raw TCP SYN/ICMP routes when permission already exists. Three matched 64-byte probes per TTL, 30 hops, 750 ms each and a 50 ms minimum per-route start interval. Per-hop response statistics preserve every sample; missing router replies are not application packet loss. At most 32 unique public responders get RIPE RIS origin-ASN evidence with source metadata. Fresh flows may follow ECMP; origin ASNs do not certify CN2/GIA products or the opposite direction. TCP MTR prefers an already responding Shanghai province-matrix endpoint, retaining its source and target-selection evidence; ICMP retains bundled ICMP targets. Different endpoints must be compared separately.","name_en":"Carrier return-path hop observations","name_zh":"三网回程逐跳路由","report_fields":["network.china_routes","network.china_mtr","network.china_mtr_asn"],"rust_status":"partial","test_id":"carrier-return-route","upstream_projects":["goecs","netquality"]},{"difference":"Optional family-specific HTTPS metadata; full public addresses are masked to prefixes. Provider-reported location is not verified hardware location or a reputation score.","name_en":"Egress ASN and location","name_zh":"出口 ASN 与位置","report_fields":["network.diagnostics.egress"],"rust_status":"native","test_id":"bgp-origin-geolocation","upstream_projects":["yabs","goecs","netquality"]},{"difference":"Native RIS announcement/origin/adjacency and PeeringDB declarations remain separate from versioned CAIDA inference. caida_asrank_relationships_v2 obtains selected origin degrees in the snapshot request, then uses two same-sort 65-row head/tail windows with explicit signed-32-bit offsets. Revision, degree, pagination and overlapping positions must match; disjoint windows cannot repeat neighbors. The existing five-request, 30-second and body budgets remain. Source family/date, per-role counts and incomplete coverage stay explicit. Historical v1 query hashes, notes, schema and receipts remain readable unchanged. No commercial contract, settlement terms, VPS packet path or mainland inbound verification is inferred. Dated CAIDA citation and publication-link notification requirements accompany the data.","name_en":"BGP upstreams, peers, IX and neighbors","name_zh":"BGP 上游、对等、IX 与邻居","report_fields":["network.diagnostics.bgp","network.diagnostics.asn_relationships"],"rust_status":"partial","test_id":"bgp-topology","upstream_projects":["goecs","netquality"]},{"difference":"RFC5389 success type/cookie/transaction/source/mapped-address checks; same local UDP socket, masked reflected IP, explicit partial/unknown results.","name_en":"Two-server STUN binding and mapping observations","name_zh":"双服务器 STUN 绑定与映射观察","report_fields":["network.diagnostics.stun"],"rust_status":"native","test_id":"stun-bindings","upstream_projects":["goecs","netquality"]},{"difference":"Native RFC5780 uses isolated mapping/filtering UDP ports, public distinct OTHER-ADDRESS and verified RESPONSE-ORIGIN, exact source/transaction checks and bounded retransmissions. Restrictive filtering inference additionally requires reachable alternates. Hairpin requires this run's unpredictable request from a separate local port; no response remains unknown, and no observed translation is not applicable. Per-server stages and selected evidence remain visible; obsolete cone/symmetric labels are not guessed.","name_en":"RFC5780 NAT mapping/filtering and hairpin","name_zh":"NAT 映射、过滤和发夹","report_fields":["network.diagnostics.stun"],"rust_status":"native","test_id":"nat-rfc5780-hairpin","upstream_projects":["goecs","netquality"]},{"difference":"Native mail_matrix_v1 uses the pinned portchecker v0.0.7 22-provider snapshot, including labeled example hosts. Seven fixed port combinations (adds SMTP 587), both IP families, preference-ordered dynamic MX, explicit null MX and implicit-domain fallback. Anonymous SMTP EHLO, POP3 CAPA/STLS and IMAP CAPABILITY/STARTTLS require protocol-specific replies, verified hostname/CA TLS and fresh post-TLS capabilities for ok; a greeting alone is partial. Per-address fallback attempts share six seconds, with 16 workers, 24 bounded native DNS calls, at most eight MX hosts and three public addresses, a 240-second matrix budget and shared 8 MiB receive / 1 MiB send limits (DNS/MX metadata additional). Passive Linux /proc listener inventory reports namespace-local binds without opening or connecting local mail ports; it is not Internet inbound reachability. No login, recipients or mail transaction. All failures, source/registry digests and protocol/family distinctions remain explicit; snapshots are not guarantees of provider product or account support. Legacy SMTP v3 remains readable; free-form greetings and new matrix capability parameters are omitted.","name_en":"Mail connectivity: MX, SMTP, POP3 and IMAP","name_zh":"邮件网络：MX、SMTP、POP3、IMAP","report_fields":["network.diagnostics.services","network.diagnostics.mail_matrix"],"rust_status":"native","test_id":"mail-greetings","upstream_projects":["goecs"]},{"difference":"Native service_latency_v1 covers all 40 pinned pingtest v0.0.28 websites on IPv4/IPv6 and all five upstream Telegram IPv4 addresses plus deduplicated production bootstrap facts from a pinned official Telegram Desktop source (13 literal targets, including IPv6 for all five declared DCs). Telegram ICMP echo and TCP 443 retain three independent samples; neither authenticates MTProto/account/DC/geographic access. Website DNS and up-to-three TCP preflights are separate; the first reachable address stays pinned even if TLS/HTTP fails. Three fresh HTTP/1.1 GET connections use verified CA/hostname TLS without resumption, cookies, authentication, body reads or redirects. DNS/TCP/TLS/first-byte/final-header times and every HTTP status remain distinct; 403/429/5xx are protocol evidence, not unlocking. All failures/skips remain explicit, never 9999 ms. Eight workers, 24 bounded native DNS calls, 240-second phase; per sample six seconds, 128 KiB receive / 16 KiB send TLS wire caps and 64 KiB headers. Per-stage distributions derive from raw samples, nearest-rank p95 and population standard deviation. Target source versions, pinned commit and source/archive digests are retained. This is cold origin-header latency; upstream legacy redirect-following averages and structured TCP-only times are separate methods.","name_en":"Website and Telegram datacenter latency","name_zh":"网站和 Telegram 节点延迟","report_fields":["network.diagnostics.service_latency"],"rust_status":"native","test_id":"website-telegram-latency","upstream_projects":["goecs"]},{"difference":"Independent native ip_reputation_v1 uses the documented public SpamCop, PSBL and DroneBL DNS interfaces with same-resolver listed/unlisted controls, plus a fresh official Tor Onionoo IPv4 exit-address snapshot. Unknown codes, failed controls, stale data and unsupported IPv6 coverage stay unknown. Optional owner-authenticated IPapi.is bulk POST provides separately attributed IPv4/IPv6 flags and company/ASN network fractions, never a composite or individual fraud score. API keys use AFDATA env/file/fd sources, never argv/URLs/reports; SSH forwards via encrypted stdin and an unlinked descriptor. Public evidence retains only /24 or /48 prefixes, source hashes, query counts/codes and timestamps. No anonymous API quota, mail, reporting or delisting. The pinned private security v0.0.21 implementation remains unavailable and uninspected; this is independent documented source coverage, not full parity with its hidden provider catalog.","name_en":"IP risk, reputation and blocklists","name_zh":"IP 风险、信誉与黑名单","report_fields":["network.diagnostics.ip_reputation"],"rust_status":"partial","test_id":"ip-reputation-security","upstream_projects":["goecs"]},{"difference":"The pinned github.com/oneclickvirt/privatespeedtest v0.0.25 dependency is unavailable from its repository and public Go package proxy. The public registry selection/fallback callers were reviewed; native tests use attributed public catalogs instead.","name_en":"GoECS managed speedtest registry","name_zh":"融合怪维护的测速注册表","report_fields":[],"rust_status":"source_unavailable","test_id":"managed-speed-registry","upstream_projects":["goecs"]},{"difference":"Versioned native anonymous evidence now covers 60 services, 71 fixed endpoints and separate IPv4/IPv6 observations. Six v4 Hong Kong and Taiwan services retain numeric region classes, strict response-code markers, explicit geographical denial, authentication requirements, one HLS playlist and a strict complete episode bootstrap. HTTP 200, SUCCESS, ASSET_MISSING, undocumented Friday codes and a manifest never establish playback or account eligibility. Returned stream URLs and session data are discarded without replay. Historical v1/v2/v3 registries, notes and interpretation remain frozen. This does not implement account, subscription, actual playback, DRM or generation checks; 138 of the 198 indexed upstream entries remain unimplemented.","name_en":"Media and AI regional availability","name_zh":"媒体与 AI 地区可用性","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","test_id":"media-ai-availability","upstream_projects":["goecs"]},{"difference":"AFDATA CLI/API, strict schema plus cross-field checks, separate Chinese/English rendering, detailed failures, offline HTML and explicit community publication consent. No automatic third-party report upload.","name_en":"Human reports, machine output and consented submission","name_zh":"可读报告、机器输出与提交","report_fields":["network","cpu","memory","disk"],"rust_status":"native","test_id":"reporting","upstream_projects":["yabs","goecs","netquality"]},{"difference":"Independent public protocol implementation: HEAD /upload, four bounded GET /downloading streams, then four synthetic POST /upload streams over pinned HTTP/1.1. Default strict TLS; only explicit opt-in retries certificate failures with unverified server identity and preserves the original error. Public endpoint and dated BGP sources do not authenticate the operator or establish a city. Each catalog endpoint adds 16 MiB down / 8 MiB up, charged separately from historical HTTPS/TCP. Failed consumed bytes remain charged; rates use whole group elapsed time. Unacknowledged uploads remain client-metered. Missing carriers/families remain unavailable; all connections originate on the VPS. The absolute eight-second transfer deadline never resets on body reads; timed downloads retain valid partial samples. Native Rust TLS writes the complete upload body before interpreting an early HTTP response, without treating client writes as server confirmation.","name_en":"Public OpenSpeedTest HTTP/1.1 transfers","name_zh":"公开 OpenSpeedTest 四连接传输","report_fields":["network.diagnostics.openspeedtest"],"rust_status":"native","test_id":"carrier-openspeedtest","upstream_projects":["goecs"]}],"third_party_licenses":[{"license_spdx":"Apache-2.0","license_text":"                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n","notice":"Province target registry data is adapted from oneclickvirt/nt3. Validation, transport, sampling and reporting are independently implemented in Rust. The upstream license follows.","project":"oneclickvirt/nt3","source_url":"https://github.com/oneclickvirt/nt3","source_version":"v0.0.26"},{"license_spdx":"Apache-2.0","license_text":"                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n","notice":"Passive hardware and SMART semantics were reviewed against the pinned oneclickvirt/basics sources. The Rust implementation uses Linux UAPI/sysfs and SMBIOS 3.8 with independent bounded parsing and non-identifying output. No upstream binaries or command installers are embedded.","project":"oneclickvirt/basics","source_url":"https://github.com/oneclickvirt/basics","source_version":"v0.0.39"},{"license_spdx":"Apache-2.0","license_text":"                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n","notice":"Provider endpoint facts are adapted from the pinned portchecker model. The official Go module archive and four relevant files were verified against the cached review. Native Rust anonymous protocol state machines, deadlines, shared transport budgets and report validation are independently implemented; the upstream license follows.","project":"oneclickvirt/portchecker","source_url":"https://github.com/oneclickvirt/portchecker","source_version":"v0.0.7"}],"third_party_notices":"The bundled public Speedtest node facts in crates/bench/src/china/catalog.rs\nare selected from https://github.com/spiritLHLS/speedtest.net-CN-ID .\nCarrier assignments are upstream categories, not verified network ownership.\n\nMIT License\n\nCopyright (c) 2023 spiritLHLS\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\nAnonymous media/AI endpoint facts and independently adapted response rules: oneclickvirt/UnlockTests v0.0.52, Apache-2.0 (full license below). The media_availability_v1 registry retains each reviewed source URL and SHA-256, plus the pinned source archive digest. No third-party executable is installed by this module. Adaptations add strict field-presence checks, scoped outcomes, bounded requests, verified pinned TLS and cookie/body privacy; account/playback/DRM workflows and opaque dependencies are not represented as implemented.\n\nWebsite and Telegram endpoint facts: oneclickvirt/pingtest v0.0.28, model/websites.go and model/tgdc.go, Apache-2.0 (full license text below). Additional public production bootstrap address/port facts only: official Telegram Desktop, commit 90c89dcde9aec6974883fd1a270d4ee50d8ba688, Telegram/SourceFiles/mtproto/mtproto_dc_options.cpp. No Telegram Desktop implementation code or test-environment endpoint data is incorporated. Source URLs and exact source SHA-256 digests are embedded in the service_latency_v1 registry.\n\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\n\nISO-3166-1 alpha-3 country-code normalization: isocountry 0.3.2 (MIT).\nSource: https://crates.io/crates/isocountry/0.3.2\nArchive SHA-256: 1ea1dc4bf0fb4904ba83ffdb98af3d9c325274e92e6e295e4151e86c96363e04\n\nMIT License\r\n\r\nCopyright (c) 2018 Brett Russell\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in all\r\ncopies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\nSOFTWARE.\r\n","upstream_service_inventory_scope":"Static source inventory of exported model.Result functions in platform packages; aliases and fallback functions count as entries. This is source review, not live service verification.","upstream_service_tests":[{"body_match_rule_count":1,"category":"africa","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/africa/BeinConnect.go","test_id":"goecs-service-africa-beinconnect-beinconnect","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"BeinConnect"},{"body_match_rule_count":0,"category":"africa","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":13,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/africa/DSTV.go","test_id":"goecs-service-africa-dstv-dstv","upstream_statuses":["StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"DSTV"},{"body_match_rule_count":2,"category":"africa","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/africa/Showmax.go","test_id":"goecs-service-africa-showmax-showmax","upstream_statuses":["StatusNetworkErr","StatusNo","StatusErr","StatusYes","StatusUnexpected"],"upstream_test":"Showmax"},{"body_match_rule_count":3,"category":"asia","dns_classification":true,"http_methods":["GET"],"json_response_parsing":true,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":16,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/asia/Bilibili.go","test_id":"goecs-service-asia-bilibili-bilibili","upstream_statuses":["StatusNetworkErr","StatusRestricted","StatusNo","StatusErr","StatusYes","StatusUnexpected"],"upstream_test":"Bilibili"},{"body_match_rule_count":0,"category":"asia","dns_classification":true,"http_methods":["GET"],"json_response_parsing":true,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":59,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/asia/Bilibili.go","test_id":"goecs-service-asia-bilibili-bilibilianime","upstream_statuses":["StatusNetworkErr","StatusErr","StatusNo","StatusYes","StatusRestricted"],"upstream_test":"BilibiliAnime"},{"body_match_rule_count":0,"category":"asia","difference":"Fixed upstream sample episode. Code zero requires a playback descriptor; URLs are never stored or followed. Obsolete/missing titles remain unknown, not a nationwide library verdict. The undefined shell-session placeholder is omitted.","dns_classification":false,"http_methods":[],"json_response_parsing":false,"native_service_id":"bilibili-cn","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":10,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/asia/BilibiliMainland.go","test_id":"goecs-service-asia-bilibilimainland-bilibilimainland","upstream_statuses":[],"upstream_test":"BilibiliMainland"},{"body_match_rule_count":0,"category":"asia","difference":"Fixed upstream sample episode. Code zero requires a playback descriptor; URLs are never stored or followed. Obsolete/missing titles remain unknown, not a nationwide library verdict. The undefined shell-session placeholder is omitted.","dns_classification":false,"http_methods":[],"json_response_parsing":false,"native_service_id":"bilibili-sea","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":10,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/asia/BilibiliSEA.go","test_id":"goecs-service-asia-bilibilisea-bilibilisea","upstream_statuses":[],"upstream_test":"BilibiliSEA"},{"body_match_rule_count":0,"category":"asia","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":14,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/asia/Hotstar.go","test_id":"goecs-service-asia-hotstar-hotstar","upstream_statuses":["StatusNo","StatusUnexpected","StatusNetworkErr","StatusBanned","StatusYes"],"upstream_test":"HotStar"},{"body_match_rule_count":0,"category":"asia","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":13,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/asia/Sooka.go","test_id":"goecs-service-asia-sooka-sooka","upstream_statuses":["StatusYes","StatusNo","StatusUnexpected"],"upstream_test":"Sooka"},{"body_match_rule_count":1,"category":"asia","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":18,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/asia/StarPlus.go","test_id":"goecs-service-asia-starplus-starplus","upstream_statuses":["StatusNetworkErr","StatusBanned","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"StarPlus"},{"body_match_rule_count":0,"category":"asia","dns_classification":false,"http_methods":[],"json_response_parsing":true,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":73,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/asia/StarPlus.go","test_id":"goecs-service-asia-starplus-anotherstarplus","upstream_statuses":["StatusUnexpected","StatusCDNRelay","StatusNo","StatusYes"],"upstream_test":"AnotherStarPlus"},{"body_match_rule_count":0,"category":"au","difference":"Only the explicit integer market ID is retained; ID 4 names the upstream Australian market. Other IDs, errors and the currently observed 404 never imply playback or eligibility. Postcodes, place names and addresses are discarded.","dns_classification":true,"http_methods":["GET"],"json_response_parsing":true,"reason_code":"native_anonymous_evidence_without_account_or_playback","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":22,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/au/7Plus.go","test_id":"goecs-service-au-7plus-au7plus","upstream_statuses":["StatusNo","StatusUnexpected","StatusNetworkErr","StatusYes"],"upstream_test":"Au7plus"},{"body_match_rule_count":1,"category":"au","difference":"Observed anonymous response only; account entitlements and playback are untested.","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"native_service_id":"abc-iview","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/au/ABCiView.go","test_id":"goecs-service-au-abciview-abciview","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"ABCiView"},{"body_match_rule_count":0,"category":"au","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":14,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/au/Binge.go","test_id":"goecs-service-au-binge-binge","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"Binge"},{"body_match_rule_count":2,"category":"au","difference":"The CDN allow boolean and webpage denial remain separate steps, including disagreements. No missing-boolean default, state/address export, account or playback claim.","dns_classification":true,"http_methods":["GET"],"json_response_parsing":true,"native_service_id":"tenplay","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":17,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/au/Channel10.go","test_id":"goecs-service-au-channel10-channel10","upstream_statuses":["StatusNetworkErr","StatusNo","StatusErr","StatusYes","StatusUnexpected"],"upstream_test":"Channel10"},{"body_match_rule_count":2,"category":"au","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":14,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/au/Channel9.go","test_id":"goecs-service-au-channel9-channel9","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"Channel9"},{"body_match_rule_count":1,"category":"au","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":13,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/au/KayoSports.go","test_id":"goecs-service-au-kayosports-kayosports","upstream_statuses":["StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"KayoSports"},{"body_match_rule_count":0,"category":"au","difference":"Only the nested provider country code is retained. A country response is not an account, subscription, stream or playback entitlement.","dns_classification":true,"http_methods":["GET"],"json_response_parsing":true,"reason_code":"native_anonymous_evidence_without_account_or_playback","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":14,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/au/SBSonDemand.go","test_id":"goecs-service-au-sbsondemand-sbsondemand","upstream_statuses":["StatusNetworkErr","StatusErr","StatusYes","StatusNo"],"upstream_test":"SBSonDemand"},{"body_match_rule_count":2,"category":"au","dns_classification":true,"http_methods":[],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":13,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/au/Stan.go","test_id":"goecs-service-au-stan-stan","upstream_statuses":["StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"Stan"},{"body_match_rule_count":1,"category":"ca","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":14,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/ca/CBCGem.go","test_id":"goecs-service-ca-cbcgem-cbcgem","upstream_statuses":["StatusNetworkErr","StatusYes","StatusNo","StatusUnexpected"],"upstream_test":"CBCGem"},{"body_match_rule_count":2,"category":"ca","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":14,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/ca/Crave.go","test_id":"goecs-service-ca-crave-crave","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"Crave"},{"body_match_rule_count":3,"category":"ch","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/ch/Sky.go","test_id":"goecs-service-ch-sky-skych","upstream_statuses":["StatusErr","StatusNo","StatusBanned","StatusYes","StatusNetworkErr","StatusUnexpected"],"upstream_test":"SkyCh"},{"body_match_rule_count":1,"category":"de","dns_classification":true,"http_methods":[],"json_response_parsing":true,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":17,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/de/Joyn.go","test_id":"goecs-service-de-joyn-joyn","upstream_statuses":["StatusUnexpected","StatusYes","StatusNo"],"upstream_test":"Joyn"},{"body_match_rule_count":2,"category":"de","dns_classification":false,"http_methods":["GET"],"json_response_parsing":true,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":16,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/de/Sky.go","test_id":"goecs-service-de-sky-skyde","upstream_statuses":["StatusNetworkErr","StatusNo","StatusErr","StatusYes","StatusUnexpected"],"upstream_test":"SkyDe"},{"body_match_rule_count":0,"category":"de","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":12,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/de/ZDF.go","test_id":"goecs-service-de-zdf-zdf","upstream_statuses":["StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"ZDF"},{"body_match_rule_count":0,"category":"es","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":12,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/es/MoviStarPlus.go","test_id":"goecs-service-es-movistarplus-movistarplus","upstream_statuses":["StatusNetworkErr","StatusYes","StatusNo","StatusUnexpected"],"upstream_test":"MoviStarPlus"},{"body_match_rule_count":3,"category":"eu","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/eu/Docplay.go","test_id":"goecs-service-eu-docplay-docplay","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"Docplay"},{"body_match_rule_count":2,"category":"eu","dns_classification":true,"http_methods":["GET"],"json_response_parsing":true,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":17,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/eu/Eurosport.go","test_id":"goecs-service-eu-eurosport-eurosport","upstream_statuses":["StatusNetworkErr","StatusErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"Eurosport"},{"body_match_rule_count":1,"category":"eu","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":13,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/eu/MathsSpot.go","test_id":"goecs-service-eu-mathsspot-mathsspot","upstream_statuses":["StatusNetworkErr","StatusNo","StatusUnexpected","StatusYes"],"upstream_test":"MathsSpot"},{"body_match_rule_count":1,"category":"eu","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":14,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/eu/MegogoTV.go","test_id":"goecs-service-eu-megogotv-megogotv","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"MegogoTV"},{"body_match_rule_count":4,"category":"eu","dns_classification":true,"http_methods":[],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":14,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/eu/RakutenTV.go","test_id":"goecs-service-eu-rakutentv-rakutentv","upstream_statuses":["StatusBanned","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"RakutenTV"},{"body_match_rule_count":0,"category":"eu","dns_classification":true,"http_methods":["GET"],"json_response_parsing":true,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":18,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/eu/SetantaSports.go","test_id":"goecs-service-eu-setantasports-setantasports","upstream_statuses":["StatusNetworkErr","StatusUnexpected","StatusNo","StatusYes"],"upstream_test":"SetantaSports"},{"body_match_rule_count":6,"category":"eu","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/eu/SkyShowTime.go","test_id":"goecs-service-eu-skyshowtime-skyshowtime","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"SkyShowTime"},{"body_match_rule_count":0,"category":"eu","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":16,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/eu/TNTSports.go","test_id":"goecs-service-eu-tntsports-tntsports","upstream_statuses":["StatusBanned","StatusNo","StatusNetworkErr","StatusYes"],"upstream_test":"TNTSports"},{"body_match_rule_count":1,"category":"eu","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":14,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/eu/Viaplay.go","test_id":"goecs-service-eu-viaplay-viaplay","upstream_statuses":["StatusBanned","StatusNo","StatusNetworkErr","StatusYes","StatusUnexpected"],"upstream_test":"Viaplay"},{"body_match_rule_count":2,"category":"fr","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":14,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/fr/CanalPlus.go","test_id":"goecs-service-fr-canalplus-canalplus","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"CanalPlus"},{"body_match_rule_count":0,"category":"fr","difference":"The provider reponse.geo_info.country_code spelling is intentional. No French-country allowlist or playback inference is made.","dns_classification":true,"http_methods":["GET"],"json_response_parsing":true,"reason_code":"native_anonymous_evidence_without_account_or_playback","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/fr/FranceTV.go","test_id":"goecs-service-fr-francetv-francetv","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"FranceTV"},{"body_match_rule_count":0,"category":"fr","difference":"An explicit is_france boolean is geographical metadata only. False is distinct from a missing or malformed field and does not establish account or viewing eligibility.","dns_classification":true,"http_methods":["GET"],"json_response_parsing":true,"reason_code":"native_anonymous_evidence_without_account_or_playback","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":14,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/fr/Molotov.go","test_id":"goecs-service-fr-molotov-molotov","upstream_statuses":["StatusNetworkErr","StatusErr","StatusYes","StatusNo","StatusUnexpected"],"upstream_test":"Molotov"},{"body_match_rule_count":0,"category":"fr","dns_classification":false,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":14,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/fr/Salto.go","test_id":"goecs-service-fr-salto-salto","upstream_statuses":["StatusNetworkErr","StatusErr","StatusUnexpected"],"upstream_test":"Salto"},{"body_match_rule_count":0,"category":"hk","difference":"Fixed upstream sample episode. Code zero requires a playback descriptor; URLs are never stored or followed. Obsolete/missing titles remain unknown, not a nationwide library verdict. The undefined shell-session placeholder is omitted.","dns_classification":false,"http_methods":[],"json_response_parsing":false,"native_service_id":"bilibili-hk","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":9,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/hk/BilibiliHK.go","test_id":"goecs-service-hk-bilibilihk-bilibilihkmo","upstream_statuses":[],"upstream_test":"BilibiliHKMO"},{"body_match_rule_count":0,"category":"hk","difference":"Read one fixed channel playlist only. A recognized HLS manifest is catalog metadata; no listed variant, media segment, stream URL or DRM key is requested or retained.","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"native_service_id":"hoytv","reason_code":"native_anonymous_evidence_without_account_or_playback","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":13,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/hk/HoyTV.go","test_id":"goecs-service-hk-hoytv-hoytv","upstream_statuses":["StatusYes","StatusNo","StatusUnexpected"],"upstream_test":"HoyTV"},{"body_match_rule_count":1,"category":"hk","difference":"Anonymous GET response only; numeric region classes remain attributed metadata, not playback permission. Two-letter country tokens absent from the pinned ISO table, such as ZP, stay provider_region_label values rather than countries. Session tokens, cookies and client IPs are discarded without replay.","dns_classification":true,"http_methods":["GET"],"json_response_parsing":true,"native_service_id":"mytvsuper","reason_code":"native_anonymous_evidence_without_account_or_playback","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":16,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/hk/MyTvSuper.go","test_id":"goecs-service-hk-mytvsuper-mytvsuper","upstream_statuses":["StatusBanned","StatusNetworkErr","StatusYes","StatusErr","StatusNo","StatusUnexpected"],"upstream_test":"MyTvSuper"},{"body_match_rule_count":0,"category":"hk","difference":"Fixed read-only channel 332 metadata POST with the published sample device identifier. GEO_CHECK_FAIL is explicit denial; SUCCESS and ASSET_MISSING are response-code evidence, not playback. NOT_LOGIN remains authentication required. Returned stream URLs are never requested or retained.","dns_classification":true,"http_methods":[],"json_response_parsing":true,"native_service_id":"nowtv","reason_code":"native_anonymous_evidence_without_account_or_playback","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":14,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/hk/NowTV.go","test_id":"goecs-service-hk-nowtv-nowtv","upstream_statuses":["StatusErr","StatusYes","StatusNo","StatusUnexpected"],"upstream_test":"NowTV"},{"body_match_rule_count":0,"category":"hk","difference":"Fixed read-only channel 099 metadata POST with the published sample device identifier. GEO_CHECK_FAIL is explicit denial; SUCCESS is response-code evidence, not playback. Returned stream URLs are never requested or retained.","dns_classification":true,"http_methods":[],"json_response_parsing":true,"native_service_id":"viutv","reason_code":"native_anonymous_evidence_without_account_or_playback","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":13,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/hk/ViuTV.go","test_id":"goecs-service-hk-viutv-viutv","upstream_statuses":["StatusErr","StatusYes","StatusNo","StatusUnexpected"],"upstream_test":"ViuTV"},{"body_match_rule_count":0,"category":"id","difference":"Fixed upstream sample episode. Code zero requires a playback descriptor; URLs are never stored or followed. Obsolete/missing titles remain unknown, not a nationwide library verdict. The undefined shell-session placeholder is omitted.","dns_classification":false,"http_methods":[],"json_response_parsing":false,"native_service_id":"bilibili-id","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":11,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/id/BilibiliID.go","test_id":"goecs-service-id-bilibiliid-bilibiliid","upstream_statuses":[],"upstream_test":"BilibiliID"},{"body_match_rule_count":4,"category":"in","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":14,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/in/JioCinema.go","test_id":"goecs-service-in-jiocinema-jiocinema","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"JioCinema"},{"body_match_rule_count":2,"category":"in","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":14,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/in/MXPlayer.go","test_id":"goecs-service-in-mxplayer-mxplayer","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"MXPlayer"},{"body_match_rule_count":0,"category":"in","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":13,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/in/TataPlay.go","test_id":"goecs-service-in-tataplay-tataplay","upstream_statuses":["StatusYes","StatusNo","StatusUnexpected"],"upstream_test":"TataPlay"},{"body_match_rule_count":2,"category":"in","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":14,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/in/Zee5.go","test_id":"goecs-service-in-zee5-zee5","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"Zee5"},{"body_match_rule_count":2,"category":"it","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/it/RaiPlay.go","test_id":"goecs-service-it-raiplay-raiplay","upstream_statuses":["StatusBanned","StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"RaiPlay"},{"body_match_rule_count":3,"category":"jp","difference":"Only typed isoCountryCode and explicit blocked_location / anonymous_ip messages. A Japanese country code is not proof of playback; missing fields remain unknown.","dns_classification":true,"http_methods":["GET"],"json_response_parsing":true,"native_service_id":"abema","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":16,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/jp/Abema.go","test_id":"goecs-service-jp-abema-abema","upstream_statuses":["StatusBanned","StatusNetworkErr","StatusNo","StatusErr","StatusYes"],"upstream_test":"Abema"},{"body_match_rule_count":0,"category":"jp","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":13,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/jp/AnimeFesta.go","test_id":"goecs-service-jp-animefesta-animefesta","upstream_statuses":["StatusYes","StatusNo","StatusUnexpected"],"upstream_test":"AnimeFesta"},{"body_match_rule_count":1,"category":"jp","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/jp/DAnimeStore.go","test_id":"goecs-service-jp-danimestore-danimestore","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"DAnimeStore"},{"body_match_rule_count":0,"category":"jp","difference":"Fixed anonymous read-only GraphQL FetchClient query. isForeignAccess must be a boolean and GraphQL errors must be absent before a false flag means region_allowed. No streaming-start event, token, account or playback request.","dns_classification":false,"http_methods":[],"json_response_parsing":true,"native_service_id":"dmm","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":30,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/jp/DMM.go","test_id":"goecs-service-jp-dmm-dmm","upstream_statuses":["StatusRateLimited","StatusNo","StatusUnexpected","StatusNetworkErr","StatusErr","StatusYes"],"upstream_test":"DMM"},{"body_match_rule_count":2,"category":"jp","dns_classification":true,"http_methods":[],"json_response_parsing":true,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/jp/DMMTV.go","test_id":"goecs-service-jp-dmmtv-dmmtv","upstream_statuses":["StatusYes","StatusNo","StatusErr","StatusUnexpected"],"upstream_test":"DMMTV"},{"body_match_rule_count":1,"category":"jp","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/jp/EroGameSpace.go","test_id":"goecs-service-jp-erogamespace-erogamespace","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"EroGameSpace"},{"body_match_rule_count":2,"category":"jp","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/jp/FOD.go","test_id":"goecs-service-jp-fod-fod","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"FOD"},{"body_match_rule_count":0,"category":"jp","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":13,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/jp/HuluJP.go","test_id":"goecs-service-jp-hulujp-hulu","upstream_statuses":["StatusBanned","StatusNo","StatusYes"],"upstream_test":"Hulu"},{"body_match_rule_count":0,"category":"jp","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":13,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/jp/J_COM_ON_DEMAND.go","test_id":"goecs-service-jp-j_com_on_demand-j_com_on_demand","upstream_statuses":["StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"J_COM_ON_DEMAND"},{"body_match_rule_count":0,"category":"jp","dns_classification":false,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":14,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/jp/Kancolle.go","test_id":"goecs-service-jp-kancolle-kancolle","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"Kancolle"},{"body_match_rule_count":0,"category":"jp","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":13,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/jp/KaraokeDam.go","test_id":"goecs-service-jp-karaokedam-karaokedam","upstream_statuses":["StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"KaraokeDam"},{"body_match_rule_count":0,"category":"jp","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/jp/Lemino.go","test_id":"goecs-service-jp-lemino-lemino","upstream_statuses":["StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"Lemino"},{"body_match_rule_count":0,"category":"jp","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":13,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/jp/MGStage.go","test_id":"goecs-service-jp-mgstage-mgstage","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"MGStage"},{"body_match_rule_count":0,"category":"jp","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":12,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/jp/Mora.go","test_id":"goecs-service-jp-mora-mora","upstream_statuses":["StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"Mora"},{"body_match_rule_count":0,"category":"jp","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":14,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/jp/MusicBook.go","test_id":"goecs-service-jp-musicbook-musicbook","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"MusicBook"},{"body_match_rule_count":1,"category":"jp","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/jp/NETRIDE.go","test_id":"goecs-service-jp-netride-netride","upstream_statuses":["StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"NETRIDE"},{"body_match_rule_count":0,"category":"jp","difference":"Two-letter provider country codes and the literal other country class remain distinct. The other class is not an invented country or playback denial.","dns_classification":true,"http_methods":["GET"],"json_response_parsing":true,"reason_code":"native_anonymous_evidence_without_account_or_playback","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/jp/NHKPlus.go","test_id":"goecs-service-jp-nhkplus-nhkplus","upstream_statuses":["StatusBanned","StatusNetworkErr","StatusErr","StatusYes","StatusNo","StatusUnexpected"],"upstream_test":"NHKPlus"},{"body_match_rule_count":8,"category":"jp","difference":"Only the pinned sample page, an explicit notAllowedCountry / regional-denial signal, or a typed video bootstrap is checked. The changing live-program discovery path and actual playback remain unimplemented.","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"native_service_id":"niconico","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":14,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/jp/Niconico.go","test_id":"goecs-service-jp-niconico-niconico","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"Niconico"},{"body_match_rule_count":0,"category":"jp","dns_classification":false,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":13,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/jp/PCRJP.go","test_id":"goecs-service-jp-pcrjp-pcrjp","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"PCRJP"},{"body_match_rule_count":0,"category":"jp","dns_classification":false,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":14,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/jp/PrettyDerby.go","test_id":"goecs-service-jp-prettyderby-prettyderby","upstream_statuses":["StatusNo","StatusYes"],"upstream_test":"PrettyDerby"},{"body_match_rule_count":0,"category":"jp","dns_classification":false,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":13,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/jp/ProjectSekai.go","test_id":"goecs-service-jp-projectsekai-projectsekai","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"ProjectSekai"},{"body_match_rule_count":3,"category":"jp","difference":"The public area response exposes only a bounded JAPAN area-class signature or explicit OUT class. No arbitrary prefecture prose is retained and no radio stream is requested.","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"native_service_id":"radiko","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":16,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/jp/Radiko.go","test_id":"goecs-service-jp-radiko-radiko","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"Radiko"},{"body_match_rule_count":0,"category":"jp","dns_classification":false,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":13,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/jp/RakutenMagazine.go","test_id":"goecs-service-jp-rakutenmagazine-rakutenmagazine","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"RakutenMagazine"},{"body_match_rule_count":1,"category":"jp","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/jp/RakutenTV.go","test_id":"goecs-service-jp-rakutentv-rakutentv","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"RakutenTV"},{"body_match_rule_count":0,"category":"jp","dns_classification":false,"http_methods":["POST"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":16,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/jp/SDGGGE.go","test_id":"goecs-service-jp-sdggge-sdggge","upstream_statuses":["StatusUnexpected","StatusYes","StatusNo"],"upstream_test":"SDGGGE"},{"body_match_rule_count":0,"category":"jp","dns_classification":false,"http_methods":[],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":108,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/jp/TVer.go","test_id":"goecs-service-jp-tver-tver","upstream_statuses":["StatusNetworkErr","StatusErr"],"upstream_test":"TVer"},{"body_match_rule_count":2,"category":"jp","dns_classification":true,"http_methods":["GET"],"json_response_parsing":true,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":122,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/jp/TVer.go","test_id":"goecs-service-jp-tver-firsttver","upstream_statuses":["StatusNetworkErr","StatusUnexpected","StatusNo","StatusErr","StatusYes"],"upstream_test":"FirstTVer"},{"body_match_rule_count":2,"category":"jp","dns_classification":false,"http_methods":["GET"],"json_response_parsing":true,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":324,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/jp/TVer.go","test_id":"goecs-service-jp-tver-anothertver","upstream_statuses":["StatusNetworkErr","StatusNo","StatusErr","StatusYes","StatusUnexpected"],"upstream_test":"AnotherTVer"},{"body_match_rule_count":1,"category":"jp","dns_classification":true,"http_methods":["GET"],"json_response_parsing":true,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":16,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/jp/Telasa.go","test_id":"goecs-service-jp-telasa-telasa","upstream_statuses":["StatusNetworkErr","StatusNo","StatusErr","StatusYes","StatusUnexpected"],"upstream_test":"Telasa"},{"body_match_rule_count":0,"category":"jp","dns_classification":true,"http_methods":[],"json_response_parsing":true,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":13,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/jp/UNext.go","test_id":"goecs-service-jp-unext-unext","upstream_statuses":["StatusErr","StatusYes","StatusNo","StatusUnexpected"],"upstream_test":"UNext"},{"body_match_rule_count":3,"category":"jp","dns_classification":true,"http_methods":[],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":19,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/jp/VideoMarket.go","test_id":"goecs-service-jp-videomarket-videomarket","upstream_statuses":["StatusBanned","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"VideoMarket"},{"body_match_rule_count":5,"category":"jp","dns_classification":true,"http_methods":["GET"],"json_response_parsing":true,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":156,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/jp/Wowow.go","test_id":"goecs-service-jp-wowow-wowow","upstream_statuses":["StatusErr","StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"Wowow"},{"body_match_rule_count":2,"category":"kr","difference":"A geographical denial requires the exact not-available Next.js page plus the rendered denial paragraph before the application JSON. Translations, script strings and HTTP 200 alone do not prove denial or playback. A recognized normal application records only public frontend evidence.","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"native_anonymous_evidence_without_account_or_playback","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/kr/CoupangPlay.go","test_id":"goecs-service-kr-coupangplay-coupangplay","upstream_statuses":["StatusBanned","StatusNo","StatusNetworkErr","StatusYes","StatusUnexpected"],"upstream_test":"CoupangPlay"},{"body_match_rule_count":6,"category":"kr","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/kr/KBSDomestic.go","test_id":"goecs-service-kr-kbsdomestic-kbsdomestic","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"KBSDomestic"},{"body_match_rule_count":2,"category":"kr","dns_classification":true,"http_methods":["GET"],"json_response_parsing":true,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":22,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/kr/NaverTV.go","test_id":"goecs-service-kr-navertv-navertv","upstream_statuses":["StatusBanned","StatusNetworkErr","StatusNo","StatusErr","StatusYes","StatusUnexpected"],"upstream_test":"NaverTV"},{"body_match_rule_count":0,"category":"kr","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":13,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/kr/PandaTV.go","test_id":"goecs-service-kr-pandatv-pandatv","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"PandaTV"},{"body_match_rule_count":0,"category":"kr","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":11,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/kr/SOOP.go","test_id":"goecs-service-kr-soop-soop","upstream_statuses":["StatusYes","StatusUnexpected"],"upstream_test":"SOOP"},{"body_match_rule_count":2,"category":"kr","dns_classification":false,"http_methods":["GET"],"json_response_parsing":true,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":16,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/kr/SPOTVNOW.go","test_id":"goecs-service-kr-spotvnow-spotvnow","upstream_statuses":["StatusNetworkErr","StatusNo","StatusUnexpected","StatusErr","StatusYes"],"upstream_test":"SPOTVNOW"},{"body_match_rule_count":3,"category":"kr","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":14,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/kr/Tving.go","test_id":"goecs-service-kr-tving-tving","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"Tving"},{"body_match_rule_count":1,"category":"kr","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":14,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/kr/Watcha.go","test_id":"goecs-service-kr-watcha-watcha","upstream_statuses":["StatusNo","StatusBanned","StatusYes","StatusUnexpected"],"upstream_test":"Watcha"},{"body_match_rule_count":2,"category":"kr","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/kr/Wavve.go","test_id":"goecs-service-kr-wavve-wavve","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"Wavve"},{"body_match_rule_count":1,"category":"nl","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":18,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/nl/NLZIET.go","test_id":"goecs-service-nl-nlziet-zietcdn","upstream_statuses":["StatusNetworkErr","StatusYes","StatusNo"],"upstream_test":"ZIETCDN"},{"body_match_rule_count":3,"category":"nl","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":55,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/nl/NLZIET.go","test_id":"goecs-service-nl-nlziet-nlziet","upstream_statuses":["StatusNo","StatusYes"],"upstream_test":"NLZIET"},{"body_match_rule_count":1,"category":"nl","dns_classification":true,"http_methods":["GET"],"json_response_parsing":true,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":16,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/nl/NPOStartPlus.go","test_id":"goecs-service-nl-npostartplus-npostartplus","upstream_statuses":["StatusBanned","StatusErr","StatusNo","StatusYes"],"upstream_test":"NPOStartPlus"},{"body_match_rule_count":1,"category":"nl","dns_classification":true,"http_methods":["POST"],"json_response_parsing":true,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":14,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/nl/VideoLand.go","test_id":"goecs-service-nl-videoland-videoland","upstream_statuses":["StatusNo","StatusErr","StatusYes"],"upstream_test":"VideoLand"},{"body_match_rule_count":2,"category":"nz","dns_classification":true,"http_methods":["GET"],"json_response_parsing":true,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":16,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/nz/MaoriTV.go","test_id":"goecs-service-nz-maoritv-maoritv","upstream_statuses":["StatusNo","StatusErr","StatusYes","StatusUnexpected"],"upstream_test":"MaoriTV"},{"body_match_rule_count":3,"category":"nz","dns_classification":true,"http_methods":[],"json_response_parsing":false,"reason_code":"upstream_account_mutation_and_embedded_credential_not_executed","rust_status":"not_implemented","source_line":16,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/nz/NeonTV.go","test_id":"goecs-service-nz-neontv-neontv","upstream_statuses":["StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"NeonTV"},{"body_match_rule_count":3,"category":"nz","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":17,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/nz/SkyGO.go","test_id":"goecs-service-nz-skygo-skygo","upstream_statuses":["StatusYes","StatusNetworkErr","StatusNo","StatusUnexpected"],"upstream_test":"SkyGO"},{"body_match_rule_count":1,"category":"nz","difference":"Manifest syntax only; segments, DRM/license/key URLs and actual playback are never requested.","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"native_service_id":"three-now","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":14,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/nz/ThreeNow.go","test_id":"goecs-service-nz-threenow-threenow","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"ThreeNow"},{"body_match_rule_count":2,"category":"ru","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/ru/Amediateka.go","test_id":"goecs-service-ru-amediateka-amediateka","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"Amediateka"},{"body_match_rule_count":2,"category":"sg","difference":"Observed anonymous response only; account entitlements and playback are untested.","dns_classification":true,"http_methods":["GET"],"json_response_parsing":true,"native_service_id":"mewatch","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/sg/MeWatch.go","test_id":"goecs-service-sg-mewatch-mewatch","upstream_statuses":["StatusNetworkErr","StatusErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"MeWatch"},{"body_match_rule_count":0,"category":"th","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":49,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/th/AISPlay.go","test_id":"goecs-service-th-aisplay-aisplay","upstream_statuses":["StatusErr","StatusNetworkErr","StatusNo","StatusYes"],"upstream_test":"AISPlay"},{"body_match_rule_count":3,"category":"th","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":197,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/th/AISPlay.go","test_id":"goecs-service-th-aisplay-anotheraisplay","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"AnotherAISPlay"},{"body_match_rule_count":0,"category":"th","difference":"Fixed upstream sample episode. Code zero requires a playback descriptor; URLs are never stored or followed. Obsolete/missing titles remain unknown, not a nationwide library verdict. The undefined shell-session placeholder is omitted.","dns_classification":false,"http_methods":[],"json_response_parsing":false,"native_service_id":"bilibili-th","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":11,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/th/BilibiliTH.go","test_id":"goecs-service-th-bilibilith-bilibilith","upstream_statuses":[],"upstream_test":"BilibiliTH"},{"body_match_rule_count":1,"category":"th","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":27,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/th/TrueID.go","test_id":"goecs-service-th-trueid-trueid","upstream_statuses":["StatusNetworkErr","StatusErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"TrueID"},{"body_match_rule_count":0,"category":"transnation","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":13,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/transnation/Apple.go","test_id":"goecs-service-transnation-apple-apple","upstream_statuses":["StatusUnexpected","StatusYes","StatusNo"],"upstream_test":"Apple"},{"body_match_rule_count":3,"category":"transnation","dns_classification":false,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":16,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/transnation/Bing.go","test_id":"goecs-service-transnation-bing-bing","upstream_statuses":["StatusNetworkErr","StatusYes","StatusBanned","StatusUnexpected"],"upstream_test":"Bing"},{"body_match_rule_count":3,"category":"transnation","difference":"No Bearer null header and no country-list inference. Explicit unsupported-country JSON is denial; an empty or undocumented response remains unknown. iOS and trace evidence stay separate. Cookie-consent metadata is a policy observation, not ChatGPT/API eligibility.","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"native_service_id":"openai","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/transnation/ChatGPT.go","test_id":"goecs-service-transnation-chatgpt-openai","upstream_statuses":["StatusNetworkErr","StatusRateLimited","StatusYes","StatusNo","StatusUnexpected"],"upstream_test":"OpenAI"},{"body_match_rule_count":0,"category":"transnation","difference":"Branded frontend signature and CDN-reported country are separate. No stale support-country allowlist, login or generation claim.","dns_classification":false,"http_methods":[],"json_response_parsing":false,"native_service_id":"claude","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":10,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/transnation/Claude.go","test_id":"goecs-service-transnation-claude-claude","upstream_statuses":[],"upstream_test":"Claude"},{"body_match_rule_count":0,"category":"transnation","difference":"Observed anonymous response only; account entitlements and playback are untested.","dns_classification":true,"http_methods":["GET"],"json_response_parsing":true,"native_service_id":"copilot","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":16,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/transnation/Copilot.go","test_id":"goecs-service-transnation-copilot-copilot","upstream_statuses":["StatusBanned","StatusNo","StatusNetworkErr","StatusErr","StatusYes","StatusUnexpected"],"upstream_test":"Copilot"},{"body_match_rule_count":1,"category":"transnation","difference":"Observed anonymous response only; account entitlements and playback are untested.","dns_classification":false,"http_methods":["GET"],"json_response_parsing":true,"native_service_id":"coze","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":13,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/transnation/Coze.go","test_id":"goecs-service-transnation-coze-coze","upstream_statuses":["StatusRateLimited","StatusBanned","StatusNo","StatusUnexpected","StatusYes"],"upstream_test":"Coze"},{"body_match_rule_count":0,"category":"transnation","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":13,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/transnation/DAZN.go","test_id":"goecs-service-transnation-dazn-dazn","upstream_statuses":["StatusBanned","StatusErr","StatusYes","StatusNo"],"upstream_test":"DAZN"},{"body_match_rule_count":2,"category":"transnation","difference":"Uses ordinary public DNS and verified hostname, not a hardcoded origin-IP override.","dns_classification":false,"http_methods":["GET"],"json_response_parsing":false,"native_service_id":"deepseek","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":41,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/transnation/DeepSeek.go","test_id":"goecs-service-transnation-deepseek-deepseek","upstream_statuses":["StatusErr","StatusNoIPv6","StatusYes","StatusBanned","StatusNo","StatusRateLimited","StatusUnexpected"],"upstream_test":"DeepSeek"},{"body_match_rule_count":5,"category":"transnation","dns_classification":true,"http_methods":["POST","GET"],"json_response_parsing":true,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":19,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/transnation/Disney.go","test_id":"goecs-service-transnation-disney-disneyplus","upstream_statuses":["StatusRateLimited","StatusNo","StatusErr","StatusUnexpected","StatusYes"],"upstream_test":"DisneyPlus"},{"body_match_rule_count":0,"category":"transnation","difference":"Observed anonymous response only; account entitlements and playback are untested.","dns_classification":false,"http_methods":[],"json_response_parsing":false,"native_service_id":"dola","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":17,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/transnation/Dola.go","test_id":"goecs-service-transnation-dola-dola","upstream_statuses":["StatusRateLimited","StatusBanned","StatusUnexpected","StatusYes"],"upstream_test":"Dola"},{"body_match_rule_count":2,"category":"transnation","difference":"Pinned embedded application flags only; frontend evidence does not prove generation or account eligibility.","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"native_service_id":"gemini","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/transnation/Gemini.go","test_id":"goecs-service-transnation-gemini-gemini","upstream_statuses":["StatusNetworkErr","StatusYes","StatusBanned","StatusNo","StatusUnexpected"],"upstream_test":"Gemini"},{"body_match_rule_count":0,"category":"transnation","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":30,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/transnation/GooglePlayStore.go","test_id":"goecs-service-transnation-googleplaystore-googleplaystore","upstream_statuses":["StatusNetworkErr","StatusUnexpected","StatusNo","StatusYes"],"upstream_test":"GooglePlayStore"},{"body_match_rule_count":4,"category":"transnation","difference":"One public fixed curl query. Recognized search-result structure or unusual-traffic challenge only, not a generic 200 or occurrence of the query word. Search usefulness and future rate limits are untested.","dns_classification":false,"http_methods":["GET"],"json_response_parsing":false,"native_service_id":"google-search","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":14,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/transnation/GoogleSearch.go","test_id":"goecs-service-transnation-googlesearch-googlesearch","upstream_statuses":["StatusNetworkErr","StatusRateLimited","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"GoogleSearch"},{"body_match_rule_count":0,"category":"transnation","difference":"Branded frontend signature and CDN-reported country are separate. No stale support-country allowlist, login or generation claim.","dns_classification":false,"http_methods":[],"json_response_parsing":false,"native_service_id":"grok","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":19,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/transnation/Grok.go","test_id":"goecs-service-transnation-grok-grok","upstream_statuses":[],"upstream_test":"Grok"},{"body_match_rule_count":0,"category":"transnation","difference":"Only a recognized final country suffix from the bounded x-custom-client-ip header is retained, with ntw mapped to TW. Client IP and raw header are discarded; country does not prove playback.","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"native_service_id":"iqiyi","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":14,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/transnation/IQiYi.go","test_id":"goecs-service-transnation-iqiyi-iqiyi","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"IQiYi"},{"body_match_rule_count":1,"category":"transnation","dns_classification":true,"http_methods":[],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":14,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/transnation/InstagramMusic.go","test_id":"goecs-service-transnation-instagrammusic-instagram","upstream_statuses":["StatusNo","StatusYes","StatusRateLimited","StatusUnexpected"],"upstream_test":"Instagram"},{"body_match_rule_count":1,"category":"transnation","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/transnation/KOCOWA.go","test_id":"goecs-service-transnation-kocowa-kocowa","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"KOCOWA"},{"body_match_rule_count":1,"category":"transnation","difference":"Anonymous read-only ListGoods POST sends {}; no order, payment, login or generation. Missing region is unknown. REGION_OVERSEA is retained as a provider label, never invented as a country code.","dns_classification":true,"http_methods":[],"json_response_parsing":false,"native_service_id":"kimi","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/transnation/Kimi.go","test_id":"goecs-service-transnation-kimi-kimi","upstream_statuses":["StatusRateLimited","StatusNo","StatusNetworkErr","StatusBanned","StatusYes"],"upstream_test":"Kimi"},{"body_match_rule_count":9,"category":"transnation","difference":"Recognized frontend or explicit GeoBlockedErrorRoot signal only; ajax 400/404 and generic 200 do not establish eligibility.","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"native_service_id":"meta-ai","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":16,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/transnation/MetaAI.go","test_id":"goecs-service-transnation-metaai-metaai","upstream_statuses":["StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"MetaAI"},{"body_match_rule_count":0,"category":"transnation","difference":"Branded frontend signature and CDN-reported country are separate. No stale support-country allowlist, login or generation claim.","dns_classification":false,"http_methods":[],"json_response_parsing":false,"native_service_id":"mistral","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":9,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/transnation/MistralAI.go","test_id":"goecs-service-transnation-mistralai-mistralai","upstream_statuses":[],"upstream_test":"MistralAI"},{"body_match_rule_count":0,"category":"transnation","dns_classification":true,"http_methods":["GET"],"json_response_parsing":true,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":41,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/transnation/Netflix.go","test_id":"goecs-service-transnation-netflix-netflixcdn","upstream_statuses":["StatusNetworkErr","StatusNo","StatusErr","StatusBanned","StatusYes","StatusUnexpected"],"upstream_test":"NetflixCDN"},{"body_match_rule_count":10,"category":"transnation","difference":"Two fixed title pages; playable/episode metadata is a catalog signal, not playback. Two 404 responses do not establish Originals-only access.","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"native_service_id":"netflix","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":98,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/transnation/Netflix.go","test_id":"goecs-service-transnation-netflix-netflix","upstream_statuses":["StatusRestricted","StatusBanned","StatusNetworkErr","StatusYes","StatusNo","StatusUnexpected"],"upstream_test":"Netflix"},{"body_match_rule_count":0,"category":"transnation","difference":"Only the provider country field, not a media or AI unlock test; IP and state fields omitted.","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"native_service_id":"onetrust","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":13,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/transnation/OneTrust.go","test_id":"goecs-service-transnation-onetrust-onetrust","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes"],"upstream_test":"OneTrust"},{"body_match_rule_count":1,"category":"transnation","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":13,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/transnation/ParamountPlus.go","test_id":"goecs-service-transnation-paramountplus-paramountplus","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes"],"upstream_test":"ParamountPlus"},{"body_match_rule_count":0,"category":"transnation","difference":"Branded frontend signature and CDN-reported country are separate. No stale support-country allowlist, login or generation claim.","dns_classification":false,"http_methods":[],"json_response_parsing":false,"native_service_id":"perplexity","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":18,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/transnation/PerplexityAI.go","test_id":"goecs-service-transnation-perplexityai-perplexityai","upstream_statuses":[],"upstream_test":"PerplexityAI"},{"body_match_rule_count":0,"category":"transnation","difference":"Branded frontend signature and CDN-reported country are separate. No stale support-country allowlist, login or generation claim.","dns_classification":false,"http_methods":[],"json_response_parsing":false,"native_service_id":"poe","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":40,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/transnation/Poe.go","test_id":"goecs-service-transnation-poe-poe","upstream_statuses":[],"upstream_test":"Poe"},{"body_match_rule_count":3,"category":"transnation","difference":"Observed anonymous response only; account entitlements and playback are untested.","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"native_service_id":"prime-video","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":14,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/transnation/PrimeVideo.go","test_id":"goecs-service-transnation-primevideo-primevideo","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes"],"upstream_test":"PrimeVideo"},{"body_match_rule_count":2,"category":"transnation","difference":"Branded frontend structure and explicit network-security blocking are distinguished. A 302 or generic 200 is not a positive signal; posting, account and API permissions are untested.","dns_classification":false,"http_methods":["GET"],"json_response_parsing":false,"native_service_id":"reddit","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/transnation/Reddit.go","test_id":"goecs-service-transnation-reddit-reddit","upstream_statuses":["StatusNetworkErr","StatusRateLimited","StatusYes","StatusNo","StatusUnexpected"],"upstream_test":"Reddit"},{"body_match_rule_count":3,"category":"transnation","dns_classification":true,"http_methods":["GET"],"json_response_parsing":true,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":16,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/transnation/SonyLiv.go","test_id":"goecs-service-transnation-sonyliv-sonyliv","upstream_statuses":["StatusNetworkErr","StatusBanned","StatusNo","StatusYes","StatusErr","StatusUnexpected"],"upstream_test":"SonyLiv"},{"body_match_rule_count":3,"category":"transnation","difference":"Anonymous auth response and country stay separate; no cookies, login or video generation.","dns_classification":false,"http_methods":["GET"],"json_response_parsing":false,"native_service_id":"sora","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/transnation/Sora.go","test_id":"goecs-service-transnation-sora-sora","upstream_statuses":["StatusNetworkErr","StatusUnexpected","StatusBanned","StatusRateLimited","StatusYes","StatusNo"],"upstream_test":"Sora"},{"body_match_rule_count":0,"category":"transnation","difference":"Only the embedded appServerConfig market, never registration or playback.","dns_classification":true,"http_methods":["GET"],"json_response_parsing":true,"native_service_id":"spotify","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":18,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/transnation/Spotify.go","test_id":"goecs-service-transnation-spotify-spotify","upstream_statuses":["StatusNo","StatusErr","StatusYes"],"upstream_test":"Spotify"},{"body_match_rule_count":1,"category":"transnation","difference":"Only an exact steamCountry cookie name with an unambiguous two-letter country is observed; cookie values are discarded and never replayed. The independent community step needs a branded signature. No account, checkout, purchase-region or login claim.","dns_classification":false,"http_methods":["GET"],"json_response_parsing":false,"native_service_id":"steam","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":13,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/transnation/Steam.go","test_id":"goecs-service-transnation-steam-steam","upstream_statuses":["StatusNetworkErr","StatusYes","StatusNo"],"upstream_test":"Steam"},{"body_match_rule_count":0,"category":"transnation","difference":"Explicit allow_in_this_country and country fields; no HK exception is inferred over a false flag.","dns_classification":true,"http_methods":["GET"],"json_response_parsing":true,"native_service_id":"tvb-anywhere","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":16,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/transnation/TVBAnywhere.go","test_id":"goecs-service-transnation-tvbanywhere-tvbanywhere","upstream_statuses":["StatusNetworkErr","StatusErr","StatusYes","StatusNo","StatusUnexpected"],"upstream_test":"TVBAnywhere"},{"body_match_rule_count":2,"category":"transnation","difference":"Observed anonymous response only; account entitlements and playback are untested.","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"native_service_id":"tiktok","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":13,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/transnation/TikTok.go","test_id":"goecs-service-transnation-tiktok-tiktok","upstream_statuses":["StatusNo","StatusYes","StatusNetworkErr","StatusUnexpected"],"upstream_test":"TikTok"},{"body_match_rule_count":2,"category":"transnation","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":14,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/transnation/ViuCom.go","test_id":"goecs-service-transnation-viucom-viucom","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"ViuCom"},{"body_match_rule_count":1,"category":"transnation","difference":"A recognized frontend and strict window.langInfo IP-derived dialing prefix are separate evidence. Fixed prefix markers retain the provider hint; shared calling codes are never converted into an invented ISO country. Conflicting bootstrap objects remain unknown. A China asset path does not establish a restriction, and no frontend hint proves playback. IP strings are discarded immediately.","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"native_anonymous_evidence_without_account_or_playback","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":16,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/transnation/WeTV.go","test_id":"goecs-service-transnation-wetv-wetv","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"WeTV"},{"body_match_rule_count":1,"category":"transnation","difference":"GET only: edit-form structure and fixed permission-denial markers are observed. No edit is submitted; an editable-looking form does not prove saving is permitted.","dns_classification":false,"http_methods":["GET"],"json_response_parsing":false,"native_service_id":"wikipedia-edit","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/transnation/Wikipedia.go","test_id":"goecs-service-transnation-wikipedia-wikipediaeditable","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusRateLimited","StatusUnexpected"],"upstream_test":"WikipediaEditable"},{"body_match_rule_count":1,"category":"transnation","dns_classification":false,"http_methods":[],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":20,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/transnation/X.go","test_id":"goecs-service-transnation-x-x","upstream_statuses":["StatusRateLimited","StatusErr","StatusNo","StatusBanned","StatusUnexpected","StatusYes"],"upstream_test":"X"},{"body_match_rule_count":7,"category":"transnation","difference":"Observed anonymous response only; account entitlements and playback are untested.","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"native_service_id":"youtube-premium","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/transnation/YouTube.go","test_id":"goecs-service-transnation-youtube-youtube","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes"],"upstream_test":"Youtube"},{"body_match_rule_count":5,"category":"transnation","difference":"Only the mapping format is observed; no raw client IP, hostname or inferred server country is retained.","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"native_service_id":"youtube-cdn","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":64,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/transnation/YouTube.go","test_id":"goecs-service-transnation-youtube-youtubecdn","upstream_statuses":["StatusNetworkErr","StatusUnexpected","StatusNo","StatusYes"],"upstream_test":"YoutubeCDN"},{"body_match_rule_count":0,"category":"tw","dns_classification":true,"http_methods":["POST"],"json_response_parsing":true,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/tw/4GTV.go","test_id":"goecs-service-tw-4gtv-tw4gtv","upstream_statuses":["StatusNetworkErr","StatusErr","StatusYes","StatusNo","StatusUnexpected"],"upstream_test":"Tw4gtv"},{"body_match_rule_count":11,"category":"tw","dns_classification":true,"http_methods":["GET"],"json_response_parsing":true,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/tw/BahamutAnime.go","test_id":"goecs-service-tw-bahamutanime-bahamutanime","upstream_statuses":["StatusNo","StatusErr","StatusNetworkErr","StatusYes","StatusUnexpected"],"upstream_test":"BahamutAnime"},{"body_match_rule_count":0,"category":"tw","difference":"Fixed upstream sample episode. Code zero requires a playback descriptor; URLs are never stored or followed. Obsolete/missing titles remain unknown, not a nationwide library verdict. The undefined shell-session placeholder is omitted.","dns_classification":false,"http_methods":[],"json_response_parsing":false,"native_service_id":"bilibili-tw","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":9,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/tw/BilibiliTW.go","test_id":"goecs-service-tw-bilibilitw-bilibilitw","upstream_statuses":[],"upstream_test":"BilibiliTW"},{"body_match_rule_count":2,"category":"tw","dns_classification":true,"http_methods":["GET"],"json_response_parsing":true,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":18,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/tw/Catchplay.go","test_id":"goecs-service-tw-catchplay-catchplay","upstream_statuses":["StatusNetworkErr","StatusNo","StatusErr","StatusYes","StatusUnexpected"],"upstream_test":"Catchplay"},{"body_match_rule_count":0,"category":"tw","difference":"Fixed anonymous sample-descriptor GET. Only exact string codes 0000 and 1006 survive as attributed markers. Neither undocumented code is converted into geographic permission or playback success; no returned URL is retained or followed.","dns_classification":true,"http_methods":["GET"],"json_response_parsing":true,"native_service_id":"friday-video","reason_code":"native_anonymous_evidence_without_account_or_playback","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/tw/FridayVideo.go","test_id":"goecs-service-tw-fridayvideo-fridayvideo","upstream_statuses":["StatusNetworkErr","StatusErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"FridayVideo"},{"body_match_rule_count":0,"category":"tw","difference":"Only the two fixed source response-code markers 06001-106 and 06001-107 survive. Their undocumented meanings are not promoted to geographical permission, account entitlement or successful playback. No returned media URL is requested or retained.","dns_classification":true,"http_methods":["GET"],"json_response_parsing":true,"reason_code":"native_anonymous_evidence_without_account_or_playback","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":14,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/tw/HamiVideo.go","test_id":"goecs-service-tw-hamivideo-hamivideo","upstream_statuses":["StatusNetworkErr","StatusErr","StatusYes","StatusNo","StatusUnexpected"],"upstream_test":"HamiVideo"},{"body_match_rule_count":1,"category":"tw","difference":"Observed anonymous response only; account entitlements and playback are untested.","dns_classification":true,"http_methods":["GET"],"json_response_parsing":true,"native_service_id":"kktv","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/tw/KKTV.go","test_id":"goecs-service-tw-kktv-kktv","upstream_statuses":["StatusNetworkErr","StatusNo","StatusErr","StatusYes","StatusUnexpected"],"upstream_test":"KKTV"},{"body_match_rule_count":1,"category":"tw","dns_classification":true,"http_methods":[],"json_response_parsing":true,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":20,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/tw/LiTV.go","test_id":"goecs-service-tw-litv-litv","upstream_statuses":["StatusUnexpected","StatusNo","StatusYes","StatusErr"],"upstream_test":"LiTV"},{"body_match_rule_count":1,"category":"tw","difference":"Fixed drama 11829 episode page. Requires a complete strict-JSON INITIAL_STATE script with nonempty episode metadata and a positive bounded duration within that metadata. Missing bootstrap or generic JavaScript strings remain unknown; no playback is attempted.","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"native_service_id":"linetv-tw","reason_code":"native_anonymous_evidence_without_account_or_playback","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":14,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/tw/LineTV.go","test_id":"goecs-service-tw-linetv-linetv","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes"],"upstream_test":"LineTV"},{"body_match_rule_count":3,"category":"tw","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/tw/MyVideo.go","test_id":"goecs-service-tw-myvideo-myvideo","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes"],"upstream_test":"MyVideo"},{"body_match_rule_count":0,"category":"tw","dns_classification":false,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":12,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/tw/Ofiii.go","test_id":"goecs-service-tw-ofiii-ofiii","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"Ofiii"},{"body_match_rule_count":2,"category":"uk","difference":"Fixed live-channel selector. Explicit geolocation error or typed media connection descriptor only; generic HTTP 200 remains unknown. No stream, manifest, segment or playback request.","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"native_service_id":"bbc-iplayer","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":14,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/uk/BBCiPlayer.go","test_id":"goecs-service-uk-bbciplayer-bbciplayer","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"BBCiPlayer"},{"body_match_rule_count":2,"category":"uk","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":14,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/uk/BritBox.go","test_id":"goecs-service-uk-britbox-britbox","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"BritBox"},{"body_match_rule_count":0,"category":"uk","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":12,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/uk/Channel4.go","test_id":"goecs-service-uk-channel4-channel4","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"Channel4"},{"body_match_rule_count":1,"category":"uk","dns_classification":true,"http_methods":["GET"],"json_response_parsing":true,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":20,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/uk/Channel5.go","test_id":"goecs-service-uk-channel5-channel5","upstream_statuses":["StatusBanned","StatusNetworkErr","StatusErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"Channel5"},{"body_match_rule_count":0,"category":"uk","dns_classification":true,"http_methods":["GET"],"json_response_parsing":true,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/uk/DiscoveryPlus.go","test_id":"goecs-service-uk-discoveryplus-discoveryplus","upstream_statuses":["StatusNetworkErr","StatusNo","StatusUnexpected","StatusYes"],"upstream_test":"DiscoveryPlus"},{"body_match_rule_count":2,"category":"uk","dns_classification":true,"http_methods":[],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":14,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/uk/ITVX.go","test_id":"goecs-service-uk-itvx-itvx","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"ITVX"},{"body_match_rule_count":4,"category":"uk","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/uk/SkyGo.go","test_id":"goecs-service-uk-skygo-skygo","upstream_statuses":["StatusNetworkErr","StatusYes","StatusNo","StatusUnexpected"],"upstream_test":"SkyGo"},{"body_match_rule_count":1,"category":"us","dns_classification":true,"http_methods":["GET","POST"],"json_response_parsing":true,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":29,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/us/AETV.go","test_id":"goecs-service-us-aetv-aetv","upstream_statuses":["StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"AETV"},{"body_match_rule_count":1,"category":"us","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":16,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/us/AMCPlus.go","test_id":"goecs-service-us-amcplus-amcplus","upstream_statuses":["StatusNetworkErr","StatusBanned","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"AMCPlus"},{"body_match_rule_count":2,"category":"us","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":14,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/us/AcornTV.go","test_id":"goecs-service-us-acorntv-acorntv","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"AcornTV"},{"body_match_rule_count":1,"category":"us","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":14,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/us/CWTV.go","test_id":"goecs-service-us-cwtv-cwtv","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"CWTV"},{"body_match_rule_count":0,"category":"us","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":13,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/us/Crackle.go","test_id":"goecs-service-us-crackle-crackle","upstream_statuses":["StatusNetworkErr","StatusYes","StatusNo","StatusUnexpected"],"upstream_test":"Crackle"},{"body_match_rule_count":1,"category":"us","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":14,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/us/Crunchyroll.go","test_id":"goecs-service-us-crunchyroll-crunchyroll","upstream_statuses":["StatusNetworkErr","StatusYes","StatusNo"],"upstream_test":"Crunchyroll"},{"body_match_rule_count":1,"category":"us","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/us/DirecTVGO.go","test_id":"goecs-service-us-directvgo-directvgo","upstream_statuses":["StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"DirecTVGO"},{"body_match_rule_count":0,"category":"us","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":12,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/us/DirectvStream.go","test_id":"goecs-service-us-directvstream-directvstream","upstream_statuses":["StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"DirectvStream"},{"body_match_rule_count":0,"category":"us","dns_classification":true,"http_methods":["GET"],"json_response_parsing":true,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/us/DiscoveryPlus.go","test_id":"goecs-service-us-discoveryplus-discoveryplus","upstream_statuses":["StatusNetworkErr","StatusNo","StatusUnexpected","StatusYes"],"upstream_test":"DiscoveryPlus"},{"body_match_rule_count":2,"category":"us","dns_classification":false,"http_methods":["POST"],"json_response_parsing":true,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":21,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/us/ESPNPlus.go","test_id":"goecs-service-us-espnplus-espnplus","upstream_statuses":["StatusNetworkErr","StatusNo","StatusErr","StatusUnexpected","StatusYes"],"upstream_test":"ESPNPlus"},{"body_match_rule_count":2,"category":"us","dns_classification":false,"http_methods":["GET"],"json_response_parsing":true,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":16,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/us/EncoreTVB.go","test_id":"goecs-service-us-encoretvb-encoretvb","upstream_statuses":["StatusNetworkErr","StatusNo","StatusErr","StatusYes","StatusUnexpected"],"upstream_test":"EncoreTVB"},{"body_match_rule_count":2,"category":"us","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":14,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/us/FXNOW.go","test_id":"goecs-service-us-fxnow-fxnow","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"FXNOW"},{"body_match_rule_count":0,"category":"us","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":12,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/us/Fox.go","test_id":"goecs-service-us-fox-fox","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"Fox"},{"body_match_rule_count":2,"category":"us","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/us/FuboTV.go","test_id":"goecs-service-us-fubotv-fubotv","upstream_statuses":["StatusNetworkErr","StatusYes","StatusNo","StatusUnexpected"],"upstream_test":"FuboTV"},{"body_match_rule_count":0,"category":"us","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":12,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/us/Funimation.go","test_id":"goecs-service-us-funimation-funimation","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"Funimation"},{"body_match_rule_count":2,"category":"us","dns_classification":true,"http_methods":["GET"],"json_response_parsing":true,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":42,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/us/HBOMax.go","test_id":"goecs-service-us-hbomax-hbomax","upstream_statuses":["StatusNetworkErr","StatusErr","StatusNo","StatusBanned","StatusYes"],"upstream_test":"HBOMax"},{"body_match_rule_count":5,"category":"us","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/us/Hulu.go","test_id":"goecs-service-us-hulu-hulu","upstream_statuses":["StatusNetworkErr","StatusNo","StatusRateLimited","StatusBanned","StatusUnexpected","StatusYes"],"upstream_test":"Hulu"},{"body_match_rule_count":6,"category":"us","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/us/KBSAmerican.go","test_id":"goecs-service-us-kbsamerican-kbsamerican","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"KBSAmerican"},{"body_match_rule_count":3,"category":"us","dns_classification":true,"http_methods":["POST"],"json_response_parsing":true,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":18,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/us/MGMPlus.go","test_id":"goecs-service-us-mgmplus-mgmplus","upstream_statuses":["StatusNo","StatusBanned","StatusErr","StatusNetworkErr","StatusUnexpected","StatusYes"],"upstream_test":"MGMPlus"},{"body_match_rule_count":1,"category":"us","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":14,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/us/NBATV.go","test_id":"goecs-service-us-nbatv-nbatv","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"NBATV"},{"body_match_rule_count":0,"category":"us","difference":"A fixed anonymous read-only USA-live geolocation POST uses the public usa_live protocol profile and no user credential. Only an explicit restricted=false records a policy allow; restricted=true with string code 321 records the source-specific geographical denial. Other restrictions remain policy metadata. Missing fields never default to allow, and OneTrust country is never substituted for NBC eligibility.","dns_classification":true,"http_methods":["POST","GET"],"json_response_parsing":true,"reason_code":"native_anonymous_evidence_without_account_or_playback","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":16,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/us/NBCTV.go","test_id":"goecs-service-us-nbctv-nbctv","upstream_statuses":["StatusYes","StatusNo","StatusNetworkErr","StatusUnexpected"],"upstream_test":"NBCTV"},{"body_match_rule_count":3,"category":"us","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/us/NFLPlus.go","test_id":"goecs-service-us-nflplus-nflplus","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"NFLPlus"},{"body_match_rule_count":1,"category":"us","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":13,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/us/PeacockTV.go","test_id":"goecs-service-us-peacocktv-peacocktv","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes"],"upstream_test":"PeacockTV"},{"body_match_rule_count":0,"category":"us","dns_classification":true,"http_methods":["GET"],"json_response_parsing":true,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/us/Philo.go","test_id":"goecs-service-us-philo-philo","upstream_statuses":["StatusNetworkErr","StatusNo","StatusErr","StatusYes","StatusUnexpected"],"upstream_test":"Philo"},{"body_match_rule_count":3,"category":"us","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":14,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/us/PlutoTV.go","test_id":"goecs-service-us-plutotv-plutotv","upstream_statuses":["StatusNetworkErr","StatusNo","StatusRateLimited","StatusYes"],"upstream_test":"PlutoTV"},{"body_match_rule_count":9,"category":"us","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":16,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/us/Pornhub.go","test_id":"goecs-service-us-pornhub-pornhub","upstream_statuses":["StatusNetworkErr","StatusNo","StatusRateLimited","StatusYes","StatusUnexpected"],"upstream_test":"Pornhub"},{"body_match_rule_count":2,"category":"us","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":14,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/us/Shudder.go","test_id":"goecs-service-us-shudder-shudder","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"Shudder"},{"body_match_rule_count":2,"category":"us","difference":"Strict country aliases, IP-restriction booleans and playback-policy booleans are attributed metadata. Conflicting or malformed aliases remain unknown; VPN labels alone do not mean blocked. IP restriction is access denial, not proof of a geographical cause. No country or unrestricted flag establishes successful playback.","dns_classification":true,"http_methods":["GET"],"json_response_parsing":true,"reason_code":"native_anonymous_evidence_without_account_or_playback","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":16,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/us/SlingTV.go","test_id":"goecs-service-us-slingtv-slingtv","upstream_statuses":["StatusNo","StatusUnexpected","StatusNetworkErr","StatusYes"],"upstream_test":"SlingTV"},{"body_match_rule_count":1,"category":"us","dns_classification":true,"http_methods":["GET"],"json_response_parsing":true,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":16,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/us/Starz.go","test_id":"goecs-service-us-starz-starz","upstream_statuses":["StatusBanned","StatusNetworkErr","StatusErr","StatusYes","StatusNo","StatusUnexpected"],"upstream_test":"Starz"},{"body_match_rule_count":2,"category":"us","dns_classification":true,"http_methods":["GET"],"json_response_parsing":true,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":17,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/us/TLCGO.go","test_id":"goecs-service-us-tlcgo-tlcgo","upstream_statuses":["StatusNetworkErr","StatusErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"TLCGO"},{"body_match_rule_count":2,"category":"us","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/us/TubiTV.go","test_id":"goecs-service-us-tubitv-tubitv","upstream_statuses":["StatusNo","StatusYes","StatusNetworkErr","StatusUnexpected"],"upstream_test":"TubiTV"},{"body_match_rule_count":0,"category":"vn","difference":"Fixed upstream sample episode. Code zero requires a playback descriptor; URLs are never stored or followed. Obsolete/missing titles remain unknown, not a nationwide library verdict. The undefined shell-session placeholder is omitted.","dns_classification":false,"http_methods":[],"json_response_parsing":false,"native_service_id":"bilibili-vn","reason_code":"native_anonymous_scoped_signals","report_fields":["network.diagnostics.media_availability"],"rust_status":"partial","source_line":11,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/vn/BilibiliVN.go","test_id":"goecs-service-vn-bilibilivn-bilibilivn","upstream_statuses":[],"upstream_test":"BilibiliVN"},{"body_match_rule_count":3,"category":"vn","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":15,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/vn/GalaxyPlay.go","test_id":"goecs-service-vn-galaxyplay-galaxyplay","upstream_statuses":["StatusYes","StatusNetworkErr","StatusNo","StatusUnexpected"],"upstream_test":"GalaxyPlay"},{"body_match_rule_count":1,"category":"vn","dns_classification":true,"http_methods":[],"json_response_parsing":true,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":21,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/vn/KPLUS.go","test_id":"goecs-service-vn-kplus-kplus","upstream_statuses":["StatusErr","StatusUnexpected","StatusNo","StatusYes"],"upstream_test":"KPLUS"},{"body_match_rule_count":1,"category":"vn","dns_classification":true,"http_methods":["GET"],"json_response_parsing":false,"reason_code":"service_specific_rules_require_independent_maintenance","rust_status":"not_implemented","source_line":18,"source_url":"https://github.com/oneclickvirt/UnlockTests/blob/v0.0.52/vn/TV360.go","test_id":"goecs-service-vn-tv360-tv360","upstream_statuses":["StatusNetworkErr","StatusNo","StatusYes","StatusUnexpected"],"upstream_test":"TV360"}]}},"trace":{}}