mirror of
https://github.com/dirtydishes/dreamio.git
synced 2026-06-06 21:38:15 +00:00
421 lines
No EOL
534 KiB
HTML
421 lines
No EOL
534 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>Native Player Audio Track Selection</title>
|
|
<style>
|
|
:root {
|
|
color-scheme: light;
|
|
--bg: oklch(0.985 0.008 285);
|
|
--ink: oklch(0.18 0.018 285);
|
|
--muted: oklch(0.43 0.018 285);
|
|
--line: oklch(0.86 0.025 285);
|
|
--panel: oklch(0.998 0.004 285);
|
|
--accent: oklch(0.55 0.18 292);
|
|
--accent-soft: oklch(0.93 0.055 292);
|
|
--shadow: 0 18px 55px rgba(38, 28, 61, 0.12);
|
|
}
|
|
* { box-sizing: border-box; }
|
|
body {
|
|
margin: 0;
|
|
background: linear-gradient(180deg, var(--bg), oklch(0.96 0.018 292));
|
|
color: var(--ink);
|
|
font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
|
line-height: 1.55;
|
|
}
|
|
main { max-width: 1080px; margin: 0 auto; padding: 56px 22px 72px; }
|
|
header { margin-bottom: 28px; }
|
|
.eyebrow { color: var(--accent); font-weight: 700; font-size: 0.78rem; letter-spacing: 0.08em; text-transform: uppercase; }
|
|
h1 { font-size: clamp(2rem, 4vw, 3.7rem); line-height: 1; margin: 8px 0 18px; letter-spacing: 0; max-width: 820px; }
|
|
.summary { max-width: 760px; color: var(--muted); font-size: 1.08rem; }
|
|
section { background: color-mix(in oklch, var(--panel) 86%, transparent); border: 1px solid var(--line); border-radius: 18px; padding: 24px; margin: 18px 0; box-shadow: var(--shadow); }
|
|
h2 { font-size: 1.15rem; margin: 0 0 12px; }
|
|
h3 { font-size: 0.98rem; margin: 0 0 12px; color: var(--muted); }
|
|
p { margin: 0 0 12px; }
|
|
p:last-child, ul:last-child { margin-bottom: 0; }
|
|
ul { margin: 0; padding-left: 1.15rem; }
|
|
li { margin: 7px 0; }
|
|
code { font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size: 0.92em; background: var(--accent-soft); padding: 0.12rem 0.35rem; border-radius: 6px; }
|
|
.grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
|
|
.diff-block { overflow: auto; padding: 18px; }
|
|
.diff-block pre { margin: 0; }
|
|
.callout { border-color: color-mix(in oklch, var(--accent) 42%, var(--line)); background: color-mix(in oklch, var(--accent-soft) 62%, var(--panel)); }
|
|
@media (max-width: 760px) { main { padding-top: 34px; } .grid { grid-template-columns: 1fr; } section { border-radius: 14px; padding: 18px; } }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<main>
|
|
<header>
|
|
<div class="eyebrow">Dreamio turn document · May 25, 2026</div>
|
|
<h1>Native player audio track selection</h1>
|
|
<p class="summary">Dreamio's VLC-backed native player now exposes embedded audio tracks, adds a far-left audio menu to the control bar, and refreshes the player chrome with a more iOS-native glass treatment.</p>
|
|
</header>
|
|
|
|
<section>
|
|
<h2>Summary</h2>
|
|
<p>Added audio track discovery and selection to native playback so multi-language MKV and similar files can be switched without leaving the player.</p>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>Changes Made</h2>
|
|
<ul>
|
|
<li>Extended <code>NativePlaybackBackend</code> with audio track state, a selection API, and an audio-track-change callback.</li>
|
|
<li>Read MobileVLCKit audio track names, indexes, and current selection from <code>VLCMediaPlayer</code>.</li>
|
|
<li>Added an audio menu button on the far left side of the native controls using the <code>waveform.circle</code> symbol.</li>
|
|
<li>Grouped skip/play/skip into a centered playback cluster so the play button stays visually centered.</li>
|
|
<li>Updated the control surface and buttons with translucent material, softer radius, subtle borders, and lighter glass-like control wells.</li>
|
|
</ul>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>Context</h2>
|
|
<p>The player already exposed embedded subtitle tracks through MobileVLCKit. The same streams often include multiple audio tracks, such as alternate languages or commentary, but the native player had no way to inspect or switch them.</p>
|
|
<p>The user-provided diagnostics showed VLC discovering embedded subtitle tracks while the UI still lacked track filtering for audio. This change follows the existing subtitle menu pattern instead of creating a separate player path.</p>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>Important Implementation Details</h2>
|
|
<ul>
|
|
<li><code>AudioTrack</code> currently aliases the existing <code>SubtitleTrack</code> value shape because both VLC APIs expose an integer id and display name.</li>
|
|
<li>The audio button is enabled only when VLC reports more than one selectable audio track, keeping single-track files quiet.</li>
|
|
<li>The backend fires <code>onAudioTracksChange</code> when VLC enters playback/buffering and when elementary streams are added.</li>
|
|
<li>Selection is applied with <code>mediaPlayer.currentAudioTrackIndex</code>, matching the existing subtitle selection style.</li>
|
|
</ul>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>Relevant Diff Snippets</h2>
|
|
<p>Rendered with <code>@pierre/diffs/ssr</code> from the current git diff.</p>
|
|
</section>
|
|
<section class="diff-block"><h3>Dreamio/NativePlaybackBackend.swift</h3><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/NativePlaybackBackend.swift</bdi></div></div><div data-metadata=""><span data-additions-count="">+4</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:2ch;" data-dehydrated=""><code data-code="" data-container-size="" data-deletions=""><div data-gutter="" style="grid-row: span 24"><div data-separator="line-info" data-separator-first=""><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">5 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="6" data-line-index="5,5"><span data-line-number-content="">6</span></div><div data-line-type="context" data-column-number="7" data-line-index="6,6"><span data-line-number-content="">7</span></div><div data-line-type="context" data-column-number="8" data-line-index="7,7"><span data-line-number-content="">8</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="9" data-line-index="9,9"><span data-line-number-content="">9</span></div><div data-line-type="context" data-column-number="10" data-line-index="10,10"><span data-line-number-content="">10</span></div><div data-line-type="context" data-column-number="11" data-line-index="11,11"><span data-line-number-content="">11</span></div><div data-line-type="context" data-column-number="12" data-line-index="12,12"><span data-line-number-content="">12</span></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-line-type="context" data-column-number="14" data-line-index="14,14"><span data-line-number-content="">14</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="15" data-line-index="17,17"><span data-line-number-content="">15</span></div><div data-line-type="context" data-column-number="16" data-line-index="18,18"><span data-line-number-content="">16</span></div><div data-line-type="context" data-column-number="17" data-line-index="19,19"><span data-line-number-content="">17</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">5 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="23" data-line-index="25,25"><span data-line-number-content="">23</span></div><div data-line-type="context" data-column-number="24" data-line-index="26,26"><span data-line-number-content="">24</span></div><div data-line-type="context" data-column-number="25" data-line-index="27,27"><span data-line-number-content="">25</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="26" data-line-index="29,29"><span data-line-number-content="">26</span></div><div data-line-type="context" data-column-number="27" data-line-index="30,30"><span data-line-number-content="">27</span></div><div data-line-type="context" data-column-number="28" data-line-index="31,31"><span data-line-number-content="">28</span></div></div><div data-content="" style="grid-row: span 24"><div data-separator="line-info" data-separator-first=""><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">5 unmodified lines</span></div></div></div><div data-line="6" data-alt-line="6" data-line-type="context" data-line-index="5,5"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> onFailure: </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">((</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">Error</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"> Void</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"> get</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> set</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="7" data-alt-line="7" data-line-type="context" data-line-index="6,6"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> onStateChange: </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"> Void</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"> get</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> set</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="8" data-alt-line="8" data-line-type="context" data-line-index="7,7"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> onSubtitleTracksChange: </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"> Void</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"> get</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> set</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="9" data-alt-line="10" data-line-type="context" data-line-index="9,9"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> isPlaying: </span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">Bool</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> get</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="10" data-alt-line="11" data-line-type="context" data-line-index="10,10"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> isSeekable: </span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">Bool</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> get</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="11" data-alt-line="12" data-line-type="context" data-line-index="11,11"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> duration: TimeInterval </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">{</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> get</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="12" data-alt-line="13" data-line-type="context" data-line-index="12,12"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> currentTime: TimeInterval </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">{</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> get</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="13" data-alt-line="14" data-line-type="context" data-line-index="13,13"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> remainingTime: TimeInterval </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">{</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> get</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="14" data-alt-line="15" data-line-type="context" data-line-index="14,14"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> position: </span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">Float</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> get</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="15" data-alt-line="18" data-line-type="context" data-line-index="17,17"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> subtitleTracks: </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">[</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">SubtitleTrack</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"> get</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="16" data-alt-line="19" data-line-type="context" data-line-index="18,18"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> selectedSubtitleTrackID: </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:#D568EA;--diffs-token-light:#A631BE"> get</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="17" data-alt-line="20" data-line-type="context" data-line-index="19,19"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> subtitleDelay: TimeInterval </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">{</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> get</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="">5 unmodified lines</span></div></div></div><div data-line="23" data-alt-line="26" data-line-type="context" data-line-index="25,25"><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> togglePlayPause</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="24" data-alt-line="27" data-line-type="context" data-line-index="26,26"><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> seek</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">to</span><span style="--diffs-token-dark:#A3A3A3;--diffs-token-light:#636363"> position</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: </span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">Float</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="25" data-alt-line="28" data-line-type="context" data-line-index="27,27"><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> jump</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">by</span><span style="--diffs-token-dark:#A3A3A3;--diffs-token-light:#636363"> seconds</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: TimeInterval</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="26" data-alt-line="30" data-line-type="context" data-line-index="29,29"><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> selectSubtitleTrack</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">id</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></div><div data-line="27" data-alt-line="31" data-line-type="context" data-line-index="30,30"><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> adjustSubtitleDelay</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">by</span><span style="--diffs-token-dark:#A3A3A3;--diffs-token-light:#636363"> seconds</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: TimeInterval</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="28" data-alt-line="32" data-line-type="context" data-line-index="31,31"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> @</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">discardableResult</span></div></div></code><code data-code="" data-container-size="" data-additions=""><div data-gutter="" style="grid-row: span 24"><div data-separator="line-info" data-separator-first=""><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">5 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="6" data-line-index="5,5"><span data-line-number-content="">6</span></div><div data-line-type="context" data-column-number="7" data-line-index="6,6"><span data-line-number-content="">7</span></div><div data-line-type="context" data-column-number="8" data-line-index="7,7"><span data-line-number-content="">8</span></div><div data-line-type="change-addition" data-column-number="9" data-line-index="8,8"><span data-line-number-content="">9</span></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="context" 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="context" data-column-number="15" data-line-index="14,14"><span data-line-number-content="">15</span></div><div data-line-type="change-addition" data-column-number="16" data-line-index="15,15"><span data-line-number-content="">16</span></div><div data-line-type="change-addition" 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-line-type="context" data-column-number="19" data-line-index="18,18"><span data-line-number-content="">19</span></div><div data-line-type="context" data-column-number="20" data-line-index="19,19"><span data-line-number-content="">20</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">5 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="context" 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><div data-content="" style="grid-row: span 24"><div data-separator="line-info" data-separator-first=""><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">5 unmodified lines</span></div></div></div><div data-line="6" data-alt-line="6" data-line-type="context" data-line-index="5,5"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> onFailure: </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">((</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">Error</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"> Void</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"> get</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> set</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="7" data-alt-line="7" data-line-type="context" data-line-index="6,6"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> onStateChange: </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"> Void</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"> get</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> set</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="8" data-alt-line="8" data-line-type="context" data-line-index="7,7"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> onSubtitleTracksChange: </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"> Void</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"> get</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> set</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="9" data-line-type="change-addition" data-line-index="8,8"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> onAudioTracksChange: </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"> Void</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"> get</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> set</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="10" data-alt-line="9" data-line-type="context" data-line-index="9,9"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> isPlaying: </span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">Bool</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> get</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="11" data-alt-line="10" data-line-type="context" data-line-index="10,10"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> isSeekable: </span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">Bool</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> get</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="12" data-alt-line="11" data-line-type="context" data-line-index="11,11"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> duration: TimeInterval </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">{</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> get</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="13" data-alt-line="12" data-line-type="context" data-line-index="12,12"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> currentTime: TimeInterval </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">{</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> get</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:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> remainingTime: TimeInterval </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">{</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> get</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="15" data-alt-line="14" data-line-type="context" data-line-index="14,14"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> position: </span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">Float</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> get</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="16" data-line-type="change-addition" data-line-index="15,15"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> audioTracks: </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">[</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">AudioTrack</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"> get</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="17" data-line-type="change-addition" data-line-index="16,16"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> selectedAudioTrackID: </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:#D568EA;--diffs-token-light:#A631BE"> get</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="18" data-alt-line="15" data-line-type="context" data-line-index="17,17"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> subtitleTracks: </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">[</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">SubtitleTrack</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"> get</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="19" data-alt-line="16" data-line-type="context" data-line-index="18,18"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> selectedSubtitleTrackID: </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:#D568EA;--diffs-token-light:#A631BE"> get</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="20" data-alt-line="17" data-line-type="context" data-line-index="19,19"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> subtitleDelay: TimeInterval </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">{</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> get</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="">5 unmodified lines</span></div></div></div><div data-line="26" data-alt-line="23" data-line-type="context" data-line-index="25,25"><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> togglePlayPause</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="27" data-alt-line="24" data-line-type="context" data-line-index="26,26"><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> seek</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">to</span><span style="--diffs-token-dark:#A3A3A3;--diffs-token-light:#636363"> position</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: </span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">Float</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="28" data-alt-line="25" data-line-type="context" data-line-index="27,27"><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> jump</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">by</span><span style="--diffs-token-dark:#A3A3A3;--diffs-token-light:#636363"> seconds</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: TimeInterval</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:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> selectAudioTrack</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">id</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></div><div data-line="30" data-alt-line="26" data-line-type="context" data-line-index="29,29"><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> selectSubtitleTrack</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">id</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></div><div data-line="31" data-alt-line="27" data-line-type="context" data-line-index="30,30"><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> adjustSubtitleDelay</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">by</span><span style="--diffs-token-dark:#A3A3A3;--diffs-token-light:#636363"> seconds</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: TimeInterval</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="32" data-alt-line="28" data-line-type="context" data-line-index="31,31"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> @</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">discardableResult</span></div></div></code></pre></section>
|
|
<section class="diff-block"><h3>Dreamio/StreamCandidate.swift</h3><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-additions-count="">+8</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 22"><div data-separator="line-info" data-separator-first=""><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">39 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="40" data-line-index="39,39"><span data-line-number-content="">40</span></div><div data-line-type="context" data-column-number="41" data-line-index="40,40"><span data-line-number-content="">41</span></div><div data-line-type="context" data-column-number="42" data-line-index="41,41"><span data-line-number-content="">42</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="43" data-line-index="44,44"><span data-line-number-content="">43</span></div><div data-line-type="context" data-column-number="44" data-line-index="45,45"><span data-line-number-content="">44</span></div><div data-line-type="context" data-column-number="45" data-line-index="46,46"><span data-line-number-content="">45</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">47 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="93" data-line-index="94,94"><span data-line-number-content="">93</span></div><div data-line-type="context" data-column-number="94" data-line-index="95,95"><span data-line-number-content="">94</span></div><div data-line-type="context" data-column-number="95" data-line-index="96,96"><span data-line-number-content="">95</span></div><div data-gutter-buffer="buffer" data-buffer-size="6" style="grid-row: span 6;min-height:calc(6 * 1lh);"></div><div data-line-type="context" data-column-number="96" data-line-index="103,103"><span data-line-number-content="">96</span></div><div data-line-type="context" data-column-number="97" data-line-index="104,104"><span data-line-number-content="">97</span></div><div data-line-type="context" data-column-number="98" data-line-index="105,105"><span data-line-number-content="">98</span></div></div><div data-content="" style="grid-row: span 22"><div data-separator="line-info" data-separator-first=""><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">39 unmodified lines</span></div></div></div><div data-line="40" data-alt-line="40" data-line-type="context" data-line-index="39,39"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> name: </span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">String</span></div><div data-line="41" data-alt-line="41" data-line-type="context" data-line-index="40,40"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">}</span></div><div data-line="42" data-alt-line="42" data-line-type="context" data-line-index="41,41">
|
|
</div><div data-content-buffer="" data-buffer-size="2" style="grid-row: span 2;min-height:calc(2 * 1lh)"></div><div data-line="43" data-alt-line="45" data-line-type="context" data-line-index="44,44"><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="44" data-alt-line="46" data-line-type="context" data-line-index="45,45"><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE">enum</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> SubtitleDebugFormatter</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="45" data-alt-line="47" data-line-type="context" data-line-index="46,46"><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"> candidateSummary</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"> 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="">47 unmodified lines</span></div></div></div><div data-line="93" data-alt-line="95" data-line-type="context" data-line-index="94,94"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="94" data-alt-line="96" data-line-type="context" data-line-index="95,95"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">}</span></div><div data-line="95" data-alt-line="97" data-line-type="context" data-line-index="96,96">
|
|
</div><div data-content-buffer="" data-buffer-size="6" style="grid-row: span 6;min-height:calc(6 * 1lh)"></div><div data-line="96" data-alt-line="104" data-line-type="context" data-line-index="103,103"><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE">struct</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> StreamClassification</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="97" data-alt-line="105" data-line-type="context" data-line-index="104,104"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> sourceKind: StreamSourceKind</span></div><div data-line="98" data-alt-line="106" data-line-type="context" data-line-index="105,105"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> containerGuess: StreamContainerGuess</span></div></div></code><code data-code="" data-container-size="" data-additions=""><div data-gutter="" style="grid-row: span 22"><div data-separator="line-info" data-separator-first=""><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">39 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="40" data-line-index="39,39"><span data-line-number-content="">40</span></div><div data-line-type="context" data-column-number="41" data-line-index="40,40"><span data-line-number-content="">41</span></div><div data-line-type="context" data-column-number="42" data-line-index="41,41"><span data-line-number-content="">42</span></div><div data-line-type="change-addition" data-column-number="43" data-line-index="42,42"><span data-line-number-content="">43</span></div><div data-line-type="change-addition" data-column-number="44" data-line-index="43,43"><span data-line-number-content="">44</span></div><div data-line-type="context" data-column-number="45" data-line-index="44,44"><span data-line-number-content="">45</span></div><div data-line-type="context" data-column-number="46" data-line-index="45,45"><span data-line-number-content="">46</span></div><div data-line-type="context" data-column-number="47" data-line-index="46,46"><span data-line-number-content="">47</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">47 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="95" data-line-index="94,94"><span data-line-number-content="">95</span></div><div data-line-type="context" data-column-number="96" data-line-index="95,95"><span data-line-number-content="">96</span></div><div data-line-type="context" 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="change-addition" data-column-number="100" data-line-index="99,99"><span data-line-number-content="">100</span></div><div data-line-type="change-addition" data-column-number="101" data-line-index="100,100"><span data-line-number-content="">101</span></div><div data-line-type="change-addition" data-column-number="102" data-line-index="101,101"><span data-line-number-content="">102</span></div><div data-line-type="change-addition" data-column-number="103" data-line-index="102,102"><span data-line-number-content="">103</span></div><div data-line-type="context" data-column-number="104" data-line-index="103,103"><span data-line-number-content="">104</span></div><div data-line-type="context" data-column-number="105" data-line-index="104,104"><span data-line-number-content="">105</span></div><div data-line-type="context" data-column-number="106" data-line-index="105,105"><span data-line-number-content="">106</span></div></div><div data-content="" style="grid-row: span 22"><div data-separator="line-info" data-separator-first=""><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">39 unmodified lines</span></div></div></div><div data-line="40" data-alt-line="40" data-line-type="context" data-line-index="39,39"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> name: </span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">String</span></div><div data-line="41" data-alt-line="41" data-line-type="context" data-line-index="40,40"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">}</span></div><div data-line="42" data-alt-line="42" data-line-type="context" data-line-index="41,41">
|
|
</div><div data-line="43" data-line-type="change-addition" data-line-index="42,42"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">typealias</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> AudioTrack</span><span style="--diffs-token-dark:#08C0EF;--diffs-token-light:#08C0EF"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> SubtitleTrack</span></div><div data-line="44" data-line-type="change-addition" data-line-index="43,43">
|
|
</div><div data-line="45" data-alt-line="43" data-line-type="context" data-line-index="44,44"><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="46" data-alt-line="44" data-line-type="context" data-line-index="45,45"><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE">enum</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> SubtitleDebugFormatter</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="47" data-alt-line="45" data-line-type="context" data-line-index="46,46"><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"> candidateSummary</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"> 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="">47 unmodified lines</span></div></div></div><div data-line="95" data-alt-line="93" data-line-type="context" data-line-index="94,94"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="96" data-alt-line="94" data-line-type="context" data-line-index="95,95"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">}</span></div><div data-line="97" data-alt-line="95" data-line-type="context" data-line-index="96,96">
|
|
</div><div data-line="98" data-line-type="change-addition" data-line-index="97,97"><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE">enum</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> AudioOptionMapper</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="99" data-line-type="change-addition" data-line-index="98,98"><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"> options</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"> tracks</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">AudioTrack</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:#FAFAFA;--diffs-token-light:#0A0A0A">AudioTrack</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="100" data-line-type="change-addition" data-line-index="99,99"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> tracks.</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:#FAFAFA;--diffs-token-light:#0A0A0A">.</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></div><div data-line="101" data-line-type="change-addition" data-line-index="100,100"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="102" data-line-type="change-addition" data-line-index="101,101"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">}</span></div><div data-line="103" data-line-type="change-addition" data-line-index="102,102">
|
|
</div><div data-line="104" data-alt-line="96" data-line-type="context" data-line-index="103,103"><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE">struct</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> StreamClassification</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="105" data-alt-line="97" data-line-type="context" data-line-index="104,104"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> sourceKind: StreamSourceKind</span></div><div data-line="106" data-alt-line="98" data-line-type="context" data-line-index="105,105"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> containerGuess: StreamContainerGuess</span></div></div></code></pre></section>
|
|
<section class="diff-block"><h3>Dreamio/VLCNativePlaybackBackend.swift</h3><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-additions-count="">+43</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 87"><div data-separator="line-info" data-separator-first=""><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">17 unmodified lines</span></div></div></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-line-type="context" data-column-number="19" data-line-index="18,18"><span data-line-number-content="">19</span></div><div data-line-type="context" data-column-number="20" data-line-index="19,19"><span data-line-number-content="">20</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="21" data-line-index="21,21"><span data-line-number-content="">21</span></div><div data-line-type="context" data-column-number="22" data-line-index="22,22"><span data-line-number-content="">22</span></div><div data-line-type="context" data-column-number="23" data-line-index="23,23"><span data-line-number-content="">23</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">80 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="104" data-line-index="104,104"><span data-line-number-content="">104</span></div><div data-line-type="context" data-column-number="105" data-line-index="105,105"><span data-line-number-content="">105</span></div><div data-line-type="context" data-column-number="106" data-line-index="106,106"><span data-line-number-content="">106</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="107" data-line-index="120,120"><span data-line-number-content="">107</span></div><div data-line-type="context" data-column-number="108" data-line-index="121,121"><span data-line-number-content="">108</span></div><div data-line-type="context" data-column-number="109" data-line-index="122,122"><span data-line-number-content="">109</span></div><div data-separator="line-info"><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="193" data-line-index="206,206"><span data-line-number-content="">193</span></div><div data-line-type="context" data-column-number="194" data-line-index="207,207"><span data-line-number-content="">194</span></div><div data-line-type="context" data-column-number="195" data-line-index="208,208"><span data-line-number-content="">195</span></div><div data-gutter-buffer="buffer" data-buffer-size="20" style="grid-row: span 20;min-height:calc(20 * 1lh);"></div><div data-line-type="context" data-column-number="196" data-line-index="229,229"><span data-line-number-content="">196</span></div><div data-line-type="context" data-column-number="197" data-line-index="230,230"><span data-line-number-content="">197</span></div><div data-line-type="context" data-column-number="198" data-line-index="231,231"><span data-line-number-content="">198</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">58 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="257" data-line-index="290,290"><span data-line-number-content="">257</span></div><div data-line-type="context" data-column-number="258" data-line-index="291,291"><span data-line-number-content="">258</span></div><div data-line-type="context" data-column-number="259" data-line-index="292,292"><span data-line-number-content="">259</span></div><div data-gutter-buffer="buffer" data-buffer-size="6" style="grid-row: span 6;min-height:calc(6 * 1lh);"></div><div data-line-type="context" data-column-number="260" data-line-index="299,299"><span data-line-number-content="">260</span></div><div data-line-type="context" data-column-number="261" data-line-index="300,300"><span data-line-number-content="">261</span></div><div data-line-type="context" data-column-number="262" data-line-index="301,301"><span data-line-number-content="">262</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">52 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="315" data-line-index="354,354"><span data-line-number-content="">315</span></div><div data-line-type="context" data-column-number="316" data-line-index="355,355"><span data-line-number-content="">316</span></div><div data-line-type="context" data-column-number="317" data-line-index="356,356"><span data-line-number-content="">317</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="318" data-line-index="358,358"><span data-line-number-content="">318</span></div><div data-line-type="context" data-column-number="319" data-line-index="359,359"><span data-line-number-content="">319</span></div><div data-line-type="context" data-column-number="320" data-line-index="360,360"><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="">1 unmodified line</span></div></div></div><div data-line-type="context" data-column-number="322" data-line-index="362,362"><span data-line-number-content="">322</span></div><div data-line-type="context" data-column-number="323" data-line-index="363,363"><span data-line-number-content="">323</span></div><div data-line-type="context" data-column-number="324" data-line-index="364,364"><span data-line-number-content="">324</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="325" data-line-index="366,366"><span data-line-number-content="">325</span></div><div data-line-type="context" data-column-number="326" data-line-index="367,367"><span data-line-number-content="">326</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="327" data-line-index="369,369"><span data-line-number-content="">327</span></div><div data-line-type="context" data-column-number="328" data-line-index="370,370"><span data-line-number-content="">328</span></div><div data-line-type="context" data-column-number="329" data-line-index="371,371"><span data-line-number-content="">329</span></div></div><div data-content="" style="grid-row: span 87"><div data-separator="line-info" data-separator-first=""><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">17 unmodified lines</span></div></div></div><div data-line="18" data-alt-line="18" data-line-type="context" data-line-index="17,17"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> onFailure: </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">((</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">Error</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"> Void</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)?</span></div><div data-line="19" data-alt-line="19" data-line-type="context" data-line-index="18,18"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> onStateChange: </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"> Void</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)?</span></div><div data-line="20" data-alt-line="20" data-line-type="context" data-line-index="19,19"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> onSubtitleTracksChange: </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"> Void</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="21" data-alt-line="22" data-line-type="context" data-line-index="21,21">
|
|
</div><div data-line="22" data-alt-line="23" data-line-type="context" data-line-index="22,22"><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:#FF678D;--diffs-token-light:#D32A61"> canImport</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">MobileVLCKit</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="23" data-alt-line="24" data-line-type="context" data-line-index="23,23"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> mediaPlayer </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> VLCMediaPlayer</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="">80 unmodified lines</span></div></div></div><div data-line="104" data-alt-line="105" data-line-type="context" data-line-index="104,104"><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="105" data-alt-line="106" data-line-type="context" data-line-index="105,105"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="106" data-alt-line="107" data-line-type="context" data-line-index="106,106">
|
|
</div><div data-content-buffer="" data-buffer-size="13" style="grid-row: span 13;min-height:calc(13 * 1lh)"></div><div data-line="107" data-alt-line="121" data-line-type="context" data-line-index="120,120"><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> selectSubtitleTrack</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">id</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="108" data-alt-line="122" data-line-type="context" data-line-index="121,121"><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:#FF678D;--diffs-token-light:#D32A61"> canImport</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">MobileVLCKit</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="109" data-alt-line="123" data-line-type="context" data-line-index="122,122"><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"> true</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">83 unmodified lines</span></div></div></div><div data-line="193" data-alt-line="207" data-line-type="context" data-line-index="206,206"><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="194" data-alt-line="208" data-line-type="context" data-line-index="207,207"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="195" data-alt-line="209" data-line-type="context" data-line-index="208,208">
|
|
</div><div data-content-buffer="" data-buffer-size="20" style="grid-row: span 20;min-height:calc(20 * 1lh)"></div><div data-line="196" 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"> subtitleTracks: </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">[</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">SubtitleTrack</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-alt-line="231" data-line-type="context" data-line-index="230,230"><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:#FF678D;--diffs-token-light:#D32A61"> canImport</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">MobileVLCKit</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="198" data-alt-line="232" data-line-type="context" 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"> names </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> mediaPlayer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">videoSubTitlesNames</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> as?</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:#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"> []</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">58 unmodified lines</span></div></div></div><div data-line="257" data-alt-line="291" data-line-type="context" data-line-index="290,290"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="258" data-alt-line="292" data-line-type="context" data-line-index="291,291">
|
|
</div><div data-line="259" data-alt-line="293" data-line-type="context" data-line-index="292,292"><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-content-buffer="" data-buffer-size="6" style="grid-row: span 6;min-height:calc(6 * 1lh)"></div><div data-line="260" data-alt-line="300" data-line-type="context" data-line-index="299,299"><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"> 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:#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="261" data-alt-line="301" data-line-type="context" data-line-index="300,300"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> names </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> mediaPlayer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">videoSubTitlesNames</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> as?</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:#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"> []</span></div><div data-line="262" data-alt-line="302" data-line-type="context" data-line-index="301,301"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> indexes </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> mediaPlayer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">videoSubTitlesIndexes</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><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> []</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">52 unmodified lines</span></div></div></div><div data-line="315" data-alt-line="355" data-line-type="context" data-line-index="354,354"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> reapplyAutoSelectedSubtitleTrackIfNeeded</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:#9D6AFB;--diffs-token-light:#693ACF"> stateName</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">mediaPlayer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">state</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">))</span></div><div data-line="316" data-alt-line="356" data-line-type="context" data-line-index="355,355"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> onReady</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?()</span></div><div data-line="317" data-alt-line="357" data-line-type="context" data-line-index="356,356"><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-content-buffer="" data-buffer-size="1" style="grid-row: span 1;min-height:calc(1 * 1lh)"></div><div data-line="318" data-alt-line="359" data-line-type="context" data-line-index="358,358"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> case</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> .error</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">:</span></div><div data-line="319" data-alt-line="360" data-line-type="context" data-line-index="359,359"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> onFailure</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?(</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">NativePlaybackError.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">playbackFailed</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="320" data-alt-line="361" data-line-type="context" data-line-index="360,360"><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-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="322" data-alt-line="363" data-line-type="context" data-line-index="362,362"><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="323" data-alt-line="364" data-line-type="context" data-line-index="363,363"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> selectInitialSubtitleTrackIfNeeded</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="324" data-alt-line="365" data-line-type="context" data-line-index="364,364"><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-content-buffer="" data-buffer-size="1" style="grid-row: span 1;min-height:calc(1 * 1lh)"></div><div data-line="325" data-alt-line="367" data-line-type="context" data-line-index="366,366"><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="326" data-alt-line="368" data-line-type="context" data-line-index="367,367"><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-content-buffer="" data-buffer-size="1" style="grid-row: span 1;min-height:calc(1 * 1lh)"></div><div data-line="327" data-alt-line="370" data-line-type="context" data-line-index="369,369"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> onSubtitleTracksChange</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?()</span></div><div data-line="328" data-alt-line="371" data-line-type="context" data-line-index="370,370"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> default:</span></div><div data-line="329" data-alt-line="372" data-line-type="context" data-line-index="371,371"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> break</span></div></div></code><code data-code="" data-container-size="" data-additions=""><div data-gutter="" style="grid-row: span 87"><div data-separator="line-info" data-separator-first=""><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">17 unmodified lines</span></div></div></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-line-type="context" data-column-number="19" data-line-index="18,18"><span data-line-number-content="">19</span></div><div data-line-type="context" data-column-number="20" data-line-index="19,19"><span data-line-number-content="">20</span></div><div data-line-type="change-addition" data-column-number="21" data-line-index="20,20"><span data-line-number-content="">21</span></div><div data-line-type="context" data-column-number="22" data-line-index="21,21"><span data-line-number-content="">22</span></div><div data-line-type="context" data-column-number="23" data-line-index="22,22"><span data-line-number-content="">23</span></div><div data-line-type="context" data-column-number="24" data-line-index="23,23"><span data-line-number-content="">24</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">80 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="105" data-line-index="104,104"><span data-line-number-content="">105</span></div><div data-line-type="context" data-column-number="106" data-line-index="105,105"><span data-line-number-content="">106</span></div><div data-line-type="context" data-column-number="107" data-line-index="106,106"><span data-line-number-content="">107</span></div><div data-line-type="change-addition" data-column-number="108" data-line-index="107,107"><span data-line-number-content="">108</span></div><div data-line-type="change-addition" data-column-number="109" data-line-index="108,108"><span data-line-number-content="">109</span></div><div data-line-type="change-addition" data-column-number="110" data-line-index="109,109"><span data-line-number-content="">110</span></div><div data-line-type="change-addition" data-column-number="111" data-line-index="110,110"><span data-line-number-content="">111</span></div><div data-line-type="change-addition" data-column-number="112" data-line-index="111,111"><span data-line-number-content="">112</span></div><div data-line-type="change-addition" data-column-number="113" data-line-index="112,112"><span data-line-number-content="">113</span></div><div data-line-type="change-addition" data-column-number="114" data-line-index="113,113"><span data-line-number-content="">114</span></div><div data-line-type="change-addition" data-column-number="115" data-line-index="114,114"><span data-line-number-content="">115</span></div><div data-line-type="change-addition" data-column-number="116" data-line-index="115,115"><span data-line-number-content="">116</span></div><div data-line-type="change-addition" data-column-number="117" data-line-index="116,116"><span data-line-number-content="">117</span></div><div data-line-type="change-addition" data-column-number="118" data-line-index="117,117"><span data-line-number-content="">118</span></div><div data-line-type="change-addition" data-column-number="119" data-line-index="118,118"><span data-line-number-content="">119</span></div><div data-line-type="change-addition" data-column-number="120" data-line-index="119,119"><span data-line-number-content="">120</span></div><div data-line-type="context" data-column-number="121" data-line-index="120,120"><span data-line-number-content="">121</span></div><div data-line-type="context" data-column-number="122" data-line-index="121,121"><span data-line-number-content="">122</span></div><div data-line-type="context" data-column-number="123" data-line-index="122,122"><span data-line-number-content="">123</span></div><div data-separator="line-info"><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="207" data-line-index="206,206"><span data-line-number-content="">207</span></div><div data-line-type="context" data-column-number="208" data-line-index="207,207"><span data-line-number-content="">208</span></div><div data-line-type="context" data-column-number="209" data-line-index="208,208"><span data-line-number-content="">209</span></div><div data-line-type="change-addition" data-column-number="210" data-line-index="209,209"><span data-line-number-content="">210</span></div><div data-line-type="change-addition" data-column-number="211" data-line-index="210,210"><span data-line-number-content="">211</span></div><div data-line-type="change-addition" data-column-number="212" data-line-index="211,211"><span data-line-number-content="">212</span></div><div data-line-type="change-addition" data-column-number="213" data-line-index="212,212"><span data-line-number-content="">213</span></div><div data-line-type="change-addition" data-column-number="214" data-line-index="213,213"><span data-line-number-content="">214</span></div><div data-line-type="change-addition" data-column-number="215" data-line-index="214,214"><span data-line-number-content="">215</span></div><div data-line-type="change-addition" 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="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="context" data-column-number="232" data-line-index="231,231"><span data-line-number-content="">232</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">58 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="291" data-line-index="290,290"><span data-line-number-content="">291</span></div><div data-line-type="context" data-column-number="292" data-line-index="291,291"><span data-line-number-content="">292</span></div><div data-line-type="context" data-column-number="293" data-line-index="292,292"><span data-line-number-content="">293</span></div><div data-line-type="change-addition" data-column-number="294" data-line-index="293,293"><span data-line-number-content="">294</span></div><div data-line-type="change-addition" data-column-number="295" data-line-index="294,294"><span data-line-number-content="">295</span></div><div data-line-type="change-addition" data-column-number="296" data-line-index="295,295"><span data-line-number-content="">296</span></div><div data-line-type="change-addition" data-column-number="297" data-line-index="296,296"><span data-line-number-content="">297</span></div><div data-line-type="change-addition" data-column-number="298" data-line-index="297,297"><span data-line-number-content="">298</span></div><div data-line-type="change-addition" data-column-number="299" data-line-index="298,298"><span data-line-number-content="">299</span></div><div data-line-type="context" data-column-number="300" data-line-index="299,299"><span data-line-number-content="">300</span></div><div data-line-type="context" data-column-number="301" data-line-index="300,300"><span data-line-number-content="">301</span></div><div data-line-type="context" data-column-number="302" data-line-index="301,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="">52 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="355" data-line-index="354,354"><span data-line-number-content="">355</span></div><div data-line-type="context" data-column-number="356" data-line-index="355,355"><span data-line-number-content="">356</span></div><div data-line-type="context" data-column-number="357" data-line-index="356,356"><span data-line-number-content="">357</span></div><div data-line-type="change-addition" data-column-number="358" data-line-index="357,357"><span data-line-number-content="">358</span></div><div data-line-type="context" data-column-number="359" data-line-index="358,358"><span data-line-number-content="">359</span></div><div data-line-type="context" data-column-number="360" data-line-index="359,359"><span data-line-number-content="">360</span></div><div data-line-type="context" data-column-number="361" data-line-index="360,360"><span data-line-number-content="">361</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="363" data-line-index="362,362"><span data-line-number-content="">363</span></div><div data-line-type="context" data-column-number="364" data-line-index="363,363"><span data-line-number-content="">364</span></div><div data-line-type="context" data-column-number="365" data-line-index="364,364"><span data-line-number-content="">365</span></div><div data-line-type="change-addition" data-column-number="366" data-line-index="365,365"><span data-line-number-content="">366</span></div><div data-line-type="context" data-column-number="367" data-line-index="366,366"><span data-line-number-content="">367</span></div><div data-line-type="context" data-column-number="368" data-line-index="367,367"><span data-line-number-content="">368</span></div><div data-line-type="change-addition" data-column-number="369" data-line-index="368,368"><span data-line-number-content="">369</span></div><div data-line-type="context" data-column-number="370" data-line-index="369,369"><span data-line-number-content="">370</span></div><div data-line-type="context" data-column-number="371" data-line-index="370,370"><span data-line-number-content="">371</span></div><div data-line-type="context" data-column-number="372" data-line-index="371,371"><span data-line-number-content="">372</span></div></div><div data-content="" style="grid-row: span 87"><div data-separator="line-info" data-separator-first=""><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">17 unmodified lines</span></div></div></div><div data-line="18" data-alt-line="18" data-line-type="context" data-line-index="17,17"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> onFailure: </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">((</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">Error</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"> Void</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)?</span></div><div data-line="19" data-alt-line="19" data-line-type="context" data-line-index="18,18"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> onStateChange: </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"> Void</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)?</span></div><div data-line="20" data-alt-line="20" data-line-type="context" data-line-index="19,19"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> onSubtitleTracksChange: </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"> Void</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)?</span></div><div data-line="21" data-line-type="change-addition" data-line-index="20,20"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> onAudioTracksChange: </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"> Void</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)?</span></div><div data-line="22" data-alt-line="21" data-line-type="context" data-line-index="21,21">
|
|
</div><div data-line="23" data-alt-line="22" data-line-type="context" data-line-index="22,22"><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:#FF678D;--diffs-token-light:#D32A61"> canImport</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">MobileVLCKit</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="24" data-alt-line="23" data-line-type="context" data-line-index="23,23"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> mediaPlayer </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> VLCMediaPlayer</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="">80 unmodified lines</span></div></div></div><div data-line="105" data-alt-line="104" data-line-type="context" data-line-index="104,104"><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="106" data-alt-line="105" data-line-type="context" data-line-index="105,105"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="107" data-alt-line="106" data-line-type="context" data-line-index="106,106">
|
|
</div><div data-line="108" data-line-type="change-addition" data-line-index="107,107"><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> selectAudioTrack</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">id</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="109" data-line-type="change-addition" data-line-index="108,108"><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:#FF678D;--diffs-token-light:#D32A61"> canImport</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">MobileVLCKit</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="110" data-line-type="change-addition" data-line-index="109,109"><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="111" data-line-type="change-addition" data-line-index="110,110"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> logAudioTracks</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"> "before-select-</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="112" data-line-type="change-addition" data-line-index="111,111"><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="113" data-line-type="change-addition" data-line-index="112,112"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> mediaPlayer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">currentAudioTrackIndex</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> id</span></div><div data-line="114" data-line-type="change-addition" data-line-index="113,113"><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="115" data-line-type="change-addition" data-line-index="114,114"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> logAudioTracks</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-select-</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="116" data-line-type="change-addition" data-line-index="115,115"><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="117" data-line-type="change-addition" data-line-index="116,116"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> onAudioTracksChange</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?()</span></div><div data-line="118" data-line-type="change-addition" data-line-index="117,117"><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="119" data-line-type="change-addition" data-line-index="118,118"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="120" data-line-type="change-addition" data-line-index="119,119">
|
|
</div><div data-line="121" data-alt-line="107" data-line-type="context" data-line-index="120,120"><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> selectSubtitleTrack</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">id</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="122" data-alt-line="108" data-line-type="context" data-line-index="121,121"><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:#FF678D;--diffs-token-light:#D32A61"> canImport</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">MobileVLCKit</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="123" data-alt-line="109" data-line-type="context" data-line-index="122,122"><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"> true</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">83 unmodified lines</span></div></div></div><div data-line="207" data-alt-line="193" data-line-type="context" data-line-index="206,206"><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="208" data-alt-line="194" data-line-type="context" data-line-index="207,207"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="209" data-alt-line="195" data-line-type="context" data-line-index="208,208">
|
|
</div><div data-line="210" data-line-type="change-addition" data-line-index="209,209"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> audioTracks: </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">[</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">AudioTrack</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="211" data-line-type="change-addition" data-line-index="210,210"><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:#FF678D;--diffs-token-light:#D32A61"> canImport</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">MobileVLCKit</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="212" data-line-type="change-addition" data-line-index="211,211"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> names </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> mediaPlayer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">audioTrackNames</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> as?</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:#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"> []</span></div><div data-line="213" data-line-type="change-addition" data-line-index="212,212"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> indexes </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> mediaPlayer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">audioTrackIndexes</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><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> []</span></div><div data-line="214" data-line-type="change-addition" data-line-index="213,213"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> zip</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">indexes, names</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">map</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> index, name </span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">in</span></div><div data-line="215" data-line-type="change-addition" data-line-index="214,214"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> AudioTrack</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">id</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> index.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">int32Value</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, name</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> name</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="216" data-line-type="change-addition" data-line-index="215,215"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="217" data-line-type="change-addition" data-line-index="216,216"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">#</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">else</span></div><div data-line="218" data-line-type="change-addition" data-line-index="217,217"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> []</span></div><div data-line="219" data-line-type="change-addition" data-line-index="218,218"><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="220" data-line-type="change-addition" data-line-index="219,219"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="221" data-line-type="change-addition" data-line-index="220,220">
|
|
</div><div data-line="222" data-line-type="change-addition" data-line-index="221,221"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> selectedAudioTrackID: </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="223" data-line-type="change-addition" data-line-index="222,222"><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:#FF678D;--diffs-token-light:#D32A61"> canImport</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">MobileVLCKit</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="224" data-line-type="change-addition" data-line-index="223,223"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> mediaPlayer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">currentAudioTrackIndex</span></div><div data-line="225" data-line-type="change-addition" data-line-index="224,224"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">#</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">else</span></div><div data-line="226" data-line-type="change-addition" data-line-index="225,225"><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> -1</span></div><div data-line="227" data-line-type="change-addition" data-line-index="226,226"><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="228" data-line-type="change-addition" data-line-index="227,227"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="229" data-line-type="change-addition" data-line-index="228,228">
|
|
</div><div data-line="230" data-alt-line="196" 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"> subtitleTracks: </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">[</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">SubtitleTrack</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="231" data-alt-line="197" data-line-type="context" data-line-index="230,230"><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:#FF678D;--diffs-token-light:#D32A61"> canImport</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">MobileVLCKit</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="232" data-alt-line="198" data-line-type="context" 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"> names </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> mediaPlayer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">videoSubTitlesNames</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> as?</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:#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"> []</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">58 unmodified lines</span></div></div></div><div data-line="291" data-alt-line="257" data-line-type="context" data-line-index="290,290"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="292" data-alt-line="258" data-line-type="context" data-line-index="291,291">
|
|
</div><div data-line="293" data-alt-line="259" data-line-type="context" data-line-index="292,292"><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="294" data-line-type="change-addition" data-line-index="293,293"><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"> logAudioTracks</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="295" data-line-type="change-addition" data-line-index="294,294"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> names </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> mediaPlayer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">audioTrackNames</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> as?</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:#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"> []</span></div><div data-line="296" data-line-type="change-addition" data-line-index="295,295"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> indexes </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> mediaPlayer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">audioTrackIndexes</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><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> []</span></div><div data-line="297" data-line-type="change-addition" data-line-index="296,296"><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] audio tracks reason=</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"> names=</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">names</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> indexes=</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">indexes.</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:#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">int32Value</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"> selected=</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">mediaPlayer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">currentAudioTrackIndex</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="298" data-line-type="change-addition" data-line-index="297,297"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="299" data-line-type="change-addition" data-line-index="298,298">
|
|
</div><div data-line="300" data-alt-line="260" data-line-type="context" data-line-index="299,299"><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"> 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:#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="301" data-alt-line="261" data-line-type="context" data-line-index="300,300"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> names </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> mediaPlayer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">videoSubTitlesNames</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> as?</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:#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"> []</span></div><div data-line="302" data-alt-line="262" data-line-type="context" data-line-index="301,301"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> indexes </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> mediaPlayer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">videoSubTitlesIndexes</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><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> []</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">52 unmodified lines</span></div></div></div><div data-line="355" data-alt-line="315" data-line-type="context" data-line-index="354,354"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> reapplyAutoSelectedSubtitleTrackIfNeeded</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:#9D6AFB;--diffs-token-light:#693ACF"> stateName</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">mediaPlayer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">state</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">))</span></div><div data-line="356" data-alt-line="316" data-line-type="context" data-line-index="355,355"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> onReady</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?()</span></div><div data-line="357" data-alt-line="317" data-line-type="context" data-line-index="356,356"><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="358" data-line-type="change-addition" data-line-index="357,357"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> onAudioTracksChange</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?()</span></div><div data-line="359" data-alt-line="318" data-line-type="context" data-line-index="358,358"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> case</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> .error</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">:</span></div><div data-line="360" data-alt-line="319" data-line-type="context" data-line-index="359,359"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> onFailure</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?(</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">NativePlaybackError.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">playbackFailed</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="361" data-alt-line="320" data-line-type="context" data-line-index="360,360"><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-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="363" data-alt-line="322" data-line-type="context" data-line-index="362,362"><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="364" data-alt-line="323" data-line-type="context" data-line-index="363,363"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> selectInitialSubtitleTrackIfNeeded</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="365" data-alt-line="324" data-line-type="context" data-line-index="364,364"><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="366" data-line-type="change-addition" data-line-index="365,365"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> logAudioTracks</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="367" data-alt-line="325" data-line-type="context" data-line-index="366,366"><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="368" data-alt-line="326" data-line-type="context" data-line-index="367,367"><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="369" data-line-type="change-addition" data-line-index="368,368"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> onAudioTracksChange</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?()</span></div><div data-line="370" data-alt-line="327" data-line-type="context" data-line-index="369,369"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> onSubtitleTracksChange</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?()</span></div><div data-line="371" data-alt-line="328" data-line-type="context" data-line-index="370,370"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> default:</span></div><div data-line="372" data-alt-line="329" data-line-type="context" data-line-index="371,371"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> break</span></div></div></code></pre></section>
|
|
<section class="diff-block"><h3>Dreamio/NativePlayerViewController.swift</h3><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/NativePlayerViewController.swift</bdi></div></div><div data-metadata=""><span data-deletions-count="">-7</span><span data-additions-count="">+90</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 189"><div data-separator="line-info" data-separator-first=""><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">8 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="9" data-line-index="8,8"><span data-line-number-content="">9</span></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-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="12" data-line-index="12,12"><span data-line-number-content="">12</span></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-line-type="context" data-column-number="14" data-line-index="14,14"><span data-line-number-content="">14</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="34" data-line-index="34,34"><span data-line-number-content="">34</span></div><div data-line-type="context" data-column-number="35" data-line-index="35,35"><span data-line-number-content="">35</span></div><div data-line-type="context" data-column-number="36" data-line-index="36,36"><span data-line-number-content="">36</span></div><div data-line-type="change-deletion" data-column-number="37" data-line-index="37,37"><span data-line-number-content="">37</span></div><div data-line-type="context" data-column-number="38" data-line-index="39,38"><span data-line-number-content="">38</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="39" data-line-index="43,42"><span data-line-number-content="">39</span></div><div data-line-type="context" data-column-number="40" data-line-index="44,43"><span data-line-number-content="">40</span></div><div data-line-type="context" data-column-number="41" data-line-index="45,44"><span data-line-number-content="">41</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="49" data-line-index="53,52"><span data-line-number-content="">49</span></div><div data-line-type="context" data-column-number="50" data-line-index="54,53"><span data-line-number-content="">50</span></div><div data-line-type="context" data-column-number="51" data-line-index="55,54"><span data-line-number-content="">51</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="52" data-line-index="57,56"><span data-line-number-content="">52</span></div><div data-line-type="context" data-column-number="53" data-line-index="58,57"><span data-line-number-content="">53</span></div><div data-line-type="context" data-column-number="54" data-line-index="59,58"><span data-line-number-content="">54</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">174 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="229" data-line-index="234,233"><span data-line-number-content="">229</span></div><div data-line-type="context" data-column-number="230" data-line-index="235,234"><span data-line-number-content="">230</span></div><div data-line-type="context" data-column-number="231" data-line-index="236,235"><span data-line-number-content="">231</span></div><div data-gutter-buffer="buffer" data-buffer-size="5" style="grid-row: span 5;min-height:calc(5 * 1lh);"></div><div data-line-type="context" data-column-number="232" data-line-index="242,241"><span data-line-number-content="">232</span></div><div data-line-type="context" data-column-number="233" data-line-index="243,242"><span data-line-number-content="">233</span></div><div data-line-type="context" data-column-number="234" data-line-index="244,243"><span data-line-number-content="">234</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="250" data-line-index="260,259"><span data-line-number-content="">250</span></div><div data-line-type="context" data-column-number="251" data-line-index="261,260"><span data-line-number-content="">251</span></div><div data-line-type="context" data-column-number="252" data-line-index="262,261"><span data-line-number-content="">252</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="253" data-line-index="264,263"><span data-line-number-content="">253</span></div><div data-line-type="change-deletion" data-column-number="254" data-line-index="265,264"><span data-line-number-content="">254</span></div><div data-line-type="context" data-column-number="255" data-line-index="267,265"><span data-line-number-content="">255</span></div><div data-line-type="context" data-column-number="256" data-line-index="268,266"><span data-line-number-content="">256</span></div><div data-line-type="context" data-column-number="257" data-line-index="269,267"><span data-line-number-content="">257</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">8 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="266" data-line-index="278,276"><span data-line-number-content="">266</span></div><div data-line-type="context" data-column-number="267" data-line-index="279,277"><span data-line-number-content="">267</span></div><div data-line-type="context" data-column-number="268" data-line-index="280,278"><span data-line-number-content="">268</span></div><div data-line-type="change-deletion" data-column-number="269" data-line-index="281,279"><span data-line-number-content="">269</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="270" data-line-index="290,287"><span data-line-number-content="">270</span></div><div data-line-type="context" data-column-number="271" data-line-index="291,288"><span data-line-number-content="">271</span></div><div data-line-type="context" data-column-number="272" data-line-index="292,289"><span data-line-number-content="">272</span></div><div data-line-type="change-deletion" data-column-number="273" data-line-index="293,290"><span data-line-number-content="">273</span></div><div data-line-type="change-deletion" data-column-number="274" data-line-index="294,291"><span data-line-number-content="">274</span></div><div data-line-type="context" data-column-number="275" data-line-index="297,292"><span data-line-number-content="">275</span></div><div data-line-type="context" data-column-number="276" data-line-index="298,293"><span data-line-number-content="">276</span></div><div data-line-type="context" data-column-number="277" data-line-index="299,294"><span data-line-number-content="">277</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="322" data-line-index="344,339"><span data-line-number-content="">322</span></div><div data-line-type="context" data-column-number="323" data-line-index="345,340"><span data-line-number-content="">323</span></div><div data-line-type="context" data-column-number="324" data-line-index="346,341"><span data-line-number-content="">324</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="325" data-line-index="350,345"><span data-line-number-content="">325</span></div><div data-line-type="context" data-column-number="326" data-line-index="351,346"><span data-line-number-content="">326</span></div><div data-line-type="context" data-column-number="327" data-line-index="352,347"><span data-line-number-content="">327</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">102 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="430" data-line-index="455,450"><span data-line-number-content="">430</span></div><div data-line-type="context" data-column-number="431" data-line-index="456,451"><span data-line-number-content="">431</span></div><div data-line-type="context" data-column-number="432" data-line-index="457,452"><span data-line-number-content="">432</span></div><div data-gutter-buffer="buffer" data-buffer-size="30" style="grid-row: span 30;min-height:calc(30 * 1lh);"></div><div data-line-type="context" data-column-number="433" data-line-index="488,483"><span data-line-number-content="">433</span></div><div data-line-type="context" data-column-number="434" data-line-index="489,484"><span data-line-number-content="">434</span></div><div data-line-type="context" data-column-number="435" data-line-index="490,485"><span data-line-number-content="">435</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">2 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="438" data-line-index="493,488"><span data-line-number-content="">438</span></div><div data-line-type="context" data-column-number="439" data-line-index="494,489"><span data-line-number-content="">439</span></div><div data-line-type="context" data-column-number="440" data-line-index="495,490"><span data-line-number-content="">440</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="441" data-line-index="497,492"><span data-line-number-content="">441</span></div><div data-line-type="context" data-column-number="442" data-line-index="498,493"><span data-line-number-content="">442</span></div><div data-line-type="context" data-column-number="443" data-line-index="499,494"><span data-line-number-content="">443</span></div><div data-line-type="context" data-column-number="444" data-line-index="500,495"><span data-line-number-content="">444</span></div><div data-line-type="context" data-column-number="445" data-line-index="501,496"><span data-line-number-content="">445</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="446" data-line-index="503,498"><span data-line-number-content="">446</span></div><div data-line-type="context" data-column-number="447" data-line-index="504,499"><span data-line-number-content="">447</span></div><div data-line-type="context" data-column-number="448" data-line-index="505,500"><span data-line-number-content="">448</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="452" data-line-index="509,504"><span data-line-number-content="">452</span></div><div data-line-type="context" data-column-number="453" data-line-index="510,505"><span data-line-number-content="">453</span></div><div data-line-type="context" data-column-number="454" data-line-index="511,506"><span data-line-number-content="">454</span></div><div data-gutter-buffer="buffer" data-buffer-size="20" style="grid-row: span 20;min-height:calc(20 * 1lh);"></div><div data-line-type="context" data-column-number="455" data-line-index="532,527"><span data-line-number-content="">455</span></div><div data-line-type="context" data-column-number="456" data-line-index="533,528"><span data-line-number-content="">456</span></div><div data-line-type="context" data-column-number="457" data-line-index="534,529"><span data-line-number-content="">457</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">18 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="476" data-line-index="553,548"><span data-line-number-content="">476</span></div><div data-line-type="context" data-column-number="477" data-line-index="554,549"><span data-line-number-content="">477</span></div><div data-line-type="context" data-column-number="478" data-line-index="555,550"><span data-line-number-content="">478</span></div><div data-gutter-buffer="buffer" data-buffer-size="8" style="grid-row: span 8;min-height:calc(8 * 1lh);"></div><div data-line-type="context" data-column-number="479" data-line-index="564,559"><span data-line-number-content="">479</span></div><div data-line-type="context" data-column-number="480" data-line-index="565,560"><span data-line-number-content="">480</span></div><div data-line-type="context" data-column-number="481" data-line-index="566,561"><span data-line-number-content="">481</span></div><div data-line-type="context" data-column-number="482" data-line-index="567,562"><span data-line-number-content="">482</span></div><div data-line-type="change-deletion" data-column-number="483" data-line-index="568,563"><span data-line-number-content="">483</span></div><div data-line-type="context" data-column-number="484" data-line-index="570,564"><span data-line-number-content="">484</span></div><div data-line-type="context" data-column-number="485" data-line-index="571,565"><span data-line-number-content="">485</span></div><div data-line-type="context" data-column-number="486" data-line-index="572,566"><span data-line-number-content="">486</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">30 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="517" data-line-index="603,597"><span data-line-number-content="">517</span></div><div data-line-type="context" data-column-number="518" data-line-index="604,598"><span data-line-number-content="">518</span></div><div data-line-type="context" data-column-number="519" data-line-index="605,599"><span data-line-number-content="">519</span></div><div data-line-type="change-deletion" data-column-number="520" data-line-index="606,600"><span data-line-number-content="">520</span></div><div data-line-type="context" data-column-number="521" data-line-index="608,601"><span data-line-number-content="">521</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="522" data-line-index="611,604"><span data-line-number-content="">522</span></div><div data-line-type="context" data-column-number="523" data-line-index="612,605"><span data-line-number-content="">523</span></div><div data-line-type="context" data-column-number="524" data-line-index="613,606"><span data-line-number-content="">524</span></div></div><div data-content="" style="grid-row: span 189"><div data-separator="line-info" data-separator-first=""><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">8 unmodified lines</span></div></div></div><div data-line="9" data-alt-line="9" data-line-type="context" data-line-index="8,8"><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"> progressTimer: Timer</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span></div><div data-line="10" data-alt-line="10" data-line-type="context" data-line-index="9,9"><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"> isScrubbing </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="11" data-alt-line="11" data-line-type="context" data-line-index="10,10"><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"> attachedSubtitleURLs: </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">URL</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="12" data-alt-line="13" data-line-type="context" data-line-index="12,12"><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"> captionsMenuSignature: </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="13" data-alt-line="14" data-line-type="context" data-line-index="13,13"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> onDismiss: </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"> Void</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)?</span></div><div data-line="14" data-alt-line="15" data-line-type="context" data-line-index="14,14">
|
|
</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="34" data-alt-line="35" data-line-type="context" data-line-index="34,34"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> controlsContainer: UIVisualEffectView </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="35" data-alt-line="36" data-line-type="context" data-line-index="35,35"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIVisualEffectView</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">effect</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIBlurEffect</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">style</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">systemUltraThinMaterialDark</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">))</span></div><div data-line="36" data-alt-line="37" data-line-type="context" data-line-index="36,36"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">translatesAutoresizingMaskIntoConstraints</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="37" data-line-type="change-deletion" data-line-index="37,37"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">layer</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">cornerRadius</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> </span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">16</span></span></div><div data-line="38" data-alt-line="39" data-line-type="context" data-line-index="39,38"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">clipsToBounds</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-content-buffer="" data-buffer-size="3" style="grid-row: span 3;min-height:calc(3 * 1lh)"></div><div data-line="39" data-alt-line="43" data-line-type="context" data-line-index="43,42"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view</span></div><div data-line="40" data-alt-line="44" data-line-type="context" data-line-index="44,43"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }()</span></div><div data-line="41" data-alt-line="45" data-line-type="context" data-line-index="45,44">
|
|
</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="49" data-alt-line="53" data-line-type="context" data-line-index="53,52"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> playPauseButton </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> NativePlayerViewController.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">iconButton</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">systemName</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "pause.fill"</span><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"> "Play or Pause"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="50" data-alt-line="54" data-line-type="context" data-line-index="54,53"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> jumpBackButton </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> NativePlayerViewController.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">iconButton</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">systemName</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "gobackward.15"</span><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"> "Jump Back 15 Seconds"</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="55,54"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> jumpForwardButton </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> NativePlayerViewController.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">iconButton</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">systemName</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "goforward.15"</span><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"> "Jump Forward 15 Seconds"</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="52" data-alt-line="57" data-line-type="context" data-line-index="57,56"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> captionsButton </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> NativePlayerViewController.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">iconButton</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">systemName</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "captions.bubble"</span><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"> "Captions"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="53" data-alt-line="58" data-line-type="context" data-line-index="58,57">
|
|
</div><div data-line="54" data-alt-line="59" data-line-type="context" data-line-index="59,58"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> elapsedLabel: UILabel </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="">174 unmodified lines</span></div></div></div><div data-line="229" data-alt-line="234" data-line-type="context" data-line-index="234,233"><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">refreshControls</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="235,234"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="231" data-alt-line="236" data-line-type="context" data-line-index="236,235"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-content-buffer="" data-buffer-size="5" style="grid-row: span 5;min-height:calc(5 * 1lh)"></div><div data-line="232" data-alt-line="242" data-line-type="context" data-line-index="242,241"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="233" data-alt-line="243" data-line-type="context" data-line-index="243,242">
|
|
</div><div data-line="234" data-alt-line="244" data-line-type="context" data-line-index="244,243"><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"> startStartupTimer</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="">15 unmodified lines</span></div></div></div><div data-line="250" data-alt-line="260" data-line-type="context" data-line-index="260,259"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> playPauseButton.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addTarget</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">self</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, action</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> #selector</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">togglePlayPause</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:#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">touchUpInside</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="251" data-alt-line="261" data-line-type="context" data-line-index="261,260"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> jumpBackButton.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addTarget</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">self</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, action</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> #selector</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">jumpBack</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:#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">touchUpInside</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="252" data-alt-line="262" data-line-type="context" data-line-index="262,261"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> jumpForwardButton.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addTarget</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">self</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, action</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> #selector</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">jumpForward</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:#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">touchUpInside</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="253" data-alt-line="264" data-line-type="context" data-line-index="264,263"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> captionsButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">showsMenuAsPrimaryAction</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="254" data-line-type="change-deletion" data-line-index="265,264"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> playPauseButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">layer</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">cornerRadius</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> </span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">21</span></span></div><div data-line="255" data-alt-line="266" data-line-type="context" data-line-index="267,265"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> scrubber.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addTarget</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">self</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, action</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> #selector</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">scrubbingStarted</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:#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">touchDown</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="256" data-alt-line="267" data-line-type="context" data-line-index="268,266"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> scrubber.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addTarget</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">self</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, action</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> #selector</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">scrubberChanged</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:#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">valueChanged</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="257" data-alt-line="268" data-line-type="context" data-line-index="269,267"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> scrubber.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addTarget</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">self</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, action</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> #selector</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">scrubbingEnded</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:#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">touchUpInside</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">touchUpOutside</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">touchCancel</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">]</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="">8 unmodified lines</span></div></div></div><div data-line="266" data-alt-line="277" data-line-type="context" data-line-index="278,276"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> timeAndScrubRow.alignment </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">center</span></div><div data-line="267" data-alt-line="278" data-line-type="context" data-line-index="279,277"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> timeAndScrubRow.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">spacing</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 8</span></div><div data-line="268" data-alt-line="279" data-line-type="context" data-line-index="280,278">
|
|
</div><div data-line="269" data-line-type="change-deletion" data-line-index="281,279"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><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">controlRow</span></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:#9D6AFB;--diffs-token-light:#693ACF"> UIStackView</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">arrangedSubviews</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> [jumpBackButton, playPauseButton, jumpForwardButton</span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, captionsButton</span></span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">]</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-content-buffer="" data-buffer-size="7" style="grid-row: span 7;min-height:calc(7 * 1lh)"></div><div data-line="270" data-alt-line="288" data-line-type="context" data-line-index="290,287"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> controlRow.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">translatesAutoresizingMaskIntoConstraints</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="271" data-alt-line="289" data-line-type="context" data-line-index="291,288"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> controlRow.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">axis</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">horizontal</span></div><div data-line="272" data-alt-line="290" data-line-type="context" data-line-index="292,289"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> controlRow.alignment </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">center</span></div><div data-line="273" data-line-type="change-deletion" data-line-index="293,290"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> controlRow.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">distribution</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:#FFA359;--diffs-token-light:#D47628">equalSpacing</span></span></div><div data-line="274" data-line-type="change-deletion" data-line-index="294,291"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> controlRow.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">spacing</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> </span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">14</span></span></div><div data-line="275" data-alt-line="293" data-line-type="context" data-line-index="297,292">
|
|
</div><div data-line="276" data-alt-line="294" data-line-type="context" data-line-index="298,293"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> stack </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIStackView</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">arrangedSubviews</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> [timeAndScrubRow, controlRow]</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="277" data-alt-line="295" data-line-type="context" data-line-index="299,294"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> stack.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">translatesAutoresizingMaskIntoConstraints</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-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="322" data-alt-line="340" data-line-type="context" data-line-index="344,339"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> playPauseButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">heightAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 42</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="323" data-alt-line="341" data-line-type="context" data-line-index="345,340"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> jumpForwardButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">widthAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 36</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="324" data-alt-line="342" data-line-type="context" data-line-index="346,341"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> jumpForwardButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">heightAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 36</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="325" data-alt-line="346" data-line-type="context" data-line-index="350,345"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> captionsButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">widthAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 36</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="326" data-alt-line="347" data-line-type="context" data-line-index="351,346"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> captionsButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">heightAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 36</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="327" data-alt-line="348" data-line-type="context" data-line-index="352,347"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> ])</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">102 unmodified lines</span></div></div></div><div data-line="430" data-alt-line="451" data-line-type="context" data-line-index="455,450"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIMenu</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">title</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "Captions"</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, children</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> trackActions </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">+</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> [delayActions]</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="431" data-alt-line="452" data-line-type="context" data-line-index="456,451"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="432" data-alt-line="453" data-line-type="context" data-line-index="457,452">
|
|
</div><div data-content-buffer="" data-buffer-size="30" style="grid-row: span 30;min-height:calc(30 * 1lh)"></div><div data-line="433" data-alt-line="484" data-line-type="context" data-line-index="488,483"><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"> startProgressUpdates</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="434" data-alt-line="485" data-line-type="context" data-line-index="489,484"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> progressTimer</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">invalidate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="435" data-alt-line="486" data-line-type="context" data-line-index="490,485"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> progressTimer </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> Timer.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">scheduledTimer</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">withTimeInterval</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0.5</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, repeats</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> true</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="">2 unmodified lines</span></div></div></div><div data-line="438" data-alt-line="489" data-line-type="context" data-line-index="493,488"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="439" data-alt-line="490" data-line-type="context" data-line-index="494,489">
|
|
</div><div data-line="440" data-alt-line="491" data-line-type="context" data-line-index="495,490"><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"> refreshControls</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-content-buffer="" data-buffer-size="1" style="grid-row: span 1;min-height:calc(1 * 1lh)"></div><div data-line="441" data-alt-line="493" data-line-type="context" data-line-index="497,492"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> subtitleTracks </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> backend.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">subtitleTracks</span></div><div data-line="442" data-alt-line="494" data-line-type="context" data-line-index="498,493"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> playPauseButton.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">setImage</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">UIImage</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">systemName</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> backend.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isPlaying</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> ?</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "pause.fill"</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> :</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "play.fill"</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:#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">normal</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="443" data-alt-line="495" data-line-type="context" data-line-index="499,494"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> scrubber.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isEnabled</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> backend.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isSeekable</span></div><div data-line="444" data-alt-line="496" data-line-type="context" data-line-index="500,495"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> jumpBackButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isEnabled</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> backend.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isSeekable</span></div><div data-line="445" data-alt-line="497" data-line-type="context" data-line-index="501,496"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> jumpForwardButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isEnabled</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> backend.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isSeekable</span></div><div data-content-buffer="" data-buffer-size="1" style="grid-row: span 1;min-height:calc(1 * 1lh)"></div><div data-line="446" data-alt-line="499" data-line-type="context" data-line-index="503,498"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> updateCaptionsMenuIfNeeded</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">subtitleTracks</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> subtitleTracks</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="447" data-alt-line="500" data-line-type="context" data-line-index="504,499"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> elapsedLabel.text </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> PlaybackTimeFormatter.</span><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:#9D6AFB;--diffs-token-light:#693ACF">for</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> backend.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">currentTime</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="448" data-alt-line="501" data-line-type="context" data-line-index="505,500"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> remainingLabel.text </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">PlaybackTimeFormatter.</span><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:#9D6AFB;--diffs-token-light:#693ACF">for</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> backend.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">remainingTime</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></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="452" data-alt-line="505" data-line-type="context" data-line-index="509,504"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> [scrubber, jumpBackButton, jumpForwardButton].</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:#FFAB16;--diffs-token-light:#D5901C"> $0</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">alpha</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> backend.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isSeekable</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:#FF678D;--diffs-token-light:#D32A61"> :</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0.45</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="453" data-alt-line="506" data-line-type="context" data-line-index="510,505"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="454" data-alt-line="507" data-line-type="context" data-line-index="511,506">
|
|
</div><div data-content-buffer="" data-buffer-size="20" style="grid-row: span 20;min-height:calc(20 * 1lh)"></div><div data-line="455" data-alt-line="528" data-line-type="context" data-line-index="532,527"><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"> updateCaptionsMenuIfNeeded</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">subtitleTracks</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">SubtitleTrack</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="456" data-alt-line="529" data-line-type="context" data-line-index="533,528"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> selectedTrackID </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> backend.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">selectedSubtitleTrackID</span></div><div data-line="457" data-alt-line="530" data-line-type="context" data-line-index="534,529"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> signature </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> captionsMenuSignatureValue</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="">18 unmodified lines</span></div></div></div><div data-line="476" data-alt-line="549" data-line-type="context" data-line-index="553,548"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> tracks</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">:</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> [SubtitleTrack],</span></div><div data-line="477" data-alt-line="550" data-line-type="context" data-line-index="554,549"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> selectedTrackID</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">:</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> Int32</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="478" data-alt-line="551" data-line-type="context" data-line-index="555,550"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> delay</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">:</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> TimeInterval</span></div><div data-content-buffer="" data-buffer-size="8" style="grid-row: span 8;min-height:calc(8 * 1lh)"></div><div data-line="479" data-alt-line="560" data-line-type="context" data-line-index="564,559"><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></div><div data-line="480" data-alt-line="561" data-line-type="context" data-line-index="565,560"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> trackSignature </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> tracks</span></div><div data-line="481" data-alt-line="562" data-line-type="context" data-line-index="566,561"><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">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:#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">name</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="482" data-alt-line="563" data-line-type="context" data-line-index="567,562"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> .</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">joined</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">separator</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:#636363;--diffs-token-light:#636363">)</span></div><div data-line="483" data-line-type="change-deletion" data-line-index="568,563"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</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">trackSignature</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">#selected=</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">selectedTrackID</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">#delay=</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"> "</span></span><span data-diff-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></div><div data-line="484" data-alt-line="565" data-line-type="context" data-line-index="570,564"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="485" data-alt-line="566" data-line-type="context" data-line-index="571,565">
|
|
</div><div data-line="486" data-alt-line="567" data-line-type="context" data-line-index="572,566"><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"> revealControls</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="">30 unmodified lines</span></div></div></div><div data-line="517" data-alt-line="598" data-line-type="context" data-line-index="603,597"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">translatesAutoresizingMaskIntoConstraints</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="518" data-alt-line="599" data-line-type="context" data-line-index="604,598"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">setImage</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">UIImage</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">systemName</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> systemName</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:#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">normal</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="519" data-alt-line="600" data-line-type="context" data-line-index="605,599"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">tintColor</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">white</span></div><div data-line="520" data-line-type="change-deletion" data-line-index="606,600"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">backgroundColor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIColor.</span><span data-diff-span=""><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">black</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">withAlphaComponent</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 data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">35</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="521" data-alt-line="602" data-line-type="context" data-line-index="608,601"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">layer</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">cornerRadius</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 18</span></div><div data-content-buffer="" data-buffer-size="2" style="grid-row: span 2;min-height:calc(2 * 1lh)"></div><div data-line="522" data-alt-line="605" data-line-type="context" data-line-index="611,604"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">accessibilityLabel</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label</span></div><div data-line="523" data-alt-line="606" data-line-type="context" data-line-index="612,605"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button</span></div><div data-line="524" data-alt-line="607" data-line-type="context" data-line-index="613,606"><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 189"><div data-separator="line-info" data-separator-first=""><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">8 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="9" data-line-index="8,8"><span data-line-number-content="">9</span></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="change-addition" data-column-number="12" data-line-index="11,11"><span data-line-number-content="">12</span></div><div data-line-type="context" 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="context" data-column-number="15" data-line-index="14,14"><span data-line-number-content="">15</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="35" data-line-index="34,34"><span data-line-number-content="">35</span></div><div data-line-type="context" data-column-number="36" data-line-index="35,35"><span data-line-number-content="">36</span></div><div data-line-type="context" data-column-number="37" data-line-index="36,36"><span data-line-number-content="">37</span></div><div data-line-type="change-addition" data-column-number="38" data-line-index="38,37"><span data-line-number-content="">38</span></div><div data-line-type="context" data-column-number="39" data-line-index="39,38"><span data-line-number-content="">39</span></div><div data-line-type="change-addition" data-column-number="40" data-line-index="40,39"><span data-line-number-content="">40</span></div><div data-line-type="change-addition" data-column-number="41" data-line-index="41,40"><span data-line-number-content="">41</span></div><div data-line-type="change-addition" data-column-number="42" data-line-index="42,41"><span data-line-number-content="">42</span></div><div data-line-type="context" data-column-number="43" data-line-index="43,42"><span data-line-number-content="">43</span></div><div data-line-type="context" data-column-number="44" data-line-index="44,43"><span data-line-number-content="">44</span></div><div data-line-type="context" data-column-number="45" data-line-index="45,44"><span data-line-number-content="">45</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="53" data-line-index="53,52"><span data-line-number-content="">53</span></div><div data-line-type="context" data-column-number="54" data-line-index="54,53"><span data-line-number-content="">54</span></div><div data-line-type="context" data-column-number="55" data-line-index="55,54"><span data-line-number-content="">55</span></div><div data-line-type="change-addition" data-column-number="56" data-line-index="56,55"><span data-line-number-content="">56</span></div><div data-line-type="context" data-column-number="57" data-line-index="57,56"><span data-line-number-content="">57</span></div><div data-line-type="context" data-column-number="58" data-line-index="58,57"><span data-line-number-content="">58</span></div><div data-line-type="context" data-column-number="59" data-line-index="59,58"><span data-line-number-content="">59</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">174 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="234" data-line-index="234,233"><span data-line-number-content="">234</span></div><div data-line-type="context" data-column-number="235" data-line-index="235,234"><span data-line-number-content="">235</span></div><div data-line-type="context" data-column-number="236" data-line-index="236,235"><span data-line-number-content="">236</span></div><div data-line-type="change-addition" data-column-number="237" data-line-index="237,236"><span data-line-number-content="">237</span></div><div data-line-type="change-addition" data-column-number="238" data-line-index="238,237"><span data-line-number-content="">238</span></div><div data-line-type="change-addition" data-column-number="239" data-line-index="239,238"><span data-line-number-content="">239</span></div><div data-line-type="change-addition" data-column-number="240" data-line-index="240,239"><span data-line-number-content="">240</span></div><div data-line-type="change-addition" data-column-number="241" data-line-index="241,240"><span data-line-number-content="">241</span></div><div data-line-type="context" data-column-number="242" data-line-index="242,241"><span data-line-number-content="">242</span></div><div data-line-type="context" data-column-number="243" data-line-index="243,242"><span data-line-number-content="">243</span></div><div data-line-type="context" data-column-number="244" data-line-index="244,243"><span data-line-number-content="">244</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="260" data-line-index="260,259"><span data-line-number-content="">260</span></div><div data-line-type="context" data-column-number="261" data-line-index="261,260"><span data-line-number-content="">261</span></div><div data-line-type="context" data-column-number="262" data-line-index="262,261"><span data-line-number-content="">262</span></div><div data-line-type="change-addition" data-column-number="263" data-line-index="263,262"><span data-line-number-content="">263</span></div><div data-line-type="context" data-column-number="264" data-line-index="264,263"><span data-line-number-content="">264</span></div><div data-line-type="change-addition" data-column-number="265" data-line-index="266,264"><span data-line-number-content="">265</span></div><div data-line-type="context" data-column-number="266" data-line-index="267,265"><span data-line-number-content="">266</span></div><div data-line-type="context" data-column-number="267" data-line-index="268,266"><span data-line-number-content="">267</span></div><div data-line-type="context" data-column-number="268" data-line-index="269,267"><span data-line-number-content="">268</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">8 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="277" data-line-index="278,276"><span data-line-number-content="">277</span></div><div data-line-type="context" data-column-number="278" data-line-index="279,277"><span data-line-number-content="">278</span></div><div data-line-type="context" data-column-number="279" data-line-index="280,278"><span data-line-number-content="">279</span></div><div data-line-type="change-addition" data-column-number="280" data-line-index="282,279"><span data-line-number-content="">280</span></div><div data-line-type="change-addition" data-column-number="281" data-line-index="283,280"><span data-line-number-content="">281</span></div><div data-line-type="change-addition" data-column-number="282" data-line-index="284,281"><span data-line-number-content="">282</span></div><div data-line-type="change-addition" data-column-number="283" data-line-index="285,282"><span data-line-number-content="">283</span></div><div data-line-type="change-addition" data-column-number="284" data-line-index="286,283"><span data-line-number-content="">284</span></div><div data-line-type="change-addition" data-column-number="285" data-line-index="287,284"><span data-line-number-content="">285</span></div><div data-line-type="change-addition" data-column-number="286" data-line-index="288,285"><span data-line-number-content="">286</span></div><div data-line-type="change-addition" data-column-number="287" data-line-index="289,286"><span data-line-number-content="">287</span></div><div data-line-type="context" data-column-number="288" data-line-index="290,287"><span data-line-number-content="">288</span></div><div data-line-type="context" data-column-number="289" data-line-index="291,288"><span data-line-number-content="">289</span></div><div data-line-type="context" data-column-number="290" data-line-index="292,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="context" data-column-number="293" data-line-index="297,292"><span data-line-number-content="">293</span></div><div data-line-type="context" data-column-number="294" data-line-index="298,293"><span data-line-number-content="">294</span></div><div data-line-type="context" data-column-number="295" data-line-index="299,294"><span data-line-number-content="">295</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="340" data-line-index="344,339"><span data-line-number-content="">340</span></div><div data-line-type="context" data-column-number="341" data-line-index="345,340"><span data-line-number-content="">341</span></div><div data-line-type="context" data-column-number="342" data-line-index="346,341"><span data-line-number-content="">342</span></div><div data-line-type="change-addition" data-column-number="343" data-line-index="347,342"><span data-line-number-content="">343</span></div><div data-line-type="change-addition" data-column-number="344" data-line-index="348,343"><span data-line-number-content="">344</span></div><div data-line-type="change-addition" data-column-number="345" data-line-index="349,344"><span data-line-number-content="">345</span></div><div data-line-type="context" data-column-number="346" data-line-index="350,345"><span data-line-number-content="">346</span></div><div data-line-type="context" data-column-number="347" data-line-index="351,346"><span data-line-number-content="">347</span></div><div data-line-type="context" data-column-number="348" data-line-index="352,347"><span data-line-number-content="">348</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">102 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="451" data-line-index="455,450"><span data-line-number-content="">451</span></div><div data-line-type="context" data-column-number="452" data-line-index="456,451"><span data-line-number-content="">452</span></div><div data-line-type="context" data-column-number="453" data-line-index="457,452"><span data-line-number-content="">453</span></div><div data-line-type="change-addition" data-column-number="454" data-line-index="458,453"><span data-line-number-content="">454</span></div><div data-line-type="change-addition" data-column-number="455" data-line-index="459,454"><span data-line-number-content="">455</span></div><div data-line-type="change-addition" data-column-number="456" data-line-index="460,455"><span data-line-number-content="">456</span></div><div data-line-type="change-addition" data-column-number="457" data-line-index="461,456"><span data-line-number-content="">457</span></div><div data-line-type="change-addition" data-column-number="458" data-line-index="462,457"><span data-line-number-content="">458</span></div><div data-line-type="change-addition" data-column-number="459" data-line-index="463,458"><span data-line-number-content="">459</span></div><div data-line-type="change-addition" data-column-number="460" data-line-index="464,459"><span data-line-number-content="">460</span></div><div data-line-type="change-addition" data-column-number="461" data-line-index="465,460"><span data-line-number-content="">461</span></div><div data-line-type="change-addition" data-column-number="462" data-line-index="466,461"><span data-line-number-content="">462</span></div><div data-line-type="change-addition" data-column-number="463" data-line-index="467,462"><span data-line-number-content="">463</span></div><div data-line-type="change-addition" data-column-number="464" data-line-index="468,463"><span data-line-number-content="">464</span></div><div data-line-type="change-addition" data-column-number="465" data-line-index="469,464"><span data-line-number-content="">465</span></div><div data-line-type="change-addition" data-column-number="466" data-line-index="470,465"><span data-line-number-content="">466</span></div><div data-line-type="change-addition" data-column-number="467" data-line-index="471,466"><span data-line-number-content="">467</span></div><div data-line-type="change-addition" data-column-number="468" data-line-index="472,467"><span data-line-number-content="">468</span></div><div data-line-type="change-addition" data-column-number="469" data-line-index="473,468"><span data-line-number-content="">469</span></div><div data-line-type="change-addition" data-column-number="470" data-line-index="474,469"><span data-line-number-content="">470</span></div><div data-line-type="change-addition" data-column-number="471" data-line-index="475,470"><span data-line-number-content="">471</span></div><div data-line-type="change-addition" data-column-number="472" data-line-index="476,471"><span data-line-number-content="">472</span></div><div data-line-type="change-addition" data-column-number="473" data-line-index="477,472"><span data-line-number-content="">473</span></div><div data-line-type="change-addition" data-column-number="474" data-line-index="478,473"><span data-line-number-content="">474</span></div><div data-line-type="change-addition" data-column-number="475" data-line-index="479,474"><span data-line-number-content="">475</span></div><div data-line-type="change-addition" data-column-number="476" data-line-index="480,475"><span data-line-number-content="">476</span></div><div data-line-type="change-addition" data-column-number="477" data-line-index="481,476"><span data-line-number-content="">477</span></div><div data-line-type="change-addition" data-column-number="478" data-line-index="482,477"><span data-line-number-content="">478</span></div><div data-line-type="change-addition" data-column-number="479" data-line-index="483,478"><span data-line-number-content="">479</span></div><div data-line-type="change-addition" data-column-number="480" data-line-index="484,479"><span data-line-number-content="">480</span></div><div data-line-type="change-addition" data-column-number="481" data-line-index="485,480"><span data-line-number-content="">481</span></div><div data-line-type="change-addition" data-column-number="482" data-line-index="486,481"><span data-line-number-content="">482</span></div><div data-line-type="change-addition" data-column-number="483" data-line-index="487,482"><span data-line-number-content="">483</span></div><div data-line-type="context" data-column-number="484" data-line-index="488,483"><span data-line-number-content="">484</span></div><div data-line-type="context" data-column-number="485" data-line-index="489,484"><span data-line-number-content="">485</span></div><div data-line-type="context" data-column-number="486" data-line-index="490,485"><span data-line-number-content="">486</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">2 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="489" data-line-index="493,488"><span data-line-number-content="">489</span></div><div data-line-type="context" data-column-number="490" data-line-index="494,489"><span data-line-number-content="">490</span></div><div data-line-type="context" data-column-number="491" data-line-index="495,490"><span data-line-number-content="">491</span></div><div data-line-type="change-addition" data-column-number="492" data-line-index="496,491"><span data-line-number-content="">492</span></div><div data-line-type="context" data-column-number="493" data-line-index="497,492"><span data-line-number-content="">493</span></div><div data-line-type="context" data-column-number="494" data-line-index="498,493"><span data-line-number-content="">494</span></div><div data-line-type="context" data-column-number="495" data-line-index="499,494"><span data-line-number-content="">495</span></div><div data-line-type="context" data-column-number="496" data-line-index="500,495"><span data-line-number-content="">496</span></div><div data-line-type="context" data-column-number="497" data-line-index="501,496"><span data-line-number-content="">497</span></div><div data-line-type="change-addition" data-column-number="498" data-line-index="502,497"><span data-line-number-content="">498</span></div><div data-line-type="context" data-column-number="499" data-line-index="503,498"><span data-line-number-content="">499</span></div><div data-line-type="context" data-column-number="500" data-line-index="504,499"><span data-line-number-content="">500</span></div><div data-line-type="context" data-column-number="501" data-line-index="505,500"><span data-line-number-content="">501</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="505" data-line-index="509,504"><span data-line-number-content="">505</span></div><div data-line-type="context" data-column-number="506" data-line-index="510,505"><span data-line-number-content="">506</span></div><div data-line-type="context" data-column-number="507" data-line-index="511,506"><span data-line-number-content="">507</span></div><div data-line-type="change-addition" data-column-number="508" data-line-index="512,507"><span data-line-number-content="">508</span></div><div data-line-type="change-addition" data-column-number="509" data-line-index="513,508"><span data-line-number-content="">509</span></div><div data-line-type="change-addition" data-column-number="510" data-line-index="514,509"><span data-line-number-content="">510</span></div><div data-line-type="change-addition" data-column-number="511" data-line-index="515,510"><span data-line-number-content="">511</span></div><div data-line-type="change-addition" data-column-number="512" data-line-index="516,511"><span data-line-number-content="">512</span></div><div data-line-type="change-addition" data-column-number="513" data-line-index="517,512"><span data-line-number-content="">513</span></div><div data-line-type="change-addition" data-column-number="514" data-line-index="518,513"><span data-line-number-content="">514</span></div><div data-line-type="change-addition" data-column-number="515" data-line-index="519,514"><span data-line-number-content="">515</span></div><div data-line-type="change-addition" data-column-number="516" data-line-index="520,515"><span data-line-number-content="">516</span></div><div data-line-type="change-addition" data-column-number="517" data-line-index="521,516"><span data-line-number-content="">517</span></div><div data-line-type="change-addition" data-column-number="518" data-line-index="522,517"><span data-line-number-content="">518</span></div><div data-line-type="change-addition" data-column-number="519" data-line-index="523,518"><span data-line-number-content="">519</span></div><div data-line-type="change-addition" data-column-number="520" data-line-index="524,519"><span data-line-number-content="">520</span></div><div data-line-type="change-addition" data-column-number="521" data-line-index="525,520"><span data-line-number-content="">521</span></div><div data-line-type="change-addition" data-column-number="522" data-line-index="526,521"><span data-line-number-content="">522</span></div><div data-line-type="change-addition" data-column-number="523" data-line-index="527,522"><span data-line-number-content="">523</span></div><div data-line-type="change-addition" data-column-number="524" data-line-index="528,523"><span data-line-number-content="">524</span></div><div data-line-type="change-addition" data-column-number="525" data-line-index="529,524"><span data-line-number-content="">525</span></div><div data-line-type="change-addition" data-column-number="526" data-line-index="530,525"><span data-line-number-content="">526</span></div><div data-line-type="change-addition" data-column-number="527" data-line-index="531,526"><span data-line-number-content="">527</span></div><div data-line-type="context" data-column-number="528" data-line-index="532,527"><span data-line-number-content="">528</span></div><div data-line-type="context" data-column-number="529" data-line-index="533,528"><span data-line-number-content="">529</span></div><div data-line-type="context" data-column-number="530" data-line-index="534,529"><span data-line-number-content="">530</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">18 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="549" data-line-index="553,548"><span data-line-number-content="">549</span></div><div data-line-type="context" data-column-number="550" data-line-index="554,549"><span data-line-number-content="">550</span></div><div data-line-type="context" data-column-number="551" data-line-index="555,550"><span data-line-number-content="">551</span></div><div data-line-type="change-addition" data-column-number="552" data-line-index="556,551"><span data-line-number-content="">552</span></div><div data-line-type="change-addition" data-column-number="553" data-line-index="557,552"><span data-line-number-content="">553</span></div><div data-line-type="change-addition" data-column-number="554" data-line-index="558,553"><span data-line-number-content="">554</span></div><div data-line-type="change-addition" data-column-number="555" data-line-index="559,554"><span data-line-number-content="">555</span></div><div data-line-type="change-addition" data-column-number="556" data-line-index="560,555"><span data-line-number-content="">556</span></div><div data-line-type="change-addition" data-column-number="557" data-line-index="561,556"><span data-line-number-content="">557</span></div><div data-line-type="change-addition" data-column-number="558" data-line-index="562,557"><span data-line-number-content="">558</span></div><div data-line-type="change-addition" data-column-number="559" data-line-index="563,558"><span data-line-number-content="">559</span></div><div data-line-type="context" data-column-number="560" data-line-index="564,559"><span data-line-number-content="">560</span></div><div data-line-type="context" data-column-number="561" data-line-index="565,560"><span data-line-number-content="">561</span></div><div data-line-type="context" data-column-number="562" data-line-index="566,561"><span data-line-number-content="">562</span></div><div data-line-type="context" data-column-number="563" data-line-index="567,562"><span data-line-number-content="">563</span></div><div data-line-type="change-addition" data-column-number="564" data-line-index="569,563"><span data-line-number-content="">564</span></div><div data-line-type="context" data-column-number="565" data-line-index="570,564"><span data-line-number-content="">565</span></div><div data-line-type="context" data-column-number="566" data-line-index="571,565"><span data-line-number-content="">566</span></div><div data-line-type="context" data-column-number="567" data-line-index="572,566"><span data-line-number-content="">567</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">30 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="598" data-line-index="603,597"><span data-line-number-content="">598</span></div><div data-line-type="context" data-column-number="599" data-line-index="604,598"><span data-line-number-content="">599</span></div><div data-line-type="context" data-column-number="600" data-line-index="605,599"><span data-line-number-content="">600</span></div><div data-line-type="change-addition" data-column-number="601" data-line-index="607,600"><span data-line-number-content="">601</span></div><div data-line-type="context" data-column-number="602" data-line-index="608,601"><span data-line-number-content="">602</span></div><div data-line-type="change-addition" data-column-number="603" data-line-index="609,602"><span data-line-number-content="">603</span></div><div data-line-type="change-addition" data-column-number="604" data-line-index="610,603"><span data-line-number-content="">604</span></div><div data-line-type="context" data-column-number="605" data-line-index="611,604"><span data-line-number-content="">605</span></div><div data-line-type="context" data-column-number="606" data-line-index="612,605"><span data-line-number-content="">606</span></div><div data-line-type="context" data-column-number="607" data-line-index="613,606"><span data-line-number-content="">607</span></div></div><div data-content="" style="grid-row: span 189"><div data-separator="line-info" data-separator-first=""><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">8 unmodified lines</span></div></div></div><div data-line="9" data-alt-line="9" data-line-type="context" data-line-index="8,8"><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"> progressTimer: Timer</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span></div><div data-line="10" data-alt-line="10" data-line-type="context" data-line-index="9,9"><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"> isScrubbing </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="11" data-alt-line="11" data-line-type="context" data-line-index="10,10"><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"> attachedSubtitleURLs: </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">URL</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">></span></div><div data-line="12" data-line-type="change-addition" data-line-index="11,11"><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"> audioMenuSignature: </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="13" data-alt-line="12" data-line-type="context" data-line-index="12,12"><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"> captionsMenuSignature: </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="14" data-alt-line="13" data-line-type="context" data-line-index="13,13"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> onDismiss: </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"> Void</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)?</span></div><div data-line="15" data-alt-line="14" data-line-type="context" data-line-index="14,14">
|
|
</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="35" data-alt-line="34" data-line-type="context" data-line-index="34,34"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> controlsContainer: UIVisualEffectView </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="36" data-alt-line="35" data-line-type="context" data-line-index="35,35"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIVisualEffectView</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">effect</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIBlurEffect</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">style</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">systemUltraThinMaterialDark</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">))</span></div><div data-line="37" data-alt-line="36" data-line-type="context" data-line-index="36,36"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">translatesAutoresizingMaskIntoConstraints</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="38" data-line-type="change-addition" data-line-index="38,37"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">layer</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">cornerRadius</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> </span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">22</span></span></div><div data-line="39" data-alt-line="38" data-line-type="context" data-line-index="39,38"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">clipsToBounds</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="40" data-line-type="change-addition" data-line-index="40,39"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">backgroundColor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIColor.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">white</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">withAlphaComponent</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">0.08</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="41" data-line-type="change-addition" data-line-index="41,40"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">layer</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">borderColor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIColor.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">white</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">withAlphaComponent</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">0.18</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">cgColor</span></div><div data-line="42" data-line-type="change-addition" data-line-index="42,41"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">layer</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">borderWidth</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="43" data-alt-line="39" data-line-type="context" data-line-index="43,42"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view</span></div><div data-line="44" data-alt-line="40" data-line-type="context" data-line-index="44,43"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }()</span></div><div data-line="45" data-alt-line="41" data-line-type="context" data-line-index="45,44">
|
|
</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="53" data-alt-line="49" data-line-type="context" data-line-index="53,52"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> playPauseButton </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> NativePlayerViewController.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">iconButton</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">systemName</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "pause.fill"</span><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"> "Play or Pause"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="54" data-alt-line="50" data-line-type="context" data-line-index="54,53"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> jumpBackButton </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> NativePlayerViewController.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">iconButton</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">systemName</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "gobackward.15"</span><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"> "Jump Back 15 Seconds"</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="55,54"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> jumpForwardButton </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> NativePlayerViewController.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">iconButton</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">systemName</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "goforward.15"</span><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"> "Jump Forward 15 Seconds"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="56" data-line-type="change-addition" data-line-index="56,55"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> audioButton </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> NativePlayerViewController.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">iconButton</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">systemName</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "waveform.circle"</span><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"> "Audio Tracks"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="57" data-alt-line="52" data-line-type="context" data-line-index="57,56"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> captionsButton </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> NativePlayerViewController.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">iconButton</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">systemName</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "captions.bubble"</span><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"> "Captions"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="58" data-alt-line="53" data-line-type="context" data-line-index="58,57">
|
|
</div><div data-line="59" data-alt-line="54" data-line-type="context" data-line-index="59,58"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> elapsedLabel: UILabel </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="">174 unmodified lines</span></div></div></div><div data-line="234" data-alt-line="229" data-line-type="context" data-line-index="234,233"><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">refreshControls</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="235,234"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="236" data-alt-line="231" data-line-type="context" data-line-index="236,235"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="237" data-line-type="change-addition" data-line-index="237,236"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> backend.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">onAudioTracksChange</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="238" data-line-type="change-addition" data-line-index="238,237"><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">async</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="239,238"><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">refreshControls</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="240,239"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="241" data-line-type="change-addition" data-line-index="241,240"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="242" data-alt-line="232" data-line-type="context" data-line-index="242,241"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="243" data-alt-line="233" data-line-type="context" data-line-index="243,242">
|
|
</div><div data-line="244" data-alt-line="234" data-line-type="context" data-line-index="244,243"><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"> startStartupTimer</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="">15 unmodified lines</span></div></div></div><div data-line="260" data-alt-line="250" data-line-type="context" data-line-index="260,259"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> playPauseButton.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addTarget</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">self</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, action</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> #selector</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">togglePlayPause</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:#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">touchUpInside</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="261" data-alt-line="251" data-line-type="context" data-line-index="261,260"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> jumpBackButton.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addTarget</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">self</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, action</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> #selector</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">jumpBack</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:#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">touchUpInside</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="262" data-alt-line="252" data-line-type="context" data-line-index="262,261"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> jumpForwardButton.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addTarget</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">self</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, action</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> #selector</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">jumpForward</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:#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">touchUpInside</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="263,262"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> audioButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">showsMenuAsPrimaryAction</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="264" data-alt-line="253" data-line-type="context" data-line-index="264,263"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> captionsButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">showsMenuAsPrimaryAction</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="265" data-line-type="change-addition" data-line-index="266,264"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> playPauseButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">layer</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">cornerRadius</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> </span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">24</span></span></div><div data-line="266" data-alt-line="255" data-line-type="context" data-line-index="267,265"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> scrubber.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addTarget</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">self</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, action</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> #selector</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">scrubbingStarted</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:#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">touchDown</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="267" data-alt-line="256" data-line-type="context" data-line-index="268,266"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> scrubber.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addTarget</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">self</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, action</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> #selector</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">scrubberChanged</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:#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">valueChanged</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="268" data-alt-line="257" data-line-type="context" data-line-index="269,267"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> scrubber.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addTarget</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">self</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, action</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> #selector</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">scrubbingEnded</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:#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">touchUpInside</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">touchUpOutside</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">touchCancel</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">]</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="">8 unmodified lines</span></div></div></div><div data-line="277" data-alt-line="266" data-line-type="context" data-line-index="278,276"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> timeAndScrubRow.alignment </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">center</span></div><div data-line="278" data-alt-line="267" data-line-type="context" data-line-index="279,277"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> timeAndScrubRow.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">spacing</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 8</span></div><div data-line="279" data-alt-line="268" data-line-type="context" data-line-index="280,278">
|
|
</div><div data-line="280" data-line-type="change-addition" data-line-index="282,279"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><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">playbackCluster</span></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:#9D6AFB;--diffs-token-light:#693ACF"> UIStackView</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">arrangedSubviews</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> [jumpBackButton, playPauseButton, jumpForwardButton]</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="281" data-line-type="change-addition" data-line-index="283,280"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> playbackCluster.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">translatesAutoresizingMaskIntoConstraints</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="282" data-line-type="change-addition" data-line-index="284,281"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> playbackCluster.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">axis</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">horizontal</span></div><div data-line="283" data-line-type="change-addition" data-line-index="285,282"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> playbackCluster.alignment </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">center</span></div><div data-line="284" data-line-type="change-addition" data-line-index="286,283"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> playbackCluster.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">distribution</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">equalCentering</span></div><div data-line="285" data-line-type="change-addition" data-line-index="287,284"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> playbackCluster.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">spacing</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 14</span></div><div data-line="286" data-line-type="change-addition" data-line-index="288,285">
|
|
</div><div data-line="287" data-line-type="change-addition" data-line-index="289,286"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> controlRow </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIStackView</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">arrangedSubviews</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> [audioButton, playbackCluster, captionsButton]</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="288" data-alt-line="270" data-line-type="context" data-line-index="290,287"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> controlRow.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">translatesAutoresizingMaskIntoConstraints</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="289" data-alt-line="271" data-line-type="context" data-line-index="291,288"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> controlRow.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">axis</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">horizontal</span></div><div data-line="290" data-alt-line="272" data-line-type="context" data-line-index="292,289"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> controlRow.alignment </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">center</span></div><div data-line="291" data-line-type="change-addition" data-line-index="295,290"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> controlRow.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">distribution</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:#FFA359;--diffs-token-light:#D47628">equalCentering</span></span></div><div data-line="292" data-line-type="change-addition" data-line-index="296,291"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> controlRow.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">spacing</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> </span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">18</span></span></div><div data-line="293" data-alt-line="275" data-line-type="context" data-line-index="297,292">
|
|
</div><div data-line="294" data-alt-line="276" data-line-type="context" data-line-index="298,293"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> stack </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIStackView</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">arrangedSubviews</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> [timeAndScrubRow, controlRow]</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="295" data-alt-line="277" data-line-type="context" data-line-index="299,294"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> stack.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">translatesAutoresizingMaskIntoConstraints</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-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="340" data-alt-line="322" data-line-type="context" data-line-index="344,339"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> playPauseButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">heightAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 42</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="341" data-alt-line="323" data-line-type="context" data-line-index="345,340"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> jumpForwardButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">widthAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 36</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="342" data-alt-line="324" data-line-type="context" data-line-index="346,341"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> jumpForwardButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">heightAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 36</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="343" data-line-type="change-addition" data-line-index="347,342"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> audioButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">widthAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 36</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="344" data-line-type="change-addition" data-line-index="348,343"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> audioButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">heightAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 36</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="345" data-line-type="change-addition" data-line-index="349,344"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> playbackCluster.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">centerXAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> controlRow.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">centerXAnchor</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="346" data-alt-line="325" data-line-type="context" data-line-index="350,345"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> captionsButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">widthAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 36</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="347" data-alt-line="326" data-line-type="context" data-line-index="351,346"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> captionsButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">heightAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 36</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="348" data-alt-line="327" data-line-type="context" data-line-index="352,347"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> ])</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">102 unmodified lines</span></div></div></div><div data-line="451" data-alt-line="430" data-line-type="context" data-line-index="455,450"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIMenu</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">title</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "Captions"</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, children</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> trackActions </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">+</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> [delayActions]</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="452" data-alt-line="431" data-line-type="context" data-line-index="456,451"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="453" data-alt-line="432" data-line-type="context" data-line-index="457,452">
|
|
</div><div data-line="454" data-line-type="change-addition" data-line-index="458,453"><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"> audioMenu</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"> UIMenu </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">{</span></div><div data-line="455" data-line-type="change-addition" data-line-index="459,454"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> selectedTrackID </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> backend.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">selectedAudioTrackID</span></div><div data-line="456" data-line-type="change-addition" data-line-index="460,455"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> tracks </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> backend.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">audioTracks</span></div><div data-line="457" data-line-type="change-addition" data-line-index="461,456"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> options </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> AudioOptionMapper.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">options</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"> tracks</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="458" data-line-type="change-addition" data-line-index="462,457"><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="459" data-line-type="change-addition" data-line-index="463,458"><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">"[DreamioAudio] build-menu tracks=</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">SubtitleDebugFormatter.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">trackSummary</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">tracks</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"> selected=</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">selectedTrackID</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="460" data-line-type="change-addition" data-line-index="464,459"><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="461" data-line-type="change-addition" data-line-index="465,460"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> trackActions </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> options.</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:#FAFAFA;--diffs-token-light:#0A0A0A"> track </span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">in</span></div><div data-line="462" data-line-type="change-addition" data-line-index="466,461"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIAction</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span></div><div data-line="463" data-line-type="change-addition" data-line-index="467,462"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> title</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">name</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">,</span></div><div data-line="464" data-line-type="change-addition" data-line-index="468,463"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> state</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><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> selectedTrackID </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">on</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> :</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">off</span></div><div data-line="465" data-line-type="change-addition" data-line-index="469,464"><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="466" data-line-type="change-addition" data-line-index="470,465"><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:#FFAB16;--diffs-token-light:#D5901C"> self</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="467" data-line-type="change-addition" data-line-index="471,466"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span></div><div data-line="468" data-line-type="change-addition" data-line-index="472,467"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="469" data-line-type="change-addition" data-line-index="473,468"><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="470" data-line-type="change-addition" data-line-index="474,469"><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">"[DreamioAudio] select-request id=</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">track.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">id</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> name=</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">track.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">name</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> before=</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">self</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">backend</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">selectedAudioTrackID</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="471" data-line-type="change-addition" data-line-index="475,470"><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="472" data-line-type="change-addition" data-line-index="476,471"><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:#FFA359;--diffs-token-light:#D47628">backend</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">selectAudioTrack</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">id</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="473" data-line-type="change-addition" data-line-index="477,472"><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="474" data-line-type="change-addition" data-line-index="478,473"><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">"[DreamioAudio] select-result id=</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">track.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">id</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> after=</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">self</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">backend</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">selectedAudioTrackID</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> tracks=</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">SubtitleDebugFormatter.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">trackSummary</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">self</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">backend</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">audioTracks</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="475" data-line-type="change-addition" data-line-index="479,474"><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="476" data-line-type="change-addition" data-line-index="480,475"><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:#FFA359;--diffs-token-light:#D47628">audioMenuSignature</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="477" data-line-type="change-addition" data-line-index="481,476"><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:#9D6AFB;--diffs-token-light:#693ACF">refreshControls</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="478" data-line-type="change-addition" data-line-index="482,477"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="479" data-line-type="change-addition" data-line-index="483,478"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="480" data-line-type="change-addition" data-line-index="484,479">
|
|
</div><div data-line="481" data-line-type="change-addition" data-line-index="485,480"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIMenu</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">title</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "Audio"</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, children</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> trackActions</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="482" data-line-type="change-addition" data-line-index="486,481"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="483" data-line-type="change-addition" data-line-index="487,482">
|
|
</div><div data-line="484" data-alt-line="433" data-line-type="context" data-line-index="488,483"><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"> startProgressUpdates</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="485" data-alt-line="434" data-line-type="context" data-line-index="489,484"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> progressTimer</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">invalidate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="486" data-alt-line="435" data-line-type="context" data-line-index="490,485"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> progressTimer </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> Timer.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">scheduledTimer</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">withTimeInterval</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0.5</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, repeats</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> true</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="">2 unmodified lines</span></div></div></div><div data-line="489" data-alt-line="438" data-line-type="context" data-line-index="493,488"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="490" data-alt-line="439" data-line-type="context" data-line-index="494,489">
|
|
</div><div data-line="491" data-alt-line="440" data-line-type="context" data-line-index="495,490"><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"> refreshControls</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="492" data-line-type="change-addition" data-line-index="496,491"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> audioTracks </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> backend.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">audioTracks</span></div><div data-line="493" data-alt-line="441" data-line-type="context" data-line-index="497,492"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> subtitleTracks </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> backend.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">subtitleTracks</span></div><div data-line="494" data-alt-line="442" data-line-type="context" data-line-index="498,493"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> playPauseButton.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">setImage</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">UIImage</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">systemName</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> backend.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isPlaying</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> ?</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "pause.fill"</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> :</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "play.fill"</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:#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">normal</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="495" data-alt-line="443" data-line-type="context" data-line-index="499,494"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> scrubber.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isEnabled</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> backend.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isSeekable</span></div><div data-line="496" data-alt-line="444" data-line-type="context" data-line-index="500,495"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> jumpBackButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isEnabled</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> backend.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isSeekable</span></div><div data-line="497" data-alt-line="445" data-line-type="context" data-line-index="501,496"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> jumpForwardButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isEnabled</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> backend.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isSeekable</span></div><div data-line="498" data-line-type="change-addition" data-line-index="502,497"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> updateAudioMenuIfNeeded</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">audioTracks</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> audioTracks</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="499" data-alt-line="446" data-line-type="context" data-line-index="503,498"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> updateCaptionsMenuIfNeeded</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">subtitleTracks</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> subtitleTracks</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="500" data-alt-line="447" data-line-type="context" data-line-index="504,499"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> elapsedLabel.text </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> PlaybackTimeFormatter.</span><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:#9D6AFB;--diffs-token-light:#693ACF">for</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> backend.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">currentTime</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="501" data-alt-line="448" data-line-type="context" data-line-index="505,500"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> remainingLabel.text </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">PlaybackTimeFormatter.</span><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:#9D6AFB;--diffs-token-light:#693ACF">for</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> backend.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">remainingTime</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></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="505" data-alt-line="452" data-line-type="context" data-line-index="509,504"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> [scrubber, jumpBackButton, jumpForwardButton].</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:#FFAB16;--diffs-token-light:#D5901C"> $0</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">alpha</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> backend.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isSeekable</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:#FF678D;--diffs-token-light:#D32A61"> :</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0.45</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="506" data-alt-line="453" data-line-type="context" data-line-index="510,505"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="507" data-alt-line="454" data-line-type="context" data-line-index="511,506">
|
|
</div><div data-line="508" data-line-type="change-addition" data-line-index="512,507"><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"> updateAudioMenuIfNeeded</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">audioTracks</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">AudioTrack</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="509" data-line-type="change-addition" data-line-index="513,508"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> selectedTrackID </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> backend.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">selectedAudioTrackID</span></div><div data-line="510" data-line-type="change-addition" data-line-index="514,509"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> signature </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> trackMenuSignatureValue</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span></div><div data-line="511" data-line-type="change-addition" data-line-index="515,510"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> tracks</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> audioTracks,</span></div><div data-line="512" data-line-type="change-addition" data-line-index="516,511"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> selectedTrackID</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> selectedTrackID</span></div><div data-line="513" data-line-type="change-addition" data-line-index="517,512"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> )</span></div><div data-line="514" data-line-type="change-addition" data-line-index="518,513"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> hasSelectableTrack </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> AudioOptionMapper.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">options</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"> audioTracks</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.count </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="515" data-line-type="change-addition" data-line-index="519,514"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> audioButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isEnabled</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> hasSelectableTrack</span></div><div data-line="516" data-line-type="change-addition" data-line-index="520,515"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> audioButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">alpha</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> hasSelectableTrack </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:#FF678D;--diffs-token-light:#D32A61"> :</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0.45</span></div><div data-line="517" data-line-type="change-addition" data-line-index="521,516"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> guard</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> signature </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">!=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> audioMenuSignature </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="518" data-line-type="change-addition" data-line-index="522,517"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span></div><div data-line="519" data-line-type="change-addition" data-line-index="523,518"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="520" data-line-type="change-addition" data-line-index="524,519">
|
|
</div><div data-line="521" data-line-type="change-addition" data-line-index="525,520"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> audioMenuSignature </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> signature</span></div><div data-line="522" data-line-type="change-addition" data-line-index="526,521"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> audioButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">menu</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> audioMenu</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="523" data-line-type="change-addition" data-line-index="527,522"><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="524" data-line-type="change-addition" data-line-index="528,523"><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">"[DreamioAudio] refresh-menu enabled=</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">audioButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isEnabled</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> tracks=</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">SubtitleDebugFormatter.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">trackSummary</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">audioTracks</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"> selected=</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">selectedTrackID</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="525" data-line-type="change-addition" data-line-index="529,524"><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="526" data-line-type="change-addition" data-line-index="530,525"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="527" data-line-type="change-addition" data-line-index="531,526">
|
|
</div><div data-line="528" data-alt-line="455" data-line-type="context" data-line-index="532,527"><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"> updateCaptionsMenuIfNeeded</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">subtitleTracks</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">SubtitleTrack</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="529" data-alt-line="456" data-line-type="context" data-line-index="533,528"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> selectedTrackID </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> backend.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">selectedSubtitleTrackID</span></div><div data-line="530" data-alt-line="457" data-line-type="context" data-line-index="534,529"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> signature </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> captionsMenuSignatureValue</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="">18 unmodified lines</span></div></div></div><div data-line="549" data-alt-line="476" data-line-type="context" data-line-index="553,548"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> tracks</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">:</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> [SubtitleTrack],</span></div><div data-line="550" data-alt-line="477" data-line-type="context" data-line-index="554,549"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> selectedTrackID</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">:</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> Int32</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="551" data-alt-line="478" data-line-type="context" data-line-index="555,550"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> delay</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">:</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> TimeInterval</span></div><div data-line="552" data-line-type="change-addition" data-line-index="556,551"><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></div><div data-line="553" data-line-type="change-addition" data-line-index="557,552"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> trackSignature </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> trackMenuSignatureValue</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">tracks</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> tracks, selectedTrackID</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> selectedTrackID</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="554" data-line-type="change-addition" data-line-index="558,553"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</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">trackSignature</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">#delay=</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></div><div data-line="555" data-line-type="change-addition" data-line-index="559,554"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="556" data-line-type="change-addition" data-line-index="560,555">
|
|
</div><div data-line="557" data-line-type="change-addition" data-line-index="561,556"><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"> trackMenuSignatureValue</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span></div><div data-line="558" data-line-type="change-addition" data-line-index="562,557"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> tracks</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">SubtitleTrack</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="559" data-line-type="change-addition" data-line-index="563,558"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> selectedTrackID</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: </span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">Int32</span></div><div data-line="560" data-alt-line="479" data-line-type="context" data-line-index="564,559"><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="561" data-alt-line="480" data-line-type="context" data-line-index="565,560"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> trackSignature </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> tracks</span></div><div data-line="562" data-alt-line="481" data-line-type="context" data-line-index="566,561"><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">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:#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">name</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="563" data-alt-line="482" data-line-type="context" data-line-index="567,562"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> .</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">joined</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">separator</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:#636363;--diffs-token-light:#636363">)</span></div><div data-line="564" data-line-type="change-addition" data-line-index="569,563"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</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">trackSignature</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">#selected=</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">selectedTrackID</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"</span></div><div data-line="565" data-alt-line="484" data-line-type="context" data-line-index="570,564"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="566" data-alt-line="485" data-line-type="context" data-line-index="571,565">
|
|
</div><div data-line="567" data-alt-line="486" data-line-type="context" data-line-index="572,566"><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"> revealControls</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="">30 unmodified lines</span></div></div></div><div data-line="598" data-alt-line="517" data-line-type="context" data-line-index="603,597"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">translatesAutoresizingMaskIntoConstraints</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="599" data-alt-line="518" data-line-type="context" data-line-index="604,598"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">setImage</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">UIImage</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">systemName</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> systemName</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:#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">normal</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="600" data-alt-line="519" data-line-type="context" data-line-index="605,599"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">tintColor</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">white</span></div><div data-line="601" data-line-type="change-addition" data-line-index="607,600"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">backgroundColor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIColor.</span><span data-diff-span=""><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">white</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">withAlphaComponent</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 data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">12</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="602" data-alt-line="521" data-line-type="context" data-line-index="608,601"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">layer</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">cornerRadius</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 18</span></div><div data-line="603" data-line-type="change-addition" data-line-index="609,602"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">layer</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">borderColor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIColor.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">white</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">withAlphaComponent</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">0.16</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">cgColor</span></div><div data-line="604" data-line-type="change-addition" data-line-index="610,603"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">layer</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">borderWidth</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="605" data-alt-line="522" data-line-type="context" data-line-index="611,604"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">accessibilityLabel</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label</span></div><div data-line="606" data-alt-line="523" data-line-type="context" data-line-index="612,605"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button</span></div><div data-line="607" data-alt-line="524" data-line-type="context" data-line-index="613,606"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div></div></code></pre></section>
|
|
|
|
<section>
|
|
<h2>Expected Impact for End-Users</h2>
|
|
<p>When a native-played file has multiple embedded audio tracks, users can open the new audio menu and choose the language or alternate mix they want. The play button remains centered, and the controls should feel more at home on iOS.</p>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>Validation</h2>
|
|
<ul>
|
|
<li>Ran <code>xcodebuild -workspace Dreamio.xcworkspace -scheme Dreamio -destination 'platform=iOS Simulator,name=iPhone 17' build</code>: passed.</li>
|
|
<li>Attempted <code>iPhone 16</code> simulator validation first, but that simulator was not installed on this machine.</li>
|
|
<li>No real-device playback stream was available in this turn, so actual multi-audio switching still needs a device check with an MKV that contains multiple audio languages.</li>
|
|
</ul>
|
|
</section>
|
|
|
|
<section class="callout">
|
|
<h2>Issues, Limitations, and Mitigations</h2>
|
|
<ul>
|
|
<li>MobileVLCKit track discovery is event-driven, so the menu appears after VLC reports the stream tracks. The UI refreshes on playback, buffering, and elementary-stream-added events to mitigate delayed discovery.</li>
|
|
<li>The visual update uses UIKit blur/material styling rather than directly adopting iOS 26-only <code>UIGlassEffect</code>, keeping the project buildable for its current iOS 16 deployment target while following Liquid Glass principles.</li>
|
|
<li>Manual validation is still needed on a device with a known multi-audio stream.</li>
|
|
</ul>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>Follow-up Work</h2>
|
|
<ul>
|
|
<li>Use a known multi-language MKV on device and confirm the menu lists all audio tracks and switches without playback restart.</li>
|
|
<li>Consider parsing VLC track names into cleaner language labels if raw names are noisy.</li>
|
|
<li>Promote the track model from a typealias to distinct audio/subtitle structs if audio-specific metadata is added later.</li>
|
|
</ul>
|
|
</section>
|
|
</main>
|
|
</body>
|
|
</html> |