mirror of
https://github.com/dirtydishes/dreamio.git
synced 2026-06-06 21:38:15 +00:00
495 lines
523 KiB
HTML
495 lines
523 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>Fix OpenSubtitles Native Captions</title>
|
|
<style>
|
|
:root {
|
|
color-scheme: light;
|
|
--ink: oklch(24% 0.03 285);
|
|
--muted: oklch(45% 0.035 285);
|
|
--paper: oklch(98% 0.01 285);
|
|
--panel: oklch(95% 0.018 285);
|
|
--line: oklch(86% 0.025 285);
|
|
--accent: oklch(55% 0.19 292);
|
|
--accent-soft: oklch(91% 0.045 292);
|
|
--good: oklch(54% 0.12 158);
|
|
}
|
|
* { box-sizing: border-box; }
|
|
body {
|
|
margin: 0;
|
|
background: var(--paper);
|
|
color: var(--ink);
|
|
font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", sans-serif;
|
|
line-height: 1.55;
|
|
}
|
|
main {
|
|
max-width: 1120px;
|
|
margin: 0 auto;
|
|
padding: 56px 24px 72px;
|
|
}
|
|
header {
|
|
border-bottom: 1px solid var(--line);
|
|
padding-bottom: 28px;
|
|
margin-bottom: 34px;
|
|
}
|
|
.eyebrow {
|
|
color: var(--accent);
|
|
font-size: 13px;
|
|
font-weight: 700;
|
|
letter-spacing: 0.08em;
|
|
text-transform: uppercase;
|
|
margin: 0 0 10px;
|
|
}
|
|
h1 {
|
|
font-size: clamp(34px, 5vw, 58px);
|
|
line-height: 1.02;
|
|
margin: 0 0 18px;
|
|
letter-spacing: 0;
|
|
}
|
|
.summary {
|
|
max-width: 76ch;
|
|
color: var(--muted);
|
|
font-size: 18px;
|
|
margin: 0;
|
|
}
|
|
section {
|
|
padding: 26px 0;
|
|
border-bottom: 1px solid var(--line);
|
|
}
|
|
h2 {
|
|
font-size: 22px;
|
|
margin: 0 0 14px;
|
|
letter-spacing: 0;
|
|
}
|
|
p { max-width: 78ch; margin: 0 0 14px; }
|
|
ul { margin: 0; padding-left: 20px; max-width: 84ch; }
|
|
li { margin: 7px 0; }
|
|
code {
|
|
font-family: "SF Mono", ui-monospace, Menlo, Consolas, monospace;
|
|
font-size: 0.92em;
|
|
background: var(--panel);
|
|
border: 1px solid var(--line);
|
|
border-radius: 5px;
|
|
padding: 0.1em 0.35em;
|
|
}
|
|
.meta {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 10px;
|
|
margin-top: 20px;
|
|
}
|
|
.pill {
|
|
border: 1px solid var(--line);
|
|
background: var(--panel);
|
|
border-radius: 999px;
|
|
padding: 6px 10px;
|
|
font-size: 13px;
|
|
color: var(--muted);
|
|
}
|
|
.check {
|
|
color: var(--good);
|
|
font-weight: 700;
|
|
}
|
|
.diffs {
|
|
display: grid;
|
|
gap: 18px;
|
|
margin-top: 18px;
|
|
}
|
|
.diffs > * {
|
|
border: 1px solid var(--line);
|
|
border-radius: 8px;
|
|
overflow: auto;
|
|
background: oklch(99% 0.006 285);
|
|
}
|
|
[data-diffs-header] {
|
|
font-family: "SF Mono", ui-monospace, Menlo, Consolas, monospace;
|
|
font-size: 12px;
|
|
}
|
|
pre[data-diff] {
|
|
margin: 0;
|
|
font-size: 12px;
|
|
line-height: 1.45;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<main>
|
|
<header>
|
|
<p class="eyebrow">Dreamio turn document · 2026-05-25</p>
|
|
<h1>Fix OpenSubtitles Native Captions</h1>
|
|
<p class="summary">OpenSubtitles candidates now survive more Stremio and OpenSubtitles payload shapes, resolve through nested download responses, attach to VLC with clearer diagnostics, and get preferred when external tracks become visible after playback has already started.</p>
|
|
<div class="meta">
|
|
<span class="pill">Beads: dreamio-hzj</span>
|
|
<span class="pill">Branch: lavender/opensubtitles</span>
|
|
<span class="pill">Native player captions</span>
|
|
</div>
|
|
</header>
|
|
|
|
<section>
|
|
<h2>Summary</h2>
|
|
<p>Hardened the external subtitle path so OpenSubtitles tracks are more likely to appear as selectable VLC caption tracks alongside embedded MKV subtitles. The change focuses on discovery, candidate parsing, resolver compatibility, VLC visibility timing, and debug output.</p>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>Changes Made</h2>
|
|
<ul>
|
|
<li>Added Beads bug <code>dreamio-hzj</code> before implementation.</li>
|
|
<li>Expanded the web bridge to recognize subtitle objects with <code>attributes</code>, <code>files</code>, <code>file_id</code>, <code>download</code>, <code>link</code>, <code>file_name</code>, and language metadata.</li>
|
|
<li>Extended Swift subtitle candidate parsing for nested OpenSubtitles payloads and <code>file_id</code> download candidates.</li>
|
|
<li>Kept parent label and language metadata when nested subtitle URLs are selected during resolution.</li>
|
|
<li>Changed VLC attachment behavior so newly visible external tracks are preferred over an earlier automatic embedded-track selection when the user has not manually chosen a track.</li>
|
|
<li>Added focused tests for nested OpenSubtitles attributes/files payloads and nested API download responses.</li>
|
|
</ul>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>Context</h2>
|
|
<p>The native captions menu was already able to show embedded VLC subtitle tracks, which narrowed the problem to external subtitle handoff. OpenSubtitles data can arrive as direct file URLs, API download URLs, nested file objects, or delayed network payloads after native playback has started. VLC also exposes subtitle slaves asynchronously, so the first menu refresh can happen before an external track exists.</p>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>Important Implementation Details</h2>
|
|
<ul>
|
|
<li>The browser bridge now posts likely subtitle-shaped objects even when they are not immediately reduced to a direct URL. Swift performs the final recursive parsing.</li>
|
|
<li><code>SubtitleCandidateParser</code> now walks <code>attributes</code>, <code>data</code>, and <code>results</code> early, which better matches OpenSubtitles API structures.</li>
|
|
<li><code>file_id</code> values are converted into OpenSubtitles download API candidates so the existing resolver path can try to turn them into direct subtitle files.</li>
|
|
<li>VLC records the subtitle track IDs visible before external subtitle attachment. Delayed refreshes use that baseline to identify a newly visible external track.</li>
|
|
<li>If VLC accepts a subtitle slave but no new track appears by the final delayed refresh, the debug log now says so explicitly with baseline and visible track counts.</li>
|
|
</ul>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>Relevant Diff Snippets</h2>
|
|
<p>Rendered with <code>@pierre/diffs/ssr</code> from the working tree diff.</p>
|
|
<div class="diffs">
|
|
<svg data-icon-sprite aria-hidden="true" width="0" height="0">
|
|
<symbol id="diffs-icon-arrow-right-short" viewBox="0 0 16 16">
|
|
<path d="M8.47 4.22a.75.75 0 0 0 0 1.06l1.97 1.97H3.75a.75.75 0 0 0 0 1.5h6.69l-1.97 1.97a.75.75 0 1 0 1.06 1.06l3.25-3.25a.75.75 0 0 0 0-1.06L9.53 4.22a.75.75 0 0 0-1.06 0"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-brand-github" viewBox="0 0 16 16">
|
|
<path d="M8 0c4.42 0 8 3.58 8 8a8.01 8.01 0 0 1-5.45 7.59c-.4.08-.55-.17-.55-.38 0-.27.01-1.13.01-2.2 0-.75-.25-1.23-.54-1.48 1.78-.2 3.65-.88 3.65-3.95 0-.88-.31-1.59-.82-2.15.08-.2.36-1.02-.08-2.12 0 0-.67-.22-2.2.82-.64-.18-1.32-.27-2-.27s-1.36.09-2 .27c-1.53-1.03-2.2-.82-2.2-.82-.44 1.1-.16 1.92-.08 2.12-.51.56-.82 1.28-.82 2.15 0 3.06 1.86 3.75 3.64 3.95-.23.2-.44.55-.51 1.07-.46.21-1.61.55-2.33-.66-.15-.24-.6-.83-1.23-.82-.67.01-.27.38.01.53.34.19.73.9.82 1.13.16.45.68 1.31 2.69.94 0 .67.01 1.3.01 1.49 0 .21-.15.45-.55.38A7.995 7.995 0 0 1 0 8c0-4.42 3.58-8 8-8"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-chevron" viewBox="0 0 16 16">
|
|
<path d="M1.47 4.47a.75.75 0 0 1 1.06 0L8 9.94l5.47-5.47a.75.75 0 1 1 1.06 1.06l-6 6a.75.75 0 0 1-1.06 0l-6-6a.75.75 0 0 1 0-1.06"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-chevrons-narrow" viewBox="0 0 10 16">
|
|
<path d="M4.47 2.22a.75.75 0 0 1 1.06 0l3.25 3.25a.75.75 0 0 1-1.06 1.06L5 3.81 2.28 6.53a.75.75 0 0 1-1.06-1.06zM1.22 9.47a.75.75 0 0 1 1.06 0L5 12.19l2.72-2.72a.75.75 0 0 1 1.06 1.06l-3.25 3.25a.75.75 0 0 1-1.06 0l-3.25-3.25a.75.75 0 0 1 0-1.06"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-diff-split" viewBox="0 0 16 16">
|
|
<path d="M14 0H8.5v16H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2m-1.5 6.5v1h1a.5.5 0 0 1 0 1h-1v1a.5.5 0 0 1-1 0v-1h-1a.5.5 0 0 1 0-1h1v-1a.5.5 0 0 1 1 0"/><path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h5.5V0zm.5 7.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1 0-1" opacity=".3"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-diff-unified" viewBox="0 0 16 16">
|
|
<path fill-rule="evenodd" d="M16 14a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V8.5h16zm-8-4a.5.5 0 0 0-.5.5v1h-1a.5.5 0 0 0 0 1h1v1a.5.5 0 0 0 1 0v-1h1a.5.5 0 0 0 0-1h-1v-1A.5.5 0 0 0 8 10" clip-rule="evenodd"/><path fill-rule="evenodd" d="M14 0a2 2 0 0 1 2 2v5.5H0V2a2 2 0 0 1 2-2zM6.5 3.5a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1z" clip-rule="evenodd" opacity=".4"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-expand" viewBox="0 0 16 16">
|
|
<path d="M3.47 5.47a.75.75 0 0 1 1.06 0L8 8.94l3.47-3.47a.75.75 0 1 1 1.06 1.06l-4 4a.75.75 0 0 1-1.06 0l-4-4a.75.75 0 0 1 0-1.06"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-expand-all" viewBox="0 0 16 16">
|
|
<path d="M11.47 9.47a.75.75 0 1 1 1.06 1.06l-4 4a.75.75 0 0 1-1.06 0l-4-4a.75.75 0 1 1 1.06-1.06L8 12.94zM7.526 1.418a.75.75 0 0 1 1.004.052l4 4a.75.75 0 1 1-1.06 1.06L8 3.06 4.53 6.53a.75.75 0 1 1-1.06-1.06l4-4z"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-file-code" viewBox="0 0 16 16">
|
|
<path d="M10.75 0c.199 0 .39.08.53.22l3.5 3.5c.14.14.22.331.22.53v9A2.75 2.75 0 0 1 12.25 16h-8.5A2.75 2.75 0 0 1 1 13.25V2.75A2.75 2.75 0 0 1 3.75 0zm-7 1.5c-.69 0-1.25.56-1.25 1.25v10.5c0 .69.56 1.25 1.25 1.25h8.5c.69 0 1.25-.56 1.25-1.25V5h-1.25A2.25 2.25 0 0 1 10 2.75V1.5z"/><path d="M7.248 6.19a.75.75 0 0 1 .063 1.058L5.753 9l1.558 1.752a.75.75 0 0 1-1.122.996l-2-2.25a.75.75 0 0 1 0-.996l2-2.25a.75.75 0 0 1 1.06-.063M8.69 7.248a.75.75 0 1 1 1.12-.996l2 2.25a.75.75 0 0 1 0 .996l-2 2.25a.75.75 0 1 1-1.12-.996L10.245 9z"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-plus" viewBox="0 0 16 16">
|
|
<path d="M8 3a.75.75 0 0 1 .75.75v3.5h3.5a.75.75 0 0 1 0 1.5h-3.5v3.5a.75.75 0 0 1-1.5 0v-3.5h-3.5a.75.75 0 0 1 0-1.5h3.5v-3.5A.75.75 0 0 1 8 3"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-symbol-added" viewBox="0 0 16 16">
|
|
<path d="M8 4a.75.75 0 0 1 .75.75v2.5h2.5a.75.75 0 0 1 0 1.5h-2.5v2.5a.75.75 0 0 1-1.5 0v-2.5h-2.5a.75.75 0 0 1 0-1.5h2.5v-2.5A.75.75 0 0 1 8 4"/><path d="M1.788 4.296c.196-.88.478-1.381.802-1.706s.826-.606 1.706-.802C5.194 1.588 6.387 1.5 8 1.5s2.806.088 3.704.288c.88.196 1.381.478 1.706.802s.607.826.802 1.706c.2.898.288 2.091.288 3.704s-.088 2.806-.288 3.704c-.195.88-.478 1.381-.802 1.706s-.826.607-1.706.802c-.898.2-2.091.288-3.704.288s-2.806-.088-3.704-.288c-.88-.195-1.381-.478-1.706-.802s-.606-.826-.802-1.706C1.588 10.806 1.5 9.613 1.5 8s.088-2.806.288-3.704M8 0C1.412 0 0 1.412 0 8s1.412 8 8 8 8-1.412 8-8-1.412-8-8-8"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-symbol-deleted" viewBox="0 0 16 16">
|
|
<path d="M4 8a.75.75 0 0 1 .75-.75h6.5a.75.75 0 0 1 0 1.5h-6.5A.75.75 0 0 1 4 8"/><path d="M1.788 4.296c.196-.88.478-1.381.802-1.706s.826-.606 1.706-.802C5.194 1.588 6.387 1.5 8 1.5s2.806.088 3.704.288c.88.196 1.381.478 1.706.802s.607.826.802 1.706c.2.898.288 2.091.288 3.704s-.088 2.806-.288 3.704c-.195.88-.478 1.381-.802 1.706s-.826.607-1.706.802c-.898.2-2.091.288-3.704.288s-2.806-.088-3.704-.288c-.88-.195-1.381-.478-1.706-.802s-.606-.826-.802-1.706C1.588 10.806 1.5 9.613 1.5 8s.088-2.806.288-3.704M8 0C1.412 0 0 1.412 0 8s1.412 8 8 8 8-1.412 8-8-1.412-8-8-8"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-symbol-diffstat" viewBox="0 0 16 16">
|
|
<path d="M1.788 4.296c.196-.88.478-1.381.802-1.706s.826-.606 1.706-.802C5.194 1.588 6.387 1.5 8 1.5s2.806.088 3.704.288c.88.196 1.381.478 1.706.802s.607.826.802 1.706c.2.898.288 2.091.288 3.704s-.088 2.806-.288 3.704c-.195.88-.478 1.381-.802 1.706s-.826.607-1.706.802c-.898.2-2.091.288-3.704.288s-2.806-.088-3.704-.288c-.88-.195-1.381-.478-1.706-.802s-.606-.826-.802-1.706C1.588 10.806 1.5 9.613 1.5 8s.088-2.806.288-3.704M8 0C1.412 0 0 1.412 0 8s1.412 8 8 8 8-1.412 8-8-1.412-8-8-8"/><path d="M8.75 4.296a.75.75 0 0 0-1.5 0V6.25h-2a.75.75 0 0 0 0 1.5h2v1.5h1.5v-1.5h2a.75.75 0 0 0 0-1.5h-2zM5.25 10a.75.75 0 0 0 0 1.5h5.5a.75.75 0 0 0 0-1.5z"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-symbol-ignored" viewBox="0 0 16 16">
|
|
<path d="M1.5 8c0 1.613.088 2.806.288 3.704.196.88.478 1.381.802 1.706s.826.607 1.706.802c.898.2 2.091.288 3.704.288s2.806-.088 3.704-.288c.88-.195 1.381-.478 1.706-.802s.607-.826.802-1.706c.2-.898.288-2.091.288-3.704s-.088-2.806-.288-3.704c-.195-.88-.478-1.381-.802-1.706s-.826-.606-1.706-.802C10.806 1.588 9.613 1.5 8 1.5s-2.806.088-3.704.288c-.88.196-1.381.478-1.706.802s-.606.826-.802 1.706C1.588 5.194 1.5 6.387 1.5 8M0 8c0-6.588 1.412-8 8-8s8 1.412 8 8-1.412 8-8 8-8-1.412-8-8m11.53-2.47a.75.75 0 0 0-1.06-1.06l-6 6a.75.75 0 1 0 1.06 1.06z"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-symbol-modified" viewBox="0 0 16 16">
|
|
<path d="M1.5 8c0 1.613.088 2.806.288 3.704.196.88.478 1.381.802 1.706s.826.607 1.706.802c.898.2 2.091.288 3.704.288s2.806-.088 3.704-.288c.88-.195 1.381-.478 1.706-.802s.607-.826.802-1.706c.2-.898.288-2.091.288-3.704s-.088-2.806-.288-3.704c-.195-.88-.478-1.381-.802-1.706s-.826-.606-1.706-.802C10.806 1.588 9.613 1.5 8 1.5s-2.806.088-3.704.288c-.88.196-1.381.478-1.706.802s-.606.826-.802 1.706C1.588 5.194 1.5 6.387 1.5 8M0 8c0-6.588 1.412-8 8-8s8 1.412 8 8-1.412 8-8 8-8-1.412-8-8m8 3a3 3 0 1 0 0-6 3 3 0 0 0 0 6"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-symbol-moved" viewBox="0 0 16 16">
|
|
<path d="M1.788 4.296c.196-.88.478-1.381.802-1.706s.826-.606 1.706-.802C5.194 1.588 6.387 1.5 8 1.5s2.806.088 3.704.288c.88.196 1.381.478 1.706.802s.607.826.802 1.706c.2.898.288 2.091.288 3.704s-.088 2.806-.288 3.704c-.195.88-.478 1.381-.802 1.706s-.826.607-1.706.802c-.898.2-2.091.288-3.704.288s-2.806-.088-3.704-.288c-.88-.195-1.381-.478-1.706-.802s-.606-.826-.802-1.706C1.588 10.806 1.5 9.613 1.5 8s.088-2.806.288-3.704M8 0C1.412 0 0 1.412 0 8s1.412 8 8 8 8-1.412 8-8-1.412-8-8-8"/><path d="M8.495 4.695a.75.75 0 0 0-.05 1.06L10.486 8l-2.041 2.246a.75.75 0 0 0 1.11 1.008l2.5-2.75a.75.75 0 0 0 0-1.008l-2.5-2.75a.75.75 0 0 0-1.06-.051m-4 0a.75.75 0 0 0-.05 1.06l2.044 2.248-1.796 1.995a.75.75 0 0 0 1.114 1.004l2.25-2.5a.75.75 0 0 0-.002-1.007l-2.5-2.75a.75.75 0 0 0-1.06-.05"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-symbol-ref" viewBox="0 0 16 16">
|
|
<path d="M1.5 8c0 1.613.088 2.806.288 3.704.196.88.478 1.381.802 1.706.286.286.71.54 1.41.73V1.86c-.7.19-1.124.444-1.41.73-.324.325-.606.826-.802 1.706C1.588 5.194 1.5 6.387 1.5 8m4 6.397c.697.07 1.522.103 2.5.103 1.613 0 2.806-.088 3.704-.288.88-.195 1.381-.478 1.706-.802s.607-.826.802-1.706c.2-.898.288-2.091.288-3.704s-.088-2.806-.288-3.704c-.195-.88-.478-1.381-.802-1.706s-.826-.606-1.706-.802C10.806 1.588 9.613 1.5 8 1.5c-.978 0-1.803.033-2.5.103zM0 8c0-6.588 1.412-8 8-8s8 1.412 8 8-1.412 8-8 8-8-1.412-8-8m7-2a1 1 0 0 1 1-1h3a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1z"/>
|
|
</symbol>
|
|
</svg><style data-core-css="">@layer base, theme, rendered, unsafe;
|
|
@layer base,theme,rendered,unsafe;@layer base{:host{--diffs-font-fallback:"SF Mono", Monaco, Consolas, "Ubuntu Mono", "Liberation Mono", "Courier New", monospace;--diffs-header-font-fallback:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif;--diffs-mixer:light-dark(#000,#fff);--diffs-gap-fallback:8px;--diffs-scrollbar-gutter-fallback:6px;--diffs-scrollbar-gutter:var(--diffs-scrollbar-gutter-override,var(--diffs-scrollbar-gutter-measured,var(--diffs-scrollbar-gutter-fallback)));--diffs-added-light:#0dbe4e;--diffs-added-dark:#5ecc71;--diffs-modified-light:#009fff;--diffs-modified-dark:#69b1ff;--diffs-deleted-light:#ff2e3f;--diffs-deleted-dark:#ff6762;color-scheme:light dark;font-family:var(--diffs-header-font-family,var(--diffs-header-font-fallback));font-size:var(--diffs-font-size,13px);line-height:var(--diffs-line-height,20px);font-feature-settings:var(--diffs-font-features);--diffs-bg:light-dark(var(--diffs-light-bg,#fff),var(--diffs-dark-bg,#000));--diffs-bg-buffer:var(--diffs-bg-buffer-override,light-dark(color-mix(in lab, var(--diffs-bg) 92%, var(--diffs-mixer)),color-mix(in lab, var(--diffs-bg) 92%, var(--diffs-mixer))));--diffs-bg-context:var(--diffs-bg-context-override,light-dark(color-mix(in lab, var(--diffs-bg) 98.5%, var(--diffs-mixer)),color-mix(in lab, var(--diffs-bg) 92.5%, var(--diffs-mixer))));--diffs-bg-context-gutter:var(--diffs-bg-context-gutter-override,light-dark(color-mix(in lab, var(--diffs-bg-context) 90%, var(--diffs-bg)),color-mix(in lab, var(--diffs-bg-context) 45%, var(--diffs-bg))));--diffs-bg-separator:var(--diffs-bg-separator-override,light-dark(color-mix(in lab, var(--diffs-bg) 96%, var(--diffs-mixer)),color-mix(in lab, var(--diffs-bg) 85%, var(--diffs-mixer))));--diffs-fg:light-dark(var(--diffs-light,#000),var(--diffs-dark,#fff));--diffs-fg-number:var(--diffs-fg-number-override,light-dark(color-mix(in lab, var(--diffs-fg) 65%, var(--diffs-bg)),color-mix(in lab, var(--diffs-fg) 65%, var(--diffs-bg))));--diffs-fg-conflict-marker:var(--diffs-fg-conflict-marker-override,var(--diffs-fg-number));--diffs-deletion-base:var(--diffs-deletion-color-override,light-dark(var(--diffs-light-deletion-color,var(--diffs-deletion-color,var(--diffs-deleted-light))),var(--diffs-dark-deletion-color,var(--diffs-deletion-color,var(--diffs-deleted-dark)))));--diffs-addition-base:var(--diffs-addition-color-override,light-dark(var(--diffs-light-addition-color,var(--diffs-addition-color,var(--diffs-added-light))),var(--diffs-dark-addition-color,var(--diffs-addition-color,var(--diffs-added-dark)))));--diffs-modified-base:var(--diffs-modified-color-override,light-dark(var(--diffs-light-modified-color,var(--diffs-modified-color,var(--diffs-modified-light))),var(--diffs-dark-modified-color,var(--diffs-modified-color,var(--diffs-modified-dark)))));--diffs-bg-deletion:var(--diffs-bg-deletion-override,light-dark(color-mix(in lab, var(--diffs-bg) 88%, var(--diffs-deletion-base)),color-mix(in lab, var(--diffs-bg) 80%, var(--diffs-deletion-base))));--diffs-bg-deletion-emphasis:var(--diffs-bg-deletion-emphasis-override,light-dark(rgb(from var(--diffs-deletion-base) r g b / .15),rgb(from var(--diffs-deletion-base) r g b / .2)));--diffs-bg-addition:var(--diffs-bg-addition-override,light-dark(color-mix(in lab, var(--diffs-bg) 88%, var(--diffs-addition-base)),color-mix(in lab, var(--diffs-bg) 80%, var(--diffs-addition-base))));--diffs-bg-addition-emphasis:var(--diffs-bg-addition-emphasis-override,light-dark(rgb(from var(--diffs-addition-base) r g b / .15),rgb(from var(--diffs-addition-base) r g b / .2)));--diffs-selection-base:var(--diffs-modified-base);--diffs-selection-number-fg:light-dark(color-mix(in lab, var(--diffs-selection-base) 65%, var(--diffs-mixer)),color-mix(in lab, var(--diffs-selection-base) 75%, var(--diffs-mixer)));background-color:var(--diffs-bg);color:var(--diffs-fg);display:block}pre,code,[data-error-wrapper]{isolation:isolate;font-family:var(--diffs-font-family,var(--diffs-font-fallback));outline:none;margin:0;padding:0;display:block}pre,code{background-color:var(--diffs-bg)}code{contain:content}*,:before,:after{box-sizing:border-box}[data-icon-sprite]{display:none}[data-diffs-header],[data-separator]{font-family:var(--diffs-header-font-family,var(--diffs-header-font-fallback))}[data-diffs-header][data-sticky]{z-index:1;background-color:var(--diffs-bg);position:sticky;top:0}[data-file-info]{color:var(--fg);background-color:color-mix(in lab, var(--bg) 98%, var(--fg));border-block:1px solid color-mix(in lab, var(--bg) 95%, var(--fg));padding:10px;font-weight:700}[data-diff],[data-file]{--diffs-grid-number-column-width:minmax(min-content, max-content);--diffs-code-grid:var(--diffs-grid-number-column-width) 1fr}[data-dehydrated]:is([data-diff],[data-file]){--diffs-code-grid:var(--diffs-grid-number-column-width) minmax(0, 1fr)}:is([data-diff],[data-file]):hover [data-code]::-webkit-scrollbar-thumb{background-color:var(--diffs-bg-context)}@supports (-webkit-touch-callout:none){:host{--diffs-scrollbar-gutter-fallback:0px}}[data-line] span{color:light-dark(var(--diffs-token-light,var(--diffs-light)),var(--diffs-token-dark,var(--diffs-dark)));background-color:light-dark(var(--diffs-token-light-bg,inherit),var(--diffs-token-dark-bg,inherit));font-weight:light-dark(var(--diffs-token-light-font-weight,inherit),var(--diffs-token-dark-font-weight,inherit));font-style:light-dark(var(--diffs-token-light-font-style,inherit),var(--diffs-token-dark-font-style,inherit));-webkit-text-decoration:light-dark(var(--diffs-token-light-text-decoration,inherit),var(--diffs-token-dark-text-decoration,inherit));text-decoration:light-dark(var(--diffs-token-light-text-decoration,inherit),var(--diffs-token-dark-text-decoration,inherit))}[data-line],[data-gutter-buffer],[data-column-number],[data-line-annotation],[data-no-newline],[data-merge-conflict],[data-merge-conflict-actions]{--diffs-computed-decoration-bg:var(--diffs-bg);--diffs-computed-diff-line-bg:var(--diffs-bg);--diffs-computed-selected-line-bg:var(--diffs-bg);color:var(--diffs-fg);background-color:var(--diffs-line-bg,var(--diffs-bg))}@media (pointer:fine){:is([data-line],[data-gutter-buffer],[data-column-number],[data-line-annotation],[data-no-newline],[data-merge-conflict],[data-merge-conflict-actions]):where([data-hovered]){--diffs-computed-hovered-line-bg:light-dark(color-mix(in lab, var(--diffs-computed-selected-line-bg) 97%, var(--diffs-bg-hover-override,var(--diffs-mixer))),color-mix(in lab, var(--diffs-computed-selected-line-bg) 91%, var(--diffs-bg-hover-override,var(--diffs-mixer))));--diffs-line-bg:var(--diffs-computed-hovered-line-bg,inherit)}}[data-decoration-bg]:is([data-line],[data-no-newline]){--mix-deco-light:92%;--mix-deco-dark:85%}[data-decoration-bg][data-decoration-bg-depth="2"]:is([data-line],[data-no-newline]){--mix-deco-light:88%;--mix-deco-dark:80%}[data-decoration-bg][data-decoration-bg-depth="3"]:is([data-line],[data-no-newline]){--mix-deco-light:85%;--mix-deco-dark:78%}@media (pointer:fine){[data-decoration-bg][data-hovered]:is([data-line],[data-no-newline]):not([data-selected-line]){--mix-deco-light:85%;--mix-deco-dark:85%}[data-decoration-bg][data-hovered][data-decoration-bg-depth="2"]:is([data-line],[data-no-newline]):not([data-selected-line]){--mix-deco-light:83%;--mix-deco-dark:83%}[data-decoration-bg][data-hovered][data-decoration-bg-depth="3"]:is([data-line],[data-no-newline]):not([data-selected-line]){--mix-deco-light:81%;--mix-deco-dark:81%}}[data-decoration-bg]:is([data-line],[data-no-newline]){--diffs-computed-decoration-bg:light-dark(color-mix(in lab, var(--diffs-bg) var(--mix-deco-light), var(--diffs-decoration-bg)),color-mix(in lab, var(--diffs-bg) var(--mix-deco-dark), var(--diffs-decoration-bg)));--diffs-computed-diff-line-bg:var(--diffs-computed-decoration-bg);--diffs-computed-selected-line-bg:var(--diffs-computed-decoration-bg);--diffs-line-bg:var(--diffs-computed-decoration-bg)}[data-line-annotation],[data-gutter-buffer=annotation]{--diffs-annotation-bg:var(--diffs-bg-context);--diffs-computed-decoration-bg:var(--diffs-annotation-bg);--diffs-computed-diff-line-bg:var(--diffs-annotation-bg);--diffs-computed-selected-line-bg:var(--diffs-annotation-bg);--diffs-line-bg:var(--diffs-annotation-bg)}[data-merge-conflict-actions],[data-gutter-buffer=merge-conflict-action],[data-gutter-buffer=merge-conflict-marker-base],[data-gutter-buffer=merge-conflict-marker-separator],[data-merge-conflict=marker-base],[data-merge-conflict=marker-separator]{--diffs-computed-decoration-bg:var(--diffs-bg-context);--diffs-computed-diff-line-bg:var(--diffs-bg-context);--diffs-computed-selected-line-bg:var(--diffs-bg-context);--diffs-line-bg:var(--diffs-bg-context)}[data-gutter-buffer=merge-conflict-marker-start],[data-merge-conflict=marker-start]{--diffs-computed-decoration-bg:light-dark(color-mix(in lab, var(--diffs-bg) 78%, var(--conflict-bg-current-header-override,var(--diffs-addition-base))),color-mix(in lab, var(--diffs-bg) 68%, var(--conflict-bg-current-header-override,var(--diffs-addition-base))));--diffs-computed-diff-line-bg:var(--diffs-computed-decoration-bg);--diffs-computed-selected-line-bg:var(--diffs-computed-decoration-bg);--diffs-line-bg:var(--diffs-computed-decoration-bg)}[data-gutter-buffer=merge-conflict-marker-end],[data-merge-conflict=marker-end]{--diffs-computed-decoration-bg:light-dark(color-mix(in lab, var(--diffs-bg) 78%, var(--conflict-bg-incoming-header-override,var(--diffs-modified-base))),color-mix(in lab, var(--diffs-bg) 68%, var(--conflict-bg-incoming-header-override,var(--diffs-modified-base))));--diffs-computed-diff-line-bg:var(--diffs-computed-decoration-bg);--diffs-computed-selected-line-bg:var(--diffs-computed-decoration-bg);--diffs-line-bg:var(--diffs-computed-decoration-bg)}[data-has-merge-conflict] [data-line-annotation],[data-has-merge-conflict] [data-gutter-buffer=annotation]{--diffs-computed-decoration-bg:var(--diffs-bg);--diffs-computed-diff-line-bg:var(--diffs-bg);--diffs-computed-selected-line-bg:var(--diffs-bg);--diffs-line-bg:var(--diffs-bg)}:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number]{--mix-light:91%;--mix-dark:85%}:where([data-background]) [data-line],:where([data-background]) [data-no-newline]{--mix-light:88%;--mix-dark:80%}:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]{--diffs-diff-line-mix-target:var(--diffs-bg)}[data-line-type=change-deletion]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--diffs-diff-line-mix-target:var(--diffs-bg-deletion-override,var(--diffs-deletion-base))}@media (pointer:fine){[data-line-type=change-deletion][data-hovered]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--mix-light:80%;--mix-dark:75%}}[data-line-type=change-deletion]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]):where([data-gutter-buffer],[data-column-number]){color:var(--diffs-fg-number-deletion-override,var(--diffs-deletion-base));--diffs-diff-line-mix-target:var(--diffs-bg-deletion-number-override,var(--diffs-deletion-base))}[data-line-type=change-deletion]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--diffs-computed-diff-line-bg:light-dark(color-mix(in lab, var(--diffs-computed-decoration-bg) var(--mix-light), var(--diffs-diff-line-mix-target)),color-mix(in lab, var(--diffs-computed-decoration-bg) var(--mix-dark), var(--diffs-diff-line-mix-target)));--diffs-computed-selected-line-bg:var(--diffs-computed-diff-line-bg);--diffs-line-bg:var(--diffs-computed-diff-line-bg,inherit)}[data-line-type=change-addition]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--diffs-diff-line-mix-target:var(--diffs-bg-addition-override,var(--diffs-addition-base))}@media (pointer:fine){[data-line-type=change-addition][data-hovered]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--mix-light:80%;--mix-dark:70%}}[data-line-type=change-addition]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]):where([data-gutter-buffer],[data-column-number]){color:var(--diffs-fg-number-addition-override,var(--diffs-addition-base));--diffs-diff-line-mix-target:var(--diffs-bg-addition-number-override,var(--diffs-addition-base))}[data-line-type=change-addition]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--diffs-computed-diff-line-bg:light-dark(color-mix(in lab, var(--diffs-computed-decoration-bg) var(--mix-light), var(--diffs-diff-line-mix-target)),color-mix(in lab, var(--diffs-computed-decoration-bg) var(--mix-dark), var(--diffs-diff-line-mix-target)));--diffs-computed-selected-line-bg:var(--diffs-computed-diff-line-bg);--diffs-line-bg:var(--diffs-computed-diff-line-bg,inherit)}[data-merge-conflict=current]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--diffs-diff-line-mix-target:var(--conflict-bg-current-override,var(--diffs-addition-base))}[data-merge-conflict=current]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]):where([data-gutter-buffer],[data-column-number]){color:var(--diffs-fg-number-addition-override,var(--diffs-addition-base));--diffs-diff-line-mix-target:var(--conflict-bg-current-number-override,var(--diffs-addition-base))}@media (pointer:fine){[data-merge-conflict=current][data-hovered]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--mix-light:80%;--mix-dark:70%}}[data-merge-conflict=current]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--diffs-computed-diff-line-bg:light-dark(color-mix(in lab, var(--diffs-computed-decoration-bg) var(--mix-light), var(--diffs-diff-line-mix-target)),color-mix(in lab, var(--diffs-computed-decoration-bg) var(--mix-dark), var(--diffs-diff-line-mix-target)));--diffs-computed-selected-line-bg:var(--diffs-computed-diff-line-bg);--diffs-line-bg:var(--diffs-computed-diff-line-bg,inherit)}[data-merge-conflict=incoming]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--diffs-diff-line-mix-target:var(--conflict-bg-incoming-override,var(--diffs-modified-base))}[data-merge-conflict=incoming]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]):where([data-gutter-buffer],[data-column-number]){color:var(--diffs-modified-base);--diffs-diff-line-mix-target:var(--conflict-bg-incoming-number-override,var(--diffs-modified-base))}@media (pointer:fine){[data-merge-conflict=incoming][data-hovered]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--mix-light:80%;--mix-dark:70%}}[data-merge-conflict=incoming]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--diffs-computed-diff-line-bg:light-dark(color-mix(in lab, var(--diffs-computed-decoration-bg) var(--mix-light), var(--diffs-diff-line-mix-target)),color-mix(in lab, var(--diffs-computed-decoration-bg) var(--mix-dark), var(--diffs-diff-line-mix-target)));--diffs-computed-selected-line-bg:var(--diffs-computed-diff-line-bg);--diffs-line-bg:var(--diffs-computed-diff-line-bg,inherit)}[data-gutter-buffer],[data-column-number],[data-line],[data-line-annotation],[data-merge-conflict],[data-merge-conflict-actions],[data-no-newline]{--diffs-selection-mix-target:var(--diffs-bg-selection-override,var(--diffs-selection-base))}[data-selected-line]:is([data-gutter-buffer],[data-column-number],[data-line],[data-line-annotation],[data-merge-conflict],[data-merge-conflict-actions],[data-no-newline]):where([data-line],[data-line-annotation],[data-merge-conflict],[data-merge-conflict-actions],[data-no-newline]){--mix-selection-light:82%;--mix-selection-dark:75%}@media (pointer:fine){[data-selected-line][data-hovered]:is([data-gutter-buffer],[data-column-number],[data-line],[data-line-annotation],[data-merge-conflict],[data-merge-conflict-actions],[data-no-newline]):where([data-line],[data-line-annotation],[data-merge-conflict],[data-merge-conflict-actions],[data-no-newline]):not([data-merge-conflict],[data-line-type=change-addition],[data-line-type=change-deletion]){--mix-selection-light:75%;--mix-selection-dark:70%}}[data-selected-line]:is([data-gutter-buffer],[data-column-number],[data-line],[data-line-annotation],[data-merge-conflict],[data-merge-conflict-actions],[data-no-newline]):where([data-gutter-buffer],[data-column-number]){--mix-selection-light:75%;--mix-selection-dark:60%;--diffs-selection-mix-target:var(--diffs-bg-selection-number-override,var(--diffs-selection-base))}@media (pointer:fine){[data-selected-line][data-hovered]:is([data-gutter-buffer],[data-column-number],[data-line],[data-line-annotation],[data-merge-conflict],[data-merge-conflict-actions],[data-no-newline]):where([data-gutter-buffer],[data-column-number]):not([data-merge-conflict],[data-line-type=change-addition],[data-line-type=change-deletion]){--mix-selection-light:70%;--mix-selection-dark:55%}}[data-selected-line]:is([data-gutter-buffer],[data-column-number],[data-line],[data-line-annotation],[data-merge-conflict],[data-merge-conflict-actions],[data-no-newline]){--diffs-computed-selected-line-bg:light-dark(color-mix(in lab, var(--diffs-computed-diff-line-bg) var(--mix-selection-light), var(--diffs-selection-mix-target)),color-mix(in lab, var(--diffs-computed-diff-line-bg) var(--mix-selection-dark), var(--diffs-selection-mix-target)));--diffs-line-bg:var(--diffs-computed-selected-line-bg,inherit)}[data-selected-line]:is([data-gutter-buffer],[data-column-number]){color:var(--diffs-selection-number-fg)}[data-no-newline]{-webkit-user-select:none;user-select:none}[data-no-newline] span{opacity:.6}[data-diff-type=split][data-overflow=scroll]{grid-template-columns:1fr 1fr;display:grid}[data-diff-type=split][data-overflow=scroll] [data-additions]{border-left:1px solid var(--diffs-bg)}[data-diff-type=split][data-overflow=scroll] [data-deletions]{border-right:1px solid var(--diffs-bg)}[data-code]{grid-auto-flow:dense;grid-template-columns:var(--diffs-code-grid);overflow:var(--diffs-overflow-override,scroll) clip;overscroll-behavior-x:none;tab-size:var(--diffs-tab-size,2);padding-top:var(--diffs-gap-block,var(--diffs-gap-fallback));padding-bottom:max(0px, calc(var(--diffs-gap-block,var(--diffs-gap-fallback)) - var(--diffs-scrollbar-gutter)));scrollbar-gutter:stable;align-self:flex-start;display:grid}[data-diffs-scrollbar-measure]{opacity:0;pointer-events:none;scrollbar-gutter:auto;grid-template-columns:none;width:100px;height:100px;padding:0;position:absolute;top:-200px;left:-200px}[data-container-size]{container-type:inline-size}[data-code]::-webkit-scrollbar{width:0;height:var(--diffs-scrollbar-gutter)}[data-code]::-webkit-scrollbar-track{background:0 0}[data-code]::-webkit-scrollbar-thumb{background-color:#0000;background-clip:content-box;border:1px solid #0000;border-radius:3px}[data-code]::-webkit-scrollbar-corner{background-color:#0000}@supports ((-moz-appearance:none)){[data-code]{scrollbar-width:thin;scrollbar-color:var(--diffs-bg-context) transparent;padding-bottom:var(--diffs-gap-block,var(--diffs-gap-fallback))}}:is([data-diffs-header]~[data-diff],[data-diffs-header]~[data-file]) [data-code],[data-overflow=wrap]:is([data-diffs-header]~[data-diff],[data-diffs-header]~[data-file]){padding-top:0}[data-gutter]{grid-template-rows:subgrid;grid-template-columns:subgrid;z-index:3;background-color:var(--diffs-bg);grid-column:1;display:grid;position:relative}[data-gutter] [data-gutter-buffer],[data-gutter] [data-column-number]{border-right:var(--diffs-gap-style,2px solid var(--diffs-bg))}[data-content]{grid-template-rows:subgrid;grid-template-columns:subgrid;background-color:var(--diffs-bg);grid-column:2;min-width:0;display:grid}[data-diff-type=split][data-overflow=wrap]{grid-auto-flow:dense;grid-template-columns:repeat(2, var(--diffs-code-grid));padding-block:var(--diffs-gap-block,var(--diffs-gap-fallback));display:grid}[data-diff-type=split][data-overflow=wrap] [data-deletions]{display:contents}:is([data-diff-type=split][data-overflow=wrap] [data-deletions]) [data-gutter]{grid-column:1}:is([data-diff-type=split][data-overflow=wrap] [data-deletions]) [data-content]{border-right:1px solid var(--diffs-bg);grid-column:2}[data-diff-type=split][data-overflow=wrap] [data-additions]{display:contents}:is([data-diff-type=split][data-overflow=wrap] [data-additions]) [data-gutter]{border-left:1px solid var(--diffs-bg);grid-column:3}:is([data-diff-type=split][data-overflow=wrap] [data-additions]) [data-content]{grid-column:4}[data-overflow=scroll] [data-gutter]{position:sticky;left:0}[data-interactive-lines] [data-line]{cursor:pointer}[data-interactive-line-numbers] [data-column-number]{cursor:pointer;touch-action:none}[data-content-buffer],[data-gutter-buffer]{-webkit-user-select:none;user-select:none;min-height:1lh;position:relative}[data-gutter-buffer]{padding-left:2ch;padding-right:1ch}[data-gutter-buffer]:before{content:"";min-width:var(--diffs-min-number-column-width,var(--diffs-min-number-column-width-default,3ch));display:block}[data-gutter-buffer=annotation]{--diffs-annotation-bg:var(--diffs-bg-context-gutter);min-height:0}[data-gutter-buffer=buffer]{--diffs-line-bg:var(--diffs-bg-context-gutter)}[data-content-buffer]{background-position:5px 0;background-size:8px 8px;background-origin:border-box;background-image:repeating-linear-gradient(-45deg, transparent, transparent 4.242px, var(--diffs-bg-buffer) 4.242px, var(--diffs-bg-buffer) 5.656px);grid-column:1}[data-separator]{box-sizing:content-box;background-color:var(--diffs-bg)}[data-separator=simple]{min-height:4px}[data-separator=line-info],[data-separator=line-info-basic],[data-separator=metadata],[data-separator=simple]{background-color:var(--diffs-bg-separator)}[data-separator=line-info],[data-separator=line-info-basic],[data-separator=metadata]{height:32px;position:relative}[data-separator-wrapper]{-webkit-user-select:none;user-select:none;fill:currentColor;background-color:var(--diffs-bg);align-items:center;height:100%;display:flex;position:absolute;inset-inline:0}[data-content] [data-separator-wrapper]{display:none}[data-separator=metadata] [data-separator-wrapper]{background-color:var(--diffs-bg-separator);height:100%;color:var(--diffs-fg-number);white-space:nowrap;text-overflow:ellipsis;min-width:min-content;padding-inline:1ch;inset-inline:100% auto;overflow:hidden}[data-separator=line-info]{margin-block:var(--diffs-gap-block,var(--diffs-gap-fallback))}[data-separator=line-info] [data-separator-wrapper]{min-width:16px}[data-separator=line-info-basic],[data-separator=metadata]{margin-block:0}[data-separator=line-info][data-separator-first]{margin-top:0}[data-separator=line-info][data-separator-last]{margin-bottom:0}[data-expand-index] [data-separator-wrapper]{grid-template-columns:32px auto;display:grid}[data-expand-index] [data-separator-wrapper][data-separator-multi-button]{grid-template-columns:32px 32px auto}[data-expand-button],[data-separator-content]{background-color:var(--diffs-bg-separator);flex:none;align-items:center;display:flex}[data-expand-index] [data-separator-content]:hover{cursor:pointer;text-decoration:underline}[data-expand-button]{cursor:pointer;min-width:32px;color:var(--diffs-fg-number);border-right:2px solid var(--diffs-bg);flex-shrink:0;justify-content:center;align-self:stretch}[data-expand-button]:hover{color:var(--diffs-fg)}[data-expand-button][data-expand-all-button]{display:none}[data-expand-down] [data-icon]{transform:scaleY(-1)}[data-separator-content]{height:100%;color:var(--diffs-fg-number);flex:auto;justify-content:flex-start;padding:0 1ch;overflow:hidden}:is([data-separator=line-info],[data-separator=line-info-basic]) [data-separator-content]{-webkit-user-select:none;user-select:none;height:100%;overflow:clip}[data-unmodified-lines]{text-overflow:ellipsis;white-space:nowrap;flex:0 auto;min-width:0;display:block;overflow:hidden}@supports (width:1cqi){[data-unified] [data-separator=line-info] [data-separator-wrapper]{padding-inline:var(--diffs-gap-inline,var(--diffs-gap-fallback));width:100cqi}:is([data-unified] [data-separator=line-info] [data-separator-wrapper]) [data-separator-content]{border-radius:6px}[data-unified] [data-separator=line-info][data-expand-index] [data-separator-wrapper] [data-separator-content]{border-top-left-radius:unset;border-bottom-left-radius:unset}[data-gutter] [data-separator=line-info] [data-separator-wrapper]{padding-left:var(--diffs-gap-inline,var(--diffs-gap-fallback))}[data-gutter] [data-separator=line-info] [data-separator-content]{border-top-left-radius:6px;border-bottom-left-radius:6px}[data-gutter] [data-separator=line-info][data-expand-index] [data-separator-content]{border-top-left-radius:unset;border-bottom-left-radius:unset}[data-additions] [data-content] [data-separator=line-info]{background-color:var(--diffs-bg)}:is([data-additions] [data-content] [data-separator=line-info]) [data-separator-wrapper]{display:none}[data-additions] [data-gutter] [data-separator=line-info] [data-separator-wrapper]{background-color:var(--diffs-bg-separator);border-top-right-radius:6px;border-bottom-right-radius:6px;height:100%;display:block}:is([data-additions] [data-gutter] [data-separator=line-info] [data-separator-wrapper]) [data-separator-content],:is([data-additions] [data-gutter] [data-separator=line-info] [data-separator-wrapper]) [data-expand-button]{display:none}[data-overflow=scroll] [data-additions] [data-gutter] [data-separator=line-info] [data-separator-wrapper]{width:calc(100cqi - var(--diffs-gap-inline,var(--diffs-gap-fallback)))}[data-overflow=wrap] [data-additions] [data-content] [data-separator=line-info] [data-separator-wrapper]{background-color:var(--diffs-bg-separator);height:100%;margin-right:var(--diffs-gap-inline,var(--diffs-gap-fallback));border-top-right-radius:6px;border-bottom-right-radius:6px;display:block}:is([data-overflow=wrap] [data-additions] [data-content] [data-separator=line-info] [data-separator-wrapper]) [data-separator-content],:is([data-overflow=wrap] [data-additions] [data-content] [data-separator=line-info] [data-separator-wrapper]) [data-expand-button]{display:none}:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-both],:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-down],:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-up]{border-top-left-radius:6px;border-bottom-left-radius:6px}@media (pointer:fine){[data-separator-multi-button]:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-up]{border-top-left-radius:6px;border-bottom-left-radius:unset}[data-separator-multi-button]:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-down]{border-bottom-left-radius:6px;border-top-left-radius:unset}}}@media (pointer:coarse){[data-separator=line-info-basic] [data-separator-wrapper][data-separator-multi-button]{grid-template-columns:34px 34px auto}:is([data-separator=line-info-basic] [data-separator-wrapper][data-separator-multi-button]) [data-separator-content]{grid-column:unset;grid-row:unset}@supports (width:1cqi){:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-both],:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-down],:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-up],[data-separator-multi-button]:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-up]{border-top-left-radius:6px;border-bottom-left-radius:6px}[data-separator-multi-button]:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-down]{border-bottom-left-radius:unset;border-top-left-radius:unset}}}@media (pointer:fine){[data-separator-wrapper][data-separator-multi-button]{grid-template-rows:50% 50%;display:grid}[data-separator-wrapper][data-separator-multi-button] [data-separator-content]{grid-area:1/2/-1;min-width:min-content}[data-separator-wrapper][data-separator-multi-button] [data-expand-button]{grid-column:1}[data-separator=line-info] [data-separator-wrapper],[data-separator=line-info] [data-separator-wrapper][data-separator-multi-button]{grid-template-columns:34px auto}[data-separator=line-info-basic][data-expand-index] [data-separator-wrapper]{grid-template-columns:100% auto}:is(:is([data-separator=line-info],[data-separator=line-info-basic]) [data-separator-multi-button]) [data-expand-up]{border-bottom:1px solid var(--diffs-bg);border-right:2px solid var(--diffs-bg)}:is(:is([data-separator=line-info],[data-separator=line-info-basic]) [data-separator-multi-button]) [data-expand-down]{border-top:1px solid var(--diffs-bg);border-right:2px solid var(--diffs-bg)}}[data-additions] [data-gutter] [data-separator-wrapper],[data-additions] [data-separator=line-info-basic] [data-separator-wrapper],[data-content] [data-separator-wrapper]{display:none}[data-line-annotation]{min-height:var(--diffs-annotation-min-height,0);z-index:2}[data-merge-conflict-actions]{z-index:2}[data-separator=custom]{grid-template-columns:subgrid;display:grid}[data-line],[data-column-number],[data-no-newline]{padding-inline:1ch;position:relative}[data-indicators=classic] [data-line]{padding-inline-start:2ch}:is([data-no-newline]:is([data-indicators=classic] [data-line-type=change-addition],[data-indicators=classic] [data-line-type=change-deletion]),[data-line]:is([data-indicators=classic] [data-line-type=change-addition],[data-indicators=classic] [data-line-type=change-deletion])):before{-webkit-user-select:none;user-select:none;width:1ch;height:1lh;display:inline-block;position:absolute;top:0;left:0}:is([data-line]:is([data-indicators=classic] [data-line-type=change-addition]),[data-no-newline]:is([data-indicators=classic] [data-line-type=change-addition])):before{content:"+";color:var(--diffs-addition-base)}:is([data-line]:is([data-indicators=classic] [data-line-type=change-deletion]),[data-no-newline]:is([data-indicators=classic] [data-line-type=change-deletion])):before{content:"-";color:var(--diffs-deletion-base)}[data-column-number]:is([data-indicators=bars] [data-line-type=change-deletion],[data-indicators=bars] [data-line-type=change-addition]):before{content:"";-webkit-user-select:none;user-select:none;contain:strict;width:4px;height:100%;display:block;position:absolute;top:0;left:0}[data-column-number]:is([data-indicators=bars] [data-line-type=change-deletion]):before{background-image:linear-gradient(0deg, var(--diffs-bg-deletion) 50%, var(--diffs-deletion-base) 50%);background-repeat:repeat;background-size:2px 2px;background-size:calc(1lh/round(1lh / 2px)) calc(1lh/round(1lh / 2px))}[data-column-number]:is([data-indicators=bars] [data-line-type=change-addition]):before{background-color:var(--diffs-addition-base)}[data-overflow=wrap] [data-line],[data-overflow=wrap] [data-annotation-content]{white-space:pre-wrap;word-break:break-word}[data-overflow=scroll] [data-line]{white-space:pre;min-height:1lh}[data-column-number]{box-sizing:content-box;text-align:right;-webkit-user-select:none;user-select:none;color:var(--diffs-fg-number);padding-left:2ch}[data-line-number-content]{min-width:var(--diffs-min-number-column-width,var(--diffs-min-number-column-width-default,3ch));z-index:1;display:inline-block;position:relative}[data-disable-line-numbers] [data-gutter-buffer],[data-disable-line-numbers] [data-column-number]{min-width:4px;padding:0}:is([data-disable-line-numbers] [data-gutter-buffer],[data-disable-line-numbers] [data-column-number]):before{min-width:0}[data-disable-line-numbers] [data-line-number-content]{display:none}[data-disable-line-numbers] [data-gutter-utility-slot]{right:unset;justify-content:flex-start;left:0}[data-disable-line-numbers][data-indicators=bars] [data-gutter-utility-slot]{left:6px}[data-file][data-disable-line-numbers] [data-gutter-buffer],[data-file][data-disable-line-numbers] [data-column-number]{border-right:0;min-width:0}[data-diff-span]{-webkit-box-decoration-break:clone;box-decoration-break:clone;border-radius:3px}[data-line-type=change-addition] [data-diff-span]{background-color:var(--diffs-bg-addition-emphasis)}[data-line-type=change-deletion] [data-diff-span]{background-color:var(--diffs-bg-deletion-emphasis)}[data-merge-conflict=marker-start],[data-merge-conflict=marker-base],[data-merge-conflict=marker-separator],[data-merge-conflict=marker-end]{color:var(--diffs-fg);padding-left:1ch}[data-merge-conflict=marker-start],[data-merge-conflict=marker-end]{align-items:center;display:flex}:is([data-merge-conflict=marker-start],[data-merge-conflict=marker-end]):after{color:var(--diffs-fg-conflict-marker);font-size:.75rem;font-style:normal;line-height:1.25rem;font-family:var(--diffs-header-font-family,var(--diffs-header-font-fallback));padding-left:1ch}[data-merge-conflict=marker-start]:after{content:"(Current Change)"}[data-merge-conflict=marker-end]:after{content:"(Incoming Change)"}[data-merge-conflict-actions-content]{min-height:1.75rem;font-family:var(--diffs-header-font-family,var(--diffs-header-font-fallback));color:var(--diffs-fg);align-items:center;gap:.25rem;padding-inline:.5rem;font-size:.75rem;line-height:1.2;display:flex}[data-merge-conflict-action]{appearance:none;color:var(--diffs-fg-number);font:inherit;cursor:pointer;background:0 0;border:0;padding:0;font-style:normal}[data-merge-conflict-action]:hover{color:var(--diffs-fg)}[data-merge-conflict-action=current]:hover{color:var(--diffs-addition-base)}[data-merge-conflict-action=incoming]:hover{color:var(--diffs-modified-base)}[data-merge-conflict-action-separator]{color:var(--diffs-fg-number);opacity:.6;-webkit-user-select:none;user-select:none}[data-diffs-header=default]{background-color:var(--diffs-bg);justify-content:space-between;align-items:center;gap:var(--diffs-gap-inline,var(--diffs-gap-fallback));min-height:calc(1lh + var(--diffs-gap-block,var(--diffs-gap-fallback))*3);z-index:2;flex-direction:row;padding-inline:16px;display:flex;position:relative;top:0}[data-header-content]{align-items:center;gap:var(--diffs-gap-inline,var(--diffs-gap-fallback));white-space:nowrap;flex-direction:row;min-width:0;display:flex}[data-header-content] [data-prev-name],[data-header-content] [data-title]{text-overflow:ellipsis;white-space:nowrap;direction:rtl;min-width:0;overflow:hidden}[data-prev-name]{opacity:.7}[data-rename-icon]{fill:currentColor;flex-grow:0;flex-shrink:0}[data-diffs-header=default] [data-metadata]{white-space:nowrap;align-items:center;gap:1ch;display:flex}[data-diffs-header=default] [data-additions-count]{font-family:var(--diffs-font-family,var(--diffs-font-fallback));color:var(--diffs-addition-base)}[data-diffs-header=default] [data-deletions-count]{font-family:var(--diffs-font-family,var(--diffs-font-fallback));color:var(--diffs-deletion-base)}[data-change-icon]{fill:currentColor;flex-shrink:0}[data-change-icon=change],[data-change-icon=rename-pure],[data-change-icon=rename-changed]{color:var(--diffs-modified-base)}[data-change-icon=new]{color:var(--diffs-addition-base)}[data-change-icon=deleted]{color:var(--diffs-deletion-base)}[data-change-icon=file]{opacity:.6}[data-annotation-content]{z-index:2;isolation:isolate;align-self:flex-start;min-width:0;display:flow-root;position:relative}[data-overflow=scroll] [data-annotation-content],[data-overflow=scroll] [data-merge-conflict-actions-content]{width:var(--diffs-column-content-width,auto);left:var(--diffs-column-number-width,0);position:sticky}[data-annotation-slot]{text-wrap-mode:wrap;word-break:normal;white-space-collapse:collapse}[data-gutter-utility-slot]{touch-action:none;justify-content:flex-end;display:flex;position:absolute;top:0;bottom:0;right:0}[data-utility-button]{appearance:none;cursor:pointer;width:1lh;height:1lh;font-size:var(--diffs-font-size,13px);line-height:var(--diffs-line-height,20px);background-color:var(--diffs-modified-base);color:var(--diffs-bg);fill:currentColor;z-index:4;touch-action:none;border:none;border-radius:4px;justify-content:center;align-items:center;margin-right:calc(1ch - 1lh);padding:0;display:flex;position:relative}[data-utility-button]:before{content:"";display:block;position:absolute;inset:0 0 0 -4px}[data-decoration-bar-stack]{pointer-events:none;isolation:isolate;z-index:1;background-color:var(--diffs-decoration-bar-color,transparent);box-sizing:content-box;border-left:2px solid var(--diffs-bg);border-right:2px solid var(--diffs-bg);width:6px;position:absolute;top:0;bottom:0;right:-2px}[data-decoration-bar-depth="1"] [data-decoration-bar-stack]{background-color:color-mix(in lab, var(--diffs-bg) 20%, var(--diffs-decoration-bar-color,transparent))}[data-decoration-bar-depth="2"] [data-decoration-bar-stack]{background-color:color-mix(in lab, var(--diffs-bg) 45%, var(--diffs-decoration-bar-color,transparent))}[data-decoration-bar-depth="3"] [data-decoration-bar-stack]{background-color:color-mix(in lab, var(--diffs-bg) 65%, var(--diffs-decoration-bar-color,transparent))}[data-decoration-bar-start] [data-decoration-bar-stack]{border-top-left-radius:5px;border-top-right-radius:5px}[data-decoration-bar-end] [data-decoration-bar-stack]{z-index:3;border-bottom-right-radius:5px;border-bottom-left-radius:5px}[data-placeholder]{contain:strict}[data-error-wrapper]{padding:var(--diffs-gap-block,var(--diffs-gap-fallback)) var(--diffs-gap-inline,var(--diffs-gap-fallback));scrollbar-width:none;max-height:400px;overflow:auto}[data-error-wrapper] [data-error-message]{color:var(--diffs-deletion-base);font-size:18px;font-weight:700}[data-error-wrapper] [data-error-stack]{color:var(--diffs-fg-number)}}@layer theme,rendered,unsafe;
|
|
@layer theme {
|
|
|
|
}</style><style data-theme-css="">@layer base, theme, rendered, unsafe;
|
|
@layer rendered {
|
|
:host {
|
|
--diffs-scrollbar-gutter-measured: var(--diffs-scrollbar-gutter-fallback);
|
|
--diffs-dark:#fafafa;--diffs-dark-bg:#0a0a0a;--diffs-dark-addition-color:#07c480;--diffs-dark-deletion-color:#ff2e3f;--diffs-dark-modified-color:#009fff;--diffs-light:#0a0a0a;--diffs-light-bg:#ffffff;--diffs-light-addition-color:#18a46c;--diffs-light-deletion-color:#d52c36;--diffs-light-modified-color:#009fff;
|
|
}
|
|
}</style><div data-diffs-header="default" data-change-type="change"><div data-header-content=""><slot name="header-prefix"></slot><svg width="16" height="16" viewBox="0 0 16 16" data-change-icon="change"><use href="#diffs-icon-symbol-modified"></use></svg><div data-title=""><bdi>Dreamio/DreamioWebViewController.swift</bdi></div></div><div data-metadata=""><span data-deletions-count="">-5</span><span data-additions-count="">+35</span><slot name="header-metadata"></slot></div></div><pre data-diff="" data-diff-type="split" data-overflow="scroll" data-background="" data-indicators="bars" tabindex="0" style="--diffs-min-number-column-width-default:3ch;" data-dehydrated=""><code data-code="" data-container-size="" data-deletions=""><div data-gutter="" style="grid-row: span 73"><div data-separator="line-info" data-separator-first=""><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">83 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="84" data-line-index="83,83"><span data-line-number-content="">84</span></div><div data-line-type="context" data-column-number="85" data-line-index="84,84"><span data-line-number-content="">85</span></div><div data-line-type="context" data-column-number="86" data-line-index="85,85"><span data-line-number-content="">86</span></div><div data-gutter-buffer="buffer" data-buffer-size="13" style="grid-row: span 13;min-height:calc(13 * 1lh);"></div><div data-line-type="context" data-column-number="87" data-line-index="99,99"><span data-line-number-content="">87</span></div><div data-line-type="context" data-column-number="88" data-line-index="100,100"><span data-line-number-content="">88</span></div><div data-line-type="context" data-column-number="89" data-line-index="101,101"><span data-line-number-content="">89</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">42 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="132" data-line-index="144,144"><span data-line-number-content="">132</span></div><div data-line-type="context" data-column-number="133" data-line-index="145,145"><span data-line-number-content="">133</span></div><div data-line-type="context" data-column-number="134" data-line-index="146,146"><span data-line-number-content="">134</span></div><div data-line-type="change-deletion" data-column-number="135" data-line-index="147,147"><span data-line-number-content="">135</span></div><div data-gutter-buffer="buffer" data-buffer-size="4" style="grid-row: span 4;min-height:calc(4 * 1lh);"></div><div data-line-type="context" data-column-number="136" data-line-index="153,152"><span data-line-number-content="">136</span></div><div data-line-type="context" data-column-number="137" data-line-index="154,153"><span data-line-number-content="">137</span></div><div data-line-type="change-deletion" data-column-number="138" data-line-index="155,154"><span data-line-number-content="">138</span></div><div data-line-type="context" data-column-number="139" data-line-index="157,155"><span data-line-number-content="">139</span></div><div data-line-type="context" data-column-number="140" data-line-index="158,156"><span data-line-number-content="">140</span></div><div data-line-type="context" data-column-number="141" data-line-index="159,157"><span data-line-number-content="">141</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">40 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="182" data-line-index="200,198"><span data-line-number-content="">182</span></div><div data-line-type="context" data-column-number="183" data-line-index="201,199"><span data-line-number-content="">183</span></div><div data-line-type="context" data-column-number="184" data-line-index="202,200"><span data-line-number-content="">184</span></div><div data-line-type="change-deletion" data-column-number="185" data-line-index="203,201"><span data-line-number-content="">185</span></div><div data-gutter-buffer="buffer" data-buffer-size="3" style="grid-row: span 3;min-height:calc(3 * 1lh);"></div><div data-line-type="context" data-column-number="186" data-line-index="208,205"><span data-line-number-content="">186</span></div><div data-line-type="change-deletion" data-column-number="187" data-line-index="209,206"><span data-line-number-content="">187</span></div><div data-line-type="context" data-column-number="188" data-line-index="211,207"><span data-line-number-content="">188</span></div><div data-line-type="context" data-column-number="189" data-line-index="212,208"><span data-line-number-content="">189</span></div><div data-line-type="context" data-column-number="190" data-line-index="213,209"><span data-line-number-content="">190</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">7 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="198" data-line-index="221,217"><span data-line-number-content="">198</span></div><div data-line-type="context" data-column-number="199" data-line-index="222,218"><span data-line-number-content="">199</span></div><div data-line-type="context" data-column-number="200" data-line-index="223,219"><span data-line-number-content="">200</span></div><div data-line-type="change-deletion" data-column-number="201" data-line-index="224,220"><span data-line-number-content="">201</span></div><div data-gutter-buffer="buffer" data-buffer-size="3" style="grid-row: span 3;min-height:calc(3 * 1lh);"></div><div data-line-type="context" data-column-number="202" data-line-index="229,224"><span data-line-number-content="">202</span></div><div data-line-type="context" data-column-number="203" data-line-index="230,225"><span data-line-number-content="">203</span></div><div data-line-type="context" data-column-number="204" data-line-index="231,226"><span data-line-number-content="">204</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">59 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="264" data-line-index="291,286"><span data-line-number-content="">264</span></div><div data-line-type="context" data-column-number="265" data-line-index="292,287"><span data-line-number-content="">265</span></div><div data-line-type="context" data-column-number="266" data-line-index="293,288"><span data-line-number-content="">266</span></div><div data-gutter-buffer="buffer" data-buffer-size="7" style="grid-row: span 7;min-height:calc(7 * 1lh);"></div><div data-line-type="context" data-column-number="267" data-line-index="301,296"><span data-line-number-content="">267</span></div><div data-line-type="context" data-column-number="268" data-line-index="302,297"><span data-line-number-content="">268</span></div><div data-line-type="context" data-column-number="269" data-line-index="303,298"><span data-line-number-content="">269</span></div></div><div data-content="" style="grid-row: span 73"><div data-separator="line-info" data-separator-first=""><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">83 unmodified lines</span></div></div></div><div data-line="84" data-alt-line="84" data-line-type="context" data-line-index="83,83"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> const postedSubtitleURLs </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> new </span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">Set</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">;</span></div><div data-line="85" data-alt-line="85" data-line-type="context" data-line-index="84,84"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> const subtitleURLPattern </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#64D1DB;--diffs-token-light:#17A5AF"> /https</span><span style="--diffs-token-dark:#FFD452;--diffs-token-light:#D5A910">?</span><span style="--diffs-token-dark:#64D1DB;--diffs-token-light:#17A5AF">:</span><span style="--diffs-token-dark:#61D5C0;--diffs-token-light:#16A994">\/\/</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">[^</span><span style="--diffs-token-dark:#FFD452;--diffs-token-light:#D5A910">\s"'<></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">]</span><span style="--diffs-token-dark:#FFD452;--diffs-token-light:#D5A910">+</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(?:</span><span style="--diffs-token-dark:#61D5C0;--diffs-token-light:#16A994">\.</span><span style="--diffs-token-dark:#64D1DB;--diffs-token-light:#17A5AF">srt</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">|</span><span style="--diffs-token-dark:#61D5C0;--diffs-token-light:#16A994">\.</span><span style="--diffs-token-dark:#64D1DB;--diffs-token-light:#17A5AF">vtt</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">|</span><span style="--diffs-token-dark:#61D5C0;--diffs-token-light:#16A994">\.</span><span style="--diffs-token-dark:#64D1DB;--diffs-token-light:#17A5AF">ass</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">|</span><span style="--diffs-token-dark:#61D5C0;--diffs-token-light:#16A994">\.</span><span style="--diffs-token-dark:#64D1DB;--diffs-token-light:#17A5AF">ssa</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">|</span><span style="--diffs-token-dark:#61D5C0;--diffs-token-light:#16A994">\.</span><span style="--diffs-token-dark:#64D1DB;--diffs-token-light:#17A5AF">sub</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">|</span><span style="--diffs-token-dark:#64D1DB;--diffs-token-light:#17A5AF">opensubtitles</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">|</span><span style="--diffs-token-dark:#64D1DB;--diffs-token-light:#17A5AF">subtitle</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)[^</span><span style="--diffs-token-dark:#FFD452;--diffs-token-light:#D5A910">\s"'<></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">]</span><span style="--diffs-token-dark:#FFD452;--diffs-token-light:#D5A910">*</span><span style="--diffs-token-dark:#64D1DB;--diffs-token-light:#17A5AF">/</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">ig;</span></div><div data-line="86" data-alt-line="86" data-line-type="context" data-line-index="85,85"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> const subtitleSignalPattern </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#64D1DB;--diffs-token-light:#17A5AF"> /subtitle</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">|</span><span style="--diffs-token-dark:#64D1DB;--diffs-token-light:#17A5AF">subtitles</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">|</span><span style="--diffs-token-dark:#64D1DB;--diffs-token-light:#17A5AF">opensubtitles</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">|</span><span style="--diffs-token-dark:#64D1DB;--diffs-token-light:#17A5AF">vtt</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">|</span><span style="--diffs-token-dark:#64D1DB;--diffs-token-light:#17A5AF">srt</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">|</span><span style="--diffs-token-dark:#64D1DB;--diffs-token-light:#17A5AF">ass</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">|</span><span style="--diffs-token-dark:#64D1DB;--diffs-token-light:#17A5AF">ssa/</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">i;</span></div><div data-content-buffer="" data-buffer-size="13" style="grid-row: span 13;min-height:calc(13 * 1lh)"></div><div data-line="87" data-alt-line="100" data-line-type="context" data-line-index="99,99">
|
|
</div><div data-line="88" data-alt-line="101" data-line-type="context" data-line-index="100,100"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> const looksNative </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> (</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">url</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="89" data-alt-line="102" data-line-type="context" data-line-index="101,101"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> if</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> (!</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">url </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">||</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> typeof url </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">!==</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "string"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">42 unmodified lines</span></div></div></div><div data-line="132" data-alt-line="145" data-line-type="context" data-line-index="144,144"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> const postSubtitleCandidates </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> (</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">candidates, debug </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {})</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="133" data-alt-line="146" data-line-type="context" data-line-index="145,145"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> const discoveredCount </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> candidates.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">length</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">;</span></div><div data-line="134" data-alt-line="147" data-line-type="context" data-line-index="146,146"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> const fresh </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> candidates.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">filter</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">((</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">candidate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="135" data-line-type="change-deletion" data-line-index="147,147"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">if</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> (</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">postedSubtitleURLs.has</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span></span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">candidate.url</span><span data-diff-span=""><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">))</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></span></div><div data-content-buffer="" data-buffer-size="4" style="grid-row: span 4;min-height:calc(4 * 1lh)"></div><div data-line="136" data-alt-line="153" data-line-type="context" data-line-index="153,152"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">;</span></div><div data-line="137" data-alt-line="154" data-line-type="context" data-line-index="154,153"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="138" data-line-type="change-deletion" data-line-index="155,154"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> postedSubtitleURLs.add</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">candidate.url</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">;</span></div><div data-line="139" data-alt-line="156" data-line-type="context" data-line-index="157,155"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> true</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">;</span></div><div data-line="140" data-alt-line="157" data-line-type="context" data-line-index="158,156"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> })</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">;</span></div><div data-line="141" data-alt-line="158" data-line-type="context" data-line-index="159,157"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> if</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> (</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">fresh.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">length</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> ===</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">40 unmodified lines</span></div></div></div><div data-line="182" data-alt-line="199" data-line-type="context" data-line-index="200,198"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> entry.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">fileUrl</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> ||</span></div><div data-line="183" data-alt-line="200" data-line-type="context" data-line-index="201,199"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> entry.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">fileURL</span></div><div data-line="184" data-alt-line="201" data-line-type="context" data-line-index="202,200"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> );</span></div><div data-line="185" data-line-type="change-deletion" data-line-index="203,201"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">const</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> url </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> absoluteURL</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">rawURL</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">;</span></div><div data-content-buffer="" data-buffer-size="3" style="grid-row: span 3;min-height:calc(3 * 1lh)"></div><div data-line="186" data-alt-line="206" data-line-type="context" data-line-index="208,205"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> subtitleURLPattern.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">lastIndex</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">;</span></div><div data-line="187" data-line-type="change-deletion" data-line-index="209,206"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> if</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> (!</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">url </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">||</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> !</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">subtitleURLPattern.test</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">url</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">))</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="188" data-alt-line="208" data-line-type="context" data-line-index="211,207"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> subtitleURLPattern.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">lastIndex</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">;</span></div><div data-line="189" data-alt-line="209" data-line-type="context" data-line-index="212,208"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">;</span></div><div data-line="190" data-alt-line="210" data-line-type="context" data-line-index="213,209"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">7 unmodified lines</span></div></div></div><div data-line="198" data-alt-line="218" data-line-type="context" data-line-index="221,217"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> language</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">:</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> entry </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">&&</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> (</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">entry.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">lang</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> ||</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> entry.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">language</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> ||</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> ""</span></div><div data-line="199" data-alt-line="219" data-line-type="context" data-line-index="222,218"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> };</span></div><div data-line="200" data-alt-line="220" data-line-type="context" data-line-index="223,219"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> subtitleCandidates.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">push</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">candidate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">;</span></div><div data-line="201" data-line-type="change-deletion" data-line-index="224,220"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> postSubtitleCandidates</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">[candidate]</span><span data-diff-span=""><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">;</span></span></div><div data-content-buffer="" data-buffer-size="3" style="grid-row: span 3;min-height:calc(3 * 1lh)"></div><div data-line="202" data-alt-line="225" data-line-type="context" data-line-index="229,224"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> };</span></div><div data-line="203" data-alt-line="226" data-line-type="context" data-line-index="230,225">
|
|
</div><div data-line="204" data-alt-line="227" data-line-type="context" data-line-index="231,226"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> const inspectTrack </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> (</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">track</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">59 unmodified lines</span></div></div></div><div data-line="264" data-alt-line="287" data-line-type="context" data-line-index="291,286"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="265" data-alt-line="288" data-line-type="context" data-line-index="292,287"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> if</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> (</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">typeof payload </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">===</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "object"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="266" data-alt-line="289" data-line-type="context" data-line-index="293,288"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> addSubtitleCandidate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">payload</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">;</span></div><div data-content-buffer="" data-buffer-size="7" style="grid-row: span 7;min-height:calc(7 * 1lh)"></div><div data-line="267" data-alt-line="297" data-line-type="context" data-line-index="301,296"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> Object.values</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">payload</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">forEach</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">inspectSubtitlePayload</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">;</span></div><div data-line="268" data-alt-line="298" data-line-type="context" data-line-index="302,297"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="269" data-alt-line="299" data-line-type="context" data-line-index="303,298"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> };</span></div></div></code><code data-code="" data-container-size="" data-additions=""><div data-gutter="" style="grid-row: span 73"><div data-separator="line-info" data-separator-first=""><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">83 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="84" data-line-index="83,83"><span data-line-number-content="">84</span></div><div data-line-type="context" data-column-number="85" data-line-index="84,84"><span data-line-number-content="">85</span></div><div data-line-type="context" data-column-number="86" data-line-index="85,85"><span data-line-number-content="">86</span></div><div data-line-type="change-addition" data-column-number="87" data-line-index="86,86"><span data-line-number-content="">87</span></div><div data-line-type="change-addition" data-column-number="88" data-line-index="87,87"><span data-line-number-content="">88</span></div><div data-line-type="change-addition" data-column-number="89" data-line-index="88,88"><span data-line-number-content="">89</span></div><div data-line-type="change-addition" data-column-number="90" data-line-index="89,89"><span data-line-number-content="">90</span></div><div data-line-type="change-addition" data-column-number="91" data-line-index="90,90"><span data-line-number-content="">91</span></div><div data-line-type="change-addition" data-column-number="92" data-line-index="91,91"><span data-line-number-content="">92</span></div><div data-line-type="change-addition" data-column-number="93" data-line-index="92,92"><span data-line-number-content="">93</span></div><div data-line-type="change-addition" data-column-number="94" data-line-index="93,93"><span data-line-number-content="">94</span></div><div data-line-type="change-addition" data-column-number="95" data-line-index="94,94"><span data-line-number-content="">95</span></div><div data-line-type="change-addition" data-column-number="96" data-line-index="95,95"><span data-line-number-content="">96</span></div><div data-line-type="change-addition" data-column-number="97" data-line-index="96,96"><span data-line-number-content="">97</span></div><div data-line-type="change-addition" data-column-number="98" data-line-index="97,97"><span data-line-number-content="">98</span></div><div data-line-type="change-addition" data-column-number="99" data-line-index="98,98"><span data-line-number-content="">99</span></div><div data-line-type="context" data-column-number="100" data-line-index="99,99"><span data-line-number-content="">100</span></div><div data-line-type="context" data-column-number="101" data-line-index="100,100"><span data-line-number-content="">101</span></div><div data-line-type="context" data-column-number="102" data-line-index="101,101"><span data-line-number-content="">102</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">42 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="145" data-line-index="144,144"><span data-line-number-content="">145</span></div><div data-line-type="context" data-column-number="146" data-line-index="145,145"><span data-line-number-content="">146</span></div><div data-line-type="context" data-column-number="147" data-line-index="146,146"><span data-line-number-content="">147</span></div><div data-line-type="change-addition" data-column-number="148" data-line-index="148,147"><span data-line-number-content="">148</span></div><div data-line-type="change-addition" data-column-number="149" data-line-index="149,148"><span data-line-number-content="">149</span></div><div data-line-type="change-addition" data-column-number="150" data-line-index="150,149"><span data-line-number-content="">150</span></div><div data-line-type="change-addition" data-column-number="151" data-line-index="151,150"><span data-line-number-content="">151</span></div><div data-line-type="change-addition" data-column-number="152" data-line-index="152,151"><span data-line-number-content="">152</span></div><div data-line-type="context" data-column-number="153" data-line-index="153,152"><span data-line-number-content="">153</span></div><div data-line-type="context" data-column-number="154" data-line-index="154,153"><span data-line-number-content="">154</span></div><div data-line-type="change-addition" data-column-number="155" data-line-index="156,154"><span data-line-number-content="">155</span></div><div data-line-type="context" data-column-number="156" data-line-index="157,155"><span data-line-number-content="">156</span></div><div data-line-type="context" data-column-number="157" data-line-index="158,156"><span data-line-number-content="">157</span></div><div data-line-type="context" data-column-number="158" data-line-index="159,157"><span data-line-number-content="">158</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">40 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="199" data-line-index="200,198"><span data-line-number-content="">199</span></div><div data-line-type="context" data-column-number="200" data-line-index="201,199"><span data-line-number-content="">200</span></div><div data-line-type="context" data-column-number="201" data-line-index="202,200"><span data-line-number-content="">201</span></div><div data-line-type="change-addition" data-column-number="202" data-line-index="204,201"><span data-line-number-content="">202</span></div><div data-line-type="change-addition" data-column-number="203" data-line-index="205,202"><span data-line-number-content="">203</span></div><div data-line-type="change-addition" data-column-number="204" data-line-index="206,203"><span data-line-number-content="">204</span></div><div data-line-type="change-addition" data-column-number="205" data-line-index="207,204"><span data-line-number-content="">205</span></div><div data-line-type="context" data-column-number="206" data-line-index="208,205"><span data-line-number-content="">206</span></div><div data-line-type="change-addition" data-column-number="207" data-line-index="210,206"><span data-line-number-content="">207</span></div><div data-line-type="context" data-column-number="208" data-line-index="211,207"><span data-line-number-content="">208</span></div><div data-line-type="context" data-column-number="209" data-line-index="212,208"><span data-line-number-content="">209</span></div><div data-line-type="context" data-column-number="210" data-line-index="213,209"><span data-line-number-content="">210</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">7 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="218" data-line-index="221,217"><span data-line-number-content="">218</span></div><div data-line-type="context" data-column-number="219" data-line-index="222,218"><span data-line-number-content="">219</span></div><div data-line-type="context" data-column-number="220" data-line-index="223,219"><span data-line-number-content="">220</span></div><div data-line-type="change-addition" data-column-number="221" data-line-index="225,220"><span data-line-number-content="">221</span></div><div data-line-type="change-addition" data-column-number="222" data-line-index="226,221"><span data-line-number-content="">222</span></div><div data-line-type="change-addition" data-column-number="223" data-line-index="227,222"><span data-line-number-content="">223</span></div><div data-line-type="change-addition" data-column-number="224" data-line-index="228,223"><span data-line-number-content="">224</span></div><div data-line-type="context" data-column-number="225" data-line-index="229,224"><span data-line-number-content="">225</span></div><div data-line-type="context" data-column-number="226" data-line-index="230,225"><span data-line-number-content="">226</span></div><div data-line-type="context" data-column-number="227" data-line-index="231,226"><span data-line-number-content="">227</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">59 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="287" data-line-index="291,286"><span data-line-number-content="">287</span></div><div data-line-type="context" data-column-number="288" data-line-index="292,287"><span data-line-number-content="">288</span></div><div data-line-type="context" data-column-number="289" data-line-index="293,288"><span data-line-number-content="">289</span></div><div data-line-type="change-addition" data-column-number="290" data-line-index="294,289"><span data-line-number-content="">290</span></div><div data-line-type="change-addition" data-column-number="291" data-line-index="295,290"><span data-line-number-content="">291</span></div><div data-line-type="change-addition" data-column-number="292" data-line-index="296,291"><span data-line-number-content="">292</span></div><div data-line-type="change-addition" data-column-number="293" data-line-index="297,292"><span data-line-number-content="">293</span></div><div data-line-type="change-addition" data-column-number="294" data-line-index="298,293"><span data-line-number-content="">294</span></div><div data-line-type="change-addition" data-column-number="295" data-line-index="299,294"><span data-line-number-content="">295</span></div><div data-line-type="change-addition" data-column-number="296" data-line-index="300,295"><span data-line-number-content="">296</span></div><div data-line-type="context" data-column-number="297" data-line-index="301,296"><span data-line-number-content="">297</span></div><div data-line-type="context" data-column-number="298" data-line-index="302,297"><span data-line-number-content="">298</span></div><div data-line-type="context" data-column-number="299" data-line-index="303,298"><span data-line-number-content="">299</span></div></div><div data-content="" style="grid-row: span 73"><div data-separator="line-info" data-separator-first=""><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">83 unmodified lines</span></div></div></div><div data-line="84" data-alt-line="84" data-line-type="context" data-line-index="83,83"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> const postedSubtitleURLs </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> new </span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">Set</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">;</span></div><div data-line="85" data-alt-line="85" data-line-type="context" data-line-index="84,84"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> const subtitleURLPattern </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#64D1DB;--diffs-token-light:#17A5AF"> /https</span><span style="--diffs-token-dark:#FFD452;--diffs-token-light:#D5A910">?</span><span style="--diffs-token-dark:#64D1DB;--diffs-token-light:#17A5AF">:</span><span style="--diffs-token-dark:#61D5C0;--diffs-token-light:#16A994">\/\/</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">[^</span><span style="--diffs-token-dark:#FFD452;--diffs-token-light:#D5A910">\s"'<></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">]</span><span style="--diffs-token-dark:#FFD452;--diffs-token-light:#D5A910">+</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(?:</span><span style="--diffs-token-dark:#61D5C0;--diffs-token-light:#16A994">\.</span><span style="--diffs-token-dark:#64D1DB;--diffs-token-light:#17A5AF">srt</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">|</span><span style="--diffs-token-dark:#61D5C0;--diffs-token-light:#16A994">\.</span><span style="--diffs-token-dark:#64D1DB;--diffs-token-light:#17A5AF">vtt</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">|</span><span style="--diffs-token-dark:#61D5C0;--diffs-token-light:#16A994">\.</span><span style="--diffs-token-dark:#64D1DB;--diffs-token-light:#17A5AF">ass</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">|</span><span style="--diffs-token-dark:#61D5C0;--diffs-token-light:#16A994">\.</span><span style="--diffs-token-dark:#64D1DB;--diffs-token-light:#17A5AF">ssa</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">|</span><span style="--diffs-token-dark:#61D5C0;--diffs-token-light:#16A994">\.</span><span style="--diffs-token-dark:#64D1DB;--diffs-token-light:#17A5AF">sub</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">|</span><span style="--diffs-token-dark:#64D1DB;--diffs-token-light:#17A5AF">opensubtitles</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">|</span><span style="--diffs-token-dark:#64D1DB;--diffs-token-light:#17A5AF">subtitle</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)[^</span><span style="--diffs-token-dark:#FFD452;--diffs-token-light:#D5A910">\s"'<></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">]</span><span style="--diffs-token-dark:#FFD452;--diffs-token-light:#D5A910">*</span><span style="--diffs-token-dark:#64D1DB;--diffs-token-light:#17A5AF">/</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">ig;</span></div><div data-line="86" data-alt-line="86" data-line-type="context" data-line-index="85,85"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> const subtitleSignalPattern </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#64D1DB;--diffs-token-light:#17A5AF"> /subtitle</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">|</span><span style="--diffs-token-dark:#64D1DB;--diffs-token-light:#17A5AF">subtitles</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">|</span><span style="--diffs-token-dark:#64D1DB;--diffs-token-light:#17A5AF">opensubtitles</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">|</span><span style="--diffs-token-dark:#64D1DB;--diffs-token-light:#17A5AF">vtt</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">|</span><span style="--diffs-token-dark:#64D1DB;--diffs-token-light:#17A5AF">srt</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">|</span><span style="--diffs-token-dark:#64D1DB;--diffs-token-light:#17A5AF">ass</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">|</span><span style="--diffs-token-dark:#64D1DB;--diffs-token-light:#17A5AF">ssa/</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">i;</span></div><div data-line="87" data-line-type="change-addition" data-line-index="86,86"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> const subtitleObjectKeys </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> [</span></div><div data-line="88" data-line-type="change-addition" data-line-index="87,87"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "attributes"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="89" data-line-type="change-addition" data-line-index="88,88"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "files"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="90" data-line-type="change-addition" data-line-index="89,89"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "file_id"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="91" data-line-type="change-addition" data-line-index="90,90"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "url"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="92" data-line-type="change-addition" data-line-index="91,91"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "download"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="93" data-line-type="change-addition" data-line-index="92,92"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "link"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="94" data-line-type="change-addition" data-line-index="93,93"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "file"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="95" data-line-type="change-addition" data-line-index="94,94"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "file_name"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="96" data-line-type="change-addition" data-line-index="95,95"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "filename"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="97" data-line-type="change-addition" data-line-index="96,96"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "language"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="98" data-line-type="change-addition" data-line-index="97,97"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "lang"</span></div><div data-line="99" data-line-type="change-addition" data-line-index="98,98"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> ];</span></div><div data-line="100" data-alt-line="87" data-line-type="context" data-line-index="99,99">
|
|
</div><div data-line="101" data-alt-line="88" data-line-type="context" data-line-index="100,100"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> const looksNative </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> (</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">url</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="102" data-alt-line="89" data-line-type="context" data-line-index="101,101"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> if</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> (!</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">url </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">||</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> typeof url </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">!==</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "string"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">42 unmodified lines</span></div></div></div><div data-line="145" data-alt-line="132" data-line-type="context" data-line-index="144,144"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> const postSubtitleCandidates </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> (</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">candidates, debug </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {})</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="146" data-alt-line="133" data-line-type="context" data-line-index="145,145"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> const discoveredCount </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> candidates.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">length</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">;</span></div><div data-line="147" data-alt-line="134" data-line-type="context" data-line-index="146,146"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> const fresh </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> candidates.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">filter</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">((</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">candidate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="148" data-line-type="change-addition" data-line-index="148,147"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> </span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">const key </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> candidate </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">&&</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> (</span></span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">candidate.url </span><span data-diff-span=""><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">||</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> candidate.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">link</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> ||</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> candidate.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">download</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> ||</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> candidate.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">file</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> ||</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> candidate.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">file_id</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">;</span></span></div><div data-line="149" data-line-type="change-addition" data-line-index="149,148"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> if</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> (!</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">key</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="150" data-line-type="change-addition" data-line-index="150,149"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">;</span></div><div data-line="151" data-line-type="change-addition" data-line-index="151,150"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="152" data-line-type="change-addition" data-line-index="152,151"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> if</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> (</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">postedSubtitleURLs.has</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">String</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">key</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)))</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="153" data-alt-line="136" data-line-type="context" data-line-index="153,152"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">;</span></div><div data-line="154" data-alt-line="137" data-line-type="context" data-line-index="154,153"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="155" data-line-type="change-addition" data-line-index="156,154"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> postedSubtitleURLs.add</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span data-diff-span=""><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">String</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">key</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">))</span></span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">;</span></div><div data-line="156" data-alt-line="139" data-line-type="context" data-line-index="157,155"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> true</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">;</span></div><div data-line="157" data-alt-line="140" data-line-type="context" data-line-index="158,156"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> })</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">;</span></div><div data-line="158" data-alt-line="141" data-line-type="context" data-line-index="159,157"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> if</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> (</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">fresh.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">length</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> ===</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">40 unmodified lines</span></div></div></div><div data-line="199" data-alt-line="182" data-line-type="context" data-line-index="200,198"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> entry.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">fileUrl</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> ||</span></div><div data-line="200" data-alt-line="183" data-line-type="context" data-line-index="201,199"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> entry.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">fileURL</span></div><div data-line="201" data-alt-line="184" data-line-type="context" data-line-index="202,200"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> );</span></div><div data-line="202" data-line-type="change-addition" data-line-index="204,201"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">let</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> url </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> absoluteURL</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">rawURL</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">;</span></div><div data-line="203" data-line-type="change-addition" data-line-index="205,202"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> if</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> (!</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">url </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">&&</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> entry </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">&&</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> entry.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">file_id</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="204" data-line-type="change-addition" data-line-index="206,203"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> url </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> `https</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">:</span><span style="--diffs-token-dark:#737373;--diffs-token-light:#737373">//api.opensubtitles.com/api/v1/download/${encodeURIComponent(String(entry.file_id))}`;</span></div><div data-line="205" data-line-type="change-addition" data-line-index="207,204"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="206" data-alt-line="186" data-line-type="context" data-line-index="208,205"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> subtitleURLPattern.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">lastIndex</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">;</span></div><div data-line="207" data-line-type="change-addition" data-line-index="210,206"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> if</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> (!</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">url </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">||</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> </span><span data-diff-span=""><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">!</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">subtitleURLPattern.test</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">url</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span data-diff-span=""><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> &&</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> !/</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">api\.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">opensubtitles</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">\.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">com</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">\</span><span style="--diffs-token-dark:#64D1DB;--diffs-token-light:#17A5AF">/api</span><span style="--diffs-token-dark:#61D5C0;--diffs-token-light:#16A994">\/</span><span style="--diffs-token-dark:#64D1DB;--diffs-token-light:#17A5AF">v1</span><span style="--diffs-token-dark:#61D5C0;--diffs-token-light:#16A994">\/</span><span style="--diffs-token-dark:#64D1DB;--diffs-token-light:#17A5AF">download/</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">i.test</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">url</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)))</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="208" data-alt-line="188" data-line-type="context" data-line-index="211,207"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> subtitleURLPattern.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">lastIndex</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">;</span></div><div data-line="209" data-alt-line="189" data-line-type="context" data-line-index="212,208"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">;</span></div><div data-line="210" data-alt-line="190" data-line-type="context" data-line-index="213,209"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">7 unmodified lines</span></div></div></div><div data-line="218" data-alt-line="198" data-line-type="context" data-line-index="221,217"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> language</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">:</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> entry </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">&&</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> (</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">entry.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">lang</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> ||</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> entry.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">language</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> ||</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> ""</span></div><div data-line="219" data-alt-line="199" data-line-type="context" data-line-index="222,218"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> };</span></div><div data-line="220" data-alt-line="200" data-line-type="context" data-line-index="223,219"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> subtitleCandidates.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">push</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">candidate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">;</span></div><div data-line="221" data-line-type="change-addition" data-line-index="225,220"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> postSubtitleCandidates</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">[candidate]</span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">{</span></span></div><div data-line="222" data-line-type="change-addition" data-line-index="226,221"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> discovered</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 1</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">,</span></div><div data-line="223" data-line-type="change-addition" data-line-index="227,222"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> totalKnown</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> subtitleCandidates.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">length</span></div><div data-line="224" data-line-type="change-addition" data-line-index="228,223"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> })</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">;</span></div><div data-line="225" data-alt-line="202" data-line-type="context" data-line-index="229,224"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> };</span></div><div data-line="226" data-alt-line="203" data-line-type="context" data-line-index="230,225">
|
|
</div><div data-line="227" data-alt-line="204" data-line-type="context" data-line-index="231,226"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> const inspectTrack </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> (</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">track</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">59 unmodified lines</span></div></div></div><div data-line="287" data-alt-line="264" data-line-type="context" data-line-index="291,286"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="288" data-alt-line="265" data-line-type="context" data-line-index="292,287"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> if</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> (</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">typeof payload </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">===</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "object"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="289" data-alt-line="266" data-line-type="context" data-line-index="293,288"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> addSubtitleCandidate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">payload</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">;</span></div><div data-line="290" data-line-type="change-addition" data-line-index="294,289"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> const likelySubtitlePayload </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> subtitleObjectKeys.some</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">((</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">key</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =></span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> Object.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">prototype</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">hasOwnProperty</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.call</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">payload, key</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">))</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">;</span></div><div data-line="291" data-line-type="change-addition" data-line-index="295,290"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> if</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> (</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">likelySubtitlePayload</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="292" data-line-type="change-addition" data-line-index="296,291"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> postSubtitleCandidates</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">[payload], </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">{</span></div><div data-line="293" data-line-type="change-addition" data-line-index="297,292"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> source</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "payload-object"</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">,</span></div><div data-line="294" data-line-type="change-addition" data-line-index="298,293"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> totalKnown</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> subtitleCandidates.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">length</span></div><div data-line="295" data-line-type="change-addition" data-line-index="299,294"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> })</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">;</span></div><div data-line="296" data-line-type="change-addition" data-line-index="300,295"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="297" data-alt-line="267" data-line-type="context" data-line-index="301,296"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> Object.values</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">payload</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">forEach</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">inspectSubtitlePayload</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">;</span></div><div data-line="298" data-alt-line="268" data-line-type="context" data-line-index="302,297"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="299" data-alt-line="269" data-line-type="context" data-line-index="303,298"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> };</span></div></div></code></pre>
|
|
<svg data-icon-sprite aria-hidden="true" width="0" height="0">
|
|
<symbol id="diffs-icon-arrow-right-short" viewBox="0 0 16 16">
|
|
<path d="M8.47 4.22a.75.75 0 0 0 0 1.06l1.97 1.97H3.75a.75.75 0 0 0 0 1.5h6.69l-1.97 1.97a.75.75 0 1 0 1.06 1.06l3.25-3.25a.75.75 0 0 0 0-1.06L9.53 4.22a.75.75 0 0 0-1.06 0"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-brand-github" viewBox="0 0 16 16">
|
|
<path d="M8 0c4.42 0 8 3.58 8 8a8.01 8.01 0 0 1-5.45 7.59c-.4.08-.55-.17-.55-.38 0-.27.01-1.13.01-2.2 0-.75-.25-1.23-.54-1.48 1.78-.2 3.65-.88 3.65-3.95 0-.88-.31-1.59-.82-2.15.08-.2.36-1.02-.08-2.12 0 0-.67-.22-2.2.82-.64-.18-1.32-.27-2-.27s-1.36.09-2 .27c-1.53-1.03-2.2-.82-2.2-.82-.44 1.1-.16 1.92-.08 2.12-.51.56-.82 1.28-.82 2.15 0 3.06 1.86 3.75 3.64 3.95-.23.2-.44.55-.51 1.07-.46.21-1.61.55-2.33-.66-.15-.24-.6-.83-1.23-.82-.67.01-.27.38.01.53.34.19.73.9.82 1.13.16.45.68 1.31 2.69.94 0 .67.01 1.3.01 1.49 0 .21-.15.45-.55.38A7.995 7.995 0 0 1 0 8c0-4.42 3.58-8 8-8"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-chevron" viewBox="0 0 16 16">
|
|
<path d="M1.47 4.47a.75.75 0 0 1 1.06 0L8 9.94l5.47-5.47a.75.75 0 1 1 1.06 1.06l-6 6a.75.75 0 0 1-1.06 0l-6-6a.75.75 0 0 1 0-1.06"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-chevrons-narrow" viewBox="0 0 10 16">
|
|
<path d="M4.47 2.22a.75.75 0 0 1 1.06 0l3.25 3.25a.75.75 0 0 1-1.06 1.06L5 3.81 2.28 6.53a.75.75 0 0 1-1.06-1.06zM1.22 9.47a.75.75 0 0 1 1.06 0L5 12.19l2.72-2.72a.75.75 0 0 1 1.06 1.06l-3.25 3.25a.75.75 0 0 1-1.06 0l-3.25-3.25a.75.75 0 0 1 0-1.06"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-diff-split" viewBox="0 0 16 16">
|
|
<path d="M14 0H8.5v16H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2m-1.5 6.5v1h1a.5.5 0 0 1 0 1h-1v1a.5.5 0 0 1-1 0v-1h-1a.5.5 0 0 1 0-1h1v-1a.5.5 0 0 1 1 0"/><path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h5.5V0zm.5 7.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1 0-1" opacity=".3"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-diff-unified" viewBox="0 0 16 16">
|
|
<path fill-rule="evenodd" d="M16 14a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V8.5h16zm-8-4a.5.5 0 0 0-.5.5v1h-1a.5.5 0 0 0 0 1h1v1a.5.5 0 0 0 1 0v-1h1a.5.5 0 0 0 0-1h-1v-1A.5.5 0 0 0 8 10" clip-rule="evenodd"/><path fill-rule="evenodd" d="M14 0a2 2 0 0 1 2 2v5.5H0V2a2 2 0 0 1 2-2zM6.5 3.5a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1z" clip-rule="evenodd" opacity=".4"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-expand" viewBox="0 0 16 16">
|
|
<path d="M3.47 5.47a.75.75 0 0 1 1.06 0L8 8.94l3.47-3.47a.75.75 0 1 1 1.06 1.06l-4 4a.75.75 0 0 1-1.06 0l-4-4a.75.75 0 0 1 0-1.06"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-expand-all" viewBox="0 0 16 16">
|
|
<path d="M11.47 9.47a.75.75 0 1 1 1.06 1.06l-4 4a.75.75 0 0 1-1.06 0l-4-4a.75.75 0 1 1 1.06-1.06L8 12.94zM7.526 1.418a.75.75 0 0 1 1.004.052l4 4a.75.75 0 1 1-1.06 1.06L8 3.06 4.53 6.53a.75.75 0 1 1-1.06-1.06l4-4z"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-file-code" viewBox="0 0 16 16">
|
|
<path d="M10.75 0c.199 0 .39.08.53.22l3.5 3.5c.14.14.22.331.22.53v9A2.75 2.75 0 0 1 12.25 16h-8.5A2.75 2.75 0 0 1 1 13.25V2.75A2.75 2.75 0 0 1 3.75 0zm-7 1.5c-.69 0-1.25.56-1.25 1.25v10.5c0 .69.56 1.25 1.25 1.25h8.5c.69 0 1.25-.56 1.25-1.25V5h-1.25A2.25 2.25 0 0 1 10 2.75V1.5z"/><path d="M7.248 6.19a.75.75 0 0 1 .063 1.058L5.753 9l1.558 1.752a.75.75 0 0 1-1.122.996l-2-2.25a.75.75 0 0 1 0-.996l2-2.25a.75.75 0 0 1 1.06-.063M8.69 7.248a.75.75 0 1 1 1.12-.996l2 2.25a.75.75 0 0 1 0 .996l-2 2.25a.75.75 0 1 1-1.12-.996L10.245 9z"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-plus" viewBox="0 0 16 16">
|
|
<path d="M8 3a.75.75 0 0 1 .75.75v3.5h3.5a.75.75 0 0 1 0 1.5h-3.5v3.5a.75.75 0 0 1-1.5 0v-3.5h-3.5a.75.75 0 0 1 0-1.5h3.5v-3.5A.75.75 0 0 1 8 3"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-symbol-added" viewBox="0 0 16 16">
|
|
<path d="M8 4a.75.75 0 0 1 .75.75v2.5h2.5a.75.75 0 0 1 0 1.5h-2.5v2.5a.75.75 0 0 1-1.5 0v-2.5h-2.5a.75.75 0 0 1 0-1.5h2.5v-2.5A.75.75 0 0 1 8 4"/><path d="M1.788 4.296c.196-.88.478-1.381.802-1.706s.826-.606 1.706-.802C5.194 1.588 6.387 1.5 8 1.5s2.806.088 3.704.288c.88.196 1.381.478 1.706.802s.607.826.802 1.706c.2.898.288 2.091.288 3.704s-.088 2.806-.288 3.704c-.195.88-.478 1.381-.802 1.706s-.826.607-1.706.802c-.898.2-2.091.288-3.704.288s-2.806-.088-3.704-.288c-.88-.195-1.381-.478-1.706-.802s-.606-.826-.802-1.706C1.588 10.806 1.5 9.613 1.5 8s.088-2.806.288-3.704M8 0C1.412 0 0 1.412 0 8s1.412 8 8 8 8-1.412 8-8-1.412-8-8-8"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-symbol-deleted" viewBox="0 0 16 16">
|
|
<path d="M4 8a.75.75 0 0 1 .75-.75h6.5a.75.75 0 0 1 0 1.5h-6.5A.75.75 0 0 1 4 8"/><path d="M1.788 4.296c.196-.88.478-1.381.802-1.706s.826-.606 1.706-.802C5.194 1.588 6.387 1.5 8 1.5s2.806.088 3.704.288c.88.196 1.381.478 1.706.802s.607.826.802 1.706c.2.898.288 2.091.288 3.704s-.088 2.806-.288 3.704c-.195.88-.478 1.381-.802 1.706s-.826.607-1.706.802c-.898.2-2.091.288-3.704.288s-2.806-.088-3.704-.288c-.88-.195-1.381-.478-1.706-.802s-.606-.826-.802-1.706C1.588 10.806 1.5 9.613 1.5 8s.088-2.806.288-3.704M8 0C1.412 0 0 1.412 0 8s1.412 8 8 8 8-1.412 8-8-1.412-8-8-8"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-symbol-diffstat" viewBox="0 0 16 16">
|
|
<path d="M1.788 4.296c.196-.88.478-1.381.802-1.706s.826-.606 1.706-.802C5.194 1.588 6.387 1.5 8 1.5s2.806.088 3.704.288c.88.196 1.381.478 1.706.802s.607.826.802 1.706c.2.898.288 2.091.288 3.704s-.088 2.806-.288 3.704c-.195.88-.478 1.381-.802 1.706s-.826.607-1.706.802c-.898.2-2.091.288-3.704.288s-2.806-.088-3.704-.288c-.88-.195-1.381-.478-1.706-.802s-.606-.826-.802-1.706C1.588 10.806 1.5 9.613 1.5 8s.088-2.806.288-3.704M8 0C1.412 0 0 1.412 0 8s1.412 8 8 8 8-1.412 8-8-1.412-8-8-8"/><path d="M8.75 4.296a.75.75 0 0 0-1.5 0V6.25h-2a.75.75 0 0 0 0 1.5h2v1.5h1.5v-1.5h2a.75.75 0 0 0 0-1.5h-2zM5.25 10a.75.75 0 0 0 0 1.5h5.5a.75.75 0 0 0 0-1.5z"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-symbol-ignored" viewBox="0 0 16 16">
|
|
<path d="M1.5 8c0 1.613.088 2.806.288 3.704.196.88.478 1.381.802 1.706s.826.607 1.706.802c.898.2 2.091.288 3.704.288s2.806-.088 3.704-.288c.88-.195 1.381-.478 1.706-.802s.607-.826.802-1.706c.2-.898.288-2.091.288-3.704s-.088-2.806-.288-3.704c-.195-.88-.478-1.381-.802-1.706s-.826-.606-1.706-.802C10.806 1.588 9.613 1.5 8 1.5s-2.806.088-3.704.288c-.88.196-1.381.478-1.706.802s-.606.826-.802 1.706C1.588 5.194 1.5 6.387 1.5 8M0 8c0-6.588 1.412-8 8-8s8 1.412 8 8-1.412 8-8 8-8-1.412-8-8m11.53-2.47a.75.75 0 0 0-1.06-1.06l-6 6a.75.75 0 1 0 1.06 1.06z"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-symbol-modified" viewBox="0 0 16 16">
|
|
<path d="M1.5 8c0 1.613.088 2.806.288 3.704.196.88.478 1.381.802 1.706s.826.607 1.706.802c.898.2 2.091.288 3.704.288s2.806-.088 3.704-.288c.88-.195 1.381-.478 1.706-.802s.607-.826.802-1.706c.2-.898.288-2.091.288-3.704s-.088-2.806-.288-3.704c-.195-.88-.478-1.381-.802-1.706s-.826-.606-1.706-.802C10.806 1.588 9.613 1.5 8 1.5s-2.806.088-3.704.288c-.88.196-1.381.478-1.706.802s-.606.826-.802 1.706C1.588 5.194 1.5 6.387 1.5 8M0 8c0-6.588 1.412-8 8-8s8 1.412 8 8-1.412 8-8 8-8-1.412-8-8m8 3a3 3 0 1 0 0-6 3 3 0 0 0 0 6"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-symbol-moved" viewBox="0 0 16 16">
|
|
<path d="M1.788 4.296c.196-.88.478-1.381.802-1.706s.826-.606 1.706-.802C5.194 1.588 6.387 1.5 8 1.5s2.806.088 3.704.288c.88.196 1.381.478 1.706.802s.607.826.802 1.706c.2.898.288 2.091.288 3.704s-.088 2.806-.288 3.704c-.195.88-.478 1.381-.802 1.706s-.826.607-1.706.802c-.898.2-2.091.288-3.704.288s-2.806-.088-3.704-.288c-.88-.195-1.381-.478-1.706-.802s-.606-.826-.802-1.706C1.588 10.806 1.5 9.613 1.5 8s.088-2.806.288-3.704M8 0C1.412 0 0 1.412 0 8s1.412 8 8 8 8-1.412 8-8-1.412-8-8-8"/><path d="M8.495 4.695a.75.75 0 0 0-.05 1.06L10.486 8l-2.041 2.246a.75.75 0 0 0 1.11 1.008l2.5-2.75a.75.75 0 0 0 0-1.008l-2.5-2.75a.75.75 0 0 0-1.06-.051m-4 0a.75.75 0 0 0-.05 1.06l2.044 2.248-1.796 1.995a.75.75 0 0 0 1.114 1.004l2.25-2.5a.75.75 0 0 0-.002-1.007l-2.5-2.75a.75.75 0 0 0-1.06-.05"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-symbol-ref" viewBox="0 0 16 16">
|
|
<path d="M1.5 8c0 1.613.088 2.806.288 3.704.196.88.478 1.381.802 1.706.286.286.71.54 1.41.73V1.86c-.7.19-1.124.444-1.41.73-.324.325-.606.826-.802 1.706C1.588 5.194 1.5 6.387 1.5 8m4 6.397c.697.07 1.522.103 2.5.103 1.613 0 2.806-.088 3.704-.288.88-.195 1.381-.478 1.706-.802s.607-.826.802-1.706c.2-.898.288-2.091.288-3.704s-.088-2.806-.288-3.704c-.195-.88-.478-1.381-.802-1.706s-.826-.606-1.706-.802C10.806 1.588 9.613 1.5 8 1.5c-.978 0-1.803.033-2.5.103zM0 8c0-6.588 1.412-8 8-8s8 1.412 8 8-1.412 8-8 8-8-1.412-8-8m7-2a1 1 0 0 1 1-1h3a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1z"/>
|
|
</symbol>
|
|
</svg><style data-core-css="">@layer base, theme, rendered, unsafe;
|
|
@layer base,theme,rendered,unsafe;@layer base{:host{--diffs-font-fallback:"SF Mono", Monaco, Consolas, "Ubuntu Mono", "Liberation Mono", "Courier New", monospace;--diffs-header-font-fallback:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif;--diffs-mixer:light-dark(#000,#fff);--diffs-gap-fallback:8px;--diffs-scrollbar-gutter-fallback:6px;--diffs-scrollbar-gutter:var(--diffs-scrollbar-gutter-override,var(--diffs-scrollbar-gutter-measured,var(--diffs-scrollbar-gutter-fallback)));--diffs-added-light:#0dbe4e;--diffs-added-dark:#5ecc71;--diffs-modified-light:#009fff;--diffs-modified-dark:#69b1ff;--diffs-deleted-light:#ff2e3f;--diffs-deleted-dark:#ff6762;color-scheme:light dark;font-family:var(--diffs-header-font-family,var(--diffs-header-font-fallback));font-size:var(--diffs-font-size,13px);line-height:var(--diffs-line-height,20px);font-feature-settings:var(--diffs-font-features);--diffs-bg:light-dark(var(--diffs-light-bg,#fff),var(--diffs-dark-bg,#000));--diffs-bg-buffer:var(--diffs-bg-buffer-override,light-dark(color-mix(in lab, var(--diffs-bg) 92%, var(--diffs-mixer)),color-mix(in lab, var(--diffs-bg) 92%, var(--diffs-mixer))));--diffs-bg-context:var(--diffs-bg-context-override,light-dark(color-mix(in lab, var(--diffs-bg) 98.5%, var(--diffs-mixer)),color-mix(in lab, var(--diffs-bg) 92.5%, var(--diffs-mixer))));--diffs-bg-context-gutter:var(--diffs-bg-context-gutter-override,light-dark(color-mix(in lab, var(--diffs-bg-context) 90%, var(--diffs-bg)),color-mix(in lab, var(--diffs-bg-context) 45%, var(--diffs-bg))));--diffs-bg-separator:var(--diffs-bg-separator-override,light-dark(color-mix(in lab, var(--diffs-bg) 96%, var(--diffs-mixer)),color-mix(in lab, var(--diffs-bg) 85%, var(--diffs-mixer))));--diffs-fg:light-dark(var(--diffs-light,#000),var(--diffs-dark,#fff));--diffs-fg-number:var(--diffs-fg-number-override,light-dark(color-mix(in lab, var(--diffs-fg) 65%, var(--diffs-bg)),color-mix(in lab, var(--diffs-fg) 65%, var(--diffs-bg))));--diffs-fg-conflict-marker:var(--diffs-fg-conflict-marker-override,var(--diffs-fg-number));--diffs-deletion-base:var(--diffs-deletion-color-override,light-dark(var(--diffs-light-deletion-color,var(--diffs-deletion-color,var(--diffs-deleted-light))),var(--diffs-dark-deletion-color,var(--diffs-deletion-color,var(--diffs-deleted-dark)))));--diffs-addition-base:var(--diffs-addition-color-override,light-dark(var(--diffs-light-addition-color,var(--diffs-addition-color,var(--diffs-added-light))),var(--diffs-dark-addition-color,var(--diffs-addition-color,var(--diffs-added-dark)))));--diffs-modified-base:var(--diffs-modified-color-override,light-dark(var(--diffs-light-modified-color,var(--diffs-modified-color,var(--diffs-modified-light))),var(--diffs-dark-modified-color,var(--diffs-modified-color,var(--diffs-modified-dark)))));--diffs-bg-deletion:var(--diffs-bg-deletion-override,light-dark(color-mix(in lab, var(--diffs-bg) 88%, var(--diffs-deletion-base)),color-mix(in lab, var(--diffs-bg) 80%, var(--diffs-deletion-base))));--diffs-bg-deletion-emphasis:var(--diffs-bg-deletion-emphasis-override,light-dark(rgb(from var(--diffs-deletion-base) r g b / .15),rgb(from var(--diffs-deletion-base) r g b / .2)));--diffs-bg-addition:var(--diffs-bg-addition-override,light-dark(color-mix(in lab, var(--diffs-bg) 88%, var(--diffs-addition-base)),color-mix(in lab, var(--diffs-bg) 80%, var(--diffs-addition-base))));--diffs-bg-addition-emphasis:var(--diffs-bg-addition-emphasis-override,light-dark(rgb(from var(--diffs-addition-base) r g b / .15),rgb(from var(--diffs-addition-base) r g b / .2)));--diffs-selection-base:var(--diffs-modified-base);--diffs-selection-number-fg:light-dark(color-mix(in lab, var(--diffs-selection-base) 65%, var(--diffs-mixer)),color-mix(in lab, var(--diffs-selection-base) 75%, var(--diffs-mixer)));background-color:var(--diffs-bg);color:var(--diffs-fg);display:block}pre,code,[data-error-wrapper]{isolation:isolate;font-family:var(--diffs-font-family,var(--diffs-font-fallback));outline:none;margin:0;padding:0;display:block}pre,code{background-color:var(--diffs-bg)}code{contain:content}*,:before,:after{box-sizing:border-box}[data-icon-sprite]{display:none}[data-diffs-header],[data-separator]{font-family:var(--diffs-header-font-family,var(--diffs-header-font-fallback))}[data-diffs-header][data-sticky]{z-index:1;background-color:var(--diffs-bg);position:sticky;top:0}[data-file-info]{color:var(--fg);background-color:color-mix(in lab, var(--bg) 98%, var(--fg));border-block:1px solid color-mix(in lab, var(--bg) 95%, var(--fg));padding:10px;font-weight:700}[data-diff],[data-file]{--diffs-grid-number-column-width:minmax(min-content, max-content);--diffs-code-grid:var(--diffs-grid-number-column-width) 1fr}[data-dehydrated]:is([data-diff],[data-file]){--diffs-code-grid:var(--diffs-grid-number-column-width) minmax(0, 1fr)}:is([data-diff],[data-file]):hover [data-code]::-webkit-scrollbar-thumb{background-color:var(--diffs-bg-context)}@supports (-webkit-touch-callout:none){:host{--diffs-scrollbar-gutter-fallback:0px}}[data-line] span{color:light-dark(var(--diffs-token-light,var(--diffs-light)),var(--diffs-token-dark,var(--diffs-dark)));background-color:light-dark(var(--diffs-token-light-bg,inherit),var(--diffs-token-dark-bg,inherit));font-weight:light-dark(var(--diffs-token-light-font-weight,inherit),var(--diffs-token-dark-font-weight,inherit));font-style:light-dark(var(--diffs-token-light-font-style,inherit),var(--diffs-token-dark-font-style,inherit));-webkit-text-decoration:light-dark(var(--diffs-token-light-text-decoration,inherit),var(--diffs-token-dark-text-decoration,inherit));text-decoration:light-dark(var(--diffs-token-light-text-decoration,inherit),var(--diffs-token-dark-text-decoration,inherit))}[data-line],[data-gutter-buffer],[data-column-number],[data-line-annotation],[data-no-newline],[data-merge-conflict],[data-merge-conflict-actions]{--diffs-computed-decoration-bg:var(--diffs-bg);--diffs-computed-diff-line-bg:var(--diffs-bg);--diffs-computed-selected-line-bg:var(--diffs-bg);color:var(--diffs-fg);background-color:var(--diffs-line-bg,var(--diffs-bg))}@media (pointer:fine){:is([data-line],[data-gutter-buffer],[data-column-number],[data-line-annotation],[data-no-newline],[data-merge-conflict],[data-merge-conflict-actions]):where([data-hovered]){--diffs-computed-hovered-line-bg:light-dark(color-mix(in lab, var(--diffs-computed-selected-line-bg) 97%, var(--diffs-bg-hover-override,var(--diffs-mixer))),color-mix(in lab, var(--diffs-computed-selected-line-bg) 91%, var(--diffs-bg-hover-override,var(--diffs-mixer))));--diffs-line-bg:var(--diffs-computed-hovered-line-bg,inherit)}}[data-decoration-bg]:is([data-line],[data-no-newline]){--mix-deco-light:92%;--mix-deco-dark:85%}[data-decoration-bg][data-decoration-bg-depth="2"]:is([data-line],[data-no-newline]){--mix-deco-light:88%;--mix-deco-dark:80%}[data-decoration-bg][data-decoration-bg-depth="3"]:is([data-line],[data-no-newline]){--mix-deco-light:85%;--mix-deco-dark:78%}@media (pointer:fine){[data-decoration-bg][data-hovered]:is([data-line],[data-no-newline]):not([data-selected-line]){--mix-deco-light:85%;--mix-deco-dark:85%}[data-decoration-bg][data-hovered][data-decoration-bg-depth="2"]:is([data-line],[data-no-newline]):not([data-selected-line]){--mix-deco-light:83%;--mix-deco-dark:83%}[data-decoration-bg][data-hovered][data-decoration-bg-depth="3"]:is([data-line],[data-no-newline]):not([data-selected-line]){--mix-deco-light:81%;--mix-deco-dark:81%}}[data-decoration-bg]:is([data-line],[data-no-newline]){--diffs-computed-decoration-bg:light-dark(color-mix(in lab, var(--diffs-bg) var(--mix-deco-light), var(--diffs-decoration-bg)),color-mix(in lab, var(--diffs-bg) var(--mix-deco-dark), var(--diffs-decoration-bg)));--diffs-computed-diff-line-bg:var(--diffs-computed-decoration-bg);--diffs-computed-selected-line-bg:var(--diffs-computed-decoration-bg);--diffs-line-bg:var(--diffs-computed-decoration-bg)}[data-line-annotation],[data-gutter-buffer=annotation]{--diffs-annotation-bg:var(--diffs-bg-context);--diffs-computed-decoration-bg:var(--diffs-annotation-bg);--diffs-computed-diff-line-bg:var(--diffs-annotation-bg);--diffs-computed-selected-line-bg:var(--diffs-annotation-bg);--diffs-line-bg:var(--diffs-annotation-bg)}[data-merge-conflict-actions],[data-gutter-buffer=merge-conflict-action],[data-gutter-buffer=merge-conflict-marker-base],[data-gutter-buffer=merge-conflict-marker-separator],[data-merge-conflict=marker-base],[data-merge-conflict=marker-separator]{--diffs-computed-decoration-bg:var(--diffs-bg-context);--diffs-computed-diff-line-bg:var(--diffs-bg-context);--diffs-computed-selected-line-bg:var(--diffs-bg-context);--diffs-line-bg:var(--diffs-bg-context)}[data-gutter-buffer=merge-conflict-marker-start],[data-merge-conflict=marker-start]{--diffs-computed-decoration-bg:light-dark(color-mix(in lab, var(--diffs-bg) 78%, var(--conflict-bg-current-header-override,var(--diffs-addition-base))),color-mix(in lab, var(--diffs-bg) 68%, var(--conflict-bg-current-header-override,var(--diffs-addition-base))));--diffs-computed-diff-line-bg:var(--diffs-computed-decoration-bg);--diffs-computed-selected-line-bg:var(--diffs-computed-decoration-bg);--diffs-line-bg:var(--diffs-computed-decoration-bg)}[data-gutter-buffer=merge-conflict-marker-end],[data-merge-conflict=marker-end]{--diffs-computed-decoration-bg:light-dark(color-mix(in lab, var(--diffs-bg) 78%, var(--conflict-bg-incoming-header-override,var(--diffs-modified-base))),color-mix(in lab, var(--diffs-bg) 68%, var(--conflict-bg-incoming-header-override,var(--diffs-modified-base))));--diffs-computed-diff-line-bg:var(--diffs-computed-decoration-bg);--diffs-computed-selected-line-bg:var(--diffs-computed-decoration-bg);--diffs-line-bg:var(--diffs-computed-decoration-bg)}[data-has-merge-conflict] [data-line-annotation],[data-has-merge-conflict] [data-gutter-buffer=annotation]{--diffs-computed-decoration-bg:var(--diffs-bg);--diffs-computed-diff-line-bg:var(--diffs-bg);--diffs-computed-selected-line-bg:var(--diffs-bg);--diffs-line-bg:var(--diffs-bg)}:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number]{--mix-light:91%;--mix-dark:85%}:where([data-background]) [data-line],:where([data-background]) [data-no-newline]{--mix-light:88%;--mix-dark:80%}:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]{--diffs-diff-line-mix-target:var(--diffs-bg)}[data-line-type=change-deletion]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--diffs-diff-line-mix-target:var(--diffs-bg-deletion-override,var(--diffs-deletion-base))}@media (pointer:fine){[data-line-type=change-deletion][data-hovered]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--mix-light:80%;--mix-dark:75%}}[data-line-type=change-deletion]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]):where([data-gutter-buffer],[data-column-number]){color:var(--diffs-fg-number-deletion-override,var(--diffs-deletion-base));--diffs-diff-line-mix-target:var(--diffs-bg-deletion-number-override,var(--diffs-deletion-base))}[data-line-type=change-deletion]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--diffs-computed-diff-line-bg:light-dark(color-mix(in lab, var(--diffs-computed-decoration-bg) var(--mix-light), var(--diffs-diff-line-mix-target)),color-mix(in lab, var(--diffs-computed-decoration-bg) var(--mix-dark), var(--diffs-diff-line-mix-target)));--diffs-computed-selected-line-bg:var(--diffs-computed-diff-line-bg);--diffs-line-bg:var(--diffs-computed-diff-line-bg,inherit)}[data-line-type=change-addition]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--diffs-diff-line-mix-target:var(--diffs-bg-addition-override,var(--diffs-addition-base))}@media (pointer:fine){[data-line-type=change-addition][data-hovered]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--mix-light:80%;--mix-dark:70%}}[data-line-type=change-addition]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]):where([data-gutter-buffer],[data-column-number]){color:var(--diffs-fg-number-addition-override,var(--diffs-addition-base));--diffs-diff-line-mix-target:var(--diffs-bg-addition-number-override,var(--diffs-addition-base))}[data-line-type=change-addition]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--diffs-computed-diff-line-bg:light-dark(color-mix(in lab, var(--diffs-computed-decoration-bg) var(--mix-light), var(--diffs-diff-line-mix-target)),color-mix(in lab, var(--diffs-computed-decoration-bg) var(--mix-dark), var(--diffs-diff-line-mix-target)));--diffs-computed-selected-line-bg:var(--diffs-computed-diff-line-bg);--diffs-line-bg:var(--diffs-computed-diff-line-bg,inherit)}[data-merge-conflict=current]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--diffs-diff-line-mix-target:var(--conflict-bg-current-override,var(--diffs-addition-base))}[data-merge-conflict=current]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]):where([data-gutter-buffer],[data-column-number]){color:var(--diffs-fg-number-addition-override,var(--diffs-addition-base));--diffs-diff-line-mix-target:var(--conflict-bg-current-number-override,var(--diffs-addition-base))}@media (pointer:fine){[data-merge-conflict=current][data-hovered]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--mix-light:80%;--mix-dark:70%}}[data-merge-conflict=current]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--diffs-computed-diff-line-bg:light-dark(color-mix(in lab, var(--diffs-computed-decoration-bg) var(--mix-light), var(--diffs-diff-line-mix-target)),color-mix(in lab, var(--diffs-computed-decoration-bg) var(--mix-dark), var(--diffs-diff-line-mix-target)));--diffs-computed-selected-line-bg:var(--diffs-computed-diff-line-bg);--diffs-line-bg:var(--diffs-computed-diff-line-bg,inherit)}[data-merge-conflict=incoming]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--diffs-diff-line-mix-target:var(--conflict-bg-incoming-override,var(--diffs-modified-base))}[data-merge-conflict=incoming]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]):where([data-gutter-buffer],[data-column-number]){color:var(--diffs-modified-base);--diffs-diff-line-mix-target:var(--conflict-bg-incoming-number-override,var(--diffs-modified-base))}@media (pointer:fine){[data-merge-conflict=incoming][data-hovered]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--mix-light:80%;--mix-dark:70%}}[data-merge-conflict=incoming]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--diffs-computed-diff-line-bg:light-dark(color-mix(in lab, var(--diffs-computed-decoration-bg) var(--mix-light), var(--diffs-diff-line-mix-target)),color-mix(in lab, var(--diffs-computed-decoration-bg) var(--mix-dark), var(--diffs-diff-line-mix-target)));--diffs-computed-selected-line-bg:var(--diffs-computed-diff-line-bg);--diffs-line-bg:var(--diffs-computed-diff-line-bg,inherit)}[data-gutter-buffer],[data-column-number],[data-line],[data-line-annotation],[data-merge-conflict],[data-merge-conflict-actions],[data-no-newline]{--diffs-selection-mix-target:var(--diffs-bg-selection-override,var(--diffs-selection-base))}[data-selected-line]:is([data-gutter-buffer],[data-column-number],[data-line],[data-line-annotation],[data-merge-conflict],[data-merge-conflict-actions],[data-no-newline]):where([data-line],[data-line-annotation],[data-merge-conflict],[data-merge-conflict-actions],[data-no-newline]){--mix-selection-light:82%;--mix-selection-dark:75%}@media (pointer:fine){[data-selected-line][data-hovered]:is([data-gutter-buffer],[data-column-number],[data-line],[data-line-annotation],[data-merge-conflict],[data-merge-conflict-actions],[data-no-newline]):where([data-line],[data-line-annotation],[data-merge-conflict],[data-merge-conflict-actions],[data-no-newline]):not([data-merge-conflict],[data-line-type=change-addition],[data-line-type=change-deletion]){--mix-selection-light:75%;--mix-selection-dark:70%}}[data-selected-line]:is([data-gutter-buffer],[data-column-number],[data-line],[data-line-annotation],[data-merge-conflict],[data-merge-conflict-actions],[data-no-newline]):where([data-gutter-buffer],[data-column-number]){--mix-selection-light:75%;--mix-selection-dark:60%;--diffs-selection-mix-target:var(--diffs-bg-selection-number-override,var(--diffs-selection-base))}@media (pointer:fine){[data-selected-line][data-hovered]:is([data-gutter-buffer],[data-column-number],[data-line],[data-line-annotation],[data-merge-conflict],[data-merge-conflict-actions],[data-no-newline]):where([data-gutter-buffer],[data-column-number]):not([data-merge-conflict],[data-line-type=change-addition],[data-line-type=change-deletion]){--mix-selection-light:70%;--mix-selection-dark:55%}}[data-selected-line]:is([data-gutter-buffer],[data-column-number],[data-line],[data-line-annotation],[data-merge-conflict],[data-merge-conflict-actions],[data-no-newline]){--diffs-computed-selected-line-bg:light-dark(color-mix(in lab, var(--diffs-computed-diff-line-bg) var(--mix-selection-light), var(--diffs-selection-mix-target)),color-mix(in lab, var(--diffs-computed-diff-line-bg) var(--mix-selection-dark), var(--diffs-selection-mix-target)));--diffs-line-bg:var(--diffs-computed-selected-line-bg,inherit)}[data-selected-line]:is([data-gutter-buffer],[data-column-number]){color:var(--diffs-selection-number-fg)}[data-no-newline]{-webkit-user-select:none;user-select:none}[data-no-newline] span{opacity:.6}[data-diff-type=split][data-overflow=scroll]{grid-template-columns:1fr 1fr;display:grid}[data-diff-type=split][data-overflow=scroll] [data-additions]{border-left:1px solid var(--diffs-bg)}[data-diff-type=split][data-overflow=scroll] [data-deletions]{border-right:1px solid var(--diffs-bg)}[data-code]{grid-auto-flow:dense;grid-template-columns:var(--diffs-code-grid);overflow:var(--diffs-overflow-override,scroll) clip;overscroll-behavior-x:none;tab-size:var(--diffs-tab-size,2);padding-top:var(--diffs-gap-block,var(--diffs-gap-fallback));padding-bottom:max(0px, calc(var(--diffs-gap-block,var(--diffs-gap-fallback)) - var(--diffs-scrollbar-gutter)));scrollbar-gutter:stable;align-self:flex-start;display:grid}[data-diffs-scrollbar-measure]{opacity:0;pointer-events:none;scrollbar-gutter:auto;grid-template-columns:none;width:100px;height:100px;padding:0;position:absolute;top:-200px;left:-200px}[data-container-size]{container-type:inline-size}[data-code]::-webkit-scrollbar{width:0;height:var(--diffs-scrollbar-gutter)}[data-code]::-webkit-scrollbar-track{background:0 0}[data-code]::-webkit-scrollbar-thumb{background-color:#0000;background-clip:content-box;border:1px solid #0000;border-radius:3px}[data-code]::-webkit-scrollbar-corner{background-color:#0000}@supports ((-moz-appearance:none)){[data-code]{scrollbar-width:thin;scrollbar-color:var(--diffs-bg-context) transparent;padding-bottom:var(--diffs-gap-block,var(--diffs-gap-fallback))}}:is([data-diffs-header]~[data-diff],[data-diffs-header]~[data-file]) [data-code],[data-overflow=wrap]:is([data-diffs-header]~[data-diff],[data-diffs-header]~[data-file]){padding-top:0}[data-gutter]{grid-template-rows:subgrid;grid-template-columns:subgrid;z-index:3;background-color:var(--diffs-bg);grid-column:1;display:grid;position:relative}[data-gutter] [data-gutter-buffer],[data-gutter] [data-column-number]{border-right:var(--diffs-gap-style,2px solid var(--diffs-bg))}[data-content]{grid-template-rows:subgrid;grid-template-columns:subgrid;background-color:var(--diffs-bg);grid-column:2;min-width:0;display:grid}[data-diff-type=split][data-overflow=wrap]{grid-auto-flow:dense;grid-template-columns:repeat(2, var(--diffs-code-grid));padding-block:var(--diffs-gap-block,var(--diffs-gap-fallback));display:grid}[data-diff-type=split][data-overflow=wrap] [data-deletions]{display:contents}:is([data-diff-type=split][data-overflow=wrap] [data-deletions]) [data-gutter]{grid-column:1}:is([data-diff-type=split][data-overflow=wrap] [data-deletions]) [data-content]{border-right:1px solid var(--diffs-bg);grid-column:2}[data-diff-type=split][data-overflow=wrap] [data-additions]{display:contents}:is([data-diff-type=split][data-overflow=wrap] [data-additions]) [data-gutter]{border-left:1px solid var(--diffs-bg);grid-column:3}:is([data-diff-type=split][data-overflow=wrap] [data-additions]) [data-content]{grid-column:4}[data-overflow=scroll] [data-gutter]{position:sticky;left:0}[data-interactive-lines] [data-line]{cursor:pointer}[data-interactive-line-numbers] [data-column-number]{cursor:pointer;touch-action:none}[data-content-buffer],[data-gutter-buffer]{-webkit-user-select:none;user-select:none;min-height:1lh;position:relative}[data-gutter-buffer]{padding-left:2ch;padding-right:1ch}[data-gutter-buffer]:before{content:"";min-width:var(--diffs-min-number-column-width,var(--diffs-min-number-column-width-default,3ch));display:block}[data-gutter-buffer=annotation]{--diffs-annotation-bg:var(--diffs-bg-context-gutter);min-height:0}[data-gutter-buffer=buffer]{--diffs-line-bg:var(--diffs-bg-context-gutter)}[data-content-buffer]{background-position:5px 0;background-size:8px 8px;background-origin:border-box;background-image:repeating-linear-gradient(-45deg, transparent, transparent 4.242px, var(--diffs-bg-buffer) 4.242px, var(--diffs-bg-buffer) 5.656px);grid-column:1}[data-separator]{box-sizing:content-box;background-color:var(--diffs-bg)}[data-separator=simple]{min-height:4px}[data-separator=line-info],[data-separator=line-info-basic],[data-separator=metadata],[data-separator=simple]{background-color:var(--diffs-bg-separator)}[data-separator=line-info],[data-separator=line-info-basic],[data-separator=metadata]{height:32px;position:relative}[data-separator-wrapper]{-webkit-user-select:none;user-select:none;fill:currentColor;background-color:var(--diffs-bg);align-items:center;height:100%;display:flex;position:absolute;inset-inline:0}[data-content] [data-separator-wrapper]{display:none}[data-separator=metadata] [data-separator-wrapper]{background-color:var(--diffs-bg-separator);height:100%;color:var(--diffs-fg-number);white-space:nowrap;text-overflow:ellipsis;min-width:min-content;padding-inline:1ch;inset-inline:100% auto;overflow:hidden}[data-separator=line-info]{margin-block:var(--diffs-gap-block,var(--diffs-gap-fallback))}[data-separator=line-info] [data-separator-wrapper]{min-width:16px}[data-separator=line-info-basic],[data-separator=metadata]{margin-block:0}[data-separator=line-info][data-separator-first]{margin-top:0}[data-separator=line-info][data-separator-last]{margin-bottom:0}[data-expand-index] [data-separator-wrapper]{grid-template-columns:32px auto;display:grid}[data-expand-index] [data-separator-wrapper][data-separator-multi-button]{grid-template-columns:32px 32px auto}[data-expand-button],[data-separator-content]{background-color:var(--diffs-bg-separator);flex:none;align-items:center;display:flex}[data-expand-index] [data-separator-content]:hover{cursor:pointer;text-decoration:underline}[data-expand-button]{cursor:pointer;min-width:32px;color:var(--diffs-fg-number);border-right:2px solid var(--diffs-bg);flex-shrink:0;justify-content:center;align-self:stretch}[data-expand-button]:hover{color:var(--diffs-fg)}[data-expand-button][data-expand-all-button]{display:none}[data-expand-down] [data-icon]{transform:scaleY(-1)}[data-separator-content]{height:100%;color:var(--diffs-fg-number);flex:auto;justify-content:flex-start;padding:0 1ch;overflow:hidden}:is([data-separator=line-info],[data-separator=line-info-basic]) [data-separator-content]{-webkit-user-select:none;user-select:none;height:100%;overflow:clip}[data-unmodified-lines]{text-overflow:ellipsis;white-space:nowrap;flex:0 auto;min-width:0;display:block;overflow:hidden}@supports (width:1cqi){[data-unified] [data-separator=line-info] [data-separator-wrapper]{padding-inline:var(--diffs-gap-inline,var(--diffs-gap-fallback));width:100cqi}:is([data-unified] [data-separator=line-info] [data-separator-wrapper]) [data-separator-content]{border-radius:6px}[data-unified] [data-separator=line-info][data-expand-index] [data-separator-wrapper] [data-separator-content]{border-top-left-radius:unset;border-bottom-left-radius:unset}[data-gutter] [data-separator=line-info] [data-separator-wrapper]{padding-left:var(--diffs-gap-inline,var(--diffs-gap-fallback))}[data-gutter] [data-separator=line-info] [data-separator-content]{border-top-left-radius:6px;border-bottom-left-radius:6px}[data-gutter] [data-separator=line-info][data-expand-index] [data-separator-content]{border-top-left-radius:unset;border-bottom-left-radius:unset}[data-additions] [data-content] [data-separator=line-info]{background-color:var(--diffs-bg)}:is([data-additions] [data-content] [data-separator=line-info]) [data-separator-wrapper]{display:none}[data-additions] [data-gutter] [data-separator=line-info] [data-separator-wrapper]{background-color:var(--diffs-bg-separator);border-top-right-radius:6px;border-bottom-right-radius:6px;height:100%;display:block}:is([data-additions] [data-gutter] [data-separator=line-info] [data-separator-wrapper]) [data-separator-content],:is([data-additions] [data-gutter] [data-separator=line-info] [data-separator-wrapper]) [data-expand-button]{display:none}[data-overflow=scroll] [data-additions] [data-gutter] [data-separator=line-info] [data-separator-wrapper]{width:calc(100cqi - var(--diffs-gap-inline,var(--diffs-gap-fallback)))}[data-overflow=wrap] [data-additions] [data-content] [data-separator=line-info] [data-separator-wrapper]{background-color:var(--diffs-bg-separator);height:100%;margin-right:var(--diffs-gap-inline,var(--diffs-gap-fallback));border-top-right-radius:6px;border-bottom-right-radius:6px;display:block}:is([data-overflow=wrap] [data-additions] [data-content] [data-separator=line-info] [data-separator-wrapper]) [data-separator-content],:is([data-overflow=wrap] [data-additions] [data-content] [data-separator=line-info] [data-separator-wrapper]) [data-expand-button]{display:none}:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-both],:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-down],:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-up]{border-top-left-radius:6px;border-bottom-left-radius:6px}@media (pointer:fine){[data-separator-multi-button]:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-up]{border-top-left-radius:6px;border-bottom-left-radius:unset}[data-separator-multi-button]:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-down]{border-bottom-left-radius:6px;border-top-left-radius:unset}}}@media (pointer:coarse){[data-separator=line-info-basic] [data-separator-wrapper][data-separator-multi-button]{grid-template-columns:34px 34px auto}:is([data-separator=line-info-basic] [data-separator-wrapper][data-separator-multi-button]) [data-separator-content]{grid-column:unset;grid-row:unset}@supports (width:1cqi){:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-both],:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-down],:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-up],[data-separator-multi-button]:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-up]{border-top-left-radius:6px;border-bottom-left-radius:6px}[data-separator-multi-button]:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-down]{border-bottom-left-radius:unset;border-top-left-radius:unset}}}@media (pointer:fine){[data-separator-wrapper][data-separator-multi-button]{grid-template-rows:50% 50%;display:grid}[data-separator-wrapper][data-separator-multi-button] [data-separator-content]{grid-area:1/2/-1;min-width:min-content}[data-separator-wrapper][data-separator-multi-button] [data-expand-button]{grid-column:1}[data-separator=line-info] [data-separator-wrapper],[data-separator=line-info] [data-separator-wrapper][data-separator-multi-button]{grid-template-columns:34px auto}[data-separator=line-info-basic][data-expand-index] [data-separator-wrapper]{grid-template-columns:100% auto}:is(:is([data-separator=line-info],[data-separator=line-info-basic]) [data-separator-multi-button]) [data-expand-up]{border-bottom:1px solid var(--diffs-bg);border-right:2px solid var(--diffs-bg)}:is(:is([data-separator=line-info],[data-separator=line-info-basic]) [data-separator-multi-button]) [data-expand-down]{border-top:1px solid var(--diffs-bg);border-right:2px solid var(--diffs-bg)}}[data-additions] [data-gutter] [data-separator-wrapper],[data-additions] [data-separator=line-info-basic] [data-separator-wrapper],[data-content] [data-separator-wrapper]{display:none}[data-line-annotation]{min-height:var(--diffs-annotation-min-height,0);z-index:2}[data-merge-conflict-actions]{z-index:2}[data-separator=custom]{grid-template-columns:subgrid;display:grid}[data-line],[data-column-number],[data-no-newline]{padding-inline:1ch;position:relative}[data-indicators=classic] [data-line]{padding-inline-start:2ch}:is([data-no-newline]:is([data-indicators=classic] [data-line-type=change-addition],[data-indicators=classic] [data-line-type=change-deletion]),[data-line]:is([data-indicators=classic] [data-line-type=change-addition],[data-indicators=classic] [data-line-type=change-deletion])):before{-webkit-user-select:none;user-select:none;width:1ch;height:1lh;display:inline-block;position:absolute;top:0;left:0}:is([data-line]:is([data-indicators=classic] [data-line-type=change-addition]),[data-no-newline]:is([data-indicators=classic] [data-line-type=change-addition])):before{content:"+";color:var(--diffs-addition-base)}:is([data-line]:is([data-indicators=classic] [data-line-type=change-deletion]),[data-no-newline]:is([data-indicators=classic] [data-line-type=change-deletion])):before{content:"-";color:var(--diffs-deletion-base)}[data-column-number]:is([data-indicators=bars] [data-line-type=change-deletion],[data-indicators=bars] [data-line-type=change-addition]):before{content:"";-webkit-user-select:none;user-select:none;contain:strict;width:4px;height:100%;display:block;position:absolute;top:0;left:0}[data-column-number]:is([data-indicators=bars] [data-line-type=change-deletion]):before{background-image:linear-gradient(0deg, var(--diffs-bg-deletion) 50%, var(--diffs-deletion-base) 50%);background-repeat:repeat;background-size:2px 2px;background-size:calc(1lh/round(1lh / 2px)) calc(1lh/round(1lh / 2px))}[data-column-number]:is([data-indicators=bars] [data-line-type=change-addition]):before{background-color:var(--diffs-addition-base)}[data-overflow=wrap] [data-line],[data-overflow=wrap] [data-annotation-content]{white-space:pre-wrap;word-break:break-word}[data-overflow=scroll] [data-line]{white-space:pre;min-height:1lh}[data-column-number]{box-sizing:content-box;text-align:right;-webkit-user-select:none;user-select:none;color:var(--diffs-fg-number);padding-left:2ch}[data-line-number-content]{min-width:var(--diffs-min-number-column-width,var(--diffs-min-number-column-width-default,3ch));z-index:1;display:inline-block;position:relative}[data-disable-line-numbers] [data-gutter-buffer],[data-disable-line-numbers] [data-column-number]{min-width:4px;padding:0}:is([data-disable-line-numbers] [data-gutter-buffer],[data-disable-line-numbers] [data-column-number]):before{min-width:0}[data-disable-line-numbers] [data-line-number-content]{display:none}[data-disable-line-numbers] [data-gutter-utility-slot]{right:unset;justify-content:flex-start;left:0}[data-disable-line-numbers][data-indicators=bars] [data-gutter-utility-slot]{left:6px}[data-file][data-disable-line-numbers] [data-gutter-buffer],[data-file][data-disable-line-numbers] [data-column-number]{border-right:0;min-width:0}[data-diff-span]{-webkit-box-decoration-break:clone;box-decoration-break:clone;border-radius:3px}[data-line-type=change-addition] [data-diff-span]{background-color:var(--diffs-bg-addition-emphasis)}[data-line-type=change-deletion] [data-diff-span]{background-color:var(--diffs-bg-deletion-emphasis)}[data-merge-conflict=marker-start],[data-merge-conflict=marker-base],[data-merge-conflict=marker-separator],[data-merge-conflict=marker-end]{color:var(--diffs-fg);padding-left:1ch}[data-merge-conflict=marker-start],[data-merge-conflict=marker-end]{align-items:center;display:flex}:is([data-merge-conflict=marker-start],[data-merge-conflict=marker-end]):after{color:var(--diffs-fg-conflict-marker);font-size:.75rem;font-style:normal;line-height:1.25rem;font-family:var(--diffs-header-font-family,var(--diffs-header-font-fallback));padding-left:1ch}[data-merge-conflict=marker-start]:after{content:"(Current Change)"}[data-merge-conflict=marker-end]:after{content:"(Incoming Change)"}[data-merge-conflict-actions-content]{min-height:1.75rem;font-family:var(--diffs-header-font-family,var(--diffs-header-font-fallback));color:var(--diffs-fg);align-items:center;gap:.25rem;padding-inline:.5rem;font-size:.75rem;line-height:1.2;display:flex}[data-merge-conflict-action]{appearance:none;color:var(--diffs-fg-number);font:inherit;cursor:pointer;background:0 0;border:0;padding:0;font-style:normal}[data-merge-conflict-action]:hover{color:var(--diffs-fg)}[data-merge-conflict-action=current]:hover{color:var(--diffs-addition-base)}[data-merge-conflict-action=incoming]:hover{color:var(--diffs-modified-base)}[data-merge-conflict-action-separator]{color:var(--diffs-fg-number);opacity:.6;-webkit-user-select:none;user-select:none}[data-diffs-header=default]{background-color:var(--diffs-bg);justify-content:space-between;align-items:center;gap:var(--diffs-gap-inline,var(--diffs-gap-fallback));min-height:calc(1lh + var(--diffs-gap-block,var(--diffs-gap-fallback))*3);z-index:2;flex-direction:row;padding-inline:16px;display:flex;position:relative;top:0}[data-header-content]{align-items:center;gap:var(--diffs-gap-inline,var(--diffs-gap-fallback));white-space:nowrap;flex-direction:row;min-width:0;display:flex}[data-header-content] [data-prev-name],[data-header-content] [data-title]{text-overflow:ellipsis;white-space:nowrap;direction:rtl;min-width:0;overflow:hidden}[data-prev-name]{opacity:.7}[data-rename-icon]{fill:currentColor;flex-grow:0;flex-shrink:0}[data-diffs-header=default] [data-metadata]{white-space:nowrap;align-items:center;gap:1ch;display:flex}[data-diffs-header=default] [data-additions-count]{font-family:var(--diffs-font-family,var(--diffs-font-fallback));color:var(--diffs-addition-base)}[data-diffs-header=default] [data-deletions-count]{font-family:var(--diffs-font-family,var(--diffs-font-fallback));color:var(--diffs-deletion-base)}[data-change-icon]{fill:currentColor;flex-shrink:0}[data-change-icon=change],[data-change-icon=rename-pure],[data-change-icon=rename-changed]{color:var(--diffs-modified-base)}[data-change-icon=new]{color:var(--diffs-addition-base)}[data-change-icon=deleted]{color:var(--diffs-deletion-base)}[data-change-icon=file]{opacity:.6}[data-annotation-content]{z-index:2;isolation:isolate;align-self:flex-start;min-width:0;display:flow-root;position:relative}[data-overflow=scroll] [data-annotation-content],[data-overflow=scroll] [data-merge-conflict-actions-content]{width:var(--diffs-column-content-width,auto);left:var(--diffs-column-number-width,0);position:sticky}[data-annotation-slot]{text-wrap-mode:wrap;word-break:normal;white-space-collapse:collapse}[data-gutter-utility-slot]{touch-action:none;justify-content:flex-end;display:flex;position:absolute;top:0;bottom:0;right:0}[data-utility-button]{appearance:none;cursor:pointer;width:1lh;height:1lh;font-size:var(--diffs-font-size,13px);line-height:var(--diffs-line-height,20px);background-color:var(--diffs-modified-base);color:var(--diffs-bg);fill:currentColor;z-index:4;touch-action:none;border:none;border-radius:4px;justify-content:center;align-items:center;margin-right:calc(1ch - 1lh);padding:0;display:flex;position:relative}[data-utility-button]:before{content:"";display:block;position:absolute;inset:0 0 0 -4px}[data-decoration-bar-stack]{pointer-events:none;isolation:isolate;z-index:1;background-color:var(--diffs-decoration-bar-color,transparent);box-sizing:content-box;border-left:2px solid var(--diffs-bg);border-right:2px solid var(--diffs-bg);width:6px;position:absolute;top:0;bottom:0;right:-2px}[data-decoration-bar-depth="1"] [data-decoration-bar-stack]{background-color:color-mix(in lab, var(--diffs-bg) 20%, var(--diffs-decoration-bar-color,transparent))}[data-decoration-bar-depth="2"] [data-decoration-bar-stack]{background-color:color-mix(in lab, var(--diffs-bg) 45%, var(--diffs-decoration-bar-color,transparent))}[data-decoration-bar-depth="3"] [data-decoration-bar-stack]{background-color:color-mix(in lab, var(--diffs-bg) 65%, var(--diffs-decoration-bar-color,transparent))}[data-decoration-bar-start] [data-decoration-bar-stack]{border-top-left-radius:5px;border-top-right-radius:5px}[data-decoration-bar-end] [data-decoration-bar-stack]{z-index:3;border-bottom-right-radius:5px;border-bottom-left-radius:5px}[data-placeholder]{contain:strict}[data-error-wrapper]{padding:var(--diffs-gap-block,var(--diffs-gap-fallback)) var(--diffs-gap-inline,var(--diffs-gap-fallback));scrollbar-width:none;max-height:400px;overflow:auto}[data-error-wrapper] [data-error-message]{color:var(--diffs-deletion-base);font-size:18px;font-weight:700}[data-error-wrapper] [data-error-stack]{color:var(--diffs-fg-number)}}@layer theme,rendered,unsafe;
|
|
@layer theme {
|
|
|
|
}</style><style data-theme-css="">@layer base, theme, rendered, unsafe;
|
|
@layer rendered {
|
|
:host {
|
|
--diffs-scrollbar-gutter-measured: var(--diffs-scrollbar-gutter-fallback);
|
|
--diffs-dark:#fafafa;--diffs-dark-bg:#0a0a0a;--diffs-dark-addition-color:#07c480;--diffs-dark-deletion-color:#ff2e3f;--diffs-dark-modified-color:#009fff;--diffs-light:#0a0a0a;--diffs-light-bg:#ffffff;--diffs-light-addition-color:#18a46c;--diffs-light-deletion-color:#d52c36;--diffs-light-modified-color:#009fff;
|
|
}
|
|
}</style><div data-diffs-header="default" data-change-type="change"><div data-header-content=""><slot name="header-prefix"></slot><svg width="16" height="16" viewBox="0 0 16 16" data-change-icon="change"><use href="#diffs-icon-symbol-modified"></use></svg><div data-title=""><bdi>Dreamio/StreamCandidate.swift</bdi></div></div><div data-metadata=""><span data-deletions-count="">-4</span><span data-additions-count="">+22</span><slot name="header-metadata"></slot></div></div><pre data-diff="" data-diff-type="split" data-overflow="scroll" data-background="" data-indicators="bars" tabindex="0" style="--diffs-min-number-column-width-default:3ch;" data-dehydrated=""><code data-code="" data-container-size="" data-deletions=""><div data-gutter="" style="grid-row: span 50"><div data-separator="line-info" data-separator-first=""><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">131 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="132" data-line-index="131,131"><span data-line-number-content="">132</span></div><div data-line-type="context" data-column-number="133" data-line-index="132,132"><span data-line-number-content="">133</span></div><div data-line-type="context" data-column-number="134" data-line-index="133,133"><span data-line-number-content="">134</span></div><div data-line-type="change-deletion" data-column-number="135" data-line-index="134,134"><span data-line-number-content="">135</span></div><div data-line-type="change-deletion" data-column-number="136" data-line-index="135,135"><span data-line-number-content="">136</span></div><div data-line-type="context" data-column-number="137" data-line-index="138,136"><span data-line-number-content="">137</span></div><div data-line-type="context" data-column-number="138" data-line-index="139,137"><span data-line-number-content="">138</span></div><div data-line-type="context" data-column-number="139" data-line-index="140,138"><span data-line-number-content="">139</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">54 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="194" data-line-index="195,193"><span data-line-number-content="">194</span></div><div data-line-type="context" data-column-number="195" data-line-index="196,194"><span data-line-number-content="">195</span></div><div data-line-type="context" data-column-number="196" data-line-index="197,195"><span data-line-number-content="">196</span></div><div data-line-type="change-deletion" data-column-number="197" data-line-index="198,196"><span data-line-number-content="">197</span></div><div data-gutter-buffer="buffer" data-buffer-size="2" style="grid-row: span 2;min-height:calc(2 * 1lh);"></div><div data-line-type="context" data-column-number="198" data-line-index="202,199"><span data-line-number-content="">198</span></div><div data-line-type="context" data-column-number="199" data-line-index="203,200"><span data-line-number-content="">199</span></div><div data-line-type="context" data-column-number="200" data-line-index="204,201"><span data-line-number-content="">200</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">13 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="214" data-line-index="218,215"><span data-line-number-content="">214</span></div><div data-line-type="context" data-column-number="215" data-line-index="219,216"><span data-line-number-content="">215</span></div><div data-line-type="context" data-column-number="216" data-line-index="220,217"><span data-line-number-content="">216</span></div><div data-line-type="change-deletion" data-column-number="217" data-line-index="221,218"><span data-line-number-content="">217</span></div><div data-line-type="context" data-column-number="218" data-line-index="223,219"><span data-line-number-content="">218</span></div><div data-line-type="context" data-column-number="219" data-line-index="224,220"><span data-line-number-content="">219</span></div><div data-line-type="context" data-column-number="220" data-line-index="225,221"><span data-line-number-content="">220</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">33 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="254" data-line-index="259,255"><span data-line-number-content="">254</span></div><div data-line-type="context" data-column-number="255" data-line-index="260,256"><span data-line-number-content="">255</span></div><div data-line-type="context" data-column-number="256" data-line-index="261,257"><span data-line-number-content="">256</span></div><div data-gutter-buffer="buffer" data-buffer-size="16" style="grid-row: span 16;min-height:calc(16 * 1lh);"></div><div data-line-type="context" data-column-number="257" data-line-index="278,274"><span data-line-number-content="">257</span></div><div data-line-type="context" data-column-number="258" data-line-index="279,275"><span data-line-number-content="">258</span></div><div data-line-type="context" data-column-number="259" data-line-index="280,276"><span data-line-number-content="">259</span></div></div><div data-content="" style="grid-row: span 50"><div data-separator="line-info" data-separator-first=""><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">131 unmodified lines</span></div></div></div><div data-line="132" data-alt-line="132" data-line-type="context" data-line-index="131,131">
|
|
</div><div data-line="133" data-alt-line="133" data-line-type="context" data-line-index="132,132"><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE">enum</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> SubtitleCandidateParser</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="134" data-alt-line="134" data-line-type="context" data-line-index="133,133"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> static</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> supportedExtensions </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> [</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"srt"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"vtt"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"ass"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"ssa"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"sub"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">]</span></div><div data-line="135" data-line-type="change-deletion" data-line-index="134,134"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> static</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> urlFields </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> [</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"url"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"href"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"src"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"link"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"subtitles"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"subtitle"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"subtitleUrl"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"subtitleURL"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"file"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"download"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">]</span></div><div data-line="136" data-line-type="change-deletion" data-line-index="135,135"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> static</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> labelFields </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> [</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"label"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"name"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"title"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"file_name"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"lang"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"language"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"id"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">]</span></div><div data-line="137" data-alt-line="137" data-line-type="context" data-line-index="138,136"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> struct</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> CandidateContext</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="138" data-alt-line="138" data-line-type="context" data-line-index="139,137"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label: </span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">String</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span></div><div data-line="139" data-alt-line="139" data-line-type="context" data-line-index="140,138"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> language: </span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">String</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">54 unmodified lines</span></div></div></div><div data-line="194" data-alt-line="194" data-line-type="context" data-line-index="195,193"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="195" data-alt-line="195" data-line-type="context" data-line-index="196,194">
|
|
</div><div data-line="196" data-alt-line="196" data-line-type="context" data-line-index="197,195"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> static</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> candidate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">from</span><span style="--diffs-token-dark:#A3A3A3;--diffs-token-light:#636363"> dictionary</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">[</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">String</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> Any</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">]</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">context</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: CandidateContext</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> -></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> SubtitleCandidate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="197" data-line-type="change-deletion" data-line-index="198,196"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> guard</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> url </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> urlFields.lazy.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">compactMap</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">({</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> subtitleURL</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">from</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> dictionary</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">[</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">$0</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">]</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> as?</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> String</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> })</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.first</span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">else</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></span></div><div data-content-buffer="" data-buffer-size="2" style="grid-row: span 2;min-height:calc(2 * 1lh)"></div><div data-line="198" data-alt-line="200" data-line-type="context" data-line-index="202,199"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> nil</span></div><div data-line="199" data-alt-line="201" data-line-type="context" data-line-index="203,200"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="200" data-alt-line="202" data-line-type="context" data-line-index="204,201">
|
|
</div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">13 unmodified lines</span></div></div></div><div data-line="214" data-alt-line="216" data-line-type="context" data-line-index="218,215"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="215" data-alt-line="217" data-line-type="context" data-line-index="219,216">
|
|
</div><div data-line="216" data-alt-line="218" data-line-type="context" data-line-index="220,217"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> static</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> orderedNestedValues</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">in</span><span style="--diffs-token-dark:#A3A3A3;--diffs-token-light:#636363"> dictionary</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">[</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">String</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> Any</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">])</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> -></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> [</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE">Any</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">]</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="217" data-line-type="change-deletion" data-line-index="221,218"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> preferredKeys </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> [</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"subtitles"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"subtitle"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"files"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"downloads"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"download"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">]</span></div><div data-line="218" data-alt-line="220" data-line-type="context" data-line-index="223,219"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> visitedKeys </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> Set</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"><</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">String</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">>()</span></div><div data-line="219" data-alt-line="221" data-line-type="context" data-line-index="224,220"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> values: </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">[</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE">Any</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">]</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> []</span></div><div data-line="220" data-alt-line="222" data-line-type="context" data-line-index="225,221">
|
|
</div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">33 unmodified lines</span></div></div></div><div data-line="254" data-alt-line="256" data-line-type="context" data-line-index="259,255"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> url</span></div><div data-line="255" data-alt-line="257" data-line-type="context" data-line-index="260,256"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="256" data-alt-line="258" data-line-type="context" data-line-index="261,257">
|
|
</div><div data-content-buffer="" data-buffer-size="16" style="grid-row: span 16;min-height:calc(16 * 1lh)"></div><div data-line="257" data-alt-line="275" data-line-type="context" data-line-index="278,274"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> static</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> defaultLabel</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">for</span><span style="--diffs-token-dark:#A3A3A3;--diffs-token-light:#636363"> url</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: URL</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> -></span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> String</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="258" data-alt-line="276" data-line-type="context" data-line-index="279,275"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> lastPathComponent </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> url.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">deletingPathExtension</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">lastPathComponent</span></div><div data-line="259" data-alt-line="277" data-line-type="context" data-line-index="280,276"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> lastPathComponent.isEmpty </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "External Subtitle"</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> :</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> lastPathComponent</span></div></div></code><code data-code="" data-container-size="" data-additions=""><div data-gutter="" style="grid-row: span 50"><div data-separator="line-info" data-separator-first=""><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">131 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="132" data-line-index="131,131"><span data-line-number-content="">132</span></div><div data-line-type="context" data-column-number="133" data-line-index="132,132"><span data-line-number-content="">133</span></div><div data-line-type="context" data-column-number="134" data-line-index="133,133"><span data-line-number-content="">134</span></div><div data-line-type="change-addition" data-column-number="135" data-line-index="136,134"><span data-line-number-content="">135</span></div><div data-line-type="change-addition" data-column-number="136" data-line-index="137,135"><span data-line-number-content="">136</span></div><div data-line-type="context" data-column-number="137" data-line-index="138,136"><span data-line-number-content="">137</span></div><div data-line-type="context" data-column-number="138" data-line-index="139,137"><span data-line-number-content="">138</span></div><div data-line-type="context" data-column-number="139" data-line-index="140,138"><span data-line-number-content="">139</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">54 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="194" data-line-index="195,193"><span data-line-number-content="">194</span></div><div data-line-type="context" data-column-number="195" data-line-index="196,194"><span data-line-number-content="">195</span></div><div data-line-type="context" data-column-number="196" data-line-index="197,195"><span data-line-number-content="">196</span></div><div data-line-type="change-addition" data-column-number="197" data-line-index="199,196"><span data-line-number-content="">197</span></div><div data-line-type="change-addition" data-column-number="198" data-line-index="200,197"><span data-line-number-content="">198</span></div><div data-line-type="change-addition" data-column-number="199" data-line-index="201,198"><span data-line-number-content="">199</span></div><div data-line-type="context" data-column-number="200" data-line-index="202,199"><span data-line-number-content="">200</span></div><div data-line-type="context" data-column-number="201" data-line-index="203,200"><span data-line-number-content="">201</span></div><div data-line-type="context" data-column-number="202" data-line-index="204,201"><span data-line-number-content="">202</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">13 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="216" data-line-index="218,215"><span data-line-number-content="">216</span></div><div data-line-type="context" data-column-number="217" data-line-index="219,216"><span data-line-number-content="">217</span></div><div data-line-type="context" data-column-number="218" data-line-index="220,217"><span data-line-number-content="">218</span></div><div data-line-type="change-addition" data-column-number="219" data-line-index="222,218"><span data-line-number-content="">219</span></div><div data-line-type="context" data-column-number="220" data-line-index="223,219"><span data-line-number-content="">220</span></div><div data-line-type="context" data-column-number="221" data-line-index="224,220"><span data-line-number-content="">221</span></div><div data-line-type="context" data-column-number="222" data-line-index="225,221"><span data-line-number-content="">222</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">33 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="256" data-line-index="259,255"><span data-line-number-content="">256</span></div><div data-line-type="context" data-column-number="257" data-line-index="260,256"><span data-line-number-content="">257</span></div><div data-line-type="context" data-column-number="258" data-line-index="261,257"><span data-line-number-content="">258</span></div><div data-line-type="change-addition" data-column-number="259" data-line-index="262,258"><span data-line-number-content="">259</span></div><div data-line-type="change-addition" data-column-number="260" data-line-index="263,259"><span data-line-number-content="">260</span></div><div data-line-type="change-addition" data-column-number="261" data-line-index="264,260"><span data-line-number-content="">261</span></div><div data-line-type="change-addition" data-column-number="262" data-line-index="265,261"><span data-line-number-content="">262</span></div><div data-line-type="change-addition" data-column-number="263" data-line-index="266,262"><span data-line-number-content="">263</span></div><div data-line-type="change-addition" data-column-number="264" data-line-index="267,263"><span data-line-number-content="">264</span></div><div data-line-type="change-addition" data-column-number="265" data-line-index="268,264"><span data-line-number-content="">265</span></div><div data-line-type="change-addition" data-column-number="266" data-line-index="269,265"><span data-line-number-content="">266</span></div><div data-line-type="change-addition" data-column-number="267" data-line-index="270,266"><span data-line-number-content="">267</span></div><div data-line-type="change-addition" data-column-number="268" data-line-index="271,267"><span data-line-number-content="">268</span></div><div data-line-type="change-addition" data-column-number="269" data-line-index="272,268"><span data-line-number-content="">269</span></div><div data-line-type="change-addition" data-column-number="270" data-line-index="273,269"><span data-line-number-content="">270</span></div><div data-line-type="change-addition" data-column-number="271" data-line-index="274,270"><span data-line-number-content="">271</span></div><div data-line-type="change-addition" data-column-number="272" data-line-index="275,271"><span data-line-number-content="">272</span></div><div data-line-type="change-addition" data-column-number="273" data-line-index="276,272"><span data-line-number-content="">273</span></div><div data-line-type="change-addition" data-column-number="274" data-line-index="277,273"><span data-line-number-content="">274</span></div><div data-line-type="context" data-column-number="275" data-line-index="278,274"><span data-line-number-content="">275</span></div><div data-line-type="context" data-column-number="276" data-line-index="279,275"><span data-line-number-content="">276</span></div><div data-line-type="context" data-column-number="277" data-line-index="280,276"><span data-line-number-content="">277</span></div></div><div data-content="" style="grid-row: span 50"><div data-separator="line-info" data-separator-first=""><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">131 unmodified lines</span></div></div></div><div data-line="132" data-alt-line="132" data-line-type="context" data-line-index="131,131">
|
|
</div><div data-line="133" data-alt-line="133" data-line-type="context" data-line-index="132,132"><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE">enum</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> SubtitleCandidateParser</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="134" data-alt-line="134" data-line-type="context" data-line-index="133,133"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> static</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> supportedExtensions </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> [</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"srt"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"vtt"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"ass"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"ssa"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"sub"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">]</span></div><div data-line="135" data-line-type="change-addition" data-line-index="136,134"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> static</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> urlFields </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> [</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"url"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"href"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"src"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"link"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"subtitles"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"subtitle"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"subtitleUrl"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"subtitleURL"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"file"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"download"</span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"fileUrl"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"fileURL"</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">]</span></div><div data-line="136" data-line-type="change-addition" data-line-index="137,135"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> static</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> labelFields </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> [</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"label"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"name"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"title"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"file_name"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"</span><span data-diff-span=""><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">filename"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"</span></span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">lang"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"language"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"id"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">]</span></div><div data-line="137" data-alt-line="137" data-line-type="context" data-line-index="138,136"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> struct</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> CandidateContext</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="138" data-alt-line="138" data-line-type="context" data-line-index="139,137"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label: </span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">String</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span></div><div data-line="139" data-alt-line="139" data-line-type="context" data-line-index="140,138"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> language: </span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">String</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">54 unmodified lines</span></div></div></div><div data-line="194" data-alt-line="194" data-line-type="context" data-line-index="195,193"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="195" data-alt-line="195" data-line-type="context" data-line-index="196,194">
|
|
</div><div data-line="196" data-alt-line="196" data-line-type="context" data-line-index="197,195"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> static</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> candidate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">from</span><span style="--diffs-token-dark:#A3A3A3;--diffs-token-light:#636363"> dictionary</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">[</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">String</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> Any</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">]</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">context</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: CandidateContext</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> -></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> SubtitleCandidate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="197" data-line-type="change-addition" data-line-index="199,196"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> guard</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> url </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> urlFields.lazy.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">compactMap</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">({</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> subtitleURL</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">from</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> dictionary</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">[</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">$0</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">]</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> as?</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> String</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> })</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.first</span></div><div data-line="198" data-line-type="change-addition" data-line-index="200,197"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> ??</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> openSubtitlesDownloadURL</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">from</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> dictionary</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">[</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"file_id"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">])</span></div><div data-line="199" data-line-type="change-addition" data-line-index="201,198"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> else</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="200" data-alt-line="198" data-line-type="context" data-line-index="202,199"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> nil</span></div><div data-line="201" data-alt-line="199" data-line-type="context" data-line-index="203,200"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="202" data-alt-line="200" data-line-type="context" data-line-index="204,201">
|
|
</div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">13 unmodified lines</span></div></div></div><div data-line="216" data-alt-line="214" data-line-type="context" data-line-index="218,215"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="217" data-alt-line="215" data-line-type="context" data-line-index="219,216">
|
|
</div><div data-line="218" data-alt-line="216" data-line-type="context" data-line-index="220,217"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> static</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> orderedNestedValues</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">in</span><span style="--diffs-token-dark:#A3A3A3;--diffs-token-light:#636363"> dictionary</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">[</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">String</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> Any</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">])</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> -></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> [</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE">Any</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">]</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="219" data-line-type="change-addition" data-line-index="222,218"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> preferredKeys </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> [</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"</span><span data-diff-span=""><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">attributes"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"</span></span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">subtitles"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"subtitle"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"files"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"downloads"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"download"</span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"data"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"results"</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">]</span></div><div data-line="220" data-alt-line="218" data-line-type="context" data-line-index="223,219"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> visitedKeys </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> Set</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"><</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">String</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">>()</span></div><div data-line="221" data-alt-line="219" data-line-type="context" data-line-index="224,220"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> values: </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">[</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE">Any</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">]</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> []</span></div><div data-line="222" data-alt-line="220" data-line-type="context" data-line-index="225,221">
|
|
</div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">33 unmodified lines</span></div></div></div><div data-line="256" data-alt-line="254" data-line-type="context" data-line-index="259,255"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> url</span></div><div data-line="257" data-alt-line="255" data-line-type="context" data-line-index="260,256"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="258" data-alt-line="256" data-line-type="context" data-line-index="261,257">
|
|
</div><div data-line="259" data-line-type="change-addition" data-line-index="262,258"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> static</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> openSubtitlesDownloadURL</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">from</span><span style="--diffs-token-dark:#A3A3A3;--diffs-token-light:#636363"> value</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: </span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE">Any</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> -></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> URL</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="260" data-line-type="change-addition" data-line-index="263,259"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> id: </span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">String</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span></div><div data-line="261" data-line-type="change-addition" data-line-index="264,260"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> if</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> string </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> value </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">as?</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> String</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">!</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">string.isEmpty </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">{</span></div><div data-line="262" data-line-type="change-addition" data-line-index="265,261"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> id </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> string</span></div><div data-line="263" data-line-type="change-addition" data-line-index="266,262"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> else</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> if</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> number </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> value </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">as?</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> NSNumber </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">{</span></div><div data-line="264" data-line-type="change-addition" data-line-index="267,263"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> id </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> number.stringValue</span></div><div data-line="265" data-line-type="change-addition" data-line-index="268,264"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> else</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="266" data-line-type="change-addition" data-line-index="269,265"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> id </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> nil</span></div><div data-line="267" data-line-type="change-addition" data-line-index="270,266"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="268" data-line-type="change-addition" data-line-index="271,267">
|
|
</div><div data-line="269" data-line-type="change-addition" data-line-index="272,268"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> guard</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> id </span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">else</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="270" data-line-type="change-addition" data-line-index="273,269"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> nil</span></div><div data-line="271" data-line-type="change-addition" data-line-index="274,270"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="272" data-line-type="change-addition" data-line-index="275,271"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> URL</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">string</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "https://api.opensubtitles.com/api/v1/download/</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">id</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="273" data-line-type="change-addition" data-line-index="276,272"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="274" data-line-type="change-addition" data-line-index="277,273">
|
|
</div><div data-line="275" data-alt-line="257" data-line-type="context" data-line-index="278,274"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> static</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> defaultLabel</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">for</span><span style="--diffs-token-dark:#A3A3A3;--diffs-token-light:#636363"> url</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: URL</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> -></span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> String</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="276" data-alt-line="258" data-line-type="context" data-line-index="279,275"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> lastPathComponent </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> url.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">deletingPathExtension</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">lastPathComponent</span></div><div data-line="277" data-alt-line="259" data-line-type="context" data-line-index="280,276"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> lastPathComponent.isEmpty </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "External Subtitle"</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> :</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> lastPathComponent</span></div></div></code></pre>
|
|
<svg data-icon-sprite aria-hidden="true" width="0" height="0">
|
|
<symbol id="diffs-icon-arrow-right-short" viewBox="0 0 16 16">
|
|
<path d="M8.47 4.22a.75.75 0 0 0 0 1.06l1.97 1.97H3.75a.75.75 0 0 0 0 1.5h6.69l-1.97 1.97a.75.75 0 1 0 1.06 1.06l3.25-3.25a.75.75 0 0 0 0-1.06L9.53 4.22a.75.75 0 0 0-1.06 0"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-brand-github" viewBox="0 0 16 16">
|
|
<path d="M8 0c4.42 0 8 3.58 8 8a8.01 8.01 0 0 1-5.45 7.59c-.4.08-.55-.17-.55-.38 0-.27.01-1.13.01-2.2 0-.75-.25-1.23-.54-1.48 1.78-.2 3.65-.88 3.65-3.95 0-.88-.31-1.59-.82-2.15.08-.2.36-1.02-.08-2.12 0 0-.67-.22-2.2.82-.64-.18-1.32-.27-2-.27s-1.36.09-2 .27c-1.53-1.03-2.2-.82-2.2-.82-.44 1.1-.16 1.92-.08 2.12-.51.56-.82 1.28-.82 2.15 0 3.06 1.86 3.75 3.64 3.95-.23.2-.44.55-.51 1.07-.46.21-1.61.55-2.33-.66-.15-.24-.6-.83-1.23-.82-.67.01-.27.38.01.53.34.19.73.9.82 1.13.16.45.68 1.31 2.69.94 0 .67.01 1.3.01 1.49 0 .21-.15.45-.55.38A7.995 7.995 0 0 1 0 8c0-4.42 3.58-8 8-8"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-chevron" viewBox="0 0 16 16">
|
|
<path d="M1.47 4.47a.75.75 0 0 1 1.06 0L8 9.94l5.47-5.47a.75.75 0 1 1 1.06 1.06l-6 6a.75.75 0 0 1-1.06 0l-6-6a.75.75 0 0 1 0-1.06"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-chevrons-narrow" viewBox="0 0 10 16">
|
|
<path d="M4.47 2.22a.75.75 0 0 1 1.06 0l3.25 3.25a.75.75 0 0 1-1.06 1.06L5 3.81 2.28 6.53a.75.75 0 0 1-1.06-1.06zM1.22 9.47a.75.75 0 0 1 1.06 0L5 12.19l2.72-2.72a.75.75 0 0 1 1.06 1.06l-3.25 3.25a.75.75 0 0 1-1.06 0l-3.25-3.25a.75.75 0 0 1 0-1.06"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-diff-split" viewBox="0 0 16 16">
|
|
<path d="M14 0H8.5v16H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2m-1.5 6.5v1h1a.5.5 0 0 1 0 1h-1v1a.5.5 0 0 1-1 0v-1h-1a.5.5 0 0 1 0-1h1v-1a.5.5 0 0 1 1 0"/><path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h5.5V0zm.5 7.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1 0-1" opacity=".3"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-diff-unified" viewBox="0 0 16 16">
|
|
<path fill-rule="evenodd" d="M16 14a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V8.5h16zm-8-4a.5.5 0 0 0-.5.5v1h-1a.5.5 0 0 0 0 1h1v1a.5.5 0 0 0 1 0v-1h1a.5.5 0 0 0 0-1h-1v-1A.5.5 0 0 0 8 10" clip-rule="evenodd"/><path fill-rule="evenodd" d="M14 0a2 2 0 0 1 2 2v5.5H0V2a2 2 0 0 1 2-2zM6.5 3.5a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1z" clip-rule="evenodd" opacity=".4"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-expand" viewBox="0 0 16 16">
|
|
<path d="M3.47 5.47a.75.75 0 0 1 1.06 0L8 8.94l3.47-3.47a.75.75 0 1 1 1.06 1.06l-4 4a.75.75 0 0 1-1.06 0l-4-4a.75.75 0 0 1 0-1.06"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-expand-all" viewBox="0 0 16 16">
|
|
<path d="M11.47 9.47a.75.75 0 1 1 1.06 1.06l-4 4a.75.75 0 0 1-1.06 0l-4-4a.75.75 0 1 1 1.06-1.06L8 12.94zM7.526 1.418a.75.75 0 0 1 1.004.052l4 4a.75.75 0 1 1-1.06 1.06L8 3.06 4.53 6.53a.75.75 0 1 1-1.06-1.06l4-4z"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-file-code" viewBox="0 0 16 16">
|
|
<path d="M10.75 0c.199 0 .39.08.53.22l3.5 3.5c.14.14.22.331.22.53v9A2.75 2.75 0 0 1 12.25 16h-8.5A2.75 2.75 0 0 1 1 13.25V2.75A2.75 2.75 0 0 1 3.75 0zm-7 1.5c-.69 0-1.25.56-1.25 1.25v10.5c0 .69.56 1.25 1.25 1.25h8.5c.69 0 1.25-.56 1.25-1.25V5h-1.25A2.25 2.25 0 0 1 10 2.75V1.5z"/><path d="M7.248 6.19a.75.75 0 0 1 .063 1.058L5.753 9l1.558 1.752a.75.75 0 0 1-1.122.996l-2-2.25a.75.75 0 0 1 0-.996l2-2.25a.75.75 0 0 1 1.06-.063M8.69 7.248a.75.75 0 1 1 1.12-.996l2 2.25a.75.75 0 0 1 0 .996l-2 2.25a.75.75 0 1 1-1.12-.996L10.245 9z"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-plus" viewBox="0 0 16 16">
|
|
<path d="M8 3a.75.75 0 0 1 .75.75v3.5h3.5a.75.75 0 0 1 0 1.5h-3.5v3.5a.75.75 0 0 1-1.5 0v-3.5h-3.5a.75.75 0 0 1 0-1.5h3.5v-3.5A.75.75 0 0 1 8 3"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-symbol-added" viewBox="0 0 16 16">
|
|
<path d="M8 4a.75.75 0 0 1 .75.75v2.5h2.5a.75.75 0 0 1 0 1.5h-2.5v2.5a.75.75 0 0 1-1.5 0v-2.5h-2.5a.75.75 0 0 1 0-1.5h2.5v-2.5A.75.75 0 0 1 8 4"/><path d="M1.788 4.296c.196-.88.478-1.381.802-1.706s.826-.606 1.706-.802C5.194 1.588 6.387 1.5 8 1.5s2.806.088 3.704.288c.88.196 1.381.478 1.706.802s.607.826.802 1.706c.2.898.288 2.091.288 3.704s-.088 2.806-.288 3.704c-.195.88-.478 1.381-.802 1.706s-.826.607-1.706.802c-.898.2-2.091.288-3.704.288s-2.806-.088-3.704-.288c-.88-.195-1.381-.478-1.706-.802s-.606-.826-.802-1.706C1.588 10.806 1.5 9.613 1.5 8s.088-2.806.288-3.704M8 0C1.412 0 0 1.412 0 8s1.412 8 8 8 8-1.412 8-8-1.412-8-8-8"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-symbol-deleted" viewBox="0 0 16 16">
|
|
<path d="M4 8a.75.75 0 0 1 .75-.75h6.5a.75.75 0 0 1 0 1.5h-6.5A.75.75 0 0 1 4 8"/><path d="M1.788 4.296c.196-.88.478-1.381.802-1.706s.826-.606 1.706-.802C5.194 1.588 6.387 1.5 8 1.5s2.806.088 3.704.288c.88.196 1.381.478 1.706.802s.607.826.802 1.706c.2.898.288 2.091.288 3.704s-.088 2.806-.288 3.704c-.195.88-.478 1.381-.802 1.706s-.826.607-1.706.802c-.898.2-2.091.288-3.704.288s-2.806-.088-3.704-.288c-.88-.195-1.381-.478-1.706-.802s-.606-.826-.802-1.706C1.588 10.806 1.5 9.613 1.5 8s.088-2.806.288-3.704M8 0C1.412 0 0 1.412 0 8s1.412 8 8 8 8-1.412 8-8-1.412-8-8-8"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-symbol-diffstat" viewBox="0 0 16 16">
|
|
<path d="M1.788 4.296c.196-.88.478-1.381.802-1.706s.826-.606 1.706-.802C5.194 1.588 6.387 1.5 8 1.5s2.806.088 3.704.288c.88.196 1.381.478 1.706.802s.607.826.802 1.706c.2.898.288 2.091.288 3.704s-.088 2.806-.288 3.704c-.195.88-.478 1.381-.802 1.706s-.826.607-1.706.802c-.898.2-2.091.288-3.704.288s-2.806-.088-3.704-.288c-.88-.195-1.381-.478-1.706-.802s-.606-.826-.802-1.706C1.588 10.806 1.5 9.613 1.5 8s.088-2.806.288-3.704M8 0C1.412 0 0 1.412 0 8s1.412 8 8 8 8-1.412 8-8-1.412-8-8-8"/><path d="M8.75 4.296a.75.75 0 0 0-1.5 0V6.25h-2a.75.75 0 0 0 0 1.5h2v1.5h1.5v-1.5h2a.75.75 0 0 0 0-1.5h-2zM5.25 10a.75.75 0 0 0 0 1.5h5.5a.75.75 0 0 0 0-1.5z"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-symbol-ignored" viewBox="0 0 16 16">
|
|
<path d="M1.5 8c0 1.613.088 2.806.288 3.704.196.88.478 1.381.802 1.706s.826.607 1.706.802c.898.2 2.091.288 3.704.288s2.806-.088 3.704-.288c.88-.195 1.381-.478 1.706-.802s.607-.826.802-1.706c.2-.898.288-2.091.288-3.704s-.088-2.806-.288-3.704c-.195-.88-.478-1.381-.802-1.706s-.826-.606-1.706-.802C10.806 1.588 9.613 1.5 8 1.5s-2.806.088-3.704.288c-.88.196-1.381.478-1.706.802s-.606.826-.802 1.706C1.588 5.194 1.5 6.387 1.5 8M0 8c0-6.588 1.412-8 8-8s8 1.412 8 8-1.412 8-8 8-8-1.412-8-8m11.53-2.47a.75.75 0 0 0-1.06-1.06l-6 6a.75.75 0 1 0 1.06 1.06z"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-symbol-modified" viewBox="0 0 16 16">
|
|
<path d="M1.5 8c0 1.613.088 2.806.288 3.704.196.88.478 1.381.802 1.706s.826.607 1.706.802c.898.2 2.091.288 3.704.288s2.806-.088 3.704-.288c.88-.195 1.381-.478 1.706-.802s.607-.826.802-1.706c.2-.898.288-2.091.288-3.704s-.088-2.806-.288-3.704c-.195-.88-.478-1.381-.802-1.706s-.826-.606-1.706-.802C10.806 1.588 9.613 1.5 8 1.5s-2.806.088-3.704.288c-.88.196-1.381.478-1.706.802s-.606.826-.802 1.706C1.588 5.194 1.5 6.387 1.5 8M0 8c0-6.588 1.412-8 8-8s8 1.412 8 8-1.412 8-8 8-8-1.412-8-8m8 3a3 3 0 1 0 0-6 3 3 0 0 0 0 6"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-symbol-moved" viewBox="0 0 16 16">
|
|
<path d="M1.788 4.296c.196-.88.478-1.381.802-1.706s.826-.606 1.706-.802C5.194 1.588 6.387 1.5 8 1.5s2.806.088 3.704.288c.88.196 1.381.478 1.706.802s.607.826.802 1.706c.2.898.288 2.091.288 3.704s-.088 2.806-.288 3.704c-.195.88-.478 1.381-.802 1.706s-.826.607-1.706.802c-.898.2-2.091.288-3.704.288s-2.806-.088-3.704-.288c-.88-.195-1.381-.478-1.706-.802s-.606-.826-.802-1.706C1.588 10.806 1.5 9.613 1.5 8s.088-2.806.288-3.704M8 0C1.412 0 0 1.412 0 8s1.412 8 8 8 8-1.412 8-8-1.412-8-8-8"/><path d="M8.495 4.695a.75.75 0 0 0-.05 1.06L10.486 8l-2.041 2.246a.75.75 0 0 0 1.11 1.008l2.5-2.75a.75.75 0 0 0 0-1.008l-2.5-2.75a.75.75 0 0 0-1.06-.051m-4 0a.75.75 0 0 0-.05 1.06l2.044 2.248-1.796 1.995a.75.75 0 0 0 1.114 1.004l2.25-2.5a.75.75 0 0 0-.002-1.007l-2.5-2.75a.75.75 0 0 0-1.06-.05"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-symbol-ref" viewBox="0 0 16 16">
|
|
<path d="M1.5 8c0 1.613.088 2.806.288 3.704.196.88.478 1.381.802 1.706.286.286.71.54 1.41.73V1.86c-.7.19-1.124.444-1.41.73-.324.325-.606.826-.802 1.706C1.588 5.194 1.5 6.387 1.5 8m4 6.397c.697.07 1.522.103 2.5.103 1.613 0 2.806-.088 3.704-.288.88-.195 1.381-.478 1.706-.802s.607-.826.802-1.706c.2-.898.288-2.091.288-3.704s-.088-2.806-.288-3.704c-.195-.88-.478-1.381-.802-1.706s-.826-.606-1.706-.802C10.806 1.588 9.613 1.5 8 1.5c-.978 0-1.803.033-2.5.103zM0 8c0-6.588 1.412-8 8-8s8 1.412 8 8-1.412 8-8 8-8-1.412-8-8m7-2a1 1 0 0 1 1-1h3a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1z"/>
|
|
</symbol>
|
|
</svg><style data-core-css="">@layer base, theme, rendered, unsafe;
|
|
@layer base,theme,rendered,unsafe;@layer base{:host{--diffs-font-fallback:"SF Mono", Monaco, Consolas, "Ubuntu Mono", "Liberation Mono", "Courier New", monospace;--diffs-header-font-fallback:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif;--diffs-mixer:light-dark(#000,#fff);--diffs-gap-fallback:8px;--diffs-scrollbar-gutter-fallback:6px;--diffs-scrollbar-gutter:var(--diffs-scrollbar-gutter-override,var(--diffs-scrollbar-gutter-measured,var(--diffs-scrollbar-gutter-fallback)));--diffs-added-light:#0dbe4e;--diffs-added-dark:#5ecc71;--diffs-modified-light:#009fff;--diffs-modified-dark:#69b1ff;--diffs-deleted-light:#ff2e3f;--diffs-deleted-dark:#ff6762;color-scheme:light dark;font-family:var(--diffs-header-font-family,var(--diffs-header-font-fallback));font-size:var(--diffs-font-size,13px);line-height:var(--diffs-line-height,20px);font-feature-settings:var(--diffs-font-features);--diffs-bg:light-dark(var(--diffs-light-bg,#fff),var(--diffs-dark-bg,#000));--diffs-bg-buffer:var(--diffs-bg-buffer-override,light-dark(color-mix(in lab, var(--diffs-bg) 92%, var(--diffs-mixer)),color-mix(in lab, var(--diffs-bg) 92%, var(--diffs-mixer))));--diffs-bg-context:var(--diffs-bg-context-override,light-dark(color-mix(in lab, var(--diffs-bg) 98.5%, var(--diffs-mixer)),color-mix(in lab, var(--diffs-bg) 92.5%, var(--diffs-mixer))));--diffs-bg-context-gutter:var(--diffs-bg-context-gutter-override,light-dark(color-mix(in lab, var(--diffs-bg-context) 90%, var(--diffs-bg)),color-mix(in lab, var(--diffs-bg-context) 45%, var(--diffs-bg))));--diffs-bg-separator:var(--diffs-bg-separator-override,light-dark(color-mix(in lab, var(--diffs-bg) 96%, var(--diffs-mixer)),color-mix(in lab, var(--diffs-bg) 85%, var(--diffs-mixer))));--diffs-fg:light-dark(var(--diffs-light,#000),var(--diffs-dark,#fff));--diffs-fg-number:var(--diffs-fg-number-override,light-dark(color-mix(in lab, var(--diffs-fg) 65%, var(--diffs-bg)),color-mix(in lab, var(--diffs-fg) 65%, var(--diffs-bg))));--diffs-fg-conflict-marker:var(--diffs-fg-conflict-marker-override,var(--diffs-fg-number));--diffs-deletion-base:var(--diffs-deletion-color-override,light-dark(var(--diffs-light-deletion-color,var(--diffs-deletion-color,var(--diffs-deleted-light))),var(--diffs-dark-deletion-color,var(--diffs-deletion-color,var(--diffs-deleted-dark)))));--diffs-addition-base:var(--diffs-addition-color-override,light-dark(var(--diffs-light-addition-color,var(--diffs-addition-color,var(--diffs-added-light))),var(--diffs-dark-addition-color,var(--diffs-addition-color,var(--diffs-added-dark)))));--diffs-modified-base:var(--diffs-modified-color-override,light-dark(var(--diffs-light-modified-color,var(--diffs-modified-color,var(--diffs-modified-light))),var(--diffs-dark-modified-color,var(--diffs-modified-color,var(--diffs-modified-dark)))));--diffs-bg-deletion:var(--diffs-bg-deletion-override,light-dark(color-mix(in lab, var(--diffs-bg) 88%, var(--diffs-deletion-base)),color-mix(in lab, var(--diffs-bg) 80%, var(--diffs-deletion-base))));--diffs-bg-deletion-emphasis:var(--diffs-bg-deletion-emphasis-override,light-dark(rgb(from var(--diffs-deletion-base) r g b / .15),rgb(from var(--diffs-deletion-base) r g b / .2)));--diffs-bg-addition:var(--diffs-bg-addition-override,light-dark(color-mix(in lab, var(--diffs-bg) 88%, var(--diffs-addition-base)),color-mix(in lab, var(--diffs-bg) 80%, var(--diffs-addition-base))));--diffs-bg-addition-emphasis:var(--diffs-bg-addition-emphasis-override,light-dark(rgb(from var(--diffs-addition-base) r g b / .15),rgb(from var(--diffs-addition-base) r g b / .2)));--diffs-selection-base:var(--diffs-modified-base);--diffs-selection-number-fg:light-dark(color-mix(in lab, var(--diffs-selection-base) 65%, var(--diffs-mixer)),color-mix(in lab, var(--diffs-selection-base) 75%, var(--diffs-mixer)));background-color:var(--diffs-bg);color:var(--diffs-fg);display:block}pre,code,[data-error-wrapper]{isolation:isolate;font-family:var(--diffs-font-family,var(--diffs-font-fallback));outline:none;margin:0;padding:0;display:block}pre,code{background-color:var(--diffs-bg)}code{contain:content}*,:before,:after{box-sizing:border-box}[data-icon-sprite]{display:none}[data-diffs-header],[data-separator]{font-family:var(--diffs-header-font-family,var(--diffs-header-font-fallback))}[data-diffs-header][data-sticky]{z-index:1;background-color:var(--diffs-bg);position:sticky;top:0}[data-file-info]{color:var(--fg);background-color:color-mix(in lab, var(--bg) 98%, var(--fg));border-block:1px solid color-mix(in lab, var(--bg) 95%, var(--fg));padding:10px;font-weight:700}[data-diff],[data-file]{--diffs-grid-number-column-width:minmax(min-content, max-content);--diffs-code-grid:var(--diffs-grid-number-column-width) 1fr}[data-dehydrated]:is([data-diff],[data-file]){--diffs-code-grid:var(--diffs-grid-number-column-width) minmax(0, 1fr)}:is([data-diff],[data-file]):hover [data-code]::-webkit-scrollbar-thumb{background-color:var(--diffs-bg-context)}@supports (-webkit-touch-callout:none){:host{--diffs-scrollbar-gutter-fallback:0px}}[data-line] span{color:light-dark(var(--diffs-token-light,var(--diffs-light)),var(--diffs-token-dark,var(--diffs-dark)));background-color:light-dark(var(--diffs-token-light-bg,inherit),var(--diffs-token-dark-bg,inherit));font-weight:light-dark(var(--diffs-token-light-font-weight,inherit),var(--diffs-token-dark-font-weight,inherit));font-style:light-dark(var(--diffs-token-light-font-style,inherit),var(--diffs-token-dark-font-style,inherit));-webkit-text-decoration:light-dark(var(--diffs-token-light-text-decoration,inherit),var(--diffs-token-dark-text-decoration,inherit));text-decoration:light-dark(var(--diffs-token-light-text-decoration,inherit),var(--diffs-token-dark-text-decoration,inherit))}[data-line],[data-gutter-buffer],[data-column-number],[data-line-annotation],[data-no-newline],[data-merge-conflict],[data-merge-conflict-actions]{--diffs-computed-decoration-bg:var(--diffs-bg);--diffs-computed-diff-line-bg:var(--diffs-bg);--diffs-computed-selected-line-bg:var(--diffs-bg);color:var(--diffs-fg);background-color:var(--diffs-line-bg,var(--diffs-bg))}@media (pointer:fine){:is([data-line],[data-gutter-buffer],[data-column-number],[data-line-annotation],[data-no-newline],[data-merge-conflict],[data-merge-conflict-actions]):where([data-hovered]){--diffs-computed-hovered-line-bg:light-dark(color-mix(in lab, var(--diffs-computed-selected-line-bg) 97%, var(--diffs-bg-hover-override,var(--diffs-mixer))),color-mix(in lab, var(--diffs-computed-selected-line-bg) 91%, var(--diffs-bg-hover-override,var(--diffs-mixer))));--diffs-line-bg:var(--diffs-computed-hovered-line-bg,inherit)}}[data-decoration-bg]:is([data-line],[data-no-newline]){--mix-deco-light:92%;--mix-deco-dark:85%}[data-decoration-bg][data-decoration-bg-depth="2"]:is([data-line],[data-no-newline]){--mix-deco-light:88%;--mix-deco-dark:80%}[data-decoration-bg][data-decoration-bg-depth="3"]:is([data-line],[data-no-newline]){--mix-deco-light:85%;--mix-deco-dark:78%}@media (pointer:fine){[data-decoration-bg][data-hovered]:is([data-line],[data-no-newline]):not([data-selected-line]){--mix-deco-light:85%;--mix-deco-dark:85%}[data-decoration-bg][data-hovered][data-decoration-bg-depth="2"]:is([data-line],[data-no-newline]):not([data-selected-line]){--mix-deco-light:83%;--mix-deco-dark:83%}[data-decoration-bg][data-hovered][data-decoration-bg-depth="3"]:is([data-line],[data-no-newline]):not([data-selected-line]){--mix-deco-light:81%;--mix-deco-dark:81%}}[data-decoration-bg]:is([data-line],[data-no-newline]){--diffs-computed-decoration-bg:light-dark(color-mix(in lab, var(--diffs-bg) var(--mix-deco-light), var(--diffs-decoration-bg)),color-mix(in lab, var(--diffs-bg) var(--mix-deco-dark), var(--diffs-decoration-bg)));--diffs-computed-diff-line-bg:var(--diffs-computed-decoration-bg);--diffs-computed-selected-line-bg:var(--diffs-computed-decoration-bg);--diffs-line-bg:var(--diffs-computed-decoration-bg)}[data-line-annotation],[data-gutter-buffer=annotation]{--diffs-annotation-bg:var(--diffs-bg-context);--diffs-computed-decoration-bg:var(--diffs-annotation-bg);--diffs-computed-diff-line-bg:var(--diffs-annotation-bg);--diffs-computed-selected-line-bg:var(--diffs-annotation-bg);--diffs-line-bg:var(--diffs-annotation-bg)}[data-merge-conflict-actions],[data-gutter-buffer=merge-conflict-action],[data-gutter-buffer=merge-conflict-marker-base],[data-gutter-buffer=merge-conflict-marker-separator],[data-merge-conflict=marker-base],[data-merge-conflict=marker-separator]{--diffs-computed-decoration-bg:var(--diffs-bg-context);--diffs-computed-diff-line-bg:var(--diffs-bg-context);--diffs-computed-selected-line-bg:var(--diffs-bg-context);--diffs-line-bg:var(--diffs-bg-context)}[data-gutter-buffer=merge-conflict-marker-start],[data-merge-conflict=marker-start]{--diffs-computed-decoration-bg:light-dark(color-mix(in lab, var(--diffs-bg) 78%, var(--conflict-bg-current-header-override,var(--diffs-addition-base))),color-mix(in lab, var(--diffs-bg) 68%, var(--conflict-bg-current-header-override,var(--diffs-addition-base))));--diffs-computed-diff-line-bg:var(--diffs-computed-decoration-bg);--diffs-computed-selected-line-bg:var(--diffs-computed-decoration-bg);--diffs-line-bg:var(--diffs-computed-decoration-bg)}[data-gutter-buffer=merge-conflict-marker-end],[data-merge-conflict=marker-end]{--diffs-computed-decoration-bg:light-dark(color-mix(in lab, var(--diffs-bg) 78%, var(--conflict-bg-incoming-header-override,var(--diffs-modified-base))),color-mix(in lab, var(--diffs-bg) 68%, var(--conflict-bg-incoming-header-override,var(--diffs-modified-base))));--diffs-computed-diff-line-bg:var(--diffs-computed-decoration-bg);--diffs-computed-selected-line-bg:var(--diffs-computed-decoration-bg);--diffs-line-bg:var(--diffs-computed-decoration-bg)}[data-has-merge-conflict] [data-line-annotation],[data-has-merge-conflict] [data-gutter-buffer=annotation]{--diffs-computed-decoration-bg:var(--diffs-bg);--diffs-computed-diff-line-bg:var(--diffs-bg);--diffs-computed-selected-line-bg:var(--diffs-bg);--diffs-line-bg:var(--diffs-bg)}:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number]{--mix-light:91%;--mix-dark:85%}:where([data-background]) [data-line],:where([data-background]) [data-no-newline]{--mix-light:88%;--mix-dark:80%}:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]{--diffs-diff-line-mix-target:var(--diffs-bg)}[data-line-type=change-deletion]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--diffs-diff-line-mix-target:var(--diffs-bg-deletion-override,var(--diffs-deletion-base))}@media (pointer:fine){[data-line-type=change-deletion][data-hovered]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--mix-light:80%;--mix-dark:75%}}[data-line-type=change-deletion]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]):where([data-gutter-buffer],[data-column-number]){color:var(--diffs-fg-number-deletion-override,var(--diffs-deletion-base));--diffs-diff-line-mix-target:var(--diffs-bg-deletion-number-override,var(--diffs-deletion-base))}[data-line-type=change-deletion]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--diffs-computed-diff-line-bg:light-dark(color-mix(in lab, var(--diffs-computed-decoration-bg) var(--mix-light), var(--diffs-diff-line-mix-target)),color-mix(in lab, var(--diffs-computed-decoration-bg) var(--mix-dark), var(--diffs-diff-line-mix-target)));--diffs-computed-selected-line-bg:var(--diffs-computed-diff-line-bg);--diffs-line-bg:var(--diffs-computed-diff-line-bg,inherit)}[data-line-type=change-addition]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--diffs-diff-line-mix-target:var(--diffs-bg-addition-override,var(--diffs-addition-base))}@media (pointer:fine){[data-line-type=change-addition][data-hovered]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--mix-light:80%;--mix-dark:70%}}[data-line-type=change-addition]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]):where([data-gutter-buffer],[data-column-number]){color:var(--diffs-fg-number-addition-override,var(--diffs-addition-base));--diffs-diff-line-mix-target:var(--diffs-bg-addition-number-override,var(--diffs-addition-base))}[data-line-type=change-addition]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--diffs-computed-diff-line-bg:light-dark(color-mix(in lab, var(--diffs-computed-decoration-bg) var(--mix-light), var(--diffs-diff-line-mix-target)),color-mix(in lab, var(--diffs-computed-decoration-bg) var(--mix-dark), var(--diffs-diff-line-mix-target)));--diffs-computed-selected-line-bg:var(--diffs-computed-diff-line-bg);--diffs-line-bg:var(--diffs-computed-diff-line-bg,inherit)}[data-merge-conflict=current]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--diffs-diff-line-mix-target:var(--conflict-bg-current-override,var(--diffs-addition-base))}[data-merge-conflict=current]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]):where([data-gutter-buffer],[data-column-number]){color:var(--diffs-fg-number-addition-override,var(--diffs-addition-base));--diffs-diff-line-mix-target:var(--conflict-bg-current-number-override,var(--diffs-addition-base))}@media (pointer:fine){[data-merge-conflict=current][data-hovered]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--mix-light:80%;--mix-dark:70%}}[data-merge-conflict=current]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--diffs-computed-diff-line-bg:light-dark(color-mix(in lab, var(--diffs-computed-decoration-bg) var(--mix-light), var(--diffs-diff-line-mix-target)),color-mix(in lab, var(--diffs-computed-decoration-bg) var(--mix-dark), var(--diffs-diff-line-mix-target)));--diffs-computed-selected-line-bg:var(--diffs-computed-diff-line-bg);--diffs-line-bg:var(--diffs-computed-diff-line-bg,inherit)}[data-merge-conflict=incoming]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--diffs-diff-line-mix-target:var(--conflict-bg-incoming-override,var(--diffs-modified-base))}[data-merge-conflict=incoming]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]):where([data-gutter-buffer],[data-column-number]){color:var(--diffs-modified-base);--diffs-diff-line-mix-target:var(--conflict-bg-incoming-number-override,var(--diffs-modified-base))}@media (pointer:fine){[data-merge-conflict=incoming][data-hovered]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--mix-light:80%;--mix-dark:70%}}[data-merge-conflict=incoming]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--diffs-computed-diff-line-bg:light-dark(color-mix(in lab, var(--diffs-computed-decoration-bg) var(--mix-light), var(--diffs-diff-line-mix-target)),color-mix(in lab, var(--diffs-computed-decoration-bg) var(--mix-dark), var(--diffs-diff-line-mix-target)));--diffs-computed-selected-line-bg:var(--diffs-computed-diff-line-bg);--diffs-line-bg:var(--diffs-computed-diff-line-bg,inherit)}[data-gutter-buffer],[data-column-number],[data-line],[data-line-annotation],[data-merge-conflict],[data-merge-conflict-actions],[data-no-newline]{--diffs-selection-mix-target:var(--diffs-bg-selection-override,var(--diffs-selection-base))}[data-selected-line]:is([data-gutter-buffer],[data-column-number],[data-line],[data-line-annotation],[data-merge-conflict],[data-merge-conflict-actions],[data-no-newline]):where([data-line],[data-line-annotation],[data-merge-conflict],[data-merge-conflict-actions],[data-no-newline]){--mix-selection-light:82%;--mix-selection-dark:75%}@media (pointer:fine){[data-selected-line][data-hovered]:is([data-gutter-buffer],[data-column-number],[data-line],[data-line-annotation],[data-merge-conflict],[data-merge-conflict-actions],[data-no-newline]):where([data-line],[data-line-annotation],[data-merge-conflict],[data-merge-conflict-actions],[data-no-newline]):not([data-merge-conflict],[data-line-type=change-addition],[data-line-type=change-deletion]){--mix-selection-light:75%;--mix-selection-dark:70%}}[data-selected-line]:is([data-gutter-buffer],[data-column-number],[data-line],[data-line-annotation],[data-merge-conflict],[data-merge-conflict-actions],[data-no-newline]):where([data-gutter-buffer],[data-column-number]){--mix-selection-light:75%;--mix-selection-dark:60%;--diffs-selection-mix-target:var(--diffs-bg-selection-number-override,var(--diffs-selection-base))}@media (pointer:fine){[data-selected-line][data-hovered]:is([data-gutter-buffer],[data-column-number],[data-line],[data-line-annotation],[data-merge-conflict],[data-merge-conflict-actions],[data-no-newline]):where([data-gutter-buffer],[data-column-number]):not([data-merge-conflict],[data-line-type=change-addition],[data-line-type=change-deletion]){--mix-selection-light:70%;--mix-selection-dark:55%}}[data-selected-line]:is([data-gutter-buffer],[data-column-number],[data-line],[data-line-annotation],[data-merge-conflict],[data-merge-conflict-actions],[data-no-newline]){--diffs-computed-selected-line-bg:light-dark(color-mix(in lab, var(--diffs-computed-diff-line-bg) var(--mix-selection-light), var(--diffs-selection-mix-target)),color-mix(in lab, var(--diffs-computed-diff-line-bg) var(--mix-selection-dark), var(--diffs-selection-mix-target)));--diffs-line-bg:var(--diffs-computed-selected-line-bg,inherit)}[data-selected-line]:is([data-gutter-buffer],[data-column-number]){color:var(--diffs-selection-number-fg)}[data-no-newline]{-webkit-user-select:none;user-select:none}[data-no-newline] span{opacity:.6}[data-diff-type=split][data-overflow=scroll]{grid-template-columns:1fr 1fr;display:grid}[data-diff-type=split][data-overflow=scroll] [data-additions]{border-left:1px solid var(--diffs-bg)}[data-diff-type=split][data-overflow=scroll] [data-deletions]{border-right:1px solid var(--diffs-bg)}[data-code]{grid-auto-flow:dense;grid-template-columns:var(--diffs-code-grid);overflow:var(--diffs-overflow-override,scroll) clip;overscroll-behavior-x:none;tab-size:var(--diffs-tab-size,2);padding-top:var(--diffs-gap-block,var(--diffs-gap-fallback));padding-bottom:max(0px, calc(var(--diffs-gap-block,var(--diffs-gap-fallback)) - var(--diffs-scrollbar-gutter)));scrollbar-gutter:stable;align-self:flex-start;display:grid}[data-diffs-scrollbar-measure]{opacity:0;pointer-events:none;scrollbar-gutter:auto;grid-template-columns:none;width:100px;height:100px;padding:0;position:absolute;top:-200px;left:-200px}[data-container-size]{container-type:inline-size}[data-code]::-webkit-scrollbar{width:0;height:var(--diffs-scrollbar-gutter)}[data-code]::-webkit-scrollbar-track{background:0 0}[data-code]::-webkit-scrollbar-thumb{background-color:#0000;background-clip:content-box;border:1px solid #0000;border-radius:3px}[data-code]::-webkit-scrollbar-corner{background-color:#0000}@supports ((-moz-appearance:none)){[data-code]{scrollbar-width:thin;scrollbar-color:var(--diffs-bg-context) transparent;padding-bottom:var(--diffs-gap-block,var(--diffs-gap-fallback))}}:is([data-diffs-header]~[data-diff],[data-diffs-header]~[data-file]) [data-code],[data-overflow=wrap]:is([data-diffs-header]~[data-diff],[data-diffs-header]~[data-file]){padding-top:0}[data-gutter]{grid-template-rows:subgrid;grid-template-columns:subgrid;z-index:3;background-color:var(--diffs-bg);grid-column:1;display:grid;position:relative}[data-gutter] [data-gutter-buffer],[data-gutter] [data-column-number]{border-right:var(--diffs-gap-style,2px solid var(--diffs-bg))}[data-content]{grid-template-rows:subgrid;grid-template-columns:subgrid;background-color:var(--diffs-bg);grid-column:2;min-width:0;display:grid}[data-diff-type=split][data-overflow=wrap]{grid-auto-flow:dense;grid-template-columns:repeat(2, var(--diffs-code-grid));padding-block:var(--diffs-gap-block,var(--diffs-gap-fallback));display:grid}[data-diff-type=split][data-overflow=wrap] [data-deletions]{display:contents}:is([data-diff-type=split][data-overflow=wrap] [data-deletions]) [data-gutter]{grid-column:1}:is([data-diff-type=split][data-overflow=wrap] [data-deletions]) [data-content]{border-right:1px solid var(--diffs-bg);grid-column:2}[data-diff-type=split][data-overflow=wrap] [data-additions]{display:contents}:is([data-diff-type=split][data-overflow=wrap] [data-additions]) [data-gutter]{border-left:1px solid var(--diffs-bg);grid-column:3}:is([data-diff-type=split][data-overflow=wrap] [data-additions]) [data-content]{grid-column:4}[data-overflow=scroll] [data-gutter]{position:sticky;left:0}[data-interactive-lines] [data-line]{cursor:pointer}[data-interactive-line-numbers] [data-column-number]{cursor:pointer;touch-action:none}[data-content-buffer],[data-gutter-buffer]{-webkit-user-select:none;user-select:none;min-height:1lh;position:relative}[data-gutter-buffer]{padding-left:2ch;padding-right:1ch}[data-gutter-buffer]:before{content:"";min-width:var(--diffs-min-number-column-width,var(--diffs-min-number-column-width-default,3ch));display:block}[data-gutter-buffer=annotation]{--diffs-annotation-bg:var(--diffs-bg-context-gutter);min-height:0}[data-gutter-buffer=buffer]{--diffs-line-bg:var(--diffs-bg-context-gutter)}[data-content-buffer]{background-position:5px 0;background-size:8px 8px;background-origin:border-box;background-image:repeating-linear-gradient(-45deg, transparent, transparent 4.242px, var(--diffs-bg-buffer) 4.242px, var(--diffs-bg-buffer) 5.656px);grid-column:1}[data-separator]{box-sizing:content-box;background-color:var(--diffs-bg)}[data-separator=simple]{min-height:4px}[data-separator=line-info],[data-separator=line-info-basic],[data-separator=metadata],[data-separator=simple]{background-color:var(--diffs-bg-separator)}[data-separator=line-info],[data-separator=line-info-basic],[data-separator=metadata]{height:32px;position:relative}[data-separator-wrapper]{-webkit-user-select:none;user-select:none;fill:currentColor;background-color:var(--diffs-bg);align-items:center;height:100%;display:flex;position:absolute;inset-inline:0}[data-content] [data-separator-wrapper]{display:none}[data-separator=metadata] [data-separator-wrapper]{background-color:var(--diffs-bg-separator);height:100%;color:var(--diffs-fg-number);white-space:nowrap;text-overflow:ellipsis;min-width:min-content;padding-inline:1ch;inset-inline:100% auto;overflow:hidden}[data-separator=line-info]{margin-block:var(--diffs-gap-block,var(--diffs-gap-fallback))}[data-separator=line-info] [data-separator-wrapper]{min-width:16px}[data-separator=line-info-basic],[data-separator=metadata]{margin-block:0}[data-separator=line-info][data-separator-first]{margin-top:0}[data-separator=line-info][data-separator-last]{margin-bottom:0}[data-expand-index] [data-separator-wrapper]{grid-template-columns:32px auto;display:grid}[data-expand-index] [data-separator-wrapper][data-separator-multi-button]{grid-template-columns:32px 32px auto}[data-expand-button],[data-separator-content]{background-color:var(--diffs-bg-separator);flex:none;align-items:center;display:flex}[data-expand-index] [data-separator-content]:hover{cursor:pointer;text-decoration:underline}[data-expand-button]{cursor:pointer;min-width:32px;color:var(--diffs-fg-number);border-right:2px solid var(--diffs-bg);flex-shrink:0;justify-content:center;align-self:stretch}[data-expand-button]:hover{color:var(--diffs-fg)}[data-expand-button][data-expand-all-button]{display:none}[data-expand-down] [data-icon]{transform:scaleY(-1)}[data-separator-content]{height:100%;color:var(--diffs-fg-number);flex:auto;justify-content:flex-start;padding:0 1ch;overflow:hidden}:is([data-separator=line-info],[data-separator=line-info-basic]) [data-separator-content]{-webkit-user-select:none;user-select:none;height:100%;overflow:clip}[data-unmodified-lines]{text-overflow:ellipsis;white-space:nowrap;flex:0 auto;min-width:0;display:block;overflow:hidden}@supports (width:1cqi){[data-unified] [data-separator=line-info] [data-separator-wrapper]{padding-inline:var(--diffs-gap-inline,var(--diffs-gap-fallback));width:100cqi}:is([data-unified] [data-separator=line-info] [data-separator-wrapper]) [data-separator-content]{border-radius:6px}[data-unified] [data-separator=line-info][data-expand-index] [data-separator-wrapper] [data-separator-content]{border-top-left-radius:unset;border-bottom-left-radius:unset}[data-gutter] [data-separator=line-info] [data-separator-wrapper]{padding-left:var(--diffs-gap-inline,var(--diffs-gap-fallback))}[data-gutter] [data-separator=line-info] [data-separator-content]{border-top-left-radius:6px;border-bottom-left-radius:6px}[data-gutter] [data-separator=line-info][data-expand-index] [data-separator-content]{border-top-left-radius:unset;border-bottom-left-radius:unset}[data-additions] [data-content] [data-separator=line-info]{background-color:var(--diffs-bg)}:is([data-additions] [data-content] [data-separator=line-info]) [data-separator-wrapper]{display:none}[data-additions] [data-gutter] [data-separator=line-info] [data-separator-wrapper]{background-color:var(--diffs-bg-separator);border-top-right-radius:6px;border-bottom-right-radius:6px;height:100%;display:block}:is([data-additions] [data-gutter] [data-separator=line-info] [data-separator-wrapper]) [data-separator-content],:is([data-additions] [data-gutter] [data-separator=line-info] [data-separator-wrapper]) [data-expand-button]{display:none}[data-overflow=scroll] [data-additions] [data-gutter] [data-separator=line-info] [data-separator-wrapper]{width:calc(100cqi - var(--diffs-gap-inline,var(--diffs-gap-fallback)))}[data-overflow=wrap] [data-additions] [data-content] [data-separator=line-info] [data-separator-wrapper]{background-color:var(--diffs-bg-separator);height:100%;margin-right:var(--diffs-gap-inline,var(--diffs-gap-fallback));border-top-right-radius:6px;border-bottom-right-radius:6px;display:block}:is([data-overflow=wrap] [data-additions] [data-content] [data-separator=line-info] [data-separator-wrapper]) [data-separator-content],:is([data-overflow=wrap] [data-additions] [data-content] [data-separator=line-info] [data-separator-wrapper]) [data-expand-button]{display:none}:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-both],:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-down],:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-up]{border-top-left-radius:6px;border-bottom-left-radius:6px}@media (pointer:fine){[data-separator-multi-button]:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-up]{border-top-left-radius:6px;border-bottom-left-radius:unset}[data-separator-multi-button]:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-down]{border-bottom-left-radius:6px;border-top-left-radius:unset}}}@media (pointer:coarse){[data-separator=line-info-basic] [data-separator-wrapper][data-separator-multi-button]{grid-template-columns:34px 34px auto}:is([data-separator=line-info-basic] [data-separator-wrapper][data-separator-multi-button]) [data-separator-content]{grid-column:unset;grid-row:unset}@supports (width:1cqi){:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-both],:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-down],:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-up],[data-separator-multi-button]:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-up]{border-top-left-radius:6px;border-bottom-left-radius:6px}[data-separator-multi-button]:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-down]{border-bottom-left-radius:unset;border-top-left-radius:unset}}}@media (pointer:fine){[data-separator-wrapper][data-separator-multi-button]{grid-template-rows:50% 50%;display:grid}[data-separator-wrapper][data-separator-multi-button] [data-separator-content]{grid-area:1/2/-1;min-width:min-content}[data-separator-wrapper][data-separator-multi-button] [data-expand-button]{grid-column:1}[data-separator=line-info] [data-separator-wrapper],[data-separator=line-info] [data-separator-wrapper][data-separator-multi-button]{grid-template-columns:34px auto}[data-separator=line-info-basic][data-expand-index] [data-separator-wrapper]{grid-template-columns:100% auto}:is(:is([data-separator=line-info],[data-separator=line-info-basic]) [data-separator-multi-button]) [data-expand-up]{border-bottom:1px solid var(--diffs-bg);border-right:2px solid var(--diffs-bg)}:is(:is([data-separator=line-info],[data-separator=line-info-basic]) [data-separator-multi-button]) [data-expand-down]{border-top:1px solid var(--diffs-bg);border-right:2px solid var(--diffs-bg)}}[data-additions] [data-gutter] [data-separator-wrapper],[data-additions] [data-separator=line-info-basic] [data-separator-wrapper],[data-content] [data-separator-wrapper]{display:none}[data-line-annotation]{min-height:var(--diffs-annotation-min-height,0);z-index:2}[data-merge-conflict-actions]{z-index:2}[data-separator=custom]{grid-template-columns:subgrid;display:grid}[data-line],[data-column-number],[data-no-newline]{padding-inline:1ch;position:relative}[data-indicators=classic] [data-line]{padding-inline-start:2ch}:is([data-no-newline]:is([data-indicators=classic] [data-line-type=change-addition],[data-indicators=classic] [data-line-type=change-deletion]),[data-line]:is([data-indicators=classic] [data-line-type=change-addition],[data-indicators=classic] [data-line-type=change-deletion])):before{-webkit-user-select:none;user-select:none;width:1ch;height:1lh;display:inline-block;position:absolute;top:0;left:0}:is([data-line]:is([data-indicators=classic] [data-line-type=change-addition]),[data-no-newline]:is([data-indicators=classic] [data-line-type=change-addition])):before{content:"+";color:var(--diffs-addition-base)}:is([data-line]:is([data-indicators=classic] [data-line-type=change-deletion]),[data-no-newline]:is([data-indicators=classic] [data-line-type=change-deletion])):before{content:"-";color:var(--diffs-deletion-base)}[data-column-number]:is([data-indicators=bars] [data-line-type=change-deletion],[data-indicators=bars] [data-line-type=change-addition]):before{content:"";-webkit-user-select:none;user-select:none;contain:strict;width:4px;height:100%;display:block;position:absolute;top:0;left:0}[data-column-number]:is([data-indicators=bars] [data-line-type=change-deletion]):before{background-image:linear-gradient(0deg, var(--diffs-bg-deletion) 50%, var(--diffs-deletion-base) 50%);background-repeat:repeat;background-size:2px 2px;background-size:calc(1lh/round(1lh / 2px)) calc(1lh/round(1lh / 2px))}[data-column-number]:is([data-indicators=bars] [data-line-type=change-addition]):before{background-color:var(--diffs-addition-base)}[data-overflow=wrap] [data-line],[data-overflow=wrap] [data-annotation-content]{white-space:pre-wrap;word-break:break-word}[data-overflow=scroll] [data-line]{white-space:pre;min-height:1lh}[data-column-number]{box-sizing:content-box;text-align:right;-webkit-user-select:none;user-select:none;color:var(--diffs-fg-number);padding-left:2ch}[data-line-number-content]{min-width:var(--diffs-min-number-column-width,var(--diffs-min-number-column-width-default,3ch));z-index:1;display:inline-block;position:relative}[data-disable-line-numbers] [data-gutter-buffer],[data-disable-line-numbers] [data-column-number]{min-width:4px;padding:0}:is([data-disable-line-numbers] [data-gutter-buffer],[data-disable-line-numbers] [data-column-number]):before{min-width:0}[data-disable-line-numbers] [data-line-number-content]{display:none}[data-disable-line-numbers] [data-gutter-utility-slot]{right:unset;justify-content:flex-start;left:0}[data-disable-line-numbers][data-indicators=bars] [data-gutter-utility-slot]{left:6px}[data-file][data-disable-line-numbers] [data-gutter-buffer],[data-file][data-disable-line-numbers] [data-column-number]{border-right:0;min-width:0}[data-diff-span]{-webkit-box-decoration-break:clone;box-decoration-break:clone;border-radius:3px}[data-line-type=change-addition] [data-diff-span]{background-color:var(--diffs-bg-addition-emphasis)}[data-line-type=change-deletion] [data-diff-span]{background-color:var(--diffs-bg-deletion-emphasis)}[data-merge-conflict=marker-start],[data-merge-conflict=marker-base],[data-merge-conflict=marker-separator],[data-merge-conflict=marker-end]{color:var(--diffs-fg);padding-left:1ch}[data-merge-conflict=marker-start],[data-merge-conflict=marker-end]{align-items:center;display:flex}:is([data-merge-conflict=marker-start],[data-merge-conflict=marker-end]):after{color:var(--diffs-fg-conflict-marker);font-size:.75rem;font-style:normal;line-height:1.25rem;font-family:var(--diffs-header-font-family,var(--diffs-header-font-fallback));padding-left:1ch}[data-merge-conflict=marker-start]:after{content:"(Current Change)"}[data-merge-conflict=marker-end]:after{content:"(Incoming Change)"}[data-merge-conflict-actions-content]{min-height:1.75rem;font-family:var(--diffs-header-font-family,var(--diffs-header-font-fallback));color:var(--diffs-fg);align-items:center;gap:.25rem;padding-inline:.5rem;font-size:.75rem;line-height:1.2;display:flex}[data-merge-conflict-action]{appearance:none;color:var(--diffs-fg-number);font:inherit;cursor:pointer;background:0 0;border:0;padding:0;font-style:normal}[data-merge-conflict-action]:hover{color:var(--diffs-fg)}[data-merge-conflict-action=current]:hover{color:var(--diffs-addition-base)}[data-merge-conflict-action=incoming]:hover{color:var(--diffs-modified-base)}[data-merge-conflict-action-separator]{color:var(--diffs-fg-number);opacity:.6;-webkit-user-select:none;user-select:none}[data-diffs-header=default]{background-color:var(--diffs-bg);justify-content:space-between;align-items:center;gap:var(--diffs-gap-inline,var(--diffs-gap-fallback));min-height:calc(1lh + var(--diffs-gap-block,var(--diffs-gap-fallback))*3);z-index:2;flex-direction:row;padding-inline:16px;display:flex;position:relative;top:0}[data-header-content]{align-items:center;gap:var(--diffs-gap-inline,var(--diffs-gap-fallback));white-space:nowrap;flex-direction:row;min-width:0;display:flex}[data-header-content] [data-prev-name],[data-header-content] [data-title]{text-overflow:ellipsis;white-space:nowrap;direction:rtl;min-width:0;overflow:hidden}[data-prev-name]{opacity:.7}[data-rename-icon]{fill:currentColor;flex-grow:0;flex-shrink:0}[data-diffs-header=default] [data-metadata]{white-space:nowrap;align-items:center;gap:1ch;display:flex}[data-diffs-header=default] [data-additions-count]{font-family:var(--diffs-font-family,var(--diffs-font-fallback));color:var(--diffs-addition-base)}[data-diffs-header=default] [data-deletions-count]{font-family:var(--diffs-font-family,var(--diffs-font-fallback));color:var(--diffs-deletion-base)}[data-change-icon]{fill:currentColor;flex-shrink:0}[data-change-icon=change],[data-change-icon=rename-pure],[data-change-icon=rename-changed]{color:var(--diffs-modified-base)}[data-change-icon=new]{color:var(--diffs-addition-base)}[data-change-icon=deleted]{color:var(--diffs-deletion-base)}[data-change-icon=file]{opacity:.6}[data-annotation-content]{z-index:2;isolation:isolate;align-self:flex-start;min-width:0;display:flow-root;position:relative}[data-overflow=scroll] [data-annotation-content],[data-overflow=scroll] [data-merge-conflict-actions-content]{width:var(--diffs-column-content-width,auto);left:var(--diffs-column-number-width,0);position:sticky}[data-annotation-slot]{text-wrap-mode:wrap;word-break:normal;white-space-collapse:collapse}[data-gutter-utility-slot]{touch-action:none;justify-content:flex-end;display:flex;position:absolute;top:0;bottom:0;right:0}[data-utility-button]{appearance:none;cursor:pointer;width:1lh;height:1lh;font-size:var(--diffs-font-size,13px);line-height:var(--diffs-line-height,20px);background-color:var(--diffs-modified-base);color:var(--diffs-bg);fill:currentColor;z-index:4;touch-action:none;border:none;border-radius:4px;justify-content:center;align-items:center;margin-right:calc(1ch - 1lh);padding:0;display:flex;position:relative}[data-utility-button]:before{content:"";display:block;position:absolute;inset:0 0 0 -4px}[data-decoration-bar-stack]{pointer-events:none;isolation:isolate;z-index:1;background-color:var(--diffs-decoration-bar-color,transparent);box-sizing:content-box;border-left:2px solid var(--diffs-bg);border-right:2px solid var(--diffs-bg);width:6px;position:absolute;top:0;bottom:0;right:-2px}[data-decoration-bar-depth="1"] [data-decoration-bar-stack]{background-color:color-mix(in lab, var(--diffs-bg) 20%, var(--diffs-decoration-bar-color,transparent))}[data-decoration-bar-depth="2"] [data-decoration-bar-stack]{background-color:color-mix(in lab, var(--diffs-bg) 45%, var(--diffs-decoration-bar-color,transparent))}[data-decoration-bar-depth="3"] [data-decoration-bar-stack]{background-color:color-mix(in lab, var(--diffs-bg) 65%, var(--diffs-decoration-bar-color,transparent))}[data-decoration-bar-start] [data-decoration-bar-stack]{border-top-left-radius:5px;border-top-right-radius:5px}[data-decoration-bar-end] [data-decoration-bar-stack]{z-index:3;border-bottom-right-radius:5px;border-bottom-left-radius:5px}[data-placeholder]{contain:strict}[data-error-wrapper]{padding:var(--diffs-gap-block,var(--diffs-gap-fallback)) var(--diffs-gap-inline,var(--diffs-gap-fallback));scrollbar-width:none;max-height:400px;overflow:auto}[data-error-wrapper] [data-error-message]{color:var(--diffs-deletion-base);font-size:18px;font-weight:700}[data-error-wrapper] [data-error-stack]{color:var(--diffs-fg-number)}}@layer theme,rendered,unsafe;
|
|
@layer theme {
|
|
|
|
}</style><style data-theme-css="">@layer base, theme, rendered, unsafe;
|
|
@layer rendered {
|
|
:host {
|
|
--diffs-scrollbar-gutter-measured: var(--diffs-scrollbar-gutter-fallback);
|
|
--diffs-dark:#fafafa;--diffs-dark-bg:#0a0a0a;--diffs-dark-addition-color:#07c480;--diffs-dark-deletion-color:#ff2e3f;--diffs-dark-modified-color:#009fff;--diffs-light:#0a0a0a;--diffs-light-bg:#ffffff;--diffs-light-addition-color:#18a46c;--diffs-light-deletion-color:#d52c36;--diffs-light-modified-color:#009fff;
|
|
}
|
|
}</style><div data-diffs-header="default" data-change-type="change"><div data-header-content=""><slot name="header-prefix"></slot><svg width="16" height="16" viewBox="0 0 16 16" data-change-icon="change"><use href="#diffs-icon-symbol-modified"></use></svg><div data-title=""><bdi>Dreamio/VLCNativePlaybackBackend.swift</bdi></div></div><div data-metadata=""><span data-deletions-count="">-7</span><span data-additions-count="">+39</span><slot name="header-metadata"></slot></div></div><pre data-diff="" data-diff-type="split" data-overflow="scroll" data-background="" data-indicators="bars" tabindex="0" style="--diffs-min-number-column-width-default:3ch;" data-dehydrated=""><code data-code="" data-container-size="" data-deletions=""><div data-gutter="" style="grid-row: span 109"><div data-separator="line-info" data-separator-first=""><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">25 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="26" data-line-index="25,25"><span data-line-number-content="">26</span></div><div data-line-type="context" data-column-number="27" data-line-index="26,26"><span data-line-number-content="">27</span></div><div data-line-type="context" data-column-number="28" data-line-index="27,27"><span data-line-number-content="">28</span></div><div data-gutter-buffer="buffer" data-buffer-size="2" style="grid-row: span 2;min-height:calc(2 * 1lh);"></div><div data-line-type="context" data-column-number="29" data-line-index="30,30"><span data-line-number-content="">29</span></div><div data-line-type="context" data-column-number="30" data-line-index="31,31"><span data-line-number-content="">30</span></div><div data-line-type="context" data-column-number="31" data-line-index="32,32"><span data-line-number-content="">31</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">15 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="47" data-line-index="48,48"><span data-line-number-content="">47</span></div><div data-line-type="context" data-column-number="48" data-line-index="49,49"><span data-line-number-content="">48</span></div><div data-line-type="context" data-column-number="49" data-line-index="50,50"><span data-line-number-content="">49</span></div><div data-gutter-buffer="buffer" data-buffer-size="2" style="grid-row: span 2;min-height:calc(2 * 1lh);"></div><div data-line-type="context" data-column-number="50" data-line-index="53,53"><span data-line-number-content="">50</span></div><div data-line-type="context" data-column-number="51" data-line-index="54,54"><span data-line-number-content="">51</span></div><div data-line-type="context" data-column-number="52" data-line-index="55,55"><span data-line-number-content="">52</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">172 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="225" data-line-index="228,228"><span data-line-number-content="">225</span></div><div data-line-type="context" data-column-number="226" data-line-index="229,229"><span data-line-number-content="">226</span></div><div data-line-type="context" data-column-number="227" data-line-index="230,230"><span data-line-number-content="">227</span></div><div data-gutter-buffer="buffer" data-buffer-size="1" style="grid-row: span 1;min-height:calc(1 * 1lh);"></div><div data-line-type="context" data-column-number="228" data-line-index="232,232"><span data-line-number-content="">228</span></div><div data-line-type="context" data-column-number="229" data-line-index="233,233"><span data-line-number-content="">229</span></div><div data-line-type="context" data-column-number="230" data-line-index="234,234"><span data-line-number-content="">230</span></div><div data-line-type="context" data-column-number="231" data-line-index="235,235"><span data-line-number-content="">231</span></div><div data-line-type="context" data-column-number="232" data-line-index="236,236"><span data-line-number-content="">232</span></div><div data-line-type="context" data-column-number="233" data-line-index="237,237"><span data-line-number-content="">233</span></div><div data-gutter-buffer="buffer" data-buffer-size="2" style="grid-row: span 2;min-height:calc(2 * 1lh);"></div><div data-line-type="context" data-column-number="234" data-line-index="240,240"><span data-line-number-content="">234</span></div><div data-line-type="context" data-column-number="235" data-line-index="241,241"><span data-line-number-content="">235</span></div><div data-line-type="context" data-column-number="236" data-line-index="242,242"><span data-line-number-content="">236</span></div><div data-line-type="change-deletion" data-column-number="237" data-line-index="243,243"><span data-line-number-content="">237</span></div><div data-line-type="context" data-column-number="238" data-line-index="245,244"><span data-line-number-content="">238</span></div><div data-line-type="context" data-column-number="239" data-line-index="246,245"><span data-line-number-content="">239</span></div><div data-line-type="context" data-column-number="240" data-line-index="247,246"><span data-line-number-content="">240</span></div><div data-line-type="context" data-column-number="241" data-line-index="248,247"><span data-line-number-content="">241</span></div><div data-line-type="context" data-column-number="242" data-line-index="249,248"><span data-line-number-content="">242</span></div><div data-line-type="change-deletion" data-column-number="243" data-line-index="250,249"><span data-line-number-content="">243</span></div><div data-line-type="context" data-column-number="244" data-line-index="252,250"><span data-line-number-content="">244</span></div><div data-line-type="context" data-column-number="245" data-line-index="253,251"><span data-line-number-content="">245</span></div><div data-line-type="context" data-column-number="246" data-line-index="254,252"><span data-line-number-content="">246</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">1 unmodified line</span></div></div></div><div data-line-type="context" data-column-number="248" data-line-index="256,254"><span data-line-number-content="">248</span></div><div data-line-type="context" data-column-number="249" data-line-index="257,255"><span data-line-number-content="">249</span></div><div data-line-type="context" data-column-number="250" data-line-index="258,256"><span data-line-number-content="">250</span></div><div data-line-type="change-deletion" data-column-number="251" data-line-index="259,257"><span data-line-number-content="">251</span></div><div data-line-type="context" data-column-number="252" data-line-index="261,258"><span data-line-number-content="">252</span></div><div data-line-type="context" data-column-number="253" data-line-index="262,259"><span data-line-number-content="">253</span></div><div data-gutter-buffer="buffer" data-buffer-size="3" style="grid-row: span 3;min-height:calc(3 * 1lh);"></div><div data-line-type="context" data-column-number="254" data-line-index="266,263"><span data-line-number-content="">254</span></div><div data-line-type="context" data-column-number="255" data-line-index="267,264"><span data-line-number-content="">255</span></div><div data-line-type="context" data-column-number="256" data-line-index="268,265"><span data-line-number-content="">256</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">9 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="266" data-line-index="278,275"><span data-line-number-content="">266</span></div><div data-line-type="context" data-column-number="267" data-line-index="279,276"><span data-line-number-content="">267</span></div><div data-line-type="context" data-column-number="268" data-line-index="280,277"><span data-line-number-content="">268</span></div><div data-line-type="change-deletion" data-column-number="269" data-line-index="281,278"><span data-line-number-content="">269</span></div><div data-line-type="change-deletion" data-column-number="270" data-line-index="282,279"><span data-line-number-content="">270</span></div><div data-line-type="change-deletion" data-column-number="271" data-line-index="283,280"><span data-line-number-content="">271</span></div><div data-gutter-buffer="buffer" data-buffer-size="10" style="grid-row: span 10;min-height:calc(10 * 1lh);"></div><div data-line-type="context" data-column-number="272" data-line-index="297,291"><span data-line-number-content="">272</span></div><div data-line-type="context" data-column-number="273" data-line-index="298,292"><span data-line-number-content="">273</span></div><div data-line-type="context" data-column-number="274" data-line-index="299,293"><span data-line-number-content="">274</span></div><div data-line-type="context" data-column-number="275" data-line-index="300,294"><span data-line-number-content="">275</span></div><div data-gutter-buffer="buffer" data-buffer-size="2" style="grid-row: span 2;min-height:calc(2 * 1lh);"></div><div data-line-type="context" data-column-number="276" data-line-index="303,297"><span data-line-number-content="">276</span></div><div data-gutter-buffer="buffer" data-buffer-size="1" style="grid-row: span 1;min-height:calc(1 * 1lh);"></div><div data-line-type="context" data-column-number="277" data-line-index="305,299"><span data-line-number-content="">277</span></div><div data-line-type="context" data-column-number="278" data-line-index="306,300"><span data-line-number-content="">278</span></div><div data-line-type="context" data-column-number="279" data-line-index="307,301"><span data-line-number-content="">279</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">3 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="283" data-line-index="311,305"><span data-line-number-content="">283</span></div><div data-line-type="context" data-column-number="284" data-line-index="312,306"><span data-line-number-content="">284</span></div><div data-line-type="context" data-column-number="285" data-line-index="313,307"><span data-line-number-content="">285</span></div><div data-gutter-buffer="buffer" data-buffer-size="9" style="grid-row: span 9;min-height:calc(9 * 1lh);"></div><div data-line-type="context" data-column-number="286" data-line-index="323,317"><span data-line-number-content="">286</span></div><div data-line-type="context" data-column-number="287" data-line-index="324,318"><span data-line-number-content="">287</span></div><div data-line-type="context" data-column-number="288" data-line-index="325,319"><span data-line-number-content="">288</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">44 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="333" data-line-index="370,364"><span data-line-number-content="">333</span></div><div data-line-type="context" data-column-number="334" data-line-index="371,365"><span data-line-number-content="">334</span></div><div data-line-type="context" data-column-number="335" data-line-index="372,366"><span data-line-number-content="">335</span></div><div data-line-type="change-deletion" data-column-number="336" data-line-index="373,367"><span data-line-number-content="">336</span></div><div data-line-type="context" data-column-number="337" data-line-index="375,368"><span data-line-number-content="">337</span></div><div data-line-type="context" data-column-number="338" data-line-index="376,369"><span data-line-number-content="">338</span></div><div data-line-type="context" data-column-number="339" data-line-index="377,370"><span data-line-number-content="">339</span></div></div><div data-content="" style="grid-row: span 109"><div data-separator="line-info" data-separator-first=""><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">25 unmodified lines</span></div></div></div><div data-line="26" data-alt-line="26" data-line-type="context" data-line-index="25,25"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> didAutoSelectSubtitleTrack </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-line="27" data-alt-line="27" data-line-type="context" data-line-index="26,26"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> didUserSelectSubtitleTrack </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-line="28" data-alt-line="28" data-line-type="context" data-line-index="27,27"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> autoSelectedSubtitleTrackID: </span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">Int32</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span></div><div data-content-buffer="" data-buffer-size="2" style="grid-row: span 2;min-height:calc(2 * 1lh)"></div><div data-line="29" data-alt-line="31" data-line-type="context" data-line-index="30,30">
|
|
</div><div data-line="30" data-alt-line="32" data-line-type="context" data-line-index="31,31"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> override</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> init</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="31" data-alt-line="33" data-line-type="context" data-line-index="32,32"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> super</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE">init</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">15 unmodified lines</span></div></div></div><div data-line="47" data-alt-line="49" data-line-type="context" data-line-index="48,48"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> didAutoSelectSubtitleTrack </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-line="48" data-alt-line="50" data-line-type="context" data-line-index="49,49"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> didUserSelectSubtitleTrack </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-line="49" data-alt-line="51" data-line-type="context" data-line-index="50,50"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> autoSelectedSubtitleTrackID </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> nil</span></div><div data-content-buffer="" data-buffer-size="2" style="grid-row: span 2;min-height:calc(2 * 1lh)"></div><div data-line="50" data-alt-line="54" data-line-type="context" data-line-index="53,53"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> media </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> VLCMedia</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">url</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> request.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">playbackURL</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="51" data-alt-line="55" data-line-type="context" data-line-index="54,54"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> headerValue </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> request.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">headers</span></div><div data-line="52" data-alt-line="56" data-line-type="context" data-line-index="55,55"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> .</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">map</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">$0</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">key</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">: </span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">$0</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">.value</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">172 unmodified lines</span></div></div></div><div data-line="225" data-alt-line="229" data-line-type="context" data-line-index="228,228"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> attachSubtitles</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">_</span><span style="--diffs-token-dark:#A3A3A3;--diffs-token-light:#636363"> candidates</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">[</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">SubtitleCandidate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">])</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> -></span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> Int</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="226" data-alt-line="230" data-line-type="context" data-line-index="229,229"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> attachedCount </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0</span></div><div data-line="227" data-alt-line="231" data-line-type="context" data-line-index="230,230"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> duplicateCount </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0</span></div><div data-content-buffer="" data-buffer-size="1" style="grid-row: span 1;min-height:calc(1 * 1lh)"></div><div data-line="228" data-alt-line="233" data-line-type="context" data-line-index="232,232"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> candidates.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">forEach</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> candidate </span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">in</span></div><div data-line="229" data-alt-line="234" data-line-type="context" data-line-index="233,233"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> guard</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> !</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">attachedSubtitleURLs.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">contains</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">candidate.url</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> else</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="230" data-alt-line="235" data-line-type="context" data-line-index="234,234"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> duplicateCount </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">+=</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 1</span></div><div data-line="231" data-alt-line="236" data-line-type="context" data-line-index="235,235"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span></div><div data-line="232" data-alt-line="237" data-line-type="context" data-line-index="236,236"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="233" data-alt-line="238" data-line-type="context" data-line-index="237,237"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> attachedSubtitleURLs.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">insert</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">candidate.url</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-content-buffer="" data-buffer-size="2" style="grid-row: span 2;min-height:calc(2 * 1lh)"></div><div data-line="234" data-alt-line="241" data-line-type="context" data-line-index="240,240"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> mediaPlayer.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addPlaybackSlave</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">candidate.url, type</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">subtitle</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, enforce</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="235" data-alt-line="242" data-line-type="context" data-line-index="241,241"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> attachedCount </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">+=</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 1</span></div><div data-line="236" data-alt-line="243" data-line-type="context" data-line-index="242,242"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">#</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">if</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> DEBUG</span></div><div data-line="237" data-line-type="change-deletion" data-line-index="243,243"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> print</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"[DreamioVLC] </span><span data-diff-span=""><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">addPlaybackSlave </span></span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">subtitle=</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">URLRedactor.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">redactedURLString</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">candidate.url.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">absoluteString</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> label=</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">candidate.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">label</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> language=</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">candidate.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">language</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> ??</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "unknown"</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> ext=</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">candidate.url.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">pathExtension</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">lowercased</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="238" data-alt-line="245" data-line-type="context" data-line-index="245,244"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> logSubtitleTracks</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">reason</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "after-addPlaybackSlave"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="239" data-alt-line="246" data-line-type="context" data-line-index="246,245"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">#</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">endif</span></div><div data-line="240" data-alt-line="247" data-line-type="context" data-line-index="247,246"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="241" data-alt-line="248" data-line-type="context" data-line-index="248,247"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">#</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">if</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> DEBUG</span></div><div data-line="242" data-alt-line="249" data-line-type="context" data-line-index="249,248"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> if</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> !</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">candidates.isEmpty </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">{</span></div><div data-line="243" data-line-type="change-deletion" data-line-index="250,249"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> print</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"[DreamioVLC] subtitle candidates=</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">candidates.count</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> attached=</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">attachedCount</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> duplicates=</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">duplicateCount</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="244" data-alt-line="251" data-line-type="context" data-line-index="252,250"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="245" data-alt-line="252" data-line-type="context" data-line-index="253,251"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">#</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">endif</span></div><div data-line="246" data-alt-line="253" data-line-type="context" data-line-index="254,252"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> guard</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> attachedCount </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">></span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> else</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">1 unmodified line</span></div></div></div><div data-line="248" data-alt-line="255" data-line-type="context" data-line-index="256,254"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="249" data-alt-line="256" data-line-type="context" data-line-index="257,255"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> [</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">0.2</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">0.6</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">1.0</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">2.0</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">4.0</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">].</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">forEach</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> delay </span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">in</span></div><div data-line="250" data-alt-line="257" data-line-type="context" data-line-index="258,256"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> DispatchQueue.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">main</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">asyncAfter</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">deadline</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .now</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> +</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> delay</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> [</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">weak</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">] </span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">in</span></div><div data-line="251" data-line-type="change-deletion" data-line-index="259,257"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">selectInitialSubtitleTrackIfNeeded</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">reason</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "delayed-refresh-</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">String</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">format</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "%.1f"</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, delay</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="252" data-alt-line="259" data-line-type="context" data-line-index="261,258"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">#</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">if</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> DEBUG</span></div><div data-line="253" data-alt-line="260" data-line-type="context" data-line-index="262,259"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">logSubtitleTracks</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">reason</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "delayed-refresh-</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">String</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">format</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "%.1f"</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, delay</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-content-buffer="" data-buffer-size="3" style="grid-row: span 3;min-height:calc(3 * 1lh)"></div><div data-line="254" data-alt-line="264" data-line-type="context" data-line-index="266,263"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">#</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">endif</span></div><div data-line="255" data-alt-line="265" data-line-type="context" data-line-index="267,264"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">onSubtitleTracksChange</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?()</span></div><div data-line="256" data-alt-line="266" data-line-type="context" data-line-index="268,265"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">9 unmodified lines</span></div></div></div><div data-line="266" data-alt-line="276" data-line-type="context" data-line-index="278,275"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="267" data-alt-line="277" data-line-type="context" data-line-index="279,276"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">#</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">endif</span></div><div data-line="268" data-alt-line="278" data-line-type="context" data-line-index="280,277">
|
|
</div><div data-line="269" data-line-type="change-deletion" data-line-index="281,278"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> </span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">selectInitialSubtitleTrackIfNeeded</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">reason</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: </span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">String</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="270" data-line-type="change-deletion" data-line-index="282,279"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> guard</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> !</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">didUserSelectSubtitleTrack</span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></span></div><div data-line="271" data-line-type="change-deletion" data-line-index="283,280"><span data-diff-span=""><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> !</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">didAutoSelectSubtitleTrack,</span></span></div><div data-content-buffer="" data-buffer-size="10" style="grid-row: span 10;min-height:calc(10 * 1lh)"></div><div data-line="272" data-alt-line="292" data-line-type="context" data-line-index="297,291"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> mediaPlayer.currentVideoSubTitleIndex </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"><</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="273" data-alt-line="293" data-line-type="context" data-line-index="298,292"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> track </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> subtitleTracks.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">first</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">where</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> $0</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">id</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> >=</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> })</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> else</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="274" data-alt-line="294" data-line-type="context" data-line-index="299,293"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span></div><div data-line="275" data-alt-line="295" data-line-type="context" data-line-index="300,294"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-content-buffer="" data-buffer-size="2" style="grid-row: span 2;min-height:calc(2 * 1lh)"></div><div data-line="276" data-alt-line="298" data-line-type="context" data-line-index="303,297">
|
|
</div><div data-content-buffer="" data-buffer-size="1" style="grid-row: span 1;min-height:calc(1 * 1lh)"></div><div data-line="277" data-alt-line="300" data-line-type="context" data-line-index="305,299"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> didAutoSelectSubtitleTrack </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> true</span></div><div data-line="278" data-alt-line="301" data-line-type="context" data-line-index="306,300"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> autoSelectedSubtitleTrackID </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> track.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">id</span></div><div data-line="279" data-alt-line="302" data-line-type="context" data-line-index="307,301"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">#</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">if</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> DEBUG</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">3 unmodified lines</span></div></div></div><div data-line="283" data-alt-line="306" data-line-type="context" data-line-index="311,305"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> scheduleAutoSubtitleSelectionReapply</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">trackID</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> track.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">id</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="284" data-alt-line="307" data-line-type="context" data-line-index="312,306"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="285" data-alt-line="308" data-line-type="context" data-line-index="313,307">
|
|
</div><div data-content-buffer="" data-buffer-size="9" style="grid-row: span 9;min-height:calc(9 * 1lh)"></div><div data-line="286" data-alt-line="318" data-line-type="context" data-line-index="323,317"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> scheduleAutoSubtitleSelectionReapply</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">trackID</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: </span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">Int32</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="287" data-alt-line="319" data-line-type="context" data-line-index="324,318"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> [</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">0.3</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">1.0</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">2.0</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">4.0</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">].</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">forEach</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> delay </span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">in</span></div><div data-line="288" data-alt-line="320" data-line-type="context" data-line-index="325,319"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> DispatchQueue.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">main</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">asyncAfter</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">deadline</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .now</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> +</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> delay</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> [</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">weak</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">] </span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">in</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">44 unmodified lines</span></div></div></div><div data-line="333" data-alt-line="365" data-line-type="context" data-line-index="370,364"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> case</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">paused</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">stopped</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">ended</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">:</span></div><div data-line="334" data-alt-line="366" data-line-type="context" data-line-index="371,365"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> onStateChange</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?()</span></div><div data-line="335" data-alt-line="367" data-line-type="context" data-line-index="372,366"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> case</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">esAdded</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">:</span></div><div data-line="336" data-line-type="change-deletion" data-line-index="373,367"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> </span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">selectInitialSubtitleTrackIfNeeded</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">reason</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "esAdded"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="337" data-alt-line="369" data-line-type="context" data-line-index="375,368"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">#</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">if</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> DEBUG</span></div><div data-line="338" data-alt-line="370" data-line-type="context" data-line-index="376,369"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> logSubtitleTracks</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">reason</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "esAdded"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="339" data-alt-line="371" data-line-type="context" data-line-index="377,370"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">#</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">endif</span></div></div></code><code data-code="" data-container-size="" data-additions=""><div data-gutter="" style="grid-row: span 109"><div data-separator="line-info" data-separator-first=""><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">25 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="26" data-line-index="25,25"><span data-line-number-content="">26</span></div><div data-line-type="context" data-column-number="27" data-line-index="26,26"><span data-line-number-content="">27</span></div><div data-line-type="context" data-column-number="28" data-line-index="27,27"><span data-line-number-content="">28</span></div><div data-line-type="change-addition" data-column-number="29" data-line-index="28,28"><span data-line-number-content="">29</span></div><div data-line-type="change-addition" data-column-number="30" data-line-index="29,29"><span data-line-number-content="">30</span></div><div data-line-type="context" data-column-number="31" data-line-index="30,30"><span data-line-number-content="">31</span></div><div data-line-type="context" data-column-number="32" data-line-index="31,31"><span data-line-number-content="">32</span></div><div data-line-type="context" data-column-number="33" data-line-index="32,32"><span data-line-number-content="">33</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">15 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="49" data-line-index="48,48"><span data-line-number-content="">49</span></div><div data-line-type="context" data-column-number="50" data-line-index="49,49"><span data-line-number-content="">50</span></div><div data-line-type="context" data-column-number="51" data-line-index="50,50"><span data-line-number-content="">51</span></div><div data-line-type="change-addition" data-column-number="52" data-line-index="51,51"><span data-line-number-content="">52</span></div><div data-line-type="change-addition" data-column-number="53" data-line-index="52,52"><span data-line-number-content="">53</span></div><div data-line-type="context" data-column-number="54" data-line-index="53,53"><span data-line-number-content="">54</span></div><div data-line-type="context" data-column-number="55" data-line-index="54,54"><span data-line-number-content="">55</span></div><div data-line-type="context" data-column-number="56" data-line-index="55,55"><span data-line-number-content="">56</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">172 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="229" data-line-index="228,228"><span data-line-number-content="">229</span></div><div data-line-type="context" data-column-number="230" data-line-index="229,229"><span data-line-number-content="">230</span></div><div data-line-type="context" data-column-number="231" data-line-index="230,230"><span data-line-number-content="">231</span></div><div data-line-type="change-addition" data-column-number="232" data-line-index="231,231"><span data-line-number-content="">232</span></div><div data-line-type="context" data-column-number="233" data-line-index="232,232"><span data-line-number-content="">233</span></div><div data-line-type="context" data-column-number="234" data-line-index="233,233"><span data-line-number-content="">234</span></div><div data-line-type="context" data-column-number="235" data-line-index="234,234"><span data-line-number-content="">235</span></div><div data-line-type="context" data-column-number="236" data-line-index="235,235"><span data-line-number-content="">236</span></div><div data-line-type="context" data-column-number="237" data-line-index="236,236"><span data-line-number-content="">237</span></div><div data-line-type="context" data-column-number="238" data-line-index="237,237"><span data-line-number-content="">238</span></div><div data-line-type="change-addition" data-column-number="239" data-line-index="238,238"><span data-line-number-content="">239</span></div><div data-line-type="change-addition" data-column-number="240" data-line-index="239,239"><span data-line-number-content="">240</span></div><div data-line-type="context" data-column-number="241" data-line-index="240,240"><span data-line-number-content="">241</span></div><div data-line-type="context" data-column-number="242" data-line-index="241,241"><span data-line-number-content="">242</span></div><div data-line-type="context" data-column-number="243" data-line-index="242,242"><span data-line-number-content="">243</span></div><div data-line-type="change-addition" data-column-number="244" data-line-index="244,243"><span data-line-number-content="">244</span></div><div data-line-type="context" data-column-number="245" data-line-index="245,244"><span data-line-number-content="">245</span></div><div data-line-type="context" data-column-number="246" data-line-index="246,245"><span data-line-number-content="">246</span></div><div data-line-type="context" data-column-number="247" data-line-index="247,246"><span data-line-number-content="">247</span></div><div data-line-type="context" data-column-number="248" data-line-index="248,247"><span data-line-number-content="">248</span></div><div data-line-type="context" data-column-number="249" data-line-index="249,248"><span data-line-number-content="">249</span></div><div data-line-type="change-addition" data-column-number="250" data-line-index="251,249"><span data-line-number-content="">250</span></div><div data-line-type="context" data-column-number="251" data-line-index="252,250"><span data-line-number-content="">251</span></div><div data-line-type="context" data-column-number="252" data-line-index="253,251"><span data-line-number-content="">252</span></div><div data-line-type="context" data-column-number="253" data-line-index="254,252"><span data-line-number-content="">253</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">1 unmodified line</span></div></div></div><div data-line-type="context" data-column-number="255" data-line-index="256,254"><span data-line-number-content="">255</span></div><div data-line-type="context" data-column-number="256" data-line-index="257,255"><span data-line-number-content="">256</span></div><div data-line-type="context" data-column-number="257" data-line-index="258,256"><span data-line-number-content="">257</span></div><div data-line-type="change-addition" data-column-number="258" data-line-index="260,257"><span data-line-number-content="">258</span></div><div data-line-type="context" data-column-number="259" data-line-index="261,258"><span data-line-number-content="">259</span></div><div data-line-type="context" data-column-number="260" data-line-index="262,259"><span data-line-number-content="">260</span></div><div data-line-type="change-addition" data-column-number="261" data-line-index="263,260"><span data-line-number-content="">261</span></div><div data-line-type="change-addition" data-column-number="262" data-line-index="264,261"><span data-line-number-content="">262</span></div><div data-line-type="change-addition" data-column-number="263" data-line-index="265,262"><span data-line-number-content="">263</span></div><div data-line-type="context" data-column-number="264" data-line-index="266,263"><span data-line-number-content="">264</span></div><div data-line-type="context" data-column-number="265" data-line-index="267,264"><span data-line-number-content="">265</span></div><div data-line-type="context" data-column-number="266" data-line-index="268,265"><span data-line-number-content="">266</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">9 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="276" data-line-index="278,275"><span data-line-number-content="">276</span></div><div data-line-type="context" data-column-number="277" data-line-index="279,276"><span data-line-number-content="">277</span></div><div data-line-type="context" data-column-number="278" data-line-index="280,277"><span data-line-number-content="">278</span></div><div data-line-type="change-addition" data-column-number="279" data-line-index="284,278"><span data-line-number-content="">279</span></div><div data-line-type="change-addition" data-column-number="280" data-line-index="285,279"><span data-line-number-content="">280</span></div><div data-line-type="change-addition" data-column-number="281" data-line-index="286,280"><span data-line-number-content="">281</span></div><div data-line-type="change-addition" data-column-number="282" data-line-index="287,281"><span data-line-number-content="">282</span></div><div data-line-type="change-addition" data-column-number="283" data-line-index="288,282"><span data-line-number-content="">283</span></div><div data-line-type="change-addition" data-column-number="284" data-line-index="289,283"><span data-line-number-content="">284</span></div><div data-line-type="change-addition" data-column-number="285" data-line-index="290,284"><span data-line-number-content="">285</span></div><div data-line-type="change-addition" data-column-number="286" data-line-index="291,285"><span data-line-number-content="">286</span></div><div data-line-type="change-addition" data-column-number="287" data-line-index="292,286"><span data-line-number-content="">287</span></div><div data-line-type="change-addition" data-column-number="288" data-line-index="293,287"><span data-line-number-content="">288</span></div><div data-line-type="change-addition" data-column-number="289" data-line-index="294,288"><span data-line-number-content="">289</span></div><div data-line-type="change-addition" data-column-number="290" data-line-index="295,289"><span data-line-number-content="">290</span></div><div data-line-type="change-addition" data-column-number="291" data-line-index="296,290"><span data-line-number-content="">291</span></div><div data-line-type="context" data-column-number="292" data-line-index="297,291"><span data-line-number-content="">292</span></div><div data-line-type="context" data-column-number="293" data-line-index="298,292"><span data-line-number-content="">293</span></div><div data-line-type="context" data-column-number="294" data-line-index="299,293"><span data-line-number-content="">294</span></div><div data-line-type="context" data-column-number="295" data-line-index="300,294"><span data-line-number-content="">295</span></div><div data-line-type="change-addition" data-column-number="296" data-line-index="301,295"><span data-line-number-content="">296</span></div><div data-line-type="change-addition" data-column-number="297" data-line-index="302,296"><span data-line-number-content="">297</span></div><div data-line-type="context" data-column-number="298" data-line-index="303,297"><span data-line-number-content="">298</span></div><div data-line-type="change-addition" data-column-number="299" data-line-index="304,298"><span data-line-number-content="">299</span></div><div data-line-type="context" data-column-number="300" data-line-index="305,299"><span data-line-number-content="">300</span></div><div data-line-type="context" data-column-number="301" data-line-index="306,300"><span data-line-number-content="">301</span></div><div data-line-type="context" data-column-number="302" data-line-index="307,301"><span data-line-number-content="">302</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">3 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="306" data-line-index="311,305"><span data-line-number-content="">306</span></div><div data-line-type="context" data-column-number="307" data-line-index="312,306"><span data-line-number-content="">307</span></div><div data-line-type="context" data-column-number="308" data-line-index="313,307"><span data-line-number-content="">308</span></div><div data-line-type="change-addition" data-column-number="309" data-line-index="314,308"><span data-line-number-content="">309</span></div><div data-line-type="change-addition" data-column-number="310" data-line-index="315,309"><span data-line-number-content="">310</span></div><div data-line-type="change-addition" data-column-number="311" data-line-index="316,310"><span data-line-number-content="">311</span></div><div data-line-type="change-addition" data-column-number="312" data-line-index="317,311"><span data-line-number-content="">312</span></div><div data-line-type="change-addition" data-column-number="313" data-line-index="318,312"><span data-line-number-content="">313</span></div><div data-line-type="change-addition" data-column-number="314" data-line-index="319,313"><span data-line-number-content="">314</span></div><div data-line-type="change-addition" data-column-number="315" data-line-index="320,314"><span data-line-number-content="">315</span></div><div data-line-type="change-addition" data-column-number="316" data-line-index="321,315"><span data-line-number-content="">316</span></div><div data-line-type="change-addition" data-column-number="317" data-line-index="322,316"><span data-line-number-content="">317</span></div><div data-line-type="context" data-column-number="318" data-line-index="323,317"><span data-line-number-content="">318</span></div><div data-line-type="context" data-column-number="319" data-line-index="324,318"><span data-line-number-content="">319</span></div><div data-line-type="context" data-column-number="320" data-line-index="325,319"><span data-line-number-content="">320</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">44 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="365" data-line-index="370,364"><span data-line-number-content="">365</span></div><div data-line-type="context" data-column-number="366" data-line-index="371,365"><span data-line-number-content="">366</span></div><div data-line-type="context" data-column-number="367" data-line-index="372,366"><span data-line-number-content="">367</span></div><div data-line-type="change-addition" data-column-number="368" data-line-index="374,367"><span data-line-number-content="">368</span></div><div data-line-type="context" data-column-number="369" data-line-index="375,368"><span data-line-number-content="">369</span></div><div data-line-type="context" data-column-number="370" data-line-index="376,369"><span data-line-number-content="">370</span></div><div data-line-type="context" data-column-number="371" data-line-index="377,370"><span data-line-number-content="">371</span></div></div><div data-content="" style="grid-row: span 109"><div data-separator="line-info" data-separator-first=""><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">25 unmodified lines</span></div></div></div><div data-line="26" data-alt-line="26" data-line-type="context" data-line-index="25,25"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> didAutoSelectSubtitleTrack </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-line="27" data-alt-line="27" data-line-type="context" data-line-index="26,26"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> didUserSelectSubtitleTrack </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-line="28" data-alt-line="28" data-line-type="context" data-line-index="27,27"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> autoSelectedSubtitleTrackID: </span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">Int32</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span></div><div data-line="29" data-line-type="change-addition" data-line-index="28,28"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> externalSubtitleBaselineTrackIDs </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> Set</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"><</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">Int32</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">>()</span></div><div data-line="30" data-line-type="change-addition" data-line-index="29,29"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> hasPendingExternalSubtitleSelection </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-line="31" data-alt-line="29" data-line-type="context" data-line-index="30,30">
|
|
</div><div data-line="32" data-alt-line="30" data-line-type="context" data-line-index="31,31"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> override</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> init</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="33" data-alt-line="31" data-line-type="context" data-line-index="32,32"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> super</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE">init</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">15 unmodified lines</span></div></div></div><div data-line="49" data-alt-line="47" data-line-type="context" data-line-index="48,48"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> didAutoSelectSubtitleTrack </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-line="50" data-alt-line="48" data-line-type="context" data-line-index="49,49"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> didUserSelectSubtitleTrack </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-line="51" data-alt-line="49" data-line-type="context" data-line-index="50,50"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> autoSelectedSubtitleTrackID </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> nil</span></div><div data-line="52" data-line-type="change-addition" data-line-index="51,51"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> externalSubtitleBaselineTrackIDs.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">removeAll</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="53" data-line-type="change-addition" data-line-index="52,52"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> hasPendingExternalSubtitleSelection </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-line="54" data-alt-line="50" data-line-type="context" data-line-index="53,53"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> media </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> VLCMedia</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">url</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> request.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">playbackURL</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="55" data-alt-line="51" data-line-type="context" data-line-index="54,54"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> headerValue </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> request.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">headers</span></div><div data-line="56" data-alt-line="52" data-line-type="context" data-line-index="55,55"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> .</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">map</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">$0</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">key</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">: </span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">$0</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">.value</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">172 unmodified lines</span></div></div></div><div data-line="229" data-alt-line="225" data-line-type="context" data-line-index="228,228"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> attachSubtitles</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">_</span><span style="--diffs-token-dark:#A3A3A3;--diffs-token-light:#636363"> candidates</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">[</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">SubtitleCandidate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">])</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> -></span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> Int</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="230" data-alt-line="226" data-line-type="context" data-line-index="229,229"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> attachedCount </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0</span></div><div data-line="231" data-alt-line="227" data-line-type="context" data-line-index="230,230"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> duplicateCount </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0</span></div><div data-line="232" data-line-type="change-addition" data-line-index="231,231"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> baselineTrackIDs </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> Set</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">subtitleTracks.filter </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">{</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> $0</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">id</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> >=</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.map</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">\.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">id</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">))</span></div><div data-line="233" data-alt-line="228" data-line-type="context" data-line-index="232,232"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> candidates.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">forEach</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> candidate </span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">in</span></div><div data-line="234" data-alt-line="229" data-line-type="context" data-line-index="233,233"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> guard</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> !</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">attachedSubtitleURLs.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">contains</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">candidate.url</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> else</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="235" data-alt-line="230" data-line-type="context" data-line-index="234,234"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> duplicateCount </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">+=</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 1</span></div><div data-line="236" data-alt-line="231" data-line-type="context" data-line-index="235,235"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span></div><div data-line="237" data-alt-line="232" data-line-type="context" data-line-index="236,236"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="238" data-alt-line="233" data-line-type="context" data-line-index="237,237"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> attachedSubtitleURLs.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">insert</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">candidate.url</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="239" data-line-type="change-addition" data-line-index="238,238"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> externalSubtitleBaselineTrackIDs.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">formUnion</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">baselineTrackIDs</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="240" data-line-type="change-addition" data-line-index="239,239"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> hasPendingExternalSubtitleSelection </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> true</span></div><div data-line="241" data-alt-line="234" data-line-type="context" data-line-index="240,240"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> mediaPlayer.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addPlaybackSlave</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">candidate.url, type</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">subtitle</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, enforce</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="242" data-alt-line="235" data-line-type="context" data-line-index="241,241"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> attachedCount </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">+=</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 1</span></div><div data-line="243" data-alt-line="236" data-line-type="context" data-line-index="242,242"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">#</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">if</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> DEBUG</span></div><div data-line="244" data-line-type="change-addition" data-line-index="244,243"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> print</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"[DreamioVLC] </span><span data-diff-span=""><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">attach accepted </span></span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">subtitle=</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">URLRedactor.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">redactedURLString</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">candidate.url.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">absoluteString</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> label=</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">candidate.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">label</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> language=</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">candidate.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">language</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> ??</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "unknown"</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> ext=</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">candidate.url.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">pathExtension</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">lowercased</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span data-diff-span=""><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> visibleBefore=</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">baselineTrackIDs.count</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span></span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="245" data-alt-line="238" data-line-type="context" data-line-index="245,244"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> logSubtitleTracks</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">reason</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "after-addPlaybackSlave"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="246" data-alt-line="239" data-line-type="context" data-line-index="246,245"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">#</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">endif</span></div><div data-line="247" data-alt-line="240" data-line-type="context" data-line-index="247,246"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="248" data-alt-line="241" data-line-type="context" data-line-index="248,247"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">#</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">if</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> DEBUG</span></div><div data-line="249" data-alt-line="242" data-line-type="context" data-line-index="249,248"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> if</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> !</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">candidates.isEmpty </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">{</span></div><div data-line="250" data-line-type="change-addition" data-line-index="251,249"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> print</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"[DreamioVLC] subtitle candidates=</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">candidates.count</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> attached=</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">attachedCount</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> duplicates=</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">duplicateCount</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span data-diff-span=""><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> visible=</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">subtitleTracks.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">filter</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> $0</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">id</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> >=</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">.count</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span></span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="251" data-alt-line="244" data-line-type="context" data-line-index="252,250"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="252" data-alt-line="245" data-line-type="context" data-line-index="253,251"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">#</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">endif</span></div><div data-line="253" data-alt-line="246" data-line-type="context" data-line-index="254,252"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> guard</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> attachedCount </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">></span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> else</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">1 unmodified line</span></div></div></div><div data-line="255" data-alt-line="248" data-line-type="context" data-line-index="256,254"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="256" data-alt-line="249" data-line-type="context" data-line-index="257,255"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> [</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">0.2</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">0.6</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">1.0</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">2.0</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">4.0</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">].</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">forEach</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> delay </span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">in</span></div><div data-line="257" data-alt-line="250" data-line-type="context" data-line-index="258,256"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> DispatchQueue.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">main</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">asyncAfter</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">deadline</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .now</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> +</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> delay</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> [</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">weak</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">] </span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">in</span></div><div data-line="258" data-line-type="change-addition" data-line-index="260,257"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">selectPreferredSubtitleTrackIfNeeded</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">reason</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "delayed-refresh-</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">String</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">format</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "%.1f"</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, delay</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="259" data-alt-line="252" data-line-type="context" data-line-index="261,258"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">#</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">if</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> DEBUG</span></div><div data-line="260" data-alt-line="253" data-line-type="context" data-line-index="262,259"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">logSubtitleTracks</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">reason</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "delayed-refresh-</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">String</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">format</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "%.1f"</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, delay</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="261" data-line-type="change-addition" data-line-index="263,260"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> if</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> delay </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">==</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 4.0</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="262" data-line-type="change-addition" data-line-index="264,261"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">logMissingExternalSubtitleTrackIfNeeded</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="263" data-line-type="change-addition" data-line-index="265,262"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="264" data-alt-line="254" data-line-type="context" data-line-index="266,263"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">#</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">endif</span></div><div data-line="265" data-alt-line="255" data-line-type="context" data-line-index="267,264"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">onSubtitleTracksChange</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?()</span></div><div data-line="266" data-alt-line="256" data-line-type="context" data-line-index="268,265"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">9 unmodified lines</span></div></div></div><div data-line="276" data-alt-line="266" data-line-type="context" data-line-index="278,275"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="277" data-alt-line="267" data-line-type="context" data-line-index="279,276"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">#</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">endif</span></div><div data-line="278" data-alt-line="268" data-line-type="context" data-line-index="280,277">
|
|
</div><div data-line="279" data-line-type="change-addition" data-line-index="284,278"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> </span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">selectPreferredSubtitleTrackIfNeeded</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">reason</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: </span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">String</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="280" data-line-type="change-addition" data-line-index="285,279"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> guard</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> !</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">didUserSelectSubtitleTrack</span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">else</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></span></div><div data-line="281" data-line-type="change-addition" data-line-index="286,280"><span data-diff-span=""><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span></span></div><div data-line="282" data-line-type="change-addition" data-line-index="287,281"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="283" data-line-type="change-addition" data-line-index="288,282">
|
|
</div><div data-line="284" data-line-type="change-addition" data-line-index="289,283"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> if</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> hasPendingExternalSubtitleSelection,</span></div><div data-line="285" data-line-type="change-addition" data-line-index="290,284"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> externalTrack </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> subtitleTracks.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">first</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">where</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> $0</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">id</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> >=</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> &&</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> !</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">externalSubtitleBaselineTrackIDs.contains</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">$0</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">id</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> })</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="286" data-line-type="change-addition" data-line-index="291,285"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> selectAutoSubtitleTrack</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">externalTrack, reason</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">reason</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">-external"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="287" data-line-type="change-addition" data-line-index="292,286"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> hasPendingExternalSubtitleSelection </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-line="288" data-line-type="change-addition" data-line-index="293,287"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span></div><div data-line="289" data-line-type="change-addition" data-line-index="294,288"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="290" data-line-type="change-addition" data-line-index="295,289">
|
|
</div><div data-line="291" data-line-type="change-addition" data-line-index="296,290"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> guard</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> !</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">didAutoSelectSubtitleTrack,</span></div><div data-line="292" data-alt-line="272" data-line-type="context" data-line-index="297,291"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> mediaPlayer.currentVideoSubTitleIndex </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"><</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="293" data-alt-line="273" data-line-type="context" data-line-index="298,292"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> track </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> subtitleTracks.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">first</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">where</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> $0</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">id</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> >=</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> })</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> else</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="294" data-alt-line="274" data-line-type="context" data-line-index="299,293"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span></div><div data-line="295" data-alt-line="275" data-line-type="context" data-line-index="300,294"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="296" data-line-type="change-addition" data-line-index="301,295"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> selectAutoSubtitleTrack</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">track, reason</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> reason</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="297" data-line-type="change-addition" data-line-index="302,296"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="298" data-alt-line="276" data-line-type="context" data-line-index="303,297">
|
|
</div><div data-line="299" data-line-type="change-addition" data-line-index="304,298"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> selectAutoSubtitleTrack</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">_</span><span style="--diffs-token-dark:#A3A3A3;--diffs-token-light:#636363"> track</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: SubtitleTrack, </span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">reason</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: </span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">String</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="300" data-alt-line="277" data-line-type="context" data-line-index="305,299"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> didAutoSelectSubtitleTrack </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> true</span></div><div data-line="301" data-alt-line="278" data-line-type="context" data-line-index="306,300"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> autoSelectedSubtitleTrackID </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> track.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">id</span></div><div data-line="302" data-alt-line="279" data-line-type="context" data-line-index="307,301"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">#</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">if</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> DEBUG</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">3 unmodified lines</span></div></div></div><div data-line="306" data-alt-line="283" data-line-type="context" data-line-index="311,305"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> scheduleAutoSubtitleSelectionReapply</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">trackID</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> track.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">id</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="307" data-alt-line="284" data-line-type="context" data-line-index="312,306"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="308" data-alt-line="285" data-line-type="context" data-line-index="313,307">
|
|
</div><div data-line="309" data-line-type="change-addition" data-line-index="314,308"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">#</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">if</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> DEBUG</span></div><div data-line="310" data-line-type="change-addition" data-line-index="315,309"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> logMissingExternalSubtitleTrackIfNeeded</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="311" data-line-type="change-addition" data-line-index="316,310"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> guard</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> hasPendingExternalSubtitleSelection </span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">else</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="312" data-line-type="change-addition" data-line-index="317,311"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span></div><div data-line="313" data-line-type="change-addition" data-line-index="318,312"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="314" data-line-type="change-addition" data-line-index="319,313"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> print</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"[DreamioVLC] attach accepted but no new external subtitle track visible baseline=</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">externalSubtitleBaselineTrackIDs.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">sorted</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> visible=</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">subtitleTracks.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">filter</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> $0</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">id</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> >=</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">map</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">\.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">id</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="315" data-line-type="change-addition" data-line-index="320,314"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="316" data-line-type="change-addition" data-line-index="321,315"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">#</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">endif</span></div><div data-line="317" data-line-type="change-addition" data-line-index="322,316">
|
|
</div><div data-line="318" data-alt-line="286" data-line-type="context" data-line-index="323,317"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> scheduleAutoSubtitleSelectionReapply</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">trackID</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: </span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">Int32</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="319" data-alt-line="287" data-line-type="context" data-line-index="324,318"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> [</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">0.3</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">1.0</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">2.0</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">4.0</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">].</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">forEach</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> delay </span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">in</span></div><div data-line="320" data-alt-line="288" data-line-type="context" data-line-index="325,319"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> DispatchQueue.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">main</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">asyncAfter</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">deadline</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .now</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> +</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> delay</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> [</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">weak</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">] </span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">in</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">44 unmodified lines</span></div></div></div><div data-line="365" data-alt-line="333" data-line-type="context" data-line-index="370,364"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> case</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">paused</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">stopped</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">ended</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">:</span></div><div data-line="366" data-alt-line="334" data-line-type="context" data-line-index="371,365"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> onStateChange</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?()</span></div><div data-line="367" data-alt-line="335" data-line-type="context" data-line-index="372,366"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> case</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">esAdded</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">:</span></div><div data-line="368" data-line-type="change-addition" data-line-index="374,367"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> </span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">selectPreferredSubtitleTrackIfNeeded</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">reason</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "esAdded"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="369" data-alt-line="337" data-line-type="context" data-line-index="375,368"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">#</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">if</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> DEBUG</span></div><div data-line="370" data-alt-line="338" data-line-type="context" data-line-index="376,369"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> logSubtitleTracks</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">reason</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "esAdded"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="371" data-alt-line="339" data-line-type="context" data-line-index="377,370"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">#</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">endif</span></div></div></code></pre>
|
|
<svg data-icon-sprite aria-hidden="true" width="0" height="0">
|
|
<symbol id="diffs-icon-arrow-right-short" viewBox="0 0 16 16">
|
|
<path d="M8.47 4.22a.75.75 0 0 0 0 1.06l1.97 1.97H3.75a.75.75 0 0 0 0 1.5h6.69l-1.97 1.97a.75.75 0 1 0 1.06 1.06l3.25-3.25a.75.75 0 0 0 0-1.06L9.53 4.22a.75.75 0 0 0-1.06 0"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-brand-github" viewBox="0 0 16 16">
|
|
<path d="M8 0c4.42 0 8 3.58 8 8a8.01 8.01 0 0 1-5.45 7.59c-.4.08-.55-.17-.55-.38 0-.27.01-1.13.01-2.2 0-.75-.25-1.23-.54-1.48 1.78-.2 3.65-.88 3.65-3.95 0-.88-.31-1.59-.82-2.15.08-.2.36-1.02-.08-2.12 0 0-.67-.22-2.2.82-.64-.18-1.32-.27-2-.27s-1.36.09-2 .27c-1.53-1.03-2.2-.82-2.2-.82-.44 1.1-.16 1.92-.08 2.12-.51.56-.82 1.28-.82 2.15 0 3.06 1.86 3.75 3.64 3.95-.23.2-.44.55-.51 1.07-.46.21-1.61.55-2.33-.66-.15-.24-.6-.83-1.23-.82-.67.01-.27.38.01.53.34.19.73.9.82 1.13.16.45.68 1.31 2.69.94 0 .67.01 1.3.01 1.49 0 .21-.15.45-.55.38A7.995 7.995 0 0 1 0 8c0-4.42 3.58-8 8-8"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-chevron" viewBox="0 0 16 16">
|
|
<path d="M1.47 4.47a.75.75 0 0 1 1.06 0L8 9.94l5.47-5.47a.75.75 0 1 1 1.06 1.06l-6 6a.75.75 0 0 1-1.06 0l-6-6a.75.75 0 0 1 0-1.06"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-chevrons-narrow" viewBox="0 0 10 16">
|
|
<path d="M4.47 2.22a.75.75 0 0 1 1.06 0l3.25 3.25a.75.75 0 0 1-1.06 1.06L5 3.81 2.28 6.53a.75.75 0 0 1-1.06-1.06zM1.22 9.47a.75.75 0 0 1 1.06 0L5 12.19l2.72-2.72a.75.75 0 0 1 1.06 1.06l-3.25 3.25a.75.75 0 0 1-1.06 0l-3.25-3.25a.75.75 0 0 1 0-1.06"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-diff-split" viewBox="0 0 16 16">
|
|
<path d="M14 0H8.5v16H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2m-1.5 6.5v1h1a.5.5 0 0 1 0 1h-1v1a.5.5 0 0 1-1 0v-1h-1a.5.5 0 0 1 0-1h1v-1a.5.5 0 0 1 1 0"/><path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h5.5V0zm.5 7.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1 0-1" opacity=".3"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-diff-unified" viewBox="0 0 16 16">
|
|
<path fill-rule="evenodd" d="M16 14a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V8.5h16zm-8-4a.5.5 0 0 0-.5.5v1h-1a.5.5 0 0 0 0 1h1v1a.5.5 0 0 0 1 0v-1h1a.5.5 0 0 0 0-1h-1v-1A.5.5 0 0 0 8 10" clip-rule="evenodd"/><path fill-rule="evenodd" d="M14 0a2 2 0 0 1 2 2v5.5H0V2a2 2 0 0 1 2-2zM6.5 3.5a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1z" clip-rule="evenodd" opacity=".4"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-expand" viewBox="0 0 16 16">
|
|
<path d="M3.47 5.47a.75.75 0 0 1 1.06 0L8 8.94l3.47-3.47a.75.75 0 1 1 1.06 1.06l-4 4a.75.75 0 0 1-1.06 0l-4-4a.75.75 0 0 1 0-1.06"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-expand-all" viewBox="0 0 16 16">
|
|
<path d="M11.47 9.47a.75.75 0 1 1 1.06 1.06l-4 4a.75.75 0 0 1-1.06 0l-4-4a.75.75 0 1 1 1.06-1.06L8 12.94zM7.526 1.418a.75.75 0 0 1 1.004.052l4 4a.75.75 0 1 1-1.06 1.06L8 3.06 4.53 6.53a.75.75 0 1 1-1.06-1.06l4-4z"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-file-code" viewBox="0 0 16 16">
|
|
<path d="M10.75 0c.199 0 .39.08.53.22l3.5 3.5c.14.14.22.331.22.53v9A2.75 2.75 0 0 1 12.25 16h-8.5A2.75 2.75 0 0 1 1 13.25V2.75A2.75 2.75 0 0 1 3.75 0zm-7 1.5c-.69 0-1.25.56-1.25 1.25v10.5c0 .69.56 1.25 1.25 1.25h8.5c.69 0 1.25-.56 1.25-1.25V5h-1.25A2.25 2.25 0 0 1 10 2.75V1.5z"/><path d="M7.248 6.19a.75.75 0 0 1 .063 1.058L5.753 9l1.558 1.752a.75.75 0 0 1-1.122.996l-2-2.25a.75.75 0 0 1 0-.996l2-2.25a.75.75 0 0 1 1.06-.063M8.69 7.248a.75.75 0 1 1 1.12-.996l2 2.25a.75.75 0 0 1 0 .996l-2 2.25a.75.75 0 1 1-1.12-.996L10.245 9z"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-plus" viewBox="0 0 16 16">
|
|
<path d="M8 3a.75.75 0 0 1 .75.75v3.5h3.5a.75.75 0 0 1 0 1.5h-3.5v3.5a.75.75 0 0 1-1.5 0v-3.5h-3.5a.75.75 0 0 1 0-1.5h3.5v-3.5A.75.75 0 0 1 8 3"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-symbol-added" viewBox="0 0 16 16">
|
|
<path d="M8 4a.75.75 0 0 1 .75.75v2.5h2.5a.75.75 0 0 1 0 1.5h-2.5v2.5a.75.75 0 0 1-1.5 0v-2.5h-2.5a.75.75 0 0 1 0-1.5h2.5v-2.5A.75.75 0 0 1 8 4"/><path d="M1.788 4.296c.196-.88.478-1.381.802-1.706s.826-.606 1.706-.802C5.194 1.588 6.387 1.5 8 1.5s2.806.088 3.704.288c.88.196 1.381.478 1.706.802s.607.826.802 1.706c.2.898.288 2.091.288 3.704s-.088 2.806-.288 3.704c-.195.88-.478 1.381-.802 1.706s-.826.607-1.706.802c-.898.2-2.091.288-3.704.288s-2.806-.088-3.704-.288c-.88-.195-1.381-.478-1.706-.802s-.606-.826-.802-1.706C1.588 10.806 1.5 9.613 1.5 8s.088-2.806.288-3.704M8 0C1.412 0 0 1.412 0 8s1.412 8 8 8 8-1.412 8-8-1.412-8-8-8"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-symbol-deleted" viewBox="0 0 16 16">
|
|
<path d="M4 8a.75.75 0 0 1 .75-.75h6.5a.75.75 0 0 1 0 1.5h-6.5A.75.75 0 0 1 4 8"/><path d="M1.788 4.296c.196-.88.478-1.381.802-1.706s.826-.606 1.706-.802C5.194 1.588 6.387 1.5 8 1.5s2.806.088 3.704.288c.88.196 1.381.478 1.706.802s.607.826.802 1.706c.2.898.288 2.091.288 3.704s-.088 2.806-.288 3.704c-.195.88-.478 1.381-.802 1.706s-.826.607-1.706.802c-.898.2-2.091.288-3.704.288s-2.806-.088-3.704-.288c-.88-.195-1.381-.478-1.706-.802s-.606-.826-.802-1.706C1.588 10.806 1.5 9.613 1.5 8s.088-2.806.288-3.704M8 0C1.412 0 0 1.412 0 8s1.412 8 8 8 8-1.412 8-8-1.412-8-8-8"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-symbol-diffstat" viewBox="0 0 16 16">
|
|
<path d="M1.788 4.296c.196-.88.478-1.381.802-1.706s.826-.606 1.706-.802C5.194 1.588 6.387 1.5 8 1.5s2.806.088 3.704.288c.88.196 1.381.478 1.706.802s.607.826.802 1.706c.2.898.288 2.091.288 3.704s-.088 2.806-.288 3.704c-.195.88-.478 1.381-.802 1.706s-.826.607-1.706.802c-.898.2-2.091.288-3.704.288s-2.806-.088-3.704-.288c-.88-.195-1.381-.478-1.706-.802s-.606-.826-.802-1.706C1.588 10.806 1.5 9.613 1.5 8s.088-2.806.288-3.704M8 0C1.412 0 0 1.412 0 8s1.412 8 8 8 8-1.412 8-8-1.412-8-8-8"/><path d="M8.75 4.296a.75.75 0 0 0-1.5 0V6.25h-2a.75.75 0 0 0 0 1.5h2v1.5h1.5v-1.5h2a.75.75 0 0 0 0-1.5h-2zM5.25 10a.75.75 0 0 0 0 1.5h5.5a.75.75 0 0 0 0-1.5z"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-symbol-ignored" viewBox="0 0 16 16">
|
|
<path d="M1.5 8c0 1.613.088 2.806.288 3.704.196.88.478 1.381.802 1.706s.826.607 1.706.802c.898.2 2.091.288 3.704.288s2.806-.088 3.704-.288c.88-.195 1.381-.478 1.706-.802s.607-.826.802-1.706c.2-.898.288-2.091.288-3.704s-.088-2.806-.288-3.704c-.195-.88-.478-1.381-.802-1.706s-.826-.606-1.706-.802C10.806 1.588 9.613 1.5 8 1.5s-2.806.088-3.704.288c-.88.196-1.381.478-1.706.802s-.606.826-.802 1.706C1.588 5.194 1.5 6.387 1.5 8M0 8c0-6.588 1.412-8 8-8s8 1.412 8 8-1.412 8-8 8-8-1.412-8-8m11.53-2.47a.75.75 0 0 0-1.06-1.06l-6 6a.75.75 0 1 0 1.06 1.06z"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-symbol-modified" viewBox="0 0 16 16">
|
|
<path d="M1.5 8c0 1.613.088 2.806.288 3.704.196.88.478 1.381.802 1.706s.826.607 1.706.802c.898.2 2.091.288 3.704.288s2.806-.088 3.704-.288c.88-.195 1.381-.478 1.706-.802s.607-.826.802-1.706c.2-.898.288-2.091.288-3.704s-.088-2.806-.288-3.704c-.195-.88-.478-1.381-.802-1.706s-.826-.606-1.706-.802C10.806 1.588 9.613 1.5 8 1.5s-2.806.088-3.704.288c-.88.196-1.381.478-1.706.802s-.606.826-.802 1.706C1.588 5.194 1.5 6.387 1.5 8M0 8c0-6.588 1.412-8 8-8s8 1.412 8 8-1.412 8-8 8-8-1.412-8-8m8 3a3 3 0 1 0 0-6 3 3 0 0 0 0 6"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-symbol-moved" viewBox="0 0 16 16">
|
|
<path d="M1.788 4.296c.196-.88.478-1.381.802-1.706s.826-.606 1.706-.802C5.194 1.588 6.387 1.5 8 1.5s2.806.088 3.704.288c.88.196 1.381.478 1.706.802s.607.826.802 1.706c.2.898.288 2.091.288 3.704s-.088 2.806-.288 3.704c-.195.88-.478 1.381-.802 1.706s-.826.607-1.706.802c-.898.2-2.091.288-3.704.288s-2.806-.088-3.704-.288c-.88-.195-1.381-.478-1.706-.802s-.606-.826-.802-1.706C1.588 10.806 1.5 9.613 1.5 8s.088-2.806.288-3.704M8 0C1.412 0 0 1.412 0 8s1.412 8 8 8 8-1.412 8-8-1.412-8-8-8"/><path d="M8.495 4.695a.75.75 0 0 0-.05 1.06L10.486 8l-2.041 2.246a.75.75 0 0 0 1.11 1.008l2.5-2.75a.75.75 0 0 0 0-1.008l-2.5-2.75a.75.75 0 0 0-1.06-.051m-4 0a.75.75 0 0 0-.05 1.06l2.044 2.248-1.796 1.995a.75.75 0 0 0 1.114 1.004l2.25-2.5a.75.75 0 0 0-.002-1.007l-2.5-2.75a.75.75 0 0 0-1.06-.05"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-symbol-ref" viewBox="0 0 16 16">
|
|
<path d="M1.5 8c0 1.613.088 2.806.288 3.704.196.88.478 1.381.802 1.706.286.286.71.54 1.41.73V1.86c-.7.19-1.124.444-1.41.73-.324.325-.606.826-.802 1.706C1.588 5.194 1.5 6.387 1.5 8m4 6.397c.697.07 1.522.103 2.5.103 1.613 0 2.806-.088 3.704-.288.88-.195 1.381-.478 1.706-.802s.607-.826.802-1.706c.2-.898.288-2.091.288-3.704s-.088-2.806-.288-3.704c-.195-.88-.478-1.381-.802-1.706s-.826-.606-1.706-.802C10.806 1.588 9.613 1.5 8 1.5c-.978 0-1.803.033-2.5.103zM0 8c0-6.588 1.412-8 8-8s8 1.412 8 8-1.412 8-8 8-8-1.412-8-8m7-2a1 1 0 0 1 1-1h3a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1z"/>
|
|
</symbol>
|
|
</svg><style data-core-css="">@layer base, theme, rendered, unsafe;
|
|
@layer base,theme,rendered,unsafe;@layer base{:host{--diffs-font-fallback:"SF Mono", Monaco, Consolas, "Ubuntu Mono", "Liberation Mono", "Courier New", monospace;--diffs-header-font-fallback:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif;--diffs-mixer:light-dark(#000,#fff);--diffs-gap-fallback:8px;--diffs-scrollbar-gutter-fallback:6px;--diffs-scrollbar-gutter:var(--diffs-scrollbar-gutter-override,var(--diffs-scrollbar-gutter-measured,var(--diffs-scrollbar-gutter-fallback)));--diffs-added-light:#0dbe4e;--diffs-added-dark:#5ecc71;--diffs-modified-light:#009fff;--diffs-modified-dark:#69b1ff;--diffs-deleted-light:#ff2e3f;--diffs-deleted-dark:#ff6762;color-scheme:light dark;font-family:var(--diffs-header-font-family,var(--diffs-header-font-fallback));font-size:var(--diffs-font-size,13px);line-height:var(--diffs-line-height,20px);font-feature-settings:var(--diffs-font-features);--diffs-bg:light-dark(var(--diffs-light-bg,#fff),var(--diffs-dark-bg,#000));--diffs-bg-buffer:var(--diffs-bg-buffer-override,light-dark(color-mix(in lab, var(--diffs-bg) 92%, var(--diffs-mixer)),color-mix(in lab, var(--diffs-bg) 92%, var(--diffs-mixer))));--diffs-bg-context:var(--diffs-bg-context-override,light-dark(color-mix(in lab, var(--diffs-bg) 98.5%, var(--diffs-mixer)),color-mix(in lab, var(--diffs-bg) 92.5%, var(--diffs-mixer))));--diffs-bg-context-gutter:var(--diffs-bg-context-gutter-override,light-dark(color-mix(in lab, var(--diffs-bg-context) 90%, var(--diffs-bg)),color-mix(in lab, var(--diffs-bg-context) 45%, var(--diffs-bg))));--diffs-bg-separator:var(--diffs-bg-separator-override,light-dark(color-mix(in lab, var(--diffs-bg) 96%, var(--diffs-mixer)),color-mix(in lab, var(--diffs-bg) 85%, var(--diffs-mixer))));--diffs-fg:light-dark(var(--diffs-light,#000),var(--diffs-dark,#fff));--diffs-fg-number:var(--diffs-fg-number-override,light-dark(color-mix(in lab, var(--diffs-fg) 65%, var(--diffs-bg)),color-mix(in lab, var(--diffs-fg) 65%, var(--diffs-bg))));--diffs-fg-conflict-marker:var(--diffs-fg-conflict-marker-override,var(--diffs-fg-number));--diffs-deletion-base:var(--diffs-deletion-color-override,light-dark(var(--diffs-light-deletion-color,var(--diffs-deletion-color,var(--diffs-deleted-light))),var(--diffs-dark-deletion-color,var(--diffs-deletion-color,var(--diffs-deleted-dark)))));--diffs-addition-base:var(--diffs-addition-color-override,light-dark(var(--diffs-light-addition-color,var(--diffs-addition-color,var(--diffs-added-light))),var(--diffs-dark-addition-color,var(--diffs-addition-color,var(--diffs-added-dark)))));--diffs-modified-base:var(--diffs-modified-color-override,light-dark(var(--diffs-light-modified-color,var(--diffs-modified-color,var(--diffs-modified-light))),var(--diffs-dark-modified-color,var(--diffs-modified-color,var(--diffs-modified-dark)))));--diffs-bg-deletion:var(--diffs-bg-deletion-override,light-dark(color-mix(in lab, var(--diffs-bg) 88%, var(--diffs-deletion-base)),color-mix(in lab, var(--diffs-bg) 80%, var(--diffs-deletion-base))));--diffs-bg-deletion-emphasis:var(--diffs-bg-deletion-emphasis-override,light-dark(rgb(from var(--diffs-deletion-base) r g b / .15),rgb(from var(--diffs-deletion-base) r g b / .2)));--diffs-bg-addition:var(--diffs-bg-addition-override,light-dark(color-mix(in lab, var(--diffs-bg) 88%, var(--diffs-addition-base)),color-mix(in lab, var(--diffs-bg) 80%, var(--diffs-addition-base))));--diffs-bg-addition-emphasis:var(--diffs-bg-addition-emphasis-override,light-dark(rgb(from var(--diffs-addition-base) r g b / .15),rgb(from var(--diffs-addition-base) r g b / .2)));--diffs-selection-base:var(--diffs-modified-base);--diffs-selection-number-fg:light-dark(color-mix(in lab, var(--diffs-selection-base) 65%, var(--diffs-mixer)),color-mix(in lab, var(--diffs-selection-base) 75%, var(--diffs-mixer)));background-color:var(--diffs-bg);color:var(--diffs-fg);display:block}pre,code,[data-error-wrapper]{isolation:isolate;font-family:var(--diffs-font-family,var(--diffs-font-fallback));outline:none;margin:0;padding:0;display:block}pre,code{background-color:var(--diffs-bg)}code{contain:content}*,:before,:after{box-sizing:border-box}[data-icon-sprite]{display:none}[data-diffs-header],[data-separator]{font-family:var(--diffs-header-font-family,var(--diffs-header-font-fallback))}[data-diffs-header][data-sticky]{z-index:1;background-color:var(--diffs-bg);position:sticky;top:0}[data-file-info]{color:var(--fg);background-color:color-mix(in lab, var(--bg) 98%, var(--fg));border-block:1px solid color-mix(in lab, var(--bg) 95%, var(--fg));padding:10px;font-weight:700}[data-diff],[data-file]{--diffs-grid-number-column-width:minmax(min-content, max-content);--diffs-code-grid:var(--diffs-grid-number-column-width) 1fr}[data-dehydrated]:is([data-diff],[data-file]){--diffs-code-grid:var(--diffs-grid-number-column-width) minmax(0, 1fr)}:is([data-diff],[data-file]):hover [data-code]::-webkit-scrollbar-thumb{background-color:var(--diffs-bg-context)}@supports (-webkit-touch-callout:none){:host{--diffs-scrollbar-gutter-fallback:0px}}[data-line] span{color:light-dark(var(--diffs-token-light,var(--diffs-light)),var(--diffs-token-dark,var(--diffs-dark)));background-color:light-dark(var(--diffs-token-light-bg,inherit),var(--diffs-token-dark-bg,inherit));font-weight:light-dark(var(--diffs-token-light-font-weight,inherit),var(--diffs-token-dark-font-weight,inherit));font-style:light-dark(var(--diffs-token-light-font-style,inherit),var(--diffs-token-dark-font-style,inherit));-webkit-text-decoration:light-dark(var(--diffs-token-light-text-decoration,inherit),var(--diffs-token-dark-text-decoration,inherit));text-decoration:light-dark(var(--diffs-token-light-text-decoration,inherit),var(--diffs-token-dark-text-decoration,inherit))}[data-line],[data-gutter-buffer],[data-column-number],[data-line-annotation],[data-no-newline],[data-merge-conflict],[data-merge-conflict-actions]{--diffs-computed-decoration-bg:var(--diffs-bg);--diffs-computed-diff-line-bg:var(--diffs-bg);--diffs-computed-selected-line-bg:var(--diffs-bg);color:var(--diffs-fg);background-color:var(--diffs-line-bg,var(--diffs-bg))}@media (pointer:fine){:is([data-line],[data-gutter-buffer],[data-column-number],[data-line-annotation],[data-no-newline],[data-merge-conflict],[data-merge-conflict-actions]):where([data-hovered]){--diffs-computed-hovered-line-bg:light-dark(color-mix(in lab, var(--diffs-computed-selected-line-bg) 97%, var(--diffs-bg-hover-override,var(--diffs-mixer))),color-mix(in lab, var(--diffs-computed-selected-line-bg) 91%, var(--diffs-bg-hover-override,var(--diffs-mixer))));--diffs-line-bg:var(--diffs-computed-hovered-line-bg,inherit)}}[data-decoration-bg]:is([data-line],[data-no-newline]){--mix-deco-light:92%;--mix-deco-dark:85%}[data-decoration-bg][data-decoration-bg-depth="2"]:is([data-line],[data-no-newline]){--mix-deco-light:88%;--mix-deco-dark:80%}[data-decoration-bg][data-decoration-bg-depth="3"]:is([data-line],[data-no-newline]){--mix-deco-light:85%;--mix-deco-dark:78%}@media (pointer:fine){[data-decoration-bg][data-hovered]:is([data-line],[data-no-newline]):not([data-selected-line]){--mix-deco-light:85%;--mix-deco-dark:85%}[data-decoration-bg][data-hovered][data-decoration-bg-depth="2"]:is([data-line],[data-no-newline]):not([data-selected-line]){--mix-deco-light:83%;--mix-deco-dark:83%}[data-decoration-bg][data-hovered][data-decoration-bg-depth="3"]:is([data-line],[data-no-newline]):not([data-selected-line]){--mix-deco-light:81%;--mix-deco-dark:81%}}[data-decoration-bg]:is([data-line],[data-no-newline]){--diffs-computed-decoration-bg:light-dark(color-mix(in lab, var(--diffs-bg) var(--mix-deco-light), var(--diffs-decoration-bg)),color-mix(in lab, var(--diffs-bg) var(--mix-deco-dark), var(--diffs-decoration-bg)));--diffs-computed-diff-line-bg:var(--diffs-computed-decoration-bg);--diffs-computed-selected-line-bg:var(--diffs-computed-decoration-bg);--diffs-line-bg:var(--diffs-computed-decoration-bg)}[data-line-annotation],[data-gutter-buffer=annotation]{--diffs-annotation-bg:var(--diffs-bg-context);--diffs-computed-decoration-bg:var(--diffs-annotation-bg);--diffs-computed-diff-line-bg:var(--diffs-annotation-bg);--diffs-computed-selected-line-bg:var(--diffs-annotation-bg);--diffs-line-bg:var(--diffs-annotation-bg)}[data-merge-conflict-actions],[data-gutter-buffer=merge-conflict-action],[data-gutter-buffer=merge-conflict-marker-base],[data-gutter-buffer=merge-conflict-marker-separator],[data-merge-conflict=marker-base],[data-merge-conflict=marker-separator]{--diffs-computed-decoration-bg:var(--diffs-bg-context);--diffs-computed-diff-line-bg:var(--diffs-bg-context);--diffs-computed-selected-line-bg:var(--diffs-bg-context);--diffs-line-bg:var(--diffs-bg-context)}[data-gutter-buffer=merge-conflict-marker-start],[data-merge-conflict=marker-start]{--diffs-computed-decoration-bg:light-dark(color-mix(in lab, var(--diffs-bg) 78%, var(--conflict-bg-current-header-override,var(--diffs-addition-base))),color-mix(in lab, var(--diffs-bg) 68%, var(--conflict-bg-current-header-override,var(--diffs-addition-base))));--diffs-computed-diff-line-bg:var(--diffs-computed-decoration-bg);--diffs-computed-selected-line-bg:var(--diffs-computed-decoration-bg);--diffs-line-bg:var(--diffs-computed-decoration-bg)}[data-gutter-buffer=merge-conflict-marker-end],[data-merge-conflict=marker-end]{--diffs-computed-decoration-bg:light-dark(color-mix(in lab, var(--diffs-bg) 78%, var(--conflict-bg-incoming-header-override,var(--diffs-modified-base))),color-mix(in lab, var(--diffs-bg) 68%, var(--conflict-bg-incoming-header-override,var(--diffs-modified-base))));--diffs-computed-diff-line-bg:var(--diffs-computed-decoration-bg);--diffs-computed-selected-line-bg:var(--diffs-computed-decoration-bg);--diffs-line-bg:var(--diffs-computed-decoration-bg)}[data-has-merge-conflict] [data-line-annotation],[data-has-merge-conflict] [data-gutter-buffer=annotation]{--diffs-computed-decoration-bg:var(--diffs-bg);--diffs-computed-diff-line-bg:var(--diffs-bg);--diffs-computed-selected-line-bg:var(--diffs-bg);--diffs-line-bg:var(--diffs-bg)}:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number]{--mix-light:91%;--mix-dark:85%}:where([data-background]) [data-line],:where([data-background]) [data-no-newline]{--mix-light:88%;--mix-dark:80%}:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]{--diffs-diff-line-mix-target:var(--diffs-bg)}[data-line-type=change-deletion]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--diffs-diff-line-mix-target:var(--diffs-bg-deletion-override,var(--diffs-deletion-base))}@media (pointer:fine){[data-line-type=change-deletion][data-hovered]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--mix-light:80%;--mix-dark:75%}}[data-line-type=change-deletion]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]):where([data-gutter-buffer],[data-column-number]){color:var(--diffs-fg-number-deletion-override,var(--diffs-deletion-base));--diffs-diff-line-mix-target:var(--diffs-bg-deletion-number-override,var(--diffs-deletion-base))}[data-line-type=change-deletion]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--diffs-computed-diff-line-bg:light-dark(color-mix(in lab, var(--diffs-computed-decoration-bg) var(--mix-light), var(--diffs-diff-line-mix-target)),color-mix(in lab, var(--diffs-computed-decoration-bg) var(--mix-dark), var(--diffs-diff-line-mix-target)));--diffs-computed-selected-line-bg:var(--diffs-computed-diff-line-bg);--diffs-line-bg:var(--diffs-computed-diff-line-bg,inherit)}[data-line-type=change-addition]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--diffs-diff-line-mix-target:var(--diffs-bg-addition-override,var(--diffs-addition-base))}@media (pointer:fine){[data-line-type=change-addition][data-hovered]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--mix-light:80%;--mix-dark:70%}}[data-line-type=change-addition]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]):where([data-gutter-buffer],[data-column-number]){color:var(--diffs-fg-number-addition-override,var(--diffs-addition-base));--diffs-diff-line-mix-target:var(--diffs-bg-addition-number-override,var(--diffs-addition-base))}[data-line-type=change-addition]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--diffs-computed-diff-line-bg:light-dark(color-mix(in lab, var(--diffs-computed-decoration-bg) var(--mix-light), var(--diffs-diff-line-mix-target)),color-mix(in lab, var(--diffs-computed-decoration-bg) var(--mix-dark), var(--diffs-diff-line-mix-target)));--diffs-computed-selected-line-bg:var(--diffs-computed-diff-line-bg);--diffs-line-bg:var(--diffs-computed-diff-line-bg,inherit)}[data-merge-conflict=current]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--diffs-diff-line-mix-target:var(--conflict-bg-current-override,var(--diffs-addition-base))}[data-merge-conflict=current]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]):where([data-gutter-buffer],[data-column-number]){color:var(--diffs-fg-number-addition-override,var(--diffs-addition-base));--diffs-diff-line-mix-target:var(--conflict-bg-current-number-override,var(--diffs-addition-base))}@media (pointer:fine){[data-merge-conflict=current][data-hovered]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--mix-light:80%;--mix-dark:70%}}[data-merge-conflict=current]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--diffs-computed-diff-line-bg:light-dark(color-mix(in lab, var(--diffs-computed-decoration-bg) var(--mix-light), var(--diffs-diff-line-mix-target)),color-mix(in lab, var(--diffs-computed-decoration-bg) var(--mix-dark), var(--diffs-diff-line-mix-target)));--diffs-computed-selected-line-bg:var(--diffs-computed-diff-line-bg);--diffs-line-bg:var(--diffs-computed-diff-line-bg,inherit)}[data-merge-conflict=incoming]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--diffs-diff-line-mix-target:var(--conflict-bg-incoming-override,var(--diffs-modified-base))}[data-merge-conflict=incoming]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]):where([data-gutter-buffer],[data-column-number]){color:var(--diffs-modified-base);--diffs-diff-line-mix-target:var(--conflict-bg-incoming-number-override,var(--diffs-modified-base))}@media (pointer:fine){[data-merge-conflict=incoming][data-hovered]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--mix-light:80%;--mix-dark:70%}}[data-merge-conflict=incoming]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--diffs-computed-diff-line-bg:light-dark(color-mix(in lab, var(--diffs-computed-decoration-bg) var(--mix-light), var(--diffs-diff-line-mix-target)),color-mix(in lab, var(--diffs-computed-decoration-bg) var(--mix-dark), var(--diffs-diff-line-mix-target)));--diffs-computed-selected-line-bg:var(--diffs-computed-diff-line-bg);--diffs-line-bg:var(--diffs-computed-diff-line-bg,inherit)}[data-gutter-buffer],[data-column-number],[data-line],[data-line-annotation],[data-merge-conflict],[data-merge-conflict-actions],[data-no-newline]{--diffs-selection-mix-target:var(--diffs-bg-selection-override,var(--diffs-selection-base))}[data-selected-line]:is([data-gutter-buffer],[data-column-number],[data-line],[data-line-annotation],[data-merge-conflict],[data-merge-conflict-actions],[data-no-newline]):where([data-line],[data-line-annotation],[data-merge-conflict],[data-merge-conflict-actions],[data-no-newline]){--mix-selection-light:82%;--mix-selection-dark:75%}@media (pointer:fine){[data-selected-line][data-hovered]:is([data-gutter-buffer],[data-column-number],[data-line],[data-line-annotation],[data-merge-conflict],[data-merge-conflict-actions],[data-no-newline]):where([data-line],[data-line-annotation],[data-merge-conflict],[data-merge-conflict-actions],[data-no-newline]):not([data-merge-conflict],[data-line-type=change-addition],[data-line-type=change-deletion]){--mix-selection-light:75%;--mix-selection-dark:70%}}[data-selected-line]:is([data-gutter-buffer],[data-column-number],[data-line],[data-line-annotation],[data-merge-conflict],[data-merge-conflict-actions],[data-no-newline]):where([data-gutter-buffer],[data-column-number]){--mix-selection-light:75%;--mix-selection-dark:60%;--diffs-selection-mix-target:var(--diffs-bg-selection-number-override,var(--diffs-selection-base))}@media (pointer:fine){[data-selected-line][data-hovered]:is([data-gutter-buffer],[data-column-number],[data-line],[data-line-annotation],[data-merge-conflict],[data-merge-conflict-actions],[data-no-newline]):where([data-gutter-buffer],[data-column-number]):not([data-merge-conflict],[data-line-type=change-addition],[data-line-type=change-deletion]){--mix-selection-light:70%;--mix-selection-dark:55%}}[data-selected-line]:is([data-gutter-buffer],[data-column-number],[data-line],[data-line-annotation],[data-merge-conflict],[data-merge-conflict-actions],[data-no-newline]){--diffs-computed-selected-line-bg:light-dark(color-mix(in lab, var(--diffs-computed-diff-line-bg) var(--mix-selection-light), var(--diffs-selection-mix-target)),color-mix(in lab, var(--diffs-computed-diff-line-bg) var(--mix-selection-dark), var(--diffs-selection-mix-target)));--diffs-line-bg:var(--diffs-computed-selected-line-bg,inherit)}[data-selected-line]:is([data-gutter-buffer],[data-column-number]){color:var(--diffs-selection-number-fg)}[data-no-newline]{-webkit-user-select:none;user-select:none}[data-no-newline] span{opacity:.6}[data-diff-type=split][data-overflow=scroll]{grid-template-columns:1fr 1fr;display:grid}[data-diff-type=split][data-overflow=scroll] [data-additions]{border-left:1px solid var(--diffs-bg)}[data-diff-type=split][data-overflow=scroll] [data-deletions]{border-right:1px solid var(--diffs-bg)}[data-code]{grid-auto-flow:dense;grid-template-columns:var(--diffs-code-grid);overflow:var(--diffs-overflow-override,scroll) clip;overscroll-behavior-x:none;tab-size:var(--diffs-tab-size,2);padding-top:var(--diffs-gap-block,var(--diffs-gap-fallback));padding-bottom:max(0px, calc(var(--diffs-gap-block,var(--diffs-gap-fallback)) - var(--diffs-scrollbar-gutter)));scrollbar-gutter:stable;align-self:flex-start;display:grid}[data-diffs-scrollbar-measure]{opacity:0;pointer-events:none;scrollbar-gutter:auto;grid-template-columns:none;width:100px;height:100px;padding:0;position:absolute;top:-200px;left:-200px}[data-container-size]{container-type:inline-size}[data-code]::-webkit-scrollbar{width:0;height:var(--diffs-scrollbar-gutter)}[data-code]::-webkit-scrollbar-track{background:0 0}[data-code]::-webkit-scrollbar-thumb{background-color:#0000;background-clip:content-box;border:1px solid #0000;border-radius:3px}[data-code]::-webkit-scrollbar-corner{background-color:#0000}@supports ((-moz-appearance:none)){[data-code]{scrollbar-width:thin;scrollbar-color:var(--diffs-bg-context) transparent;padding-bottom:var(--diffs-gap-block,var(--diffs-gap-fallback))}}:is([data-diffs-header]~[data-diff],[data-diffs-header]~[data-file]) [data-code],[data-overflow=wrap]:is([data-diffs-header]~[data-diff],[data-diffs-header]~[data-file]){padding-top:0}[data-gutter]{grid-template-rows:subgrid;grid-template-columns:subgrid;z-index:3;background-color:var(--diffs-bg);grid-column:1;display:grid;position:relative}[data-gutter] [data-gutter-buffer],[data-gutter] [data-column-number]{border-right:var(--diffs-gap-style,2px solid var(--diffs-bg))}[data-content]{grid-template-rows:subgrid;grid-template-columns:subgrid;background-color:var(--diffs-bg);grid-column:2;min-width:0;display:grid}[data-diff-type=split][data-overflow=wrap]{grid-auto-flow:dense;grid-template-columns:repeat(2, var(--diffs-code-grid));padding-block:var(--diffs-gap-block,var(--diffs-gap-fallback));display:grid}[data-diff-type=split][data-overflow=wrap] [data-deletions]{display:contents}:is([data-diff-type=split][data-overflow=wrap] [data-deletions]) [data-gutter]{grid-column:1}:is([data-diff-type=split][data-overflow=wrap] [data-deletions]) [data-content]{border-right:1px solid var(--diffs-bg);grid-column:2}[data-diff-type=split][data-overflow=wrap] [data-additions]{display:contents}:is([data-diff-type=split][data-overflow=wrap] [data-additions]) [data-gutter]{border-left:1px solid var(--diffs-bg);grid-column:3}:is([data-diff-type=split][data-overflow=wrap] [data-additions]) [data-content]{grid-column:4}[data-overflow=scroll] [data-gutter]{position:sticky;left:0}[data-interactive-lines] [data-line]{cursor:pointer}[data-interactive-line-numbers] [data-column-number]{cursor:pointer;touch-action:none}[data-content-buffer],[data-gutter-buffer]{-webkit-user-select:none;user-select:none;min-height:1lh;position:relative}[data-gutter-buffer]{padding-left:2ch;padding-right:1ch}[data-gutter-buffer]:before{content:"";min-width:var(--diffs-min-number-column-width,var(--diffs-min-number-column-width-default,3ch));display:block}[data-gutter-buffer=annotation]{--diffs-annotation-bg:var(--diffs-bg-context-gutter);min-height:0}[data-gutter-buffer=buffer]{--diffs-line-bg:var(--diffs-bg-context-gutter)}[data-content-buffer]{background-position:5px 0;background-size:8px 8px;background-origin:border-box;background-image:repeating-linear-gradient(-45deg, transparent, transparent 4.242px, var(--diffs-bg-buffer) 4.242px, var(--diffs-bg-buffer) 5.656px);grid-column:1}[data-separator]{box-sizing:content-box;background-color:var(--diffs-bg)}[data-separator=simple]{min-height:4px}[data-separator=line-info],[data-separator=line-info-basic],[data-separator=metadata],[data-separator=simple]{background-color:var(--diffs-bg-separator)}[data-separator=line-info],[data-separator=line-info-basic],[data-separator=metadata]{height:32px;position:relative}[data-separator-wrapper]{-webkit-user-select:none;user-select:none;fill:currentColor;background-color:var(--diffs-bg);align-items:center;height:100%;display:flex;position:absolute;inset-inline:0}[data-content] [data-separator-wrapper]{display:none}[data-separator=metadata] [data-separator-wrapper]{background-color:var(--diffs-bg-separator);height:100%;color:var(--diffs-fg-number);white-space:nowrap;text-overflow:ellipsis;min-width:min-content;padding-inline:1ch;inset-inline:100% auto;overflow:hidden}[data-separator=line-info]{margin-block:var(--diffs-gap-block,var(--diffs-gap-fallback))}[data-separator=line-info] [data-separator-wrapper]{min-width:16px}[data-separator=line-info-basic],[data-separator=metadata]{margin-block:0}[data-separator=line-info][data-separator-first]{margin-top:0}[data-separator=line-info][data-separator-last]{margin-bottom:0}[data-expand-index] [data-separator-wrapper]{grid-template-columns:32px auto;display:grid}[data-expand-index] [data-separator-wrapper][data-separator-multi-button]{grid-template-columns:32px 32px auto}[data-expand-button],[data-separator-content]{background-color:var(--diffs-bg-separator);flex:none;align-items:center;display:flex}[data-expand-index] [data-separator-content]:hover{cursor:pointer;text-decoration:underline}[data-expand-button]{cursor:pointer;min-width:32px;color:var(--diffs-fg-number);border-right:2px solid var(--diffs-bg);flex-shrink:0;justify-content:center;align-self:stretch}[data-expand-button]:hover{color:var(--diffs-fg)}[data-expand-button][data-expand-all-button]{display:none}[data-expand-down] [data-icon]{transform:scaleY(-1)}[data-separator-content]{height:100%;color:var(--diffs-fg-number);flex:auto;justify-content:flex-start;padding:0 1ch;overflow:hidden}:is([data-separator=line-info],[data-separator=line-info-basic]) [data-separator-content]{-webkit-user-select:none;user-select:none;height:100%;overflow:clip}[data-unmodified-lines]{text-overflow:ellipsis;white-space:nowrap;flex:0 auto;min-width:0;display:block;overflow:hidden}@supports (width:1cqi){[data-unified] [data-separator=line-info] [data-separator-wrapper]{padding-inline:var(--diffs-gap-inline,var(--diffs-gap-fallback));width:100cqi}:is([data-unified] [data-separator=line-info] [data-separator-wrapper]) [data-separator-content]{border-radius:6px}[data-unified] [data-separator=line-info][data-expand-index] [data-separator-wrapper] [data-separator-content]{border-top-left-radius:unset;border-bottom-left-radius:unset}[data-gutter] [data-separator=line-info] [data-separator-wrapper]{padding-left:var(--diffs-gap-inline,var(--diffs-gap-fallback))}[data-gutter] [data-separator=line-info] [data-separator-content]{border-top-left-radius:6px;border-bottom-left-radius:6px}[data-gutter] [data-separator=line-info][data-expand-index] [data-separator-content]{border-top-left-radius:unset;border-bottom-left-radius:unset}[data-additions] [data-content] [data-separator=line-info]{background-color:var(--diffs-bg)}:is([data-additions] [data-content] [data-separator=line-info]) [data-separator-wrapper]{display:none}[data-additions] [data-gutter] [data-separator=line-info] [data-separator-wrapper]{background-color:var(--diffs-bg-separator);border-top-right-radius:6px;border-bottom-right-radius:6px;height:100%;display:block}:is([data-additions] [data-gutter] [data-separator=line-info] [data-separator-wrapper]) [data-separator-content],:is([data-additions] [data-gutter] [data-separator=line-info] [data-separator-wrapper]) [data-expand-button]{display:none}[data-overflow=scroll] [data-additions] [data-gutter] [data-separator=line-info] [data-separator-wrapper]{width:calc(100cqi - var(--diffs-gap-inline,var(--diffs-gap-fallback)))}[data-overflow=wrap] [data-additions] [data-content] [data-separator=line-info] [data-separator-wrapper]{background-color:var(--diffs-bg-separator);height:100%;margin-right:var(--diffs-gap-inline,var(--diffs-gap-fallback));border-top-right-radius:6px;border-bottom-right-radius:6px;display:block}:is([data-overflow=wrap] [data-additions] [data-content] [data-separator=line-info] [data-separator-wrapper]) [data-separator-content],:is([data-overflow=wrap] [data-additions] [data-content] [data-separator=line-info] [data-separator-wrapper]) [data-expand-button]{display:none}:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-both],:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-down],:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-up]{border-top-left-radius:6px;border-bottom-left-radius:6px}@media (pointer:fine){[data-separator-multi-button]:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-up]{border-top-left-radius:6px;border-bottom-left-radius:unset}[data-separator-multi-button]:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-down]{border-bottom-left-radius:6px;border-top-left-radius:unset}}}@media (pointer:coarse){[data-separator=line-info-basic] [data-separator-wrapper][data-separator-multi-button]{grid-template-columns:34px 34px auto}:is([data-separator=line-info-basic] [data-separator-wrapper][data-separator-multi-button]) [data-separator-content]{grid-column:unset;grid-row:unset}@supports (width:1cqi){:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-both],:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-down],:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-up],[data-separator-multi-button]:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-up]{border-top-left-radius:6px;border-bottom-left-radius:6px}[data-separator-multi-button]:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-down]{border-bottom-left-radius:unset;border-top-left-radius:unset}}}@media (pointer:fine){[data-separator-wrapper][data-separator-multi-button]{grid-template-rows:50% 50%;display:grid}[data-separator-wrapper][data-separator-multi-button] [data-separator-content]{grid-area:1/2/-1;min-width:min-content}[data-separator-wrapper][data-separator-multi-button] [data-expand-button]{grid-column:1}[data-separator=line-info] [data-separator-wrapper],[data-separator=line-info] [data-separator-wrapper][data-separator-multi-button]{grid-template-columns:34px auto}[data-separator=line-info-basic][data-expand-index] [data-separator-wrapper]{grid-template-columns:100% auto}:is(:is([data-separator=line-info],[data-separator=line-info-basic]) [data-separator-multi-button]) [data-expand-up]{border-bottom:1px solid var(--diffs-bg);border-right:2px solid var(--diffs-bg)}:is(:is([data-separator=line-info],[data-separator=line-info-basic]) [data-separator-multi-button]) [data-expand-down]{border-top:1px solid var(--diffs-bg);border-right:2px solid var(--diffs-bg)}}[data-additions] [data-gutter] [data-separator-wrapper],[data-additions] [data-separator=line-info-basic] [data-separator-wrapper],[data-content] [data-separator-wrapper]{display:none}[data-line-annotation]{min-height:var(--diffs-annotation-min-height,0);z-index:2}[data-merge-conflict-actions]{z-index:2}[data-separator=custom]{grid-template-columns:subgrid;display:grid}[data-line],[data-column-number],[data-no-newline]{padding-inline:1ch;position:relative}[data-indicators=classic] [data-line]{padding-inline-start:2ch}:is([data-no-newline]:is([data-indicators=classic] [data-line-type=change-addition],[data-indicators=classic] [data-line-type=change-deletion]),[data-line]:is([data-indicators=classic] [data-line-type=change-addition],[data-indicators=classic] [data-line-type=change-deletion])):before{-webkit-user-select:none;user-select:none;width:1ch;height:1lh;display:inline-block;position:absolute;top:0;left:0}:is([data-line]:is([data-indicators=classic] [data-line-type=change-addition]),[data-no-newline]:is([data-indicators=classic] [data-line-type=change-addition])):before{content:"+";color:var(--diffs-addition-base)}:is([data-line]:is([data-indicators=classic] [data-line-type=change-deletion]),[data-no-newline]:is([data-indicators=classic] [data-line-type=change-deletion])):before{content:"-";color:var(--diffs-deletion-base)}[data-column-number]:is([data-indicators=bars] [data-line-type=change-deletion],[data-indicators=bars] [data-line-type=change-addition]):before{content:"";-webkit-user-select:none;user-select:none;contain:strict;width:4px;height:100%;display:block;position:absolute;top:0;left:0}[data-column-number]:is([data-indicators=bars] [data-line-type=change-deletion]):before{background-image:linear-gradient(0deg, var(--diffs-bg-deletion) 50%, var(--diffs-deletion-base) 50%);background-repeat:repeat;background-size:2px 2px;background-size:calc(1lh/round(1lh / 2px)) calc(1lh/round(1lh / 2px))}[data-column-number]:is([data-indicators=bars] [data-line-type=change-addition]):before{background-color:var(--diffs-addition-base)}[data-overflow=wrap] [data-line],[data-overflow=wrap] [data-annotation-content]{white-space:pre-wrap;word-break:break-word}[data-overflow=scroll] [data-line]{white-space:pre;min-height:1lh}[data-column-number]{box-sizing:content-box;text-align:right;-webkit-user-select:none;user-select:none;color:var(--diffs-fg-number);padding-left:2ch}[data-line-number-content]{min-width:var(--diffs-min-number-column-width,var(--diffs-min-number-column-width-default,3ch));z-index:1;display:inline-block;position:relative}[data-disable-line-numbers] [data-gutter-buffer],[data-disable-line-numbers] [data-column-number]{min-width:4px;padding:0}:is([data-disable-line-numbers] [data-gutter-buffer],[data-disable-line-numbers] [data-column-number]):before{min-width:0}[data-disable-line-numbers] [data-line-number-content]{display:none}[data-disable-line-numbers] [data-gutter-utility-slot]{right:unset;justify-content:flex-start;left:0}[data-disable-line-numbers][data-indicators=bars] [data-gutter-utility-slot]{left:6px}[data-file][data-disable-line-numbers] [data-gutter-buffer],[data-file][data-disable-line-numbers] [data-column-number]{border-right:0;min-width:0}[data-diff-span]{-webkit-box-decoration-break:clone;box-decoration-break:clone;border-radius:3px}[data-line-type=change-addition] [data-diff-span]{background-color:var(--diffs-bg-addition-emphasis)}[data-line-type=change-deletion] [data-diff-span]{background-color:var(--diffs-bg-deletion-emphasis)}[data-merge-conflict=marker-start],[data-merge-conflict=marker-base],[data-merge-conflict=marker-separator],[data-merge-conflict=marker-end]{color:var(--diffs-fg);padding-left:1ch}[data-merge-conflict=marker-start],[data-merge-conflict=marker-end]{align-items:center;display:flex}:is([data-merge-conflict=marker-start],[data-merge-conflict=marker-end]):after{color:var(--diffs-fg-conflict-marker);font-size:.75rem;font-style:normal;line-height:1.25rem;font-family:var(--diffs-header-font-family,var(--diffs-header-font-fallback));padding-left:1ch}[data-merge-conflict=marker-start]:after{content:"(Current Change)"}[data-merge-conflict=marker-end]:after{content:"(Incoming Change)"}[data-merge-conflict-actions-content]{min-height:1.75rem;font-family:var(--diffs-header-font-family,var(--diffs-header-font-fallback));color:var(--diffs-fg);align-items:center;gap:.25rem;padding-inline:.5rem;font-size:.75rem;line-height:1.2;display:flex}[data-merge-conflict-action]{appearance:none;color:var(--diffs-fg-number);font:inherit;cursor:pointer;background:0 0;border:0;padding:0;font-style:normal}[data-merge-conflict-action]:hover{color:var(--diffs-fg)}[data-merge-conflict-action=current]:hover{color:var(--diffs-addition-base)}[data-merge-conflict-action=incoming]:hover{color:var(--diffs-modified-base)}[data-merge-conflict-action-separator]{color:var(--diffs-fg-number);opacity:.6;-webkit-user-select:none;user-select:none}[data-diffs-header=default]{background-color:var(--diffs-bg);justify-content:space-between;align-items:center;gap:var(--diffs-gap-inline,var(--diffs-gap-fallback));min-height:calc(1lh + var(--diffs-gap-block,var(--diffs-gap-fallback))*3);z-index:2;flex-direction:row;padding-inline:16px;display:flex;position:relative;top:0}[data-header-content]{align-items:center;gap:var(--diffs-gap-inline,var(--diffs-gap-fallback));white-space:nowrap;flex-direction:row;min-width:0;display:flex}[data-header-content] [data-prev-name],[data-header-content] [data-title]{text-overflow:ellipsis;white-space:nowrap;direction:rtl;min-width:0;overflow:hidden}[data-prev-name]{opacity:.7}[data-rename-icon]{fill:currentColor;flex-grow:0;flex-shrink:0}[data-diffs-header=default] [data-metadata]{white-space:nowrap;align-items:center;gap:1ch;display:flex}[data-diffs-header=default] [data-additions-count]{font-family:var(--diffs-font-family,var(--diffs-font-fallback));color:var(--diffs-addition-base)}[data-diffs-header=default] [data-deletions-count]{font-family:var(--diffs-font-family,var(--diffs-font-fallback));color:var(--diffs-deletion-base)}[data-change-icon]{fill:currentColor;flex-shrink:0}[data-change-icon=change],[data-change-icon=rename-pure],[data-change-icon=rename-changed]{color:var(--diffs-modified-base)}[data-change-icon=new]{color:var(--diffs-addition-base)}[data-change-icon=deleted]{color:var(--diffs-deletion-base)}[data-change-icon=file]{opacity:.6}[data-annotation-content]{z-index:2;isolation:isolate;align-self:flex-start;min-width:0;display:flow-root;position:relative}[data-overflow=scroll] [data-annotation-content],[data-overflow=scroll] [data-merge-conflict-actions-content]{width:var(--diffs-column-content-width,auto);left:var(--diffs-column-number-width,0);position:sticky}[data-annotation-slot]{text-wrap-mode:wrap;word-break:normal;white-space-collapse:collapse}[data-gutter-utility-slot]{touch-action:none;justify-content:flex-end;display:flex;position:absolute;top:0;bottom:0;right:0}[data-utility-button]{appearance:none;cursor:pointer;width:1lh;height:1lh;font-size:var(--diffs-font-size,13px);line-height:var(--diffs-line-height,20px);background-color:var(--diffs-modified-base);color:var(--diffs-bg);fill:currentColor;z-index:4;touch-action:none;border:none;border-radius:4px;justify-content:center;align-items:center;margin-right:calc(1ch - 1lh);padding:0;display:flex;position:relative}[data-utility-button]:before{content:"";display:block;position:absolute;inset:0 0 0 -4px}[data-decoration-bar-stack]{pointer-events:none;isolation:isolate;z-index:1;background-color:var(--diffs-decoration-bar-color,transparent);box-sizing:content-box;border-left:2px solid var(--diffs-bg);border-right:2px solid var(--diffs-bg);width:6px;position:absolute;top:0;bottom:0;right:-2px}[data-decoration-bar-depth="1"] [data-decoration-bar-stack]{background-color:color-mix(in lab, var(--diffs-bg) 20%, var(--diffs-decoration-bar-color,transparent))}[data-decoration-bar-depth="2"] [data-decoration-bar-stack]{background-color:color-mix(in lab, var(--diffs-bg) 45%, var(--diffs-decoration-bar-color,transparent))}[data-decoration-bar-depth="3"] [data-decoration-bar-stack]{background-color:color-mix(in lab, var(--diffs-bg) 65%, var(--diffs-decoration-bar-color,transparent))}[data-decoration-bar-start] [data-decoration-bar-stack]{border-top-left-radius:5px;border-top-right-radius:5px}[data-decoration-bar-end] [data-decoration-bar-stack]{z-index:3;border-bottom-right-radius:5px;border-bottom-left-radius:5px}[data-placeholder]{contain:strict}[data-error-wrapper]{padding:var(--diffs-gap-block,var(--diffs-gap-fallback)) var(--diffs-gap-inline,var(--diffs-gap-fallback));scrollbar-width:none;max-height:400px;overflow:auto}[data-error-wrapper] [data-error-message]{color:var(--diffs-deletion-base);font-size:18px;font-weight:700}[data-error-wrapper] [data-error-stack]{color:var(--diffs-fg-number)}}@layer theme,rendered,unsafe;
|
|
@layer theme {
|
|
|
|
}</style><style data-theme-css="">@layer base, theme, rendered, unsafe;
|
|
@layer rendered {
|
|
:host {
|
|
--diffs-scrollbar-gutter-measured: var(--diffs-scrollbar-gutter-fallback);
|
|
--diffs-dark:#fafafa;--diffs-dark-bg:#0a0a0a;--diffs-dark-addition-color:#07c480;--diffs-dark-deletion-color:#ff2e3f;--diffs-dark-modified-color:#009fff;--diffs-light:#0a0a0a;--diffs-light-bg:#ffffff;--diffs-light-addition-color:#18a46c;--diffs-light-deletion-color:#d52c36;--diffs-light-modified-color:#009fff;
|
|
}
|
|
}</style><div data-diffs-header="default" data-change-type="change"><div data-header-content=""><slot name="header-prefix"></slot><svg width="16" height="16" viewBox="0 0 16 16" data-change-icon="change"><use href="#diffs-icon-symbol-modified"></use></svg><div data-title=""><bdi>Tests/StreamResolverTests.swift</bdi></div></div><div data-metadata=""><span data-additions-count="">+73</span><slot name="header-metadata"></slot></div></div><pre data-diff="" data-diff-type="split" data-overflow="scroll" data-background="" data-indicators="bars" tabindex="0" style="--diffs-min-number-column-width-default:3ch;" data-dehydrated=""><code data-code="" data-container-size="" data-deletions=""><div data-gutter="" style="grid-row: span 95"><div data-separator="line-info" data-separator-first=""><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">9 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="10" data-line-index="9,9"><span data-line-number-content="">10</span></div><div data-line-type="context" data-column-number="11" data-line-index="10,10"><span data-line-number-content="">11</span></div><div data-line-type="context" data-column-number="12" data-line-index="11,11"><span data-line-number-content="">12</span></div><div data-gutter-buffer="buffer" data-buffer-size="1" style="grid-row: span 1;min-height:calc(1 * 1lh);"></div><div data-line-type="context" data-column-number="13" data-line-index="13,13"><span data-line-number-content="">13</span></div><div data-gutter-buffer="buffer" data-buffer-size="1" style="grid-row: span 1;min-height:calc(1 * 1lh);"></div><div data-line-type="context" data-column-number="14" data-line-index="15,15"><span data-line-number-content="">14</span></div><div data-line-type="context" data-column-number="15" data-line-index="16,16"><span data-line-number-content="">15</span></div><div data-line-type="context" data-column-number="16" data-line-index="17,17"><span data-line-number-content="">16</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">137 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="154" data-line-index="155,155"><span data-line-number-content="">154</span></div><div data-line-type="context" data-column-number="155" data-line-index="156,156"><span data-line-number-content="">155</span></div><div data-line-type="context" data-column-number="156" data-line-index="157,157"><span data-line-number-content="">156</span></div><div data-gutter-buffer="buffer" data-buffer-size="33" style="grid-row: span 33;min-height:calc(33 * 1lh);"></div><div data-line-type="context" data-column-number="157" data-line-index="191,191"><span data-line-number-content="">157</span></div><div data-line-type="context" data-column-number="158" data-line-index="192,192"><span data-line-number-content="">158</span></div><div data-line-type="context" data-column-number="159" data-line-index="193,193"><span data-line-number-content="">159</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">19 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="179" data-line-index="213,213"><span data-line-number-content="">179</span></div><div data-line-type="context" data-column-number="180" data-line-index="214,214"><span data-line-number-content="">180</span></div><div data-line-type="context" data-column-number="181" data-line-index="215,215"><span data-line-number-content="">181</span></div><div data-gutter-buffer="buffer" data-buffer-size="38" style="grid-row: span 38;min-height:calc(38 * 1lh);"></div><div data-line-type="context" data-column-number="182" data-line-index="254,254"><span data-line-number-content="">182</span></div><div data-line-type="context" data-column-number="183" data-line-index="255,255"><span data-line-number-content="">183</span></div><div data-line-type="context" data-column-number="184" data-line-index="256,256"><span data-line-number-content="">184</span></div></div><div data-content="" style="grid-row: span 95"><div data-separator="line-info" data-separator-first=""><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">9 unmodified lines</span></div></div></div><div data-line="10" data-alt-line="10" data-line-type="context" data-line-index="9,9"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> testPlaybackTimeFormatting</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="11" data-alt-line="11" data-line-type="context" data-line-index="10,10"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> testSubtitleCandidateParsing</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="12" data-alt-line="12" data-line-type="context" data-line-index="11,11"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> testOpenSubtitlesV3CandidateParsing</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-content-buffer="" data-buffer-size="1" style="grid-row: span 1;min-height:calc(1 * 1lh)"></div><div data-line="13" data-alt-line="14" data-line-type="context" data-line-index="13,13"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> testOpenSubtitlesV3DownloadResponseResolution</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-content-buffer="" data-buffer-size="1" style="grid-row: span 1;min-height:calc(1 * 1lh)"></div><div data-line="14" data-alt-line="16" data-line-type="context" data-line-index="15,15"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> await</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> testSubtitleResolverDownloadJSONReturningLink</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="15" data-alt-line="17" data-line-type="context" data-line-index="16,16"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> await</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> testSubtitleResolverRedirectToDirectSubtitle</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="16" data-alt-line="18" data-line-type="context" data-line-index="17,17"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> await</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> testSubtitleResolverRejectsNonSubtitleAPIResponse</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">137 unmodified lines</span></div></div></div><div data-line="154" data-alt-line="156" data-line-type="context" data-line-index="155,155"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> assertEqual</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">candidates</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">[</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">3</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">]</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.url.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">absoluteString</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"https://cdn.example.test/from-string.ass?source=opensubtitles"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="155" data-alt-line="157" data-line-type="context" data-line-index="156,156"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="156" data-alt-line="158" data-line-type="context" data-line-index="157,157">
|
|
</div><div data-content-buffer="" data-buffer-size="33" style="grid-row: span 33;min-height:calc(33 * 1lh)"></div><div data-line="157" data-alt-line="192" data-line-type="context" data-line-index="191,191"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> static</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> testOpenSubtitlesV3DownloadResponseResolution</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="158" data-alt-line="193" data-line-type="context" data-line-index="192,192"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> payload </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> """</span></div><div data-line="159" data-alt-line="194" data-line-type="context" data-line-index="193,193"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> {</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">19 unmodified lines</span></div></div></div><div data-line="179" data-alt-line="214" data-line-type="context" data-line-index="213,213"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> assertEqual</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">candidate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">language</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"eng"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="180" data-alt-line="215" data-line-type="context" data-line-index="214,214"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="181" data-alt-line="216" data-line-type="context" data-line-index="215,215">
|
|
</div><div data-content-buffer="" data-buffer-size="38" style="grid-row: span 38;min-height:calc(38 * 1lh)"></div><div data-line="182" data-alt-line="255" data-line-type="context" data-line-index="254,254"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> static</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> testSubtitleResolverDownloadJSONReturningLink</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> async</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="183" data-alt-line="256" data-line-type="context" data-line-index="255,255"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> MockURLProtocol.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">handlers</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> [</span></div><div data-line="184" data-alt-line="257" data-line-type="context" data-line-index="256,256"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "https://api.opensubtitles.com/api/v1/download/123"</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">:</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> (</span></div></div></code><code data-code="" data-container-size="" data-additions=""><div data-gutter="" style="grid-row: span 95"><div data-separator="line-info" data-separator-first=""><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">9 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="10" data-line-index="9,9"><span data-line-number-content="">10</span></div><div data-line-type="context" data-column-number="11" data-line-index="10,10"><span data-line-number-content="">11</span></div><div data-line-type="context" data-column-number="12" data-line-index="11,11"><span data-line-number-content="">12</span></div><div data-line-type="change-addition" data-column-number="13" data-line-index="12,12"><span data-line-number-content="">13</span></div><div data-line-type="context" data-column-number="14" data-line-index="13,13"><span data-line-number-content="">14</span></div><div data-line-type="change-addition" data-column-number="15" data-line-index="14,14"><span data-line-number-content="">15</span></div><div data-line-type="context" data-column-number="16" data-line-index="15,15"><span data-line-number-content="">16</span></div><div data-line-type="context" data-column-number="17" data-line-index="16,16"><span data-line-number-content="">17</span></div><div data-line-type="context" data-column-number="18" data-line-index="17,17"><span data-line-number-content="">18</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">137 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="156" data-line-index="155,155"><span data-line-number-content="">156</span></div><div data-line-type="context" data-column-number="157" data-line-index="156,156"><span data-line-number-content="">157</span></div><div data-line-type="context" data-column-number="158" data-line-index="157,157"><span data-line-number-content="">158</span></div><div data-line-type="change-addition" data-column-number="159" data-line-index="158,158"><span data-line-number-content="">159</span></div><div data-line-type="change-addition" data-column-number="160" data-line-index="159,159"><span data-line-number-content="">160</span></div><div data-line-type="change-addition" data-column-number="161" data-line-index="160,160"><span data-line-number-content="">161</span></div><div data-line-type="change-addition" data-column-number="162" data-line-index="161,161"><span data-line-number-content="">162</span></div><div data-line-type="change-addition" data-column-number="163" data-line-index="162,162"><span data-line-number-content="">163</span></div><div data-line-type="change-addition" data-column-number="164" data-line-index="163,163"><span data-line-number-content="">164</span></div><div data-line-type="change-addition" data-column-number="165" data-line-index="164,164"><span data-line-number-content="">165</span></div><div data-line-type="change-addition" data-column-number="166" data-line-index="165,165"><span data-line-number-content="">166</span></div><div data-line-type="change-addition" data-column-number="167" data-line-index="166,166"><span data-line-number-content="">167</span></div><div data-line-type="change-addition" data-column-number="168" data-line-index="167,167"><span data-line-number-content="">168</span></div><div data-line-type="change-addition" data-column-number="169" data-line-index="168,168"><span data-line-number-content="">169</span></div><div data-line-type="change-addition" data-column-number="170" data-line-index="169,169"><span data-line-number-content="">170</span></div><div data-line-type="change-addition" data-column-number="171" data-line-index="170,170"><span data-line-number-content="">171</span></div><div data-line-type="change-addition" data-column-number="172" data-line-index="171,171"><span data-line-number-content="">172</span></div><div data-line-type="change-addition" data-column-number="173" data-line-index="172,172"><span data-line-number-content="">173</span></div><div data-line-type="change-addition" data-column-number="174" data-line-index="173,173"><span data-line-number-content="">174</span></div><div data-line-type="change-addition" data-column-number="175" data-line-index="174,174"><span data-line-number-content="">175</span></div><div data-line-type="change-addition" data-column-number="176" data-line-index="175,175"><span data-line-number-content="">176</span></div><div data-line-type="change-addition" data-column-number="177" data-line-index="176,176"><span data-line-number-content="">177</span></div><div data-line-type="change-addition" data-column-number="178" data-line-index="177,177"><span data-line-number-content="">178</span></div><div data-line-type="change-addition" data-column-number="179" data-line-index="178,178"><span data-line-number-content="">179</span></div><div data-line-type="change-addition" data-column-number="180" data-line-index="179,179"><span data-line-number-content="">180</span></div><div data-line-type="change-addition" data-column-number="181" data-line-index="180,180"><span data-line-number-content="">181</span></div><div data-line-type="change-addition" data-column-number="182" data-line-index="181,181"><span data-line-number-content="">182</span></div><div data-line-type="change-addition" data-column-number="183" data-line-index="182,182"><span data-line-number-content="">183</span></div><div data-line-type="change-addition" data-column-number="184" data-line-index="183,183"><span data-line-number-content="">184</span></div><div data-line-type="change-addition" data-column-number="185" data-line-index="184,184"><span data-line-number-content="">185</span></div><div data-line-type="change-addition" data-column-number="186" data-line-index="185,185"><span data-line-number-content="">186</span></div><div data-line-type="change-addition" data-column-number="187" data-line-index="186,186"><span data-line-number-content="">187</span></div><div data-line-type="change-addition" data-column-number="188" data-line-index="187,187"><span data-line-number-content="">188</span></div><div data-line-type="change-addition" data-column-number="189" data-line-index="188,188"><span data-line-number-content="">189</span></div><div data-line-type="change-addition" data-column-number="190" data-line-index="189,189"><span data-line-number-content="">190</span></div><div data-line-type="change-addition" data-column-number="191" data-line-index="190,190"><span data-line-number-content="">191</span></div><div data-line-type="context" data-column-number="192" data-line-index="191,191"><span data-line-number-content="">192</span></div><div data-line-type="context" data-column-number="193" data-line-index="192,192"><span data-line-number-content="">193</span></div><div data-line-type="context" data-column-number="194" data-line-index="193,193"><span data-line-number-content="">194</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">19 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="214" data-line-index="213,213"><span data-line-number-content="">214</span></div><div data-line-type="context" data-column-number="215" data-line-index="214,214"><span data-line-number-content="">215</span></div><div data-line-type="context" data-column-number="216" data-line-index="215,215"><span data-line-number-content="">216</span></div><div data-line-type="change-addition" data-column-number="217" data-line-index="216,216"><span data-line-number-content="">217</span></div><div data-line-type="change-addition" data-column-number="218" data-line-index="217,217"><span data-line-number-content="">218</span></div><div data-line-type="change-addition" data-column-number="219" data-line-index="218,218"><span data-line-number-content="">219</span></div><div data-line-type="change-addition" data-column-number="220" data-line-index="219,219"><span data-line-number-content="">220</span></div><div data-line-type="change-addition" data-column-number="221" data-line-index="220,220"><span data-line-number-content="">221</span></div><div data-line-type="change-addition" data-column-number="222" data-line-index="221,221"><span data-line-number-content="">222</span></div><div data-line-type="change-addition" data-column-number="223" data-line-index="222,222"><span data-line-number-content="">223</span></div><div data-line-type="change-addition" data-column-number="224" data-line-index="223,223"><span data-line-number-content="">224</span></div><div data-line-type="change-addition" data-column-number="225" data-line-index="224,224"><span data-line-number-content="">225</span></div><div data-line-type="change-addition" data-column-number="226" data-line-index="225,225"><span data-line-number-content="">226</span></div><div data-line-type="change-addition" data-column-number="227" data-line-index="226,226"><span data-line-number-content="">227</span></div><div data-line-type="change-addition" data-column-number="228" data-line-index="227,227"><span data-line-number-content="">228</span></div><div data-line-type="change-addition" data-column-number="229" data-line-index="228,228"><span data-line-number-content="">229</span></div><div data-line-type="change-addition" data-column-number="230" data-line-index="229,229"><span data-line-number-content="">230</span></div><div data-line-type="change-addition" data-column-number="231" data-line-index="230,230"><span data-line-number-content="">231</span></div><div data-line-type="change-addition" data-column-number="232" data-line-index="231,231"><span data-line-number-content="">232</span></div><div data-line-type="change-addition" data-column-number="233" data-line-index="232,232"><span data-line-number-content="">233</span></div><div data-line-type="change-addition" data-column-number="234" data-line-index="233,233"><span data-line-number-content="">234</span></div><div data-line-type="change-addition" data-column-number="235" data-line-index="234,234"><span data-line-number-content="">235</span></div><div data-line-type="change-addition" data-column-number="236" data-line-index="235,235"><span data-line-number-content="">236</span></div><div data-line-type="change-addition" data-column-number="237" data-line-index="236,236"><span data-line-number-content="">237</span></div><div data-line-type="change-addition" data-column-number="238" data-line-index="237,237"><span data-line-number-content="">238</span></div><div data-line-type="change-addition" data-column-number="239" data-line-index="238,238"><span data-line-number-content="">239</span></div><div data-line-type="change-addition" data-column-number="240" data-line-index="239,239"><span data-line-number-content="">240</span></div><div data-line-type="change-addition" data-column-number="241" data-line-index="240,240"><span data-line-number-content="">241</span></div><div data-line-type="change-addition" data-column-number="242" data-line-index="241,241"><span data-line-number-content="">242</span></div><div data-line-type="change-addition" data-column-number="243" data-line-index="242,242"><span data-line-number-content="">243</span></div><div data-line-type="change-addition" data-column-number="244" data-line-index="243,243"><span data-line-number-content="">244</span></div><div data-line-type="change-addition" data-column-number="245" data-line-index="244,244"><span data-line-number-content="">245</span></div><div data-line-type="change-addition" data-column-number="246" data-line-index="245,245"><span data-line-number-content="">246</span></div><div data-line-type="change-addition" data-column-number="247" data-line-index="246,246"><span data-line-number-content="">247</span></div><div data-line-type="change-addition" data-column-number="248" data-line-index="247,247"><span data-line-number-content="">248</span></div><div data-line-type="change-addition" data-column-number="249" data-line-index="248,248"><span data-line-number-content="">249</span></div><div data-line-type="change-addition" data-column-number="250" data-line-index="249,249"><span data-line-number-content="">250</span></div><div data-line-type="change-addition" data-column-number="251" data-line-index="250,250"><span data-line-number-content="">251</span></div><div data-line-type="change-addition" data-column-number="252" data-line-index="251,251"><span data-line-number-content="">252</span></div><div data-line-type="change-addition" data-column-number="253" data-line-index="252,252"><span data-line-number-content="">253</span></div><div data-line-type="change-addition" data-column-number="254" data-line-index="253,253"><span data-line-number-content="">254</span></div><div data-line-type="context" data-column-number="255" data-line-index="254,254"><span data-line-number-content="">255</span></div><div data-line-type="context" data-column-number="256" data-line-index="255,255"><span data-line-number-content="">256</span></div><div data-line-type="context" data-column-number="257" data-line-index="256,256"><span data-line-number-content="">257</span></div></div><div data-content="" style="grid-row: span 95"><div data-separator="line-info" data-separator-first=""><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">9 unmodified lines</span></div></div></div><div data-line="10" data-alt-line="10" data-line-type="context" data-line-index="9,9"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> testPlaybackTimeFormatting</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="11" data-alt-line="11" data-line-type="context" data-line-index="10,10"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> testSubtitleCandidateParsing</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="12" data-alt-line="12" data-line-type="context" data-line-index="11,11"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> testOpenSubtitlesV3CandidateParsing</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="13" data-line-type="change-addition" data-line-index="12,12"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> testOpenSubtitlesNestedAttributesFilesParsing</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="14" data-alt-line="13" data-line-type="context" data-line-index="13,13"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> testOpenSubtitlesV3DownloadResponseResolution</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="15" data-line-type="change-addition" data-line-index="14,14"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> testOpenSubtitlesNestedDownloadResponseResolution</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="16" data-alt-line="14" data-line-type="context" data-line-index="15,15"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> await</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> testSubtitleResolverDownloadJSONReturningLink</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="17" data-alt-line="15" data-line-type="context" data-line-index="16,16"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> await</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> testSubtitleResolverRedirectToDirectSubtitle</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="18" data-alt-line="16" data-line-type="context" data-line-index="17,17"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> await</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> testSubtitleResolverRejectsNonSubtitleAPIResponse</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">137 unmodified lines</span></div></div></div><div data-line="156" data-alt-line="154" data-line-type="context" data-line-index="155,155"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> assertEqual</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">candidates</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">[</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">3</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">]</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.url.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">absoluteString</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"https://cdn.example.test/from-string.ass?source=opensubtitles"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="157" data-alt-line="155" data-line-type="context" data-line-index="156,156"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="158" data-alt-line="156" data-line-type="context" data-line-index="157,157">
|
|
</div><div data-line="159" data-line-type="change-addition" data-line-index="158,158"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> static</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> testOpenSubtitlesNestedAttributesFilesParsing</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="160" data-line-type="change-addition" data-line-index="159,159"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> payload: </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">[</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">String</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> Any</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">]</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> [</span></div><div data-line="161" data-line-type="change-addition" data-line-index="160,160"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "data"</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">:</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> [</span></div><div data-line="162" data-line-type="change-addition" data-line-index="161,161"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> [</span></div><div data-line="163" data-line-type="change-addition" data-line-index="162,162"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "attributes"</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">:</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> [</span></div><div data-line="164" data-line-type="change-addition" data-line-index="163,163"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "language"</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "English"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="165" data-line-type="change-addition" data-line-index="164,164"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "file_name"</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "episode.en.srt"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="166" data-line-type="change-addition" data-line-index="165,165"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "files"</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">:</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> [</span></div><div data-line="167" data-line-type="change-addition" data-line-index="166,166"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> [</span></div><div data-line="168" data-line-type="change-addition" data-line-index="167,167"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "file_id"</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 12345</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="169" data-line-type="change-addition" data-line-index="168,168"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "file_name"</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "nested.en.srt"</span></div><div data-line="170" data-line-type="change-addition" data-line-index="169,169"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> ],</span></div><div data-line="171" data-line-type="change-addition" data-line-index="170,170"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> [</span></div><div data-line="172" data-line-type="change-addition" data-line-index="171,171"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "link"</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "https://dl.opensubtitles.org/en/download/nested.vtt?token=secret"</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="173" data-line-type="change-addition" data-line-index="172,172"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "language"</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "eng"</span></div><div data-line="174" data-line-type="change-addition" data-line-index="173,173"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> ]</span></div><div data-line="175" data-line-type="change-addition" data-line-index="174,174"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> ]</span></div><div data-line="176" data-line-type="change-addition" data-line-index="175,175"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> ]</span></div><div data-line="177" data-line-type="change-addition" data-line-index="176,176"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> ]</span></div><div data-line="178" data-line-type="change-addition" data-line-index="177,177"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> ]</span></div><div data-line="179" data-line-type="change-addition" data-line-index="178,178"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> ]</span></div><div data-line="180" data-line-type="change-addition" data-line-index="179,179">
|
|
</div><div data-line="181" data-line-type="change-addition" data-line-index="180,180"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> candidates </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> SubtitleCandidateParser.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">candidates</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">in</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> payload</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="182" data-line-type="change-addition" data-line-index="181,181">
|
|
</div><div data-line="183" data-line-type="change-addition" data-line-index="182,182"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> assertEqual</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">candidates.count, </span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">2</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="184" data-line-type="change-addition" data-line-index="183,183"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> assertEqual</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">candidates</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">[</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">0</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">]</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.url.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">absoluteString</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"https://api.opensubtitles.com/api/v1/download/12345"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="185" data-line-type="change-addition" data-line-index="184,184"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> assertEqual</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">candidates</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">[</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">0</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">]</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">label</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"nested.en.srt"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="186" data-line-type="change-addition" data-line-index="185,185"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> assertEqual</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">candidates</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">[</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">0</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">]</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">language</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"English"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="187" data-line-type="change-addition" data-line-index="186,186"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> assertEqual</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">candidates</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">[</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">1</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">]</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.url.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">absoluteString</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"https://dl.opensubtitles.org/en/download/nested.vtt?token=secret"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="188" data-line-type="change-addition" data-line-index="187,187"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> assertEqual</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">candidates</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">[</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">1</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">]</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">label</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"eng"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="189" data-line-type="change-addition" data-line-index="188,188"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> assertEqual</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">candidates</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">[</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">1</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">]</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">language</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"eng"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="190" data-line-type="change-addition" data-line-index="189,189"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="191" data-line-type="change-addition" data-line-index="190,190">
|
|
</div><div data-line="192" data-alt-line="157" data-line-type="context" data-line-index="191,191"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> static</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> testOpenSubtitlesV3DownloadResponseResolution</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="193" data-alt-line="158" data-line-type="context" data-line-index="192,192"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> payload </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> """</span></div><div data-line="194" data-alt-line="159" data-line-type="context" data-line-index="193,193"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> {</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">19 unmodified lines</span></div></div></div><div data-line="214" data-alt-line="179" data-line-type="context" data-line-index="213,213"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> assertEqual</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">candidate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">language</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"eng"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="215" data-alt-line="180" data-line-type="context" data-line-index="214,214"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="216" data-alt-line="181" data-line-type="context" data-line-index="215,215">
|
|
</div><div data-line="217" data-line-type="change-addition" data-line-index="216,216"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> static</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> testOpenSubtitlesNestedDownloadResponseResolution</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="218" data-line-type="change-addition" data-line-index="217,217"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> payload </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> """</span></div><div data-line="219" data-line-type="change-addition" data-line-index="218,218"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> {</span></div><div data-line="220" data-line-type="change-addition" data-line-index="219,219"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "data": {</span></div><div data-line="221" data-line-type="change-addition" data-line-index="220,220"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "attributes": {</span></div><div data-line="222" data-line-type="change-addition" data-line-index="221,221"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "files": [</span></div><div data-line="223" data-line-type="change-addition" data-line-index="222,222"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> {</span></div><div data-line="224" data-line-type="change-addition" data-line-index="223,223"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "file_name": "ignored.txt",</span></div><div data-line="225" data-line-type="change-addition" data-line-index="224,224"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "link": "https://cdn.example.test/ignored.txt"</span></div><div data-line="226" data-line-type="change-addition" data-line-index="225,225"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> },</span></div><div data-line="227" data-line-type="change-addition" data-line-index="226,226"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> {</span></div><div data-line="228" data-line-type="change-addition" data-line-index="227,227"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "file_name": "episode.en.ass",</span></div><div data-line="229" data-line-type="change-addition" data-line-index="228,228"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "download": {</span></div><div data-line="230" data-line-type="change-addition" data-line-index="229,229"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "link": "https://dl.opensubtitles.org/en/download/episode.en.ass?token=secret"</span></div><div data-line="231" data-line-type="change-addition" data-line-index="230,230"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> }</span></div><div data-line="232" data-line-type="change-addition" data-line-index="231,231"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> }</span></div><div data-line="233" data-line-type="change-addition" data-line-index="232,232"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> ]</span></div><div data-line="234" data-line-type="change-addition" data-line-index="233,233"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> }</span></div><div data-line="235" data-line-type="change-addition" data-line-index="234,234"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> }</span></div><div data-line="236" data-line-type="change-addition" data-line-index="235,235"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> }</span></div><div data-line="237" data-line-type="change-addition" data-line-index="236,236"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> """</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">data</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">using</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .utf8</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)!</span></div><div data-line="238" data-line-type="change-addition" data-line-index="237,237"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> original </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> SubtitleCandidate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span></div><div data-line="239" data-line-type="change-addition" data-line-index="238,238"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> url</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> URL</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">string</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "https://api.opensubtitles.com/api/v1/download/987"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)!</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">,</span></div><div data-line="240" data-line-type="change-addition" data-line-index="239,239"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> label</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "English SDH"</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">,</span></div><div data-line="241" data-line-type="change-addition" data-line-index="240,240"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> language</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "eng"</span></div><div data-line="242" data-line-type="change-addition" data-line-index="241,241"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> )</span></div><div data-line="243" data-line-type="change-addition" data-line-index="242,242">
|
|
</div><div data-line="244" data-line-type="change-addition" data-line-index="243,243"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> candidate </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> SubtitleResolver.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">bestPlayableCandidate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span></div><div data-line="245" data-line-type="change-addition" data-line-index="244,244"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> from</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> payload,</span></div><div data-line="246" data-line-type="change-addition" data-line-index="245,245"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> responseURL</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> original.url,</span></div><div data-line="247" data-line-type="change-addition" data-line-index="246,246"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> original</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> original</span></div><div data-line="248" data-line-type="change-addition" data-line-index="247,247"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> )</span></div><div data-line="249" data-line-type="change-addition" data-line-index="248,248">
|
|
</div><div data-line="250" data-line-type="change-addition" data-line-index="249,249"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> assertEqual</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">candidate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.url.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">absoluteString</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"https://dl.opensubtitles.org/en/download/episode.en.ass?token=secret"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="251" data-line-type="change-addition" data-line-index="250,250"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> assertEqual</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">candidate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">label</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"English SDH"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="252" data-line-type="change-addition" data-line-index="251,251"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> assertEqual</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">candidate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">language</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, </span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"eng"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="253" data-line-type="change-addition" data-line-index="252,252"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="254" data-line-type="change-addition" data-line-index="253,253">
|
|
</div><div data-line="255" data-alt-line="182" data-line-type="context" data-line-index="254,254"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> static</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> testSubtitleResolverDownloadJSONReturningLink</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> async</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="256" data-alt-line="183" data-line-type="context" data-line-index="255,255"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> MockURLProtocol.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">handlers</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> [</span></div><div data-line="257" data-alt-line="184" data-line-type="context" data-line-index="256,256"><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "https://api.opensubtitles.com/api/v1/download/123"</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">:</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> (</span></div></div></code></pre>
|
|
</div>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>Expected Impact for End-Users</h2>
|
|
<p>When OpenSubtitles provides usable captions, the native captions menu should show external OpenSubtitles options in addition to <code>None</code> and embedded subtitle tracks. If an embedded track appears first, Dreamio can still switch to the external track automatically once VLC surfaces it, unless the user already made a manual caption choice.</p>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>Validation</h2>
|
|
<ul>
|
|
<li><span class="check">Passed</span> <code>swiftc Dreamio/StreamCandidate.swift Dreamio/StreamResolver.swift Tests/StreamResolverTests.swift -o /tmp/dreamio-stream-tests && /tmp/dreamio-stream-tests</code>.</li>
|
|
<li><span class="check">Passed</span> <code>swiftc -typecheck Dreamio/StreamCandidate.swift Dreamio/StreamResolver.swift</code>.</li>
|
|
<li><span class="check">Passed</span> <code>DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer xcodebuild -workspace Dreamio.xcworkspace -scheme Dreamio -configuration Debug -sdk iphonesimulator build</code>.</li>
|
|
<li>Manual device validation was not performed in this turn. The next device run should verify that OpenSubtitles options appear in the captions menu for a title with OpenSubtitles enabled.</li>
|
|
</ul>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>Issues, Limitations, and Mitigations</h2>
|
|
<ul>
|
|
<li>OpenSubtitles API download URLs may still require provider-specific authorization. This change preserves and resolves more candidate shapes, but it does not add new API credentials.</li>
|
|
<li>VLC subtitle slave exposure is asynchronous and backend-dependent. Delayed refreshes and explicit missing-track logs make that timing easier to diagnose.</li>
|
|
<li>The existing dirty Xcode workspace user-state file was present before this work and was not intentionally edited.</li>
|
|
</ul>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>Follow-up Work</h2>
|
|
<ul>
|
|
<li>Run on a physical device with OpenSubtitles enabled and confirm the menu shows external OpenSubtitles tracks plus embedded tracks.</li>
|
|
<li>If device logs still show accepted slaves with no visible VLC track, capture the URL shape and VLC track arrays from the new diagnostics.</li>
|
|
<li>Consider exposing external track provenance in the menu if VLC track names remain too generic.</li>
|
|
</ul>
|
|
</section>
|
|
</main>
|
|
</body>
|
|
</html>
|