Some checks failed
Linux Build / Linux cpu (push) Has been cancelled
Linux Build / Linux cpu-clang (push) Has been cancelled
Linux Build / Linux vulkan (push) Has been cancelled
mac-build / macOS CPU (push) Has been cancelled
Nix Build / Nix (cpu) (push) Has been cancelled
Nix Build / Nix (vulkan) (push) Has been cancelled
windows-build / Windows CPU (push) Has been cancelled
285 lines
2.2 MiB
285 lines
2.2 MiB
<!doctype html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||
<meta name="theme-color" content="#07101f" />
|
||
<meta name="description" content="Python-free local audio model studio for audio.cpp" />
|
||
<script>
|
||
(() => {
|
||
try {
|
||
const savedTheme = localStorage.getItem('audiocpp.ui.theme') || 'system';
|
||
const systemDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
||
const theme = savedTheme === 'dark' || savedTheme === 'light' || savedTheme === 'mocha' || savedTheme === 'paper'
|
||
? savedTheme
|
||
: systemDark ? 'dark' : 'light';
|
||
document.documentElement.dataset.theme = theme;
|
||
document.querySelector('meta[name="theme-color"]')?.setAttribute(
|
||
'content',
|
||
theme === 'dark' ? '#07101f' : theme === 'mocha' ? '#1e1e2e' : theme === 'paper' ? '#f7f7f8' : '#f6f8fb'
|
||
);
|
||
} catch {
|
||
document.documentElement.dataset.theme = 'dark';
|
||
}
|
||
})();
|
||
</script>
|
||
|
||
<style>.media-preview.svelte-i4ds1n{display:grid;gap:7px;margin-top:8px;padding:8px;border:1px solid var(--line);border-radius:6px;background:var(--control-bg)}.media-preview-header.svelte-i4ds1n{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:11px}.media-preview-header.svelte-i4ds1n strong:where(.svelte-i4ds1n){flex:0 0 auto;color:var(--text)}.media-preview-header.svelte-i4ds1n span:where(.svelte-i4ds1n){min-width:0;overflow:hidden;color:var(--muted);text-overflow:ellipsis;white-space:nowrap}audio.svelte-i4ds1n{width:100%;height:38px}video.svelte-i4ds1n{width:100%;max-height:220px;border-radius:4px;background:#000}.lora-controls.studio-options.svelte-1yw4t6e{border-bottom:1px solid var(--line)}.lora-group-body.svelte-1yw4t6e{display:grid;gap:12px;padding-bottom:16px}.lora-group-body.svelte-1yw4t6e .lora-fields{display:grid;grid-template-columns:minmax(0,1fr) 120px;gap:12px}.lora-group-body.svelte-1yw4t6e .lora-path{display:flex;gap:8px}.lora-group-body.svelte-1yw4t6e .lora-path input{min-width:0;flex:1}.lora-group-body.svelte-1yw4t6e .lora-path button{flex-shrink:0}.lora-group-body.svelte-1yw4t6e label{margin-top:0}.lora-group-body.svelte-1yw4t6e p{margin:0;color:var(--muted);font-size:12px;line-height:1.5}.lora-group-body.svelte-1yw4t6e small{color:var(--muted);font-size:11px;line-height:1.5}.lora-group-body.svelte-1yw4t6e button{justify-self:start}@media(max-width:600px){.lora-group-body.svelte-1yw4t6e .lora-fields{grid-template-columns:1fr}}.auk-form.svelte-15o25uj{display:grid;gap:16px}.auk-heading.svelte-15o25uj{display:flex;align-items:center;justify-content:space-between;gap:12px}.auk-heading.svelte-15o25uj span:where(.svelte-15o25uj),.auk-field.svelte-15o25uj label:where(.svelte-15o25uj) span:where(.svelte-15o25uj),.auk-field.svelte-15o25uj small:where(.svelte-15o25uj),summary.svelte-15o25uj span:where(.svelte-15o25uj){color:var(--muted);font-size:.78rem}.auk-grid.svelte-15o25uj{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.auk-components.svelte-15o25uj{grid-template-columns:repeat(3,minmax(0,1fr))}.auk-field.svelte-15o25uj{min-width:0}.auk-field.wide.svelte-15o25uj{grid-column:1 / -1}.auk-field.svelte-15o25uj>label:where(.svelte-15o25uj):first-child{display:block;margin-bottom:6px}.auk-field.svelte-15o25uj input,.auk-field.svelte-15o25uj select,.auk-field.svelte-15o25uj textarea{box-sizing:border-box;width:100%}.auk-field.svelte-15o25uj small:where(.svelte-15o25uj){display:block;margin-top:5px;line-height:1.35}details.svelte-15o25uj>summary:where(.svelte-15o25uj){cursor:pointer;font-weight:650}.details-grid.svelte-15o25uj{margin-top:12px}.auk-range.svelte-15o25uj{display:grid;grid-template-columns:minmax(0,1fr) 52px;align-items:center;gap:8px}.auk-range.svelte-15o25uj output:where(.svelte-15o25uj){text-align:right;font-variant-numeric:tabular-nums}@media(max-width:760px){.auk-grid.svelte-15o25uj,.auk-components.svelte-15o25uj{grid-template-columns:1fr}}.lfm2-conversation.svelte-18zfjku{display:grid;gap:8px;margin:4px 0 6px;padding:10px;border:1px solid var(--line);border-radius:8px;background:var(--card-bg)}.conversation-head.svelte-18zfjku{display:flex;justify-content:space-between;align-items:center;gap:10px}.conversation-head.svelte-18zfjku strong:where(.svelte-18zfjku),.conversation-head.svelte-18zfjku small:where(.svelte-18zfjku){display:block}.conversation-head.svelte-18zfjku strong:where(.svelte-18zfjku){color:var(--text-strong);font-size:12px}.conversation-head.svelte-18zfjku small:where(.svelte-18zfjku),.note.svelte-18zfjku,.empty.svelte-18zfjku,.turn-head.svelte-18zfjku small:where(.svelte-18zfjku),.turn-row.svelte-18zfjku small:where(.svelte-18zfjku){color:var(--muted);font-size:10px;line-height:1.4}.conversation-actions.svelte-18zfjku{display:flex;gap:6px}.conversation-actions.svelte-18zfjku button:where(.svelte-18zfjku),.turn-head.svelte-18zfjku button:where(.svelte-18zfjku){padding:5px 9px;font-size:11px;white-space:nowrap}.empty.svelte-18zfjku{margin:0}.turns.svelte-18zfjku{display:grid;gap:8px;max-height:460px;margin:0;padding:0;overflow-y:auto;list-style:none}.turns.svelte-18zfjku li:where(.svelte-18zfjku){display:grid;gap:6px;padding:8px;border:1px solid var(--line);border-radius:7px}.turns.svelte-18zfjku li.left-out:where(.svelte-18zfjku){opacity:.55}.turn-head.svelte-18zfjku{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.turn-head.svelte-18zfjku strong:where(.svelte-18zfjku){font-size:11px}.turn-head.svelte-18zfjku button:where(.svelte-18zfjku){margin-left:auto}.badge.svelte-18zfjku{padding:1px 7px;border:1px solid var(--active-border);border-radius:999px;color:var(--cyan);font-size:10px}.badge.bad.svelte-18zfjku{border-color:#ff778b73;color:var(--danger)}.turn-row.svelte-18zfjku{display:grid;grid-template-columns:38px minmax(0,1fr);align-items:start;gap:6px}.turn-row.svelte-18zfjku>span:where(.svelte-18zfjku){padding-top:3px;color:var(--text-label);font-size:10px;font-weight:650}.reply.svelte-18zfjku p:where(.svelte-18zfjku){margin:2px 0 4px;color:var(--text);font-size:12px;line-height:1.45;white-space:pre-wrap}.reply-audio.svelte-18zfjku{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px}.reply-audio.svelte-18zfjku a:where(.svelte-18zfjku){color:var(--cyan);font-size:11px;text-decoration:none}.turn-message.svelte-18zfjku{color:var(--danger);font-size:10px;line-height:1.4}.lfm2-conversation.svelte-18zfjku .toggle:where(.svelte-18zfjku){margin-top:2px}.liveavatar-form.svelte-4cgukj{display:grid;gap:14px}.reference-image-field.svelte-4cgukj,.source-audio-field.svelte-4cgukj{display:grid;gap:8px}.reference-image-field.svelte-4cgukj>label:where(.svelte-4cgukj),.source-audio-field.svelte-4cgukj>label:where(.svelte-4cgukj),.field.svelte-4cgukj>label:where(.svelte-4cgukj){color:var(--muted);font-size:11px;font-weight:700}.reference-image-field.svelte-4cgukj>label:where(.svelte-4cgukj) span:where(.svelte-4cgukj),.source-audio-field.svelte-4cgukj>label:where(.svelte-4cgukj) span:where(.svelte-4cgukj){font-weight:500}.file-native.svelte-4cgukj{display:none}.reference-image-actions.svelte-4cgukj{display:flex;align-items:center;gap:10px;min-width:0}.reference-image-actions.svelte-4cgukj span:where(.svelte-4cgukj){min-width:0;overflow:hidden;color:var(--muted);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.reference-image-actions.svelte-4cgukj button:where(.svelte-4cgukj){margin-left:auto}.reference-image-field.svelte-4cgukj img:where(.svelte-4cgukj){width:min(100%,360px);max-height:260px;object-fit:contain;object-position:left center;border:1px solid var(--line);border-radius:6px;background:#000}.reference-image-field.svelte-4cgukj small:where(.svelte-4cgukj){color:var(--muted)}.reference-image-field.svelte-4cgukj small.error:where(.svelte-4cgukj){color:var(--danger)}.control-grid.svelte-4cgukj{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.field.svelte-4cgukj{display:grid;align-content:start;gap:7px;min-width:0}.field.wide.svelte-4cgukj{grid-column:1 / -1}.field.svelte-4cgukj input:where(.svelte-4cgukj),.field.svelte-4cgukj select:where(.svelte-4cgukj){width:100%}.range-control.svelte-4cgukj{display:grid;grid-template-columns:minmax(0,1fr) 48px;align-items:center;gap:8px}.range-control.svelte-4cgukj output:where(.svelte-4cgukj){color:var(--text);font-family:var(--mono);font-size:12px;text-align:right}details.svelte-4cgukj{margin:0}details.svelte-4cgukj>summary:where(.svelte-4cgukj){cursor:pointer;color:var(--text);font-size:12px;font-weight:700}.memory-grid.svelte-4cgukj{margin-top:12px}@media(max-width:780px){.control-grid.svelte-4cgukj{grid-template-columns:1fr 1fr}}@media(max-width:520px){.control-grid.svelte-4cgukj{grid-template-columns:1fr}.field.wide.svelte-4cgukj{grid-column:auto}}.yue2-form.svelte-15djq8z{display:grid;gap:14px}.yue2-grid.svelte-15djq8z{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 12px;align-items:start}.yue2-grid-core.svelte-15djq8z,.yue2-grid-components.svelte-15djq8z{grid-template-columns:repeat(3,minmax(0,1fr))}.yue2-field.svelte-15djq8z{min-width:0}.yue2-field.wide.svelte-15djq8z{grid-column:1 / -1}.yue2-field.svelte-15djq8z label:where(.svelte-15djq8z){display:flex;align-items:baseline;justify-content:space-between;gap:8px;min-height:16px;margin:0 0 5px;color:var(--ink);font-size:11px;font-weight:700;line-height:1.3}.yue2-field.svelte-15djq8z label:where(.svelte-15djq8z) span:where(.svelte-15djq8z),.yue2-field.svelte-15djq8z small:where(.svelte-15djq8z){color:var(--muted);font-size:10px;font-weight:500;line-height:1.35}.yue2-field.svelte-15djq8z small:where(.svelte-15djq8z){display:block;min-height:14px;margin-top:5px}.yue2-form.svelte-15djq8z input,.yue2-form.svelte-15djq8z select,.yue2-form.svelte-15djq8z textarea{width:100%;min-width:0;font-size:12px;line-height:1.35}.yue2-form.svelte-15djq8z textarea{resize:vertical}.yue2-range.svelte-15djq8z{display:grid;grid-template-columns:minmax(0,1fr) 62px;gap:10px;align-items:center}.yue2-range.svelte-15djq8z input{padding:0;accent-color:var(--cyan)}.yue2-range.svelte-15djq8z output:where(.svelte-15djq8z){color:var(--cyan);font:12px/1.2 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;text-align:right}.yue2-details.svelte-15djq8z{margin:0}.yue2-details.svelte-15djq8z>.yue2-grid:where(.svelte-15djq8z){padding:0 10px 10px}.yue2-cover.svelte-15djq8z{display:grid;gap:12px;padding:0 10px 10px}.yue2-cover-card.svelte-15djq8z{display:grid;gap:10px;min-width:0;padding:10px;border:1px solid var(--line);border-radius:8px;background:var(--control-bg)}.yue2-sheet-card.svelte-15djq8z{overflow:hidden}.yue2-sheet-preview.svelte-15djq8z{min-height:180px;max-height:420px;overflow:auto;padding:10px;border:1px solid var(--line);border-radius:6px;background:#f8fbff;color:#0e1726}.yue2-sheet-preview.svelte-15djq8z span:where(.svelte-15djq8z){color:var(--muted);font-size:12px}.yue2-sheet-preview.svelte-15djq8z svg{display:block;max-width:100%}.yue2-cover-head.svelte-15djq8z{display:flex;align-items:start;justify-content:space-between;gap:12px}.yue2-cover-head.svelte-15djq8z strong:where(.svelte-15djq8z){display:block;color:var(--text-strong);font-size:12px;line-height:1.3}.yue2-cover-head.svelte-15djq8z small:where(.svelte-15djq8z){display:block;margin-top:3px;color:var(--muted);font-size:10px;line-height:1.35}.yue2-cover-head.svelte-15djq8z button:where(.svelte-15djq8z){width:auto;min-width:110px}.yue2-cover-picker.svelte-15djq8z{margin:0}.yue2-unload-toggle.svelte-15djq8z{display:flex;align-items:center;gap:8px;font-size:12px;line-height:1.4}.yue2-unload-toggle.svelte-15djq8z input:where(.svelte-15djq8z){appearance:none;position:relative;flex:0 0 34px;width:34px;height:20px;padding:0;margin:0;border:1px solid var(--line);border-radius:10px;background:var(--muted);cursor:pointer}.yue2-unload-toggle.svelte-15djq8z input:where(.svelte-15djq8z):before{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:#fff}.yue2-unload-toggle.svelte-15djq8z input:where(.svelte-15djq8z):checked{background:var(--cyan)}.yue2-unload-toggle.svelte-15djq8z input:where(.svelte-15djq8z):checked:before{transform:translate(14px)}.yue2-unload-toggle.svelte-15djq8z input:where(.svelte-15djq8z):focus-visible{outline:2px solid var(--cyan);outline-offset:2px}.yue2-unload-toggle.svelte-15djq8z input:where(.svelte-15djq8z):disabled{opacity:.5;cursor:not-allowed}.yue2-error.svelte-15djq8z{color:var(--danger)}.yue2-details.svelte-15djq8z>summary:where(.svelte-15djq8z){min-height:42px;font-size:11px;line-height:1.3}@media(max-width:760px){.yue2-grid.svelte-15djq8z,.yue2-grid-components.svelte-15djq8z,.yue2-grid-core.svelte-15djq8z{grid-template-columns:1fr}}.reference-fields.svelte-1ntrxhz{display:grid;gap:8px;min-width:0}.recording-label.svelte-1ntrxhz{display:flex;align-items:center;justify-content:space-between;min-height:24px}label.svelte-1ntrxhz{margin:0;font-size:12px}label.svelte-1ntrxhz span:where(.svelte-1ntrxhz){color:var(--muted);font-weight:400;margin-left:4px}textarea.svelte-1ntrxhz,select.svelte-1ntrxhz{width:100%;box-sizing:border-box}.file-picker.svelte-1ntrxhz{display:flex;align-items:center;gap:8px;min-width:0}.file-picker.svelte-1ntrxhz span:where(.svelte-1ntrxhz){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.icon-button.svelte-1ntrxhz{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;padding:0}.drama-workspace.svelte-z6u13w{display:grid;gap:22px;min-width:0}.mode-switch.svelte-z6u13w{display:flex;gap:4px;border-bottom:1px solid var(--line);padding-bottom:10px;flex-wrap:wrap}button.svelte-z6u13w{display:inline-flex;align-items:center;justify-content:center;gap:7px}button.chosen.svelte-z6u13w{border-color:var(--active-border);background:var(--active-bg);color:var(--text-strong)}.test-label.svelte-z6u13w{color:var(--muted);font-size:10px;text-transform:uppercase}section.svelte-z6u13w{min-width:0}h3.svelte-z6u13w{display:flex;align-items:center;gap:8px;font-size:14px;margin:0 0 12px}h3.svelte-z6u13w span:where(.svelte-z6u13w){font-size:11px;color:var(--muted);font-weight:400}.section-heading.svelte-z6u13w{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}.section-heading.svelte-z6u13w h3:where(.svelte-z6u13w){margin:0}.example.svelte-z6u13w{font-size:11px;padding:5px 9px}.testing-warning.svelte-z6u13w{margin:0;padding:3px 0 3px 12px;border-left:3px solid var(--blue);color:var(--muted);font-size:12px;line-height:1.6}.cast-layout.svelte-z6u13w{display:grid;grid-template-columns:minmax(100px,.8fr) minmax(0,2fr);gap:16px}.cast-list.svelte-z6u13w{display:flex;flex-direction:column;gap:5px;max-height:325px;overflow-y:auto;padding-right:5px;align-self:start}.cast-list.svelte-z6u13w button:where(.svelte-z6u13w){min-height:36px;flex-shrink:0;width:100%;justify-content:flex-start;padding:6px 8px;font-size:12px}.speaker-number.svelte-z6u13w{width:18px;flex-shrink:0;font-size:10px;color:var(--muted);font-variant-numeric:tabular-nums}.speaker-name.svelte-z6u13w{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;text-align:left}.cast-editor.svelte-z6u13w{min-width:0;border-left:1px solid var(--line);padding-left:16px}.name-row.svelte-z6u13w{display:flex;align-items:end;gap:8px;margin-bottom:14px}.name-row.svelte-z6u13w>div:where(.svelte-z6u13w){min-width:0;flex:1}.name-row.svelte-z6u13w label:where(.svelte-z6u13w){font-size:12px;margin-top:0}input.svelte-z6u13w,textarea.svelte-z6u13w,select.svelte-z6u13w{width:100%;box-sizing:border-box}.text-count.svelte-z6u13w{margin-top:7px;color:var(--muted);font-size:11px;text-align:right}.dialogue-list.svelte-z6u13w{display:grid;gap:12px}.dialogue-turn.svelte-z6u13w{border-top:1px solid var(--line);padding-top:10px;min-width:0}.turn-heading.svelte-z6u13w{display:flex;align-items:center;gap:8px;margin-bottom:7px}.turn-heading.svelte-z6u13w select:where(.svelte-z6u13w){width:auto;flex:1;min-width:0;padding:5px 8px;font-size:12px}.turn-number.svelte-z6u13w{font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}.turn-actions.svelte-z6u13w{display:flex;gap:3px}.icon-button.svelte-z6u13w{width:28px;height:28px;padding:0;flex-shrink:0}.add-turn.svelte-z6u13w{margin-top:12px}.sr-only.svelte-z6u13w{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}@media(max-width:600px){.cast-layout.svelte-z6u13w{grid-template-columns:minmax(0,1fr)}.cast-list.svelte-z6u13w{flex-direction:row;max-height:none;overflow-x:auto;padding-bottom:6px}.cast-list.svelte-z6u13w button:where(.svelte-z6u13w){width:125px}.cast-editor.svelte-z6u13w{border-left:0;padding-left:0}.mode-switch.svelte-z6u13w button:where(.svelte-z6u13w){padding:8px;font-size:12px}}.latentsync-video.svelte-h2zppn{display:grid;gap:8px;min-width:0}.latentsync-video.svelte-h2zppn>label:where(.svelte-h2zppn):first-child{color:var(--muted);font-size:12px;font-weight:600}.latentsync-video.svelte-h2zppn>label:where(.svelte-h2zppn) span:where(.svelte-h2zppn){font-weight:400}.latentsync-video.svelte-h2zppn button:where(.svelte-h2zppn){justify-self:start}.app-context.svelte-ishglm{display:flex;align-items:center;gap:12px;padding:6px 0;font-size:12px;color:var(--muted)}.apps-page.svelte-ishglm{max-width:1440px;margin:0 auto}.app-heading.svelte-ishglm{display:flex;align-items:flex-start;gap:20px;margin:20px 0 32px}h1.svelte-ishglm{margin:0 0 10px;font-size:28px}p.svelte-ishglm{color:var(--muted);margin:0}.app-context.svelte-ishglm button:where(.svelte-ishglm){flex-shrink:0}.eyebrow.svelte-ishglm{margin-bottom:12px}.app-grid.svelte-ishglm{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:20px}.early-release.svelte-ishglm{margin-bottom:24px;padding:16px 20px;border:1px solid var(--cyan);border-radius:12px;background:var(--panel)}.early-release.svelte-ishglm strong:where(.svelte-ishglm){color:var(--cyan)}.early-release.svelte-ishglm p:where(.svelte-ishglm){margin-top:6px;line-height:1.6}.app-card.svelte-ishglm{display:flex;flex-direction:column;align-items:flex-start;text-align:left;gap:16px;padding:28px;min-height:240px;background:var(--panel)}.app-card.svelte-ishglm strong:where(.svelte-ishglm){font-size:22px}.app-card.svelte-ishglm>span:where(.svelte-ishglm){color:var(--muted);line-height:1.6}.app-card.svelte-ishglm .app-open:where(.svelte-ishglm){color:var(--cyan);font-size:12px}.app-open.svelte-ishglm{margin-top:auto}[role=alert].svelte-ishglm{color:var(--danger)}@media(max-width:600px){.app-heading.svelte-ishglm{flex-direction:column}h1.svelte-ishglm{font-size:23px}}.configuration-page.svelte-19sueow{max-width:640px;margin:28px auto}h1.svelte-19sueow{font-size:24px;margin:0 0 24px}h2.svelte-19sueow{font-size:16px;margin:0 0 8px}form.svelte-19sueow{display:grid;gap:12px;justify-items:start}label.svelte-19sueow{margin:0}input.svelte-19sueow{width:180px;max-width:100%}.configuration-error.svelte-19sueow{color:var(--danger);overflow-wrap:anywhere}.library.svelte-1vlt8au{max-width:1400px;margin:0 auto;letter-spacing:0}.library-heading.svelte-1vlt8au,.family.svelte-1vlt8au>header:where(.svelte-1vlt8au){display:flex;align-items:center;justify-content:space-between;gap:16px}h1.svelte-1vlt8au{font-size:26px;margin:0 0 8px}h2.svelte-1vlt8au{font-size:16px;margin:0}.library-heading.svelte-1vlt8au{padding:20px 0}.library-heading.svelte-1vlt8au span:where(.svelte-1vlt8au),.result-count.svelte-1vlt8au,.identity.svelte-1vlt8au span:where(.svelte-1vlt8au),.package.svelte-1vlt8au span:where(.svelte-1vlt8au),.package.svelte-1vlt8au label:where(.svelte-1vlt8au),.state.svelte-1vlt8au span:where(.svelte-1vlt8au){color:var(--muted);font-size:13px}.folder-settings.svelte-1vlt8au{border-bottom:1px solid var(--line);padding:12px 0}summary.svelte-1vlt8au{cursor:pointer;font-size:13px}summary.svelte-1vlt8au span:where(.svelte-1vlt8au){color:var(--muted);margin-left:12px;overflow-wrap:anywhere}.folder-editor.svelte-1vlt8au{display:flex;align-items:flex-end;gap:8px;padding:16px 0;clear:both}.folder-path.svelte-1vlt8au{display:grid;gap:8px;flex:1;min-width:0;color:var(--muted);font-size:12px}.folder-path.svelte-1vlt8au input:where(.svelte-1vlt8au){width:100%;min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.folder-history.svelte-1vlt8au{display:flex;align-items:center;flex-wrap:wrap;gap:12px;padding:14px 0 8px;border-top:1px solid var(--line);min-width:0}.history-picker.svelte-1vlt8au{position:relative;width:210px;max-width:100%;flex-shrink:0;color:var(--cyan)}.history-picker.svelte-1vlt8au svg{position:absolute;top:50%;transform:translateY(-50%);pointer-events:none}.history-picker.svelte-1vlt8au svg:first-child{left:12px}.history-picker.svelte-1vlt8au svg:last-child{right:12px}.history-picker.svelte-1vlt8au select:where(.svelte-1vlt8au){appearance:none;width:100%;min-width:0;padding:8px 34px 8px 38px;color:var(--cyan);background:var(--active-bg);border-color:var(--active-border);font-weight:600;cursor:pointer}.history-picker.svelte-1vlt8au select:where(.svelte-1vlt8au):hover:not(:disabled){border-color:var(--cyan)}.history-picker.svelte-1vlt8au select:where(.svelte-1vlt8au):focus-visible{outline:2px solid var(--cyan);outline-offset:3px}.history-picker.svelte-1vlt8au select:where(.svelte-1vlt8au):disabled{cursor:default;color:var(--muted)}.folder-history.svelte-1vlt8au p:where(.svelte-1vlt8au){margin:0;color:var(--muted);font-size:12px;line-height:1.6}.filters.svelte-1vlt8au{display:grid;grid-template-columns:minmax(180px,1fr) 220px 180px;gap:12px;padding:24px 0 12px}input.svelte-1vlt8au,select.svelte-1vlt8au,button.svelte-1vlt8au{font-size:13px;min-height:38px;border-radius:6px;letter-spacing:0}.result-count.svelte-1vlt8au{padding-bottom:16px}.family.svelte-1vlt8au{margin:0}.family.svelte-1vlt8au>header:where(.svelte-1vlt8au){margin-top:12px;padding:14px 12px;background:var(--panel)}.family.svelte-1vlt8au>header:where(.svelte-1vlt8au)>span:where(.svelte-1vlt8au){font-size:12px;color:var(--muted)}.model-row.svelte-1vlt8au{display:grid;grid-template-columns:minmax(170px,1fr) minmax(160px,240px) 150px 180px;align-items:center;gap:20px;padding:18px 12px;border-bottom:1px solid var(--line)}.identity.svelte-1vlt8au,.package.svelte-1vlt8au,.state.svelte-1vlt8au{display:grid;gap:6px;min-width:0}.identity.svelte-1vlt8au strong:where(.svelte-1vlt8au){font-size:14px;overflow-wrap:anywhere}.package.svelte-1vlt8au select:where(.svelte-1vlt8au){width:100%}.state.svelte-1vlt8au{font-size:13px}.installed.svelte-1vlt8au,.family.svelte-1vlt8au>header:where(.svelte-1vlt8au)>.installed:where(.svelte-1vlt8au){color:var(--green, #a6e3a1)}.actions.svelte-1vlt8au{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.primary.svelte-1vlt8au{width:100%}.manage.svelte-1vlt8au>div:where(.svelte-1vlt8au){display:flex;gap:8px;padding-top:8px}.job.svelte-1vlt8au{grid-column:1/-1;font-size:13px;overflow-wrap:anywhere}progress.svelte-1vlt8au{display:block;width:100%;height:6px;margin-top:10px;accent-color:var(--cyan)}.failed.svelte-1vlt8au{color:var(--danger)}.downloads.svelte-1vlt8au{padding:12px;border:1px solid var(--line);margin-bottom:20px}.download-row.svelte-1vlt8au{display:flex;gap:16px;align-items:center;padding-top:10px;font-size:13px}.download-row.svelte-1vlt8au span:where(.svelte-1vlt8au):first-child{flex:1}.empty.svelte-1vlt8au{padding:48px 0;display:grid;justify-items:center;gap:16px}@media(max-width:1050px){.model-row.svelte-1vlt8au{grid-template-columns:minmax(140px,1fr) minmax(150px,1fr)}.actions.svelte-1vlt8au{justify-self:end}.filters.svelte-1vlt8au{grid-template-columns:1fr 1fr}.filters.svelte-1vlt8au input:where(.svelte-1vlt8au){grid-column:1/-1}}@media(max-width:600px){.model-row.svelte-1vlt8au{grid-template-columns:1fr;gap:12px}.actions.svelte-1vlt8au{justify-self:stretch}.family.svelte-1vlt8au>header:where(.svelte-1vlt8au),.library-heading.svelte-1vlt8au{align-items:start;flex-direction:column}.folder-editor.svelte-1vlt8au{flex-wrap:wrap}.folder-editor.svelte-1vlt8au .folder-path:where(.svelte-1vlt8au){flex-basis:100%}.filters.svelte-1vlt8au{grid-template-columns:minmax(0,1fr)}.download-row.svelte-1vlt8au{flex-wrap:wrap}}.voice-library-page.svelte-19fh7lt{min-width:0}.library-actions.svelte-19fh7lt{display:flex;gap:8px;flex-wrap:wrap}.library-help.svelte-19fh7lt{color:var(--muted);font-size:12px;margin:0 0 20px}.voice-sort.svelte-19fh7lt{display:flex;align-items:center;gap:12px;margin-bottom:16px;color:var(--muted);font-size:12px}.library-head.svelte-19fh7lt,.library-title.svelte-19fh7lt{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.library-head.svelte-19fh7lt{justify-content:space-between;padding:8px 0 20px}.library-title.svelte-19fh7lt h1:where(.svelte-19fh7lt){margin:0;font-size:24px}.library-title.svelte-19fh7lt span:where(.svelte-19fh7lt){color:var(--muted);font-size:12px}.voice-library-page.svelte-19fh7lt button:where(.svelte-19fh7lt){display:inline-flex;align-items:center;justify-content:center;gap:8px}.library-layout.svelte-19fh7lt{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,400px);border-top:1px solid var(--line)}.voice-browser.svelte-19fh7lt{min-width:0;padding:20px 24px 20px 0}.voice-search.svelte-19fh7lt{display:flex;align-items:center;gap:10px;color:var(--muted);margin-bottom:20px}.voice-search.svelte-19fh7lt input:where(.svelte-19fh7lt){width:100%}.voice-grid.svelte-19fh7lt{display:grid;grid-template-columns:repeat(auto-fill,minmax(165px,1fr));gap:12px;max-height:60dvh;overflow:auto}.voice-tile.svelte-19fh7lt{display:grid!important;grid-template-columns:32px minmax(0,1fr);text-align:left;justify-content:stretch!important;padding:14px;background:var(--panel);border:1px solid var(--line)}.voice-tile.active.svelte-19fh7lt{border-color:var(--cyan)}.voice-tile.svelte-19fh7lt strong:where(.svelte-19fh7lt){overflow-wrap:anywhere}.voice-avatar.svelte-19fh7lt{display:grid;place-items:center;width:32px;height:32px;background:var(--active-bg);color:var(--cyan);border-radius:50%}.voice-excerpt.svelte-19fh7lt{grid-column:1/-1;color:var(--muted);font-size:12px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden}.voice-editor.svelte-19fh7lt{min-width:0;padding:20px 0 20px 24px;border-left:1px solid var(--line)}.voice-editor.svelte-19fh7lt label:where(.svelte-19fh7lt){display:grid;gap:8px;margin:18px 0;font-size:12px;color:var(--muted)}.voice-editor.svelte-19fh7lt input:where(.svelte-19fh7lt),.voice-editor.svelte-19fh7lt textarea:where(.svelte-19fh7lt){width:100%}.tools.svelte-19fh7lt,.voice-use.svelte-19fh7lt{display:flex;gap:8px;flex-wrap:wrap;margin-top:24px}.icon.svelte-19fh7lt{width:36px;height:36px;padding:0}.voice-empty.svelte-19fh7lt{display:grid;justify-items:center;align-content:center;min-height:220px;color:var(--muted)}.library-error.svelte-19fh7lt{color:var(--danger)}@media(max-width:700px){.library-layout.svelte-19fh7lt{display:block}.voice-browser.svelte-19fh7lt{padding-right:0}.voice-grid.svelte-19fh7lt{max-height:32dvh;grid-template-columns:repeat(2,minmax(0,1fr))}.voice-editor.svelte-19fh7lt{border-left:0;border-top:1px solid var(--line);padding:20px 0}}button.svelte-99kkwg{min-height:34px}.model-choice.svelte-99kkwg{min-width:0}label.svelte-99kkwg{display:grid;gap:8px;font-size:13px;color:var(--muted)}select.svelte-99kkwg,input.svelte-99kkwg,textarea.svelte-99kkwg{width:100%;min-width:0}.choice-meta.svelte-99kkwg{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:8px;font-size:11px;color:var(--muted)}.choice-meta.svelte-99kkwg button:where(.svelte-99kkwg){font-size:12px;padding:6px 10px;border:1px solid var(--line);color:var(--text)}.choice-settings.svelte-99kkwg{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:16px 0}.choice-settings.svelte-99kkwg input[type=checkbox]:where(.svelte-99kkwg){width:18px;height:18px}details.svelte-99kkwg{margin:12px 0;font-size:12px}textarea.svelte-99kkwg{margin:12px 0}[role=alert].svelte-99kkwg{color:var(--danger)}.empty-choice.svelte-99kkwg{font-size:12px;color:var(--muted);line-height:1.6}.voice-choice.svelte-66z6ov{min-width:0}label.svelte-66z6ov{display:grid;gap:8px;font-size:13px;color:var(--muted)}select.svelte-66z6ov,textarea.svelte-66z6ov{width:100%;min-width:0}p.svelte-66z6ov{font-size:12px;color:var(--muted);margin:8px 0 0;line-height:1.5}.upload.svelte-66z6ov{margin-top:10px;font-size:12px}.upload.svelte-66z6ov input:where(.svelte-66z6ov){width:100%;font-size:12px;margin-top:4px}audio.svelte-66z6ov{width:100%;height:34px;margin:12px 0}details.svelte-66z6ov{margin-top:12px;font-size:12px}summary.svelte-66z6ov{cursor:pointer;padding:8px 0}details.svelte-66z6ov>button:where(.svelte-66z6ov){margin-top:12px;min-height:36px}[role=alert].svelte-66z6ov{color:var(--danger)}dialog.svelte-8dlqpu{width:min(620px,calc(100vw - 28px));max-height:calc(100dvh - 40px);padding:0;border:1px solid var(--line);border-radius:14px;background:var(--panel);color:var(--text);box-shadow:0 30px 100px #0005}dialog.svelte-8dlqpu::backdrop{background:#05060db3;backdrop-filter:blur(3px)}header.svelte-8dlqpu{display:flex;align-items:center;gap:14px;padding:24px;border-bottom:1px solid var(--line)}.speaker-symbol.svelte-8dlqpu{display:grid;place-items:center;background:var(--active-bg);color:var(--cyan);height:42px;width:42px;border-radius:50%;flex-shrink:0}h2.svelte-8dlqpu{margin:0 0 6px;font-size:19px}p.svelte-8dlqpu{margin:0;font-size:12px;color:var(--muted);line-height:1.6}button.svelte-8dlqpu{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:36px;font-size:12px}.close.svelte-8dlqpu{margin-left:auto;padding:7px;background:transparent;border:0}.dialog-body.svelte-8dlqpu .choice-meta>span{display:none}.dialog-body.svelte-8dlqpu .choice-meta button{border:0;background:transparent;padding:0;min-height:36px;color:var(--cyan);font-size:12px}.dialog-body.svelte-8dlqpu{padding:24px;display:grid;gap:22px;max-height:calc(100dvh - 240px);overflow:auto}label.svelte-8dlqpu{display:grid;gap:8px;font-size:12px;color:var(--muted)}input.svelte-8dlqpu,select.svelte-8dlqpu{width:100%;min-width:0}footer.svelte-8dlqpu{display:flex;align-items:center;gap:10px;padding:18px 24px;border-top:1px solid var(--line)}footer.svelte-8dlqpu span:where(.svelte-8dlqpu){margin-right:auto;font-size:11px;color:var(--muted);max-width:200px;line-height:1.5}.save-speaker.svelte-8dlqpu{color:var(--text-invert);background:var(--cyan);border-color:var(--cyan);padding-inline:16px}[role=alert].svelte-8dlqpu{color:var(--danger)}button.svelte-8dlqpu:focus-visible{outline:2px solid var(--cyan);outline-offset:3px}@media(max-width:600px){header.svelte-8dlqpu,.dialog-body.svelte-8dlqpu{padding:20px}footer.svelte-8dlqpu{padding:16px 20px;flex-wrap:wrap}footer.svelte-8dlqpu span:where(.svelte-8dlqpu){flex-basis:100%;max-width:none}footer.svelte-8dlqpu button:where(.svelte-8dlqpu):first-of-type{margin-left:auto}.speaker-symbol.svelte-8dlqpu{display:none}}header.svelte-1rz8r6m{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:8px 0 12px}h1.svelte-1rz8r6m{margin:0;font-size:24px}h2.svelte-1rz8r6m{font-size:18px;margin:0;overflow-wrap:anywhere}p.svelte-1rz8r6m{font-size:13px;color:var(--muted);line-height:1.6}header.svelte-1rz8r6m p:where(.svelte-1rz8r6m){margin:8px 0 0}.purpose.svelte-1rz8r6m{margin:0 0 24px}button.svelte-1rz8r6m{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:38px}.speaker-layout.svelte-1rz8r6m{display:grid;grid-template-columns:minmax(0,1fr) minmax(270px,370px);border-top:1px solid var(--line)}.browser.svelte-1rz8r6m{min-width:0;padding:22px 24px 22px 0}.search.svelte-1rz8r6m{display:flex;align-items:center;gap:10px;color:var(--muted);margin-bottom:20px}input.svelte-1rz8r6m{width:100%;min-width:0}.speaker-grid.svelte-1rz8r6m{display:grid;grid-template-columns:repeat(auto-fill,minmax(185px,1fr));gap:12px;max-height:56dvh;overflow:auto}.speaker-tile.svelte-1rz8r6m{flex-direction:column;align-items:flex-start;padding:18px;gap:8px;text-align:left;background:var(--panel);border:1px solid var(--line)}.speaker-tile.active.svelte-1rz8r6m{border-color:var(--cyan);background:var(--active-bg)}.speaker-tile.svelte-1rz8r6m>span:where(.svelte-1rz8r6m):not(.avatar),small.svelte-1rz8r6m{color:var(--muted);font-size:12px;overflow-wrap:anywhere}.speaker-tile.svelte-1rz8r6m:hover>span:where(.svelte-1rz8r6m):not(.avatar),.speaker-tile.svelte-1rz8r6m:hover small:where(.svelte-1rz8r6m){color:var(--text)}strong.svelte-1rz8r6m{overflow-wrap:anywhere}.avatar.svelte-1rz8r6m{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:var(--active-bg);color:var(--cyan);margin-bottom:4px}aside.svelte-1rz8r6m{min-width:0;border-left:1px solid var(--line);padding:24px}dl.svelte-1rz8r6m{display:grid;grid-template-columns:auto minmax(0,1fr);gap:14px;margin:24px 0;font-size:13px}dt.svelte-1rz8r6m{color:var(--muted)}dd.svelte-1rz8r6m{margin:0;overflow-wrap:anywhere}.tools.svelte-1rz8r6m{display:flex;gap:8px;flex-wrap:wrap}.delete.svelte-1rz8r6m{color:var(--danger)}.empty.svelte-1rz8r6m{display:grid;justify-items:center;align-content:center;text-align:center;min-height:220px;gap:14px;color:var(--muted);padding:24px}.empty.svelte-1rz8r6m p:where(.svelte-1rz8r6m){margin:0;max-width:320px}[role=alert].svelte-1rz8r6m{color:var(--danger)}@media(max-width:700px){header.svelte-1rz8r6m{flex-wrap:wrap}.speaker-layout.svelte-1rz8r6m{display:block}.browser.svelte-1rz8r6m{padding-right:0}.speaker-grid.svelte-1rz8r6m{max-height:36dvh;grid-template-columns:repeat(2,minmax(0,1fr))}aside.svelte-1rz8r6m{border-left:0;border-top:1px solid var(--line);padding:24px 0}}@media(max-width:380px){.speaker-grid.svelte-1rz8r6m{grid-template-columns:1fr}}.library-tabs.svelte-inevtl{display:flex;gap:8px;padding-bottom:16px;margin-bottom:16px;border-bottom:1px solid var(--line)}button.svelte-inevtl{display:inline-flex;align-items:center;gap:8px;min-height:38px}button.active.svelte-inevtl{color:var(--cyan);border-color:var(--cyan);background:var(--active-bg)}:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:var(--text);background:var(--bg);font-synthesis:none;--bg: #07101f;--panel: #0d192b;--panel-2: #101f34;--line: #233652;--muted: #8ca3c3;--text: #dce8fa;--text-strong: #f4f8ff;--text-label: #b8cae4;--text-subtle: #9fbbdc;--text-invert: #041619;--cyan: #42e8d5;--blue: #6aa8ff;--danger: #ff778b;--body-glow: rgba(45, 107, 189, .2);--topbar-bg: rgba(7, 16, 31, .88);--panel-bg: linear-gradient(180deg, rgba(16,31,52,.98), rgba(11,23,40,.98));--control-bg: #081426;--control-border: #2a405f;--control-disabled: #45566f;--button-bg: #14243b;--button-hover-bg: #1a304e;--button-hover-border: #4f719d;--active-bg: #0d2934;--active-border: #347d8f;--card-bg: #081426;--code-bg: #071220;--icon-bg: #122b45;--file-button-bg: #a8c8f6;--chip-bg: #071426;--panel-shadow: rgba(0,0,0,.16);--folder-backdrop: rgba(2, 8, 17, .78);--footer-text: #607a9d}:root:not([data-theme]),:root[data-theme=mocha]{--bg: #1e1e2e;--panel: #181825;--panel-2: #313244;--line: #45475a;--muted: #a6adc8;--text: #cdd6f4;--text-strong: #cdd6f4;--text-label: #bac2de;--text-subtle: #a6adc8;--text-invert: #11111b;--cyan: #94e2d5;--blue: #89b4fa;--danger: #f38ba8;--body-glow: transparent;--topbar-bg: #181825;--panel-bg: #181825;--control-bg: #1e1e2e;--control-border: #585b70;--control-disabled: #6c7086;--button-bg: #313244;--button-hover-bg: #45475a;--button-hover-border: #89b4fa;--active-bg: #313244;--active-border: #94e2d5;--card-bg: #1e1e2e;--code-bg: #11111b;--icon-bg: #313244;--file-button-bg: #b4befe;--chip-bg: #313244;--panel-shadow: rgba(17, 17, 27, .2);--folder-backdrop: rgba(17, 17, 27, .78);--footer-text: #a6adc8}:root[data-theme=light]{--bg: #f6f8fb;--panel: #ffffff;--panel-2: #edf3fa;--line: #cbd7e6;--muted: #5e7189;--text: #182335;--text-strong: #0b1220;--text-label: #31435c;--text-subtle: #50657e;--text-invert: #041619;--cyan: #087f7a;--blue: #256fc9;--danger: #c43853;--body-glow: rgba(37, 111, 201, .12);--topbar-bg: rgba(246, 248, 251, .88);--panel-bg: linear-gradient(180deg, rgba(255,255,255,.98), rgba(243,247,252,.98));--control-bg: #ffffff;--control-border: #b8c7da;--control-disabled: #9aaabc;--button-bg: #edf3fa;--button-hover-bg: #dfeaf6;--button-hover-border: #94abc5;--active-bg: #e6f7f5;--active-border: #11857f;--card-bg: #ffffff;--code-bg: #f0f5fa;--icon-bg: #e4f1f6;--file-button-bg: #d6e7fb;--chip-bg: #edf3fa;--panel-shadow: rgba(31, 47, 70, .08);--folder-backdrop: rgba(16, 29, 44, .38);--footer-text: #6c7e93}:root[data-theme=paper]{color-scheme:light;--bg: #f7f7f8;--panel: #ffffff;--panel-2: #eeeeef;--line: #dedee2;--muted: #68686f;--text: #34343a;--text-strong: #202024;--text-label: #494950;--text-subtle: #68686f;--text-invert: #ffffff;--cyan: #202024;--blue: #b95721;--green: #247149;--danger: #b4233a;--body-glow: transparent;--topbar-bg: #f7f7f8;--panel-bg: #ffffff;--control-bg: #ffffff;--control-border: #ceced4;--control-disabled: #77777f;--button-bg: #ffffff;--button-hover-bg: #eeeeef;--button-hover-border: #aaaab3;--active-bg: #eeeeef;--active-border: #8c8c96;--card-bg: #ffffff;--code-bg: #f1f1f3;--icon-bg: #eeeeef;--file-button-bg: #202024;--chip-bg: #eeeeef;--panel-shadow: rgba(20,20,24,.04);--folder-backdrop: rgba(20,20,24,.35);--footer-text: #68686f}:root[data-theme=paper] button.primary,:root[data-theme=paper] button.run,:root[data-theme=paper] .brand .mark{background:var(--cyan)}:root[data-theme=paper] .hero-stat{background:var(--panel)}:root[data-theme=paper] .hint{background:#faf1eb}:root[data-theme=paper] .status.warning{color:#954215}:root[data-theme=paper] button.danger{color:var(--danger);border-color:#e3bac2;background:#fff0f3}:root[data-theme=paper] .live-card{border-color:var(--line);background:var(--panel)}:root[data-theme=paper] .server-pill i,:root[data-theme=paper] .recording-dot:before,:root[data-theme=paper] .studio-package-buttons button.resident:after,:root[data-theme=paper] .single-model-toggle.resident:after{box-shadow:none}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:radial-gradient(circle at 82% -10%,var(--body-glow),transparent 30rem),var(--bg)}button,input,textarea,select{font:inherit}button{color:inherit}.topbar{height:58px;padding:0 max(20px,calc((100vw - 1600px)/2));display:flex;align-items:center;gap:26px;border-bottom:1px solid var(--line);background:var(--topbar-bg);backdrop-filter:blur(18px);position:sticky;top:0;z-index:20}.brand{display:flex;align-items:center;gap:9px;min-width:190px}.brand .mark{width:30px;height:30px;display:grid;place-items:center;font-weight:900;color:var(--text-invert);background:linear-gradient(135deg,var(--cyan),var(--blue));border-radius:8px}.brand strong{display:block;font-size:15px;letter-spacing:-.02em}.brand span{display:block;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.13em}nav{display:flex;height:100%}nav button{border:0;border-bottom:2px solid transparent;background:transparent;padding:0 16px;color:var(--muted);cursor:pointer}nav button:hover,nav button.active{color:var(--text-strong)}nav button.active{border-color:var(--cyan)}.language-picker,.theme-picker{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.08em}.language-picker{margin-left:auto}.language-picker select,.theme-picker select{min-width:112px;height:30px;padding:0 28px 0 10px;border:1px solid var(--line);border-radius:8px;background:var(--control-bg);color:var(--text);cursor:pointer}.server-pill{padding:6px 10px;border:1px solid var(--line);border-radius:999px;color:var(--muted);font-size:11px;text-transform:uppercase}.server-pill i{display:inline-block;width:7px;height:7px;border-radius:50%;background:#64748b;margin-right:7px}.server-pill.online i{background:var(--cyan);box-shadow:0 0 12px var(--cyan)}main{max-width:1600px;margin:auto;padding:18px 20px 36px}.workflow-tabs{display:grid;grid-template-columns:repeat(8,minmax(126px,1fr));gap:6px;height:auto;margin:0 0 16px;overflow-x:auto;scrollbar-width:thin}.workflow-tabs button{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:126px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:color-mix(in srgb,var(--panel) 88%,transparent);color:var(--muted);font-size:11px;text-align:left}.workflow-tabs button:hover,.workflow-tabs button.active{color:var(--text-strong);border-color:var(--active-border);background:var(--active-bg)}.workflow-tabs button.active{box-shadow:inset 0 -2px 0 var(--cyan)}.workflow-tabs small{display:grid;place-items:center;min-width:18px;height:18px;padding:0 5px;border-radius:999px;color:var(--text-subtle);background:var(--chip-bg);font-size:10px}.hero{display:flex;justify-content:space-between;align-items:center;gap:22px;padding:1px 4px 16px}.eyebrow{color:var(--cyan)!important;font-size:11px!important;font-weight:800;letter-spacing:.18em;margin:0 0 9px!important}h1{font-size:clamp(28px,3vw,40px);line-height:1;letter-spacing:-.04em;margin:0 0 8px;color:var(--text-strong)}.hero p,.page-head p{margin:0;max-width:720px;color:var(--muted);font-size:13px}.hero-stat{width:min(360px,32vw);padding:11px 14px;background:linear-gradient(135deg,color-mix(in srgb,var(--cyan) 10%,transparent),color-mix(in srgb,var(--blue) 5%,transparent));border:1px solid var(--line);border-radius:11px}.hero-stat span,.hero-stat small{display:block;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.1em}.hero-stat strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:3px 0 5px;font-size:14px}.hero-stat small.ready{color:var(--cyan)}.studio-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:24px;align-items:start}.studio-heading{padding:4px 0 18px;gap:16px}.studio-heading h1{font-size:24px;line-height:1.2;letter-spacing:0}.studio-heading .eyebrow{display:none}.studio-heading p{font-size:12px}.studio-model-status{flex-shrink:0;color:var(--muted);font-size:12px}.studio-model-status.ready{color:var(--cyan)}.studio-grid>.studio-model-toolbar{grid-column:1 / -1;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;gap:12px 24px;padding:16px 0;border-block:1px solid var(--line)}.studio-model-picker,.studio-model-packages{min-width:0}.studio-model-toolbar .hint{grid-column:1 / -1;margin:0;padding:0;border:0;background:none}.studio-model-toolbar .studio-package-buttons{margin:0;grid-template-columns:repeat(auto-fit,minmax(90px,1fr))}.studio-model-toolbar .studio-package-buttons button{font-size:12px;padding:8px 12px;overflow-wrap:anywhere}.studio-model-toolbar .single-model-toggle{margin-top:0;font-size:12px}.studio-grid>.controls{min-width:0;padding:0}.studio-grid>.output{min-width:0;padding:0 0 0 24px;border-left:1px solid var(--line)}.studio-grid .section-title{min-height:40px;gap:12px;flex-wrap:wrap;margin-bottom:16px}.studio-grid .section-title span{letter-spacing:0}.studio-grid .section-title h2{font-size:18px}.studio-request-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.studio-request-actions .settings-import{margin:0;font-size:11px}.studio-grid label,.studio-grid summary{font-size:12px}.studio-grid .path-state{font-size:11px;flex-wrap:wrap}.studio-response-details pre{padding:12px;margin:0}.studio-grid .task-chip{border-radius:4px}.studio-grid .runbar{position:sticky;bottom:0;z-index:2;margin-top:20px;padding:12px 0;border-top:1px solid var(--line);background:var(--bg)}.studio-grid .run{background:var(--cyan)}.studio-grid .audio-list article{border-radius:8px}.studio-grid .audio-list article>div{gap:12px;flex-wrap:wrap;overflow-wrap:anywhere}.studio-grid .output pre{overflow:auto;max-height:360px}.studio-grid .studio-input-section,.arena-grid .arena-input-section{min-width:0;margin:20px 0;padding-top:18px;border-top:1px solid var(--line)}.studio-grid .section-title+input+.studio-input-section{margin-top:0;padding-top:0;border-top:0}.studio-grid .studio-section-label,.arena-grid .arena-section-label{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 12px;font-size:14px;font-weight:650;color:var(--text-strong)}.studio-grid .studio-section-label span,.arena-grid .arena-section-label span{color:var(--muted);font-size:11px;font-weight:400}.studio-grid .studio-section-label svg,.arena-grid .arena-section-label svg{color:var(--muted);flex-shrink:0}.studio-grid .controls button{display:inline-flex;align-items:center;justify-content:center;gap:7px}.studio-grid .controls button svg,.studio-grid .file-picker svg{flex-shrink:0}.studio-grid .controls .studio-icon-button{width:32px;height:32px;padding:0;flex-shrink:0}.studio-grid .media-actions{flex-wrap:wrap;margin-block:10px}.studio-grid .field-grid,.arena-grid .field-grid{gap:12px;margin-block:18px;grid-template-columns:repeat(2,minmax(0,1fr))}.studio-grid .field-grid>div>label,.arena-grid .field-grid>div>label{margin-top:0}.studio-grid .field-grid:empty,.arena-grid .field-grid:empty{display:none}.studio-grid .vibevoice-speakers{margin-block:20px;padding-top:18px;border-top:1px solid var(--line)}.studio-grid .studio-options,.arena-grid .arena-options{border:0;border-top:1px solid var(--line);border-radius:0;overflow:visible}.studio-grid .studio-options>summary,.arena-grid .arena-options>summary{display:flex;align-items:center;gap:8px;padding:14px 0;background:none}.studio-grid .studio-options>summary:before,.arena-grid .arena-options>summary:before{content:"+";width:12px;color:var(--muted)}.studio-grid .studio-options[open]>summary:before,.arena-grid .arena-options[open]>summary:before{content:"-"}.studio-grid .studio-options>summary span,.arena-grid .arena-options>summary span{float:none;margin-left:auto;font-variant-numeric:tabular-nums}.studio-grid .studio-options>.parameter-grid{padding:0 0 16px;gap:14px 16px;grid-template-columns:repeat(2,minmax(0,1fr))}.studio-grid .studio-options>.parameter-grid label{margin-top:0}.studio-grid .studio-options>.parameter-grid small{font-size:11px;line-height:1.5}.studio-grid .studio-options>.code,.arena-grid .arena-options>.code{border:1px solid var(--control-border);border-radius:6px;margin-bottom:14px}.panel{background:var(--panel-bg);border:1px solid var(--line);border-radius:11px;box-shadow:0 10px 32px var(--panel-shadow)}.model-rail,.controls,.output{padding:14px}.output{position:sticky;top:69px;min-height:470px}label{display:block;color:var(--text-label);font-size:11px;font-weight:650;margin:11px 0 5px}label:first-child{margin-top:0}label span{color:var(--muted);font-weight:400}.field-label{color:var(--text-label);font-size:11px;font-weight:650;margin:11px 0 5px}.field-label span{color:var(--muted);font-weight:400}input,textarea,select{width:100%;color:var(--text-strong);background:var(--control-bg);border:1px solid var(--control-border);border-radius:7px;padding:7px 9px;outline:none;transition:border .15s,box-shadow .15s;font-size:13px}textarea{resize:vertical;line-height:1.4}input:focus,textarea:focus,select:focus{border-color:var(--blue);box-shadow:0 0 0 3px #6aa8ff1f}select option:disabled{color:var(--control-disabled);background:var(--control-bg)}input.file{padding:6px;color:var(--muted)}input.file::file-selector-button{border:0;border-radius:5px;color:var(--text-invert);background:var(--file-button-bg);padding:5px 8px;margin-right:8px;cursor:pointer;font-weight:700}.file-native{position:absolute;width:1px!important;height:1px;padding:0!important;opacity:0;pointer-events:none}.file-picker{min-height:38px;display:flex;align-items:center;gap:10px;padding:5px 8px;border:1px solid var(--line);border-radius:6px;background:var(--control-bg);cursor:pointer;overflow:hidden}.file-picker strong{flex:0 0 auto;padding:5px 8px;border-radius:5px;color:var(--text-invert);background:var(--file-button-bg);font-size:11px}.file-picker span{min-width:0;overflow:hidden;color:var(--muted);font-weight:400;text-overflow:ellipsis;white-space:nowrap}.file-picker:hover{border-color:var(--active-border)}.path-state{display:flex;justify-content:space-between;gap:5px;color:var(--muted);font-size:10px;padding:6px 2px 1px}.path-state .good{color:var(--cyan)}.path-state .bad{color:var(--danger)}.button-row{display:flex;gap:7px;margin-top:11px}button{border:1px solid var(--line);border-radius:7px;background:var(--button-bg);padding:7px 10px;cursor:pointer;transition:transform .12s,border-color .12s,background .12s;font-size:13px}button:hover:not(:disabled){transform:translateY(-1px);border-color:var(--button-hover-border);background:var(--button-hover-bg)}button:disabled{opacity:.45;cursor:not-allowed}button.primary,button.run{color:var(--text-invert);background:linear-gradient(135deg,var(--cyan),#5ac7ff);border:0;font-weight:800}.button-row button{flex:1}.studio-package-buttons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;margin-top:11px}.studio-package-buttons button,.single-model-toggle{position:relative;min-width:0;min-height:38px;padding:6px 4px;font-size:9px;line-height:1.15}.studio-package-buttons button.selected-package:not(:disabled){border-color:var(--active-border);color:var(--cyan);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--cyan) 10%,transparent)}.studio-package-buttons button:disabled{color:var(--control-disabled);background:var(--panel-2);opacity:.48}.studio-package-buttons button.resident,.single-model-toggle.resident{padding-right:12px;border-color:var(--active-border);color:var(--text-strong);background:var(--active-bg);opacity:1}.studio-package-buttons button.resident:after,.single-model-toggle.resident:after{content:"";position:absolute;top:5px;right:5px;width:6px;height:6px;border-radius:50%;background:var(--cyan);box-shadow:0 0 8px #42e8d5e6}.single-model-toggle{width:100%;margin-top:11px}.hint{margin-top:12px;padding:9px;border-left:2px solid var(--blue);background:#6aa8ff12;color:var(--muted);font-size:11px;line-height:1.45;white-space:pre-wrap}.section-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.section-title span{color:var(--cyan);font-size:10px;letter-spacing:.14em;font-weight:800}.section-title h2{font-size:17px;margin:2px 0 0;color:var(--text-strong)}.task-chip{border:1px solid var(--line);border-radius:999px;padding:5px 8px;color:var(--muted)!important;letter-spacing:.08em!important;text-transform:uppercase}.field-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:0 12px}.reference-input-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 10px}.long-text-row{display:grid;grid-template-columns:1fr 150px;gap:10px;align-items:end;margin-top:2px}.long-text-row>.toggle{margin:0 0 8px}.media-actions{display:flex;align-items:center;gap:7px;margin-top:6px}.media-actions button{padding:7px 10px;font-size:11px}.media-actions>span{min-width:0;color:var(--muted);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.quick-voice-note{margin-top:5px;color:var(--muted);font-size:9px;line-height:1.4}button.danger{color:#ffd8df;border-color:#ff778b73;background:#7f1e3240}.recording-dot:before{content:"";display:inline-block;width:7px;height:7px;margin-right:6px;border-radius:50%;background:var(--danger);box-shadow:0 0 9px var(--danger)}.live-card{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:8px;padding:9px;border:1px solid rgba(66,232,213,.24);border-radius:8px;background:#42e8d50d}.live-card strong,.live-card small{display:block}.live-card strong{font-size:12px}.live-card small{max-width:380px;margin-top:3px;color:var(--muted);font-size:10px;line-height:1.4}details{margin-top:11px;border:1px solid var(--line);border-radius:8px;overflow:hidden}summary{cursor:pointer;padding:8px 10px;color:var(--text-label);font-size:11px;font-weight:700;background:color-mix(in srgb,var(--code-bg) 55%,transparent)}summary span{float:right;color:var(--muted);font-weight:500}.parameter-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1px 10px;padding:0 10px 10px}.parameter-grid .wide{grid-column:1/-1}.parameter-grid small{display:block;color:var(--muted);font-size:10px;line-height:1.4;margin-top:5px}.range{display:grid;grid-template-columns:1fr 46px;gap:8px;align-items:center}.range input{padding:0;accent-color:var(--cyan)}.range output{font:12px ui-monospace,monospace;text-align:right;color:var(--cyan)}.toggle{display:flex;align-items:center;gap:8px;margin-top:8px;font-weight:500}.toggle input{position:absolute;opacity:0;width:1px}.toggle span{width:34px;height:19px;border-radius:20px;background:var(--control-border);position:relative}.toggle span:after{content:"";position:absolute;top:3px;left:3px;width:13px;height:13px;border-radius:50%;background:var(--text-label);transition:.15s}.toggle input:checked+span{background:var(--cyan)}.toggle input:checked+span:after{transform:translate(15px);background:var(--panel)}.code,pre{font:12px/1.5 ui-monospace,SFMono-Regular,Consolas,monospace}details>.code{border:0;border-radius:0}.runbar{display:grid;grid-template-columns:120px 74px 1fr;gap:7px;align-items:center;margin-top:13px}.run{display:flex;align-items:center;justify-content:space-between;padding:9px 11px}kbd{font:9px ui-monospace,monospace;padding:2px 4px;border:1px solid rgba(0,0,0,.25);border-radius:4px}.status{color:var(--muted);font-size:12px;padding-left:8px;overflow-wrap:anywhere}.status.busy{color:var(--cyan)}.status.warning{color:#ff9aaa;font-weight:600}.status.error{color:var(--danger);font-weight:600}.empty-output{min-height:120px;display:grid;place-content:center;text-align:center;color:var(--muted)}.empty-output .wave{font-size:62px;line-height:.7;color:var(--line)}.audio-list{display:grid;gap:12px}.audio-list article{padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--card-bg)}.audio-list article>div{display:flex;justify-content:space-between;margin-bottom:9px;font-size:12px}.audio-list a{color:var(--cyan);text-decoration:none}.settings-download{color:var(--cyan);font-size:12px;white-space:nowrap}.settings-import{display:block;margin:0 0 12px auto}.generation-history{margin-bottom:14px}.history-actions{display:flex;justify-content:flex-end;margin:8px 0}.history-error{color:var(--danger);font-size:12px;overflow-wrap:anywhere;margin-top:8px}.generation-history ul{list-style:none;padding:0;margin:0;max-height:220px;overflow:auto}.generation-history li{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;border-bottom:1px solid var(--line)}.history-select{display:grid;gap:4px;text-align:left;border:0;background:transparent;min-width:0}.history-select strong{font-size:12px;overflow-wrap:anywhere}.history-select small{color:var(--muted);font-size:11px}.generation-history li.active .history-select{color:var(--cyan)}.utility-weights-link{display:block;margin:8px 0;color:var(--cyan);font-size:12px;overflow-wrap:anywhere}audio{width:100%;height:38px}.transcript{margin-top:14px}pre{background:var(--code-bg);border:1px solid var(--line);border-radius:8px;padding:10px;overflow:auto;max-height:250px;color:var(--text-subtle);white-space:pre-wrap;overflow-wrap:anywhere}.arena-hero{align-items:center;gap:20px;padding:4px 0 20px;margin-bottom:20px;border-bottom:1px solid var(--line)}.arena-hero h1{font-size:24px;line-height:1.2;letter-spacing:0}.arena-hero .eyebrow{display:none}.arena-hero p{font-size:12px}.arena-mode-switch{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:3px;width:360px;max-width:100%;flex-shrink:0;padding:3px;border:1px solid var(--line);border-radius:8px;background:var(--panel)}.arena-mode-switch button{padding:8px 10px;border-color:transparent;background:none;font-size:12px}.arena-mode-switch button.active{border-color:var(--active-border);color:var(--cyan);background:var(--active-bg)}.arena-grid{display:grid;grid-template-columns:minmax(0,.28fr) minmax(220px,.22fr) minmax(0,.5fr);gap:24px;align-items:start}.arena-inputs,.arena-queue,.arena-results{min-width:0}.arena-queue{position:sticky;top:78px;display:flex;flex-direction:column;max-height:max(300px,calc(100dvh - 260px));padding-left:24px;border-left:1px solid var(--line)}.arena-queue>.section-title,.arena-add-row{flex-shrink:0}.arena-results{padding-left:24px;border-left:1px solid var(--line);min-height:480px}.arena-grid .section-title{min-height:40px;gap:12px;flex-wrap:wrap;margin-bottom:16px}.arena-grid .section-title span{letter-spacing:0}.arena-grid .section-title h2{font-size:18px}.arena-grid .task-chip{border-radius:4px}.arena-grid label,.arena-grid summary{font-size:12px}.arena-inputs .reference-input-grid{grid-template-columns:minmax(0,1fr)}.arena-inputs>.section-title+.arena-input-section{margin-top:0;padding-top:0;border-top:0}.arena-inputs button,.arena-add-row button,.arena-items button,.arena-runbar button{display:inline-flex;align-items:center;justify-content:center;gap:7px}.arena-grid button svg,.arena-grid .file-picker svg{flex-shrink:0}.arena-add-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:end}.arena-add-row>div:first-child{grid-column:1 / -1}.arena-add-row button{min-width:72px;margin-bottom:0}.arena-items,.arena-result-list{display:grid;margin-top:12px}.arena-items{min-height:0;overflow-y:auto;overscroll-behavior-y:contain;scrollbar-gutter:stable}.arena-items article{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 9px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line)}.arena-items article>div{grid-column:1 / -1}.arena-items .arena-status{text-align:left}.arena-items article button{font-size:11px}.arena-items strong,.arena-items span,.arena-result-list strong,.arena-result-list span{display:block}.arena-items strong{font-size:12px;overflow-wrap:anywhere}.arena-items span,.arena-result-list span{color:var(--muted);font-size:11px}.arena-status{text-align:right;text-transform:capitalize}.arena-grid article.done .arena-status{color:var(--cyan)}.arena-grid article.failed .arena-status{color:var(--danger)}.arena-actions{grid-column:1 / -1;position:sticky;bottom:0;z-index:3;display:flex;align-items:center;gap:20px;padding:14px 0;border-top:1px solid var(--line);background:var(--bg)}.arena-grid .arena-runbar{grid-template-columns:minmax(160px,240px) auto auto;margin:0}.arena-runbar .run{background:var(--cyan);gap:8px;flex-wrap:wrap}.arena-runbar kbd{display:none}.arena-actions>.status{flex:1;min-width:0;padding:0}.arena-results .arena-result-order{margin:0 0 12px;color:var(--muted);font-size:12px}.arena-result-list article{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;padding:20px 0;border-top:1px solid var(--line)}.arena-result-list header{display:grid;grid-template-columns:32px minmax(0,1fr) auto;align-items:start;gap:12px}.arena-result-list .arena-result-number{font:13px ui-monospace,monospace;padding-top:2px}.arena-result-identity strong{font-size:15px;overflow-wrap:anywhere}.arena-result-identity span{margin-top:4px;overflow-wrap:anywhere}.arena-result-list audio{margin-top:8px}.arena-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:0}.arena-metrics dt{color:var(--muted);font-size:11px;text-transform:uppercase}.arena-metrics dd{margin:5px 0 0;color:var(--text-strong);font:14px ui-monospace,monospace;overflow-wrap:anywhere}.arena-result-list p{margin:0;color:var(--muted);font-size:12px;line-height:1.4}.arena-results>.empty-output{min-height:300px}.arena-result-list .arena-error{color:var(--danger);overflow-wrap:anywhere}.page-head{padding:18px 4px 28px}.page-head h1{font-size:42px}.install-progress{grid-column:1/-1;width:100%;min-width:0;max-width:100%}.install-progress-head{display:flex;justify-content:space-between;gap:8px;color:var(--muted);font-size:9px}.install-progress-head strong{color:var(--blue);text-transform:uppercase}.install-progress.complete .install-progress-head strong,.install-progress.cleaned .install-progress-head strong{color:var(--cyan)}.install-progress.failed .install-progress-head strong,.install-progress.cancelled .install-progress-head strong{color:var(--danger)}.install-progress-track{position:relative;height:6px;margin:5px 0 4px;overflow:hidden;border:1px solid var(--line);border-radius:999px;background:var(--code-bg)}.install-progress-track span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#1c9cba,var(--cyan));transition:width .25s ease}.install-progress.failed .install-progress-track span,.install-progress.cancelled .install-progress-track span{background:var(--danger)}.install-progress.complete .install-progress-track span,.install-progress.cleaned .install-progress-track span{background:var(--cyan)}.install-progress-track.indeterminate span{width:35%!important;animation:install-scan 1.2s ease-in-out infinite}.install-status{min-width:0;max-width:100%;color:var(--muted);font-size:9px;line-height:1.35;text-align:left;overflow-wrap:anywhere;word-break:break-word;white-space:normal}.install-actions{display:flex;justify-content:flex-end;margin-top:6px}.install-actions button{padding:5px 7px;font-size:9px}@keyframes install-scan{0%{transform:translate(-110%)}to{transform:translate(300%)}}.folder-browser-backdrop{position:fixed;inset:0;z-index:100;display:grid;padding:24px;place-items:center;background:var(--folder-backdrop);backdrop-filter:blur(5px)}.folder-browser-dialog{display:grid;grid-template-rows:auto auto auto auto minmax(180px,1fr) auto;width:min(760px,94vw);max-height:min(720px,90vh);padding:18px}.folder-browser-dialog>header{display:flex;align-items:start;justify-content:space-between;gap:20px}.folder-browser-dialog>header span{color:var(--cyan);font-size:9px;font-weight:800;letter-spacing:.14em}.folder-browser-dialog>header h2{margin:3px 0 12px;font-size:20px}.folder-browser-dialog>header button{padding:5px 9px;font-size:11px}.folder-browser-location{padding:9px 11px;border:1px solid var(--line);border-radius:7px;background:var(--code-bg);color:var(--text-label);font:11px ui-monospace,monospace;overflow-wrap:anywhere}.folder-browser-roots,.folder-browser-toolbar{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.folder-browser-roots button,.folder-browser-toolbar button{padding:5px 9px;font-size:10px}.folder-browser-list{display:grid;align-content:start;gap:4px;margin-top:10px;padding:5px;overflow-y:auto;border:1px solid var(--line);border-radius:8px;background:var(--code-bg)}.folder-browser-list button{display:flex;align-items:center;gap:9px;min-width:0;padding:8px 10px;border-color:transparent;background:transparent;text-align:left}.folder-browser-list button span:last-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.folder-icon{color:var(--cyan);font:10px ui-monospace,monospace}.folder-browser-empty,.folder-browser-error{display:grid;min-height:180px;margin-top:10px;place-items:center;border:1px solid var(--line);border-radius:8px;color:var(--muted);font-size:12px}.folder-browser-error{color:var(--danger)}.folder-browser-dialog>footer{display:flex;justify-content:flex-end;gap:8px;max-width:none;margin-top:12px;padding:0;border:0}.log-panel{padding:20px}.runtime-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:14px}.runtime-cards div{padding:16px;background:var(--card-bg);border:1px solid var(--line);border-radius:10px}.runtime-cards span{display:block;color:var(--muted);font-size:10px;text-transform:uppercase}.runtime-cards strong{display:block;margin-top:6px;font-size:21px;text-transform:capitalize}.logs{min-height:480px;max-height:70vh}footer{display:flex;justify-content:space-between;max-width:1600px;margin:auto;padding:14px 20px 20px;border-top:1px solid var(--line);color:var(--footer-text);font-size:10px}@media(max-width:1200px){body:has(.studio-grid,.arena-grid) .topbar{gap:12px}body:has(.studio-grid,.arena-grid) .brand{min-width:auto}body:has(.studio-grid,.arena-grid) .brand span,body:has(.studio-grid,.arena-grid) .language-picker span,body:has(.studio-grid,.arena-grid) .theme-picker span{display:none}.workflow-tabs{grid-template-columns:repeat(8,minmax(150px,1fr))}.studio-grid{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr)}.arena-grid{grid-template-columns:minmax(0,1fr) minmax(260px,.8fr)}.arena-results{grid-column:1 / -1;padding:24px 0 0;border-left:0;border-top:1px solid var(--line)}.output{grid-column:1/-1;position:static;min-height:300px}.studio-grid>.output{grid-column:auto}.empty-output{min-height:120px}}@media(max-width:820px){body:has(.studio-grid,.arena-grid) .topbar{height:auto;flex-wrap:wrap;padding-block:8px}body:has(.studio-grid,.arena-grid) .topbar nav{height:36px;max-width:100%;overflow-x:auto;flex-shrink:0}.topbar{padding:0 14px;gap:8px}.brand{min-width:auto}.brand span{display:none}nav{margin-left:auto}nav button{padding:0 10px}.language-picker{margin-left:0}.language-picker span,.theme-picker span,.server-pill{display:none}main{padding:22px 12px 40px}.workflow-tabs{margin-bottom:22px}.hero{align-items:start;flex-direction:column}.hero-stat{width:100%}.studio-grid,.arena-grid{grid-template-columns:1fr}.arena-results,.output{grid-column:auto}.field-grid,.parameter-grid{grid-template-columns:1fr}.studio-heading{flex-direction:row;flex-wrap:wrap}.studio-grid>.studio-model-toolbar{grid-template-columns:minmax(0,1fr);gap:14px}.studio-grid>.output{padding:20px 0 0;border-left:0;border-top:1px solid var(--line)}.studio-grid .runbar{position:static}.studio-grid .field-grid,.studio-grid .studio-options>.parameter-grid{grid-template-columns:minmax(0,1fr)}.arena-mode-switch{width:100%}.arena-hero{align-items:stretch}.arena-queue{position:static;max-height:none;padding:24px 0 0;border-left:0;border-top:1px solid var(--line)}.arena-items{max-height:280px}.arena-actions{flex-direction:column;align-items:stretch;gap:10px}.arena-grid .arena-runbar{grid-template-columns:minmax(0,1fr) auto auto}.arena-results{border-left:0;border-top:1px solid var(--line);padding:24px 0 0}.runbar{grid-template-columns:1fr 90px}.status{grid-column:1/-1}.runtime-cards{grid-template-columns:repeat(2,1fr)}}@media(max-width:520px){.topbar{height:auto;flex-wrap:wrap;padding-block:8px}.topbar nav{height:36px;max-width:100%;overflow-x:auto}.topbar nav button{flex-shrink:0}.brand strong{font-size:14px}nav button{font-size:12px;padding:0 7px}.language-picker select,.theme-picker select{min-width:112px}.long-text-row,.reference-input-grid{grid-template-columns:1fr}.long-text-row>.toggle{margin-top:12px}footer{display:block}footer span{display:block;margin-top:5px}}.dubbing.svelte-16se0y2{max-width:1200px;margin:20px auto}header.svelte-16se0y2,h1.svelte-16se0y2,h2.svelte-16se0y2,.actions.svelte-16se0y2,.downloads.svelte-16se0y2,.downloads.svelte-16se0y2 a:where(.svelte-16se0y2){display:flex;align-items:center;gap:10px}header.svelte-16se0y2{justify-content:space-between;margin-bottom:24px}h1.svelte-16se0y2{margin:0;font-size:24px}h2.svelte-16se0y2{margin:0 0 16px;font-size:15px}header.svelte-16se0y2 button:where(.svelte-16se0y2){width:36px;height:36px;padding:0;flex-shrink:0;justify-content:center}.workspace.svelte-16se0y2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:32px}.inputs.svelte-16se0y2>section:where(.svelte-16se0y2){border-bottom:1px solid var(--line);padding:0 0 24px;margin-bottom:24px}.result.svelte-16se0y2{border-left:1px solid var(--line);padding-left:32px;min-width:0}label.svelte-16se0y2{display:grid;gap:8px;margin:0;font-size:13px;color:var(--muted);min-width:0}input.svelte-16se0y2,select.svelte-16se0y2,textarea.svelte-16se0y2{width:100%;min-width:0}input[type=file].svelte-16se0y2{font-size:12px}.language-fields.svelte-16se0y2{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:16px}.voice.svelte-16se0y2,details.svelte-16se0y2{margin-top:16px}details.svelte-16se0y2 label:where(.svelte-16se0y2){margin:12px 0}summary.svelte-16se0y2{cursor:pointer;font-size:13px;color:var(--muted)}.actions.svelte-16se0y2,.downloads.svelte-16se0y2{flex-wrap:wrap}.actions.svelte-16se0y2 span:where(.svelte-16se0y2),.empty.svelte-16se0y2,dt.svelte-16se0y2{color:var(--muted);font-size:12px}[role=alert].svelte-16se0y2{color:var(--danger);overflow-wrap:anywhere}.translation.svelte-16se0y2{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.7;margin:0 0 24px}audio.svelte-16se0y2{width:100%}dl.svelte-16se0y2{display:flex;flex-wrap:wrap;gap:24px;margin:24px 0}dd.svelte-16se0y2{margin:6px 0 0;font-size:14px;font-variant-numeric:tabular-nums}.downloads.svelte-16se0y2 a:where(.svelte-16se0y2){color:var(--cyan);font-size:13px;padding:8px 0}@media(max-width:760px){.workspace.svelte-16se0y2{grid-template-columns:minmax(0,1fr);gap:24px}.result.svelte-16se0y2{border-left:0;border-top:1px solid var(--line);padding:24px 0 0}h1.svelte-16se0y2{font-size:20px}}.preset-help.svelte-1utfzu5{color:var(--muted);font-size:11px;margin:10px 0 0;line-height:1.6}.speaker-panel.svelte-1utfzu5{display:flex;flex-direction:column;min-height:0;height:100%}header.svelte-1utfzu5{display:flex;align-items:center;justify-content:space-between;gap:10px}h3.svelte-1utfzu5{margin:0;font-size:15px}h4.svelte-1utfzu5{margin:0;font-size:13px}p.svelte-1utfzu5{font-size:12px;color:var(--muted);line-height:1.65;margin:0}.context.svelte-1utfzu5{padding:12px 0 20px}button.svelte-1utfzu5{display:inline-flex;align-items:center;justify-content:center;gap:7px;font-size:12px;min-height:34px}.icon.svelte-1utfzu5{padding:6px;min-height:30px;background:transparent;border:0}.speaker-cast.svelte-1utfzu5{min-height:0;overflow:auto;flex:0 1 auto}article.svelte-1utfzu5{display:flex;border:1px solid var(--line);border-radius:9px;margin-bottom:10px;padding:5px;align-items:center}article.assigned.svelte-1utfzu5{border-color:var(--cyan);background:var(--active-bg)}.speaker-card.svelte-1utfzu5{flex:1;min-width:0;justify-content:flex-start;text-align:left;border:0;background:transparent;padding:8px 5px;gap:10px}.avatar.svelte-1utfzu5{width:32px;height:32px;flex-shrink:0;display:grid;place-items:center;border-radius:50%;background:var(--button-bg);font-size:13px;color:var(--text)}.identity.svelte-1utfzu5{min-width:0;flex:1;display:grid;gap:5px}.identity.svelte-1utfzu5 strong:where(.svelte-1utfzu5){font-size:13px;font-weight:600;overflow-wrap:anywhere}.identity.svelte-1utfzu5 small:where(.svelte-1utfzu5){color:var(--muted);font-size:10px;line-height:1.5;overflow-wrap:anywhere}.default-note.svelte-1utfzu5{font-size:9px;color:var(--muted)}.speaker-card.svelte-1utfzu5 svg{flex-shrink:0;color:var(--cyan)}.edit-speaker.svelte-1utfzu5{align-self:flex-start}.add-speaker.svelte-1utfzu5{width:100%;background:transparent;border-style:dashed;margin-top:2px;flex-shrink:0}.empty-cast.svelte-1utfzu5{display:grid;gap:12px;justify-items:start;padding:18px 0 22px}.empty-cast.svelte-1utfzu5 svg{color:var(--muted)}.assignment-summary.svelte-1utfzu5{margin-top:24px;padding-top:20px;border-top:1px solid var(--line);display:grid;gap:10px}.assignment-summary.svelte-1utfzu5 .label:where(.svelte-1utfzu5){font-size:9px;letter-spacing:1.1px;color:var(--muted)}.assignment-summary.svelte-1utfzu5 p:where(.svelte-1utfzu5){font-size:11px}.assignment-summary.svelte-1utfzu5 button:where(.svelte-1utfzu5){width:100%;font-size:11px}.text-button.svelte-1utfzu5{background:transparent;border:0;color:var(--muted)}button.svelte-1utfzu5:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}.passage-navigator.svelte-zo1321{display:flex;flex-direction:column;height:100%;min-height:0}header.svelte-zo1321{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-bottom:18px;flex-shrink:0}h3.svelte-zo1321{font-size:15px;margin:0}h3.svelte-zo1321>span:where(.svelte-zo1321){color:var(--muted);font-size:11px;font-weight:400;margin-left:6px}button.svelte-zo1321{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:32px;font-size:11px}.icon.svelte-zo1321{padding:5px;background:transparent;border:0}.icon[aria-pressed=true].svelte-zo1321{color:var(--cyan)}.search-controls.svelte-zo1321{display:grid;gap:8px;margin-bottom:16px;flex-shrink:0}.search-controls.svelte-zo1321 input:where(.svelte-zo1321),.search-controls.svelte-zo1321 select:where(.svelte-zo1321){width:100%;min-width:0;font-size:11px}.passage-list.svelte-zo1321{overflow:auto;min-height:0;flex:1;scrollbar-width:thin}.passage-row.svelte-zo1321{width:100%;display:flex;justify-content:flex-start;align-items:start;gap:10px;padding:14px 8px;border:0;border-radius:0;background:transparent;text-align:left;font-weight:400}.passage-item.svelte-zo1321{display:flex;align-items:center;border-left:2px solid transparent;border-bottom:1px solid var(--line)}.passage-item.current.svelte-zo1321,.passage-row.current.svelte-zo1321{background:var(--active-bg);border-left-color:var(--cyan)}.number.svelte-zo1321{color:var(--muted);font-size:10px;flex-shrink:0;padding-top:2px}.passage-copy.svelte-zo1321{min-width:0;line-height:1.65;font-size:12px}.excerpt.svelte-zo1321{display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.passage-copy.svelte-zo1321 small:where(.svelte-zo1321){display:flex;align-items:center;font-size:9px;color:var(--muted);margin-top:8px;gap:4px;line-height:1.5}.passage-row.svelte-zo1321:hover .number:where(.svelte-zo1321),.passage-row.svelte-zo1321:hover .passage-copy:where(.svelte-zo1321) small:where(.svelte-zo1321){color:var(--text)}.readiness.svelte-zo1321{display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--muted);flex-shrink:0}.readiness.ready.svelte-zo1321{background:var(--cyan)}.bulk-checkbox.svelte-zo1321{width:14px;height:14px;margin-left:8px;flex-shrink:0}.rail-help.svelte-zo1321{margin:0 0 16px;font-size:11px;line-height:1.6;color:var(--muted)}.empty-outline.svelte-zo1321{display:grid;gap:14px;padding:28px 4px}.empty-number.svelte-zo1321{color:var(--muted);font-size:24px;font-weight:300;opacity:.5}h4.svelte-zo1321{margin:0;font-size:13px;font-weight:500}.empty-outline.svelte-zo1321 p:where(.svelte-zo1321){font-size:12px;color:var(--muted);line-height:1.7;margin:0}footer.svelte-zo1321{display:grid;gap:10px;padding-top:14px;border-top:1px solid var(--line);flex-shrink:0}.pagination.svelte-zo1321{display:flex;align-items:center;justify-content:space-between;font-size:11px;color:var(--muted)}.pagination.svelte-zo1321 button:where(.svelte-zo1321){padding:4px;border:0;background:transparent}.add-passage.svelte-zo1321{width:100%;background:transparent}.select-all.svelte-zo1321{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:11px}.select-all.svelte-zo1321 input:where(.svelte-zo1321){width:14px;height:14px}button.svelte-zo1321:focus-visible{outline:2px solid var(--cyan);outline-offset:-2px}.boundary-editor.svelte-1no116b{min-width:0;border:1px solid var(--line);border-radius:10px;padding:20px;background:var(--panel)}header.svelte-1no116b{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}h4.svelte-1no116b{font-size:17px;margin:6px 0 0}.eyebrow.svelte-1no116b{font-size:10px;letter-spacing:1.5px;color:var(--muted)}button.svelte-1no116b{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:38px;font-size:12px}.passages.svelte-1no116b{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:20px 0}.passages.svelte-1no116b>div:where(.svelte-1no116b){min-width:0;padding:12px;background:var(--control-bg);border-radius:6px}.passages.svelte-1no116b strong:where(.svelte-1no116b){font-size:11px;font-weight:500;color:var(--muted)}.passages.svelte-1no116b p:where(.svelte-1no116b){font-size:14px;line-height:1.7;max-height:100px;overflow:auto;margin:8px 0 0}.passages.svelte-1no116b small:where(.svelte-1no116b){display:block;color:var(--muted);font-size:12px;margin-top:8px}svg.svelte-1no116b{display:block;width:100%;height:130px;border:1px solid var(--line);border-radius:6px}.audio-region.svelte-1no116b{fill:var(--control-bg)}.inserted-gap.svelte-1no116b{fill:var(--cyan);fill-opacity:.15}.baseline.svelte-1no116b{stroke:var(--muted);stroke-opacity:.3}.wave.svelte-1no116b{stroke:var(--cyan);stroke-width:1.4}.wave.next.svelte-1no116b{stroke:var(--text)}.edge.svelte-1no116b{stroke:var(--muted);stroke-dasharray:4 4}.playhead.svelte-1no116b{stroke:var(--text);stroke-width:3}.wave-labels.svelte-1no116b{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;font-size:11px;color:var(--muted);margin:12px 0}.gap-label.svelte-1no116b{color:var(--cyan)}.wave-hint.svelte-1no116b,.click-hint.svelte-1no116b{font-size:12px;line-height:1.6;color:var(--muted)}.gap-controls.svelte-1no116b{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding-top:20px;border-top:1px solid var(--line);margin-top:20px}.gap-controls.svelte-1no116b>label:where(.svelte-1no116b){margin-right:auto;display:grid;gap:6px;font-size:13px}.gap-controls.svelte-1no116b label:where(.svelte-1no116b)>span:where(.svelte-1no116b){font-size:11px;color:var(--muted)}.pause-input.svelte-1no116b{display:flex;align-items:center;gap:8px}.pause-input.svelte-1no116b input:where(.svelte-1no116b){width:85px;min-height:38px;text-align:center;font-size:14px}.pause-input.svelte-1no116b>span:where(.svelte-1no116b){font-size:11px;color:var(--muted)}.pause-input.svelte-1no116b button:where(.svelte-1no116b){padding:8px;min-width:36px}.reset-pause.svelte-1no116b{background:transparent;font-size:11px}[role=alert].svelte-1no116b{color:var(--danger);font-size:13px}.missing-audio.svelte-1no116b{padding:24px 16px;border:1px dashed var(--line);color:var(--muted);font-size:13px;line-height:1.7}.click-hint.svelte-1no116b{margin-bottom:0}button.svelte-1no116b:focus-visible,input.svelte-1no116b:focus-visible{outline:2px solid var(--cyan);outline-offset:3px}@media(max-width:760px){.boundary-editor.svelte-1no116b{padding:16px}.passages.svelte-1no116b{grid-template-columns:1fr}.gap-controls.svelte-1no116b>label:where(.svelte-1no116b){flex-basis:100%}svg.svelte-1no116b{height:110px}}.wave-editor.svelte-1dg2w50{padding:20px;border-top:1px solid var(--line);min-width:0}header.svelte-1dg2w50{display:flex;justify-content:space-between;gap:16px;align-items:start}h4.svelte-1dg2w50{margin:0;font-size:17px}header.svelte-1dg2w50 p:where(.svelte-1dg2w50){font-size:13px;color:var(--muted);line-height:1.6;margin:8px 0 16px}header.svelte-1dg2w50>span:where(.svelte-1dg2w50){font-size:13px;white-space:nowrap;color:var(--cyan)}button.svelte-1dg2w50{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:36px;font-size:12px}.edit-toolbar.svelte-1dg2w50,.insert-toolbar.svelte-1dg2w50,.range-toolbar.svelte-1dg2w50{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:12px 0}.zoom.svelte-1dg2w50{font-size:12px}.viewport.svelte-1dg2w50{overflow-x:auto;border:1px solid var(--line);border-radius:6px}.wave-content.svelte-1dg2w50{position:relative;height:150px}svg.svelte-1dg2w50{position:sticky;left:0;display:block;height:150px;max-width:none;cursor:crosshair;overflow:hidden}.range-selection.svelte-1dg2w50{fill:var(--cyan);fill-opacity:.35;stroke:var(--cyan);pointer-events:none}.selection-hint.svelte-1dg2w50{font-size:12px;color:var(--muted);line-height:1.6}svg.svelte-1dg2w50{touch-action:none}.wave-bg.svelte-1dg2w50{fill:var(--active-bg)}.wave.svelte-1dg2w50{stroke:var(--cyan);stroke-width:1.2;pointer-events:none}.baseline.svelte-1dg2w50{stroke:var(--muted);stroke-opacity:.3;pointer-events:none}.playhead.svelte-1dg2w50{stroke:var(--text);stroke-width:2;pointer-events:none}.silence-region.svelte-1dg2w50{fill:var(--cyan);fill-opacity:.18;cursor:pointer}.silence-region.chosen.svelte-1dg2w50{fill-opacity:.4;stroke:var(--cyan);stroke-width:2}.ruler.svelte-1dg2w50{display:flex;justify-content:space-between;gap:8px;font-size:11px;color:var(--muted);margin:8px 0}.insert-toolbar.svelte-1dg2w50,.range-toolbar.svelte-1dg2w50{align-items:end}label.svelte-1dg2w50{display:grid;gap:7px;font-size:12px;color:var(--muted)}input.svelte-1dg2w50{width:130px}select.svelte-1dg2w50{min-width:110px}.insert.svelte-1dg2w50{background:var(--cyan);color:var(--bg);border-color:var(--cyan)}audio.svelte-1dg2w50{display:block;width:100%;height:36px;margin-top:16px}.play-cursor.svelte-1dg2w50{margin-top:10px}.silence-list.svelte-1dg2w50{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.silence-list.svelte-1dg2w50 .selected:where(.svelte-1dg2w50){border-color:var(--cyan)}button.svelte-1dg2w50:focus-visible,svg.svelte-1dg2w50:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}[role=alert].svelte-1dg2w50{font-size:13px;color:var(--danger)}@media(max-width:760px){header.svelte-1dg2w50{flex-wrap:wrap}.wave-editor.svelte-1dg2w50{padding:16px}.ruler.svelte-1dg2w50{flex-wrap:wrap}.ruler.svelte-1dg2w50>span:where(.svelte-1dg2w50):nth-child(2){display:none}}body:has(.tts-app[data-active=true]){overflow:hidden}main:has(.tts-app[data-active=true]){padding-bottom:0}main:has(.tts-app[data-active=true])~footer{display:none}.tts-app.svelte-1szouna{--tts-accent: var(--cyan);display:flex;flex-direction:column;height:calc(100dvh - var(--tts-top) - 12px);min-height:320px;width:100%;max-width:none;margin:0}.tts-app.svelte-1szouna *{box-sizing:border-box}h2.svelte-1szouna,h3.svelte-1szouna,h4.svelte-1szouna,p.svelte-1szouna{margin:0}h2.svelte-1szouna{font-size:17px}h3.svelte-1szouna{font-size:15px;font-weight:600}h4.svelte-1szouna{font-size:12px;font-weight:600}p.svelte-1szouna{font-size:12px;line-height:1.65;color:var(--muted)}button.svelte-1szouna{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:34px;font-size:12px}button.svelte-1szouna:disabled{cursor:not-allowed}button.svelte-1szouna:focus-visible,summary.svelte-1szouna:focus-visible,a.svelte-1szouna:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}a.svelte-1szouna{color:var(--cyan)}label.svelte-1szouna{display:grid;gap:8px;color:var(--muted);font-size:12px}input.svelte-1szouna,select.svelte-1szouna,textarea.svelte-1szouna{min-width:0;width:100%;font:inherit}.eyebrow.svelte-1szouna{font-size:9px;color:var(--muted);letter-spacing:1.3px;font-weight:500}.project-bar.svelte-1szouna{flex-shrink:0;display:flex;align-items:center;gap:20px;min-height:60px;padding:0 0 14px;border-bottom:1px solid var(--line)}.project-heading.svelte-1szouna{display:grid;gap:4px;flex:1;min-width:100px}.project-title.svelte-1szouna{background:transparent;border:0;border-radius:0;padding:0;box-shadow:none;font-size:18px;font-weight:600;width:100%}.save-status.svelte-1szouna{font-size:10px;color:var(--muted);white-space:nowrap}.pipeline.svelte-1szouna{height:auto;display:flex;align-items:center;gap:4px}.pipeline.svelte-1szouna button:where(.svelte-1szouna){background:transparent;border:0;border-radius:6px;color:var(--muted);font-size:11px;min-height:34px;padding:6px 10px}.pipeline.svelte-1szouna button.active:where(.svelte-1szouna){color:var(--text);background:var(--active-bg)}.step-number.svelte-1szouna{width:19px;height:19px;display:grid;place-items:center;border:1px solid var(--line);border-radius:50%;font-size:9px}.active.svelte-1szouna .step-number:where(.svelte-1szouna){background:var(--cyan);color:var(--text-invert);border-color:var(--cyan)}summary.svelte-1szouna{display:flex;align-items:center;gap:7px;list-style:none;cursor:pointer;background:transparent;font-size:12px;font-weight:500}summary.svelte-1szouna::-webkit-details-marker{display:none}.project-menu.svelte-1szouna{position:relative;flex-shrink:0;margin:0;border:0;overflow:visible}.project-menu.svelte-1szouna>summary:where(.svelte-1szouna){padding:8px;border:1px solid var(--line);border-radius:6px}.project-menu-content.svelte-1szouna{position:absolute;top:40px;right:0;z-index:25;display:grid;gap:16px;width:280px;padding:20px;border:1px solid var(--line);background:var(--panel);border-radius:10px;box-shadow:0 12px 36px var(--panel-shadow)}.project-menu-content.svelte-1szouna small:where(.svelte-1szouna){font-size:10px;color:var(--muted);line-height:1.5}.stage-toolbar.svelte-1szouna{display:flex;justify-content:space-between;align-items:center;gap:18px;flex-shrink:0;padding:15px 0 16px}.stage-title.svelte-1szouna{font-size:17px;font-weight:600;margin-bottom:4px}.stage-title.svelte-1szouna:focus{outline:none}.stage-toolbar.svelte-1szouna p:where(.svelte-1szouna){font-size:11px}.project-progress.svelte-1szouna{font-size:11px;color:var(--muted);white-space:nowrap}.tts-workbench.svelte-1szouna{display:grid;grid-template-columns:220px minmax(0,1fr) 286px;flex:1;min-height:0;overflow:hidden;border:1px solid var(--line);border-bottom:0;border-radius:10px 10px 0 0;background:var(--panel)}.passage-rail.svelte-1szouna,.settings-rail.svelte-1szouna{padding:20px 16px;min-width:0;min-height:0;overflow:hidden}.passage-rail.svelte-1szouna{display:flex;flex-direction:column}.passage-rail.svelte-1szouna .passage-navigator{flex:1;height:auto;min-height:0}.settings-rail.svelte-1szouna{overflow-y:auto;scrollbar-width:thin}.editor-pane.svelte-1szouna{display:flex;flex-direction:column;min-height:0;min-width:0;border-inline:1px solid var(--line);padding:22px 26px;overflow-y:auto;scrollbar-width:thin}.editor-heading.svelte-1szouna{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-bottom:18px;flex-shrink:0}.editor-heading.svelte-1szouna h3:where(.svelte-1szouna){font-size:15px}.passage-heading.svelte-1szouna{display:grid;gap:7px}.passage-heading.svelte-1szouna h3:where(.svelte-1szouna){font-size:17px}.passage-traverse.svelte-1szouna{display:flex;gap:4px}.passage-traverse.svelte-1szouna>button:where(.svelte-1szouna){background:transparent;border:0;padding:7px;min-height:30px}.writing-surface.svelte-1szouna{flex:1;resize:none;min-height:90px;display:block;border:0;border-radius:0;background:transparent;font-size:18px;line-height:1.9;padding:10px 2px;color:var(--text);box-shadow:none}.writing-surface.svelte-1szouna:focus{box-shadow:none;outline:1px solid var(--cyan);outline-offset:5px}.writing-surface[readonly].svelte-1szouna:focus{outline:none}.editor-meta.svelte-1szouna{display:flex;align-items:center;gap:14px;color:var(--muted);font-size:10px;padding-top:14px;margin-top:12px;border-top:1px solid var(--line);flex-shrink:0}.editor-meta.svelte-1szouna>span:where(.svelte-1szouna):nth-child(2){margin-left:auto}.chunk-badge.svelte-1szouna{font-size:10px;color:var(--muted)}.chunk-badge.ready.svelte-1szouna{color:var(--cyan)}.passage-actions.svelte-1szouna{position:relative;border:0;border-radius:0;overflow:visible;margin:0}.passage-actions.svelte-1szouna>summary:where(.svelte-1szouna){padding:6px 0;font-size:10px;color:var(--muted)}.passage-actions.svelte-1szouna>div:where(.svelte-1szouna){position:absolute;bottom:32px;right:0;z-index:5;display:grid;gap:8px;min-width:180px;padding:12px;background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:0 8px 20px var(--panel-shadow)}.passage-actions.svelte-1szouna button:where(.svelte-1szouna){justify-content:flex-start;font-size:11px}.audio-dock.svelte-1szouna{flex-shrink:0;padding-top:18px}.audio-dock-heading.svelte-1szouna{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-bottom:12px}.audio-dock-heading.svelte-1szouna>span:where(.svelte-1szouna){font-size:10px;color:var(--muted)}.audio-dock-heading.svelte-1szouna .attention:where(.svelte-1szouna){color:var(--cyan);margin-left:auto}audio.svelte-1szouna{display:block;width:100%;height:36px}.local-actions.svelte-1szouna{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.audio-dock.svelte-1szouna .local-actions:where(.svelte-1szouna){margin-top:14px}.local-actions.svelte-1szouna button:where(.svelte-1szouna){font-size:11px;min-height:32px}.local-actions.svelte-1szouna button:where(.svelte-1szouna):not(:first-child){background:transparent}.settings-content.svelte-1szouna{display:grid;gap:20px}.settings-content.svelte-1szouna>h3:where(.svelte-1szouna){font-size:15px}.settings-content.svelte-1szouna p:where(.svelte-1szouna){font-size:11px}.settings-content.svelte-1szouna label:where(.svelte-1szouna){font-size:11px}.rail-note.svelte-1szouna{display:grid;gap:10px;padding-top:20px;border-top:1px solid var(--line);color:var(--muted)}.rail-note.svelte-1szouna h4:where(.svelte-1szouna){font-size:12px}.rail-note.svelte-1szouna p:where(.svelte-1szouna){font-size:11px}.import-button.svelte-1szouna{position:relative;display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);padding:7px 10px;font-size:11px;border-radius:6px;cursor:pointer;overflow:hidden;color:var(--text)}.import-button.svelte-1szouna input:where(.svelte-1szouna){opacity:0;position:absolute;inset:0;height:100%;width:100%;cursor:pointer}.import-button.svelte-1szouna:focus-within{outline:2px solid var(--cyan);outline-offset:2px}.text-button.svelte-1szouna{background:transparent;border:0;font-size:11px;color:var(--muted)}.arrange-content.svelte-1szouna{flex:1;min-height:0;overflow:auto;margin:0 -6px 0 0;padding-right:6px}.arrange-content.svelte-1szouna .boundary-editor{padding:0;border:0;border-radius:0}.arrange-content.svelte-1szouna .boundary-editor .passages{margin-top:0}.arrange-content.svelte-1szouna .boundary-editor .passages p{max-height:70px;font-size:12px}.arrange-content.svelte-1szouna .boundary-editor .wave-hint,.arrange-content.svelte-1szouna .boundary-editor .click-hint{font-size:10px}.order-actions.svelte-1szouna{padding-top:16px;flex-shrink:0}.assembly-dock.svelte-1szouna{border-top:1px solid var(--line);padding-top:16px;margin-top:16px;flex-shrink:0}.assembly-dock.svelte-1szouna h4:where(.svelte-1szouna){margin-bottom:10px}.final-preview.svelte-1szouna{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:16px;text-align:center;min-height:0;overflow:auto}.final-preview.svelte-1szouna>svg{color:var(--cyan);flex-shrink:0}.final-preview.svelte-1szouna h3:where(.svelte-1szouna){font-size:21px;overflow-wrap:anywhere}.final-preview.svelte-1szouna p:where(.svelte-1szouna){font-size:11px}.final-preview.svelte-1szouna audio:where(.svelte-1szouna){margin-top:10px;flex-shrink:0}.processed-preview.svelte-1szouna{width:100%;border-top:1px solid var(--line);padding-top:20px}.processed-preview.svelte-1szouna h4:where(.svelte-1szouna){text-align:left;margin-bottom:10px}.processing.svelte-1szouna{border:0;border-radius:0;border-block:1px solid var(--line);margin:0}.processing.svelte-1szouna>summary:where(.svelte-1szouna){padding:14px 0;display:flex;gap:8px;font-size:12px}.processing.svelte-1szouna>summary:where(.svelte-1szouna) span:where(.svelte-1szouna){margin-left:auto;font-size:10px;color:var(--muted)}.processing[open].svelte-1szouna{display:grid;gap:18px;padding-bottom:18px}.check-label.svelte-1szouna{display:flex;align-items:center;gap:8px}.check-label.svelte-1szouna input:where(.svelte-1szouna){width:15px;height:15px}.workflow-footer.svelte-1szouna{position:static;display:flex;align-items:center;gap:20px;padding:14px 18px;border:1px solid var(--line);border-radius:0 0 10px 10px;background:var(--panel);margin:0;flex-shrink:0}.next-guidance.svelte-1szouna{display:grid;gap:5px;flex:1;min-width:0}.next-guidance.svelte-1szouna strong:where(.svelte-1szouna){font-size:12px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.next-guidance.svelte-1szouna span:where(.svelte-1szouna){font-size:10px;color:var(--muted);line-height:1.5}.workflow-footer.svelte-1szouna>.primary:where(.svelte-1szouna){background:var(--cyan);color:var(--text-invert);border:1px solid var(--cyan);min-height:40px;padding:8px 18px;font-size:12px;white-space:nowrap}.back-button.svelte-1szouna{background:transparent;font-size:11px}.pane-tabs.svelte-1szouna{width:100%;margin:0;height:auto;display:none}.archive-trigger.svelte-1szouna{font-size:10px;color:var(--muted);border:0;border-top:1px solid var(--line);border-radius:0;background:transparent;margin-top:8px}.empty-state.svelte-1szouna{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;color:var(--muted)}.error.svelte-1szouna,.notice.svelte-1szouna{display:flex;align-items:center;gap:12px;padding:10px 14px;margin:8px 0;border:1px solid var(--line);border-radius:6px;font-size:12px;flex-shrink:0}.error.svelte-1szouna{color:var(--danger);border-color:var(--danger)}.error.svelte-1szouna>span:where(.svelte-1szouna){flex:1}.error.svelte-1szouna button:where(.svelte-1szouna){background:transparent;border:0;font-size:18px;min-height:28px}.danger.svelte-1szouna{color:var(--danger)}.tool-dialog.svelte-1szouna{padding:0;width:min(860px,calc(100vw - 28px));max-height:calc(100dvh - 40px);background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:12px}.tool-dialog.svelte-1szouna::backdrop{background:#05060db3;backdrop-filter:blur(3px)}.tool-dialog.svelte-1szouna>header:where(.svelte-1szouna){display:flex;align-items:center;justify-content:space-between;gap:16px;padding:22px 24px;border-bottom:1px solid var(--line)}.tool-dialog.svelte-1szouna h2:where(.svelte-1szouna){font-size:18px;margin-bottom:5px}.tool-dialog.svelte-1szouna>footer:where(.svelte-1szouna){display:flex;align-items:center;justify-content:flex-end;gap:16px;padding:18px 24px;border-top:1px solid var(--line)}.tool-dialog.svelte-1szouna>footer:where(.svelte-1szouna) span:where(.svelte-1szouna){margin-right:auto;color:var(--muted);font-size:11px}.comparison-body.svelte-1szouna{display:grid;grid-template-columns:200px minmax(0,1fr);min-height:250px;max-height:60dvh}.take-list.svelte-1szouna{display:flex;flex-direction:column;overflow:auto;border-right:1px solid var(--line);padding:14px;gap:8px}.take-list.svelte-1szouna>button:where(.svelte-1szouna){display:grid;text-align:left;justify-content:stretch;gap:5px;padding:12px;background:transparent;border-color:transparent}.take-list.svelte-1szouna>button.chosen:where(.svelte-1szouna){background:var(--active-bg);border-color:var(--cyan)}.take-list.svelte-1szouna strong:where(.svelte-1szouna){font-size:12px}.take-list.svelte-1szouna small:where(.svelte-1szouna),.take-list.svelte-1szouna span:where(.svelte-1szouna){font-size:10px;color:var(--muted);line-height:1.5}.take-listen.svelte-1szouna{display:flex;flex-direction:column;gap:20px;padding:28px;min-width:0;overflow:auto}.take-listen.svelte-1szouna p:where(.svelte-1szouna){flex:1;font-size:15px;color:var(--text);line-height:1.8;white-space:pre-wrap}.take-listen.svelte-1szouna audio:where(.svelte-1szouna){flex-shrink:0}.audio-editor-body.svelte-1szouna{max-height:calc(100dvh - 150px);overflow:auto}.archive-body.svelte-1szouna{max-height:65dvh;overflow:auto;padding:20px}.archive-row.svelte-1szouna{display:flex;gap:16px;padding:12px 0;border-bottom:1px solid var(--line);align-items:center}.archive-row.svelte-1szouna p:where(.svelte-1szouna){flex:1}.archive-row.svelte-1szouna small:where(.svelte-1szouna){display:block;margin-top:6px}.sr-only.svelte-1szouna{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(min-width:1700px){.tts-workbench.svelte-1szouna{grid-template-columns:240px minmax(0,1fr) 310px}}@media(max-width:1150px)and (min-width:1001px){.tts-workbench.svelte-1szouna{grid-template-columns:190px minmax(0,1fr) 248px}.editor-pane.svelte-1szouna{padding:18px}.passage-rail.svelte-1szouna,.settings-rail.svelte-1szouna{padding:18px 12px}.pipeline.svelte-1szouna button:where(.svelte-1szouna){padding:6px}.project-bar.svelte-1szouna{gap:12px}}@media(max-width:1000px){.tts-workbench.svelte-1szouna{display:flex;flex-direction:column}.passage-rail.svelte-1szouna,.editor-pane.svelte-1szouna,.settings-rail.svelte-1szouna{display:none;flex:1;min-height:0;border:0}.mobile-visible.svelte-1szouna{display:flex}.settings-rail.mobile-visible.svelte-1szouna{display:block}.pane-tabs.svelte-1szouna{display:flex;gap:4px;padding:5px;background:var(--panel);border:1px solid var(--line);border-bottom:0;border-radius:8px 8px 0 0;flex-shrink:0}.pane-tabs.svelte-1szouna button:where(.svelte-1szouna){flex:1;background:transparent;border:0;font-size:11px}.pane-tabs.svelte-1szouna button[aria-pressed=true]:where(.svelte-1szouna){background:var(--active-bg);color:var(--cyan)}.tts-workbench.svelte-1szouna{border-radius:0}.project-bar.svelte-1szouna{flex-wrap:wrap;gap:10px;padding-bottom:10px}.project-heading.svelte-1szouna{flex:1}.pipeline.svelte-1szouna{order:4;width:100%;justify-content:space-between}.pipeline.svelte-1szouna button:where(.svelte-1szouna){flex:1}.stage-toolbar.svelte-1szouna{padding:12px 0}.stage-toolbar.svelte-1szouna p:where(.svelte-1szouna){font-size:10px}.project-title.svelte-1szouna{font-size:16px}.editor-pane.svelte-1szouna{padding:20px}.settings-rail.svelte-1szouna,.passage-rail.svelte-1szouna{padding:18px 20px}.writing-surface.svelte-1szouna{font-size:17px}.workflow-footer.svelte-1szouna{gap:12px;padding:12px}.next-guidance.svelte-1szouna span:where(.svelte-1szouna){display:none}.next-guidance.svelte-1szouna strong:where(.svelte-1szouna){font-size:10px}.workflow-footer.svelte-1szouna>.primary:where(.svelte-1szouna){padding:8px 12px;font-size:11px}}@media(max-width:520px){.pipeline.svelte-1szouna button:where(.svelte-1szouna){min-width:0;padding:6px 3px;gap:4px;font-size:10px}.step-number.svelte-1szouna{width:16px;height:16px;flex-shrink:0;font-size:8px}.tts-app.svelte-1szouna{height:calc(100dvh - var(--tts-top) - 6px);min-height:280px}.stage-toolbar.svelte-1szouna h2:where(.svelte-1szouna){font-size:15px}.stage-toolbar.svelte-1szouna p:where(.svelte-1szouna){max-width:300px}.project-progress.svelte-1szouna{display:none}.editor-pane.svelte-1szouna{padding:16px}.editor-heading.svelte-1szouna{padding-bottom:10px}.writing-surface.svelte-1szouna{font-size:16px;min-height:75px;line-height:1.7}.audio-dock.svelte-1szouna{padding-top:12px}.local-actions.svelte-1szouna{gap:6px}.local-actions.svelte-1szouna button:where(.svelte-1szouna){font-size:10px;padding:5px 7px;min-height:30px}.editor-meta.svelte-1szouna{gap:8px;font-size:9px;margin-top:8px;padding-top:8px}.editor-meta.svelte-1szouna>span:where(.svelte-1szouna):nth-child(2){display:none}.passage-actions.svelte-1szouna{margin-left:auto}.next-guidance.svelte-1szouna{display:none}.workflow-footer.svelte-1szouna>.primary:where(.svelte-1szouna){flex:1}.back-button.svelte-1szouna{padding:6px 8px}.audio-dock-heading.svelte-1szouna{gap:7px;margin-bottom:8px}.comparison-body.svelte-1szouna{grid-template-columns:1fr;max-height:65dvh}.take-list.svelte-1szouna{max-height:160px;border:0;border-bottom:1px solid var(--line)}.take-listen.svelte-1szouna{padding:20px}.tool-dialog.svelte-1szouna>footer:where(.svelte-1szouna){flex-wrap:wrap}.tool-dialog.svelte-1szouna>footer:where(.svelte-1szouna) span:where(.svelte-1szouna){flex-basis:100%}.tool-dialog.svelte-1szouna>header:where(.svelte-1szouna){padding:18px}}.voice-chat.svelte-1bq46gw{max-width:77.5rem;margin:1.25rem auto 2.5rem;color:var(--text)}.voice-chat.svelte-1bq46gw p:where(.svelte-1bq46gw){font-family:inherit}header.svelte-1bq46gw{display:flex;justify-content:space-between;gap:1.25rem;align-items:center;margin-bottom:1.625rem}.eyebrow.svelte-1bq46gw{font-size:.625rem;letter-spacing:.2em;color:var(--cyan)}h1.svelte-1bq46gw{font-size:2.25rem;letter-spacing:-.04em;margin:.5rem 0}header.svelte-1bq46gw p:where(.svelte-1bq46gw){color:var(--muted);font-size:.8125rem;margin:0}.tools.svelte-1bq46gw{display:flex;gap:.5rem;flex-shrink:0}.tools.svelte-1bq46gw button:where(.svelte-1bq46gw){display:flex;gap:.4375rem;align-items:center;font-size:.75rem}.setup.svelte-1bq46gw{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr));gap:1.25rem;align-items:start;padding:1.25rem;margin-bottom:1.375rem;background:var(--panel);border:.0625rem solid var(--line);border-radius:.875rem}.setup.svelte-1bq46gw label:where(.svelte-1bq46gw){display:flex;flex-direction:column;align-self:start;gap:.5rem;margin:0;line-height:1.4;font-size:.75rem;color:var(--muted)}select.svelte-1bq46gw,input.svelte-1bq46gw{width:100%;min-width:0;box-sizing:border-box}.setup.svelte-1bq46gw select:where(.svelte-1bq46gw),.portrait-control.svelte-1bq46gw{box-sizing:border-box;min-block-size:3em;margin:0;padding:.625em .75em;font-size:.875rem;line-height:1.5;background:var(--control-bg);color:var(--text);border:.0625rem solid var(--control-border);border-radius:.5rem}.portrait-pick.svelte-1bq46gw{min-width:0}.portrait-control.svelte-1bq46gw{position:relative;display:flex;align-items:center;justify-content:space-between;gap:.75rem;cursor:pointer}.portrait-control.svelte-1bq46gw input:where(.svelte-1bq46gw){position:absolute;inset:0;width:100%;height:100%;margin:0;padding:0;opacity:0;cursor:pointer}.portrait-control.svelte-1bq46gw:focus-within{outline:.125rem solid var(--cyan);outline-offset:.125rem}.portrait-filename.svelte-1bq46gw{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.portrait-control.svelte-1bq46gw svg{flex:none}.personality.svelte-1bq46gw{grid-column:1 / -1}.personality.svelte-1bq46gw textarea:where(.svelte-1bq46gw){width:100%;min-width:0;resize:vertical;font:inherit;font-size:.875rem;line-height:1.5}.setup-note.svelte-1bq46gw{grid-column:1 / -1;color:var(--muted);font-size:.75rem;margin:0}.crop-preview.svelte-1bq46gw{display:flex;align-items:center;gap:.75rem;margin:.75rem 0 0}.crop-preview.svelte-1bq46gw img:where(.svelte-1bq46gw){display:block;inline-size:4rem;aspect-ratio:1;object-fit:cover;object-position:center;border-radius:.625rem;border:.0625rem solid var(--line)}.crop-preview.svelte-1bq46gw figcaption:where(.svelte-1bq46gw){margin:0;line-height:1.6;font-size:.6875rem;color:var(--muted)}.conversation.svelte-1bq46gw{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);block-size:clamp(30rem,70dvh,48rem);border:.0625rem solid var(--line);border-radius:1.25rem;overflow:hidden;background:var(--panel)}.portrait-stage.svelte-1bq46gw{position:relative;background:radial-gradient(ellipse at 50% 30%,#303945,#111922);min-height:0;overflow:hidden}.portrait-stage.svelte-1bq46gw img:where(.svelte-1bq46gw),.portrait-stage.svelte-1bq46gw canvas:where(.svelte-1bq46gw){position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center}.portrait-stage.svelte-1bq46gw canvas:where(.svelte-1bq46gw){opacity:0;background:#111922}.portrait-stage.svelte-1bq46gw canvas.visible:where(.svelte-1bq46gw){opacity:1}.portrait-stage.svelte-1bq46gw:after{content:"";position:absolute;inset:50% 0 0;background:linear-gradient(transparent,#0c1119c9);pointer-events:none}.portrait-empty.svelte-1bq46gw{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.25rem;color:#aab8c9}.portrait-empty.svelte-1bq46gw span:where(.svelte-1bq46gw){font-size:1.125rem}.portrait-empty.svelte-1bq46gw small:where(.svelte-1bq46gw){font-size:.75rem}.stage-caption.svelte-1bq46gw{position:absolute;bottom:1.5rem;left:1.5rem;right:1.5rem;z-index:1;display:flex;align-items:center;gap:.625rem;color:#fff;font-size:.75rem}.live-dot.svelte-1bq46gw{width:.4375rem;aspect-ratio:1;flex:none;border-radius:50%;background:#6b8195}.live-dot.pulse.svelte-1bq46gw{background:#93dfbd;box-shadow:0 0 1rem #93dfbd}.private.svelte-1bq46gw{margin-left:auto;font-size:.5625rem;letter-spacing:.12em;color:#bbc5cf}.chat-panel.svelte-1bq46gw{display:flex;flex-direction:column;min-width:0;min-height:0}.chat-heading.svelte-1bq46gw{padding:1.4375rem 1.5625rem;border-bottom:.0625rem solid var(--line);display:flex;justify-content:space-between;gap:1rem;font-size:.8125rem}.session-tag.svelte-1bq46gw{font-size:.6875rem;color:var(--muted);text-align:right}.messages.svelte-1bq46gw{padding:1.5rem;flex:1;overflow:auto;min-height:0}.welcome.svelte-1bq46gw{padding:2.8125rem .75rem;color:var(--muted)}.greeting.svelte-1bq46gw{font-size:1.75rem;letter-spacing:-.03em;color:var(--text)}.welcome.svelte-1bq46gw p:where(.svelte-1bq46gw){font-size:.875rem;line-height:1.8;max-width:24ch}.suggestion.svelte-1bq46gw{margin-top:1.875rem;font-size:.75rem;border:.0625rem solid var(--line);border-radius:.625rem;padding:.875rem;display:inline-block}article.svelte-1bq46gw{max-width:92%;margin:0 0 1.375rem;padding:1rem 1.125rem;border-radius:.875rem;background:var(--bg)}article.user.svelte-1bq46gw{margin-left:auto;background:color-mix(in srgb,var(--cyan) 9%,var(--panel));border:.0625rem solid color-mix(in srgb,var(--cyan) 18%,transparent)}.speaker-name.svelte-1bq46gw{font-size:.5625rem;letter-spacing:.12em;color:var(--muted)}article.svelte-1bq46gw p:where(.svelte-1bq46gw){font-size:.875rem;line-height:1.7;margin:.4375rem 0 0;white-space:pre-wrap;overflow-wrap:anywhere}article.svelte-1bq46gw audio:where(.svelte-1bq46gw){color-scheme:dark;width:100%;height:2rem;margin-top:.75rem}article.failed.svelte-1bq46gw{border:.0625rem solid var(--danger)}article.svelte-1bq46gw small:where(.svelte-1bq46gw),.error.svelte-1bq46gw{color:var(--danger)}.error.svelte-1bq46gw{margin:0;padding:.75rem 1.5rem;font-size:.75rem}.composer.svelte-1bq46gw{border-top:.0625rem solid var(--line);padding:1.125rem 1.5rem;display:flex;align-items:center;gap:1rem;justify-content:space-between}.status.svelte-1bq46gw{font-size:.75rem;color:var(--muted)}.actions.svelte-1bq46gw{display:flex;align-items:center;gap:.75rem;flex-shrink:0}.talk.svelte-1bq46gw{display:flex;align-items:center;gap:.5625rem;background:var(--cyan);color:#07171c;border:0;border-radius:2em;padding:.8125em 1.375em;font-weight:650;min-inline-size:7em;justify-content:center}.talk.stop.svelte-1bq46gw,.talk.recording.svelte-1bq46gw{background:#f4a99e}.upload.svelte-1bq46gw{position:relative;cursor:pointer;display:flex;align-items:center;gap:.5em;margin:0;font-size:.75rem;color:var(--muted)}.upload.svelte-1bq46gw input:where(.svelte-1bq46gw){position:absolute;inset:0;opacity:0;width:100%;cursor:pointer}.footnote.svelte-1bq46gw{font-size:.625rem;color:var(--muted);padding:0 1.5rem 1rem;margin:0}.timing.svelte-1bq46gw{padding:.5rem 1.5rem;font-size:.625rem;color:var(--muted)}@media(max-width:50rem){header.svelte-1bq46gw{align-items:flex-start;flex-wrap:wrap}h1.svelte-1bq46gw{font-size:1.75rem}.conversation.svelte-1bq46gw{grid-template-columns:1fr;block-size:auto}.portrait-stage.svelte-1bq46gw{aspect-ratio:1;max-block-size:60dvh}.chat-panel.svelte-1bq46gw{block-size:min(65dvh,38rem);min-block-size:24rem}.tools.svelte-1bq46gw,.composer.svelte-1bq46gw{flex-wrap:wrap}.actions.svelte-1bq46gw{flex-wrap:wrap;max-width:100%}}
|
||
</style>
|
||
</head>
|
||
<body data-sveltekit-preload-data="hover">
|
||
<div style="display: contents">
|
||
<script>
|
||
{
|
||
__sveltekit_1xyyov = {
|
||
base: new URL('.', location).pathname.slice(0, -1)
|
||
};
|
||
|
||
const element = document.currentScript.parentElement;
|
||
|
||
this.__sveltekit_1xyyov=this.__sveltekit_1xyyov||{};this.__sveltekit_1xyyov.app=(function(Au){"use strict";var mn=typeof document<"u"?document.currentScript:null;function n6(a,t){for(var i=0;i<t.length;i++){const n=t[i];if(typeof n!="string"&&!Array.isArray(n)){for(const s in n)if(s!=="default"&&!(s in a)){const r=Object.getOwnPropertyDescriptor(n,s);r&&Object.defineProperty(a,s,r.get?r:{enumerable:!0,get:()=>n[s]})}}}return Object.freeze(Object.defineProperty(a,Symbol.toStringTag,{value:"Module"}))}const a1=!1;var sp=Array.isArray,s6=Array.prototype.indexOf,Cu=Array.prototype.includes,Gu=Array.from,rp=Object.defineProperty,ao=Object.getOwnPropertyDescriptor,i1=Object.getOwnPropertyDescriptors,r6=Object.prototype,o6=Array.prototype,op=Object.getPrototypeOf,n1=Object.isExtensible;function rd(a){return typeof a=="function"}const Bo=()=>{};function l6(a){return a()}function lp(a){for(var t=0;t<a.length;t++)a[t]()}function s1(){var a,t,i=new Promise((n,s)=>{a=n,t=s});return{promise:i,resolve:a,reject:t}}function c6(a,t,i=!1){return a===void 0?i?t():t:a}function od(a,t){if(Array.isArray(a))return a;if(t===void 0||!(Symbol.iterator in a))return Array.from(a);const i=[];for(const n of a)if(i.push(n),i.length===t)break;return i}const Jn=2,Gl=4,ld=8,cp=1<<24,Sr=16,ar=32,io=64,dp=128,ir=512,Dn=1024,In=2048,nr=4096,hs=8192,Ps=16384,Fl=32768,up=1<<25,no=65536,Fu=1<<17,r1=1<<18,fc=1<<19,o1=1<<20,Ur=1<<25,Ml=65536,Mu=1<<21,pc=1<<22,Po=1<<23,Rr=Symbol("$state"),fp=Symbol("legacy props"),d6=Symbol(""),l1=Symbol("attributes"),pp=Symbol("class"),mp=Symbol("style"),gp=Symbol("text"),cd=Symbol("form reset"),dd=new class extends Error{name="StaleReactionError";message="The reaction that called `getAbortSignal()` was re-run or destroyed"},ud=!!globalThis.document?.contentType&&globalThis.document.contentType.includes("xml"),u6=1,fd=3,mc=8;function zu(a){throw new Error("https://svelte.dev/e/lifecycle_outside_component")}function f6(){throw new Error("https://svelte.dev/e/async_derived_orphan")}function p6(a,t,i){throw new Error("https://svelte.dev/e/each_key_duplicate")}function m6(a){throw new Error("https://svelte.dev/e/effect_in_teardown")}function g6(){throw new Error("https://svelte.dev/e/effect_in_unowned_derived")}function h6(a){throw new Error("https://svelte.dev/e/effect_orphan")}function _6(){throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}function v6(){throw new Error("https://svelte.dev/e/hydration_failed")}function b6(a){throw new Error("https://svelte.dev/e/lifecycle_legacy_only")}function y6(a){throw new Error("https://svelte.dev/e/props_invalid_value")}function w6(){throw new Error("https://svelte.dev/e/state_descriptors_fixed")}function k6(){throw new Error("https://svelte.dev/e/state_prototype_fixed")}function x6(){throw new Error("https://svelte.dev/e/state_unsafe_mutation")}function S6(){throw new Error("https://svelte.dev/e/svelte_boundary_reset_onerror")}const T6=1,$6=2,c1=4,q6=8,A6=16,C6=1,G6=2,F6=4,M6=8,z6=16,d1=1,E6=2,hp="[",_p="[!",u1="[?",vp="]",gc={},Ln=Symbol("uninitialized"),f1="http://www.w3.org/1999/xhtml",U6="http://www.w3.org/2000/svg",R6="@attach";function B6(){console.warn("https://svelte.dev/e/derived_inert")}function Eu(a){console.warn("https://svelte.dev/e/hydration_mismatch")}function P6(){console.warn("https://svelte.dev/e/select_multiple_invalid_value")}function j6(){console.warn("https://svelte.dev/e/svelte_boundary_reset_noop")}let va=!1;function es(a){va=a}let bi;function Rn(a){if(a===null)throw Eu(),gc;return bi=a}function so(){return Rn(sr(bi))}function w(a){if(va){if(sr(bi)!==null)throw Eu(),gc;bi=a}}function qt(a=1){if(va){for(var t=a,i=bi;t--;)i=sr(i);bi=i}}function pd(a=!0){for(var t=0,i=bi;;){if(i.nodeType===mc){var n=i.data;if(n===vp){if(t===0)return i;t-=1}else(n===hp||n===_p||n[0]==="["&&!isNaN(Number(n.slice(1))))&&(t+=1)}var s=sr(i);a&&i.remove(),i=s}}function bp(a){if(!a||a.nodeType!==mc)throw Eu(),gc;return a.data}function p1(a){return a===this.v}function m1(a,t){return a!=a?t==t:a!==t||a!==null&&typeof a=="object"||typeof a=="function"}function g1(a){return!m1(a,this.v)}let hc=!1,N6=!1;function O6(){hc=!0}let Ui=null;function _c(a){Ui=a}function D6(a){return I6().get(a)}function Ri(a,t=!1,i){Ui={p:Ui,i:!1,c:null,e:null,s:a,x:null,r:gi,l:hc&&!t?{s:null,u:null,$:[]}:null}}function Bi(a){var t=Ui,i=t.e;if(i!==null){t.e=null;for(var n of i)O1(n)}return a!==void 0&&(t.x=a),t.i=!0,Ui=t.p,a??{}}function vc(){return!hc||Ui!==null&&Ui.l===null}function I6(a){return Ui===null&&zu(),Ui.c??=new Map(L6(Ui)||void 0)}function L6(a){let t=a.p;for(;t!==null;){const i=t.c;if(i!==null)return i;t=t.p}return null}let zl=[];function h1(){var a=zl;zl=[],lp(a)}function Tr(a){if(zl.length===0&&!gd){var t=zl;queueMicrotask(()=>{t===zl&&h1()})}zl.push(a)}function V6(){for(;zl.length>0;)h1()}function _1(a){var t=gi;if(t===null)return Ci.f|=Po,a;if((t.f&Fl)===0&&(t.f&Gl)===0)throw a;jo(a,t)}function jo(a,t){if(!(t!==null&&(t.f&Ps)!==0)){for(;t!==null;){if((t.f&dp)!==0){if((t.f&Fl)===0)throw a;try{t.b.error(a);return}catch(i){a=i}}t=t.parent}throw a}}const H6=-7169;function vn(a,t){a.f=a.f&H6|t}function yp(a){(a.f&ir)!==0||a.deps===null?vn(a,Dn):vn(a,nr)}function v1(a){if(a!==null)for(const t of a)(t.f&Jn)===0||(t.f&Ml)===0||(t.f^=Ml,v1(t.deps))}function b1(a,t,i){(a.f&In)!==0?t.add(a):(a.f&nr)!==0&&i.add(a),v1(a.deps),vn(a,Dn)}function y1(a,t,i){if(a==null)return t(void 0),Bo;const n=x(()=>a.subscribe(t,i));return n.unsubscribe?()=>n.unsubscribe():n}const bc=[];function El(a,t=Bo){let i=null;const n=new Set;function s(l){if(m1(a,l)&&(a=l,i)){const c=!bc.length;for(const d of n)d[1](),bc.push(d,a);if(c){for(let d=0;d<bc.length;d+=2)bc[d][0](bc[d+1]);bc.length=0}}}function r(l){s(l(a))}function o(l,c=Bo){const d=[l,c];return n.add(d),n.size===1&&(i=t(s,r)||Bo),l(a),()=>{n.delete(d),n.size===0&&i&&(i(),i=null)}}return{set:s,update:r,subscribe:o}}function Uu(a){let t;return y1(a,i=>t=i)(),t}let Ru=!1,wp=Symbol("unmounted");function Bu(a,t,i){const n=i[t]??={store:null,source:K(void 0),unsubscribe:Bo};if(n.store!==a&&!(wp in i))if(n.unsubscribe(),n.store=a??null,a==null)n.source.v=void 0,n.unsubscribe=Bo;else{var s=!0;n.unsubscribe=y1(a,r=>{s?n.source.v=r:b(n.source,r)}),s=!1}return a&&wp in i?Uu(a):e(n.source)}function kp(){const a={};function t(){$c(()=>{for(var i in a)a[i].unsubscribe();rp(a,wp,{enumerable:!1,value:!0})})}return[a,t]}function W6(a){var t=Ru;try{return Ru=!1,[a(),Ru]}finally{Ru=t}}function Q6(a,t){if(t){const i=document.body;a.autofocus=!0,Tr(()=>{document.activeElement===i&&a.focus()})}}function nn(a){va&&_s(a)!==null&&Ep(a)}let w1=!1;function k1(){w1||(w1=!0,document.addEventListener("reset",a=>{Promise.resolve().then(()=>{if(!a.defaultPrevented)for(const t of a.target.elements)t[cd]?.()})},{capture:!0}))}function yc(a){var t=Ci,i=gi;or(null),lr(null);try{return a()}finally{or(t),lr(i)}}function xp(a,t,i,n=i){a.addEventListener(t,()=>yc(i));const s=a[cd];s?a[cd]=()=>{s(),n(!0)}:a[cd]=()=>n(!0),k1()}function K6(a){let t=0,i=Rl(0),n;return()=>{Up()&&(e(i),qc(()=>(t===0&&(n=x(()=>a(()=>hd(i)))),t+=1,()=>{Tr(()=>{t-=1,t===0&&(n?.(),n=void 0,hd(i))})})))}}var Y6=no|fc;function J6(a,t,i,n){new X6(a,t,i,n)}class X6{parent;is_pending=!1;transform_error;#e;#t=va?bi:null;#a;#l;#n;#s=null;#i=null;#o=null;#r=null;#g=0;#c=0;#d=!1;#f=new Set;#h=new Set;#u=null;#v=K6(()=>(this.#u=Rl(this.#g),()=>{this.#u=null}));constructor(t,i,n,s){this.#e=t,this.#a=i,this.#l=r=>{var o=gi;o.b=this,o.f|=dp,n(r)},this.parent=gi.b,this.transform_error=s??this.parent?.transform_error??(r=>r),this.#n=Oo(()=>{if(va){const r=this.#t;so();const o=r.data===_p;if(r.data.startsWith(u1)){const c=JSON.parse(r.data.slice(u1.length));this.#b(c)}else o?this.#k():this.#_()}else this.#p()},Y6),va&&(this.#e=bi)}#_(){try{this.#s=vs(()=>this.#l(this.#e))}catch(t){this.error(t)}}#b(t){const i=this.#a.failed,{reset:n,invoke_onerror:s}=this.#y(t);Tr(s),i&&(this.#o=vs(()=>{i(this.#e,()=>t,()=>n)}))}#y(t){var i=!1,n=!1;const s=()=>{if(i){j6();return}i=!0,n&&S6(),this.#o!==null&&Pl(this.#o,()=>{this.#o=null}),this.#m(()=>{this.#p()})};return{reset:s,invoke_onerror:()=>{try{n=!0,this.#a.onerror?.(t,s),n=!1}catch(o){jo(o,this.#n&&this.#n.parent)}}}}#k(){const t=this.#a.pending;t&&(this.is_pending=!0,this.#i=vs(()=>t(this.#e)),Tr(()=>{var i=this.#r=document.createDocumentFragment(),n=ss();i.append(n),this.#s=this.#m(()=>vs(()=>this.#l(n))),this.#c===0&&(this.#e.before(i),this.#r=null,Pl(this.#i,()=>{this.#i=null}),this.#w(mi))}))}#p(){try{if(this.is_pending=this.has_pending_snippet(),this.#c=0,this.#g=0,this.#s=vs(()=>{this.#l(this.#e)}),this.#c>0){var t=this.#r=document.createDocumentFragment();Bp(this.#s,t);const i=this.#a.pending;this.#i=vs(()=>i(this.#e))}else this.#w(mi)}catch(i){this.error(i)}}#w(t){this.is_pending=!1,t.transfer_effects(this.#f,this.#h)}defer_effect(t){b1(t,this.#f,this.#h)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#a.pending}#m(t){var i=gi,n=Ci,s=Ui;lr(this.#n),or(this.#n),_c(this.#n.ctx);try{return ro.ensure(),t()}catch(r){return _1(r),null}finally{lr(i),or(n),_c(s)}}#x(t,i){if(!this.has_pending_snippet()){this.parent&&this.parent.#x(t,i);return}this.#c+=t,this.#c===0&&(this.#w(i),this.#i&&Pl(this.#i,()=>{this.#i=null}),this.#r&&(this.#e.before(this.#r),this.#r=null))}update_pending_count(t,i){this.#x(t,i),this.#g+=t,!(!this.#u||this.#d)&&(this.#d=!0,Tr(()=>{this.#d=!1,this.#u&&Bl(this.#u,this.#g)}))}get_effect_pending(){return this.#v(),e(this.#u)}error(t){if(!this.#a.onerror&&!this.#a.failed)throw t;mi?.is_fork?(this.#s&&mi.skip_effect(this.#s),this.#i&&mi.skip_effect(this.#i),this.#o&&mi.skip_effect(this.#o),mi.oncommit(()=>{this.#S(t)})):this.#S(t)}#S(t){this.#s&&(ts(this.#s),this.#s=null),this.#i&&(ts(this.#i),this.#i=null),this.#o&&(ts(this.#o),this.#o=null),va&&(Rn(this.#t),qt(),Rn(pd()));let i=this.#a.failed;const n=s=>{const{reset:r,invoke_onerror:o}=this.#y(s);o(),i&&(this.#o=this.#m(()=>{try{return vs(()=>{var l=gi;l.b=this,l.f|=dp,i(this.#e,()=>s,()=>r)})}catch(l){return jo(l,this.#n.parent),null}}))};Tr(()=>{var s;try{s=this.transform_error(t)}catch(r){jo(r,this.#n&&this.#n.parent);return}s!==null&&typeof s=="object"&&typeof s.then=="function"?s.then(n,r=>jo(r,this.#n&&this.#n.parent)):n(s)})}}function Sp(a,t,i,n){const s=vc()?wc:Yt;var r=a.filter(p=>!p.settled),o=t.map(s);if(i.length===0&&r.length===0){n(o);return}var l=gi,c=Z6(),d=r.length===1?r[0].promise:r.length>1?Promise.all(r.map(p=>p.promise)):null;function g(p){if((l.f&Ps)===0){c();try{n([...o,...p])}catch(u){jo(u,l)}Pu()}}var h=x1();if(i.length===0){d.then(()=>g([])).finally(h);return}function m(){Promise.all(i.map(p=>e4(p))).then(g).catch(p=>jo(p,l)).finally(h)}d?d.then(()=>{c(),m(),Pu()}):m()}function Z6(){var a=gi,t=Ci,i=Ui,n=mi;return function(r=!0){lr(a),or(t),_c(i),r&&(a.f&Ps)===0&&(n?.activate(),n?.apply())}}function Pu(a=!0){lr(null),or(null),_c(null),a&&mi?.deactivate()}function x1(){var a=gi,t=a.b,i=mi,n=!!t?.is_rendered();return t?.update_pending_count(1,i),i.increment(n,a),()=>{t?.update_pending_count(-1,i),i.decrement(n,a)}}function wc(a){var t=Jn|In;return gi!==null&&(gi.f|=fc),{ctx:Ui,deps:null,effects:null,equals:p1,f:t,fn:a,reactions:null,rv:0,v:Ln,wv:0,parent:gi,ac:null}}const md=Symbol("obsolete");function e4(a,t,i){let n=gi;n===null&&f6();var s=void 0,r=Rl(Ln),o=!Ci,l=new Set;return c4(()=>{var c=gi,d=s1();s=d.promise;try{Promise.resolve(a()).then(d.resolve,p=>{p!==dd&&d.reject(p)}).finally(Pu)}catch(p){d.reject(p),Pu()}var g=mi;if(o){if((c.f&Fl)!==0)var h=x1();if(n.b?.is_rendered())g.async_deriveds.get(c)?.reject(md);else for(const p of l.values())p.reject(md);l.add(d),g.async_deriveds.set(c,d)}const m=(p,u=void 0)=>{h?.(),l.delete(d),u!==md&&(g.activate(),u?(r.f|=Po,Bl(r,u)):((r.f&Po)!==0&&(r.f^=Po),Bl(r,p)),g.deactivate())};d.promise.then(m,p=>m(null,p||"unknown"))}),$c(()=>{for(const c of l)c.reject(md)}),new Promise(c=>{function d(g){function h(){g===s?c(r):d(s)}g.then(h,h)}d(s)})}function oi(a){const t=wc(a);return K1(t),t}function Yt(a){const t=wc(a);return t.equals=g1,t}function t4(a){var t=a.effects;if(t!==null){a.effects=null;for(var i=0;i<t.length;i+=1)ts(t[i])}}function Tp(a){var t,i=gi,n=a.parent;if(!lo&&n!==null&&a.v!==Ln&&(n.f&(Ps|hs))!==0)return B6(),a.v;lr(n);try{a.f&=~Ml,t4(a),t=ev(a)}finally{lr(i)}return t}function S1(a){var t=Tp(a);if(!a.equals(t)&&(a.wv=X1(),(!mi?.is_fork||a.deps===null)&&(mi!==null?(mi.capture(a,t,!0),qp?.capture(a,t,!0)):a.v=t,a.deps===null))){vn(a,Dn);return}lo||($r!==null?(Up()||mi?.is_fork)&&$r.set(a,t):yp(a))}function a4(a){if(a.effects!==null)for(const t of a.effects)(t.teardown||t.ac)&&(t.teardown?.(),t.ac!==null&&yc(()=>{t.ac.abort(dd),t.ac=null}),t.fn!==null&&(t.teardown=Bo),_d(t,0),Rp(t))}function T1(a){if(a.effects!==null)for(const t of a.effects)t.teardown&&t.fn!==null&&Ol(t)}let $p=null,kc=null,mi=null,qp=null,$r=null,Ap=null,gd=!1,Cp=!1,xc=null,ju=null;var $1=0,Gj=new Set;let i4=1;class ro{id=i4++;#e=!1;linked=!0;#t=null;#a=null;async_deriveds=new Map;current=new Map;previous=new Map;#l=new Set;#n=new Set;#s=0;#i=new Map;#o=null;#r=[];#g=[];#c=new Set;#d=new Set;#f=new Map;#h=new Set;is_fork=!1;#u=!1;constructor(){kc===null?$p=kc=this:(kc.#a=this,this.#t=kc),kc=this}#v(){if(this.is_fork)return!0;for(const n of this.#i.keys()){for(var t=n,i=!1;t.parent!==null;){if(this.#f.has(t)){i=!0;break}t=t.parent}if(!i)return!0}return!1}skip_effect(t){this.#f.has(t)||this.#f.set(t,{d:[],m:[]}),this.#h.delete(t)}unskip_effect(t,i=n=>this.schedule(n)){var n=this.#f.get(t);if(n){this.#f.delete(t);for(var s of n.d)vn(s,In),i(s);for(s of n.m)vn(s,nr),i(s)}this.#h.add(t)}#_(){this.#e=!0,$1++>1e3&&(this.#m(),n4());for(const c of this.#c)this.#d.delete(c),vn(c,In),this.schedule(c);for(const c of this.#d)vn(c,nr),this.schedule(c);const t=this.#r;this.#r=[],this.apply();var i=xc=[],n=[],s=ju=[];for(const c of t)try{this.#b(c,i,n)}catch(d){throw F1(c),this.#v()||this.discard(),d}if(mi=null,s.length>0){var r=ro.ensure();for(const c of s)r.schedule(c)}if(xc=null,ju=null,this.#v()){this.#p(n),this.#p(i);for(const[c,d]of this.#f)G1(c,d);s.length>0&&mi.#_();return}const o=this.#y();if(o){this.#p(n),this.#p(i),o.#k(this);return}this.#c.clear(),this.#d.clear();for(const c of this.#l)c(this);this.#l.clear(),qp=this,A1(n),A1(i),qp=null,this.#o?.resolve();var l=mi;if(this.#s===0&&(this.#r.length===0||l!==null)&&this.#m(),this.#r.length>0)if(l!==null){const c=l;c.#r.push(...this.#r.filter(d=>!c.#r.includes(d)))}else l=this;l!==null&&l.#_()}#b(t,i,n){t.f^=Dn;for(var s=t.first;s!==null;){var r=s.f,o=(r&(ar|io))!==0,l=o&&(r&Dn)!==0,c=l||(r&hs)!==0||this.#f.has(s);if(!c&&s.fn!==null){o?s.f^=Dn:(r&Gl)!==0?i.push(s):Cc(s)&&((r&Sr)!==0&&this.#d.add(s),Ol(s));var d=s.first;if(d!==null){s=d;continue}}for(;s!==null;){var g=s.next;if(g!==null){s=g;break}s=s.parent}}}#y(){for(var t=this.#t;t!==null;){if(!t.is_fork){for(const[i,[,n]]of this.current)if(t.current.has(i)&&!n)return t}t=t.#t}return null}#k(t){for(const[n,s]of t.current)!this.previous.has(n)&&t.previous.has(n)&&this.previous.set(n,t.previous.get(n)),this.current.set(n,s);for(const[n,s]of t.async_deriveds){const r=this.async_deriveds.get(n);r&&s.promise.then(r.resolve).catch(r.reject)}t.async_deriveds.clear(),this.transfer_effects(t.#c,t.#d);const i=n=>{var s=n.reactions;if(s!==null&&!((n.f&Jn)!==0&&(n.f&(In|nr))===0))for(const l of s){var r=l.f;if((r&Jn)!==0)i(l);else{var o=l;r&(pc|Sr)&&!this.async_deriveds.has(o)&&(this.#d.delete(o),vn(o,In),this.schedule(o))}}};for(const n of this.current.keys())i(n);this.oncommit(()=>t.discard()),t.#m(),mi=this,this.#_()}#p(t){for(var i=0;i<t.length;i+=1)b1(t[i],this.#c,this.#d)}capture(t,i,n=!1){t.v!==Ln&&!this.previous.has(t)&&this.previous.set(t,t.v),(t.f&Po)===0&&(this.current.set(t,[i,n]),$r?.set(t,i)),this.is_fork||(t.v=i)}activate(){mi=this}deactivate(){mi=null,$r=null}flush(){try{Cp=!0,mi=this,this.#_()}finally{$1=0,Ap=null,xc=null,ju=null,Cp=!1,mi=null,$r=null,Ul.clear()}}discard(){for(const t of this.#n)t(this);this.#n.clear();for(const t of this.async_deriveds.values())t.reject(md);this.#m(),this.#o?.resolve()}register_created_effect(t){this.#g.push(t)}#w(){for(let h=$p;h!==null;h=h.#a){var t=h.id<this.id,i=[];for(const[m,[p,u]]of this.current){if(h.current.has(m)){var n=h.current.get(m)[0];if(t&&p!==n)h.current.set(m,[p,u]);else continue}i.push(m)}if(t)for(const[m,p]of this.async_deriveds){const u=h.async_deriveds.get(m);u&&p.promise.then(u.resolve).catch(u.reject)}var s=[...h.current.keys()].filter(m=>!h.current.get(m)[1]);if(!(!h.#e||s.length===0)){var r=s.filter(m=>!this.current.has(m));if(r.length===0)t&&h.discard();else if(i.length>0){if(t)for(const m of this.#h)h.unskip_effect(m,p=>{(p.f&(Sr|pc))!==0?h.schedule(p):h.#p([p])});h.activate();var o=new Set,l=new Map;for(var c of i)C1(c,r,o,l);l=new Map;var d=[...h.current].filter(([m,p])=>{const u=this.current.get(m);return u?u[0]!==p[0]||u[1]!==p[1]:!0}).map(([m])=>m);if(d.length>0)for(const m of this.#g)(m.f&(Ps|hs|Fu))===0&&Gp(m,d,l)&&((m.f&(pc|Sr))!==0?(vn(m,In),h.schedule(m)):h.#c.add(m));if(h.#r.length>0&&!h.#u){h.apply();for(var g of h.#r)h.#b(g,[],[]);h.#r=[]}h.deactivate()}}}}increment(t,i){if(this.#s+=1,t){let n=this.#i.get(i)??0;this.#i.set(i,n+1)}}decrement(t,i){if(this.#s-=1,t){let n=this.#i.get(i)??0;n===1?this.#i.delete(i):this.#i.set(i,n-1)}this.#u||(this.#u=!0,Tr(()=>{this.#u=!1,this.linked&&this.flush()}))}transfer_effects(t,i){for(const n of t)this.#c.add(n);for(const n of i)this.#d.add(n);t.clear(),i.clear()}oncommit(t){this.#l.add(t)}ondiscard(t){this.#n.add(t)}settled(){return(this.#o??=s1()).promise}static ensure(){if(mi===null){const t=mi=new ro;!Cp&&!gd&&Tr(()=>{t.#e||t.flush()})}return mi}apply(){{$r=null;return}}schedule(t){if(Ap=t,t.b?.is_pending&&(t.f&(Gl|ld|cp))!==0&&(t.f&Fl)===0){t.b.defer_effect(t);return}for(var i=t;i.parent!==null;){i=i.parent;var n=i.f;if(xc!==null&&i===gi&&(Ci===null||(Ci.f&Jn)===0))return;if((n&(io|ar))!==0){if((n&Dn)===0)return;i.f^=Dn}}this.#r.push(i)}#m(){if(this.linked){var t=this.#t,i=this.#a;t===null?$p=i:t.#a=i,i===null?kc=t:i.#t=t,this.linked=!1}}}function q1(a){var t=gd;gd=!0;try{for(var i;;){if(V6(),mi===null)return i;mi.flush()}}finally{gd=t}}function n4(){try{_6()}catch(a){jo(a,Ap)}}let oo=null;function A1(a){var t=a.length;if(t!==0){for(var i=0;i<t;){var n=a[i++];if((n.f&(Ps|hs))===0&&Cc(n)&&(oo=new Set,Ol(n),n.deps===null&&n.first===null&&n.nodes===null&&n.teardown===null&&n.ac===null&&V1(n),oo?.size>0)){Ul.clear();for(const s of oo){if((s.f&(Ps|hs))!==0)continue;const r=[s];let o=s.parent;for(;o!==null;)oo.has(o)&&(oo.delete(o),r.push(o)),o=o.parent;for(let l=r.length-1;l>=0;l--){const c=r[l];(c.f&(Ps|hs))===0&&Ol(c)}}oo.clear()}}oo=null}}function C1(a,t,i,n){if(!i.has(a)&&(i.add(a),a.reactions!==null))for(const s of a.reactions){const r=s.f;(r&Jn)!==0?C1(s,t,i,n):(r&(pc|Sr))!==0&&(r&In)===0&&Gp(s,t,n)&&(vn(s,In),Fp(s))}}function Gp(a,t,i){const n=i.get(a);if(n!==void 0)return n;if(a.deps!==null)for(const s of a.deps){if(Cu.call(t,s))return!0;if((s.f&Jn)!==0&&Gp(s,t,i))return i.set(s,!0),!0}return i.set(a,!1),!1}function Fp(a){mi.schedule(a)}function G1(a,t){if(!((a.f&ar)!==0&&(a.f&Dn)!==0)){(a.f&In)!==0?t.d.push(a):(a.f&nr)!==0&&t.m.push(a),vn(a,Dn);for(var i=a.first;i!==null;)G1(i,t),i=i.next}}function F1(a){vn(a,Dn);for(var t=a.first;t!==null;)F1(t),t=t.next}let Nu=new Set;const Ul=new Map;let M1=!1;function Rl(a,t){var i={f:0,v:a,reactions:null,equals:p1,rv:0,wv:0};return i}function Bn(a,t){const i=Rl(a);return K1(i),i}function K(a,t=!1,i=!0){const n=Rl(a);return t||(n.equals=g1),hc&&i&&Ui!==null&&Ui.l!==null&&(Ui.l.s??=[]).push(n),n}function Ct(a,t){return b(a,x(()=>e(a))),t}function b(a,t,i=!1){Ci!==null&&(!qr||(Ci.f&Fu)!==0)&&vc()&&(Ci.f&(Jn|Sr|pc|Fu))!==0&&(Br===null||!Br.has(a))&&x6();let n=i?Sc(t):t;return Bl(a,n,ju)}function Bl(a,t,i=null){if(!a.equals(t)){Ul.set(a,lo?t:a.v);var n=ro.ensure();if(n.capture(a,t),(a.f&Jn)!==0){const s=a;(a.f&In)!==0&&Tp(s),$r===null&&yp(s)}a.wv=X1(),z1(a,In,i),vc()&&gi!==null&&(gi.f&Dn)!==0&&(gi.f&(ar|io))===0&&(cr===null?m4([a]):cr.push(a)),!n.is_fork&&Nu.size>0&&!M1&&s4()}return t}function s4(){M1=!1;for(const a of Nu){(a.f&Dn)!==0&&vn(a,nr);let t;try{t=Cc(a)}catch{t=!0}t&&Ol(a)}Nu.clear()}function Ou(a,t=1){var i=e(a),n=t===1?i++:i--;return b(a,i),n}function hd(a){b(a,a.v+1)}function z1(a,t,i){var n=a.reactions;if(n!==null)for(var s=vc(),r=n.length,o=0;o<r;o++){var l=n[o],c=l.f;if(!(!s&&l===gi)){var d=(c&In)===0;if(d&&vn(l,t),(c&Fu)!==0)Nu.add(l);else if((c&Jn)!==0){var g=l;$r?.delete(g),(c&Ml)===0&&(c&ir&&(gi===null||(gi.f&Mu)===0)&&(l.f|=Ml),z1(g,nr,i))}else if(d){var h=l;(c&Sr)!==0&&oo!==null&&oo.add(h),i!==null?i.push(h):Fp(h)}}}}function Sc(a){if(typeof a!="object"||a===null||Rr in a)return a;const t=op(a);if(t!==r6&&t!==o6)return a;var i=new Map,n=sp(a),s=Bn(0),r=Nl,o=l=>{if(Nl===r)return l();var c=Ci,d=Nl;or(null),J1(r);var g=l();return or(c),J1(d),g};return n&&i.set("length",Bn(a.length)),new Proxy(a,{defineProperty(l,c,d){(!("value"in d)||d.configurable===!1||d.enumerable===!1||d.writable===!1)&&w6();var g=i.get(c);return g===void 0?o(()=>{var h=Bn(d.value);return i.set(c,h),h}):b(g,d.value,!0),!0},deleteProperty(l,c){var d=i.get(c);if(d===void 0){if(c in l){const g=o(()=>Bn(Ln));i.set(c,g),hd(s)}}else b(d,Ln),hd(s);return!0},get(l,c,d){if(c===Rr)return a;var g=i.get(c),h=c in l;if(g===void 0&&(!h||ao(l,c)?.writable)&&(g=o(()=>{var p=Sc(h?l[c]:Ln),u=Bn(p);return u}),i.set(c,g)),g!==void 0){var m=e(g);return m===Ln?void 0:m}return Reflect.get(l,c,d)},getOwnPropertyDescriptor(l,c){var d=Reflect.getOwnPropertyDescriptor(l,c);if(d&&"value"in d){var g=i.get(c);g&&(d.value=e(g))}else if(d===void 0){var h=i.get(c),m=h?.v;if(h!==void 0&&m!==Ln)return{enumerable:!0,configurable:!0,value:m,writable:!0}}return d},has(l,c){if(c===Rr)return!0;var d=i.get(c),g=d!==void 0&&d.v!==Ln||Reflect.has(l,c);if(d!==void 0||gi!==null&&(!g||ao(l,c)?.writable)){d===void 0&&(d=o(()=>{var m=g?Sc(l[c]):Ln,p=Bn(m);return p}),i.set(c,d));var h=e(d);if(h===Ln)return!1}return g},set(l,c,d,g){var h=i.get(c),m=c in l;if(n&&c==="length")for(var p=d;p<h.v;p+=1){var u=i.get(p+"");u!==void 0?b(u,Ln):p in l&&(u=o(()=>Bn(Ln)),i.set(p+"",u))}if(h===void 0)(!m||ao(l,c)?.writable)&&(h=o(()=>Bn(void 0)),b(h,Sc(d)),i.set(c,h));else{m=h.v!==Ln;var f=o(()=>Sc(d));b(h,f)}var _=Reflect.getOwnPropertyDescriptor(l,c);if(_?.set&&_.set.call(g,d),!m){if(n&&typeof c=="string"){var v=i.get("length"),y=Number(c);Number.isInteger(y)&&y>=v.v&&b(v,y+1)}hd(s)}return!0},ownKeys(l){e(s);var c=Reflect.ownKeys(l).filter(h=>{var m=i.get(h);return m===void 0||m.v!==Ln});for(var[d,g]of i)g.v!==Ln&&!(d in l)&&c.push(d);return c},setPrototypeOf(){k6()}})}function E1(a){try{if(a!==null&&typeof a=="object"&&Rr in a)return a[Rr]}catch{}return a}function r4(a,t){return Object.is(E1(a),E1(t))}var Tc,Mp,U1,R1,B1;function zp(){if(Tc===void 0){Tc=window,Mp=document,U1=/Firefox/.test(navigator.userAgent);var a=Element.prototype,t=Node.prototype,i=Text.prototype;R1=ao(t,"firstChild").get,B1=ao(t,"nextSibling").get,n1(a)&&(a[pp]=void 0,a[l1]=null,a[mp]=void 0,a.__e=void 0),n1(i)&&(i[gp]=void 0)}}function ss(a=""){return document.createTextNode(a)}function _s(a){return R1.call(a)}function sr(a){return B1.call(a)}function k(a,t){if(!va)return _s(a);var i=_s(bi);if(i===null)i=bi.appendChild(ss());else if(t&&i.nodeType!==fd){var n=ss();return i?.before(n),Rn(n),n}return t&&Du(i),Rn(i),i}function xt(a,t=!1){if(!va){var i=_s(a);return i instanceof Comment&&i.data===""?sr(i):i}if(t){if(bi?.nodeType!==fd){var n=ss();return bi?.before(n),Rn(n),n}Du(bi)}return bi}function $(a,t=1,i=!1){let n=va?bi:a;for(var s;t--;)s=n,n=sr(n);if(!va)return n;if(i){if(n?.nodeType!==fd){var r=ss();return n===null?s?.after(r):n.before(r),Rn(r),r}Du(n)}return Rn(n),n}function Ep(a){a.textContent=""}function P1(){return!1}function j1(a,t,i){return t==null||t===f1?i?document.createElement(a,{is:i}):document.createElement(a):i?document.createElementNS(t,a,{is:i}):document.createElementNS(t,a)}function Du(a){if(a.nodeValue.length<65536)return;let t=a.nextSibling;for(;t!==null&&t.nodeType===fd;)t.remove(),a.nodeValue+=t.nodeValue,t=a.nextSibling}function N1(a){gi===null&&(Ci===null&&h6(),g6()),lo&&m6()}function o4(a,t){var i=t.last;i===null?t.last=t.first=a:(i.next=a,a.prev=i,t.last=a)}function rr(a,t){var i=gi;i!==null&&(i.f&hs)!==0&&(a|=hs);var n={ctx:Ui,deps:null,nodes:null,f:a|In|ir,first:null,fn:t,last:null,next:null,parent:i,b:i&&i.b,prev:null,teardown:null,wv:0,ac:null};mi?.register_created_effect(n);var s=n;if((a&Gl)!==0)xc!==null?xc.push(n):ro.ensure().schedule(n);else if(t!==null){try{Ol(n)}catch(o){throw ts(n),o}s.deps===null&&s.teardown===null&&s.nodes===null&&s.first===s.last&&(s.f&fc)===0&&(s=s.first,(a&Sr)!==0&&(a&no)!==0&&s!==null&&(s.f|=no))}if(s!==null&&(s.parent=i,i!==null&&o4(s,i),Ci!==null&&(Ci.f&Jn)!==0&&(a&io)===0)){var r=Ci;(r.effects??=[]).push(s)}return n}function Up(){return Ci!==null&&!qr}function $c(a){const t=rr(ld,null);return vn(t,Dn),t.teardown=a,t}function Iu(a){N1();var t=gi.f,i=!Ci&&(t&ar)!==0&&Ui!==null&&!Ui.i;if(i){var n=Ui;(n.e??=[]).push(a)}else return O1(a)}function O1(a){return rr(Gl|o1,a)}function D1(a){return N1(),rr(ld|o1,a)}function l4(a){ro.ensure();const t=rr(io|fc,a);return(i={})=>new Promise(n=>{i.outro?Pl(t,()=>{ts(t),n(void 0)}):(ts(t),n(void 0))})}function No(a){return rr(Gl,a)}function Ee(a,t){var i=Ui,n={effect:null,ran:!1,deps:a};i.l.$.push(n),n.effect=qc(()=>{if(a(),!n.ran){n.ran=!0;var s=gi;try{lr(s.parent),x(t)}finally{lr(s)}}})}function bn(){var a=Ui;qc(()=>{for(var t of a.l.$){t.deps();var i=t.effect;(i.f&Dn)!==0&&i.deps!==null&&vn(i,nr),Cc(i)&&Ol(i),t.ran=!1}})}function c4(a){return rr(pc|fc,a)}function qc(a,t=0){return rr(ld|t,a)}function ne(a,t=[],i=[],n=[]){Sp(n,t,i,s=>{rr(ld,()=>{a(...s.map(e))})})}function d4(a,t=[],i=[],n=[]){Sp(n,t,i,s=>{rr(Gl,()=>a(...s.map(e)))})}function Oo(a,t=0){var i=rr(Sr|t,a);return i}function I1(a,t=0){var i=rr(cp|t,a);return i}function vs(a){return rr(ar|fc,a)}function L1(a){var t=a.teardown;if(t!==null){const i=lo,n=Ci;Q1(!0),or(null);try{t.call(null)}finally{Q1(i),or(n)}}}function Rp(a,t=!1){var i=a.first;for(a.first=a.last=null;i!==null;){const s=i.ac;s!==null&&yc(()=>{s.abort(dd)});var n=i.next;(i.f&io)!==0?i.parent=null:ts(i,t),i=n}}function u4(a){for(var t=a.first;t!==null;){var i=t.next;(t.f&ar)===0&&ts(t),t=i}}function ts(a,t=!0){var i=!1;(t||(a.f&r1)!==0)&&a.nodes!==null&&a.nodes.end!==null&&(f4(a.nodes.start,a.nodes.end),i=!0),a.f|=up,Rp(a,t&&!i),_d(a,0);var n=a.nodes&&a.nodes.t;if(n!==null)for(const r of n)r.stop();L1(a),a.f^=up,a.f|=Ps;var s=a.parent;s!==null&&s.first!==null&&V1(a),a.next=a.prev=a.teardown=a.ctx=a.deps=a.fn=a.nodes=a.ac=a.b=null}function f4(a,t){for(;a!==null;){var i=a===t?null:sr(a);a.remove(),a=i}}function V1(a){var t=a.parent,i=a.prev,n=a.next;i!==null&&(i.next=n),n!==null&&(n.prev=i),t!==null&&(t.first===a&&(t.first=n),t.last===a&&(t.last=i))}function Pl(a,t,i=!0){var n=[];H1(a,n,!0);var s=()=>{i&&ts(a),t&&t()},r=n.length;if(r>0){var o=()=>--r||s();for(var l of n)l.out(o)}else s()}function H1(a,t,i){if((a.f&hs)===0){a.f^=hs;var n=a.nodes&&a.nodes.t;if(n!==null)for(const l of n)(l.is_global||i)&&t.push(l);for(var s=a.first;s!==null;){var r=s.next;if((s.f&io)===0){var o=(s.f&no)!==0||(s.f&ar)!==0&&(a.f&Sr)!==0;H1(s,t,o?i:!1)}s=r}}}function Lu(a){W1(a,!0)}function W1(a,t){if((a.f&hs)!==0){a.f^=hs,(a.f&Dn)===0&&(vn(a,In),ro.ensure().schedule(a));for(var i=a.first;i!==null;){var n=i.next,s=(i.f&no)!==0||(i.f&ar)!==0;W1(i,s?t:!1),i=n}var r=a.nodes&&a.nodes.t;if(r!==null)for(const o of r)(o.is_global||t)&&o.in()}}function Bp(a,t){if(a.nodes)for(var i=a.nodes.start,n=a.nodes.end;i!==null;){var s=i===n?null:sr(i);t.append(i),i=s}}let Ac=null;function p4(a){var t=Ac;try{if(Ac=new Set,x(a),t!==null)for(var i of Ac)t.add(i);return Ac}finally{Ac=t}}function Zi(a){for(var t of p4(a))Bl(t,t.v)}let Vu=!1,lo=!1;function Q1(a){lo=a}let Ci=null,qr=!1;function or(a){Ci=a}let gi=null;function lr(a){gi=a}let Br=null;function K1(a){Ci!==null&&(Br??=new Set).add(a)}let Gs=null,js=0,cr=null;function m4(a){cr=a}let Y1=1,jl=0,Nl=jl;function J1(a){Nl=a}function X1(){return++Y1}function Cc(a){var t=a.f;if((t&In)!==0)return!0;if(t&Jn&&(a.f&=~Ml),(t&nr)!==0){for(var i=a.deps,n=i.length,s=0;s<n;s++){var r=i[s];if(Cc(r)&&S1(r),r.wv>a.wv)return!0}(t&ir)!==0&&$r===null&&vn(a,Dn)}return!1}function Z1(a,t,i=!0){var n=a.reactions;if(n!==null&&!(Br!==null&&Br.has(a)))for(var s=0;s<n.length;s++){var r=n[s];(r.f&Jn)!==0?Z1(r,t,!1):t===r&&(i?vn(r,In):(r.f&Dn)!==0&&vn(r,nr),Fp(r))}}function ev(a){var t=Gs,i=js,n=cr,s=Ci,r=Br,o=Ui,l=qr,c=Nl,d=a.f;Gs=null,js=0,cr=null,Ci=(d&(ar|io))===0?a:null,Br=null,_c(a.ctx),qr=!1,Nl=++jl,a.ac!==null&&(yc(()=>{a.ac.abort(dd)}),a.ac=null);try{a.f|=Mu;var g=a.fn,h=g();a.f|=Fl;var m=a.deps,p=mi?.is_fork;if(Gs!==null){var u;if(p||_d(a,js),m!==null&&js>0)for(m.length=js+Gs.length,u=0;u<Gs.length;u++)m[js+u]=Gs[u];else a.deps=m=Gs;if(Up()&&(a.f&ir)!==0)for(u=js;u<m.length;u++)(m[u].reactions??=[]).push(a)}else!p&&m!==null&&js<m.length&&(_d(a,js),m.length=js);if(vc()&&cr!==null&&!qr&&m!==null&&(a.f&(Jn|nr|In))===0)for(u=0;u<cr.length;u++)Z1(cr[u],a);if(s!==null&&s!==a){if(jl++,s.deps!==null)for(let f=0;f<i;f+=1)s.deps[f].rv=jl;if(t!==null)for(const f of t)f.rv=jl;cr!==null&&(n===null?n=cr:n.push(...cr))}return(a.f&Po)!==0&&(a.f^=Po),h}catch(f){return _1(f)}finally{a.f^=Mu,Gs=t,js=i,cr=n,Ci=s,Br=r,_c(o),qr=l,Nl=c}}function g4(a,t){let i=t.reactions;if(i!==null){var n=s6.call(i,a);if(n!==-1){var s=i.length-1;s===0?i=t.reactions=null:(i[n]=i[s],i.pop())}}if(i===null&&(t.f&Jn)!==0&&(Gs===null||!Cu.call(Gs,t))){var r=t;(r.f&ir)!==0&&(r.f^=ir,r.f&=~Ml),r.v!==Ln&&yp(r),r.ac!==null&&yc(()=>{r.ac.abort(dd),r.ac=null,vn(r,In)}),a4(r),_d(r,0)}}function _d(a,t){var i=a.deps;if(i!==null)for(var n=t;n<i.length;n++)g4(a,i[n])}function Ol(a){var t=a.f;if((t&Ps)===0){vn(a,Dn);var i=gi,n=Vu;gi=a,Vu=(t&(ar|io))===0;try{(t&(Sr|cp))!==0?u4(a):Rp(a),L1(a);var s=ev(a);a.teardown=typeof s=="function"?s:null,a.wv=Y1;var r;a1&&N6&&(a.f&In)!==0&&a.deps}finally{Vu=n,gi=i}}}async function Fs(){await Promise.resolve(),q1()}function h4(){return ro.ensure().settled()}function e(a){var t=a.f,i=(t&Jn)!==0;if(Ac?.add(a),Ci!==null&&!qr){var n=gi!==null&&(gi.f&Ps)!==0;if(!n&&(Br===null||!Br.has(a))){var s=Ci.deps;if((Ci.f&Mu)!==0)a.rv<jl&&(a.rv=jl,Gs===null&&s!==null&&s[js]===a?js++:Gs===null?Gs=[a]:Gs.push(a));else{Ci.deps??=[],Cu.call(Ci.deps,a)||Ci.deps.push(a);var r=a.reactions;r===null?a.reactions=[Ci]:Cu.call(r,Ci)||r.push(Ci)}}}if(lo&&Ul.has(a))return Ul.get(a);if(i){var o=a;if(lo){var l=o.v;return((o.f&Dn)===0&&o.reactions!==null||av(o))&&(l=Tp(o)),Ul.set(o,l),l}var c=(o.f&ir)===0&&!qr&&Ci!==null&&(Vu||(Ci.f&ir)!==0),d=(o.f&Fl)===0;Cc(o)&&(c&&(o.f|=ir),S1(o)),c&&!d&&(T1(o),tv(o))}if($r?.has(a))return $r.get(a);if((a.f&Po)!==0)throw a.v;return a.v}function tv(a){if(a.f|=ir,a.deps!==null)for(const t of a.deps)(t.reactions??=[]).push(a),(t.f&Jn)!==0&&(t.f&ir)===0&&(T1(t),tv(t))}function av(a){if(a.v===Ln)return!0;if(a.deps===null)return!1;for(const t of a.deps)if(Ul.has(t)||(t.f&Jn)!==0&&av(t))return!0;return!1}function x(a){var t=qr;try{return qr=!0,a()}finally{qr=t}}function Y(a){if(!(typeof a!="object"||!a||a instanceof EventTarget)){if(Rr in a)Pp(a);else if(!Array.isArray(a))for(let t in a){const i=a[t];typeof i=="object"&&i&&Rr in i&&Pp(i)}}}function Pp(a,t=new Set){if(typeof a=="object"&&a!==null&&!(a instanceof EventTarget)&&!t.has(a)){t.add(a),a instanceof Date&&a.getTime();for(let n in a)try{Pp(a[n],t)}catch{}const i=op(a);if(i!==Object.prototype&&i!==Array.prototype&&i!==Map.prototype&&i!==Set.prototype&&i!==Date.prototype){const n=i1(i);for(let s in n){const r=n[s].get;if(r)try{r.call(a)}catch{}}}}}function _4(a){return a.endsWith("capture")&&a!=="gotpointercapture"&&a!=="lostpointercapture"}const v4=["beforeinput","click","change","dblclick","contextmenu","focusin","focusout","input","keydown","keyup","mousedown","mousemove","mouseout","mouseover","mouseup","pointerdown","pointermove","pointerout","pointerover","pointerup","touchend","touchmove","touchstart"];function b4(a){return v4.includes(a)}const y4={formnovalidate:"formNoValidate",ismap:"isMap",nomodule:"noModule",playsinline:"playsInline",readonly:"readOnly",defaultvalue:"defaultValue",defaultchecked:"defaultChecked",srcobject:"srcObject",novalidate:"noValidate",allowfullscreen:"allowFullscreen",disablepictureinpicture:"disablePictureInPicture",disableremoteplayback:"disableRemotePlayback"};function w4(a){return a=a.toLowerCase(),y4[a]??a}const k4=["touchstart","touchmove"];function x4(a){return k4.includes(a)}const S4=["textarea","script","style","title"];function T4(a){return S4.includes(a)}const vd=Symbol("events"),iv=new Set,jp=new Set;function nv(a,t,i,n={}){function s(r){if(n.capture||Np.call(t,r),!r.cancelBubble)return yc(()=>i?.call(this,r))}return a.startsWith("pointer")||a.startsWith("touch")||a==="wheel"?Tr(()=>{t.addEventListener(a,s,n)}):t.addEventListener(a,s,n),s}function re(a,t,i,n,s){var r={capture:n,passive:s},o=nv(a,t,i,r);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&$c(()=>{t.removeEventListener(a,o,r)})}function $4(a,t,i){(t[vd]??={})[a]=i}function q4(a){for(var t=0;t<a.length;t++)iv.add(a[t]);for(var i of jp)i(a)}let sv=null;function Np(a){var t=this,i=t.ownerDocument,n=a.type,s=a.composedPath?.()||[],r=s[0]||a.target;sv=a;var o=0,l=sv===a&&a[vd];if(l){var c=s.indexOf(l);if(c!==-1&&(t===document||t===window)){a[vd]=t;return}var d=s.indexOf(t);if(d===-1)return;c<=d&&(o=c)}if(r=s[o]||a.target,r!==t){rp(a,"currentTarget",{configurable:!0,get(){return r||i}});var g=Ci,h=gi;or(null),lr(null);try{for(var m,p=[];r!==null&&r!==t;){try{var u=r[vd]?.[n];u!=null&&(!r.disabled||a.target===r)&&u.call(r,a)}catch(f){m?p.push(f):m=f}if(a.cancelBubble)break;o++,r=o<s.length?s[o]:null}if(m){for(let f of p)queueMicrotask(()=>{throw f});throw m}}finally{a[vd]=t,delete a.currentTarget,or(g),lr(h)}}}const A4=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy("svelte-trusted-html",{createHTML:a=>a});function C4(a){return A4?.createHTML(a)??a}function rv(a){var t=j1("template");return t.innerHTML=C4(a.replaceAll("<!>","<!---->")),t.content}function dr(a,t){var i=gi;i.nodes===null&&(i.nodes={start:a,end:t,a:null,t:null})}function ie(a,t){var i=(t&d1)!==0,n=(t&E6)!==0,s,r=!a.startsWith("<!>");return()=>{if(va)return dr(bi,null),bi;s===void 0&&(s=rv(r?a:"<!>"+a),i||(s=_s(s)));var o=n||U1?document.importNode(s,!0):s.cloneNode(!0);if(i){var l=_s(o),c=o.lastChild;dr(l,c)}else dr(o,o);return o}}function G4(a,t,i="svg"){var n=!a.startsWith("<!>"),s=(t&d1)!==0,r=`<${i}>${n?a:"<!>"+a}</${i}>`,o;return()=>{if(va)return dr(bi,null),bi;if(!o){var l=rv(r),c=_s(l);if(s)for(o=document.createDocumentFragment();_s(c);)o.appendChild(_s(c));else o=_s(c)}var d=o.cloneNode(!0);if(s){var g=_s(d),h=d.lastChild;dr(g,h)}else dr(d,d);return d}}function co(a,t){return G4(a,t,"svg")}function Op(a=""){if(!va){var t=ss(a+"");return dr(t,t),t}var i=bi;return i.nodeType!==fd?(i.before(i=ss()),Rn(i)):Du(i),dr(i,i),i}function bs(){if(va)return dr(bi,null),bi;var a=document.createDocumentFragment(),t=document.createComment(""),i=ss();return a.append(t,i),dr(t,i),a}function J(a,t){if(va){var i=gi;((i.f&Fl)===0||i.nodes.end===null)&&(i.nodes.end=bi),so();return}a!==null&&a.before(t)}function W(a,t){var i=t==null?"":typeof t=="object"?`${t}`:t;i!==(a[gp]??=a.nodeValue)&&(a[gp]=i,a.nodeValue=`${i}`)}function ov(a,t){return lv(a,t)}function F4(a,t){zp(),t.intro=t.intro??!1;const i=t.target,n=va,s=bi;try{for(var r=_s(i);r&&(r.nodeType!==mc||r.data!==hp);)r=sr(r);if(!r)throw gc;es(!0),Rn(r);const o=lv(a,{...t,anchor:r});return es(!1),o}catch(o){if(o instanceof Error&&o.message.split(`
|
||
`).some(l=>l.startsWith("https://svelte.dev/e/")))throw o;return o!==gc&&console.warn("Failed to hydrate: ",o),t.recover===!1&&v6(),zp(),Ep(i),es(!1),ov(a,t)}finally{es(n),Rn(s)}}const Hu=new Map;function lv(a,{target:t,anchor:i,props:n={},events:s,context:r,intro:o=!0,transformError:l}){zp();var c=void 0,d=l4(()=>{var g=i??t.appendChild(ss());J6(g,{pending:()=>{}},p=>{Ri({});var u=Ui;if(r&&(u.c=r),s&&(n.$$events=s),va&&dr(p,null),c=a(p,n)||{},va&&(gi.nodes.end=bi,bi===null||bi.nodeType!==mc||bi.data!==vp))throw Eu(),gc;Bi()},l);var h=new Set,m=p=>{for(var u=0;u<p.length;u++){var f=p[u];if(!h.has(f)){h.add(f);var _=x4(f);for(const S of[t,document]){var v=Hu.get(S);v===void 0&&(v=new Map,Hu.set(S,v));var y=v.get(f);y===void 0?(S.addEventListener(f,Np,{passive:_}),v.set(f,1)):v.set(f,y+1)}}}};return m(Gu(iv)),jp.add(m),()=>{for(var p of h)for(const _ of[t,document]){var u=Hu.get(_),f=u.get(p);--f==0?(_.removeEventListener(p,Np),u.delete(p),u.size===0&&Hu.delete(_)):u.set(p,f)}jp.delete(m),g!==i&&g.parentNode?.removeChild(g)}});return Dp.set(c,d),c}let Dp=new WeakMap;function M4(a,t){const i=Dp.get(a);return i?(Dp.delete(a),i(t)):Promise.resolve()}class bd{anchor;#e=new Map;#t=new Map;#a=new Map;#l=new Set;#n=!0;constructor(t,i=!0){this.anchor=t,this.#n=i}#s=t=>{if(this.#e.has(t)){var i=this.#e.get(t),n=this.#t.get(i);if(n)Lu(n),this.#l.delete(i);else{var s=this.#a.get(i);s&&(Lu(s.effect),this.#t.set(i,s.effect),this.#a.delete(i),s.fragment.lastChild.remove(),this.anchor.before(s.fragment),n=s.effect)}for(const[r,o]of this.#e){if(this.#e.delete(r),r===t)break;const l=this.#a.get(o);l&&(ts(l.effect),this.#a.delete(o))}for(const[r,o]of this.#t){if(r===i||this.#l.has(r))continue;const l=()=>{if(Array.from(this.#e.values()).includes(r)){var d=document.createDocumentFragment();Bp(o,d),d.append(ss()),this.#a.set(r,{effect:o,fragment:d})}else ts(o);this.#l.delete(r),this.#t.delete(r)};this.#n||!n?(this.#l.add(r),Pl(o,l,!1)):l()}}};#i=t=>{this.#e.delete(t);const i=Array.from(this.#e.values());for(const[n,s]of this.#a)i.includes(n)||(ts(s.effect),this.#a.delete(n))};ensure(t,i){var n=mi,s=P1();if(i&&!this.#t.has(t)&&!this.#a.has(t))if(s){var r=document.createDocumentFragment(),o=ss();r.append(o),this.#a.set(t,{effect:vs(()=>i(o)),fragment:r})}else this.#t.set(t,vs(()=>i(this.anchor)));if(this.#e.set(n,t),s){for(const[l,c]of this.#t)l===t?n.unskip_effect(c):n.skip_effect(c);for(const[l,c]of this.#a)l===t?n.unskip_effect(c.effect):n.skip_effect(c.effect);n.oncommit(this.#s),n.ondiscard(this.#i)}else va&&(this.anchor=bi),this.#s(n)}}function _e(a,t,i=!1){var n;va&&(n=bi,so());var s=new bd(a),r=i?no:0;function o(l,c){if(va){var d=bp(n);if(l!==parseInt(d.substring(1))){var g=pd();Rn(g),s.anchor=g,es(!1),s.ensure(l,c),es(!0);return}}s.ensure(l,c)}Oo(()=>{var l=!1;t((c,d=0)=>{l=!0,o(d,c)}),l||o(-1,null)},r)}const z4=Symbol("NaN");function cv(a,t,i){va&&so();var n=new bd(a),s=!vc();Oo(()=>{var r=t();r!==r&&(r=z4),s&&r!==null&&typeof r=="object"&&(r={}),n.ensure(r,i)})}function Qt(a,t){return t}function E4(a,t,i){for(var n=[],s=t.length,r,o=t.length,l=0;l<s;l++){let h=t[l];Pl(h,()=>{if(r){if(r.pending.delete(h),r.done.add(h),r.pending.size===0){var m=a.outrogroups;Ip(a,Gu(r.done)),m.delete(r),m.size===0&&(a.outrogroups=null)}}else o-=1},!1)}if(o===0){var c=n.length===0&&i!==null;if(c){var d=i,g=d.parentNode;Ep(g),g.append(d),a.items.clear()}Ip(a,t,!c)}else r={pending:new Set(t),done:new Set},(a.outrogroups??=new Set).add(r)}function Ip(a,t,i=!0){var n;if(a.pending.size>0){n=new Set;for(const o of a.pending.values())for(const l of o)n.add(a.items.get(l).e)}for(var s=0;s<t.length;s++){var r=t[s];if(n?.has(r)){r.f|=Ur;const o=document.createDocumentFragment();Bp(r,o)}else ts(t[s],i)}}var dv;function Mt(a,t,i,n,s,r=null){var o=a,l=new Map,c=(t&c1)!==0;if(c){var d=a;o=va?Rn(_s(d)):d.appendChild(ss())}va&&so();var g=null,h=Yt(()=>{var S=i();return sp(S)?S:S==null?[]:Gu(S)}),m,p=new Map,u=!0;function f(S){(y.effect.f&Ps)===0&&(y.pending.delete(S),y.fallback=g,U4(y,m,o,t,n),g!==null&&(m.length===0?(g.f&Ur)===0?Lu(g):(g.f^=Ur,wd(g,null,o)):Pl(g,()=>{g=null})))}function _(S){y.pending.delete(S)}var v=Oo(()=>{m=e(h);var S=m.length;let q=!1;if(va){var M=bp(o)===_p;M!==(S===0)&&(o=pd(),Rn(o),es(!1),q=!0)}for(var P=new Set,B=mi,A=P1(),j=0;j<S;j+=1){va&&bi.nodeType===mc&&bi.data===vp&&(o=bi,q=!0,es(!1));var G=m[j],C=n(G,j),R=u?null:l.get(C);R?(R.v&&Bl(R.v,G),R.i&&Bl(R.i,j),A&&B.unskip_effect(R.e)):(R=R4(l,u?o:dv??=ss(),G,C,j,s,t,i),u||(R.e.f|=Ur),l.set(C,R)),P.add(C)}if(S===0&&r&&!g&&(u?g=vs(()=>r(o)):(g=vs(()=>r(dv??=ss())),g.f|=Ur)),S>P.size&&p6(),va&&S>0&&Rn(pd()),!u)if(p.set(B,P),A){for(const[H,E]of l)P.has(H)||B.skip_effect(E.e);B.oncommit(f),B.ondiscard(_)}else f(B);q&&es(!0),e(h)}),y={effect:v,items:l,pending:p,outrogroups:null,fallback:g};u=!1,va&&(o=bi)}function yd(a){for(;a!==null&&(a.f&ar)===0;)a=a.next;return a}function U4(a,t,i,n,s){var r=(n&q6)!==0,o=t.length,l=a.items,c=yd(a.effect.first),d,g=null,h,m=[],p=[],u,f,_,v;if(r)for(v=0;v<o;v+=1)u=t[v],f=s(u,v),_=l.get(f).e,(_.f&Ur)===0&&(_.nodes?.a?.measure(),(h??=new Set).add(_));for(v=0;v<o;v+=1){if(u=t[v],f=s(u,v),_=l.get(f).e,a.outrogroups!==null)for(const G of a.outrogroups)G.pending.delete(_),G.done.delete(_);if((_.f&hs)!==0&&(Lu(_),r&&(_.nodes?.a?.unfix(),(h??=new Set).delete(_))),(_.f&Ur)!==0)if(_.f^=Ur,_===c)wd(_,null,i);else{var y=g?g.next:c;_===a.effect.last&&(a.effect.last=_.prev),_.prev&&(_.prev.next=_.next),_.next&&(_.next.prev=_.prev),Do(a,g,_),Do(a,_,y),wd(_,y,i),g=_,m=[],p=[],c=yd(g.next);continue}if(_!==c){if(d!==void 0&&d.has(_)){if(m.length<p.length){var S=p[0],q;g=S.prev;var M=m[0],P=m[m.length-1];for(q=0;q<m.length;q+=1)wd(m[q],S,i);for(q=0;q<p.length;q+=1)d.delete(p[q]);Do(a,M.prev,P.next),Do(a,g,M),Do(a,P,S),c=S,g=P,v-=1,m=[],p=[]}else d.delete(_),wd(_,c,i),Do(a,_.prev,_.next),Do(a,_,g===null?a.effect.first:g.next),Do(a,g,_),g=_;continue}for(m=[],p=[];c!==null&&c!==_;)(d??=new Set).add(c),p.push(c),c=yd(c.next);if(c===null)continue}(_.f&Ur)===0&&m.push(_),g=_,c=yd(_.next)}if(a.outrogroups!==null){for(const G of a.outrogroups)G.pending.size===0&&(Ip(a,Gu(G.done)),a.outrogroups?.delete(G));a.outrogroups.size===0&&(a.outrogroups=null)}if(c!==null||d!==void 0){var B=[];if(d!==void 0)for(_ of d)(_.f&hs)===0&&B.push(_);for(;c!==null;)(c.f&hs)===0&&c!==a.fallback&&B.push(c),c=yd(c.next);var A=B.length;if(A>0){var j=(n&c1)!==0&&o===0?i:null;if(r){for(v=0;v<A;v+=1)B[v].nodes?.a?.measure();for(v=0;v<A;v+=1)B[v].nodes?.a?.fix()}E4(a,B,j)}}r&&Tr(()=>{if(h!==void 0)for(_ of h)_.nodes?.a?.apply()})}function R4(a,t,i,n,s,r,o,l){var c=(o&T6)!==0?(o&A6)===0?K(i,!1,!1):Rl(i):null,d=(o&$6)!==0?Rl(s):null;return{v:c,i:d,e:vs(()=>(r(t,c??i,d??s,l),()=>{a.delete(n)}))}}function wd(a,t,i){if(a.nodes)for(var n=a.nodes.start,s=a.nodes.end,r=t&&(t.f&Ur)===0?t.nodes.start:i;n!==null;){var o=sr(n);if(r.before(n),n===s)return;n=o}}function Do(a,t,i){t===null?a.effect.first=i:t.next=i,i===null?a.effect.last=t:i.prev=t}function B4(a,t,i,n,s){va&&so();var r=t.$$slots?.[i],o=!1;r===!0&&(r=t.children,o=!0),r===void 0||r(a,o?()=>n:n)}function uv(a,t,...i){var n=new bd(a);Oo(()=>{const s=t()??null;n.ensure(s,s&&(r=>s(r,...i)))},no)}function kd(a,t,i){var n;va&&(n=bi,so());var s=new bd(a);Oo(()=>{var r=t()??null;if(va){var o=bp(n),l=o===hp,c=r!==null;if(l!==c){var d=pd();Rn(d),s.anchor=d,es(!1),s.ensure(r,r&&(g=>i(g,r))),es(!0);return}}s.ensure(r,r&&(g=>i(g,r)))},no)}function P4(a,t,i,n,s,r){let o=va;va&&so();var l=null;va&&bi.nodeType===u6&&(l=bi,so());var c=va?bi:a,d=new bd(c,!1);Oo(()=>{const g=t()||null;var h=U6;if(g===null){d.ensure(null,null);return}return d.ensure(g,m=>{if(g){if(l=va?l:j1(g,h),dr(l,l),n){var p=null;va&&T4(g)&&l.append(p=document.createComment(""));var u=va?_s(l):l.appendChild(ss());va&&(u===null?es(!1):Rn(u)),n(l,u),p?.remove()}gi.nodes.end=l,m.before(l)}va&&Rn(m)}),()=>{}},no),$c(()=>{}),o&&(es(!0),Rn(c))}function j4(a,t){let i=null,n=va;var s;if(va){i=bi;for(var r=_s(document.head);r!==null&&(r.nodeType!==mc||r.data!==a);)r=sr(r);if(r===null)es(!1);else{var o=sr(r);r.remove(),Rn(o)}}va||(s=document.head.appendChild(ss()));try{Oo(()=>{var l=vs(()=>t(s));l.f|=r1})}finally{n&&(es(!0),Rn(i))}}function Wu(a,t,i){No(()=>{var n=x(()=>t(a,i?.())||{});if(n?.destroy)return()=>n.destroy()})}function N4(a,t){var i=void 0,n;I1(()=>{i!==(i=t())&&(n&&(ts(n),n=null),i&&(n=vs(()=>{No(()=>i(a))})))})}function fv(a){var t,i,n="";if(typeof a=="string"||typeof a=="number")n+=a;else if(typeof a=="object")if(Array.isArray(a)){var s=a.length;for(t=0;t<s;t++)a[t]&&(i=fv(a[t]))&&(n&&(n+=" "),n+=i)}else for(i in a)a[i]&&(n&&(n+=" "),n+=i);return n}function O4(){for(var a,t,i=0,n="",s=arguments.length;i<s;i++)(a=arguments[i])&&(t=fv(a))&&(n&&(n+=" "),n+=t);return n}function D4(a){return typeof a=="object"?O4(a):a??""}const pv=[...`
|
||
\r\f \v\uFEFF`];function I4(a,t,i){var n=a==null?"":""+a;if(t&&(n=n?n+" "+t:t),i){for(var s of Object.keys(i))if(i[s])n=n?n+" "+s:s;else if(n.length)for(var r=s.length,o=0;(o=n.indexOf(s,o))>=0;){var l=o+r;(o===0||pv.includes(n[o-1]))&&(l===n.length||pv.includes(n[l]))?n=(o===0?"":n.substring(0,o))+n.substring(l+1):o=l}}return n===""?null:n}function mv(a,t=!1){var i=t?" !important;":";",n="";for(var s of Object.keys(a)){var r=a[s];r!=null&&r!==""&&(n+=" "+s+": "+r+i)}return n}function Lp(a){return a[0]!=="-"||a[1]!=="-"?a.toLowerCase():a}function L4(a,t){if(t){var i="",n,s;if(Array.isArray(t)?(n=t[0],s=t[1]):n=t,a){a=String(a).replaceAll(/\s*\/\*.*?\*\/\s*/g,"").trim();var r=!1,o=0,l=!1,c=[];n&&c.push(...Object.keys(n).map(Lp)),s&&c.push(...Object.keys(s).map(Lp));var d=0,g=-1;const f=a.length;for(var h=0;h<f;h++){var m=a[h];if(l?m==="/"&&a[h-1]==="*"&&(l=!1):r?r===m&&(r=!1):m==="/"&&a[h+1]==="*"?l=!0:m==='"'||m==="'"?r=m:m==="("?o++:m===")"&&o--,!l&&r===!1&&o===0){if(m===":"&&g===-1)g=h;else if(m===";"||h===f-1){if(g!==-1){var p=Lp(a.substring(d,g).trim());if(!c.includes(p)){m!==";"&&h++;var u=a.substring(d,h).trim();i+=" "+u+";"}}d=h+1,g=-1}}}}return n&&(i+=mv(n)),s&&(i+=mv(s,!0)),i=i.trim(),i===""?null:i}return a==null?null:String(a)}function ba(a,t,i,n,s,r){var o=a[pp];if(va||o!==i||o===void 0){var l=I4(i,n,r);(!va||l!==a.getAttribute("class"))&&(l==null?a.removeAttribute("class"):t?a.className=l:a.setAttribute("class",l)),a[pp]=i}else if(r&&s!==r)for(var c in r){var d=!!r[c];(s==null||d!==!!s[c])&&a.classList.toggle(c,d)}return r}function Vp(a,t={},i,n){for(var s in i){var r=i[s];t[s]!==r&&(i[s]==null?a.style.removeProperty(s):a.style.setProperty(s,r,n))}}function Hp(a,t,i,n){var s=a[mp];if(va||s!==t){var r=L4(t,n);(!va||r!==a.getAttribute("style"))&&(r==null?a.removeAttribute("style"):a.style.cssText=r),a[mp]=t}else n&&(Array.isArray(n)?(Vp(a,i?.[0],n[0]),Vp(a,i?.[1],n[1],"important")):Vp(a,i,n));return n}function An(a,t,i=!1){if(a.multiple){if(t==null)return;if(!sp(t))return P6();for(var n of a.options)n.selected=t.includes(xd(n));return}for(n of a.options){var s=xd(n);if(r4(s,t)){n.selected=!0;return}}(!i||t!==void 0)&&(a.selectedIndex=-1)}function Vn(a){var t=new MutationObserver(()=>{"__value"in a&&An(a,a.__value)});t.observe(a,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),$c(()=>{t.disconnect()})}function rs(a,t,i=t){var n=new WeakSet,s=!0;xp(a,"change",r=>{var o=r?"[selected]":":checked",l;if(a.multiple)l=[].map.call(a.querySelectorAll(o),xd);else{var c=a.querySelector(o)??a.querySelector("option:not([disabled])");l=c&&xd(c)}i(l),a.__value=l,mi!==null&&n.add(mi)}),No(()=>{var r=t();if(a===document.activeElement){var o=mi;if(n.has(o))return}if(An(a,r,s),s&&r===void 0){var l=a.querySelector(":checked");l!==null&&(r=xd(l),i(r))}a.__value=r,s=!1}),Vn(a)}function xd(a){return"__value"in a?a.__value:a.value}const Sd=Symbol("class"),Td=Symbol("style"),gv=Symbol("is custom element"),hv=Symbol("is html"),V4=ud?"link":"LINK",_v=ud?"input":"INPUT",H4=ud?"option":"OPTION",W4=ud?"select":"SELECT",Q4=ud?"progress":"PROGRESS";function Dt(a){if(va){var t=!1,i=()=>{if(!t){if(t=!0,a.hasAttribute("value")){var n=a.value;he(a,"value",null),a.value=n}if(a.hasAttribute("checked")){var s=a.checked;he(a,"checked",null),a.checked=s}}};a[cd]=i,Tr(i),k1()}}function Gi(a,t){var i=Qu(a);i.value===(i.value=t??void 0)||a.value===t&&(t!==0||a.nodeName!==Q4)||(a.value=t??"")}function Dl(a,t){var i=Qu(a);i.checked!==(i.checked=t??void 0)&&(a.checked=t)}function K4(a,t){t?a.hasAttribute("selected")||a.setAttribute("selected",""):a.removeAttribute("selected")}function he(a,t,i,n){var s=Qu(a);va&&(s[t]=a.getAttribute(t),t==="src"||t==="srcset"||t==="href"&&a.nodeName===V4)||s[t]!==(s[t]=i)&&(t==="loading"&&(a[d6]=i),i==null?a.removeAttribute(t):typeof i!="string"&&yv(a).includes(t)?a[t]=i:a.setAttribute(t,i))}function Y4(a,t,i,n,s=!1,r=!1){if(va&&s&&a.nodeName===_v){var o=a,l=o.type==="checkbox"?"defaultChecked":"defaultValue";l in i||Dt(o)}var c=Qu(a),d=c[gv],g=!c[hv];let h=va&&d;h&&es(!1);var m=t||{},p=a.nodeName===H4;for(var u in t)u in i||(i[u]=null);i.class?i.class=D4(i.class):i[Sd]&&(i.class=null),i[Td]&&(i.style??=null);var f=yv(a);if(a.nodeName===_v&&"type"in i&&("value"in i||"__value"in i)){var _=i.type;(_!==m.type||_===void 0&&a.hasAttribute("type"))&&(m.type=_,he(a,"type",_))}for(const B in i){let A=i[B];if(p&&B==="value"&&A==null){a.value=a.__value="",m[B]=A;continue}if(B==="class"){var v=a.namespaceURI==="http://www.w3.org/1999/xhtml";ba(a,v,A,n,t?.[Sd],i[Sd]),m[B]=A,m[Sd]=i[Sd];continue}if(B==="style"){Hp(a,A,t?.[Td],i[Td]),m[B]=A,m[Td]=i[Td];continue}var y=m[B];if(!(A===y&&!(A===void 0&&a.hasAttribute(B)))){m[B]=A;var S=B[0]+B[1];if(S!=="$$")if(S==="on"){const j={},G="$$"+B;let C=B.slice(2);var q=b4(C);if(_4(C)&&(C=C.slice(0,-7),j.capture=!0),!q&&y){if(A!=null)continue;a.removeEventListener(C,m[G],j),m[G]=null}if(q)$4(C,a,A),q4([C]);else if(A!=null){let R=function(H){m[B].call(this,H)};m[G]=nv(C,a,R,j)}}else if(B==="style")he(a,B,A);else if(B==="autofocus")Q6(a,!!A);else if(!d&&(B==="__value"||B==="value"&&A!=null))a.value=a.__value=A;else if(B==="selected"&&p)K4(a,A);else{var M=B;g||(M=w4(M));var P=M==="defaultValue"||M==="defaultChecked";if(A==null&&!d&&!P)if(c[B]=null,M==="value"||M==="checked"){let j=a;const G=t===void 0;if(M==="value"){let C=j.defaultValue;j.removeAttribute(M),j.defaultValue=C,j.value=j.__value=G?C:null}else{let C=j.defaultChecked;j.removeAttribute(M),j.defaultChecked=C,j.checked=G?C:!1}}else a.removeAttribute(B);else P||f.includes(M)&&(d||typeof A!="string")?(a[M]=A,M in c&&(c[M]=Ln)):typeof A!="function"&&he(a,M,A)}}}return h&&es(!0),m}function vv(a,t,i=[],n=[],s=[],r,o=!1,l=!1){Sp(s,i,n,c=>{var d=void 0,g={},h=a.nodeName===W4,m=!1;if(I1(()=>{var u=t(...c.map(e)),f=Y4(a,d,u,r,o,l);m&&h&&"value"in u&&An(a,u.value);for(let v of Object.getOwnPropertySymbols(g))u[v]||ts(g[v]);for(let v of Object.getOwnPropertySymbols(u)){var _=u[v];v.description===R6&&(!d||_!==d[v])&&(g[v]&&ts(g[v]),g[v]=vs(()=>N4(a,()=>_))),f[v]=_}d=f}),h){var p=a;No(()=>{An(p,d.value,!0),Vn(p)})}m=!0})}function Qu(a){return a[l1]??={[gv]:a.nodeName.includes("-"),[hv]:a.namespaceURI===f1}}var bv=new Map;function yv(a){var t=a.getAttribute("is")||a.nodeName,i=bv.get(t);if(i)return i;bv.set(t,i=[]);for(var n,s=a,r=Element.prototype;r!==s;){n=i1(s);for(var o in n)n[o].set&&o!=="innerHTML"&&o!=="textContent"&&o!=="innerText"&&i.push(o);s=op(s)}return i}function za(a,t,i=t){var n=new WeakSet;xp(a,"input",async s=>{var r=s?a.defaultValue:a.value;if(r=Qp(a)?Kp(r):r,i(r),mi!==null&&n.add(mi),await Fs(),r!==(r=t())){var o=a.selectionStart,l=a.selectionEnd,c=a.value.length;if(a.value=r??"",l!==null){var d=a.value.length;o===l&&l===c&&d>c?(a.selectionStart=d,a.selectionEnd=d):(a.selectionStart=o,a.selectionEnd=Math.min(l,d))}}}),(va&&a.defaultValue!==a.value||x(t)==null&&a.value)&&(i(Qp(a)?Kp(a.value):a.value),mi!==null&&n.add(mi)),qc(()=>{var s=t();if(a===document.activeElement){var r=mi;if(n.has(r))return}Qp(a)&&s===Kp(a.value)||a.type==="date"&&!s&&!a.value||s!==a.value&&(a.value=s??"")})}function Wp(a,t,i=t){xp(a,"change",n=>{var s=n?a.defaultChecked:a.checked;i(s)}),(va&&a.defaultChecked!==a.checked||x(t)==null)&&i(a.checked),qc(()=>{var n=t();a.checked=!!n})}function Qp(a){var t=a.type;return t==="number"||t==="range"}function Kp(a){return a===""?null:+a}function Il(a,t,i){var n=ao(a,t);n&&n.set&&(a[t]=i,$c(()=>{a[t]=null}))}function Yp(a,t){return a===t||a?.[Rr]===t}function qi(a={},t,i,n){var s=Ui.r,r=gi;return No(()=>{var o,l;return qc(()=>{o=l,l=n?.()||[],x(()=>{Yp(i(...l),a)||(t(a,...l),o&&Yp(i(...o),a)&&t(null,...o))})}),()=>{let c=r;for(;c!==s&&c.parent!==null&&c.parent.f&up;)c=c.parent;const d=()=>{l&&Yp(i(...l),a)&&t(null,...l)},g=c.teardown;c.teardown=()=>{d(),g?.()}}}),a}function J4(a){return function(...t){var i=t[0];return i.stopPropagation(),a?.apply(this,t)}}function X4(a){return function(...t){var i=t[0];return i.preventDefault(),a?.apply(this,t)}}function en(a=!1){const t=Ui,i=t.l.u;if(!i)return;let n=()=>Y(t.s);if(a){let s=0,r={};const o=wc(()=>{let l=!1;const c=t.s;for(const d in c)c[d]!==r[d]&&(r[d]=c[d],l=!0);return l&&s++,s});n=()=>e(o)}i.b.length&&D1(()=>{wv(t,n),lp(i.b)}),Iu(()=>{const s=x(()=>i.m.map(l6));return()=>{for(const r of s)typeof r=="function"&&r()}}),i.a.length&&Iu(()=>{wv(t,n),lp(i.a)})}function wv(a,t){if(a.l.s)for(const i of a.l.s)e(i);t()}const Z4={get(a,t){if(!a.exclude.has(t))return a.props[t]},set(a,t){return!1},getOwnPropertyDescriptor(a,t){if(!a.exclude.has(t)&&t in a.props)return{enumerable:!0,configurable:!0,value:a.props[t]}},has(a,t){return a.exclude.has(t)?!1:t in a.props},ownKeys(a){return Reflect.ownKeys(a.props).filter(t=>!a.exclude.has(t))}};function Ja(a,t,i){return new Proxy({props:a,exclude:t},Z4)}const e5={get(a,t){let i=a.props.length;for(;i--;){let n=a.props[i];if(rd(n)&&(n=n()),typeof n=="object"&&n!==null&&t in n)return n[t]}},set(a,t,i){let n=a.props.length;for(;n--;){let s=a.props[n];rd(s)&&(s=s());const r=ao(s,t);if(r&&r.set)return r.set(i),!0}return!1},getOwnPropertyDescriptor(a,t){let i=a.props.length;for(;i--;){let n=a.props[i];if(rd(n)&&(n=n()),typeof n=="object"&&n!==null&&t in n){const s=ao(n,t);return s&&!s.configurable&&(s.configurable=!0),s}}},has(a,t){if(t===Rr||t===fp)return!1;for(let i of a.props)if(rd(i)&&(i=i()),i!=null&&t in i)return!0;return!1},ownKeys(a){const t=[];for(let i of a.props)if(rd(i)&&(i=i()),!!i){for(const n in i)t.includes(n)||t.push(n);for(const n of Object.getOwnPropertySymbols(i))t.includes(n)||t.push(n)}return t}};function Za(...a){return new Proxy({props:a},e5)}function Se(a,t,i,n){var s=!hc||(i&G6)!==0,r=(i&M6)!==0,o=(i&z6)!==0,l=n,c=!0,d=void 0,g=()=>o&&s?(d??=wc(n),e(d)):(c&&(c=!1,l=o?x(n):n),l);let h;if(r){var m=Rr in a||fp in a;h=ao(a,t)?.set??(m&&t in a?q=>a[t]=q:void 0)}var p,u=!1;r?[p,u]=W6(()=>a[t]):p=a[t],p===void 0&&n!==void 0&&(p=g(),h&&(s&&y6(),h(p)));var f;if(s?f=()=>{var q=a[t];return q===void 0?g():(c=!0,q)}:f=()=>{var q=a[t];return q!==void 0&&(l=void 0),q===void 0?l:q},s&&(i&F6)===0)return f;if(h){var _=a.$$legacy;return(function(q,M){return arguments.length>0?((!s||!M||_||u)&&h(M?f():q),q):f()})}var v=!1,y=((i&C6)!==0?wc:Yt)(()=>(v=!1,f()));r&&e(y);var S=gi;return(function(q,M){if(arguments.length>0){const P=M?e(y):s&&r?Sc(q):q;return b(y,P),v=!0,l!==void 0&&(l=P),q}return lo&&v||(S.f&Ps)!==0?y.v:e(y)})}function t5(a){return class extends a5{constructor(t){super({component:a,...t})}}}class a5{#e;#t;constructor(t){var i=new Map,n=(r,o)=>{var l=K(o,!1,!1);return i.set(r,l),l};const s=new Proxy({...t.props||{},$$events:{}},{get(r,o){return e(i.get(o)??n(o,Reflect.get(r,o)))},has(r,o){return o===fp?!0:(e(i.get(o)??n(o,Reflect.get(r,o))),Reflect.has(r,o))},set(r,o,l){return b(i.get(o)??n(o,l),l),Reflect.set(r,o,l)}});this.#t=(t.hydrate?F4:ov)(t.component,{target:t.target,anchor:t.anchor,props:s,context:t.context,intro:t.intro??!1,recover:t.recover,transformError:t.transformError}),(!t?.props?.$$host||t.sync===!1)&&q1(),this.#e=s.$$events;for(const r of Object.keys(this.#t))r==="$set"||r==="$destroy"||r==="$on"||rp(this,r,{get(){return this.#t[r]},set(o){this.#t[r]=o},enumerable:!0});this.#t.$set=r=>{Object.assign(s,r)},this.#t.$destroy=()=>{M4(this.#t)}}$set(t){this.#t.$set(t)}$on(t,i){this.#e[t]=this.#e[t]||[];const n=(...s)=>i.call(this,...s);return this.#e[t].push(n),()=>{this.#e[t]=this.#e[t].filter(s=>s!==n)}}$destroy(){this.#t.$destroy()}}function Qn(a){Ui===null&&zu(),hc&&Ui.l!==null?kv(Ui).m.push(a):Iu(()=>{const t=x(a);if(typeof t=="function")return t})}function Ns(a){Ui===null&&zu(),Qn(()=>()=>x(a))}function i5(a){Ui===null&&zu(),Ui.l===null&&b6(),kv(Ui).a.push(a)}function kv(a){var t=a.l;return t.u??={a:[],b:[],m:[]}}class Jp{constructor(t,i){this.status=t,typeof i=="string"?this.body={message:i}:i?this.body=i:this.body={message:`Error: ${t}`}}toString(){return JSON.stringify(this.body)}}class Xp{constructor(t,i){try{new Headers({location:i})}catch{throw new Error(`Invalid redirect location ${JSON.stringify(i)}: this string contains characters that cannot be used in HTTP headers`)}this.status=t,this.location=i}}class Zp extends Error{constructor(t,i,n){super(n),this.status=t,this.text=i}}new URL("sveltekit-internal://");function n5(a,t){return a==="/"||t==="ignore"?a:t==="never"?a.endsWith("/")?a.slice(0,-1):a:t==="always"&&!a.endsWith("/")?a+"/":a}function s5(a){return a.split("%25").map(decodeURI).join("%25")}function r5(a){for(const t in a)a[t]=decodeURIComponent(a[t]);return a}function em({href:a}){return a.split("#")[0]}function Io(){}function o5(...a){let t=5381;for(const i of a)if(typeof i=="string"){let n=i.length;for(;n;)t=t*33^i.charCodeAt(--n)}else if(ArrayBuffer.isView(i)){const n=new Uint8Array(i.buffer,i.byteOffset,i.byteLength);let s=n.length;for(;s;)t=t*33^n[--s]}else throw new TypeError("value must be a string or TypedArray");return(t>>>0).toString(36)}new TextEncoder;function l5(a){const t=atob(a),i=new Uint8Array(t.length);for(let n=0;n<t.length;n++)i[n]=t.charCodeAt(n);return i}const c5=window.fetch;window.fetch=(a,t)=>((a instanceof Request?a.method:t?.method||"GET")!=="GET"&&$d.delete(tm(a)),c5(a,t));const $d=new Map;function d5(a,t){const i=tm(a,t),n=document.querySelector(i);if(n?.textContent){n.remove();let{body:s,...r}=JSON.parse(n.textContent);n.getAttribute("data-b64")!==null&&(s=l5(s));const l=n.getAttribute("data-ttl");return l&&$d.set(i,{body:s,init:r,ttl:1e3*Number(l)}),Promise.resolve(new Response(s,r))}return window.fetch(a,t)}function u5(a,t,i){if($d.size>0){const n=tm(a,i),s=$d.get(n);if(s){if(performance.now()<s.ttl&&["default","force-cache","only-if-cached",void 0].includes(i?.cache))return new Response(s.body,s.init);$d.delete(n)}}return window.fetch(t,i)}function tm(a,t){let n=`script[data-sveltekit-fetched][data-url=${JSON.stringify(a instanceof Request?a.url:a)}]`;if(t?.headers||t?.body){const s=[];t.headers&&s.push([...new Headers(t.headers)].join(",")),t.body&&(typeof t.body=="string"||ArrayBuffer.isView(t.body))&&s.push(t.body),n+=`[data-hash="${o5(...s)}"]`}return n}const f5=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/,p5=/^\/\((?:[^)]+)\)$/;function m5(a){const t=[];return{pattern:a==="/"||p5.test(a)?/^\/$/:new RegExp(`^${h5(a).map(n=>{const s=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(n);if(s)return t.push({name:s[1],matcher:s[2],optional:!1,rest:!0,chained:!0}),"(?:/([^]*))?";const r=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(n);if(r)return t.push({name:r[1],matcher:r[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!n)return;const o=n.split(/\[(.+?)\](?!\])/);return"/"+o.map((c,d)=>{if(d%2){if(c.startsWith("x+"))return am(String.fromCharCode(parseInt(c.slice(2),16)));if(c.startsWith("u+"))return am(String.fromCharCode(...c.slice(2).split("-").map(f=>parseInt(f,16))));const g=f5.exec(c),[,h,m,p,u]=g;return t.push({name:p,matcher:u,optional:!!h,rest:!!m,chained:m?d===1&&o[0]==="":!1}),m?"([^]*?)":h?"([^/]*)?":"([^/]+?)"}return am(c)}).join("")}).join("")}/?$`),params:t}}function g5(a){return a!==""&&!/^\([^)]+\)$/.test(a)}function h5(a){return a.slice(1).split("/").filter(g5)}function _5(a,t,i){const n={},s=a.slice(1),r=s.filter(l=>l!==void 0);let o=0;for(let l=0;l<t.length;l+=1){const c=t[l];let d=s[l-o];if(c.chained&&c.rest&&o&&(d=s.slice(l-o,l+1).filter(g=>g).join("/"),o=0),d===void 0)if(c.rest)d="";else continue;if(!c.matcher||i[c.matcher](d)){n[c.name]=d;const g=t[l+1],h=s[l+1];g&&!g.rest&&g.optional&&h&&c.chained&&(o=0),!g&&!h&&Object.keys(n).length===r.length&&(o=0);continue}if(c.optional&&c.chained){o++;continue}return}if(!o)return n}function am(a){return a.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function v5({nodes:a,server_loads:t,dictionary:i,matchers:n}){const s=new Set(t);return Object.entries(i).map(([l,[c,d,g]])=>{const{pattern:h,params:m}=m5(l),p={id:l,exec:u=>{const f=h.exec(u);if(f)return _5(f,m,n)},errors:[1,...g||[]].map(u=>a[u]),layouts:[0,...d||[]].map(o),leaf:r(c)};return p.errors.length=p.layouts.length=Math.max(p.errors.length,p.layouts.length),p});function r(l){const c=l<0;return c&&(l=~l),[c,a[l]]}function o(l){return l===void 0?l:[s.has(l),a[l]]}}function xv(a,t=JSON.parse){try{return t(sessionStorage[a])}catch{}}function Sv(a,t,i=JSON.stringify){const n=i(t);try{sessionStorage[a]=n}catch{}}const ur=globalThis.__sveltekit_1xyyov?.base??"",b5=globalThis.__sveltekit_1xyyov?.assets??ur??"",y5="0.9.3",Tv="sveltekit:snapshot",$v="sveltekit:scroll",qv="sveltekit:states",w5="sveltekit:pageurl",Gc="sveltekit:history",qd="sveltekit:navigation",Ll={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},im=location.origin;function Av(a){if(a instanceof URL)return a;let t=document.baseURI;if(!t){const i=document.getElementsByTagName("base");t=i.length?i[0].href:document.URL}return new URL(a,t)}function Vl(){return{x:pageXOffset,y:pageYOffset}}function Fc(a,t){return a.getAttribute(`data-sveltekit-${t}`)}const Cv={...Ll,"":Ll.hover};function Gv(a){let t=a.assignedSlot??a.parentNode;return t?.nodeType===11&&(t=t.host),t}function Fv(a,t){for(;a&&a!==t;){if(a.nodeName.toUpperCase()==="A"&&a.hasAttribute("href"))return a;a=Gv(a)}}function nm(a,t,i){let n;try{if(n=new URL(a instanceof SVGAElement?a.href.baseVal:a.href,document.baseURI),i&&n.hash.match(/^#[^/]/)){const l=location.hash.split("#")[1]||"/";n.hash=`#${l}${n.hash}`}}catch{}const s=a instanceof SVGAElement?a.target.baseVal:a.target,r=!n||!!s||Yu(n,t,i)||(a.getAttribute("rel")||"").split(/\s+/).includes("external"),o=n?.origin===im&&a.hasAttribute("download");return{url:n,external:r,target:s,download:o}}function Ku(a){let t=null,i=null,n=null,s=null,r=null,o=null,l=a;for(;l&&l!==document.documentElement;)n===null&&(n=Fc(l,"preload-code")),s===null&&(s=Fc(l,"preload-data")),t===null&&(t=Fc(l,"keepfocus")),i===null&&(i=Fc(l,"noscroll")),r===null&&(r=Fc(l,"reload")),o===null&&(o=Fc(l,"replacestate")),l=Gv(l);function c(d){switch(d){case"":case"true":return!0;case"off":case"false":return!1;default:return}}return{preload_code:Cv[n??"off"],preload_data:Cv[s??"off"],keepfocus:c(t),noscroll:c(i),reload:c(r),replace_state:c(o)}}function Mv(a){const t=El(a);let i=!0;function n(){i=!0,t.update(o=>o)}function s(o){i=!1,t.set(o)}function r(o){let l;return t.subscribe(c=>{(l===void 0||i&&c!==l)&&o(l=c)})}return{notify:n,set:s,subscribe:r}}const zv={v:Io};function k5(){const{set:a,subscribe:t}=El(!1);let i;async function n(){clearTimeout(i);try{const s=await fetch(`${b5}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!s.ok)return!1;const o=(await s.json()).version!==y5;return o&&(a(!0),zv.v(),clearTimeout(i)),o}catch{return!1}}return{subscribe:t,check:n}}function Yu(a,t,i){return a.origin!==im||!a.pathname.startsWith(t)?!0:i?a.pathname!==location.pathname:!1}const Ev=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...Ev];const x5=new Set([...Ev]);[...x5];function S5(a){return a.filter(t=>t!=null)}function Ju(a,t){return a+"/"+t}function sm(a){return a instanceof Jp||a instanceof Zp?a.status:500}function T5(a){return a instanceof Zp?a.text:"Internal Error"}let Ms,Ad,rm;const $5=Qn.toString().includes("$$")||/function \w+\(\) \{\}/.test(Qn.toString()),Uv="a:";$5?(Ms={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(Uv)},Ad={current:null},rm={current:!1}):(Ms=new class{#e=Bn({});get data(){return e(this.#e)}set data(t){b(this.#e,t)}#t=Bn(null);get form(){return e(this.#t)}set form(t){b(this.#t,t)}#a=Bn(null);get error(){return e(this.#a)}set error(t){b(this.#a,t)}#l=Bn({});get params(){return e(this.#l)}set params(t){b(this.#l,t)}#n=Bn({id:null});get route(){return e(this.#n)}set route(t){b(this.#n,t)}#s=Bn({});get state(){return e(this.#s)}set state(t){b(this.#s,t)}#i=Bn(-1);get status(){return e(this.#i)}set status(t){b(this.#i,t)}#o=Bn(new URL(Uv));get url(){return e(this.#o)}set url(t){b(this.#o,t)}},Ad=new class{#e=Bn(null);get current(){return e(this.#e)}set current(t){b(this.#e,t)}},rm=new class{#e=Bn(!1);get current(){return e(this.#e)}set current(t){b(this.#e,t)}},zv.v=()=>rm.current=!0);function Rv(a){Object.assign(Ms,a)}const q5=new Set(["icon","shortcut icon","apple-touch-icon"]);let Cd=null;const Lo=xv($v)??{},Gd=xv(Tv)??{},uo={url:Mv({}),page:Mv({}),navigating:El(null),updated:k5()};function om(a){Lo[a]=Vl()}function A5(a,t){let i=a+1;for(;Lo[i];)delete Lo[i],i+=1;for(i=t+1;Gd[i];)delete Gd[i],i+=1}function Fd(a,t=!1){return t?location.replace(a.href):location.href=a.href,new Promise(Io)}async function Bv(){if("serviceWorker"in navigator){const a=await navigator.serviceWorker.getRegistration(ur||"/");a&&await a.update()}}let lm,cm,Xu,fo,dm,Xn;const Zu=[],ef=[];let fr=null;function tf(){fr?.fork?.then(a=>a?.discard()),fr=null,zc={element:void 0,href:void 0}}const af=new Map,Pv=new Set,C5=new Set,Md=new Set;let gn={branch:[],error:null,url:null},jv=!1,nf=!1,Nv=!0,zd=!1,Ed=!1,Ov=!1,um=!1,Dv,as,pr,Vo;const sf=new Set,Iv=new Map,Lv=new Map;async function G5(a,t,i){if(globalThis.__sveltekit_1xyyov.data){const{q:r={},p:o={},l={},f:c={}}=globalThis.__sveltekit_1xyyov.data;for(const d in r)r[d];for(const d in l)l[d];for(const d in c)c[d];for(const d in o)o[d]}document.URL!==location.href&&(location.href=location.href),Xn=a,await a.hooks.init?.(),lm=v5(a),fo=document.documentElement,dm=t,cm=a.nodes[0],Xu=a.nodes[1],cm(),Xu(),as=history.state?.[Gc],pr=history.state?.[qd],as||(as=pr=Date.now(),history.replaceState({...history.state,[Gc]:as,[qd]:pr},""));const n=Lo[as];function s(){n&&(history.scrollRestoration="manual",scrollTo(n.x,n.y))}i?(s(),await L5(dm,i)):(await Mc({type:"enter",url:Av(Xn.hash?W5(new URL(location.href)):location.href),replace_state:!0}),s()),I5()}function F5(){Zu.length=0,um=!1}function Vv(a){ef.some(t=>t?.snapshot)&&(Gd[a]=ef.map(t=>t?.snapshot?.capture()))}function Hv(a){Gd[a]?.forEach((t,i)=>{ef[i]?.snapshot?.restore(t)})}function Wv(){om(as),Sv($v,Lo),Vv(pr),Sv(Tv,Gd)}async function M5(a,t,i,n){let s,r;t.invalidateAll&&tf(),await Mc({type:"goto",url:Av(a),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:i,nav_token:n,accept:()=>{if(t.invalidateAll){um=!0,s=new Set;for(const[o,l]of Iv)for(const[c,d]of l)d.resource?.reset(),s.add(Ju(o,c));r=new Set;for(const[o,l]of Lv)for(const c of l.keys())r.add(Ju(o,c))}t.invalidate&&t.invalidate.forEach(D5)}}),t.invalidateAll&&Fs().then(Fs).then(()=>{for(const[o,l]of Iv)for(const[c,{resource:d}]of l)s?.has(Ju(o,c))&&d.start();for(const[o,l]of Lv)for(const[c,{resource:d}]of l)r?.has(Ju(o,c))&&d.reconnect()})}async function z5(a){if(a.id!==fr?.id){tf();const t={};sf.add(t),fr={id:a.id,token:t,promise:Kv({...a,preload:t}).then(i=>(sf.delete(t),i.type==="loaded"&&i.state.error&&tf(),i)),fork:null}}return fr.promise}async function fm(a){const t=(await of(a,!1))?.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(i=>i[1]()))}async function Qv(a,t,i){const n={params:gn.params,route:{id:gn.route?.id??null},url:new URL(location.href)};if(gn={...a.state,nav:n},Rv(a.props.page),Dv=new Xn.root({target:t,props:{...a.props,stores:uo,components:ef},hydrate:i,sync:!1,transformError:void 0}),await Promise.resolve(),i){const s={from:null,to:{...n,scroll:Lo[as]??Vl()},willUnload:!1,type:"enter",complete:Promise.resolve()};Md.forEach(r=>r(s))}Hv(pr),nf=!0}async function rf({url:a,params:t,branch:i,errors:n,status:s,error:r,route:o,form:l}){let c="never";if(ur&&(a.pathname===ur||a.pathname===ur+"/"))c="always";else for(const u of i)u?.slash!==void 0&&(c=u.slash);a.pathname=n5(a.pathname,c),a.search=a.search;const d={type:"loaded",state:{url:a,params:t,branch:i,error:r,route:o},props:{constructors:S5(i).map(u=>u.node.component),page:vm(Ms)}};l!==void 0&&(d.props.form=l);let g={},h=!Ms,m=0;for(let u=0;u<Math.max(i.length,gn.branch.length);u+=1){const f=i[u],_=gn.branch[u];f?.data!==_?.data&&(h=!0),f&&(g={...g,...f.data},h&&(d.props[`data_${m}`]=g),m+=1)}return(!gn.url||a.href!==gn.url.href||gn.error!==r||l!==void 0&&l!==Ms.form||h)&&(d.props.page={error:r,params:t,route:{id:o?.id??null},state:{},status:s,url:new URL(a),form:l??null,data:h?g:Ms.data}),d}async function pm({loader:a,parent:t,url:i,params:n,route:s,server_data_node:r}){let o=null;const l={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},c=await a();return{node:c,loader:a,server:r,universal:c.universal?.load?{type:"data",data:o,uses:l}:null,data:o??r?.data??null,slash:c.universal?.trailingSlash??r?.slash}}function E5(a,t,i){let n=a instanceof Request?a.url:a;const s=new URL(n,i);s.origin===i.origin&&(n=s.href.slice(i.origin.length));const r=nf?u5(n,s.href,t):d5(n,t);return{resolved:s,promise:r}}function U5(a,t,i,n,s,r){if(um)return!0;if(!s)return!1;if(s.parent&&a||s.route&&t||s.url&&i)return!0;for(const o of s.search_params)if(n.has(o))return!0;for(const o of s.params)if(r[o]!==gn.params[o])return!0;for(const o of s.dependencies)if(Zu.some(l=>l(new URL(o))))return!0;return!1}function mm(a,t){return a?.type==="data"?a:a?.type==="skip"?t??null:null}function R5(a,t){if(!a)return new Set(t.searchParams.keys());const i=new Set([...a.searchParams.keys(),...t.searchParams.keys()]);for(const n of i){const s=a.searchParams.getAll(n),r=t.searchParams.getAll(n);s.every(o=>r.includes(o))&&r.every(o=>s.includes(o))&&i.delete(n)}return i}function B5({error:a,url:t,route:i,params:n}){return{type:"loaded",state:{error:a,url:t,route:i,params:n,branch:[]},props:{page:vm(Ms),constructors:[]}}}async function Kv({id:a,invalidating:t,url:i,params:n,route:s,preload:r}){if(fr?.id===a)return sf.delete(fr.token),fr.promise;const{errors:o,layouts:l,leaf:c}=s,d=[...l,c];o.forEach(_=>_?.().catch(Io)),d.forEach(_=>_?.[1]().catch(Io));const g=gn.url?a!==lf(gn.url):!1,h=gn.route?s.id!==gn.route.id:!1,m=R5(gn.url,i);let p=!1;const u=d.map(async(_,v)=>{if(!_)return;const y=gn.branch[v];return _[1]===y?.loader&&!U5(p,h,g,m,y.universal?.uses,n)?y:(p=!0,pm({loader:_[1],url:i,params:n,route:s,parent:async()=>{const q={};for(let M=0;M<v;M+=1)Object.assign(q,(await u[M])?.data);return q},server_data_node:mm(_[0]?{type:"skip"}:null,_[0]?y?.server:void 0)}))});for(const _ of u)_.catch(Io);const f=[];for(let _=0;_<d.length;_+=1)if(d[_])try{f.push(await u[_])}catch(v){if(v instanceof Xp)return{type:"redirect",location:v.location};if(r&&sf.has(r))return B5({error:await Ec(v,{params:n,url:i,route:{id:s.id}}),url:i,params:n,route:s});let y=sm(v),S;if(v instanceof Jp)S=v.body;else{if(await uo.updated.check())return await Bv(),await Fd(i);S=await Ec(v,{params:n,url:i,route:{id:s.id}})}const q=await P5(_,f,o);return q?rf({url:i,params:n,branch:f.slice(0,q.idx).concat(q.node),errors:o,status:y,error:S,route:s}):await Jv(i,{id:s.id},S,y)}else f.push(void 0);return rf({url:i,params:n,branch:f,errors:o,status:200,error:null,route:s,form:t?void 0:null})}async function P5(a,t,i){for(;a--;)if(i[a]){let n=a;for(;!t[n];)n-=1;try{return{idx:n+1,node:{node:await i[a](),loader:i[a],data:{},server:null,universal:null}}}catch{continue}}}async function gm({status:a,error:t,url:i,route:n}){const s={};let r=null;try{const o=await pm({loader:cm,url:i,params:s,route:n,parent:()=>Promise.resolve({}),server_data_node:mm(r)}),l={node:await Xu(),loader:Xu,universal:null,server:null,data:null};return rf({url:i,params:s,branch:[o,l],status:a,error:t,errors:[],route:null})}catch(o){if(o instanceof Xp){await M5(new URL(o.location,location.href),{},0);return}const l=await Xn.get_error_template(),c=await Ec(o,{url:i,params:s,route:n}),d=String(c?.message??"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">"),g=l({status:a,message:d}),h=new DOMParser().parseFromString(g,"text/html");throw document.documentElement.replaceChild(document.adoptNode(h.head),document.head),document.documentElement.replaceChild(document.adoptNode(h.body),document.body),o}}async function j5(a){const t=a.href;if(af.has(t))return af.get(t);let i;try{const n=(async()=>{let s=await Xn.hooks.reroute({url:new URL(a),fetch:async(r,o)=>E5(r,o,a).promise})??a;if(typeof s=="string"){const r=new URL(a);Xn.hash?r.hash=s:r.pathname=s,s=r}return s})();af.set(t,n),i=await n}catch{af.delete(t);return}return i}async function of(a,t){if(a&&!Yu(a,ur,Xn.hash)){const i=await j5(a);if(!i)return;const n=N5(i);for(const s of lm){const r=s.exec(n);if(r)return{id:lf(a),invalidating:t,route:s,params:r5(r),url:a}}}}function N5(a){return s5(Xn.hash?a.hash.replace(/^#/,"").replace(/[?#].+/,""):a.pathname.slice(ur.length))||"/"}function lf(a){return(Xn.hash?a.hash.replace(/^#/,""):a.pathname)+a.search}function Yv({url:a,type:t,intent:i,delta:n,event:s,scroll:r}){let o=!1;const l=_m(gn,i,a,t,r??null);n!==void 0&&(l.navigation.delta=n),s!==void 0&&(l.navigation.event=s);const c={...l.navigation,cancel:()=>{o=!0,l.reject(new Error("navigation cancelled"))}};return zd||Pv.forEach(d=>d(c)),o?null:l}async function Mc({type:a,url:t,popped:i,keepfocus:n,noscroll:s,replace_state:r,state:o={},redirect_count:l=0,nav_token:c={},accept:d=Io,block:g=Io,event:h}){const m=Vo;Vo=c;const p=await of(t,!1),u=a==="enter"?_m(gn,p,t,a):Yv({url:t,type:a,delta:i?.delta,intent:p,scroll:i?.scroll,event:h});if(!u){g(),Vo===c&&(Vo=m);return}const f=as,_=pr;d(),zd=!0,nf&&u.navigation.type!=="enter"&&uo.navigating.set(Ad.current=u.navigation);let v=p&&await Kv(p);if(!v){if(Yu(t,ur,Xn.hash))return await Fd(t,r);v=await Jv(t,{id:null},await Ec(new Zp(404,"Not Found",`Not found: ${t.pathname}`),{url:t,params:{},route:{id:null}}),404,r)}if(t=p?.url||t,Vo!==c){u.reject(new Error("navigation aborted"));return}if(!v)return;if(v.type==="redirect"){if(l<20){await Mc({type:a,url:new URL(v.location,t),popped:i,keepfocus:n,noscroll:s,replace_state:r,state:o,redirect_count:l+1,nav_token:c}),u.fulfil(void 0);return}if(v=await gm({status:500,error:await Ec(new Error("Redirect loop"),{url:t,params:{},route:{id:null}}),url:t,route:{id:null}}),!v)return}else if(v.props.page.status>=400&&await uo.updated.check())return await Bv(),await Fd(t,r);if(F5(),om(f),Vv(_),v.props.page.url.pathname!==t.pathname&&(t.pathname=v.props.page.url.pathname),o=i?i.state:o,!i){const B=r?0:1,A={[Gc]:as+=B,[qd]:pr+=B,[qv]:o};(r?history.replaceState:history.pushState).call(history,A,"",t),r||A5(as,pr)}const y=p&&fr?.id===p.id?fr.fork:null;fr?.fork&&!y?tf():(fr=null,zc={element:void 0,href:void 0}),v.props.page.state=o;let S;if(nf){const B=(await Promise.all(Array.from(C5,G=>G(u.navigation)))).filter(G=>typeof G=="function");if(B.length>0){let G=function(){B.forEach(C=>{Md.delete(C)})};B.push(G),B.forEach(C=>{Md.add(C)})}const A=u.navigation.to;gn={...v.state,nav:{params:A.params,route:A.route,url:A.url}},v.props.page&&(v.props.page.url=t),!n&&document.activeElement instanceof HTMLElement&&document.activeElement!==document.body&&document.activeElement.blur();const j=y&&await y;j?S=j.commit():(Cd=null,Dv.$set(v.props),Cd&&Object.assign(v.props.page,Cd),Rv(v.props.page),S=h4?.()),Ov=!0}else await Qv(v,dm,!1);const{activeElement:q}=document;if(await S,await Fs(),await Fs(),Vo!==c){u.reject(new Error("navigation aborted"));return}v.props.page&&Cd&&Object.assign(v.props.page,Cd);let M=null;if(Nv){const B=i?i.scroll:s?Vl():null;B?scrollTo(B.x,B.y):(M=t.hash&&document.getElementById(Xv(t)))?M.scrollIntoView():scrollTo(0,0)}const P=document.activeElement!==q&&document.activeElement!==document.body;!n&&!P&&H5(t,!M),Nv=!0,zd=!1,u.fulfil(void 0),u.navigation.to&&(u.navigation.to.scroll=Vl()),Md.forEach(B=>B(u.navigation)),a==="popstate"&&Hv(pr),uo.navigating.set(Ad.current=null)}async function Jv(a,t,i,n,s){return a.origin===im&&a.pathname===location.pathname&&!jv?await gm({status:n,error:i,url:a,route:t}):await Fd(a,s)}let zc={element:void 0,href:void 0};function O5(){let a,t;fo.addEventListener("mousemove",o=>{const l=o.target;clearTimeout(a),a=setTimeout(()=>{s(l,Ll.hover)},20)});function i(o){o.defaultPrevented||s(o.composedPath()[0],Ll.tap)}fo.addEventListener("mousedown",i),fo.addEventListener("touchstart",i,{passive:!0});const n=new IntersectionObserver(o=>{for(const l of o)l.isIntersecting&&(fm(new URL(l.target.href)),n.unobserve(l.target))},{threshold:0});async function s(o,l){const c=Fv(o,fo),d=c===zc.element&&c?.href===zc.href&&l>=t;if(!c||d)return;const{url:g,external:h,download:m}=nm(c,ur,Xn.hash);if(h||m)return;const p=Ku(c),u=g&&lf(gn.url)===lf(g);if(!(p.reload||u))if(l<=p.preload_data){zc={element:c,href:c.href},t=Ll.tap;const f=await of(g,!1);if(!f)return;z5(f)}else l<=p.preload_code&&(zc={element:c,href:c.href},t=l,fm(g))}function r(){n.disconnect();for(const o of fo.querySelectorAll("a")){const{url:l,external:c,download:d}=nm(o,ur,Xn.hash);if(c||d)continue;const g=Ku(o);g.reload||(g.preload_code===Ll.viewport&&n.observe(o),g.preload_code===Ll.eager&&fm(l))}}Md.add(r),r()}function Ec(a,t){if(a instanceof Jp)return a.body;const i=sm(a),n=T5(a);return Xn.hooks.handleError({error:a,event:t,status:i,message:n})??{message:n}}function D5(a){if(typeof a=="function")Zu.push(a);else{const{href:t}=new URL(a,location.href);Zu.push(i=>i.href===t)}}function I5(){history.scrollRestoration="manual",addEventListener("beforeunload",t=>{let i=!1;if(Wv(),!zd){const n=_m(gn,void 0,null,"leave"),s={...n.navigation,cancel:()=>{i=!0,n.reject(new Error("navigation cancelled"))}};Pv.forEach(r=>r(s))}i?(t.preventDefault(),t.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&Wv()}),navigator.connection?.saveData||O5(),fo.addEventListener("click",async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;const i=Fv(t.composedPath()[0],fo);if(!i)return;const{url:n,external:s,target:r,download:o}=nm(i,ur,Xn.hash);if(!n)return;if(r==="_parent"||r==="_top"){if(window.parent!==window)return}else if(r&&r!=="_self")return;const l=Ku(i);if(!(i instanceof SVGAElement)&&n.protocol!==location.protocol&&!(n.protocol==="https:"||n.protocol==="http:")||o)return;const[d,g]=(Xn.hash?n.hash.replace(/^#/,""):n.href).split("#"),h=d===em(location);if(s||l.reload&&(!h||!g)){Yv({url:n,type:"link",event:t})?zd=!0:t.preventDefault();return}if(g!==void 0&&h){const[,m]=gn.url.href.split("#");if(m===g){if(t.preventDefault(),g===""||g==="top"&&i.ownerDocument.getElementById("top")===null)scrollTo({top:0});else{const p=i.ownerDocument.getElementById(decodeURIComponent(g));p&&(p.scrollIntoView(),p.focus())}return}if(Ed=!0,om(as),a(n),!l.replace_state)return;Ed=!1}t.preventDefault(),await new Promise(m=>{requestAnimationFrame(()=>{setTimeout(m,0)}),setTimeout(m,100)}),await Mc({type:"link",url:n,keepfocus:l.keepfocus,noscroll:l.noscroll,replace_state:l.replace_state??n.href===location.href,event:t})}),fo.addEventListener("submit",t=>{if(t.defaultPrevented)return;const i=HTMLFormElement.prototype.cloneNode.call(t.target),n=t.submitter;if((n?.formTarget||i.target)==="_blank"||(n?.formMethod||i.method)!=="get")return;const o=new URL(n?.hasAttribute("formaction")&&n?.formAction||i.action);if(Yu(o,ur,!1))return;const l=t.target,c=Ku(l);if(c.reload)return;t.preventDefault(),t.stopPropagation();const d=new FormData(l,n);o.search=new URLSearchParams(d).toString(),Mc({type:"form",url:o,keepfocus:c.keepfocus,noscroll:c.noscroll,replace_state:c.replace_state??o.href===location.href,event:t})}),addEventListener("popstate",async t=>{if(!hm){if(t.state?.[Gc]){const i=t.state[Gc];if(Vo={},i===as)return;const n=Lo[i],s=t.state[qv]??{},r=new URL(t.state[w5]??location.href),o=t.state[qd],l=gn.url?em(location)===em(gn.url):!1;if(o===pr&&(Ov||l)){s!==Ms.state&&(Ms.state=s),a(r),Lo[as]=Vl(),n&&scrollTo(n.x,n.y),as=i;return}const d=i-as;await Mc({type:"popstate",url:r,popped:{state:s,scroll:n,delta:d},accept:()=>{as=i,pr=o},block:()=>{history.go(-d)},nav_token:Vo,event:t})}else if(!Ed){const i=new URL(location.href);a(i),Xn.hash&&location.reload()}}}),addEventListener("hashchange",()=>{Ed&&(Ed=!1,history.replaceState({...history.state,[Gc]:++as,[qd]:pr},"",location.href))});for(const t of document.querySelectorAll("link"))q5.has(t.rel)&&(t.href=t.href);addEventListener("pageshow",t=>{t.persisted&&uo.navigating.set(Ad.current=null)});function a(t){gn.url=Ms.url=t,uo.page.set(vm(Ms)),uo.page.notify()}}async function L5(a,{status:t=200,error:i,node_ids:n,params:s,route:r,server_route:o,data:l,form:c}){jv=!0;const d=new URL(location.href);let g;({params:s={},route:r={id:null}}=await of(d,!1)||{}),g=lm.find(({id:p})=>p===r.id);let h,m=!0;try{const p=n.map(async(f,_)=>{const v=l[_];return v?.uses&&(v.uses=V5(v.uses)),pm({loader:Xn.nodes[f],url:d,params:s,route:r,parent:async()=>{const y={};for(let S=0;S<_;S+=1)Object.assign(y,(await p[S]).data);return y},server_data_node:mm(v)})}),u=await Promise.all(p);if(g){const f=g.layouts;for(let _=0;_<f.length;_++)f[_]||u.splice(_,0,void 0)}h=await rf({url:d,params:s,branch:u,status:t,error:i,errors:g?.errors,form:c,route:g??null})}catch(p){if(p instanceof Xp)return await Fd(new URL(p.location,location.href));h=await gm({status:sm(p),error:await Ec(p,{url:d,params:s,route:r}),url:d,route:r}),a.textContent="",m=!1}h&&(h.props.page&&(h.props.page.state={}),await Qv(h,a,m))}function V5(a){return{dependencies:new Set(a?.dependencies??[]),params:new Set(a?.params??[]),parent:!!a?.parent,route:!!a?.route,url:!!a?.url,search_params:new Set(a?.search_params??[])}}let hm=!1;function H5(a,t=!0){const i=document.querySelector("[autofocus]");if(i)i.focus();else{const n=Xv(a);if(n&&document.getElementById(n)){const{x:r,y:o}=Vl();setTimeout(()=>{const l=history.state;hm=!0,location.replace(new URL(`#${n}`,location.href)),history.replaceState(l,"",a),t&&scrollTo(r,o),hm=!1})}else{const r=document.body,o=r.getAttribute("tabindex");r.tabIndex=-1,r.focus({preventScroll:!0,focusVisible:!1}),o!==null?r.setAttribute("tabindex",o):r.removeAttribute("tabindex")}const s=getSelection();if(s&&s.type!=="None"){const r=[];for(let o=0;o<s.rangeCount;o+=1)r.push(s.getRangeAt(o));setTimeout(()=>{if(s.rangeCount===r.length){for(let o=0;o<s.rangeCount;o+=1){const l=r[o],c=s.getRangeAt(o);if(l.commonAncestorContainer!==c.commonAncestorContainer||l.startContainer!==c.startContainer||l.endContainer!==c.endContainer||l.startOffset!==c.startOffset||l.endOffset!==c.endOffset)return}s.removeAllRanges()}})}}}function _m(a,t,i,n,s=null){let r,o;const l=new Promise((d,g)=>{r=d,o=g});return l.catch(Io),{navigation:{from:{params:a.params,route:{id:a.route?.id??null},url:a.url,scroll:Vl()},to:i&&{params:t?.params??null,route:{id:t?.route?.id??null},url:i,scroll:s},willUnload:!t,type:n,complete:l},fulfil:r,reject:o}}function vm(a){return{data:a.data,error:a.error,form:a.form,params:a.params,route:a.route,state:a.state,status:a.status,url:a.url}}function W5(a){const t=new URL(a);return t.hash=decodeURIComponent(a.hash),t}function Xv(a){let t;if(Xn.hash){const[,,i]=a.hash.split("#",3);t=i??""}else t=a.hash.slice(1);return decodeURIComponent(t)}const Fj="modulepreload",Mj=function(a,t){return new URL(a,t).href},zj={},Ho=function(t,i,n){let s=Promise.resolve();function r(o){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=o,window.dispatchEvent(l),!l.defaultPrevented)throw o}return s.then(o=>{for(const l of o||[])l.status==="rejected"&&r(l.reason);return t().catch(r)})},Q5={},K5="5";typeof window<"u"&&((window.__svelte??={}).v??=new Set).add(K5);var Y5=ie('<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"><!></div>'),J5=ie("<!> <!>",1);function X5(a,t){Ri(t,!0);let i=Se(t,"components",23,()=>[]),n=Se(t,"data_0",3,null),s=Se(t,"data_1",3,null);D1(()=>t.stores.page.set(t.page)),Iu(()=>{t.stores,t.page,t.constructors,i(),t.form,n(),s(),t.stores.page.notify()});let r=Bn(!1),o=Bn(!1),l=Bn(null);Qn(()=>{const f=t.stores.page.subscribe(()=>{e(r)&&(b(o,!0),Fs().then(()=>{b(l,document.title||"untitled page",!0)}))});return b(r,!0),f});const c=oi(()=>t.constructors[1]);var d=J5(),g=xt(d);{var h=f=>{const _=oi(()=>t.constructors[0]);var v=bs(),y=xt(v);kd(y,()=>e(_),(S,q)=>{qi(q(S,{get data(){return n()},get form(){return t.form},get params(){return t.page.params},children:(M,P)=>{var B=bs(),A=xt(B);kd(A,()=>e(c),(j,G)=>{qi(G(j,{get data(){return s()},get form(){return t.form},get params(){return t.page.params}}),C=>i()[1]=C,()=>i()?.[1])}),J(M,B)},$$slots:{default:!0}}),M=>i()[0]=M,()=>i()?.[0])}),J(f,v)},m=f=>{const _=oi(()=>t.constructors[0]);var v=bs(),y=xt(v);kd(y,()=>e(_),(S,q)=>{qi(q(S,{get data(){return n()},get form(){return t.form},get params(){return t.page.params}}),M=>i()[0]=M,()=>i()?.[0])}),J(f,v)};_e(g,f=>{t.constructors[1]?f(h):f(m,-1)})}var p=$(g,2);{var u=f=>{var _=Y5(),v=k(_);{var y=S=>{var q=Op();ne(()=>W(q,e(l))),J(S,q)};_e(v,S=>{e(o)&&S(y)})}w(_),J(f,_)};_e(p,f=>{e(r)&&f(u)})}J(a,d),Bi()}const Z5=t5(X5),eS=[()=>Ho(()=>Promise.resolve().then(()=>rS),void 0,mn&&mn.tagName.toUpperCase()==="SCRIPT"&&mn.src||new URL("_app/immutable/bundle.RICyrw4S.js",document.baseURI).href),()=>Ho(()=>Promise.resolve().then(()=>dS),void 0,mn&&mn.tagName.toUpperCase()==="SCRIPT"&&mn.src||new URL("_app/immutable/bundle.RICyrw4S.js",document.baseURI).href),()=>Ho(()=>Promise.resolve().then(()=>sE),void 0,mn&&mn.tagName.toUpperCase()==="SCRIPT"&&mn.src||new URL("_app/immutable/bundle.RICyrw4S.js",document.baseURI).href)],tS=[],aS={"/":[2]},bm={handleError:(({error:a})=>{console.error(a)}),reroute:(()=>{}),transport:{}},Zv=Object.fromEntries(Object.entries(bm.transport).map(([a,t])=>[a,t.decode])),iS=Object.fromEntries(Object.entries(bm.transport).map(([a,t])=>[a,t.encode])),eb=Object.freeze(Object.defineProperty({__proto__:null,decode:(a,t)=>Zv[a](t),decoders:Zv,dictionary:aS,encoders:iS,get_error_template:()=>Ho(()=>Promise.resolve().then(()=>rE),void 0,mn&&mn.tagName.toUpperCase()==="SCRIPT"&&mn.src||new URL("_app/immutable/bundle.RICyrw4S.js",document.baseURI).href).then(a=>a.default),hash:!0,hooks:bm,matchers:Q5,nodes:eS,root:Z5,server_loads:tS},Symbol.toStringTag,{value:"Module"}));function nS(a,t){G5(eb,a,t)}function sS(a,t){var i=bs(),n=xt(i);uv(n,()=>t.children),J(a,i)}const rS=Object.freeze(Object.defineProperty({__proto__:null,component:sS},Symbol.toStringTag,{value:"Module"})),oS={get error(){return Ms.error},get status(){return Ms.status}};uo.updated.check;const tb=oS;var lS=ie("<h1> </h1> <p> </p>",1);function cS(a,t){Ri(t,!0);var i=lS(),n=xt(i),s=k(n,!0);w(n);var r=$(n,2),o=k(r,!0);w(r),ne(()=>{W(s,tb.status),W(o,tb.error?.message)}),J(a,i),Bi()}const dS=Object.freeze(Object.defineProperty({__proto__:null,component:cS},Symbol.toStringTag,{value:"Module"}));O6();const Hl={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};const ym=(...a)=>a.filter((t,i,n)=>!!t&&t.trim()!==""&&n.indexOf(t)===i).join(" ").trim();function wm(a){return a!=null}function uS(a,t={}){const i=t.attributeNames??{},n=m=>i[m]??m,s=a.size??a.width??Hl.width,r=a.size??a.height??Hl.height,o=a.aliases?.filter(m=>typeof m=="string"&&m.trim()!=="").map(m=>`lucide-${m}`)??[],l=[...a.name?[`lucide-${a.name}`]:[],...o],c=t.className?.split(" ").filter(Boolean)??[],d=t.includeDefaultClasses===!1?ym(...c):ym("lucide",...l,...c),g=t.absoluteStrokeWidth?Number(t.strokeWidth??Hl["stroke-width"])*Number(a.size??a.width??Hl.width)/Number(t.size??t.width??Hl.width):t.strokeWidth??Hl["stroke-width"];return["svg",{...Object.entries(Hl).reduce((m,[p,u])=>(m[n(p)]=u,m),{}),..."color"in t&&t.color&&{[n("stroke")]:t.color},..."size"in t&&wm(t.size)&&{[n("width")]:t.size,[n("height")]:t.size},..."width"in t&&wm(t.width)&&{[n("width")]:t.width},..."height"in t&&wm(t.height)&&{[n("height")]:t.height},[n("stroke-width")]:g,...d&&{[n("class")]:d},[n("viewBox")]:`0 0 ${s} ${r}`,...t.hasA11yProp===!1?{[n("aria-hidden")]:"true"}:{},..."attributes"in t&&t.attributes},a.node.map(m=>{const[p,u,f]=m,_=t.nonScalingStroke?{[n("vector-effect")]:"non-scaling-stroke",...u}:u;return f?[p,_,f]:[p,_]})]}const fS=a=>{for(const t in a)if(t.startsWith("aria-")||t==="role"||t==="title")return!0;return!1};const pS=Symbol("lucide-context"),mS=()=>D6(pS);var gS=new Set(["$$slots","$$events","$$legacy","color","size","width","height","strokeWidth","absoluteStrokeWidth","nonScalingStroke","iconNode","icon","class","children"]),hS=co("<svg><!><!></svg>");function ei(a,t){Ri(t,!0);const i=mS()??{},n=Se(t,"color",19,()=>i.color??"currentColor"),s=Se(t,"size",19,()=>i.size??24),r=Se(t,"width",19,s),o=Se(t,"height",19,s),l=Se(t,"strokeWidth",19,()=>i.strokeWidth??2),c=Se(t,"absoluteStrokeWidth",19,()=>i.absoluteStrokeWidth??!1),d=Se(t,"nonScalingStroke",19,()=>i.nonScalingStroke??!1),g=Se(t,"iconNode",19,()=>[]),h=Se(t,"icon",19,()=>({node:g(),aliases:[],size:24})),m=Ja(t,gS),p=oi(()=>!!t.children||fS(m)),u=oi(()=>uS(h(),{color:n(),width:r(),height:o(),strokeWidth:l(),absoluteStrokeWidth:c(),nonScalingStroke:d(),className:ym("lucide-icon",i.class),hasA11yProp:e(p),attributes:m})),f=oi(()=>od(e(u),3)),_=oi(()=>e(f)[1]),v=oi(()=>c6(e(f)[2],()=>[],!0)),y=oi(()=>({...e(_),class:[...e(_).class.split(" "),t.class]}));var S=hS();vv(S,()=>({...e(y)}));var q=k(S);Mt(q,17,()=>e(v),Qt,(P,B)=>{var A=oi(()=>od(e(B),2));let j=()=>e(A)[0],G=()=>e(A)[1];var C=bs(),R=xt(C);P4(R,j,!0,(H,E)=>{vv(H,()=>({...G()}))}),J(P,C)});var M=$(q);uv(M,()=>t.children??Bo),w(S),J(a,S),Bi()}var _S=new Set(["$$slots","$$events","$$legacy"]);function ab(a,t){let i=Ja(t,_S);const n={name:"arrow-down",size:24,node:[["path",{d:"M12 5v14"}],["path",{d:"m19 12-7 7-7-7"}]]};ei(a,Za(()=>i,{get icon(){return n}}))}var vS=new Set(["$$slots","$$events","$$legacy"]);function ib(a,t){let i=Ja(t,vS);const n={name:"arrow-up",size:24,node:[["path",{d:"m5 12 7-7 7 7"}],["path",{d:"M12 19V5"}]]};ei(a,Za(()=>i,{get icon(){return n}}))}var bS=new Set(["$$slots","$$events","$$legacy"]);function Ud(a,t){let i=Ja(t,bS);const n={name:"audio-lines",size:24,node:[["path",{d:"M2 10v3"}],["path",{d:"M6 6v11"}],["path",{d:"M10 3v18"}],["path",{d:"M14 8v7"}],["path",{d:"M18 5v13"}],["path",{d:"M22 10v3"}]]};ei(a,Za(()=>i,{get icon(){return n}}))}var yS=new Set(["$$slots","$$events","$$legacy"]);function km(a,t){let i=Ja(t,yS);const n={name:"check",size:24,node:[["path",{d:"M20 6 9 17l-5-5"}]]};ei(a,Za(()=>i,{get icon(){return n}}))}var wS=new Set(["$$slots","$$events","$$legacy"]);function xm(a,t){let i=Ja(t,wS);const n={name:"chevron-down",size:24,node:[["path",{d:"m6 9 6 6 6-6"}]]};ei(a,Za(()=>i,{get icon(){return n}}))}var kS=new Set(["$$slots","$$events","$$legacy"]);function cf(a,t){let i=Ja(t,kS);const n={name:"chevron-left",size:24,node:[["path",{d:"m15 18-6-6 6-6"}]]};ei(a,Za(()=>i,{get icon(){return n}}))}var xS=new Set(["$$slots","$$events","$$legacy"]);function df(a,t){let i=Ja(t,xS);const n={name:"chevron-right",size:24,node:[["path",{d:"m9 18 6-6-6-6"}]]};ei(a,Za(()=>i,{get icon(){return n}}))}var SS=new Set(["$$slots","$$events","$$legacy"]);function nb(a,t){let i=Ja(t,SS);const n={name:"code",size:24,node:[["path",{d:"m16 18 6-6-6-6"}],["path",{d:"m8 6-6 6 6 6"}]]};ei(a,Za(()=>i,{get icon(){return n}}))}var TS=new Set(["$$slots","$$events","$$legacy"]);function $S(a,t){let i=Ja(t,TS);const n={name:"copy",size:24,node:[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"}]]};ei(a,Za(()=>i,{get icon(){return n}}))}var qS=new Set(["$$slots","$$events","$$legacy"]);function Uc(a,t){let i=Ja(t,qS);const n={name:"download",size:24,node:[["path",{d:"M12 15V3"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}],["path",{d:"m7 10 5 5 5-5"}]]};ei(a,Za(()=>i,{get icon(){return n}}))}var AS=new Set(["$$slots","$$events","$$legacy"]);function CS(a,t){let i=Ja(t,AS);const n={name:"file-headphone",size:24,node:[["path",{d:"M4 6.835V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-.343"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5"}],["path",{d:"M2 19a2 2 0 0 1 4 0v1a2 2 0 0 1-4 0v-4a6 6 0 0 1 12 0v4a2 2 0 0 1-4 0v-1a2 2 0 0 1 4 0"}]],aliases:["file-audio","file-audio-2"]};ei(a,Za(()=>i,{get icon(){return n}}))}var GS=new Set(["$$slots","$$events","$$legacy"]);function Wo(a,t){let i=Ja(t,GS);const n={name:"file-text",size:24,node:[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5"}],["path",{d:"M10 9H8"}],["path",{d:"M16 13H8"}],["path",{d:"M16 17H8"}]]};ei(a,Za(()=>i,{get icon(){return n}}))}var FS=new Set(["$$slots","$$events","$$legacy"]);function Rc(a,t){let i=Ja(t,FS);const n={name:"folder-open",size:24,node:[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2"}]]};ei(a,Za(()=>i,{get icon(){return n}}))}var MS=new Set(["$$slots","$$events","$$legacy"]);function sb(a,t){let i=Ja(t,MS);const n={name:"languages",size:24,node:[["path",{d:"m5 8 6 6"}],["path",{d:"m4 14 6-6 2-3"}],["path",{d:"M2 5h12"}],["path",{d:"M7 2h1"}],["path",{d:"m22 22-5-10-5 10"}],["path",{d:"M14 18h6"}]]};ei(a,Za(()=>i,{get icon(){return n}}))}var zS=new Set(["$$slots","$$events","$$legacy"]);function ES(a,t){let i=Ja(t,zS);const n={name:"layers",size:24,node:[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17"}]],aliases:["layers-3"]};ei(a,Za(()=>i,{get icon(){return n}}))}var US=new Set(["$$slots","$$events","$$legacy"]);function RS(a,t){let i=Ja(t,US);const n={name:"list-filter",size:24,node:[["path",{d:"M2 5h20"}],["path",{d:"M6 12h12"}],["path",{d:"M9 19h6"}]]};ei(a,Za(()=>i,{get icon(){return n}}))}var BS=new Set(["$$slots","$$events","$$legacy"]);function PS(a,t){let i=Ja(t,BS);const n={name:"list",size:24,node:[["path",{d:"M3 5h.01"}],["path",{d:"M3 12h.01"}],["path",{d:"M3 19h.01"}],["path",{d:"M8 5h13"}],["path",{d:"M8 12h13"}],["path",{d:"M8 19h13"}]]};ei(a,Za(()=>i,{get icon(){return n}}))}var jS=new Set(["$$slots","$$events","$$legacy"]);function NS(a,t){let i=Ja(t,jS);const n={name:"merge",size:24,node:[["path",{d:"m8 6 4-4 4 4"}],["path",{d:"M12 2v10.3a4 4 0 0 1-1.172 2.872L4 22"}],["path",{d:"m20 22-5-5"}]]};ei(a,Za(()=>i,{get icon(){return n}}))}var OS=new Set(["$$slots","$$events","$$legacy"]);function Rd(a,t){let i=Ja(t,OS);const n={name:"message-square",size:24,node:[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z"}]]};ei(a,Za(()=>i,{get icon(){return n}}))}var DS=new Set(["$$slots","$$events","$$legacy"]);function uf(a,t){let i=Ja(t,DS);const n={name:"mic",size:24,node:[["path",{d:"M12 19v3"}],["path",{d:"M19 10v2a7 7 0 0 1-14 0v-2"}],["rect",{x:"9",y:"2",width:"6",height:"13",rx:"3"}]]};ei(a,Za(()=>i,{get icon(){return n}}))}var IS=new Set(["$$slots","$$events","$$legacy"]);function LS(a,t){let i=Ja(t,IS);const n={name:"minus",size:24,node:[["path",{d:"M5 12h14"}]]};ei(a,Za(()=>i,{get icon(){return n}}))}var VS=new Set(["$$slots","$$events","$$legacy"]);function rb(a,t){let i=Ja(t,VS);const n={name:"pencil",size:24,node:[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z"}],["path",{d:"m15 5 4 4"}]]};ei(a,Za(()=>i,{get icon(){return n}}))}var HS=new Set(["$$slots","$$events","$$legacy"]);function Bc(a,t){let i=Ja(t,HS);const n={name:"play",size:24,node:[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z"}]]};ei(a,Za(()=>i,{get icon(){return n}}))}var WS=new Set(["$$slots","$$events","$$legacy"]);function Pr(a,t){let i=Ja(t,WS);const n={name:"plus",size:24,node:[["path",{d:"M5 12h14"}],["path",{d:"M12 5v14"}]]};ei(a,Za(()=>i,{get icon(){return n}}))}var QS=new Set(["$$slots","$$events","$$legacy"]);function KS(a,t){let i=Ja(t,QS);const n={name:"redo-2",size:24,node:[["path",{d:"m15 14 5-5-5-5"}],["path",{d:"M20 9H9.5A5.5 5.5 0 0 0 4 14.5A5.5 5.5 0 0 0 9.5 20H13"}]]};ei(a,Za(()=>i,{get icon(){return n}}))}var YS=new Set(["$$slots","$$events","$$legacy"]);function JS(a,t){let i=Ja(t,YS);const n={name:"refresh-cw",size:24,node:[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"}],["path",{d:"M21 3v5h-5"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"}],["path",{d:"M8 16H3v5"}]]};ei(a,Za(()=>i,{get icon(){return n}}))}var XS=new Set(["$$slots","$$events","$$legacy"]);function ZS(a,t){let i=Ja(t,XS);const n={name:"rotate-ccw-clock",size:24,node:[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"}],["path",{d:"M3 3v5h5"}],["path",{d:"M12 7v5l4 2"}]],aliases:["history"]};ei(a,Za(()=>i,{get icon(){return n}}))}var eT=new Set(["$$slots","$$events","$$legacy"]);function Sm(a,t){let i=Ja(t,eT);const n={name:"rotate-ccw",size:24,node:[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"}],["path",{d:"M3 3v5h5"}]]};ei(a,Za(()=>i,{get icon(){return n}}))}var tT=new Set(["$$slots","$$events","$$legacy"]);function aT(a,t){let i=Ja(t,tT);const n={name:"save",size:24,node:[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7"}]]};ei(a,Za(()=>i,{get icon(){return n}}))}var iT=new Set(["$$slots","$$events","$$legacy"]);function ob(a,t){let i=Ja(t,iT);const n={name:"scissors",size:24,node:[["circle",{cx:"6",cy:"6",r:"3"}],["path",{d:"M8.12 8.12 12 12"}],["path",{d:"M20 4 8.12 15.88"}],["circle",{cx:"6",cy:"18",r:"3"}],["path",{d:"M14.8 14.8 20 20"}]]};ei(a,Za(()=>i,{get icon(){return n}}))}var nT=new Set(["$$slots","$$events","$$legacy"]);function lb(a,t){let i=Ja(t,nT);const n={name:"search",size:24,node:[["path",{d:"m21 21-4.34-4.34"}],["circle",{cx:"11",cy:"11",r:"8"}]]};ei(a,Za(()=>i,{get icon(){return n}}))}var sT=new Set(["$$slots","$$events","$$legacy"]);function rT(a,t){let i=Ja(t,sT);const n={name:"settings-2",size:24,node:[["path",{d:"M14 17H5"}],["path",{d:"M19 7h-9"}],["circle",{cx:"17",cy:"17",r:"3"}],["circle",{cx:"7",cy:"7",r:"3"}]]};ei(a,Za(()=>i,{get icon(){return n}}))}var oT=new Set(["$$slots","$$events","$$legacy"]);function cb(a,t){let i=Ja(t,oT);const n={name:"sliders-horizontal",size:24,node:[["path",{d:"M10 5H3"}],["path",{d:"M12 19H3"}],["path",{d:"M14 3v4"}],["path",{d:"M16 17v4"}],["path",{d:"M21 12h-9"}],["path",{d:"M21 19h-5"}],["path",{d:"M21 5h-7"}],["path",{d:"M8 10v4"}],["path",{d:"M8 12H3"}]]};ei(a,Za(()=>i,{get icon(){return n}}))}var lT=new Set(["$$slots","$$events","$$legacy"]);function Qo(a,t){let i=Ja(t,lT);const n={name:"square",size:24,node:[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"}]]};ei(a,Za(()=>i,{get icon(){return n}}))}var cT=new Set(["$$slots","$$events","$$legacy"]);function po(a,t){let i=Ja(t,cT);const n={name:"trash",size:24,node:[["path",{d:"M10 11v6"}],["path",{d:"M14 11v6"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6"}],["path",{d:"M3 6h18"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"}]],aliases:["trash-2"]};ei(a,Za(()=>i,{get icon(){return n}}))}var dT=new Set(["$$slots","$$events","$$legacy"]);function uT(a,t){let i=Ja(t,dT);const n={name:"undo-2",size:24,node:[["path",{d:"M9 14 4 9l5-5"}],["path",{d:"M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11"}]]};ei(a,Za(()=>i,{get icon(){return n}}))}var fT=new Set(["$$slots","$$events","$$legacy"]);function Pc(a,t){let i=Ja(t,fT);const n={name:"upload",size:24,node:[["path",{d:"M12 3v12"}],["path",{d:"m17 8-5-5-5 5"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}]]};ei(a,Za(()=>i,{get icon(){return n}}))}var pT=new Set(["$$slots","$$events","$$legacy"]);function Bd(a,t){let i=Ja(t,pT);const n={name:"user-round",size:24,node:[["circle",{cx:"12",cy:"8",r:"5"}],["path",{d:"M20 21a8 8 0 0 0-16 0"}]],aliases:["user-2"]};ei(a,Za(()=>i,{get icon(){return n}}))}var mT=new Set(["$$slots","$$events","$$legacy"]);function ff(a,t){let i=Ja(t,mT);const n={name:"user",size:24,node:[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2"}],["circle",{cx:"12",cy:"7",r:"4"}]]};ei(a,Za(()=>i,{get icon(){return n}}))}var gT=new Set(["$$slots","$$events","$$legacy"]);function Wl(a,t){let i=Ja(t,gT);const n={name:"users",size:24,node:[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87"}],["circle",{cx:"9",cy:"7",r:"4"}]]};ei(a,Za(()=>i,{get icon(){return n}}))}var hT=new Set(["$$slots","$$events","$$legacy"]);function _T(a,t){let i=Ja(t,hT);const n={name:"video",size:24,node:[["path",{d:"m16 13 5.223 3.482a.5.5 0 0 0 .777-.416V7.87a.5.5 0 0 0-.752-.432L16 10.5"}],["rect",{x:"2",y:"6",width:"14",height:"12",rx:"2"}]]};ei(a,Za(()=>i,{get icon(){return n}}))}var vT=new Set(["$$slots","$$events","$$legacy"]);function db(a,t){let i=Ja(t,vT);const n={name:"x",size:24,node:[["path",{d:"M18 6 6 18"}],["path",{d:"m6 6 12 12"}]]};ei(a,Za(()=>i,{get icon(){return n}}))}var bT=new Set(["$$slots","$$events","$$legacy"]);function yT(a,t){let i=Ja(t,bT);const n={name:"zoom-in",size:24,node:[["circle",{cx:"11",cy:"11",r:"8"}],["line",{x1:"21",x2:"16.65",y1:"21",y2:"16.65"}],["line",{x1:"11",x2:"11",y1:"8",y2:"14"}],["line",{x1:"8",x2:"14",y1:"11",y2:"11"}]]};ei(a,Za(()=>i,{get icon(){return n}}))}var wT=new Set(["$$slots","$$events","$$legacy"]);function kT(a,t){let i=Ja(t,wT);const n={name:"zoom-out",size:24,node:[["circle",{cx:"11",cy:"11",r:"8"}],["line",{x1:"21",x2:"16.65",y1:"21",y2:"16.65"}],["line",{x1:"8",x2:"14",y1:"11",y2:"11"}]]};ei(a,Za(()=>i,{get icon(){return n}}))}function pf(a,t,i){for(let n=0;n<i.length;n+=1)a.setUint8(t+n,i.charCodeAt(n))}function jc(a){const t=a.numberOfChannels,i=a.length,n=new ArrayBuffer(44+i*t*2),s=new DataView(n);pf(s,0,"RIFF"),s.setUint32(4,36+i*t*2,!0),pf(s,8,"WAVE"),pf(s,12,"fmt "),s.setUint32(16,16,!0),s.setUint16(20,1,!0),s.setUint16(22,t,!0),s.setUint32(24,a.sampleRate,!0),s.setUint32(28,a.sampleRate*t*2,!0),s.setUint16(32,t*2,!0),s.setUint16(34,16,!0),pf(s,36,"data"),s.setUint32(40,i*t*2,!0);const r=Array.from({length:t},(l,c)=>a.getChannelData(c));let o=44;for(let l=0;l<i;l+=1)for(let c=0;c<t;c+=1){const d=Math.max(-1,Math.min(1,r[c][l]));s.setInt16(o,d<0?d*32768:d*32767,!0),o+=2}return new Blob([n],{type:"audio/wav"})}async function xT(a){if(!a.length)throw new Error("No audio chunks were generated.");if(a.length===1)return a[0];const t=new AudioContext;try{const i=await Promise.all(a.map(async c=>t.decodeAudioData(await c.arrayBuffer()))),n=i[0].sampleRate,s=i[0].numberOfChannels;for(const c of i)if(c.sampleRate!==n||c.numberOfChannels!==s)throw new Error("Generated chunks use different audio formats and cannot be joined.");const r=i.reduce((c,d)=>c+d.length,0),o=t.createBuffer(s,r,n);let l=0;for(const c of i){for(let d=0;d<s;d+=1)o.copyToChannel(c.getChannelData(d),d,l);l+=c.length}return jc(o)}finally{await t.close()}}async function mr(a,t){if(!t&&(a.type==="audio/wav"||a.name.toLowerCase().endsWith(".wav")))return a;const i=new AudioContext;try{const n=await i.decodeAudioData(await a.arrayBuffer());if(!t||n.sampleRate===t)return jc(n);const s=Math.max(1,Math.ceil(n.duration*t)),r=new OfflineAudioContext(n.numberOfChannels,s,t),o=r.createBufferSource();return o.buffer=n,o.connect(r.destination),o.start(),jc(await r.startRendering())}finally{await i.close()}}function Tm(a){return new URL(a.replace(/^\//,""),document.baseURI).toString()}async function $m(a){let t=`${a.status} ${a.statusText}`;try{const i=await a.json();t=i?.error?.message||i?.message||t}catch{const i=await a.text();i&&(t=i)}return new Error(t)}async function yn(a,t={},i){const n=new Headers(t.headers);t.body&&!(t.body instanceof FormData)&&!n.has("Content-Type")&&n.set("Content-Type","application/json");const s=await fetch(Tm(a),{...t,headers:n,signal:i});if(!s.ok)throw await $m(s);return s.json()}async function qm(){return yn("/health")}async function Nc(){return(await yn("/v1/models?include_session_options=true")).data}async function mf(a,t){await yn("/v1/models/load",{method:"POST",body:JSON.stringify(a)},t)}async function mo(a,t){await yn("/v1/models/unload",{method:"POST",body:JSON.stringify({id:a})},t)}async function ST(a){await yn("/v1/tasks/unload_models",{method:"POST",body:JSON.stringify({model_ids:a})})}async function ub(a){return yn("/v1/ui/path-status",{method:"POST",body:JSON.stringify({path:a})})}async function TT(a){return yn("/v1/ui/models/install",{method:"POST",body:JSON.stringify(a)})}async function $T(a){return yn("/v1/ui/models/install/stop",{method:"POST",body:JSON.stringify({id:a})})}async function qT(a){return yn("/v1/ui/models/clean-partial",{method:"POST",body:JSON.stringify({id:a})})}async function AT(a){return yn("/v1/ui/models/delete",{method:"POST",body:JSON.stringify({id:a})})}async function CT(){return(await yn("/v1/ui/models/install-status")).data}async function fb(){return yn("/v1/ui/models/package-sizes")}async function GT(){return yn("/v1/ui/models-root")}async function pb(a=""){return yn("/v1/ui/models-root",{method:"POST",body:JSON.stringify({path:a})})}async function FT(a=""){return yn("/v1/ui/browse-directories",{method:"POST",body:JSON.stringify({path:a})})}async function mb(a=""){const t=a?`?model=${encodeURIComponent(a)}`:"";return(await yn(`/v1/audio/voices${t}`)).voices}function gf(a){return`/v1/ui/voice-preview?voice=${encodeURIComponent(a)}`}async function Os(a,t){return(await yn("/v1/ui/upload",{method:"POST",headers:{"Content-Type":"audio/wav"},body:a},t)).path}async function Oc(a,t){const n=`upload.${/\.(safetensors|[A-Za-z0-9]{1,8})$/i.exec(a.name)?.[1]?.toLowerCase()||"bin"}`;return(await yn("/v1/ui/upload",{method:"POST",headers:{"Content-Type":a.type||"application/octet-stream","X-AudioCPP-Filename":n},body:a},t)).path}async function hf(a,t){const i=await fetch(Tm("/v1/audio/speech"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a),signal:t});if(!i.ok)throw await $m(i);return{blob:await i.blob(),wallMs:i.headers.get("X-AudioCPP-Wall-Ms"),rtf:i.headers.get("X-AudioCPP-RTF")}}async function _f(a,t,i=!1){return yn(i?"/v1/audio/transcriptions/details":"/v1/audio/transcriptions",{method:"POST",body:JSON.stringify(a)},t)}async function Ql(a,t){return yn("/v1/tasks/run",{method:"POST",body:JSON.stringify(a)},t)}class gb extends Error{constructor(t="The connection closed before the run finished."){super(t),this.name="TaskStreamClosedError"}}function MT(a){return a.startsWith("data: ")&&!a.includes(`
|
||
`)?a.slice(6):a.split(`
|
||
`).filter(t=>t.startsWith("data:")).map(t=>t.slice(t.startsWith("data: ")?6:5)).join(`
|
||
`)}async function*Am(a,t,i="/v1/tasks/stream"){const n=await fetch(Tm(i),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...a,stream_format:"sse"}),signal:t});if(!n.ok)throw await $m(n);if(!n.body)throw new Error("This browser cannot read a streamed response.");const s=n.body.getReader(),r=new TextDecoder;let o=[],l=!1,c=!1,d=!1,g=!1;try{for(;!g;){let h;try{h=await s.read()}catch(f){if(f?.name==="AbortError")throw f;break}g=h.done;const m=h.done?r.decode():r.decode(h.value,{stream:!0});if(!m||d)continue;const p=[];let u=0;if(l&&m.startsWith(`
|
||
`)){const f=o.join("");p.push(f.slice(0,-1)),o=[],u=1}for(let f=m.indexOf(`
|
||
|
||
`,u);f>=0;f=m.indexOf(`
|
||
|
||
`,u))o.push(m.slice(u,f)),p.push(o.join("")),o=[],u=f+2;if(u<m.length){const f=m.slice(u);o.push(f),l=f.endsWith(`
|
||
`)}else l=!1;for(const f of p){const _=MT(f);if(!_)continue;if(_==="[DONE]"){d=!0;break}const v=JSON.parse(_);if(v?.type==="error")throw new Error(v.error?.message||"The stream failed.");(v?.type==="task.stream.event"||v?.type==="task.stream.done")&&(v.type==="task.stream.done"&&(c=!0),yield v)}}}finally{g||await s.cancel().catch(()=>{})}if(!c)throw new gb}function hb(a){const t=atob(a),i=new Uint8Array(t.length);for(let n=0;n<t.length;n+=1)i[n]=t.charCodeAt(n);return new Blob([i],{type:"audio/wav"})}function vf(a){return URL.createObjectURL(hb(a))}const zT={family:"ace_step",display_name:"ACE-Step",description:"Open-source ACE-Step 1.5 music generation model for text-to-music and lyrics-to-song workflows across 50+ languages, with editing routes such as cover generation, repainting, continuation, stem extraction, and vocal-to-BGM conversion.",category:"audio_generation",status:"supported",tasks:["music","edit"],modes:["offline"],languages:["50+ languages"],capabilities:{music:["lyrics"],edit:["prompt_editing"]},runtime:{tags:["gguf"]},options:{request:[{name:"route",type:"enum",values:["text2music","complete","lego","extract","cover","cover-nofsq","repaint"],description:"Generation or editing route.",required:!1,default:"text2music"},{name:"lyrics",type:"string",description:"Vocal lyrics.",required:!1},{name:"language",type:"string",description:"Vocal language; falls back to text input language, then en.",required:!1},{name:"duration_sec",type:"float",description:"Target seconds; non-positive lets the planner choose. Source-locked routes use source duration.",required:!1,default:-1},{name:"seed",type:"int",description:"Unsigned 32-bit generation seed; random when omitted.",required:!1},{name:"negative_prompt",type:"string",description:"Negative prompt.",required:!1,default:"NO USER INPUT"},{name:"bpm",type:"int",description:"Override planner BPM metadata.",required:!1},{name:"keyscale",type:"string",description:"Override planner musical key metadata.",required:!1},{name:"timesignature",type:"string",description:"Override planner time signature metadata.",required:!1},{name:"num_inference_steps",type:"int",description:"Denoising steps; turbo checkpoints cap this at 8.",required:!1,default:8},{name:"guidance_scale",type:"float",description:"Diffusion CFG; default 1, or 7 for extract. Ignored by turbo checkpoints.",required:!1},{name:"sampler_mode",type:"enum",values:["euler","heun"],description:"Diffusion sampler.",required:!1,default:"euler"},{name:"shift",type:"float",description:"Diffusion schedule shift; default 1, or 3 for extract.",required:!1},{name:"enable_thinking",type:"bool",description:"Enable planner thinking where the route and checkpoint support it.",required:!1,default:!0},{name:"lm_temperature",type:"float",description:"Planner sampling temperature.",required:!1,default:.85},{name:"lm_guidance_scale",type:"float",description:"Planner CFG, independent of diffusion guidance.",required:!1,default:2},{name:"lm_top_k",type:"int",description:"Planner top-k; 0 disables it.",required:!1,default:0},{name:"lm_top_p",type:"float",description:"Planner nucleus sampling threshold.",required:!1,default:.9},{name:"lm_repetition_penalty",type:"float",description:"Planner repetition penalty.",required:!1,default:1},{name:"track_name",type:"string",description:"Target track for lego or extract.",required:!1},{name:"complete_track_classes",type:"string",description:"Track class or JSON array of classes for complete.",required:!1},{name:"repainting_start",type:"float",description:"Repaint start in seconds; required by repaint route.",required:!1},{name:"repainting_end",type:"float",description:"Repaint end in seconds; required by repaint route.",required:!1},{name:"repaint_mode",type:"enum",values:["balanced","conservative","aggressive"],description:"Repaint blend preset; balanced when only strength is supplied.",required:!1},{name:"repaint_strength",type:"float",description:"Balanced repaint strength, clamped to 0..1; default 0.5 when a preset is supplied.",required:!1},{name:"audio_cover_strength",type:"float",description:"Cover conditioning strength.",required:!1,default:1},{name:"cover_noise_strength",type:"float",description:"Cover conditioning noise strength.",required:!1,default:0},{name:"retake_seed",type:"int",description:"Optional retake seed; -1 clears it.",required:!1},{name:"retake_variance",type:"float",description:"Retake noise mixing strength.",required:!1,default:0},{name:"audio_codes",type:"string",description:"ACE semantic code text to bypass planner generation.",required:!1}],session:[{name:"lora",type:"string",description:"DiT decoder LoRA/LoKr adapter file or PEFT directory, merged during weight loading.",required:!1},{name:"lora_scale",type:"float",description:"Adapter strength multiplied by its metadata scale; zero disables the adapter.",required:!1,default:1},{name:"weight_type",type:"enum",preset:"weight_type_full",description:"Shared weight storage type.",required:!1,default:"native"},{name:"dit_weight_type",type:"enum",preset:"weight_type_full",description:"DiT override of weight_type; f16 is promoted to bf16.",required:!1},{name:"dit_attention",type:"enum",values:["auto","eager","flash"],description:"DiT attention; auto selects flash on supported GPUs and eager on CPU.",required:!1,default:"auto"},{name:"planner_weight_type",type:"enum",preset:"weight_type_full",description:"Planner override of weight_type.",required:!1},{name:"planner_prefix_bucketing",type:"bool",description:"Bucket planner CFG attention to the valid prefix; false uses full cache capacity.",required:!1,default:!0},{name:"planner_fused_projections",type:"bool",description:"CUDA packed QKV and gate/up projections with fused SwiGLU; may change generated codes. Off unless enabled by cuda_perf; explicit values override the preset.",required:!1},{name:"planner_f16_decode",type:"bool",description:"CUDA F16 KV and bucketed decoding for metadata and CFG-off codes. CFG-on code decoding already uses F16 KV. May change generated codes. Off unless enabled by cuda_perf; explicit values override the preset.",required:!1},{name:"planner_independent_cfg_prefill",type:"bool",description:"CUDA CFG prefill at each branch's actual prompt length instead of shared left padding; may change generated codes. Off unless enabled by cuda_perf; explicit values override the preset.",required:!1},{name:"text_encoder_weight_type",type:"enum",preset:"weight_type_full",description:"Text encoder override of weight_type.",required:!1},{name:"vae_weight_type",type:"enum",preset:"weight_type_full",description:"VAE override of weight_type.",required:!1},{name:"perf_mode",type:"enum",values:["off","cuda_perf"],description:"Performance preset; cuda_perf enables CUDA planner fused projections, F16 decode and independent CFG prefill, and VAE tiles of 1024 frames with 64-frame overlap per side. Can change generated codes and VRAM; does not change weight precision. Explicit options override the preset.",required:!1,default:"off"},{name:"vae_tile_frames",type:"int",description:"VAE tile capacity in latent frames. Unset keeps backend defaults; 1024 with cuda_perf. Explicit values override the preset.",required:!1,min:1},{name:"vae_tile_overlap_frames",type:"int",description:"VAE overlap per side in latent frames; must be non-negative and less than half the tile capacity. Unset uses backend defaults; 64 with cuda_perf. Explicit values override the preset.",required:!1,min:0},{name:"mem_saver",type:"bool",description:"Release staged graphs and caches between phases; later requests may rebuild them.",required:!1,default:!1}],load:[{name:"dit_model_path",type:"enum",values:["acestep-v15-turbo","acestep-v15-base","acestep-v15-xl-turbo","acestep-v15-xl-sft"],description:"DiT variant in the package; must be installed. Omitted selects from the model filename, falling back to acestep-v15-turbo.",required:!1,default:"acestep-v15-turbo"}]},ui:{recommended_package:"ace_step_turbo_bf16",tags:["Music","Edit","GGUF"],docs:["docs/models/ace_step.md","docs/music_generation.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"ace_step_turbo_q8_0",display_name:"ACE-Step 1.5 Turbo Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"ACE-Step1.5-GGUF",files:["ACE-Step1.5-GGUF/turbo/ace-step-1.5-turbo-q8_0.gguf"],strip_prefix:"ACE-Step1.5-GGUF"},{id:"ace_step_turbo_bf16",display_name:"ACE-Step 1.5 Turbo BF16 GGUF",default:!0,format:"gguf",precision:"bf16",target_directory:"ACE-Step1.5-GGUF",files:["ACE-Step1.5-GGUF/turbo/ace-step-1.5-turbo-bf16.gguf"],strip_prefix:"ACE-Step1.5-GGUF"},{id:"ace_step_base_q8_0",display_name:"ACE-Step 1.5 Base Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"ACE-Step1.5-GGUF",files:["ACE-Step1.5-GGUF/base/ace-step-1.5-base-q8_0.gguf"],strip_prefix:"ACE-Step1.5-GGUF"},{id:"ace_step_base_bf16",display_name:"ACE-Step 1.5 Base BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"ACE-Step1.5-GGUF",files:["ACE-Step1.5-GGUF/base/ace-step-1.5-base-bf16.gguf"],strip_prefix:"ACE-Step1.5-GGUF"},{id:"ace_step_xl_turbo_bf16",display_name:"ACE-Step 1.5 XL Turbo BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"ACE-Step1.5-GGUF",files:["ACE-Step1.5-GGUF/xl-turbo/ace-step-1.5-xl-turbo-bf16.gguf"],strip_prefix:"ACE-Step1.5-GGUF",download:{kind:"huggingface_snapshot",repo:"CaptainArni/audio.cpp-gguf"}},{id:"ace_step_xl_sft_bf16",display_name:"ACE-Step 1.5 XL SFT BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"ACE-Step1.5-GGUF",files:["ACE-Step1.5-GGUF/xl-sft/ace-step-1.5-xl-sft-bf16.gguf"],strip_prefix:"ACE-Step1.5-GGUF",download:{kind:"huggingface_snapshot",repo:"CaptainArni/audio.cpp-gguf"}},{id:"ace_step_xl_turbo_q8dit",display_name:"ACE-Step 1.5 XL Turbo Q8_0 DiT GGUF (BF16 planner)",format:"gguf",precision:"q8_0",target_directory:"ACE-Step1.5-GGUF",files:["ACE-Step1.5-GGUF/xl-turbo-q8dit/ace-step-1.5-xl-turbo-q8dit.gguf"],strip_prefix:"ACE-Step1.5-GGUF",download:{kind:"huggingface_snapshot",repo:"CaptainArni/audio.cpp-gguf"}},{id:"ace_step_xl_sft_q8dit",display_name:"ACE-Step 1.5 XL SFT Q8_0 DiT GGUF (BF16 planner)",format:"gguf",precision:"q8_0",target_directory:"ACE-Step1.5-GGUF",files:["ACE-Step1.5-GGUF/xl-sft-q8dit/ace-step-1.5-xl-sft-q8dit.gguf"],strip_prefix:"ACE-Step1.5-GGUF",download:{kind:"huggingface_snapshot",repo:"CaptainArni/audio.cpp-gguf"}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{dit_turbo_config:"model:acestep-v15-turbo/config.json",dit_base_config:"model:acestep-v15-base/config.json",lm_config:"model:acestep-5Hz-lm-1.7B/config.json",lm_tokenizer_config:"model:acestep-5Hz-lm-1.7B/tokenizer_config.json",lm_vocab:"model:acestep-5Hz-lm-1.7B/vocab.json",lm_merges:"model:acestep-5Hz-lm-1.7B/merges.txt",lm_tokenizer_json:"model:acestep-5Hz-lm-1.7B/tokenizer.json",lm_chat_template:"model:acestep-5Hz-lm-1.7B/chat_template.jinja",text_encoder_config:"model:Qwen3-Embedding-0.6B/config.json",text_encoder_tokenizer_config:"model:Qwen3-Embedding-0.6B/tokenizer_config.json",text_encoder_vocab:"model:Qwen3-Embedding-0.6B/vocab.json",text_encoder_merges:"model:Qwen3-Embedding-0.6B/merges.txt",text_encoder_tokenizer_json:"model:Qwen3-Embedding-0.6B/tokenizer.json",text_encoder_chat_template:"model:Qwen3-Embedding-0.6B/chat_template.jinja",vae_config:"model:vae/config.json"},optional_files:{dit_xl_turbo_config:"model:acestep-v15-xl-turbo/config.json",dit_xl_sft_config:"model:acestep-v15-xl-sft/config.json"},optional_tensors:{dit_xl_turbo_weights:{source:"weights:",prefix:"dit_xl_turbo_weights"},dit_xl_turbo_silence_latent:{source:"weights:",prefix:"dit_xl_turbo_silence_latent"},dit_xl_sft_weights:{source:"weights:",prefix:"dit_xl_sft_weights"},dit_xl_sft_silence_latent:{source:"weights:",prefix:"dit_xl_sft_silence_latent"}},tensors:{dit_turbo_weights:{source:"weights:",prefix:"dit_turbo_weights"},dit_turbo_silence_latent:{source:"weights:",prefix:"dit_turbo_silence_latent"},dit_base_weights:{source:"weights:",prefix:"dit_base_weights"},dit_base_silence_latent:{source:"weights:",prefix:"dit_base_silence_latent"},lm_weights:{source:"weights:",prefix:"lm_weights"},text_encoder_weights:{source:"weights:",prefix:"text_encoder_weights"},vae_weights:{source:"weights:",prefix:"vae_weights"}}},{format:"safetensors",roots:{model:"."},files:{dit_turbo_config:"model:acestep-v15-turbo/config.json",dit_base_config:"model:acestep-v15-base/config.json",lm_config:"model:acestep-5Hz-lm-1.7B/config.json",lm_tokenizer_config:"model:acestep-5Hz-lm-1.7B/tokenizer_config.json",lm_vocab:"model:acestep-5Hz-lm-1.7B/vocab.json",lm_merges:"model:acestep-5Hz-lm-1.7B/merges.txt",lm_tokenizer_json:"model:acestep-5Hz-lm-1.7B/tokenizer.json",lm_chat_template:"model:acestep-5Hz-lm-1.7B/chat_template.jinja",text_encoder_config:"model:Qwen3-Embedding-0.6B/config.json",text_encoder_tokenizer_config:"model:Qwen3-Embedding-0.6B/tokenizer_config.json",text_encoder_vocab:"model:Qwen3-Embedding-0.6B/vocab.json",text_encoder_merges:"model:Qwen3-Embedding-0.6B/merges.txt",text_encoder_tokenizer_json:"model:Qwen3-Embedding-0.6B/tokenizer.json",text_encoder_chat_template:"model:Qwen3-Embedding-0.6B/chat_template.jinja",vae_config:"model:vae/config.json"},optional_files:{dit_xl_turbo_config:"model:acestep-v15-xl-turbo/config.json",dit_xl_sft_config:"model:acestep-v15-xl-sft/config.json"},optional_tensors:{dit_xl_turbo_weights:"model:acestep-v15-xl-turbo/model.safetensors.index.json",dit_xl_turbo_silence_latent:"model:acestep-v15-xl-turbo/silence_latent.safetensors",dit_xl_sft_weights:"model:acestep-v15-xl-sft/model.safetensors.index.json",dit_xl_sft_silence_latent:"model:acestep-v15-xl-sft/silence_latent.safetensors"},tensors:{dit_turbo_weights:"model:acestep-v15-turbo/model.safetensors",dit_turbo_silence_latent:"model:acestep-v15-turbo/silence_latent.safetensors",dit_base_weights:"model:acestep-v15-base/model.safetensors",dit_base_silence_latent:"model:acestep-v15-base/silence_latent.safetensors",lm_weights:"model:acestep-5Hz-lm-1.7B/model.safetensors",text_encoder_weights:"model:Qwen3-Embedding-0.6B/model.safetensors",vae_weights:"model:vae/diffusion_pytorch_model.safetensors"}}]},ET={schema_version:1,family:"apollo",display_name:"Apollo",description:"Band-sequence music restoration for compressed audio at 44.1 kHz.",category:"audio_tools",status:"supported",tasks:["s2s"],modes:["offline"],languages:["language_agnostic"],capabilities:{s2s:["audio_enhancement"]},runtime:{tags:["gguf"]},options:{request:[{name:"audio_chunk_duration_sec",type:"float",description:"Chunk duration in seconds; zero selects upstream whole-file inference. When enabled, the chunk sample count must exceed n_fft/2.",min:0,default:0,required:!1},{name:"audio_chunk_overlap_sec",type:"float",description:"Normalized linear crossfade duration; at most half the chunk duration.",min:0,default:1,required:!1},{name:"edge_pad_duration_sec",type:"float",description:"Surrounding audio inferred and discarded on each side of a chunk.",min:0,default:0,required:!1}],session:[{name:"weight_type",type:"enum",description:"Weight storage type; native preserves the GGUF tensor types.",required:!1,default:"native",values:["native","f32","f16","bf16","q8_0","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k"]}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"apollo_orig",display_name:"Apollo GGUF F32",default:!0,format:"gguf",precision:"f32",target_directory:"Apollo-GGUF",files:["Apollo-GGUF/apollo-orig.gguf"],strip_prefix:"Apollo-GGUF"}],dependencies:[],ui:{tags:["GGUF"],docs:[],recommended_package:"apollo_orig"},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:{source:"weights:",prefix:"weights"},frontend:{source:"weights:",prefix:"frontend"}}}]},UT={schema_version:1,family:"ast_audioset",display_name:"AST AudioSet",description:"MIT Audio Spectrogram Transformer for multi-label classification across 527 AudioSet sound classes.",category:"speech_analysis",status:"supported",tasks:["classify"],modes:["offline"],languages:["language_agnostic"],capabilities:{classify:["scores"]},dependencies:[],options:{request:[{name:"top_k",type:"int",description:"Number of highest-scoring AudioSet classes to return.",required:!1,min:1,max:527,default:10}],session:[{name:"attention",type:"enum",description:"Attention lowering; auto selects a supported fast path.",values:["auto","flash","eager"],required:!1,default:"auto"},{name:"weight_type",type:"enum",description:"Weight storage override; native preserves the packaged tensor types.",required:!1,default:"native",values:["native","f32","f16","bf16","q8_0","q4_0","q4_k"]}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},runtime:{tags:["gguf"]},ui:{recommended_package:"ast_audioset_f32",tags:["Classify","GGUF"],docs:["docs/models/ast_audioset.md"]},packages:[{id:"ast_audioset_f32",display_name:"AST AudioSet F32 GGUF",format:"gguf",precision:"f32",default:!0,target_directory:"AST-AudioSet-GGUF",files:["AST-AudioSet-GGUF/ast-audioset-f32.gguf"],strip_prefix:"AST-AudioSet-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",processor:"model:preprocessor_config.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",processor:"model:preprocessor_config.json"},tensors:{weights:"model:model.safetensors"}}]},RT={family:"audio8_asr",display_name:"Audio8-ASR-0.1B",description:"Audio8-ASR-0.1B compact multilingual ASR (en/zh/yue/ja/ko/fr/de): Qwen3-ASR audio encoder with an MLP-tower adapter and an 8-layer Qwen2-style decoder. 30-second offline transcription windows. Checkpoint license: CC-BY-NC-4.0; GGUF conversion is local-only, no public redistribution is approved.",category:"asr",status:"community",tasks:["asr"],modes:["offline"],languages:["en","zh","yue","ja","ko","fr","de"],capabilities:{asr:[]},options:{request:[],session:[{name:"weight_type",type:"enum",description:"Decoder and adapter weight storage type.",preset:"weight_type_full",required:!1,default:"native"},{name:"audio_encoder_weight_type",type:"enum",description:"Audio encoder weight storage type (quantized storage is rejected for the encoder; already-quantized GGUF tensors load as native).",values:["native","f32","f16"],required:!1,default:"native"},{name:"encoder_graph_arena_mb",type:"int",description:"Audio encoder graph arena size in MB. Must be positive; sufficient capacity depends on the graph.",required:!1,min:1,default:128},{name:"projector_graph_arena_mb",type:"int",description:"Adapter (MLP tower + pooling + projector) graph arena size in MB. Must be positive; sufficient capacity depends on the graph.",required:!1,min:1,default:256},{name:"prefill_graph_arena_mb",type:"int",description:"Decoder prefill graph arena size in MB. Must be positive; sufficient capacity depends on the graph.",required:!1,min:1,default:256},{name:"decode_graph_arena_mb",type:"int",description:"Decoder step decode graph arena size in MB. Must be positive; sufficient capacity depends on the graph.",required:!1,min:1,default:256}],load:[]},runtime:{tags:["gguf","server","cuda","metal","cpu"]},ui:{recommended_package:"audio8_asr_0_1b_q8_0",tags:["ASR","GGUF"],docs:["docs/asr.md","docs/models/audio8_asr.md"],summary:"Audio8-ASR-0.1B compact multilingual offline transcription."},package_defaults:{download:{kind:"unsupported",reason:"CC-BY-NC-4.0 checkpoint: convert locally with audiocpp_gguf; no public audio.cpp GGUF distribution is approved."}},packages:[{id:"audio8_asr_0_1b_q8_0",display_name:"Audio8-ASR-0.1B Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Audio8-ASR-0.1B-GGUF",files:["Audio8-ASR-0.1B-GGUF/audio8-asr-0.1b-q8_0.gguf"],strip_prefix:"Audio8-ASR-0.1B-GGUF"},{id:"audio8_asr_0_1b_f16",display_name:"Audio8-ASR-0.1B F16 GGUF",format:"gguf",precision:"f16",target_directory:"Audio8-ASR-0.1B-GGUF",files:["Audio8-ASR-0.1B-GGUF/audio8-asr-0.1b-f16.gguf"],strip_prefix:"Audio8-ASR-0.1B-GGUF"},{id:"audio8_asr_0_1b_safetensors",display_name:"Audio8-ASR-0.1B HF Safetensors",format:"safetensors",precision:"bfloat16",target_directory:"Audio8-ASR-0.1B-hf",files:["config.json","generation_config.json","preprocessor_config.json","tokenizer.json","tokenizer_config.json","vocab.json","merges.txt","model.safetensors"],download:{kind:"huggingface_snapshot",repo:"Audio8/Audio8-ASR-0.1B",revision:"main",gated:!1}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_config:"model:tokenizer_config.json",preprocessor_config:"model:preprocessor_config.json"},optional_files:{vocab:"model:vocab.json",merges:"model:merges.txt",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_config:"model:tokenizer_config.json",preprocessor_config:"model:preprocessor_config.json"},optional_files:{vocab:"model:vocab.json",merges:"model:merges.txt",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"model:model.safetensors"}}]},BT={schema_version:1,family:"audio8_tts",display_name:"Audio8 TTS Preview 0.6B",description:"Audio8 TTS Preview 0.6B DualAR text-to-speech model with expressive multilingual speech across yue, zh, nl, en, fr, de, it, ja, ko, pl, and es, automatic language handling, and rapid voice cloning from short reference samples.",category:"tts",status:"community",dependencies:[],tasks:["tts","clone"],modes:["offline","streaming"],languages:["auto","yue","zh","nl","en","fr","de","it","ja","ko","pl","es"],capabilities:{clone:["speaker_reference"]},runtime:{tags:["gguf","stream"]},options:{request:[{name:"reference_text",type:"string",description:"Reference transcript used with speaker reference audio.",required:!1},{name:"multi_reference_cond",type:"string",description:'Ordered Audio8 TTS reference conditioning pairs as a JSON array: [{"audio":"ref.wav","text":"transcript"}, ...].',required:!1},{name:"max_tokens",type:"int",description:"Maximum semantic tokens to generate; default 1024. Zero selects the default.",required:!1,min:0,default:1024},{name:"text_chunk_size",type:"int",description:"Maximum characters per generated text chunk; default 200.",required:!1,min:1,default:200},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode.",preset:"text_chunk_mode_full",required:!1,default:"word_budget"},{name:"top_p",type:"float",description:"Top-p sampling value in (0, 1]; default 0.8.",required:!1,min:0,max:1,default:.8},{name:"top_k",type:"int",description:"Top-k sampling value; default 30.",required:!1,min:1,default:30},{name:"temperature",type:"float",description:"Semantic-token sampling temperature in (0, 2); default 0.8.",required:!1,min:0,max:2,default:.8},{name:"seed",type:"int",description:"Sampling seed for reproducible output; omitted uses a random seed.",required:!1,min:0},{name:"language",type:"string",description:"Language hint for Chinese-script normalization; Cantonese/yue preserves Traditional characters. Inherits structured transcript or voice language when provided.",required:!1}],session:[{name:"mem_saver",type:"bool",description:"Release cached AR runtime graphs after each request; default false.",required:!1,default:!1},{name:"reference_cache_slots",type:"int",description:"Prepared reference-audio cache slots; default 1.",required:!1,min:0,default:1},{name:"weight_type",type:"enum",description:"AR matmul weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"codec_weight_type",type:"enum",description:"Codec conv/matmul weight storage type; default native.",preset:"weight_type_codec_q8",required:!1,default:"native"},{name:"ar_graph_arena_mb",type:"int",description:"AR runtime graph arena size in MiB; default 512.",required:!1,min:1,default:512},{name:"ar_weight_context_mb",type:"int",description:"AR weight context size in MiB; default 512.",required:!1,min:1,default:512},{name:"codec_graph_arena_mb",type:"int",description:"Codec encode/decode graph arena size in MiB; default 512.",required:!1,min:1,default:512},{name:"codec_weight_context_mb",type:"int",description:"Codec weight context size in MiB; default 512.",required:!1,min:1,default:512}],load:[]},ui:{recommended_package:"audio8_tts_preview_0_6b_q8_0",tags:["TTS","Clone"],docs:["docs/models/audio8_tts.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"js-byte/Audio8-TTS-Preview-0.6b-GGUF",revision:"main",gated:!1}},packages:[{id:"audio8_tts_preview_0_6b_q8_0",display_name:"Audio8 TTS Preview 0.6B Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Audio8-TTS-Preview-0.6B-GGUF",files:["audio8-tts-preview-0.6b-q8_0.gguf"]}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{model_weights:{source:"weights:",prefix:"model_weights"},codec_weights:{source:"weights:",prefix:"codec_weights"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{model_weights:"model:model.safetensors",codec_weights:"model:codec.safetensors"}}]},PT={schema_version:1,family:"audio_flamingo",display_name:"Audio Flamingo 3 / Next / Music Flamingo",description:"Audio Flamingo 3, Audio Flamingo Next, and Music Flamingo for transcription, captioning, and audio questions, with optional PEFT LoRA and SpotSound temporal grounding.",category:"asr",status:"supported",tasks:["asr"],modes:["offline"],languages:["en"],capabilities:{},runtime:{tags:["gguf"]},options:{request:[{name:"instruct",type:"string",default:"Transcribe the input speech.",required:!1,description:"Question or instruction about the input audio."},{name:"template_name",type:"enum",values:["default","temporal_grounding"],default:"default",required:!1,description:"Prompt layout. temporal_grounding uses SpotSound timestamp-interleaved audio tokens and wraps instruct or text as an event query; requires Audio Flamingo 3 and at least one second of audio. Use with its matching adapter."},{name:"max_tokens",type:"int",min:1,required:!1,description:"Maximum generated response tokens. Defaults to checkpoint generation configuration (2048 fallback); prompt plus output budget must fit model positions."},{name:"do_sample",type:"bool",default:!1,required:!1,description:"Sample tokens instead of greedy decoding."},{name:"temperature",type:"float",default:1,required:!1,description:"Sampling temperature. Used only when do_sample=true; must be positive when sampling."},{name:"top_k",type:"int",default:50,required:!1,description:"Sampling candidate count; zero disables top-k filtering. Used only when sampling; nonpositive values disable top-k filtering."},{name:"top_p",type:"float",default:1,required:!1,description:"Nucleus sampling probability. Used only when sampling; zero is accepted and values >=1 disable nucleus filtering."},{name:"repetition_penalty",type:"float",default:1,required:!1,description:"Token repetition penalty. Must be positive."},{name:"seed",type:"int",default:42,required:!1,description:"Sampling seed. Parsed as a signed integer and converted to uint32."}],session:[{name:"weight_type",type:"enum",preset:"weight_type_full",default:"native",required:!1,description:"Weight storage type; native preserves the packaged tensor types."},{name:"lora",type:"path",required:!1,description:"Matching PEFT LoRA adapter directory or checkpoint file; merged at session creation. Keep adapter_config.json beside the weights."},{name:"lora_scale",type:"float",default:1,required:!1,description:"Multiplier for the adapter's alpha/r scaling."}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/Audio-Flamingo-GGUF",revision:"main",gated:!1}},packages:[{id:"audio_flamingo_next_q4_k",display_name:"Audio Flamingo Next GGUF Q4_K",default:!0,format:"gguf",precision:"q4_k",target_directory:"Audio-Flamingo-GGUF",files:["audio-flamingo-next-q4_k.gguf"]},{id:"audio_flamingo_next_q8_0",display_name:"Audio Flamingo Next GGUF Q8_0",format:"gguf",precision:"q8_0",target_directory:"Audio-Flamingo-GGUF",files:["audio-flamingo-next-q8_0.gguf"]},{id:"audio_flamingo_next_bf16",display_name:"Audio Flamingo Next GGUF BF16",format:"gguf",precision:"bf16",target_directory:"Audio-Flamingo-GGUF",files:["audio-flamingo-next-bf16.gguf"]},{id:"audio_flamingo_3_q4_k",display_name:"Audio Flamingo 3 GGUF Q4_K",format:"gguf",precision:"q4_k",target_directory:"Audio-Flamingo-GGUF",files:["audio-flamingo-3-q4_k.gguf"]},{id:"audio_flamingo_3_q8_0",display_name:"Audio Flamingo 3 GGUF Q8_0",format:"gguf",precision:"q8_0",target_directory:"Audio-Flamingo-GGUF",files:["audio-flamingo-3-q8_0.gguf"]},{id:"audio_flamingo_3_bf16",display_name:"Audio Flamingo 3 GGUF BF16",format:"gguf",precision:"bf16",target_directory:"Audio-Flamingo-GGUF",files:["audio-flamingo-3-bf16.gguf"]},{id:"music_flamingo_2601_q8_0",display_name:"Music Flamingo 2601 GGUF Q8_0",format:"gguf",precision:"q8_0",target_directory:"Audio-Flamingo-GGUF",files:["music-flamingo-2601-q8_0.gguf"]}],dependencies:[],ui:{tags:["GGUF"],docs:["docs/models/audio_flamingo.md"],recommended_package:"audio_flamingo_next_q4_k"},sources:[{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",generation_config:"model:generation_config.json",processor_config:"model:processor_config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json",chat_template:"model:chat_template.jinja"},tensors:{weights:{source:"model:model.safetensors"}}},{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",processor_config:"model:processor_config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json",chat_template:"model:chat_template.jinja"},tensors:{weights:{source:"weights:",prefix:"weights"}}}]},jT={schema_version:1,family:"audiosr",display_name:"AudioSR",description:"AudioSR performs latent-diffusion audio super-resolution from an input waveform.",category:"audio_tools",status:"experimental",tasks:["s2s"],modes:["offline"],languages:["auto"],runtime:{tags:["gguf","cuda"]},capabilities:{s2s:["audio_enhancement"]},options:{request:[{name:"num_inference_steps",type:"int",description:"DDIM inference steps. The uniform DDIM schedule must produce exactly this many timesteps; not every count is valid (e.g. 51 fails with 1000 diffusion timesteps).",required:!1,min:1,max:1e3,default:50},{name:"guidance_scale",type:"float",description:"Classifier-free guidance scale. Any finite value is accepted.",required:!1,default:3.5},{name:"ddim_eta",type:"float",description:"DDIM eta; 1.0 matches the official AudioSR default. Must be nonnegative; there is no runtime upper bound.",required:!1,min:0,default:1},{name:"audio_chunk_duration_sec",type:"float",description:"Long-audio chunk duration.",required:!1,min:.001,default:15},{name:"audio_chunk_overlap_sec",type:"float",description:"Long-audio chunk overlap; must be smaller than audio_chunk_duration_sec, including after rounding to samples.",required:!1,min:0,default:2},{name:"seed",type:"int",description:"Generation seed; omitted or negative values use the fixed seed 42, not a random seed. Zero is a fixed seed.",required:!1,max:2147483647,default:42}],session:[{name:"weight_type",type:"enum",description:"AudioSR weight storage type.",preset:"weight_type_full",required:!1,default:"native"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"audiosr_basic_f32",display_name:"AudioSR Basic F32 GGUF",default:!0,format:"gguf",precision:"f32",target_directory:"AudioSR-GGUF",files:["AudioSR-GGUF/audiosr-basic-f32.gguf"],strip_prefix:"AudioSR-GGUF"}],dependencies:[],ui:{recommended_package:"audiosr_basic_f32",tags:["GGUF"],docs:["docs/models/audiosr.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},tensors:{weights:{source:"weights:"},frontend:{source:"weights:",prefix:"frontend"}}}]},NT={schema_version:1,family:"auk",display_name:"AuK",description:"Tencent AuK base and AuK-Flash speech generation and editing models.",category:"tts",status:"experimental",tasks:["tts","clone","edit"],modes:["offline"],languages:["auto"],runtime:{tags:["cuda","gguf"]},ui:{recommended_package:"auk_base_f32",tags:["TTS","Edit"],docs:["docs/models/auk.md"]},capabilities:{tts:["speaker_reference"],clone:["speaker_reference"],edit:["prompt_editing"]},options:{request:[{name:"instruct",type:"string",description:"TTS voice description. Without it, text carries the complete upstream instruction; editing instructions always go in text.",required:!1},{name:"duration_sec",type:"float",description:"Positive output duration in seconds. Required without reference audio; otherwise defaults to the valid reference duration.",required:!1},{name:"num_inference_steps",type:"int",description:"Euler sampling steps for AuK base; AuK-Flash always uses its fixed four-step schedule.",required:!1,min:1,default:32},{name:"guidance_scale",type:"float",description:"Batched guidance strength for AuK base; AuK-Flash always disables classifier-free guidance.",required:!1,default:2},{name:"sway_sampling_coef",type:"float",description:"Sway coefficient for AuK base; ignored by AuK-Flash.",required:!1,default:-1},{name:"seed",type:"int",description:"Nonnegative noise seed, or -1 for a random seed.",required:!1,min:-1,default:-1}],session:[{name:"variant",type:"enum",values:["base","flash"],description:"AuK generation schedule; select flash with an AuK-Flash component.",required:!1,default:"base"},{name:"model_gguf",type:"string",description:"AuK base or Flash generator GGUF relative to the model root; defaults to the selected variant's F32 file.",required:!1},{name:"qwen_gguf",type:"string",description:"Qwen2.5-Omni-3B conditioning GGUF relative to the model root.",required:!1,default:"qwen2.5-omni-3b-bf16.gguf"},{name:"vae_gguf",type:"string",description:"AuK VAE GGUF relative to the model root.",required:!1,default:"auk-vae-f32.gguf"},{name:"attention",type:"enum",values:["auto","flash","eager"],description:"Flow-model attention mode.",required:!1,default:"auto"},{name:"mem_saver",type:"bool",description:"Release Qwen conditioning and generation weights between stages to reduce peak VRAM.",required:!1,default:!1}],load:[]},dependencies:[],package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/AuK-Base-and-Flash-GGUF",revision:"main",gated:!1}},packages:[{id:"auk_base_f32",display_name:"AuK Base F32",default:!0,format:"gguf",precision:"f32",target_directory:"AuK-Base-and-Flash-GGUF",files:["config/auk-base.yaml","config/auk-flash.yaml","tokenizer/tokenizer.json","tokenizer/tokenizer_config.json","auk-base-f32.gguf"]},{id:"auk_base_f16",display_name:"AuK Base F16",format:"gguf",precision:"f16",target_directory:"AuK-Base-and-Flash-GGUF",files:["config/auk-base.yaml","config/auk-flash.yaml","tokenizer/tokenizer.json","tokenizer/tokenizer_config.json","auk-base-f16.gguf"]},{id:"auk_base_q8_0",display_name:"AuK Base Q8_0",format:"gguf",precision:"q8_0",target_directory:"AuK-Base-and-Flash-GGUF",files:["config/auk-base.yaml","config/auk-flash.yaml","tokenizer/tokenizer.json","tokenizer/tokenizer_config.json","auk-base-q8_0.gguf"]},{id:"auk_flash_f32",display_name:"AuK-Flash F32",format:"gguf",precision:"f32",target_directory:"AuK-Base-and-Flash-GGUF",files:["config/auk-base.yaml","config/auk-flash.yaml","tokenizer/tokenizer.json","tokenizer/tokenizer_config.json","auk-flash-f32.gguf"]},{id:"auk_flash_f16",display_name:"AuK-Flash F16",format:"gguf",precision:"f16",target_directory:"AuK-Base-and-Flash-GGUF",files:["config/auk-base.yaml","config/auk-flash.yaml","tokenizer/tokenizer.json","tokenizer/tokenizer_config.json","auk-flash-f16.gguf"]},{id:"auk_flash_q8_0",display_name:"AuK-Flash Q8_0",format:"gguf",precision:"q8_0",target_directory:"AuK-Base-and-Flash-GGUF",files:["config/auk-base.yaml","config/auk-flash.yaml","tokenizer/tokenizer.json","tokenizer/tokenizer_config.json","auk-flash-q8_0.gguf"]},{id:"auk_qwen_bf16",display_name:"AuK Qwen BF16",format:"gguf",precision:"bf16",target_directory:"AuK-Base-and-Flash-GGUF",files:["config/auk-base.yaml","config/auk-flash.yaml","tokenizer/tokenizer.json","tokenizer/tokenizer_config.json","qwen2.5-omni-3b-bf16.gguf"]},{id:"auk_qwen_q8_0",display_name:"AuK Qwen Q8_0",format:"gguf",precision:"q8_0",target_directory:"AuK-Base-and-Flash-GGUF",files:["config/auk-base.yaml","config/auk-flash.yaml","tokenizer/tokenizer.json","tokenizer/tokenizer_config.json","qwen2.5-omni-3b-q8_0.gguf"]},{id:"auk_vae_f32",display_name:"AuK VAE F32",format:"gguf",precision:"f32",target_directory:"AuK-Base-and-Flash-GGUF",files:["config/auk-base.yaml","config/auk-flash.yaml","tokenizer/tokenizer.json","tokenizer/tokenizer_config.json","auk-vae-f32.gguf"]}],sources:[{format:"gguf",roots:{model:"."},files:{base_config:"model:config/auk-base.yaml",flash_config:"model:config/auk-flash.yaml",tokenizer_json:"model:tokenizer/tokenizer.json",tokenizer_config:"model:tokenizer/tokenizer_config.json"}}]},OT={schema_version:1,family:"breeze_tts",display_name:"BreezeTTS 2",description:"BreezeTTS 2 native GGUF package for instruction-conditioned text-to-speech and prompt-audio voice cloning with T5Gemma text conditioning, Qwen-style acoustic code generation, depth codebook decoding, and Mimi waveform decoding.",category:"tts",status:"supported",tasks:["tts","clone","design"],modes:["offline","streaming"],languages:["zh","en"],runtime:{tags:["gguf"]},dependencies:[],capabilities:{design:["voice_design"],tts:["style_control"],clone:["speaker_reference"]},options:{request:[{name:"instruct",type:"string",description:"BreezeTTS generation instruction.",required:!1,default:"Speak clearly and naturally."},{name:"reference_text",type:"string",description:"Transcript for prompt/reference audio; required when reference audio codes are used, for either tts or clon.",required:!1},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per long-form text chunk; default 600.",required:!1,min:1,default:600},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode.",values:["default","tag_aware","japanese","endline"],required:!1,default:"default"},{name:"max_tokens",type:"int",description:"Maximum generated BreezeTTS acoustic frames.",required:!1,min:1,default:1500},{name:"guidance_scale",type:"float",description:"Classifier-free guidance scale.",required:!1,min:0,default:1},{name:"temperature",type:"float",description:"Backbone first-codebook sampling temperature. Must be > 0.",required:!1,min:0,default:.9},{name:"depth_temperature",type:"float",description:"Depth decoder codebook sampling temperature. Must be > 0.",required:!1,min:0,default:.9},{name:"top_k",type:"int",description:"Top-k sampling limit; 0 disables top-k filtering. Nonpositive values disable top-k filtering.",required:!1,default:50},{name:"top_p",type:"float",description:"Positive nucleus sampling cutoff; values >=1 disable nucleus filtering.",required:!1,min:0,default:1},{name:"seed",type:"int",description:"Generation seed.",required:!1,min:0,default:0},{name:"stream_frames_per_event",type:"int",description:"Maximum generated codec frames per streaming audio event; fixed size with stream_chunk_policy=fixed.",required:!1,min:1,default:16},{name:"stream_lookahead_margin",type:"int",description:"Additional trailing codec frames buffered before streaming emission. The decoder is causal; zero minimizes latency.",required:!1,min:0,default:0},{name:"stream_chunk_policy",type:"enum",description:"Streaming chunk schedule: grow emits 1, 2, 4, ... frames up to stream_frames_per_event; fixed uses that size from the first event.",values:["grow","fixed"],required:!1,default:"grow"}],session:[{name:"weight_type",type:"enum",description:"BreezeTTS matmul weight storage type; default native.",required:!1,default:"native",values:["native","f32","f16","bf16","q8_0","q4_0","q4_k"]},{name:"graph_arena_mb",type:"int",description:"Reusable runtime graph arena size in MiB; default 32.",required:!1,min:1,default:32},{name:"weight_context_mb",type:"int",description:"Weight loading context size in MiB; default 4.",required:!1,min:1,default:4},{name:"reference_cache_slots",type:"int",description:"Prepared reference-audio cache slots; set 0 to disable reuse.",required:!1,min:0,default:1},{name:"attention",type:"enum",description:"Attention lowering; auto probes the backend and falls back to eager on GPUs without a flash kernel (e.g. sm70); default auto.",required:!1,values:["auto","flash","eager"],default:"auto"},{name:"bf16_activations",type:"enum",description:"Reference bf16 activation rounding as the official BreezeTTS 2 inference does it. auto = on for CUDA/HIP/Vulkan and off on Metal, where the cast cost is visible even with the fused round-to-bf16 op (~20% slower AR loop); on/off force it either way. On Metal, on also switches the KV cache to bf16 to match the reference implementation.",required:!1,values:["auto","on","off"],default:"auto"},{name:"perf_mode",type:"enum",description:"AR decode preset. off uses the normal defaults (fused_depth, direct_prefill and skip_cache_round enabled on CUDA, Vulkan and Metal); cuda_perf additionally enables batched_cfg on CUDA. Explicit session options override the preset.",required:!1,values:["off","cuda_perf"],default:"off"},{name:"fused_depth",type:"bool",description:"Decode each frame's depth codebooks in one backend graph with device-side CFG mixing and sampling. Device sampling uses the per-codebook path's torch random draws, so CUDA output normally matches it token for token. Vulkan/Metal sampling uses a different draw mapping. CUDA, Vulkan and Metal only.",required:!1,default:!0},{name:"direct_prefill",type:"bool",description:"Offline generation prefills the backbone straight into the decode cache, as streaming does, instead of exporting the KV state to the host and importing it back. Same computation. CUDA, Vulkan and Metal only.",required:!1,default:!0},{name:"skip_cache_round",type:"bool",description:"Skip re-rounding the F16 KV cache to bf16 after each update, which is an identity because the K/V rows are already bf16-rounded. Applies only with the bf16 reference path and flash attention. CUDA, Vulkan and Metal only.",required:!1,default:!0},{name:"round_bf16_fusion",type:"bool",description:"Fold the bf16 activation rounding into the CUDA RMS-norm, add and SwiGLU kernels that produce it. Bit-identical to the unfused graph, with fewer kernel launches. CUDA only.",required:!1,default:!1},{name:"batched_cfg",type:"bool",description:"With guidance_scale != 1, decode the conditional and unconditional backbone branches as one batch-2 step. Batching changes matmul accumulation order, so output differs from the two-runtime path. CUDA only.",required:!1,default:!1}],load:[]},packages:[{id:"breeze_tts_2_q4_0",display_name:"BreezeTTS 2 Q4_0 GGUF",default:!1,format:"gguf",precision:"q4_0",target_directory:"Breeze-TTS-2-GGUF",files:["Breeze-TTS-2-GGUF/breeze-tts-2-q4_0.gguf"],strip_prefix:"Breeze-TTS-2-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},{id:"breeze_tts_2_q8_0",display_name:"BreezeTTS 2 Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Breeze-TTS-2-GGUF",files:["Breeze-TTS-2-GGUF/breeze-tts-2-q8_0.gguf"],strip_prefix:"Breeze-TTS-2-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},{id:"breeze_tts_2_bf16",display_name:"BreezeTTS 2 BF16 GGUF",default:!1,format:"gguf",precision:"bf16",target_directory:"Breeze-TTS-2-GGUF",files:["Breeze-TTS-2-GGUF/breeze-tts-2-bf16.gguf"],strip_prefix:"Breeze-TTS-2-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}}],ui:{recommended_package:"breeze_tts_2_q8_0",tags:["TTS","Clone","Design","GGUF"],docs:["docs/tts.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config_json:"model:config.json",audio_tokenizer_config_json:"model:audio_tokenizer/config.json",tokenizer_config_json:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{model_weights:{source:"weights:",prefix:"model"}}}]},DT={schema_version:1,family:"bs_roformer",display_name:"BS-RoFormer",description:"Band-Split RoFormer music source-separation model that estimates vocals from explicit non-overlapping frequency bands and derives accompaniment from the input mixture.",category:"audio_tools",status:"supported",tasks:["sep"],modes:["offline"],languages:["language_agnostic"],capabilities:{sep:["stems"]},options:{request:[],session:[{name:"weight_type",type:"enum",description:"RoFormer weight storage type. Defaults to f32 when the backend requires a host graph plan, otherwise native.",preset:"weight_type_full",required:!1},{name:"num_overlap",type:"int",description:"Number of overlapping inference windows; defaults to the package configuration. Lower values improve throughput but can reduce boundary quality.",required:!1,min:1}],load:[]},runtime:{tags:["gguf"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:{source:"weights:",prefix:"weights"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json"},tensors:{weights:"model:model.safetensors"}}],package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"bs_roformer_q8_0",display_name:"BS-RoFormer ep368 Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"BS-RoFormer-ep368-GGUF",files:["BS-RoFormer-ep368-GGUF/bs-roformer-ep368-q8_0.gguf"],strip_prefix:"BS-RoFormer-ep368-GGUF"}],dependencies:[],ui:{recommended_package:"bs_roformer_q8_0",tags:["Sep","GGUF"],docs:["docs/audio_tools.md","docs/gguf.md","tests/bs_roformer/README.md"]}},IT={schema_version:1,family:"builtin_audio_utils",display_name:"Built-in Audio Utilities",description:"Built-in denoise, enhancement, and audio super-resolution utilities with separately downloaded weights.",category:"audio_tools",status:"experimental",tasks:["s2s"],modes:["offline"],languages:["auto"],runtime:{tags:["cpu","cuda"]},capabilities:{s2s:["audio_enhancement"]},options:{request:[],session:[],load:[{name:"utility",type:"enum",values:["deepfilternet2","rnnoise","zipenhancer","gtcrn","gtcrn_streaming","gtcrn_dns3","gtcrn_vctk","flashsr"],required:!0,description:"Utility implementation to load from the model path."}]},packages:[],dependencies:[],ui:{tags:[],docs:["docs/audio_tools.md"]},sources:[]},LT={family:"canary_asr",schema_version:1,display_name:"Canary 180M Flash",description:"NVIDIA Canary multilingual speech recognition and speech translation.",category:"asr",status:"supported",tasks:["asr"],modes:["offline"],languages:["en","de","es","fr"],capabilities:{},dependencies:[],options:{request:[{name:"language",type:"string",description:"Input audio language.",required:!1,default:"en"},{name:"target_language",type:"string",description:"Output language: en, de, es, or fr. Defaults to the input language for transcription.",required:!1},{name:"punc",type:"bool",description:"Generate punctuation and capitalization.",required:!1,default:!0},{name:"max_tokens",type:"int",description:"Maximum generated tokens per chunk; zero uses the reference encoder-length-based limit.",required:!1,min:0,max:1015,default:0},{name:"audio_chunk_mode",type:"enum",description:"Long-form audio chunking mode.",values:["auto","fixed","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Maximum duration of each audio chunk in seconds.",required:!1,min:.02,max:40,default:40}],session:[{name:"weight_type",type:"enum",description:"Matmul weight storage type.",values:["native","f32","f16","bf16","q8_0","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k"],required:!1,default:"native"}],load:[]},runtime:{tags:["gguf","cpu","cuda"]},ui:{tags:["ASR","GGUF"],docs:["docs/models/canary_asr.md"],recommended_package:"canary_180m_flash_f32"},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"canary_180m_flash_f32",display_name:"Canary 180M Flash GGUF F32",default:!0,format:"gguf",precision:"f32",target_directory:"Canary-180M-Flash-GGUF",files:["Canary-180M-Flash-GGUF/canary-180m-flash-f32.gguf"],strip_prefix:"Canary-180M-Flash-GGUF"},{id:"canary_180m_flash_q8_0",display_name:"Canary 180M Flash GGUF Q8_0",format:"gguf",precision:"q8_0",target_directory:"Canary-180M-Flash-GGUF",files:["Canary-180M-Flash-GGUF/canary-180m-flash-q8_0.gguf"],strip_prefix:"Canary-180M-Flash-GGUF"}],sources:[{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_spl_tokens:"model:tokenizer_spl_tokens.model",tokenizer_en:"model:tokenizer_en.model",tokenizer_de:"model:tokenizer_de.model",tokenizer_es:"model:tokenizer_es.model",tokenizer_fr:"model:tokenizer_fr.model"},tensors:{weights:"model:model.safetensors"}},{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_spl_tokens:"model:tokenizer_spl_tokens.model",tokenizer_en:"model:tokenizer_en.model",tokenizer_de:"model:tokenizer_de.model",tokenizer_es:"model:tokenizer_es.model",tokenizer_fr:"model:tokenizer_fr.model"},tensors:{weights:"weights:"}}]},VT={schema_version:1,family:"ced",display_name:"CED Audio Tagging",description:"Consistent Ensemble Distillation ViT audio classifiers for 527 AudioSet sound categories.",category:"speech_analysis",status:"supported",tasks:["classify"],modes:["offline"],languages:["language_agnostic"],capabilities:{classify:["scores"]},runtime:{tags:["gguf"]},options:{request:[{name:"top_k",type:"int",description:"Number of highest-scoring AudioSet categories returned.",required:!1,default:10,min:1,max:527}],session:[{name:"attention",type:"enum",description:"Attention implementation; auto selects a supported fast path.",required:!1,default:"auto",values:["auto","flash","eager"]},{name:"weight_type",type:"enum",description:"Weight storage override; native preserves packaged tensor types.",required:!1,default:"native",values:["native","f32","f16","bf16","q8_0","q4_0","q4_k"]}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"ced_tiny_f32",display_name:"CED Tiny F32 GGUF",format:"gguf",precision:"f32",default:!0,target_directory:"CED-GGUF",files:["CED-GGUF/ced-tiny-f32.gguf"],strip_prefix:"CED-GGUF"},{id:"ced_mini_f32",display_name:"CED Mini F32 GGUF",format:"gguf",precision:"f32",target_directory:"CED-GGUF",files:["CED-GGUF/ced-mini-f32.gguf"],strip_prefix:"CED-GGUF"},{id:"ced_small_f32",display_name:"CED Small F32 GGUF",format:"gguf",precision:"f32",target_directory:"CED-GGUF",files:["CED-GGUF/ced-small-f32.gguf"],strip_prefix:"CED-GGUF"},{id:"ced_base_f32",display_name:"CED Base F32 GGUF",format:"gguf",precision:"f32",target_directory:"CED-GGUF",files:["CED-GGUF/ced-base-f32.gguf"],strip_prefix:"CED-GGUF"}],dependencies:[],ui:{recommended_package:"ced_tiny_f32",tags:["Classify","GGUF"],docs:["docs/models/ced.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",processor:"model:preprocessor_config.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",processor:"model:preprocessor_config.json"},tensors:{weights:"model:model.safetensors"}}]},HT={family:"chatterbox",display_name:"Chatterbox",description:"Open-source Chatterbox family for expressive TTS and voice conversion, with emotion exaggeration control, fast generation, zero-shot voice cloning, and an integrated multilingual TTS path.",category:"tts",status:"supported",tasks:["tts","clone","vc"],modes:["offline"],languages:["ar","da","de","el","en","es","fi","fr","hi","it","ko","ms","nl","no","pl","pt","sv","sw","tr"],options:{request:[{name:"exaggeration",type:"float",description:"Emotion exaggeration. Captured during clone preparation; changing it on the same prepared session is rejected.",required:!1,default:.5},{name:"guidance_scale",type:"float",description:"T3 classifier-free guidance scale. Captured during clone preparation; changing it on the same prepared session is rejected.",required:!1,default:.5},{name:"temperature",type:"float",description:"T3 sampling temperature. Captured during clone preparation; changing it on the same prepared session is rejected.",required:!1,default:.8},{name:"repetition_penalty",type:"float",description:"T3 repetition penalty. Captured during clone preparation; changing it on the same prepared session is rejected.",required:!1,default:1.2},{name:"min_p",type:"float",description:"Minimum sampling probability. Captured during clone preparation; changing it on the same prepared session is rejected.",required:!1,default:.05},{name:"top_p",type:"float",description:"Nucleus sampling probability. Captured during clone preparation; changing it on the same prepared session is rejected.",required:!1,default:1},{name:"flow_guidance_scale",type:"float",description:"S3Gen flow guidance scale. Captured during clone preparation; changing it on the same prepared session is rejected.",required:!1,default:.7},{name:"max_tokens",type:"int",description:"Maximum generated speech tokens. Captured during clone preparation; changing it on the same prepared session is rejected.",required:!1,min:1,default:384},{name:"do_sample",type:"bool",description:"Enable sampling. Captured during clone preparation; changing it on the same prepared session is rejected.",required:!1,default:!0},{name:"stop_on_eos",type:"bool",description:"Stop token generation on EOS. Captured during clone preparation; changing it on the same prepared session is rejected.",required:!1,default:!0},{name:"num_inference_steps",type:"int",description:"Voice conversion flow steps; max_steps is also accepted.",required:!1,min:1,default:10},{name:"seed",type:"int",description:"Sampling seed; omitted chooses a random seed. Captured during clone preparation; changing it on the same prepared session is rejected.",required:!1,min:0,max:4294967295},{name:"source_audio",type:"audio_path",description:"Voice conversion source WAV path; overrides audio_input.",required:!1},{name:"target_voice",type:"audio_path",description:"Voice conversion target WAV path; overrides the speaker reference.",required:!1},{name:"text_chunk_size",type:"int",description:"Framework long-form text chunk size.",required:!1,default:128}],session:[{name:"weight_type",type:"enum",description:"Weight storage type; defaults to native.",required:!1,preset:"weight_type_full"},{name:"t3_weight_type",type:"enum",description:"T3 weight storage; inherits weight_type.",required:!1,preset:"weight_type_full"},{name:"multilingual_t3",type:"enum",description:"Multilingual T3 checkpoint selection.",required:!1,values:["v2","v3"],default:"v2"},{name:"conditionals_cache_slots",type:"int",description:"Cached speaker conditionals; zero disables reuse.",required:!1,min:0,default:1},{name:"mem_saver",type:"bool",description:"Release staged runtime components.",required:!1,default:!1},{name:"encoder_condition_samples",type:"int",description:"Maximum reference samples for the T3 tokenizer; the voice encoder still consumes the full 16 kHz reference.",required:!1,default:96e3},{name:"decoder_condition_samples",type:"int",description:"S3Gen reference sample limit at 24 kHz.",required:!1,default:24e4},{name:"t3_speech_cond_prompt_len",type:"int",description:"T3 reference speech prompt token limit.",required:!1,default:150}],load:[]},capabilities:{clone:["speaker_reference"],vc:["speaker_reference"]},runtime:{tags:["gguf"]},ui:{recommended_package:"chatterbox_q8_0",tags:["TTS","Clone","VC","GGUF"],docs:["docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"chatterbox_q8_0",display_name:"Chatterbox Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Chatterbox-GGUF",files:["Chatterbox-GGUF/chatterbox-q8_0.gguf"],strip_prefix:"Chatterbox-GGUF"},{id:"chatterbox_f16",display_name:"Chatterbox F16 GGUF",format:"gguf",precision:"f16",target_directory:"Chatterbox-GGUF",files:["Chatterbox-GGUF/chatterbox-f16.gguf"],strip_prefix:"Chatterbox-GGUF"},{id:"chatterbox_safetensors",display_name:"Chatterbox Safetensors",format:"safetensors",precision:"native",target_directory:"chatterbox",files:["ve.safetensors","t3_cfg.safetensors","s3gen.safetensors","tokenizer.json","grapheme_mtl_merged_expanded_v1.json","Cangjie5_TC.json","conds.pt","t3_mtl23ls_v2.safetensors","t3_mtl23ls_v3.safetensors"],download:{kind:"huggingface_snapshot",repo:"ResembleAI/chatterbox"}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{english_tokenizer:"model:tokenizer.json",multilingual_tokenizer:"model:grapheme_mtl_merged_expanded_v1.json",cangjie_mapping:"model:Cangjie5_TC.json",builtin_conditionals:"model:conds.pt"},tensors:{voice_encoder_weights:{source:"weights:",prefix:"voice_encoder"},s3gen_weights:{source:"weights:",prefix:"s3gen"},t3_english_weights:{source:"weights:",prefix:"t3_english"},t3_multilingual_v2_weights:{source:"weights:",prefix:"t3_multilingual_v2"},t3_multilingual_v3_weights:{source:"weights:",prefix:"t3_multilingual_v3"}}},{format:"safetensors",roots:{model:"."},files:{english_tokenizer:"model:tokenizer.json",multilingual_tokenizer:"model:grapheme_mtl_merged_expanded_v1.json",cangjie_mapping:"model:Cangjie5_TC.json",builtin_conditionals:"model:conds.pt"},tensors:{voice_encoder_weights:"model:ve.safetensors",s3gen_weights:"model:s3gen.safetensors",t3_english_weights:"model:t3_cfg.safetensors",t3_multilingual_v2_weights:"model:t3_mtl23ls_v2.safetensors",t3_multilingual_v3_weights:"model:t3_mtl23ls_v3.safetensors"}}]},WT={family:"chatterbox_turbo",display_name:"Chatterbox Turbo",description:"Resemble AI's distilled 350M Chatterbox Turbo: GPT2 T3 backbone, GPT2 BPE tokenizer, and a 2-step meanflow S3Gen decoder for fast English TTS with a built-in voice.",category:"tts",status:"testing",tasks:["tts"],modes:["offline"],languages:["en"],capabilities:{},options:{request:[{name:"max_tokens",type:"int",description:"Maximum generated tokens; legacy max_new_tokens remains accepted.",required:!1,min:0,default:1e3},{name:"temperature",type:"float",description:"T3 sampling temperature.",required:!1,default:.8},{name:"top_p",type:"float",description:"T3 nucleus sampling cutoff.",required:!1,default:.95},{name:"top_k",type:"int",description:"T3 top-k sampling limit.",required:!1,min:0,default:1e3},{name:"repetition_penalty",type:"float",description:"T3 token repetition penalty.",required:!1,default:1.2},{name:"seed",type:"int",description:"Generation seed.",required:!1,min:0,max:4294967295,default:0},{name:"text_chunk_size",type:"int",description:"Maximum characters per text chunk; must be positive.",required:!1,min:1,default:128}],session:[],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"chatterbox_turbo_q8_0",tags:["TTS","GGUF"],docs:["docs/models/chatterbox_turbo.md","docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"chatterbox_turbo_q8_0",display_name:"Chatterbox Turbo Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Chatterbox-Turbo-GGUF",files:["Chatterbox-Turbo-GGUF/chatterbox-turbo-q8_0.gguf"],strip_prefix:"Chatterbox-Turbo-GGUF"},{id:"chatterbox_turbo_f16",display_name:"Chatterbox Turbo F16 GGUF",format:"gguf",precision:"f16",target_directory:"Chatterbox-Turbo-GGUF",files:["Chatterbox-Turbo-GGUF/chatterbox-turbo-f16.gguf"],strip_prefix:"Chatterbox-Turbo-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{tokenizer_vocab:"model:chatterbox_turbo_vocab.json",tokenizer_merges:"model:chatterbox_turbo_merges.txt",tokenizer_special_tokens:"model:chatterbox_turbo_special_tokens.json"},tensors:{t3_turbo_weights:{source:"weights:",prefix:"t3"},builtin_conditionals_turbo:{source:"weights:",prefix:"conds"},s3gen_weights:{source:"weights:",prefix:"s3gen"}}}]},QT={family:"citrinet_asr",display_name:"Citrinet ASR",description:"NVIDIA CitriNet-family end-to-end English ASR model using a convolutional CTC architecture optimized for transcribing speech segments to text.",category:"asr",status:"supported",tasks:["asr"],modes:["offline"],languages:["en"],capabilities:{},options:{request:[],session:[{name:"weight_type",type:"enum",description:"Weight storage type used by the encoder.",default:"native",preset:"weight_type_full",required:!1}],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"citrinet_asr_q8_0",tags:["ASR","GGUF"],docs:["docs/asr.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"citrinet_asr_q8_0",display_name:"Citrinet ASR Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Citrinet-ASR-GGUF",files:["Citrinet-ASR-GGUF/citrinet-asr-q8_0.gguf"],strip_prefix:"Citrinet-ASR-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:citrinet_256_config.json",tokenizer:"model:citrinet_256_tokenizer.model"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:citrinet_256_config.json",tokenizer:"model:citrinet_256_tokenizer.model"},tensors:{weights:"model:citrinet_256.safetensors"}}]},KT={family:"cohere_asr",schema_version:1,display_name:"Cohere Transcribe",description:"Cohere multilingual speech transcription with punctuation control.",category:"asr",status:"supported",tasks:["asr"],modes:["offline"],languages:["en","fr","de","es","it","pt","nl","pl","el","ar","ja","zh","vi","ko"],capabilities:{},dependencies:[],options:{request:[{name:"language",type:"string",description:"Input audio language.",required:!1,default:"en"},{name:"punc",type:"bool",description:"Generate punctuation and capitalization.",required:!1,default:!0},{name:"max_tokens",type:"int",description:"Maximum generated tokens per audio chunk.",required:!1,min:1,max:1014,default:256},{name:"audio_chunk_mode",type:"enum",description:"Long-form audio chunking mode.",values:["auto","quiet_energy","fixed","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Maximum duration of each audio chunk in seconds.",required:!1,min:.04,max:35,default:35}],session:[{name:"weight_type",type:"enum",description:"Matmul weight storage type.",values:["native","f32","f16","bf16","q8_0","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k"],required:!1,default:"native"}],load:[]},runtime:{tags:["gguf","cpu","cuda"]},ui:{tags:["ASR","GGUF"],docs:["docs/models/cohere_asr.md"],recommended_package:"cohere_transcribe_bf16"},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"cohere_transcribe_bf16",display_name:"Cohere Transcribe GGUF BF16",default:!0,format:"gguf",precision:"bf16",target_directory:"Cohere-Transcribe-GGUF",files:["Cohere-Transcribe-GGUF/cohere-transcribe-03-2026-bf16.gguf"],strip_prefix:"Cohere-Transcribe-GGUF"},{id:"cohere_transcribe_q8_0",display_name:"Cohere Transcribe GGUF Q8_0",format:"gguf",precision:"q8_0",target_directory:"Cohere-Transcribe-GGUF",files:["Cohere-Transcribe-GGUF/cohere-transcribe-03-2026-q8_0.gguf"],strip_prefix:"Cohere-Transcribe-GGUF"},{id:"cohere_transcribe_q4_0",display_name:"Cohere Transcribe GGUF Q4_0",format:"gguf",precision:"q4_0",target_directory:"Cohere-Transcribe-GGUF",files:["Cohere-Transcribe-GGUF/cohere-transcribe-03-2026-q4_0.gguf"],strip_prefix:"Cohere-Transcribe-GGUF"}],sources:[{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer:"model:tokenizer.model"},tensors:{weights:"model:model.safetensors"}},{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer:"model:tokenizer.model"},tensors:{weights:"weights:"}}]},YT={schema_version:1,family:"confucius4_r2t2",display_name:"Confucius4-R2T2",description:"NetEase Youdao Confucius4-R2T2 real-time ASR: a Qwen3-ASR fine-tune with Longest Stable Prefix (LSP) streaming. Low-latency append-only streaming from 80 ms to 2 s chunks, context and hotword prompts, 30 languages.",category:"asr",status:"community",tasks:["asr"],modes:["offline","streaming"],languages:["zh","en","yue","ar","de","fr","es","pt","id","it","ko","ru","th","vi","ja","tr","hi","ms","nl","sv","da","fi","pl","cs","fil","fa","el","hu","mk","ro"],capabilities:{asr:["partial_results"]},runtime:{tags:["gguf","stream"]},ui:{recommended_package:"confucius4_r2t2_q8_0",tags:["ASR","Stream"],docs:["docs/models/r2t2.md","docs/asr.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"netease-youdao/Confucius4-R2T2",revision:"main",gated:!1}},packages:[{id:"confucius4_r2t2_q8_0",display_name:"Confucius4-R2T2 Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Confucius4-R2T2-GGUF",files:["r2t2-q8_0.gguf"],download:{kind:"huggingface_snapshot",repo:"davidxifeng/Confucius4-R2T2-gguf"}},{id:"confucius4_r2t2_f16",display_name:"Confucius4-R2T2 F16 GGUF",format:"gguf",precision:"f16",target_directory:"Confucius4-R2T2-GGUF",files:["r2t2-f16.gguf"],download:{kind:"huggingface_snapshot",repo:"davidxifeng/Confucius4-R2T2-gguf"}},{id:"confucius4_r2t2_q4_k_m",display_name:"Confucius4-R2T2 Q4_K_M GGUF",description:"Community Q4_K_M quantization by NairoDorian (Hugging Face: Nairod785), pinned to a fixed revision; quantization report in QUANTIZATION.md. Quantized derivative work of netease-youdao/Confucius4-R2T2 under the NetEase Youdao Model Use License - see LICENSE, LICENSE_zh and NOTICE in the download repo.",format:"gguf",precision:"q4_k_m",target_directory:"Confucius4-R2T2-Q4_K_M-GGUF",files:["r2t2-q4_k_m.gguf"],download:{kind:"huggingface_snapshot",repo:"Nairod785/Confucius4-R2T2-Q4_K_M-GGUF",revision:"b1ea19256fb77a8d8ab7b091dc75378e15952605",gated:!1}},{id:"confucius4_r2t2_safetensors",display_name:"Confucius4-R2T2 (HF safetensors)",format:"safetensors",precision:"native",target_directory:"Confucius4-R2T2",files:["added_tokens.json","chat_template.json","config.json","generation_config.json","merges.txt","model.safetensors","preprocessor_config.json","special_tokens_map.json","tokenizer.json","tokenizer_config.json","vocab.json"],download:{kind:"huggingface_snapshot",repo:"netease-youdao/Confucius4-R2T2"}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_config:"model:tokenizer_config.json"},optional_files:{preprocessor_config:"model:preprocessor_config.json",processor_config:"model:processor_config.json",chat_template:"model:chat_template.json",chat_template_jinja:"model:chat_template.jinja",vocab:"model:vocab.json",merges:"model:merges.txt",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_config:"model:tokenizer_config.json"},optional_files:{preprocessor_config:"model:preprocessor_config.json",processor_config:"model:processor_config.json",chat_template:"model:chat_template.json",chat_template_jinja:"model:chat_template.jinja",vocab:"model:vocab.json",merges:"model:merges.txt",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"model:model.safetensors"}}],options:{request:[{name:"language",type:"string",required:!1,default:"Auto",description:"Recognition language: ISO-639 code (zh/en/ja/...) or canonical name (Chinese/English/...), or Auto for detection."},{name:"max_tokens",type:"int",required:!1,description:"Offline decode budget. Must be positive. Offline omission uses checkpoint configuration (512 fallback).",min:1}],session:[{name:"chunk_size_ms",type:"float",required:!1,default:320,description:"Streaming chunk duration in milliseconds; must be positive."},{name:"unfixed_chunk_num",type:"int",required:!1,default:2,description:"Leading chunks decoded without a stable-prefix prompt.",min:0},{name:"unfixed_token_num",type:"int",required:!1,default:5,description:"Tokens rolled back from the accumulated text before it becomes the prefix prompt.",min:0},{name:"rollback_punctuation",type:"bool",required:!1,default:!1,description:"When punctuation is detected, set rollback to zero and retain the full decoded prefix."},{name:"max_tokens",type:"int",required:!1,default:32,description:"Greedy decode budget per streaming chunk and for the final flush (session-scoped; distinct from the offline request max_tokens).",min:1},{name:"audio_encoder_weight_type",type:"enum",preset:"weight_type_conv",required:!1,default:"native",description:"Audio tower weight storage."},{name:"thinker_weight_type",type:"enum",values:["native","f32","f16","bf16","q8_0"],required:!1,default:"native",description:"Thinker weight storage."},{name:"weight_type",type:"enum",preset:"weight_type_full",required:!1,default:"native",description:"Alias for thinker_weight_type."},{name:"audio_encoder_graph_arena_mb",type:"int",required:!1,default:128,description:"Audio tower graph arena in MB.",min:1},{name:"thinker_prefill_graph_arena_mb",type:"int",required:!1,default:256,description:"Thinker prefill graph arena in MB.",min:1},{name:"thinker_decode_graph_arena_mb",type:"int",required:!1,default:256,description:"Thinker decode graph arena in MB.",min:1},{name:"thinker_weight_context_mb",type:"int",required:!1,default:64,description:"Thinker weight context in MB.",min:1}],load:[]},dependencies:[]},JT={schema_version:1,family:"confucius4_tts",display_name:"Confucius4-TTS",description:"Confucius4-TTS is a multilingual voice-cloning TTS model packaged for audio.cpp with offline and streaming generation. It uses reference speech, language-aware text normalization, T2S semantic generation, S2A flow matching, style encoding, semantic audio features, and BigVGAN vocoding.",category:"tts",status:"experimental",tasks:["tts","clone"],modes:["offline","streaming"],languages:["zh","en","ja","ko","de","fr","es","id","it","th","pt","ru","ms","vi"],runtime:{tags:["gguf","stream"]},capabilities:{clone:["speaker_reference","long_form"]},options:{request:[{name:"language",type:"string",description:"Target synthesis language code used by the text frontend; default zh when no request transcript language or style language is provided.",required:!1,default:"zh"},{name:"temperature",type:"float",description:"T2S sampling temperature; must be > 0, default 0.8.",required:!1,min:0,default:.8},{name:"top_p",type:"float",description:"T2S nucleus sampling probability; must be in (0, 1], default 0.8.",required:!1,min:0,max:1,default:.8},{name:"top_k",type:"int",description:"T2S top-k sampling limit; must be positive, default 30.",required:!1,min:1,default:30},{name:"num_beams",type:"int",description:"T2S beam count; default 3. Set 1 for single-beam sampling.",required:!1,min:1,default:3},{name:"repetition_penalty",type:"float",description:"T2S repetition penalty; must be > 0, default 10.0.",required:!1,min:0,default:10},{name:"max_tokens",type:"int",description:"Maximum T2S semantic sequence length including prompt tokens; default 1520.",required:!1,min:1,default:1520},{name:"num_inference_steps",type:"int",description:"S2A flow-matching step count; default 25.",required:!1,min:1,default:25},{name:"guidance_scale",type:"float",description:"S2A classifier-free guidance scale; default 0.7. Negative values select the no-CFG path.",required:!1,default:.7},{name:"text_chunk_size",type:"int",description:"Maximum text tokens per generated segment; default 80.",required:!1,min:1,default:80},{name:"text_chunk_mode",type:"enum",description:"word_budget/default selects model-local official_segments. Other modes use the framework splitter with a codepoint budget.",values:["default","tag_aware","japanese","endline"],required:!1,default:"default"},{name:"cross_fade_duration_sec",type:"float",description:"Cross-fade duration between generated segments in seconds; default 0.3.",required:!1,min:0,default:.3},{name:"edge_fade_duration_sec",type:"float",description:"Fade duration applied at segment edges in seconds; default 0.1. Currently validated but not applied to generated audio.",required:!1,min:0,default:.1},{name:"edge_pad_duration_sec",type:"float",description:"Silence padding applied at segment edges in seconds; default 0.1. Currently validated but not applied to generated audio.",required:!1,min:0,default:.1},{name:"seed",type:"int",description:"Seed for T2S sampling and S2A noise initialization; default 1234.",required:!1,min:0,default:1234}],session:[{name:"graph_arena_mb",type:"int",description:"Reusable ggml graph arena size in MiB for Confucius stages; default 512.",required:!1,min:1,default:512},{name:"weight_context_mb",type:"int",description:"Weight loading context size in MiB; default 1024.",required:!1,min:1,default:1024},{name:"weight_type",type:"enum",description:"Matmul weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"conv_weight_type",type:"enum",description:"Convolution weight storage type; default native.",preset:"weight_type_conv",required:!1,default:"native"},{name:"reference_cache_slots",type:"int",description:"Prepared reference-audio cache slots; default 1, set 0 to disable caching.",required:!1,min:0,default:1},{name:"mem_saver",type:"bool",description:"Release staged graphs after request phases; default false.",required:!1,default:!1}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"confucius4_tts_orig",display_name:"Confucius4-TTS Original-Dtype GGUF",default:!0,format:"gguf",precision:"orig",target_directory:"Confucius4-TTS-GGUF",files:["Confucius4-TTS-GGUF/confucius4-tts-orig.gguf"],strip_prefix:"Confucius4-TTS-GGUF"}],dependencies:[],ui:{recommended_package:"confucius4_tts_orig",tags:["TTS","Clone","GGUF","Stream"],docs:["docs/tts.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:inference_config.yaml",tokenizer_model:"model:tokenizer.model",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",special_tokens_map:"model:special_tokens_map.json",w2v_preprocessor_config:"model:w2v_preprocessor_config.json",bigvgan_config:"model:bigvgan_config.json"},tensors:{t2s:{source:"weights:",prefix:"t2s"},s2a:{source:"weights:",prefix:"s2a"},semantic_encoder:{source:"weights:",prefix:"semantic_encoder"},semantic_encoder_shaw:{source:"weights:",prefix:"semantic_encoder_shaw"},semantic_stats:{source:"weights:",prefix:"semantic_stats"},style_encoder:{source:"weights:",prefix:"style_encoder"},vocoder:{source:"weights:",prefix:"vocoder"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:inference_config.yaml",tokenizer_model:"model:tokenizer.model",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",special_tokens_map:"model:special_tokens_map.json",w2v_preprocessor_config:"model:w2v_preprocessor_config.json",bigvgan_config:"model:bigvgan_config.json"},tensors:{t2s:"model:t2s.safetensors",s2a:"model:s2a.safetensors",semantic_encoder:"model:semantic_encoder.safetensors",semantic_encoder_shaw:"model:semantic_encoder_shaw.safetensors",semantic_stats:"model:semantic_stats.safetensors",style_encoder:"model:style_encoder.safetensors",vocoder:"model:vocoder.safetensors"}}]},XT={schema_version:1,family:"controlfoley",display_name:"ControlFoley",description:"Multimodal Foley audio generation model.",category:"audio_tools",status:"experimental",tasks:["sfx"],modes:["offline"],languages:["auto"],runtime:{tags:["gguf"]},capabilities:{sfx:["prompt_generation"]},ui:{recommended_package:"controlfoley_large_44k_q8_0",tags:["SFX","GGUF"],docs:["docs/models/controlfoley.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{open_clip_vocab:"model:open_clip_vocab.json",open_clip_merges:"model:open_clip_merges.txt",open_clip_tokenizer_config:"model:open_clip_tokenizer_config.json"},tensors:{flow:{source:"weights:",prefix:"flow"},vae:{source:"weights:",prefix:"vae"},bigvgan:{source:"weights:",prefix:"bigvgan"},open_clip:{source:"weights:",prefix:"open_clip"},cav_mae:{source:"weights:",prefix:"cav_mae"},synchformer:{source:"weights:",prefix:"synchformer"},clap:{source:"weights:",prefix:"clap"},mert:{source:"weights:",prefix:"mert"},musicgen_style:{source:"weights:",prefix:"musicgen_style"}}}],options:{request:[{name:"duration_sec",type:"float",required:!1,default:8,min:.64,description:"Target temporal budget."},{name:"num_inference_steps",type:"int",required:!1,default:25,min:1,description:"Euler flow inference steps."},{name:"guidance_scale",type:"float",required:!1,default:4.5,min:0,description:"Classifier-free guidance strength. Must be > 0. Values strictly between 0 and 1 bypass CFG and negative-prompt conditioning."},{name:"negative_prompt",type:"string",required:!1,default:"",description:"Negative text prompt used for the unconditional guidance text branch."},{name:"video_file",type:"path",required:!1,description:"Optional video path for video-conditioned Foley generation."},{name:"mask_away_clip",type:"bool",required:!1,default:!1,description:"Disable OpenCLIP video conditioning while keeping visual and sync conditioning."},{name:"seed",type:"int",required:!1,default:42,min:0,max:4294967295,description:"Generation seed."}],session:[{name:"weight_type",type:"enum",required:!1,preset:"weight_type_full",default:"native",description:"ControlFoley weight storage type."}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"controlfoley_large_44k_f32",display_name:"ControlFoley Large 44k F32 GGUF",format:"gguf",precision:"f32",target_directory:"ControlFoley-GGUF",files:["ControlFoley-GGUF/controlfoley-large-44k-f32.gguf"],strip_prefix:"ControlFoley-GGUF"},{id:"controlfoley_large_44k_q8_0",display_name:"ControlFoley Large 44k Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"ControlFoley-GGUF",files:["ControlFoley-GGUF/controlfoley-large-44k-q8_0.gguf"],strip_prefix:"ControlFoley-GGUF"}],dependencies:[]},ZT={schema_version:1,family:"cosyvoice3",display_name:"CosyVoice3",description:"Fun-CosyVoice3 native GGUF package for zero-shot, cross-lingual, and instruction-conditioned text-to-speech using CosyVoice3 speech-token AR generation, causal masked flow mel decoding, CAM++ speaker conditioning, and causal HiFT waveform decoding.",category:"tts",status:"supported",tasks:["tts","clone"],modes:["offline"],languages:["zh","en","ja","ko","de","es","fr","it","ru","yue"],runtime:{tags:["gguf"]},dependencies:[],capabilities:{tts:["speaker_reference","style_control"],clone:["speaker_reference"]},options:{request:[{name:"template_name",type:"enum",description:"CosyVoice3 request template.",required:!1,values:["zero_shot","cross_lingual","instruct"],default:"zero_shot"},{name:"reference_text",type:"string",description:"Transcript for the prompt audio.",required:!1},{name:"instruct",type:"string",description:"Instruction text for instruct mode.",required:!1},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per long-form text chunk; default 600.",required:!1,min:1,default:600},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode.",values:["default","tag_aware","japanese","endline"],required:!1,default:"default"},{name:"max_tokens",type:"int",description:"Maximum generated speech tokens; -1 (default) selects 20 times the target text token count. Explicit limits must be positive.",required:!1,min:-1,default:-1},{name:"min_tokens",type:"int",description:"Minimum generated speech tokens before stop is accepted; -1 (default) selects twice the target text token count. Must not exceed the resolved maximum.",required:!1,min:-1,default:-1},{name:"top_k",type:"int",description:"AR speech-token top-k sampling limit; default 25.",required:!1,min:1,default:25},{name:"num_inference_steps",type:"int",description:"Flow decoder Euler steps; default 10.",required:!1,min:1,default:10},{name:"seed",type:"int",description:"Generation seed.",required:!1,min:0,default:1986}],session:[{name:"lora",type:"path",description:"PEFT adapter with adapter_config.json, or native lora_weights with config.json and speech_embedding/llm_decoder sidecars. Checkpoints may use safetensors or PyTorch containers.",required:!1},{name:"lora_scale",type:"float",description:"Multiplier for the adapter's alpha/r scaling; default 1. Full-weight replacements are not scaled.",required:!1,default:1},{name:"weight_type",type:"enum",description:"CosyVoice3 matmul weight storage type; default native.",required:!1,default:"native",values:["native","f32","f16","bf16","q8_0","q4_0","q4_k"]},{name:"graph_arena_mb",type:"int",description:"Reusable runtime graph arena size in MiB; default 1024.",required:!1,min:1,default:1024},{name:"weight_context_mb",type:"int",description:"Weight loading context size in MiB; default 2048.",required:!1,min:1,default:2048},{name:"reference_cache_slots",type:"int",description:"Prepared reference-audio cache slots; set 0 to disable reuse.",required:!1,min:0,default:4},{name:"mem_saver",type:"bool",description:"Release cached runtime graphs after each request to reduce peak VRAM; default false.",required:!1,default:!1},{name:"exec_plan",type:"string",description:"JSON object of component execution plans. Component: flow. Each plan accepts impl, backend, artifacts, and params. impl is default/ggml/rknn. GGML keeps the session backend. RKNN requires artifacts.main, a comma-separated ladder of estimator engines compiled one per sequence length (tools/rknn/prepare_cosyvoice3_rknn_flow.py), and ENGINE_ENABLE_RKNN; omit backend. An utterance longer than the largest engine runs the CPU graph. Neither implementation takes params.",required:!1,default:"{}"}],load:[]},packages:[{id:"cosyvoice3_q8_0",display_name:"CosyVoice3 Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"CosyVoice3-GGUF",files:["CosyVoice3-GGUF/cosyvoice3-q8_0.gguf"],strip_prefix:"CosyVoice3-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},{id:"cosyvoice3_f32",display_name:"CosyVoice3 F32 GGUF",default:!1,format:"gguf",precision:"f32",target_directory:"CosyVoice3-GGUF",files:["CosyVoice3-GGUF/cosyvoice3-f32.gguf"],strip_prefix:"CosyVoice3-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}}],ui:{recommended_package:"cosyvoice3_q8_0",tags:["TTS","Clone","GGUF"],docs:["docs/tts.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{cosyvoice3_yaml:"model:cosyvoice3.yaml",qwen_config:"model:CosyVoice-BlankEN/config.json",tokenizer_config:"model:CosyVoice-BlankEN/tokenizer_config.json",vocab_json:"model:CosyVoice-BlankEN/vocab.json",merges_txt:"model:CosyVoice-BlankEN/merges.txt"},tensors:{llm_weights:{source:"weights:",prefix:"llm"},flow_weights:{source:"weights:",prefix:"flow"},hift_weights:{source:"weights:",prefix:"hift"},campplus_weights:{source:"weights:",prefix:"campplus"},speech_tokenizer_weights:{source:"weights:",prefix:"speech_tokenizer"},blank_en_weights:{source:"weights:",prefix:"blank_en"}}}]},e8={schema_version:1,family:"crisperwhisper",display_name:"CrisperWhisper 2.0",description:"Whisper-based verbatim and intended speech transcription.",category:"asr",status:"supported",tasks:["asr","align"],modes:["offline","streaming"],languages:["af","am","ar","as","az","ba","be","bg","bn","bo","br","bs","ca","cs","cy","da","de","el","en","es","et","eu","fa","fi","fo","fr","gl","gu","ha","haw","he","hi","hr","ht","hu","hy","id","is","it","ja","jw","ka","kk","km","kn","ko","la","lb","ln","lo","lt","lv","mg","mi","mk","ml","mn","mr","ms","mt","my","ne","nl","nn","no","oc","pa","pl","ps","pt","ro","ru","sa","sd","si","sk","sl","sn","so","sq","sr","su","sv","sw","ta","te","tg","th","tk","tl","tr","tt","uk","ur","uz","vi","yi","yo","zh"],capabilities:{align:["word_timestamps"],asr:["word_timestamps","partial_results"]},dependencies:[],options:{request:[{name:"return_timestamps",required:!1,type:"bool",description:"Return word-level timestamps.",default:!1},{name:"audio_chunk_mode",required:!1,type:"enum",values:["auto","fixed","none"],description:"Continuation window planning. None requires audio no longer than 30 seconds.",default:"auto"},{name:"audio_chunk_duration_sec",required:!1,type:"float",description:"Duration of each encoder window in seconds. Must be positive and greater than overlap.",max:30,default:30},{name:"audio_chunk_overlap_sec",required:!1,type:"float",description:"Audio overlap between continuation windows in seconds. Must be smaller than chunk duration.",min:0,default:4},{name:"language",required:!1,type:"string",description:"Audio language code.",default:"en"},{name:"transcription_mode",required:!1,type:"enum",description:"Verbatim speech, intended clean text, or transcript-conditioned verbatimize.",values:["verbatim","intended","verbatimize"],default:"verbatim"},{name:"max_tokens",required:!1,type:"int",description:"Maximum generated tokens per window. Positive budget, additionally bounded by remaining checkpoint text positions after the prompt.",min:1,default:256}],session:[{name:"weight_type",required:!1,type:"enum",values:["native","f32","f16","bf16","q8_0","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k","i8"],description:"Matmul weight storage type.",default:"native"}],load:[]},runtime:{tags:["gguf"]},ui:{tags:["ASR","GGUF"],docs:["docs/models/crisperwhisper.md"],recommended_package:"crisperwhisper_2_large_q8_0"},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"crisperwhisper_2_large_bf16",display_name:"CrisperWhisper 2.0 Large GGUF BF16",format:"gguf",precision:"bf16",target_directory:"CrisperWhisper2.0-GGUF",files:["CrisperWhisper2.0-GGUF/crisperwhisper-2-large-bf16.gguf"],strip_prefix:"CrisperWhisper2.0-GGUF"},{id:"crisperwhisper_2_large_q8_0",display_name:"CrisperWhisper 2.0 Large GGUF Q8_0",default:!0,format:"gguf",precision:"q8_0",target_directory:"CrisperWhisper2.0-GGUF",files:["CrisperWhisper2.0-GGUF/crisperwhisper-2-large-q8_0.gguf"],strip_prefix:"CrisperWhisper2.0-GGUF"},{id:"crisperwhisper_2_large_q4_k",display_name:"CrisperWhisper 2.0 Large GGUF Q4_K",format:"gguf",precision:"q4_k",target_directory:"CrisperWhisper2.0-GGUF",files:["CrisperWhisper2.0-GGUF/crisperwhisper-2-large-q4_k.gguf"],strip_prefix:"CrisperWhisper2.0-GGUF"}],sources:[{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",vocab:"model:vocab.json",merges:"model:merges.txt"},tensors:{weights:"model:model.safetensors"}},{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",vocab:"model:vocab.json",merges:"model:merges.txt"},tensors:{weights:"weights:"}}]},t8={schema_version:1,family:"dots_tts",display_name:"DotTTS",description:"DotTTS is a multilingual zero-shot TTS, voice-cloning, and speech-editing model family packaged for audio.cpp with SOAR and MeanFlow generation, prompt-audio plus prompt-text prefill, speaker-reference conditioning, language tags, multiple synthesis templates, long-form text chunking, and true streaming audio output.",category:"tts",status:"supported",tasks:["tts","clone"],modes:["offline","streaming"],languages:["multilingual"],runtime:{tags:["gguf","stream"]},capabilities:{tts:["speaker_reference","style_control","long_form"],clone:["speaker_reference","style_control","long_form"]},options:{request:[{name:"reference_text",type:"string",description:"Transcript for the prompt audio. When set with reference audio, DotTTS uses prompt prefill for higher quality voice cloning.",required:!1},{name:"reference_duration_sec",type:"float",description:"Optional prompt-audio trim duration before reference conditioning and prompt prefill.",required:!1,min:0},{name:"template_name",type:"enum",description:"DotTTS synthesis template. tts is normal text-to-speech; instruction_tts adds instruction conditioning; text_to_audio uses a sound-description template; tts_interleave uses the streaming interleave schedule; edit uses the DotTTS Edit source-audio editing schedule and is offline-only.",values:["tts","instruction_tts","text_to_audio","tts_interleave","edit"],required:!1,default:"tts"},{name:"source_audio",type:"audio_path",description:"Source WAV path for DotTTS Edit. Required when template_name=edit unless audio_input is supplied by the caller.",required:!1},{name:"instruct",type:"string",description:"Structured DotTTS Edit instruction. If omitted with template_name=edit, the request text is used as the instruction.",required:!1},{name:"source_text",type:"string",description:"Optional source transcript override for DotTTS Edit. If omitted, it is rendered from instruction tags.",required:!1},{name:"target_text",type:"string",description:"Edit target transcript override. When omitted, explicit instruction plus text input uses that text; otherwise the target is rendered from instruction tags.",required:!1},{name:"use_xvector",type:"enum",description:"DotTTS Edit speaker conditioning mode. auto follows the upstream tag-based behavior; on/off force or disable source-audio speaker conditioning.",values:["auto","on","off"],required:!1,default:"auto"},{name:"language",type:"string",description:"Optional target language tag. none disables language tagging; otherwise pass a language code such as en or zh.",required:!1,default:"none"},{name:"num_inference_steps",type:"int",description:"SOAR flow-matching inference step count; default 10.",required:!1,min:1,default:10},{name:"guidance_scale",type:"float",description:"Classifier-free guidance scale used by SOAR flow matching. Default 1.2.",required:!1,min:0,default:1.2},{name:"speaker_scale",type:"float",description:"Multiplier applied to the prompt speaker embedding; default 1.5.",required:!1,min:0,default:1.5},{name:"sampler_mode",type:"enum",description:"SOAR ODE solver method for flow matching. Fixed-step euler is the default and parity baseline.",values:["euler","midpoint","rk4"],required:!1,default:"euler"},{name:"max_tokens",type:"int",description:"Maximum generated audio patch count per generated segment; default 500. In Edit mode source patches consume this budget; it must exceed the source-patch count.",required:!1,min:1,default:500},{name:"text_chunk_size",type:"int",description:"Maximum text codepoints per generated segment for long-form requests; default 320.",required:!1,min:1,default:320},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode; default tag_aware preserves leading style/control tags across long-form chunks.",values:["default","tag_aware","japanese","endline"],required:!1,default:"tag_aware"},{name:"vocoder_merge_steps",type:"int",description:"Streaming vocoder latent patch merge size after the initial unmerged patches; default 4, matching the Python optimized streaming runtime default.",required:!1,min:1,default:4},{name:"seed",type:"int",description:"Seed for prompt latent sampling and flow noise initialization; default 42.",required:!1,min:0,default:42}],session:[{name:"weight_type",type:"enum",description:"Shared matmul weight storage type for DotTTS components; default native. Component-specific weight options override this value.",preset:"weight_type_full",required:!1,default:"native"},{name:"speaker_encoder_weight_type",type:"enum",description:"Speaker encoder matmul weight storage type; defaults to weight_type.",preset:"weight_type_full",required:!1},{name:"codec_weight_type",type:"enum",description:"AudioVAE vocoder matmul and recurrent weight storage type; defaults to weight_type.",preset:"weight_type_full",required:!1},{name:"patch_encoder_weight_type",type:"enum",description:"Patch encoder transformer matmul weight storage type; defaults to weight_type.",preset:"weight_type_full",required:!1},{name:"llm_weight_type",type:"enum",description:"Autoregressive language model matmul weight storage type; defaults to weight_type.",preset:"weight_type_full",required:!1},{name:"flow_weight_type",type:"enum",description:"SOAR or MeanFlow DiT flow-matching matmul weight storage type; defaults to weight_type.",preset:"weight_type_full",required:!1},{name:"codec_conv_weight_type",type:"enum",description:"Convolution weight storage type; default native.",preset:"weight_type_conv",required:!1,default:"native"},{name:"reference_cache_slots",type:"int",description:"Prepared reference-audio cache slots; set 0 to disable reuse.",required:!1,min:0,default:4},{name:"mem_saver",type:"bool",description:"Load DotTTS components by request phase and release their weights/graphs after last use while keeping reference cache slots alive.",required:!1,default:!1}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"dots_tts_soar_q8_0",display_name:"DotTTS SOAR Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"DotTTS-SOAR-GGUF",files:["DotTTS-SOAR-GGUF/dots-tts-soar-q8_0.gguf"],strip_prefix:"DotTTS-SOAR-GGUF"},{id:"dots_tts_soar_bf16",display_name:"DotTTS SOAR BF16 GGUF",default:!1,format:"gguf",precision:"bf16",target_directory:"DotTTS-SOAR-GGUF",files:["DotTTS-SOAR-GGUF/dots-tts-soar-bf16.gguf"],strip_prefix:"DotTTS-SOAR-GGUF"},{id:"dots_tts_mf_q8_0",display_name:"DotTTS MeanFlow Q8_0 GGUF",default:!1,format:"gguf",precision:"q8_0",target_directory:"DotTTS-MF-GGUF",files:["DotTTS-MF-GGUF/dots-tts-mf-q8_0.gguf"],strip_prefix:"DotTTS-MF-GGUF"},{id:"dots_tts_mf_bf16",display_name:"DotTTS MeanFlow BF16 GGUF",default:!1,format:"gguf",precision:"bf16",target_directory:"DotTTS-MF-GGUF",files:["DotTTS-MF-GGUF/dots-tts-mf-bf16.gguf"],strip_prefix:"DotTTS-MF-GGUF"},{id:"dots_tts_edit_q8_0",display_name:"DotTTS Edit Q8_0 GGUF",default:!1,format:"gguf",precision:"q8_0",target_directory:"DotTTS-Edit-GGUF",files:["DotTTS-Edit-GGUF/dots-tts-edit-q8_0.gguf"],strip_prefix:"DotTTS-Edit-GGUF"},{id:"dots_tts_edit_bf16",display_name:"DotTTS Edit BF16 GGUF",default:!1,format:"gguf",precision:"bf16",target_directory:"DotTTS-Edit-GGUF",files:["DotTTS-Edit-GGUF/dots-tts-edit-bf16.gguf"],strip_prefix:"DotTTS-Edit-GGUF"}],dependencies:[],ui:{recommended_package:"dots_tts_soar_q8_0",tags:["TTS","Clone","Stream","GGUF"],docs:["docs/tts.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",llm_config:"model:llm_config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",vocab:"model:vocab.json",merges:"model:merges.txt",added_tokens:"model:added_tokens.json",special_tokens_map:"model:special_tokens_map.json"},tensors:{core_weights:{source:"weights:",prefix:"core"},vocoder_weights:{source:"weights:",prefix:"vocoder"},speaker_encoder_weights:{source:"weights:",prefix:"speaker_encoder"},latent_stats:{source:"weights:",prefix:"latent_stats"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",llm_config:"model:llm_config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",vocab:"model:vocab.json",merges:"model:merges.txt",added_tokens:"model:added_tokens.json",special_tokens_map:"model:special_tokens_map.json"},tensors:{core_weights:{source:"model:model.safetensors"},vocoder_weights:{source:"model:vocoder.safetensors"},speaker_encoder_weights:{source:"model:speaker_encoder.safetensors"},latent_stats:{source:"model:latent_stats.safetensors"}}}]},a8={schema_version:1,family:"dramabox",display_name:"DramaBox",description:"DramaBox is an English expressive TTS and voice-cloning model packaged for audio.cpp as a standalone GGUF bundle. It combines Gemma text conditioning, diffusion sampling, reference-audio conditioning, long-form chunking, and 48 kHz stereo output.",category:"tts",status:"experimental",tasks:["tts","clone"],modes:["offline"],languages:["en"],runtime:{tags:["gguf"]},capabilities:{tts:["speaker_reference","style_control","long_form"],clone:["speaker_reference","style_control","long_form"]},options:{request:[{name:"target_voice",type:"audio_path",description:"Reference voice WAV path for voice cloning. If omitted, DramaBox generates from text without reference-audio conditioning.",required:!1},{name:"negative_prompt",type:"string",description:"Negative text conditioning used when guidance_scale enables classifier-free guidance; omitted uses the built-in quality prompt.",required:!1},{name:"duration_sec",type:"float",description:"Explicit target duration in seconds; default 0 uses the prompt-duration estimator. Above audio_chunk_threshold_sec, long-form generation uses estimated per-chunk durations instead of this explicit target.",required:!1,min:0,default:0},{name:"num_inference_steps",type:"int",description:"Diffusion sampling step count; default comes from config.json, 30 in the current package.",required:!1,min:1,default:30},{name:"guidance_scale",type:"float",description:"Classifier-free guidance scale; default comes from config.json, 2.5 in the current package. Values greater than 1 enable CFG. Negative values disable this guidance branch.",required:!1,default:2.5},{name:"spatio_temporal_guidance_scale",type:"float",description:"Spatio-temporal guidance scale; default comes from config.json, 1.5 in the current package. Values greater than 0 enable STG. Negative values disable this guidance branch.",required:!1,default:1.5},{name:"duration_scale",type:"float",description:"Multiplier applied to the estimated prompt duration when duration_sec is 0; default comes from config.json, 1.1 in the current package. The resulting duration has a 3-second floor.",required:!1,default:1.1},{name:"reference_duration_sec",type:"float",description:"Reference voice crop/repeat duration in seconds; default comes from config.json, 10.0 in the current package. Must be > 0.",required:!1,min:0,default:10},{name:"guidance_rescale",type:"string",description:"Guidance rescale: auto or any negative value derives it from guidance_scale; nonnegative numeric values select an explicit rescale.",required:!1,default:"auto"},{name:"audio_chunk_threshold_sec",type:"float",description:"Estimated duration threshold that switches a request to long-form chunking; default 45.0 seconds. Must be > 0.",required:!1,min:0,default:45},{name:"audio_chunk_duration_sec",type:"float",description:"Target estimated duration for each long-form chunk; default 37.0 seconds. Must be > 0.",required:!1,min:0,default:37},{name:"cross_fade_duration_sec",type:"float",description:"Equal-power cross-fade between long-form chunks in seconds; default 0.05. Zero still overlaps one sample.",required:!1,min:0,default:.05},{name:"seed",type:"int",description:"Torch-compatible CUDA noise seed for diffusion sampling; default 42.",required:!1,min:0,default:42}],session:[{name:"perf_mode",type:"enum",description:"Attention implementation mode. Default off keeps the exact reference-query attention path; flash_attention enables the optimized path.",values:["off","flash_attention"],required:!1,default:"off"},{name:"mem_saver",type:"bool",description:"Release staged runtime graphs and weights immediately after each request phase to reduce peak and resident VRAM; default false keeps components cached for later reuse.",required:!1,default:!1}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"dramabox_q8_0",display_name:"DramaBox Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"DramaBox-GGUF",files:["DramaBox-GGUF/dramabox-q8_0.gguf"],strip_prefix:"DramaBox-GGUF"}],dependencies:[],ui:{recommended_package:"dramabox_q8_0",tags:["TTS","Clone","GGUF"],docs:["docs/tts.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",audio_components_config:"model:audio_components_config.json",gemma_config:"model:gemma-3-12b-it-bnb-4bit/config.json",gemma_tokenizer_model:"model:gemma-3-12b-it-bnb-4bit/tokenizer.model",gemma_tokenizer_json:"model:gemma-3-12b-it-bnb-4bit/tokenizer.json",gemma_tokenizer_config:"model:gemma-3-12b-it-bnb-4bit/tokenizer_config.json"},tensors:{dit_weights:{source:"weights:",prefix:"dit"},audio_weights:{source:"weights:",prefix:"audio"},gemma_weights:{source:"weights:",prefix:"gemma"},silence_latent:{source:"weights:",prefix:"silence"}}}]},i8={schema_version:1,family:"echo_tts",display_name:"Echo-TTS",description:"Echo-TTS is an English zero-shot voice-cloning TTS model packaged for audio.cpp. A 2.8B diffusion transformer generates 80-D latents in PCA space which the Fish S1-DAC decodes to 44.1 kHz audio. Generation is a fixed 29.72 s window (640 latents).",category:"tts",status:"experimental",tasks:["tts","clone"],modes:["offline"],languages:["en"],runtime:{tags:["gguf"]},capabilities:{clone:["speaker_reference"]},options:{request:[{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per text chunk; must be positive, default 300.",required:!1,min:1,default:300},{name:"text_guidance_scale",type:"float",description:"Classifier-free guidance scale on the text condition (independent-cfg only). Advertised range is recommended, not enforced by the parser.",required:!1,min:0,default:3},{name:"speaker_guidance_scale",type:"float",description:"Classifier-free guidance scale on the speaker condition (independent-cfg only). Advertised range is recommended, not enforced by the parser.",required:!1,min:0,default:8},{name:"guidance_scale",type:"float",description:"Classifier-free guidance scale on the text and speaker condition (join-cfg only). Advertised range is recommended, not enforced by the parser.",required:!1,min:0,default:8},{name:"t_schedule_mode",type:"enum",description:"RF Euler timestep schedule: linear or sway; default linear.",values:["linear","sway"],required:!1,default:"linear"},{name:"sway_coeff",type:"float",description:"Sway Sampling coefficient; must be finite and produce strictly decreasing timesteps. Default -1.0.",required:!1,default:-1},{name:"num_inference_steps",type:"int",description:"Euler sampler steps. Default 40 for linear timestep schedule, 12 for sway.",required:!1,min:1,default:40},{name:"truncation_factor",type:"float",description:"Initial-noise truncation factor. Advertised range is recommended, not enforced by the parser.",required:!1,min:0,max:1,default:.8},{name:"speaker_kv_scale",type:"float",description:"Force-speaker KV scaling. 1.0 disables; 1.5 is the upstream default when enabled. Advertised range is recommended, not parser-enforced; zero is invalid for reciprocal scaling.",required:!1,min:1,default:1},{name:"seed",type:"int",description:"RNG seed for the initial latent. Negative signed-integer values are treated as zero.",required:!1,default:0},{name:"reference_duration_sec",type:"float",required:!1,description:"Trim the speaker reference to at most this many seconds before encoding. Shorter references are cheaper and often clone better; upstream's guidance favours around 10 s. Defaults to 15 s. Values above the trained maximum of 297.1 s are clamped. Set per request, or as a session default from CLI or server config. Must be positive.",default:15},{name:"max_duration_sec",type:"float",description:"Cap the generation window, in seconds (up to 29.7215 s, the trained maximum; larger values are clamped to it). Quantised down to a whole latent frame of 46.44 ms. Left unset, the window is estimated per chunk from text length and widened automatically if the utterance does not finish inside it, which is substantially cheaper for short text. Must be positive; rounded to at least one latent frame.",required:!1,max:29.7215},{name:"guidance_interval",type:"int",description:"Refresh the two unconditional CFG lanes only every Nth step inside the guidance window, reusing the previous guidance correction in between. 1 reproduces upstream exactly. Worth raising to 2 at 30+ steps, where the correction is still measured 8-10 times across the guided phase (roughly 1.3x fewer denoiser evaluations); not recommended below ~20 steps, where it is already coarsely sampled and staleness shows up as degraded timbre and text adherence.",required:!1,min:1,default:1}],session:[{name:"reference_duration_sec",type:"float",required:!1,description:"Trim the speaker reference to at most this many seconds before encoding. Shorter references are cheaper and often clone better; upstream's guidance favours around 10 s. Defaults to 15 s. Values above the trained maximum of 297.1 s are clamped. Set per request, or as a session default from CLI or server config. Must be positive.",default:15},{name:"reference_cache_slots",type:"int",required:!1,description:"How many encoded speaker references to keep. Encoding is linear in reference length, so reusing a voice across requests avoids repeating it. 0 disables caching; default 4."},{name:"mem_saver",type:"bool",required:!1,description:"Release Fish S1-DAC decode graph space before encoding reference speaker audio and encode graph space after. Avoids having both allocations resident simulaneously at the cost of rebuilding the graphs when a speaker cache-miss occurs.",default:!1},{name:"cfg_mode",type:"enum",description:"Type of classifier free guidance used.",values:["independent","joint"],required:!1,default:"independent"}],load:[]},packages:[{id:"echo_tts_q8_0",display_name:"Echo-TTS Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Echo-TTS-GGUF",files:["echo-tts-q8_0.gguf"],download:{kind:"huggingface_snapshot",repo:"dignome/Echo-TTS",revision:"919681c9906c88963352d5f96e0f732ddd3989ce",gated:!1}},{id:"echo_tts_f16",display_name:"Echo-TTS F16 GGUF",format:"gguf",precision:"f16",target_directory:"Echo-TTS-GGUF",files:["echo-tts-f16.gguf"],download:{kind:"huggingface_snapshot",repo:"dignome/Echo-TTS",revision:"919681c9906c88963352d5f96e0f732ddd3989ce",gated:!1}}],dependencies:[],ui:{recommended_package:"echo_tts_q8_0",tags:["TTS","Clone","GGUF"],docs:["docs/models/echo_tts.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},tensors:{dit_weights:{source:"weights:",prefix:"dit_weights"},pca:{source:"weights:",prefix:"pca"},codec_weights:{source:"weights:",prefix:"ae"}}}]},n8={schema_version:1,family:"f5_tts",display_name:"F5-TTS",description:"Community F5-TTS flow-matching diffusion transformer for zero-shot voice cloning, including Arabic via the Habibi-TTS finetune (SWivid). Text conv conditioner, RoPE DiT, CFM sampler, Vocos vocoder.",category:"tts",status:"community",tasks:["tts","clone"],modes:["offline"],languages:["en","ar"],runtime:{tags:["server"]},capabilities:{clone:["speaker_reference"]},options:{request:[{name:"reference_text",type:"string",description:"Transcript matching the reference voice audio; required by F5-TTS zero-shot cloning.",required:!0},{name:"dialect",type:"string",description:"Habibi dialect token: UNK MSA SAU UAE ALG IRQ EGY MAR OMN TUN LEV SDN LBY; default UNK.",required:!1,default:"UNK"},{name:"sway_sampling_coef",type:"float",description:"Sway sampling coefficient for inference timesteps; default -1.0. Advertised bounds are recommended settings, not parser-enforced limits.",required:!1,min:-5,max:5,default:-1},{name:"speed",type:"float",description:"Speech speed multiplier for duration estimation; default 1.0. Generated text chunks shorter than 10 characters use 0.3 instead. Advertised bounds are recommended settings, not parser-enforced limits.",required:!1,min:.5,max:2,default:1},{name:"seed",type:"int",description:"Non-negative noise seed; omitted selects a random seed. Explicit zero is deterministic.",required:!1,min:0},{name:"num_inference_steps",type:"int",description:"CFM Euler steps (NFE); default 32. The parser rejects nonpositive counts.",required:!1,min:1,default:32},{name:"guidance_scale",type:"float",description:"Classifier-free guidance strength; default 2.0. Advertised bounds are recommended settings, not parser-enforced limits.",required:!1,min:0,max:10,default:2},{name:"strip_diacritics",type:"bool",description:"Strip Arabic combining marks (harakat/tanwin/shadda/tatweel) before synthesis; Habibi is trained on undiacritized ASR transcripts and garbles diacritized input. Default true.",required:!1,default:!0}],session:[{name:"lora",type:"path",description:"PEFT DiT LoRA adapter directory or checkpoint file; merged into session-owned weights and graphs. Vocos is unchanged.",required:!1},{name:"lora_scale",type:"float",description:"Multiplier for the adapter's alpha/r scaling; default 1.",required:!1,default:1},{name:"vocos_path",type:"string",description:"Path to the Vocos vocoder checkpoint (vocos.safetensors); required unless placed next to the DiT checkpoint.",required:!1},{name:"dialect",type:"string",description:"Default Habibi dialect token for requests that do not set it; default UNK.",required:!1,default:"UNK"},{name:"frame_budget",type:"int",description:"Total mel frames per CFM pass (ref + generated); larger budgets allow sentence-scale chunks at higher VRAM. Must be in [256, 8192]; omitted uses 2048. Explicit zero is not accepted. On CPU the allocated DiT graph pool caps a pass at 960 frames (10.2 s), so larger values are clamped there; CUDA keeps the full range.",required:!1,min:256,max:8192,default:2048}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"trklou/audio.cpp",revision:"main",gated:!1}},packages:[{id:"habibi_unified",display_name:"Habibi-TTS Unified (Arabic, multi-dialect)",description:"Unified multi-dialect Arabic checkpoint from SWivid/Habibi-TTS, converted to GGUF (DiT transformer + Vocos vocoder namespaces, f32).",default:!0,format:"gguf",precision:"orig",target_directory:"Habibi-TTS/Unified",files:["habibi-unified/habibi-unified-orig.gguf","habibi-unified/vocab.txt"],strip_prefix:"habibi-unified"},{id:"vocos_mel_24khz",display_name:"Vocos mel 24kHz vocoder (GGUF)",description:"Standalone Vocos vocoder GGUF for use with the original safetensors checkpoints.",default:!1,format:"gguf",precision:"orig",target_directory:"vocos-mel-24khz",files:["vocos-mel-24khz/vocos-mel-24khz-orig.gguf"],strip_prefix:"vocos-mel-24khz"},{id:"habibi_alg",display_name:"Habibi-TTS ALG specialized checkpoint (GGUF)",description:"Single-dialect ALG checkpoint from SWivid/Habibi-TTS, converted to GGUF (DiT transformer + Vocos vocoder namespaces, f32). Stronger ALG accent than the unified model.",default:!1,format:"gguf",precision:"orig",target_directory:"Habibi-TTS/Specialized/ALG",files:["habibi-alg/habibi-alg-orig.gguf","habibi-alg/vocab.txt"],strip_prefix:"habibi-alg"},{id:"habibi_egy",display_name:"Habibi-TTS EGY specialized checkpoint (GGUF)",description:"Single-dialect EGY checkpoint from SWivid/Habibi-TTS, converted to GGUF (DiT transformer + Vocos vocoder namespaces, f32). Stronger EGY accent than the unified model.",default:!1,format:"gguf",precision:"orig",target_directory:"Habibi-TTS/Specialized/EGY",files:["habibi-egy/habibi-egy-orig.gguf","habibi-egy/vocab.txt"],strip_prefix:"habibi-egy"},{id:"habibi_irq",display_name:"Habibi-TTS IRQ specialized checkpoint (GGUF)",description:"Single-dialect IRQ checkpoint from SWivid/Habibi-TTS, converted to GGUF (DiT transformer + Vocos vocoder namespaces, f32). Stronger IRQ accent than the unified model.",default:!1,format:"gguf",precision:"orig",target_directory:"Habibi-TTS/Specialized/IRQ",files:["habibi-irq/habibi-irq-orig.gguf","habibi-irq/vocab.txt"],strip_prefix:"habibi-irq"},{id:"habibi_mar",display_name:"Habibi-TTS MAR specialized checkpoint (GGUF)",description:"Single-dialect MAR checkpoint from SWivid/Habibi-TTS, converted to GGUF (DiT transformer + Vocos vocoder namespaces, f32). Stronger MAR accent than the unified model.",default:!1,format:"gguf",precision:"orig",target_directory:"Habibi-TTS/Specialized/MAR",files:["habibi-mar/habibi-mar-orig.gguf","habibi-mar/vocab.txt"],strip_prefix:"habibi-mar"},{id:"habibi_msa",display_name:"Habibi-TTS MSA specialized checkpoint (GGUF)",description:"Single-dialect MSA checkpoint from SWivid/Habibi-TTS, converted to GGUF (DiT transformer + Vocos vocoder namespaces, f32). Stronger MSA accent than the unified model.",default:!1,format:"gguf",precision:"orig",target_directory:"Habibi-TTS/Specialized/MSA",files:["habibi-msa/habibi-msa-orig.gguf","habibi-msa/vocab.txt"],strip_prefix:"habibi-msa"},{id:"habibi_sau",display_name:"Habibi-TTS SAU specialized checkpoint (GGUF)",description:"Single-dialect SAU checkpoint from SWivid/Habibi-TTS, converted to GGUF (DiT transformer + Vocos vocoder namespaces, f32). Stronger SAU accent than the unified model.",default:!1,format:"gguf",precision:"orig",target_directory:"Habibi-TTS/Specialized/SAU",files:["habibi-sau/habibi-sau-orig.gguf","habibi-sau/vocab.txt"],strip_prefix:"habibi-sau"},{id:"habibi_uae",display_name:"Habibi-TTS UAE specialized checkpoint (GGUF)",description:"Single-dialect UAE checkpoint from SWivid/Habibi-TTS, converted to GGUF (DiT transformer + Vocos vocoder namespaces, f32). Stronger UAE accent than the unified model.",default:!1,format:"gguf",precision:"orig",target_directory:"Habibi-TTS/Specialized/UAE",files:["habibi-uae/habibi-uae-orig.gguf","habibi-uae/vocab.txt"],strip_prefix:"habibi-uae"}],dependencies:[],ui:{recommended_package:"habibi_unified",tags:["TTS","Clone"],docs:["docs/models/f5_tts.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{vocab:"model:vocab.txt"},tensors:{transformer:{source:"weights:",prefix:"transformer"}},optional_tensors:{vocos_vocoder:{source:"weights:",prefix:"vocos"}}},{format:"safetensors",roots:{model:"."},files:{vocab:"model:vocab.txt"},tensors:{transformer:{source:"model:model_200000.safetensors",prefix:"ema_model.transformer"}}}]},s8={schema_version:1,family:"firered_audio",display_name:"FireRedAudio",description:"FireRedAudio native GGUF package for generation paths backed by a Qwen3.5 hybrid backbone, FireRed RedAE conditioning, RedPatchEncoder, RedDiT latent flow, and RedAE waveform decoding.",category:"tts",status:"experimental",tasks:["asr","tts","clone","design","edit"],modes:["offline"],languages:["zh","en"],runtime:{tags:["gguf"]},dependencies:[],capabilities:{tts:["speaker_reference","style_control"],clone:["speaker_reference"],design:["voice_design"],edit:["prompt_editing"]},options:{request:[{name:"template_name",type:"enum",description:"Defaults to voice_design for design, acoustic_edit for generation with input audio, tts_clone for other generation, and asr for ASR.",required:!1,values:["tts_clone","voice_design","semantic_edit","acoustic_edit","asr","understand"]},{name:"reference_text",type:"string",description:"Transcript for the prompt audio used by tts_clone.",required:!1},{name:"instruct",type:"string",description:"Voice/delivery conditioning for generation. ASR/understanding uses the text input as its task prompt, not this option.",required:!1},{name:"language",type:"string",description:"FireRedAudio generation language tag.",required:!1,default:"zh"},{name:"num_inference_steps",type:"int",description:"FireRedAudio DiT flow steps per generated latent patch.",required:!1,min:1,default:10},{name:"guidance_scale",type:"float",description:"FireRedAudio DiT classifier-free guidance scale. Must be > 0.",required:!1,min:0,default:2},{name:"max_audio_steps",type:"int",description:"Maximum generated RedAE latent patches.",required:!1,min:1,default:750},{name:"min_audio_steps",type:"int",description:"Minimum generated RedAE latent patches before eosp can stop generation.",required:!1,min:0,default:6},{name:"max_text_tokens",type:"int",description:"Maximum text-mode tokens before audio mode.",required:!1,min:1,default:512},{name:"max_tokens",type:"int",description:"Output token budget; defaults to 300, or 1024 for understand with enable_thinking=true.",required:!1,min:1},{name:"enable_thinking",type:"bool",description:"Leave the understanding think block open for chain-of-thought style answers.",required:!1,default:!1},{name:"top_k",type:"int",description:"Text sampling top-k for understanding.",required:!1,min:0,default:20},{name:"top_p",type:"float",description:"Text sampling top-p for understanding.",required:!1,min:0,max:1,default:.8},{name:"temperature",type:"float",description:"Text sampling temperature for understanding. Understanding-mode sampling requires a positive value; zero does not select greedy decoding.",required:!1,min:0,default:.7},{name:"seed",type:"int",description:"Unsigned 32-bit generation seed in [0, 4294967295]; default 1234.",required:!1,min:0,max:4294967295,default:1234}],session:[{name:"weight_type",type:"enum",description:"FireRedAudio weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"graph_arena_mb",type:"int",description:"Main runtime graph arena size in MiB; default 1024.",required:!1,min:1,default:1024},{name:"weight_context_mb",type:"int",description:"Weight loading context size in MiB; default 1024.",required:!1,min:1,default:1024},{name:"reference_cache_slots",type:"int",description:"Prepared reference-audio cache slots; set 0 to disable reuse.",required:!1,min:0,default:2},{name:"mem_saver",type:"bool",description:"Release cached runtime graphs after each request to reduce peak VRAM; default false.",required:!1,default:!1}],load:[]},packages:[{id:"firered_audio_orig",display_name:"FireRedAudio Orig GGUF",format:"gguf",precision:"orig",target_directory:"FireRedAudio-GGUF",files:["FireRedAudio-GGUF/firered-audio-orig.gguf"],strip_prefix:"FireRedAudio-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},{id:"firered_audio_q8_0",display_name:"FireRedAudio Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"FireRedAudio-GGUF",files:["FireRedAudio-GGUF/firered-audio-q8_0.gguf"],strip_prefix:"FireRedAudio-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}}],ui:{recommended_package:"firered_audio_q8_0",tags:["TTS","Clone","Design","GGUF"],docs:["docs/models/firered_audio.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",processor_config:"model:processor_config.json"},tensors:{model_weights:{source:"weights:",prefix:"model"},redae_decoder_weights:{source:"weights:",prefix:"redae_decoder"}}}]},r8={schema_version:1,family:"firered_vad",display_name:"FireRed VAD",description:"DFSMN speech activity detection with offline and causal Stream-VAD checkpoints.",category:"audio_tools",status:"experimental",tasks:["vad"],modes:["offline","streaming"],languages:["language_agnostic"],capabilities:{vad:["speech_segments"]},runtime:{tags:["gguf"]},options:{request:[{name:"threshold",type:"float",description:"Speech probability threshold; defaults to 0.4 for VAD and 0.5 for Stream-VAD.",required:!1,min:0,max:1},{name:"smooth_window_ms",type:"int",description:"Trailing probability smoothing window in milliseconds, rounded to the nearest 10 ms. Validation occurs after conversion to 10-ms frames; metadata bounds describe intended settings.",required:!1,default:50,min:10},{name:"min_speech_duration_ms",type:"int",description:"Speech confirmation duration, rounded to the nearest 10 ms; defaults to 200 ms for VAD and 80 ms for Stream-VAD. Validation occurs after conversion to 10-ms frames; metadata bounds describe intended settings.",required:!1,min:10},{name:"max_speech_duration_sec",type:"float",description:"Maximum speech duration in seconds, rounded to the nearest 10 ms. Validation occurs after conversion to 10-ms frames; metadata bounds describe intended settings.",required:!1,default:20,min:.02},{name:"min_silence_duration_ms",type:"int",description:"Silence confirmation duration in milliseconds, rounded to the nearest 10 ms. Validation occurs after conversion to 10-ms frames; metadata bounds describe intended settings.",required:!1,default:200,min:0},{name:"merge_silence_duration_ms",type:"int",description:"Merge shorter internal silence gaps in offline VAD; milliseconds rounded to the nearest 10 ms.",required:!1,default:0,min:0},{name:"speech_pad_ms",type:"int",description:"Extend offline VAD segments on each side; milliseconds rounded to the nearest 10 ms.",required:!1,default:0,min:0},{name:"speech_start_pad_ms",type:"int",description:"Stream-VAD start padding in milliseconds, rounded to the nearest 10 ms and at least the smoothing window.",required:!1,default:50,min:0},{name:"audio_chunk_duration_sec",type:"float",description:"Maximum network duration per offline chunk in seconds, rounded to the nearest 10 ms; each chunk resets network history, matching upstream.",required:!1,default:300,min:.01}],session:[],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"firered_vad_f32",display_name:"FireRed VAD GGUF F32",default:!0,format:"gguf",precision:"f32",target_directory:"FireRedVAD-GGUF",files:["FireRedVAD-GGUF/firered-vad-f32.gguf"],strip_prefix:"FireRedVAD-GGUF"},{id:"firered_stream_vad_f32",display_name:"FireRed Stream-VAD GGUF F32",format:"gguf",precision:"f32",target_directory:"FireRedVAD-GGUF",files:["FireRedVAD-GGUF/firered-stream-vad-f32.gguf"],strip_prefix:"FireRedVAD-GGUF"}],dependencies:[],ui:{tags:["VAD","GGUF"],docs:["docs/models/firered_vad.md"],recommended_package:"firered_vad_f32"},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},tensors:{weights:{source:"weights:",prefix:"weights"}}}]},o8={schema_version:1,family:"fireredtts3",display_name:"FireRedTTS3",description:"FireRedTTS3 family for Base zero-shot voice cloning and Instruct instruction-conditioned TTS, voice design, semantic edit, and acoustic edit with Qwen3 autoregressive hidden-state generation, FireRed DiT latent patch flow, and RedAE waveform decoding.",category:"tts",status:"experimental",tasks:["tts","clone","design"],modes:["offline"],languages:["Chinese","English","Cantonese","Japanese","Korean","Spanish","French","Russian","Arabic","Turkish","Indonesian","Portuguese","Italian","Dutch","Vietnamese","German","Ukrainian","Thai","Polish","Romanian","Greek","Czech","Finnish","Hindi","ZH_Anhui","ZH_Fujian","ZH_Gansu","ZH_Guizhou","ZH_Hebei","ZH_Henan","ZH_Hubei","ZH_Hunan","ZH_Jiangxi","ZH_Liaoning","ZH_Minnan","ZH_Ningxia","ZH_Shaanxi","ZH_Shandong","ZH_Shanghai","ZH_Shanxi","ZH_Sichuan","ZH_Tianjin","ZH_Wenzhou","ZH_Wu","ZH_Yunnan"],runtime:{tags:["gguf"]},dependencies:[],capabilities:{tts:["speaker_reference","style_control"],clone:["speaker_reference","style_control"],design:["voice_design"]},options:{request:[{name:"template_name",type:"enum",description:"Instruct template; defaults to acoustic_edit with input audio, otherwise instruct_tts.",required:!1,values:["instruct_tts","voice_design","semantic_edit","acoustic_edit"]},{name:"reference_text",type:"string",description:"Transcript for the prompt audio.",required:!1},{name:"instruct",type:"string",description:"FireRedTTS3 instruction for voice design or edit tasks.",required:!1},{name:"language",type:"string",description:"Language tag used by FireRedTTS3.",required:!1,default:"Chinese"},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per long-form text chunk; default 80 when hanzi, kana and Hangul outnumber other letters and digits (except edits), otherwise 600.",required:!1,min:1},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode.",values:["default","tag_aware","japanese","endline"],required:!1,default:"default"},{name:"num_inference_steps",type:"int",description:"FireRed DiT flow steps per generated latent patch.",required:!1,min:1,default:10},{name:"guidance_scale",type:"float",description:"Positive guidance scale; defaults to 1.2 for voice-design/semantic-edit/acoustic-edit templates and 2 otherwise.",required:!1,min:0},{name:"stop_threshold",type:"float",description:"Stop probability threshold for AR patch generation.",required:!1,min:0,max:1,default:.5},{name:"seed",type:"int",description:"Unsigned 32-bit sampling seed in [0, 4294967295]; defaults to 2 for voice design and 1234 otherwise.",required:!1,min:0,max:4294967295}],session:[{name:"weight_type",type:"enum",description:"FireRedTTS3 weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"graph_arena_mb",type:"int",description:"Main runtime graph arena size in MiB; default 1024.",required:!1,min:1,default:1024},{name:"helper_graph_arena_mb",type:"int",description:"Helper graph arena size in MiB; default 256.",required:!1,min:1,default:256},{name:"weight_context_mb",type:"int",description:"Weight loading context size in MiB; default 512.",required:!1,min:1,default:512},{name:"reference_cache_slots",type:"int",description:"Prepared reference-audio cache slots; set 0 to disable reuse. Applies only to Base; Instruct does not use this cache.",required:!1,min:0,default:4},{name:"mem_saver",type:"bool",description:"Release cached runtime graphs after each request to reduce peak VRAM; default false.",required:!1,default:!1}],load:[]},packages:[{id:"fireredtts3_instruct_orig",display_name:"FireRedTTS3 Instruct Orig GGUF",format:"gguf",precision:"orig",target_directory:"FireRedTTS3-Instruct-GGUF",files:["FireRedTTS3-Instruct-GGUF/fireredtts3-instruct-orig.gguf"],strip_prefix:"FireRedTTS3-Instruct-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},{id:"fireredtts3_instruct_q8_0",display_name:"FireRedTTS3 Instruct Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"FireRedTTS3-Instruct-GGUF",files:["FireRedTTS3-Instruct-GGUF/fireredtts3-instruct-q8_0.gguf"],strip_prefix:"FireRedTTS3-Instruct-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},{id:"fireredtts3_base_orig",display_name:"FireRedTTS3 Base Orig GGUF",format:"gguf",precision:"orig",target_directory:"FireRedTTS3-Base-GGUF",files:["FireRedTTS3-Base-GGUF/fireredtts3-base-orig.gguf"],strip_prefix:"FireRedTTS3-Base-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},{id:"fireredtts3_base_q8_0",display_name:"FireRedTTS3 Base Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"FireRedTTS3-Base-GGUF",files:["FireRedTTS3-Base-GGUF/fireredtts3-base-q8_0.gguf"],strip_prefix:"FireRedTTS3-Base-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}}],ui:{recommended_package:"fireredtts3_instruct_q8_0",tags:["TTS","Clone","Design","GGUF"],docs:["docs/models/fireredtts3.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{redae_config:"model:redae/config.json",tokenizer_json:"model:text_tokenizer/tokenizer.json",tokenizer_config:"model:text_tokenizer/tokenizer_config.json",vocab_json:"model:text_tokenizer/vocab.json"},optional_files:{base_config:"model:fireredtts3_base/config.json",instruct_config:"model:fireredtts3_instruct/config.json"},tensors:{redae_weights:{source:"weights:",prefix:"redae"}},optional_tensors:{base_weights:{source:"weights:",prefix:"base"},campplus_weights:{source:"weights:",prefix:"campplus"},instruct_weights:{source:"weights:",prefix:"instruct"}}}]},l8={family:"fish_audio",display_name:"Fish Audio S2 Pro",description:"Fish Audio S2 Pro text-to-speech model for expressive speech across 80+ languages, with automatic language handling, inline prosody/emotion controls, and rapid voice cloning from short reference samples.",category:"tts",status:"supported",tasks:["tts","clone"],modes:["offline","streaming"],languages:["80+ languages"],capabilities:{clone:["speaker_reference"]},runtime:{tags:["gguf"]},options:{request:[{name:"reference_text",type:"string",description:"Reference transcript; required with inline reference audio.",required:!1},{name:"multi_reference_cond",type:"string",description:'Fish Audio ordered JSON array of reference conditioning pairs for one generated speaker: [{"audio":"ref1.wav","text":"Transcript one."},{"audio":"ref2.wav","text":"Transcript two."}]. This is not a multi-speaker dialogue routing option.',required:!1},{name:"max_tokens",type:"int",description:"Maximum Fish Audio semantic tokens to generate; default 1024. Zero selects the default token budget.",required:!1,min:0,default:1024},{name:"text_chunk_size",type:"int",description:"Maximum characters per generated text chunk; default 200.",required:!1,min:1,default:200},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode; default word_budget.",preset:"text_chunk_mode_full",required:!1,default:"word_budget"},{name:"top_p",type:"float",description:"Top-p sampling value in (0, 1]; default 0.8.",required:!1,min:0,max:1,default:.8},{name:"top_k",type:"int",description:"Top-k sampling value; default 30.",required:!1,min:1,default:30},{name:"temperature",type:"float",description:"Semantic-token sampling temperature in (0, 2); default 0.8.",required:!1,min:0,max:2,default:.8},{name:"seed",type:"int",description:"Sampling seed for reproducible output; omitted uses a random seed.",required:!1,min:0}],session:[{name:"lora",type:"path",description:"Prepared Fish Speech adapter checkpoint; merged into slow/fast decoder and embedding weights at session creation. Codec weights are unchanged.",required:!1},{name:"lora_scale",type:"float",description:"Multiplier for the adapter's alpha/r scaling; default 1.",required:!1,default:1},{name:"mem_saver",type:"bool",description:"Release cached AR runtime graphs after each request; default false.",required:!1,default:!1},{name:"reference_cache_slots",type:"int",description:"Prepared reference-audio cache slots; default 1.",required:!1,min:0,default:1},{name:"weight_type",type:"enum",description:"AR matmul weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"codec_weight_type",type:"enum",description:"Codec conv/matmul weight storage type; default native.",preset:"weight_type_codec_q8",required:!1,default:"native"},{name:"codec_encoder_bf16_compute",type:"bool",description:"Use BF16 reference-encoder arithmetic on CUDA with F16/BF16 codec weights; default false. Decoding is unchanged.",required:!1,default:!1},{name:"ar_graph_arena_mb",type:"int",description:"AR runtime graph arena size in MiB; default 512.",required:!1,min:1,default:512},{name:"ar_weight_context_mb",type:"int",description:"AR weight context size in MiB; default 32.",required:!1,min:1,default:32},{name:"codec_graph_arena_mb",type:"int",description:"Codec encode/decode graph arena size in MiB; default 512.",required:!1,min:1,default:512},{name:"codec_weight_context_mb",type:"int",description:"Codec weight context size in MiB; default 32.",required:!1,min:1,default:32}],load:[]},ui:{recommended_package:"fish_audio_s2_pro_q8_0",tags:["TTS","Clone","GGUF"],docs:["docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"fish_audio_s2_pro_q8_0",display_name:"Fish Audio S2 Pro Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Fish-Audio-S2-Pro-GGUF",files:["Fish-Audio-S2-Pro-GGUF/fish-audio-s2-pro-q8_0.gguf"],strip_prefix:"Fish-Audio-S2-Pro-GGUF"},{id:"fish_audio_s2_pro_bf16",display_name:"Fish Audio S2 Pro BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"Fish-Audio-S2-Pro-GGUF",files:["Fish-Audio-S2-Pro-GGUF/fish-audio-s2-pro-bf16.gguf"],strip_prefix:"Fish-Audio-S2-Pro-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{model_weights:{source:"weights:",prefix:"model_weights"},codec_weights:{source:"weights:",prefix:"codec_weights"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{model_weights:"model:model_audio_cpp.safetensors.index.json",codec_weights:"model:codec.safetensors"}}]},c8={family:"fish_drama3",display_name:"Fish Audio Drama 3",description:"Fish Audio Drama 3 native MoE speech generation, voice cloning, and continuation.",category:"tts",status:"experimental",tasks:["tts","clone"],modes:["offline","streaming"],languages:["auto"],capabilities:{tts:["long_form"],clone:["speaker_reference"]},runtime:{tags:["gguf"]},options:{request:[{name:"encode_reference_only",type:"bool",description:"Prepare reference VQ codes without generating speech. Use the task API to receive drama3_reference_v1 acoustic-token artifacts.",required:!1,default:!1},{name:"reference_text",type:"string",description:"Transcript of inline reference audio.",required:!1},{name:"multi_reference_cond",type:"string",description:"Ordered references as JSON: [{text, audio_path or vq_codes}]. Speaker tags 0..15 select voices.",required:!1},{name:"references",type:"string",description:"Alias of multi_reference_cond.",required:!1},{name:"previous_takes",type:"string",description:"Continuation/edit history as a JSON array of {text, vq_codes or audio_path}; a string generates that earlier take first.",required:!1},{name:"previous_takes_file",type:"string",description:"JSON history file containing a take object or an ordered array of earlier takes. Avoids the Windows command-line length limit for VQ grids.",required:!1},{name:"max_tokens",type:"int",description:"Maximum generated acoustic frames per text chunk (about 21.5 frames/second).",required:!1,min:1,default:1024},{name:"text_chunk_size",type:"int",description:"Maximum characters per long-form chunk.",required:!1,min:1,default:128},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode.",required:!1,preset:"text_chunk_mode_full",default:"tag_aware"},{name:"temperature",type:"float",description:"Main and residual sampling temperature. Zero makes the initial draws greedy; semantic repeat redraws retain the fixed Drama 3 RAS settings.",required:!1,min:0,default:1},{name:"top_p",type:"float",description:"Inclusive nucleus cutoff before top-k filtering, matching Drama 3.",required:!1,min:0,max:1,default:.9},{name:"top_k",type:"int",description:"Top-k candidate count. The default 4097 keeps every candidate (no cap), as Fish's Drama 3 Space does; 30 can stall in long silences.",required:!1,min:1,default:4097},{name:"seed",type:"int",description:"Reproducible native sampling seed.",required:!1,min:0}],session:[{name:"perf_mode",type:"enum",description:"AR decode preset. cuda_perf enables fused MoE, 256-row attention buckets and device sampling. F16 KV storage, codec batching/overlap and prefill-cache defaults remain unchanged in both modes. Explicit session options override the preset.",required:!1,values:["off","cuda_perf"],default:"off"},{name:"fused_moe",type:"bool",description:"Fuse cached backbone MoE routing and SwiGLU activations. Fused arithmetic may change sampled output; prompt prefill is unchanged.",required:!1,default:!1},{name:"kv_cache_alignment",type:"int",description:"Cached decode attention prefix bucket size. Values above 1 retain all history while skipping unused KV capacity; execution shapes may change numerical results.",required:!1,min:1,default:1},{name:"kv_cache_type",type:"enum",description:"Storage precision for full-attention backbone KV caches.",required:!1,values:["f32","f16"],default:"f16"},{name:"backbone_prefill_cache_mb",type:"int",description:"Bounded cache of backbone prefill graphs, in MiB. Reuses exact shapes and their CUDA captures. One active graph is retained even if larger than this budget. Zero retains only the active graph.",required:!1,min:0,max:4096,default:256},{name:"tower_prefill_cache_mb",type:"int",description:"Bounded cache of audio-tower prefill graphs, in MiB. Reuses exact shapes and their CUDA captures. Zero disables it.",required:!1,min:0,max:4096,default:256},{name:"codec_batch_frames",type:"int",description:"Streaming codec batch ceiling. Starts at one frame and grows to this size; partial final batches are flushed. Offline decoding is unchanged.",required:!1,min:1,default:4},{name:"codec_async_decode",type:"bool",description:"Overlap streaming codec decoding with AR generation on the dedicated codec backend. Uses a bounded queue and waits for all audio before completing the request.",required:!1,default:!0},{name:"device_sampling",type:"bool",description:"Enable tower decode and codebook sampling in one cached backend graph. Disabled by default; enabled by cuda_perf unless explicitly overridden. Uses F32 probabilities; sampled outputs may differ from the host sampler.",required:!1,default:!1},{name:"profile_first_audio",type:"bool",description:"Emit first-audio stage timings to stderr for performance diagnosis. Disabled by default.",required:!1,default:!1},{name:"context_length",type:"int",description:"Cache capacity for prompt plus generated frames; includes references and history.",required:!1,min:1,default:2048},{name:"cpu_expert_layers",type:"int",description:"Number of the 40 expert banks kept and evaluated on CPU; use 4 for a 24 GB profile or 24 for a 16 GB profile. Dense layers and the tower use the selected backend.",required:!1,min:0,max:40,default:4},{name:"disk_experts",type:"bool",description:"Read routed expert weights from GGUF on demand into a bounded cache instead of keeping full expert banks resident. Trades speed for memory; default false.",required:!1,default:!1},{name:"pin_experts",type:"bool",description:"Keep full expert banks in pinned host RAM for direct cache-miss uploads. Requires disk_experts and pinned host-buffer support; default false.",required:!1,default:!1},{name:"expert_cache_size",type:"int",description:"Resident expert slots per layer in disk_experts mode; 8 to 256. Larger caches trade memory for fewer disk reads; ignored in resident mode.",required:!1,min:8,max:256,default:32},{name:"disk_expert_read_threads",type:"int",description:"Host workers for copying selected GGUF experts into staging when disk_experts is enabled and pin_experts is false. Default 1 preserves serial reads; values above 1 use OpenMP or Apple dispatch.",required:!1,min:1,max:64,default:1},{name:"codec_encoder_f32_accumulation",type:"bool",description:"Use F32 accumulation for F16 reference-encoder GEMMs on Vulkan. Try this if voice cloning produces incomplete speech or reaches the token limit. Other backends and codec decoding are unchanged.",required:!1,default:!1},{name:"codec_encoder_bf16_compute",type:"bool",description:"Use BF16 reference-encoder arithmetic on CUDA with F16/BF16 codec weights; default true. Decoding is unchanged.",required:!1,default:!0},{name:"codec_encoder_chunk_samples",type:"int",description:"Reference-encoder convolution chunk size in samples at the codec sample rate. Use 0 for full encoding or a positive multiple of 512; default 0.",required:!1,min:0,default:0},{name:"codec_backend",type:"enum",description:"Run the codec on the selected backend or on CPU.",required:!1,values:["same","cpu"],default:"same"}],load:[]},ui:{recommended_package:"fish_drama3_q4_experts_q8_backbone",tags:["TTS","Clone","GGUF"],docs:["docs/models/fish_drama3.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"Jmica/Drama-3-GGUF",revision:"main",gated:!1}},packages:[{id:"fish_drama3_q4_experts_q8_backbone",display_name:"Drama 3 Q4_K experts / Q8_0 backbone",description:"Mixed quantization with Q4_K routed experts, Q8_0 backbone matrices, and FP16 audio tower/codec.",default:!0,format:"gguf",precision:"q4_k",target_directory:"Drama-3-GGUF",files:["drama-3-backbone-8bit-experts-Q4_K_S.gguf"]},{id:"fish_drama3_q3_experts_q8_backbone",display_name:"Drama 3 Q3_K experts / Q8_0 backbone",description:"Mixed quantization with Q3_K routed experts, Q8_0 backbone matrices, and FP16 audio tower/codec. Experimental delivery quality.",format:"gguf",precision:"q3_k_s",target_directory:"Drama-3-GGUF",files:["drama-3-backbone-8bit-experts-Q3_K_S.gguf"]},{id:"fish_drama3_q2_experts_q8_backbone",display_name:"Drama 3 Q2_K experts / Q8_0 backbone",description:"Mixed quantization with Q2_K routed experts, Q8_0 backbone matrices, and FP16 audio tower/codec. Use the documented CPU offload settings for smaller GPUs.",format:"gguf",precision:"q2_k",target_directory:"Drama-3-GGUF",files:["drama-3-backbone-8bit-experts-Q2_K.gguf"]},{id:"fish_drama3_q4_backbone",display_name:"Drama 3 Q4_K experts / Q4_K backbone",description:"Q4_K routed experts and backbone matrices, Q4_0 text embedding, and FP16 audio tower/codec. Experimental delivery quality.",format:"gguf",precision:"q4_k",target_directory:"Drama-3-GGUF",files:["drama-3-backbone-4bit-experts-Q4_K_S.gguf"]},{id:"fish_drama3_small_iq3_xxs",display_name:"Drama3-small IQ3_XXS",format:"gguf",precision:"iq3_xxs",target_directory:"Drama3-small-GGUF",files:["drama3-small-IQ3_XXS.gguf"],download:{kind:"huggingface_snapshot",repo:"pentacoxian-dev/drama3-small-GGUF",revision:"main",gated:!1}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{model_weights:{source:"weights:",prefix:"model_weights"},codec_weights:{source:"weights:",prefix:"codec_weights"}}}],schema_version:1,dependencies:[]},d8={schema_version:1,family:"fun_asr_nano",display_name:"Fun-ASR-Nano",description:"Offline multilingual speech recognition with the FunAudioLLM Fun-ASR-Nano-2512 model.",category:"asr",status:"wip",tasks:["asr"],modes:["offline"],languages:["auto","zh","en","ja"],capabilities:{},options:{request:[{name:"language",type:"string",description:"Recognition language, or auto to let the model infer it.",required:!1,default:"auto"},{name:"enable_itn",type:"bool",description:"Enable inverse text normalization in the transcription prompt.",required:!1,default:!0},{name:"max_tokens",type:"int",description:"Maximum number of generated transcript tokens.",required:!1,min:1,default:512},{name:"audio_chunk_mode",type:"enum",description:"Audio chunking mode: auto, fixed, or none.",values:["auto","fixed","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Fixed chunk duration in seconds. Must be finite and positive, rounding to at least one input sample.",required:!1,default:30}],session:[{name:"weight_type",type:"enum",description:"Shared model weight storage type.",preset:"weight_type_full",required:!1,default:"native"},{name:"encoder_weight_type",type:"enum",description:"Encoder matmul storage; inherits weight_type when omitted.",required:!1,preset:"weight_type_full"},{name:"adaptor_weight_type",type:"enum",description:"Adaptor matmul storage; inherits weight_type when omitted.",required:!1,preset:"weight_type_full"},{name:"decoder_weight_type",type:"enum",description:"Decoder matmul storage. Without an explicit override, CUDA promotes shared native/f16/q8_0 storage to bf16; other backends inherit weight_type.",required:!1,preset:"weight_type_full"},{name:"encoder_graph_arena_mb",type:"int",description:"Encoder graph metadata arena. Size in MiB; must be positive.",required:!1,min:1,default:512},{name:"adaptor_graph_arena_mb",type:"int",description:"Adaptor graph metadata arena. Size in MiB; must be positive.",required:!1,min:1,default:128},{name:"decoder_prefill_graph_arena_mb",type:"int",description:"Decoder prefill graph metadata arena. Size in MiB; must be positive.",required:!1,min:1,default:256},{name:"decoder_decode_graph_arena_mb",type:"int",description:"Decoder cached-step graph metadata arena. Size in MiB; must be positive.",required:!1,min:1,default:128},{name:"decoder_weight_context_mb",type:"int",description:"Decoder weight metadata context. Size in MiB; must be positive.",required:!1,min:1,default:32}],load:[]},runtime:{tags:["gguf","server","cuda","metal","cpu"]},packages:[{id:"fun_asr_nano_2512_q8_0",display_name:"Fun-ASR-Nano-2512 Q8_0 GGUF",description:"Standalone audio.cpp GGUF built from the pinned official checkpoint; governed by the FunASR Model Open Source License Agreement v1.1.",default:!0,format:"gguf",precision:"q8_0",target_directory:"Fun-ASR-Nano-2512-GGUF",files:["fun-asr-nano-2512-q8_0.gguf"],download:{kind:"huggingface_snapshot",repo:"FunAudioLLM/Fun-ASR-Nano-2512-GGUF",revision:"ce72677f84900f0dc57f498ace253bfb3c9155b6",gated:!1}},{id:"fun_asr_nano_2512_f16",display_name:"Fun-ASR-Nano-2512 F16 GGUF",description:"Standalone audio.cpp GGUF built from the pinned official checkpoint; governed by the FunASR Model Open Source License Agreement v1.1.",format:"gguf",precision:"f16",target_directory:"Fun-ASR-Nano-2512-GGUF",files:["fun-asr-nano-2512-f16.gguf"],download:{kind:"huggingface_snapshot",repo:"FunAudioLLM/Fun-ASR-Nano-2512-GGUF",revision:"ce72677f84900f0dc57f498ace253bfb3c9155b6",gated:!1}},{id:"fun_asr_nano_2512_safetensors",display_name:"Fun-ASR-Nano-2512 HF Safetensors",description:"Official checkpoint governed by the FunASR Model Open Source License Agreement v1.1.",format:"safetensors",precision:"native",target_directory:"Fun-ASR-Nano-2512-hf",files:["chat_template.jinja","config.json","generation_config.json","model.safetensors","processor_config.json","tokenizer.json","tokenizer_config.json"],download:{kind:"huggingface_snapshot",repo:"FunAudioLLM/Fun-ASR-Nano-2512-hf",revision:"854d88f94205cd17d2afdb24332130d86fbe654a",gated:!1}}],dependencies:[],ui:{recommended_package:"fun_asr_nano_2512_q8_0",tags:["ASR","GGUF"],docs:["docs/asr.md","docs/gguf.md"],summary:"Offline Fun-ASR-Nano transcription from official safetensors or audio.cpp GGUF."},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",processor_config:"model:processor_config.json",tokenizer_json:"model:tokenizer.json"},optional_files:{chat_template_jinja:"model:chat_template.jinja",tokenizer_config:"model:tokenizer_config.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",generation_config:"model:generation_config.json",processor_config:"model:processor_config.json",tokenizer_json:"model:tokenizer.json"},optional_files:{chat_template_jinja:"model:chat_template.jinja",tokenizer_config:"model:tokenizer_config.json"},tensors:{weights:"model:model.safetensors"}}]},u8={schema_version:1,family:"gigaam_asr",display_name:"GigaAM ASR",description:"GigaAM v3 and Multilingual Conformer speech recognition with CTC or RNN-T decoding.",category:"asr",status:"supported",tasks:["asr"],modes:["offline"],languages:["ru","kk","ky","uz","en"],capabilities:{asr:["word_timestamps","vad_chunking"]},dependencies:[],options:{request:[{name:"return_timestamps",type:"bool",description:"Return word timestamps derived from decoder token emission frames.",required:!1,default:!1},{name:"audio_chunk_mode",type:"enum",description:"Long-form audio chunking mode.",values:["auto","fixed","quiet_energy","vad","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Maximum duration of each audio chunk in seconds.",required:!1,min:.02,max:25,default:25}],session:[{name:"vad_model_path",type:"path",description:"Offline VAD model used only with audio_chunk_mode=vad.",required:!1,default:""},{name:"weight_type",type:"enum",description:"Weight storage type.",preset:"weight_type_full",required:!1,default:"native"}],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"gigaam_v3_ctc_f16",tags:["ASR","GGUF"],docs:["docs/models/gigaam_asr.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"gigaam_v3_ctc_f16",display_name:"GigaAM v3 CTC F16 GGUF",default:!0,format:"gguf",precision:"f16",target_directory:"GigaAM-ASR-GGUF",files:["GigaAM-ASR-GGUF/gigaam-v3-ctc-f16.gguf"],strip_prefix:"GigaAM-ASR-GGUF"},{id:"gigaam_v3_rnnt_f16",display_name:"GigaAM v3 RNN-T F16 GGUF",format:"gguf",precision:"f16",target_directory:"GigaAM-ASR-GGUF",files:["GigaAM-ASR-GGUF/gigaam-v3-rnnt-f16.gguf"],strip_prefix:"GigaAM-ASR-GGUF"},{id:"gigaam_v3_e2e_ctc_f16",display_name:"GigaAM v3 E2E CTC F16 GGUF",format:"gguf",precision:"f16",target_directory:"GigaAM-ASR-GGUF",files:["GigaAM-ASR-GGUF/gigaam-v3-e2e-ctc-f16.gguf"],strip_prefix:"GigaAM-ASR-GGUF"},{id:"gigaam_v3_e2e_rnnt_f16",display_name:"GigaAM v3 E2E RNN-T F16 GGUF",format:"gguf",precision:"f16",target_directory:"GigaAM-ASR-GGUF",files:["GigaAM-ASR-GGUF/gigaam-v3-e2e-rnnt-f16.gguf"],strip_prefix:"GigaAM-ASR-GGUF"},{id:"gigaam_multilingual_ctc_f32",display_name:"GigaAM Multilingual CTC F32 GGUF",format:"gguf",precision:"f32",target_directory:"GigaAM-ASR-GGUF",files:["GigaAM-ASR-GGUF/gigaam-multilingual-ctc-f32.gguf"],strip_prefix:"GigaAM-ASR-GGUF"},{id:"gigaam_multilingual_ctc_f16",display_name:"GigaAM Multilingual CTC F16 GGUF",format:"gguf",precision:"f16",target_directory:"GigaAM-ASR-GGUF",files:["GigaAM-ASR-GGUF/gigaam-multilingual-ctc-f16.gguf"],strip_prefix:"GigaAM-ASR-GGUF"},{id:"gigaam_multilingual_large_ctc_f32",display_name:"GigaAM Multilingual Large CTC F32 GGUF",format:"gguf",precision:"f32",target_directory:"GigaAM-ASR-GGUF",files:["GigaAM-ASR-GGUF/gigaam-multilingual-large-ctc-f32.gguf"],strip_prefix:"GigaAM-ASR-GGUF"},{id:"gigaam_multilingual_large_ctc_f16",display_name:"GigaAM Multilingual Large CTC F16 GGUF",format:"gguf",precision:"f16",target_directory:"GigaAM-ASR-GGUF",files:["GigaAM-ASR-GGUF/gigaam-multilingual-large-ctc-f16.gguf"],strip_prefix:"GigaAM-ASR-GGUF"}],sources:[{format:"safetensors",roots:{model:"."},files:{config:"model:config.json"},tensors:{weights:"model:model.safetensors"}},{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:"weights:"}}]},f8={schema_version:1,family:"glm_tts",display_name:"GLM-TTS",description:"Community Chinese-English zero-shot speech synthesis and voice cloning with native Llama, Whisper-VQ, Flow/DiT, CAMPPlus, and HiFT execution.",category:"tts",status:"community",tasks:["tts","clone"],modes:["offline"],languages:["zh","en"],capabilities:{clone:["speaker_reference"]},options:{request:[{name:"reference_text",type:"string",description:"Transcript matching the reference voice audio; required by GLM-TTS zero-shot synthesis.",required:!0},{name:"max_tokens",type:"int",description:"Maximum generated speech tokens; otherwise the official 2x-to-20x text-token bounds are used. Nonpositive values select the automatic text-derived budget.",required:!1,default:0},{name:"temperature",type:"float",description:"Speech-token temperature; official default 1.0. Nonpositive values select greedy decoding.",required:!1,default:1},{name:"top_k",type:"int",description:"Speech-token top-k; official default 25. Nonpositive values disable top-k filtering.",required:!1,default:25},{name:"top_p",type:"float",description:"Speech-token nucleus threshold; official default 0.8. Out-of-range values are not rejected by the parser.",required:!1,default:.8},{name:"seed",type:"int",description:"Speech-token, Flow-noise, and HiFT seed.",required:!1,min:0,default:0},{name:"num_inference_steps",type:"int",description:"Flow Euler steps; defaults to model config, usually official default 10.",required:!1,min:1},{name:"flow_guidance_scale",type:"float",description:"Flow classifier-free guidance rate; defaults to model config, usually official default 0.7. Negative values are accepted and enter the CFG formula.",required:!1},{name:"flow_noise_file",type:"path",description:"Optional raw float32 initial Flow noise for parity tests.",required:!1},{name:"hift_source_random_file",type:"path",description:"Optional raw float32 HiFT phase-uniform and Gaussian values for parity tests.",required:!1},{name:"hift_prior_noise_count",type:"int",description:"Torch RNG value offset used before HiFT source generation; default 0.",required:!1,min:0,default:0}],session:[{name:"weight_type",type:"enum",description:"Requested component weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"mem_saver",type:"bool",description:"Release reference-only encoders after caching the voice while keeping the generation path warm; default false.",required:!1,default:!1},{name:"aggressive_mem_saver",type:"bool",description:"Also release Llama, Flow, and HiFT after every stage. Minimizes VRAM but reloads the generation path on every request; default false.",required:!1,default:!1},{name:"reference_cache_slots",type:"int",description:"Prepared reference-audio cache slots; default 1. Use 0 to disable.",required:!1,min:0,default:1},{name:"llama_weight_context_mb",type:"int",description:"Llama weight metadata context in MiB; default 8192.",required:!1,min:1,default:8192},{name:"constant_context_mb",type:"int",description:"Llama constant tensor context in MiB; default 256.",required:!1,min:1,default:256}],load:[]},runtime:{tags:["gguf"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{llama_config:"model:llm/config.json",llama_generation_config:"model:llm/generation_config.json",speech_tokenizer_config:"model:speech_tokenizer/config.json",speech_tokenizer_preprocessor:"model:speech_tokenizer/preprocessor_config.json",tokenizer_config:"model:vq32k-phoneme-tokenizer/tokenizer_config.json",tokenizer_vocab:"model:vq32k-phoneme-tokenizer/tokenizer_vocab.json",tokenizer_merges:"model:vq32k-phoneme-tokenizer/tokenizer_merges.txt",flow_config:"model:flow/config.yaml",audio_cpp_config:"model:audio_cpp_config.json"},tensors:{llama_weights:{source:"weights:",prefix:"llama_weights"},speech_tokenizer_weights:{source:"weights:",prefix:"speech_tokenizer_weights"},flow_weights:{source:"weights:",prefix:"flow_weights"},hift_weights:{source:"weights:",prefix:"hift_weights"},campplus_weights:{source:"weights:",prefix:"campplus_weights"}}},{format:"safetensors",roots:{model:"."},files:{llama_config:"model:llm/config.json",llama_generation_config:"model:llm/generation_config.json",speech_tokenizer_config:"model:speech_tokenizer/config.json",speech_tokenizer_preprocessor:"model:speech_tokenizer/preprocessor_config.json",tokenizer_config:"model:vq32k-phoneme-tokenizer/tokenizer_config.json",tokenizer_vocab:"model:vq32k-phoneme-tokenizer/tokenizer_vocab.json",tokenizer_merges:"model:vq32k-phoneme-tokenizer/tokenizer_merges.txt",flow_config:"model:flow/config.yaml",audio_cpp_config:"model:audio_cpp_config.json"},tensors:{llama_weights:"model:llm/model.safetensors.index.json",speech_tokenizer_weights:"model:speech_tokenizer/model.safetensors",flow_weights:"model:flow/model.safetensors",hift_weights:"model:hift/model.safetensors",campplus_weights:"model:frontend/campplus.safetensors"}}],packages:[{id:"glm_tts_q8_0",display_name:"GLM-TTS mixed Q8_0/F16 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"GLM-TTS-Q8",files:["Text to audio (TTS)/GLM-TTS_Q8.gguf"],download:{kind:"huggingface_snapshot",repo:"mirek190/audio.cpp"}}],dependencies:[],ui:{recommended_package:"glm_tts_q8_0",tags:["TTS","Clone","GGUF"],docs:["docs/models/glm_tts.md","docs/reports/glm_tts_validation.md","docs/gguf.md"]}},p8={schema_version:1,family:"gradium_phonon",display_name:"Gradium Phonon",description:"Gradium's Phonon text-to-speech: a small flow-matching language model with a Mimi decoder, a descendant of Kyutai's pocket-tts, for real-time local synthesis on CPU and GPU with prepared voices.",category:"tts",status:"experimental",tasks:["tts"],modes:["offline","streaming"],languages:["en"],runtime:{tags:["gguf"]},capabilities:{tts:["built_in_voices","long_form"]},options:{request:[{name:"frames_after_eos",type:"int",description:"Frames kept after EOS, counting the EOS frame; -1 keeps 4 for texts of up to four words and 2 otherwise, as the reference does.",required:!1,min:-1,default:-1},{name:"max_frames",type:"int",description:"Maximum generated audio frames; zero estimates the cap from text length. Captured during session preparation.",required:!1,min:0,default:0},{name:"text_chunk_tokens",type:"int",description:"Tokenizer tokens per text chunk; must be positive, default 50. Set during preparation and overridable per request.",required:!1,min:1,default:50},{name:"temperature",type:"float",description:"Positive flow noise temperature. Captured during session preparation.",required:!1,default:.3},{name:"seed",type:"int",description:"Noise seed; omitted chooses a random seed. Captured during session preparation.",required:!1,min:0,max:4294967295},{name:"noise_clamp",type:"float",description:"Noise clamp; a negative value disables clamping. Captured during session preparation.",required:!1,default:-1},{name:"eos_threshold",type:"float",description:"EOS detection threshold on the EOS logit. Captured during session preparation.",required:!1,default:4},{name:"noise_file",type:"path",description:"Precomputed noise schedule, raw float32 [frames, 32], used as given. Captured during session preparation.",required:!1},{name:"voice_embedding_file",type:"path",description:"Voice file: a speaker_wavs latent file such as those of gradium/phonon-voices, or an exported voice state. Captured during session preparation.",required:!1},{name:"text_chunk_size",type:"int",description:"Optional per-request character chunk size; otherwise use sentence/token budgeting.",required:!1},{name:"export_voice_state_file",type:"path",description:"Export the prepared voice state during session preparation.",required:!1}],session:[{name:"voice_state_cache_slots",type:"int",description:"Cached prepared voice states; zero disables reuse.",required:!1,min:0,default:4},{name:"offline_graph_capacity_mode",type:"enum",description:"Offline graph capacity policy; CPU/Metal default tiered, other backends double.",required:!1,values:["fixed","double","tiered","grow"]},{name:"prompt_graph_capacity",type:"int",description:"Optional reserved prompt capacity.",required:!1,min:1},{name:"generation_graph_capacity",type:"int",description:"Optional reserved generation capacity.",required:!1,min:1},{name:"weight_type",type:"enum",description:"Shared matmul weight storage; component matmul settings inherit it. Convolution storage remains independently native unless overridden.",required:!1,preset:"weight_type_full"},{name:"matmul_weight_type",type:"enum",description:"Weight storage type; component-specific settings inherit weight_type.",required:!1,preset:"weight_type_full"},{name:"conv_weight_type",type:"enum",description:"Convolution weight storage.",required:!1,preset:"weight_type_conv",default:"native"},{name:"weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:64},{name:"flow_weight_context_mb",type:"int",description:"Flow weight context in MiB; inherits gradium_phonon.weight_context_mb when omitted.",required:!1,min:1},{name:"mimi_decoder_weight_context_mb",type:"int",description:"Mimi decoder weight context in MiB; inherits gradium_phonon.weight_context_mb when omitted.",required:!1,min:1},{name:"flow_weights_view_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:256},{name:"flow_step_graph_arena_mb",type:"int",description:"Flow-step host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:256},{name:"mimi_conv_graph_arena_mb",type:"int",description:"Mimi convolution host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:32},{name:"mimi_transformer_graph_arena_mb",type:"int",description:"Mimi transformer host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:96},{name:"mimi_tail_graph_arena_mb",type:"int",description:"Mimi tail host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:512},{name:"mimi_full_chunk_frames",type:"int",description:"Full-sequence decoder chunk frames.",required:!1,min:1,default:90},{name:"mimi_stage2_chunk_frames",type:"int",description:"Second-stage decoder chunk frames.",required:!1,min:1,default:900},{name:"use_full_mimi",type:"bool",description:"Use full-sequence Mimi decoding.",required:!1,default:!0}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"gradium/phonon-31m-en-audiocpp",revision:"main",gated:!1}},packages:[{id:"gradium_phonon_31m_en_q8_0",display_name:"Phonon 31m English Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"phonon-31m-en",files:["phonon-31m-en-q8_0.gguf","default-voice.safetensors"]},{id:"gradium_phonon_31m_en_safetensors",display_name:"Phonon 31m English Safetensors",format:"safetensors",precision:"native",target_directory:"phonon-31m-en-safetensors",files:["config.json","tokenizer.model","model.safetensors","default-voice.safetensors"],download:{kind:"huggingface_snapshot",repo:"gradium/phonon-31m-en",revision:"52433c46975bfa13144c56204c9f4ee1c5b148aa",gated:!1}}],dependencies:[],ui:{recommended_package:"gradium_phonon_31m_en_q8_0",default_voice:"default",builtin_voices:["default"],tags:["TTS","GGUF"],docs:["docs/models/gradium_phonon.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer:"model:tokenizer.model"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer:"model:tokenizer.model"},tensors:{weights:"model:model.safetensors"}}]},m8={family:"granite5asr",display_name:"Granite Speech 5.0 470M TurboCTC",description:"IBM Granite Speech 5.0 TurboCTC 470M parameter Conformer CTC model. The current checkpoint transcribes English, French, German, Spanish, Portuguese, Italian, and Japanese with punctuation and capitalization. An older English-only checkpoint still loads.",category:"asr",status:"supported",tasks:["asr"],modes:["offline","streaming"],languages:["en","fr","de","es","pt","it","ja"],capabilities:{asr:["vad_chunking","partial_results","word_timestamps"]},options:{request:[{name:"language",type:"string",description:"Accepted and ignored. Granite has no language input. A result is labelled en unless decoding emits a trained language token such as <|fr|>.",required:!1,default:"en"},{name:"audio_chunk_mode",type:"enum",description:"Offline chunk mode: auto, fixed, vad, or none. VAD requires a regular model file; otherwise fixed chunks are used.",values:["auto","fixed","vad","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Positive maximum audio chunk duration for fixed and VAD chunking.",required:!1,min:.001,default:30}],session:[{name:"weight_type",type:"enum",description:"Shared model weight storage type.",preset:"weight_type_full",required:!1,default:"native"},{name:"encoder_graph_arena_mb",type:"int",description:"Encoder graph arena size in MB. Positive MiB allocation; invalid/nonpositive values resolve to 1024 MiB.",required:!1,min:1,default:1024},{name:"vad_model_path",type:"string",description:"Path to a VAD weight file of any built-in VAD family (e.g. silero_vad_16k.safetensors), not a directory; VAD runs only when this path is a regular file.",required:!1}],load:[]},runtime:{tags:["gguf","server","stream","cuda","metal","cpu"]},ui:{recommended_package:"granite5asr_q8_0",tags:["ASR","GGUF","Stream"],docs:["docs/models/granite5asr.md","docs/asr.md","docs/gguf.md"],summary:"IBM Granite Speech 5.0 470M TurboCTC multilingual transcription."},package_defaults:{download:{kind:"huggingface_snapshot",repo:"ibm-granite/granite-speech-5.0-470m-turboctc",revision:"main",gated:!1}},packages:[{id:"granite5asr_q8_0",display_name:"Granite Speech 5.0 470M TurboCTC Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Granite-Speech-5.0-470M-TurboCTC-GGUF",files:["Granite-Speech-5.0-470M-TurboCTC-GGUF/granite-speech-5.0-470m-turboctc-q8_0.gguf"],strip_prefix:"Granite-Speech-5.0-470M-TurboCTC-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},{id:"granite5asr_safetensors",display_name:"Granite Speech 5.0 470M TurboCTC Native Safetensors",format:"safetensors",precision:"bfloat16",target_directory:"granite5asr",files:["config.json","tokenizer.json","model.safetensors"]}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json"},optional_files:{preprocessor_config:"model:preprocessor_config.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json"},optional_files:{preprocessor_config:"model:preprocessor_config.json"},tensors:{weights:"model:model.safetensors"}}]},g8={schema_version:1,family:"haas_asr",display_name:"Haas-ja-v1.0",description:"Japanese FastConformer-TDT ASR with a Kimi Delta Attention predictor, using the shared Parakeet implementation.",category:"asr",status:"community",tasks:["asr"],modes:["offline","streaming"],languages:["ja"],runtime:{tags:["gguf","stream"]},capabilities:{asr:["word_timestamps","partial_results","vad_chunking"]},options:{request:[{name:"return_timestamps",type:"bool",description:"Accepted for CLI --words-out compatibility. Word timestamps are always returned, including when false or omitted.",required:!1},{name:"max_tokens",type:"int",description:"Maximum TDT generated tokens; 0 or omitted uses the model-derived limit.",required:!1,min:0,default:0},{name:"keep_language_tags",type:"bool",description:"Keep language tag tokens in decoded text; default false.",required:!1,default:!1},{name:"audio_chunk_mode",type:"enum",description:"Offline audio chunking mode. fixed selects overlapping long-form windows regardless of offline_mode; vad uses the configured VAD model (Silero by default) to skip silence; auto follows offline_mode. Offline input is downmixed and resampled as needed.",values:["auto","fixed","vad","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"VAD maximum chunk duration; omitted inherits the session duration. Fixed/long_form windows use the session setting, not this request override.",required:!1,min:.001}],session:[{name:"weight_type",type:"enum",description:"Shared matmul weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"matmul_weight_type",type:"enum",description:"Encoder and decoder matmul weight storage type; defaults to weight_type, which defaults to native. Q8_0 measured 1.79x faster on the tested CPU and changed roughly 8 percent of transcripts without moving aggregate word error rate.",preset:"weight_type_full",required:!1},{name:"conv_weight_type",type:"enum",description:"Convolution weight storage type; default native.",preset:"weight_type_conv",required:!1,default:"native"},{name:"perf_mode",type:"enum",description:"Encoder attention implementation. Default off uses the validated relative-attention path; flash_attention enables the fused implementation, which was numerically validated but slower on the tested hardware.",preset:"perf_mode_flash_attention",required:!1,default:"off"},{name:"weight_context_mb",type:"int",description:"Weight context arena size in MiB; default 3072.",required:!1,min:1,default:3072},{name:"encoder_graph_arena_mb",type:"int",description:"Encoder graph arena size in MiB; default 1024.",required:!1,min:1,default:1024},{name:"decoder_graph_arena_mb",type:"int",description:"Decoder graph arena size in MiB; default 256.",required:!1,min:1,default:256},{name:"audio_chunk_duration_sec",type:"float",description:"Center-region duration for buffered streaming in seconds; default 2. Fixed context windows are re-encoded rather than cache-aware. Also sizes offline fixed/long_form windows.",required:!1,min:.001,default:2},{name:"left_context_sec",type:"float",description:"Past context included when re-encoding each buffered-streaming window in seconds; default 10. Also applies to offline fixed/long_form windows.",required:!1,min:0,default:10},{name:"right_context_sec",type:"float",description:"Future lookahead included when re-encoding each buffered-streaming window in seconds; default 2 and adds equivalent partial-result latency. Also applies to offline fixed/long_form windows.",required:!1,min:0,default:2},{name:"streaming_attention_mode",type:"enum",description:"Attention policy inside each buffered window. full_context preserves bidirectional attention over the bounded window.",values:["full_context"],required:!1,default:"full_context"},{name:"offline_mode",type:"enum",description:"Offline encoder scheduling. full_context encodes the whole utterance, long_form uses bounded overlapping windows, and auto selects long_form beyond audio_chunk_threshold_sec.",values:["full_context","long_form","auto"],required:!1,default:"full_context"},{name:"audio_chunk_threshold_sec",type:"float",description:"Duration threshold used by offline_mode=auto before switching to bounded-window long-form execution; default 30 seconds.",required:!1,min:.001,default:30},{name:"vad_model_path",type:"path",description:"VAD model path used by audio_chunk_mode=vad (any built-in VAD family); default assets/framework/models/silero_vad.",required:!1,default:"assets/framework/models/silero_vad"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"haas_ja_v1_q8_0",display_name:"Haas-ja-v1.0 Q8_0 GGUF (Japanese KDA-TDT)",format:"gguf",precision:"q8_0",target_directory:"Haas-ja-v1.0-GGUF",files:["Haas-ja-v1.0-GGUF/haas-ja-v1.0-q8_0.gguf"],strip_prefix:"Haas-ja-v1.0-GGUF",default:!0},{id:"haas_ja_v1_f16",display_name:"Haas-ja-v1.0 F16 GGUF (Japanese KDA-TDT)",format:"gguf",precision:"f16",target_directory:"Haas-ja-v1.0-GGUF",files:["Haas-ja-v1.0-GGUF/haas-ja-v1.0-f16.gguf"],strip_prefix:"Haas-ja-v1.0-GGUF",default:!1}],dependencies:[],ui:{recommended_package:"haas_ja_v1_q8_0",tags:["ASR","GGUF"],docs:["docs/models/haas.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",processor_config:"model:processor_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",processor_config:"model:processor_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"model:model.safetensors"}}]},h8={schema_version:1,family:"heartmula",display_name:"HeartMuLa",description:"Open-source music foundation model for generating complete songs from text, lyric prompts, and style tags, with controllable song structure and broad multilingual lyric conditioning.",category:"audio_generation",status:"supported",tasks:["music"],modes:["offline"],languages:["multilingual"],capabilities:{music:["lyrics","style_control"]},options:{request:[{name:"lyrics",type:"string",description:"Lyrics text.",required:!1},{name:"tags",type:"string",description:"Comma-separated music tags.",required:!1},{name:"duration_sec",type:"float",description:"Maximum generated audio duration in seconds; must be > 0 when set; default 120.",required:!1,min:0,default:120},{name:"temperature",type:"float",description:"Audio-token sampling temperature; must be > 0 when set; default 1.0.",required:!1,min:0,default:1},{name:"top_k",type:"int",description:"Audio-token top-k sampling limit; default 50. Must not exceed the active audio vocabulary size.",required:!1,min:1,default:50},{name:"guidance_scale",type:"float",description:"MuLa classifier-free guidance scale; must be > 0 when set; default 1.5.",required:!1,min:0,default:1.5},{name:"codec_duration_sec",type:"float",description:"Codec detokenization chunk duration in seconds; must be > 0 when set; default 29.76.",required:!1,min:0,default:29.76},{name:"num_inference_steps",type:"int",description:"Codec flow solver steps; default 10.",required:!1,min:1,default:10},{name:"codec_guidance_scale",type:"float",description:"Codec classifier-free guidance scale; must be > 0 when set; default 1.25.",required:!1,min:0,default:1.25},{name:"infinite_mode",type:"bool",description:"Generate long outputs by splitting lyrics into bounded HeartMuLa requests.",required:!1,default:!1},{name:"text_chunk_size",type:"int",description:"Maximum characters per text chunk in infinite mode; default 4096.",required:!1,min:1,default:4096},{name:"infinite_chunk_audio_duration_ms",type:"int",description:"Maximum generated audio duration per infinite-mode chunk in milliseconds; default 240000.",required:!1,min:1,default:24e4},{name:"seed",type:"int",description:"Generation seed for reproducible output; default 1234.",required:!1,min:0,default:1234}],session:[{name:"weight_type",type:"enum",description:"MuLa and codec weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"generator_weight_type",type:"enum",description:"MuLa music-token generator weight storage type; defaults to weight_type when set, otherwise native.",preset:"weight_type_full",required:!1},{name:"codec_weight_type",type:"enum",description:"Codec weight storage type; defaults to weight_type when set, otherwise native.",preset:"weight_type_full",required:!1},{name:"generator_weight_context_mb",type:"int",description:"MuLa music-token generator weight descriptor context size in MiB; default 32.",required:!1,min:1,default:32},{name:"codec_weight_context_mb",type:"int",description:"Codec weight descriptor context size in MiB; default 32.",required:!1,min:1,default:32},{name:"generator_constant_context_mb",type:"int",description:"MuLa music-token generator reusable constant context size in MiB; default 256.",required:!1,min:1,default:256},{name:"backbone_prefill_graph_arena_mb",type:"int",description:"MuLa music-token generator backbone prefill graph arena size in MiB; default 1536.",required:!1,min:1,default:1536},{name:"backbone_step_graph_arena_mb",type:"int",description:"MuLa music-token generator backbone cached-step graph arena size in MiB; default 1536.",required:!1,min:1,default:1536},{name:"decoder_prefill_graph_arena_mb",type:"int",description:"MuLa music-token generator decoder prefill graph arena size in MiB; default 512.",required:!1,min:1,default:512},{name:"decoder_step_graph_arena_mb",type:"int",description:"MuLa music-token generator decoder cached-step graph arena size in MiB; default 512.",required:!1,min:1,default:512},{name:"frame_embedding_graph_arena_mb",type:"int",description:"MuLa music-token generator frame-embedding graph arena size in MiB; default 512.",required:!1,min:1,default:512},{name:"flow_estimator_graph_arena_mb",type:"int",description:"Codec flow-estimator graph arena size in MiB; default 2048.",required:!1,min:1,default:2048},{name:"conditioning_graph_arena_mb",type:"int",description:"Codec conditioning graph arena size in MiB; default 512.",required:!1,min:1,default:512},{name:"scalar_decoder_graph_arena_mb",type:"int",description:"Codec scalar-decoder graph arena size in MiB; default 1536.",required:!1,min:1,default:1536},{name:"mem_saver",type:"bool",description:"Release staged runtime graphs after each request; default false.",required:!1,default:!1}],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"heartmula_q8_0",tags:["Music","GGUF"],docs:["docs/music_generation.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"heartmula_q8_0",display_name:"HeartMuLa Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"HeartMuLa-GGUF",files:["HeartMuLa-GGUF/heartmula-q8_0.gguf"],strip_prefix:"HeartMuLa-GGUF"},{id:"heartmula_f16",display_name:"HeartMuLa F16 GGUF",format:"gguf",precision:"f16",target_directory:"HeartMuLa-GGUF",files:["HeartMuLa-GGUF/heartmula-f16.gguf"],strip_prefix:"HeartMuLa-GGUF"}],dependencies:[],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{tokenizer_json:"model:tokenizer.json",generation_config:"model:gen_config.json",mula_config:"model:HeartMuLa-oss-3B/config.json",codec_config:"model:HeartCodec-oss/config.json"},tensors:{mula_weights:{source:"weights:",prefix:"mula_weights"},codec_weights:{source:"weights:",prefix:"codec_weights"}}},{format:"safetensors",roots:{model:"."},files:{tokenizer_json:"model:tokenizer.json",generation_config:"model:gen_config.json",mula_config:"model:HeartMuLa-oss-3B/config.json",codec_config:"model:HeartCodec-oss/config.json"},tensors:{mula_weights:"model:HeartMuLa-oss-3B/model.safetensors.index.json",codec_weights:"model:HeartCodec-oss/model.safetensors.index.json"}}]},_8={schema_version:1,family:"higgs_audio_stt",display_name:"Higgs Audio v3 STT",description:"Boson AI English speech-to-text model combining a Whisper Large v3 speech encoder with a Qwen decoder for robust ASR.",category:"asr",status:"supported",tasks:["asr"],modes:["offline","streaming"],languages:["en"],capabilities:{},dependencies:[],options:{request:[{name:"language",type:"string",description:"Transcript language code metadata; English is used when omitted.",required:!1},{name:"max_tokens",type:"int",description:"Maximum generated transcript tokens; default 1024.",required:!1,min:1,default:1024},{name:"enable_thinking",type:"bool",description:"Enable the model thinking prompt; default true.",required:!1,default:!0},{name:"audio_chunk_mode",type:"enum",description:"Audio chunking mode; default auto uses fixed chunks.",values:["auto","fixed","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Fixed audio chunk duration in seconds; must be > 0 when set; default 4.",required:!1,min:0,default:4}],session:[{name:"weight_type",type:"enum",description:"Shared text decoder weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"audio_encoder_weight_type",type:"enum",description:"Audio encoder convolution weight storage type; default native.",preset:"weight_type_conv",required:!1,default:"native"},{name:"text_decoder_weight_type",type:"enum",description:"Text decoder matmul weight storage type; defaults to weight_type when set, otherwise native.",preset:"weight_type_full",required:!1},{name:"audio_encoder_graph_arena_mb",type:"int",description:"Audio encoder graph arena size in MiB; default 512.",required:!1,min:1,default:512},{name:"text_decoder_prefill_graph_arena_mb",type:"int",description:"Text decoder prefill graph arena size in MiB; default 512.",required:!1,min:1,default:512},{name:"text_decoder_decode_graph_arena_mb",type:"int",description:"Text decoder cached-step graph arena size in MiB; default 256.",required:!1,min:1,default:256},{name:"text_decoder_weight_context_mb",type:"int",description:"Text decoder weight context in MiB; omitted uses 4096 on 64-bit builds or 1024 on 32-bit builds.",required:!1,min:1}],load:[]},runtime:{tags:["gguf","stream"]},ui:{recommended_package:"higgs_audio_stt_q8_0",tags:["ASR","GGUF","Stream"],docs:["docs/models/higgs_audio_stt.md","docs/asr.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"higgs_audio_stt_q8_0",display_name:"Higgs Audio v3 STT Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Higgs-Audio-v3-STT-GGUF",files:["Higgs-Audio-v3-STT-GGUF/higgs-audio-v3-stt-q8_0.gguf"],strip_prefix:"Higgs-Audio-v3-STT-GGUF"},{id:"higgs_audio_stt_f16",display_name:"Higgs Audio v3 STT F16 GGUF",format:"gguf",precision:"f16",target_directory:"Higgs-Audio-v3-STT-GGUF",files:["Higgs-Audio-v3-STT-GGUF/higgs-audio-v3-stt-f16.gguf"],strip_prefix:"Higgs-Audio-v3-STT-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",preprocessor_config:"model:preprocessor_config.json",tokenizer_config:"model:tokenizer_config.json",vocab:"model:vocab.json",merges:"model:merges.txt"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:".",whisper:"../whisper-large-v3"},files:{config:"model:config.json",generation_config:"model:generation_config.json",preprocessor_config:"whisper:preprocessor_config.json",tokenizer_config:"model:tokenizer_config.json",vocab:"model:vocab.json",merges:"model:merges.txt"},tensors:{weights:"model:model.safetensors.index.json"}}]},v8={family:"higgs_audio_tts",display_name:"Higgs Audio v3 TTS",description:"Boson AI conversational TTS model for expressive speech across 100+ languages, zero-shot voice cloning, and inline control over emotion, style, prosody, pauses, and sound effects.",category:"tts",status:"supported",tasks:["tts","clone"],modes:["offline","streaming"],languages:["100+ languages"],options:{request:[{name:"stream_frames_per_event",type:"int",description:"Streaming codec frames per event; grow starts at one and increases to this cap. Each frame is 40 ms of audio.",required:!1,min:1,default:32},{name:"stream_chunk_policy",type:"enum",description:"Streaming chunk schedule. The non-causal codec always retains ten frames of left and right context.",required:!1,values:["grow","fixed"],default:"grow"},{name:"max_tokens",type:"int",description:"Maximum generated AR tokens; zero uses the default. Must not exceed the configured context length.",required:!1,min:0,default:2048},{name:"allow_incomplete_generation",type:"bool",description:"Return generated audio with a warning instead of failing when max_tokens is reached before EOC. Audio may be truncated or contain silence/noise.",required:!1,default:!1},{name:"temperature",type:"float",description:"AR sampling temperature. Must be positive.",required:!1,default:.8},{name:"top_p",type:"float",description:"AR nucleus sampling probability. Must be positive.",required:!1,default:.8},{name:"top_k",type:"int",description:"AR top-k sampling limit.",required:!1,default:30,min:0},{name:"filter_nan_logits",type:"bool",description:"Filter NaN and infinity during greedy and stochastic top-k selection. All-invalid logits still fail.",required:!1,default:!1},{name:"repetition_penalty",type:"float",description:"Accepted for Python API compatibility; audio sampling does not consume this value. Compatibility-only, but must be finite and positive.",required:!1,default:1.1},{name:"seed",type:"int",description:"Torch sampling seed; omitted chooses a random seed.",required:!1,min:0},{name:"reference_text",type:"string",description:"Transcript accompanying reference audio.",required:!1,default:""},{name:"text_chunk_size",type:"int",description:"Framework long-form text chunk size.",required:!1,default:1024,min:1},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode.",required:!1,values:["default","tag_aware","japanese","endline"],default:"default"}],session:[{name:"reference_prefill_mode",type:"enum",description:"Cached-reference prefill attention. auto preserves existing behavior. Try exact if repeated voice-cloning requests produce excessive repetition or unexpectedly long, mostly silent output. May increase prefill time; not a general generation-quality fix. Full-prompt prefill and AR decoding are unchanged.",required:!1,values:["auto","exact"],default:"auto"},{name:"weight_type",type:"enum",description:"Weight storage type.",required:!1,preset:"weight_type_full",default:"native"},{name:"ar_weight_type",type:"enum",description:"AR weight storage; inherits weight_type.",required:!1,preset:"weight_type_full"},{name:"codec_weight_type",type:"enum",description:"Codec weight storage; inherits weight_type.",required:!1,preset:"weight_type_full"},{name:"ar_weight_context_mb",type:"int",description:"AR weight context in MiB; 4096 on 64-bit builds, 1024 on 32-bit builds.",required:!1,min:1},{name:"codec_weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:1536},{name:"ar_decode_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:512},{name:"codec_decode_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:128},{name:"codec_encode_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:256},{name:"reference_cache_slots",type:"int",description:"Encoded reference cache slots; zero disables reuse.",required:!1,min:0,default:1},{name:"attention",type:"enum",description:"Attention lowering preference.",required:!1,values:["auto","flash","eager"],default:"auto"}],load:[]},capabilities:{clone:["speaker_reference"]},runtime:{tags:["gguf"]},ui:{recommended_package:"higgs_audio_tts_4b_q8_0",tags:["TTS","Clone","GGUF"],docs:["docs/models/higgs_audio_tts.md","docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"higgs_audio_tts_4b_q8_0",display_name:"Higgs Audio v3 TTS 4B Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Higgs-Audio-v3-TTS-4B-GGUF",files:["Higgs-Audio-v3-TTS-4B-GGUF/higgs-audio-v3-tts-4b-q8_0.gguf"],strip_prefix:"Higgs-Audio-v3-TTS-4B-GGUF"},{id:"higgs_audio_tts_4b_bf16",display_name:"Higgs Audio v3 TTS 4B BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"Higgs-Audio-v3-TTS-4B-GGUF",files:["Higgs-Audio-v3-TTS-4B-GGUF/higgs-audio-v3-tts-4b-bf16.gguf"],strip_prefix:"Higgs-Audio-v3-TTS-4B-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",chat_template:"model:chat_template.jinja"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",chat_template:"model:chat_template.jinja"},tensors:{weights:"model:model.safetensors.index.json"}}]},b8={schema_version:1,family:"htdemucs",display_name:"HTDemucs",description:"Hybrid Transformer Demucs music source-separation model that combines waveform and spectrogram processing with Transformer layers to split mixtures into vocals, drums, bass, and accompaniment.",category:"audio_tools",status:"supported",tasks:["sep"],modes:["offline"],languages:["language_agnostic"],capabilities:{sep:["stems"]},options:{request:[],session:[{name:"weight_type",type:"enum",description:"HTDemucs weight storage type; default is f32 for host graph planning, f16 on CUDA, otherwise native.",preset:"weight_type_full",required:!1}],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"htdemucs_q8_0",tags:["Sep","GGUF"],docs:["docs/audio_tools.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"htdemucs_q8_0",display_name:"HTDemucs Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"HTDemucs-GGUF",files:["HTDemucs-GGUF/htdemucs-q8_0.gguf"],strip_prefix:"HTDemucs-GGUF"},{id:"htdemucs_f16",display_name:"HTDemucs F16 GGUF",format:"gguf",precision:"f16",target_directory:"HTDemucs-GGUF",files:["HTDemucs-GGUF/htdemucs-f16.gguf"],strip_prefix:"HTDemucs-GGUF"}],dependencies:[],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{manifest:"model:manifest.json",submodel_config:"model:955717e8/config.json"},tensors:{submodel_weights:{source:"weights:",prefix:"submodel_weights"}}},{format:"safetensors",roots:{model:".",submodel:"955717e8"},files:{manifest:"model:manifest.json",submodel_config:"submodel:config.json"},tensors:{submodel_weights:"submodel:model.safetensors"}}]},y8={schema_version:1,family:"htdemucs_6stems",display_name:"HTDemucs 6-stem",description:"Hybrid Transformer Demucs 6-stem source-separation model that combines waveform and spectrogram processing with Transformer layers to split mixtures into drums, bass, vocals, other, guitar, and piano.",category:"audio_tools",status:"supported",tasks:["sep"],modes:["offline"],languages:["language_agnostic"],capabilities:{sep:["stems"]},options:{request:[],session:[{name:"weight_type",type:"enum",description:"HTDemucs 6-stem weight storage type; default is f32 for host graph planning, f16 on CUDA, otherwise native.",preset:"weight_type_full",required:!1}],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"htdemucs_6stems_q8_0",tags:["Sep","GGUF"],docs:["docs/audio_tools.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"htdemucs_6stems_q8_0",display_name:"HTDemucs 6-stem Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"HTDemucs-6stems-GGUF",files:["HTDemucs-6stems-GGUF/htdemucs-6stems-q8_0.gguf"],strip_prefix:"HTDemucs-6stems-GGUF"},{id:"htdemucs_6stems_f16",display_name:"HTDemucs 6-stem F16 GGUF",format:"gguf",precision:"f16",target_directory:"HTDemucs-6stems-GGUF",files:["HTDemucs-6stems-GGUF/htdemucs-6stems-f16.gguf"],strip_prefix:"HTDemucs-6stems-GGUF"}],dependencies:[],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{manifest:"model:manifest.json",submodel_config:"model:5c90dfd2/config.json"},tensors:{submodel_weights:{source:"weights:",prefix:"submodel_weights"}}},{format:"safetensors",roots:{model:".",submodel:"5c90dfd2"},files:{manifest:"model:manifest.json",submodel_config:"submodel:config.json"},tensors:{submodel_weights:"submodel:model.safetensors"}}]},w8={family:"hviske_asr",schema_version:1,display_name:"Hviske ASR",description:"Danish-optimized Conformer encoder-decoder ASR model fine-tuned from the Hviske v5 family, with selectable Cohere ASR language prompts.",category:"asr",status:"supported",tasks:["asr"],modes:["offline"],languages:["ar","da","de","el","en","es","fr","it","ja","ko","nl","pl","pt","vi","zh"],capabilities:{},dependencies:[],options:{request:[{name:"language",type:"string",description:"ASR language code; default da.",required:!1,default:"da"},{name:"punc",type:"bool",description:"Request punctuation and capitalization together through decoder prompt tokens; default true.",required:!1,default:!0},{name:"max_tokens",type:"int",description:"Maximum generated transcript tokens; defaults to the model config.",required:!1,min:1},{name:"num_beams",type:"int",description:"Beam-search beam count; default 1 uses greedy or sampling decode.",required:!1,min:1,default:1},{name:"length_penalty",type:"float",description:"Beam-search length penalty; must be positive when set; default 1.0.",required:!1,min:1e-6,default:1},{name:"do_sample",type:"bool",description:"Enable sampling instead of greedy decode when num_beams is 1; default false.",required:!1,default:!1},{name:"temperature",type:"float",description:"Decoder sampling temperature; must be positive when set; default 1.0.",required:!1,min:1e-6,default:1},{name:"top_k",type:"int",description:"Top-k sampling limit; default 50, 0 disables top-k.",required:!1,min:0,default:50},{name:"top_p",type:"float",description:"Nucleus sampling limit in (0, 1]; default 1.0.",required:!1,min:1e-6,max:1,default:1},{name:"seed",type:"int",description:"Decoder sampling seed; default 0.",required:!1,min:0,default:0},{name:"audio_chunk_mode",type:"enum",description:"Audio chunking mode; default auto uses quiet-energy splitting only when audio exceeds the model clip window.",values:["auto","fixed","quiet_energy","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Maximum audio chunk duration in seconds; defaults to the model clip window.",required:!1,min:1e-6}],session:[{name:"weight_type",type:"enum",description:"Matmul weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"conv_weight_type",type:"enum",description:"Convolution weight storage type; defaults to weight_type when set, otherwise native.",preset:"weight_type_conv",required:!1},{name:"weight_context_mb",type:"int",description:"Weight descriptor context size in MiB; default 32.",required:!1,min:1,default:32},{name:"encoder_graph_arena_mb",type:"int",description:"Encoder graph arena size in MiB; default 512.",required:!1,min:1,default:512},{name:"decoder_prefill_graph_arena_mb",type:"int",description:"Decoder prefill graph arena size in MiB; default 512.",required:!1,min:1,default:512},{name:"decoder_decode_graph_arena_mb",type:"int",description:"Decoder cached-step graph arena size in MiB; default 512.",required:!1,min:1,default:512}],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"hviske_asr_q8_0",tags:["ASR","GGUF"],docs:["docs/asr.md","docs/gguf.md"]},packages:[{id:"hviske_asr_q8_0",display_name:"Hviske v5.3 Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Hviske-v5.3-GGUF",files:["Audio to text (ASR)/hviske-v5.3_Q8.gguf"],strip_prefix:"Audio to text (ASR)",download:{kind:"huggingface_snapshot",repo:"mirek190/audio.cpp"}},{id:"hviske_asr_safetensors",display_name:"Hviske v5.3 Safetensors",format:"safetensors",precision:"native",target_directory:"hviske-v5.3",files:["config.json","generation_config.json","model.safetensors","tokenizer.model"],download:{kind:"huggingface_snapshot",repo:"syvai/hviske-v5.3"}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer:"model:tokenizer.model"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer:"model:tokenizer.model"},tensors:{weights:"model:model.safetensors"}}]},k8={schema_version:1,family:"hviske_asr_v6",display_name:"Hviske v6",description:"Danish speech recognition with a rotary Whisper encoder and Qwen3 decoder.",category:"asr",status:"supported",tasks:["asr"],modes:["offline"],languages:["da"],capabilities:{},runtime:{tags:["gguf"]},options:{request:[{name:"audio_chunk_mode",type:"enum",description:"auto preserves silence splitting above 30 seconds; silence splits above the configured duration at silence boundaries; fixed splits at the configured duration; none disables splitting and accepts at most 30 seconds.",required:!1,default:"auto",values:["auto","silence","fixed","none"]},{name:"audio_chunk_duration_sec",type:"float",description:"Maximum chunk duration when splitting. In auto mode the 30-second trigger remains unchanged.",required:!1,default:28,min:.001,max:30},{name:"max_tokens",type:"int",description:"Maximum generated tokens per chunk, also capped to eight tokens per audio second plus twelve.",required:!1,default:440,min:1},{name:"num_beams",type:"int",description:"Beam-search width. One selects greedy decoding.",required:!1,default:2,min:1},{name:"length_penalty",type:"float",description:"Exponent used to normalize beam scores by generated length.",required:!1,default:1},{name:"cased",type:"bool",description:"Request casing separately from punctuation. Both cased and punc must be provided to override automatic formatting.",required:!1},{name:"punc",type:"bool",description:"Request punctuation only, unlike the combined punctuation/casing control in Canary, Cohere and original Hviske. Both cased and punc must be provided to override automatic formatting.",required:!1}],session:[{name:"weight_type",type:"enum",preset:"weight_type_full",description:"Weight storage override; native preserves the supplied checkpoint types.",required:!1,default:"native"}],load:[]},packages:[{id:"hviske_asr_v6_bf16",display_name:"Hviske v6 BF16 GGUF",default:!0,format:"gguf",precision:"bf16",target_directory:"Hviske-v6-GGUF",files:["Hviske-v6-GGUF/hviske-v6-bf16.gguf"],strip_prefix:"Hviske-v6-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf"}},{id:"hviske_asr_v6_q8_0",display_name:"Hviske v6 Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Hviske-v6-GGUF",files:["Hviske-v6-GGUF/hviske-v6-q8_0.gguf"],strip_prefix:"Hviske-v6-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf"}}],dependencies:[],ui:{recommended_package:"hviske_asr_v6_bf16",tags:["ASR","GGUF"],docs:["docs/models/hviske_asr_v6.md"]},sources:[{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{weights:{source:"model:model.safetensors"}}},{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{weights:{source:"weights:",prefix:"weights"}}}]},x8={schema_version:1,family:"index_echo",display_name:"Index-Echo-S2TT",description:"Index-Echo speech-to-text translation with bilingual timestamped subtitles.",category:"asr",status:"experimental",tasks:["asr"],modes:["offline"],languages:["zh","en","es","ja"],runtime:{tags:["gguf"]},capabilities:{},dependencies:[],options:{request:[{name:"target_language",type:"enum",values:["en","es","ja"],description:"Translation language for Chinese input audio.",required:!1,default:"en"},{name:"max_tokens",type:"int",description:"Maximum translated text tokens per window.",required:!1,min:1,default:2e3},{name:"temperature",type:"float",description:"Sampling temperature; zero selects greedy decoding.",required:!1,min:0,max:2,default:0},{name:"seed",type:"int",description:"Sampling seed when temperature is positive.",required:!1,min:0,max:2147483647,default:0},{name:"glossary",type:"string",description:"Translation glossary entries.",required:!1},{name:"audio_chunk_mode",type:"enum",values:["auto","quiet_energy","fixed","none"],description:"Long-form audio windowing mode.",required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Maximum audio-window duration.",required:!1,min:1,max:60,default:60}],session:[{name:"weight_type",type:"enum",preset:"weight_type_full",description:"Weight storage type for runtime matmul operations.",required:!1,default:"native"}],load:[]},packages:[{id:"index_echo_s2tt_2b_orig",display_name:"Index-Echo-S2TT 2B Original",default:!0,format:"gguf",precision:"orig",target_directory:"Index-Echo-S2TT-GGUF",files:["index-echo-s2tt-2b-orig.gguf"],download:{kind:"huggingface_snapshot",repo:"audio-cpp/Index-Echo-S2TT-GGUF",revision:"main",gated:!1}},{id:"index_echo_s2tt_2b_q8_0",display_name:"Index-Echo-S2TT 2B Q8_0",format:"gguf",precision:"q8_0",target_directory:"Index-Echo-S2TT-GGUF",files:["index-echo-s2tt-2b-q8_0.gguf"],download:{kind:"huggingface_snapshot",repo:"audio-cpp/Index-Echo-S2TT-GGUF",revision:"main",gated:!1}},{id:"index_echo_s2tt_2b_q4_k",display_name:"Index-Echo-S2TT 2B Q4_K (experimental)",format:"gguf",precision:"q4_k",target_directory:"Index-Echo-S2TT-GGUF",files:["index-echo-s2tt-2b-q4_k.gguf"],download:{kind:"huggingface_snapshot",repo:"audio-cpp/Index-Echo-S2TT-GGUF",revision:"main",gated:!1}},{id:"index_echo_s2tt_9b_orig",display_name:"Index-Echo-S2TT 9B Original",format:"gguf",precision:"orig",target_directory:"Index-Echo-S2TT-GGUF",files:["index-echo-s2tt-9b-orig.gguf"],download:{kind:"huggingface_snapshot",repo:"audio-cpp/Index-Echo-S2TT-GGUF",revision:"main",gated:!1}},{id:"index_echo_s2tt_9b_q8_0",display_name:"Index-Echo-S2TT 9B Q8_0",format:"gguf",precision:"q8_0",target_directory:"Index-Echo-S2TT-GGUF",files:["index-echo-s2tt-9b-q8_0.gguf"],download:{kind:"huggingface_snapshot",repo:"audio-cpp/Index-Echo-S2TT-GGUF",revision:"main",gated:!1}}],ui:{recommended_package:"index_echo_s2tt_2b_orig",tags:["ASR","GGUF"],docs:["docs/models/index_echo.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{llm_config:"model:llm/config.json",tokenizer:"model:llm/tokenizer.json",tokenizer_config:"model:llm/tokenizer_config.json",audio_config:"model:audio_config.json"},optional_files:{mapper_config:"model:bridge/mapper_config.json"},tensors:{stlm_weights:{source:"weights:",prefix:"stlm"},audio_weights:{source:"weights:",prefix:"audio"},connector_weights:{source:"weights:",prefix:"connector"}},optional_tensors:{mapper_weights:{source:"weights:",prefix:"mapper"}}}]},S8={family:"index_tts2",display_name:"IndexTTS2",description:"Zero-shot TTS system with voice cloning, emotion-speaker decoupling, text or audio emotion control, and explicit duration control. Variant v2 covers Chinese and English; variant v2.5 (config version 2.5) adds multilingual tiktoken tokenization with Japanese, Spanish and Arabic support.",category:"tts",status:"supported",tasks:["tts","clone"],modes:["offline"],languages:["zh","en","ja","es","ar"],options:{request:[{name:"text",type:"string",description:"Fallback target text when text_input is absent; prompt is also accepted.",required:!1},{name:"language",type:"string",description:"IndexTTS2.5 text language; empty or auto selects from text.",required:!1},{name:"emotion_alpha",type:"float",description:"Emotion conditioning blend strength.",required:!1,min:0,max:1,default:1},{name:"emotion_vector",type:"string",description:"Eight comma-separated finite emotion strengths.",required:!1},{name:"use_emotion_text",type:"bool",description:"Use text-derived emotion conditioning.",required:!1,default:!1},{name:"emotion_text",type:"string",description:"Emotion description.",required:!1},{name:"use_random_emotion",type:"bool",description:"Use random emotion conditioning.",required:!1,default:!1},{name:"interval_silence_ms",type:"int",description:"Silence between generated segments in milliseconds.",required:!1,min:0,default:200},{name:"do_sample",type:"bool",description:"Enable sampling.",required:!1,default:!0},{name:"top_p",type:"float",description:"Nucleus sampling probability. Must be in (0, 1].",required:!1,default:.8},{name:"top_k",type:"int",description:"Top-k sampling limit.",required:!1,min:1,default:30},{name:"temperature",type:"float",description:"Sampling temperature. Must be positive.",required:!1,default:.8},{name:"length_penalty",type:"float",description:"Beam search length penalty.",required:!1,default:0},{name:"num_beams",type:"int",description:"Beam search width.",required:!1,min:1,default:3},{name:"repetition_penalty",type:"float",description:"Sampling repetition penalty.",required:!1,default:10},{name:"max_tokens",type:"int",description:"Maximum generated mel tokens.",required:!1,min:1,default:1500},{name:"duration_scale",type:"float",description:"Positive waveform duration rescaling, supported by both IndexTTS2 and IndexTTS2.5.",required:!1,default:1},{name:"seed",type:"int",description:"Sampling seed; omitted chooses a random seed.",required:!1,min:0,max:4294967295},{name:"text_chunk_size",type:"int",description:"Optional framework long-form text chunk size; omitted keeps the full input together. Must be positive.",required:!1},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode.",required:!1,values:["default","tag_aware","japanese","endline"],default:"default"}],session:[{name:"weight_type",type:"enum",description:"Weight storage type; defaults to native.",required:!1,preset:"weight_type_full"},{name:"conv_weight_type",type:"enum",description:"Convolution weight storage; native on HIP resolves to F16.",required:!1,preset:"weight_type_conv",default:"native"},{name:"mem_saver",type:"bool",description:"Release staged runtime graphs.",required:!1,default:!1},{name:"speaker_cache_slots",type:"int",description:"Reference or emotion cache slots; zero disables reuse.",required:!1,min:0,default:1},{name:"emotion_cache_slots",type:"int",description:"Reference or emotion cache slots; zero disables reuse.",required:!1,min:0,default:1},{name:"emotion_text_cache_slots",type:"int",description:"Reference or emotion cache slots; zero disables reuse.",required:!1,min:0,default:1},{name:"gpt_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:32},{name:"s2mel_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:32},{name:"reference_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:512},{name:"emotion_text_prefill_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:2048},{name:"emotion_text_decode_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:512},{name:"weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:32},{name:"emotion_text_max_tokens",type:"int",description:"Emotion description generation token limit; emotion_text_max_new_tokens is also accepted.",required:!1,min:1,default:256}],load:[]},capabilities:{tts:["emotion_control"],clone:["speaker_reference","emotion_control"]},runtime:{tags:["gguf"]},ui:{recommended_package:"index_tts2_q8_0",tags:["TTS","Clone","GGUF"],docs:["docs/models/index_tts2.md","docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"index_tts2_q8_0",display_name:"IndexTTS2 Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"IndexTTS2-GGUF",files:["IndexTTS2-GGUF/index-tts2-q8_0.gguf"],strip_prefix:"IndexTTS2-GGUF"},{id:"index_tts2_f16",display_name:"IndexTTS2 F16 GGUF",format:"gguf",precision:"f16",target_directory:"IndexTTS2-GGUF",files:["IndexTTS2-GGUF/index-tts2-f16.gguf"],strip_prefix:"IndexTTS2-GGUF"},{id:"index_tts2_orig",display_name:"IndexTTS2 Original-Dtype GGUF",format:"gguf",precision:"orig",target_directory:"IndexTTS2-GGUF",files:["IndexTTS2-GGUF/index-tts2-orig.gguf"],strip_prefix:"IndexTTS2-GGUF"},{id:"index_tts2_safetensors",display_name:"IndexTTS2 Safetensors",format:"safetensors",precision:"native",target_directory:"IndexTTS-2",files:["config.yaml","bpe.model","gpt.safetensors","w2v-bert-2.0/config.json","w2v-bert-2.0/preprocessor_config.json","bigvgan/config.json","qwen0.6bemo4-merge/config.json","qwen0.6bemo4-merge/generation_config.json","qwen0.6bemo4-merge/tokenizer.json","qwen0.6bemo4-merge/tokenizer_config.json","qwen0.6bemo4-merge/vocab.json","qwen0.6bemo4-merge/merges.txt","s2mel.safetensors","feat1.safetensors","feat2.safetensors","wav2vec2bert_stats.safetensors","w2v-bert-2.0/model.safetensors","semantic_codec_model.safetensors","campplus.safetensors","bigvgan/model.safetensors","qwen0.6bemo4-merge/model.safetensors"],download:{kind:"huggingface_snapshot",repo:"mlx-community/index-tts2-mlx"}},{id:"index_tts2_5_q8_0",display_name:"IndexTTS2.5 Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"IndexTTS2.5-GGUF",files:["IndexTTS2.5-GGUF/index-tts2_5-q8_0.gguf"],strip_prefix:"IndexTTS2.5-GGUF"},{id:"index_tts2_5_f16",display_name:"IndexTTS2.5 F16 GGUF",format:"gguf",precision:"f16",target_directory:"IndexTTS2.5-GGUF",files:["IndexTTS2.5-GGUF/index-tts2_5-f16.gguf"],strip_prefix:"IndexTTS2.5-GGUF"},{id:"index_tts2_5_orig",display_name:"IndexTTS2.5 Original-Dtype GGUF",format:"gguf",precision:"orig",target_directory:"IndexTTS2.5-GGUF",files:["IndexTTS2.5-GGUF/index-tts2_5-orig.gguf"],strip_prefix:"IndexTTS2.5-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.yaml",wav2vec2bert_config:"model:w2v-bert-2.0/config.json",wav2vec2bert_preprocessor_config:"model:w2v-bert-2.0/preprocessor_config.json",bigvgan_config:"model:bigvgan/config.json",qwen_emotion_config:"model:qwen0.6bemo4-merge/config.json",qwen_emotion_generation_config:"model:qwen0.6bemo4-merge/generation_config.json",qwen_emotion_tokenizer:"model:qwen0.6bemo4-merge/tokenizer.json",qwen_emotion_tokenizer_config:"model:qwen0.6bemo4-merge/tokenizer_config.json",qwen_emotion_vocab:"model:qwen0.6bemo4-merge/vocab.json",qwen_emotion_merges:"model:qwen0.6bemo4-merge/merges.txt"},optional_files:{bpe:"model:bpe.model",tiktoken:"model:multilingual_zh_ja_yue_char_del.tiktoken"},tensors:{gpt:{source:"weights:",prefix:"gpt"},s2mel:{source:"weights:",prefix:"s2mel"},speaker_matrix:{source:"weights:",prefix:"speaker_matrix"},emotion_matrix:{source:"weights:",prefix:"emotion_matrix"},wav2vec2bert_stats:{source:"weights:",prefix:"wav2vec2bert_stats"},wav2vec2bert:{source:"weights:",prefix:"wav2vec2bert"},semantic_codec:{source:"weights:",prefix:"semantic_codec"},campplus:{source:"weights:",prefix:"campplus"},bigvgan:{source:"weights:",prefix:"bigvgan"},qwen_emotion:{source:"weights:",prefix:"qwen_emotion"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.yaml",wav2vec2bert_config:"model:w2v-bert-2.0/config.json",wav2vec2bert_preprocessor_config:"model:w2v-bert-2.0/preprocessor_config.json",bigvgan_config:"model:bigvgan/config.json",qwen_emotion_config:"model:qwen0.6bemo4-merge/config.json",qwen_emotion_generation_config:"model:qwen0.6bemo4-merge/generation_config.json",qwen_emotion_tokenizer:"model:qwen0.6bemo4-merge/tokenizer.json",qwen_emotion_tokenizer_config:"model:qwen0.6bemo4-merge/tokenizer_config.json",qwen_emotion_vocab:"model:qwen0.6bemo4-merge/vocab.json",qwen_emotion_merges:"model:qwen0.6bemo4-merge/merges.txt"},optional_files:{bpe:"model:bpe.model",tiktoken:"model:multilingual_zh_ja_yue_char_del.tiktoken"},tensors:{gpt:"model:gpt.safetensors",s2mel:"model:s2mel.safetensors",speaker_matrix:"model:feat1.safetensors",emotion_matrix:"model:feat2.safetensors",wav2vec2bert_stats:"model:wav2vec2bert_stats.safetensors",wav2vec2bert:"model:w2v-bert-2.0/model.safetensors",semantic_codec:"model:semantic_codec_model.safetensors",campplus:"model:campplus.safetensors",bigvgan:"model:bigvgan/model.safetensors",qwen_emotion:"model:qwen0.6bemo4-merge/model.safetensors"}}]},T8={schema_version:1,family:"inflect_v2",display_name:"Inflect Micro v2",description:"Compact English VITS text-to-speech models with a native GGML inference path and an external eSpeak-ng phonemizer.",category:"tts",status:"community",tasks:["tts"],modes:["offline"],languages:["en"],runtime:{tags:["gguf"]},capabilities:{tts:["long_form"]},options:{request:[{name:"speed",type:"float",description:"Speech speed multiplier mapped directly to Inflect speed; default 1.0.",required:!1,min:.5,max:2,default:1},{name:"variation",type:"float",description:"Latent Gaussian variation; default 0.667.",required:!1,min:0,max:1,default:.667},{name:"seed",type:"int",description:"Non-negative latent noise seed; default 0.",required:!1,min:0,default:0},{name:"text_chunk_mode",type:"enum",description:"Long-form text chunking mode.",values:["word_budget"],required:!1,default:"word_budget"},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per long-form text chunk; default 280.",required:!1,min:1,default:280}],session:[{name:"espeak_library_path",type:"path",description:"Optional explicit path to the eSpeak-ng shared library.",required:!1},{name:"espeak_data_path",type:"path",description:"Optional explicit path to the directory containing espeak-ng-data.",required:!1},{name:"exec_plan",type:"string",description:"JSON object of component execution plans. Component: decoder. Each plan accepts impl, backend, artifacts, and params. impl is default/ggml/rknn. GGML keeps the session backend. RKNN requires artifacts.main and ENGINE_ENABLE_RKNN; omit backend. Neither implementation takes params.",required:!1,default:"{}"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"inflect_micro_v2_orig",display_name:"Inflect Micro v2 Original-Dtype GGUF",default:!0,format:"gguf",precision:"orig",target_directory:"Inflect-Micro-v2-GGUF",files:["Inflect-Micro-v2-GGUF/inflect-micro-v2-orig.gguf"],strip_prefix:"Inflect-Micro-v2-GGUF"}],dependencies:[],ui:{recommended_package:"inflect_micro_v2_orig",tags:["TTS","GGUF"],docs:["docs/tts.md","docs/models/inflect_v2.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:{source:"weights:",prefix:"weights"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json"},tensors:{weights:"model:model.safetensors"}}]},$8={schema_version:1,family:"irodori_tts",display_name:"Irodori-TTS",description:"Japanese TTS with RF and MeanFlow checkpoints, supporting zero-shot voice cloning, automatic duration prediction, multimodal voice design, and emoji-style control.",category:"tts",status:"supported",tasks:["tts","clone","design"],modes:["offline","streaming"],languages:["ja"],capabilities:{clone:["speaker_reference"],design:["voice_design"]},options:{request:[{name:"stream_frames_per_event",type:"int",description:"Codec latent frames per streaming audio event; default 12 (0.48 seconds at 25 Hz).",required:!1,min:1,default:12},{name:"language",type:"string",description:"Text language code; Irodori-TTS supports Japanese only.",required:!1,default:"ja"},{name:"instruct",type:"string",description:"Natural-language voice or style instruction describing target voice identity, style, or emotion; supported only by caption-conditioned checkpoints. Legacy instruction and caption are accepted as aliases.",required:!1},{name:"no_ref",type:"bool",description:"Use no-reference generation; default true unless a speaker reference is provided.",required:!1,default:!0},{name:"speaker_embedding_file",type:"path",description:"Speaker Inversion embedding (*.speaker.safetensors written by Irodori-TTS training) used as the speaker condition instead of reference audio; use it with the base checkpoint it was trained on. Cannot be combined with reference audio or no_ref=true.",required:!1},{name:"reference_duration_sec",type:"float",description:"Trim reference audio to its first reference_duration_sec seconds before encoding it, as Python Irodori-TTS does; default is the checkpoint's ref_max_seconds (30 when it has none); 0 keeps the whole reference.",required:!1,min:0},{name:"t_schedule_mode",type:"string",description:"RF Euler timestep schedule: linear or sway; default linear.",required:!1,default:"linear"},{name:"sway_coeff",type:"float",description:"Sway Sampling coefficient; must be finite and produce strictly decreasing timesteps. Default -1.0.",required:!1,default:-1},{name:"num_inference_steps",type:"int",description:"Sampling steps; omitted uses 40 for RF checkpoints or 4 for MeanFlow checkpoints.",required:!1,min:1},{name:"duration_sec",type:"float",description:"Target duration in seconds; omitted or nonpositive values select predicted duration.",required:!1},{name:"duration_scale",type:"float",description:"Predicted-duration multiplier; must be > 0 when set; default 1.0.",required:!1,min:0,default:1},{name:"text_chunk_mode",type:"enum",description:"Text chunk policy; word_budget also accepts the legacy spelling default.",values:["word_budget","tag_aware","japanese","endline"],required:!1,default:"endline"},{name:"text_chunk_size",type:"int",description:"Maximum characters per text chunk; default 100, or the model text-token window if smaller.",required:!1,min:1},{name:"min_duration_sec",type:"float",description:"Minimum generated duration in seconds; must be > 0 and no greater than max_duration_sec; default 0.5.",required:!1,min:0,default:.5},{name:"max_duration_sec",type:"float",description:"Maximum generated duration in seconds; must be at least min_duration_sec; default 30. Must be > 0.",required:!1,min:0,default:30},{name:"text_guidance_scale",type:"float",description:"Text classifier-free guidance scale; default 3.0. Nonpositive values disable the corresponding CFG branch.",required:!1,default:3},{name:"speaker_guidance_scale",type:"float",description:"Speaker classifier-free guidance scale; default 5.0. Nonpositive values disable the corresponding CFG branch.",required:!1,default:5},{name:"caption_guidance_scale",type:"float",description:"Caption classifier-free guidance scale; default 3.0. Nonpositive values disable the corresponding CFG branch.",required:!1,default:3},{name:"guidance_scale",type:"float",description:"Override all classifier-free guidance scales when set. Nonpositive values disable the corresponding CFG branch.",required:!1},{name:"guidance_mode",type:"enum",description:"Classifier-free guidance combination mode; default independent.",values:["independent","joint","alternating"],required:!1,default:"independent"},{name:"guidance_min_t",type:"float",description:"Minimum diffusion timestep value where guidance is active; default 0.5. The parser does not enforce a nonnegative bound.",required:!1,default:.5},{name:"guidance_max_t",type:"float",description:"Maximum diffusion timestep value where guidance is active; default 1.0. The parser does not enforce a nonnegative bound.",required:!1,default:1},{name:"seed",type:"int",description:"Unsigned 32-bit generation seed in [0, 4294967295]; omitted uses a random seed.",required:!1,min:0,max:4294967295},{name:"trim_tail",type:"bool",description:"Trim trailing silence-like samples; default true.",required:!1,default:!0}],session:[{name:"weight_type",type:"enum",description:"Model weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"codec_weight_type",type:"enum",description:"DACVAE codec weight storage type; default native.",preset:"weight_type_codec_q8",required:!1,default:"native"},{name:"codec_backend",type:"enum",description:"DACVAE codec execution backend. Use cpu as an opt-in workaround for backend-specific codec decoder issues; default same.",values:["same","cpu"],required:!1,default:"same"},{name:"condition_graph_arena_mb",type:"int",description:"Condition encoder graph arena size in MiB; default 256.",required:!1,min:1,default:256},{name:"rf_graph_arena_mb",type:"int",description:"RF sampler graph arena size in MiB; default 768.",required:!1,min:1,default:768},{name:"codec_graph_arena_mb",type:"int",description:"DACVAE codec graph arena size in MiB; default 512.",required:!1,min:1,default:512},{name:"codec_decode_chunk_steps",type:"int",description:"Decode the latent in windows of this many frames (25 per second) so the codec's activation memory stops growing with the output length; 0 decodes the whole sequence at once (default).",required:!1,min:0,default:0},{name:"codec_decode_overlap_steps",type:"int",description:"Latent frames of context decoded on each side of a window and then discarded; default 16.",required:!1,min:0,default:16},{name:"codec_encode_chunk_steps",type:"int",description:"Encode reference audio in windows of this many latent frames (25 per second) so the codec's activation memory stops growing with the reference length; 0 encodes the whole reference at once (default).",required:!1,min:0,default:0},{name:"codec_encode_overlap_steps",type:"int",description:"Latent frames of reference audio encoded as context on each side of a window and then discarded; default 16.",required:!1,min:0,default:16},{name:"condition_weight_context_mb",type:"int",description:"Condition encoder weight context size in MiB; default 32.",required:!1,min:1,default:32},{name:"rf_weight_context_mb",type:"int",description:"RF sampler weight context size in MiB; default 32.",required:!1,min:1,default:32},{name:"codec_weight_context_mb",type:"int",description:"DACVAE codec weight context size in MiB; default 32.",required:!1,min:1,default:32},{name:"mem_saver",type:"bool",description:"Release staged runtime graphs after request phases; default true.",required:!1,default:!0},{name:"reference_cache_slots",type:"int",description:"Prepared reference-speaker cache slots; default 1.",required:!1,min:0,default:1}],load:[]},dependencies:[],runtime:{tags:["gguf"]},ui:{recommended_package:"irodori_tts_v4_small_q8_0",tags:["TTS","Clone","Design","GGUF"],docs:["docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"irodori_tts_v4_small_q8_0",display_name:"Irodori-TTS v4.1 Small Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Irodori-TTS-v4-Small-GGUF",files:["Irodori-TTS-v4-Small-GGUF/irodori-tts-v4-small-q8_0.gguf"],strip_prefix:"Irodori-TTS-v4-Small-GGUF"},{id:"irodori_tts_v4_1_anime_q8_0",display_name:"Irodori-TTS v4.1 Anime Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Irodori-TTS-v4-Small-GGUF",files:["Irodori-TTS-v4-Small-GGUF/irodori-tts-v4.1-anime-q8_0.gguf"],strip_prefix:"Irodori-TTS-v4-Small-GGUF"},{id:"irodori_tts_v4_small_f16",display_name:"Irodori-TTS v4.1 Small F16 GGUF",format:"gguf",precision:"f16",target_directory:"Irodori-TTS-v4-Small-GGUF",files:["Irodori-TTS-v4-Small-GGUF/irodori-tts-v4-small-f16.gguf"],strip_prefix:"Irodori-TTS-v4-Small-GGUF"},{id:"irodori_tts_600m_v3_voicedesign_q8_0",display_name:"Irodori-TTS 600M v3 VoiceDesign Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Irodori-TTS-600M-v3-VoiceDesign-GGUF",files:["Irodori-TTS-600M-v3-VoiceDesign-GGUF/irodori-tts-600m-v3-voicedesign-q8_0.gguf"],strip_prefix:"Irodori-TTS-600M-v3-VoiceDesign-GGUF"},{id:"irodori_tts_600m_v3_voicedesign_f16",display_name:"Irodori-TTS 600M v3 VoiceDesign F16 GGUF",format:"gguf",precision:"f16",target_directory:"Irodori-TTS-600M-v3-VoiceDesign-GGUF",files:["Irodori-TTS-600M-v3-VoiceDesign-GGUF/irodori-tts-600m-v3-voicedesign-f16.gguf"],strip_prefix:"Irodori-TTS-600M-v3-VoiceDesign-GGUF"},{id:"irodori_tts_500m_v3_q8_0",display_name:"Irodori-TTS 500M v3 Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Irodori-TTS-500M-v3-GGUF",files:["Irodori-TTS-500M-v3-GGUF/irodori-tts-500m-v3-q8_0.gguf"],strip_prefix:"Irodori-TTS-500M-v3-GGUF"},{id:"irodori_tts_v4_1_small_mf_q8_0",display_name:"Irodori-TTS v4.1 Small MeanFlow Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Irodori-TTS-v4-Small-GGUF",files:["Irodori-TTS-v4-Small-GGUF/irodori-tts-v4.1-small-mf-q8_0.gguf"],strip_prefix:"Irodori-TTS-v4-Small-GGUF"},{id:"irodori_tts_v4_1_small_mf_f16",display_name:"Irodori-TTS v4.1 Small MeanFlow F16 GGUF",format:"gguf",precision:"f16",target_directory:"Irodori-TTS-v4-Small-GGUF",files:["Irodori-TTS-v4-Small-GGUF/irodori-tts-v4.1-small-mf-f16.gguf"],strip_prefix:"Irodori-TTS-v4-Small-GGUF"},{id:"irodori_tts_500m_v3_f16",display_name:"Irodori-TTS 500M v3 F16 GGUF",format:"gguf",precision:"f16",target_directory:"Irodori-TTS-500M-v3-GGUF",files:["Irodori-TTS-500M-v3-GGUF/irodori-tts-500m-v3-f16.gguf"],strip_prefix:"Irodori-TTS-500M-v3-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{model_config:"model:model_config.json"},optional_files:{tokenizer_json:"model:tokenizer.json",tokenizer_v4_json:"model:tokenizer/tokenizer.json",pretrained_text_config:"model:text_encoder_config.json"},tensors:{model_weights:{source:"weights:",prefix:"model_weights"},codec_weights:{source:"weights:",prefix:"codec_weights"}}},{format:"safetensors",roots:{model:".",tokenizer:"../llm-jp-3-150m",codec:"../Semantic-DACVAE-Japanese-32dim"},files:{model_config:"model:model_config.json"},optional_files:{tokenizer_json:"tokenizer:tokenizer.json",tokenizer_v4_json:"model:tokenizer/tokenizer.json",pretrained_text_config:"model:text_encoder_config.json"},tensors:{model_weights:"model:model.safetensors",codec_weights:"codec:weights.safetensors"}}]},q8={schema_version:1,family:"kitten_tts",display_name:"KittenTTS Mini 0.8",description:"Native KittenTTS Mini 0.8 English text-to-speech with eight built-in voices and shared eSpeak-ng phonemization.",category:"tts",status:"community",tasks:["tts"],modes:["offline"],languages:["en"],runtime:{tags:["gguf"]},capabilities:{tts:["built_in_voices","long_form"]},options:{request:[{name:"voice_id",type:"enum",values:["Bella","Bruno","Hugo","Jasper","Kiki","Leo","Luna","Rosie","expr-voice-2-f","expr-voice-2-m","expr-voice-3-f","expr-voice-3-m","expr-voice-4-f","expr-voice-4-m","expr-voice-5-f","expr-voice-5-m"],description:"Built-in voice ID or package alias; structured voice input (CLI --voice-id) takes precedence.",required:!1,default:"expr-voice-5-m"},{name:"speed",type:"float",description:"Speech speed multiplier; larger values produce faster speech. Must be finite and positive.",required:!1,default:1},{name:"seed",type:"int",description:"Decoder noise seed for the current request; omitted requests choose a fresh random seed.",required:!1,min:0},{name:"text_chunk_mode",type:"enum",description:"Long-form text chunking mode.",values:["default","tag_aware","japanese","endline"],required:!1,default:"default"},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per long-form chunk.",required:!1,min:1,default:400}],session:[{name:"weight_type",type:"enum",preset:"weight_type_full",description:"Storage type for matrix multiplication weights.",required:!1,default:"native"},{name:"conv_weight_type",type:"enum",preset:"weight_type_conv",description:"Storage type for convolution weights.",required:!1,default:"native"},{name:"graph_capacity_mode",type:"enum",description:"Offline graph capacity policy.",values:["fixed","tiered","grow","double"],required:!1,default:"fixed"},{name:"max_input_tokens",type:"int",description:"Maximum predictor input token capacity; defaults to min(512, checkpoint context_length).",required:!1,min:1,max:512,default:512},{name:"pre_tail_tokens",type:"int",description:"Optional prebuilt predictor tail token capacity.",required:!1,min:0,max:512,default:0},{name:"espeak_library_path",type:"path",description:"Optional explicit path to the eSpeak-ng shared library.",required:!1},{name:"espeak_data_path",type:"path",description:"Optional explicit path to espeak-ng-data.",required:!1}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"kitten_tts_mini_0_8_orig",display_name:"KittenTTS Mini 0.8 Original-Dtype GGUF",default:!0,format:"gguf",precision:"orig",target_directory:"KittenTTS-GGUF",files:["KittenTTS-GGUF/kitten-tts-mini-0.8-orig.gguf"],strip_prefix:"KittenTTS-GGUF"}],dependencies:[],ui:{recommended_package:"kitten_tts_mini_0_8_orig",tags:["TTS","GGUF"],builtin_voices:["Bella","Jasper","Luna","Bruno","Rosie","Hugo","Kiki","Leo"],default_voice:"Leo",docs:["docs/models/kitten_tts.md","docs/tts.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:{source:"weights:",prefix:"kitten"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json"},tensors:{weights:"model:ggml/kitten_tts.safetensors"}}]},A8={schema_version:1,family:"kitten_tts2",display_name:"Kitten TTS 2",description:"Native multilingual Kitten TTS 2 Qwen3 speech generation, S3 meanflow decoder, and reference-audio voice cloning.",category:"tts",status:"experimental",tasks:["tts","clone"],modes:["offline"],languages:["en","ar","zh","fr","de","hi","it","pt","ru","es","nl","id","ja","ko","pl","tr"],runtime:{tags:["gguf","cpu"]},capabilities:{tts:["built_in_voices","long_form"],clone:["speaker_reference"]},options:{request:[{name:"voice_id",type:"enum",values:["Bella","Jasper","Luna","Bruno","Rosie","Hugo","Kiki","Leo","Matthew","Elliot","Willow","Dolores","Victor","Dante","Alfred","Saoirse","Claire","Raven","Marcus","Herbert","Diana","Laurence","Maeve","Walter","Edith","Miles","Grace","Reginald","Iris","Frank","Serena","Julian","Eleanor","Otis","Vincent","Martha","Sable","Victoria","PreparedBruno","Arabic","Chinese","French","German","Hindi","Italian","Portuguese","Russian","Spanish","AirportAnnouncer","ArabicChildSchool","ArabicFalconer","ArabicMother","ArabicNews","AudiobookNarratorFemale","BoredTeenager","CalmHostageNegotiator","ChineseKidSpringFestival","ChineseLivestreamSeller","ChineseNewsCctv","ChineseXianxiaMaster","DutchBaker","DutchGrandpaStory","DutchWeatherPresenter","FairytaleNarratorWhimsical","FrenchDocumentary","FrenchGrandmereRecette","FrenchTeacher","FrenchWaiter","GermanKidBirthday","GermanKneipe","GermanProfessor","GermanTrainAnnouncement","GrandmaBedtimeStory","GriefEulogy","HindiBollywoodDrama","HindiCollegeFriends","HindiDadiKahani","HindiYogaTeacher","IndonesianNewsAnchor","IndonesianTourGuide","ItalianChildSchool","ItalianFashionDesigner","ItalianFootballFan","ItalianGondolier","ItalianNonnaKitchen","ItalianOperaTenor","JapaneseAnimeHeroine","JapaneseGrandma","JapaneseSalarymanApology","JapaneseTrainConductor","KoreanGrandpaAdvice","KoreanKdramaConfession","KoreanNewsAnchor","LittleGirlExplaining","NervousFirstDate","NewsAnchorFemale","PilotCabinAnnouncement","PolishBabciaPierogi","PolishMountainGuide","PolishNewsAnchor","PolishPoetryStudent","PortugueseBeach","PortugueseBusiness","PortugueseFado","PortugueseGrandpaFarm","PortugueseKidFutebol","PortugueseNewsAnchor","RussianBabushka","RussianFairyTale","RussianHockeyCheer","RussianLiteratureTeacher","RussianSpaceControl","RussianTaxiDriver","SarcasticCoworker","SchoolboyPresentation","SpanishAbuela","SpanishBreakupSad","SpanishChildCuento","SpanishNews","SpanishTango","TurkishFisherman","TurkishGrandmaCooking","TurkishNewsAnchor","WeatherPresenterCheerful"],required:!1,default:"Bruno",description:"Prepared voice name available in the loaded package. A supplied reference clip takes precedence."},{name:"preset",type:"enum",values:["stable","expressive"],required:!1,default:"stable",description:"Upstream sampling preset."},{name:"temperature",type:"float",min:0,required:!1,description:"Sampling temperature; zero selects greedy decoding. Otherwise defaults to the preset."},{name:"top_k",type:"int",min:0,required:!1,description:"Top-k sampling cutoff; defaults to the preset."},{name:"top_p",type:"float",max:1,required:!1,description:"Nucleus sampling cutoff; defaults to the preset. Must be in (0, 1]."},{name:"min_p",type:"float",min:0,max:1,required:!1,description:"Minimum relative probability; defaults to the preset."},{name:"repetition_penalty",type:"float",min:1,required:!1,default:1.1,description:"Penalty over the last 50 generated tokens; silence and ending tokens are exempt."},{name:"max_tokens",type:"int",min:1,max:8192,required:!1,description:"Speech-token budget per text chunk. Omitted budgets scale with text length, with a minimum of 200."},{name:"seed",type:"int",min:0,required:!1,description:"Seed for sampling and waveform decoding."},{name:"text_chunk_size",type:"int",min:32,max:1e3,required:!1,default:380,description:"Maximum Unicode codepoints per framework text chunk."},{name:"text_chunk_mode",type:"enum",values:["default","tag_aware","japanese","endline"],required:!1,default:"tag_aware",description:"Framework long-form text chunking mode."},{name:"reference_text",type:"string",required:!1,description:"Transcript of the reference audio; required when cloning from a 1–30 second clip."}],load:[],session:[{name:"exec_plan",type:"string",required:!1,default:"{}",description:"Component execution plan JSON. vocoder accepts impl=ggml (default) or neon with backend=cpu. NEON requires ENGINE_ENABLE_NEON=ON and an AArch64 NEON CPU, and replaces only the HiFT neural convolution stack."},{name:"weight_type",type:"enum",values:["native","f32","f16","bf16","q4_0","q8_0"],required:!1,default:"native",description:"Qwen projection storage. native preserves the GGUF's intended tensor types. An explicit override changes projection storage only."}]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"dignome/kitten_tts2",revision:"main",gated:!1}},packages:[{id:"kitten_tts2_bf16",display_name:"Kitten TTS 2 BF16 GGUF (Previous Checkpoint)",default:!1,format:"gguf",precision:"bf16",target_directory:"kitten-tts2-v2",files:["kitten-tts2-bf16-multilingual.gguf","LICENSE","NOTICE","native/LICENSE","speaker/LICENSE","SHA256SUMS"]},{id:"kitten_tts2_q8_v2",display_name:"Kitten TTS 2 Q8 GGUF (Previous Checkpoint)",default:!1,format:"gguf",precision:"q8_0",target_directory:"kitten-tts2-v2",files:["kitten-tts2-q8-v2-multilingual.gguf","LICENSE","NOTICE","native/LICENSE","speaker/LICENSE","SHA256SUMS"]},{id:"kitten_tts2_q4",display_name:"Kitten TTS 2 Hybrid Q4 GGUF (Previous Checkpoint, Experimental)",default:!1,format:"gguf",precision:"q4_0",target_directory:"kitten-tts2-v2",files:["kitten-tts2-q4-multilingual.gguf","LICENSE","NOTICE","native/LICENSE","speaker/LICENSE","SHA256SUMS"]},{id:"kitten_tts2_20261021_q8_0",display_name:"Kitten TTS 2 2026-10-21 Q8 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"KittenTTS2-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1},files:["KittenTTS2-GGUF/kitten-tts2-20261021-q8_0.gguf"],strip_prefix:"KittenTTS2-GGUF"},{id:"kitten_tts2_20261021_q4_0",display_name:"Kitten TTS 2 2026-10-21 Q4 GGUF (BF16 Embedding)",default:!1,format:"gguf",precision:"q4_0",target_directory:"KittenTTS2-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1},files:["KittenTTS2-GGUF/kitten-tts2-20261021-q4_0.gguf"],strip_prefix:"KittenTTS2-GGUF"}],dependencies:[],ui:{recommended_package:"kitten_tts2_20261021_q8_0",min_vram_gb:7,tags:["TTS","GGUF"],builtin_voices:["Bella","Jasper","Luna","Bruno","Rosie","Hugo","Kiki","Leo","Matthew","Elliot","Willow","Dolores","Victor","Dante","Alfred","Saoirse","Claire","Raven","Marcus","Herbert","Diana","Laurence","Maeve","Walter","Edith","Miles","Grace","Reginald","Iris","Frank","Serena","Julian","Eleanor","Otis","Vincent","Martha","Sable","Victoria","Arabic","Chinese","French","German","Hindi","Italian","Portuguese","Russian","Spanish"],default_voice:"Bruno",docs:["docs/models/kitten_tts2.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",lm_config:"model:lm/config.json",tokenizer_config:"model:lm/tokenizer_config.json",tokenizer_json:"model:lm/tokenizer.json",default_voices:"model:cpp/default/voices.json"},tensors:{language_model:{source:"weights:",prefix:"language_model"},s3gen:{source:"weights:",prefix:"s3gen"},speaker:{source:"weights:",prefix:"speaker"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",lm_config:"model:lm/config.json",tokenizer_config:"model:lm/tokenizer_config.json",tokenizer_json:"model:lm/tokenizer.json",default_voices:"model:cpp/default/voices.json"},tensors:{language_model:"model:lm/model.safetensors",s3gen:"model:native/s3gen_meanflow.safetensors",speaker:"model:speaker/model.safetensors"}}]},C8={schema_version:1,family:"kokoro_tts",display_name:"Kokoro 82M",description:"Kokoro 82M multilingual text-to-speech with 54 preset voices, optimized native CPU inference, and shared eSpeak-ng phonemization.",category:"tts",status:"community",tasks:["tts"],modes:["offline","streaming"],languages:["en-us","en-gb","es","fr-fr","hi","it","ja","pt-br","zh"],runtime:{tags:["gguf","stream"]},capabilities:{tts:["built_in_voices","long_form"]},options:{request:[{name:"voice_id",type:"enum",values:["af_alloy","af_aoede","af_bella","af_heart","af_jessica","af_kore","af_nicole","af_nova","af_river","af_sarah","af_sky","am_adam","am_echo","am_eric","am_fenrir","am_liam","am_michael","am_onyx","am_puck","am_santa","bf_alice","bf_emma","bf_isabella","bf_lily","bm_daniel","bm_fable","bm_george","bm_lewis","ef_dora","em_alex","em_santa","ff_siwis","hf_alpha","hf_beta","hm_omega","hm_psi","if_sara","im_nicola","jf_alpha","jf_gongitsune","jf_nezumi","jf_tebukuro","jm_kumo","pf_dora","pm_alex","pm_santa","zf_xiaobei","zf_xiaoni","zf_xiaoxiao","zf_xiaoyi","zm_yunjian","zm_yunxi","zm_yunxia","zm_yunyang"],description:"Built-in voice ID; structured voice input (CLI --voice-id) takes precedence.",required:!1,default:"af_heart"},{name:"language",type:"string",description:"Language selection precedence: voice-style language, transcript language (CLI --language), request-option language, then voice prefix. Must match the first voice in a blend.",required:!1},{name:"seed",type:"int",description:"Decoder noise seed for the current request; omitted requests choose a fresh random seed.",required:!1,min:0},{name:"speed",type:"float",description:"Speech speed multiplier; default 1.0. Must be finite and positive.",required:!1,default:1},{name:"phonemes",type:"string_list",description:"Kokoro-vocabulary phonemes to synthesize directly, bypassing the built-in eSpeak-ng G2P. One entry per chunk: entries are rendered in order and merged into one result, so the caller chooses the split points that only its own G2P knows. Each entry must be at most 510 symbols and must not be empty -- an entry is a chunk to speak, so drop it rather than leaving it blank. Text is still required and its language must still match the voice.",required:!1},{name:"text_chunk_size",type:"int",description:"Maximum codepoints per text chunk before synthesis. Default 100 for Chinese and Japanese voices, otherwise 240.",required:!1,min:1},{name:"return_timestamps",type:"bool",description:"Report where each phoneme group lands in the output, from the durations the model predicts before vocoding. Entries are phoneme groups in Kokoro's own alphabet, not written words, and do not map one-to-one onto the input text: see docs/models/kokoro_tts.md. Default false.",required:!1,default:!1}],session:[{name:"weight_type",type:"enum",preset:"weight_type_full",required:!1,default:"native",description:"Storage type for matrix multiplication weights."},{name:"conv_weight_type",type:"enum",preset:"weight_type_conv",required:!1,default:"native",description:"Storage type for convolution weights."},{name:"weight_context_mb",type:"int",description:"Weight loading context size in MiB; default 512.",required:!1,min:1,default:512},{name:"predictor_duration_graph_arena_mb",type:"int",description:"Predictor duration host graph-metadata arena size in MiB, not device workspace; default 384.",required:!1,min:1,default:384},{name:"predictor_text_graph_arena_mb",type:"int",description:"Predictor text host graph-metadata arena size in MiB, not device workspace; default 256.",required:!1,min:1,default:256},{name:"predictor_tail_graph_arena_mb",type:"int",description:"Predictor tail host graph-metadata arena size in MiB, not device workspace; default 640.",required:!1,min:1,default:640},{name:"graph_capacity_mode",type:"enum",description:"Offline graph capacity policy; default fixed.",values:["fixed","tiered","grow","double"],required:!1,default:"fixed"},{name:"max_input_tokens",type:"int",description:"Predictor graph input token capacity; default min(512, model context length).",required:!1,min:1},{name:"pre_tail_tokens",type:"int",description:"Optional prebuilt predictor tail token capacity; default 0.",required:!1,min:0,default:0},{name:"exec_plan",type:"string",description:"JSON object of component execution plans. Component: generator. Each plan accepts impl, backend, artifacts, and params. impl is default/ggml/rknn/neon. GGML keeps the session backend. The complete NEON generator requires a CPU session and ENGINE_ENABLE_NEON=ON on AArch64, without artifacts or params. RKNN requires artifacts.main and ENGINE_ENABLE_RKNN; omit backend. RKNN params: overlap (nonnegative integer, default 0, smaller than the emitted window), gain (boolean, default false; keeps a GGML generator reference).",required:!1,default:"{}"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"kokoro_82m_q8_0",display_name:"Kokoro 82M Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Kokoro-82M-GGUF",files:["Kokoro-82M-GGUF/kokoro-82m-q8_0.gguf"],strip_prefix:"Kokoro-82M-GGUF"},{id:"kokoro_82m_bf16",display_name:"Kokoro 82M BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"Kokoro-82M-GGUF",files:["Kokoro-82M-GGUF/kokoro-82m-bf16.gguf"],strip_prefix:"Kokoro-82M-GGUF"},{id:"kokoro_82m_generator_rk3588",display_name:"Kokoro 82M NPU Generator RKNN (RK3588)",format:"rknn",precision:"f16",target_directory:"Kokoro-82M-GGUF",files:["rk3588/generator_w512.rknn"],strip_prefix:"rk3588",description:"Pre-compiled RK3588 engine for the kokoro_tts RKNN generator sidecar (kokoro_tts.exec_plan, artifacts.main); installs beside the GGUF weights and is named by bare file name. Built by tools/rknn from the Kokoro-82M iSTFTNet generator export; see docs/build/rockchip-npu.md.",download:{kind:"huggingface_snapshot",repo:"wOvANAI/rknn-tts-engines",revision:"main",gated:!1}}],dependencies:[],ui:{recommended_package:"kokoro_82m_q8_0",tags:["TTS","GGUF"],builtin_voices:["af_alloy","af_aoede","af_bella","af_heart","af_jessica","af_kore","af_nicole","af_nova","af_river","af_sarah","af_sky","am_adam","am_echo","am_eric","am_fenrir","am_liam","am_michael","am_onyx","am_puck","am_santa","bf_alice","bf_emma","bf_isabella","bf_lily","bm_daniel","bm_fable","bm_george","bm_lewis","ef_dora","em_alex","em_santa","ff_siwis","hf_alpha","hf_beta","hm_omega","hm_psi","if_sara","im_nicola","jf_alpha","jf_gongitsune","jf_nezumi","jf_tebukuro","jm_kumo","pf_dora","pm_alex","pm_santa","zf_xiaobei","zf_xiaoni","zf_xiaoxiao","zf_xiaoyi","zm_yunjian","zm_yunxi","zm_yunxia","zm_yunyang"],default_voice:"af_heart",docs:["tests/kokoro_tts/MULTILINGUAL_GGUF.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",voices:"model:voices.json",vocabulary:"model:vocab.tsv"},tensors:{weights:{source:"weights:",prefix:"kokoro"}}}]},G8={schema_version:1,family:"kroko_asr",display_name:"Kroko Community ASR",description:"Native Zipformer2 RNN-T transcription for the public free Kroko Community single-language packages, with offline and stateful streaming inference, greedy and modified beam decoding, hotwords, endpoint segments, partial results, and word timestamps.",category:"asr",status:"community",tasks:["asr"],modes:["offline","streaming"],languages:["de","en","es","fr","it","he","nl","pt","sv","tr"],capabilities:{asr:["word_timestamps","partial_results","segments"]},options:{request:[{name:"language",type:"string",description:"Language code matching the selected single-language Kroko package; default auto uses the package language.",required:!1,default:"auto"},{name:"decoding_method",type:"enum",description:"RNN-T decoding method; greedy search remains the parity-tested default.",values:["greedy_search","modified_beam_search"],required:!1,default:"greedy_search"},{name:"num_beams",type:"int",description:"Maximum active hypotheses retained by modified beam search.",required:!1,min:1,max:64,default:4},{name:"blank_penalty",type:"float",description:"Non-negative score subtracted from the RNN-T blank logit.",required:!1,min:0,default:0},{name:"hotwords",type:"string",description:"Slash- or newline-separated natural-text phrases; requires modified beam search.",required:!1},{name:"hotwords_score",type:"float",description:"Non-negative per-token context boost for hotword phrases.",required:!1,min:0,default:1.5},{name:"enable_endpoint",type:"bool",description:"Enable automatic endpoint speech segments.",required:!1,default:!1},{name:"rule1_min_trailing_silence_sec",type:"float",description:"Endpoint timeout in seconds even when no speech token was decoded.",required:!1,min:0,default:2.4},{name:"rule2_min_trailing_silence_sec",type:"float",description:"Endpoint silence in seconds after a speech token was decoded.",required:!1,min:0,default:1.2},{name:"rule3_min_utterance_length_sec",type:"float",description:"Maximum utterance duration in seconds before an endpoint.",required:!1,min:0,default:20}],session:[],load:[]},runtime:{tags:["gguf","stream"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokens:"model:tokens.txt"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokens:"model:tokens.txt"},tensors:{weights:"model:model.safetensors"}}],package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"kroko_asr_community_q8_0",display_name:"Kroko Community ASR Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Kroko-ASR-GGUF",files:["Kroko-ASR-GGUF/kroko-en-community-64-l-q8_0.gguf"],strip_prefix:"Kroko-ASR-GGUF"}],dependencies:[],ui:{recommended_package:"kroko_asr_community_q8_0",tags:["ASR","GGUF"],docs:["docs/asr.md","docs/models/kroko_asr.md","docs/gguf.md"]}},F8={schema_version:1,family:"kugelaudio",display_name:"KugelAudio-0-Open",description:"KugelAudio text-to-speech with bundled preset voices and incremental audio output.",category:"tts",status:"experimental",tasks:["tts"],modes:["offline","streaming"],languages:["en","de","fr","es","it","pt","nl","pl","ru","uk","cs","ro","hu","sv","da","fi","no","el","bg","sk","hr","sr","tr"],runtime:{tags:["gguf"]},capabilities:{tts:["long_form"]},options:{request:[{name:"voice_id",type:"enum",values:["default","clear","english_female","english_male"],description:"Bundled preset voice.",default:"default",required:!1},{name:"num_inference_steps",type:"int",description:"Diffusion steps per acoustic frame, from 1 to 1000; omitted uses the checkpoint's diffusion_head_config.ddpm_num_inference_steps.",min:1,max:1e3,default:20,required:!1},{name:"guidance_scale",type:"float",description:"Diffusion classifier-free guidance; 1 disables the unconditional pass. Any finite value is accepted; negative values enter CFG arithmetic.",default:3,required:!1},{name:"max_tokens",type:"int",description:"Maximum autoregressive tokens per text chunk.",min:1,default:2048,required:!1},{name:"do_sample",type:"bool",description:"Sample autoregressive speech control tokens instead of greedy decoding.",default:!1,required:!1},{name:"temperature",type:"float",description:"Autoregressive sampling temperature when do_sample is enabled. Any finite value is accepted; negative values disable sampling.",default:1,required:!1},{name:"seed",type:"int",description:"Random seed; -1 chooses a random seed.",min:-1,default:1234,required:!1},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per long-form text chunk.",min:1,default:300,required:!1},{name:"text_chunk_mode",type:"enum",values:["default","tag_aware","japanese","endline"],description:"Framework long-form text splitting mode.",default:"default",required:!1}],session:[{name:"weight_type",type:"enum",values:["native","f32","f16","bf16","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k","q8_0","nvfp4"],description:"Weight storage type; native preserves packaged tensor types.",default:"native",required:!1}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"kugelaudio_0_open_bf16",display_name:"KugelAudio-0-Open BF16 GGUF",default:!1,format:"gguf",precision:"bf16",target_directory:"KugelAudio-0-Open-GGUF",files:["KugelAudio-0-Open-GGUF/kugelaudio-0-open-bf16.gguf"],strip_prefix:"KugelAudio-0-Open-GGUF"},{id:"kugelaudio_0_open_q8_0",display_name:"KugelAudio-0-Open Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"KugelAudio-0-Open-GGUF",files:["KugelAudio-0-Open-GGUF/kugelaudio-0-open-q8_0.gguf"],strip_prefix:"KugelAudio-0-Open-GGUF"},{id:"kugelaudio_0_open_q4_k",display_name:"KugelAudio-0-Open Q4_K GGUF",default:!1,format:"gguf",precision:"q4_k",target_directory:"KugelAudio-0-Open-GGUF",files:["KugelAudio-0-Open-GGUF/kugelaudio-0-open-q4_k.gguf"],strip_prefix:"KugelAudio-0-Open-GGUF"}],dependencies:[],ui:{recommended_package:"kugelaudio_0_open_q8_0",default_voice:"default",builtin_voices:["default","clear","english_female","english_male"],tags:["TTS","Stream","GGUF"],docs:["docs/models/kugelaudio.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_json:"model:text_tokenizer/tokenizer.json",tokenizer_config:"model:text_tokenizer/tokenizer_config.json"},tensors:{model_weights:"weights:"}}]},M8={schema_version:1,family:"latentsync",display_name:"LatentSync 1.6",description:"Audio-conditioned lip synchronization of a reference video.",category:"audio_generation",status:"experimental",tasks:["sfx"],modes:["offline"],languages:["auto"],capabilities:{},runtime:{tags:["gguf"]},options:{request:[{name:"reference_video_file",type:"path",required:!0,description:"Reference video containing the face to synchronize. Requires FFmpeg on PATH."},{name:"num_inference_steps",required:!1,type:"int",min:1,max:999,default:20,description:"Number of DDIM denoising steps."},{name:"cache_interval",required:!1,type:"int",min:1,default:1,description:"DeepCache refresh interval. One disables caching; three matches the upstream DeepCache preset. Higher values trade output fidelity for speed."},{name:"guidance_scale",required:!1,type:"float",min:0,default:1.5,description:"Audio classifier-free guidance scale; values at or below one disable CFG."},{name:"frames_per_chunk",required:!1,type:"int",min:1,max:24,default:16,description:"Frames processed together by the temporal denoiser."},{name:"fps",required:!1,type:"float",min:1,default:25,description:"Video sampling and output frame rate."},{name:"seed",required:!1,type:"int",min:0,default:1247,description:"Random seed for latent noise and VAE posterior sampling."}],session:[{name:"weight_type",required:!1,type:"enum",values:["native","f32","f16","bf16","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k","q8_0","nvfp4"],default:"native",description:"Weight storage type; native preserves packaged tensor types."},{name:"vae_cudnn_f16",required:!1,type:"bool",default:!1,description:"Use cuDNN FP16 VAE execution on CUDA. Requires a build with GGML_CUDA_CUDNN_CONV2D=ON; VAE weights are converted to FP16."},{name:"unet_cudnn_f16",required:!1,type:"bool",default:!1,description:"Use cuDNN FP16 convolutions and residual activations in the U-Net on CUDA. Requires a build with GGML_CUDA_CUDNN_CONV2D=ON and FP16 U-Net weights."},{name:"mem_saver",required:!1,type:"bool",default:!1,description:"Release components between pipeline stages and run CFG branches sequentially to reduce peak VRAM. Reloading the VAE for decoding adds some latency."}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/LatentSync-1.6-GGUF",revision:"main",gated:!1}},packages:[{id:"latentsync_1_6_q8_0_f16",display_name:"LatentSync 1.6 Q8/F16",format:"gguf",precision:"q8_0",default:!0,target_directory:"LatentSync-1.6-GGUF",files:["latentsync-1.6-q8_0-f16.gguf"]},{id:"latentsync_1_6_f16",display_name:"LatentSync 1.6 F16",format:"gguf",precision:"f16",default:!1,target_directory:"LatentSync-1.6-GGUF",files:["latentsync-1.6-f16.gguf"]},{id:"latentsync_1_6_f32_f16",display_name:"LatentSync 1.6 F32/F16",format:"gguf",precision:"orig",default:!1,target_directory:"LatentSync-1.6-GGUF",files:["latentsync-1.6-f32-f16.gguf"]}],dependencies:[],ui:{recommended_package:"latentsync_1_6_q8_0_f16",tags:["GGUF"],docs:["docs/models/latentsync.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{detector_config:"model:detector_config.json",landmark_config:"model:landmark_config.json"},tensors:{weights:{source:"weights:",prefix:"weights"}}}]},z8={schema_version:1,family:"lfm2_audio",display_name:"LFM2.5-Audio",description:"Liquid AI's LFM2.5-Audio, loaded from the llama.cpp-format GGUF components Liquid publishes. ASR: a FastConformer encoder feeds an LFM2 hybrid short-conv/attention backbone. TTS: the backbone generates audio frames through a depthformer, and an LFM2 detokenizer and ISTFT turn them into 24 kHz audio. S2S: a spoken question goes in as for ASR, and the reply comes out as interleaved text and audio.",category:"asr",status:"experimental",tasks:["asr","tts","s2s"],modes:["offline","streaming"],languages:["en","ja"],capabilities:{asr:["vad_chunking"],tts:["built_in_voices","long_form"]},options:{request:[{name:"language",type:"string",description:"Must match the checkpoint's language (en or ja) when given; each published checkpoint transcribes and speaks one language.",required:!1,default:"auto"},{name:"max_tokens",type:"int",description:"ASR: transcript tokens per audio chunk, 512 by default. TTS: audio frames (80 ms each) per text chunk, 512 by default. S2S: text tokens and audio frames of the reply together, 1024 by default. A transcript, a text chunk's speech or a reply that reaches it is cut off there, with a warning on stderr.",required:!1,min:1},{name:"audio_chunk_mode",type:"enum",description:"Audio chunking mode. auto transcribes input up to audio_chunk_duration_sec whole and splits longer input at pauses found by the bundled VAD (fixed chunks when the VAD model is absent); vad always splits at pauses and skips silence; fixed cuts every audio_chunk_duration_sec; none transcribes the whole input at once.",values:["auto","fixed","vad","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Longest chunk in seconds, at least 1. With fixed chunks, a final piece shorter than 1 second and the chunk before it split their audio evenly.",required:!1,min:1,default:30},{name:"temperature",type:"float",description:"TTS and S2S: audio code sampling temperature, 0.8 by default for TTS and 1.0 for S2S; 0 picks the most likely code.",required:!1,min:0},{name:"top_k",type:"int",description:"TTS and S2S: sample audio codes from the k most likely, 64 by default for TTS and 4 for S2S; 0 keeps all, 1 is greedy.",required:!1,min:0},{name:"text_temperature",type:"float",description:"S2S: text token sampling temperature; 0, the default, picks the most likely token, as liquid-audio's README and demo do.",required:!1,min:0,default:0},{name:"text_top_k",type:"int",description:"S2S: with a text_temperature above 0, sample text tokens from the k most likely; 0, the default, keeps all, and 1 is greedy.",required:!1,min:0,default:0},{name:"seed",type:"int",description:"TTS and S2S: sampling seed; omitted requests choose a random seed. TTS text chunk i uses seed + i. S2S text sampling draws from a stream of its own, so with the same seed a reply follows the greedy-text reply until a text token differs.",required:!1,min:0},{name:"text_chunk_mode",type:"enum",description:"TTS: long-form text chunking mode; japanese for the Japanese checkpoint and default otherwise when omitted.",values:["default","tag_aware","japanese","endline"],required:!1},{name:"text_chunk_size",type:"int",description:"TTS: maximum Unicode codepoints per text chunk, each spoken as its own turn.",required:!1,min:1,default:200},{name:"stream_frames_per_event",type:"int",description:"TTS and S2S streaming: audio frames (80 ms each) per event; each event's audio is final. ASR runs offline only.",required:!1,min:1,default:1},{name:"return_codes",type:"bool",description:"S2S: also return the reply's text tokens and audio codes as an lfm2_audio.reply artifact, to send back as history with the conversation's next turn.",required:!1,default:!1}],session:[{name:"model_gguf",type:"string",description:"Backbone GGUF, relative to the model directory. Defaults to the directory's only backbone GGUF.",required:!1,default:""},{name:"mmproj_gguf",type:"string",description:"Audio encoder (mmproj) GGUF, relative to the model directory. Defaults to mmproj-<backbone GGUF name>, or else the directory's only mmproj GGUF.",required:!1,default:""},{name:"vocoder_gguf",type:"string",description:"TTS/S2S vocoder GGUF (depthformer), relative to the model directory. Defaults to vocoder-<backbone GGUF name>, or the directory's only vocoder GGUF.",required:!1,default:""},{name:"detokenizer_gguf",type:"string",description:"TTS/S2S audio detokenizer GGUF, relative to the model directory. Defaults to tokenizer-<backbone GGUF name>, or the directory's only tokenizer GGUF.",required:!1,default:""},{name:"vad_model_path",type:"string",description:"Path to the VAD model (any built-in VAD family; default Silero VAD) used by automatic audio chunking.",required:!1,default:"assets/framework/models/silero_vad"},{name:"max_pass_duration_sec",type:"float",description:"Most audio, in seconds, the encoder takes in one pass: an ASR chunk (the whole input with audio_chunk_mode=none) or the S2S question. Longer audio is rejected before it is encoded.",required:!1,min:1,default:120},{name:"cpu_repack",type:"bool",description:"On the CPU, multiply the matrices with the kernels of ggml's CPU extra buffer types where those take the weight's type and shape: the repacked ones take Q4_0 on x86 with AVX2 and Q4_0, Q8_0 and Q6_K on Arm; where ggml's AMX buffer is built, it comes first and also takes F16, Q8_0 and K-quants. Where the token embedding's type is taken, the text head gets a copy of it. Other backends ignore it.",required:!1,default:!0},{name:"conversation_cache_slots",type:"int",description:"S2S: how many conversations a session keeps the earlier questions' encoder output and prefill blocks of, for their next turns, the least recently used dropped first; 0 keeps none. Each kept conversation takes up to about 350 MiB of host memory at the conversation limit, and a slot that no conversation has used takes nothing. Output does not depend on it.",required:!1,min:0,default:4}],load:[]},runtime:{tags:["gguf","cpu","metal","cuda"]},packages:[{id:"lfm2_audio_1_5b_q8_0",display_name:"LFM2.5-Audio-1.5B Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"LFM2.5-Audio-1.5B-GGUF",files:["LFM2.5-Audio-1.5B-Q8_0.gguf","mmproj-LFM2.5-Audio-1.5B-Q8_0.gguf","vocoder-LFM2.5-Audio-1.5B-Q8_0.gguf","tokenizer-LFM2.5-Audio-1.5B-Q8_0.gguf"],download:{kind:"huggingface_snapshot",repo:"LiquidAI/LFM2.5-Audio-1.5B-GGUF",revision:"7d525f883a077e20afb782f2ff618edcae0e39e4",gated:!1}},{id:"lfm2_audio_1_5b_f16",display_name:"LFM2.5-Audio-1.5B F16 GGUF",format:"gguf",precision:"f16",target_directory:"LFM2.5-Audio-1.5B-GGUF",files:["LFM2.5-Audio-1.5B-F16.gguf","mmproj-LFM2.5-Audio-1.5B-F16.gguf","vocoder-LFM2.5-Audio-1.5B-F16.gguf","tokenizer-LFM2.5-Audio-1.5B-F16.gguf"],download:{kind:"huggingface_snapshot",repo:"LiquidAI/LFM2.5-Audio-1.5B-GGUF",revision:"7d525f883a077e20afb782f2ff618edcae0e39e4",gated:!1}},{id:"lfm2_audio_1_5b_q4_0",display_name:"LFM2.5-Audio-1.5B Q4_0 GGUF",format:"gguf",precision:"q4_0",target_directory:"LFM2.5-Audio-1.5B-GGUF",files:["LFM2.5-Audio-1.5B-Q4_0.gguf","mmproj-LFM2.5-Audio-1.5B-Q4_0.gguf","vocoder-LFM2.5-Audio-1.5B-Q4_0.gguf","tokenizer-LFM2.5-Audio-1.5B-Q4_0.gguf"],download:{kind:"huggingface_snapshot",repo:"LiquidAI/LFM2.5-Audio-1.5B-GGUF",revision:"7d525f883a077e20afb782f2ff618edcae0e39e4",gated:!1}},{id:"lfm2_audio_1_5b_jp_q8_0",display_name:"LFM2.5-Audio-1.5B-JP Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"LFM2.5-Audio-1.5B-JP-GGUF",files:["LFM2.5-Audio-1.5B-JP-Q8_0.gguf","mmproj-LFM2.5-Audio-1.5B-JP-Q8_0.gguf","vocoder-LFM2.5-Audio-1.5B-JP-Q8_0.gguf","tokenizer-LFM2.5-Audio-1.5B-JP-Q8_0.gguf"],download:{kind:"huggingface_snapshot",repo:"LiquidAI/LFM2.5-Audio-1.5B-JP-GGUF",revision:"64b96718b341dbd5650f9e85627cecdcbd4ac61b",gated:!1}},{id:"lfm2_audio_1_5b_jp_f16",display_name:"LFM2.5-Audio-1.5B-JP F16 GGUF",format:"gguf",precision:"f16",target_directory:"LFM2.5-Audio-1.5B-JP-GGUF",files:["LFM2.5-Audio-1.5B-JP-F16.gguf","mmproj-LFM2.5-Audio-1.5B-JP-F16.gguf","vocoder-LFM2.5-Audio-1.5B-JP-F16.gguf","tokenizer-LFM2.5-Audio-1.5B-JP-F16.gguf"],download:{kind:"huggingface_snapshot",repo:"LiquidAI/LFM2.5-Audio-1.5B-JP-GGUF",revision:"64b96718b341dbd5650f9e85627cecdcbd4ac61b",gated:!1}},{id:"lfm2_audio_1_5b_jp_f32",display_name:"LFM2.5-Audio-1.5B-JP F32 GGUF",format:"gguf",precision:"f32",target_directory:"LFM2.5-Audio-1.5B-JP-GGUF",files:["LFM2.5-Audio-1.5B-JP-F32.gguf","mmproj-LFM2.5-Audio-1.5B-JP-F32.gguf","vocoder-LFM2.5-Audio-1.5B-JP-F32.gguf","tokenizer-LFM2.5-Audio-1.5B-JP-F32.gguf"],download:{kind:"huggingface_snapshot",repo:"LiquidAI/LFM2.5-Audio-1.5B-JP-GGUF",revision:"64b96718b341dbd5650f9e85627cecdcbd4ac61b",gated:!1}},{id:"lfm2_audio_1_5b_jp_q4_0",display_name:"LFM2.5-Audio-1.5B-JP Q4_0 GGUF",format:"gguf",precision:"q4_0",target_directory:"LFM2.5-Audio-1.5B-JP-GGUF",files:["LFM2.5-Audio-1.5B-JP-Q4_0.gguf","mmproj-LFM2.5-Audio-1.5B-JP-Q4_0.gguf","vocoder-LFM2.5-Audio-1.5B-JP-Q4_0.gguf","tokenizer-LFM2.5-Audio-1.5B-JP-Q4_0.gguf"],download:{kind:"huggingface_snapshot",repo:"LiquidAI/LFM2.5-Audio-1.5B-JP-GGUF",revision:"64b96718b341dbd5650f9e85627cecdcbd4ac61b",gated:!1}}],dependencies:[],ui:{tags:["ASR","TTS","GGUF","Stream"],recommended_package:"lfm2_audio_1_5b_q8_0",docs:["docs/models/lfm2_audio.md"],summary:"LFM2.5-Audio transcription, speech and spoken chat (English and Japanese checkpoints) from Liquid's published GGUFs.",builtin_voices:["us_male","us_female","uk_male","uk_female"],default_voice:"us_male"},sources:[{format:"gguf",roots:{model:"."},files:{},optional_files:{},tensors:{}}]},E8={schema_version:1,family:"lfm3_audio",display_name:"LFM3-Audio",description:"Liquid AI's LFM3-Audio-2B, from the llama.cpp-format GGUFs Liquid publishes or the upstream safetensors directory. ASR: a log-mel LFM2 encoder feeds an LFM3 hybrid conv/attention backbone. TTS: the backbone drives a bidirectional MaskGIT depth decoder (12 codebooks, 12.5 Hz) and the LiquidCodec decoder and ISTFT give 24 kHz audio. S2S: a spoken question in, interleaved text and audio out, with client-held multi-turn history.",category:"asr",status:"experimental",tasks:["asr","tts","s2s"],modes:["offline","streaming"],languages:["en","ar","da","de","el","es","fi","fr","he","it","ja","ko","nl","pl","pt","sv","tr","zh"],capabilities:{asr:["vad_chunking"],tts:["built_in_voices","long_form"]},options:{request:[{name:"language",type:"string",description:"ASR: ISO code of the spoken language (prompt 'Perform ASR in <English name>.'); auto lets the model infer it ('Perform ASR.'). TTS: picks the default voice of that language when no voice is given.",required:!1,default:"auto"},{name:"max_tokens",type:"int",min:1,description:"ASR: text tokens per audio chunk (max(512, 8 per second of audio); chat 512, or 2048 with enable_thinking). TTS: audio frames (80 ms) per text chunk (512). S2S: text tokens and frames of the reply together (1024).",required:!1},{name:"audio_chunk_mode",type:"enum",values:["auto","fixed","vad","none"],description:"ASR chunking, as lfm2_audio.",required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",min:1,description:"ASR: longest chunk in seconds; auto keeps input up to this long whole and splits longer input at VAD pauses.",required:!1,default:300},{name:"max_audio_tail_frames",type:"int",min:0,description:"S2S: most audio frames after the reply text ends before the turn is closed with an end-of-audio frame; 0 disables the cap.",required:!1,default:375},{name:"temperature",type:"float",min:0,description:"TTS and S2S: audio code temperature; 0 picks the most likely code. The default is the checkpoint's generation_config.json audio_temperature.",required:!1,default:1},{name:"top_k",type:"int",min:0,description:"TTS and S2S: sample audio codes from the k most likely; 0 keeps all. The default is the checkpoint's audio_top_k.",required:!1,default:128},{name:"repetition_penalty",type:"float",min:.01,description:"TTS and S2S: audio repetition penalty over the last 4096 frames (the checkpoint's audio_repetition_window) of each codebook; must be positive, 1 disables it. The default is the checkpoint's audio_repetition_penalty.",required:!1,default:1.1},{name:"text_temperature",type:"float",min:0,description:"ASR and S2S: text token temperature; 0 is greedy.",required:!1,default:0},{name:"text_top_k",type:"int",min:0,description:"ASR and S2S: sample text tokens from the k most likely; 0 keeps all.",required:!1,default:0},{name:"seed",type:"int",description:"Sampling seed (random when absent); TTS text chunk i uses seed + i.",required:!1,min:0},{name:"text_chunk_mode",type:"enum",values:["default","tag_aware","japanese","endline"],description:"TTS long-form text chunking (values as text::parse_text_chunk_mode_override accepts).",required:!1},{name:"text_chunk_size",type:"int",min:1,description:"TTS: target characters per text chunk.",required:!1,default:200},{name:"stream_frames_per_event",type:"int",min:1,description:"TTS and S2S streaming: audio frames per event.",required:!1,default:1},{name:"return_codes",type:"bool",description:"S2S: return the lfm3_audio.reply artifact a client sends back with the next turn.",required:!1,default:!1},{name:"chat",type:"bool",description:"ASR task: answer the spoken input as a text chat reply instead of transcribing it.",required:!1,default:!1},{name:"enable_thinking",type:"bool",description:"ASR chat: let the model think first; only the text after </think> is returned.",required:!1,default:!1}],session:[{name:"weight_type",type:"enum",values:["native","f16","f32"],description:"Weight storage at load. native keeps the file's types (BF16 falls back to F16 where the backend lacks BF16). f32 also uses F32 KV caches and explicit attention, for parity checks.",required:!1,default:"native"},{name:"cpu_repack",type:"bool",description:"CPU: repack matmul weights for ggml's extra buffer kernels.",required:!1,default:!0},{name:"vad_model_path",type:"string",description:"VAD model (any built-in VAD family; default Silero VAD) used by ASR audio_chunk_mode auto/vad.",required:!1,default:"assets/framework/models/silero_vad"},{name:"max_pass_duration_sec",type:"float",min:1,description:"Most audio, in seconds, the encoder takes in one pass (an ASR chunk or the S2S question); longer audio is rejected before it is encoded.",required:!1,default:300}],load:[]},runtime:{tags:["gguf","stream","cpu","metal","cuda"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"LiquidAI/LFM3-Audio-2B-GGUF",revision:"fcfae9027c00a6f3f872c48a841cfeb77e2b5a1c",gated:!1}},packages:[{id:"lfm3_audio_2b_q8_0",display_name:"LFM3-Audio-2B Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"LFM3-Audio-2B-GGUF",files:["LFM3-Audio-2B-Q8_0.gguf","mmproj-LFM3-Audio-2B-Q8_0.gguf"]},{id:"lfm3_audio_2b_f16",display_name:"LFM3-Audio-2B F16 GGUF",format:"gguf",precision:"f16",target_directory:"LFM3-Audio-2B-GGUF",files:["LFM3-Audio-2B-F16.gguf","mmproj-LFM3-Audio-2B-F16.gguf"]},{id:"lfm3_audio_2b_bf16",display_name:"LFM3-Audio-2B BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"LFM3-Audio-2B-GGUF",files:["LFM3-Audio-2B-BF16.gguf","mmproj-LFM3-Audio-2B-BF16.gguf"]},{id:"lfm3_audio_2b_q4_k_m",display_name:"LFM3-Audio-2B Q4_K_M GGUF (Q8_0 mmproj)",format:"gguf",precision:"q4_k_m",target_directory:"LFM3-Audio-2B-GGUF",files:["LFM3-Audio-2B-Q4_K_M.gguf","mmproj-LFM3-Audio-2B-Q8_0.gguf"]},{id:"lfm3_audio_2b_q4_0",display_name:"LFM3-Audio-2B Q4_0 GGUF (Q8_0 mmproj)",format:"gguf",precision:"q4_0",target_directory:"LFM3-Audio-2B-GGUF",files:["LFM3-Audio-2B-Q4_0.gguf","mmproj-LFM3-Audio-2B-Q8_0.gguf"]}],dependencies:[],ui:{tags:["ASR","TTS","GGUF","Stream"],recommended_package:"lfm3_audio_2b_q8_0",docs:["docs/models/lfm3_audio.md"],summary:"LFM3-Audio transcription, multilingual speech and spoken chat from Liquid's published GGUFs.",builtin_voices:["arabic_female","arabic_male","danish_female","danish_male","german_female","german_male","greek_female","greek_male","british_english_female","british_english_male","american_english_female","american_english_male","finnish_female","finnish_male","french_female","french_male","hebrew_female","hebrew_male","italian_female","italian_male","japanese_female","japanese_male","korean_female","korean_male","dutch_female","dutch_male","polish_female","polish_male","portuguese_female","portuguese_male","spanish_female","spanish_male","swedish_female","swedish_male","turkish_female","turkish_male","chinese_female","chinese_male"],default_voice:"american_english_female"},sources:[{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_json:"model:tokenizer.json",codec_config:"model:audio_tokenizer/config.json"},tensors:{model:"model:model.safetensors",codec:"model:audio_tokenizer/model.safetensors"}}]},U8={schema_version:1,family:"liveavatar",display_name:"LiveAvatar",description:"LiveAvatar audio-driven avatar video generation using the Wan2.2 S2V architecture.",category:"audio_generation",status:"experimental",tasks:["sfx"],modes:["offline","streaming"],languages:["auto"],runtime:{tags:["cuda","gguf","stream"]},capabilities:{sfx:["prompt_generation"]},options:{request:[{name:"reference_image_file",type:"string",description:"Reference image path used as the identity/appearance condition.",required:!0},{name:"generation_mode",type:"enum",values:["offline","liveavatar"],description:"Use whole-clip generation or LiveAvatar blockwise generation.",required:!1,default:"offline"},{name:"height",type:"int",description:"Generated frame height; must be a positive multiple of 16.",required:!1,min:16,default:480},{name:"width",type:"int",description:"Generated frame width; must be a positive multiple of 16.",required:!1,min:16,default:832},{name:"num_frames",type:"int",description:"Frames generated per LiveAvatar segment; must be positive and a multiple of 4 in blockwise mode (streaming or generation_mode=liveavatar).",required:!1,min:1,default:48},{name:"num_clips",type:"int",description:"Maximum LiveAvatar clips to generate from the input audio.",required:!1,min:1,default:1},{name:"num_inference_steps",type:"int",description:"Denoising steps; offline generation uses UniPC, blockwise generation uses Euler. The LiveAvatar DMD adapter is designed for 4 steps.",required:!1,min:1,default:4},{name:"guidance_scale",type:"float",description:"Classifier-free guidance scale; LiveAvatar blockwise generation requires 0.",required:!1,min:0,default:0},{name:"batched_cfg",type:"bool",description:"Run classifier-free guidance in one denoiser graph.",required:!1,default:!0},{name:"sage_attention",type:"bool",description:"Use CUDA SageAttention when the backend supports it.",required:!1,default:!0},{name:"mem_saver",type:"bool",description:"Reuse immutable condition data and temporary denoiser graph storage across sequential blocks.",required:!1,default:!0},{name:"denoiser_layerwise",type:"bool",description:"Run the denoiser in layerwise mode. Offline generation requires batched_cfg=true and guidance_scale > 1.",required:!1,default:!1},{name:"denoiser_layerwise_batch",type:"int",description:"Layer group size used by layerwise denoising.",required:!1,min:1,default:16},{name:"vae_encoder_chunk_size",type:"int",description:"Cached VAE encoder chunk size.",required:!1,min:1,default:16},{name:"vae_decoder_tile_size",type:"int",description:"Opt-in VAE decoder spatial tile size for large outputs; 0 disables tiling. Enabled tile sizes must be multiples of 8 and larger than the 64-pixel overlap.",required:!1,min:0,default:0},{name:"target_cache_blocks",type:"int",description:"Target KV cache window in block units; 0 keeps the full clip cache.",required:!1,min:0,default:0},{name:"vae_cache_f16",type:"bool",description:"Store cached VAE encoder state in F16.",required:!1,default:!0},{name:"shift",type:"float",description:"Flow scheduler shift; must be > 0.",required:!1,min:0,default:3},{name:"negative_prompt",type:"string",description:"Negative prompt for classifier-free guidance.",required:!1},{name:"seed",type:"int",description:"Generation seed.",required:!1,min:0,default:420}],session:[{name:"denoiser_weight_streaming",type:"bool",description:"Keep denoiser transformer blocks in host memory and stage layer groups on the accelerator.",required:!1,default:!1}],load:[{name:"support_gguf",type:"string",description:"Support GGUF containing text_encoder/audio_encoder tensors and the embedded tokenizer sidecar.",required:!1,default:"Wan2.2-S2V-Support-Q4_K_S-F16.gguf"},{name:"vae_gguf",type:"string",description:"Wan video VAE component GGUF file relative to the model root.",required:!1,default:"Wan2.2-S2V-VAE-F16.gguf"},{name:"denoiser_gguf",type:"string",description:"Denoiser DiT GGUF file relative to the model root.",required:!1,default:"Wan2.2-S2V-14B-NVFP4-LORA.gguf"}]},dependencies:[],package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/LiveAvatar-GGUF",revision:"main",gated:!1}},packages:[{id:"liveavatar_nvfp4_lora",display_name:"LiveAvatar NVFP4 LoRA GGUF",default:!0,format:"gguf",precision:"native",target_directory:"LiveAvatar-GGUF",files:["Wan2.2-S2V-Support-Q4_K_S-F16.gguf","Wan2.2-S2V-VAE-F16.gguf","Wan2.2-S2V-14B-NVFP4-LORA.gguf"]}],sources:[{format:"gguf",roots:{model:"."},files:{tokenizer_model:"model:tokenizer/spiece.model"},tensors:{text_encoder_weights:{source:"model:Wan2.2-S2V-Support-Q4_K_S-F16.gguf",prefix:"text_encoder"},audio_encoder_weights:{source:"model:Wan2.2-S2V-Support-Q4_K_S-F16.gguf",prefix:"audio_encoder"}}},{format:"gguf",roots:{model:"."},tensors:{vae_weights:{source:"model:Wan2.2-S2V-VAE-F16.gguf",prefix:"vae"}}},{format:"gguf",roots:{model:"."},tensors:{denoiser_weights:{source:"model:Wan2.2-S2V-14B-NVFP4-LORA.gguf"}}}],ui:{recommended_package:"liveavatar_nvfp4_lora",tags:["SFX","GGUF","Stream"],docs:["docs/models/liveavatar.md"]}},R8={schema_version:1,family:"magenta_realtime_2",display_name:"Magenta RealTime 2",description:"Frame-autoregressive stereo music generation with text, audio style, and MIDI conditioning.",category:"audio_generation",status:"experimental",tasks:["music"],modes:["offline","streaming"],languages:["auto"],runtime:{tags:["gguf"]},capabilities:{music:["instrumental","style_control"]},options:{request:[{name:"duration_sec",type:"float",description:"Requested music duration in seconds.",min:.04,default:10,required:!1},{name:"temperature",type:"float",description:"Sampling temperature; zero selects greedy decoding.",min:0,default:1.3,required:!1},{name:"top_k",type:"int",description:"Sampling candidate limit; zero keeps all 1024 valid codes.",min:0,max:1024,default:40,required:!1},{name:"seed",type:"int",description:"Generation seed.",min:0,max:4294967295,default:0,required:!1},{name:"guidance_scale",type:"float",description:"MusicCoCa style guidance, discretized to the model's trained conditioning tokens.",min:-1,max:7,default:3,required:!1},{name:"note_guidance_scale",type:"float",description:"MIDI note guidance.",min:-1,max:7,default:1,required:!1},{name:"drum_guidance_scale",type:"float",description:"Drum guidance.",min:-1,max:7,default:1,required:!1},{name:"use_mapper",type:"bool",description:"Map text style embeddings into the audio embedding space.",default:!0,required:!1},{name:"pianoroll_file",type:"string",description:"Optional JSON array of 128 MIDI pitch states per frame at 25 Hz: -1 masked, 0 off, 1 sustain, 2 onset, 3 model chooses.",required:!1},{name:"drums",type:"int",description:"Drum conditioning: -1 leaves drums unspecified, 0 requests no drums, 1 requests drums.",required:!1,min:-1,max:1,default:-1}],session:[{name:"weight_type",type:"enum",preset:"weight_type_full",description:"Transformer weight storage type.",default:"native",required:!1}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/Magenta-RealTime-2-GGUF",revision:"main",gated:!1}},packages:[{id:"magenta_realtime_2_small_f16",display_name:"Magenta RealTime 2 Small F16",format:"gguf",precision:"f16",target_directory:"Magenta-RealTime-2-GGUF",files:["magenta-rt2-small-f16.gguf"],default:!0},{id:"magenta_realtime_2_small_q8_0",display_name:"Magenta RealTime 2 Small Q8_0",format:"gguf",precision:"q8_0",target_directory:"Magenta-RealTime-2-GGUF",files:["magenta-rt2-small-q8_0.gguf"]},{id:"magenta_realtime_2_base_f16",display_name:"Magenta RealTime 2 Base F16",format:"gguf",precision:"f16",target_directory:"Magenta-RealTime-2-GGUF",files:["magenta-rt2-base-f16.gguf"]},{id:"magenta_realtime_2_base_q8_0",display_name:"Magenta RealTime 2 Base Q8_0",format:"gguf",precision:"q8_0",target_directory:"Magenta-RealTime-2-GGUF",files:["magenta-rt2-base-q8_0.gguf"]}],dependencies:[],ui:{recommended_package:"magenta_realtime_2_small_f16",tags:["Music","GGUF"],docs:["docs/models/magenta_realtime_2.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",musiccoca_config:"model:musiccoca.json",musiccoca_tokenizer:"model:spm.model"},tensors:{weights:{source:"weights:",prefix:"generator"},musiccoca:{source:"weights:",prefix:"musiccoca"}}}]},B8={schema_version:1,family:"magpie_tts",display_name:"MagpieTTS Multilingual 357M",description:"NVIDIA MagpieTTS is a multilingual neural text-to-speech model that generates NanoCodec audio tokens from text using baked speaker context embeddings, a decoder-only transformer, and an autoregressive local transformer before decoding the tokens to waveform audio.",category:"tts",status:"supported",tasks:["tts"],modes:["offline"],languages:["ar-AE","ar-MSA","ar-SA","de","en","es","fr","hi","it","ko","pt-BR","vi","zh"],runtime:{tags:["gguf"]},capabilities:{tts:["long_form"]},options:{request:[{name:"language",type:"string",description:"Target synthesis language code used by the Magpie text frontend; default en.",required:!1,default:"en"},{name:"voice_id",type:"enum",description:"Packaged MagpieTTS voice name; default Aria. Numeric speaker index strings are also accepted within the checkpoint speaker count.",values:["Aria","Jason","John","Leo","Sofia"],required:!1,default:"Aria"},{name:"temperature",type:"float",description:"Autoregressive audio-token sampling temperature; default 0.6 from the v2607 model config.",required:!1,min:0,default:.6},{name:"top_k",type:"int",description:"Autoregressive audio-token top-k sampling limit; default 80.",required:!1,min:1,default:80},{name:"guidance_scale",type:"float",description:"Classifier-free guidance scale for Magpie decoder logits; default 2.5.",required:!1,min:0,default:2.5},{name:"max_tokens",type:"int",description:"Maximum Magpie decoder frames per text segment; default 500 from the v2607 model config.",required:!1,min:1,default:500},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per long-form text chunk; default 100 for zh and ko, otherwise 300.",required:!1,min:1},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode.",values:["default","tag_aware","japanese","endline"],required:!1,default:"default"},{name:"seed",type:"int",description:"Seed for audio-token sampling; default 0.",required:!1,min:0,default:0}],session:[{name:"graph_arena_mb",type:"int",description:"Reusable ggml graph arena size in MiB for Magpie stages; default 1024.",required:!1,min:1,default:1024},{name:"weight_context_mb",type:"int",description:"Weight loading context size in MiB; default 2048.",required:!1,min:1,default:2048},{name:"weight_type",type:"enum",description:"Matmul weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"conv_weight_type",type:"enum",description:"Convolution weight storage type; default native.",preset:"weight_type_conv",required:!1,default:"native"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"magpie_tts_orig",display_name:"MagpieTTS Multilingual 357M Original-Dtype GGUF",default:!1,format:"gguf",precision:"orig",target_directory:"MagpieTTS-Multilingual-357M-GGUF",files:["MagpieTTS-Multilingual-357M-GGUF/magpie-tts-multilingual-357m-orig.gguf"],strip_prefix:"MagpieTTS-Multilingual-357M-GGUF"},{id:"magpie_tts_q8_0",display_name:"MagpieTTS Multilingual 357M Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"MagpieTTS-Multilingual-357M-GGUF",files:["MagpieTTS-Multilingual-357M-GGUF/magpie-tts-multilingual-357m-q8_0.gguf"],strip_prefix:"MagpieTTS-Multilingual-357M-GGUF"}],dependencies:[],ui:{recommended_package:"magpie_tts_q8_0",tags:["TTS","GGUF"],docs:["docs/models/magpie_tts.md","docs/tts.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",codec_config:"model:codec_config.json",speakers:"model:speakers.json"},optional_files:{ipa_dict:"model:ipa_dict.txt",cmu_dict:"model:cmu_dict.txt",german_dict:"model:german.dict",german_heteronyms:"model:german.heteronym",spanish_dict:"model:spanish.dict",portuguese_dict:"model:portuguese.dict",hindi_dict:"model:hindi.dict",heteronyms:"model:heteronyms",mandarin_chars:"model:mandarin_data/pinyin_chars.tsv",mandarin_phrases:"model:mandarin_data/pinyin_phrases.tsv",mandarin_jieba_dict:"model:mandarin_data/jieba.dict.utf8",mandarin_hmm:"model:mandarin_data/hmm_model.utf8"},tensors:{model:{source:"weights:",prefix:"model"},codec:{source:"weights:",prefix:"codec"}}},{format:"safetensors",roots:{model:".",codec:"../nemo_nano_codec_22khz_1_89kbps_safetensors"},files:{config:"model:config.json",codec_config:"codec:config.json",speakers:"model:41913ebaa70342058574da74293b7630_magpie_tts_multilingual_357m.nemo.speakers.json"},optional_files:{ipa_dict:"model:74b3e832fe914a569fcd42b51d06b2f1_ipa_dict_nv23.05.txt",cmu_dict:"model:dc7d60d6b15a4651b21c9ca2932b62c6_ipa_cmudict-0.7b_nv23.01.txt",german_dict:"model:cf01ab5c48c84f3282ef7888263361e5_de_nv230119.dict",german_heteronyms:"model:c5e4ec2af5a14ce294f4b9edcc936535_de_nv230119.heteronym",spanish_dict:"model:7dbc31751f224f2486090d59dc95b9f7_es_ES_nv230301.dict",portuguese_dict:"model:05adc40366e149b69319acd4b28a4919_pt_br_prondict-v1.0.dict",hindi_dict:"model:339da71c54b046f98cbcf38ef6d4ff67_hindi_phoneme_merged_phoneme_dict.dict",heteronyms:"model:61d57a4ccb064d1e8e3d9f871c571932_heteronyms-052722"},tensors:{model:"model:model.safetensors",codec:"codec:model.safetensors"}}]},P8={schema_version:1,family:"maya1",display_name:"Maya1",description:"Maya Research's 3B expressive English text-to-speech model with natural-language voice design and inline emotion control.",category:"tts",status:"supported",tasks:["tts","design"],modes:["offline"],languages:["en"],runtime:{tags:["gguf"]},capabilities:{tts:["voice_design","emotion_control","long_form"],design:["voice_design"]},options:{request:[{name:"instruct",type:"string",description:"Natural-language description of the voice, accent, timbre, age, and delivery.",required:!0},{name:"max_tokens",type:"int",description:"Maximum generated audio-token count per text chunk; default 2048.",required:!1,min:1,default:2048},{name:"min_tokens",type:"int",description:"Minimum generated audio-token count before EOS may stop generation; default 28.",required:!1,min:0,default:28},{name:"temperature",type:"float",description:"Autoregressive sampling temperature; default 0.4. Must be > 0.",required:!1,min:0,default:.4},{name:"top_p",type:"float",description:"Autoregressive nucleus sampling probability; must be in (0, 1], default 0.9.",required:!1,min:0,max:1,default:.9},{name:"repetition_penalty",type:"float",description:"Autoregressive repetition penalty; default 1.1. Must be > 0.",required:!1,min:0,default:1.1},{name:"seed",type:"int",description:"Sampling and SNAC decoder noise seed; omitted requests choose a random seed.",required:!1,min:0},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per long-form text chunk; default 300.",required:!1,min:1,default:300},{name:"text_chunk_mode",type:"enum",description:"Framework long-form text chunking mode; tag_aware preserves inline emotion tags.",values:["default","tag_aware","japanese","endline"],required:!1,default:"tag_aware"}],session:[{name:"weight_type",type:"enum",description:"Shared AR and SNAC decoder weight storage type; default native.",values:["native","f32","f16","bf16","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k","q8_0","nvfp4"],required:!1,default:"native"},{name:"ar_weight_type",type:"enum",description:"AR backbone weight storage type; defaults to weight_type.",values:["native","f32","f16","bf16","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k","q8_0","nvfp4"],required:!1},{name:"codec_weight_type",type:"enum",description:"SNAC decoder weight storage type; only native or f32 is supported. Inherits weight_type when omitted; set codec_weight_type=f32 explicitly when using another shared weight_type.",values:["native","f32"],required:!1}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"maya1_orig",display_name:"Maya1 Original-Precision GGUF",default:!0,format:"gguf",precision:"orig",target_directory:"Maya1-GGUF",files:["Maya1-GGUF/maya1-orig.gguf"],strip_prefix:"Maya1-GGUF"},{id:"maya1_q8_0",display_name:"Maya1 Q8_0 GGUF",default:!1,format:"gguf",precision:"q8_0",target_directory:"Maya1-GGUF",files:["Maya1-GGUF/maya1-q8_0.gguf"],strip_prefix:"Maya1-GGUF"}],dependencies:[],ui:{recommended_package:"maya1_orig",tags:["TTS","Design","GGUF"],docs:["docs/models/maya1.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json"},tensors:{model_weights:"weights:",codec_weights:"weights:"}}]},j8={family:"meanvc2",schema_version:1,display_name:"MeanVC2",description:"MeanVC2 is a lightweight streaming zero-shot voice conversion model. The current audio.cpp package covers the recommended 120ms/40ms quality path.",category:"voice_conversion",status:"supported",tasks:["vc"],modes:["offline","streaming"],languages:["language_agnostic"],capabilities:{vc:["speaker_reference"]},runtime:{tags:["gguf"]},options:{request:[{name:"seed",type:"int",description:"Random seed for MeanVC2 flow noise; default 42.",required:!1,min:0,default:42}],session:[],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"meanvc2_120ms_40ms_f32",display_name:"MeanVC2 120ms/40ms F32 GGUF",default:!0,format:"gguf",precision:"f32",target_directory:"MeanVC2-GGUF",files:["MeanVC2-GGUF/meanvc2-120ms-40ms-fp32.gguf"],strip_prefix:"MeanVC2-GGUF"},{id:"meanvc2_120ms_40ms_q4_k",display_name:"MeanVC2 120ms/40ms Q4_K GGUF",default:!1,format:"gguf",precision:"q4_k",target_directory:"MeanVC2-GGUF",files:["MeanVC2-GGUF/meanvc2-120ms-40ms-q4_k.gguf"],strip_prefix:"MeanVC2-GGUF"}],dependencies:[],ui:{recommended_package:"meanvc2_120ms_40ms_f32",tags:["VC","GGUF"],docs:["docs/models/meanvc2.md","docs/audio_tools.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{weights:"$gguf"},tensors:{vc:{source:"weights:",prefix:"vc"},vocos:{source:"weights:",prefix:"vocos"},asr:{source:"weights:",prefix:"asr"},speaker_wavlm:{source:"weights:",prefix:"speaker_wavlm"},speaker_ecapa:{source:"weights:",prefix:"speaker_ecapa"}}}]},N8={schema_version:1,family:"mel_band_roformer",display_name:"Mel-Band RoFormer",description:"Music source-separation model that uses mel-scaled overlapping frequency bands and RoFormer attention to estimate stems such as vocals, drums, and accompaniment.",category:"audio_tools",status:"supported",tasks:["sep"],modes:["offline"],languages:["language_agnostic"],capabilities:{sep:["stems"]},options:{request:[],session:[{name:"weight_type",type:"enum",description:"RoFormer weight storage type. Defaults to f32 when the backend requires a host graph plan, otherwise native.",preset:"weight_type_full",required:!1},{name:"num_overlap",type:"int",description:"Number of overlapping inference windows; defaults to the package configuration. Lower values improve throughput but can reduce boundary quality.",required:!1,min:1}],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"mel_band_roformer_q8_0",tags:["Sep","GGUF"],docs:["docs/audio_tools.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"mel_band_roformer_q8_0",display_name:"Mel-Band RoFormer Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Mel-Band-RoFormer-GGUF",files:["Mel-Band-RoFormer-GGUF/mel-band-roformer-q8_0.gguf"],strip_prefix:"Mel-Band-RoFormer-GGUF"},{id:"mel_band_roformer_f16",display_name:"Mel-Band RoFormer F16 GGUF",format:"gguf",precision:"f16",target_directory:"Mel-Band-RoFormer-GGUF",files:["Mel-Band-RoFormer-GGUF/mel-band-roformer-f16.gguf"],strip_prefix:"Mel-Band-RoFormer-GGUF"},{id:"mel_band_roformer_safetensors",display_name:"Mel RoFormer Safetensors",format:"safetensors",precision:"native",target_directory:"mel-roformer-mlx",files:["config.json","model.safetensors"],download:{kind:"huggingface_snapshot",repo:"mlx-community/mel-roformer-mlx"}}],dependencies:[],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:{source:"weights:",prefix:"weights"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json"},tensors:{weights:"model:model.safetensors"}}]},O8={schema_version:1,family:"micro_wake_word",display_name:"microWakeWord",description:"Streaming wake-word detection for trained microWakeWord MixedNet TFLite models converted to GGUF.",category:"audio_tools",status:"experimental",tasks:["wake_word"],modes:["offline","streaming"],languages:["model_dependent"],capabilities:{wake_word:["speech_segments","stream_events"]},runtime:{tags:["gguf","stream"]},options:{request:[{name:"threshold",type:"float",description:"Override the converted model manifest's wake-word probability cutoff.",required:!1,min:0,max:1},{name:"sliding_window_size",type:"int",description:"Override the converted model manifest's prediction smoothing window.",required:!1,min:1}],session:[{name:"exec_plan",type:"string",description:"JSON component execution plans. Component network accepts impl ggml/neon (default ggml). GGML retains the session backend; neon runs the stateful CNN on CPU and requires ENGINE_ENABLE_NEON=ON and AArch64 NEON. Frontend and detection logic are unchanged. No artifacts or params are used.",required:!1,default:"{}"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"micro_wake_word_okay_nabu_f32",display_name:"microWakeWord Okay Nabu GGUF F32",default:!0,format:"gguf",precision:"f32",target_directory:"MicroWakeWord-GGUF",files:["MicroWakeWord-GGUF/micro-wake-word-okay-nabu-f32.gguf"],strip_prefix:"MicroWakeWord-GGUF"}],dependencies:[],ui:{tags:["Wake Word","GGUF","Stream"],docs:["docs/models/micro_wake_word.md"],recommended_package:"micro_wake_word_okay_nabu_f32"},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:{source:"weights:",prefix:"weights"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json"},tensors:{weights:"model:model.safetensors"}}]},D8={schema_version:1,family:"midashenglm_gen",display_name:"MiDashengLM-Gen",description:"DashengLM generative audio model for speech, music, sound effects, and ambience prompts.",category:"audio_generation",status:"experimental",tasks:["music"],modes:["offline"],languages:["auto"],runtime:{tags:["gguf","cuda"]},capabilities:{music:["instrumental","style_control"]},options:{request:[{name:"duration_sec",type:"float",description:"Target audio duration budget; omitted derives from the checkpoint sequence length, hop size and sample rate. Must be finite and positive; no fixed runtime upper cap.",required:!1,default:20},{name:"guidance_scale",type:"float",description:"Classifier-free guidance scale. Any finite value is accepted.",required:!1,default:2},{name:"stop_threshold",type:"float",description:"Stop probability threshold. Any finite value is accepted.",required:!1,default:.5},{name:"min_stop_step",type:"int",description:"Minimum generated steps before accepting stop.",required:!1,min:1,default:5},{name:"seed",type:"int",description:"Unsigned 32-bit generation seed; default 0 is a fixed seed. Negative values are not accepted.",required:!1,min:0,max:4294967295,default:0}],session:[{name:"weight_type",type:"enum",description:"Shared weight storage type.",preset:"weight_type_full",required:!1,default:"native"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"midashenglm_gen_f32",display_name:"MiDashengLM-Gen F32 GGUF",format:"gguf",precision:"f32",target_directory:"MiDashengLM-Gen-GGUF",files:["MiDashengLM-Gen-GGUF/midashenglm-gen-f32.gguf"],strip_prefix:"MiDashengLM-Gen-GGUF"},{id:"midashenglm_gen_q8_0",display_name:"MiDashengLM-Gen Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"MiDashengLM-Gen-GGUF",files:["MiDashengLM-Gen-GGUF/midashenglm-gen-q8_0.gguf"],strip_prefix:"MiDashengLM-Gen-GGUF"}],dependencies:[],ui:{recommended_package:"midashenglm_gen_q8_0",tags:["Music","SFX","GGUF"],docs:["docs/models/midashenglm_gen.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json","vocab.json":"model:vocab.json","merges.txt":"model:merges.txt","tokenizer_config.json":"model:tokenizer_config.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json","vocab.json":"model:vocab.json","merges.txt":"model:merges.txt","tokenizer_config.json":"model:tokenizer_config.json"},tensors:{weights:"model:model.safetensors.index.json"}}]},I8={schema_version:1,family:"ming3_audio",display_name:"Ming 3.0 Audio Tiny",description:"Whisper audio encoder and hybrid KDA/MLA mixture-of-experts Thinker, with a separate continuous-latent Talker for spoken responses.",category:"asr",status:"experimental",tasks:["asr","s2s","tts","clone"],modes:["offline"],languages:["zh","en"],capabilities:{tts:["speaker_reference","built_in_voices"],clone:["speaker_reference"]},runtime:{tags:["gguf"]},options:{request:[{name:"system_prompt",type:"string",required:!1,description:"Thinker system instruction. When supplied, the user prompt precedes audio as in the official chat examples."},{name:"enable_thinking",type:"bool",required:!1,default:!1,description:"Enable the Thinker chat template's detailed thinking mode."},{name:"prompt",type:"string",required:!1,description:"Thinker instruction accompanying the input audio; omitted ASR requests use the official transcription prompt."},{name:"max_tokens",type:"int",required:!1,default:256,min:1,description:"Maximum generated Thinker text tokens."},{name:"max_audio_tokens",type:"int",required:!1,default:1e3,min:1,description:"Maximum generated Talker acoustic patches per text fragment."},{name:"voice_id",type:"enum",values:["US_James","US_Stella","灵小柔","灵楷","US_Emma","UK_George","UK_Charlotte","灵小安","灵语汐","灵小萌","灵小雅","花小呗","灵韵","妩媚妲己","灵婉","灵小月","灵朵儿","灵岩","灵小锋","灵小川","灵小甄","灵小知","灵小惠","灵小晴","灵小琪","灵梦","灵恬","灵小汐","灵小棠","灵小梨","灵舒","灵娇","灵小芸","灵锐","灵空","灵宇","灵朗","灵旭","灵骁","灵江","悲伤女声","皮六","说唱小哥","蜡笔小新","悟空","灵信远_生气","灵信远_厌恶","灵信远_惊讶","灵信远_高兴","灵信远_恐惧","灵信远_中性","灵信远_悲伤","灵思齐_高兴","灵思齐_恐惧","灵思齐_生气","灵思齐_厌恶","灵思齐_中性","灵思齐_惊讶","灵思齐_悲伤","灵叙柔_高兴","灵叙柔_恐惧","灵叙柔_惊讶","灵叙柔_悲伤","灵叙柔_生气","灵叙柔_中性","灵叙柔_厌恶","灵绮木_悲伤","灵绮木_厌恶","灵绮木_中性","灵绮木_恐惧","灵绮木_惊讶","灵绮木_高兴","灵绮木_生气","灵书悦_恐惧","灵书悦_厌恶","灵书悦_高兴","灵书悦_惊讶","灵书悦_悲伤","灵书悦_生气","灵书悦_中性","灵渊霆_厌恶","灵渊霆_中性","灵渊霆_恐惧","灵渊霆_惊讶","灵渊霆_悲伤","灵渊霆_生气","灵渊霆_高兴","灵素心_高兴","灵素心_惊讶","灵素心_恐惧","灵素心_中性","灵素心_生气","灵素心_悲伤","灵素心_厌恶","灵晓声_惊讶","灵晓声_厌恶","灵晓声_高兴","灵晓声_生气","灵晓声_中性","灵晓声_悲伤","灵风信_生气","灵风信_中性","灵风信_厌恶","灵风信_高兴","灵风信_惊讶","灵风信_悲伤","灵风信_恐惧","灵采薇_惊讶","灵采薇_厌恶","灵采薇_恐惧","灵采薇_生气","灵采薇_悲伤","灵采薇_中性","灵采薇_高兴","灵卓然_厌恶","灵卓然_中性","灵卓然_恐惧","灵卓然_惊讶","灵卓然_高兴","灵卓然_悲伤","灵卓然_生气","灵惜梦_中性","灵惜梦_厌恶","灵惜梦_高兴","灵惜梦_悲伤","灵惜梦_恐惧","灵惜梦_惊讶","灵惜梦_生气","灵浅忧_高兴","灵浅忧_生气","灵浅忧_厌恶","灵浅忧_悲伤","灵浅忧_惊讶","灵浅忧_恐惧","灵浅忧_中性","灵昭野_生气","灵昭野_高兴","灵昭野_悲伤","灵昭野_中性","灵昭野_厌恶","灵昭野_恐惧","灵昭野_惊讶","灵心澜_厌恶","灵心澜_惊讶","灵心澜_生气","灵心澜_中性","灵心澜_高兴","灵心澜_悲伤","灵心澜_恐惧","灵犀言_悲伤","灵犀言_厌恶","灵犀言_恐惧","灵犀言_中性","灵犀言_惊讶","灵犀言_高兴","灵犀言_生气","灵语冰_悲伤","灵语冰_厌恶","灵语冰_高兴","灵语冰_恐惧","灵语冰_惊讶","灵语冰_中性","灵语冰_生气","灵逸风_生气","灵逸风_悲伤","灵逸风_惊讶","灵逸风_中性","灵逸风_恐惧","灵逸风_高兴","灵逸风_厌恶","灵悦澜_中性","灵悦澜_高兴","灵悦澜_厌恶","灵悦澜_恐惧","灵悦澜_生气","灵悦澜_悲伤","灵悦澜_惊讶","灵惊鸿_厌恶","灵惊鸿_高兴","灵惊鸿_中性","灵惊鸿_惊讶","灵惊鸿_恐惧","灵惊鸿_生气","灵惊鸿_悲伤","灵御心_高兴","灵御心_中性","灵御心_生气","灵御心_恐惧","灵御心_厌恶","灵御心_惊讶","灵御心_悲伤","灵语恬_厌恶","灵语恬_高兴","灵语恬_恐惧","灵语恬_悲伤","灵语恬_惊讶","灵语恬_生气","灵语恬_中性","灵心恬_厌恶","灵心恬_惊讶","灵心恬_悲伤","灵心恬_中性","灵心恬_恐惧","灵心恬_高兴","灵心恬_生气","灵惜蕊_惊讶","灵惜蕊_厌恶","灵惜蕊_恐惧","灵惜蕊_高兴","灵惜蕊_中性","灵惜蕊_悲伤","灵惜蕊_生气","灵语萱_厌恶","灵语萱_高兴","灵语萱_惊讶","灵语萱_恐惧","灵语萱_生气","灵语萱_悲伤","灵语萱_中性","灵语烟_生气","灵语烟_恐惧","灵语烟_中性","灵语烟_厌恶","灵语烟_惊讶","灵语烟_高兴","灵语烟_悲伤","灵律雅_恐惧","灵律雅_生气","灵律雅_惊讶","灵律雅_高兴","灵律雅_厌恶","灵律雅_中性","灵律雅_悲伤","灵惊涛_厌恶","灵惊涛_恐惧","灵惊涛_高兴","灵惊涛_悲伤","灵惊涛_中性","灵惊涛_惊讶","灵惊涛_生气","灵寒陌_生气","灵寒陌_厌恶","灵寒陌_恐惧","灵寒陌_高兴","灵寒陌_中性","灵寒陌_惊讶","灵寒陌_悲伤","灵决冥_悲伤","灵决冥_厌恶","灵决冥_生气","灵决冥_中性","灵决冥_惊讶","灵决冥_恐惧","灵决冥_高兴","灵亦尘_中性","灵亦尘_厌恶","灵亦尘_高兴","灵亦尘_恐惧","灵亦尘_生气","灵亦尘_悲伤","灵亦尘_惊讶","灵语尘_生气","灵语尘_高兴","灵语尘_厌恶","灵语尘_惊讶","灵语尘_中性","灵语尘_悲伤","灵语尘_恐惧","灵慈萱_高兴","灵慈萱_厌恶","灵慈萱_惊讶","灵慈萱_生气","灵慈萱_中性","灵慈萱_悲伤","灵慈萱_恐惧","灵妙音_中性","灵妙音_悲伤","灵妙音_惊讶","灵妙音_厌恶","灵妙音_生气","灵妙音_高兴","灵妙音_恐惧","灵断尘_悲伤","灵断尘_高兴","灵断尘_惊讶","灵断尘_恐惧","灵断尘_中性","灵断尘_生气","灵断尘_厌恶","灵悦兮_高兴","灵悦兮_中性","灵悦兮_生气","灵悦兮_惊讶","灵悦兮_厌恶","灵悦兮_悲伤","灵悦兮_恐惧","灵若虚_恐惧","灵若虚_惊讶","灵若虚_中性","灵若虚_悲伤","灵若虚_高兴","灵若虚_厌恶","灵若虚_生气","灵熙婉_厌恶","灵熙婉_生气","灵熙婉_惊讶","灵熙婉_高兴","灵熙婉_中性","灵熙婉_恐惧","灵熙婉_悲伤","灵旭扬_中性","灵旭扬_生气","灵旭扬_恐惧","灵旭扬_高兴","灵旭扬_惊讶","灵旭扬_悲伤","灵旭扬_厌恶","灵阅川_生气","灵阅川_悲伤","灵阅川_高兴","灵阅川_厌恶","灵阅川_惊讶","灵阅川_中性","灵阅川_恐惧","灵未央_高兴","灵未央_中性","灵未央_惊讶","灵未央_悲伤","灵未央_厌恶","灵未央_恐惧","灵未央_生气","灵妩月_厌恶","灵妩月_生气","灵妩月_中性","灵妩月_惊讶","灵妩月_恐惧","灵妩月_高兴","灵妩月_悲伤","灵梦瑶_中性","灵梦瑶_恐惧","灵梦瑶_高兴","灵梦瑶_悲伤","灵梦瑶_惊讶","灵梦瑶_生气","灵妙声_中性","灵妙声_恐惧","灵妙声_高兴","灵妙声_悲伤","灵妙声_惊讶","灵妙声_生气","灵烈瑶_中性","灵烈瑶_厌恶","灵烈瑶_恐惧","灵烈瑶_悲伤","灵烈瑶_惊讶","灵烈瑶_生气","灵烈瑶_高兴","灵幽月_中性","灵幽月_厌恶","灵幽月_恐惧","灵幽月_悲伤","灵幽月_惊讶","灵幽月_生气","灵幽月_高兴","灵悦心_中性","灵悦心_厌恶","灵悦心_恐惧","灵悦心_悲伤","灵悦心_惊讶","灵悦心_生气","灵悦心_高兴","灵汐月_中性","灵汐月_厌恶","灵汐月_恐惧","灵汐月_悲伤","灵汐月_惊讶","灵汐月_生气","灵汐月_高兴","灵书意_中性","灵书意_厌恶","灵书意_恐惧","灵书意_悲伤","灵书意_惊讶","灵书意_生气","灵书意_高兴","灵知远_中性","灵知远_厌恶","灵知远_恐惧","灵知远_悲伤","灵知远_惊讶","灵知远_生气","灵知远_高兴","灵温言_中性","灵温言_厌恶","灵温言_恐惧","灵温言_悲伤","灵温言_惊讶","灵温言_生气","灵温言_高兴","灵傲尘_中性","灵傲尘_厌恶","灵傲尘_恐惧","灵傲尘_悲伤","灵傲尘_生气","灵傲尘_高兴","灵佑安_中性","灵佑安_厌恶","灵佑安_恐惧","灵佑安_悲伤","灵佑安_惊讶","灵佑安_生气","灵佑安_高兴","灵惜晨_中性","灵惜晨_厌恶","灵惜晨_恐惧","灵惜晨_悲伤","灵惜晨_惊讶","灵惜晨_生气","灵惜晨_高兴","灵宛溪_中性","灵宛溪_厌恶","灵宛溪_恐惧","灵宛溪_悲伤","灵宛溪_惊讶","灵宛溪_生气","灵宛溪_高兴","灵言澈_中性","灵言澈_厌恶","灵言澈_恐惧","灵言澈_悲伤","灵言澈_惊讶","灵言澈_生气","灵言澈_高兴","灵溯光_中性","灵溯光_厌恶","灵溯光_恐惧","灵溯光_悲伤","灵溯光_惊讶","灵溯光_生气","灵溯光_高兴","灵惊弦_中性","灵惊弦_厌恶","灵惊弦_恐惧","灵惊弦_悲伤","灵惊弦_惊讶","灵惊弦_生气","灵惊弦_高兴","灵嘉肴_中性","灵嘉肴_厌恶","灵嘉肴_恐惧","灵嘉肴_悲伤","灵嘉肴_惊讶","灵嘉肴_生气","灵嘉肴_高兴","灵黛嗔_中性","灵黛嗔_厌恶","灵黛嗔_恐惧","灵黛嗔_悲伤","灵黛嗔_惊讶","灵黛嗔_生气","灵黛嗔_高兴","灵孤影_中性","灵孤影_厌恶","灵孤影_恐惧","灵孤影_悲伤","灵孤影_惊讶","灵孤影_生气","灵孤影_高兴","灵雨汐_中性","灵雨汐_恐惧","灵雨汐_高兴","灵雨汐_悲伤","灵雨汐_惊讶","灵雨汐_生气","蜡笔小新_野原新之助 (小新)","蜡笔小新_野原美伢 (美伢)","小猪佩奇_佩奇","康熙王朝_康熙","西游记_唐僧","甄嬛传_四郎","潜伏_余则成","水浒传_武松","水浒传_潘金莲","雍正王朝_雍正"],required:!1,description:"Talker built-in voice name; ignored when reference audio is supplied."},{name:"reference_text",type:"string",required:!1,description:"Reference transcript enabling acoustic-prefix continuation; without it reference audio supplies speaker conditioning only."},{name:"language",type:"string",required:!1,description:"Talker output language; inferred from its input text when omitted."},{name:"seed",type:"int",required:!1,min:0,default:42,description:"Talker flow and reference-posterior sampling seed. Thinker generation is greedy."},{name:"guidance_scale",type:"float",required:!1,default:2,description:"Talker conditioned prediction plus guidance_scale times its difference from the null prediction."},{name:"sigma",type:"float",required:!1,default:.25,min:0,description:"Talker flow SDE noise scale."},{name:"temperature",type:"float",required:!1,default:0,min:0,description:"Talker flow sampling temperature; zero still uses seeded initial noise."},{name:"raw_text",type:"bool",required:!1,default:!1,description:"Synthesize text as one fragment without framework text chunking."},{name:"trim_silence",type:"bool",required:!1,default:!0,description:"Trim trailing low-energy 100-ms frames per Talker fragment, retaining a 300-ms tail."},{name:"text_chunk_size",type:"int",required:!1,min:1,default:100,description:"Talker text chunk budget in Unicode codepoints."},{name:"text_chunk_mode",type:"enum",required:!1,default:"tag_aware",values:["default","tag_aware","japanese","endline"],description:"Framework Talker text chunking policy."}],session:[{name:"disk_experts",type:"bool",required:!1,default:!1,description:"Keep Thinker expert weights outside GPU memory and stage routed experts into a bounded GPU cache; computation stays on the selected backend."},{name:"pin_experts",type:"bool",required:!1,default:!0,description:"With disk_experts, retain expert payloads in pinned host RAM instead of reading them from the GGUF on each cache miss. Defaults to false on Metal, which uses ordinary host staging."},{name:"expert_cache_size",type:"int",required:!1,default:8,min:8,max:128,description:"With disk_experts, number of GPU-resident expert slots per routed Thinker layer."},{name:"disk_expert_read_threads",type:"int",required:!1,default:1,min:1,max:64,description:"Host workers for copying selected GGUF experts into staging when disk_experts is enabled and pin_experts is false. Default 1 preserves serial reads; values above 1 use OpenMP or Apple dispatch."},{name:"reference_cache",type:"bool",required:!1,default:!0,description:"Reuse speaker features and seeded acoustic conditioning for the most recent reference waveform."}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/Ming-3.0-Audio-Tiny-GGUF",revision:"main",gated:!1}},packages:[{id:"ming3_audio_tiny_bf16",display_name:"Ming 3.0 Audio Tiny BF16",format:"gguf",precision:"bf16",default:!0,target_directory:"Ming-3.0-Audio-Tiny-GGUF",files:["ming-3.0-audio-tiny-bf16.gguf"]},{id:"ming3_audio_tiny_q8_0",display_name:"Ming 3.0 Audio Tiny Q8_0 Experts",format:"gguf",precision:"q8_0",target_directory:"Ming-3.0-Audio-Tiny-GGUF",files:["ming-3.0-audio-tiny-q8_0.gguf"]},{id:"ming3_audio_tiny_q4_k",display_name:"Ming 3.0 Audio Tiny Q4_K Experts",format:"gguf",precision:"q4_k",target_directory:"Ming-3.0-Audio-Tiny-GGUF",files:["ming-3.0-audio-tiny-q4_k.gguf"]}],dependencies:[],ui:{recommended_package:"ming3_audio_tiny_bf16",tags:["ASR","TTS","GGUF"],docs:["docs/models/ming3_audio.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",generation_config:"model:generation_config.json",talker_config:"model:talker/config.json",talker_llm_config:"model:talker/llm/config.json",talker_tokenizer_json:"model:talker/llm/tokenizer.json",talker_tokenizer_config:"model:talker/llm/tokenizer_config.json",vae_config:"model:talker/vae/config.json"},tensors:{thinker:{source:"weights:",prefix:"thinker"},talker:{source:"weights:",prefix:"talker"},vae:{source:"weights:",prefix:"vae"},speaker:{source:"weights:",prefix:"speaker"}}}]},L8={schema_version:1,family:"ming3_tts",display_name:"Ming 3.0 TTS 0.5B",description:"Multilingual continuous-latent speech synthesis with a Qwen backbone, flow-matching acoustic head, CAMPPlus speaker conditioning and an audio VAE.",category:"tts",status:"supported",tasks:["tts","clone","design"],modes:["offline","streaming"],languages:["zh","en","ja","ko","de","fr","es"],capabilities:{tts:["long_form","speaker_reference","style_control","emotion_control","built_in_voices"],clone:["long_form","speaker_reference","style_control","emotion_control"],design:["voice_design"]},runtime:{tags:["gguf"]},options:{request:[{name:"template_name",type:"enum",required:!1,description:"Conditioning template; defaults to voice_design on that route, otherwise tts.",values:["tts","multilingual","basic","emotion","dialect","ip","voice_design","freeform"]},{name:"language",type:"string",required:!1,description:"Target language name or code; defaults to the request's language (the server's top-level language field, the CLI's --language). Required by multilingual; ignored by dialect."},{name:"instruct",type:"string",required:!1,description:"Voice description for voice_design; raw conditioning text for freeform or tts."},{name:"instruction_schema",type:"enum",required:!1,description:"Structured instruction field language; defaults to en for dialect, otherwise zh.",values:["en","zh"]},{name:"speed",type:"enum",required:!1,description:"Categorical speaking speed for the basic template, not waveform resampling.",values:["慢速","中速","快速"]},{name:"pitch",type:"enum",required:!1,description:"Categorical pitch for the basic template.",values:["低","中","高"]},{name:"volume",type:"enum",required:!1,description:"Categorical volume for the basic template.",values:["低","中","高"]},{name:"emotion",type:"string",required:!1,description:"Emotion label for the emotion template."},{name:"dialect",type:"enum",required:!1,description:"Dialect for the dialect template.",values:["chuanyu dialect","cantonese"]},{name:"voice_id",type:"enum",required:!1,description:"Built-in English voice for the ip template.",values:["US_Emma","US_James","UK_George","UK_Charlotte"]},{name:"reference_text",type:"string",required:!1,description:"Transcript accompanying voice_ref; enables the acoustic reference prefix. Without a transcript, only speaker conditioning is used."},{name:"speaker_embedding_file",type:"path_list",required:!1,description:"CAMPPlus embedding file or list, with shape [192] or [1, 192]. Supersedes voice_ref audio; zero_speaker_embedding takes precedence."},{name:"export_speaker_embedding_file",type:"path",required:!1,description:"Export the enabled voice_ref CAMPPlus speaker embedding as F32 Safetensors. Requires voice_ref, use_speaker_embedding=true, zero_speaker_embedding=false and no speaker_embedding_file. Does not export acoustic latents or the reference transcript."},{name:"use_speaker_embedding",type:"bool",required:!1,default:!0,description:"Condition on the reference speaker embedding."},{name:"zero_speaker_embedding",type:"bool",required:!1,default:!1,description:"Use a zero projected speaker row instead of reference audio conditioning."},{name:"max_tokens",type:"int",required:!1,default:1e3,min:1,description:"Maximum generated acoustic patches per text chunk, also limited by the 512-position generation context."},{name:"guidance_scale",type:"float",required:!1,default:2,description:"Flow guidance: conditioned prediction plus guidance_scale times its difference from the null prediction."},{name:"sigma",type:"float",required:!1,default:.25,min:0,description:"Flow SDE noise scale."},{name:"temperature",type:"float",required:!1,default:0,min:0,description:"Flow sampling temperature; zero still uses seeded initial noise."},{name:"seed",type:"int",required:!1,default:1895,min:0,description:"Reference-posterior and generation noise seed."},{name:"raw_text",type:"bool",required:!1,default:!1,description:"Send the text as one synthesis fragment without frontend chunking."},{name:"text_chunk_size",type:"int",required:!1,min:1,description:"Framework long-form chunk budget in Unicode codepoints; default 50 when hanzi, kana and Hangul outnumber other letters and digits, otherwise 300; multi-chunk generation without speaker conditioning is capped at 120, including explicit overrides, and anchors later chunks to the first generated voice. Smaller overrides, single-chunk inputs and explicitly conditioned voices retain their chunk size."},{name:"text_chunk_mode",type:"enum",required:!1,default:"tag_aware",description:"Framework text chunking policy.",values:["default","tag_aware","japanese","endline"]},{name:"trim_silence",type:"bool",required:!1,default:!0,description:"Trim trailing low-energy 100-ms frames per fragment, retaining a 300-ms tail."},{name:"stream_frames_per_event",type:"int",description:"Maximum latent patches per streaming audio decode.",required:!1,default:4,min:1,max:64},{name:"stream_chunk_policy",type:"enum",description:"Streaming audio chunk schedule.",required:!1,default:"grow",values:["fixed","grow"]}],session:[{name:"reference_cache",type:"bool",required:!1,default:!0,description:"Reuse prepared conditioning for the most recently used reference waveform."}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/Ming-3.0-TTS-0.5B-GGUF",revision:"main",gated:!1}},packages:[{id:"ming_3_0_tts_0_5b_bf16",display_name:"Ming 3.0 TTS 0.5B BF16",format:"gguf",precision:"bf16",default:!0,target_directory:"Ming-3.0-TTS-0.5B-GGUF",files:["ming-3.0-tts-0.5b-bf16.gguf"]},{id:"ming_3_0_tts_0_5b_q8_0",display_name:"Ming 3.0 TTS 0.5B Q8_0",format:"gguf",precision:"q8_0",default:!1,target_directory:"Ming-3.0-TTS-0.5B-GGUF",files:["ming-3.0-tts-0.5b-q8_0.gguf"]}],dependencies:[],ui:{recommended_package:"ming_3_0_tts_0_5b_bf16",tags:["TTS","GGUF"],docs:["docs/models/ming3_tts.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json"},tensors:{weights:"weights:",speaker:{source:"weights:",prefix:"speaker"}}}]},V8={schema_version:1,family:"minimax_h3",display_name:"MiniMax-H3",description:"MiniMax-H3 text-to-audio/video generation through the official T2VA pipeline: Qwen3-VL text conditioning, joint audio/video DiT denoising, and MiniMax-H3 audio/video VAE decode.",category:"audio_generation",status:"experimental",tasks:["tts","music","sfx"],modes:["offline"],languages:["auto"],capabilities:{tts:["style_control","multi_speaker"],music:["instrumental","style_control"],sfx:["prompt_generation"]},runtime:{tags:["cuda","gguf"]},ui:{recommended_package:"minimax_h3_q4_k",tags:["TTS","Music","SFX","GGUF"],docs:["docs/models/minimax_h3.md","docs/reports/minimax_h3_performance.md"]},options:{request:[{name:"num_inference_steps",type:"int",description:"Positive joint DiT denoising step count; default 50.",required:!1,min:1,default:50},{name:"seed",type:"int",description:"Unsigned 32-bit generation seed in [0, 4294967295] for deterministic initial latents; default 42.",required:!1,min:0,max:4294967295,default:42},{name:"height",type:"int",description:"Target video canvas height used by the joint T2VA latent layout; omitted or nonpositive values use 768. Smaller positive sizes are rounded up to the supported geometry.",required:!1,default:768},{name:"width",type:"int",description:"Target video canvas width used by the joint T2VA latent layout; omitted or nonpositive values use 1344. Smaller positive sizes are rounded up to the supported geometry.",required:!1,default:1344},{name:"num_frames",type:"int",description:"Target video frame count before H3 alignment; omitted or nonpositive values use 124. MiniMax-H3 video is 24 fps; positive counts are rounded to the supported temporal geometry.",required:!1,default:124},{name:"guidance_scale",type:"float",description:"Classifier-free guidance scale; 1.0 matches the baseline T2VA audio run.",required:!1,default:1},{name:"sampler_mode",type:"enum",description:"Joint DiT sampler: euler, res_multistep, dpmpp_2m, or unipc.",values:["euler","res_multistep","dpmpp_2m","unipc"],required:!1,default:"euler"},{name:"negative_prompt",type:"string",description:"Negative prompt used by classifier-free guidance when guidance_scale is not 1.0.",required:!1,default:" "},{name:"flow_shift",type:"float",description:"Video FlowMatch scheduler shift.",required:!1,default:12},{name:"audio_flow_shift",type:"float",description:"Audio FlowMatch scheduler shift.",required:!1,default:3},{name:"return_video",type:"bool",description:"Decode and return RGB24 video frames as an output artifact.",required:!1,default:!1},{name:"text_layerwise",type:"bool",description:"Run the prompt encoder with scoped layer-group weights instead of a full prompt encoder weight store.",required:!1,default:!1},{name:"text_layerwise_batch",type:"int",description:"Prompt encoder layer-group size when text_layerwise is enabled.",required:!1,min:1,default:1},{name:"dit_layerwise",type:"bool",description:"Run the DiT denoiser with scoped prelude, block-group, and final weights instead of a full DiT weight store.",required:!1,default:!1},{name:"dit_layerwise_batch",type:"int",description:"DiT block-group size when dit_layerwise is enabled.",required:!1,min:1,default:1},{name:"dit_mlp_chunk_tokens",type:"int",description:"Token chunk size for the per-token DiT MLP in layerwise high-resolution mode. Zero disables chunking.",required:!1,min:0,default:0},{name:"dit_acceleration",type:"string",description:"Optional DiT acceleration mode: none, first_block_cache, or spectrum. Requires dit_layerwise=false and sampler_mode=euler; Spectrum additionally requires guidance_scale=1.",required:!1,default:"none"},{name:"first_block_cache_threshold",type:"float",description:"First-block cache residual-difference threshold.",required:!1,min:0,default:.1},{name:"first_block_cache_start_percent",type:"float",description:"Denoising progress fraction where first-block caching begins; must be below end_percent. Used to derive the sigma window when explicit sigma endpoints are omitted.",required:!1,min:0,max:1,default:.1},{name:"first_block_cache_end_percent",type:"float",description:"Denoising progress fraction where first-block caching ends; must exceed start_percent. Used to derive the sigma window when explicit sigma endpoints are omitted.",required:!1,min:0,max:1,default:.95},{name:"first_block_cache_start_sigma",type:"float",description:"Largest video sigma where first-block cache may be used. Supply together with first_block_cache_end_sigma; otherwise both endpoints are derived from the denoising progress fractions and schedule.",required:!1},{name:"first_block_cache_end_sigma",type:"float",description:"Smallest video sigma where first-block cache may be used. Supply together with first_block_cache_start_sigma; otherwise both endpoints are derived from the denoising progress fractions and schedule.",required:!1},{name:"first_block_cache_max_consecutive",type:"int",description:"Maximum consecutive first-block cache hits before forcing a full DiT step.",required:!1,min:1,default:2},{name:"spectrum_warmup_steps",type:"int",description:"Full DiT warmup steps before spectrum forecasting may skip steps.",required:!1,min:1,default:1},{name:"spectrum_initial_window",type:"float",description:"Initial spectrum forecast scheduling window.",required:!1,min:1,default:2},{name:"spectrum_flex_window",type:"float",description:"Spectrum forecast window growth after actual DiT steps.",required:!1,min:0,default:.75},{name:"spectrum_degree",type:"int",description:"Chebyshev polynomial degree for spectrum forecasting.",required:!1,min:0,default:1},{name:"spectrum_history_size",type:"int",description:"Maximum spectrum forecast history rows.",required:!1,min:1,default:8},{name:"spectrum_ridge_lambda",type:"float",description:"Ridge regularization for spectrum forecasting.",required:!1,min:0,default:.1}],session:[{name:"weight_context_mb",type:"int",description:"MiniMax-H3 staged weight context size in MiB.",required:!1,min:1,default:512},{name:"mem_saver",type:"bool",description:"Release staged DiT, audio VAE, and video VAE weights after their request phase instead of keeping them resident for the session. Prompt encoder weights are always request-scoped.",required:!1,default:!0}],load:[]},dependencies:[],package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"minimax_h3_q4_k",display_name:"MiniMax-H3 Q4_K GGUF",default:!0,format:"gguf",precision:"q4_k",target_directory:"MiniMax-H3-Q4-GGUF",files:["MiniMax-H3-Q4-GGUF/configuration.json","MiniMax-H3-Q4-GGUF/FL2VA/processor/chat_template.json","MiniMax-H3-Q4-GGUF/FL2VA/processor/merges.txt","MiniMax-H3-Q4-GGUF/FL2VA/processor/preprocessor_config.json","MiniMax-H3-Q4-GGUF/FL2VA/processor/tokenizer.json","MiniMax-H3-Q4-GGUF/FL2VA/processor/tokenizer_config.json","MiniMax-H3-Q4-GGUF/FL2VA/processor/video_preprocessor_config.json","MiniMax-H3-Q4-GGUF/FL2VA/processor/vocab.json","MiniMax-H3-Q4-GGUF/text_encoder_q4_k.gguf","MiniMax-H3-Q4-GGUF/dit.gguf","MiniMax-H3-Q4-GGUF/audio_vae_folded_f16.gguf","MiniMax-H3-Q4-GGUF/video_vae.gguf"],strip_prefix:"MiniMax-H3-Q4-GGUF"},{id:"minimax_h3_q4_k_int8_dit",display_name:"MiniMax-H3 Q4_K GGUF + INT8 ConvRot DiT",default:!1,format:"gguf",precision:"q4_k",target_directory:"MiniMax-H3-Q4-GGUF",files:["MiniMax-H3-Q4-GGUF/configuration.json","MiniMax-H3-Q4-GGUF/FL2VA/processor/chat_template.json","MiniMax-H3-Q4-GGUF/FL2VA/processor/merges.txt","MiniMax-H3-Q4-GGUF/FL2VA/processor/preprocessor_config.json","MiniMax-H3-Q4-GGUF/FL2VA/processor/tokenizer.json","MiniMax-H3-Q4-GGUF/FL2VA/processor/tokenizer_config.json","MiniMax-H3-Q4-GGUF/FL2VA/processor/video_preprocessor_config.json","MiniMax-H3-Q4-GGUF/FL2VA/processor/vocab.json","MiniMax-H3-Q4-GGUF/text_encoder_q4_k.gguf","MiniMax-H3-Q4-GGUF/dit_int8.gguf","MiniMax-H3-Q4-GGUF/audio_vae_folded_f16.gguf","MiniMax-H3-Q4-GGUF/video_vae.gguf"],strip_prefix:"MiniMax-H3-Q4-GGUF"}],sources:[{format:"gguf",roots:{model:"."},files:{configuration:"model:configuration.json",tokenizer_config:"model:FL2VA/processor/tokenizer_config.json",tokenizer_json:"model:FL2VA/processor/tokenizer.json",vocab:"model:FL2VA/processor/vocab.json",merges:"model:FL2VA/processor/merges.txt",preprocessor_config:"model:FL2VA/processor/preprocessor_config.json"},tensors:{text_encoder_weights:"model:text_encoder_q4_k.gguf",dit_weights:"model:dit.gguf",audio_vae_weights:"model:audio_vae_folded_f16.gguf",video_vae_weights:"model:video_vae.gguf"}}]},H8={schema_version:1,family:"minimax_music3",display_name:"MiniMax Music 3",description:"MiniMax Music 3 text-to-music generation with lyrics conditioning.",category:"audio_generation",status:"experimental",tasks:["music"],modes:["offline"],languages:["auto"],capabilities:{music:["lyrics","style_control"]},runtime:{tags:["gguf"]},options:{request:[{name:"lyrics",type:"string",description:"Lyrics to sing. Structure tags such as [verse] and [chorus] are supported.",required:!0},{name:"duration_sec",type:"float",description:"Positive AR frame budget expressed in seconds; not a hard final waveform duration limit.",required:!1,min:.1,default:20},{name:"num_inference_steps",type:"int",description:"Flow matching Euler steps per chunk.",required:!1,min:1,default:30},{name:"guidance_scale",type:"float",description:"Flow transformer classifier-free guidance scale. Must be > 0.",required:!1,min:0,default:1.7},{name:"ar_guidance_scale",type:"float",description:"Autoregressive semantic and depth CFG scale. Must be > 0.",required:!1,min:0,default:1.5},{name:"top_k",type:"int",description:"Top-k sampling for semantic and residual code sampling.",required:!1,min:1,default:50},{name:"seed",type:"int",description:"Generation seed.",required:!1,min:0,default:0},{name:"flow_uncond_interval",type:"int",description:"Evaluate unconditional flow CFG every N-th step, reusing the guidance delta between evaluations. Values <= 1 disable reuse and evaluate both branches every step.",required:!1,default:1},{name:"flow_uncond_warmup",type:"int",description:"Initial flow steps that evaluate both CFG branches before guidance-delta reuse; nonpositive values add no warmup.",required:!1,default:2},{name:"ensemble_takes",type:"int",description:"Independent takes in a batched AR pass using consecutive seeds; flow/vocoder decode each take. Named outputs take_01 through take_NN are emitted only when ensemble_takes > 1; otherwise only primary audio is returned.",required:!1,min:1,max:16,default:1},{name:"ensemble_prefix_frames",type:"int",description:"Shared intro frames before ensemble takes fork, approximately 25 frames per second. Zero disables intro locking.",required:!1,min:0,default:0},{name:"flow_chunk_hop_frames",type:"int",description:"Flow chunk hop in AR frames, approximately 25 per second. Zero uses checkpoint configuration; positive values are capped at the configured chunk size.",required:!1,min:0,default:0}],session:[{name:"weight_type",type:"enum",values:["native","bf16","f16","q8_0","q4_0","q4_k"],description:"Shared weight storage type.",required:!1,default:"native"},{name:"language_model_gguf",type:"string",description:"Language model component GGUF file relative to the model root.",required:!1,default:"language_model_q4_0.gguf"},{name:"rvq_depth_decoder_gguf",type:"string",description:"RVQ depth decoder component GGUF file relative to the model root.",required:!1,default:"rvq_depth_decoder_q8_0.gguf"},{name:"flow_transformer_gguf",type:"string",description:"Flow transformer component GGUF file relative to the model root.",required:!1,default:"transformer_q4_0.gguf"},{name:"graph_arena_mb",type:"int",description:"Host graph-metadata arena size in MiB, not device workspace; legacy graph_context_mb remains accepted.",required:!1,min:1,default:32},{name:"weight_context_mb",type:"int",description:"Weight context size in MiB.",required:!1,min:1,default:32},{name:"mem_saver",type:"bool",description:"Load large generation stages only while they are needed to reduce peak VRAM.",required:!1,default:!0},{name:"perf_mode",type:"enum",values:["off","cuda_perf"],description:"Performance preset. cuda_perf selects attention-prefix buckets of 256 rows. Explicit controls override preset values.",required:!1,default:"off"},{name:"kv_cache_alignment",type:"int",description:"Attention-prefix bucket size. 1 preserves full-capacity attention; cuda_perf selects 256. Retains all valid history, but graph shapes may change sampled output. Explicit values override the preset.",required:!1,min:1},{name:"pipeline_overlap",type:"bool",description:"Overlap AR decoding with condition/flow/vocoder work on a second backend stream. Requires mem_saver=false; mem_saver=true is an error. Long requests and nondefault chunk hops use sequential execution.",required:!1,default:!1}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/MiniMax-Music3-GGUF",revision:"main",gated:!1}},packages:[{id:"minimax_music3_q4_0",display_name:"MiniMax Music 3 Q4_0 GGUF",default:!0,format:"gguf",precision:"q4_0",target_directory:"MiniMax-Music3-GGUF",files:["config.json","config/language_model.json","config/rvq_depth_decoder.json","config/condition_encoder.json","config/transformer.json","config/vocoder.json","tokenizer/tokenizer.json","tokenizer/tokenizer_config.json","language_model_q4_0.gguf","rvq_depth_decoder_q8_0.gguf","condition_encoder.gguf","transformer_q4_0.gguf","vocoder.gguf"]},{id:"minimax_music3_q8_0",display_name:"MiniMax Music 3 Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"MiniMax-Music3-GGUF",files:["config.json","config/language_model.json","config/rvq_depth_decoder.json","config/condition_encoder.json","config/transformer.json","config/vocoder.json","tokenizer/tokenizer.json","tokenizer/tokenizer_config.json","language_model_q8_0.gguf","rvq_depth_decoder_q8_0.gguf","condition_encoder.gguf","transformer_q8_0.gguf","vocoder.gguf"]},{id:"minimax_music3_bf16",display_name:"MiniMax Music 3 BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"MiniMax-Music3-GGUF",files:["config.json","config/language_model.json","config/rvq_depth_decoder.json","config/condition_encoder.json","config/transformer.json","config/vocoder.json","tokenizer/tokenizer.json","tokenizer/tokenizer_config.json","language_model_bf16.gguf","rvq_depth_decoder_bf16.gguf","condition_encoder.gguf","transformer_bf16.gguf","vocoder.gguf"]}],dependencies:[],ui:{recommended_package:"minimax_music3_q4_0",tags:["Music","GGUF"],docs:["docs/models/minimax_music3.md","docs/music_generation.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:"."},files:{root_config:"model:config.json",language_model_config:"model:config/language_model.json",depth_decoder_config:"model:config/rvq_depth_decoder.json",condition_encoder_config:"model:config/condition_encoder.json",transformer_config:"model:config/transformer.json",vocoder_config:"model:config/vocoder.json",tokenizer_json:"model:tokenizer/tokenizer.json",tokenizer_config:"model:tokenizer/tokenizer_config.json"}},{format:"safetensors",roots:{model:"."},files:{root_config:"model:config.json",language_model_config:"model:config/language_model.json",depth_decoder_config:"model:config/rvq_depth_decoder.json",condition_encoder_config:"model:config/condition_encoder.json",transformer_config:"model:config/transformer.json",vocoder_config:"model:config/vocoder.json",tokenizer_json:"model:tokenizer/tokenizer.json",tokenizer_config:"model:tokenizer/tokenizer_config.json"},tensors:{language_model_weights:{source:"model:language_model/model.safetensors.index.json"},depth_decoder_weights:{source:"model:rvq_depth_decoder/diffusion_pytorch_model.safetensors"},condition_encoder_weights:{source:"model:condition_encoder/diffusion_pytorch_model.safetensors"},transformer_weights:{source:"model:transformer/diffusion_pytorch_model.safetensors.index.json"},vocoder_weights:{source:"model:vocoder/diffusion_pytorch_model.safetensors"}}}]},W8={family:"miocodec",display_name:"MioCodec",description:"Lightweight neural audio codec that encodes 44.1 kHz audio into a low-rate 25 Hz discrete token stream and decodes tokens with speaker conditioning for efficient speech modeling.",category:"audio_tools",status:"supported",tasks:["vc","s2s"],modes:["offline"],languages:["language_agnostic"],options:{request:[],session:[{name:"weight_type",type:"enum",description:"Weight storage type.",required:!1,preset:"weight_type_full",default:"f32"},{name:"weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:256},{name:"constant_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:256},{name:"content_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:512},{name:"global_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:256},{name:"wave_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:512}],load:[]},capabilities:{codec:["encode_decode"],vc:["speaker_reference"],s2s:["speaker_reference"]},runtime:{tags:["gguf"]},ui:{recommended_package:"miocodec_q8_0",tags:["Codec","VC","GGUF"],docs:["docs/audio_tools.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"miocodec_q8_0",display_name:"MioCodec 25Hz 44.1kHz v2 Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"MioCodec-25Hz-44.1kHz-v2-GGUF",files:["MioCodec-25Hz-44.1kHz-v2-GGUF/miocodec-25hz-44khz-v2-q8_0.gguf"],strip_prefix:"MioCodec-25Hz-44.1kHz-v2-GGUF"},{id:"miocodec_f16",display_name:"MioCodec 25Hz 44.1kHz v2 F16 GGUF",format:"gguf",precision:"f16",target_directory:"MioCodec-25Hz-44.1kHz-v2-GGUF",files:["MioCodec-25Hz-44.1kHz-v2-GGUF/miocodec-25hz-44khz-v2-f16.gguf"],strip_prefix:"MioCodec-25Hz-44.1kHz-v2-GGUF"},{id:"miocodec_orig",display_name:"MioCodec 25Hz 44.1kHz v2 Original-Dtype GGUF",format:"gguf",precision:"orig",target_directory:"MioCodec-25Hz-44.1kHz-v2-GGUF",files:["MioCodec-25Hz-44.1kHz-v2-GGUF/miocodec-25hz-44khz-v2-orig.gguf"],strip_prefix:"MioCodec-25Hz-44.1kHz-v2-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.yaml"},tensors:{weights:{source:"weights:",prefix:"weights"},wavlm_weights:{source:"weights:",prefix:"wavlm_weights"}}},{format:"safetensors",roots:{model:".",wavlm:"wavlm-base-plus-mlx"},files:{config:"model:config.yaml"},tensors:{weights:"model:model.safetensors",wavlm_weights:"wavlm:weights.safetensors"}}]},Q8={family:"miotts",display_name:"MioTTS",description:"Lightweight LLM-based English and Japanese TTS family built on MioCodec, supporting low-latency speech generation and zero-shot voice cloning from short reference audio.",category:"tts",status:"supported",tasks:["tts","clone"],modes:["offline"],languages:["en","ja"],options:{request:[{name:"max_tokens",type:"int",description:"Maximum generated tokens; default 700.",required:!1,min:1},{name:"top_k",type:"int",description:"Generation control; defaults to the checkpoint config.",required:!1},{name:"top_p",type:"float",description:"Generation control; defaults to the checkpoint config.",required:!1,min:0,max:1},{name:"temperature",type:"float",description:"Generation control; defaults to the checkpoint config.",required:!1,min:0,max:2},{name:"repetition_penalty",type:"float",description:"Generation control; defaults to the checkpoint config.",required:!1,min:1,max:1.5},{name:"presence_penalty",type:"float",description:"Presence penalty; default 0.",required:!1,min:0,max:1},{name:"frequency_penalty",type:"float",description:"Frequency penalty; default 0.",required:!1,min:0,max:1},{name:"do_sample",type:"bool",description:"Generation control; defaults to the checkpoint config.",required:!1},{name:"seed",type:"int",description:"Sampling seed; omitted chooses a random seed.",required:!1,min:0,max:4294967295},{name:"best_of_n",type:"int",description:"Candidate count, capped by the session maximum; greater than one enables best-of-N.",required:!1,min:1},{name:"best_of_n_enabled",type:"bool",description:"Override the session best-of-N setting.",required:!1},{name:"best_of_n_language",type:"enum",description:"ASR language used to rank candidates.",required:!1,values:["auto","en","ja"]},{name:"text_chunk_size",type:"int",description:"Framework long-form text chunk size; inherits the session setting.",required:!1,min:1}],session:[{name:"weight_type",type:"enum",description:"Weight storage type; defaults to native.",required:!1,preset:"weight_type_full"},{name:"codec_model_path",type:"path",description:"MioCodec model path; defaults to sibling MioCodec-25Hz-44.1kHz-v2.",required:!1},{name:"best_of_n_asr_model_path",type:"path",description:"ASR model path for candidate ranking; defaults to sibling Qwen3-ASR-0.6B.",required:!1},{name:"text_chunk_size",type:"int",description:"Default framework text chunk size; 120 when hanzi, kana and Hangul outnumber other letters and digits, otherwise 180.",required:!1},{name:"best_of_n_enabled",type:"bool",description:"Enable candidate generation and ASR ranking.",required:!1,default:!1},{name:"best_of_n_default",type:"int",description:"Default candidate count.",required:!1,min:1,default:1},{name:"best_of_n_max",type:"int",description:"Maximum candidate count.",required:!1,min:1,default:8},{name:"best_of_n_language",type:"enum",description:"ASR language used to rank candidates.",required:!1,values:["auto","en","ja"],default:"auto"},{name:"prefill_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:1024},{name:"decode_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:1024},{name:"weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:512},{name:"codec_weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:256},{name:"codec_constant_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:256},{name:"global_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:256},{name:"wave_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:512}],load:[]},capabilities:{clone:["speaker_reference"]},runtime:{tags:["gguf"]},ui:{recommended_package:"miotts_1_7b_q8_0",tags:["TTS","Clone","GGUF"],docs:["docs/models/miotts.md","docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"miotts_1_7b_q8_0",display_name:"MioTTS 1.7B Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"MioTTS-1.7B-GGUF",files:["MioTTS-1.7B-GGUF/miotts-1.7b-q8_0.gguf"],strip_prefix:"MioTTS-1.7B-GGUF"},{id:"miotts_1_7b_bf16",display_name:"MioTTS 1.7B BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"MioTTS-1.7B-GGUF",files:["MioTTS-1.7B-GGUF/miotts-1.7b-bf16.gguf"],strip_prefix:"MioTTS-1.7B-GGUF"},{id:"miotts_1_7b_orig",display_name:"MioTTS 1.7B Original-Dtype GGUF",format:"gguf",precision:"orig",target_directory:"MioTTS-1.7B-GGUF",files:["MioTTS-1.7B-GGUF/miotts-1.7b-orig.gguf"],strip_prefix:"MioTTS-1.7B-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_config:"model:tokenizer_config.json",vocab:"model:vocab.json",merges:"model:merges.txt"},optional_files:{tokenizer_json:"model:tokenizer.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_config:"model:tokenizer_config.json",vocab:"model:vocab.json",merges:"model:merges.txt"},optional_files:{tokenizer_json:"model:tokenizer.json"},tensors:{weights:"model:model.safetensors"}}]},K8={schema_version:1,family:"mira_tts",display_name:"MiraTTS",description:"MiraTTS is a community voice-cloning TTS model with a Qwen2 autoregressive speech-token generator, ECAPA/Perceiver speaker tokenizer, conditional acoustic processor, and DAC decoder.",category:"tts",status:"experimental",tasks:["tts","clone"],modes:["offline","streaming"],languages:["en"],runtime:{tags:["gguf"]},capabilities:{tts:["speaker_reference"],clone:["speaker_reference"]},options:{request:[{name:"max_tokens",type:"int",description:"Maximum autoregressive speech tokens; default 1024.",required:!1,min:1,default:1024},{name:"temperature",type:"float",description:"Sampling temperature; default 0.8. Must be positive.",required:!1,default:.8},{name:"top_k",type:"int",description:"Top-k sampling cutoff; default 50.",required:!1,min:1,default:50},{name:"top_p",type:"float",description:"Nucleus sampling probability; default 0.95. Must be positive.",required:!1,max:1,default:.95},{name:"min_p",type:"float",description:"Minimum probability relative to the most likely token; default 0.05.",required:!1,min:0,max:1,default:.05},{name:"repetition_penalty",type:"float",description:"Autoregressive repetition penalty; default 1.2.",required:!1,min:1,default:1.2},{name:"text_chunk_size",type:"int",description:"Maximum codepoints per progressively emitted streaming segment; default 160.",required:!1,min:1,default:160},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode used by streaming synthesis.",values:["default","tag_aware","japanese","endline"],required:!1,default:"default"},{name:"seed",type:"int",description:"Sampling seed; omitted requests choose a random seed.",required:!1,min:0}],session:[{name:"reference_cache_slots",type:"int",description:"Encoded reference-voice cache slots; default 1. Set to 0 to disable reuse.",required:!1,min:0,default:1},{name:"backbone_weight_type",type:"enum",preset:"weight_type_full",required:!1,default:"native",description:"Storage type for the Qwen2 language-model weights."},{name:"linear_weight_type",type:"enum",preset:"weight_type_full",required:!1,default:"native",description:"Storage type for non-convolutional speaker, processor, and decoder weights."},{name:"conv_weight_type",type:"enum",required:!1,default:"f32",description:"Storage type for speaker and processor convolution weights. The DAC transposed-convolution decoder remains F32 for CUDA compatibility. Applies to the speaker encoder/acoustic processor; waveform decoder remains f32.",values:["native","f32","f16","bf16"]}],load:[]},packages:[],dependencies:[],ui:{tags:["TTS","Clone"],docs:["docs/models/mira_tts.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{language_model:{source:"weights:",prefix:"language_model"},speaker_encoder:{source:"weights:",prefix:"speaker_encoder"},processor:{source:"weights:",prefix:"processor"},decoder:{source:"weights:",prefix:"decoder"},upsampler:{source:"weights:",prefix:"upsampler"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{language_model:"model:language_model.safetensors",speaker_encoder:"model:speaker_encoder.safetensors",processor:"model:processor.safetensors",decoder:"model:decoder.safetensors",upsampler:"model:upsampler.safetensors"}}]},Y8={schema_version:1,family:"mms_forced_aligner",display_name:"Meta MMS-300M Forced Aligner",description:"Meta MMS-300M multilingual CTC forced aligner (Wav2Vec2ForCTC) that aligns an exact transcript to mono/stereo audio and returns word timestamps. The checkpoint covers 1,130 languages, but this port's native text normalization supports Dutch (nl/nld) and English (en/eng) Latin script only; text_normalization=pre_romanized accepts caller-supplied ASCII romanization, and unsupported non-Latin input is rejected. Checkpoint license: CC-BY-NC-4.0; GGUF conversion is local-only, no public redistribution is approved.",category:"speech_analysis",status:"community",tasks:["align"],modes:["offline"],languages:["multilingual"],capabilities:{align:["word_timestamps"]},dependencies:[],options:{request:[{name:"language",type:"string",description:"Language code. Built-in normalization supports nl/nld and en/eng; pre_romanized accepts any nonempty code.",required:!0},{name:"text_normalization",type:"enum",description:"Transcript normalization mode; latin handles Dutch/English Latin script natively, pre_romanized trusts caller-supplied ASCII romanization.",values:["latin","pre_romanized"],required:!1,default:"latin"},{name:"star_frequency",type:"enum",description:"Placement of the virtual <star> CTC target between words (segment) or at transcript edges (edges); matches the reference default segment.",values:["segment","edges"],required:!1,default:"segment"},{name:"merge_threshold_sec",type:"float",description:"Close gaps at or below this threshold, rounded to alignment frames, by moving the later word start; word entries remain separate. Default 0.0 disables gap closure.",required:!1,min:0,default:0},{name:"return_timestamps",type:"bool",description:"Compatibility option; word timestamps are always returned, including when false.",required:!1,default:!0}],session:[{name:"emission_window_sec",type:"float",description:"Center emission window length in seconds used to split long waveforms; must be > 0 and at most 3600. Rounded 16 kHz sample count must be a multiple of 320 (20 ms); default 30.",required:!1,min:.02,max:3600,default:30},{name:"emission_context_sec",type:"float",description:"Left/right context appended to each emission window in seconds; must be nonnegative, at most 3600, and below emission_window_sec. Rounded 16 kHz sample count must be a multiple of 320 (20 ms); default 2.",required:!1,min:0,max:3600,default:2},{name:"max_alignment_cells",type:"int",description:"Hard cap on CTC DP cells (frames x states) allocated per request; alignment fails before allocation when exceeded; default 50000000.",required:!1,min:1,default:5e7},{name:"max_target_tokens",type:"int",description:"Hard cap on flattened CTC target tokens per request; default 8192.",required:!1,min:1,default:8192},{name:"weight_type",type:"enum",description:"Weight storage type; default native (tensors kept as stored in the checkpoint).",preset:"weight_type_conv",required:!1,default:"native"}],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"mms_forced_aligner_300m_f16",tags:["Align","GGUF"],docs:["docs/models/mms_forced_aligner.md","docs/speech_analysis.md","docs/gguf.md"]},package_defaults:{download:{kind:"unsupported",reason:"CC-BY-NC-4.0 checkpoint: convert locally with audiocpp_gguf; no public audio.cpp GGUF distribution is approved."}},packages:[{id:"mms_forced_aligner_300m_f16",display_name:"Meta MMS-300M Forced Aligner F16 GGUF",default:!0,format:"gguf",precision:"f16",target_directory:"MMS-Forced-Aligner-GGUF",files:["MMS-Forced-Aligner-GGUF/mms-forced-aligner-f16.gguf"],strip_prefix:"MMS-Forced-Aligner-GGUF"},{id:"mms_forced_aligner_300m_safetensors",display_name:"Meta MMS-300M Forced Aligner Safetensors",format:"safetensors",precision:"native",target_directory:"mms-300m-1130-forced-aligner",files:["config.json","model.safetensors","special_tokens_map.json","tokenizer_config.json","vocab.json"],download:{kind:"huggingface_snapshot",repo:"MahmoudAshraf/mms-300m-1130-forced-aligner",revision:"49402e9577b1158620820667c218cd494cc44486",gated:!1}},{id:"mms_forced_aligner_300m_q8_0",display_name:"Meta MMS-300M Forced Aligner Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"MMS-Forced-Aligner-GGUF",files:["MMS-Forced-Aligner-GGUF/mms-forced-aligner-q8_0.gguf"],strip_prefix:"MMS-Forced-Aligner-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",vocab:"model:vocab.json"},optional_files:{special_tokens_map:"model:special_tokens_map.json",tokenizer_config:"model:tokenizer_config.json",preprocessor_config:"model:preprocessor_config.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",vocab:"model:vocab.json"},optional_files:{special_tokens_map:"model:special_tokens_map.json",tokenizer_config:"model:tokenizer_config.json",preprocessor_config:"model:preprocessor_config.json"},tensors:{weights:"model:model.safetensors"}}]},J8={schema_version:1,family:"moonshine_asr",display_name:"Moonshine Streaming ASR",description:"Moonshine tiny/small/medium streaming English speech recognition models.",category:"asr",status:"experimental",tasks:["asr"],modes:["offline","streaming"],languages:["en"],capabilities:{asr:["vad_chunking"]},options:{request:[{name:"max_tokens",type:"int",description:"Maximum generated transcript tokens. Defaults to audio-duration derived limit. Nonpositive values select the automatic budget.",required:!1,default:0},{name:"audio_chunk_mode",type:"enum",description:"Long-form audio chunking mode.",values:["auto","fixed","vad","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Maximum duration of each audio chunk in seconds. Must be positive and round to a nonempty sample count.",required:!1,default:60}],session:[{name:"exec_plan",type:"string",description:"JSON component execution plans. Component decoder accepts impl default/ggml/neon and optional backend. Default retains GGML on the session backend; neon requires ENGINE_ENABLE_NEON=ON and an AArch64 NEON CPU session. No artifacts or params are used.",required:!1,default:"{}"},{name:"weight_type",type:"enum",description:"Shared matmul weight storage type. Omitted uses native, except the CPU encoder with hidden size 620, 10 layers and decoder hidden size 512 uses f16. The decoder defaults to native unless explicitly overridden.",values:["native","f32","f16"],required:!1},{name:"conv_weight_type",type:"enum",description:"Frontend convolution weight storage type.",preset:"weight_type_conv",required:!1},{name:"decoder_weight_type",type:"enum",description:"Decoder matmul weight storage type; inherits an explicit weight_type setting, otherwise native.",values:["native","f32","f16"],required:!1},{name:"encoder_gelu",type:"enum",description:"Encoder GELU lowering.",values:["erf","exact","tanh","quick"],required:!1,default:"quick"},{name:"cpu_blas_scheduler",type:"bool",description:"Use BLAS/Accelerate for supported CPU encoder matmuls.",required:!1,default:!0},{name:"weight_context_mb",type:"int",description:"Weight context arena size in MiB.",required:!1,min:1,default:256},{name:"graph_arena_mb",type:"int",description:"Graph arena size in MiB.",required:!1,min:1,default:512},{name:"vad_model_path",type:"path",description:"VAD model path used by audio_chunk_mode=vad (any built-in VAD family; default Silero VAD).",required:!1,default:"assets/framework/models/silero_vad"}],load:[]},runtime:{tags:["gguf","cpu","stream"]},ui:{recommended_package:"moonshine_streaming_tiny_q8_0",tags:["ASR","GGUF","Stream"],docs:["docs/asr.md","docs/models/moonshine_asr.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"moonshine_streaming_tiny_q8_0",display_name:"Moonshine Streaming Tiny Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Moonshine-Streaming-GGUF",files:["Moonshine-Streaming-GGUF/moonshine-streaming-tiny-q8_0.gguf"],strip_prefix:"Moonshine-Streaming-GGUF"},{id:"moonshine_streaming_small_q8_0",display_name:"Moonshine Streaming Small Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Moonshine-Streaming-GGUF",files:["Moonshine-Streaming-GGUF/moonshine-streaming-small-q8_0.gguf"],strip_prefix:"Moonshine-Streaming-GGUF"},{id:"moonshine_streaming_medium_q8_0",display_name:"Moonshine Streaming Medium Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Moonshine-Streaming-GGUF",files:["Moonshine-Streaming-GGUF/moonshine-streaming-medium-q8_0.gguf"],strip_prefix:"Moonshine-Streaming-GGUF"},{id:"moonshine_streaming_tiny_safetensors",display_name:"Moonshine Streaming Tiny Safetensors",format:"safetensors",precision:"f32",target_directory:"moonshine-streaming-tiny",files:["config.json","tokenizer.json","model.safetensors"],download:{kind:"huggingface_snapshot",repo:"moonshine-ai/moonshine-streaming-tiny",revision:"main",gated:!1}},{id:"moonshine_streaming_small_safetensors",display_name:"Moonshine Streaming Small Safetensors",format:"safetensors",precision:"f32",target_directory:"moonshine-streaming-small",files:["config.json","tokenizer.json","model.safetensors"],download:{kind:"huggingface_snapshot",repo:"moonshine-ai/moonshine-streaming-small",revision:"main",gated:!1}},{id:"moonshine_streaming_medium_safetensors",display_name:"Moonshine Streaming Medium Safetensors",format:"safetensors",precision:"f32",target_directory:"moonshine-streaming-medium",files:["config.json","tokenizer.json","model.safetensors"],download:{kind:"huggingface_snapshot",repo:"moonshine-ai/moonshine-streaming-medium",revision:"main",gated:!1}}],dependencies:[],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"model:model.safetensors"}}]},X8={schema_version:1,family:"moss_transcribe_diarize",display_name:"MOSS-Transcribe-Diarize",description:"Joint transcription, speaker diarization, and timestamps across 50+ languages with a Whisper encoder and Qwen3 decoder.",category:"asr",status:"supported",tasks:["asr"],modes:["offline","streaming"],languages:["auto","50+ languages"],capabilities:{asr:["segments","speaker_turns"]},runtime:{tags:["gguf"]},options:{request:[{name:"max_tokens",type:"int",min:1,required:!1,description:"Maximum generated transcript tokens. Defaults to checkpoint generation_config.max_new_tokens; must be positive."},{name:"instruct",type:"string",required:!1,description:"Transcription instruction; empty uses the upstream diarization prompt."}],session:[],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"moss_transcribe_diarize_bf16",display_name:"MOSS-Transcribe-Diarize GGUF BF16",default:!0,format:"gguf",precision:"bf16",target_directory:"MOSS-Transcribe-Diarize-GGUF",files:["MOSS-Transcribe-Diarize-GGUF/moss-transcribe-diarize-bf16.gguf"],strip_prefix:"MOSS-Transcribe-Diarize-GGUF"},{id:"moss_transcribe_diarize_q8_0",display_name:"MOSS-Transcribe-Diarize GGUF Q8_0",format:"gguf",precision:"q8_0",target_directory:"MOSS-Transcribe-Diarize-GGUF",files:["MOSS-Transcribe-Diarize-GGUF/moss-transcribe-diarize-q8_0.gguf"],strip_prefix:"MOSS-Transcribe-Diarize-GGUF"},{id:"moss_transcribe_diarize_q4_k",display_name:"MOSS-Transcribe-Diarize GGUF Q4_K",format:"gguf",precision:"q4_k",target_directory:"MOSS-Transcribe-Diarize-GGUF",files:["MOSS-Transcribe-Diarize-GGUF/moss-transcribe-diarize-q4_k.gguf"],strip_prefix:"MOSS-Transcribe-Diarize-GGUF"}],dependencies:[],ui:{tags:["GGUF"],docs:[],recommended_package:"moss_transcribe_diarize_bf16"},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",preprocessor_config:"model:preprocessor_config.json",processor_config:"model:processor_config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json",vocab:"model:vocab.json",merges:"model:merges.txt"},tensors:{weights:{source:"weights:",prefix:"weights"}}}]},Z8={family:"moss_tts_local",display_name:"MOSS-TTS-Local",description:"Flagship MOSS-TTS model for high-fidelity 31-language and code-switched speech, zero-shot voice cloning, long-form generation, and fine-grained Pinyin, phoneme, and duration control.",category:"tts",status:"supported",tasks:["tts","clone"],modes:["offline"],languages:["ar","cs","da","de","el","en","es","fa","fi","fr","he","hi","hu","it","ja","ko","mk","ms","nl","pl","pt","ro","ru","sv","sw","th","tl","tr","vi","yue","zh"],options:{request:[{name:"max_tokens",type:"int",description:"Maximum generated audio frames.",required:!1,min:1,default:4096},{name:"do_sample",type:"bool",description:"Enable sampling.",required:!1,default:!0},{name:"temperature",type:"float",description:"Audio sampling temperature. Must be finite and positive when sampling.",required:!1,default:1.7},{name:"top_p",type:"float",description:"Audio nucleus sampling probability.",required:!1,default:.8},{name:"top_k",type:"int",description:"Audio top-k sampling limit.",required:!1,default:25},{name:"repetition_penalty",type:"float",description:"Audio repetition penalty. Must be finite and positive when token history is nonempty.",required:!1,default:1},{name:"text_temperature",type:"float",description:"Text sampling temperature. Must be finite and positive when sampling.",required:!1,default:1},{name:"text_top_p",type:"float",description:"Text nucleus sampling probability.",required:!1,default:1},{name:"text_top_k",type:"int",description:"Text top-k sampling limit.",required:!1,default:50},{name:"seed",type:"int",description:"Sampling seed; omitted chooses a random seed.",required:!1,min:0,max:4294967295},{name:"text_chunk_size",type:"int",description:"Framework long-form text chunk size.",required:!1,default:2048,min:1},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode.",required:!1,values:["default","tag_aware","japanese","endline"],default:"default"}],session:[{name:"weight_type",type:"enum",description:"Backbone weight storage; auto uses F32 on CPU, BF16 on CUDA, native on other backends.",required:!1,values:["auto","native","f32","f16","bf16","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k","q8_0","nvfp4"],default:"auto"},{name:"reference_cache_slots",type:"int",description:"Encoded reference cache slots; zero disables reuse.",required:!1,min:0,default:1}],load:[]},capabilities:{clone:["speaker_reference"]},runtime:{tags:["gguf"]},ui:{recommended_package:"moss_tts_local_v1_5_q8_0",tags:["TTS","Clone","GGUF"],docs:["docs/models/moss_tts_local.md","docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"moss_tts_local_v1_5_q8_0",display_name:"MOSS-TTS-Local v1.5 Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"MOSS-TTS-Local-v1.5-GGUF",files:["MOSS-TTS-Local-v1.5-GGUF/moss-tts-local-v1.5-q8_0.gguf"],strip_prefix:"MOSS-TTS-Local-v1.5-GGUF"},{id:"moss_tts_local_v1_5_bf16",display_name:"MOSS-TTS-Local v1.5 BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"MOSS-TTS-Local-v1.5-GGUF",files:["MOSS-TTS-Local-v1.5-GGUF/moss-tts-local-v1.5-bf16.gguf"],strip_prefix:"MOSS-TTS-Local-v1.5-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_vocab:"model:vocab.json",tokenizer_merges:"model:merges.txt",audio_tokenizer_config:"model:audio_tokenizer/config.json"},tensors:{model_weights:{source:"weights:",prefix:"model_weights"},audio_tokenizer_weights:{source:"weights:",prefix:"audio_tokenizer_weights"}}},{format:"safetensors",roots:{model:".",audio_tokenizer:"audio_tokenizer"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_vocab:"model:vocab.json",tokenizer_merges:"model:merges.txt",audio_tokenizer_config:"audio_tokenizer:config.json"},tensors:{model_weights:"model:model.safetensors",audio_tokenizer_weights:"audio_tokenizer:model.safetensors.index.json"}}]},e$={family:"moss_tts_nano",display_name:"MOSS-TTS-Nano",description:"Compact deployment-first MOSS-TTS model for real-time multilingual speech generation, lightweight integration, and zero-shot voice cloning.",category:"tts",status:"supported",tasks:["tts","clone"],modes:["offline","streaming"],languages:["ar","cs","da","de","el","en","es","fa","fr","hu","it","ja","ko","pl","pt","ru","sv","tr","zh"],options:{request:[{name:"reference_text",type:"string",description:"Transcript for reference audio; a nonempty value requires voice reference audio.",required:!1,default:""},{name:"max_tokens",type:"int",description:"Maximum generated audio frames.",required:!1,min:1,default:300},{name:"active_codebooks",type:"int",description:"Active codebooks; defaults to the checkpoint n_vq. Must not exceed checkpoint n_vq; omitted uses n_vq.",required:!1,min:1},{name:"do_sample",type:"bool",description:"Enable sampling.",required:!1,default:!0},{name:"temperature",type:"float",description:"Audio sampling temperature. Must be positive, including when do_sample=false.",required:!1,default:1.7},{name:"top_p",type:"float",description:"Audio nucleus sampling probability.",required:!1,default:.8,min:0,max:1},{name:"top_k",type:"int",description:"Audio top-k sampling limit.",required:!1,default:25,min:0},{name:"repetition_penalty",type:"float",description:"Audio repetition penalty. Must be positive.",required:!1,default:1},{name:"text_temperature",type:"float",description:"Text sampling temperature. Must be positive, including when do_sample=false.",required:!1,default:1.5},{name:"text_top_p",type:"float",description:"Text nucleus sampling probability.",required:!1,default:1,min:0,max:1},{name:"text_top_k",type:"int",description:"Text top-k sampling limit.",required:!1,default:50,min:0},{name:"seed",type:"int",description:"Sampling seed; omitted chooses a random seed.",required:!1,min:0,max:4294967295},{name:"text_chunk_size",type:"int",description:"Framework long-form text chunk size; default 50 when hanzi, kana and Hangul outnumber other letters and digits, otherwise 256.",required:!1,min:1},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode.",required:!1,values:["default","tag_aware","japanese","endline"],default:"default"}],session:[{name:"weight_type",type:"enum",description:"Weight storage type.",required:!1,preset:"weight_type_full",default:"native"},{name:"global_weight_type",type:"enum",description:"Global transformer weight storage; inherits weight_type.",required:!1,preset:"weight_type_full"},{name:"local_frame_weight_type",type:"enum",description:"Local frame decoder weight storage; inherits weight_type.",required:!1,preset:"weight_type_full"},{name:"prefill_mode",type:"enum",description:"How prompt rows are forwarded: one batched graph (default, fast) or one row at a time through the decode graph. single_row keeps quantized runs on a single kernel family for numerical self-consistency at a one-time prefill latency cost; see the model docs' quantization notes.",required:!1,values:["batched","single_row"],default:"batched"},{name:"global_prefill_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:256},{name:"global_decode_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:128},{name:"global_weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:512},{name:"local_frame_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:64},{name:"local_frame_weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:128},{name:"audio_tokenizer_encoder_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:64},{name:"audio_tokenizer_decoder_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:64},{name:"audio_tokenizer_weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:128}],load:[]},capabilities:{clone:["speaker_reference"]},runtime:{tags:["gguf"]},ui:{recommended_package:"moss_tts_nano_100m_q8_0",tags:["TTS","Clone","GGUF"],docs:["docs/models/moss_tts_nano.md","docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"moss_tts_nano_100m_q8_0",display_name:"MOSS-TTS-Nano 100M Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"MOSS-TTS-Nano-100M-GGUF",files:["MOSS-TTS-Nano-100M-GGUF/moss-tts-nano-100m-q8_0.gguf"],strip_prefix:"MOSS-TTS-Nano-100M-GGUF"},{id:"moss_tts_nano_100m_bf16",display_name:"MOSS-TTS-Nano 100M BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"MOSS-TTS-Nano-100M-GGUF",files:["MOSS-TTS-Nano-100M-GGUF/moss-tts-nano-100m-bf16.gguf"],strip_prefix:"MOSS-TTS-Nano-100M-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_model:"model:tokenizer.model",audio_tokenizer_config:"model:audio_tokenizer/config.json"},tensors:{model_weights:{source:"weights:",prefix:"model_weights"},audio_tokenizer_weights:{source:"weights:",prefix:"audio_tokenizer_weights"}}},{format:"safetensors",roots:{model:".",audio_tokenizer:"audio_tokenizer"},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_model:"model:tokenizer.model",audio_tokenizer_config:"audio_tokenizer:config.json"},tensors:{model_weights:"model:model.safetensors",audio_tokenizer_weights:"audio_tokenizer:model.safetensors.index.json"}}]},t$={schema_version:1,family:"moss_tts_v15",display_name:"MOSS-TTS-v1.5",description:"8B delay-pattern MOSS-TTS: zero-shot voice cloning from a short reference, 24 kHz, with an explicit duration budget.",category:"community",status:"experimental",tasks:["tts","clone"],modes:["offline"],languages:["en","zh"],capabilities:{tts:["speaker_reference","style_control","long_form"],clone:["speaker_reference"]},runtime:{tags:["gguf"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_merges:"model:merges.txt",audio_tokenizer_config:"model:audio_tokenizer/config.json"},tensors:{model_weights:{source:"weights:",prefix:"model_weights"},audio_tokenizer_weights:{source:"weights:",prefix:"audio_tokenizer_weights"}}},{format:"safetensors",roots:{model:".",audio_tokenizer:"audio_tokenizer"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_merges:"model:merges.txt",audio_tokenizer_config:"audio_tokenizer:config.json"},tensors:{model_weights:"model:model.safetensors.index.json",audio_tokenizer_weights:"audio_tokenizer:model.safetensors.index.json"}}],options:{request:[{name:"min_frames",type:"int",required:!1,default:0,description:"Minimum generated audio frames per text chunk; nonpositive values derive a text-length-based floor. Separate from duration_frames conditioning."},{name:"max_frames",type:"int",required:!1,default:0,description:"Generated audio-frame ceiling per text chunk; nonpositive values derive a text-length-based ceiling. Runtime raises it to at least the effective min_frames plus the number of codebooks."},{name:"instruct",type:"string",required:!1,description:"Voice description. Followed only loosely on this checkpoint; a reference recording is far more reliable."},{name:"duration_frames",type:"int",required:!1,description:"Duration budget in codec frames at 12.5 a second, the model's own '- Tokens:' field. Nonpositive values disable duration conditioning."},{name:"language",type:"string",required:!1,description:"Full language name; the model does not understand codes like 'en'."},{name:"seed",type:"int",required:!1,description:"Reproduces a take exactly; default 0. Parsed as signed 32-bit integer then converted to uint32; negative values wrap.",default:0},{name:"text_temperature",type:"float",required:!1,default:1.5,description:"Text-token sampling temperature. Must be finite and positive when sampling."},{name:"temperature",type:"float",required:!1,description:"Audio sampling temperature; default 1.5. Must be finite and positive when sampling.",default:1.5},{name:"top_p",type:"float",required:!1,description:"Audio nucleus sampling cutoff; default 0.6.",default:.6},{name:"top_k",type:"int",required:!1,description:"Audio top-k; default 50.",default:50},{name:"repetition_penalty",type:"float",required:!1,description:"Audio repetition penalty; default 1.1. Must be finite and positive when history is nonempty.",default:1.1},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per long-form text chunk; default 200.",required:!1,min:1,default:200},{name:"text_chunk_mode",type:"enum",description:"Text chunking policy; word_budget also accepts default.",values:["word_budget","tag_aware","japanese","endline"],required:!1,default:"word_budget"}],session:[{name:"weight_type",type:"enum",values:["native","f32","bf16","q8_0"],required:!1,default:"native",description:"Backbone and head weight storage; default native, which keeps a GGUF package's own type. Forcing bf16 dequantises a quantised package and costs the VRAM the quantisation was meant to save. f16 is rejected: this backbone produces NaN in it."}],load:[]},ui:{tags:["TTS","Clone","GGUF"],docs:["docs/models/moss_tts_v15.md","docs/tts.md","docs/gguf.md"],recommended_package:"moss_tts_v15_q8_0_codec_f16"},packages:[{id:"moss_tts_v15_q8_0_codec_f16",display_name:"MOSS-TTS-v1.5 Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"MOSS-TTS-v1.5-GGUF",files:["moss_tts_v15_q8_0_codec_f16.gguf"]},{id:"moss_tts_v15_q4_k_codec_f16",display_name:"MOSS-TTS-v1.5 Q4_K GGUF",default:!1,format:"gguf",precision:"q4_k",target_directory:"MOSS-TTS-v1.5-GGUF",files:["moss_tts_v15_q4_k_codec_f16.gguf"]},{id:"moss_tts_v15_bf16_codec_f16",display_name:"MOSS-TTS-v1.5 BF16 GGUF",default:!1,format:"gguf",precision:"bf16",target_directory:"MOSS-TTS-v1.5-GGUF",files:["moss_tts_v15_bf16_codec_f16.gguf"]}],package_defaults:{download:{kind:"huggingface_snapshot",repo:"christopherthompson81/MOSS-TTS-v1.5-GGUF",revision:"main",gated:!1}},dependencies:[]},a$={schema_version:1,family:"moss_ttsd",display_name:"MOSS-TTSD",description:"8B delay-pattern dialogue TTS: speaker-tagged conversation in one take, with per-speaker zero-shot voice cloning. 24 kHz, 16 codebooks.",category:"community",status:"experimental",tasks:["tts","clone"],modes:["offline"],languages:["en","zh"],capabilities:{tts:["speaker_reference","multi_speaker","long_form"],clone:["speaker_reference","multi_speaker"]},runtime:{tags:["gguf"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_merges:"model:merges.txt",audio_tokenizer_config:"model:audio_tokenizer/config.json"},tensors:{model_weights:{source:"weights:",prefix:"model_weights"},audio_tokenizer_weights:{source:"weights:",prefix:"audio_tokenizer_weights"}}},{format:"safetensors",roots:{model:".",audio_tokenizer:"audio_tokenizer"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_merges:"model:merges.txt",audio_tokenizer_config:"audio_tokenizer:config.json"},tensors:{model_weights:"model:model.safetensors.index.json",audio_tokenizer_weights:"audio_tokenizer:model.safetensors.index.json"}}],options:{request:[{name:"voice_samples",type:"string",required:!1,description:"Per-speaker reference WAV paths, comma separated and positional: the first is [S1], the second [S2]. Leave an entry empty to let that speaker be invented rather than cloned. Cannot be combined with voice_ref."},{name:"reference_text",type:"string",required:!1,description:"What the reference recordings say, speaker-tagged. Prepended to the dialogue so the continuation carries on from words it has already spoken."},{name:"language",type:"string",required:!1,description:"Full language name; the model does not understand codes like 'en'."},{name:"instruct",type:"string",required:!1,description:"Free-text direction for the delivery."},{name:"seed",type:"int",required:!1,description:"Reproduces a take exactly. Parsed as signed 32-bit integer then converted to uint32; negative values wrap."},{name:"text_temperature",type:"float",required:!1,default:1.5,description:"Text-token sampling temperature. Must be finite and positive when sampling."},{name:"temperature",type:"float",required:!1,min:0,default:1.5,description:"Audio sampling temperature; must be > 0, default 1.5."},{name:"top_p",type:"float",required:!1,min:0,default:.6,description:"Audio nucleus sampling cutoff."},{name:"top_k",type:"int",required:!1,default:50,description:"Audio top-k. Nonpositive values disable filtering."},{name:"repetition_penalty",type:"float",required:!1,min:0,default:1.1,description:"Audio repetition penalty; must be > 0. Checked when token history is present; default 1.1."},{name:"max_frames",type:"int",required:!1,description:"Ceiling on generated codec frames at 12.5/s; 0 derives one from the dialogue length. Nonpositive values derive an automatic ceiling."}],session:[{name:"weight_type",type:"enum",values:["native","f32","bf16","q8_0"],required:!1,default:"native",description:"Backbone and head weight storage; default native, which keeps a GGUF package's own type. Forcing bf16 dequantises a quantised package and costs the VRAM the quantisation was meant to save. f16 is rejected: this backbone produces NaN in it."}],load:[]},ui:{tags:["TTS","Clone","GGUF"],docs:["docs/models/moss_ttsd.md","docs/tts.md","docs/gguf.md"],recommended_package:"moss_ttsd_q8_0_codec_f16"},packages:[{id:"moss_ttsd_q8_0_codec_f16",display_name:"MOSS-TTSD Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"MOSS-TTSD-GGUF",download:{kind:"huggingface_snapshot",repo:"christopherthompson81/MOSS-TTSD-GGUF"},files:["moss_ttsd_q8_0_codec_f16.gguf"]},{id:"moss_ttsd_q4_k_codec_f16",display_name:"MOSS-TTSD Q4_K GGUF (f16 heads)",default:!1,format:"gguf",precision:"q4_k",target_directory:"MOSS-TTSD-GGUF",download:{kind:"huggingface_snapshot",repo:"christopherthompson81/MOSS-TTSD-GGUF"},files:["moss_ttsd_q4_k_codec_f16.gguf"]},{id:"moss_ttsd_bf16_codec_f16",display_name:"MOSS-TTSD BF16 GGUF",default:!1,format:"gguf",precision:"bf16",target_directory:"MOSS-TTSD-GGUF",download:{kind:"huggingface_snapshot",repo:"christopherthompson81/MOSS-TTSD-GGUF"},files:["moss_ttsd_bf16_codec_f16.gguf"]}],package_defaults:{download:{kind:"huggingface_snapshot",repo:"christopherthompson81/MOSS-TTS-v1.5-GGUF",revision:"main",gated:!1}},dependencies:[]},i$={family:"moss_voicegen",display_name:"MOSS-VoiceGenerator",description:"MOSS voice design model: creates a speaker from a written instruction instead of a reference recording, then speaks the supplied text in that voice.",category:"community",status:"community",tasks:["design"],modes:["offline"],languages:["en","zh"],capabilities:{design:["voice_design"]},options:{request:[{name:"min_frames",type:"int",required:!1,default:0,description:"Minimum generated audio frames per text chunk; nonpositive values derive a text-length-based floor."},{name:"max_frames",type:"int",required:!1,default:0,description:"Generated audio-frame ceiling per text chunk; nonpositive values derive a text-length-based ceiling. Runtime raises it to at least the effective min_frames plus the number of codebooks."},{name:"instruct",type:"string",required:!1,description:"Voice description: timbre, age, pace, emotion."},{name:"text_temperature",type:"float",required:!1,default:1.5,description:"Text-token sampling temperature. Must be finite and positive when sampling."},{name:"language",type:"string",description:"Optional full language name, such as English or Chinese; not an ISO language code.",required:!1},{name:"seed",type:"int",description:"Generation seed; later text chunks add their chunk index. Parsed as signed 32-bit integer then converted to uint32; negative values wrap.",required:!1,default:0},{name:"temperature",type:"float",description:"Audio-token sampling temperature. Must be finite and positive when sampling.",required:!1,default:1.5},{name:"top_p",type:"float",description:"Audio-token nucleus sampling cutoff.",required:!1,default:.6},{name:"top_k",type:"int",description:"Audio-token top-k sampling limit.",required:!1,default:50},{name:"repetition_penalty",type:"float",description:"Audio-token repetition penalty. Must be finite and positive when history is nonempty.",required:!1,default:1.1},{name:"text_chunk_size",type:"int",description:"Maximum characters per generated text chunk; must be positive.",required:!1,min:1,default:200},{name:"text_chunk_mode",type:"enum",description:"Text chunking policy.",required:!1,preset:"text_chunk_mode_full",default:"word_budget"}],session:[{name:"weight_type",type:"enum",description:"Backbone weight storage. f16 is not supported.",required:!1,values:["native","f32","bf16","q8_0"],default:"bf16"}],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"moss_voicegen_bf16_codec_f16_decode",tags:["Voice Design","GGUF"],docs:["docs/models/moss_voicegen.md","docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"moss_voicegen_bf16_codec_f16_decode",display_name:"MOSS-VoiceGenerator BF16 GGUF",default:!0,format:"gguf",precision:"bf16",target_directory:"MOSS-VoiceGenerator-GGUF",files:["MOSS-VoiceGenerator-GGUF/moss_voicegen_bf16_codec_f16_decode.gguf"],strip_prefix:"MOSS-VoiceGenerator-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_merges:"model:merges.txt",audio_tokenizer_config:"model:audio_tokenizer/config.json"},tensors:{model_weights:{source:"weights:",prefix:"model_weights"},audio_tokenizer_weights:{source:"weights:",prefix:"audio_tokenizer_weights"}}},{format:"safetensors",roots:{model:".",audio_tokenizer:"audio_tokenizer"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_merges:"model:merges.txt",audio_tokenizer_config:"audio_tokenizer:config.json"},tensors:{model_weights:"model:model.safetensors",audio_tokenizer_weights:"audio_tokenizer:model.safetensors.index.json"}}]},n$={schema_version:1,family:"mossformer2",display_name:"MossFormer2",description:"MossFormer2 overlapping speech separation at 16 kHz.",category:"audio_tools",status:"supported",tasks:["sep"],modes:["offline"],languages:["language_agnostic"],capabilities:{sep:["stems"]},runtime:{tags:["gguf"]},options:{request:[{name:"audio_chunk_duration_sec",type:"float",description:"Separation window duration; zero selects whole-file inference.",min:0,default:2,required:!1},{name:"audio_chunk_overlap_sec",type:"float",description:"Overlap between adjacent audio chunks, in seconds; must be smaller than audio_chunk_duration_sec when chunking is enabled. Recommended: 25% of audio_chunk_duration_sec, matching the official Python settings. Overlapping edges are trimmed rather than averaged. Ignored for whole-file inference.",min:0,default:.5,required:!1},{name:"normalize_output",type:"bool",description:"Match each trimmed track RMS to the input as in ClearVoice's NumPy interface.",default:!0,required:!1}],session:[],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"mossformer2_ss_16k_f32",display_name:"MossFormer2 SS 16K F32",default:!0,format:"gguf",precision:"f32",target_directory:"MossFormer2-GGUF",files:["MossFormer2-GGUF/mossformer2-ss-16k-f32.gguf"],strip_prefix:"MossFormer2-GGUF"},{id:"mossformer2_ss_16k_f16",display_name:"MossFormer2 SS 16K F16",default:!1,format:"gguf",precision:"f16",target_directory:"MossFormer2-GGUF",files:["MossFormer2-GGUF/mossformer2-ss-16k-f16.gguf"],strip_prefix:"MossFormer2-GGUF"}],dependencies:[],ui:{tags:["GGUF"],docs:["docs/models/mossformer2.md"],recommended_package:"mossformer2_ss_16k_f32"},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:{source:"weights:",prefix:"weights"}}}]},s$={schema_version:1,family:"muscriptor",display_name:"MuScriptor",description:"MuScriptor is an audio-to-symbolic model that converts music audio into symbolic note events or MIDI files, with instrument constraints, sampling, beam search, batch chunk decoding, and streaming final-result output.",category:"audio_tools",status:"supported",tasks:["midi"],modes:["offline","streaming"],languages:["music"],runtime:{tags:["gguf","stream"]},capabilities:{},options:{request:[{name:"instruments",type:"string",description:"Comma-separated instrument group names to constrain generated MIDI events; empty allows all instruments.",required:!1,default:""},{name:"output_format",type:"enum",description:"Primary output serialization written by --out; midi writes a MIDI file, json writes generated note events. Default midi.",values:["midi","json"],required:!1,default:"midi"},{name:"max_tokens",type:"int",description:"Maximum generated MIDI-event token count per chunk; default 2000.",required:!1,min:1,default:2e3},{name:"do_sample",type:"bool",description:"Use temperature sampling instead of greedy token selection; default false.",required:!1,default:!1},{name:"temperature",type:"float",description:"Sampling temperature when do_sample=true; 0 is accepted for compatibility and behaves deterministically, default 1.0.",required:!1,min:0,default:1},{name:"guidance_scale",type:"float",description:"Classifier-free guidance coefficient; 1 disables CFG, default 1.0.",required:!1,default:1},{name:"batch_size",type:"int",description:"Number of audio chunks processed per batch when prelude_forcing=false; default 1.",required:!1,min:1,default:1},{name:"num_beams",type:"int",description:"Beam-search width; 1 disables beam search, default 1. Beam search requires guidance_scale=1, do_sample=false, and an actual graph batch of one.",required:!1,min:1,default:1},{name:"prelude_forcing",type:"bool",description:"Force open-note prelude tokens between sequential chunks; default true.",required:!1,default:!0},{name:"seed",type:"int",description:"Sampling seed; default 0. Parsed as int64 and converted to uint64; negative values wrap.",required:!1,default:0}],session:[{name:"weight_type",type:"enum",description:"Transformer weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"perf_mode",type:"enum",description:"Decoder attention mode; flash_attention uses the CUDA fast path, off keeps the exact attention path. Default flash_attention.",values:["off","flash_attention"],required:!1,default:"flash_attention"},{name:"weight_context_mb",type:"int",description:"Weight context arena size in MiB; default 512.",required:!1,min:1,default:512},{name:"conditioning_graph_arena_mb",type:"int",description:"Condition graph arena size in MiB; default 128.",required:!1,min:1,default:128},{name:"decoder_prefill_graph_arena_mb",type:"int",description:"Decoder prefill graph arena size in MiB; default 768.",required:!1,min:1,default:768},{name:"decoder_decode_graph_arena_mb",type:"int",description:"Decoder cached-step graph arena size in MiB; default 512.",required:!1,min:1,default:512}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"muscriptor_small_f32",display_name:"MuScriptor Small F32 GGUF",default:!0,format:"gguf",precision:"f32",target_directory:"MuScriptor-Small-GGUF",files:["MuScriptor-Small-GGUF/muscriptor-small-f32.gguf"],strip_prefix:"MuScriptor-Small-GGUF"},{id:"muscriptor_medium_f32",display_name:"MuScriptor Medium F32 GGUF",format:"gguf",precision:"f32",target_directory:"MuScriptor-Small-GGUF",files:["MuScriptor-Small-GGUF/muscriptor-medium-f32.gguf"],strip_prefix:"MuScriptor-Small-GGUF"},{id:"muscriptor_large_f32",display_name:"MuScriptor Large F32 GGUF",format:"gguf",precision:"f32",target_directory:"MuScriptor-Small-GGUF",files:["MuScriptor-Small-GGUF/muscriptor-large-f32.gguf"],strip_prefix:"MuScriptor-Small-GGUF"}],dependencies:[],ui:{recommended_package:"muscriptor_small_f32",tags:["Music","MIDI","GGUF","Stream"],docs:["docs/models/muscriptor.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json"},tensors:{weights:"model:model.safetensors"}}]},r$={schema_version:1,family:"nemotron_3_diar",display_name:"Nemotron 3 Diarization",description:"NVIDIA eight-speaker streaming diarization model with arrival-order speaker identities and configurable latency profiles.",category:"speech_analysis",status:"supported",tasks:["diar"],modes:["offline","streaming"],languages:["multilingual"],capabilities:{diar:["speaker_turns"]},dependencies:[],options:{request:[{name:"speaker_threshold",type:"float",description:"Speaker activity threshold used for turn decoding.",required:!1,min:0,max:1,default:.5},{name:"speaker_min_frames",type:"int",description:"Minimum decoded turn duration in 10 ms output frames.",required:!1,min:0,default:0},{name:"speaker_pad_frames",type:"int",description:"Padding applied to decoded turns in 10 ms output frames.",required:!1,min:0,default:0},{name:"return_frame_probabilities",type:"bool",description:"Attach the raw 10 ms speaker-activity timeline as the speaker_probabilities.safetensors artifact (F32 [frames, speakers] plus streaming-geometry metadata), the input for nemotron_asr speaker tagging.",required:!1,default:!1}],session:[{name:"latency_profile",type:"enum",description:"Streaming latency profile: the official very_high, low, very_low and ultra_low presets, asr_la0/3/6/13 for nemotron_asr speaker masking at that ASR lookahead, or custom.",values:["very_high","low","very_low","ultra_low","asr_la0","asr_la3","asr_la6","asr_la13","custom"],required:!1,default:"very_high"},{name:"spkcache_len",type:"int",description:"Speaker-cache length in 80 ms encoder frames for the custom profile.",required:!1,min:16},{name:"fifo_len",type:"int",description:"FIFO length in 80 ms encoder frames for the custom profile.",required:!1,min:0},{name:"chunk_len",type:"int",description:"Chunk length in 80 ms encoder frames for the custom profile.",required:!1,min:1},{name:"chunk_right_context",type:"int",description:"Future context in 80 ms encoder frames for the custom profile.",required:!1,min:0},{name:"spkcache_update_period",type:"int",description:"FIFO-to-cache update period in 80 ms encoder frames for the custom profile.",required:!1,min:1},{name:"attention",type:"enum",values:["auto","flash","eager"],description:"Encoder attention lowering; auto uses flash attention where the backend supports it.",required:!1,default:"auto"},{name:"graph_arena_mb",type:"int",description:"Inference graph arena size in MiB.",required:!1,min:1,default:1024},{name:"weight_context_mb",type:"int",description:"Weight context size in MiB.",required:!1,min:1,default:1024},{name:"weight_type",type:"enum",description:"Default model weight storage type.",preset:"weight_type_full",required:!1,default:"native"}],load:[]},runtime:{tags:["gguf","stream"]},ui:{recommended_package:"nemotron_3_diar_bf16",tags:["Diar","Stream","GGUF"],docs:["docs/models/nemotron_3_diar.md","docs/speech_analysis.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/Nemotron-3-Diarization-GGUF",revision:"main",gated:!1}},packages:[{id:"nemotron_3_diar_bf16",display_name:"Nemotron 3 Diarization BF16 GGUF",default:!0,format:"gguf",precision:"bf16",target_directory:"Nemotron-3-Diarization-GGUF",files:["nemotron-3-diarization-bf16.gguf"]},{id:"nemotron_3_diar_q8_0",display_name:"Nemotron 3 Diarization Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Nemotron-3-Diarization-GGUF",files:["nemotron-3-diarization-q8_0.gguf"]}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",processor:"model:processor_config.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",processor:"model:processor_config.json"},tensors:{weights:"model:model.safetensors"}}]},o$={schema_version:1,family:"nemotron_asr",display_name:"Nemotron 3.5 ASR",description:"NVIDIA 600M streaming ASR model for low-latency and batch transcription across 40 language-locales, with native punctuation, capitalization, automatic language detection, and configurable chunk sizes.",category:"asr",status:"supported",tasks:["asr"],modes:["offline","streaming"],languages:["ar-AR","bg-BG","cs-CZ","da-DK","de-DE","el-GR","en-GB","en-US","es-ES","es-US","et-EE","fi-FI","fr-CA","fr-FR","he-IL","hi-IN","hr-HR","hu-HU","it-IT","ja-JP","ko-KR","lt-LT","lv-LV","mt-MT","nb-NO","nl-NL","nn-NO","pl-PL","pt-BR","pt-PT","ro-RO","ru-RU","sk-SK","sl-SI","sv-SE","th-TH","tr-TR","uk-UA","vi-VN","zh-CN"],capabilities:{},dependencies:[],options:{request:[{name:"language",type:"string",description:"ASR prompt language such as en-US, da-DK, or auto; default is the model's default prompt.",required:!1},{name:"lookahead_tokens",type:"int",description:"Chunk-limited encoder right context in 80 ms frames; supported values and the default come from processor_config (0, 3, 6 or 13; default 3 for the published model). In masked speaker mode, omission derives lookahead from diarizer geometry (13 fallback).",required:!1,min:0},{name:"max_tokens",type:"int",description:"Maximum RNNT generated tokens; 0 or omitted uses the model-derived limit.",required:!1,min:0,default:0},{name:"keep_language_tags",type:"bool",description:"Keep language tag tokens in decoded text; default false.",required:!1,default:!1},{name:"return_timestamps",type:"bool",description:"Compatibility/advisory flag; false does not suppress decoder token timestamps.",required:!1,default:!1},{name:"streaming",type:"bool",description:"Request a streaming run; must be false for offline sessions.",required:!1,default:!1},{name:"speaker_probabilities",type:"path",description:"nemotron_3_diar speaker_probabilities.safetensors for the same audio (diarize with return_frame_probabilities=true). Setting it enables speaker-tagged output: speaker turns with text and a SegLST artifact.",required:!1},{name:"speaker_mode",type:"enum",values:["masked","attribution"],description:"masked runs one ASR stream per active speaker on speaker-masked features (NeMo masked multitalker ASR) and transcribes overlapping speech; attribution assigns each word of one transcript to the most active speaker and is cheaper.",required:!1,default:"masked"},{name:"speaker_mask",type:"enum",values:["mel","audio"],description:"Masked mode only: mask log-mel features (NeMo mask_features) or zero the waveform of inactive 80 ms frames.",required:!1,default:"mel"},{name:"speaker_segment_gap_sec",type:"float",description:"Start a new segment for a speaker after a pause longer than this; default 1.0 (NeMo sent_break_sec).",required:!1,min:0,default:1},{name:"speaker_segment_max_sec",type:"float",description:"Streaming only: force-close a speaker-turn event after this many seconds; the final result keeps the full segments. Default 10. Must be positive.",required:!1,default:10}],session:[{name:"weight_type",type:"enum",description:"Shared matmul weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"matmul_weight_type",type:"enum",description:"Encoder and decoder matmul weight storage type (native, f32, f16, bf16 or q8_0); defaults to weight_type.",preset:"weight_type_full",required:!1},{name:"conv_weight_type",type:"enum",description:"Convolution weight storage type (native, f32 or f16); default native.",preset:"weight_type_conv",required:!1,default:"native"},{name:"weight_context_mb",type:"int",description:"Weight context arena size in MiB; default 3072.",required:!1,min:1,default:3072},{name:"encoder_graph_arena_mb",type:"int",description:"Encoder graph arena size in MiB; default 1024.",required:!1,min:1,default:1024},{name:"decoder_graph_arena_mb",type:"int",description:"Decoder graph arena size in MiB; default 256.",required:!1,min:1,default:256},{name:"mem_saver",type:"bool",description:"Release the offline encoder graph after each offline request; default false.",required:!1,default:!1}],load:[]},runtime:{tags:["gguf","stream"]},ui:{recommended_package:"nemotron_asr_q8_0",tags:["ASR","GGUF","Stream"],docs:["docs/asr.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"nemotron_asr_q8_0",display_name:"Nemotron 3.5 ASR Streaming 0.6B Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Nemotron-3.5-ASR-Streaming-0.6B-GGUF",files:["Nemotron-3.5-ASR-Streaming-0.6B-GGUF/nemotron-3.5-asr-streaming-0.6b-q8_0.gguf"],strip_prefix:"Nemotron-3.5-ASR-Streaming-0.6B-GGUF"},{id:"nemotron_asr_f16",display_name:"Nemotron 3.5 ASR Streaming 0.6B F16 GGUF",format:"gguf",precision:"f16",target_directory:"Nemotron-3.5-ASR-Streaming-0.6B-GGUF",files:["Nemotron-3.5-ASR-Streaming-0.6B-GGUF/nemotron-3.5-asr-streaming-0.6b-f16.gguf"],strip_prefix:"Nemotron-3.5-ASR-Streaming-0.6B-GGUF"},{id:"nemotron_asr_safetensors",display_name:"Nemotron 3.5 ASR Streaming 0.6B Safetensors",format:"safetensors",precision:"native",target_directory:"nemotron-3.5-asr-streaming-0.6b",files:["config.json","model.safetensors","processor_config.json","tokenizer.json"],download:{kind:"huggingface_snapshot",repo:"nvidia/nemotron-3.5-asr-streaming-0.6b"}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",processor_config:"model:processor_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",processor_config:"model:processor_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"model:model.safetensors"}}]},l$={schema_version:1,family:"nemotron_transcribe",display_name:"NVIDIA Nemotron 3.5 Transcribe 30B-A4B",description:"Experimental community port of the Nemotron-H speech language model for offline transcription, translation, audio questions, language identification, word timestamps and speaker labels.",category:"asr",status:"experimental",tasks:["asr"],modes:["offline"],languages:["auto"],capabilities:{asr:["word_timestamps"]},runtime:{tags:["gguf"]},options:{request:[{name:"instruct",type:"string",required:!1,description:"Audio instruction or question. Replaces the template instruction; defaults to text_input when present. Chat controls and audio locators are rejected."},{name:"template_name",type:"enum",values:["default","translation","audio_qa","language_id"],default:"default",required:!1,description:"Instruction template. Audio Q&A requires instruct or text_input. Timestamps and speakers require the default transcription template."},{name:"language",type:"string",default:"auto",required:!1,description:"Source language hint for the default transcription prompt. An explicit instruct replaces this prompt, including its language hint."},{name:"target_language",type:"string",default:"English",required:!1,description:"Target language for the translation template."},{name:"system_prompt",type:"string",required:!1,description:"Optional system message; the trained default is empty."},{name:"return_timestamps",type:"bool",default:!1,required:!1,description:"Run the checkpoint CTC head for source-language word timestamps. Failed streams return no fabricated word rows."},{name:"diarization",type:"bool",default:!1,required:!1,description:"Request speaker-tagged transcription, CTC words and speaker activity turns. An explicit instruct must request speaker tags itself."},{name:"max_tokens",type:"int",min:1,required:!1,description:"Maximum generated response tokens. Defaults to generation_config or native duration budget max(24,ceil(6*audio_seconds)+24). Prompt and output must fit max_context."},{name:"do_sample",type:"bool",default:!1,required:!1,description:"Sample tokens instead of greedy decoding."},{name:"temperature",type:"float",default:1,required:!1,description:"Positive sampling temperature when do_sample is true."},{name:"top_k",type:"int",min:0,default:0,required:!1,description:"Sampling candidate count; zero disables top-k filtering."},{name:"top_p",type:"float",min:0,max:1,default:1,required:!1,description:"Nucleus probability when sampling."},{name:"repetition_penalty",type:"float",default:1,required:!1,description:"Positive token repetition penalty."},{name:"seed",type:"int",min:0,default:0,required:!1,description:"Sampling seed."}],session:[{name:"disk_experts",type:"bool",default:!1,required:!1,description:"Keep routed expert weights in the GGUF/host memory and stage selected experts through a bounded backend cache. Dense weights and all expert computation remain on the selected backend."},{name:"pin_experts",type:"bool",default:!1,required:!1,description:"With disk_experts, retain complete native expert banks in pinned host RAM for direct uploads. Requires pinned host-buffer support."},{name:"expert_cache_size",type:"int",min:1,default:8,required:!1,description:"Resident expert slots per routed layer with disk_experts. Must cover the model's experts per token and cannot exceed its expert count."},{name:"disk_expert_read_threads",type:"int",min:1,max:64,default:4,required:!1,description:"Host workers for staging GGUF expert ranges when disk_experts is true and pin_experts is false. Parallel reads require OpenMP or Apple dispatch."},{name:"weight_type",type:"enum",preset:"weight_type_full",default:"native",required:!1,description:"Native preserves mixed packaged tensor types. Changing this may greatly increase model memory."},{name:"max_context",type:"int",min:1,default:73728,required:!1,description:"Combined text, audio and output context, bounded by backbone positions. Matches native SALM serving default."},{name:"prefill_batch_size",type:"int",min:1,max:2048,default:64,required:!1,description:"Text/audio rows per decoder prefill graph."},{name:"flash_attention",type:"bool",default:!0,required:!1,description:"Use flash attention in the speech and speaker encoders."},{name:"encoder_window_size",type:"int",min:1,max:5e3,default:500,required:!1,description:"Core encoder window in 80 ms output frames; the native default is 40 seconds."},{name:"encoder_left_context",type:"int",min:0,max:5e3,default:50,required:!1,description:"Encoder window left context in 80 ms frames."},{name:"encoder_right_context",type:"int",min:0,max:5e3,default:50,required:!1,description:"Encoder window right context in 80 ms frames."},{name:"speaker_cache_size",type:"int",min:16,max:5e3,default:188,required:!1,description:"Native serving speaker cache in 80 ms frames, distinct from training configuration. At least two rows per speaker are required."},{name:"speaker_fifo_size",type:"int",min:0,max:5e3,default:40,required:!1,description:"Recent speaker FIFO size in 80 ms frames."},{name:"speaker_update_period",type:"int",min:1,max:5e3,default:300,required:!1,description:"Native serving speaker-cache update period in 80 ms frames."}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"Jmica/NVIDIA-Nemotron-3.5-Transcribe-30B-A4B-GGUF",revision:"304032f14e1e9e4042f5491d2d0194c044710bb7",gated:!1}},packages:[{id:"nemotron_transcribe_iq4_nl",display_name:"Nemotron 3.5 Transcribe 30B-A4B IQ4_NL experts",default:!0,format:"gguf",precision:"iq4_nl",target_directory:"NVIDIA-Nemotron-3.5-Transcribe-30B-A4B-GGUF",files:["nemotron-transcribe-30b-a4b-experts-IQ4_NL.gguf","mmproj-NVIDIA-Nemotron-3.5-Transcribe-30B-A4B-Encoder-F16.gguf"]},{id:"nemotron_transcribe_q4_k",display_name:"Nemotron 3.5 Transcribe 30B-A4B Q4_K experts",format:"gguf",precision:"q4_k",target_directory:"NVIDIA-Nemotron-3.5-Transcribe-30B-A4B-GGUF",files:["nemotron-transcribe-30b-a4b-experts-Q4_K_S.gguf","mmproj-NVIDIA-Nemotron-3.5-Transcribe-30B-A4B-Encoder-F16.gguf"]},{id:"nemotron_transcribe_q3_k",display_name:"Nemotron 3.5 Transcribe 30B-A4B Q3_K experts",format:"gguf",precision:"q3_k",target_directory:"NVIDIA-Nemotron-3.5-Transcribe-30B-A4B-GGUF",files:["nemotron-transcribe-30b-a4b-experts-Q3_K_S.gguf","mmproj-NVIDIA-Nemotron-3.5-Transcribe-30B-A4B-Encoder-F16.gguf"]},{id:"nemotron_transcribe_q2_k",display_name:"Nemotron 3.5 Transcribe 30B-A4B Q2_K experts",format:"gguf",precision:"q2_k",target_directory:"NVIDIA-Nemotron-3.5-Transcribe-30B-A4B-GGUF",files:["nemotron-transcribe-30b-a4b-experts-Q2_K.gguf","mmproj-NVIDIA-Nemotron-3.5-Transcribe-30B-A4B-Encoder-F16.gguf"]}],dependencies:[],ui:{recommended_package:"nemotron_transcribe_iq4_nl",tags:["GGUF"],docs:["docs/models/nemotron_transcribe.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{backbone_config:"model:llm_backbone/config.json",generation_config:"model:generation_config.json",processor_config:"model:processor_config.json",frontend_window:"model:frontend_window.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json"},tensors:{weights:{source:"weights:"}}}]},c$={schema_version:1,family:"neutts",display_name:"NeuTTS",description:"NeuTTS is an English text-to-speech family from Neuphonic. The current 2E package uses a Qwen3-style autoregressive speech-token backbone, NeuCodec waveform decoding, built-in speaker prompts, and emotion-token control.",category:"tts",status:"supported",tasks:["tts"],modes:["offline","streaming"],languages:["en"],runtime:{tags:["gguf","stream"]},capabilities:{tts:["built_in_voices","emotion_control","long_form"]},options:{request:[{name:"voice_id",type:"enum",description:"Built-in NeuTTS speaker prompt; default emily.",values:["dave","emily","greta","jo","juliette","mateo","paul","sophie","steven"],required:!1,default:"emily"},{name:"emotion",type:"enum",description:"Optional emotion token inserted between reference text and target text; neutral inserts no emotion token.",values:["angry","disgusted","sad","happy","fearful","neutral","surprised"],required:!1,default:"neutral"},{name:"max_tokens",type:"int",description:"Maximum generated speech-token count for the autoregressive generator; 0 uses the remaining model context, default 0. Total generation context is capped at min(checkpoint context, 2048).",required:!1,min:0,default:0},{name:"min_tokens",type:"int",description:"Minimum generated speech-token count before EOS may stop generation; default 50.",required:!1,min:0,default:50},{name:"temperature",type:"float",description:"Autoregressive sampling temperature; must be > 0, default 1.0.",required:!1,min:0,default:1},{name:"top_k",type:"int",description:"Autoregressive top-k sampling limit; default 50.",required:!1,min:1,default:50},{name:"seed",type:"int",description:"Autoregressive sampling seed; omitted requests choose a random seed.",required:!1,min:0},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode for long-form synthesis.",values:["default","tag_aware","japanese","endline"],required:!1,default:"default"},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per long-form text chunk; default 600.",required:!1,min:1,default:600}],session:[{name:"weight_type",type:"enum",description:"Shared matmul weight storage type for the backbone and codec decoder; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"generator_weight_type",type:"enum",description:"Generator weight storage; inherits explicit weight_type, otherwise F32 on CPU and native on other backends.",preset:"weight_type_full",required:!1},{name:"codec_weight_type",type:"enum",description:"NeuCodec decoder matmul weight storage type; defaults to weight_type when set, otherwise native.",preset:"weight_type_full",required:!1},{name:"codec_conv_weight_type",type:"enum",description:"NeuCodec convolution weight storage type; default native.",preset:"weight_type_conv",required:!1,default:"native"},{name:"runtime_graph_arena_mb",type:"int",description:"Reusable ggml graph arena size in MiB for NeuTTS runtime graphs; default 1024.",required:!1,min:1,default:1024}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"neutts_2e_orig",display_name:"NeuTTS 2E Original-Precision GGUF",default:!0,format:"gguf",precision:"orig",target_directory:"NeuTTS-2E-GGUF",files:["NeuTTS-2E-GGUF/neutts-2e-orig.gguf"],strip_prefix:"NeuTTS-2E-GGUF"}],dependencies:[],ui:{recommended_package:"neutts_2e_orig",tags:["TTS","GGUF","Stream"],docs:["docs/tts.md","docs/models/neutts.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",chat_template:"model:chat_template.jinja",codec_config:"model:neucodec_config.json",codec_preprocessor_config:"model:neucodec_preprocessor_config.json",speaker_text_dave:"model:samples/dave.txt",speaker_text_emily:"model:samples/emily.txt",speaker_text_greta:"model:samples/greta.txt",speaker_text_jo:"model:samples/jo.txt",speaker_text_juliette:"model:samples/juliette.txt",speaker_text_mateo:"model:samples/mateo.txt",speaker_text_paul:"model:samples/paul.txt",speaker_text_sophie:"model:samples/sophie.txt",speaker_text_steven:"model:samples/steven.txt"},tensors:{backbone:{source:"weights:",prefix:"backbone"},codec:{source:"weights:",prefix:"codec"},speaker_prompts:{source:"weights:",prefix:"speaker_prompts"}}},{format:"safetensors",roots:{model:".",codec:"../NeuCodec"},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",chat_template:"model:chat_template.jinja",codec_config:"codec:config.json",codec_preprocessor_config:"codec:preprocessor_config.json",speaker_text_dave:"model:samples/dave.txt",speaker_text_emily:"model:samples/emily.txt",speaker_text_greta:"model:samples/greta.txt",speaker_text_jo:"model:samples/jo.txt",speaker_text_juliette:"model:samples/juliette.txt",speaker_text_mateo:"model:samples/mateo.txt",speaker_text_paul:"model:samples/paul.txt",speaker_text_sophie:"model:samples/sophie.txt",speaker_text_steven:"model:samples/steven.txt"},tensors:{backbone:"model:model.safetensors",codec:"codec:model.safetensors",speaker_prompts:"model:samples/speaker_prompts.safetensors"}}]},d$={family:"niagara_asr",schema_version:1,display_name:"Niagara ASR",description:"ABR Niagara English batch ASR state-space models with attention, greedy CTC decoding, and SentencePiece tokenization.",category:"asr",status:"supported",tasks:["asr"],modes:["offline"],languages:["en"],capabilities:{},dependencies:[],options:{request:[{name:"language",type:"string",description:"Compatibility-only; recognition is English and output is always labelled en.",required:!1,default:"en"},{name:"audio_chunk_mode",type:"enum",description:"Audio chunking mode.",values:["none"],required:!1,default:"none"}],session:[{name:"weight_type",type:"enum",description:"Matmul weight storage type.",required:!1,default:"native",values:["native","f32","f16","bf16","q8_0","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k"]},{name:"graph_arena_mb",type:"int",description:"Inference graph arena size in MiB.",required:!1,min:1,default:1024},{name:"weight_context_mb",type:"int",description:"Weight descriptor context size in MiB.",required:!1,min:1,default:256}],load:[]},runtime:{tags:["gguf","cpu"]},ui:{recommended_package:"niagara_19m_f32",tags:["ASR","GGUF"],docs:["docs/asr.md","docs/gguf.md"],summary:"ABR Niagara compact English speech recognition."},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf"}},packages:[{id:"niagara_19m_f32",display_name:"Niagara 19M Batch English F32 GGUF",default:!0,format:"gguf",precision:"f32",target_directory:"Niagara-ASR-GGUF",files:["Niagara-ASR-GGUF/niagara-19m-batch.en-f32.gguf"],strip_prefix:"Niagara-ASR-GGUF"},{id:"niagara_38m_f32",display_name:"Niagara 38M Batch English F32 GGUF",format:"gguf",precision:"f32",target_directory:"Niagara-ASR-GGUF",files:["Niagara-ASR-GGUF/niagara-38m-batch.en-f32.gguf"],strip_prefix:"Niagara-ASR-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",preprocessor_config:"model:preprocessor_config.json",tokenizer_spm:"model:sentencepiece.model"},tensors:{weights:"weights:"}}]},u$={family:"omnivoice",display_name:"OmniVoice",description:"Massively multilingual zero-shot TTS model from k2-fsa for 600+ languages, supporting short-reference voice cloning, attribute-based voice design, pronunciation controls, and nonverbal tags.",category:"tts",status:"supported",tasks:["tts","clone","design"],modes:["offline","streaming"],languages:["600+ languages"],capabilities:{clone:["speaker_reference"],design:["voice_design"]},options:{request:[{name:"language",type:"string",description:"Synthesis language code or label; omitted uses automatic language selection.",required:!1},{name:"reference_text",type:"string",description:"Transcript for speaker reference audio used in voice cloning.",required:!1},{name:"instruct",type:"string",description:"Voice-design instruction such as speaker attributes, accent, style, or delivery.",required:!1},{name:"seed",type:"int",description:"Generation seed for reproducible output; omitted value keeps the session RNG state.",required:!1,min:0,max:4294967295},{name:"num_inference_steps",type:"int",description:"Diffusion language-model inference steps; default 32.",required:!1,min:1,default:32},{name:"guidance_scale",type:"float",description:"Classifier-free guidance scale; default 2.0.",required:!1,default:2},{name:"speed",type:"float",description:"Speech speed multiplier used for target-length estimation; default 1.0.",required:!1,default:1},{name:"duration_sec",type:"float",description:"Target output duration in seconds; omitted uses the model's estimated duration.",required:!1,min:0},{name:"shift",type:"float",description:"Diffusion timestep schedule shift; default 0.1.",required:!1,default:.1},{name:"denoise",type:"bool",description:"Add the denoise control token when reference audio is present; default true.",required:!1,default:!0},{name:"preprocess_prompt",type:"bool",description:"Preprocess speaker reference audio before tokenization; default true.",required:!1,default:!0},{name:"postprocess_output",type:"bool",description:"Apply output postprocessing and trimming; default true.",required:!1,default:!0},{name:"layer_penalty_factor",type:"float",description:"Layer-order penalty used while selecting masked audio-codebook positions; default 5.0.",required:!1,default:5},{name:"position_temperature",type:"float",description:"Gumbel temperature for masked-position selection; default 5.0.",required:!1,default:5},{name:"class_temperature",type:"float",description:"Audio-token class sampling temperature; default 0 for greedy class selection.",required:!1,min:0,default:0},{name:"audio_chunk_duration_sec",type:"float",description:"Target chunk duration for automatic long-form splitting; default 15 seconds.",required:!1,min:0,default:15},{name:"audio_chunk_threshold_sec",type:"float",description:"Estimated duration above which long-form generation is split into chunks; default 30 seconds.",required:!1,min:0,default:30},{name:"text_chunk_size",type:"int",description:"Explicit long-form text chunk size in Unicode codepoints. Omitted value uses duration-based automatic chunking.",required:!1,min:1},{name:"text_chunk_mode",type:"enum",description:"Text chunking mode; default tag_aware.",preset:"text_chunk_mode_full",required:!1,default:"tag_aware"}],session:[{name:"weight_type",type:"enum",description:"Shared generator weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"generator_weight_type",type:"enum",description:"Generator weight storage type; defaults to weight_type, which defaults to native.",preset:"weight_type_full",required:!1},{name:"audio_tokenizer_weight_type",type:"enum",description:"Audio tokenizer weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"audio_tokenizer_codebook_weight_type",type:"enum",description:"Storage type for the audio tokenizer codebooks, codebook score matrix, semantic feature projection, and fc2; default f32.",values:["native","f32","f16","bf16"],required:!1,default:"f32"},{name:"audio_tokenizer_graph_arena_mb",type:"int",description:"Audio tokenizer graph arena size in MiB; default 128.",required:!1,min:1,default:128},{name:"generator_prefill_graph_arena_mb",type:"int",description:"Generator prefill graph arena size in MiB; default 256.",required:!1,min:1,default:256},{name:"generator_decode_graph_arena_mb",type:"int",description:"Generator decode graph arena size in MiB; default 256.",required:!1,min:1,default:256},{name:"audio_tokenizer_weight_context_mb",type:"int",description:"Audio tokenizer weight context size in MiB; default 128.",required:!1,min:1,default:128},{name:"generator_weight_context_mb",type:"int",description:"Generator weight context size in MiB; default 256.",required:!1,min:1,default:256},{name:"mem_saver",type:"bool",description:"Release staged runtime graphs after request phases; default false. Cannot be combined with perf_mode=flash_attention.",required:!1,default:!1},{name:"perf_mode",type:"enum",description:"Generator performance mode; default off keeps the exact-safe attention path. flash_attention requires mem_saver=false.",preset:"perf_mode_flash_attention",required:!1,default:"off"}],load:[]},runtime:{tags:["gguf","stream"]},ui:{recommended_package:"omnivoice_q8_0",tags:["TTS","Clone","Design","GGUF","Stream"],docs:["docs/models/omnivoice.md","docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"omnivoice_q8_0",display_name:"OmniVoice Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"OmniVoice-GGUF",files:["OmniVoice-GGUF/omnivoice-q8_0.gguf"],strip_prefix:"OmniVoice-GGUF"},{id:"omnivoice_bf16",display_name:"OmniVoice BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"OmniVoice-GGUF",files:["OmniVoice-GGUF/omnivoice-bf16.gguf"],strip_prefix:"OmniVoice-GGUF"},{id:"omnivoice_f16",display_name:"OmniVoice F16 GGUF",format:"gguf",precision:"f16",target_directory:"OmniVoice-GGUF",files:["OmniVoice-GGUF/omnivoice-f16.gguf"],strip_prefix:"OmniVoice-GGUF"},{id:"omnivoice_safetensors",display_name:"OmniVoice Safetensors",format:"safetensors",precision:"native",target_directory:"OmniVoice",files:["config.json","model.safetensors","tokenizer.json","tokenizer_config.json","audio_tokenizer/config.json","audio_tokenizer/preprocessor_config.json","audio_tokenizer/model.safetensors"],download:{kind:"huggingface_snapshot",repo:"k2-fsa/OmniVoice"}},{id:"voicetut_tts_q8_0",display_name:"VoiceTut-TTS Egyptian Arabic Q8_0 GGUF",description:"Egyptian Arabic and Arabic-English code-switching fine-tune of OmniVoice from mohammedaly22/VoiceTut-TTS (same architecture and audio tokenizer as OmniVoice). Use language=arz.",format:"gguf",precision:"q8_0",target_directory:"VoiceTut-TTS-GGUF",files:["voicetut-tts-q8_0.gguf"],download:{kind:"huggingface_snapshot",repo:"mohammedaly22/VoiceTut-TTS-GGUF"}},{id:"voicetut_tts_f16",display_name:"VoiceTut-TTS Egyptian Arabic F16 GGUF",description:"Egyptian Arabic and Arabic-English code-switching fine-tune of OmniVoice from mohammedaly22/VoiceTut-TTS (same architecture and audio tokenizer as OmniVoice). Use language=arz.",format:"gguf",precision:"f16",target_directory:"VoiceTut-TTS-GGUF",files:["voicetut-tts-f16.gguf"],download:{kind:"huggingface_snapshot",repo:"mohammedaly22/VoiceTut-TTS-GGUF"}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",audio_tokenizer_config:"model:audio_tokenizer/config.json",audio_tokenizer_preprocessor:"model:audio_tokenizer/preprocessor_config.json"},optional_files:{chat_template:"model:chat_template.jinja"},tensors:{weights:{source:"weights:",prefix:"weights"},audio_tokenizer_weights:{source:"weights:",prefix:"audio_tokenizer_weights"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",audio_tokenizer_config:"model:audio_tokenizer/config.json",audio_tokenizer_preprocessor:"model:audio_tokenizer/preprocessor_config.json"},optional_files:{chat_template:"model:chat_template.jinja"},tensors:{weights:"model:model.safetensors",audio_tokenizer_weights:"model:audio_tokenizer/model.safetensors"}}]},f$={schema_version:1,family:"open_wake_word",display_name:"OpenWakeWord",description:"OpenWakeWord wake-word detection with a shared speech embedding CNN and a converted classifier.",category:"audio_tools",status:"experimental",tasks:["wake_word"],modes:["offline","streaming"],languages:["en"],capabilities:{wake_word:["speech_segments","stream_events"]},runtime:{tags:["gguf","stream"]},options:{request:[{name:"threshold",type:"float",required:!1,min:0,max:1,description:"Wake-word detection probability threshold."}],session:[{name:"exec_plan",type:"string",required:!1,default:"{}",description:"JSON component execution plans. Component embedding accepts impl default/ggml/neon and optional backend. Default retains GGML on the session backend; neon requires ENGINE_ENABLE_NEON=ON and an AArch64 NEON CPU session. No artifacts or params are used."}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"open_wake_word_alexa_f32",display_name:"OpenWakeWord Alexa GGUF F32",default:!0,format:"gguf",precision:"f32",target_directory:"OpenWakeWord-GGUF",files:["OpenWakeWord-GGUF/open-wake-word-alexa-f32.gguf"],strip_prefix:"OpenWakeWord-GGUF"}],dependencies:[],ui:{tags:["Wake Word","GGUF","Stream"],docs:["docs/models/open_wake_word.md"],recommended_package:"open_wake_word_alexa_f32"},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:"weights:"}}]},p$={schema_version:1,family:"outetts",display_name:"Llama-OuteTTS 1.0",description:"Llama-based open-weight TTS model for 23-language speech synthesis with one-shot voice cloning from short reference audio and automatic word-alignment support.",category:"tts",status:"community",tasks:["tts","clone"],modes:["offline"],languages:["ar","be","bn","de","en","es","fa","fr","hu","it","ja","ka","ko","lt","lv","nl","pl","pt","ru","sw","ta","uk","zh"],capabilities:{clone:["speaker_reference"]},options:{request:[{name:"max_tokens",type:"int",description:"Maximum generated audio tokens per chunk. When omitted, OuteTTS estimates a safe value from each chunk.",required:!1,min:1},{name:"temperature",type:"float",description:"Sampling temperature; default 0.4 for cloning, otherwise model config default.",required:!1,min:0},{name:"top_k",type:"int",description:"Top-k sampling; default 40 for cloning, otherwise model config default.",required:!1,min:0},{name:"top_p",type:"float",description:"Nucleus sampling in (0, 1]; default 0.9 for cloning, otherwise model config default.",required:!1,min:0,max:1},{name:"min_p",type:"float",description:"Minimum probability relative to the best token; default 0.05 for cloning, otherwise model config default.",required:!1,min:0,max:1},{name:"repetition_penalty",type:"float",description:"Windowed repetition penalty; must be > 0, default 1.1.",required:!1,min:0,default:1.1},{name:"repetition_window",type:"int",description:"Recent-token penalty window; default 64.",required:!1,min:0,default:64},{name:"seed",type:"int",description:"Sampling seed; cloning defaults to 4099 for native weights and 42 for quantized weights.",required:!1,min:0,max:4294967295},{name:"reference_text",type:"string",description:"Transcript matching the reference voice audio for voice cloning.",required:!1},{name:"reference_language",type:"string",description:"Language code used to align the reference transcript; omitted inherits the request text language, then falls back to en.",required:!1},{name:"text_chunk_size",type:"int",description:"Maximum UTF-8 codepoints per long-form text chunk; default 256. Chunks are split further when required by max_tokens or context budget.",required:!1,min:1,default:256},{name:"text_chunk_mode",type:"enum",description:"Framework long-form text chunking mode; default word_budget.",preset:"text_chunk_mode_full",required:!1,default:"word_budget"}],session:[{name:"lora",type:"path",description:"PEFT LoRA adapter directory or checkpoint file for the same OuteTTS checkpoint; merged into the language model at session creation.",required:!1},{name:"lora_scale",type:"float",description:"Multiplier for the adapter's alpha/r scaling; default 1.",required:!1,default:1},{name:"weight_type",type:"enum",description:"Language-model weight storage type. Quantized CUDA voice cloning is expanded to F32 in memory for generation correctness.",required:!1,default:"native",values:["native","f32","f16","bf16","q8_0","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k","nvfp4"]},{name:"llama_weight_context_mb",type:"int",description:"Language-model weight context size in MiB; default 4096.",required:!1,min:1,default:4096},{name:"constant_context_mb",type:"int",description:"Language-model constant tensor context size in MiB; default 256.",required:!1,min:1,default:256},{name:"dac_weight_context_mb",type:"int",description:"DAC decoder weight context size in MiB; default 1024.",required:!1,min:1,default:1024},{name:"dac_graph_arena_mb",type:"int",description:"DAC decoder graph arena size in MiB; default 1536.",required:!1,min:1,default:1536},{name:"forced_aligner_path",type:"path",description:"Optional Qwen3 Forced Aligner override. Cloning automatically uses the aligner embedded in a standalone OuteTTS GGUF when present.",required:!1},{name:"reference_cache_slots",type:"int",description:"Prepared reference-profile cache slots; default 1, set 0 to disable.",required:!1,min:0,default:1},{name:"mem_saver",type:"bool",description:"Release cached-step and aligner runtime state after use; default false.",required:!1,default:!1}],load:[]},runtime:{tags:["gguf"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",special_tokens_map:"model:special_tokens_map.json",dac_config:"model:dac/config.json"},optional_files:{aligner_config:"model:aligner/config.json",aligner_generation_config:"model:aligner/generation_config.json",aligner_tokenizer_config:"model:aligner/tokenizer_config.json",aligner_preprocessor_config:"model:aligner/preprocessor_config.json",aligner_processor_config:"model:aligner/processor_config.json",aligner_chat_template:"model:aligner/chat_template.json",aligner_chat_template_jinja:"model:aligner/chat_template.jinja",aligner_vocab:"model:aligner/vocab.json",aligner_merges:"model:aligner/merges.txt",aligner_tokenizer_json:"model:aligner/tokenizer.json"},tensors:{model_weights:{source:"weights:",prefix:"model_weights"},dac_weights:{source:"weights:",prefix:"dac_weights"},aligner_weights:{source:"weights:",prefix:"aligner_weights"}}},{format:"safetensors",roots:{model:".",dac:"../DAC.speech.v1.0"},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",special_tokens_map:"model:special_tokens_map.json",dac_config:"dac:config.json"},tensors:{model_weights:"model:model.safetensors",dac_weights:"dac:model.safetensors"}}],packages:[{id:"outetts_1_0_1b_q8_0",display_name:"Llama-OuteTTS 1.0 1B Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Llama-OuteTTS-1.0-1B_Q8",files:["Text to audio (TTS)/Llama-OuteTTS-1.0-1B_Q8.gguf"],download:{kind:"huggingface_snapshot",repo:"mirek190/audio.cpp"}}],dependencies:[],ui:{recommended_package:"outetts_1_0_1b_q8_0",tags:["TTS","Clone","GGUF"],docs:["docs/models/outetts.md","docs/reports/outetts_validation.md","docs/gguf.md"]}},m$={family:"owsm",schema_version:1,display_name:"OWSM",description:"ESPnet Open Whisper-style multilingual speech recognition and speech translation.",category:"asr",status:"supported",tasks:["asr"],modes:["offline","streaming"],languages:["abk","afr","amh","ara","asm","ast","aze","bak","bas","bel","ben","bos","bre","bul","cat","ceb","ces","chv","ckb","cmn","cnh","cym","dan","deu","dgd","div","ell","eng","epo","est","eus","fas","fil","fin","fra","frr","ful","gle","glg","grn","guj","hat","hau","heb","hin","hrv","hsb","hun","hye","ibo","ina","ind","isl","ita","jav","jpn","kab","kam","kan","kat","kaz","kea","khm","kin","kir","kmr","kor","lao","lav","lga","lin","lit","ltz","lug","luo","mal","mar","mas","mdf","mhr","mkd","mlt","mon","mri","mrj","mya","myv","nan","nep","nld","nno","nob","npi","nso","nya","oci","ori","orm","ory","pan","pol","por","pus","quy","roh","ron","rus","sah","sat","sin","skr","slk","slv","sna","snd","som","sot","spa","srd","srp","sun","swa","swe","swh","tam","tat","tel","tgk","tgl","tha","tig","tir","tok","tpi","tsn","tuk","tur","twi","uig","ukr","umb","urd","uzb","vie","vot","wol","xho","yor","yue","zho","zul"],capabilities:{asr:["segments"]},dependencies:[],options:{request:[{name:"language",type:"string",description:"Input language as an OWSM ISO 639-3 code, such as eng, jpn, or zho; auto detects it from the first window.",required:!1,default:"eng"},{name:"target_language",type:"string",description:"Optional OWSM translation target code. Omit for transcription.",required:!1},{name:"return_timestamps",type:"bool",description:"Return OWSM utterance-level timestamp segments.",required:!1,default:!1},{name:"condition_on_previous_text",type:"bool",description:"Condition each long-form chunk on the previous chunk transcript.",required:!1,default:!1},{name:"num_beams",type:"int",description:"Decoder beam width; one selects greedy decoding.",required:!1,min:1,max:50002,default:1},{name:"max_tokens",type:"int",description:"Maximum generated tokens per 30-second window; zero uses the model limit.",required:!1,min:0,max:374,default:0},{name:"audio_chunk_mode",type:"enum",description:"Long-form audio chunking mode.",values:["auto","fixed","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Maximum duration of each audio window. Must be positive.",required:!1,max:30,default:30}],session:[{name:"weight_type",type:"enum",description:"Matmul weight storage override.",values:["native","f32","f16","bf16","q8_0","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k"],required:!1,default:"native"}],load:[]},runtime:{tags:["gguf"]},ui:{tags:["ASR","GGUF"],docs:["docs/models/owsm.md"],recommended_package:"owsm_v4_base_102m_f32"},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"owsm_v4_base_102m_f32",display_name:"OWSM v4 Base 102M F32",default:!0,format:"gguf",precision:"f32",target_directory:"OWSM-GGUF",files:["OWSM-GGUF/owsm-v4-base-102m-f32.gguf"],strip_prefix:"OWSM-GGUF"},{id:"owsm_v4_base_102m_q8_0",display_name:"OWSM v4 Base 102M Q8_0",default:!1,format:"gguf",precision:"q8_0",target_directory:"OWSM-GGUF",files:["OWSM-GGUF/owsm-v4-base-102m-q8_0.gguf"],strip_prefix:"OWSM-GGUF"},{id:"owsm_v4_small_370m_f32",display_name:"OWSM v4 Small 370M F32",default:!1,format:"gguf",precision:"f32",target_directory:"OWSM-GGUF",files:["OWSM-GGUF/owsm-v4-small-370m-f32.gguf"],strip_prefix:"OWSM-GGUF"},{id:"owsm_v4_small_370m_q8_0",display_name:"OWSM v4 Small 370M Q8_0",default:!1,format:"gguf",precision:"q8_0",target_directory:"OWSM-GGUF",files:["OWSM-GGUF/owsm-v4-small-370m-q8_0.gguf"],strip_prefix:"OWSM-GGUF"},{id:"owsm_v4_small_370m_q4_k",display_name:"OWSM v4 Small 370M Q4_K",default:!1,format:"gguf",precision:"q4_k",target_directory:"OWSM-GGUF",files:["OWSM-GGUF/owsm-v4-small-370m-q4_k.gguf"],strip_prefix:"OWSM-GGUF"},{id:"owsm_v4_medium_1b_f32",display_name:"OWSM v4 Medium 1B F32",default:!1,format:"gguf",precision:"f32",target_directory:"OWSM-GGUF",files:["OWSM-GGUF/owsm-v4-medium-1b-f32.gguf"],strip_prefix:"OWSM-GGUF"},{id:"owsm_v4_medium_1b_q8_0",display_name:"OWSM v4 Medium 1B Q8_0",default:!1,format:"gguf",precision:"q8_0",target_directory:"OWSM-GGUF",files:["OWSM-GGUF/owsm-v4-medium-1b-q8_0.gguf"],strip_prefix:"OWSM-GGUF"},{id:"owsm_v4_medium_1b_q4_k",display_name:"OWSM v4 Medium 1B Q4_K",default:!1,format:"gguf",precision:"q4_k",target_directory:"OWSM-GGUF",files:["OWSM-GGUF/owsm-v4-medium-1b-q4_k.gguf"],strip_prefix:"OWSM-GGUF"}],sources:[{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer:"model:bpe.model"},tensors:{weights:"model:model.safetensors"}},{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer:"model:bpe.model"},tensors:{weights:"weights:"}}]},g$={family:"owsm_ctc",schema_version:1,display_name:"OWSM-CTC",description:"ESPnet non-autoregressive multilingual speech recognition and speech translation with self-conditioned CTC.",category:"asr",status:"supported",tasks:["asr"],modes:["offline","streaming"],languages:["abk","afr","amh","ara","asm","ast","aze","bak","bas","bel","ben","bos","bre","bul","cat","ceb","ces","chv","ckb","cmn","cnh","cym","dan","deu","dgd","div","ell","eng","epo","est","eus","fas","fil","fin","fra","frr","ful","gle","glg","grn","guj","hat","hau","heb","hin","hrv","hsb","hun","hye","ibo","ina","ind","isl","ita","jav","jpn","kab","kam","kan","kat","kaz","kea","khm","kin","kir","kmr","kor","lao","lav","lga","lin","lit","ltz","lug","luo","mal","mar","mas","mdf","mhr","mkd","mlt","mon","mri","mrj","mya","myv","nan","nep","nld","nno","nob","npi","nso","nya","oci","ori","orm","ory","pan","pol","por","pus","quy","roh","ron","rus","sah","sat","sin","skr","slk","slv","sna","snd","som","sot","spa","srd","srp","sun","swa","swe","swh","tam","tat","tel","tgk","tgl","tha","tig","tir","tok","tpi","tsn","tuk","tur","twi","uig","ukr","umb","urd","uzb","vie","vot","wol","xho","yor","yue","zho","zul"],capabilities:{},dependencies:[],options:{request:[{name:"language",type:"string",description:"Input ISO 639-3 language code, such as eng, jpn, or zho. auto uses unknown-language conditioning.",required:!1,default:"eng"},{name:"target_language",type:"string",description:"Optional OWSM translation target code. Omit for transcription.",required:!1},{name:"audio_chunk_mode",type:"enum",description:"Long-form audio chunking mode.",values:["auto","fixed","none"],required:!1,default:"auto"}],session:[{name:"weight_type",type:"enum",description:"Matmul weight storage override.",values:["native","f32","f16","bf16","q8_0","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k"],required:!1,default:"native"}],load:[]},runtime:{tags:["gguf"]},ui:{tags:["ASR","GGUF"],docs:["docs/models/owsm_ctc.md"],recommended_package:"owsm_ctc_v4_1b_f32"},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"owsm_ctc_v4_1b_f32",display_name:"OWSM-CTC v4 1B F32",default:!0,format:"gguf",precision:"f32",target_directory:"OWSM-CTC-GGUF",files:["OWSM-CTC-GGUF/owsm-ctc-v4-1b-f32.gguf"],strip_prefix:"OWSM-CTC-GGUF"},{id:"owsm_ctc_v4_1b_q8_0",display_name:"OWSM-CTC v4 1B Q8_0",default:!1,format:"gguf",precision:"q8_0",target_directory:"OWSM-CTC-GGUF",files:["OWSM-CTC-GGUF/owsm-ctc-v4-1b-q8_0.gguf"],strip_prefix:"OWSM-CTC-GGUF"}],sources:[{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer:"model:bpe.model"},tensors:{weights:"model:model.safetensors"}},{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer:"model:bpe.model"},tensors:{weights:"weights:"}}]},h$={schema_version:1,family:"parakeet_tdt",display_name:"Parakeet-TDT 0.6B v3",description:"NVIDIA Parakeet-TDT 0.6B v3 FastConformer-TDT ASR covering 25 European languages with automatic language detection. Supports the upstream Transformers-compatible safetensors package and standalone audio.cpp GGUF, with offline full-context, bounded-window long-form, and buffered streaming; the checkpoint uses unlimited bidirectional attention and is not a native cache-aware streaming model.",category:"asr",status:"community",tasks:["asr"],modes:["offline","streaming"],languages:["bg","cs","da","de","el","en","es","et","fi","fr","hr","hu","it","lt","lv","mt","nl","pl","pt","ro","ru","sk","sl","sv","uk"],runtime:{tags:["gguf","stream"]},capabilities:{asr:["word_timestamps","partial_results","vad_chunking"]},options:{request:[{name:"return_timestamps",type:"bool",description:"Accepted for CLI --words-out compatibility. Word timestamps are always returned, including when false or omitted.",required:!1},{name:"max_tokens",type:"int",description:"Maximum TDT generated tokens; 0 or omitted uses the model-derived limit.",required:!1,min:0,default:0},{name:"keep_language_tags",type:"bool",description:"Keep language tag tokens in decoded text; default false.",required:!1,default:!1},{name:"audio_chunk_mode",type:"enum",description:"Offline audio chunking mode. fixed selects overlapping long-form windows regardless of offline_mode; vad uses the configured VAD model (Silero by default) to skip silence; auto follows offline_mode. Offline input is downmixed and resampled as needed.",values:["auto","fixed","vad","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"VAD maximum chunk duration; omitted inherits the session duration. Fixed/long_form windows use the session setting, not this request override.",required:!1,min:.001}],session:[{name:"weight_type",type:"enum",description:"Shared matmul weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"matmul_weight_type",type:"enum",description:"Encoder and decoder matmul weight storage type; defaults to weight_type, which defaults to native. Q8_0 measured 1.79x faster on the tested CPU and changed roughly 8 percent of transcripts without moving aggregate word error rate.",preset:"weight_type_full",required:!1},{name:"conv_weight_type",type:"enum",description:"Convolution weight storage type; default native.",preset:"weight_type_conv",required:!1,default:"native"},{name:"perf_mode",type:"enum",description:"Encoder attention implementation. Default off uses the validated relative-attention path; flash_attention enables the fused implementation, which was numerically validated but slower on the tested hardware.",preset:"perf_mode_flash_attention",required:!1,default:"off"},{name:"weight_context_mb",type:"int",description:"Weight context arena size in MiB; default 3072.",required:!1,min:1,default:3072},{name:"encoder_graph_arena_mb",type:"int",description:"Encoder graph arena size in MiB; default 1024.",required:!1,min:1,default:1024},{name:"decoder_graph_arena_mb",type:"int",description:"Decoder graph arena size in MiB; default 256.",required:!1,min:1,default:256},{name:"audio_chunk_duration_sec",type:"float",description:"Center-region duration for buffered streaming in seconds; default 2. Fixed context windows are re-encoded rather than cache-aware. Also sizes offline fixed/long_form windows.",required:!1,min:.001,default:2},{name:"left_context_sec",type:"float",description:"Past context included when re-encoding each buffered-streaming window in seconds; default 10. Also applies to offline fixed/long_form windows.",required:!1,min:0,default:10},{name:"right_context_sec",type:"float",description:"Future lookahead included when re-encoding each buffered-streaming window in seconds; default 2 and adds equivalent partial-result latency. Also applies to offline fixed/long_form windows.",required:!1,min:0,default:2},{name:"streaming_attention_mode",type:"enum",description:"Attention policy inside each buffered window. full_context preserves bidirectional attention over the bounded window.",values:["full_context"],required:!1,default:"full_context"},{name:"offline_mode",type:"enum",description:"Offline encoder scheduling. full_context encodes the whole utterance, long_form uses bounded overlapping windows, and auto selects long_form beyond audio_chunk_threshold_sec.",values:["full_context","long_form","auto"],required:!1,default:"full_context"},{name:"audio_chunk_threshold_sec",type:"float",description:"Duration threshold used by offline_mode=auto before switching to bounded-window long-form execution; default 30 seconds.",required:!1,min:.001,default:30},{name:"vad_model_path",type:"path",description:"VAD model path used by audio_chunk_mode=vad (any built-in VAD family); default assets/framework/models/silero_vad.",required:!1,default:"assets/framework/models/silero_vad"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"parakeet_tdt_q8_0",display_name:"Parakeet-TDT 0.6B v3 Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Parakeet-TDT-0.6B-v3-GGUF",files:["Parakeet-TDT-0.6B-v3-GGUF/parakeet-tdt-0.6b-v3-q8_0.gguf"],strip_prefix:"Parakeet-TDT-0.6B-v3-GGUF"},{id:"parakeet_tdt_f16",display_name:"Parakeet-TDT 0.6B v3 F16 GGUF",format:"gguf",precision:"f16",target_directory:"Parakeet-TDT-0.6B-v3-GGUF",files:["Parakeet-TDT-0.6B-v3-GGUF/parakeet-tdt-0.6b-v3-f16.gguf"],strip_prefix:"Parakeet-TDT-0.6B-v3-GGUF"},{id:"orukeet_q8_0",display_name:"Orukeet r3 Q8_0 GGUF (Parakeet-TDT 0.6B v3 fine-tune)",format:"gguf",precision:"q8_0",target_directory:"Orukeet-GGUF",files:["Orukeet-GGUF/orukeet-q8_0.gguf"],strip_prefix:"Orukeet-GGUF"},{id:"orukeet_f16",display_name:"Orukeet r3 F16 GGUF (Parakeet-TDT 0.6B v3 fine-tune)",format:"gguf",precision:"f16",target_directory:"Orukeet-GGUF",files:["Orukeet-GGUF/orukeet-f16.gguf"],strip_prefix:"Orukeet-GGUF"}],dependencies:[],ui:{recommended_package:"parakeet_tdt_q8_0",tags:["ASR","GGUF"],docs:["docs/models/parakeet_tdt.md","docs/models/underdog_bark3.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",processor_config:"model:processor_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",processor_config:"model:processor_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"model:model.safetensors"}}]},_$={schema_version:1,family:"personaplex",display_name:"PersonaPlex",description:"PersonaPlex is a Moshi-style full-duplex speech-to-speech conversational model with Mimi audio tokenization, packaged speaker/persona prompts, streaming audio input, text generation, and generated assistant speech.",category:"tts",status:"supported",tasks:["s2s"],modes:["offline","streaming"],languages:["en"],runtime:{tags:["gguf","stream"]},capabilities:{s2s:["speaker_reference"]},options:{request:[{name:"voice_id",type:"enum",description:"Packaged PersonaPlex voice prompt id such as NATF2 or NATM1. If omitted, NATF2 is used.",values:["NATF0","NATF1","NATF2","NATF3","NATM0","NATM1","NATM2","NATM3","VARF0","VARF1","VARF2","VARF3","VARF4","VARM0","VARM1","VARM2","VARM3","VARM4"],required:!1,default:"NATF2"},{name:"system_prompt",type:"string",description:"System persona prompt. Plain text is wrapped with the required <system> tags.",required:!1},{name:"temperature",type:"float",description:"Audio token sampling temperature; must be nonnegative, and positive when do_sample=true. Ignored when do_sample=false; default 0.8.",required:!1,min:0,default:.8},{name:"text_temperature",type:"float",description:"Text token sampling temperature; must be nonnegative, and positive when do_sample=true. Ignored when do_sample=false; default follows temperature.",required:!1,min:0},{name:"top_k",type:"int",description:"Audio token top-k sampling limit; default 250.",required:!1,min:0,default:250},{name:"text_top_k",type:"int",description:"Text token top-k sampling limit; default follows top_k.",required:!1,min:0},{name:"do_sample",type:"bool",description:"Enable stochastic token sampling; default true. Set false for greedy decoding.",required:!1,default:!0},{name:"seed",type:"int",description:"uint32 seed. Session RNG starts at 42424242; explicit values reseed it, while omission on later conversations continues RNG state.",required:!1,min:0,max:4294967295}],session:[{name:"graph_arena_mb",type:"int",description:"Reusable ggml graph arena size in MiB for PersonaPlex LM, depformer, and Mimi graphs; default 1024.",required:!1,min:1,default:1024},{name:"lm_weight_context_mb",type:"int",description:"Main LM weight metadata arena size in MiB; default 64.",required:!1,min:1,default:64},{name:"depformer_weight_context_mb",type:"int",description:"Depth transformer weight metadata arena size in MiB; default 64.",required:!1,min:1,default:64},{name:"mimi_weight_context_mb",type:"int",description:"Mimi codec weight metadata arena size in MiB; default 64.",required:!1,min:1,default:64},{name:"weight_type",type:"enum",description:"LM and Mimi matmul weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"personaplex_7b_v1_q4_k",display_name:"PersonaPlex 7B v1 Q4_K GGUF",default:!0,format:"gguf",precision:"q4_k",target_directory:"PersonaPlex-GGUF",files:["PersonaPlex-GGUF/personaplex-7b-v1-q4_k.gguf"],strip_prefix:"PersonaPlex-GGUF"},{id:"personaplex_7b_v1_q8_0",display_name:"PersonaPlex 7B v1 Q8_0 GGUF",default:!1,format:"gguf",precision:"q8_0",target_directory:"PersonaPlex-GGUF",files:["PersonaPlex-GGUF/personaplex-7b-v1-q8_0.gguf"],strip_prefix:"PersonaPlex-GGUF"}],dependencies:[],ui:{recommended_package:"personaplex_7b_v1_q4_k",tags:["TTS","Stream","GGUF"],docs:["docs/models/personaplex.md","docs/tts.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_model:"model:tokenizer_spm_32k_3.model",voice_NATF0:"model:voices_safetensors/NATF0.safetensors",voice_NATF1:"model:voices_safetensors/NATF1.safetensors",voice_NATF2:"model:voices_safetensors/NATF2.safetensors",voice_NATF3:"model:voices_safetensors/NATF3.safetensors",voice_NATM0:"model:voices_safetensors/NATM0.safetensors",voice_NATM1:"model:voices_safetensors/NATM1.safetensors",voice_NATM2:"model:voices_safetensors/NATM2.safetensors",voice_NATM3:"model:voices_safetensors/NATM3.safetensors",voice_VARF0:"model:voices_safetensors/VARF0.safetensors",voice_VARF1:"model:voices_safetensors/VARF1.safetensors",voice_VARF2:"model:voices_safetensors/VARF2.safetensors",voice_VARF3:"model:voices_safetensors/VARF3.safetensors",voice_VARF4:"model:voices_safetensors/VARF4.safetensors",voice_VARM0:"model:voices_safetensors/VARM0.safetensors",voice_VARM1:"model:voices_safetensors/VARM1.safetensors",voice_VARM2:"model:voices_safetensors/VARM2.safetensors",voice_VARM3:"model:voices_safetensors/VARM3.safetensors",voice_VARM4:"model:voices_safetensors/VARM4.safetensors"},tensors:{lm_weights:{source:"weights:",prefix:"lm"},mimi_weights:{source:"weights:",prefix:"mimi"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_model:"model:tokenizer_spm_32k_3.model",voice_NATF0:"model:voices_safetensors/NATF0.safetensors",voice_NATF1:"model:voices_safetensors/NATF1.safetensors",voice_NATF2:"model:voices_safetensors/NATF2.safetensors",voice_NATF3:"model:voices_safetensors/NATF3.safetensors",voice_NATM0:"model:voices_safetensors/NATM0.safetensors",voice_NATM1:"model:voices_safetensors/NATM1.safetensors",voice_NATM2:"model:voices_safetensors/NATM2.safetensors",voice_NATM3:"model:voices_safetensors/NATM3.safetensors",voice_VARF0:"model:voices_safetensors/VARF0.safetensors",voice_VARF1:"model:voices_safetensors/VARF1.safetensors",voice_VARF2:"model:voices_safetensors/VARF2.safetensors",voice_VARF3:"model:voices_safetensors/VARF3.safetensors",voice_VARF4:"model:voices_safetensors/VARF4.safetensors",voice_VARM0:"model:voices_safetensors/VARM0.safetensors",voice_VARM1:"model:voices_safetensors/VARM1.safetensors",voice_VARM2:"model:voices_safetensors/VARM2.safetensors",voice_VARM3:"model:voices_safetensors/VARM3.safetensors",voice_VARM4:"model:voices_safetensors/VARM4.safetensors"},tensors:{lm_weights:"model:model.safetensors",mimi_weights:"model:tokenizer-e351c8d8-checkpoint125.safetensors"}}]},v$={schema_version:1,family:"phonon2_asr",display_name:"Phonon-2",description:"Fermion Research Phonon-2 English ASR using the shared Parakeet implementation, with native hotwords and phrase-based streaming.",category:"asr",status:"community",tasks:["asr"],modes:["offline","streaming"],languages:["en"],runtime:{tags:["gguf","stream"]},capabilities:{asr:["word_timestamps","partial_results","vad_chunking"]},options:{request:[{name:"return_timestamps",type:"bool",description:"Accepted for CLI --words-out compatibility. Word timestamps are always returned, including when false or omitted.",required:!1},{name:"max_tokens",type:"int",description:"Maximum TDT generated tokens; 0 or omitted uses the model-derived limit.",required:!1,min:0,default:0},{name:"keep_language_tags",type:"bool",description:"Keep language tag tokens in decoded text; default false.",required:!1,default:!1},{name:"audio_chunk_mode",type:"enum",description:"Offline audio chunking mode. fixed selects overlapping long-form windows regardless of offline_mode; vad uses the configured VAD model (Silero by default) to skip silence; auto follows offline_mode. Offline input is downmixed and resampled as needed.",values:["auto","fixed","vad","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"VAD maximum chunk duration; omitted inherits the session duration. Fixed/long_form windows use the session setting, not this request override.",required:!1,min:.001},{name:"hotwords",type:"string",description:"Optional native vocabulary bias: comma-separated terms or a JSON list; up to 25 terms.",required:!1},{name:"hotwords_score",type:"float",description:"Phonon-2/Bark native matching-piece logit bonus; duration scores and blank are not biased.",required:!1,min:0,max:100,default:2}],session:[{name:"weight_type",type:"enum",description:"Shared matmul weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"matmul_weight_type",type:"enum",description:"Encoder and decoder matmul weight storage type; defaults to weight_type, which defaults to native. Q8_0 measured 1.79x faster on the tested CPU and changed roughly 8 percent of transcripts without moving aggregate word error rate.",preset:"weight_type_full",required:!1},{name:"conv_weight_type",type:"enum",description:"Convolution weight storage type; default native.",preset:"weight_type_conv",required:!1,default:"native"},{name:"perf_mode",type:"enum",description:"Encoder attention implementation. Default off uses the validated relative-attention path; flash_attention enables the fused implementation, which was numerically validated but slower on the tested hardware.",preset:"perf_mode_flash_attention",required:!1,default:"off"},{name:"weight_context_mb",type:"int",description:"Weight context arena size in MiB; default 3072.",required:!1,min:1,default:3072},{name:"encoder_graph_arena_mb",type:"int",description:"Encoder graph arena size in MiB; default 1024.",required:!1,min:1,default:1024},{name:"decoder_graph_arena_mb",type:"int",description:"Decoder graph arena size in MiB; default 256.",required:!1,min:1,default:256},{name:"audio_chunk_duration_sec",type:"float",description:"Center-region duration for buffered streaming in seconds; default 2. Fixed context windows are re-encoded rather than cache-aware. Also sizes offline fixed/long_form windows.",required:!1,min:.001,default:2},{name:"left_context_sec",type:"float",description:"Past context included when re-encoding each buffered-streaming window in seconds; default 10. Also applies to offline fixed/long_form windows.",required:!1,min:0,default:10},{name:"right_context_sec",type:"float",description:"Future lookahead included when re-encoding each buffered-streaming window in seconds; default 2 and adds equivalent partial-result latency. Also applies to offline fixed/long_form windows.",required:!1,min:0,default:2},{name:"streaming_attention_mode",type:"enum",description:"Attention policy inside each buffered window. full_context preserves bidirectional attention over the bounded window.",values:["full_context"],required:!1,default:"full_context"},{name:"offline_mode",type:"enum",description:"Offline encoder scheduling. full_context encodes the whole utterance, long_form uses bounded overlapping windows, and auto selects long_form beyond audio_chunk_threshold_sec.",values:["full_context","long_form","auto"],required:!1,default:"full_context"},{name:"audio_chunk_threshold_sec",type:"float",description:"Duration threshold used by offline_mode=auto before switching to bounded-window long-form execution; default 30 seconds.",required:!1,min:.001,default:30},{name:"vad_model_path",type:"path",description:"VAD model path used by audio_chunk_mode=vad (any built-in VAD family); default assets/framework/models/silero_vad.",required:!1,default:"assets/framework/models/silero_vad"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"phonon2_asr_q8_0",display_name:"Phonon-2 mixed Q8 GGUF",format:"gguf",precision:"q8_0",target_directory:"Phonon-2-GGUF",files:["Phonon-2-GGUF/phonon-2-mixed-q8.gguf"],strip_prefix:"Phonon-2-GGUF",default:!0},{id:"phonon2_asr_f16",display_name:"Phonon-2 mixed F16 GGUF",format:"gguf",precision:"f16",target_directory:"Phonon-2-GGUF",files:["Phonon-2-GGUF/phonon-2-mixed-f16.gguf"],strip_prefix:"Phonon-2-GGUF"}],dependencies:[],ui:{recommended_package:"phonon2_asr_q8_0",tags:["ASR","GGUF"],docs:["docs/models/parakeet_tdt.md#phonon-2"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",processor_config:"model:processor_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",processor_config:"model:processor_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"model:model.safetensors"}}]},b$={schema_version:1,family:"piper_tts",display_name:"Piper TTS",description:"Native VITS inference for Piper text-to-speech voices using the shared eSpeak-ng frontend.",category:"tts",status:"community",tasks:["tts"],modes:["offline"],languages:["en"],runtime:{tags:["gguf"]},capabilities:{tts:["long_form"]},options:{request:[{name:"speed",type:"float",description:"Speech speed multiplier; larger values produce faster speech.",required:!1,min:.5,max:2,default:1},{name:"variation",type:"float",description:"Acoustic latent noise scale.",required:!1,min:0,max:1,default:.667},{name:"duration_variation",type:"float",description:"Stochastic duration noise scale.",required:!1,min:0,max:2,default:.8},{name:"seed",type:"int",description:"Non-negative generation seed.",required:!1,min:0,default:1234,max:4294967295},{name:"text_chunk_mode",type:"enum",description:"Long-form text chunking mode.",values:["default","tag_aware","japanese","endline"],required:!1,default:"default"},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per long-form chunk.",required:!1,min:1,default:280}],session:[{name:"espeak_library_path",type:"path",description:"Optional explicit path to the eSpeak-ng shared library.",required:!1},{name:"espeak_data_path",type:"path",description:"Optional explicit path to espeak-ng-data.",required:!1},{name:"exec_plan",type:"string",description:"JSON object of component execution plans. Components: decoder, duration_encoder, duration_flows. Each plan accepts impl, backend, artifacts, and params. impl is default/ggml/rknn. Default keeps existing execution. The decoder's GGML impl supports the session backend; RKNN requires artifacts.main and ENGINE_ENABLE_RKNN, with no backend field. The two duration stages are GGML-only and accept the session backend (device) or cpu (host); with no backend field the text encoder runs on the host on CUDA and on the session backend elsewhere, and the flow graphs run on the session backend. No implementation takes params.",required:!1,default:"{}"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"piper_lessac_medium_orig",display_name:"Piper Lessac Medium Original-Dtype GGUF",default:!0,format:"gguf",precision:"orig",target_directory:"Piper-TTS-GGUF",files:["Piper-TTS-GGUF/piper-en-us-lessac-medium-orig.gguf"],strip_prefix:"Piper-TTS-GGUF"},{id:"piper_lessac_medium_decoder_rk3588",display_name:"Piper Lessac Medium NPU Decoder RKNN (RK3588)",format:"rknn",precision:"f16",target_directory:"Piper-TTS-GGUF",files:["rk3588/piper-lessac-w93.rknn"],strip_prefix:"rk3588",description:"Pre-compiled RK3588 engine for the piper_tts RKNN decoder sidecar (piper_tts.exec_plan, artifacts.main); installs beside the GGUF weights and is named by bare file name. Built by tools/rknn from the en_US-lessac-medium streaming decoder export; see docs/build/rockchip-npu.md.",download:{kind:"huggingface_snapshot",repo:"wOvANAI/rknn-tts-engines",revision:"main",gated:!1}}],dependencies:[],ui:{recommended_package:"piper_lessac_medium_orig",tags:["TTS","GGUF"],docs:["docs/tts.md","docs/models/piper_tts.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:{source:"weights:",prefix:"weights"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json"},tensors:{weights:"model:model.safetensors"}}]},y$={schema_version:1,family:"plapre",display_name:"Plapre 3",description:"Danish speech synthesis with a Llama autoregressive decoder and Kanade audio codec. Streaming emits completed text chunks, not incremental codec frames.",category:"tts",status:"supported",tasks:["tts","clone"],modes:["offline","streaming"],languages:["da"],capabilities:{tts:["long_form","speaker_reference","built_in_voices"],clone:["speaker_reference","long_form"]},runtime:{tags:["gguf","stream"]},options:{request:[{name:"voice_id",type:"enum",description:"Built-in speaker.",required:!1,default:"tor",values:["tor","ida","liv","ask","kaj"]},{name:"reference_text",type:"string",description:"Transcript of the reference audio, used for voice cloning.",required:!1,default:""},{name:"x_vector_only_mode",type:"bool",description:"Use only the reference speaker embedding, without the reference transcript/audio-token prefix.",required:!1,default:!1},{name:"word_duration_frames",type:"string",description:"JSON array of per-word integer durations, from 0 to 399 frames at 25 Hz. Duration-controlled text is generated in one chunk.",required:!1},{name:"context_text",type:"string",description:"Previous utterance for prosodic context.",required:!1},{name:"context_audio_file",type:"audio_path",description:"Optional previous-utterance WAV accompanying context_text.",required:!1},{name:"same_speaker",type:"bool",description:"Whether context_text belongs to the target speaker.",required:!1,default:!0},{name:"pronunciations",type:"string",description:'Ordered JSON array of pronunciation references: [{"word":"morgen","audio_file":"morgen.wav"}]. Up to 10 references, 60 codes each and 200 total codes are used.',required:!1},{name:"edit_start_frame",type:"int",description:"Start of the masked span in voice_ref, in 25-Hz codec frames. Supply both edit boundaries and the complete desired text.",required:!1,min:0},{name:"edit_end_frame",type:"int",description:"Exclusive end of the masked span in voice_ref. Editing runs in one text chunk.",required:!1,min:0},{name:"max_tokens",type:"int",description:"Maximum generated tokens per text chunk; each audio token represents 40 ms.",required:!1,default:500,min:1},{name:"min_tokens",type:"int",description:"Minimum generated tokens before a stop token can be selected.",required:!1,default:0,min:0},{name:"temperature",type:"float",description:"Sampling temperature; zero selects greedy decoding.",required:!1,default:.8,min:0},{name:"top_p",type:"float",description:"Nucleus sampling probability in (0, 1].",required:!1,default:.95,min:0,max:1},{name:"top_k",type:"int",description:"Top-k sampling; -1 or zero disables filtering.",required:!1,default:50,min:-1},{name:"seed",type:"int",description:"Sampling and vocoder noise seed.",required:!1,default:0,min:0},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per long-form text chunk.",required:!1,default:300,min:1},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking policy.",required:!1,default:"default",values:["default","tag_aware","japanese","endline"]},{name:"silence_duration_sec",type:"float",description:"Silence inserted between text chunks.",required:!1,default:.1,min:0}],session:[],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"plapre_3_bf16",display_name:"Plapre 3 BF16",format:"gguf",precision:"bf16",default:!0,target_directory:"Plapre-3-GGUF",files:["Plapre-3-GGUF/plapre-3-bf16.gguf"],strip_prefix:"Plapre-3-GGUF"},{id:"plapre_3_f32",display_name:"Plapre 3 F32",format:"gguf",precision:"f32",default:!1,target_directory:"Plapre-3-GGUF",files:["Plapre-3-GGUF/plapre-3-f32.gguf"],strip_prefix:"Plapre-3-GGUF"}],dependencies:[],ui:{recommended_package:"plapre_3_bf16",builtin_voices:["tor","ida","liv","ask","kaj"],default_voice:"tor",tags:["TTS","GGUF"],docs:["docs/models/plapre.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",kanade_config:"model:kanade_config.json",speakers:"model:speakers.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json"},tensors:{ar:"weights:",speaker_projection:{source:"weights:",prefix:"speaker_proj"},kanade:{source:"weights:",prefix:"kanade"},wavlm:{source:"weights:",prefix:"wavlm"},hift:{source:"weights:",prefix:"hift"}}}]},w$={family:"pocket_tts",display_name:"PocketTTS",description:"Kyutai 100M-parameter CPU-friendly TTS package set for real-time local synthesis and small-footprint voice cloning in English, French, German, Italian, Portuguese, and Spanish.",category:"tts",status:"supported",tasks:["tts","clone"],modes:["offline","streaming"],languages:["en","fr","de","it","pt","es"],options:{request:[{name:"frames_after_eos",type:"int",description:"Extra frames after EOS; -1 uses the model-derived value.",required:!1,min:-1,default:-1},{name:"max_frames",type:"int",description:"Maximum generated audio frames; zero estimates the cap from text length. Captured during session preparation.",required:!1,min:0,default:0},{name:"text_chunk_tokens",type:"int",description:"Tokenizer tokens per text chunk; must be positive, default 50. Set during preparation and overridable per request.",required:!1,min:1,default:50},{name:"temperature",type:"float",description:"Positive flow noise temperature; defaults to the model configuration. Captured during session preparation.",required:!1},{name:"seed",type:"int",description:"Noise seed; omitted chooses a random seed. Captured during session preparation.",required:!1,min:0,max:4294967295},{name:"noise_clamp",type:"float",description:"Noise clamp; a negative value disables clamping. Captured during session preparation.",required:!1,default:-1},{name:"eos_threshold",type:"float",description:"EOS detection threshold. Captured during session preparation.",required:!1,default:-4},{name:"noise_file",type:"path",description:"Precomputed noise schedule file. Captured during session preparation.",required:!1},{name:"voice_embedding_file",type:"path",description:"Precomputed voice-state embedding path. Captured during session preparation.",required:!1},{name:"truncate_clone_audio",type:"bool",description:"Truncate voice clone audio. Captured during session preparation.",required:!1,default:!1},{name:"text_chunk_size",type:"int",description:"Optional per-request character chunk size; otherwise use sentence/token budgeting.",required:!1},{name:"export_voice_state_file",type:"path",description:"Export the prepared voice state during session preparation.",required:!1}],session:[{name:"voice_state_cache_slots",type:"int",description:"Cached prepared voice states; zero disables reuse.",required:!1,min:0,default:4},{name:"offline_graph_capacity_mode",type:"enum",description:"Offline graph capacity policy; CPU/Metal default tiered, other backends double.",required:!1,values:["fixed","double","tiered","grow"]},{name:"prompt_graph_capacity",type:"int",description:"Optional reserved prompt capacity.",required:!1,min:1},{name:"generation_graph_capacity",type:"int",description:"Optional reserved generation capacity.",required:!1,min:1},{name:"weight_type",type:"enum",description:"Shared matmul weight storage; component matmul settings inherit it. Convolution storage remains independently native unless overridden.",required:!1,preset:"weight_type_full"},{name:"matmul_weight_type",type:"enum",description:"Weight storage type; component-specific settings inherit weight_type.",required:!1,preset:"weight_type_full"},{name:"conv_weight_type",type:"enum",description:"Convolution weight storage.",required:!1,preset:"weight_type_conv",default:"native"},{name:"weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:64},{name:"flow_weight_context_mb",type:"int",description:"Flow weight context in MiB; inherits pocket_tts.weight_context_mb when omitted.",required:!1,min:1},{name:"mimi_encoder_weight_context_mb",type:"int",description:"Mimi encoder weight context in MiB; inherits pocket_tts.weight_context_mb when omitted.",required:!1,min:1},{name:"mimi_decoder_weight_context_mb",type:"int",description:"Mimi decoder weight context in MiB; inherits pocket_tts.weight_context_mb when omitted.",required:!1,min:1},{name:"flow_weights_view_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:256},{name:"flow_step_graph_arena_mb",type:"int",description:"Flow-step host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:256},{name:"mimi_encoder_graph_arena_mb",type:"int",description:"Mimi encoder host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:512},{name:"mimi_conv_graph_arena_mb",type:"int",description:"Mimi convolution host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:32},{name:"mimi_transformer_graph_arena_mb",type:"int",description:"Mimi transformer host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:96},{name:"mimi_tail_graph_arena_mb",type:"int",description:"Mimi tail host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:512},{name:"mimi_full_chunk_frames",type:"int",description:"Full-sequence decoder chunk frames.",required:!1,min:1,default:90},{name:"mimi_stage2_chunk_frames",type:"int",description:"Second-stage decoder chunk frames.",required:!1,min:1,default:900},{name:"use_full_mimi",type:"bool",description:"Use full-sequence Mimi decoding.",required:!1,default:!0}],load:[{name:"language",type:"string",description:"Model language selection.",required:!1,default:"english"}]},capabilities:{clone:["speaker_reference"]},runtime:{tags:["gguf"]},ui:{recommended_package:"pocket_tts_english_q8_0",default_voice:"alba",builtin_voices:["alba"],tags:["TTS","Clone","GGUF"],docs:["docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"pocket_tts_english_q8_0",display_name:"PocketTTS English Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"PocketTTS-GGUF/english",files:["PocketTTS-GGUF/english/pocket-tts-english-q8_0.gguf","PocketTTS-GGUF/english/embeddings/alba.safetensors"],strip_prefix:"PocketTTS-GGUF/english"},{id:"pocket_tts_english_bf16",display_name:"PocketTTS English BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"PocketTTS-GGUF/english",files:["PocketTTS-GGUF/english/pocket-tts-english-bf16.gguf","PocketTTS-GGUF/english/embeddings/alba.safetensors"],strip_prefix:"PocketTTS-GGUF/english"},{id:"pocket_tts_french_q8_0",display_name:"PocketTTS French Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"PocketTTS-GGUF/french",files:["PocketTTS-GGUF/french/pocket-tts-french-q8_0.gguf","PocketTTS-GGUF/french/embeddings/cosette.safetensors"],strip_prefix:"PocketTTS-GGUF/french"},{id:"pocket_tts_french_bf16",display_name:"PocketTTS French BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"PocketTTS-GGUF/french",files:["PocketTTS-GGUF/french/pocket-tts-french-bf16.gguf","PocketTTS-GGUF/french/embeddings/cosette.safetensors"],strip_prefix:"PocketTTS-GGUF/french"},{id:"pocket_tts_german_q8_0",display_name:"PocketTTS German Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"PocketTTS-GGUF/german",files:["PocketTTS-GGUF/german/pocket-tts-german-q8_0.gguf"],strip_prefix:"PocketTTS-GGUF/german"},{id:"pocket_tts_german_bf16",display_name:"PocketTTS German BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"PocketTTS-GGUF/german",files:["PocketTTS-GGUF/german/pocket-tts-german-bf16.gguf"],strip_prefix:"PocketTTS-GGUF/german"},{id:"pocket_tts_italian_q8_0",display_name:"PocketTTS Italian Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"PocketTTS-GGUF/italian",files:["PocketTTS-GGUF/italian/pocket-tts-italian-q8_0.gguf"],strip_prefix:"PocketTTS-GGUF/italian"},{id:"pocket_tts_italian_bf16",display_name:"PocketTTS Italian BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"PocketTTS-GGUF/italian",files:["PocketTTS-GGUF/italian/pocket-tts-italian-bf16.gguf"],strip_prefix:"PocketTTS-GGUF/italian"},{id:"pocket_tts_portuguese_q8_0",display_name:"PocketTTS Portuguese Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"PocketTTS-GGUF/portuguese",files:["PocketTTS-GGUF/portuguese/pocket-tts-portuguese-q8_0.gguf"],strip_prefix:"PocketTTS-GGUF/portuguese"},{id:"pocket_tts_portuguese_bf16",display_name:"PocketTTS Portuguese BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"PocketTTS-GGUF/portuguese",files:["PocketTTS-GGUF/portuguese/pocket-tts-portuguese-bf16.gguf"],strip_prefix:"PocketTTS-GGUF/portuguese"},{id:"pocket_tts_spanish_q8_0",display_name:"PocketTTS Spanish Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"PocketTTS-GGUF/spanish",files:["PocketTTS-GGUF/spanish/pocket-tts-spanish-q8_0.gguf"],strip_prefix:"PocketTTS-GGUF/spanish"},{id:"pocket_tts_spanish_bf16",display_name:"PocketTTS Spanish BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"PocketTTS-GGUF/spanish",files:["PocketTTS-GGUF/spanish/pocket-tts-spanish-bf16.gguf"],strip_prefix:"PocketTTS-GGUF/spanish"},{id:"pocket_tts_english_safetensors",display_name:"PocketTTS English Safetensors",format:"safetensors",precision:"native",target_directory:"pocket-tts",files:["languages/english/embeddings/alba.safetensors","languages/english/embeddings/anna.safetensors","languages/english/embeddings/azelma.safetensors","languages/english/embeddings/bill_boerst.safetensors","languages/english/embeddings/caro_davy.safetensors","languages/english/embeddings/charles.safetensors","languages/english/embeddings/cosette.safetensors","languages/english/embeddings/eponine.safetensors","languages/english/embeddings/estelle.safetensors","languages/english/embeddings/eve.safetensors","languages/english/embeddings/fantine.safetensors","languages/english/embeddings/george.safetensors","languages/english/embeddings/giovanni.safetensors","languages/english/embeddings/jane.safetensors","languages/english/embeddings/javert.safetensors","languages/english/embeddings/jean.safetensors","languages/english/embeddings/juergen.safetensors","languages/english/embeddings/lola.safetensors","languages/english/embeddings/marius.safetensors","languages/english/embeddings/mary.safetensors","languages/english/embeddings/michael.safetensors","languages/english/embeddings/paul.safetensors","languages/english/embeddings/peter_yearsley.safetensors","languages/english/embeddings/rafael.safetensors","languages/english/embeddings/stuart_bell.safetensors","languages/english/embeddings/vera.safetensors","languages/english/model.safetensors","languages/english/tokenizer.model"],download:{kind:"huggingface_snapshot",repo:"kyutai/pocket-tts",gated:!0}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{tokenizer:"model:tokenizer.model"},optional_files:{config:"model:config.yaml"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{language:"languages/english"},files:{tokenizer:"language:tokenizer.model"},optional_files:{config:"language:config.yaml"},tensors:{weights:"language:model.safetensors"}}]},k$={schema_version:1,family:"pulsevad",display_name:"PulseVAD",description:"Speech activity detection for 16 kHz mono audio with 2.1K student and 81K teacher weights.",category:"audio_tools",status:"supported",tasks:["vad"],modes:["offline"],languages:["language_agnostic"],capabilities:{vad:["speech_segments"]},runtime:{tags:["gguf"]},options:{request:[{name:"threshold",type:"float",description:"Speech probability threshold.",required:!1,default:.5,min:0,max:1},{name:"hop_size_samples",type:"int",description:"Window step in samples; 1600 samples is 100 ms at 16 kHz.",required:!1,default:1600,min:1},{name:"min_speech_duration_ms",type:"int",description:"Minimum speech segment duration in milliseconds. Not applied to the short-input path (<3200 samples), which classifies the whole clip by threshold.",required:!1,default:100,min:0},{name:"min_silence_duration_ms",type:"int",description:"Minimum silence before closing a speech segment, in milliseconds.",required:!1,default:100,min:0}],session:[{name:"weight_type",type:"enum",description:"Weight storage override; native preserves the packaged tensor types.",values:["native","f32","f16","bf16"],required:!1,default:"native"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"pulsevad_2_1k_f32",display_name:"PulseVAD 2.1K GGUF F32",default:!0,format:"gguf",precision:"f32",target_directory:"PulseVAD-GGUF",files:["PulseVAD-GGUF/pulsevad-2.1k-f32.gguf"],strip_prefix:"PulseVAD-GGUF"},{id:"pulsevad_81k_f32",display_name:"PulseVAD 81K GGUF F32",format:"gguf",precision:"f32",target_directory:"PulseVAD-GGUF",files:["PulseVAD-GGUF/pulsevad-81k-f32.gguf"],strip_prefix:"PulseVAD-GGUF"}],dependencies:[],ui:{tags:["VAD","GGUF"],docs:["docs/models/pulsevad.md"],recommended_package:"pulsevad_2_1k_f32"},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},tensors:{weights:{source:"weights:",prefix:"weights"}}},{format:"safetensors",roots:{model:"."},tensors:{weights:"model:pulsevad-f32.safetensors"}}]},x$={family:"qwen3_asr",display_name:"Qwen3-ASR",description:"Qwen ASR model family for language identification and speech recognition across 30 languages, 22 Chinese dialects, and multiple English accents, with robustness for noisy, long-form, and singing audio.",category:"asr",status:"supported",tasks:["asr"],modes:["offline","streaming"],languages:["zh","en","yue","ar","de","fr","es","pt","id","it","ko","ru","th","vi","ja","tr","hi","ms","nl","sv","da","fi","pl","cs","fil","fa","el","hu","mk","ro","zh dialects"],capabilities:{asr:["word_timestamps","vad_chunking","partial_results"]},options:{request:[{name:"language",type:"string",description:"Recognition language code or label. Omit to detect language automatically; Auto also selects automatic detection.",required:!1},{name:"max_tokens",type:"int",description:"Maximum generated transcript tokens; omitted uses the checkpoint generation_config.json (512 when absent).",required:!1,min:1},{name:"return_timestamps",type:"bool",description:"Return word-level timestamps by running Qwen3 ForcedAligner after ASR; default false and requires forced_aligner_path when enabled. Offline only; streaming rejects true even when an aligner is configured.",required:!1,default:!1},{name:"audio_chunk_mode",type:"enum",description:"Audio chunking mode; default auto uses fixed chunks normally and VAD chunks when timestamps are requested. Offline only; streaming uses fixed-duration windows regardless of this selection.",values:["auto","fixed","vad","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Maximum audio chunk duration in seconds; must be > 0 when chunking or streaming. Ignored with audio_chunk_mode=none offline. Default 30 for streaming and offline transcription, or 15 for offline timestamps/VAD chunking.",required:!1,min:0},{name:"clamp_timestamps_to_audio",type:"bool",description:"Opt-in guard for word timestamp output: keep repaired forced-aligner word spans inside the local audio chunk. Defaults to false to preserve existing timestamp repair behavior.",required:!1,default:!1},{name:"preserve_punctuation",type:"bool",description:"Opt-in text output mode for timestamped chunked ASR: preserve ASR punctuation in text_output instead of rebuilding text from aligned words.",required:!1,default:!1}],session:[{name:"perf_mode",type:"enum",values:["off","cuda_perf"],description:"Performance preset. cuda_perf selects flash attention, packed projections, f16 KV, 256-token attention alignment and two independent offline chunks per decode batch. Explicit session options override the preset.",required:!1,default:"off"},{name:"attention",type:"enum",values:["mixed","auto","eager","flash"],description:"Decoder attention preference. Default mixed preserves manual prefill and flash cached decoding; cuda_perf selects flash for both. auto uses the shared backend policy. Explicit values override the preset.",required:!1},{name:"packed_projections",type:"bool",description:"Pack decoder QKV and gate/up projections without changing weight dtype. Default false, true with cuda_perf. Explicit values override the preset.",required:!1},{name:"kv_cache_type",type:"enum",values:["f32","f16"],description:"Decoder KV storage. Default f32, f16 with cuda_perf. Explicit values override the preset.",required:!1},{name:"kv_cache_alignment",type:"int",min:1,description:"Cached decoder attention prefix alignment in tokens. Default 1 attends over full cache capacity; cuda_perf uses cached 256-token prefix windows. Explicit values override the preset.",required:!1},{name:"offline_batch_size",type:"int",min:1,max:2,description:"Independent offline chunks decoded together. Default 1, 2 with cuda_perf. Does not change chunk boundaries or streaming scheduling. Explicit values override the preset.",required:!1},{name:"lora",type:"path",description:"PEFT LoRA adapter directory or checkpoint file; merged into matching encoder/decoder weights at session creation.",required:!1},{name:"lora_scale",type:"float",description:"Multiplier for the adapter's alpha/r scaling; default 1.",required:!1,default:1},{name:"forced_aligner_path",type:"path",description:"Optional Qwen3 ForcedAligner model path required for return_timestamps.",required:!1},{name:"vad_model_path",type:"path",description:"Optional VAD model path for VAD chunking (any built-in VAD family); default assets/framework/models/silero_vad.",required:!1,default:"assets/framework/models/silero_vad"},{name:"weight_type",type:"enum",description:"Shared text decoder weight storage fallback; default native.",required:!1,default:"native",preset:"weight_type_full"},{name:"audio_encoder_weight_type",type:"enum",description:"Audio encoder weight storage type; default native.",required:!1,default:"native",preset:"weight_type_conv"},{name:"text_decoder_weight_type",type:"enum",description:"Text decoder matmul weight storage type; defaults to weight_type when set, otherwise native.",required:!1,preset:"weight_type_full"},{name:"audio_encoder_graph_arena_mb",type:"int",description:"Audio encoder graph arena size in MiB; default 128.",required:!1,min:1,default:128},{name:"text_decoder_prefill_graph_arena_mb",type:"int",description:"Text decoder prefill graph arena size in MiB; default 256.",required:!1,min:1,default:256},{name:"text_decoder_decode_graph_arena_mb",type:"int",description:"Text decoder cached-step graph arena size in MiB; default 256.",required:!1,min:1,default:256},{name:"text_decoder_weight_context_mb",type:"int",description:"Text decoder weight context size in MiB; default 64.",required:!1,min:1,default:64}],load:[]},runtime:{tags:["gguf","stream"]},ui:{recommended_package:"qwen3_asr_1_7b_q8_0",tags:["ASR","GGUF","Stream"],docs:["docs/models/qwen3_asr.md","docs/asr.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"qwen3_asr_1_7b_q8_0",display_name:"Qwen3-ASR 1.7B Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Qwen3-ASR-1.7B-GGUF",files:["Qwen3-ASR-1.7B-GGUF/qwen3-asr-1.7b-q8_0.gguf"],strip_prefix:"Qwen3-ASR-1.7B-GGUF"},{id:"qwen3_asr_1_7b_f16",display_name:"Qwen3-ASR 1.7B F16 GGUF",format:"gguf",precision:"f16",target_directory:"Qwen3-ASR-1.7B-GGUF",files:["Qwen3-ASR-1.7B-GGUF/qwen3-asr-1.7b-f16.gguf"],strip_prefix:"Qwen3-ASR-1.7B-GGUF"},{id:"qwen3_asr_0_6b_q8_0",display_name:"Qwen3-ASR 0.6B Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Qwen3-ASR-0.6B-GGUF",files:["Qwen3-ASR-0.6B-GGUF/qwen3-asr-0.6b-q8_0.gguf"],strip_prefix:"Qwen3-ASR-0.6B-GGUF"},{id:"qwen3_asr_0_6b_f16",display_name:"Qwen3-ASR 0.6B F16 GGUF",format:"gguf",precision:"f16",target_directory:"Qwen3-ASR-0.6B-GGUF",files:["Qwen3-ASR-0.6B-GGUF/qwen3-asr-0.6b-f16.gguf"],strip_prefix:"Qwen3-ASR-0.6B-GGUF"},{id:"qwen3_asr_1_7b_safetensors",display_name:"Qwen3-ASR 1.7B HF Safetensors",format:"safetensors",precision:"native",target_directory:"Qwen3-ASR-1.7B-hf",files:["config.json","generation_config.json","model.safetensors","processor_config.json","tokenizer_config.json","tokenizer.json"],download:{kind:"huggingface_snapshot",repo:"Qwen/Qwen3-ASR-1.7B-hf"}},{id:"qwen3_asr_0_6b_safetensors",display_name:"Qwen3-ASR 0.6B Safetensors",format:"safetensors",precision:"native",target_directory:"Qwen3-ASR-0.6B",files:["config.json","generation_config.json","model.safetensors","preprocessor_config.json","tokenizer_config.json"],download:{kind:"huggingface_snapshot",repo:"Qwen/Qwen3-ASR-0.6B"}},{id:"qwencleo_asr_q8_0",display_name:"QwenCleo-ASR Egyptian Arabic Q8_0 GGUF",description:"Egyptian Arabic and Arabic-English code-switching fine-tune of Qwen3-ASR-1.7B from mohammedaly22/QwenCleo-ASR. Use language=Arabic.",format:"gguf",precision:"q8_0",target_directory:"QwenCleo-ASR-GGUF",files:["qwencleo-asr-q8_0.gguf"],download:{kind:"huggingface_snapshot",repo:"mohammedaly22/QwenCleo-ASR-GGUF"}},{id:"qwencleo_asr_f16",display_name:"QwenCleo-ASR Egyptian Arabic F16 GGUF",description:"Egyptian Arabic and Arabic-English code-switching fine-tune of Qwen3-ASR-1.7B from mohammedaly22/QwenCleo-ASR. Use language=Arabic.",format:"gguf",precision:"f16",target_directory:"QwenCleo-ASR-GGUF",files:["qwencleo-asr-f16.gguf"],download:{kind:"huggingface_snapshot",repo:"mohammedaly22/QwenCleo-ASR-GGUF"}},{id:"qwencleo_asr_safetensors",display_name:"QwenCleo-ASR Egyptian Arabic Safetensors",description:"Egyptian Arabic and Arabic-English code-switching fine-tune of Qwen3-ASR-1.7B from mohammedaly22/QwenCleo-ASR. Use language=Arabic.",format:"safetensors",precision:"native",target_directory:"QwenCleo-ASR",files:["config.json","generation_config.json","model.safetensors","preprocessor_config.json","tokenizer_config.json","tokenizer.json","vocab.json","merges.txt","chat_template.json"],download:{kind:"huggingface_snapshot",repo:"mohammedaly22/QwenCleo-ASR"}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_config:"model:tokenizer_config.json"},optional_files:{preprocessor_config:"model:preprocessor_config.json",processor_config:"model:processor_config.json",chat_template:"model:chat_template.json",chat_template_jinja:"model:chat_template.jinja",vocab:"model:vocab.json",merges:"model:merges.txt",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_config:"model:tokenizer_config.json"},optional_files:{preprocessor_config:"model:preprocessor_config.json",processor_config:"model:processor_config.json",chat_template:"model:chat_template.json",chat_template_jinja:"model:chat_template.jinja",vocab:"model:vocab.json",merges:"model:merges.txt",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"model:model.safetensors"}}]},S$={family:"qwen3_forced_aligner",display_name:"Qwen3 Forced Aligner",description:"Qwen3 non-autoregressive forced aligner that aligns transcript text to speech and returns word- or character-level timestamps across 11 supported languages.",category:"speech_analysis",status:"supported",tasks:["align"],modes:["offline"],languages:["zh","en","yue","fr","de","it","ja","ko","pt","ru","es"],capabilities:{align:["word_timestamps"]},options:{request:[{name:"clamp_timestamps_to_audio",type:"bool",description:"Opt-in guard for word timestamp output: keep repaired word spans inside the local audio input. Defaults to false to preserve existing timestamp repair behavior.",required:!1,default:!1}],session:[{name:"weight_type",type:"enum",description:"Shared thinker matmul storage; does not override audio encoder storage.",required:!1,preset:"weight_type_full",default:"native"},{name:"audio_encoder_weight_type",type:"enum",description:"Audio encoder matmul storage.",required:!1,values:["native","f32","f16"],default:"native"},{name:"thinker_weight_type",type:"enum",description:"Thinker matmul storage; inherits weight_type when omitted.",required:!1,preset:"weight_type_full"},{name:"audio_encoder_graph_arena_mb",type:"int",description:"Audio encoder graph metadata arena. Size in MiB; must be positive.",required:!1,min:1,default:128},{name:"thinker_prefill_graph_arena_mb",type:"int",description:"Thinker prefill graph metadata arena. Size in MiB; must be positive.",required:!1,min:1,default:256},{name:"thinker_decode_graph_arena_mb",type:"int",description:"Thinker cached-step graph metadata arena. Size in MiB; must be positive.",required:!1,min:1,default:256},{name:"thinker_weight_context_mb",type:"int",description:"Thinker weight metadata context. Size in MiB; must be positive.",required:!1,min:1,default:64}],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"qwen3_forced_aligner_0_6b_q8_0",tags:["Align","GGUF"],docs:["docs/models/qwen3_forced_aligner.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"qwen3_forced_aligner_0_6b_q8_0",display_name:"Qwen3 Forced Aligner 0.6B Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Qwen3-ForcedAligner-0.6B-GGUF",files:["Qwen3-ForcedAligner-0.6B-GGUF/qwen3-forced-aligner-0.6b-q8_0.gguf"],strip_prefix:"Qwen3-ForcedAligner-0.6B-GGUF"},{id:"qwen3_forced_aligner_0_6b_f16",display_name:"Qwen3 Forced Aligner 0.6B F16 GGUF",format:"gguf",precision:"f16",target_directory:"Qwen3-ForcedAligner-0.6B-GGUF",files:["Qwen3-ForcedAligner-0.6B-GGUF/qwen3-forced-aligner-0.6b-f16.gguf"],strip_prefix:"Qwen3-ForcedAligner-0.6B-GGUF"},{id:"qwen3_forced_aligner_0_6b_safetensors",display_name:"Qwen3 Forced Aligner 0.6B Safetensors",format:"safetensors",precision:"native",target_directory:"Qwen3-ForcedAligner-0.6B",files:["config.json","generation_config.json","model.safetensors","preprocessor_config.json","tokenizer_config.json"],download:{kind:"huggingface_snapshot",repo:"Qwen/Qwen3-ForcedAligner-0.6B"}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_config:"model:tokenizer_config.json"},optional_files:{preprocessor_config:"model:preprocessor_config.json",processor_config:"model:processor_config.json",chat_template:"model:chat_template.json",chat_template_jinja:"model:chat_template.jinja",vocab:"model:vocab.json",merges:"model:merges.txt",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_config:"model:tokenizer_config.json"},optional_files:{preprocessor_config:"model:preprocessor_config.json",processor_config:"model:processor_config.json",chat_template:"model:chat_template.json",chat_template_jinja:"model:chat_template.jinja",vocab:"model:vocab.json",merges:"model:merges.txt",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"model:model.safetensors"}}]},T$={family:"qwen3_tts",display_name:"Qwen3-TTS",description:"Qwen3-TTS for controllable 10-language synthesis, 3-second voice cloning, CustomVoice, and VoiceDesign.",category:"tts",status:"supported",tasks:["tts","clone","design"],modes:["offline","streaming"],languages:["zh","en","ja","ko","de","fr","ru","pt","es","it"],capabilities:{clone:["speaker_reference"],design:["voice_design"]},options:{request:[{name:"stream_chunk_policy",type:"enum",description:"Streaming codec chunk schedule: grow starts with one frame and doubles to stream_frames_per_event; fixed uses that size throughout.",required:!1,default:"grow",values:["grow","fixed"]},{name:"stream_frames_per_event",type:"int",description:"Codec frames per fixed streaming event, or the maximum for growing events. Smaller values reduce chunk latency but increase decoding overhead.",required:!1,default:12,min:1},{name:"language",type:"string",description:"Target synthesis language code or label; default auto lets the model infer from text and voice settings.",required:!1,default:"auto"},{name:"max_tokens",type:"int",description:"Maximum generated codec frames per text chunk; omitted uses the checkpoint generation_config.json (2048 when absent).",required:!1,min:1},{name:"do_sample",type:"bool",description:"Sample the main codec stream instead of greedy decoding; default true.",required:!1,default:!0},{name:"temperature",type:"float",description:"Main codec sampling temperature; must be > 0 when do_sample=true. Ignored when do_sample=false; default 0.9.",required:!1,min:0,default:.9},{name:"top_k",type:"int",description:"Main codec top-k sampling limit; default 50, 0 disables top-k filtering.",required:!1,min:0,default:50},{name:"top_p",type:"float",description:"Main codec nucleus sampling limit; default 1.0.",required:!1,min:0,max:1,default:1},{name:"repetition_penalty",type:"float",description:"Main codec repetition penalty; must be > 0, default 1.05.",required:!1,min:0,default:1.05},{name:"subtalker_do_sample",type:"bool",description:"Enable subtalker sampling for the remaining audio codebooks instead of greedy decoding; default true.",required:!1,default:!0},{name:"subtalker_temperature",type:"float",description:"Subtalker sampling temperature; must be > 0 when subtalker_do_sample=true. Ignored when subtalker_do_sample=false; default 0.9.",required:!1,min:0,default:.9},{name:"subtalker_top_k",type:"int",description:"Subtalker top-k sampling limit; default 50, 0 disables top-k filtering.",required:!1,min:0,default:50},{name:"subtalker_top_p",type:"float",description:"Subtalker nucleus sampling limit; default 1.0.",required:!1,min:0,max:1,default:1},{name:"seed",type:"int",description:"Codec sampling seed; omitted requests choose a random seed.",required:!1,min:0,max:4294967295},{name:"reference_text",type:"string",description:"Transcript matching the reference audio for voice cloning; required unless x_vector_only_mode=true.",required:!1},{name:"x_vector_only_mode",type:"bool",description:"Use only the speaker embedding for voice cloning instead of ICL reference codec prompting; default false.",required:!1,default:!1},{name:"instruct",type:"string",description:"Optional natural-language voice or style instruction for VoiceDesign and CustomVoice variants; empty instructions are accepted.",required:!1},{name:"voice_id",type:"enum",description:"Named preset speaker from the CustomVoice checkpoint. Legacy speaker remains accepted.",values:["aiden","dylan","eric","ono_anna","ryan","serena","sohee","uncle_fu","vivian"],required:!1},{name:"text_chunk_size",type:"int",description:"Maximum UTF-8 codepoints per long-form text chunk; default 8192.",required:!1,min:1,default:8192}],session:[{name:"lora",type:"path",description:"PEFT LoRA adapter directory or checkpoint file; optional speaker_embedding and tts_config.json sidecars provide a trained custom voice.",required:!1},{name:"lora_scale",type:"float",description:"Multiplier for the adapter's alpha/r scaling; default 1.",required:!1,default:1},{name:"mem_saver",type:"bool",description:"Release the talker cached-step graph after each request; default false.",required:!1,default:!1},{name:"stitch_decode",type:"bool",description:"Voice the concatenated speech codes of all text chunks in one decoder pass instead of voicing each chunk separately; default false. Per-chunk voicing re-voices the voice-clone reference once per chunk and restarts the stateful vocoder cache at every chunk boundary; the stitched pass costs device memory proportional to the utterance.",required:!1,default:!1},{name:"attention",type:"enum",description:"Attention preference; default mixed uses manual prefill and contiguous-K/V flash cached decoding in the talker and code predictor, with eager speech tokenization. auto uses the shared backend policy; eager disables flash; flash uses flash with K/V views. Explicit values override perf_mode.",values:["mixed","auto","eager","flash"],required:!1,default:"mixed"},{name:"packed_projections",type:"bool",description:"Pack QKV and gate/up projections in the talker and code predictor without changing weight dtype; default false, true with cuda_perf. Explicit values override the preset.",required:!1},{name:"kv_cache_write",type:"enum",description:"Talker and code-predictor cache writes: standard by default, optimized with cuda_perf. Optimized uses backend-friendly views and I64 indices to allow fusion where supported. Explicit values override the preset.",values:["standard","optimized"],required:!1},{name:"kv_cache_type",type:"enum",description:"Talker and code-predictor KV storage: f32 by default, f16 with cuda_perf. Explicit values override the preset. F16 reduces cache memory and may change numerical results.",values:["f32","f16"],required:!1},{name:"talker_kv_cache_alignment",type:"int",description:"Round talker KV capacity to this many rows. Defaults to 1 (no padding), or 256 with perf_mode=cuda_perf. Explicit values override the preset. Larger alignments may use more memory and change numerical results.",min:1,default:1,required:!1},{name:"stream_decoder",type:"enum",description:"GGML streaming decoder; stateful carries convolution and attention history and caches graphs for exact chunk lengths. Uses more graph memory and can change audio; default windowed preserves existing behavior.",values:["windowed","stateful"],default:"windowed",required:!1},{name:"perf_mode",type:"enum",description:"Performance preset; default off. flash_attention selects flash attention. cuda_perf also selects packed projections, optimized cache writes, f16 KV and convolution weights, stateful streaming decoding, and KV alignment 256. Explicit session options override the preset. May change audio and memory use.",values:["off","flash_attention","cuda_perf"],required:!1,default:"off"},{name:"voice_prompt_cache_slots",type:"int",description:"Voice prompt cache slots; default 1.",required:!1,min:0,default:1},{name:"weight_type",type:"enum",description:"Shared talker matmul weight storage type; default native.",required:!1,default:"native",preset:"weight_type_full"},{name:"talker_weight_type",type:"enum",description:"Talker weight storage type; defaults to weight_type when set, otherwise native.",required:!1,preset:"weight_type_full"},{name:"speech_encoder_weight_type",type:"enum",description:"Reference speech encoder matmul weight storage type; default native.",required:!1,default:"native",preset:"weight_type_full"},{name:"speech_decoder_weight_type",type:"enum",description:"Speech decoder matmul weight storage type; default native.",required:!1,default:"native",preset:"weight_type_full"},{name:"conv_weight_type",type:"enum",description:"Speech tokenizer and speaker-encoder convolution weight storage type; default f32.",required:!1,default:"f32",preset:"weight_type_conv"},{name:"exec_plan",type:"string",required:!1,default:"{}",description:"JSON object of component execution plans. Component: speech_decoder. Each plan accepts impl, backend, artifacts, and params. impl is default/ggml/rknn. GGML supports the session backend. RKNN requires artifacts.main, optionally artifacts.first for the first streaming group, and ENGINE_ENABLE_RKNN; omit backend. RKNN skips GGML decoder weights. Neither implementation takes params."},{name:"talker_graph_arena_mb",type:"int",description:"Talker graph arena size in MiB; default 32.",required:!1,min:1,default:32},{name:"speech_encoder_graph_arena_mb",type:"int",description:"Reference speech encoder graph arena size in MiB; default 32.",required:!1,min:1,default:32},{name:"speech_decoder_graph_arena_mb",type:"int",description:"Speech decoder graph arena size in MiB; default 32.",required:!1,min:1,default:32},{name:"speaker_encoder_graph_arena_mb",type:"int",description:"Speaker encoder graph arena size in MiB; default 32.",required:!1,min:1,default:32},{name:"talker_constant_context_mb",type:"int",description:"Talker constant tensor context size in MiB; default 4.",required:!1,min:1,default:4},{name:"code_predictor_constant_context_mb",type:"int",description:"Code predictor constant tensor context size in MiB; default 4.",required:!1,min:1,default:4},{name:"speech_decoder_constant_context_mb",type:"int",description:"Speech decoder constant tensor context size in MiB; default 4.",required:!1,min:1,default:4}],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"qwen3_tts_1_7b_base_q8_0",tags:["TTS","Clone","Design","GGUF"],docs:["docs/models/qwen3_tts.md","docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"qwen3_tts_1_7b_base_q8_0",display_name:"Qwen3 TTS 12Hz 1.7B Base Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Qwen3-TTS-12Hz-1.7B-Base-GGUF",files:["Qwen3-TTS-12Hz-1.7B-Base-GGUF/qwen3-tts-12hz-1.7b-base-q8_0_v2.gguf"],strip_prefix:"Qwen3-TTS-12Hz-1.7B-Base-GGUF"},{id:"qwen3_tts_1_7b_base_bf16",display_name:"Qwen3 TTS 12Hz 1.7B Base BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"Qwen3-TTS-12Hz-1.7B-Base-GGUF",files:["Qwen3-TTS-12Hz-1.7B-Base-GGUF/qwen3-tts-12hz-1.7b-base-bf16.gguf"],strip_prefix:"Qwen3-TTS-12Hz-1.7B-Base-GGUF"},{id:"qwen3_tts_1_7b_base_orig",display_name:"Qwen3 TTS 12Hz 1.7B Base Original-Dtype GGUF",format:"gguf",precision:"orig",target_directory:"Qwen3-TTS-12Hz-1.7B-Base-GGUF",files:["Qwen3-TTS-12Hz-1.7B-Base-GGUF/qwen3-tts-12hz-1.7b-base-orig.gguf"],strip_prefix:"Qwen3-TTS-12Hz-1.7B-Base-GGUF"},{id:"qwen3_tts_1_7b_customvoice_q8_0",display_name:"Qwen3 TTS 12Hz 1.7B CustomVoice Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Qwen3-TTS-12Hz-1.7B-CustomVoice-GGUF",files:["Qwen3-TTS-12Hz-1.7B-CustomVoice-GGUF/qwen3-tts-12hz-1.7b-customvoice-q8_0.gguf"],strip_prefix:"Qwen3-TTS-12Hz-1.7B-CustomVoice-GGUF"},{id:"qwen3_tts_1_7b_customvoice_bf16",display_name:"Qwen3 TTS 12Hz 1.7B CustomVoice BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"Qwen3-TTS-12Hz-1.7B-CustomVoice-GGUF",files:["Qwen3-TTS-12Hz-1.7B-CustomVoice-GGUF/qwen3-tts-12hz-1.7b-customvoice-bf16.gguf"],strip_prefix:"Qwen3-TTS-12Hz-1.7B-CustomVoice-GGUF"},{id:"qwen3_tts_1_7b_voicedesign_q8_0",display_name:"Qwen3 TTS 12Hz 1.7B VoiceDesign Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Qwen3-TTS-12Hz-1.7B-VoiceDesign-GGUF",files:["Qwen3-TTS-12Hz-1.7B-VoiceDesign-GGUF/qwen3-tts-12hz-1.7b-voicedesign-q8_0.gguf"],strip_prefix:"Qwen3-TTS-12Hz-1.7B-VoiceDesign-GGUF"},{id:"qwen3_tts_1_7b_voicedesign_bf16",display_name:"Qwen3 TTS 12Hz 1.7B VoiceDesign BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"Qwen3-TTS-12Hz-1.7B-VoiceDesign-GGUF",files:["Qwen3-TTS-12Hz-1.7B-VoiceDesign-GGUF/qwen3-tts-12hz-1.7b-voicedesign-bf16.gguf"],strip_prefix:"Qwen3-TTS-12Hz-1.7B-VoiceDesign-GGUF"},{id:"qwen3_tts_0_6b_base_q8_0",display_name:"Qwen3 TTS 12Hz 0.6B Base Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Qwen3-TTS-12Hz-0.6B-Base-GGUF",files:["Qwen3-TTS-12Hz-0.6B-Base-GGUF/qwen3-tts-12hz-0.6b-base-q8_0.gguf"],strip_prefix:"Qwen3-TTS-12Hz-0.6B-Base-GGUF"},{id:"qwen3_tts_0_6b_base_bf16",display_name:"Qwen3 TTS 12Hz 0.6B Base BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"Qwen3-TTS-12Hz-0.6B-Base-GGUF",files:["Qwen3-TTS-12Hz-0.6B-Base-GGUF/qwen3-tts-12hz-0.6b-base-bf16.gguf"],strip_prefix:"Qwen3-TTS-12Hz-0.6B-Base-GGUF"},{id:"qwen3_tts_1_7b_base_safetensors",display_name:"Qwen3 TTS 12Hz 1.7B Base Safetensors",format:"safetensors",precision:"native",target_directory:"Qwen3-TTS-12Hz-1.7B-Base",files:["config.json","generation_config.json","model.safetensors","speech_tokenizer/config.json","speech_tokenizer/model.safetensors","tokenizer_config.json","vocab.json","merges.txt"],download:{kind:"huggingface_snapshot",repo:"Qwen/Qwen3-TTS-12Hz-1.7B-Base"}},{id:"qwen3_tts_0_6b_base_speech_decoder_rk3588",display_name:"Qwen3 TTS 12Hz 0.6B NPU Speech Decoder RKNN Pair (RK3588)",format:"rknn",precision:"f16",target_directory:"Qwen3-TTS-12Hz-0.6B-Base-GGUF",files:["rk3588/qwen3-tts/vocoder_stateful_16_fp16.rknn","rk3588/qwen3-tts/vocoder_stateful_64b_fp16.rknn"],strip_prefix:"rk3588/qwen3-tts",description:"Pre-compiled RK3588 engine pair (chunk 16 for the first streaming group, chunk 64 for the rest) for the qwen3_tts RKNN speech decoder (qwen3_tts.exec_plan, artifacts.main/first); installs beside the 0.6B GGUF weights and is named by bare file name. Built by tools/rknn from the Qwen3-TTS-12Hz speech tokenizer decoder; see docs/build/rockchip-npu.md.",download:{kind:"huggingface_snapshot",repo:"wOvANAI/rknn-tts-engines",revision:"main",gated:!1}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_config:"model:tokenizer_config.json",vocab:"model:vocab.json",merges:"model:merges.txt",speech_tokenizer_config:"model:speech_tokenizer/config.json"},tensors:{model_weights:{source:"weights:",prefix:"model_weights"},speech_tokenizer_weights:{source:"weights:",prefix:"speech_tokenizer_weights"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_config:"model:tokenizer_config.json",vocab:"model:vocab.json",merges:"model:merges.txt",speech_tokenizer_config:"model:speech_tokenizer/config.json"},tensors:{model_weights:"model:model.safetensors",speech_tokenizer_weights:"model:speech_tokenizer/model.safetensors"}}]},$$={schema_version:1,family:"realtime_reuse",display_name:"Real-time RE-USE",description:"Causal universal speech enhancement with selectable exit layer and lookahead.",category:"audio_tools",status:"supported",tasks:["s2s"],modes:["offline","streaming"],languages:["language_agnostic"],capabilities:{s2s:["audio_enhancement"]},runtime:{tags:["gguf"]},options:{request:[],session:[{name:"weight_type",type:"enum",description:"Weight storage type; native preserves GGUF tensor types.",preset:"weight_type_full",default:"native",required:!1},{name:"exit_layer",type:"int",description:"Number of causal time-frequency blocks; selects the matching trained decoder.",min:3,max:12,default:8,required:!1},{name:"lookahead_frames",type:"int",description:"Encoder lookahead in 20 ms STFT frames.",min:0,max:2,default:0,required:!1}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/RE-USE-GGUF",revision:"main",gated:!1}},packages:[{id:"realtime_reuse_f32",display_name:"Real-time RE-USE F32",default:!0,format:"gguf",precision:"f32",target_directory:"RE-USE-GGUF",files:["realtime-reuse-f32.gguf"]}],dependencies:[],ui:{recommended_package:"realtime_reuse_f32",tags:["GGUF"],docs:["docs/models/realtime_reuse.md","docs/audio_tools.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:{source:"weights:",prefix:"weights"}}}]},q$={schema_version:1,family:"reuse",display_name:"RE-USE",description:"Sample-rate-independent speech restoration with bidirectional Mamba.",category:"audio_tools",status:"supported",tasks:["s2s"],modes:["offline"],languages:["language_agnostic"],capabilities:{s2s:["audio_enhancement"]},runtime:{tags:["gguf"]},options:{request:[{name:"audio_chunk_duration_sec",type:"float",description:"Chunk duration in seconds; zero processes the whole recording. When enabled, the chunk sample count must exceed sample_rate/50. Chunking changes bidirectional and normalization context. Native batching requires zero; positive chunk durations are supported only for single requests.",min:0,default:0,required:!1},{name:"audio_chunk_overlap_sec",type:"float",description:"Hann-weighted overlap in seconds, shorter than the chunk duration. Applies only to single-request chunking; native batching ignores this setting.",min:0,default:1,required:!1}],session:[{name:"weight_type",type:"enum",description:"Weight storage type; native preserves GGUF tensor types.",preset:"weight_type_full",default:"native",required:!1}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/RE-USE-GGUF",revision:"main",gated:!1}},packages:[{id:"reuse_f32",display_name:"RE-USE F32 GGUF",default:!0,format:"gguf",precision:"f32",target_directory:"RE-USE-GGUF",files:["reuse-f32.gguf"]},{id:"reuse_f16",display_name:"RE-USE F16 GGUF",default:!1,format:"gguf",precision:"f16",target_directory:"RE-USE-GGUF",files:["reuse-f16.gguf"]},{id:"reuse_q8_0",display_name:"RE-USE Q8_0 GGUF",default:!1,format:"gguf",precision:"q8_0",target_directory:"RE-USE-GGUF",files:["reuse-q8_0.gguf"]}],dependencies:[],ui:{recommended_package:"reuse_f32",tags:["GGUF"],docs:["docs/models/reuse.md","docs/audio_tools.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:{source:"weights:",prefix:"weights"}}}]},A$={schema_version:1,family:"rvc",display_name:"RVC",description:"RVC is an offline retrieval-based voice conversion family packaged for audio.cpp with native HuBERT content features, RMVPE pitch extraction, optional IVF retrieval blending, packaged v1/v2 voices, and support for user-supplied RVC checkpoints.",category:"voice_conversion",status:"experimental",tasks:["vc"],modes:["offline"],languages:["language_agnostic"],runtime:{tags:["gguf"]},capabilities:{},options:{request:[{name:"voice_id",type:"enum",description:"Packaged RVC voice id; default selects the v2 default voice. Ignored when voice_model_path is provided.",values:["default","manthos","chocola","fraise"],required:!1,default:"default"},{name:"voice_model_path",type:"path",description:"Optional user RVC .pth or .pt voice checkpoint path. When set, this overrides the packaged voice id.",required:!1},{name:"pitch_extractor",type:"enum",description:"Pitch extraction method for F0-enabled voices; the native path currently supports rmvpe only.",values:["rmvpe"],required:!1,default:"rmvpe"},{name:"pitch_file",type:"path",description:"Optional CSV F0 override file with time,Hz rows sorted by time.",required:!1},{name:"retrieval_index_file",type:"path",description:"Optional user FAISS .index retrieval path used when retrieval_blend is greater than 0 for a user voice model.",required:!1},{name:"retrieval_blend",type:"float",description:"IVF retrieval feature blend rate; default 0 disables retrieval blending.",required:!1,min:0,max:1,default:0},{name:"semitone_shift",type:"int",description:"Semitone pitch shift applied before synthesis; default 0.",required:!1,default:0},{name:"pitch_filter_radius",type:"int",description:"Pitch median-filter switch: values >2 enable a radius-1 filter; values <=2 disable it.",required:!1,default:3},{name:"output_sample_rate",type:"int",description:"Output sample rate in Hz; default 0 keeps the selected voice model sample rate. Nonpositive values preserve the voice sample rate.",required:!1,default:0},{name:"rms_mix_rate",type:"float",description:"RMS envelope mix rate applied after conversion; default 0.25.",required:!1,default:.25},{name:"unvoiced_protection",type:"float",description:"Unvoiced consonant protection strength; must be in [0, 1], default 0.33.",required:!1,min:0,max:1,default:.33},{name:"speaker_id",type:"int",description:"Speaker embedding id for multi-speaker RVC checkpoints; default 0.",required:!1,min:0,default:0},{name:"audio_pad_duration_sec",type:"int",description:"Long-audio chunk pad duration in seconds; default 1.",required:!1,min:1,default:1},{name:"split_query_sec",type:"int",description:"Quiet-point query window in seconds for long-audio splitting; default 5.",required:!1,min:1,default:5},{name:"split_center_sec",type:"int",description:"Long-audio split center stride in seconds; default 30.",required:!1,min:1,default:30},{name:"split_threshold_sec",type:"int",description:"Input duration in seconds before quiet-point splitting is used; default 32.",required:!1,min:1,default:32}],session:[{name:"weight_type",type:"enum",description:"Tensor storage type for native RVC, HuBERT, and RMVPE weights; default f32.",preset:"weight_type_full",required:!1,default:"f32"},{name:"voice_cache_slots",type:"int",description:"User voice model cache slots; default 4, set 0 to disable caching.",required:!1,min:0,default:4}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"rvc_f16",display_name:"RVC F16 GGUF",default:!0,format:"gguf",precision:"f16",target_directory:"RVC-GGUF",files:["RVC-GGUF/rvc-f16.gguf"],strip_prefix:"RVC-GGUF"}],dependencies:[],ui:{recommended_package:"rvc_f16",tags:["VC","GGUF"],docs:["docs/audio_tools.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{voice_v1_chocola_index:"model:voices/v1/chocola/added_IVF732_Flat_nprobe_1.index",voice_v1_fraise_index:"model:voices/v1/fraise/added_IVF802_Flat_nprobe_1.index",voice_v2_default_index:"model:voices/v2/default/added_IVF511_Flat_nprobe_1_default_v2.index",voice_v2_manthos_index:"model:voices/v2/manthos/added_IVF2586_Flat_nprobe_1_manthos_v2.index"},tensors:{support_hubert_base:{source:"weights:",prefix:"support_hubert_base"},support_rmvpe:{source:"weights:",prefix:"support_rmvpe"},voice_v1_chocola_checkpoint:{source:"weights:",prefix:"voice_v1_chocola_checkpoint"},voice_v1_chocola_index_vectors:{source:"weights:",prefix:"voice_v1_chocola_index_vectors"},voice_v1_fraise_checkpoint:{source:"weights:",prefix:"voice_v1_fraise_checkpoint"},voice_v1_fraise_index_vectors:{source:"weights:",prefix:"voice_v1_fraise_index_vectors"},voice_v2_default_checkpoint:{source:"weights:",prefix:"voice_v2_default_checkpoint"},voice_v2_default_index_vectors:{source:"weights:",prefix:"voice_v2_default_index_vectors"},voice_v2_manthos_checkpoint:{source:"weights:",prefix:"voice_v2_manthos_checkpoint"},voice_v2_manthos_index_vectors:{source:"weights:",prefix:"voice_v2_manthos_index_vectors"}}},{format:"safetensors",roots:{safetensors:"../safetensors"},files:{voice_v1_chocola_index:"safetensors:voices/v1/chocola/added_IVF732_Flat_nprobe_1.index",voice_v1_fraise_index:"safetensors:voices/v1/fraise/added_IVF802_Flat_nprobe_1.index",voice_v2_default_index:"safetensors:voices/v2/default/added_IVF511_Flat_nprobe_1_default_v2.index",voice_v2_manthos_index:"safetensors:voices/v2/manthos/added_IVF2586_Flat_nprobe_1_manthos_v2.index"},tensors:{support_hubert_base:"safetensors:support/hubert_base.safetensors",support_rmvpe:"safetensors:support/rmvpe.safetensors",voice_v1_chocola_checkpoint:"safetensors:voices/v1/chocola/chocola2333333.safetensors",voice_v1_chocola_index_vectors:"safetensors:voices/v1/chocola/added_IVF732_Flat_nprobe_1.ivf.safetensors",voice_v1_fraise_checkpoint:"safetensors:voices/v1/fraise/fraise2333333.safetensors",voice_v1_fraise_index_vectors:"safetensors:voices/v1/fraise/added_IVF802_Flat_nprobe_1.ivf.safetensors",voice_v2_default_checkpoint:"safetensors:voices/v2/default/default.safetensors",voice_v2_default_index_vectors:"safetensors:voices/v2/default/added_IVF511_Flat_nprobe_1_default_v2.ivf.safetensors",voice_v2_manthos_checkpoint:"safetensors:voices/v2/manthos/manthos.safetensors",voice_v2_manthos_index_vectors:"safetensors:voices/v2/manthos/added_IVF2586_Flat_nprobe_1_manthos_v2.ivf.safetensors"}}]},C$={schema_version:1,family:"sam_audio",display_name:"SAM Audio",description:"Prompt-conditioned audio separation.",category:"audio_tools",status:"supported",tasks:["s2s"],modes:["offline"],languages:["language_agnostic"],capabilities:{},runtime:{tags:["gguf"]},options:{request:[{name:"reference_video_file",type:"path",description:"Masked video identifying the target source; frames are matched to audio by nearest timestamp. Requires libav runtime libraries. Mutually exclusive with reference_image_file.",required:!1},{name:"reference_image_file",type:"path",description:"Masked RGB image identifying the target sound source, used as a constant visual prompt throughout the recording. Mask unwanted regions before supplying the image.",required:!1},{name:"anchors",type:"string",description:'Optional JSON array of time spans: [["+", start_seconds, end_seconds], ["-", start_seconds, end_seconds]]. Positive spans identify the target; negative spans identify sounds to exclude.',required:!1},{name:"seed",type:"int",description:"Random seed; -1 selects a random seed.",min:-1,max:4294967295,default:42,required:!1},{name:"num_inference_steps",type:"int",description:"Midpoint integration steps; each step evaluates the denoiser twice.",min:1,default:16,required:!1}],session:[{name:"memory_bounded",type:"bool",description:"Experimental bounded-workspace execution with full recording context. Provisional option name.",default:!1,required:!1}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/SAM-Audio-GGUF",revision:"main",gated:!1}},packages:[{id:"sam_audio_small_f32",display_name:"SAM Audio Small F32 GGUF",default:!0,format:"gguf",precision:"f32",target_directory:"SAM-Audio-GGUF",files:["sam-audio-small-f32.gguf"]},{id:"sam_audio_small_bf16",display_name:"SAM Audio Small BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"SAM-Audio-GGUF",files:["sam-audio-small-bf16.gguf"]},{id:"sam_audio_small_q8_0",display_name:"SAM Audio Small Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"SAM-Audio-GGUF",files:["sam-audio-small-q8_0.gguf"]},{id:"sam_audio_base_f32",display_name:"SAM Audio Base F32 GGUF",format:"gguf",precision:"f32",target_directory:"SAM-Audio-GGUF",files:["sam-audio-base-f32.gguf"]},{id:"sam_audio_base_bf16",display_name:"SAM Audio Base BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"SAM-Audio-GGUF",files:["sam-audio-base-bf16.gguf"]},{id:"sam_audio_base_q8_0",display_name:"SAM Audio Base Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"SAM-Audio-GGUF",files:["sam-audio-base-q8_0.gguf"]},{id:"sam_audio_large_f32",display_name:"SAM Audio Large F32 GGUF",format:"gguf",precision:"f32",target_directory:"SAM-Audio-GGUF",files:["sam-audio-large-f32.gguf"]},{id:"sam_audio_large_bf16",display_name:"SAM Audio Large BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"SAM-Audio-GGUF",files:["sam-audio-large-bf16.gguf"]},{id:"sam_audio_large_q8_0",display_name:"SAM Audio Large Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"SAM-Audio-GGUF",files:["sam-audio-large-q8_0.gguf"]}],dependencies:[],ui:{recommended_package:"sam_audio_small_f32",tags:["GGUF"],docs:["docs/models/sam_audio.md","docs/audio_tools.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",t5_config:"model:t5_config.json",tokenizer:"model:tokenizer/spiece.model"},tensors:{weights:{source:"weights:"}}}]},G$={schema_version:1,family:"samsone",display_name:"SAMSONE",description:"Compact audio-language models for audio captioning, question answering, and sound, music, and speech understanding.",category:"asr",status:"supported",tasks:["asr"],modes:["offline"],languages:["en"],capabilities:{},runtime:{tags:["gguf"]},options:{request:[{name:"instruct",type:"string",default:"describe the audio",required:!1,description:"Question or instruction about the input audio."},{name:"max_tokens",type:"int",min:1,default:100,required:!1,description:"Maximum response tokens. Must be positive; audio/prompt tokens plus this budget must fit checkpoint max_position_embeddings."}],session:[],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"samsone_99m_bf16",display_name:"SAMSONE 99M GGUF BF16",default:!0,format:"gguf",precision:"bf16",target_directory:"Samsone-GGUF",files:["Samsone-GGUF/samsone-99m-bf16.gguf"],strip_prefix:"Samsone-GGUF"},{id:"samsone_99m_q8_0",display_name:"SAMSONE 99M GGUF Q8_0",format:"gguf",precision:"q8_0",target_directory:"Samsone-GGUF",files:["Samsone-GGUF/samsone-99m-q8_0.gguf"],strip_prefix:"Samsone-GGUF"},{id:"samsone_134m_bf16",display_name:"SAMSONE 134M GGUF BF16",format:"gguf",precision:"bf16",target_directory:"Samsone-GGUF",files:["Samsone-GGUF/samsone-134m-bf16.gguf"],strip_prefix:"Samsone-GGUF"},{id:"samsone_134m_q8_0",display_name:"SAMSONE 134M GGUF Q8_0",format:"gguf",precision:"q8_0",target_directory:"Samsone-GGUF",files:["Samsone-GGUF/samsone-134m-q8_0.gguf"],strip_prefix:"Samsone-GGUF"},{id:"samsone_356m_bf16",display_name:"SAMSONE 356M GGUF BF16",format:"gguf",precision:"bf16",target_directory:"Samsone-GGUF",files:["Samsone-GGUF/samsone-356m-bf16.gguf"],strip_prefix:"Samsone-GGUF"},{id:"samsone_356m_q8_0",display_name:"SAMSONE 356M GGUF Q8_0",format:"gguf",precision:"q8_0",target_directory:"Samsone-GGUF",files:["Samsone-GGUF/samsone-356m-q8_0.gguf"],strip_prefix:"Samsone-GGUF"}],dependencies:[],ui:{tags:["GGUF"],docs:["docs/models/samsone.md"],recommended_package:"samsone_99m_bf16"},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json",token_map:"model:token_map.json"},tensors:{weights:{source:"weights:",prefix:"weights"}}}]},F$={schema_version:1,family:"sanotts",display_name:"sanoTTS Nano",description:"Very small multilingual text-to-speech across fourteen languages. Two graphs: the nano lineage (duration student, contextual acoustic student to mel-100, noise-fed ConvNeXt-1D decoder with an iSTFT head; voices heart 2.27M and heart-nano 294k, English, 24 kHz) and the deterministic piperlite lineage (duration student, acoustic student to a 192-channel latent, optionally through a calibration adapter, then a 3-stage ConvTranspose1d decoder with dilated residual banks; voices amy, hfc and kristin for English, vi, id, cs, de, es, fr, it, pt, ro, ru, tr, ne and hi at 1.1-1.8M parameters, 22.05 kHz). Uses an external eSpeak-ng phonemizer.",category:"tts",status:"community",tasks:["tts"],modes:["offline"],languages:["en","vi","id","cs","de","es","fr","it","pt","ro","ru","tr","ne","hi"],runtime:{tags:["gguf"]},capabilities:{tts:["long_form"]},options:{request:[{name:"speed",type:"float",description:"Speech speed multiplier; larger is faster. Its reciprocal scales the voice's tuned length scale before the per-token clamp.",required:!1,min:.5,max:2,default:1},{name:"seed",type:"int",description:"Decoder noise seed. The decoder is noise-fed, so a given seed picks one of many valid renderings; 0 derives it from the text as sha256(text)[:8], which is what the reference implementations do. Piperlite voices are deterministic and ignore the seed.",required:!1,min:0,default:0},{name:"text_chunk_mode",type:"enum",description:"Long-form text chunking mode.",values:["word_budget"],required:!1,default:"word_budget"},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per long-form text chunk; default 280.",required:!1,min:1,default:280}],session:[{name:"espeak_library_path",type:"path",description:"Optional explicit path to the eSpeak-ng shared library.",required:!1},{name:"espeak_data_path",type:"path",description:"Optional explicit path to the directory containing espeak-ng-data.",required:!1},{name:"exec_plan",type:"string",description:"JSON object of component execution plans. Component: decoder. Each plan accepts impl, backend, artifacts, and params. impl is default/ggml/neon; no artifacts or params are used. Default retains automatic NEON selection on supported Nano-lineage AArch64 CPU sessions. GGML supports the session backend; explicit NEON requires a Nano-lineage model, AArch64 NEON, and a CPU session.",required:!1,default:"{}"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"ampixa/sanoTTS",revision:"main",gated:!1}},packages:[{id:"sanotts_heart_nano_orig",display_name:"sanoTTS heart-nano 294k FP32 GGUF",default:!0,format:"gguf",precision:"orig",target_directory:"sanoTTS-heart-nano-GGUF",files:["gguf/heart-nano-f32.gguf","gguf/config.json"],strip_prefix:"gguf"},{id:"sanotts_heart_orig",display_name:"sanoTTS heart 2.27M FP32 GGUF",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-heart-GGUF",files:["gguf/heart/heart-f32.gguf","gguf/heart/config.json"],strip_prefix:"gguf/heart"},{id:"sanotts_amy_orig",display_name:"sanoTTS amy 1.46M FP32 GGUF (English, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-amy-GGUF",files:["gguf/amy/amy-f32.gguf","gguf/amy/config.json"],strip_prefix:"gguf/amy"},{id:"sanotts_hfc_orig",display_name:"sanoTTS hfc 1.83M FP32 GGUF (English, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-hfc-GGUF",files:["gguf/hfc/hfc-f32.gguf","gguf/hfc/config.json"],strip_prefix:"gguf/hfc"},{id:"sanotts_kristin_orig",display_name:"sanoTTS kristin 1.40M FP32 GGUF (English, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-kristin-GGUF",files:["gguf/kristin/kristin-f32.gguf","gguf/kristin/config.json"],strip_prefix:"gguf/kristin"},{id:"sanotts_vi_orig",display_name:"sanoTTS vi 1.57M FP32 GGUF (Vietnamese, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-vi-GGUF",files:["gguf/vi/vi-f32.gguf","gguf/vi/config.json"],strip_prefix:"gguf/vi"},{id:"sanotts_id_orig",display_name:"sanoTTS id 1.56M FP32 GGUF (Indonesian, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-id-GGUF",files:["gguf/id/id-f32.gguf","gguf/id/config.json"],strip_prefix:"gguf/id"},{id:"sanotts_cs_orig",display_name:"sanoTTS cs 1.57M FP32 GGUF (Czech, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-cs-GGUF",files:["gguf/cs/cs-f32.gguf","gguf/cs/config.json"],strip_prefix:"gguf/cs"},{id:"sanotts_de_orig",display_name:"sanoTTS de 1.57M FP32 GGUF (German, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-de-GGUF",files:["gguf/de/de-f32.gguf","gguf/de/config.json"],strip_prefix:"gguf/de"},{id:"sanotts_es_orig",display_name:"sanoTTS es 1.56M FP32 GGUF (Spanish, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-es-GGUF",files:["gguf/es/es-f32.gguf","gguf/es/config.json"],strip_prefix:"gguf/es"},{id:"sanotts_fr_orig",display_name:"sanoTTS fr 1.57M FP32 GGUF (French, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-fr-GGUF",files:["gguf/fr/fr-f32.gguf","gguf/fr/config.json"],strip_prefix:"gguf/fr"},{id:"sanotts_it_orig",display_name:"sanoTTS it 1.57M FP32 GGUF (Italian, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-it-GGUF",files:["gguf/it/it-f32.gguf","gguf/it/config.json"],strip_prefix:"gguf/it"},{id:"sanotts_pt_orig",display_name:"sanoTTS pt 1.57M FP32 GGUF (Portuguese (Brazil), piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-pt-GGUF",files:["gguf/pt/pt-f32.gguf","gguf/pt/config.json"],strip_prefix:"gguf/pt"},{id:"sanotts_ro_orig",display_name:"sanoTTS ro 1.57M FP32 GGUF (Romanian, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-ro-GGUF",files:["gguf/ro/ro-f32.gguf","gguf/ro/config.json"],strip_prefix:"gguf/ro"},{id:"sanotts_ru_orig",display_name:"sanoTTS ru 1.57M FP32 GGUF (Russian, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-ru-GGUF",files:["gguf/ru/ru-f32.gguf","gguf/ru/config.json"],strip_prefix:"gguf/ru"},{id:"sanotts_tr_orig",display_name:"sanoTTS tr 1.56M FP32 GGUF (Turkish, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-tr-GGUF",files:["gguf/tr/tr-f32.gguf","gguf/tr/config.json"],strip_prefix:"gguf/tr"},{id:"sanotts_ne_orig",display_name:"sanoTTS ne 1.47M FP32 GGUF (Nepali, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-ne-GGUF",files:["gguf/ne/ne-f32.gguf","gguf/ne/config.json"],strip_prefix:"gguf/ne"},{id:"sanotts_hi_orig",display_name:"sanoTTS hi 1.50M FP32 GGUF (Hindi, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-hi-GGUF",files:["gguf/hi/hi-f32.gguf","gguf/hi/config.json"],strip_prefix:"gguf/hi"}],dependencies:[],ui:{recommended_package:"sanotts_heart_nano_orig",tags:["TTS","GGUF"],docs:["docs/tts.md","docs/models/sanotts.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:"weights:"}}]},M$={family:"seed_vc",schema_version:1,display_name:"Seed-VC",description:"Zero-shot voice conversion and singing voice conversion model for transferring timbre and style from reference audio, with low-latency realtime conversion and optional lightweight fine-tuning.",category:"voice_conversion",status:"supported",tasks:["vc","svc"],modes:["offline"],languages:["language_agnostic"],capabilities:{vc:["speaker_reference"],svc:["speaker_reference","singing"]},dependencies:[],runtime:{tags:["gguf"]},ui:{recommended_package:"seed_vc_mlx_q8_0",tags:["VC","GGUF"],docs:["docs/models/seed_vc.md","docs/audio_tools.md","docs/gguf.md"]},options:{request:[{name:"route",type:"enum",description:"Select the Seed-VC conversion route. Defaults to v2_vc for VC and v1_svc for SVC.",values:["v2_vc","v1_svc","v1_whisper_bigvgan_vc","v1_xlsr_hift_vc"],required:!1},{name:"duration_scale",type:"float",description:"V1 output duration multiplier; must be finite and positive, default 1.0. V2 validates this option but does not apply it.",required:!1,min:0,default:1},{name:"num_inference_steps",type:"int",description:"Diffusion steps; default 30.",required:!1,min:1,default:30},{name:"inference_guidance_scale",type:"float",description:"V1 classifier-free guidance scale; default 0.7. Any finite value is accepted; V1 disables CFG for nonpositive values.",required:!1,default:.7},{name:"intelligibility_guidance_scale",type:"float",description:"V2 classifier-free guidance scale for source-content intelligibility; default 0.7. Any finite value is accepted and used in V2 guidance arithmetic.",required:!1,default:.7},{name:"similarity_guidance_scale",type:"float",description:"V2 classifier-free guidance scale for target-speaker similarity; default 0.7. Any finite value is accepted and used in V2 guidance arithmetic.",required:!1,default:.7},{name:"voice_anonymization",type:"bool",description:"Use randomized average-voice conditioning instead of target-speaker conditioning for V2 anonymization; default false.",required:!1,default:!1},{name:"seed",type:"int",description:"Seed for V1/V2 diffusion noise and HiFT stochastic source excitation; omitted requests choose a random seed.",required:!1,min:0},{name:"noise_file",type:"path",description:"Optional raw f32 noise file for deterministic V1/V2 diffusion noise and XLSR/HiFT source excitation.",required:!1},{name:"f0_condition",type:"bool",description:"Enable V1 F0 conditioning. Defaults to true for v1_svc and false for the V1 voice-conversion routes.",required:!1},{name:"auto_f0_adjust",type:"bool",description:"Automatically adjust V1 source pitch toward the target pitch level; default false.",required:!1,default:!1},{name:"semitone_shift",type:"int",description:"V1 pitch shift in semitones for singing voice conversion; default 0.",required:!1,default:0}],session:[{name:"weight_type",type:"enum",description:"Shared Seed-VC component weight storage type; default native, except RMVPE uses f32 unless overridden.",preset:"weight_type_full",required:!1,default:"native"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"seed_vc_mlx_q8_0",display_name:"SeedVC-MLX Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"SeedVC-MLX-GGUF",files:["SeedVC-MLX-GGUF/seed-vc-mlx-q8_0.gguf"],strip_prefix:"SeedVC-MLX-GGUF"},{id:"seed_vc_mlx_f16",display_name:"SeedVC-MLX F16 GGUF",format:"gguf",precision:"f16",target_directory:"SeedVC-MLX-GGUF",files:["SeedVC-MLX-GGUF/seed-vc-mlx-f16.gguf"],strip_prefix:"SeedVC-MLX-GGUF"},{id:"seed_vc_mlx_orig",display_name:"SeedVC-MLX Original-Dtype GGUF",format:"gguf",precision:"orig",target_directory:"SeedVC-MLX-GGUF",files:["SeedVC-MLX-GGUF/seed-vc-mlx-orig.gguf"],strip_prefix:"SeedVC-MLX-GGUF"},{id:"seed_vc_mlx_safetensors",display_name:"SeedVC-MLX Safetensors",format:"safetensors",precision:"native",target_directory:"SeedVC-MLX",files:["seed_vc_manifest.json","v2/ar.safetensors","v2/cfm.safetensors","v2/vc_wrapper.json","astral/bsq32.json","astral/bsq2048.json","v1/svc.json","v1/whisper_bigvgan.json","v1/xlsr_hift.json","hift/config.json","bigvgan/v2_22khz_80band_256x/config.json","bigvgan/v2_44khz_128band_512x/config.json","whisper-small/config.json","hubert-large-ll60k/config.json","wav2vec2-xls-r-300m/config.json","v1/svc.safetensors","v1/whisper_bigvgan.safetensors","v1/xlsr_hift.safetensors","astral/bsq32.safetensors","astral/bsq2048.safetensors","campplus/model.safetensors","rmvpe/model.safetensors","hift/model.safetensors","bigvgan/v2_22khz_80band_256x/model.safetensors","bigvgan/v2_44khz_128band_512x/model.safetensors","whisper-small/model.safetensors","hubert-large-ll60k/model.safetensors","wav2vec2-xls-r-300m/model.safetensors"],download:{kind:"huggingface_snapshot",repo:"mlx-community/SeedVC-MLX"}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{manifest:"model:seed_vc_manifest.json",v2_wrapper_config:"model:v2/vc_wrapper.json",astral_bsq32_config:"model:astral/bsq32.json",astral_bsq2048_config:"model:astral/bsq2048.json",v1_svc_config:"model:v1/svc.json",v1_whisper_bigvgan_config:"model:v1/whisper_bigvgan.json",v1_xlsr_hift_config:"model:v1/xlsr_hift.json",hift_config:"model:hift/config.json",bigvgan_22k_config:"model:bigvgan/v2_22khz_80band_256x/config.json",bigvgan_44k_config:"model:bigvgan/v2_44khz_128band_512x/config.json",whisper_small_config:"model:whisper-small/config.json",hubert_large_config:"model:hubert-large-ll60k/config.json",wav2vec2_xlsr_config:"model:wav2vec2-xls-r-300m/config.json"},tensors:{v2_ar_weights:{source:"weights:",prefix:"v2_ar_weights"},v2_cfm_weights:{source:"weights:",prefix:"v2_cfm_weights"},v1_svc_weights:{source:"weights:",prefix:"v1_svc_weights"},v1_whisper_bigvgan_weights:{source:"weights:",prefix:"v1_whisper_bigvgan_weights"},v1_xlsr_hift_weights:{source:"weights:",prefix:"v1_xlsr_hift_weights"},astral_bsq32_weights:{source:"weights:",prefix:"astral_bsq32_weights"},astral_bsq2048_weights:{source:"weights:",prefix:"astral_bsq2048_weights"},campplus_weights:{source:"weights:",prefix:"campplus_weights"},rmvpe_weights:{source:"weights:",prefix:"rmvpe_weights"},hift_weights:{source:"weights:",prefix:"hift_weights"},bigvgan_22k_weights:{source:"weights:",prefix:"bigvgan_22k_weights"},bigvgan_44k_weights:{source:"weights:",prefix:"bigvgan_44k_weights"},whisper_small_weights:{source:"weights:",prefix:"whisper_small_weights"},hubert_large_weights:{source:"weights:",prefix:"hubert_large_weights"},wav2vec2_xlsr_weights:{source:"weights:",prefix:"wav2vec2_xlsr_weights"}}},{format:"safetensors",roots:{model:"."},files:{manifest:"model:seed_vc_manifest.json",v2_wrapper_config:"model:v2/vc_wrapper.json",astral_bsq32_config:"model:astral/bsq32.json",astral_bsq2048_config:"model:astral/bsq2048.json",v1_svc_config:"model:v1/svc.json",v1_whisper_bigvgan_config:"model:v1/whisper_bigvgan.json",v1_xlsr_hift_config:"model:v1/xlsr_hift.json",hift_config:"model:hift/config.json",bigvgan_22k_config:"model:bigvgan/v2_22khz_80band_256x/config.json",bigvgan_44k_config:"model:bigvgan/v2_44khz_128band_512x/config.json",whisper_small_config:"model:whisper-small/config.json",hubert_large_config:"model:hubert-large-ll60k/config.json",wav2vec2_xlsr_config:"model:wav2vec2-xls-r-300m/config.json"},tensors:{v2_ar_weights:"model:v2/ar.safetensors",v2_cfm_weights:"model:v2/cfm.safetensors",v1_svc_weights:"model:v1/svc.safetensors",v1_whisper_bigvgan_weights:"model:v1/whisper_bigvgan.safetensors",v1_xlsr_hift_weights:"model:v1/xlsr_hift.safetensors",astral_bsq32_weights:"model:astral/bsq32.safetensors",astral_bsq2048_weights:"model:astral/bsq2048.safetensors",campplus_weights:"model:campplus/model.safetensors",rmvpe_weights:"model:rmvpe/model.safetensors",hift_weights:"model:hift/model.safetensors",bigvgan_22k_weights:"model:bigvgan/v2_22khz_80band_256x/model.safetensors",bigvgan_44k_weights:"model:bigvgan/v2_44khz_128band_512x/model.safetensors",whisper_small_weights:"model:whisper-small/model.safetensors",hubert_large_weights:"model:hubert-large-ll60k/model.safetensors",wav2vec2_xlsr_weights:"model:wav2vec2-xls-r-300m/model.safetensors"}}]},z$={schema_version:1,family:"sense_asr",display_name:"SenseVoice-Small",description:"SenseVoice-Small multilingual speech recognition with rich event/emotion/ITN tags via a SAN-M encoder and CTC head, ported to audio.cpp.",category:"asr",status:"community",tasks:["asr"],modes:["offline","streaming"],languages:["auto","zh","en","yue","ja","ko","pt","ru","es","it","fr","de","nl","pl","tr","ar","hi","vi","th","id","ms","fa","nospeech"],capabilities:{asr:["vad_chunking","partial_results"]},options:{request:[{name:"language",type:"string",description:"Recognition language, or auto to let the model infer it from the audio.",required:!1,default:"auto"},{name:"enable_itn",type:"bool",description:"Enable inverse text normalization (adds the withitn query token).",required:!1,default:!0},{name:"keep_tags",type:"bool",description:"Keep <|event|>/<|emotion|>/<|language|> tags inline in the output text.",required:!1,default:!1},{name:"audio_chunk_mode",type:"enum",description:"Offline chunk mode: auto, fixed, vad, or none. Streaming always uses fixed-duration windows.",values:["auto","fixed","vad","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Positive duration rounding to at least one sample; sets fixed windows and the VAD maximum chunk length.",required:!1,default:30}],session:[{name:"weight_type",type:"enum",description:"Shared model weight storage type.",preset:"weight_type_full",required:!1,default:"native"},{name:"encoder_graph_arena_mb",type:"int",description:"Encoder graph arena size in MB.",required:!1,min:1,default:1024},{name:"vad_model_path",type:"string",description:"Path to the VAD model (any built-in VAD family; default Silero VAD) used by automatic audio chunking.",required:!1,default:"assets/framework/models/silero_vad"}],load:[]},runtime:{tags:["gguf","server","stream","cuda","metal","cpu"]},packages:[{id:"sensevoice_small_q8",display_name:"SenseVoice-Small Q8 GGUF",description:"audio.cpp GGUF built from the SenseVoice-Small checkpoint via the SenseVoice llama.cpp export script.",default:!0,format:"gguf",precision:"q8_0",target_directory:"SenseVoice-Small-GGUF",files:["sensevoice-small-q8-audiocpp-v1.gguf"],download:{kind:"huggingface_snapshot",repo:"FunAudioLLM/SenseVoiceSmall-GGUF-audiocpp",revision:"5c3fcfe748a8714216bc135476d5863084fddb72",gated:!1}}],dependencies:[],ui:{recommended_package:"sensevoice_small_q8",tags:["ASR","GGUF","Stream"],docs:["docs/models/sense_asr.md"],summary:"SenseVoice-Small transcription with event/emotion tags and ITN."},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{},optional_files:{},tensors:{weights:"weights:"}}]},E$={schema_version:1,family:"sheetsage2",display_name:"SheetSage2",description:"SheetSage2 audio-to-symbolic transcription. This native path consumes an input recording from a self-contained GGUF and emits an ABC score artifact.",category:"audio_tools",status:"supported",tasks:["midi"],modes:["offline"],languages:["music"],runtime:{tags:["gguf","cuda"]},capabilities:{midi:["midi_artifact"]},options:{request:[{name:"max_tokens",type:"int",description:"Maximum total decoder sequence length; default follows the embedded model context. Omitted uses checkpoint max_output_seq_len.",required:!1,min:1}],session:[{name:"attention_tile_rows",type:"int",description:"Query rows per encoder attention tile on any backend; 0 disables tiling. Use 1024 to bound each score tensor below 512 MiB for the 300-second window.",required:!1,min:0,default:0},{name:"weight_type",type:"enum",description:"Encoder and decoder weight storage override.",required:!1,default:"native",values:["native","f32","f16","bf16","q4_0","q4_k"]},{name:"weight_context_mb",type:"int",description:"Weight context arena size in MiB; default 1024.",required:!1,min:1,default:1024},{name:"decoder_graph_arena_mb",type:"int",description:"Encoder/decoder graph arena size in MiB; default 1536.",required:!1,min:1,default:1536}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/SheetSage2-GGUF",revision:"main",gated:!1}},packages:[{id:"sheetsage2_orig",display_name:"SheetSage2 Original-Dtype GGUF",default:!0,format:"gguf",precision:"orig",target_directory:"SheetSage2-GGUF",files:["sheetsage2-orig.gguf"]}],dependencies:[],ui:{recommended_package:"sheetsage2_orig",tags:["Music","MIDI","GGUF"],docs:[]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:"weights:"}}]},U$={schema_version:1,family:"sherpa_kws",display_name:"sherpa-onnx Zipformer KWS",description:"Streaming Zipformer transducer keyword spotting from sherpa-onnx model exports.",category:"audio_tools",status:"experimental",tasks:["wake_word"],modes:["offline","streaming"],languages:["model_dependent"],capabilities:{wake_word:["speech_segments","stream_events"]},runtime:{tags:["gguf","stream"]},options:{request:[{name:"keywords",type:"string",description:"Newline- or slash-separated tokenized keyword rows; each row may include :score, #threshold, and @label fields.",required:!1},{name:"max_active_paths",type:"int",description:"Maximum keyword decoder hypotheses.",required:!1,default:4,min:1,max:64},{name:"keywords_score",type:"float",description:"Default context score added for each matched keyword token. Negative values are accepted but token scores are clamped to at least zero.",required:!1,default:1},{name:"keywords_threshold",type:"float",description:"Default mean acoustic probability required to trigger a keyword.",required:!1,default:.25,min:0,max:1},{name:"num_trailing_blanks",type:"int",description:"Emit after strictly more than this many trailing blank frames; 1 requires 2 blanks, 0 requires 1.",required:!1,default:1,min:0}],session:[],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"sherpa_kws_zipformer_zh_en_3m_f32",display_name:"Sherpa KWS Zipformer Chinese-English 3M GGUF F32",default:!0,format:"gguf",precision:"f32",target_directory:"Sherpa-KWS-GGUF",files:["Sherpa-KWS-GGUF/sherpa-kws-zipformer-zh-en-3m-f32.gguf"],strip_prefix:"Sherpa-KWS-GGUF"}],dependencies:[],ui:{tags:["Wake Word","GGUF","Stream"],docs:["docs/models/sherpa_kws.md"],recommended_package:"sherpa_kws_zipformer_zh_en_3m_f32"},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokens:"model:tokens.txt",keywords:"model:keywords.txt"},tensors:{weights:{source:"weights:",prefix:"weights"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokens:"model:tokens.txt",keywords:"model:keywords.txt"},tensors:{weights:"model:model.safetensors"}}]},R$={schema_version:1,family:"sidon",display_name:"Sidon v0.1",description:"Single-speaker speech restoration with 48 kHz output.",category:"audio_tools",status:"supported",tasks:["s2s"],modes:["offline"],languages:["language_agnostic"],capabilities:{s2s:["audio_enhancement"]},runtime:{tags:["gguf"]},options:{request:[],session:[],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"sidon_f32",display_name:"Sidon v0.1 F32 GGUF",default:!0,format:"gguf",precision:"f32",target_directory:"Sidon-GGUF",files:["Sidon-GGUF/sidon-v0.1-f32.gguf"],strip_prefix:"Sidon-GGUF"}],dependencies:[],ui:{recommended_package:"sidon_f32",tags:["GGUF"],docs:["docs/models/sidon.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{},tensors:{weights:{source:"weights:",prefix:"weights"}}}]},B$={schema_version:1,family:"smart_turn",display_name:"Smart Turn v3.2",description:"Audio-native conversational turn-completion detection using a Whisper-Tiny encoder and attention-pooling classifier.",category:"audio_tools",status:"supported",tasks:["turn"],modes:["offline"],languages:["auto"],capabilities:{turn:["turn_decision"]},runtime:{tags:["gguf"]},options:{request:[{name:"threshold",type:"float",description:"Completion probability threshold; a decision is complete only when probability exceeds this value.",required:!1,default:.5,min:0,max:1}],session:[],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"smart_turn_v3_2_f32",display_name:"Smart Turn v3.2 F32 GGUF",default:!0,format:"gguf",precision:"f32",target_directory:"Smart-Turn-v3-GGUF",files:["Smart-Turn-v3-GGUF/smart-turn-v3.2-f32.gguf"],strip_prefix:"Smart-Turn-v3-GGUF"}],dependencies:[],ui:{tags:["GGUF"],docs:["docs/models/smart_turn.md"],recommended_package:"smart_turn_v3_2_f32"},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},tensors:{weights:{source:"weights:",prefix:"weights"}}}]},P$={schema_version:1,family:"soprano_tts",display_name:"Soprano",description:"Soprano is an ultra-lightweight (~80M) English-only text-to-speech model. Syntax uses a 17-layer Qwen3-style causal LM (hidden 512, vocab 8192) that autoregressively emits per-frame 512-dimensional features; a non-iterative Vocos-style decoder (ConvNeXt backbone + single ISTFT head, n_fft 2048 / hop 512) turns those features into 32 kHz audio. No diffusion refinement is performed in the decoder.",category:"tts",status:"community",tasks:["tts"],modes:["offline","streaming"],languages:["en"],runtime:{tags:["gguf","stream"]},capabilities:{tts:["long_form"]},options:{request:[{name:"max_tokens",type:"int",description:"Maximum generated audio frames for the autoregressive LM; default 512.",required:!1,min:1,default:512},{name:"temperature",type:"float",description:"Autoregressive sampling temperature; must be > 0, default 0.3.",required:!1,min:0,default:.3},{name:"top_p",type:"float",description:"Nucleus sampling probability; default 0.95. Values >=1 disable nucleus filtering.",required:!1,min:0,default:.95},{name:"repetition_penalty",type:"float",description:"Repetition penalty applied to the LM head; default 1.2. Must be positive; values below 1 are accepted.",required:!1,default:1.2},{name:"eos_bias",type:"float",description:"Additive bias on the EOS token logit during generation. Positive values make the model stop sooner when speech ends (mitigating runaway generations that hit max_tokens); negative values encourage longer utterances. Default 0 disables the adjustment.",required:!1,default:0},{name:"seed",type:"int",description:"Autoregressive sampling seed; omitted requests choose a random seed.",required:!1,min:0}],session:[{name:"text_chunk_size",type:"int",description:"Maximum codepoints per sentence chunk before the model generates and decodes separately. Smaller values keep prompts short (more reliable EOS) but increase overhead. Default 200.",required:!1,min:1,default:200},{name:"backbone_weight_type",type:"enum",preset:"weight_type_full",required:!1,default:"f32",description:"Storage type for the Qwen3 LM backbone weights."},{name:"decoder_weight_type",type:"enum",preset:"weight_type_conv",required:!1,default:"f32",description:"Storage type for the Vocos decoder weights."}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"WalkingCat/Soprano-1.1-80M-GGUF",revision:"main",gated:!1}},packages:[{id:"soprano_1_1_80m_q8_0",display_name:"Soprano-1.1-80M Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Soprano-1.1-80M-GGUF",files:["Soprano-1.1-80M-GGUF/soprano-1.1-80m-q8_0.gguf"],strip_prefix:"Soprano-1.1-80M-GGUF"},{id:"soprano_1_1_80m_bf16",display_name:"Soprano-1.1-80M BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"Soprano-1.1-80M-GGUF",files:["Soprano-1.1-80M-GGUF/soprano-1.1-80m-bf16.gguf"],strip_prefix:"Soprano-1.1-80M-GGUF"}],dependencies:[],ui:{recommended_package:"soprano_1_1_80m_q8_0",tags:["TTS","Stream"],docs:["docs/models/soprano_tts.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{backbone:"weights:",decoder:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{backbone:"model:combined.safetensors",decoder:"model:combined.safetensors"}}]},j$={schema_version:1,family:"sopro_tts",display_name:"Sopro V2 Turbo",description:"Community Sopro V2 Turbo (samuel-vitorino/sopro-v2-turbo): a 120M zero-shot voice-cloning TTS. SentencePiece text tokenizer, style-prefix conditioned autoregressive semantic LM over FSQ tokens, rectified-flow acoustic DiT and a Vocos ISTFT vocoder at 24 kHz.",category:"tts",status:"community",tasks:["tts","clone"],modes:["offline","streaming"],languages:["en","pt","fr","de"],runtime:{tags:["server"]},capabilities:{clone:["speaker_reference"]},options:{request:[{name:"language",type:"string",description:"Language tag (en, pt, fr, de); omitted inherits transcript language, then the session default.",required:!1},{name:"temperature",type:"float",description:"Semantic sampling temperature; nonpositive selects greedy decoding. Omitted uses checkpoint generation.temperature.",required:!1},{name:"top_p",type:"float",description:"Semantic nucleus cutoff; values outside [0,1] are disabled/clamped by the sampler. Omitted uses checkpoint generation.top_p.",required:!1},{name:"top_k",type:"int",description:"Semantic top-k; nonpositive disables filtering. Omitted uses checkpoint generation.top_k.",required:!1},{name:"num_inference_steps",type:"int",description:"Positive acoustic sampling steps; omitted uses checkpoint generation.steps.",required:!1,min:1},{name:"max_duration_sec",type:"float",description:"Positive maximum segment duration; must be >= min_duration_sec. Omitted uses checkpoint generation.max_seconds.",required:!1},{name:"min_duration_sec",type:"float",description:"Nonnegative minimum duration; must be <= max_duration_sec. Omitted uses checkpoint generation.min_seconds.",required:!1,min:0},{name:"reference_duration_sec",type:"float",description:"Positive reference window in seconds; omitted uses checkpoint generation.ref_seconds.",required:!1},{name:"text_chunk_size",type:"int",description:"Positive codepoint budget per segment; omitted uses checkpoint generation.max_segment_chars.",required:!1,min:1},{name:"seed",type:"int",description:"Non-negative seed for semantic sampling and the acoustic noise prior; omit for a random seed.",required:!1,min:0}],session:[{name:"language",type:"string",description:"Default language tag for requests that do not set one.",required:!1,default:""},{name:"voice_cache_slots",type:"int",description:"Reference voices kept prepared between requests, so a repeated voice skips the encoders and, when streaming, the prompt solve. Output is identical with or without it. A streamed 10 s voice holds about 60 MB. Default 0 (off).",required:!1,min:0,default:0},{name:"matmul_weight_type",type:"enum",preset:"weight_type_full",description:"Storage type for the matmul weights of every stage (semantic LM, acoustic DiT, encoders, vocoder head).",required:!1,default:"f32"},{name:"conv_weight_type",type:"enum",preset:"weight_type_conv",description:"Storage type for convolution weights (speaker/semantic encoders and the Vocos backbone).",required:!1,default:"f32"}],load:[]},packages:[{id:"sopro_v2_turbo_f16",display_name:"Sopro V2 Turbo F16 GGUF",description:"Single-file GGUF of all four stages with the config and tokenizer embedded: f16 weights, mel front ends kept in f32.",default:!0,format:"gguf",precision:"f16",target_directory:"sopro-v2-turbo-GGUF",files:["sopro-v2-turbo-f16.gguf"],download:{kind:"huggingface_snapshot",repo:"samuel-vitorino/sopro-v2-turbo",revision:"main",gated:!1}},{id:"sopro_v2_turbo_safetensors",display_name:"Sopro V2 Turbo (upstream safetensors)",description:"Upstream checkpoint from samuel-vitorino/sopro-v2-turbo: config.json, tokenizer.model and the four safetensors stages. Runs directly, no conversion needed.",format:"safetensors",precision:"orig",target_directory:"sopro-v2-turbo",files:["config.json","tokenizer.model","model.safetensors","semantic_encoder.safetensors","speaker_encoder.safetensors","vocoder.safetensors"],download:{kind:"huggingface_snapshot",repo:"samuel-vitorino/sopro-v2-turbo",revision:"main",gated:!1}}],dependencies:[],ui:{recommended_package:"sopro_v2_turbo_safetensors",tags:["TTS","Clone"],docs:["docs/models/sopro_tts.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer:"model:tokenizer.model"},tensors:{model:{source:"weights:",prefix:"model"},semantic_encoder:{source:"weights:",prefix:"semantic_encoder"},speaker_encoder:{source:"weights:",prefix:"speaker_encoder"},vocoder:{source:"weights:",prefix:"vocoder"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer:"model:tokenizer.model"},tensors:{model:{source:"model:model.safetensors"},semantic_encoder:{source:"model:semantic_encoder.safetensors"},speaker_encoder:{source:"model:speaker_encoder.safetensors"},vocoder:{source:"model:vocoder.safetensors"}}}]},N$={schema_version:1,family:"sortformer_diar",display_name:"Sortformer Diarization",description:"NVIDIA Transformer-based end-to-end speaker diarization model trained primarily on English speech, predicting speaker labels directly from audio and resolving speaker ordering by arrival time for up to four speakers.",category:"speech_analysis",status:"supported",tasks:["diar"],modes:["offline"],languages:["en"],capabilities:{diar:["speaker_turns"]},dependencies:[],options:{request:[{name:"speaker_threshold",type:"float",description:"Speaker activity probability threshold used when decoding speaker turns; default 0.5.",required:!1,min:0,max:1,default:.5},{name:"speaker_min_frames",type:"int",description:"Minimum decoded segment length in model output frames; default 0 disables short-segment filtering.",required:!1,min:0,default:0},{name:"speaker_pad_frames",type:"int",description:"Pad each decoded speaker segment by this many model output frames before filtering and merging; default 0.",required:!1,min:0,default:0}],session:[{name:"graph_arena_mb",type:"int",description:"Inference graph arena size in MiB; default 512.",required:!1,min:1,default:512},{name:"weight_context_mb",type:"int",description:"Weight context size in MiB; default 128.",required:!1,min:1,default:128},{name:"session_len_sec",type:"float",description:"Base offline graph context length in seconds; must be > 0, default 20.",required:!1,min:0,default:20},{name:"graph_capacity_mode",type:"enum",description:"Offline graph capacity policy; defaults to tiered on host-graph backends and fixed otherwise.",values:["fixed","tiered","grow","double"],required:!1},{name:"speaker_threshold",type:"float",description:"Default speaker activity probability threshold for decoded speaker turns; default 0.5.",required:!1,min:0,max:1,default:.5},{name:"speaker_min_frames",type:"int",description:"Default minimum decoded segment length in model output frames; default 0 disables short-segment filtering.",required:!1,min:0,default:0},{name:"speaker_pad_frames",type:"int",description:"Default decoded segment padding in model output frames; default 0.",required:!1,min:0,default:0},{name:"weight_type",type:"enum",description:"All weight storage type; default f32.",preset:"weight_type_full",required:!1,default:"f32"},{name:"matmul_weight_type",type:"enum",description:"Matmul weight storage type; defaults to weight_type when set, otherwise f32.",preset:"weight_type_full",required:!1},{name:"conv_weight_type",type:"enum",description:"Convolution weight storage type; defaults to weight_type when set, otherwise f32.",preset:"weight_type_full",required:!1}],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"sortformer_diar_4spk_v1_q8_0",tags:["Diar","GGUF"],docs:["docs/audio_tools.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"sortformer_diar_4spk_v1_q8_0",display_name:"Sortformer Diar 4spk v1 Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Sortformer-Diar-4spk-v1-GGUF",files:["Sortformer-Diar-4spk-v1-GGUF/sortformer-diar-4spk-v1-q8_0.gguf"],strip_prefix:"Sortformer-Diar-4spk-v1-GGUF"},{id:"sortformer_diar_4spk_v1_f16",display_name:"Sortformer Diar 4spk v1 F16 GGUF",format:"gguf",precision:"f16",target_directory:"Sortformer-Diar-4spk-v1-GGUF",files:["Sortformer-Diar-4spk-v1-GGUF/sortformer-diar-4spk-v1-f16.gguf"],strip_prefix:"Sortformer-Diar-4spk-v1-GGUF"},{id:"sortformer_diar_4spk_v1_safetensors",display_name:"Sortformer Diar 4spk v1 Safetensors",format:"safetensors",precision:"native",target_directory:"diar_sortformer_4spk-v1",files:["config.json","model.safetensors","processor_config.json"],download:{kind:"huggingface_snapshot",repo:"nvidia/diar_sortformer_4spk-v1"}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",processor:"model:processor_config.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",processor:"model:processor_config.json"},tensors:{weights:"model:model.safetensors"}}]},O$={schema_version:1,family:"sortformer_diar_v2",display_name:"Sortformer Diarization v2.1",description:"NVIDIA Sortformer v2.1 streaming speaker diarization model with four speaker channels, AOSC state, stable arrival-order speaker identities, and bounded-context offline and streaming execution. The model has no published language whitelist: it was trained primarily on English speech, includes non-English meeting data such as AISHELL-4 and AliMeeting, and may degrade on other languages. The checkpoint is governed by the NVIDIA Open Model License and is local-use only until redistribution approval.",category:"speech_analysis",status:"community",tasks:["diar"],modes:["offline","streaming"],languages:["multilingual"],capabilities:{diar:["speaker_turns"]},dependencies:[],options:{request:[{name:"speaker_threshold",type:"float",description:"Speaker activity threshold used for turn decoding; default 0.5.",required:!1,min:0,max:1,default:.5},{name:"speaker_min_frames",type:"int",description:"Minimum decoded turn duration in 80 ms model frames; default 0.",required:!1,min:0,default:0},{name:"speaker_pad_frames",type:"int",description:"Padding applied to decoded turns in model frames; default 0.",required:!1,min:0,default:0}],session:[{name:"graph_arena_mb",type:"int",description:"Inference graph arena size in MiB; default 1024.",required:!1,min:1,default:1024},{name:"weight_context_mb",type:"int",description:"Weight context size in MiB; default 1024.",required:!1,min:1,default:1024},{name:"geometry",type:"enum",description:"Streaming geometry preset; default uses the checkpoint geometry.",values:["model","streaming","very_high_latency","high_latency","low_latency"],required:!1,default:"model"},{name:"weight_type",type:"enum",description:"Default storage type for all model weights; default f32. With bf16/q8_0, also set conv_weight_type explicitly to native/f32/f16; convolution storage cannot inherit bf16/q8_0.",preset:"weight_type_full",required:!1,default:"f32"},{name:"matmul_weight_type",type:"enum",description:"Matmul weight storage type; defaults to weight_type.",preset:"weight_type_full",required:!1},{name:"conv_weight_type",type:"enum",description:"Convolution weight storage type; defaults to weight_type.",preset:"weight_type_conv",required:!1}],load:[]},runtime:{tags:["gguf","stream"]},ui:{recommended_package:"sortformer_diar_v2_1_f32_gguf_local",tags:["Diar","Stream","GGUF"],docs:["docs/models/sortformer_diar_v2.md","docs/speech_analysis.md","docs/gguf.md"]},package_defaults:{download:{kind:"unsupported",reason:"NVIDIA Open Model License checkpoint: convert or stage locally until redistribution approval is complete."}},packages:[{id:"sortformer_diar_v2_1_f32_local",display_name:"Sortformer Diar v2.1 F32 local package",format:"safetensors",precision:"f32",target_directory:"Sortformer-Diar-v2.1-local",files:["Sortformer-Diar-v2.1-local/config.json","Sortformer-Diar-v2.1-local/processor_config.json","Sortformer-Diar-v2.1-local/model.safetensors"],strip_prefix:"Sortformer-Diar-v2.1-local"},{id:"sortformer_diar_v2_1_f32_gguf_local",display_name:"Sortformer Diar v2.1 F32 GGUF local package",default:!0,format:"gguf",precision:"f32",target_directory:"Sortformer-Diar-v2.1-local",files:["Sortformer-Diar-v2.1-local/sortformer-v2.1-f32.gguf"],strip_prefix:"Sortformer-Diar-v2.1-local"},{id:"sortformer_diar_v2_1_f16_mixed_gguf_local",display_name:"Sortformer Diar v2.1 mixed F16/F32 GGUF local package",format:"gguf",precision:"f16",target_directory:"Sortformer-Diar-v2.1-local",files:["Sortformer-Diar-v2.1-local/sortformer-v2.1-f16-mixed.gguf"],strip_prefix:"Sortformer-Diar-v2.1-local"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",processor:"model:processor_config.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",processor:"model:processor_config.json"},tensors:{weights:"model:model.safetensors"}}]},D$={schema_version:1,family:"soulx_flashhead",display_name:"SoulX-FlashHead",description:"Audio-driven streaming portrait video generation.",category:"audio_generation",status:"experimental",tasks:["sfx"],modes:["offline","streaming"],languages:["auto"],runtime:{tags:["gguf","stream"]},capabilities:{sfx:["prompt_generation"]},options:{request:[{name:"reference_image_file",type:"path",description:"Portrait image used to condition appearance.",required:!0},{name:"height",type:"int",description:"Output height, divisible by the VAE spatial stride.",min:32,default:512,required:!1},{name:"width",type:"int",description:"Output width, divisible by the VAE spatial stride.",min:32,default:512,required:!1},{name:"num_inference_steps",type:"int",description:"Distilled denoising steps.",min:1,default:4,required:!1},{name:"seed",type:"int",description:"Generation seed.",min:0,default:42,required:!1},{name:"color_correction_strength",type:"float",description:"Blend output color statistics toward the reference portrait.",min:0,max:1,default:1,required:!1},{name:"audio_guidance_scale",type:"float",description:"Audio CFG scale for non-distilled pretrained checkpoints; distilled Lite/Pro do not use CFG.",default:3,min:0,required:!1}],session:[{name:"exec_plan",type:"string",description:"JSON component execution plan. vae.impl is ggml (default) or cudnn. cudnn requires the Lite variant, CUDA backend, and cuDNN Conv3D build support. No artifacts or params are used.",required:!1,default:"{}"}],load:[]},packages:[{id:"soulx_flashhead_lite_q8_0",display_name:"SoulX-FlashHead Lite Q8",format:"gguf",precision:"q8_0",target_directory:"SoulX-FlashHead-GGUF",files:["SoulX-FlashHead-Lite-Q8_0.gguf"],default:!0},{id:"soulx_flashhead_lite_bf16",display_name:"SoulX-FlashHead Lite BF16",format:"gguf",precision:"bf16",target_directory:"SoulX-FlashHead-GGUF",files:["SoulX-FlashHead-Lite-BF16.gguf"],default:!1}],dependencies:[],ui:{recommended_package:"soulx_flashhead_lite_q8_0",docs:["docs/models/soulx_flashhead.md"],tags:["GGUF"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{dit:{source:"weights:",prefix:"dit"},vae:{source:"weights:",prefix:"vae"},audio:{source:"weights:",prefix:"audio"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json"},tensors:{dit:"model:dit.safetensors",vae:"model:vae.safetensors",audio:"model:audio.safetensors"}}],package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/SoulX-FlashHead-GGUF",revision:"main",gated:!1}}},I$={family:"stable_audio",display_name:"Stable Audio 3",description:"Stability AI generative audio model family for text-to-music, sound effects, audio-to-audio editing, inpainting, continuation, variable-length generation, and LoRA personalization.",category:"audio_generation",status:"supported",tasks:["music","sfx","edit"],modes:["offline"],languages:["en"],options:{request:[{name:"prompt",type:"string",description:"Fallback text prompt when text_input is absent; pipe separates batch prompts.",required:!1},{name:"negative_prompt",type:"string",description:"Negative prompt; pipe separates batch prompts.",required:!1},{name:"duration_sec",type:"float",description:"Positive duration in seconds; batch requests also accept a comma-separated string matching the prompt count, not a JSON array.",required:!1,default:120},{name:"batch_size",type:"int",description:"Prompt batch size.",required:!1,min:1,default:1},{name:"num_inference_steps",type:"int",description:"Diffusion steps.",required:!1,min:1,default:8},{name:"guidance_scale",type:"float",description:"Classifier-free guidance scale.",required:!1,default:1},{name:"apg_scale",type:"float",description:"Adaptive projected guidance scale.",required:!1,default:1},{name:"sampler_mode",type:"enum",description:"Stable Audio 3 diffusion sampler.",required:!1,values:["pingpong","euler"]},{name:"seed",type:"int",description:"Sampling seed; omitted chooses a random seed.",required:!1,min:0},{name:"duration_padding_sec",type:"float",description:"Generated padding before truncation.",required:!1,min:0,default:6},{name:"truncate_output_to_duration",type:"bool",description:"Trim decoded audio to requested duration.",required:!1,default:!0},{name:"chunked_decode",type:"bool",description:"Decode audio in chunks.",required:!1,default:!0},{name:"init_noise_level",type:"float",description:"Audio-conditioned generation strength in [0, 1].",required:!1,min:0,max:1,default:1},{name:"audio_input_kind",type:"enum",description:"How to use audio_input.",required:!1,values:["init_audio","inpaint_audio"],default:"init_audio"},{name:"inpaint_mask_start_sec",type:"string",description:"Comma-separated inpaint region starts in seconds.",required:!1},{name:"inpaint_mask_end_sec",type:"string",description:"Comma-separated inpaint region ends in seconds.",required:!1}],session:[{name:"max_batch",type:"int",description:"Maximum prompt batch size.",required:!1,min:1,default:1},{name:"weight_type",type:"enum",description:"Weight storage type; defaults to native.",required:!1,preset:"weight_type_full"},{name:"mem_saver",type:"bool",description:"Release staged runtime graphs after each request.",required:!1,default:!1}],load:[]},capabilities:{music:["lyrics"],sfx:["prompt_generation"],edit:["prompt_editing"]},runtime:{tags:["gguf"]},ui:{recommended_package:"stable_audio_3_medium_q8_0",tags:["Music","SFX","Edit","GGUF"],docs:["docs/models/stable_audio.md","docs/music_generation.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"stable_audio_3_medium_q8_0",display_name:"Stable Audio 3 Medium Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Stable-Audio-3-Medium-GGUF",files:["Stable-Audio-3-Medium-GGUF/stable-audio-3-medium-q8_0.gguf"],strip_prefix:"Stable-Audio-3-Medium-GGUF"},{id:"stable_audio_3_medium_f16",display_name:"Stable Audio 3 Medium F16 GGUF",format:"gguf",precision:"f16",target_directory:"Stable-Audio-3-Medium-GGUF",files:["Stable-Audio-3-Medium-GGUF/stable-audio-3-medium-f16.gguf"],strip_prefix:"Stable-Audio-3-Medium-GGUF"},{id:"stable_audio_3_small_music_q8_0",display_name:"Stable Audio 3 Small Music Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Stable-Audio-3-Small-Music-GGUF",files:["Stable-Audio-3-Small-Music-GGUF/stable-audio-3-small-music-q8_0.gguf"],strip_prefix:"Stable-Audio-3-Small-Music-GGUF"},{id:"stable_audio_3_small_music_f16",display_name:"Stable Audio 3 Small Music F16 GGUF",format:"gguf",precision:"f16",target_directory:"Stable-Audio-3-Small-Music-GGUF",files:["Stable-Audio-3-Small-Music-GGUF/stable-audio-3-small-music-f16.gguf"],strip_prefix:"Stable-Audio-3-Small-Music-GGUF"},{id:"stable_audio_3_small_sfx_q8_0",display_name:"Stable Audio 3 Small SFX Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Stable-Audio-3-Small-SFX-GGUF",files:["Stable-Audio-3-Small-SFX-GGUF/stable-audio-3-small-sfx-q8_0.gguf"],strip_prefix:"Stable-Audio-3-Small-SFX-GGUF"},{id:"stable_audio_3_small_sfx_f16",display_name:"Stable Audio 3 Small SFX F16 GGUF",format:"gguf",precision:"f16",target_directory:"Stable-Audio-3-Small-SFX-GGUF",files:["Stable-Audio-3-Small-SFX-GGUF/stable-audio-3-small-sfx-f16.gguf"],strip_prefix:"Stable-Audio-3-Small-SFX-GGUF"},{id:"stable_audio_3_medium_safetensors",display_name:"Stable Audio 3 Medium Safetensors",format:"safetensors",precision:"native",target_directory:"stable-audio-3-medium",files:["model_config.json","model.safetensors"],download:{kind:"huggingface_snapshot",repo:"stabilityai/stable-audio-3-medium",gated:!0}},{id:"stable_audio_3_small_music_safetensors",display_name:"Stable Audio 3 Small Music Safetensors",format:"safetensors",precision:"native",target_directory:"stable-audio-3-small-music",files:["model_config.json","model.safetensors"],download:{kind:"huggingface_snapshot",repo:"stabilityai/stable-audio-3-small-music",gated:!0}},{id:"stable_audio_3_small_sfx_safetensors",display_name:"Stable Audio 3 Small SFX Safetensors",format:"safetensors",precision:"native",target_directory:"stable-audio-3-small-sfx",files:["model_config.json","model.safetensors"],download:{kind:"huggingface_snapshot",repo:"stabilityai/stable-audio-3-small-sfx",gated:!0}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{model_config:"model:model_config.json",t5_config:"model:t5gemma-b-b-ul2/config.json",t5_tokenizer_json:"model:t5gemma-b-b-ul2/tokenizer.json",t5_tokenizer_model:"model:t5gemma-b-b-ul2/tokenizer.model",t5_tokenizer_config:"model:t5gemma-b-b-ul2/tokenizer_config.json"},tensors:{model_weights:{source:"weights:",prefix:"model_weights"},t5_weights:{source:"weights:",prefix:"t5_weights"}}},{format:"safetensors",roots:{model:".",t5:"t5gemma-b-b-ul2"},files:{model_config:"model:model_config.json",t5_config:"t5:config.json",t5_tokenizer_json:"t5:tokenizer.json",t5_tokenizer_model:"t5:tokenizer.model",t5_tokenizer_config:"t5:tokenizer_config.json"},tensors:{model_weights:"model:model.safetensors",t5_weights:"t5:model.safetensors"}}]},L$={family:"supertonic",display_name:"Supertonic 3",description:"Supertone on-device TTS model designed for fast local speech synthesis across 31 languages, with preset voices and compact deployment for browser, mobile, and desktop applications.",category:"tts",status:"supported",tasks:["tts"],modes:["offline","streaming"],languages:["en","ko","ja","ar","bg","cs","da","de","el","es","et","fi","fr","hi","hr","hu","id","it","lt","lv","nl","pl","pt","ro","ru","sk","sl","sv","tr","uk","vi"],capabilities:{tts:["built_in_voices","long_form"]},runtime:{tags:["gguf","stream"]},options:{request:[{name:"voice_id",type:"enum",values:["M1","M2","M3","M4","M5","F1","F2","F3","F4","F5"],default:"M1",description:"Built-in voice preset; --voice-id takes precedence.",required:!1},{name:"num_inference_steps",type:"int",min:1,default:8,description:"Flow denoising steps.",required:!1},{name:"speed",type:"float",min:0,default:1.05,description:"Positive speech speed multiplier; voice.style.speaking_rate takes precedence.",required:!1},{name:"seed",type:"int",min:0,max:4294967295,default:1234,description:"Noise seed.",required:!1},{name:"text_chunk_size",type:"int",description:"Framework text chunk size; defaults to 120 for Korean/Japanese, otherwise 300.",required:!1},{name:"text_chunk_mode",type:"enum",values:["default","tag_aware","japanese","endline"],default:"default",description:"Framework text chunking mode.",required:!1}],session:[{name:"weight_type",type:"enum",preset:"weight_type_full",default:"native",description:"Weight storage type.",required:!1},{name:"style_cache_slots",type:"int",min:0,default:4,description:"Cached preset style slots; zero disables reuse.",required:!1}],load:[]},ui:{recommended_package:"supertonic_3_orig",tags:["TTS","GGUF","Stream"],docs:["docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"supertonic_3_q8_0",display_name:"Supertonic 3 Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Supertonic-3-GGUF",files:["Supertonic-3-GGUF/supertonic-3-q8_0.gguf"],strip_prefix:"Supertonic-3-GGUF"},{id:"supertonic_3_f16",display_name:"Supertonic 3 F16 GGUF",format:"gguf",precision:"f16",target_directory:"Supertonic-3-GGUF",files:["Supertonic-3-GGUF/supertonic-3-f16.gguf"],strip_prefix:"Supertonic-3-GGUF"},{id:"supertonic_3_orig",display_name:"Supertonic 3 Original-Dtype GGUF",default:!0,format:"gguf",precision:"orig",target_directory:"Supertonic-3-GGUF",files:["Supertonic-3-GGUF/supertonic-3-orig.gguf"],strip_prefix:"Supertonic-3-GGUF"},{id:"supertonic_3_safetensors",display_name:"Supertonic 3 Safetensors",format:"safetensors",precision:"native",target_directory:"supertonic-3",files:["config/tts.json","config/unicode_indexer.json","ggml/supertonic.safetensors","voice_styles/F1.json","voice_styles/F2.json","voice_styles/F3.json","voice_styles/F4.json","voice_styles/F5.json","voice_styles/M1.json","voice_styles/M2.json","voice_styles/M3.json","voice_styles/M4.json","voice_styles/M5.json"],download:{kind:"huggingface_snapshot",repo:"mlx-community/supertonic-3-mlx"}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{tts_config:"model:config/tts.json",unicode_indexer:"model:config/unicode_indexer.json",voice_style_F1:"model:voice_styles/F1.json",voice_style_F2:"model:voice_styles/F2.json",voice_style_F3:"model:voice_styles/F3.json",voice_style_F4:"model:voice_styles/F4.json",voice_style_F5:"model:voice_styles/F5.json",voice_style_M1:"model:voice_styles/M1.json",voice_style_M2:"model:voice_styles/M2.json",voice_style_M3:"model:voice_styles/M3.json",voice_style_M4:"model:voice_styles/M4.json",voice_style_M5:"model:voice_styles/M5.json"},tensors:{weights:{source:"weights:",prefix:"weights"}}},{format:"safetensors",roots:{model:"."},files:{tts_config:"model:config/tts.json",unicode_indexer:"model:config/unicode_indexer.json",voice_style_F1:"model:voice_styles/F1.json",voice_style_F2:"model:voice_styles/F2.json",voice_style_F3:"model:voice_styles/F3.json",voice_style_F4:"model:voice_styles/F4.json",voice_style_F5:"model:voice_styles/F5.json",voice_style_M1:"model:voice_styles/M1.json",voice_style_M2:"model:voice_styles/M2.json",voice_style_M3:"model:voice_styles/M3.json",voice_style_M4:"model:voice_styles/M4.json",voice_style_M5:"model:voice_styles/M5.json"},tensors:{weights:"model:ggml/supertonic.safetensors"}}]},V$={schema_version:1,family:"tf_gridnet",display_name:"TF-GridNet",description:"Time-frequency GridNet overlapping speech separation.",category:"audio_tools",status:"supported",tasks:["sep"],modes:["offline"],languages:["language_agnostic"],capabilities:{sep:["stems"]},runtime:{tags:["gguf"]},options:{request:[{name:"audio_chunk_duration_sec",type:"float",description:"Separation window duration; zero selects whole-file inference. When enabled, the chunk sample count must exceed n_fft/2.",min:0,default:2.4,required:!1},{name:"audio_chunk_overlap_sec",type:"float",description:"Nonnegative overlap used to match speaker order and stitch adjacent windows. When chunking is enabled, overlap sample count must be > 0 and smaller than the chunk. Ignored for whole-file inference.",min:0,default:1.6,required:!1},{name:"normalize_output",type:"bool",description:"Normalize each separated waveform to a peak of 0.9, as in ESPnet's example.",default:!0,required:!1}],session:[{name:"weight_type",type:"enum",description:"Weight storage type.",required:!1,default:"native",values:["native","f32","f16","bf16","q8_0","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k"]}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"tf_gridnet_wsj0_2mix_f32",display_name:"TF-GridNet WSJ0-2mix F32",default:!0,format:"gguf",precision:"f32",target_directory:"TF-GridNet-GGUF",files:["TF-GridNet-GGUF/tf-gridnet-wsj0-2mix-f32.gguf"],strip_prefix:"TF-GridNet-GGUF"}],dependencies:[],ui:{tags:["GGUF"],docs:["docs/models/tf_gridnet.md"],recommended_package:"tf_gridnet_wsj0_2mix_f32"},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:{source:"weights:",prefix:"weights"},frontend:{source:"weights:",prefix:"frontend"}}}]},H$={family:"tone_color_vc",schema_version:1,display_name:"Tone Color VC",description:"Standalone voice conversion with a reference speaker recording.",category:"voice_conversion",status:"experimental",tasks:["vc"],modes:["offline"],languages:["language_agnostic"],capabilities:{vc:["speaker_reference"]},runtime:{tags:["gguf"]},options:{request:[{name:"seed",type:"int",required:!1,description:"Random seed for posterior sampling; -1 chooses a random seed.",default:1234,min:-1},{name:"temperature",type:"float",required:!1,description:"Posterior sampling noise scale.",default:.3,min:0}],session:[{name:"exec_plan",type:"string",required:!1,default:"{}",description:"Component execution plan: decoder accepts default/ggml/neon. Default retains the session backend. The complete NEON HiFi-GAN decoder requires a CPU session and ENGINE_ENABLE_NEON=ON on AArch64. No artifacts or params."}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"tone_color_vc_f32",display_name:"Tone Color VC F32 GGUF",default:!0,format:"gguf",precision:"f32",target_directory:"Tone-Color-VC-GGUF",files:["Tone-Color-VC-GGUF/tone-color-vc-f32.gguf"],strip_prefix:"Tone-Color-VC-GGUF"},{id:"tone_color_vc_f16",display_name:"Tone Color VC F16 GGUF",default:!1,format:"gguf",precision:"f16",target_directory:"Tone-Color-VC-GGUF",files:["Tone-Color-VC-GGUF/tone-color-vc-f16.gguf"],strip_prefix:"Tone-Color-VC-GGUF"}],dependencies:[],ui:{recommended_package:"tone_color_vc_f32",tags:["VC","GGUF"],docs:["docs/models/tone_color_vc.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:{source:"weights:",prefix:"weights"}}}]},W$={schema_version:1,family:"underdog_bark3",display_name:"Underdog Bark 3",description:"Conway Research Underdog Bark 3 Standard, Plus and Pro English ASR, with the publisher input prefix and model-local streaming frontend.",category:"asr",status:"community",tasks:["asr"],modes:["offline","streaming"],languages:["en"],runtime:{tags:["gguf","stream"]},capabilities:{asr:["word_timestamps","partial_results","vad_chunking"]},options:{request:[{name:"return_timestamps",type:"bool",description:"Accepted for CLI --words-out compatibility. Word timestamps are always returned, including when false or omitted.",required:!1},{name:"max_tokens",type:"int",description:"Maximum TDT generated tokens; 0 or omitted uses the model-derived limit.",required:!1,min:0,default:0},{name:"keep_language_tags",type:"bool",description:"Keep language tag tokens in decoded text; default false.",required:!1,default:!1},{name:"audio_chunk_mode",type:"enum",description:"Offline audio chunking mode. fixed selects overlapping long-form windows regardless of offline_mode; vad uses the configured VAD model (Silero by default) to skip silence; auto follows offline_mode. Offline input is downmixed and resampled as needed.",values:["auto","fixed","vad","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"VAD maximum chunk duration; omitted inherits the session duration. Fixed/long_form windows use the session setting, not this request override.",required:!1,min:.001},{name:"hotwords",type:"string",description:"Optional native vocabulary bias: comma-separated terms or a JSON list; up to 25 terms.",required:!1},{name:"hotwords_score",type:"float",description:"Phonon-2/Bark native matching-piece logit bonus; duration scores and blank are not biased.",required:!1,min:0,max:100,default:2}],session:[{name:"weight_type",type:"enum",description:"Shared matmul weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"matmul_weight_type",type:"enum",description:"Encoder and decoder matmul weight storage type; defaults to weight_type, which defaults to native. Q8_0 measured 1.79x faster on the tested CPU and changed roughly 8 percent of transcripts without moving aggregate word error rate.",preset:"weight_type_full",required:!1},{name:"conv_weight_type",type:"enum",description:"Convolution weight storage type; default native.",preset:"weight_type_conv",required:!1,default:"native"},{name:"perf_mode",type:"enum",description:"Encoder attention implementation. Default off uses the validated relative-attention path; flash_attention enables the fused implementation, which was numerically validated but slower on the tested hardware.",preset:"perf_mode_flash_attention",required:!1,default:"off"},{name:"weight_context_mb",type:"int",description:"Weight context arena size in MiB; default 3072.",required:!1,min:1,default:3072},{name:"encoder_graph_arena_mb",type:"int",description:"Encoder graph arena size in MiB; default 1024.",required:!1,min:1,default:1024},{name:"decoder_graph_arena_mb",type:"int",description:"Decoder graph arena size in MiB; default 256.",required:!1,min:1,default:256},{name:"audio_chunk_duration_sec",type:"float",description:"Center-region duration for buffered streaming in seconds; default 2. Fixed context windows are re-encoded rather than cache-aware. Also sizes offline fixed/long_form windows.",required:!1,min:.001,default:2},{name:"left_context_sec",type:"float",description:"Past context included when re-encoding each buffered-streaming window in seconds; default 10. Also applies to offline fixed/long_form windows.",required:!1,min:0,default:10},{name:"right_context_sec",type:"float",description:"Future lookahead included when re-encoding each buffered-streaming window in seconds; default 2 and adds equivalent partial-result latency. Also applies to offline fixed/long_form windows.",required:!1,min:0,default:2},{name:"streaming_attention_mode",type:"enum",description:"Attention policy inside each buffered window. full_context preserves bidirectional attention over the bounded window.",values:["full_context"],required:!1,default:"full_context"},{name:"offline_mode",type:"enum",description:"Offline encoder scheduling. full_context encodes the whole utterance, long_form uses bounded overlapping windows, and auto selects long_form beyond audio_chunk_threshold_sec.",values:["full_context","long_form","auto"],required:!1,default:"full_context"},{name:"audio_chunk_threshold_sec",type:"float",description:"Duration threshold used by offline_mode=auto before switching to bounded-window long-form execution; default 30 seconds.",required:!1,min:.001,default:30},{name:"vad_model_path",type:"path",description:"VAD model path used by audio_chunk_mode=vad (any built-in VAD family); default assets/framework/models/silero_vad.",required:!1,default:"assets/framework/models/silero_vad"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"underdog_bark3_standard_f16",display_name:"Underdog Bark 3.0 Standard mixed F16 GGUF",format:"gguf",precision:"f16",target_directory:"Underdog-Bark-3.0-GGUF",files:["Underdog-Bark-3.0-GGUF/underdog-bark-3.0-mixed-f16.gguf"],strip_prefix:"Underdog-Bark-3.0-GGUF",default:!0}],dependencies:[],ui:{recommended_package:"underdog_bark3_standard_f16",tags:["ASR","GGUF"],docs:["docs/models/underdog_bark3.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",processor_config:"model:processor_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",processor_config:"model:processor_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"model:model.safetensors"}}]},Q$={schema_version:1,family:"universr",display_name:"UniverSR",description:"Complex-STFT flow-matching audio super-resolution to 48 kHz.",category:"audio_tools",status:"supported",tasks:["s2s"],modes:["offline"],languages:["language_agnostic"],capabilities:{s2s:["audio_enhancement"]},runtime:{tags:["gguf"]},options:{request:[{name:"audio_chunk_duration_sec",type:"float",description:"Independent audio segments concatenated after inference; zero processes the whole file. Chunking changes global normalization context.",min:0,default:0,required:!1},{name:"input_sample_rate",type:"int",description:"Effective input bandwidth sample rate: 8000, 12000, 16000, or 24000 Hz.",required:!1},{name:"sampler_mode",type:"enum",description:"Fixed-step ODE integration method.",values:["euler","midpoint","rk4"],default:"midpoint",required:!1},{name:"num_inference_steps",type:"int",description:"ODE integration steps.",min:1,default:4,required:!1},{name:"guidance_scale",type:"float",description:"Classifier-free guidance scale; zero disables guidance.",min:0,default:1.5,required:!1},{name:"seed",type:"int",description:"Initial flow noise seed.",min:0,default:42,required:!1}],session:[{name:"weight_type",type:"enum",description:"Weight storage type; native preserves the GGUF tensor types.",required:!1,default:"native",values:["native","f32","f16","bf16","q8_0","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k"]}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"universr_audio_orig",display_name:"UniverSR Audio GGUF F32",default:!0,format:"gguf",precision:"f32",target_directory:"UniverSR-GGUF",files:["UniverSR-GGUF/universr-audio-orig.gguf"],strip_prefix:"UniverSR-GGUF"},{id:"universr_speech_orig",display_name:"UniverSR Speech GGUF F32",format:"gguf",precision:"f32",target_directory:"UniverSR-GGUF",files:["UniverSR-GGUF/universr-speech-orig.gguf"],strip_prefix:"UniverSR-GGUF"}],dependencies:[],ui:{tags:["GGUF"],docs:[],recommended_package:"universr_audio_orig"},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:{source:"weights:",prefix:"weights"},frontend:{source:"weights:",prefix:"frontend"}}}]},K$={family:"vevo2",display_name:"Vevo2",description:"Unified controllable framework for English and Chinese speech and singing voice generation, voice conversion, and editing, with tokenizers that disentangle content, prosody, melody, style, and timbre.",category:"voice_conversion",status:"supported",tasks:["tts","music","vc","edit","svc","s2s"],modes:["offline"],languages:["en","zh"],capabilities:{music:["lyrics"],vc:["speaker_reference"],svc:["speaker_reference","singing"],s2s:["speaker_reference"],edit:["prompt_editing"]},runtime:{tags:["gguf"]},options:{request:[{name:"route",type:"enum",description:"Generation route; omitted selects the task default.",required:!1,values:["zero_shot_tts","text_to_singing","svs","style_preserved_vc","style_preserved_svc","style_converted_vc","style_converted_svc","editing","singing_style_conversion","humming_to_singing","instrument_to_singing"]},{name:"source_audio",type:"audio_path",description:"Source audio file for conversion or editing.",required:!1},{name:"target_voice",type:"audio_path",description:"Target voice audio file; overrides structured speaker audio.",required:!1},{name:"prosody_ref",type:"audio_path",description:"Prosody or melody reference audio file.",required:!1},{name:"style_ref",type:"audio_path",description:"Style reference audio file.",required:!1},{name:"target_text",type:"string",description:"Text or lyrics; overrides structured text input.",required:!1},{name:"style_ref_text",type:"string",description:"Style-reference transcript; reference_text is also accepted.",required:!1},{name:"use_prosody_code",type:"bool",description:"Use prosody codes; default depends on route and requires prosody audio when enabled.",required:!1},{name:"use_pitch_shift",type:"bool",description:"Align reference pitch to the target voice; default depends on route.",required:!1},{name:"source_shift_steps",type:"int",description:"Manual source reference pitch shift in semitones.",required:!1,default:0},{name:"prosody_shift_steps",type:"int",description:"Manual prosody reference pitch shift in semitones.",required:!1,default:0},{name:"style_shift_steps",type:"int",description:"Manual style reference pitch shift in semitones.",required:!1,default:0},{name:"duration_sec",type:"float",description:"Rescale prosody-code conditioning to this duration; not a general output-length limit. Legacy target_duration_seconds is accepted.",required:!1},{name:"reference_duration_sec",type:"float",description:"Trim target voice reference before conditioning. Legacy reference_duration_seconds is accepted.",required:!1,min:0},{name:"temperature",type:"float",description:"Positive AR sampling temperature; default comes from the checkpoint.",required:!1},{name:"top_k",type:"int",description:"AR top-k sampling; default comes from the checkpoint.",required:!1},{name:"top_p",type:"float",description:"AR nucleus sampling; default comes from the checkpoint.",required:!1},{name:"repetition_penalty",type:"float",description:"Positive AR repetition penalty; default comes from the checkpoint.",required:!1},{name:"max_tokens",type:"int",description:"Maximum generated AR tokens.",required:!1,min:1,default:500},{name:"num_inference_steps",type:"int",description:"Flow-matching denoising steps.",required:!1,min:1,default:32},{name:"seed",type:"int",description:"Sampling seed; random when omitted.",required:!1,min:0,max:4294967295},{name:"text_chunk_size",type:"int",description:"Character budget per text chunk.",required:!1,min:1,default:128},{name:"audio_chunk_mode",type:"enum",description:"Source-audio chunking for style_preserved_vc/svc requires audio_chunk_duration_sec. Auto uses fixed chunks; none disables chunking.",required:!1,values:["auto","fixed","none"],default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Source-audio chunk duration for style_preserved_vc/svc; zero or omitted keeps one-shot processing.",required:!1,min:0},{name:"cross_fade_duration_sec",type:"float",description:"Source chunk overlap and output crossfade; must be smaller than chunk duration.",required:!1,default:1}],session:[{name:"weight_type",type:"enum",description:"Shared matmul storage override; omitted preserves component defaults.",required:!1,values:["native","f32","f16","bf16","q8_0"]},{name:"conv_weight_type",type:"enum",description:"Shared convolution storage override; omitted preserves native storage.",required:!1,values:["native","f32","f16"]}],load:[{name:"whisper_model_path",type:"path",description:"External Whisper model directory for feature extraction when not bundled.",required:!1}]},ui:{recommended_package:"vevo2_q8_0",tags:["TTS","Music","VC","Edit","GGUF"],docs:["docs/models/vevo2.md","docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"vevo2_q8_0",display_name:"Vevo2 Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Vevo2-GGUF",files:["Vevo2-GGUF/vevo2-q8_0.gguf"],strip_prefix:"Vevo2-GGUF"},{id:"vevo2_f16",display_name:"Vevo2 F16 GGUF",format:"gguf",precision:"f16",target_directory:"Vevo2-GGUF",files:["Vevo2-GGUF/vevo2-f16.gguf"],strip_prefix:"Vevo2-GGUF"},{id:"vevo2_orig",display_name:"Vevo2 Original-Dtype GGUF",format:"gguf",precision:"orig",target_directory:"Vevo2-GGUF",files:["Vevo2-GGUF/vevo2-orig.gguf"],strip_prefix:"Vevo2-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{ar_config:"model:contentstyle_modeling/posttrained/config.json",ar_amphion_config:"model:contentstyle_modeling/posttrained/amphion_config.json",ar_generation_config:"model:contentstyle_modeling/posttrained/generation_config.json",ar_tokenizer_config:"model:contentstyle_modeling/posttrained/tokenizer_config.json",ar_tokenizer_json:"model:contentstyle_modeling/posttrained/tokenizer.json",ar_vocab:"model:contentstyle_modeling/posttrained/vocab.json",ar_merges:"model:contentstyle_modeling/posttrained/merges.txt",ar_added_tokens:"model:contentstyle_modeling/posttrained/added_tokens.json",ar_special_tokens:"model:contentstyle_modeling/posttrained/special_tokens_map.json",fm_config:"model:acoustic_modeling/fm_emilia101k_singnet7k_repa/config.json",fm_text_config:"model:acoustic_modeling/fm_emilia101k_singnet7k_repa_text/config.json",vocoder_config:"model:vocoder/config.json",whisper_config:"model:whisper-medium/config.json"},tensors:{content_style_tokenizer_weights:{source:"weights:",prefix:"content_style_tokenizer_weights"},prosody_tokenizer_weights:{source:"weights:",prefix:"prosody_tokenizer_weights"},ar_weights:{source:"weights:",prefix:"ar_weights"},fm_weights:{source:"weights:",prefix:"fm_weights"},fm_whisper_stats:{source:"weights:",prefix:"fm_whisper_stats"},fm_text_weights:{source:"weights:",prefix:"fm_text_weights"},fm_text_whisper_stats:{source:"weights:",prefix:"fm_text_whisper_stats"},vocoder_weights_0:{source:"weights:",prefix:"vocoder_weights_0"},vocoder_weights_1:{source:"weights:",prefix:"vocoder_weights_1"},vocoder_weights_2:{source:"weights:",prefix:"vocoder_weights_2"},whisper_weights:{source:"weights:",prefix:"whisper_weights"}}},{format:"safetensors",roots:{model:".",whisper:"../whisper-medium"},files:{ar_config:"model:contentstyle_modeling/posttrained/config.json",ar_amphion_config:"model:contentstyle_modeling/posttrained/amphion_config.json",ar_generation_config:"model:contentstyle_modeling/posttrained/generation_config.json",ar_tokenizer_config:"model:contentstyle_modeling/posttrained/tokenizer_config.json",ar_tokenizer_json:"model:contentstyle_modeling/posttrained/tokenizer.json",ar_vocab:"model:contentstyle_modeling/posttrained/vocab.json",ar_merges:"model:contentstyle_modeling/posttrained/merges.txt",ar_added_tokens:"model:contentstyle_modeling/posttrained/added_tokens.json",ar_special_tokens:"model:contentstyle_modeling/posttrained/special_tokens_map.json",fm_config:"model:acoustic_modeling/fm_emilia101k_singnet7k_repa/config.json",fm_text_config:"model:acoustic_modeling/fm_emilia101k_singnet7k_repa_text/config.json",vocoder_config:"model:vocoder/config.json",whisper_config:"whisper:config.json"},tensors:{content_style_tokenizer_weights:"model:tokenizer/contentstyle_fvq16384_12.5hz/model.safetensors",prosody_tokenizer_weights:"model:tokenizer/prosody_fvq512_6.25hz/model.safetensors",ar_weights:"model:contentstyle_modeling/posttrained/model.safetensors",fm_weights:"model:acoustic_modeling/fm_emilia101k_singnet7k_repa/model.safetensors",fm_whisper_stats:"model:acoustic_modeling/fm_emilia101k_singnet7k_repa/whisper_stats.safetensors",fm_text_weights:"model:acoustic_modeling/fm_emilia101k_singnet7k_repa_text/model.safetensors",fm_text_whisper_stats:"model:acoustic_modeling/fm_emilia101k_singnet7k_repa_text/whisper_stats.safetensors",vocoder_weights_0:"model:vocoder/model.safetensors",vocoder_weights_1:"model:vocoder/model_1.safetensors",vocoder_weights_2:"model:vocoder/model_2.safetensors",whisper_weights:"whisper:model.safetensors"}}]},Y$={schema_version:1,family:"vibeasr",display_name:"VibeVoice-ASR-BitNet",description:"VibeASR.cpp's CPU-first VibeVoice ASR port: an INT8 (I8_S) audio VAE encoder feeding a ternary (I2_S) Qwen2 decoder, ported to audio.cpp.",category:"asr",status:"community",tasks:["asr"],modes:["offline"],languages:["en","zh","fr","it","ko","pt","vi"],capabilities:{},options:{request:[{name:"output_format",type:"enum",description:"Prompt suffix asked of the decoder: plain transcription text, or JSON rows with Start/End/Speaker/Content.",values:["text","json"],required:!1,default:"text"},{name:"context",type:"string",description:"Extra context injected into the prompt (names, jargon) to bias the transcription.",required:!1,default:""},{name:"max_tokens",type:"int",description:"Cap on decoded tokens for one request.",required:!1,min:1,default:1024}],session:[{name:"encoder_graph_arena_mb",type:"int",description:"VAE encoder graph arena size in MB. Must be positive; sufficient capacity depends on the graph.",required:!1,min:1,default:64},{name:"prefill_graph_arena_mb",type:"int",description:"Decoder prefill graph arena size in MB. Must be positive; sufficient capacity depends on the graph.",required:!1,min:1,default:256},{name:"decode_graph_arena_mb",type:"int",description:"Decoder single-step graph arena size in MB. Must be positive; sufficient capacity depends on the graph.",required:!1,min:1,default:256}],load:[]},runtime:{tags:["gguf","cpu"]},packages:[{id:"vibeasr_bitnet_i2_s",display_name:"VibeVoice-ASR-BitNet I8_S encoder + I2_S decoder",description:"Upstream VibeASR.cpp GGUF package. The two GGUFs carry the VibeASR ggml fork's type ids and need one pass of tools/community_models/convert_vibeasr_gguf.py --in-place before audio.cpp can load them.",default:!0,format:"gguf",precision:"native",target_directory:"VibeVoice-ASR-BitNet",files:["vibeasr-vae-encoder-i8_s.gguf","vibeasr-lm-i2_s-embed-q6_k.gguf","tokenizer.json","tokenizer_config.json"],download:{kind:"huggingface_snapshot",repo:"microsoft/VibeVoice-ASR-BitNet",revision:"main",gated:!1}}],dependencies:[],ui:{recommended_package:"vibeasr_bitnet_i2_s",tags:["ASR","GGUF"],docs:["docs/models/vibeasr.md"],summary:"INT8 encoder plus ternary Qwen2 decoder transcription on CPU."},sources:[{format:"gguf",roots:{model:"."},files:{tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json"},optional_files:{},tensors:{vae_weights:"model:vibeasr-vae-encoder-i8_s.gguf",lm_weights:"model:vibeasr-lm-i2_s-embed-q6_k.gguf"}}]},J$={family:"vibevoice",display_name:"VibeVoice",description:"Microsoft long-form multi-speaker TTS model for expressive conversational audio such as podcasts, supporting up to 90 minutes of speech with as many as four speakers.",category:"tts",status:"supported",tasks:["tts"],modes:["offline","streaming"],languages:["en","zh"],options:{request:[{name:"voice_samples",type:"string",description:"Comma-separated reference WAV paths ordered by speaker ID; cannot be combined with voice_ref.",required:!1},{name:"num_inference_steps",type:"int",description:"Diffusion steps; defaults to the checkpoint configuration.",required:!1,min:1},{name:"guidance_scale",type:"float",description:"Classifier-free guidance scale.",required:!1,min:0,default:1.3},{name:"max_length_times",type:"float",description:"Positive generation length multiplier.",required:!1,default:2},{name:"max_tokens",type:"int",description:"Maximum generated tokens; zero uses the model-derived limit.",required:!1,min:0,default:0},{name:"do_sample",type:"bool",description:"Enable sampling.",required:!1,default:!1},{name:"temperature",type:"float",description:"Positive sampling temperature.",required:!1,default:1},{name:"top_k",type:"int",description:"Top-k sampling limit; zero disables filtering.",required:!1,min:0,default:50},{name:"top_p",type:"float",description:"Nucleus probability in (0, 1].",required:!1,default:1},{name:"seed",type:"int",description:"Sampling seed.",required:!1,min:0,max:4294967295,default:1234},{name:"prompt_noise_file",type:"path",description:"F32 prompt acoustic noise file.",required:!1},{name:"diffusion_noise_file",type:"path",description:"F32 initial diffusion noise file.",required:!1}],session:[{name:"weight_type",type:"enum",description:"Weight storage type; component-specific settings inherit weight_type.",required:!1,preset:"weight_type_full"},{name:"tokenizer_weight_type",type:"enum",description:"Weight storage type; component-specific settings inherit weight_type.",required:!1,preset:"weight_type_full"},{name:"connector_weight_type",type:"enum",description:"Weight storage type; component-specific settings inherit weight_type.",required:!1,preset:"weight_type_full"},{name:"decoder_weight_type",type:"enum",description:"Weight storage type; component-specific settings inherit weight_type.",required:!1,preset:"weight_type_full"},{name:"diffusion_head_weight_type",type:"enum",description:"Weight storage type; component-specific settings inherit weight_type.",required:!1,preset:"weight_type_full"},{name:"lora",type:"path",description:"Decoder adapter file or PEFT directory applied when creating the session; do not also supply the load option.",required:!1},{name:"lora_scale",type:"float",description:"Session adapter scale override; omitted uses lora_alpha / r. Must be strictly positive when an adapter is supplied.",required:!1}],load:[{name:"lora",type:"path",description:"Decoder adapter file or PEFT directory, merged at load time.",required:!1},{name:"lora_scale",type:"float",description:"LoRA scale override; omitted uses lora_alpha / r. Must be strictly positive when an adapter is supplied.",required:!1}]},capabilities:{tts:["multi_speaker","long_form"]},runtime:{tags:["gguf"]},ui:{recommended_package:"vibevoice_1_5b_q8_0",tags:["TTS","GGUF"],docs:["docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"vibevoice_1_5b_q8_0",display_name:"VibeVoice 1.5B Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"VibeVoice-1.5B-GGUF",files:["VibeVoice-1.5B-GGUF/vibevoice-1.5b-q8_0.gguf"],strip_prefix:"VibeVoice-1.5B-GGUF"},{id:"vibevoice_1_5b_bf16",display_name:"VibeVoice 1.5B BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"VibeVoice-1.5B-GGUF",files:["VibeVoice-1.5B-GGUF/vibevoice-1.5b-bf16.gguf"],strip_prefix:"VibeVoice-1.5B-GGUF"},{id:"vibevoice_7b_q8_0",display_name:"VibeVoice 7B Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"VibeVoice-7B-GGUF",files:["vibevoice-7b-q8_0.gguf"],download:{kind:"huggingface_snapshot",repo:"audio-cpp/VibeVoice-7B-GGUF",revision:"main",gated:!1}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",preprocessor_config:"model:preprocessor_config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json",tokenizer_vocab:"model:vocab.json",tokenizer_merges:"model:merges.txt"},tensors:{model_weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",preprocessor_config:"model:preprocessor_config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json",tokenizer_vocab:"model:vocab.json",tokenizer_merges:"model:merges.txt"},tensors:{model_weights:"model:model.safetensors.index.json"}}]},X$={family:"vibevoice_asr",display_name:"VibeVoice ASR",description:"Microsoft long-form speech-to-text model that processes up to 60 minutes of audio in one pass and produces structured transcripts with speakers, timestamps, content, hotwords, and 50+ language support.",category:"asr",status:"supported",tasks:["asr"],modes:["offline"],languages:["auto","51 languages"],options:{request:[{name:"context",type:"string",description:"Context hint; context_info is also accepted.",required:!1},{name:"language",type:"string",description:"ASR language label.",required:!1},{name:"max_tokens",type:"int",description:"Maximum generated text tokens.",required:!1,min:1,default:32768},{name:"temperature",type:"float",description:"Sampling temperature; zero uses deterministic decoding.",required:!1,min:0,default:0},{name:"top_p",type:"float",description:"Nucleus probability in (0, 1].",required:!1,default:1},{name:"top_k",type:"int",description:"Top-k sampling limit; zero disables filtering.",required:!1,min:0,default:50},{name:"num_beams",type:"int",description:"Deterministic beam search width.",required:!1,min:1,default:1},{name:"repetition_penalty",type:"float",description:"Positive generation repetition penalty.",required:!1,default:1},{name:"seed",type:"int",description:"Acoustic latent sampling seed.",required:!1,min:0,default:1234},{name:"audio_chunk_mode",type:"enum",description:"Pre-encoder audio splitting; auto uses fixed chunks.",required:!1,values:["auto","fixed","vad","none"],default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Positive audio chunk duration in seconds.",required:!1,default:1200}],session:[{name:"weight_type",type:"enum",description:"Weight storage type; component-specific settings inherit weight_type.",required:!1,preset:"weight_type_full"},{name:"tokenizer_weight_type",type:"enum",description:"Weight storage type; component-specific settings inherit weight_type.",required:!1,preset:"weight_type_full"},{name:"connector_weight_type",type:"enum",description:"Weight storage type; component-specific settings inherit weight_type.",required:!1,preset:"weight_type_full"},{name:"decoder_weight_type",type:"enum",description:"Weight storage type; component-specific settings inherit weight_type.",required:!1,preset:"weight_type_full"},{name:"tokenizer_weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:512},{name:"connector_weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:128},{name:"decoder_weight_context_mb",type:"int",description:"Decoder weight context in MiB; 4096 on 64-bit builds, 1024 on 32-bit builds.",required:!1,min:1},{name:"max_history_steps",type:"int",description:"Maximum retained decoder history; zero uses the model limit. Cannot exceed checkpoint position capacity; zero uses that capacity.",required:!1,default:0,min:0},{name:"vad_model_path",type:"path",description:"VAD model (any built-in VAD family; default Silero VAD) used with audio_chunk_mode=vad.",required:!1,default:"assets/framework/models/silero_vad"}],load:[]},capabilities:{asr:["segments","speaker_turns","vad_chunking"]},runtime:{tags:["gguf"]},ui:{recommended_package:"vibevoice_asr_q8_0",tags:["ASR","GGUF"],docs:["docs/asr.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"vibevoice_asr_q8_0",display_name:"VibeVoice ASR Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"VibeVoice-ASR-GGUF",files:["VibeVoice-ASR-GGUF/vibevoice-asr-q8_0.gguf"],strip_prefix:"VibeVoice-ASR-GGUF"},{id:"vibevoice_asr_f16",display_name:"VibeVoice ASR F16 GGUF",format:"gguf",precision:"f16",target_directory:"VibeVoice-ASR-GGUF",files:["VibeVoice-ASR-GGUF/vibevoice-asr-f16.gguf"],strip_prefix:"VibeVoice-ASR-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json",tokenizer_vocab:"model:vocab.json",tokenizer_merges:"model:merges.txt"},optional_files:{preprocessor_config:"model:preprocessor_config.json"},tensors:{model_weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json",tokenizer_vocab:"model:vocab.json",tokenizer_merges:"model:merges.txt"},optional_files:{preprocessor_config:"model:preprocessor_config.json"},tensors:{model_weights:"model:model.safetensors.index.json"}}]},Z$={family:"vibevoice_asr_streaming",display_name:"VibeVoice ASR Streaming",description:"Microsoft VibeVoice ASR Streaming models (7B and 1.5B) for chunked streaming speech-to-text with persistent decoder state.",category:"asr",status:"supported",tasks:["asr"],modes:["offline","streaming"],languages:["en","zh","es","pt","de","ja","ko","fr","ru","it"],capabilities:{asr:["speaker_turns"]},options:{request:[{name:"language",type:"string",description:"ASR language label; empty unless provided in the request.",required:!1,default:""},{name:"context",type:"string",description:"Extra context or hotwords injected into the streaming prompt.",required:!1,default:""},{name:"max_tokens",type:"int",description:"Maximum generated transcript tokens per chunk.",required:!1,min:1,default:256},{name:"temperature",type:"float",description:"Sampling temperature; 0 uses deterministic decoding.",required:!1,min:0,default:0},{name:"top_p",type:"float",description:"Nucleus sampling probability.",required:!1,min:.001,max:1,default:1},{name:"top_k",type:"int",description:"Top-k sampling limit; default 50. Zero disables top-k filtering.",required:!1,min:0,default:50},{name:"num_beams",type:"int",description:"Compatibility-only; this checkpoint ignores beam search and uses its incremental decoder.",required:!1,min:1,default:1},{name:"repetition_penalty",type:"float",description:"Generation repetition penalty.",required:!1,min:.001,default:1},{name:"seed",type:"int",description:"Acoustic latent sampling seed; default 1234.",required:!1,default:1234},{name:"audio_chunk_mode",type:"enum",description:"Compatibility-only; ignored in offline and streaming modes. Processor chunk/lookahead settings determine segmentation.",values:["auto","fixed","vad","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Compatibility-only; ignored in offline and streaming modes. Processor settings determine segmentation.",required:!1,min:.001,default:1200}],session:[{name:"weight_type",type:"enum",description:"Shared component weight storage.",required:!1,preset:"weight_type_full",default:"native"},{name:"tokenizer_weight_type",type:"enum",description:"Speech tokenizer weight storage; inherits weight_type when omitted.",required:!1,preset:"weight_type_full"},{name:"connector_weight_type",type:"enum",description:"Speech connector weight storage; inherits weight_type when omitted.",required:!1,preset:"weight_type_full"},{name:"decoder_weight_type",type:"enum",description:"Text decoder weight storage; inherits weight_type when omitted.",required:!1,preset:"weight_type_full"},{name:"tokenizer_weight_context_mb",type:"int",description:"Speech tokenizer weight metadata context. Size in MiB; must be positive.",required:!1,min:1,default:512},{name:"connector_weight_context_mb",type:"int",description:"Speech connector weight metadata context. Size in MiB; must be positive.",required:!1,min:1,default:128},{name:"decoder_weight_context_mb",type:"int",description:"Text decoder weight metadata context. Default 4096 on 64-bit builds and 1024 on 32-bit builds. Size in MiB; must be positive.",required:!1,min:1},{name:"max_history_steps",type:"int",description:"Decoder history limit; zero uses the model position capacity. Must be nonnegative and not exceed that capacity.",required:!1,min:0,default:0}],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"vibevoice_asr_streaming_7b_q8_0",tags:["ASR","Streaming","GGUF"],docs:["docs/asr.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/VibeVoice-ASR-Streaming-7B-GGUF",revision:"main",gated:!1}},packages:[{id:"vibevoice_asr_streaming_7b_q8_0",display_name:"VibeVoice ASR Streaming 7B Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"VibeVoice-ASR-Streaming-7B-GGUF",files:["vibevoice-asr-streaming-7b-q8_0.gguf"]},{id:"vibevoice_asr_streaming_7b_bf16",display_name:"VibeVoice ASR Streaming 7B BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"VibeVoice-ASR-Streaming-7B-GGUF",files:["vibevoice-asr-streaming-7b-bf16.gguf"]},{id:"vibevoice_asr_streaming_7b_q4_k",display_name:"VibeVoice ASR Streaming 7B Q4_K GGUF",format:"gguf",precision:"q4_k",target_directory:"VibeVoice-ASR-Streaming-7B-GGUF",files:["vibevoice-asr-streaming-7b-q4_k.gguf"]},{id:"vibevoice_asr_streaming_1_5b_q8_0",display_name:"VibeVoice ASR Streaming 1.5B Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"VibeVoice-ASR-Streaming-1.5B-GGUF",files:["vibevoice-asr-streaming-1.5b-q8_0.gguf"],download:{kind:"huggingface_snapshot",repo:"christopherthompson81/VibeVoice-ASR-Streaming-1.5B-GGUF",revision:"main",gated:!1}},{id:"vibevoice_asr_streaming_1_5b_bf16",display_name:"VibeVoice ASR Streaming 1.5B BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"VibeVoice-ASR-Streaming-1.5B-GGUF",files:["vibevoice-asr-streaming-1.5b-bf16.gguf"],download:{kind:"huggingface_snapshot",repo:"christopherthompson81/VibeVoice-ASR-Streaming-1.5B-GGUF",revision:"main",gated:!1}},{id:"vibevoice_asr_streaming_1_5b_q4_k",display_name:"VibeVoice ASR Streaming 1.5B Q4_K GGUF",format:"gguf",precision:"q4_k",target_directory:"VibeVoice-ASR-Streaming-1.5B-GGUF",files:["vibevoice-asr-streaming-1.5b-q4_k.gguf"],download:{kind:"huggingface_snapshot",repo:"christopherthompson81/VibeVoice-ASR-Streaming-1.5B-GGUF",revision:"main",gated:!1}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json",tokenizer_vocab:"model:vocab.json",tokenizer_merges:"model:merges.txt"},optional_files:{preprocessor_config:"model:preprocessor_config.json"},tensors:{model_weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json",tokenizer_vocab:"model:vocab.json",tokenizer_merges:"model:merges.txt"},optional_files:{preprocessor_config:"model:preprocessor_config.json"},tensors:{model_weights:"model:model.safetensors.index.json"}}]},eq={family:"vieneu_v3_turbo",display_name:"VieNeu-TTS v3 Turbo",description:"On-device Vietnamese/English TTS (48 kHz) with instant voice cloning from 3-5 s of reference audio, by Phạm Nguyễn Ngọc Bảo (pnnbao97). Takes SEA-G2P phonemes as text input.",category:"tts",status:"community",tasks:["tts","clone"],modes:["offline"],languages:["vi","en"],capabilities:{clone:["speaker_reference"]},runtime:{tags:["gguf"]},options:{request:[{name:"auto_frame_cap",type:"bool",description:"Cap the generation budget using the chunk's phoneme count. Legacy frame_cap remains accepted.",required:!1,default:!0},{name:"text_chunk_min_size",type:"int",description:"Phoneme-string chunks shorter than this character count join a neighbour. Legacy text_chunk_min remains accepted.",required:!1,default:20},{name:"speaker_embedding_file",type:"path",description:"File containing a comma-separated 192-dimensional speaker embedding.",required:!1},{name:"speaker_embedding",type:"string",description:"Inline comma-separated 192-dimensional speaker embedding.",required:!1},{name:"reference_codes",type:"string",description:"Pre-encoded reference codes in row-major order, comma- or space-separated; codebooks per frame come from the checkpoint.",required:!1},{name:"reference_codes_file",type:"path",description:"Pre-encoded reference codes, one frame per line. Replaces audio encoding and can be used with a speaker embedding instead of reference audio.",required:!1},{name:"x_vector_only_mode",type:"bool",description:"Clone using only the speaker embedding. Defaults to true for embedding-only input, otherwise false.",required:!1},{name:"encode_reference_only",type:"bool",description:"Encode reference audio and return an acoustic-tokens artifact without generating speech.",required:!1,default:!1},{name:"max_tokens",type:"int",description:"Maximum generated frames per text chunk; uses the checkpoint max_new_tokens setting (300 fallback). Each frame represents 80 ms.",required:!1,min:1},{name:"do_sample",type:"bool",description:"Enable sampling for all codebooks unless subtalker_do_sample overrides later codebooks.",required:!1,default:!0},{name:"temperature",type:"float",description:"Sampling temperature for all codebooks unless overridden for the subtalker.",required:!1,default:.8},{name:"top_k",type:"int",description:"Top-k sampling limit for all codebooks unless overridden for the subtalker.",required:!1,default:25},{name:"top_p",type:"float",description:"Nucleus cutoff within top-k candidates, unless overridden for the subtalker.",required:!1,default:.95},{name:"repetition_penalty",type:"float",description:"Repetition penalty applied independently to each codebook.",required:!1,default:1.2},{name:"repetition_window",type:"int",description:"Recent frames remembered per codebook for repetition penalties; zero uses all history.",required:!1,min:0,default:64},{name:"babble_retries",type:"int",description:"Regenerations for short chunks that exceed their text; zero disables the guard.",required:!1,min:0,default:2},{name:"subtalker_temperature",type:"float",description:"Temperature override for later codebooks; omitted or negative inherits temperature.",required:!1},{name:"subtalker_top_k",type:"int",description:"Top-k override for later codebooks; omitted or negative inherits top_k.",required:!1},{name:"subtalker_top_p",type:"float",description:"Nucleus cutoff override for later codebooks; omitted or negative inherits top_p.",required:!1},{name:"subtalker_do_sample",type:"bool",description:"Sampling override for later codebooks; inherits do_sample when omitted.",required:!1},{name:"seed",type:"int",description:"Sampling seed; omitted draws a random seed.",required:!1,min:0,max:4294967295},{name:"text_chunk_size",type:"int",description:"Maximum character budget per phoneme-string chunk; must be positive.",required:!1,min:1,default:200}],session:[{name:"g2p_dict_file",type:"path",description:"SEA-G2P dictionary file (sea_g2p.bin). When set, input is Vietnamese/English text rather than precomputed phonemes.",required:!1},{name:"g2p_library",type:"path",description:"SEA-G2P shared library used with g2p_dict_file; searched by library name when omitted.",required:!1},{name:"mem_saver",type:"bool",description:"Release the talker cached-step graph after each request.",required:!1,default:!1},{name:"voice_prompt_cache_slots",type:"int",description:"Prepared voice-prompt cache slots; zero disables caching.",required:!1,min:0,default:1},{name:"weight_type",type:"enum",description:"Shared talker matmul storage.",required:!1,preset:"weight_type_full",default:"native"},{name:"conv_weight_type",type:"enum",description:"Speaker encoder convolution weight storage.",required:!1,values:["native","f32","f16"],default:"f32"},{name:"talker_weight_type",type:"enum",description:"Talker matmul storage; inherits weight_type when omitted.",required:!1,preset:"weight_type_full"},{name:"talker_graph_arena_mb",type:"int",description:"Talker graph metadata arena. Size in MiB; must be positive.",required:!1,min:1,default:256},{name:"speech_decoder_graph_arena_mb",type:"int",description:"Codec decoder graph metadata arena. Size in MiB; must be positive.",required:!1,min:1,default:32},{name:"speaker_encoder_graph_arena_mb",type:"int",description:"Speaker encoder graph metadata arena. Size in MiB; must be positive.",required:!1,min:1,default:32},{name:"talker_constant_context_mb",type:"int",description:"Talker constant metadata context. Size in MiB; must be positive.",required:!1,min:1,default:4096},{name:"code_predictor_constant_context_mb",type:"int",description:"Code predictor constant metadata context. Size in MiB; must be positive.",required:!1,min:1,default:1536},{name:"speech_decoder_constant_context_mb",type:"int",description:"Codec decoder constant metadata context. Size in MiB; must be positive.",required:!1,min:1,default:1536}],load:[]},ui:{recommended_package:"vieneu_v3_turbo_q8_0",tags:["TTS","Clone","GGUF"],docs:["docs/models/vieneu_v3_turbo.md","docs/tts.md","docs/gguf.md"]},packages:[{id:"vieneu_v3_turbo_q8_0",display_name:"VieNeu-TTS v3 Turbo Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"VieNeu-TTS-v3-Turbo-GGUF",files:["gguf/vieneu-v3-turbo-q8_0.gguf","gguf/voices/manifest.json","gguf/voices/minh_quan_pro/ref_codes.txt","gguf/voices/minh_quan_pro/speaker.emb.txt"],download:{kind:"huggingface_snapshot",repo:"pnnbao-ump/VieNeu-TTS-v3-Turbo"},strip_prefix:"gguf"},{id:"vieneu_v3_turbo_bf16",display_name:"VieNeu-TTS v3 Turbo BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"VieNeu-TTS-v3-Turbo-GGUF",files:["gguf/vieneu-v3-turbo-bf16.gguf","gguf/voices/manifest.json","gguf/voices/minh_quan_pro/ref_codes.txt","gguf/voices/minh_quan_pro/speaker.emb.txt"],download:{kind:"huggingface_snapshot",repo:"pnnbao-ump/VieNeu-TTS-v3-Turbo"},strip_prefix:"gguf"},{id:"vietneu_tts_v3_turbo_q8_0",display_name:"VieNeu-TTS v3 Turbo Q8_0 GGUF (first community port, July 2026 weights)",format:"gguf",precision:"q8_0",target_directory:"VieNeu-TTS-v3-Turbo-GGUF-2026-07",files:["model.gguf"],download:{kind:"huggingface_snapshot",repo:"phuocnguyen90/VieNeu-TTS-v3-Turbo-GGUF"}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",speech_tokenizer_config:"model:speech_tokenizer/config.json"},optional_files:{generation_config:"model:generation_config.json",vocab:"model:vocab.json",merges:"model:merges.txt",tokenizer_json:"model:tokenizer.json",special_tokens_map:"model:special_tokens_map.json"},tensors:{model_weights:{source:"weights:",prefix:"model_weights"},speech_tokenizer_weights:{source:"weights:",prefix:"speech_tokenizer_weights"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",speech_tokenizer_config:"model:speech_tokenizer/config.json"},optional_files:{generation_config:"model:generation_config.json",vocab:"model:vocab.json",merges:"model:merges.txt",tokenizer_json:"model:tokenizer.json",special_tokens_map:"model:special_tokens_map.json"},tensors:{model_weights:"model:model.safetensors",speech_tokenizer_weights:"model:speech_tokenizer/model.safetensors"}}]},tq={schema_version:1,family:"voxcpm1",display_name:"VoxCPM1",description:"OpenBMB VoxCPM 0.5B tokenizer-free TTS model supporting short-reference voice cloning and streaming output (16kHz).",category:"tts",status:"supported",tasks:["tts","clone"],modes:["offline","streaming"],languages:["zh","en","ja","ko"],capabilities:{clone:["speaker_reference"]},dependencies:[],options:{request:[{name:"text_chunk_mode",type:"enum",description:"Text chunking mode; default tag_aware.",preset:"text_chunk_mode_full",required:!1,default:"tag_aware"},{name:"seed",type:"int",description:"Random seed for MiniCPM and diffusion sampling.",required:!1},{name:"max_tokens",type:"int",description:"Maximum MiniCPM output tokens; default 4096. Zero selects model max_length; negative counts are rejected.",required:!1,default:4096},{name:"min_tokens",type:"int",description:"Minimum MiniCPM output tokens before an EOS stop is honored; default 2.",required:!1,default:2},{name:"num_inference_steps",type:"int",description:"CFM diffusion sampling steps; default 10. Must be positive.",required:!1,default:10},{name:"guidance_scale",type:"float",description:"CFM classifier-free guidance rate. Must be nonnegative.",required:!1,default:2},{name:"retry_badcase",type:"bool",description:"Retry when generation is detected as a bad case; defaults to true offline and false in streaming. Streaming ignores an explicit true value with a warning.",required:!1},{name:"retry_badcase_max_times",type:"int",description:"Maximum total generation attempts when retrying bad cases, including the initial attempt; default 3. Must be positive.",required:!1,default:3},{name:"retry_badcase_ratio_threshold",type:"float",description:"Bad-case ratio threshold for retry decisions. Must be positive.",required:!1},{name:"prompt_text",type:"string",description:"Text prompt for prompt-continuation voice cloning.",required:!1},{name:"reference_text",type:"string",description:"Alias for prompt_text; text prompt for prompt-continuation voice cloning.",required:!1},{name:"text_chunk_size",type:"int",description:"Maximum characters per offline text chunk; must be positive. Does not control streaming chunk cadence.",required:!1,min:1,default:2048},{name:"language",type:"string",description:"Language hint for Chinese-script normalization; Cantonese/yue preserves Traditional characters. Inherits structured transcript or voice language when provided.",required:!1}],session:[{name:"lora",type:"path",description:"Native LoRA directory or checkpoint file with adjacent lora_config.json; merged into generator weights at session creation.",required:!1},{name:"lora_scale",type:"float",description:"Multiplier for the adapter's configured alpha/r scaling; default 1.",required:!1,default:1},{name:"mem_saver",type:"bool",description:"Use tighter graph workspaces and release request runtime graphs; default false.",required:!1,default:!1},{name:"prompt_cache_slots",type:"int",description:"Prompt and prompt-audio embedding cache slots; default 1.",required:!1,default:1},{name:"weight_type",type:"enum",description:"Model weight storage type.",preset:"weight_type_full",required:!1,default:"native"},{name:"audiovae_weight_type",type:"enum",description:"AudioVAE weight storage type.",preset:"weight_type_full",required:!1,default:"native"},{name:"weight_context_mb",type:"int",description:"Model weight graph context size in MB.",required:!1},{name:"text_embedding_graph_arena_mb",type:"int",description:"Text embedding host graph-metadata arena size in MiB, not device workspace.",required:!1},{name:"lm_step_graph_arena_mb",type:"int",description:"LM step host graph-metadata arena size in MiB, not device workspace.",required:!1},{name:"projection_graph_arena_mb",type:"int",description:"Projection host graph-metadata arena size in MiB, not device workspace.",required:!1},{name:"local_encoder_graph_arena_mb",type:"int",description:"Local encoder host graph-metadata arena size in MiB, not device workspace.",required:!1},{name:"dit_graph_arena_mb",type:"int",description:"DiT estimator host graph-metadata arena size in MiB, not device workspace.",required:!1},{name:"audiovae_weight_context_mb",type:"int",description:"AudioVAE weight graph context size in MB.",required:!1},{name:"audiovae_graph_arena_mb",type:"int",description:"AudioVAE decoder host graph-metadata arena size in MiB, not device workspace.",required:!1},{name:"audiovae_encoder_graph_arena_mb",type:"int",description:"AudioVAE encoder host graph-metadata arena size in MiB, not device workspace.",required:!1},{name:"audiovae_latent_capacity",type:"int",description:"AudioVAE decoder latent frame capacity.",required:!1},{name:"audiovae_encoder_sample_capacity",type:"int",description:"AudioVAE encoder sample capacity.",required:!1}],load:[]},runtime:{tags:["gguf","stream"]},ui:{recommended_package:"voxcpm1_0_5b_q8_0",tags:["TTS","Clone","GGUF","Stream"],docs:["docs/models/voxcpm1.md","docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"voxcpm1_0_5b_q8_0",display_name:"VoxCPM 0.5B Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"VoxCPM1-GGUF",files:["VoxCPM1-GGUF/voxcpm-0.5b-q8_0-audiovae-f16.gguf"],strip_prefix:"VoxCPM1-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json"},optional_files:{special_tokens_map:"model:special_tokens_map.json"},tensors:{weights:{source:"weights:"},audiovae_weights:{source:"weights:"}}}]},aq={family:"voxcpm2",display_name:"VoxCPM2",description:"OpenBMB tokenizer-free TTS model supporting 30 languages and 9 Chinese dialects, with 48 kHz output, natural-language voice design, controllable short-reference voice cloning, and expressive style guidance.",category:"tts",status:"supported",tasks:["tts","clone","design"],modes:["offline","streaming"],languages:["ar","my","zh","zh dialects","da","nl","en","fi","fr","de","el","he","hi","id","it","ja","km","ko","lo","ms","no","pl","pt","ru","es","sw","sv","tl","th","tr","vi"],options:{request:[{name:"min_tokens",type:"int",description:"Minimum generated audio tokens.",required:!1,min:0,default:2},{name:"max_tokens",type:"int",description:"Maximum generated audio tokens. Zero resolves to model max_length; requires min_tokens <= resolved max_tokens <= model limit.",required:!1,min:0,default:4096},{name:"num_inference_steps",type:"int",description:"Flow sampling steps. Must be positive.",required:!1,default:10},{name:"guidance_scale",type:"float",description:"Classifier-free guidance scale. Must be nonnegative.",required:!1,default:2},{name:"retry_badcase",type:"bool",description:"Retry detected bad generations. Offline only; streaming requires false.",required:!1,default:!0},{name:"retry_badcase_max_times",type:"int",description:"Total attempts including the initial attempt, not extra retries; must be positive.",required:!1,default:3},{name:"retry_badcase_ratio_threshold",type:"float",description:"Bad-case audio/text length ratio threshold. Must be positive.",required:!1,default:6},{name:"seed",type:"int",description:"Sampling seed.",required:!1,min:0,max:4294967295,default:1234},{name:"cfm_noise_file",type:"path",description:"Precomputed flow noise file.",required:!1},{name:"stream_chunk_policy",type:"enum",description:"Streaming decoder cadence: grow emits one patch first, then doubles toward stream_frames_per_event; fixed uses the configured size. Ignored offline.",required:!1,values:["grow","fixed"],default:"grow"},{name:"stream_frames_per_event",type:"int",description:"Maximum generated latent patches per streaming decoder event. Set to 1 for one-patch emission. Ignored offline.",required:!1,min:1,default:4},{name:"stream_left_context",type:"int",description:"Previous patches decoded as streaming left context.",required:!1,min:0,max:8,default:3},{name:"ultimate_clone",type:"bool",description:"Use the voice reference itself as the continuation prompt. Requires reference audio and reference_text or prompt_text; cannot be combined with explicit prompt audio.",required:!1,default:!1},{name:"prompt_text",type:"string",description:"Transcript for continuation prompt audio, distinct from the base voice reference.",required:!1},{name:"chunk_strategy",type:"enum",description:"Long-form continuation or independent generation per chunk. Offline only.",required:!1,values:["continuation","stateless"],default:"continuation"},{name:"text_chunk_size",type:"int",description:"Framework long-form text chunk size. Offline only.",required:!1,default:2048},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode. Offline only.",required:!1,values:["default","tag_aware","japanese","endline"],default:"tag_aware"}],session:[{name:"audiovae_tile_frames",type:"int",description:"Opt-in causal AudioVAE tiling. Maximum new latent frames per tile; zero preserves full decoding.",required:!1,default:0,min:0},{name:"perf_mode",type:"enum",description:"Opt-in packed attention and MLP projections. May change numerical results; off preserves standard execution.",required:!1,values:["off","cuda_perf"],default:"off"},{name:"lora",type:"path",description:"Native LoRA directory or checkpoint file with adjacent lora_config.json; merged into generator weights at session creation.",required:!1},{name:"lora_scale",type:"float",description:"Multiplier for the adapter's configured alpha/r scaling; default 1.",required:!1,default:1},{name:"weight_type",type:"enum",description:"Language-model weight storage; does not override AudioVAE storage.",required:!1,preset:"weight_type_full"},{name:"audiovae_weight_type",type:"enum",description:"AudioVAE weight storage; defaults independently to native, not the shared weight_type.",required:!1,preset:"weight_type_full"},{name:"prompt_cache_slots",type:"int",description:"Cached encoded prompt slots; zero disables reuse.",required:!1,min:0,default:1},{name:"mem_saver",type:"bool",description:"Release staged runtime graphs.",required:!1,default:!0},{name:"weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:3072},{name:"text_embedding_graph_arena_mb",type:"int",description:"Text embedding host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:64},{name:"lm_step_graph_arena_mb",type:"int",description:"LM step host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:1024},{name:"projection_graph_arena_mb",type:"int",description:"Projection host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:256},{name:"local_encoder_graph_arena_mb",type:"int",description:"Local encoder host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:512},{name:"dit_graph_arena_mb",type:"int",description:"DiT estimator host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:1024},{name:"audiovae_weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:768},{name:"audiovae_graph_arena_mb",type:"int",description:"AudioVAE decoder host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:1024},{name:"audiovae_encoder_graph_arena_mb",type:"int",description:"AudioVAE encoder host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:1024},{name:"audiovae_latent_capacity",type:"int",description:"Optional decoder graph reservation in latent frames, reused by shorter requests and doubled when exceeded; omitted builds the graph at each request's own frame count.",required:!1,min:1},{name:"exec_plan",type:"string",description:"JSON component execution plans. audiovae: impl=default/ggml; backend must match the session; no artifacts. params.threads is a nonnegative int: positive values require a CPU session and enable a dedicated AudioVAE backend with streaming decode overlap; also controls offline decoding and prompt encoding threads. Omitted/0 shares the session backend.",required:!1,default:"{}"},{name:"audiovae_encoder_sample_capacity",type:"int",description:"Reserved encoder sample capacity.",required:!1,min:1,default:24e4}],load:[]},capabilities:{clone:["speaker_reference"],design:["voice_design"]},runtime:{tags:["gguf","stream"]},ui:{recommended_package:"voxcpm2_q8_0",tags:["TTS","Clone","Design","GGUF","Stream"],docs:["docs/tts.md","docs/gguf.md","docs/models/vocalrender.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"voxcpm2_q8_0",display_name:"VoxCPM2 Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"VoxCPM2-GGUF",files:["VoxCPM2-GGUF/voxcpm2-q8_0.gguf"],strip_prefix:"VoxCPM2-GGUF"},{id:"voxcpm2_bf16",display_name:"VoxCPM2 BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"VoxCPM2-GGUF",files:["VoxCPM2-GGUF/voxcpm2-bf16.gguf"],strip_prefix:"VoxCPM2-GGUF"},{id:"voxcpm2_orig",display_name:"VoxCPM2 Original-Dtype GGUF",format:"gguf",precision:"orig",target_directory:"VoxCPM2-GGUF",files:["VoxCPM2-GGUF/voxcpm2-orig.gguf"],strip_prefix:"VoxCPM2-GGUF"},{id:"voxcpm2_vocalrender_pro",display_name:"VocalRender-Pro (VoxCPM2) Original-Dtype GGUF",format:"gguf",precision:"orig",target_directory:"VoxCPM2-GGUF",files:["VoxCPM2-GGUF/finetune/vocalrender-pro-orig.gguf"],strip_prefix:"VoxCPM2-GGUF"},{id:"voxcpm2_safetensors",display_name:"VoxCPM2 Safetensors",format:"safetensors",precision:"native",target_directory:"VoxCPM2",files:["config.json","model.safetensors","tokenizer.json","tokenizer_config.json"],download:{kind:"huggingface_snapshot",repo:"OpenBMB/VoxCPM2"}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json",special_tokens_map:"model:special_tokens_map.json"},tensors:{weights:{source:"weights:",prefix:"weights"},audiovae_weights:{source:"weights:",prefix:"audiovae_weights"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json",special_tokens_map:"model:special_tokens_map.json"},tensors:{weights:"model:model.safetensors",audiovae_weights:"model:audiovae.safetensors"}}]},iq={family:"voxtral_realtime",display_name:"Voxtral Mini 4B Realtime",description:"Mistral 13-language realtime ASR model with a natively streaming causal audio encoder, configurable low-latency transcription delay, and accuracy competitive with offline open-source systems.",category:"asr",status:"supported",tasks:["asr"],modes:["offline","streaming"],languages:["en","zh","hi","es","ar","fr","pt","ru","de","ja","ko","it","nl"],options:{request:[{name:"max_tokens",type:"int",min:1,description:"Maximum generated transcript tokens; omitted uses the audio-derived limit. Offline decoding only; ignored by live streaming.",required:!1},{name:"do_sample",type:"bool",default:!1,description:"Sample rather than greedily decode.",required:!1},{name:"temperature",type:"float",min:0,default:1,description:"Sampling temperature; must be > 0.",required:!1},{name:"top_p",type:"float",min:0,max:1,default:1,description:"Nucleus sampling probability in (0, 1].",required:!1},{name:"top_k",type:"int",min:0,default:50,description:"Top-k sampling limit; zero disables filtering.",required:!1},{name:"seed",type:"int",min:0,default:1234,description:"Sampling seed.",required:!1}],session:[{name:"weight_type",type:"enum",values:["native","f32","f16","bf16","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k","q8_0","nvfp4"],default:"native",description:"Shared weight storage type.",required:!1},{name:"audio_encoder_weight_type",type:"enum",values:["native","f32","f16","bf16","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k","q8_0","nvfp4"],description:"Audio encoder weight storage; inherits weight_type.",required:!1},{name:"text_decoder_weight_type",type:"enum",values:["native","f32","f16","bf16","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k","q8_0","nvfp4"],description:"Text decoder weight storage; inherits weight_type.",required:!1},{name:"audio_encoder_graph_arena_mb",type:"int",min:1,default:512,description:"Audio encoder graph arena in MiB.",required:!1},{name:"audio_encoder_weight_context_mb",type:"int",min:1,default:128,description:"Audio encoder weight context in MiB.",required:!1},{name:"text_decoder_prefill_graph_arena_mb",type:"int",min:1,default:512,description:"Decoder prefill graph arena in MiB. Decoder uses the maximum of prefill and decode arena settings.",required:!1},{name:"text_decoder_decode_graph_arena_mb",type:"int",min:1,default:512,description:"Decoder step graph arena in MiB. Decoder uses the maximum of prefill and decode arena settings.",required:!1},{name:"text_decoder_weight_context_mb",type:"int",min:1,default:128,description:"Decoder weight context in MiB.",required:!1},{name:"stream_decode_cache_steps",type:"int",default:1024,description:"Streaming decoder cache capacity in 80 ms steps. Must be positive and no greater than checkpoint sliding_window.",required:!1},{name:"stream_batch_tokens",type:"int",min:1,default:1,description:"Audio tokens per streaming encoder forward.",required:!1}],load:[]},capabilities:{asr:["partial_results"]},runtime:{tags:["gguf","stream"]},ui:{recommended_package:"voxtral_realtime_q8_0",tags:["ASR","GGUF","Stream"],docs:["docs/models/voxtral_realtime.md","docs/asr.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"voxtral_realtime_q8_0",display_name:"Voxtral Mini 4B Realtime Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Voxtral-Mini-4B-Realtime-2602-GGUF",files:["Voxtral-Mini-4B-Realtime-2602-GGUF/voxtral-mini-4b-realtime-2602-q8_0.gguf"],strip_prefix:"Voxtral-Mini-4B-Realtime-2602-GGUF"},{id:"voxtral_realtime_q4_k",display_name:"Voxtral Mini 4B Realtime Q4_K GGUF",format:"gguf",precision:"q4_k",target_directory:"Voxtral-Mini-4B-Realtime-2602-GGUF",files:["Voxtral-Mini-4B-Realtime-2602-GGUF/voxtral-mini-4b-realtime-2602-q4_k.gguf"],strip_prefix:"Voxtral-Mini-4B-Realtime-2602-GGUF"},{id:"voxtral_realtime_bf16",display_name:"Voxtral Mini 4B Realtime BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"Voxtral-Mini-4B-Realtime-2602-GGUF",files:["Voxtral-Mini-4B-Realtime-2602-GGUF/voxtral-mini-4b-realtime-2602-bf16.gguf"],strip_prefix:"Voxtral-Mini-4B-Realtime-2602-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",processor_config:"model:processor_config.json",tekken:"model:tekken.json"},optional_files:{params:"model:params.json",readme:"model:README.md"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",generation_config:"model:generation_config.json",processor_config:"model:processor_config.json",tekken:"model:tekken.json"},optional_files:{params:"model:params.json",readme:"model:README.md"},tensors:{weights:"model:model.safetensors"}}]},nq={schema_version:1,family:"voxtral_tts",display_name:"Voxtral 4B TTS",description:"Mistral's Ministral-based autoregressive and flow-matching TTS model with 20 embedded preset voices.",category:"tts",status:"supported",tasks:["tts"],modes:["offline","streaming"],languages:["en","fr","es","de","it","pt","nl","ar","hi"],runtime:{tags:["gguf"]},capabilities:{tts:["built_in_voices","long_form"]},options:{request:[{name:"voice_id",type:"enum",description:"Embedded preset voice; the released checkpoint does not contain the encoder needed for reference-audio cloning.",values:["casual_female","casual_male","cheerful_female","neutral_female","neutral_male","pt_male","pt_female","nl_male","nl_female","it_male","it_female","fr_male","fr_female","es_male","es_female","de_male","de_female","ar_male","hi_male","hi_female"],required:!1,default:"casual_male"},{name:"max_tokens",type:"int",description:"Maximum generated audio frames per text chunk; each frame represents 80 ms.",required:!1,min:1,default:2048},{name:"num_inference_steps",type:"int",description:"Euler integration steps for the per-frame acoustic flow model.",required:!1,min:1,default:7},{name:"guidance_scale",type:"float",description:"Acoustic classifier-free guidance scale; the AR backbone does not use CFG.",required:!1,min:0,default:1.2},{name:"seed",type:"int",description:"Acoustic noise seed; omitted requests select a random seed.",required:!1,min:0},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per framework long-form text chunk.",required:!1,min:1,default:300},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode.",values:["default","tag_aware","japanese","endline"],required:!1,default:"default"}],session:[{name:"weight_type",type:"enum",description:"Weight storage type; native preserves the package's tensor types.",values:["native","f32","f16","bf16","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k","q8_0","nvfp4"],required:!1,default:"native"},{name:"kv_cache_type",type:"enum",description:"AR key/value cache storage type.",values:["f32","f16","bf16"],required:!1,default:"f16"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"voxtral_4b_tts_2603_bf16",display_name:"Voxtral 4B TTS 2603 BF16 GGUF",default:!0,format:"gguf",precision:"bf16",target_directory:"Voxtral-4B-TTS-2603-GGUF",files:["Voxtral-4B-TTS-2603-GGUF/voxtral-4b-tts-2603-bf16.gguf"],strip_prefix:"Voxtral-4B-TTS-2603-GGUF"},{id:"voxtral_4b_tts_2603_q8_0",display_name:"Voxtral 4B TTS 2603 Q8_0 GGUF",default:!1,format:"gguf",precision:"q8_0",target_directory:"Voxtral-4B-TTS-2603-GGUF",files:["Voxtral-4B-TTS-2603-GGUF/voxtral-4b-tts-2603-q8_0.gguf"],strip_prefix:"Voxtral-4B-TTS-2603-GGUF"}],dependencies:[],ui:{recommended_package:"voxtral_4b_tts_2603_bf16",tags:["TTS","GGUF"],docs:["docs/models/voxtral_tts.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:params.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json"},tensors:{model_weights:"weights:"}}]},sq={schema_version:1,family:"whistle_asr",display_name:"Whistle ASR",description:"Whistle offline speech recognition with FP32 GGUF weights, a GGML encoder and a host decoder.",category:"asr",status:"experimental",tasks:["asr"],modes:["offline"],languages:["en","de","fr","es","it","nl","pl"],runtime:{tags:["gguf"]},capabilities:{},options:{request:[{name:"language",type:"string",description:"Force one supported language; omit to detect the language.",required:!1}],session:[{name:"exec_plan",type:"string",description:"JSON component execution plans. Component decoder accepts impl native/neon (default native), both on CPU independently of the encoder backend. The experimental neon implementation accelerates the vocabulary projection with the framework NEON library and requires ENGINE_ENABLE_NEON=ON and AArch64 NEON. No artifacts or params are used.",required:!1,default:"{}"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"whistle_asr_f32",display_name:"Whistle ASR GGUF F32",default:!0,format:"gguf",precision:"f32",target_directory:"Whistle-GGUF",files:["Whistle-GGUF/whistle-f32.gguf"],strip_prefix:"Whistle-GGUF"}],dependencies:[],ui:{tags:["ASR","GGUF"],docs:["docs/models/whistle_asr.md"],recommended_package:"whistle_asr_f32"},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_blob:"model:tokenizer.blob",mel_filterbank:"model:mel_filterbank_80.f32",hadamard_perm1:"model:hadamard_perm1.f32",hadamard_perm2:"model:hadamard_perm2.f32"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_blob:"model:tokenizer.blob",mel_filterbank:"model:mel_filterbank_80.f32",hadamard_perm1:"model:hadamard_perm1.f32",hadamard_perm2:"model:hadamard_perm2.f32"},tensors:{weights:"model:whistle.safetensors"}}]},rq={schema_version:1,family:"xtts_v2",display_name:"XTTS v2",description:"Coqui XTTS v2 cross-lingual text-to-speech with voice cloning: GPT-2 mel-code generator, perceiver conditioning resampler, HiFi-GAN decoder, and speaker encoder.",category:"tts",status:"community",tasks:["tts"],modes:["offline"],languages:["en","es","fr","de","it","pt","pl","tr","ru","nl","cs","ar","zh-cn","hu","ko","ja","hi"],capabilities:{tts:["speaker_reference"]},options:{request:[{name:"language",type:"string",description:"Source language for text conditioning (e.g. 'en'); also selects tokenizer normalization.",required:!1,default:"en"},{name:"temperature",type:"float",description:"AR sampling temperature; official default 0.75.",required:!1,min:0,default:.75},{name:"top_k",type:"int",description:"AR top-k sampling; official default 50.",required:!1,min:0,default:50},{name:"top_p",type:"float",description:"AR nucleus sampling threshold; official default 0.85.",required:!1,min:0,max:1,default:.85},{name:"repetition_penalty",type:"float",description:"AR repetition penalty; official default 10.0.",required:!1,min:1,default:10},{name:"max_mel_tokens",type:"int",description:"Maximum mel codes to generate; official default 605.",required:!1,min:1,default:605},{name:"seed",type:"int",description:"Sampling seed; omitted selects a random seed.",required:!1,min:0,max:4294967295},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per framework text chunk; default 256.",required:!1,min:1,default:256},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode.",preset:"text_chunk_mode_full",required:!1,default:"word_budget"}],session:[{name:"conditionals_cache_slots",type:"int",description:"Prepared voice-conditioning cache slots; 0 disables caching.",required:!1,min:0,default:1}],load:[]},runtime:{tags:["gguf"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{vocoder:"model:xtts-v2-vocoder-f16.gguf"},tensors:{gpt_weights:{source:"weights:"},vocoder_weights:{source:"model:xtts-v2-vocoder-f16.gguf"}}}],packages:[{id:"xtts_v2_gguf_q8_0",display_name:"XTTS v2 GGUF (Q8_0)",default:!0,format:"gguf",precision:"q8_0",target_directory:"XTTS-v2-Q8",files:["q8_0/xtts-v2-gpt-q8_0.gguf","q8_0/xtts-v2-vocoder-f16.gguf","q8_0/mel_norms.bin"],download:{kind:"huggingface_snapshot",repo:"onicubag/xTTSv2-GGUF"},strip_prefix:"q8_0"},{id:"xtts_v2_gguf",display_name:"XTTS v2 GGUF (Original)",default:!1,format:"gguf",precision:"orig",target_directory:"XTTS-v2",files:["xtts-v2-gpt.gguf","xtts-v2-vocoder-f16.gguf","mel_norms.bin"],download:{kind:"huggingface_snapshot",repo:"onicubag/xTTSv2-GGUF"}},{id:"xtts_v2_gguf_q4_k_m",display_name:"XTTS v2 GGUF (Q4_K_M)",default:!1,format:"gguf",precision:"q4_k_m",target_directory:"XTTS-v2-Q4_K_M",files:["q4_k_m/xtts-v2-gpt-q4_k_m.gguf","q4_k_m/xtts-v2-vocoder-f16.gguf","q4_k_m/mel_norms.bin"],download:{kind:"huggingface_snapshot",repo:"onicubag/xTTSv2-GGUF"},strip_prefix:"q4_k_m"}],dependencies:[],ui:{tags:["TTS","Clone","GGUF"],docs:["docs/community_models/xtts_v2.md"],recommended_package:"xtts_v2_gguf_q8_0"}},oq={schema_version:1,family:"yue2",display_name:"YuE2",description:"YuE2 music generation model with symbolic ABC planning, semantic codec generation, NAR acoustic flow synthesis, and Oobleck VAE decode.",category:"audio_generation",status:"supported",tasks:["music"],modes:["offline"],languages:["en"],capabilities:{music:["lyrics","style_control"]},runtime:{tags:["gguf"]},dependencies:[],ui:{recommended_package:"yue2_main_q8_0",tags:["Music","GGUF"],docs:["docs/models/yue2.md","docs/music_generation.md","docs/gguf.md"]},options:{request:[{name:"style",type:"string",description:"Song style/tags.",required:!0},{name:"lyrics",type:"string",description:"Lyrics text. Leave empty for instrumental generation; if omitted, the CLI text input is used.",required:!1},{name:"cot",type:"enum",values:["off","melody","full"],description:"Symbolic planning route. off skips ABC generation; melody/full generate or consume ABC before music tokens.",required:!1,default:"full"},{name:"stop_after",type:"enum",values:["abc","semantic","audio"],description:"Last stage to run. abc writes the generated score only; semantic also writes the semantic token export; audio renders the full song.",required:!1,default:"audio"},{name:"abc",type:"string",description:"External ABC score text for melody/full routes.",required:!1},{name:"abc_file",type:"string",description:"Path to an external ABC score file for melody/full routes.",required:!1},{name:"semantic_prefix",type:"string",description:"JSON array of semantic codec indices to force as the start of the music stream.",required:!1},{name:"semantic_prefix_file",type:"string",description:"Path to a JSON array of semantic codec indices to force as the start of the music stream.",required:!1},{name:"nar_noise_file",type:"string",description:"Path to a raw float32 noise file for NAR generation, shaped [frames,64].",required:!1},{name:"export_semantic",type:"bool",description:"Attach the semantic token stream as a semantic artifact (JSON array of codec indices); default false.",required:!1,default:!1},{name:"guidance_scale",type:"float",description:"Semantic classifier-free guidance scale. Default follows the upstream route defaults. Omitted defaults to 1.01 with cot=off, otherwise 1.0.",required:!1,min:0,max:20},{name:"seed",type:"int",description:"Generation seed. Must be nonnegative and less than 2^63.",required:!1,min:0,default:1234},{name:"num_inference_steps",type:"int",description:"NAR midpoint ODE steps.",required:!1,min:1,default:8},{name:"abc_temperature",type:"float",description:"ABC planner sampling temperature.",required:!1,min:0,max:5},{name:"abc_top_p",type:"float",description:"ABC planner nucleus sampling probability. Must be in (0, 1].",required:!1,max:1},{name:"abc_top_k",type:"int",description:"ABC planner top-k sampling limit.",required:!1,min:1},{name:"abc_repetition_penalty",type:"float",description:"ABC planner repetition penalty. Must be positive.",required:!1},{name:"abc_penalty_window",type:"int",description:"ABC planner repetition penalty window.",required:!1,min:1},{name:"abc_min_tokens",type:"int",description:"Minimum ABC planner tokens before EOS is accepted.",required:!1,min:0},{name:"abc_max_tokens",type:"int",description:"Maximum ABC planner tokens. Zero is allowed when min_tokens is also zero.",required:!1,min:0},{name:"semantic_temperature",type:"float",description:"Semantic codec sampling temperature.",required:!1,min:0,max:5},{name:"semantic_top_p",type:"float",description:"Semantic codec nucleus sampling probability. Must be in (0, 1].",required:!1,max:1},{name:"semantic_top_k",type:"int",description:"Semantic codec top-k sampling limit.",required:!1,min:1},{name:"semantic_repetition_penalty",type:"float",description:"Semantic codec repetition penalty. Must be positive.",required:!1},{name:"semantic_penalty_window",type:"int",description:"Semantic codec repetition penalty window.",required:!1,min:1},{name:"semantic_min_tokens",type:"int",description:"Minimum semantic tokens before EOS is accepted.",required:!1,min:0},{name:"semantic_max_tokens",type:"int",description:"Maximum semantic codec tokens. Zero is allowed when min_tokens is also zero.",required:!1,min:0}],session:[{name:"ar_lora",type:"string",description:"AR adapter safetensors file; native, PEFT, and ComfyUI LoRA layouts. Absolute path or relative to the model root. Requires session reload.",required:!1},{name:"ar_lora_scale",type:"float",description:"AR LoRA delta scale; zero disables the adapter. Requires session reload.",required:!1,default:1},{name:"nar_lora",type:"string",description:"NAR adapter safetensors file. Absolute path or relative to the model root. Requires session reload.",required:!1},{name:"nar_lora_scale",type:"float",description:"NAR LoRA delta scale; full vae2llm/llm2vae replacements are unscaled. Zero disables the entire adapter. Requires session reload.",required:!1,default:1},{name:"weight_type",type:"enum",values:["native","f32","f16","bf16","q8_0","q4_0","q4_k"],description:"Shared weight storage type.",required:!1,default:"native"},{name:"model_weight_type",type:"enum",values:["native","f32","f16","bf16","q8_0","q4_0","q4_k"],description:"YuE2 MoT weight storage type. Omitted inherits weight_type.",required:!1},{name:"model_gguf",type:"string",description:"Yue2 main AR/NAR component GGUF file relative to the model root.",required:!1,default:"yue2-3b-q8_0.gguf"},{name:"vae_gguf",type:"string",description:"Yue2 VAE component GGUF file relative to the model root.",required:!1,default:"yue2-vae-f16.gguf"},{name:"vae_weight_type",type:"enum",values:["native","f32","f16","bf16","q8_0","q4_0","q4_k"],description:"YuE2 VAE weight storage type. Omitted inherits weight_type.",required:!1},{name:"model_weight_context_mb",type:"int",description:"YuE2 MoT weight context size in MiB.",required:!1,min:1,default:32},{name:"vae_weight_context_mb",type:"int",description:"YuE2 VAE weight context size in MiB.",required:!1,min:1,default:32},{name:"ar_prefill_graph_arena_mb",type:"int",description:"AR prefill graph arena size in MiB.",required:!1,min:1,default:32},{name:"ar_decode_graph_arena_mb",type:"int",description:"AR one-token decode graph arena size in MiB.",required:!1,min:1,default:32},{name:"nar_graph_arena_mb",type:"int",description:"NAR acoustic flow graph arena size in MiB.",required:!1,min:1,default:32},{name:"vae_graph_arena_mb",type:"int",description:"VAE decode graph arena size in MiB.",required:!1,min:1,default:32},{name:"attention",type:"enum",description:"NAR acoustic-flow attention lowering; auto selects the backend-appropriate implementation.",required:!1,values:["auto","flash","eager"],default:"auto"},{name:"perf_mode",type:"enum",description:"Performance preset; cuda_perf packs AR projections, aligns KV capacity to 256 tokens, retains stages and caps VAE tiles at 512 frames. Explicit controls override the preset. May change audio and substantially increase peak VRAM.",values:["off","cuda_perf"],required:!1,default:"off"},{name:"packed_projections",type:"bool",description:"Pack AR QKV and gate/up projections without changing weight dtype. Default false, true with cuda_perf. Explicit values override the preset.",required:!1},{name:"kv_cache_alignment",type:"int",description:"AR KV capacity alignment in tokens; values above 1 also use cached CUDA CFG attention windows of this size. Default 1, or 256 with cuda_perf; may use more memory and change numerics. Explicit values override the preset.",required:!1,min:1},{name:"mem_saver",type:"bool",description:"Release AR/NAR runtimes and VAE graphs after generation. Default true, false with cuda_perf. Disabling retains stages and can substantially increase peak VRAM.",required:!1},{name:"vae_tile_frames",type:"int",description:"Latent core frames per VAE tile; defaults to model configuration, capped at 512 with cuda_perf. Explicit values override the cap. The halo is unchanged; different boundaries can change numerical results.",required:!1,min:1},{name:"attention_tile_rows",type:"int",description:"Query rows per eager NAR attention tile; nonpositive values select automatic tiling to keep each score matrix below 3 GiB.",required:!1,default:0}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/Yue2-3B-GGUF",revision:"main",gated:!1}},packages:[{id:"yue2_main_q8_0",display_name:"Yue2 3B Main Q8_0",default:!0,format:"gguf",precision:"q8_0",target_directory:"Yue2-3B-GGUF",files:["sidecars/yue2-model-config.json","sidecars/yue2-generation-config.json","sidecars/yue2-qwen.tiktoken","sidecars/yue2-vae-config.json","yue2-3b-q8_0.gguf"]},{id:"yue2_main_bf16",display_name:"Yue2 3B Main BF16",format:"gguf",precision:"bf16",target_directory:"Yue2-3B-GGUF",files:["sidecars/yue2-model-config.json","sidecars/yue2-generation-config.json","sidecars/yue2-qwen.tiktoken","sidecars/yue2-vae-config.json","yue2-3b-bf16.gguf"]},{id:"yue2_main_q4_0",display_name:"Yue2 3B Main Q4_0",format:"gguf",precision:"q4_0",target_directory:"Yue2-3B-GGUF",files:["sidecars/yue2-model-config.json","sidecars/yue2-generation-config.json","sidecars/yue2-qwen.tiktoken","sidecars/yue2-vae-config.json","yue2-3b-q4_0.gguf"]},{id:"yue2_vae_f16",display_name:"Yue2 VAE F16",format:"gguf",precision:"f16",target_directory:"Yue2-3B-GGUF",files:["sidecars/yue2-model-config.json","sidecars/yue2-generation-config.json","sidecars/yue2-qwen.tiktoken","sidecars/yue2-vae-config.json","yue2-vae-f16.gguf"]},{id:"yue2_vae_f32",display_name:"Yue2 VAE F32",format:"gguf",precision:"f32",target_directory:"Yue2-3B-GGUF",files:["sidecars/yue2-model-config.json","sidecars/yue2-generation-config.json","sidecars/yue2-qwen.tiktoken","sidecars/yue2-vae-config.json","yue2-vae-f32.gguf"]}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{model_config:"model:sidecars/yue2-model-config.json",generation_config:"model:sidecars/yue2-generation-config.json",tiktoken:"model:sidecars/yue2-qwen.tiktoken",vae_config:"model:sidecars/yue2-vae-config.json"},tensors:{model_weights:{source:"weights:",prefix:"model_weights"}}},{format:"safetensors",roots:{model:"YuE2-3B",vae:"YuE2-Vae"},files:{model_config:"model:config.json",generation_config:"model:yue2_generation_config.json",tiktoken:"model:qwen.tiktoken",vae_config:"vae:config.json"},tensors:{model_weights:"model:model.safetensors",vae_weights:"vae:model.safetensors"}}]},lq={schema_version:1,family:"zipvoice",display_name:"ZipVoice",description:"Community ZipVoice / ZipVoice-Distill flow-matching TTS with a TTSZipformer backbone (U-Net downsampling stacks, compact relative position attention), duration prediction from prompt ratio, Euler solver with t-shift and classifier-free guidance, and Vocos mel-24kHz vocoder (k2-fsa/ZipVoice).",category:"tts",status:"community",tasks:["tts","clone"],modes:["offline","streaming"],languages:["en","zh"],runtime:{tags:["server","stream"]},capabilities:{clone:["speaker_reference"]},options:{request:[{name:"reference_text",type:"string",description:"Transcript matching the reference voice audio; required for zero-shot cloning.",required:!0},{name:"text_chunk_size",type:"int",description:"Maximum characters per generated text chunk; default 128.",required:!1,min:1,default:128},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode.",preset:"text_chunk_mode_full",required:!1,default:"word_budget"},{name:"guidance_scale",type:"float",description:"Guidance scale; inherits the session default (3.0 for both variants). ZipVoice-Distill uses a guidance-scale embedding; ZipVoice uses batched CFG. Zero disables guidance. Any finite nonnegative value is accepted.",required:!1,min:0,default:3},{name:"num_inference_steps",type:"int",description:"Euler ODE steps; inherits the session default (8 for both variants).",required:!1,min:1,max:64,default:8},{name:"shift",type:"float",description:"Shift timesteps toward low SNR (smaller = stronger shift); default 0.5. Must be finite and positive.",required:!1,default:.5},{name:"speed",type:"float",description:"Speech speed multiplier applied through the prompt-duration ratio; default 1.0. Must be finite and positive.",required:!1,default:1},{name:"feat_scale",type:"float",description:"Feature scale applied to log-mel features; default 0.1 (reference default). Must be finite and positive.",required:!1,default:.1},{name:"target_rms",type:"float",description:"Target RMS for prompt loudness normalization; 0 disables. Default 0.1. Negative values disable normalization; values above 1 are accepted.",required:!1,default:.1},{name:"seed",type:"int",description:"Noise seed; default 666 (reference default).",required:!1,min:0,default:666},{name:"language",type:"string",description:"espeak language for phonemization; default en-us.",required:!1,default:"en-us"}],session:[{name:"vocos_path",type:"string",description:"Path to the Vocos vocoder checkpoint (vocos.safetensors or GGUF); required unless bundled in the model GGUF or placed next to the checkpoint.",required:!1},{name:"guidance_scale",type:"float",description:"Default guidance scale for requests that do not set it; must be finite and nonnegative.",required:!1,min:0,default:3},{name:"num_inference_steps",type:"int",description:"Default Euler steps for requests that do not set it.",required:!1,min:1,max:64,default:8},{name:"shift",type:"float",description:"Default timestep shift for requests that do not set it; must be finite and positive.",required:!1,default:.5},{name:"espeak_library_path",type:"string",description:"Path to the espeak-ng shared library (e.g. /opt/homebrew/lib/libespeak-ng.dylib) for tokenizer=espeak.",required:!1},{name:"espeak_data_path",type:"string",description:"Path to the espeak-ng data directory or package for tokenizer=espeak.",required:!1}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"davidxifeng/zipvoice-gguf",revision:"main",gated:!1}},packages:[{id:"zipvoice_distill_gguf",display_name:"ZipVoice-Distill GGUF (local conversion)",description:"Self-contained GGUF: flow-matching model, bundled Vocos vocoder and the embedded text-frontend sidecars (tokens, config, zh tables) in one file. Converted from k2-fsa/ZipVoice with export_zipvoice_zh_dict.py + convert_zipvoice.py.",default:!0,format:"gguf",precision:"orig",target_directory:"ZipVoice-Distill-GGUF",files:["zipvoice-distill-orig.gguf"]},{id:"zipvoice_distill_q8_0",display_name:"ZipVoice-Distill GGUF (Q8_0)",description:"Self-contained Q8_0 GGUF with bundled Vocos and embedded text-frontend sidecars.",format:"gguf",precision:"q8_0",target_directory:"ZipVoice-Distill-GGUF",files:["zipvoice-distill-q8_0.gguf"]}],dependencies:[],ui:{recommended_package:"zipvoice_distill_gguf",tags:["TTS","Clone"],docs:["docs/models/zipvoice.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{tokens:"model:tokens.txt",model_config:"model:model.json"},optional_files:{zh_chars:"model:zh_chars.tsv",zh_phrases:"model:zh_phrases.tsv",zh_syllables:"model:zh_syllables.tsv",zh_jieba_dict:"model:zh_jieba_dict.txt",zh_hmm_model:"model:zh_hmm_model.txt"},tensors:{model:{source:"weights:",prefix:"model"}},optional_tensors:{vocos_vocoder:{source:"weights:",prefix:"vocos"}}}]},cq={models:JSON.parse('[{"id":"ace-step","display_name":"ACE-Step 1.5 (music gen)","family":"ace_step","path":"models/Ace-Step1.5","task":"gen","mode":"offline","download_id":"ace_step","default_text":"upbeat pop music with bright vocals and energetic drums","session_options":{"ace_step.mem_saver":"true","ace_step.dit_weight_type":"q8_0","ace_step.text_encoder_weight_type":"q8_0","ace_step.planner_weight_type":"q8_0"},"min_vram_gb":8},{"id":"ming3-tts","display_name":"Ming 3.0 TTS 0.5B","family":"ming3_tts","path":"models/Ming-3.0-TTS-0.5B-GGUF","task":"tts","mode":"offline","download_id":"ming_3_0_tts_0_5b_bf16","default_options":{"language":"en"},"default_text":"Good evening. The harbor is quiet tonight."},{"id":"ming3-tts-clone","display_name":"Ming 3.0 TTS 0.5B Clone","family":"ming3_tts","path":"models/Ming-3.0-TTS-0.5B-GGUF","task":"clon","mode":"offline","download_id":"ming_3_0_tts_0_5b_bf16","default_options":{"language":"en"},"input_hint_en":"Upload a reference voice. Its transcript is optional and enables acoustic-prefix conditioning."},{"id":"ming3-tts-design","display_name":"Ming 3.0 TTS 0.5B Voice Design","family":"ming3_tts","path":"models/Ming-3.0-TTS-0.5B-GGUF","task":"vdes","mode":"offline","download_id":"ming_3_0_tts_0_5b_bf16","default_options":{"language":"en"}},{"id":"ming3-audio-asr","display_name":"Ming 3.0 Audio Tiny ASR","family":"ming3_audio","path":"models/Ming-3.0-Audio-Tiny-GGUF","task":"asr","mode":"offline","download_id":"ming3_audio_tiny_bf16"},{"id":"ming3-audio-understanding","display_name":"Ming 3.0 Audio Tiny Understanding","family":"ming3_audio","path":"models/Ming-3.0-Audio-Tiny-GGUF","task":"asr","workflow":"analysis","mode":"offline","download_id":"ming3_audio_tiny_bf16","default_options":{"prompt":"Describe the sounds in this recording."}},{"id":"ming3-audio-response","display_name":"Ming 3.0 Audio Tiny Spoken Response","family":"ming3_audio","path":"models/Ming-3.0-Audio-Tiny-GGUF","task":"s2s","mode":"offline","download_id":"ming3_audio_tiny_bf16","default_options":{"voice_id":"US_James","language":"en"}},{"id":"ming3-audio-tts","display_name":"Ming 3.0 Audio Tiny TTS","family":"ming3_audio","path":"models/Ming-3.0-Audio-Tiny-GGUF","task":"tts","mode":"offline","download_id":"ming3_audio_tiny_bf16","default_options":{"voice_id":"US_James","language":"en"}},{"id":"ming3-audio-clone","display_name":"Ming 3.0 Audio Tiny Clone","family":"ming3_audio","path":"models/Ming-3.0-Audio-Tiny-GGUF","task":"clon","mode":"offline","download_id":"ming3_audio_tiny_bf16","default_options":{"language":"en"},"input_hint_en":"Upload a reference voice. Add its transcript to enable acoustic-prefix conditioning."},{"id":"xtts-v2","display_name":"XTTS v2","family":"xtts_v2","path":"models/XTTS-v2-Q8","task":"tts","mode":"offline","download_id":"xtts_v2_gguf_q8_0","input_hint_en":"Upload a reference voice for multilingual speech synthesis."},{"id":"latentsync","display_name":"LatentSync 1.6 Lip Sync","family":"latentsync","path":"models/LatentSync-1.6-GGUF","task":"gen","mode":"offline","download_id":"latentsync_1_6_q8_0_f16","arena":false,"input_hint_en":"Choose a face video and driving speech audio."},{"id":"apollo","display_name":"Apollo","family":"apollo","path":"models/Apollo-GGUF","task":"s2s","mode":"offline","download_id":"apollo_orig"},{"id":"ast-audioset","display_name":"AST AudioSet","family":"ast_audioset","path":"models/AST-AudioSet-GGUF/ast-audioset-f32.gguf","task":"cls","mode":"offline","download_id":"ast_audioset_f32"},{"id":"audio-flamingo-3","display_name":"Audio Flamingo 3","family":"audio_flamingo","path":"models/Audio-Flamingo-GGUF/audio-flamingo-3-q4_k.gguf","task":"asr","mode":"offline","download_id":"audio_flamingo_3_q4_k","workflow":"analysis"},{"id":"audio-flamingo-next","display_name":"Audio Flamingo Next","family":"audio_flamingo","path":"models/Audio-Flamingo-GGUF/audio-flamingo-next-q4_k.gguf","task":"asr","mode":"offline","download_id":"audio_flamingo_next_q4_k","workflow":"analysis"},{"id":"audio8-tts","display_name":"Audio8 TTS Preview 0.6B (tts 克隆, GGUF Q8)","display_name_en":"Audio8 TTS Preview 0.6B (tts + clone, GGUF Q8)","family":"audio8_tts","path":"models/Audio8-TTS-Preview-0.6B-GGUF","task":"tts","mode":"offline","download_id":"audio8_tts_preview_0_6b_q8_0","min_vram_gb":4,"input_hint":"**Audio8 TTS Preview 0.6B**:多语种 TTS / 零样本克隆(支持 yue/zh/nl/en/fr/de/it/ja/ko/pl/es/auto);上传参考音色+参考文本即克隆,留空为普通 TTS;长文本自动分句。","input_hint_en":"**Audio8 TTS Preview 0.6B**: multilingual TTS and zero-shot clone (yue/zh/nl/en/fr/de/it/ja/ko/pl/es/auto). Upload a reference voice + transcript to clone; leave empty for plain TTS. Long text is chunked automatically."},{"id":"audiosr","display_name":"AudioSR (audio super-resolution)","family":"audiosr","path":"models/AudioSR-GGUF/audiosr-basic-f32.gguf","task":"s2s","mode":"offline","download_id":"audiosr_basic_f32","min_vram_gb":8,"input_hint_en":"**AudioSR**: upload a source audio file to generate a super-resolved output."},{"id":"auk-edit","display_name":"AuK (audio editing, community)","family":"auk","path":"models/AuK-Base-and-Flash-GGUF","task":"gen","mode":"offline","arena":false,"download_id":"auk_base_f32","default_text":"Remove the background noise and make the voice clearer.","min_vram_gb":20,"input_hint_en":"**AuK audio editing** (community): upload source audio and describe the requested speech, singing, acoustic, paralinguistic, enhancement, or separation edit."},{"id":"auk-tts","display_name":"AuK (speech generation, community)","family":"auk","path":"models/AuK-Base-and-Flash-GGUF","task":"tts","mode":"offline","arena":false,"download_id":"auk_base_f32","default_text":"The next train leaves in ten minutes.","min_vram_gb":20,"input_hint_en":"**AuK** (community): enter text plus a voice description, or provide an optional reference voice for zero-shot speech generation. Select compatible Base or AuK-Flash, Qwen, and VAE components before loading."},{"id":"breeze-tts-clone","display_name":"BreezeTTS 2 Clone","family":"breeze_tts","path":"models/Breeze-TTS-2-GGUF/breeze-tts-2-q8_0.gguf","task":"clon","mode":"offline","download_id":"breeze_tts_2_q8_0","min_vram_gb":8,"input_hint_en":"**BreezeTTS 2 Clone**: upload a reference voice and provide the matching reference transcript."},{"id":"breeze-tts","display_name":"BreezeTTS 2 VoiceDesign","family":"breeze_tts","path":"models/Breeze-TTS-2-GGUF/breeze-tts-2-q8_0.gguf","task":"vdes","mode":"offline","download_id":"breeze_tts_2_q8_0","min_vram_gb":8,"input_hint_en":"**BreezeTTS 2 VoiceDesign**: enter text and describe the target voice in Model parameters. No reference voice is required."},{"id":"bs-roformer","display_name":"BS-RoFormer (sep 人声分离)","display_name_en":"BS-RoFormer (vocal separation)","family":"bs_roformer","path":"models/BS-RoFormer-ep368-GGUF/bs-roformer-ep368-q8_0.gguf","task":"sep","mode":"offline","download_id":"bs_roformer_q8_0","min_vram_gb":3},{"id":"canary-asr","display_name":"Canary 180M Flash","family":"canary_asr","path":"models/Canary-180M-Flash-GGUF","task":"asr","mode":"offline","download_id":"canary_180m_flash_f32"},{"id":"ced-base","display_name":"CED Base","family":"ced","path":"models/CED-GGUF/ced-base-f32.gguf","task":"cls","mode":"offline","download_id":"ced_base_f32"},{"id":"ced-mini","display_name":"CED Mini","family":"ced","path":"models/CED-GGUF/ced-mini-f32.gguf","task":"cls","mode":"offline","download_id":"ced_mini_f32"},{"id":"ced-small","display_name":"CED Small","family":"ced","path":"models/CED-GGUF/ced-small-f32.gguf","task":"cls","mode":"offline","download_id":"ced_small_f32"},{"id":"ced-tiny","display_name":"CED Tiny","family":"ced","path":"models/CED-GGUF/ced-tiny-f32.gguf","task":"cls","mode":"offline","download_id":"ced_tiny_f32"},{"id":"chatterbox-vc","display_name":"Chatterbox (vc 声音转换)","display_name_en":"Chatterbox (voice conversion)","family":"chatterbox","path":"models/chatterbox","task":"vc","mode":"offline","download_id":"chatterbox","min_vram_gb":12,"input_hint":"**Chatterbox VC**:上传源语音和目标音色参考;模型保留源语音内容,将说话人音色转换为目标音色,输出 24kHz 单声道。","input_hint_en":"**Chatterbox VC**: upload source speech and a target-voice reference. It preserves the source content and converts the speaker identity; output is 24 kHz mono."},{"id":"chatterbox","display_name":"Chatterbox (voice clone)","family":"chatterbox","path":"models/chatterbox","task":"clon","mode":"offline","download_id":"chatterbox","min_vram_gb":12},{"id":"chatterbox-turbo","display_name":"Chatterbox Turbo (tts)","family":"chatterbox_turbo","path":"models/Chatterbox-Turbo-GGUF/chatterbox-turbo-q8_0.gguf","task":"tts","mode":"offline","download_id":"chatterbox_turbo_q8_0","min_vram_gb":4,"input_hint_en":"**Chatterbox Turbo**: fast English TTS with the built-in voice. No reference voice is required."},{"id":"citrinet-asr","display_name":"Citrinet ASR (asr)","family":"citrinet_asr","path":"models/citrinet","task":"asr","mode":"offline","download_id":"citrinet_asr","min_vram_gb":2},{"id":"cohere-asr","display_name":"Cohere Transcribe","family":"cohere_asr","path":"models/Cohere-Transcribe-GGUF","task":"asr","mode":"offline","download_id":"cohere_transcribe_bf16"},{"id":"r2t2-asr","display_name":"Confucius4-R2T2 (asr, 实时流式)","display_name_en":"Confucius4-R2T2 (asr, real-time streaming)","family":"confucius4_r2t2","path":"models/Confucius4-R2T2-GGUF/r2t2-q8_0.gguf","task":"asr","mode":"offline","download_id":"confucius4_r2t2_q8_0","min_vram_gb":5,"input_hint":"**Confucius4-R2T2**:网易有道实时流式 ASR,Qwen3-ASR-1.7B 微调,LSP 稳定前缀解码;提交文本永不回改,支持 80ms-2s 分块;Q8_0 GGUF(2.3G,自包含单文件),也支持 F16。","input_hint_en":"**Confucius4-R2T2**: NetEase Youdao real-time streaming ASR, a Qwen3-ASR 1.7B fine-tune with Longest Stable Prefix decoding. Committed text is never revised; 80 ms-2 s chunks; Q8_0 GGUF (2.3 GB, self-contained single file), F16 also available."},{"id":"confucius4-tts","display_name":"Confucius4-TTS (voice clone, GGUF)","display_name_en":"Confucius4-TTS (voice clone, GGUF)","family":"confucius4_tts","path":"models/Confucius4-TTS-GGUF","task":"clon","mode":"offline","download_id":"confucius4_tts_orig","min_vram_gb":8,"input_hint":"**Confucius4-TTS**:需要参考音色;当前中文/英语路径更可靠,非中英语种仍在验证中。","input_hint_en":"**Confucius4-TTS**: requires a reference voice. Chinese/English are the most reliable paths; other languages are still being validated."},{"id":"controlfoley","display_name":"ControlFoley (Foley/SFX)","family":"controlfoley","path":"models/ControlFoley-GGUF/controlfoley-large-44k-q8_0.gguf","task":"gen","mode":"offline","download_id":"controlfoley_large_44k_q8_0","min_vram_gb":12,"request_options":["video"],"input_hint_en":"**ControlFoley**: Foley generation from text, video, text+video, audio+video, or video only. Upload video in the Video field; upload source audio for AC-V2A."},{"id":"cosyvoice3","display_name":"CosyVoice3 Clone","family":"cosyvoice3","path":"models/CosyVoice3-GGUF/cosyvoice3-q8_0.gguf","task":"clon","mode":"offline","download_id":"cosyvoice3_q8_0","min_vram_gb":8,"input_hint_en":"**CosyVoice3 Clone**: upload a reference voice and provide the matching reference transcript. Use `template_name` for zero-shot or cross-lingual requests."},{"id":"cosyvoice3-instruct","display_name":"CosyVoice3 Instruct","family":"cosyvoice3","path":"models/CosyVoice3-GGUF/cosyvoice3-q8_0.gguf","task":"tts","mode":"offline","download_id":"cosyvoice3_q8_0","min_vram_gb":8,"input_hint_en":"**CosyVoice3 Instruct**: upload a reference voice, provide its transcript, and set `template_name=instruct` with an instruction."},{"id":"crisperwhisper","display_name":"CrisperWhisper 2.0 Large","family":"crisperwhisper","path":"models/CrisperWhisper2.0-GGUF/crisperwhisper-2-large-q8_0.gguf","task":"asr","mode":"offline","download_id":"crisperwhisper_2_large_q8_0"},{"id":"crisperwhisper-align","display_name":"CrisperWhisper 2.0 Large (alignment)","family":"crisperwhisper","path":"models/CrisperWhisper2.0-GGUF/crisperwhisper-2-large-q8_0.gguf","task":"align","mode":"offline","download_id":"crisperwhisper_2_large_q8_0","workflow":"analysis"},{"id":"deepfilternet2","display_name":"DeepFilterNet2","family":"builtin_audio_utils","task":"s2s","workflow":"enhancement","mode":"offline","path":"models/Audio-Utilities/deepfilternet2/deepfilternet2.safetensors","load_options":{"utility":"deepfilternet2"},"weights_url":"https://raw.githubusercontent.com/0xShug0/audio.cpp/main/assets/framework/audio_utilities/deepfilternet2/deepfilternet2.safetensors"},{"id":"dots-tts-meanflow","display_name":"DotTTS MeanFlow (tts + clone)","family":"dots_tts","path":"models/DotTTS-MF-GGUF","task":"tts","mode":"offline","download_id":"dots_tts_mf_q8_0","min_vram_gb":8},{"id":"dots-tts-soar","display_name":"DotTTS SOAR (tts + clone)","family":"dots_tts","path":"models/DotTTS-SOAR-GGUF","task":"tts","mode":"offline","download_id":"dots_tts_soar_q8_0","min_vram_gb":8},{"id":"dramabox","display_name":"DramaBox (tts 克隆, GGUF Q8)","display_name_en":"DramaBox (tts + clone, GGUF Q8)","family":"dramabox","path":"models/DramaBox-GGUF","task":"tts","mode":"offline","download_id":"dramabox_q8_0","min_vram_gb":16,"input_hint":"**DramaBox**:英语 TTS / voice clone;上传参考音色可克隆,长文本建议写清楚说话人描述。","input_hint_en":"**DramaBox**: English TTS and voice clone. Upload a reference voice to clone; for long text, keep speaker wording explicit."},{"id":"echo-tts","display_name":"Echo-TTS (voice clone)","family":"echo_tts","path":"models/Echo-TTS-GGUF","task":"clon","mode":"offline","download_id":"echo_tts_q8_0","min_vram_gb":8,"input_hint_en":"**Echo-TTS**: English zero-shot cloning at 44.1 kHz. Upload a reference voice -- no transcript needed. Output is CC-BY-NC-SA and may not be used commercially."},{"id":"firered-stream-vad","display_name":"FireRed Stream-VAD","family":"firered_vad","path":"models/FireRedVAD-GGUF/firered-stream-vad-f32.gguf","task":"vad","mode":"offline","download_id":"firered_stream_vad_f32"},{"id":"firered-vad","display_name":"FireRed VAD","family":"firered_vad","path":"models/FireRedVAD-GGUF/firered-vad-f32.gguf","task":"vad","mode":"offline","download_id":"firered_vad_f32"},{"id":"firered-audio-asr","display_name":"FireRedAudio (ASR / audio QA)","family":"firered_audio","path":"models/FireRedAudio-GGUF/firered-audio-q8_0.gguf","task":"asr","mode":"offline","download_id":"firered_audio_q8_0","min_vram_gb":10,"input_hint_en":"**FireRedAudio ASR**: upload audio, then use the text box as the transcription or audio-understanding instruction."},{"id":"firered-audio-acoustic-edit","display_name":"FireRedAudio Acoustic Edit","family":"firered_audio","path":"models/FireRedAudio-GGUF/firered-audio-q8_0.gguf","task":"gen","mode":"offline","download_id":"firered_audio_q8_0","min_vram_gb":10,"input_hint_en":"**FireRedAudio Acoustic Edit**: upload source audio and use a trained acoustic instruction such as `shift the pitch by 3 steps`."},{"id":"firered-audio-tts","display_name":"FireRedAudio Clone","family":"firered_audio","path":"models/FireRedAudio-GGUF/firered-audio-q8_0.gguf","task":"clon","mode":"offline","download_id":"firered_audio_q8_0","min_vram_gb":10,"input_hint_en":"**FireRedAudio Clone**: upload a reference voice and provide the matching reference transcript. For no-reference voice design, use the VoiceDesign entry."},{"id":"firered-audio-semantic-edit","display_name":"FireRedAudio Semantic Edit","family":"firered_audio","path":"models/FireRedAudio-GGUF/firered-audio-q8_0.gguf","task":"gen","mode":"offline","download_id":"firered_audio_q8_0","min_vram_gb":10,"input_hint_en":"**FireRedAudio Semantic Edit**: upload source audio and describe the content edit in Model parameters."},{"id":"firered-audio-vdesign","display_name":"FireRedAudio VoiceDesign","family":"firered_audio","path":"models/FireRedAudio-GGUF/firered-audio-q8_0.gguf","task":"vdes","mode":"offline","download_id":"firered_audio_q8_0","min_vram_gb":10,"input_hint_en":"**FireRedAudio VoiceDesign**: describe the target voice in Voice description, then enter the text to synthesize."},{"id":"fireredtts3-base","display_name":"FireRedTTS3 Base (voice clone)","family":"fireredtts3","path":"models/FireRedTTS3-Base-GGUF/fireredtts3-base-q8_0.gguf","task":"clon","mode":"offline","download_id":"fireredtts3_base_q8_0","min_vram_gb":8,"input_hint_en":"**FireRedTTS3 Base**: zero-shot voice cloning. Upload a reference voice and provide the matching reference transcript."},{"id":"fireredtts3-instruct","display_name":"FireRedTTS3 Instruct Clone","family":"fireredtts3","path":"models/FireRedTTS3-Instruct-GGUF/fireredtts3-instruct-q8_0.gguf","task":"clon","mode":"offline","download_id":"fireredtts3_instruct_q8_0","min_vram_gb":8,"input_hint_en":"**FireRedTTS3 Instruct Clone**: official Instruct `generate_tts` path. Upload a reference voice and provide the matching reference transcript. For no-reference voice design, use the VoiceDesign entry."},{"id":"fireredtts3-instruct-vdesign","display_name":"FireRedTTS3 Instruct VoiceDesign","family":"fireredtts3","path":"models/FireRedTTS3-Instruct-GGUF/fireredtts3-instruct-q8_0.gguf","task":"vdes","mode":"offline","download_id":"fireredtts3_instruct_q8_0","min_vram_gb":8,"input_hint_en":"**FireRedTTS3 VoiceDesign**: describe the target voice in Voice description, then enter the text to synthesize."},{"id":"fish-drama3","display_name":"Fish Audio Drama 3","family":"fish_drama3","path":"models/Drama-3-GGUF/drama-3-backbone-4bit-experts-Q4_K_S.gguf","task":"tts","mode":"offline","arena":false,"download_id":"fish_drama3_q4_backbone","min_vram_gb":8,"session_options":{"fish_drama3.disk_experts":"true","fish_drama3.pin_experts":"true","fish_drama3.expert_cache_size":"8","fish_drama3.cpu_expert_layers":"0","fish_drama3.codec_backend":"same","fish_drama3.context_length":"4096"},"request_options":["reference_text","multi_reference_cond","text_chunk_size","temperature","top_p","top_k","max_tokens","seed"]},{"id":"fish-drama3-small","display_name":"Fish Audio Drama3-small","family":"fish_drama3","path":"models/Drama3-small-GGUF/drama3-small-IQ3_XXS.gguf","task":"tts","mode":"offline","arena":false,"download_id":"fish_drama3_small_iq3_xxs","min_vram_gb":7,"session_options":{"fish_drama3.disk_experts":"true","fish_drama3.pin_experts":"true","fish_drama3.expert_cache_size":"8","fish_drama3.cpu_expert_layers":"0","fish_drama3.codec_backend":"same","fish_drama3.context_length":"4096"}},{"id":"fish-audio-s2-pro","display_name":"Fish Audio S2 Pro (tts 克隆/控制标记, GGUF Q8)","display_name_en":"Fish Audio S2 Pro (tts + clone/control tags, GGUF Q8)","family":"fish_audio","path":"models/Fish-Audio-S2-Pro-GGUF","task":"tts","mode":"offline","download_id":"fish_audio_s2_pro","min_vram_gb":8,"input_hint":"**Fish Audio S2 Pro**:Q8_0 GGUF 包;中英+自动语种;上传参考音色即克隆;正文里可写行内控制标记(如 (laugh))。","input_hint_en":"**Fish Audio S2 Pro**: Q8_0 GGUF package; English/Chinese plus auto language. Upload a reference voice to clone; inline control tags such as (laugh) can be written in the text."},{"id":"flashsr","display_name":"FlashSR","family":"builtin_audio_utils","task":"s2s","workflow":"enhancement","mode":"offline","path":"models/Audio-Utilities/flashsr/flashsr.safetensors","load_options":{"utility":"flashsr"},"weights_url":"https://raw.githubusercontent.com/0xShug0/audio.cpp/main/assets/framework/audio_utilities/flashsr/flashsr.safetensors"},{"id":"fun-asr-nano","display_name":"Fun-ASR-Nano 2512 (asr, GGUF Q8)","display_name_en":"Fun-ASR-Nano 2512 (asr, GGUF Q8)","family":"fun_asr_nano","path":"models/Fun-ASR-Nano-2512-GGUF","task":"asr","mode":"offline","download_id":"fun_asr_nano_2512_q8_0","min_vram_gb":4,"input_hint":"**Fun-ASR-Nano**:轻量离线 ASR;支持 auto/中文/英语/日语。","input_hint_en":"**Fun-ASR-Nano**: lightweight offline ASR; supports auto, Chinese, English and Japanese."},{"id":"gigaam-multilingual","display_name":"GigaAM Multilingual","family":"gigaam_asr","task":"asr","mode":"offline","path":"models/GigaAM-ASR-GGUF/gigaam-multilingual-ctc-f16.gguf","download_id":"gigaam_multilingual_ctc_f16"},{"id":"gigaam-multilingual-large","display_name":"GigaAM Multilingual Large","family":"gigaam_asr","task":"asr","mode":"offline","path":"models/GigaAM-ASR-GGUF/gigaam-multilingual-large-ctc-f16.gguf","download_id":"gigaam_multilingual_large_ctc_f16"},{"id":"gigaam-v3-ctc","display_name":"GigaAM v3 CTC","family":"gigaam_asr","task":"asr","mode":"offline","path":"models/GigaAM-ASR-GGUF/gigaam-v3-ctc-f16.gguf","download_id":"gigaam_v3_ctc_f16"},{"id":"gigaam-v3-e2e-ctc","display_name":"GigaAM v3 E2E CTC","family":"gigaam_asr","task":"asr","mode":"offline","path":"models/GigaAM-ASR-GGUF/gigaam-v3-e2e-ctc-f16.gguf","download_id":"gigaam_v3_e2e_ctc_f16"},{"id":"gigaam-v3-e2e-rnnt","display_name":"GigaAM v3 E2E RNN-T","family":"gigaam_asr","task":"asr","mode":"offline","path":"models/GigaAM-ASR-GGUF/gigaam-v3-e2e-rnnt-f16.gguf","download_id":"gigaam_v3_e2e_rnnt_f16"},{"id":"gigaam-v3-rnnt","display_name":"GigaAM v3 RNN-T","family":"gigaam_asr","task":"asr","mode":"offline","path":"models/GigaAM-ASR-GGUF/gigaam-v3-rnnt-f16.gguf","download_id":"gigaam_v3_rnnt_f16"},{"id":"glm-tts","display_name":"GLM-TTS (tts 克隆, 社区)","display_name_en":"GLM-TTS (tts + clone, community)","family":"glm_tts","path":"models/GLM-TTS","task":"tts","mode":"offline","download_id":"glm_tts","min_vram_gb":8,"input_hint":"**GLM-TTS**(社区模型):中英 TTS / voice clone;上传参考音色即克隆。","input_hint_en":"**GLM-TTS** (community): Chinese/English TTS and voice clone. Upload a reference voice to clone."},{"id":"gradium-phonon-31m-en","display_name":"Gradium Phonon 31m English (tts)","family":"gradium_phonon","path":"models/phonon-31m-en","task":"tts","mode":"offline","download_id":"gradium_phonon_31m_en_q8_0","min_vram_gb":1},{"id":"granite5asr","display_name":"Granite Speech 5.0 470M TurboCTC (asr)","display_name_en":"Granite Speech 5.0 470M TurboCTC (asr)","family":"granite5asr","path":"models/Granite-Speech-5.0-470M-TurboCTC-GGUF/granite-speech-5.0-470m-turboctc-q8_0.gguf","task":"asr","mode":"offline","download_id":"granite5asr_q8_0","min_vram_gb":4,"input_hint":"**Granite Speech 5.0 TurboCTC**:IBM 470M 英语 ASR;超快 Conformer CTC 转写;支持长音频自动分段与流式模式。","input_hint_en":"**Granite Speech 5.0 TurboCTC**: IBM 470M English ASR with ultra-fast Conformer CTC architecture, supporting long-form audio segmentation and streaming mode."},{"id":"gtcrn-dns3","display_name":"GTCRN DNS3","family":"builtin_audio_utils","task":"s2s","workflow":"enhancement","mode":"offline","path":"models/Audio-Utilities/gtcrn/gtcrn_dns3.safetensors","load_options":{"utility":"gtcrn_dns3"},"weights_url":"https://raw.githubusercontent.com/0xShug0/audio.cpp/main/assets/framework/audio_utilities/gtcrn/gtcrn_dns3.safetensors"},{"id":"gtcrn-streaming","display_name":"GTCRN Streaming","family":"builtin_audio_utils","task":"s2s","workflow":"enhancement","mode":"offline","path":"models/Audio-Utilities/gtcrn/gtcrn_streaming.safetensors","load_options":{"utility":"gtcrn_streaming"},"weights_url":"https://raw.githubusercontent.com/0xShug0/audio.cpp/main/assets/framework/audio_utilities/gtcrn/gtcrn_streaming.safetensors"},{"id":"gtcrn-vctk","display_name":"GTCRN VCTK","family":"builtin_audio_utils","task":"s2s","workflow":"enhancement","mode":"offline","path":"models/Audio-Utilities/gtcrn/gtcrn_vctk.safetensors","load_options":{"utility":"gtcrn_vctk"},"weights_url":"https://raw.githubusercontent.com/0xShug0/audio.cpp/main/assets/framework/audio_utilities/gtcrn/gtcrn_vctk.safetensors"},{"id":"heartmula","display_name":"HeartMuLa 3B (music gen)","family":"heartmula","path":"models/HeartMuLa","task":"gen","mode":"offline","download_id":"heartmula","session_options":{"heartmula.mem_saver":"true"},"min_vram_gb":24},{"id":"higgs-audio-stt","display_name":"Higgs Audio v3 STT (asr, 英语)","display_name_en":"Higgs Audio v3 STT (asr, English)","family":"higgs_audio_stt","path":"models/higgs-audio-v3-stt","task":"asr","mode":"offline","download_id":"higgs_audio_stt","min_vram_gb":8,"input_hint":"**Higgs Audio STT**:英语转写;可在文本框填指令(默认相当于 Transcribe the speech.);离线模式自动切分长音频。","input_hint_en":"**Higgs Audio STT**: English transcription. The text box accepts an instruction; offline mode automatically chunks long audio."},{"id":"higgs-audio-tts","display_name":"Higgs Audio v3 TTS 4B (tts 克隆, GGUF Q8)","display_name_en":"Higgs Audio v3 TTS 4B (tts + clone, GGUF Q8)","family":"higgs_audio_tts","path":"models/Higgs-Audio-v3-TTS-4B-GGUF","task":"tts","mode":"offline","download_id":"higgs_audio_v3_tts_4b","min_vram_gb":6,"input_hint":"**Higgs Audio v3 TTS**:Q8_0 GGUF 包(权重已量化,不用再设 weight_type);上传参考音色即声音克隆,留空用默认音色;长文本自动分段。","input_hint_en":"**Higgs Audio v3 TTS**: Q8_0 GGUF package (already quantized — no weight_type needed). Upload a reference voice to clone, or leave it empty for the default voice; long text is chunked automatically."},{"id":"htdemucs","display_name":"HTDemucs (sep 音源分离)","display_name_en":"HTDemucs (source separation)","family":"htdemucs","path":"models/htdemucs","task":"sep","mode":"offline","download_id":"htdemucs","min_vram_gb":3},{"id":"htdemucs_6stems","display_name":"HTDemucs 6-stem (sep 音源分离)","display_name_en":"HTDemucs 6-stem (source separation)","family":"htdemucs_6stems","path":"models/htdemucs_6stems","task":"sep","mode":"offline","download_id":"htdemucs_6stems","min_vram_gb":4},{"id":"hviske-asr","display_name":"Hviske v5.3 (asr, 丹麦语)","display_name_en":"Hviske v5.3 (asr, Danish)","family":"hviske_asr","path":"models/hviske-v5.3","task":"asr","mode":"offline","download_id":"hviske_asr","min_vram_gb":6,"input_hint":"**Hviske ASR**:丹麦语专用;模型侧自动分段。","input_hint_en":"**Hviske ASR**: dedicated Danish transcription with automatic model-side segmentation."},{"id":"hviske-v6","display_name":"Hviske v6 (Danish ASR)","family":"hviske_asr_v6","path":"models/Hviske-v6-GGUF/hviske-v6-bf16.gguf","task":"asr","mode":"offline","download_id":"hviske_asr_v6_bf16"},{"id":"index-echo-2b","display_name":"Index-Echo S2TT 2B","family":"index_echo","path":"models/Index-Echo-S2TT-GGUF/index-echo-s2tt-2b-orig.gguf","task":"asr","mode":"offline","download_id":"index_echo_s2tt_2b_orig"},{"id":"index-echo-9b","display_name":"Index-Echo S2TT 9B","family":"index_echo","path":"models/Index-Echo-S2TT-GGUF/index-echo-s2tt-9b-orig.gguf","task":"asr","mode":"offline","download_id":"index_echo_s2tt_9b_orig"},{"id":"index-tts2","display_name":"IndexTTS2 (tts 中英克隆+情感)","display_name_en":"IndexTTS2 (tts, zh/en clone + emotion)","family":"index_tts2","path":"models/IndexTTS-2","task":"tts","mode":"offline","download_id":"index_tts2","min_vram_gb":8},{"id":"index-tts2.5","display_name":"IndexTTS2.5 (tts 多语种克隆+情感, GGUF Q8)","display_name_en":"IndexTTS2.5 (tts, zh/en/ja/es/ar clone + emotion, GGUF Q8)","family":"index_tts2","path":"models/IndexTTS2.5-GGUF","task":"tts","mode":"offline","download_id":"index_tts2_5_q8_0","min_vram_gb":8,"input_hint":"**IndexTTS2.5**:中/英/日/西/阿零样本克隆;上传参考音色即克隆;可在『其它参数(JSON)』里传 `lang`(默认 auto:含汉字按中文,否则按英文)与情感选项。许可证为 bilibili Model Use License(非 OSI),商用前请确认条款。","input_hint_en":"**IndexTTS2.5**: zero-shot cloning in zh/en/ja/es/ar. Upload a reference voice to clone; pass `lang` (default auto: zh when the text contains Han characters, otherwise en) and emotion options through the JSON box. Weights are under the bilibili Model Use License (not OSI-approved) — check terms before commercial use."},{"id":"inflect-v2","display_name":"Inflect Micro v2 (tts 英语, 社区)","display_name_en":"Inflect Micro v2 (en tts, community)","family":"inflect_v2","path":"models/Inflect-Micro-v2","task":"tts","mode":"offline","download_id":"inflect_micro_v2","min_vram_gb":2,"input_hint":"**Inflect Micro v2**(社区模型):英语离线 TTS;Micro 是默认包,Nano 可通过模型管理器另装后手动选择路径。","input_hint_en":"**Inflect Micro v2** (community): English offline TTS. Micro is the default package; Nano can be installed separately and selected manually."},{"id":"irodori-tts-v3-500m","display_name":"Irodori-TTS 500M v3 (tts 日语)","display_name_en":"Irodori-TTS 500M v3 (ja tts)","family":"irodori_tts","path":"models/Irodori-TTS-500M-v3-GGUF","task":"tts","mode":"offline","download_id":"irodori_tts_500m_v3_q8_0","min_vram_gb":4},{"id":"irodori-tts-v3-vdesign","display_name":"Irodori-TTS 600M v3 VoiceDesign (vdes 日语)","display_name_en":"Irodori-TTS 600M v3 VoiceDesign (ja vdes)","family":"irodori_tts","path":"models/Irodori-TTS-600M-v3-VoiceDesign-GGUF","task":"vdes","mode":"offline","download_id":"irodori_tts_600m_v3_voicedesign_q8_0","min_vram_gb":4,"input_hint":"**Irodori-TTS v3 VoiceDesign**(日语):『音色描述』用日语 caption 描述音色(如「落ち着いた大人の男性。深く響く声。」),文本填要念的日语内容,无需参考音频。","input_hint_en":"**Irodori-TTS v3 VoiceDesign**: provide a Japanese voice caption and Japanese synthesis text. No reference recording is required."},{"id":"irodori-tts","display_name":"Irodori-TTS v4.1 Small (tts 日语, GGUF Q8)","display_name_en":"Irodori-TTS v4.1 Small (ja tts, GGUF Q8)","family":"irodori_tts","path":"models/Irodori-TTS-v4-Small-GGUF","task":"tts","mode":"offline","download_id":"irodori_tts_v4_small_q8_0","min_vram_gb":4,"input_hint":"**Irodori-TTS v4.1 Small**:日语 TTS;可不上传参考音色直接生成,也可上传参考音色进行克隆;可在声音设计页用日语 caption 描述音色。","input_hint_en":"**Irodori-TTS v4.1 Small**: Japanese TTS. Generate without a reference voice, clone from an uploaded reference, or use the voice-design page with a Japanese voice caption."},{"id":"irodori-tts-vdesign","display_name":"Irodori-TTS v4.1 Small VoiceDesign (vdes 日语, GGUF Q8)","display_name_en":"Irodori-TTS v4.1 Small VoiceDesign (ja vdes, GGUF Q8)","family":"irodori_tts","path":"models/Irodori-TTS-v4-Small-GGUF","task":"vdes","mode":"offline","download_id":"irodori_tts_v4_small_q8_0","min_vram_gb":4,"input_hint":"**Irodori-TTS v4.1 VoiceDesign**(日语):『音色描述』用日语 caption 描述音色(如「落ち着いた大人の男性。深く響く声。」),文本填要念的日语内容,无需参考音频。","input_hint_en":"**Irodori-TTS v4.1 VoiceDesign**: provide a Japanese voice caption and Japanese synthesis text. No reference recording is required."},{"id":"kitten-tts2","display_name":"Kitten TTS 2","family":"kitten_tts2","path":"models/kitten-tts2/kitten-tts2-q8-v2-multilingual.gguf","task":"tts","mode":"offline","download_id":"kitten_tts2_q8_v2","min_vram_gb":7,"input_hint":"Multilingual speech: choose a matching language preset or supply a reference clip and its transcript. Write numbers and abbreviations as spoken words."},{"id":"kitten-tts2-20261021","display_name":"Kitten TTS 2 (2026-10-21)","family":"kitten_tts2","path":"models/KittenTTS2-GGUF","task":"tts","mode":"offline","download_id":"kitten_tts2_20261021_q8_0","input_hint_en":"Updated multilingual checkpoint. Choose Q8 or Q4, then a voice preset or reference recording."},{"id":"kitten-tts","display_name":"KittenTTS Mini 0.8 (tts 英语, 社区)","display_name_en":"KittenTTS Mini 0.8 (en tts, community)","family":"kitten_tts","path":"models/KittenTTS-GGUF/kitten-tts-mini-0.8-orig.gguf","task":"tts","mode":"offline","download_id":"kitten_tts_mini_0_8_orig","min_vram_gb":1,"input_hint":"**KittenTTS Mini 0.8**(社区模型):轻量英语 TTS,内置八种音色,不需要上传参考音频。","input_hint_en":"**KittenTTS Mini 0.8** (community): lightweight English TTS with eight built-in voices; no reference audio is needed."},{"id":"kokoro-tts","display_name":"Kokoro 82M (tts, preset voices)","family":"kokoro_tts","path":"models/Kokoro-82M-GGUF/kokoro-82m-q8_0.gguf","task":"tts","mode":"offline","download_id":"kokoro_82m_q8_0","min_vram_gb":1,"input_hint_en":"**Kokoro 82M**: multilingual TTS with built-in preset voices. Choose a language and voice; no reference audio is needed."},{"id":"kroko-asr","display_name":"Kroko Community ASR (asr, GGUF Q8)","display_name_en":"Kroko Community ASR (asr, GGUF Q8)","family":"kroko_asr","path":"models/Kroko-ASR-GGUF","task":"asr","mode":"offline","download_id":"kroko_asr_community_q8_0","min_vram_gb":4,"input_hint":"**Kroko Community ASR**:GGUF Q8 包;离线转写,支持时间戳。","input_hint_en":"**Kroko Community ASR**: GGUF Q8 package for offline transcription with timestamps."},{"id":"kugelaudio","display_name":"KugelAudio-0-Open","family":"kugelaudio","path":"models/KugelAudio-0-Open-GGUF/kugelaudio-0-open-q8_0.gguf","task":"tts","mode":"offline","download_id":"kugelaudio_0_open_q8_0","builtin_voices":["default","clear","english_female","english_male"],"default_voice":"default"},{"id":"lfm2-audio-asr","display_name":"LFM2.5-Audio 1.5B (asr, community)","family":"lfm2_audio","path":"models/LFM2.5-Audio-1.5B-GGUF","task":"asr","mode":"offline","download_id":"lfm2_audio_1_5b_q8_0","min_vram_gb":4,"input_hint_en":"**LFM2.5-Audio** (community): Liquid AI\'s English speech recognition from Liquid\'s published GGUFs. Audio longer than 30 s is split at pauses. Leave language empty."},{"id":"lfm2-audio-s2s","display_name":"LFM2.5-Audio 1.5B (s2s, community)","family":"lfm2_audio","path":"models/LFM2.5-Audio-1.5B-GGUF","task":"s2s","mode":"offline","download_id":"lfm2_audio_1_5b_q8_0","min_vram_gb":4,"builtin_voices":[],"default_voice":"","input_hint_en":"**LFM2.5-Audio** (community): Liquid AI\'s English spoken chat from Liquid\'s published GGUFs. Record or choose a spoken question under Source audio and press Run: the reply streams in as speech and text, and each Run continues the conversation until New conversation. Replies use liquid-audio\'s system prompt, `Respond with interleaved text and audio.`"},{"id":"lfm2-audio-tts","display_name":"LFM2.5-Audio 1.5B (tts, community)","family":"lfm2_audio","path":"models/LFM2.5-Audio-1.5B-GGUF","task":"tts","mode":"offline","download_id":"lfm2_audio_1_5b_q8_0","min_vram_gb":4,"default_text":"The next train leaves in ten minutes.","input_hint_en":"**LFM2.5-Audio** (community): Liquid AI\'s English speech from Liquid\'s published GGUFs, with four built-in voices (US or UK, male or female); no reference audio."},{"id":"lfm2-audio-jp-asr","display_name":"LFM2.5-Audio 1.5B JP (asr, community)","family":"lfm2_audio","path":"models/LFM2.5-Audio-1.5B-JP-GGUF","task":"asr","mode":"offline","download_id":"lfm2_audio_1_5b_jp_q8_0","min_vram_gb":4,"input_hint_en":"**LFM2.5-Audio JP** (community): Liquid AI\'s Japanese speech recognition from Liquid\'s published GGUFs. Audio longer than 30 s is split at pauses. Leave language empty."},{"id":"lfm2-audio-jp-s2s","display_name":"LFM2.5-Audio 1.5B JP (s2s, community)","family":"lfm2_audio","path":"models/LFM2.5-Audio-1.5B-JP-GGUF","task":"s2s","mode":"offline","download_id":"lfm2_audio_1_5b_jp_q8_0","min_vram_gb":4,"builtin_voices":[],"default_voice":"","input_hint_en":"**LFM2.5-Audio JP** (community): Liquid AI\'s Japanese spoken chat from Liquid\'s published GGUFs. Record or choose a spoken question under Source audio and press Run: the reply streams in as speech and text, and each Run continues the conversation until New conversation. Replies use liquid-audio\'s system prompt, `Respond with interleaved text and audio.`"},{"id":"lfm2-audio-jp-tts","display_name":"LFM2.5-Audio 1.5B JP (tts, community)","family":"lfm2_audio","path":"models/LFM2.5-Audio-1.5B-JP-GGUF","task":"tts","mode":"offline","download_id":"lfm2_audio_1_5b_jp_q8_0","min_vram_gb":4,"builtin_voices":[],"default_voice":"","default_text":"今日は天気がいいので、公園まで散歩に行きました。","input_hint_en":"**LFM2.5-Audio JP** (community): Liquid AI\'s Japanese speech from Liquid\'s published GGUFs, in the checkpoint\'s one voice; no reference audio."},{"id":"lfm3-audio-asr","display_name":"LFM3-Audio 2B (asr, community)","family":"lfm3_audio","path":"models/LFM3-Audio-2B-GGUF/LFM3-Audio-2B-Q8_0.gguf","task":"asr","mode":"offline","download_id":"lfm3_audio_2b_q8_0","min_vram_gb":4,"input_hint_en":"**LFM3-Audio** (community): Liquid AI\'s LFM3-Audio-2B from Liquid\'s published GGUFs. Speech recognition in 18 languages: leave language empty or set auto to detect it. The chat parameter answers the spoken input as text instead of transcribing it."},{"id":"lfm3-audio-s2s","display_name":"LFM3-Audio 2B (s2s, community)","family":"lfm3_audio","path":"models/LFM3-Audio-2B-GGUF/LFM3-Audio-2B-Q8_0.gguf","task":"s2s","mode":"offline","download_id":"lfm3_audio_2b_q8_0","min_vram_gb":4,"builtin_voices":[],"default_voice":"","input_hint_en":"**LFM3-Audio** (community): Liquid AI\'s LFM3-Audio-2B from Liquid\'s published GGUFs. Record or choose a spoken question under Source audio and press Run: the reply streams in as speech and text, and each Run continues the conversation until New conversation. Replies use the system prompt `Respond with interleaved text and audio.`"},{"id":"lfm3-audio-tts","display_name":"LFM3-Audio 2B (tts, community)","family":"lfm3_audio","path":"models/LFM3-Audio-2B-GGUF/LFM3-Audio-2B-Q8_0.gguf","task":"tts","mode":"offline","download_id":"lfm3_audio_2b_q8_0","min_vram_gb":4,"default_text":"The next train leaves in ten minutes.","input_hint_en":"**LFM3-Audio** (community): Liquid AI\'s LFM3-Audio-2B from Liquid\'s published GGUFs. Speech in 38 built-in voices across 19 languages; no reference audio."},{"id":"soulx-flashhead","display_name":"SoulX-FlashHead Lite (community)","family":"soulx_flashhead","path":"models/SoulX-FlashHead-GGUF","task":"gen","mode":"offline","download_id":"soulx_flashhead_lite_q8_0","min_vram_gb":10,"input_hint_en":"Audio-driven portrait video. Voice chat in Apps combines this model with LFM3-Audio and an ASR model. cuDNN is recommended for CUDA builds."},{"id":"liveavatar","display_name":"LiveAvatar (audio to video, 社区)","display_name_en":"LiveAvatar (audio to video, community)","family":"liveavatar","path":"models/LiveAvatar-GGUF","task":"gen","mode":"offline","download_id":"liveavatar_nvfp4_lora","default_text":"A cheerful green cyclops baker in a warm rustic bakery, smiling and speaking to the camera while holding a tray of freshly baked pies. High-quality animated film style, expressive face, natural gestures, warm cinematic lighting.","min_vram_gb":24,"input_hint":"**LiveAvatar**(社区模型):上传驱动音频和参考人物图像,再输入场景描述以生成动画视频。","input_hint_en":"**LiveAvatar** (community): upload driving audio and a reference portrait, then describe the subject and scene to generate an animated video."},{"id":"outetts","display_name":"Llama-OuteTTS 1.0 1B (tts 克隆, 社区)","display_name_en":"Llama-OuteTTS 1.0 1B (tts + clone, community)","family":"outetts","path":"models/Llama-OuteTTS-1.0-1B","task":"tts","mode":"offline","download_id":"outetts_1_0_1b","min_vram_gb":4,"input_hint":"**OuteTTS 1.0 1B**(社区模型):23 种语言,DAC 编解码;上传参考音色即克隆。","input_hint_en":"**OuteTTS 1.0 1B** (community): 23 languages, IBM DAC codec. Upload a reference voice to clone."},{"id":"magenta-rt2","display_name":"Magenta RealTime 2 (music gen)","family":"magenta_realtime_2","path":"models/Magenta-RealTime-2-GGUF","task":"gen","mode":"offline","download_id":"magenta_realtime_2_small_f16","default_text":"disco funk"},{"id":"magpie-tts","display_name":"MagpieTTS Multilingual 357M v2607 (tts, preset voices)","display_name_en":"MagpieTTS Multilingual 357M v2607 (tts, preset voices)","family":"magpie_tts","path":"models/MagpieTTS-Multilingual-357M-GGUF","task":"tts","mode":"offline","download_id":"magpie_tts_q8_0","min_vram_gb":4,"input_hint":"**MagpieTTS**:多语种离线 TTS;使用打包 speaker map 里的 `voice_id`,不需要上传参考音频。当前 GGUF 包不包含日语 phoneme 表,因此日语路径不可用。","input_hint_en":"**MagpieTTS**: multilingual offline TTS with packaged speaker prompts selected by `voice_id`; no reference upload is needed. The current GGUF package does not include the Japanese phoneme table, so Japanese is not available."},{"id":"marblenet-vad","display_name":"MarbleNet VAD (vad, bundled)","family":"marblenet_vad","path":"assets/framework/models/marblenet_vad","task":"vad","mode":"offline","min_vram_gb":1},{"id":"maya1","display_name":"Maya1","family":"maya1","task":"tts","mode":"offline","path":"models/Maya1-GGUF/maya1-q8_0.gguf","download_id":"maya1_q8_0","arena":false},{"id":"meanvc2","display_name":"MeanVC2 (voice conversion)","display_name_en":"MeanVC2 (voice conversion)","family":"meanvc2","path":"models/MeanVC2-GGUF/meanvc2-120ms-40ms-fp32.gguf","task":"vc","mode":"offline","download_id":"meanvc2_120ms_40ms_f32","min_vram_gb":6,"input_hint":"**MeanVC2**:上传源语音和目标音色参考;默认 120 ms / 40 ms checkpoint 使用 F32 GGUF。","input_hint_en":"**MeanVC2**: upload source speech and a target-voice reference. The default 120 ms / 40 ms checkpoint uses F32 GGUF."},{"id":"mel-band-roformer","display_name":"Mel-Band RoFormer (sep 人声分离)","display_name_en":"Mel-Band RoFormer (vocal separation)","family":"mel_band_roformer","path":"models/mel-roformer-mlx","task":"sep","mode":"offline","download_id":"mel_band_roformer","min_vram_gb":3},{"id":"micro-wake-word","display_name":"microWakeWord (Okay Nabu)","family":"micro_wake_word","path":"models/MicroWakeWord-GGUF/micro-wake-word-okay-nabu-f32.gguf","task":"wake","mode":"offline","download_id":"micro_wake_word_okay_nabu_f32"},{"id":"midashenglm-gen","display_name":"MiDashengLM-Gen (audio generation)","family":"midashenglm_gen","path":"models/MiDashengLM-Gen-GGUF/midashenglm-gen-q8_0.gguf","task":"gen","mode":"offline","download_id":"midashenglm_gen_q8_0","min_vram_gb":8,"input_hint_en":"**MiDashengLM-Gen**: text-conditioned audio generation. The duration field controls the generation budget."},{"id":"minimax-h3","display_name":"MiniMax-H3 Q4 (sound generation)","family":"minimax_h3","path":"models/MiniMax-H3-Q4-GGUF/dit.gguf","task":"gen","mode":"offline","download_id":"minimax_h3","min_vram_gb":20,"default_options":{"num_inference_steps":12,"height":32,"width":32,"num_frames":241,"guidance_scale":1,"dit_acceleration":"none","return_video":false},"input_hint_en":"MiniMax-H3 uses a joint audio/video DiT. The default Q4 DiT is the quality-first choice; the optional CUDA-only INT8 ConvRot DiT trades slightly more VRAM for higher speed. Native Studio uses 12 denoising steps, a 32x32 latent canvas, quality-first full-DiT execution, and disables video decoding for practical audio-only generation on a 24 GB GPU."},{"id":"minimax-music3","display_name":"MiniMax-Music3 (song gen)","family":"minimax_music3","path":"models/MiniMax-Music3-GGUF","task":"gen","mode":"offline","download_id":"minimax_music3_q4_0","min_vram_gb":12},{"id":"miocodec","display_name":"MioCodec (vc; codec dependency)","family":"miocodec","path":"models/MioCodec-25Hz-44.1kHz-v2","task":"vc","mode":"offline","download_id":"miocodec_25hz_44k_v2","min_vram_gb":3},{"id":"miotts","display_name":"MioTTS 1.7B (tts; needs MioCodec)","family":"miotts","path":"models/MioTTS-1.7B","task":"tts","mode":"offline","download_id":"miotts_1_7b","min_vram_gb":8},{"id":"moonshine-asr-medium","display_name":"Moonshine Streaming Medium (asr, GGUF Q8)","display_name_en":"Moonshine Streaming Medium (asr, GGUF Q8)","family":"moonshine_asr","path":"models/Moonshine-Streaming-GGUF/moonshine-streaming-medium-q8_0.gguf","task":"asr","mode":"offline","download_id":"moonshine_streaming_medium_q8_0","min_vram_gb":2,"input_hint":"**Moonshine Streaming Medium**:英语 ASR,GGUF Q8 包;支持离线与流式模式。","input_hint_en":"**Moonshine Streaming Medium**: English ASR GGUF Q8 package with offline and streaming support."},{"id":"moonshine-asr-small","display_name":"Moonshine Streaming Small (asr, GGUF Q8)","display_name_en":"Moonshine Streaming Small (asr, GGUF Q8)","family":"moonshine_asr","path":"models/Moonshine-Streaming-GGUF/moonshine-streaming-small-q8_0.gguf","task":"asr","mode":"offline","download_id":"moonshine_streaming_small_q8_0","min_vram_gb":2,"input_hint":"**Moonshine Streaming Small**:英语 ASR,GGUF Q8 包;支持离线与流式模式。","input_hint_en":"**Moonshine Streaming Small**: English ASR GGUF Q8 package with offline and streaming support."},{"id":"moonshine-asr-tiny","display_name":"Moonshine Streaming Tiny (asr, GGUF Q8)","display_name_en":"Moonshine Streaming Tiny (asr, GGUF Q8)","family":"moonshine_asr","path":"models/Moonshine-Streaming-GGUF/moonshine-streaming-tiny-q8_0.gguf","task":"asr","mode":"offline","download_id":"moonshine_streaming_tiny_q8_0","min_vram_gb":1,"input_hint":"**Moonshine Streaming Tiny**:英语 ASR,轻量 GGUF Q8 包;支持离线与流式模式。","input_hint_en":"**Moonshine Streaming Tiny**: lightweight English ASR GGUF Q8 package with offline and streaming support."},{"id":"moss-transcribe-diarize","display_name":"MOSS-Transcribe-Diarize","family":"moss_transcribe_diarize","path":"models/MOSS-Transcribe-Diarize-GGUF","task":"asr","mode":"offline","download_id":"moss_transcribe_diarize_bf16"},{"id":"moss-tts-v15","display_name":"MOSS-TTS v1.5 8B (tts 克隆, 社区)","display_name_en":"MOSS-TTS v1.5 8B (tts + clone, community)","family":"moss_tts_v15","path":"models/MOSS-TTS-v1.5-GGUF/moss_tts_v15_q8_0_codec_f16.gguf","task":"tts","mode":"offline","download_id":"moss_tts_v15_q8_0_codec_f16","min_vram_gb":18,"input_hint":"**MOSS-TTS v1.5 8B**(社区模型):中英 TTS;上传短参考音频进行声音克隆,留空则使用模型生成的音色。Q8 克隆约需 18 GB 显存。","input_hint_en":"**MOSS-TTS v1.5 8B** (community): English/Chinese TTS. Upload a short reference clip for voice cloning, or leave it empty for a model-generated voice. Q8 cloning needs about 18 GB VRAM."},{"id":"moss-tts-local","display_name":"MOSS-TTS-Local v1.5 (tts)","family":"moss_tts_local","path":"models/MOSS-TTS-Local-Transformer-v1.5","task":"tts","mode":"offline","download_id":"moss_tts_local_v1_5","min_vram_gb":8},{"id":"moss-tts-nano","display_name":"MOSS-TTS-Nano 100M (tts)","family":"moss_tts_nano","path":"models/MOSS-TTS-Nano-100M","task":"tts","mode":"offline","download_id":"moss_tts_nano_100m","min_vram_gb":2},{"id":"moss-ttsd","display_name":"MOSS-TTSD","family":"moss_ttsd","task":"tts","mode":"offline","path":"models/MOSS-TTSD-GGUF/moss_ttsd_q8_0_codec_f16.gguf","download_id":"moss_ttsd_q8_0_codec_f16","arena":false,"default_text":"[S1] Hello, how are you? [S2] I am doing well, thank you."},{"id":"moss-voicegen","display_name":"MOSS-VoiceGenerator","family":"moss_voicegen","task":"vdes","mode":"offline","path":"models/MOSS-VoiceGenerator-GGUF/moss_voicegen_bf16_codec_f16_decode.gguf","download_id":"moss_voicegen_bf16_codec_f16_decode","arena":false},{"id":"mossformer2","display_name":"MossFormer2 (two-speaker separation)","family":"mossformer2","path":"models/MossFormer2-GGUF/mossformer2-ss-16k-f32.gguf","task":"sep","mode":"offline","download_id":"mossformer2_ss_16k_f32"},{"id":"muscriptor-small","display_name":"MuScriptor Small (audio to MIDI)","family":"muscriptor","path":"models/MuScriptor-Small-GGUF","task":"midi","mode":"offline","download_id":"muscriptor_small_f32","min_vram_gb":4},{"id":"nemotron-3-diar","display_name":"Nemotron 3 Diarization","family":"nemotron_3_diar","path":"models/Nemotron-3-Diarization-GGUF/nemotron-3-diarization-bf16.gguf","task":"diar","mode":"offline","download_id":"nemotron_3_diar_bf16","min_vram_gb":2,"input_hint_en":"**Nemotron 3 Diarization**: upload speech audio to produce speaker turns for up to eight speakers. It supports offline and streaming diarization."},{"id":"nemotron-asr","display_name":"Nemotron 3.5 ASR 0.6B (asr, 100+语种)","display_name_en":"Nemotron 3.5 ASR 0.6B (asr, 100+ languages)","family":"nemotron_asr","path":"models/nemotron-3.5-asr-streaming-0.6b","task":"asr","mode":"offline","download_id":"nemotron_asr","min_vram_gb":4,"input_hint":"**Nemotron ASR**:100+ 语种,语种码为 BCP-47(如 en-US / zh-CN),留空=auto;模型自带长音频处理。","input_hint_en":"**Nemotron ASR**: supports more than 100 languages using BCP-47 codes such as en-US or zh-CN. Leave language blank for automatic detection; long audio is handled by the model."},{"id":"neutts-2e","display_name":"NeuTTS 2E (tts, preset voices)","family":"neutts","path":"models/NeuTTS-2E-GGUF","task":"tts","mode":"offline","download_id":"neutts_2e_orig","min_vram_gb":4},{"id":"niagara-asr-19m","display_name":"Niagara ASR 19M (asr)","display_name_en":"Niagara ASR 19M (asr)","family":"niagara_asr","path":"models/Niagara-ASR-GGUF/niagara-19m-batch.en-f32.gguf","task":"asr","mode":"offline","download_id":"niagara_19m_f32","min_vram_gb":1,"input_hint":"**Niagara ASR 19M**:ABR 英语离线 ASR,F32 GGUF 权重。","input_hint_en":"**Niagara ASR 19M**: ABR English offline ASR with F32 GGUF weights."},{"id":"niagara-asr-38m","display_name":"Niagara ASR 38M (asr)","display_name_en":"Niagara ASR 38M (asr)","family":"niagara_asr","path":"models/Niagara-ASR-GGUF/niagara-38m-batch.en-f32.gguf","task":"asr","mode":"offline","download_id":"niagara_38m_f32","min_vram_gb":1,"input_hint":"**Niagara ASR 38M**:ABR 英语离线 ASR,F32 GGUF 权重。","input_hint_en":"**Niagara ASR 38M**: ABR English offline ASR with F32 GGUF weights."},{"id":"omnivoice","display_name":"OmniVoice (tts)","family":"omnivoice","path":"models/OmniVoice","task":"tts","mode":"offline","download_id":"omnivoice","min_vram_gb":10},{"id":"open-wake-word","display_name":"OpenWakeWord (Alexa)","family":"open_wake_word","path":"models/OpenWakeWord-GGUF/open-wake-word-alexa-f32.gguf","task":"wake","mode":"offline","download_id":"open_wake_word_alexa_f32"},{"id":"orukeet","display_name":"Orukeet r3 (asr, Parakeet 微调)","display_name_en":"Orukeet r3 (asr, Parakeet fine-tune)","family":"parakeet_tdt","path":"models/Orukeet-GGUF/orukeet-q8_0.gguf","task":"asr","mode":"offline","download_id":"orukeet_q8_0","min_vram_gb":4,"input_hint":"**Orukeet r3**:Parakeet-TDT 0.6B v3 微调权重,同引擎/同分词器;CC BY-SA 4.0,留空=自动语种。","input_hint_en":"**Orukeet r3**: fine-tuned Parakeet-TDT 0.6B v3 weights on the same engine and tokenizer; CC BY-SA 4.0, leave language empty for auto."},{"id":"owsm-base","display_name":"OWSM v4 Base 102M","family":"owsm","path":"models/OWSM-GGUF/owsm-v4-base-102m-f32.gguf","task":"asr","mode":"offline","download_id":"owsm_v4_base_102m_f32"},{"id":"owsm-medium","display_name":"OWSM v4 Medium 1B","family":"owsm","path":"models/OWSM-GGUF/owsm-v4-medium-1b-f32.gguf","task":"asr","mode":"offline","download_id":"owsm_v4_medium_1b_f32"},{"id":"owsm-small","display_name":"OWSM v4 Small 370M","family":"owsm","path":"models/OWSM-GGUF/owsm-v4-small-370m-f32.gguf","task":"asr","mode":"offline","download_id":"owsm_v4_small_370m_f32"},{"id":"owsm-ctc","display_name":"OWSM-CTC v4 1B","family":"owsm_ctc","path":"models/OWSM-CTC-GGUF/owsm-ctc-v4-1b-f32.gguf","task":"asr","mode":"offline","download_id":"owsm_ctc_v4_1b_f32"},{"id":"parakeet-tdt","display_name":"Parakeet-TDT 0.6B v3 (asr, 流式)","display_name_en":"Parakeet-TDT 0.6B v3 (asr + streaming)","family":"parakeet_tdt","path":"models/parakeet-tdt-0.6b-v3","task":"asr","mode":"offline","download_id":"parakeet_tdt","min_vram_gb":4,"input_hint":"**Parakeet-TDT**:离线/长音频/流式 ASR;支持多种欧洲语言,留空=自动。","input_hint_en":"**Parakeet-TDT**: offline, long-form and streaming ASR for many European languages; leave language empty for auto."},{"id":"personaplex","display_name":"PersonaPlex 7B v1 (speech conversation)","display_name_en":"PersonaPlex 7B v1 (speech conversation)","family":"personaplex","path":"models/PersonaPlex-GGUF","task":"s2s","mode":"offline","download_id":"personaplex_7b_v1_q4_k","min_vram_gb":8,"request_options":["voice_id","system_prompt","temperature","text_temperature","top_k","text_top_k","do_sample","seed"],"input_hint":"**PersonaPlex**:上传用户语音,模型返回语音回复;文本框可填写 assistant system/persona prompt;`voice_id` 选择打包音色,也可上传参考音色覆盖。","input_hint_en":"**PersonaPlex**: upload user speech and receive a spoken response. The text box provides the assistant system/persona prompt; `voice_id` selects a packaged voice, and an uploaded reference voice overrides it."},{"id":"piper-tts","display_name":"Piper Lessac Medium (tts 英语, 社区)","display_name_en":"Piper Lessac Medium (en tts, community)","family":"piper_tts","path":"models/Piper-TTS-GGUF/piper-en-us-lessac-medium-orig.gguf","task":"tts","mode":"offline","download_id":"piper_lessac_medium_orig","min_vram_gb":1,"input_hint":"**Piper Lessac Medium**(社区模型):轻量英语 TTS,使用打包的 Lessac 音色,不需要上传参考音频。","input_hint_en":"**Piper Lessac Medium** (community): lightweight English TTS with the packaged Lessac voice; no reference audio is needed."},{"id":"plapre","display_name":"Plapre 3 (Danish TTS)","family":"plapre","path":"models/Plapre-3-GGUF/plapre-3-bf16.gguf","task":"tts","mode":"offline","download_id":"plapre_3_bf16","default_text":"Godmorgen. Solen skinner, og vi tager en tur til havnen."},{"id":"pocket-tts","display_name":"Pocket TTS (tts)","family":"pocket_tts","path":"models/pocket-tts","task":"tts","mode":"offline","download_id":"pocket_tts","min_vram_gb":2},{"id":"pulsevad-2.1k","display_name":"PulseVAD 2.1K","family":"pulsevad","path":"models/PulseVAD-GGUF","task":"vad","mode":"offline","download_id":"pulsevad_2_1k_f32"},{"id":"pulsevad-81k","display_name":"PulseVAD 81K","family":"pulsevad","path":"models/PulseVAD-GGUF","task":"vad","mode":"offline","download_id":"pulsevad_81k_f32"},{"id":"qwen3-forced-aligner","display_name":"Qwen3 Forced Aligner (align)","family":"qwen3_forced_aligner","path":"models/Qwen3-ForcedAligner-0.6B","task":"align","mode":"offline","download_id":"qwen3_forced_aligner_0_6b","min_vram_gb":3},{"id":"qwen3-asr","display_name":"Qwen3-ASR 0.6B (asr)","family":"qwen3_asr","path":"models/Qwen3-ASR-0.6B","task":"asr","mode":"offline","download_id":"qwen3_asr_0_6b","min_vram_gb":3},{"id":"qwen3-asr-1.7b","display_name":"Qwen3-ASR 1.7B HF (asr)","family":"qwen3_asr","path":"models/Qwen3-ASR-1.7B-hf","task":"asr","mode":"offline","download_id":"qwen3_asr_1_7b_hf","min_vram_gb":6,"input_hint":"**Qwen3-ASR 1.7B**(HF 原生权重,免转换):精度高于 0.6B;长音频自动分段转写;8G 卡显存偏紧,长音频建议先短段试跑。","input_hint_en":"**Qwen3-ASR 1.7B**: native Hugging Face weights with no conversion required. It is more accurate than the 0.6B model and automatically chunks long audio; test short clips first on an 8 GB GPU."},{"id":"qwen3-tts","display_name":"Qwen3-TTS 0.6B (tts)","family":"qwen3_tts","path":"models/Qwen3-TTS-12Hz-0.6B-Base","task":"tts","mode":"offline","download_id":"qwen3_tts_0_6b_base","min_vram_gb":5},{"id":"qwen3-tts-1.7b","display_name":"Qwen3-TTS 1.7B Base (tts)","family":"qwen3_tts","path":"models/Qwen3-TTS-12Hz-1.7B-Base","task":"tts","mode":"offline","download_id":"qwen3_tts_1_7b_base","min_vram_gb":8},{"id":"qwen3-tts-1.7b-custom","display_name":"Qwen3-TTS 1.7B CustomVoice (tts)","family":"qwen3_tts","path":"models/Qwen3-TTS-12Hz-1.7B-CustomVoice","task":"tts","mode":"offline","download_id":"qwen3_tts_1_7b_custom_voice","min_vram_gb":8},{"id":"qwen3-tts-1.7b-vdesign","display_name":"Qwen3-TTS 1.7B VoiceDesign (vdes)","family":"qwen3_tts","path":"models/Qwen3-TTS-12Hz-1.7B-VoiceDesign","task":"vdes","mode":"offline","download_id":"qwen3_tts_1_7b_voice_design","min_vram_gb":8,"input_hint":"**Qwen3-TTS VoiceDesign**:在『音色描述』里用文字描述想要的声音(如“低沉磁性的中年男声,语速偏慢”),配上要念的文本即可,无需参考音频。","input_hint_en":"**Qwen3-TTS VoiceDesign**: describe the desired voice, then enter the text to synthesize. No reference recording is required."},{"id":"reuse","display_name":"RE-USE","family":"reuse","path":"models/RE-USE-GGUF/reuse-f32.gguf","task":"s2s","mode":"offline","download_id":"reuse_f32","workflow":"enhancement"},{"id":"rnnoise","display_name":"RNNoise","family":"builtin_audio_utils","task":"s2s","workflow":"enhancement","mode":"offline","path":"models/Audio-Utilities/rnnoise/rnnoise10Gb_15.safetensors","load_options":{"utility":"rnnoise"},"weights_url":"https://raw.githubusercontent.com/0xShug0/audio.cpp/main/assets/framework/audio_utilities/rnnoise/rnnoise10Gb_15.safetensors"},{"id":"rvc","display_name":"RVC (vc, GGUF F16)","display_name_en":"RVC (voice conversion, GGUF F16)","family":"rvc","path":"models/RVC-GGUF","task":"vc","mode":"offline","download_id":"rvc_f16","min_vram_gb":4,"input_hint":"**RVC**:所选 GGUF 即目标音色;上传源语音即可转换;索引/音高等选项可用 JSON 传。","input_hint_en":"**RVC**: the selected GGUF is the target voice; upload source speech to convert. Index and pitch options can be passed through the JSON box."},{"id":"sam-audio-base","display_name":"SAM Audio Base","family":"sam_audio","task":"s2s","workflow":"separation","mode":"offline","path":"models/SAM-Audio-GGUF/sam-audio-base-q8_0.gguf","download_id":"sam_audio_base_q8_0","default_text":"man speaking"},{"id":"sam-audio-large","display_name":"SAM Audio Large","family":"sam_audio","task":"s2s","workflow":"separation","mode":"offline","path":"models/SAM-Audio-GGUF/sam-audio-large-q8_0.gguf","download_id":"sam_audio_large_q8_0","default_text":"man speaking"},{"id":"sam-audio-small","display_name":"SAM Audio Small","family":"sam_audio","task":"s2s","workflow":"separation","mode":"offline","path":"models/SAM-Audio-GGUF/sam-audio-small-q8_0.gguf","download_id":"sam_audio_small_q8_0","default_text":"man speaking"},{"id":"samsone-99m","display_name":"SAMSONE 99M","family":"samsone","task":"asr","workflow":"analysis","arena":false,"mode":"offline","path":"models/Samsone-GGUF/samsone-99m-q8_0.gguf","download_id":"samsone_99m_q8_0"},{"id":"samsone-134m","display_name":"SAMSONE 134M","family":"samsone","task":"asr","workflow":"analysis","arena":false,"mode":"offline","path":"models/Samsone-GGUF/samsone-134m-q8_0.gguf","download_id":"samsone_134m_q8_0"},{"id":"samsone-356m","display_name":"SAMSONE 356M","family":"samsone","task":"asr","workflow":"analysis","arena":false,"mode":"offline","path":"models/Samsone-GGUF/samsone-356m-q8_0.gguf","download_id":"samsone_356m_q8_0"},{"id":"sanotts","display_name":"sanoTTS voice family (tts, community)","family":"sanotts","path":"models/sanoTTS-heart-nano-GGUF/heart-nano-f32.gguf","task":"tts","mode":"offline","download_id":"sanotts_heart_nano_orig","min_vram_gb":1},{"id":"seed-vc-svc","display_name":"Seed-VC (svc 歌声转换)","display_name_en":"Seed-VC (singing voice conversion)","family":"seed_vc","path":"models/SeedVC-MLX","task":"svc","mode":"offline","download_id":"seed_vc","min_vram_gb":4,"input_hint":"**Seed-VC 歌声转换 (svc)**:上传源歌声 + 目标歌手参考音色,默认 route=v1_svc(带 F0 条件)。可在『其它参数(JSON)』里调 `auto_f0_adjust` / `semi_tone_shift` / `f0_condition`。","input_hint_en":"**Seed-VC singing conversion**: upload source singing and a target-singer reference. The default route is v1_svc with F0 conditioning."},{"id":"seed-vc","display_name":"Seed-VC (vc 语音转换)","display_name_en":"Seed-VC (voice conversion)","family":"seed_vc","path":"models/SeedVC-MLX","task":"vc","mode":"offline","download_id":"seed_vc","min_vram_gb":4},{"id":"sense-asr","display_name":"SenseVoice-Small (asr, 流式, 社区)","display_name_en":"SenseVoice-Small (asr + streaming, community)","family":"sense_asr","path":"models/SenseVoice-Small-GGUF","task":"asr","mode":"offline","download_id":"sensevoice_small_q8","min_vram_gb":4,"input_hint":"**SenseVoice-Small**(社区模型):多语种 ASR,事件/情感/语言标签,ITN 可开关;离线与流式模式。","input_hint_en":"**SenseVoice-Small** (community): multilingual ASR with event/emotion/language tags, optional ITN; offline and streaming modes."},{"id":"sheetsage2","display_name":"SheetSage2 (audio to ABC)","family":"sheetsage2","path":"models/SheetSage2-GGUF/sheetsage2-orig.gguf","task":"midi","mode":"offline","download_id":"sheetsage2_orig","min_vram_gb":8,"input_hint_en":"**SheetSage2**: upload a song or instrumental recording to transcribe it into an ABC score artifact."},{"id":"sherpa-kws","display_name":"Sherpa Zipformer KWS (Chinese / English)","family":"sherpa_kws","path":"models/Sherpa-KWS-GGUF/sherpa-kws-zipformer-zh-en-3m-f32.gguf","task":"wake","mode":"offline","download_id":"sherpa_kws_zipformer_zh_en_3m_f32"},{"id":"sidon","display_name":"Sidon","family":"sidon","path":"models/Sidon-GGUF/sidon-v0.1-f32.gguf","task":"s2s","mode":"offline","download_id":"sidon_f32","workflow":"enhancement"},{"id":"silero-vad","display_name":"Silero VAD (vad, bundled)","family":"silero_vad","path":"assets/framework/models/silero_vad","task":"vad","mode":"offline","min_vram_gb":1},{"id":"smart-turn","display_name":"Smart Turn v3.2","family":"smart_turn","path":"models/Smart-Turn-v3-GGUF/smart-turn-v3.2-f32.gguf","task":"turn","mode":"offline","download_id":"smart_turn_v3_2_f32","workflow":"analysis"},{"id":"soprano-tts","display_name":"Soprano TTS (tts)","family":"soprano_tts","path":"models/Soprano-1.1-80M-GGUF","task":"tts","mode":"offline","download_id":"soprano_1_1_80m_q8_0","min_vram_gb":1},{"id":"sopro-tts","display_name":"Sopro V2 Turbo (tts + clone)","family":"sopro_tts","path":"models/sopro-v2-turbo-GGUF/sopro-v2-turbo-f16.gguf","task":"tts","mode":"offline","download_id":"sopro_v2_turbo_f16","min_vram_gb":2,"request_options":["language","temperature","top_p","top_k","num_inference_steps","max_seconds","min_seconds","ref_seconds","text_chunk_size","seed"]},{"id":"sortformer-diar","display_name":"Sortformer Diarization 4spk (diar)","family":"sortformer_diar","path":"models/diar_sortformer_4spk-v1","task":"diar","mode":"offline","download_id":"sortformer_diar_4spk_v1","min_vram_gb":2},{"id":"stable-audio-medium","display_name":"Stable Audio 3 Medium (gen)","family":"stable_audio","path":"models/stable-audio-3-medium","task":"gen","mode":"offline","download_id":"stable_audio_3_medium","session_options":{"stable_audio.mem_saver":"true"},"min_vram_gb":10},{"id":"stable-audio-small-music","display_name":"Stable Audio 3 Small Music (gen)","family":"stable_audio","path":"models/stable-audio-3-small-music","task":"gen","mode":"offline","download_id":"stable_audio_3_small_music","min_vram_gb":4},{"id":"stable-audio-small-sfx","display_name":"Stable Audio 3 Small SFX (gen)","family":"stable_audio","path":"models/stable-audio-3-small-sfx","task":"gen","mode":"offline","download_id":"stable_audio_3_small_sfx","min_vram_gb":4},{"id":"supertonic","display_name":"Supertonic 3 (tts 预置音色/多语种)","display_name_en":"Supertonic 3 (tts, preset voices)","family":"supertonic","path":"models/supertonic-3","task":"tts","mode":"offline","download_id":"supertonic_3","min_vram_gb":2},{"id":"tf-gridnet","display_name":"TF-GridNet (two-speaker separation)","family":"tf_gridnet","path":"models/TF-GridNet-GGUF/tf-gridnet-wsj0-2mix-f32.gguf","task":"sep","mode":"offline","download_id":"tf_gridnet_wsj0_2mix_f32"},{"id":"tone-color-vc","display_name":"Tone Color VC","family":"tone_color_vc","task":"vc","mode":"offline","path":"models/Tone-Color-VC-GGUF/tone-color-vc-f32.gguf","download_id":"tone_color_vc_f32"},{"id":"universr-audio","display_name":"UniverSR Audio","family":"universr","path":"models/UniverSR-GGUF","task":"s2s","mode":"offline","download_id":"universr_audio_orig"},{"id":"universr-speech","display_name":"UniverSR Speech","family":"universr","path":"models/UniverSR-GGUF","task":"s2s","mode":"offline","download_id":"universr_speech_orig"},{"id":"vevo2-s2s","display_name":"Vevo2 (s2s 语音编辑, GGUF Q8)","display_name_en":"Vevo2 (speech editing, GGUF Q8)","family":"vevo2","path":"models/Vevo2-GGUF","task":"s2s","mode":"offline","download_id":"vevo2_gguf","min_vram_gb":6,"input_hint":"**Vevo2 语音编辑 (s2s)**:上传要编辑的源语音,并在『其它参数(JSON)』里填 `{\\"target_text\\": \\"替换后的完整句子\\"}`(编辑保持原说话人音色,可不上传目标音色)。","input_hint_en":"**Vevo2 speech editing**: upload source speech and set target_text to the complete replacement sentence in Additional options. Editing preserves the original speaker and does not require a target-voice reference."},{"id":"vevo2-svc","display_name":"Vevo2 (svc 歌声转换, GGUF Q8)","display_name_en":"Vevo2 (singing voice conversion, GGUF Q8)","family":"vevo2","path":"models/Vevo2-GGUF","task":"svc","mode":"offline","download_id":"vevo2_gguf","min_vram_gb":6,"input_hint":"**Vevo2 歌声转换 (svc)**:上传源歌声 + 目标歌手参考音色,默认 route=style_preserved_svc。style_converted_svc / singing_style_conversion 等风格转换 route 需在『其它参数(JSON)』里补 `style_ref`(服务器本地 wav 路径)/ `style_ref_text` / `target_text`。","input_hint_en":"**Vevo2 singing conversion**: upload source singing and a target-singer reference. The default route is style_preserved_svc; style-conversion routes also accept style_ref, style_ref_text and target_text in Additional options."},{"id":"vevo2","display_name":"Vevo2 (vc 语音转换, GGUF Q8)","display_name_en":"Vevo2 (voice conversion, GGUF Q8)","family":"vevo2","path":"models/Vevo2-GGUF","task":"vc","mode":"offline","download_id":"vevo2_gguf","min_vram_gb":6},{"id":"vibevoice","display_name":"VibeVoice 1.5B/7B (tts, long-form/multi-speaker)","family":"vibevoice","path":"models/VibeVoice-1.5B","task":"tts","mode":"offline","download_id":"vibevoice_1_5b","min_vram_gb":7},{"id":"vibevoice-7b","display_name":"VibeVoice 7B (tts, long-form/multi-speaker)","family":"vibevoice","path":"models/VibeVoice-7B-GGUF","task":"tts","mode":"offline","download_id":"vibevoice_7b_q8_0","min_vram_gb":16},{"id":"vibevoice-asr","display_name":"VibeVoice ASR (asr, 多语种+说话人分段)","display_name_en":"VibeVoice ASR (asr, multilingual + speaker turns)","family":"vibevoice_asr","path":"models/VibeVoice-ASR","task":"asr","mode":"offline","download_id":"vibevoice_asr","min_vram_gb":20,"input_hint":"**VibeVoice ASR**:自动语种,可输出分段/说话人轮次;文本框可填上下文提示(如 The recording is a meeting conversation.)。权重 17.3G,8G 卡跑不动。","input_hint_en":"**VibeVoice ASR**: automatic language detection with segment and speaker-turn output. The text box accepts a context prompt. Its 17.3 GB weights require substantially more than 8 GB VRAM."},{"id":"vibevoice-asr-streaming-1.5b","display_name":"VibeVoice ASR Streaming 1.5B (asr, 多语种+流式)","display_name_en":"VibeVoice ASR Streaming 1.5B (asr, multilingual + streaming)","family":"vibevoice_asr_streaming","path":"models/VibeVoice-ASR-Streaming-1.5B-GGUF/vibevoice-asr-streaming-1.5b-q8_0.gguf","task":"asr","mode":"offline","download_id":"vibevoice_asr_streaming_1_5b_q8_0","min_vram_gb":6,"input_hint":"**VibeVoice ASR Streaming 1.5B**:7B 的较小版本,功能相同,显存占用更低,准确率略低;文本框可填上下文提示。","input_hint_en":"**VibeVoice ASR Streaming 1.5B**: the smaller sibling of the 7B with the same features, lower VRAM use, and somewhat lower accuracy. The text box accepts a context prompt."},{"id":"vibevoice-asr-streaming-7b","display_name":"VibeVoice ASR Streaming 7B (asr, 多语种+流式)","display_name_en":"VibeVoice ASR Streaming 7B (asr, multilingual + streaming)","family":"vibevoice_asr_streaming","path":"models/VibeVoice-ASR-Streaming-7B-GGUF/vibevoice-asr-streaming-7b-q8_0.gguf","task":"asr","mode":"offline","download_id":"vibevoice_asr_streaming_7b_q8_0","min_vram_gb":18,"input_hint":"**VibeVoice ASR Streaming 7B**:多语种 ASR,支持长音频流式解码和说话人轮次;文本框可填上下文提示。","input_hint_en":"**VibeVoice ASR Streaming 7B**: multilingual ASR with long-audio streaming decode and speaker-turn output. The text box accepts a context prompt."},{"id":"vieneu-tts","display_name":"VieNeu-TTS v3 Turbo (tts 越南语, 社区)","display_name_en":"VieNeu-TTS v3 Turbo (vi tts, community)","family":"vieneu_v3_turbo","path":"models/VieNeu-TTS-v3-Turbo","task":"tts","mode":"offline","download_id":"vieneu_v3_turbo_v3_turbo","min_vram_gb":4,"input_hint":"**VieNeu-TTS v3 Turbo**(社区模型):越南语 / 英语;上传参考音色即克隆。","input_hint_en":"**VieNeu-TTS v3 Turbo** (community): Vietnamese and English. Upload a reference voice to clone."},{"id":"voxcpm1","display_name":"VoxCPM1 0.5B (tts + clone)","family":"voxcpm1","path":"models/VoxCPM1-GGUF","task":"tts","mode":"offline","download_id":"voxcpm1_0_5b_q8_0","min_vram_gb":4},{"id":"voxcpm2","display_name":"VoxCPM2 (tts)","family":"voxcpm2","path":"models/VoxCPM2","task":"tts","mode":"offline","download_id":"voxcpm2","session_options":{"voxcpm2.weight_type":"q8_0"},"min_vram_gb":6},{"id":"voxtral-realtime","display_name":"Voxtral Mini 4B Realtime (asr, 自动语种+流式)","display_name_en":"Voxtral Mini 4B Realtime (asr, auto + streaming)","family":"voxtral_realtime","path":"models/Voxtral-Mini-4B-Realtime-2602-GGUF","task":"asr","mode":"offline","download_id":"voxtral_realtime","min_vram_gb":8},{"id":"voxtral-tts","display_name":"Voxtral 4B TTS","family":"voxtral_tts","path":"models/Voxtral-4B-TTS-2603-GGUF/voxtral-4b-tts-2603-bf16.gguf","task":"tts","mode":"offline","download_id":"voxtral_4b_tts_2603_bf16","default_text":"The next train leaves in ten minutes. Please wait by platform five."},{"id":"whistle-asr","display_name":"Whistle ASR","family":"whistle_asr","path":"models/Whistle-GGUF/whistle-f32.gguf","task":"asr","mode":"offline","download_id":"whistle_asr_f32"},{"id":"yue2","display_name":"Yue2 3B (song gen)","family":"yue2","path":"models/Yue2-3B-GGUF","task":"gen","mode":"offline","download_id":"yue2_main_q8_0","default_text":"[Verse]\\nSoft morning light is touching the window.\\nI hear the city waking below.\\n[Chorus]\\nStay with the rhythm, let it carry us home.\\nSing with the sunrise, we are never alone.","min_vram_gb":12,"input_hint_en":"**Yue2 3B**: provide lyrics and a style prompt. The default inference combo is Main Q8_0 + VAE F16; choose other main/VAE files from Model parameters before loading."},{"id":"zipenhancer","display_name":"ZipEnhancer","family":"builtin_audio_utils","task":"s2s","workflow":"enhancement","mode":"offline","path":"models/Audio-Utilities/zipenhancer/zipenhancer.safetensors","load_options":{"utility":"zipenhancer"},"weights_url":"https://raw.githubusercontent.com/0xShug0/audio.cpp/main/assets/framework/audio_utilities/zipenhancer/zipenhancer.safetensors"},{"id":"zipvoice","display_name":"ZipVoice (中英零样本克隆)","display_name_en":"ZipVoice (zh/en zero-shot cloning)","family":"zipvoice","path":"models/ZipVoice-Distill-GGUF","task":"clon","mode":"offline","download_id":"zipvoice_distill_gguf","min_vram_gb":4,"input_hint":"**ZipVoice**:中/英零样本声音克隆(k2-fsa TTSZipformer flow-matching + Vocos,蒸馏版 8 步采样)。上传参考音频,并在『参考文本’里填入它的逐字转写——参考音频与参考文本必须配对;合成文本支持中文、英文及混排。权重 Apache-2.0。","input_hint_en":"**ZipVoice**: zero-shot voice cloning in zh/en (k2-fsa TTSZipformer flow matching + Vocos, distilled 8-step sampling). Upload a reference clip and put its exact transcript in the reference-text box — the clip and the transcript must match; synthesis text supports zh/en/mixed. Weights are Apache-2.0."}]')},dq={ming3_tts:[{name:"template_name",type:"text",label:"Prompt template",placeholder:"Automatic"},{name:"voice_id",type:"text",label:"IP voice name",placeholder:"US_James (IP template only)"},{name:"temperature",type:"number",label:"Temperature",default:0,minimum:0,step:.1},{name:"guidance_scale",type:"number",label:"Guidance scale",default:2,step:.1},{name:"sigma",type:"number",label:"SDE noise scale",default:.25,minimum:0,step:.05},{name:"trim_silence",type:"bool",label:"Trim trailing silence",default:!0}],ming3_audio:[{name:"voice_id",type:"text",label:"Voice name",placeholder:"US_James"},{name:"prompt",type:"text",label:"Audio task prompt",placeholder:"Use task default"},{name:"system_prompt",type:"text",label:"System prompt"},{name:"enable_thinking",type:"bool",label:"Enable thinking",default:!1},{name:"max_audio_tokens",type:"number",label:"Maximum acoustic patches per chunk",default:1e3,minimum:1,step:1},{name:"temperature",type:"number",label:"Temperature",default:0,minimum:0,step:.1},{name:"guidance_scale",type:"number",label:"Guidance scale",default:2,step:.1},{name:"disk_experts",scope:"session",session_option:"ming3_audio.disk_experts",type:"bool",label:"Offload expert weights",default:!1},{name:"pin_experts",scope:"session",session_option:"ming3_audio.pin_experts",type:"bool",label:"Keep experts in pinned host RAM",default:!1}],xtts_v2:[{name:"temperature",type:"slider",label:"Temperature",default:.75,minimum:0,maximum:2,step:.05},{name:"top_k",type:"number",label:"Top-k",default:50,minimum:0,step:1},{name:"top_p",type:"slider",label:"Top-p",default:.85,minimum:0,maximum:1,step:.01},{name:"repetition_penalty",type:"number",label:"Repetition penalty",default:10,minimum:1,step:.5},{name:"max_mel_tokens",type:"number",label:"Maximum mel tokens",default:605,minimum:1,step:1}],latentsync:[{name:"num_inference_steps",type:"number",label:"Denoising steps",default:20,minimum:1,maximum:999,step:1},{name:"cache_interval",type:"number",label:"DeepCache interval",default:1,minimum:1,step:1},{name:"guidance_scale",type:"number",label:"Guidance scale",default:1.5,minimum:0,step:.1},{name:"frames_per_chunk",type:"number",label:"Frames per chunk",default:16,minimum:1,maximum:24,step:1},{name:"fps",type:"number",label:"Frames per second",default:25,minimum:1,step:1},{name:"mem_saver",scope:"session",session_option:"latentsync.mem_saver",type:"bool",label:"Memory saver",default:!1}],ast_audioset:[{name:"top_k",type:"number",label:"Top classes",default:10,minimum:1,maximum:527,step:1}],ced:[{name:"top_k",type:"number",label:"Top classes",default:10,minimum:1,maximum:527,step:1}],fish_drama3:[{name:"text_chunk_size",type:"number",label:"Characters per chunk",default:128,minimum:1,step:1,info:"Smaller chunks reduce waveform-decoder peak memory; larger chunks reduce repeated prefills."},{name:"temperature",type:"slider",label:"Temperature",default:1,minimum:0,maximum:2,step:.05},{name:"top_p",type:"slider",label:"Top-p",default:.9,minimum:.01,maximum:1,step:.01},{name:"top_k",type:"number",label:"Top-k",default:4097,minimum:1,step:1},{name:"disk_experts",type:"bool",scope:"session",session_option:"fish_drama3.disk_experts",label:"Offload expert weights",default:!0,info:"Keep only selected expert weights on the GPU. Expert computation stays on the selected backend; changing this reloads the model."},{name:"pin_experts",type:"bool",scope:"session",session_option:"fish_drama3.pin_experts",label:"Preload experts in pinned host RAM",default:!0,info:"Requires expert offload. Faster uploads, but holds the full expert banks in pinned host RAM."},{name:"expert_cache_size",type:"number",scope:"session",session_option:"fish_drama3.expert_cache_size",label:"GPU expert slots per layer",default:8,minimum:8,maximum:256,step:1},{name:"context_length",type:"number",scope:"session",session_option:"fish_drama3.context_length",label:"Context capacity",default:4096,minimum:1,step:1,info:"Prompt and generated frames share this capacity, including all voice references and dialogue history."}],firered_vad:[{name:"threshold",type:"number",label:"Speech threshold",minimum:0,maximum:1,step:.05},{name:"min_silence_duration_ms",type:"number",label:"Minimum silence (ms)",default:200,minimum:0,step:10},{name:"speech_pad_ms",type:"number",label:"Speech padding (ms)",default:0,minimum:0,step:10}],hviske_asr_v6:[{name:"audio_chunk_mode",type:"choice",label:"Audio chunk mode",default:"auto",choices:["auto","silence","fixed","none"]},{name:"audio_chunk_duration_sec",type:"number",label:"Chunk duration (s)",default:28,minimum:.001,maximum:30,step:.1},{name:"max_tokens",type:"number",label:"Maximum tokens",default:440,minimum:1,step:1},{name:"num_beams",type:"number",label:"Beam count",default:2,minimum:1,step:1},{name:"length_penalty",type:"number",label:"Length penalty",default:1,minimum:0,step:.1}],micro_wake_word:[{name:"threshold",type:"number",label:"Detection threshold",minimum:0,maximum:1,step:.05},{name:"sliding_window_size",type:"number",label:"Sliding window frames",minimum:1,step:1}],open_wake_word:[{name:"threshold",type:"number",label:"Detection threshold",default:.5,minimum:0,maximum:1,step:.05}],plapre:[{name:"temperature",type:"number",label:"Temperature",default:.8,minimum:0,step:.05},{name:"top_p",type:"number",label:"Top-p",default:.95,minimum:.01,maximum:1,step:.01},{name:"top_k",type:"number",label:"Top-k",default:50,minimum:-1,step:1},{name:"x_vector_only_mode",type:"bool",label:"Reference speaker embedding only",default:!1}],mossformer2:[{name:"audio_chunk_duration_sec",type:"number",label:"Chunk duration (s, 0 = whole recording)",default:2,minimum:0,step:.1},{name:"audio_chunk_overlap_sec",type:"number",label:"Chunk overlap (s)",default:.5,minimum:0,step:.1},{name:"normalize_output",type:"bool",label:"Normalize output",default:!0}],sherpa_kws:[{name:"keywords",type:"text",label:"Keyword tokens (one phrase per line)",lines:3,placeholder:"Leave empty to use embedded keywords"},{name:"max_active_paths",type:"number",label:"Active decoding paths",default:4,minimum:1,step:1},{name:"keywords_score",type:"number",label:"Keyword score",default:1,minimum:0,step:.1},{name:"keywords_threshold",type:"number",label:"Keyword threshold",default:.25,minimum:0,maximum:1,step:.05},{name:"num_trailing_blanks",type:"number",label:"Trailing blanks",default:1,minimum:0,step:1}],tf_gridnet:[{name:"audio_chunk_duration_sec",type:"number",label:"Chunk duration (s, 0 = whole recording)",default:2.4,minimum:0,step:.1},{name:"audio_chunk_overlap_sec",type:"number",label:"Chunk overlap (s)",default:1.6,minimum:0,step:.1},{name:"normalize_output",type:"bool",label:"Normalize output",default:!0}],voxtral_tts:[{name:"voice_id",type:"choice",label:"Voice preset",default:"casual_male",choices:["casual_female","casual_male","cheerful_female","neutral_female","neutral_male","pt_male","pt_female","nl_male","nl_female","it_male","it_female","fr_male","fr_female","es_male","es_female","de_male","de_female","ar_male","hi_male","hi_female"]},{name:"num_inference_steps",type:"number",label:"Diffusion steps",default:7,minimum:1,step:1},{name:"guidance_scale",type:"number",label:"Guidance scale",default:1.2,minimum:0,step:.1},{name:"max_tokens",type:"number",label:"Maximum tokens",default:2048,minimum:1,step:1}],kugelaudio:[{name:"num_inference_steps",type:"number",label:"Diffusion steps",default:20,minimum:1,maximum:1e3,step:1},{name:"guidance_scale",type:"number",label:"Guidance scale",default:3,minimum:0,step:.1},{name:"max_tokens",type:"number",label:"Maximum tokens",default:2048,minimum:1,step:1},{name:"do_sample",type:"bool",label:"Sample AR tokens",default:!1},{name:"temperature",type:"number",label:"Temperature",default:1,minimum:0,step:.1},{name:"text_chunk_size",type:"number",label:"Text chunk size",default:300,minimum:1,step:1},{name:"text_chunk_mode",type:"choice",label:"Text chunk mode",default:"default",choices:["default","tag_aware","japanese","endline"]}],crisperwhisper:[{name:"transcription_mode",type:"choice",label:"Transcription mode",default:"verbatim",choices:["verbatim","intended","verbatimize"]},{name:"return_timestamps",type:"bool",label:"Word timestamps",default:!1},{name:"max_tokens",type:"number",label:"Maximum tokens",default:256,minimum:1,maximum:439,step:1},{name:"audio_chunk_mode",type:"choice",label:"Audio chunk mode",default:"auto",choices:["auto","fixed","none"]},{name:"audio_chunk_duration_sec",type:"number",label:"Chunk duration (s)",default:30,minimum:.02,maximum:30,step:.1},{name:"audio_chunk_overlap_sec",type:"number",label:"Chunk overlap (s)",default:4,minimum:0,step:.1}],index_echo:[{name:"target_language",type:"choice",label:"Translation language",default:"en",choices:["en","es","ja"]},{name:"max_text_tokens",type:"number",label:"Maximum text tokens",default:2e3,minimum:1,step:1},{name:"temperature",type:"number",label:"Temperature",default:0,minimum:0,maximum:2,step:.1},{name:"glossary",type:"text",label:"Glossary",default:""},{name:"audio_chunk_mode",type:"choice",label:"Audio chunk mode",default:"auto",choices:["auto","quiet_energy","fixed","none"]},{name:"audio_chunk_duration_sec",type:"number",label:"Chunk duration (s)",default:60,minimum:1,maximum:60,step:1}],audio_flamingo:[{name:"instruct",type:"text",label:"Question or instruction",default:"Transcribe the input speech.",lines:3},{name:"max_tokens",type:"number",label:"Maximum tokens",default:2048,minimum:1,step:1},{name:"do_sample",type:"bool",label:"Sample tokens",default:!1},{name:"temperature",type:"number",label:"Temperature",default:1,minimum:.01,step:.1},{name:"top_k",type:"number",label:"Top K",default:50,minimum:0,step:1},{name:"top_p",type:"number",label:"Top P",default:1,minimum:.01,maximum:1,step:.05},{name:"repetition_penalty",type:"number",label:"Repetition penalty",default:1,minimum:.01,step:.05}],owsm:[{name:"language",type:"text",label:"Input language (ISO 639-3)",default:"eng",placeholder:"eng, jpn, zho, auto"},{name:"target_language",type:"text",label:"Translation language (ISO 639-3)",default:""},{name:"return_timestamps",type:"bool",label:"Timestamp segments",default:!1},{name:"condition_on_previous_text",type:"bool",label:"Condition on previous text",default:!1},{name:"beam_size",type:"number",label:"Beam size",default:1,minimum:1,maximum:50002,step:1},{name:"max_tokens",type:"number",label:"Maximum tokens (0 = model limit)",default:0,minimum:0,maximum:374,step:1},{name:"audio_chunk_mode",type:"choice",label:"Audio chunk mode",default:"auto",choices:["auto","fixed","none"]},{name:"audio_chunk_duration_sec",type:"number",label:"Chunk duration (s)",default:30,minimum:.2,maximum:30,step:.1}],owsm_ctc:[{name:"language",type:"text",label:"Input language (ISO 639-3)",default:"eng",placeholder:"eng, jpn, zho, auto"},{name:"target_language",type:"text",label:"Translation language (ISO 639-3)",default:""},{name:"audio_chunk_mode",type:"choice",label:"Audio chunk mode",default:"auto",choices:["auto","fixed","none"]}],reuse:[{name:"audio_chunk_duration_sec",type:"number",label:"Chunk duration (s, 0 = whole recording)",default:0,minimum:0,step:1},{name:"audio_chunk_overlap_sec",type:"number",label:"Chunk overlap (s)",default:1,minimum:0,step:.1}],smart_turn:[{name:"threshold",type:"number",label:"Completion threshold",default:.5,minimum:0,maximum:1,step:.05}],maya1:[{name:"instruct",type:"text",label:"Voice description",default:"Warm female voice with an American accent and conversational pacing.",lines:3},{name:"temperature",type:"number",label:"Temperature",default:.4,minimum:.01,step:.05},{name:"top_p",type:"number",label:"Top P",default:.9,minimum:0,maximum:1,step:.05},{name:"repetition_penalty",type:"number",label:"Repetition penalty",default:1.1,minimum:.01,step:.05}],gigaam_asr:[{name:"return_timestamps",type:"bool",label:"Word timestamps",default:!1},{name:"audio_chunk_mode",type:"choice",label:"Audio chunk mode",default:"auto",choices:["auto","fixed","quiet_energy","none"]},{name:"audio_chunk_duration_sec",type:"number",label:"Audio chunk duration (s)",default:25,minimum:.02,maximum:25,step:.1}],samsone:[{name:"instruct",type:"text",label:"Question or instruction",default:"describe the audio",lines:3},{name:"max_tokens",type:"number",label:"Maximum tokens",default:100,minimum:1,maximum:512,step:1}],sam_audio:[{name:"num_inference_steps",type:"number",label:"Inference steps",default:16,minimum:1,step:1},{name:"anchors",type:"text",label:"Time anchors (JSON)",default:"",placeholder:'[["+",0.5,2.0],["-",3.0,4.0]]'}],tone_color_vc:[{name:"temperature",type:"number",label:"Temperature",default:.3,minimum:0,step:.05}],moss_ttsd:[{name:"instruct",type:"text",label:"Delivery instruction",default:""},{name:"temperature",type:"number",label:"Temperature",default:1.5,minimum:0,step:.1},{name:"top_p",type:"number",label:"Top P",default:.6,minimum:0,maximum:1,step:.05},{name:"top_k",type:"number",label:"Top K",default:50,minimum:0,step:1},{name:"repetition_penalty",type:"number",label:"Repetition penalty",default:1.1,minimum:0,step:.05},{name:"max_frames",type:"number",label:"Maximum audio frames (0 = automatic)",default:0,minimum:0,step:1}],moss_voicegen:[{name:"temperature",type:"number",label:"Temperature",default:1.5,minimum:0,step:.1},{name:"top_p",type:"number",label:"Top P",default:.6,minimum:0,maximum:1,step:.05},{name:"top_k",type:"number",label:"Top K",default:50,minimum:0,step:1},{name:"repetition_penalty",type:"number",label:"Repetition penalty",default:1.1,minimum:0,step:.05}],canary_asr:[{name:"target_language",type:"choice",label:"Target language",default:"",choices:["","en","de","es","fr"]},{name:"pnc",type:"bool",label:"Punctuation and capitalization",default:!0},{name:"audio_chunk_mode",type:"choice",label:"Audio chunk mode",default:"auto",choices:["auto","fixed","none"]},{name:"audio_chunk_duration_sec",type:"number",label:"Audio chunk duration (s)",default:40,minimum:.02,maximum:40,step:.1}],cohere_asr:[{name:"pnc",type:"bool",label:"Punctuation and capitalization",default:!0},{name:"audio_chunk_mode",type:"choice",label:"Audio chunk mode",default:"auto",choices:["auto","quiet_energy","fixed","none"]},{name:"audio_chunk_duration_sec",type:"number",label:"Audio chunk duration (s)",default:35,minimum:.04,maximum:35,step:.1}],moss_transcribe_diarize:[{name:"instruct",type:"text",label:"Instruction",default:"",lines:3}],apollo:[{name:"audio_chunk_duration_sec",type:"number",label:"Audio chunk duration (s)",default:0,minimum:0,step:1},{name:"audio_chunk_overlap_sec",type:"number",label:"Audio chunk overlap (s)",default:1,minimum:0,step:.1},{name:"edge_pad_duration_sec",type:"number",label:"Edge padding (s)",default:0,minimum:0,step:.1}],universr:[{name:"input_sample_rate",type:"choice",label:"Input bandwidth (Hz)",default:"",choices:["",8e3,12e3,16e3,24e3]},{name:"audio_chunk_duration_sec",type:"number",label:"Audio chunk duration (s)",default:0,minimum:0,step:1},{name:"sampler_mode",type:"choice",label:"Sampler",default:"midpoint",choices:["euler","midpoint","rk4"]},{name:"num_inference_steps",type:"number",label:"Inference steps",default:4,minimum:1,step:1},{name:"guidance_scale",type:"number",label:"Guidance scale",default:1.5,minimum:0,step:.1}],liveavatar:[{name:"reference_image_path",type:"text",label:"Reference image",default:""},{name:"generation_mode",type:"choice",label:"Generation mode",default:"offline",choices:["offline","liveavatar"]},{name:"height",type:"number",label:"Height",default:480,minimum:16,step:16,precision:0},{name:"width",type:"number",label:"Width",default:832,minimum:16,step:16,precision:0},{name:"num_frames",type:"number",label:"Frames per clip",default:48,minimum:1,step:1,precision:0},{name:"num_clips",type:"number",label:"Maximum clips",default:1,minimum:1,step:1,precision:0},{name:"num_inference_steps",type:"number",label:"Denoising steps",default:4,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"Guidance scale",default:0,minimum:0,maximum:10,step:.1},{name:"shift",type:"slider",label:"Scheduler shift",default:3,minimum:0,maximum:10,step:.1},{name:"negative_prompt",type:"text",label:"Negative prompt",default:""},{name:"fused_cfg",type:"bool",label:"Fused CFG",default:!0},{name:"sage_attention",type:"bool",label:"SageAttention",default:!0},{name:"memory_saver",type:"bool",label:"Memory saver",default:!0},{name:"denoiser_layerwise",type:"bool",label:"Layerwise denoiser",default:!1},{name:"denoiser_layerwise_batch",type:"number",label:"Layerwise batch",default:16,minimum:1,step:1,precision:0},{name:"vae_encoder_chunk_size",type:"number",label:"VAE encoder chunk",default:16,minimum:1,step:1,precision:0},{name:"vae_decoder_tile_size",type:"number",label:"VAE decoder tile",default:0,minimum:0,step:16,precision:0},{name:"target_cache_blocks",type:"number",label:"Target cache blocks",default:2,minimum:0,step:1,precision:0},{name:"vae_cache_f16",type:"bool",label:"F16 VAE cache",default:!0},{name:"denoiser_weight_streaming",type:"bool",scope:"session",session_option:"liveavatar.denoiser_weight_streaming",label:"Stream denoiser weights",default:!1}],pulsevad:[{name:"threshold",type:"slider",label:"Speech threshold",default:.5,minimum:0,maximum:1,step:.01},{name:"hop_size_samples",type:"number",label:"Hop size (samples)",default:1600,minimum:1,step:1},{name:"min_speech_duration_ms",type:"number",label:"Minimum speech (ms)",default:100,minimum:0,step:1},{name:"min_silence_duration_ms",type:"number",label:"Minimum silence (ms)",default:100,minimum:0,step:1}],echo_tts:[{name:"num_inference_steps",type:"slider",label:"num_inference_steps",label_en:"Sampling steps",default:40,minimum:8,maximum:40,step:1,precision:0,info:"Euler sampler steps."},{name:"text_guidance_scale",type:"slider",label:"text_guidance_scale",label_en:"Text guidance",default:3,minimum:0,maximum:10,step:.1},{name:"speaker_guidance_scale",type:"slider",label:"speaker_guidance_scale",label_en:"Speaker guidance",default:8,minimum:0,maximum:15,step:.1},{name:"truncation_factor",type:"slider",label:"truncation_factor",label_en:"Noise truncation",default:.8,minimum:0,maximum:1,step:.05},{name:"guidance_interval",type:"slider",label:"guidance_interval",label_en:"Guidance interval",default:1,minimum:1,maximum:3,step:1,precision:0,info:"Refresh the unconditional CFG lanes every Nth guided step. Higher is faster and works best with more steps; 1 is highest fidelity."},{name:"reference_duration_sec",type:"slider",label:"reference_duration_sec",label_en:"Reference trim (s)",default:15,minimum:1,maximum:60,step:1,info:"Trim the speaker reference before encoding. Around 10 s usually clones best."},{name:"seed",type:"number",label:"seed",label_en:"Seed",default:0,minimum:0,step:1,precision:0}],_comment:"WebUI TTS 高级参数控件配置:按模型 family 动态生成控件(gr.render)。每项字段:name=选项键;type=slider|number|bool|text|choice;scope=session 时写入 session_options,否则随请求 options 透传给模型;label/info=显示文案;default=默认值(应等于模型默认,已按 src/models/<family>/*.cpp 校对);minimum/maximum/step=数值范围;precision=0 表示整数;choices=下拉候选。seed/max_tokens 已有专用输入框,勿在此重复;参考文本用『参考文本』框(reference_text);文件路径/parity 类参数(如 *_noise_file)未纳入,可用『其它参数(JSON)』兜底框传。",qwen3_tts:[{name:"temperature",type:"slider",label:"temperature",default:.9,minimum:0,maximum:2,step:.05},{name:"top_k",type:"number",label:"top_k",default:50,minimum:0,step:1,precision:0},{name:"top_p",type:"slider",label:"top_p",default:1,minimum:0,maximum:1,step:.01},{name:"repetition_penalty",type:"slider",label:"repetition_penalty",default:1.05,minimum:1,maximum:2,step:.01},{name:"do_sample",type:"bool",label:"do_sample",default:!0},{name:"instruct",type:"text",label:"instruct(仅 VoiceDesign/CustomVoice)",default:"",placeholder:"风格/音色指令,Base 版忽略"},{name:"speaker",type:"text",label:"speaker(仅 CustomVoice)",default:"",placeholder:"内置音色名,其它版忽略"}],vibevoice:[{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:10,minimum:1,step:1,precision:0,info:"扩散步数(官方默认 10),越大越慢越稳"},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:1.3,minimum:0,maximum:5,step:.1,info:"CFG 引导强度"},{name:"max_length_times",type:"number",label:"max_length_times",default:2,minimum:.1,step:.1,info:"最大输出长度倍数"},{name:"temperature",type:"slider",label:"temperature",default:1,minimum:.05,maximum:2,step:.05},{name:"top_p",type:"slider",label:"top_p",default:1,minimum:.05,maximum:1,step:.01},{name:"do_sample",type:"bool",label:"do_sample",default:!1},{name:"voice_samples",type:"text",label:"voice_samples(多说话人,逗号分隔 wav,≤4)",default:"",placeholder:"D:/a.wav,D:/b.wav — 用此项时勿再上传参考音色"}],voxcpm2:[{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:10,minimum:1,step:1,precision:0,info:"CFM/DiT 步数"},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:2,minimum:0,maximum:5,step:.1},{name:"text_chunk_mode",type:"choice",label:"text_chunk_mode",default:"tag_aware",choices:["default","tag_aware","japanese","endline"]},{name:"min_tokens",type:"number",label:"min_tokens",default:2,minimum:0,step:1,precision:0},{name:"retry_badcase",type:"bool",label:"retry_badcase(自动重试异常输出)",default:!0}],voxcpm1:[{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:10,minimum:1,step:1,precision:0,info:"CFM/DiT 步数"},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:2,minimum:0,maximum:5,step:.1},{name:"min_tokens",type:"number",label:"min_tokens",default:2,minimum:0,step:1,precision:0},{name:"retry_badcase",type:"bool",label:"retry_badcase(自动重试异常输出)",default:!0}],miotts:[{name:"temperature",type:"slider",label:"temperature",default:.8,minimum:0,maximum:2,step:.05},{name:"top_k",type:"number",label:"top_k",default:50,minimum:0,step:1,precision:0},{name:"top_p",type:"slider",label:"top_p",default:1,minimum:0,maximum:1,step:.01},{name:"repetition_penalty",type:"slider",label:"repetition_penalty",default:1,minimum:1,maximum:1.5,step:.01},{name:"best_of_n",type:"number",label:"best_of_n(候选数,>1 自动开启)",default:1,minimum:1,maximum:8,step:1,precision:0}],chatterbox:[{name:"exaggeration",type:"slider",label:"exaggeration",default:.5,minimum:0,maximum:2,step:.05,info:"改动后需重新『加载模型』才生效"},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:.5,minimum:0,maximum:1,step:.05,info:"改动后需重新『加载模型』才生效"},{name:"temperature",type:"slider",label:"temperature",default:.8,minimum:0,maximum:2,step:.05},{name:"repetition_penalty",type:"slider",label:"repetition_penalty",default:1.2,minimum:1,maximum:2,step:.01}],"chatterbox-vc":[{name:"s3gen_cfg_rate",type:"slider",label:"s3gen_cfg_rate(音色引导强度)",label_en:"s3gen_cfg_rate (voice guidance)",default:.7,minimum:0,maximum:2,step:.05},{name:"num_inference_steps",type:"number",label:"num_inference_steps(生成步数)",label_en:"num_inference_steps",default:10,minimum:1,maximum:100,step:1,precision:0}],kokoro_tts:[{name:"speed",type:"slider",label:"speed(语速倍率)",label_en:"speed (speech rate)",default:1,minimum:.5,maximum:2,step:.05}],kitten_tts:[{name:"speed",type:"slider",label:"speed(语速倍率)",label_en:"speed (speech rate)",default:1,minimum:.01,maximum:2,step:.05},{name:"text_chunk_size",type:"number",label:"text_chunk_size(长文本分段字符数)",label_en:"text_chunk_size",default:400,minimum:32,step:1,precision:0},{name:"text_chunk_mode",type:"choice",label:"text_chunk_mode",default:"default",choices:["default","tag_aware","japanese","endline"]}],piper_tts:[{name:"speed",type:"slider",label:"speed(语速倍率)",label_en:"speed (speech rate)",default:1,minimum:.5,maximum:2,step:.05},{name:"variation",type:"slider",label:"variation(音色变化)",label_en:"variation",default:.667,minimum:0,maximum:1,step:.01},{name:"duration_variation",type:"slider",label:"duration_variation(时长变化)",label_en:"duration_variation",default:.8,minimum:0,maximum:2,step:.05},{name:"text_chunk_size",type:"number",label:"text_chunk_size(长文本分段字符数)",label_en:"text_chunk_size",default:280,minimum:1,step:1,precision:0},{name:"text_chunk_mode",type:"choice",label:"text_chunk_mode",default:"default",choices:["default","tag_aware","japanese","endline"]}],omnivoice:[{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:32,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:2,minimum:0,maximum:5,step:.1},{name:"speed",type:"slider",label:"speed",default:1,minimum:.5,maximum:2,step:.05},{name:"instruct",type:"text",label:"instruct(风格/音色指令)",default:"",placeholder:"如:以轻快的语气朗读"}],sense_asr:[{name:"enable_itn",type:"bool",label:"enable_itn(逆文本规范化)",label_en:"enable_itn",default:!0},{name:"keep_tags",type:"bool",label:"keep_tags(保留语言/情绪/事件标签)",label_en:"keep_tags",default:!1},{name:"audio_chunk_mode",type:"choice",label:"audio_chunk_mode",default:"auto",choices:["auto","fixed","none"]},{name:"audio_chunk_duration_sec",type:"number",label:"audio_chunk_duration_sec",default:30,minimum:.001,step:1}],"lfm2-audio-tts":[{name:"temperature",type:"slider",label:"temperature",default:.8,minimum:0,maximum:2,step:.05,info_en:"Audio code sampling temperature; 0 is greedy."},{name:"top_k",type:"number",label:"top_k",default:64,minimum:0,step:1,precision:0},{name:"text_chunk_size",type:"number",label:"text_chunk_size",default:200,minimum:32,step:1,precision:0,info_en:"Codepoints of text per spoken turn."}],"lfm2-audio-jp-tts":[{name:"temperature",type:"slider",label:"temperature",default:.8,minimum:0,maximum:2,step:.05,info_en:"Audio code sampling temperature; 0 is greedy."},{name:"top_k",type:"number",label:"top_k",default:64,minimum:0,step:1,precision:0},{name:"text_chunk_size",type:"number",label:"text_chunk_size",default:200,minimum:32,step:1,precision:0,info_en:"Codepoints of text per spoken turn."}],"lfm2-audio-s2s":[{name:"temperature",type:"slider",label:"temperature",default:1,minimum:0,maximum:2,step:.05,info_en:"Audio code sampling temperature; 0 is greedy."},{name:"top_k",type:"number",label:"top_k",default:4,minimum:0,step:1,precision:0},{name:"text_temperature",type:"slider",label:"text_temperature",default:0,minimum:0,maximum:2,step:.05,info_en:"Text token sampling temperature; 0 picks the most likely token, as liquid-audio does."},{name:"text_top_k",type:"number",label:"text_top_k",default:0,minimum:0,step:1,precision:0,info_en:"With text_temperature above 0, sample text tokens from the k most likely; 0 keeps all."}],"lfm2-audio-jp-s2s":[{name:"temperature",type:"slider",label:"temperature",default:1,minimum:0,maximum:2,step:.05,info_en:"Audio code sampling temperature; 0 is greedy."},{name:"top_k",type:"number",label:"top_k",default:4,minimum:0,step:1,precision:0},{name:"text_temperature",type:"slider",label:"text_temperature",default:0,minimum:0,maximum:2,step:.05,info_en:"Text token sampling temperature; 0 picks the most likely token, as liquid-audio does."},{name:"text_top_k",type:"number",label:"text_top_k",default:0,minimum:0,step:1,precision:0,info_en:"With text_temperature above 0, sample text tokens from the k most likely; 0 keeps all."}],lfm2_audio:[{name:"audio_chunk_mode",type:"choice",label:"audio_chunk_mode",default:"auto",choices:["auto","vad","fixed","none"],info_en:"auto keeps audio up to audio_chunk_seconds whole and splits longer audio at pauses; none transcribes it in one pass, which the model handles up to about a minute."},{name:"audio_chunk_seconds",type:"number",label:"audio_chunk_seconds",default:30,minimum:1,step:1},{name:"max_tokens",type:"number",label:"max_tokens",default:512,minimum:1,step:1,precision:0,info_en:"Transcript tokens allowed per chunk; a transcript that reaches it is cut off there."}],"lfm3-audio-tts":[{name:"temperature",type:"slider",label:"temperature",default:1,minimum:0,maximum:2,step:.05,info_en:"Audio code temperature; 0 picks the most likely code."},{name:"top_k",type:"number",label:"top_k",default:128,minimum:0,step:1,precision:0,info_en:"Sample audio codes from the k most likely; 0 keeps all."},{name:"repetition_penalty",type:"number",label:"repetition_penalty",default:1.1,minimum:.01,step:.05,info_en:"Audio repetition penalty over the last 4096 frames of each codebook; must be positive, 1 disables it."},{name:"text_chunk_size",type:"number",label:"text_chunk_size",default:200,minimum:1,step:1,precision:0,info_en:"Target characters per text chunk; each chunk is its own spoken turn."}],"lfm3-audio-s2s":[{name:"temperature",type:"slider",label:"temperature",default:1,minimum:0,maximum:2,step:.05,info_en:"Audio code temperature; 0 picks the most likely code."},{name:"top_k",type:"number",label:"top_k",default:128,minimum:0,step:1,precision:0,info_en:"Sample audio codes from the k most likely; 0 keeps all."},{name:"repetition_penalty",type:"number",label:"repetition_penalty",default:1.1,minimum:.01,step:.05,info_en:"Audio repetition penalty over the last 4096 frames of each codebook; must be positive, 1 disables it."},{name:"text_temperature",type:"slider",label:"text_temperature",default:0,minimum:0,maximum:2,step:.05,info_en:"Text token temperature; 0 is greedy."},{name:"text_top_k",type:"number",label:"text_top_k",default:0,minimum:0,step:1,precision:0,info_en:"Sample text tokens from the k most likely; 0 keeps all."},{name:"max_audio_tail_frames",type:"number",label:"max_audio_tail_frames",default:375,minimum:0,step:1,precision:0,info_en:"Most audio frames after the reply text ends before the turn is closed with an end-of-audio frame; 0 disables the cap."}],lfm3_audio:[{name:"audio_chunk_mode",type:"choice",label:"audio_chunk_mode",default:"auto",choices:["auto","vad","fixed","none"],info_en:"auto keeps audio up to audio_chunk_duration_sec whole and splits longer audio at VAD pauses; none transcribes it in one pass."},{name:"audio_chunk_duration_sec",type:"number",label:"audio_chunk_duration_sec",minimum:1,step:1,info_en:"Longest chunk in seconds; empty uses 300 or lfm3_audio.max_pass_duration_sec, whichever is lower."},{name:"chat",type:"bool",label:"chat",default:!1,info_en:"Answer the spoken input as a text chat reply instead of transcribing it."},{name:"enable_thinking",type:"bool",label:"enable_thinking",default:!1,info_en:"Needs chat. Let the model think first; only the text after </think> is returned."},{name:"max_tokens",type:"number",label:"max_tokens",minimum:1,step:1,precision:0,info_en:"Text tokens allowed per chunk; empty uses 512 or 8 per second of audio, whichever is more (chat 512, 2048 with thinking). A reply that reaches it is cut off there."}],confucius4_r2t2:[{name:"chunk_size_ms",type:"slider",scope:"session",session_option:"confucius4_r2t2.chunk_size_ms",label:"chunk_size_ms(流式分块毫秒)",label_en:"chunk_size_ms (streaming chunk, ms)",default:320,minimum:80,maximum:2e3,step:10,precision:0,info:"80-2000ms:越小延迟越低;320ms 在 Apple Silicon 上延迟与速度较均衡。",info_en:"80-2000 ms. Lower means lower latency; 320 ms balances latency and speed on Apple Silicon."},{name:"unfixed_chunk_num",type:"number",scope:"session",session_option:"confucius4_r2t2.unfixed_chunk_num",label:"unfixed_chunk_num(前 N 块不用稳定前缀)",label_en:"unfixed_chunk_num (leading chunks without prefix)",default:2,minimum:0,maximum:10,step:1,precision:0,info:"开头若干块不使用已识别文本作为前缀提示。",info_en:"Leading chunks that decode without a stable-prefix prompt."},{name:"unfixed_token_num",type:"number",scope:"session",session_option:"confucius4_r2t2.unfixed_token_num",label:"unfixed_token_num(回滚 token 数)",label_en:"unfixed_token_num (rollback tokens)",default:5,minimum:0,maximum:20,step:1,precision:0,info:"作为前缀前从累积文本回滚的 token 数,用于降低边界抖动。",info_en:"Tokens rolled back from the accumulated text before it is used as the prefix prompt."},{name:"rollback_punctuation",type:"bool",scope:"session",session_option:"confucius4_r2t2.rollback_punctuation",label:"rollback_punctuation(句末标点不回滚)",label_en:"rollback_punctuation (keep trailing punctuation)",default:!1,info:"输出已以标点结尾时不再回滚 token。",info_en:"Do not roll back tokens when the output already ends with punctuation."},{name:"max_new_tokens",type:"number",scope:"session",session_option:"confucius4_r2t2.max_tokens",label:"max_new_tokens(每分块解码上限)",label_en:"max_new_tokens (per-chunk decode budget)",default:32,minimum:1,maximum:256,step:1,precision:0,info:"每个流式分块的贪婪解码上限(会话级,区别于离线 max_tokens)。",info_en:"Greedy decode budget per streaming chunk (session-scoped; distinct from offline max_tokens)."}],pocket_tts:[{name:"frames_after_eos",type:"number",label:"frames_after_eos(-1=自动)",default:-1,minimum:-1,step:1,precision:0}],gradium_phonon:[{name:"frames_after_eos",type:"number",label:"frames_after_eos(-1=自动)",label_en:"frames_after_eos (-1 = auto)",default:-1,minimum:-1,step:1,precision:0},{name:"temperature",type:"slider",label:"temperature",default:.3,minimum:.05,maximum:1,step:.05}],neutts:[{name:"voice_id",type:"choice",label:"voice_id(内置音色)",label_en:"voice_id (built-in voice)",default:"emily",choices:["dave","emily","greta","jo","juliette","mateo","paul","sophie","steven"]},{name:"emotion",type:"choice",label:"emotion(情绪)",label_en:"emotion",default:"neutral",choices:["angry","disgusted","sad","happy","fearful","neutral","surprised"]}],magpie_tts:[{name:"language",type:"choice",label:"language",default:"en",choices:["en","ar-AE","ar-MSA","ar-SA","de","es","fr","hi","it","ko","pt-BR","vi","zh"]},{name:"voice_id",type:"choice",label:"voice_id(打包音色)",label_en:"voice_id (packaged voice)",default:"Aria",choices:["Aria","Jason","John","Leo","Sofia"]},{name:"temperature",type:"slider",label:"temperature",default:.6,minimum:0,maximum:2,step:.05},{name:"top_k",type:"number",label:"top_k",default:80,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:2.5,minimum:0,maximum:6,step:.1},{name:"text_chunk_size",type:"number",label:"text_chunk_size",default:300,minimum:1,step:1,precision:0},{name:"text_chunk_mode",type:"choice",label:"text_chunk_mode",default:"default",choices:["default","tag_aware","japanese","endline"]}],breeze_tts:[{name:"instruction",type:"text",label:"instruction",label_en:"Instruction",default:"",placeholder:"Describe the target voice for VoiceDesign."},{name:"text_chunk_size",type:"number",label:"text_chunk_size",default:600,minimum:1,step:1,precision:0},{name:"text_chunk_mode",type:"choice",label:"text_chunk_mode",default:"default",choices:["default","tag_aware","japanese","endline"]},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:1,minimum:0,maximum:10,step:.1},{name:"temperature",type:"slider",label:"temperature",default:.9,minimum:0,maximum:2,step:.05},{name:"depth_temperature",type:"slider",label:"depth_temperature",default:.9,minimum:0,maximum:2,step:.05},{name:"top_k",type:"number",label:"top_k",default:50,minimum:0,step:1,precision:0},{name:"top_p",type:"slider",label:"top_p",default:1,minimum:0,maximum:1,step:.01}],"breeze-tts":[{name:"text_chunk_size",type:"number",label:"text_chunk_size",default:600,minimum:1,step:1,precision:0},{name:"text_chunk_mode",type:"choice",label:"text_chunk_mode",default:"default",choices:["default","tag_aware","japanese","endline"]},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:1,minimum:0,maximum:10,step:.1},{name:"temperature",type:"slider",label:"temperature",default:.9,minimum:0,maximum:2,step:.05},{name:"depth_temperature",type:"slider",label:"depth_temperature",default:.9,minimum:0,maximum:2,step:.05},{name:"top_k",type:"number",label:"top_k",default:50,minimum:0,step:1,precision:0},{name:"top_p",type:"slider",label:"top_p",default:1,minimum:0,maximum:1,step:.01}],cosyvoice3:[{name:"template_name",type:"choice",label:"template_name",default:"zero_shot",choices:["zero_shot","cross_lingual","instruct"]},{name:"instruction",type:"text",label:"instruction",label_en:"Instruction",default:"",placeholder:"Used by template_name=instruct."},{name:"text_chunk_size",type:"number",label:"text_chunk_size",default:600,minimum:1,step:1,precision:0},{name:"text_chunk_mode",type:"choice",label:"text_chunk_mode",default:"default",choices:["default","tag_aware","japanese","endline"]},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:10,minimum:1,step:1,precision:0},{name:"min_tokens",type:"number",label:"min_tokens",default:0,minimum:0,step:1,precision:0},{name:"top_k",type:"number",label:"top_k",default:25,minimum:1,step:1,precision:0}],inflect_v2:[{name:"speaking_rate",type:"slider",label:"speaking_rate(语速倍率)",label_en:"speaking_rate",default:1,minimum:.5,maximum:2,step:.05},{name:"variation",type:"slider",label:"variation(音色变化)",label_en:"variation",default:.667,minimum:0,maximum:1,step:.01},{name:"text_chunk_size",type:"number",label:"text_chunk_size(长文本分段字符数)",label_en:"text_chunk_size",default:280,minimum:1,step:1,precision:0}],sanotts:[{name:"speaking_rate",type:"slider",label:"speaking_rate(语速倍率)",label_en:"speaking_rate",default:1,minimum:.5,maximum:2,step:.05},{name:"text_chunk_size",type:"number",label:"text_chunk_size(长文本分段字符数)",label_en:"text_chunk_size",default:280,minimum:1,step:1,precision:0},{name:"text_chunk_mode",type:"choice",label:"text_chunk_mode",default:"word_budget",choices:["word_budget"]}],dramabox:[{name:"negative_prompt",type:"text",label:"negative_prompt(负向提示)",label_en:"negative_prompt",default:"",placeholder:"留空=模型内置质量提示",placeholder_en:"Blank = built-in quality prompt"},{name:"duration_sec",type:"number",label:"duration_sec(0=自动估时)",label_en:"duration_sec (0 = auto)",default:0,minimum:0,step:.5},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:30,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:2.5,minimum:0,maximum:8,step:.1},{name:"spatio_temporal_guidance_scale",type:"slider",label:"spatio_temporal_guidance_scale",default:1.5,minimum:0,maximum:5,step:.1},{name:"duration_scale",type:"slider",label:"duration_scale(自动估时倍率)",label_en:"duration_scale",default:1.1,minimum:.5,maximum:2,step:.05},{name:"reference_duration_sec",type:"number",label:"reference_duration_sec(参考音频裁剪/重复秒数)",label_en:"reference_duration_sec",default:10,minimum:0,step:.5},{name:"guidance_rescale",type:"text",label:"guidance_rescale",default:"auto",placeholder:"auto 或数值"},{name:"audio_chunk_threshold_sec",type:"number",label:"audio_chunk_threshold_sec(长文本阈值)",label_en:"audio_chunk_threshold_sec",default:45,minimum:0,step:1},{name:"audio_chunk_duration_sec",type:"number",label:"audio_chunk_duration_sec(长文本分段目标时长)",label_en:"audio_chunk_duration_sec",default:37,minimum:0,step:1},{name:"cross_fade_duration_sec",type:"number",label:"cross_fade_duration_sec(分段交叉淡化)",label_en:"cross_fade_duration_sec",default:.05,minimum:0,step:.01}],confucius4_tts:[{name:"temperature",type:"slider",label:"temperature",default:.8,minimum:0,maximum:2,step:.05},{name:"top_p",type:"slider",label:"top_p",default:.8,minimum:0,maximum:1,step:.01},{name:"top_k",type:"number",label:"top_k",default:30,minimum:1,step:1,precision:0},{name:"num_beams",type:"number",label:"num_beams",default:3,minimum:1,step:1,precision:0},{name:"repetition_penalty",type:"slider",label:"repetition_penalty",default:10,minimum:0,maximum:20,step:.1},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:25,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:.7,minimum:0,maximum:2,step:.05},{name:"text_chunk_size",type:"number",label:"text_chunk_size",default:80,minimum:1,step:1,precision:0},{name:"text_chunk_mode",type:"choice",label:"text_chunk_mode",default:"default",choices:["default","tag_aware","japanese","endline"]},{name:"cross_fade_duration_sec",type:"number",label:"cross_fade_duration_sec",default:.3,minimum:0,step:.05},{name:"edge_fade_duration_sec",type:"number",label:"edge_fade_duration_sec",default:.1,minimum:0,step:.05},{name:"edge_pad_duration_sec",type:"number",label:"edge_pad_duration_sec",default:.1,minimum:0,step:.05}],ace_step:[{name:"lora",type:"text",scope:"session",session_option:"ace_step.lora",label:"LoRA adapter",default:"",info:"Adapter file or PEFT directory on the server; relative paths use the model root."},{name:"lora_scale",type:"number",scope:"session",session_option:"ace_step.lora_scale",label:"LoRA strength",default:1,step:.1,info:"Multiplies the adapter metadata scale; zero disables the adapter."},{name:"route",type:"choice",label:"route(操作类型)",default:"text2music",choices:["text2music","complete","lego","extract","cover","cover-nofsq","repaint","remix"],info:"cover/remix=换词翻唱,非 text2music 需上传源音频;详见 webui/README.md"},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:8,minimum:1,maximum:20,step:1,precision:0,info:"扩散步数(turbo 上限 20);remix 路由不填时默认 16,其他路由默认 8"},{name:"shift",type:"slider",label:"shift(时间步弯曲)",default:3,minimum:1,maximum:5,step:.5,info:"原版 turbo 默认 3.0;1.0 会明显劣化 remix 换词咬字"},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:1,minimum:0,maximum:5,step:.1},{name:"audio_cover_strength",type:"slider",label:"【cover】audio_cover_strength",default:1,minimum:0,maximum:1,step:.05,info:"1=贴近原曲,0=自由发挥;建议 0.5"},{name:"cover_noise_strength",type:"slider",label:"【cover】cover_noise_strength",default:0,minimum:0,maximum:1,step:.05,info:"保旋律强度;推荐 0.1~0.25"},{name:"source_caption",type:"text",label:"【remix】source_caption",default:"",placeholder:"源歌曲描述;『🔍 分析』自动填"},{name:"source_lyrics",type:"text",lines:4,label:"【remix】source_lyrics",default:"",placeholder:"源歌曲原歌词;『🔍 分析』自动填"},{name:"flow_edit_n_min",type:"slider",label:"【remix】flow_edit_n_min",default:0,minimum:0,maximum:1,step:.05,info:"调大更保源曲、换词更弱"},{name:"flow_edit_n_max",type:"slider",label:"【remix】flow_edit_n_max",default:1,minimum:0,maximum:1,step:.05,info:"唱不出新歌词时降到 0.7~0.9"},{name:"flow_edit_n_avg",type:"number",label:"【remix】flow_edit_n_avg",default:2,minimum:1,maximum:4,step:1,precision:0,info:"每步多次采样取平均(remix 默认 2);1=最快"},{name:"bpm",type:"number",label:"【曲谱】BPM",default:0,minimum:0,step:1,precision:0,info:"0=不指定"},{name:"keyscale",type:"text",label:"【曲谱】keyscale",default:"",placeholder:"如 F major"},{name:"timesignature",type:"text",label:"【曲谱】timesignature",default:"",placeholder:"如 4"}],minimax_music3:[{name:"num_inference_steps",type:"number",label:"Flow steps per window",default:30,minimum:1,maximum:200,step:1,precision:0,info:"Flow-matching Euler steps per 200-frame denoising window."},{name:"guidance_scale",type:"slider",label:"Flow guidance scale",default:1.7,minimum:0,maximum:10,step:.1},{name:"ar_guidance_scale",type:"slider",label:"AR guidance scale",default:1.5,minimum:0,maximum:10,step:.1,info:"Classifier-free guidance of the semantic and residual code sampling."},{name:"top_k",type:"number",label:"top_k",default:50,minimum:1,maximum:1024,step:1,precision:0}],auk:[{name:"model_gguf",type:"choice",scope:"session",session_option:"auk.model_gguf",label:"model_gguf",label_en:"Generator weights",default:"auk-base-f32.gguf",choices:["auk-base-f32.gguf","auk-base-f16.gguf","auk-base-q8_0.gguf","auk-flash-f32.gguf","auk-flash-f16.gguf","auk-flash-q8_0.gguf"],info:"Selects Base or AuK-Flash automatically. Reload the model after changing this value."},{name:"qwen_gguf",type:"choice",scope:"session",session_option:"auk.qwen_gguf",label:"qwen_gguf",label_en:"Qwen conditioner",default:"qwen2.5-omni-3b-bf16.gguf",choices:["qwen2.5-omni-3b-bf16.gguf","qwen2.5-omni-3b-q8_0.gguf"],info:"Reload the model after changing this value."},{name:"vae_gguf",type:"choice",scope:"session",session_option:"auk.vae_gguf",label:"vae_gguf",label_en:"VAE weights",default:"auk-vae-f32.gguf",choices:["auk-vae-f32.gguf"],info:"Reload the model after changing this value."},{name:"attention",type:"choice",scope:"session",session_option:"auk.attention",label:"attention",label_en:"Attention",default:"auto",choices:["auto","flash","eager"],info:"Flow-model attention mode. Reload the model after changing this value."},{name:"mem_saver",type:"bool",scope:"session",session_option:"auk.mem_saver",label:"mem_saver",label_en:"Memory saver",default:!1,info:"Release Qwen and generation weights between stages. Warm requests reload weights and rebuild graphs."},{name:"instruct",type:"text",label:"instruct",label_en:"Voice description",default:"",placeholder:"A warm male voice speaking clear English.",info:"Optional for TTS only. Without it, text carries the complete upstream instruction."},{name:"duration_sec",type:"number",label:"duration_sec",label_en:"Output duration (s)",default:"",minimum:.02,step:.02,info:"Required for speech generation without reference audio; otherwise the reference duration is used."},{name:"num_inference_steps",type:"number",label:"num_inference_steps",label_en:"Sampling steps",default:32,minimum:1,step:1,precision:0,info:"Base Euler steps. AuK-Flash always uses its fixed four-step schedule."},{name:"guidance_scale",type:"slider",label:"guidance_scale",label_en:"Guidance scale",default:2,minimum:0,maximum:10,step:.1,info:"Base guidance strength. AuK-Flash disables classifier-free guidance."},{name:"sway_sampling_coef",type:"number",label:"sway_sampling_coef",label_en:"Sway coefficient",default:-1,step:.1,info:"Base sampling schedule sway. AuK-Flash uses its fixed time grid."}],yue2:[{name:"ar_lora",type:"text",scope:"session",session_option:"yue2.ar_lora",label:"ar_lora",label_en:"AR LoRA adapter",default:"",placeholder:"/path/to/ar_lora_inst_v3abc.safetensors",info:"Unfused AR adapter for score and semantic planning; relative paths resolve against the model root. Reload the model after changing this value."},{name:"ar_lora_scale",type:"number",scope:"session",session_option:"yue2.ar_lora_scale",label:"ar_lora_scale",label_en:"AR LoRA strength",default:1,step:.1,info:"Scales the AR adapter deltas; 0 disables it. Reload the model after changing this value."},{name:"nar_lora",type:"text",scope:"session",session_option:"yue2.nar_lora",label:"nar_lora",label_en:"NAR LoRA adapter",default:"",placeholder:"/path/to/nar_lora_joint_v4.safetensors",info:"Unfused NAR adapter for acoustic detail; relative paths resolve against the model root. Reload the model after changing this value."},{name:"nar_lora_scale",type:"number",scope:"session",session_option:"yue2.nar_lora_scale",label:"nar_lora_scale",label_en:"NAR LoRA strength",default:1,step:.1,info:"Scales the LoRA deltas only; any full vae2llm/llm2vae projection replacements in the adapter stay at full strength. 0 disables the entire adapter. Reload the model after changing this value."},{name:"main_gguf",type:"choice",scope:"session",session_option:"yue2.model_gguf",label:"main_gguf",label_en:"Main weights",default:"yue2-3b-q8_0.gguf",choices:["yue2-3b-q8_0.gguf","yue2-3b-q4_0.gguf","yue2-3b-bf16.gguf"],info:"Reload the model after changing this value."},{name:"vae_gguf",type:"choice",scope:"session",session_option:"yue2.vae_gguf",label:"vae_gguf",label_en:"VAE weights",default:"yue2-vae-f16.gguf",choices:["yue2-vae-f16.gguf","yue2-vae-f32.gguf"],info:"Reload the model after changing this value."},{name:"style",type:"text",label:"style",label_en:"Style",default:"English, indie pop, bright acoustic guitar, soft drums, warm lead vocal, polished demo mix",placeholder:"English, city pop, groovy bass, synth, energetic vocal"},{name:"abc",type:"text",label:"abc",label_en:"ABC score",default:"",placeholder:"Optional ABC notation. Use cot=melody or cot=full.",lines:4},{name:"abc_file",type:"text",label:"abc_file",label_en:"ABC file path",default:"",placeholder:"/path/to/score.abc"},{name:"cot",type:"choice",label:"cot",label_en:"Planning route",default:"off",choices:["off","melody","full"],info:"off = direct generation; melody/full use or generate ABC planning."},{name:"guidance_scale",type:"slider",label:"guidance_scale",label_en:"Semantic guidance",default:1.01,minimum:0,maximum:5,step:.01},{name:"num_inference_steps",type:"number",label:"num_inference_steps",label_en:"NAR steps",default:8,minimum:1,maximum:64,step:1,precision:0},{name:"abc_temperature",type:"slider",label:"abc_temperature",label_en:"ABC temperature",default:.7,minimum:0,maximum:2,step:.05},{name:"abc_top_p",type:"slider",label:"abc_top_p",label_en:"ABC top-p",default:.9,minimum:.01,maximum:1,step:.01},{name:"abc_top_k",type:"number",label:"abc_top_k",label_en:"ABC top-k",default:30,minimum:1,step:1,precision:0},{name:"abc_repetition_penalty",type:"slider",label:"abc_repetition_penalty",label_en:"ABC repetition penalty",default:1.005,minimum:.1,maximum:2,step:.001},{name:"abc_penalty_window",type:"number",label:"abc_penalty_window",label_en:"ABC penalty window",default:100,minimum:1,step:1,precision:0},{name:"abc_min_tokens",type:"number",label:"abc_min_tokens",label_en:"ABC min tokens",default:32,minimum:0,step:1,precision:0},{name:"abc_max_tokens",type:"number",label:"abc_max_tokens",label_en:"ABC max tokens",default:4096,minimum:1,step:1,precision:0},{name:"semantic_temperature",type:"slider",label:"semantic_temperature",label_en:"Semantic temperature",default:1,minimum:0,maximum:2,step:.05},{name:"semantic_top_p",type:"slider",label:"semantic_top_p",label_en:"Semantic top-p",default:.95,minimum:.01,maximum:1,step:.01},{name:"semantic_top_k",type:"number",label:"semantic_top_k",label_en:"Semantic top-k",default:100,minimum:1,step:1,precision:0},{name:"semantic_repetition_penalty",type:"slider",label:"semantic_repetition_penalty",label_en:"Semantic repetition penalty",default:1.2,minimum:.1,maximum:2,step:.01},{name:"semantic_penalty_window",type:"number",label:"semantic_penalty_window",label_en:"Semantic penalty window",default:50,minimum:1,step:1,precision:0},{name:"semantic_min_tokens",type:"number",label:"semantic_min_tokens",label_en:"Semantic min tokens",default:200,minimum:0,step:1,precision:0},{name:"semantic_max_tokens",type:"number",label:"semantic_max_tokens",label_en:"Semantic max tokens",default:9e3,minimum:1,step:1,precision:0}],minimax_h3:[{name:"num_inference_steps",type:"number",label:"Denoising steps",default:12,minimum:1,maximum:50,step:1,precision:0,info:"Twelve denoising steps provide a practical quality and performance balance."},{name:"num_frames",type:"number",label:"Output frames",default:241,minimum:5,maximum:1441,step:4,precision:0,info:"Approximately 24 frames per output second; 241 frames produces about 10 seconds of audio."},{name:"guidance_scale",type:"slider",label:"Guidance scale",default:1,minimum:0,maximum:5,step:.1},{name:"sampler",type:"choice",label:"Sampler",default:"euler",choices:["euler","res_multistep","dpmpp_2m","unipc"]},{name:"dit_acceleration",type:"choice",label:"DiT acceleration",default:"none",choices:["none","spectrum","first_block_cache"],info:"None uses the quality-first full-DiT path. Acceleration modes are experimental and may distort some outputs."},{name:"return_video",type:"bool",label:"Decode video",default:!1,info:"Disabled by default to reduce memory use and return audio only."}],stable_audio:[{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:8,minimum:1,step:1,precision:0,info:"RF 扩散步数"},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:1,minimum:0,maximum:5,step:.1},{name:"audio_input_kind",type:"choice",label:"audio_input_kind(仅上传源音频时生效)",default:"init_audio",choices:["init_audio","inpaint_audio"]},{name:"init_noise_level",type:"slider",label:"init_noise_level(init_audio 强度)",default:1,minimum:0,maximum:1,step:.05}],seed_vc:[{name:"route",type:"choice",label:"route(转换路径)",default:"",choices:["","v2_vc","v1_whisper_bigvgan_vc","v1_xlsr_hift_vc","v1_svc"],info:"留空=按任务默认"},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:30,minimum:1,step:1,precision:0,info:"CFM 扩散步数"},{name:"length_adjust",type:"slider",label:"length_adjust(时长伸缩)",default:1,minimum:.5,maximum:2,step:.05},{name:"intelligibility_cfg_rate",type:"slider",label:"intelligibility_cfg_rate(仅 v2_vc)",default:.7,minimum:0,maximum:1,step:.05},{name:"similarity_cfg_rate",type:"slider",label:"similarity_cfg_rate(仅 v2_vc)",default:.7,minimum:0,maximum:1,step:.05},{name:"inference_cfg_rate",type:"slider",label:"inference_cfg_rate(仅 v1 路径)",default:.7,minimum:0,maximum:1,step:.05}],rvc:[{name:"voice_id",type:"choice",label:"voice_id(打包音色)",label_en:"voice_id",default:"default",choices:["default","manthos","chocola","fraise"]},{name:"voice_model_path",type:"text",label:"voice_model_path(自定义 RVC .pth/.pt)",label_en:"voice_model_path",default:"",placeholder:"留空=使用打包音色"},{name:"retrieval_index_path",type:"text",label:"retrieval_index_path(FAISS index)",label_en:"retrieval_index_path",default:"",placeholder:"可选 .index 路径"},{name:"retrieval_blend",type:"slider",label:"retrieval_blend",default:0,minimum:0,maximum:1,step:.05},{name:"semitone_shift",type:"number",label:"semitone_shift(半音变调)",label_en:"semitone_shift",default:0,step:1,precision:0},{name:"pitch_filter_radius",type:"number",label:"pitch_filter_radius",default:3,minimum:0,step:1,precision:0},{name:"output_sample_rate",type:"number",label:"output_sample_rate(0=跟随音色)",label_en:"output_sample_rate (0 = voice default)",default:0,minimum:0,step:1e3,precision:0},{name:"rms_mix_rate",type:"slider",label:"rms_mix_rate",default:.25,minimum:0,maximum:1,step:.05},{name:"unvoiced_protection",type:"slider",label:"unvoiced_protection",default:.33,minimum:0,maximum:1,step:.01},{name:"speaker_id",type:"number",label:"speaker_id",default:0,minimum:0,step:1,precision:0},{name:"audio_pad_duration_sec",type:"number",label:"audio_pad_duration_sec",default:1,minimum:1,step:1,precision:0},{name:"split_query_sec",type:"number",label:"split_query_sec",default:5,minimum:1,step:1,precision:0},{name:"split_center_sec",type:"number",label:"split_center_sec",default:30,minimum:1,step:1,precision:0},{name:"split_threshold_sec",type:"number",label:"split_threshold_sec",default:32,minimum:1,step:1,precision:0}],meanvc2:[{name:"seed",type:"number",label:"seed",default:42,minimum:0,step:1,precision:0}],personaplex:[{name:"voice_id",type:"choice",label:"voice_id(打包音色)",label_en:"voice_id (packaged voice)",default:"NATF2",choices:["NATF0","NATF1","NATF2","NATF3","NATM0","NATM1","NATM2","NATM3","VARF0","VARF1","VARF2","VARF3","VARF4","VARM0","VARM1","VARM2","VARM3","VARM4"]},{name:"system_prompt",type:"text",label:"system_prompt",default:"",placeholder:"Leave blank to use the text box as the system prompt."},{name:"temperature",type:"slider",label:"temperature",default:.8,minimum:0,maximum:2,step:.05},{name:"text_temperature",type:"slider",label:"text_temperature",default:.8,minimum:0,maximum:2,step:.05},{name:"top_k",type:"number",label:"top_k",default:250,minimum:0,step:1,precision:0},{name:"text_top_k",type:"number",label:"text_top_k",default:250,minimum:0,step:1,precision:0},{name:"do_sample",type:"bool",label:"do_sample",default:!0}],vevo2:[{name:"route",type:"choice",label:"route(任务路线)",default:"",choices:["","style_preserved_vc","style_converted_vc","style_preserved_svc","style_converted_svc","singing_style_conversion","editing"],info:"留空=按任务默认;详见 webui/README.md"},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:32,minimum:1,step:1,precision:0,info:"流匹配步数"},{name:"use_pitch_shift",type:"choice",label:"use_pitch_shift(自动音高对齐)",default:"",choices:["","true","false"],info:"留空=按路线默认"},{name:"audio_chunk_duration_sec",type:"number",label:"audio_chunk_duration_sec(源音频分段秒数)",default:0,minimum:0,step:1,info:"0=关闭;仅用于 source-audio VC/SVC 路线"},{name:"cross_fade_duration_sec",type:"number",label:"cross_fade_duration_sec(分段重叠/淡化秒数)",default:1,minimum:0,step:.1,info:"source-audio 分段启用时作为输入重叠和输出交叉淡化时长"},{name:"temperature",type:"slider",label:"temperature(AR 路线用)",default:.7,minimum:0,maximum:2,step:.05,info:"默认取自模型 generation_config.json"},{name:"top_k",type:"number",label:"top_k(AR 路线用)",default:20,minimum:0,step:1,precision:0,info:"默认取自模型 generation_config.json"},{name:"top_p",type:"slider",label:"top_p(AR 路线用)",default:.8,minimum:0,maximum:1,step:.01}],heartmula:[{name:"tags",type:"text",label:"tags(逗号分隔)",default:"pop",placeholder:"pop,bright,drums,female vocals",info:"风格/情绪/乐器/人声标签"},{name:"temperature",type:"slider",label:"temperature",default:1,minimum:0,maximum:2,step:.05},{name:"top_k",type:"number",label:"top_k",default:50,minimum:0,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale(MuLa CFG)",default:1.5,minimum:0,maximum:5,step:.1},{name:"num_inference_steps",type:"number",label:"num_inference_steps(codec 步数)",default:10,minimum:1,step:1,precision:0},{name:"infinite_mode",type:"bool",label:"infinite_mode(长输出分段生成)",default:!1},{name:"codec_guidance_scale",type:"slider",label:"codec_guidance_scale",default:1.25,minimum:0,maximum:5,step:.05}],index_tts2:[{name:"lang",type:"choice",label:"lang(语种提示, 仅 IndexTTS2.5 模型)",label_en:"lang (language hint, IndexTTS2.5 models only)",default:"auto",choices:["auto","zh","en","ja","es","ar"],info:"仅对 IndexTTS2.5(多语种)模型生效:auto 含汉字按中文,否则按英文;日/西/阿建议显式选择",info_en:"Only applies to IndexTTS2.5 (multilingual) models: auto picks zh when the text contains Han characters, otherwise en; set ja/es/ar explicitly"},{name:"emotion_text",type:"text",label:"emotion_text(情绪参考文本)",label_en:"emotion_text (emotion reference text)",default:"",placeholder:"例:你吓死我了!你是鬼吗?",placeholder_en:"e.g. You scared me to death!",info:"填写后自动开启情感条件(use_emotion_text)",info_en:"Setting this enables emotion conditioning."},{name:"emotion_alpha",type:"slider",label:"emotion_alpha(情感强度)",label_en:"emotion_alpha",default:1,minimum:0,maximum:1,step:.05},{name:"use_emotion_text",type:"bool",label:"use_emotion_text(从朗读文本推断情感)",label_en:"use_emotion_text (infer from text)",default:!1},{name:"use_random_emotion",type:"bool",label:"use_random_emotion(随机情感)",label_en:"use_random_emotion",default:!1},{name:"interval_silence_ms",type:"number",label:"interval_silence_ms(分段间静音)",label_en:"interval_silence_ms",default:200,minimum:0,step:50,precision:0},{name:"duration_factor",type:"slider",label:"duration_factor(语速/时长倍率,>1 更慢,<1 更快)",label_en:"duration_factor (duration multiplier; >1 slower, <1 faster)",default:1,minimum:.5,maximum:2,step:.05,info:"对齐官方 IndexTTS2.5 的 duration_factor:缩放输出时长,不改变音色/内容",info_en:"Matches official IndexTTS2.5 duration_factor: scales output duration without changing timbre or content"}],zipvoice:[{name:"guidance_scale",type:"slider",label:"guidance_scale(引导强度,0=关闭)",label_en:"guidance_scale (0 disables CFG)",default:3,minimum:0,maximum:10,step:.5},{name:"num_inference_steps",type:"number",label:"num_inference_steps(Euler 步数)",label_en:"num_inference_steps",default:8,minimum:1,maximum:64,step:1,precision:0},{name:"t_shift",type:"slider",label:"t_shift(时间步偏移,越小越偏低 SNR)",label_en:"t_shift (timestep shift)",default:.5,minimum:.05,maximum:1,step:.05},{name:"speed",type:"slider",label:"speed(语速倍率)",label_en:"speed (duration multiplier)",default:1,minimum:.5,maximum:2,step:.05},{name:"lang",type:"text",label:"lang(英文段 espeak 语言)",label_en:"lang (espeak voice for English runs)",default:"en-us",placeholder:"en-us"}],irodori_tts:[{name:"num_inference_steps",type:"number",label:"num_inference_steps(RF 扩散步数)",label_en:"num_inference_steps",default:40,minimum:1,step:1,precision:0},{name:"duration_sec",type:"number",label:"duration_sec(0=模型自动预测时长)",label_en:"duration_sec (0 = auto)",default:0,minimum:0,step:.5},{name:"duration_scale",type:"slider",label:"duration_scale(语速倒数,越大越慢)",label_en:"duration_scale",default:1,minimum:.5,maximum:2,step:.05}],moss_tts_local:[{name:"do_sample",type:"bool",label:"do_sample",default:!0},{name:"temperature",type:"slider",label:"temperature",default:1.7,minimum:0,maximum:2.5,step:.05},{name:"top_p",type:"slider",label:"top_p",default:.8,minimum:0,maximum:1,step:.01},{name:"top_k",type:"number",label:"top_k",default:25,minimum:0,step:1,precision:0},{name:"repetition_penalty",type:"slider",label:"repetition_penalty",default:1,minimum:1,maximum:2,step:.01}],moss_tts_v15:[{name:"instruct",type:"text",label:"instruct(音色描述)",label_en:"instruct (voice description)",default:"",placeholder:"参考音频比文字描述更可靠",placeholder_en:"A reference recording is more reliable than a description."},{name:"language",type:"choice",label:"language(语言)",label_en:"language",default:"",choices:["","English","Chinese"]},{name:"temperature",type:"slider",label:"temperature",default:1.5,minimum:0,maximum:3,step:.05},{name:"top_p",type:"slider",label:"top_p",default:.6,minimum:0,maximum:1,step:.01},{name:"top_k",type:"number",label:"top_k",default:50,minimum:0,step:1,precision:0},{name:"repetition_penalty",type:"slider",label:"repetition_penalty",default:1.1,minimum:1,maximum:2,step:.01}],moss_tts_nano:[{name:"do_sample",type:"bool",label:"do_sample",default:!0},{name:"temperature",type:"slider",label:"temperature",default:1.7,minimum:0,maximum:2.5,step:.05},{name:"top_p",type:"slider",label:"top_p",default:.8,minimum:0,maximum:1,step:.01},{name:"top_k",type:"number",label:"top_k",default:25,minimum:0,step:1,precision:0},{name:"repetition_penalty",type:"slider",label:"repetition_penalty",default:1,minimum:1,maximum:2,step:.01}],audiosr:[{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:50,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:3.5,minimum:0,maximum:10,step:.1},{name:"ddim_eta",type:"slider",label:"ddim_eta",default:1,minimum:0,maximum:1,step:.05},{name:"audio_chunk_duration_sec",type:"number",label:"audio_chunk_duration_sec",default:15,minimum:1,step:1},{name:"audio_chunk_overlap_sec",type:"number",label:"audio_chunk_overlap_sec",default:2,minimum:0,step:.5}],controlfoley:[{name:"duration_sec",type:"number",label:"duration_sec",default:8,minimum:.1,step:.5},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:25,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:4.5,minimum:0,maximum:10,step:.1},{name:"negative_prompt",type:"text",label:"negative_prompt",default:"",placeholder:"optional negative prompt"},{name:"mask_away_clip",type:"bool",label:"mask_away_clip",default:!1}],midashenglm_gen:[{name:"duration_sec",type:"number",label:"duration_sec",default:20,minimum:.1,step:.5},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:2,minimum:0,maximum:10,step:.1},{name:"stop_threshold",type:"slider",label:"stop_threshold",default:.5,minimum:0,maximum:1,step:.05},{name:"min_stop_step",type:"number",label:"min_stop_step",default:5,minimum:0,step:1,precision:0}],"fireredtts3-base":[{name:"language",type:"choice",label:"language",default:"Chinese",choices:["Chinese","English","Cantonese","Japanese","Korean","Spanish","French","Russian","Arabic","Turkish","Indonesian","Portuguese","Italian","Dutch","Vietnamese","German","Ukrainian","Thai","Polish","Romanian","Greek","Czech","Finnish","Hindi","ZH_Anhui","ZH_Fujian","ZH_Gansu","ZH_Guizhou","ZH_Hebei","ZH_Henan","ZH_Hubei","ZH_Hunan","ZH_Jiangxi","ZH_Liaoning","ZH_Minnan","ZH_Ningxia","ZH_Shaanxi","ZH_Shandong","ZH_Shanghai","ZH_Shanxi","ZH_Sichuan","ZH_Tianjin","ZH_Wenzhou","ZH_Wu","ZH_Yunnan"]},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:10,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:2,minimum:0,maximum:10,step:.1},{name:"stop_threshold",type:"slider",label:"stop_threshold",default:.5,minimum:0,maximum:1,step:.05}],"fireredtts3-instruct":[{name:"template_name",type:"choice",label:"template_name",default:"instruct_tts",choices:["instruct_tts"]},{name:"language",type:"choice",label:"language",default:"Chinese",choices:["Chinese","English","Cantonese","Japanese","Korean","Spanish","French","Russian","Arabic","Turkish","Indonesian","Portuguese","Italian","Dutch","Vietnamese","German","Ukrainian","Thai","Polish","Romanian","Greek","Czech","Finnish","Hindi","ZH_Anhui","ZH_Fujian","ZH_Gansu","ZH_Guizhou","ZH_Hebei","ZH_Henan","ZH_Hubei","ZH_Hunan","ZH_Jiangxi","ZH_Liaoning","ZH_Minnan","ZH_Ningxia","ZH_Shaanxi","ZH_Shandong","ZH_Shanghai","ZH_Shanxi","ZH_Tianjin","ZH_Wenzhou","ZH_Wu","ZH_Yunnan"]},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:10,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:2,minimum:0,maximum:10,step:.1},{name:"stop_threshold",type:"slider",label:"stop_threshold",default:.5,minimum:0,maximum:1,step:.05},{name:"text_chunk_size",type:"number",label:"text_chunk_size",default:600,minimum:1,step:1,precision:0},{name:"text_chunk_mode",type:"choice",label:"text_chunk_mode",default:"default",choices:["default","tag_aware","japanese","endline"]}],"fireredtts3-instruct-vdesign":[{name:"template_name",type:"choice",label:"template_name",default:"voice_design",choices:["voice_design"]},{name:"language",type:"choice",label:"language",default:"Chinese",choices:["Chinese","English","Cantonese","Japanese","Korean","Spanish","French","Russian","Arabic","Turkish","Indonesian","Portuguese","Italian","Dutch","Vietnamese","German","Ukrainian","Thai","Polish","Romanian","Greek","Czech","Finnish","Hindi","ZH_Anhui","ZH_Fujian","ZH_Gansu","ZH_Guizhou","ZH_Hebei","ZH_Henan","ZH_Hubei","ZH_Hunan","ZH_Jiangxi","ZH_Liaoning","ZH_Minnan","ZH_Ningxia","ZH_Shaanxi","ZH_Shandong","ZH_Shanghai","ZH_Shanxi","ZH_Tianjin","ZH_Wenzhou","ZH_Wu","ZH_Yunnan"]},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:10,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:2,minimum:0,maximum:10,step:.1},{name:"stop_threshold",type:"slider",label:"stop_threshold",default:.5,minimum:0,maximum:1,step:.05}],"firered-audio-tts":[{name:"template_name",type:"choice",label:"template_name",default:"tts_clone",choices:["tts_clone"]},{name:"language",type:"choice",label:"language",default:"zh",choices:["zh","en"]},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:10,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:2,minimum:0,maximum:10,step:.1},{name:"max_new_audio_steps",type:"number",label:"max_new_audio_steps",default:750,minimum:1,step:1,precision:0},{name:"top_k",type:"number",label:"top_k",default:20,minimum:0,step:1,precision:0},{name:"top_p",type:"slider",label:"top_p",default:.8,minimum:0,maximum:1,step:.01},{name:"temperature",type:"slider",label:"temperature",default:.7,minimum:0,maximum:2,step:.05}],"firered-audio-vdesign":[{name:"template_name",type:"choice",label:"template_name",default:"voice_design",choices:["voice_design"]},{name:"language",type:"choice",label:"language",default:"zh",choices:["zh","en"]},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:10,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:2,minimum:0,maximum:10,step:.1},{name:"max_new_audio_steps",type:"number",label:"max_new_audio_steps",default:750,minimum:1,step:1,precision:0}],"firered-audio-semantic-edit":[{name:"template_name",type:"choice",label:"template_name",default:"semantic_edit",choices:["semantic_edit"]},{name:"language",type:"choice",label:"language",default:"zh",choices:["zh","en"]},{name:"instruction",type:"text",label:"instruction",default:"",placeholder:"delete '比普通的茶叶要'"},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:10,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:2,minimum:0,maximum:10,step:.1},{name:"max_new_audio_steps",type:"number",label:"max_new_audio_steps",default:750,minimum:1,step:1,precision:0},{name:"max_new_text_tokens",type:"number",label:"max_new_text_tokens",default:512,minimum:1,step:1,precision:0}],"firered-audio-acoustic-edit":[{name:"template_name",type:"choice",label:"template_name",default:"acoustic_edit",choices:["acoustic_edit"]},{name:"language",type:"choice",label:"language",default:"zh",choices:["zh","en"]},{name:"instruction",type:"text",label:"instruction",default:"shift the pitch by 3 steps",placeholder:"shift the pitch by 3 steps"},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:10,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:2,minimum:0,maximum:10,step:.1},{name:"max_new_audio_steps",type:"number",label:"max_new_audio_steps",default:750,minimum:1,step:1,precision:0}],"firered-audio-asr":[{name:"template_name",type:"choice",label:"template_name",default:"asr",choices:["asr","understand"]},{name:"language",type:"choice",label:"language",default:"zh",choices:["zh","en"]},{name:"enable_thinking",type:"bool",label:"enable_thinking",default:!1},{name:"max_new_tokens",type:"number",label:"max_new_tokens",default:512,minimum:1,step:1,precision:0},{name:"top_k",type:"number",label:"top_k",default:20,minimum:0,step:1,precision:0},{name:"top_p",type:"slider",label:"top_p",default:.8,minimum:0,maximum:1,step:.01},{name:"temperature",type:"slider",label:"temperature",default:.7,minimum:0,maximum:2,step:.05}],sopro_tts:[{name:"language",type:"choice",label:"language",label_en:"Language tag",default:"",choices:["","en","pt","fr","de"],info:"Optional <|lang_xx|> tag; helps pronunciation on ambiguous text."},{name:"temperature",type:"slider",label:"temperature",label_en:"Temperature",default:.8,minimum:0,maximum:2,step:.05},{name:"top_p",type:"slider",label:"top_p",label_en:"Top-p",default:.9,minimum:0,maximum:1,step:.01},{name:"top_k",type:"number",label:"top_k",label_en:"Top-k",default:25,minimum:0,step:1,precision:0,info:"0 disables top-k truncation."},{name:"num_inference_steps",type:"number",label:"num_inference_steps",label_en:"Acoustic steps",default:2,minimum:1,maximum:32,step:1,precision:0,info:"Rectified-flow Euler steps for the acoustic head."},{name:"max_seconds",type:"number",label:"max_seconds",label_en:"Max seconds per segment",default:30,minimum:1,maximum:60,step:.5,precision:1},{name:"min_seconds",type:"number",label:"min_seconds",label_en:"Min seconds per segment",default:.4,minimum:0,maximum:10,step:.1,precision:1,info:"Must not exceed max_seconds."},{name:"ref_seconds",type:"number",label:"ref_seconds",label_en:"Reference seconds",default:10,minimum:1,maximum:30,step:.5,precision:1,info:"Reference window used for cloning."},{name:"text_chunk_size",type:"number",label:"text_chunk_size",label_en:"Segment size",default:300,minimum:20,maximum:2e3,step:10,precision:0,info:"Max codepoints per synthesis segment."}],supertonic:[{name:"voice",type:"choice",label:"voice(预置音色:M 男声 / F 女声)",label_en:"voice (M = male, F = female presets)",default:"M1",choices:["M1","M2","M3","M4","M5","F1","F2","F3","F4","F5"]},{name:"speaking_rate",type:"slider",label:"speaking_rate(语速倍率)",label_en:"speaking_rate",default:1.05,minimum:.5,maximum:2,step:.05},{name:"num_inference_steps",type:"number",label:"num_inference_steps(流匹配步数)",label_en:"num_inference_steps",default:8,minimum:1,step:1,precision:0}],audio8_tts:[{name:"temperature",type:"slider",label:"temperature",default:.7,minimum:0,maximum:2,step:.05},{name:"top_p",type:"slider",label:"top_p",default:.9,minimum:0,maximum:1,step:.01},{name:"top_k",type:"number",label:"top_k",default:50,minimum:0,step:1,precision:0},{name:"max_tokens",type:"number",label:"max_tokens",default:1024,minimum:1,step:1,precision:0}]};function Pd(a,t){const i=t?.load_target??void 0;return{...a,path:i?.model_path??a.path,load_target:i,load_target_error:t?.load_target_error??void 0,load_options:i?.load_options,session_options:i?.session_options}}function Cm(a){if(!a.load_target)throw new Error(a.load_target_error||`Package load target is not ready: ${a.label}`);return a.load_target}const Gm=Object.assign({"../../../../model_specs/ace_step.json":zT,"../../../../model_specs/apollo.json":ET,"../../../../model_specs/ast_audioset.json":UT,"../../../../model_specs/audio8_asr.json":RT,"../../../../model_specs/audio8_tts.json":BT,"../../../../model_specs/audio_flamingo.json":PT,"../../../../model_specs/audiosr.json":jT,"../../../../model_specs/auk.json":NT,"../../../../model_specs/breeze_tts.json":OT,"../../../../model_specs/bs_roformer.json":DT,"../../../../model_specs/builtin_audio_utils.json":IT,"../../../../model_specs/canary_asr.json":LT,"../../../../model_specs/ced.json":VT,"../../../../model_specs/chatterbox.json":HT,"../../../../model_specs/chatterbox_turbo.json":WT,"../../../../model_specs/citrinet_asr.json":QT,"../../../../model_specs/cohere_asr.json":KT,"../../../../model_specs/confucius4_r2t2.json":YT,"../../../../model_specs/confucius4_tts.json":JT,"../../../../model_specs/controlfoley.json":XT,"../../../../model_specs/cosyvoice3.json":ZT,"../../../../model_specs/crisperwhisper.json":e8,"../../../../model_specs/dots_tts.json":t8,"../../../../model_specs/dramabox.json":a8,"../../../../model_specs/echo_tts.json":i8,"../../../../model_specs/f5_tts.json":n8,"../../../../model_specs/firered_audio.json":s8,"../../../../model_specs/firered_vad.json":r8,"../../../../model_specs/fireredtts3.json":o8,"../../../../model_specs/fish_audio.json":l8,"../../../../model_specs/fish_drama3.json":c8,"../../../../model_specs/fun_asr_nano.json":d8,"../../../../model_specs/gigaam_asr.json":u8,"../../../../model_specs/glm_tts.json":f8,"../../../../model_specs/gradium_phonon.json":p8,"../../../../model_specs/granite5asr.json":m8,"../../../../model_specs/haas_asr.json":g8,"../../../../model_specs/heartmula.json":h8,"../../../../model_specs/higgs_audio_stt.json":_8,"../../../../model_specs/higgs_audio_tts.json":v8,"../../../../model_specs/htdemucs.json":b8,"../../../../model_specs/htdemucs_6stems.json":y8,"../../../../model_specs/hviske_asr.json":w8,"../../../../model_specs/hviske_asr_v6.json":k8,"../../../../model_specs/index_echo.json":x8,"../../../../model_specs/index_tts2.json":S8,"../../../../model_specs/inflect_v2.json":T8,"../../../../model_specs/irodori_tts.json":$8,"../../../../model_specs/kitten_tts.json":q8,"../../../../model_specs/kitten_tts2.json":A8,"../../../../model_specs/kokoro_tts.json":C8,"../../../../model_specs/kroko_asr.json":G8,"../../../../model_specs/kugelaudio.json":F8,"../../../../model_specs/latentsync.json":M8,"../../../../model_specs/lfm2_audio.json":z8,"../../../../model_specs/lfm3_audio.json":E8,"../../../../model_specs/liveavatar.json":U8,"../../../../model_specs/magenta_realtime_2.json":R8,"../../../../model_specs/magpie_tts.json":B8,"../../../../model_specs/maya1.json":P8,"../../../../model_specs/meanvc2.json":j8,"../../../../model_specs/mel_band_roformer.json":N8,"../../../../model_specs/micro_wake_word.json":O8,"../../../../model_specs/midashenglm_gen.json":D8,"../../../../model_specs/ming3_audio.json":I8,"../../../../model_specs/ming3_tts.json":L8,"../../../../model_specs/minimax_h3.json":V8,"../../../../model_specs/minimax_music3.json":H8,"../../../../model_specs/miocodec.json":W8,"../../../../model_specs/miotts.json":Q8,"../../../../model_specs/mira_tts.json":K8,"../../../../model_specs/mms_forced_aligner.json":Y8,"../../../../model_specs/moonshine_asr.json":J8,"../../../../model_specs/moss_transcribe_diarize.json":X8,"../../../../model_specs/moss_tts_local.json":Z8,"../../../../model_specs/moss_tts_nano.json":e$,"../../../../model_specs/moss_tts_v15.json":t$,"../../../../model_specs/moss_ttsd.json":a$,"../../../../model_specs/moss_voicegen.json":i$,"../../../../model_specs/mossformer2.json":n$,"../../../../model_specs/muscriptor.json":s$,"../../../../model_specs/nemotron_3_diar.json":r$,"../../../../model_specs/nemotron_asr.json":o$,"../../../../model_specs/nemotron_transcribe.json":l$,"../../../../model_specs/neutts.json":c$,"../../../../model_specs/niagara_asr.json":d$,"../../../../model_specs/omnivoice.json":u$,"../../../../model_specs/open_wake_word.json":f$,"../../../../model_specs/outetts.json":p$,"../../../../model_specs/owsm.json":m$,"../../../../model_specs/owsm_ctc.json":g$,"../../../../model_specs/parakeet_tdt.json":h$,"../../../../model_specs/personaplex.json":_$,"../../../../model_specs/phonon2_asr.json":v$,"../../../../model_specs/piper_tts.json":b$,"../../../../model_specs/plapre.json":y$,"../../../../model_specs/pocket_tts.json":w$,"../../../../model_specs/pulsevad.json":k$,"../../../../model_specs/qwen3_asr.json":x$,"../../../../model_specs/qwen3_forced_aligner.json":S$,"../../../../model_specs/qwen3_tts.json":T$,"../../../../model_specs/realtime_reuse.json":$$,"../../../../model_specs/reuse.json":q$,"../../../../model_specs/rvc.json":A$,"../../../../model_specs/sam_audio.json":C$,"../../../../model_specs/samsone.json":G$,"../../../../model_specs/sanotts.json":F$,"../../../../model_specs/seed_vc.json":M$,"../../../../model_specs/sense_asr.json":z$,"../../../../model_specs/sheetsage2.json":E$,"../../../../model_specs/sherpa_kws.json":U$,"../../../../model_specs/sidon.json":R$,"../../../../model_specs/smart_turn.json":B$,"../../../../model_specs/soprano_tts.json":P$,"../../../../model_specs/sopro_tts.json":j$,"../../../../model_specs/sortformer_diar.json":N$,"../../../../model_specs/sortformer_diar_v2.json":O$,"../../../../model_specs/soulx_flashhead.json":D$,"../../../../model_specs/stable_audio.json":I$,"../../../../model_specs/supertonic.json":L$,"../../../../model_specs/tf_gridnet.json":V$,"../../../../model_specs/tone_color_vc.json":H$,"../../../../model_specs/underdog_bark3.json":W$,"../../../../model_specs/universr.json":Q$,"../../../../model_specs/vevo2.json":K$,"../../../../model_specs/vibeasr.json":Y$,"../../../../model_specs/vibevoice.json":J$,"../../../../model_specs/vibevoice_asr.json":X$,"../../../../model_specs/vibevoice_asr_streaming.json":Z$,"../../../../model_specs/vieneu_v3_turbo.json":eq,"../../../../model_specs/voxcpm1.json":tq,"../../../../model_specs/voxcpm2.json":aq,"../../../../model_specs/voxtral_realtime.json":iq,"../../../../model_specs/voxtral_tts.json":nq,"../../../../model_specs/whistle_asr.json":sq,"../../../../model_specs/xtts_v2.json":rq,"../../../../model_specs/yue2.json":oq,"../../../../model_specs/zipvoice.json":lq}),jd=Object.values(Gm).flatMap(a=>(a.packages||[]).map(t=>({...t,family:a.family}))),_b=new Map(Object.values(Gm).map(a=>[a.family,a])),Ko=Object.fromEntries(Object.values(Gm).map(a=>[a.family,[...new Set(Object.values(a.capabilities||{}).flat())]])),uq=new Set(["ming3_tts","ming3_audio","latentsync","xtts_v2","canary_asr","cohere_asr","moss_transcribe_diarize","confucius4_r2t2","audiosr","controlfoley","breeze_tts","cosyvoice3","firered_audio","fireredtts3","irodori_tts","kitten_tts2","kokoro_tts","meanvc2","midashenglm_gen","sanotts","mossformer2","plapre","voxtral_tts"]),fq=/[\u3400-\u4dbf\u4e00-\u9fff\uf900-\ufaff]/u;function Nd(a,t){for(const i of[a,t])if(i&&!fq.test(i))return i;return""}function pq(a,t,i){return Nd(t,i)||a.replace(/_/g," ")}const vb=a=>a.replace(/\\/g,"/").replace(/^\.\//,"").replace(/^models\//i,"").replace(/\/$/,"").toLowerCase(),bb=a=>a.toLowerCase().replace(/[^a-z0-9]/g,"");function Fm(a){return a.find(t=>t.default)||a.find(t=>t.precision==="q8_0")||a[0]}function yb(a){const t=jd.filter(l=>l.family===a.family);if(!t.length)return[];if(a.family==="ace_step"||a.family==="minimax_music3"||!a.download_id)return t;const i=t.find(l=>l.id===a.download_id);if(i){const l=i.id.replace(/_(?:q8_0|q8|f16|fp16|bf16|safetensors|orig)$/i,""),c=t.filter(d=>d.id.replace(/_(?:q8_0|q8|f16|fp16|bf16|safetensors|orig)$/i,"")===l);return c.length?c:[i]}const n=bb(a.download_id),s=t.filter(l=>{const c=bb(l.id);return c.startsWith(n)||n.startsWith(c)});if(s.length)return s;const r=vb(a.path),o=t.filter(l=>vb(l.target_directory)===r);if(o.length){const l=new Set(o.map(d=>d.id.replace(/_(?:q8_0|q8|f16|fp16|bf16|safetensors|orig)$/i,""))),c=t.filter(d=>l.has(d.id.replace(/_(?:q8_0|q8|f16|fp16|bf16|safetensors|orig)$/i,"")));return c.length?c:o}return t}function mq(a){const t=jd.filter(s=>s.family===a.family&&s.format==="gguf");if(!t.length)return[];if(a.family==="sanotts"||a.family==="xtts_v2"||!a.download_id)return t;const i=t.find(s=>s.id===a.download_id);if(!i)return yb(a);const n=t.filter(s=>s.target_directory===i.target_directory);return n.length?n:[i]}function wb(a,t){return t&&a.id===t?0:a.default?1:["q4_k","q4_0","q8_0","q8"].includes(a.precision)?2:["f16","fp16","bf16"].includes(a.precision)?3:a.precision==="f32"?4:a.precision==="orig"?5:6}function Od(a){if(a.family==="sanotts"){if(a.id.includes("_heart_nano_"))return"Heart Nano";if(a.id.includes("_heart_"))return"Heart";if(a.id.includes("_amy_"))return"Amy";if(a.id.includes("_hfc_"))return"HFC";if(a.id.includes("_kristin_"))return"Kristin";if(a.id.includes("_vi_"))return"Vietnamese";if(a.id.includes("_id_"))return"Indonesian";if(a.id.includes("_cs_"))return"Czech";if(a.id.includes("_de_"))return"German";if(a.id.includes("_es_"))return"Spanish";if(a.id.includes("_fr_"))return"French";if(a.id.includes("_it_"))return"Italian";if(a.id.includes("_pt_"))return"Portuguese (Brazil)";if(a.id.includes("_ro_"))return"Romanian";if(a.id.includes("_ru_"))return"Russian";if(a.id.includes("_tr_"))return"Turkish";if(a.id.includes("_ne_"))return"Nepali";if(a.id.includes("_hi_"))return"Hindi"}if(a.family==="ace_step"){const t=a.precision==="bf16"?"BF16":["q8_0","q8"].includes(a.precision)?"Q8":a.precision.toUpperCase();return a.id.includes("_xl_turbo_")?`GGUF Turbo XL ${t}`:a.id.includes("_xl_sft_")?`GGUF Turbo XL SFT ${t}`:a.id.includes("_turbo_")?`GGUF Turbo ${t}`:`GGUF ${t}`}return a.family==="irodori_tts"&&a.id.includes("_anime_")?"Anime Q8":a.family==="yue2"?a.id==="yue2_main_q8_0"?"Main Q8_0":a.id==="yue2_main_q4_0"?"Main Q4_0":a.id==="yue2_main_bf16"?"Main BF16":a.id==="yue2_vae_f16"?"VAE F16":a.id==="yue2_vae_f32"?"VAE F32":a.display_name||"Yue2 component":a.family==="auk"?a.id==="auk_base_f32"?"Base F32":a.id==="auk_base_f16"?"Base F16":a.id==="auk_base_q8_0"?"Base Q8_0":a.id==="auk_flash_f32"?"AuK-Flash F32":a.id==="auk_flash_f16"?"AuK-Flash F16":a.id==="auk_flash_q8_0"?"AuK-Flash Q8_0":a.id==="auk_qwen_bf16"?"Qwen BF16":a.id==="auk_qwen_q8_0"?"Qwen Q8_0":a.id==="auk_vae_f32"?"VAE F32":a.display_name||"AuK component":a.format==="safetensors"?"Safetensors":a.id.includes("int8_dit")?"GGUF Q4 ConvRot":a.precision==="q4_k"||a.precision==="q4_0"?"GGUF Q4":a.precision==="q8_0"||a.precision==="q8"?"GGUF Q8":a.precision==="bf16"?"GGUF BF16":a.precision==="f16"||a.precision==="fp16"?"GGUF FP16":`GGUF ${a.precision.toUpperCase()}`}function Dd(a){const t=a.format==="gguf"?a.files?.find(s=>s.toLowerCase().endsWith(".gguf")):void 0;if(!t)return`models/${a.target_directory}`;let i=t.replace(/\\/g,"/");const n=(a.strip_prefix||"").replace(/\\/g,"/").replace(/\/$/,"");return n&&i.startsWith(`${n}/`)&&(i=i.slice(n.length+1)),`models/${a.target_directory}/${i}`.replace(/\/+/g,"/")}function gq(a){if(["maya1","gigaam_asr","samsone","sam_audio","tone_color_vc","moss_ttsd","moss_voicegen","kugelaudio","crisperwhisper","index_echo","audio_flamingo","owsm","owsm_ctc","reuse","sidon","smart_turn"].includes(a.family)){const o=(a.download_id||"").replace(/_(?:q8_0|q4_k|bf16|f16|f32|orig)(?:_codec_f16(?:_decode)?)?$/,"");return jd.filter(l=>l.family===a.family&&l.format==="gguf"&&l.id.replace(/_(?:q8_0|q4_k|bf16|f16|f32|orig)(?:_codec_f16(?:_decode)?)?$/,"")===o).sort((l,c)=>+(c.id===a.download_id)-+(l.id===a.download_id)).map(l=>({id:l.id,label:Od(l),path:Dd(l),format:l.format,precision:l.precision}))}const t=uq.has(a.family);if(a.family==="auk"){const o=jd.filter(c=>c.family===a.family&&c.format==="gguf"),l=new Map([["auk_base_f32",0],["auk_base_f16",1],["auk_base_q8_0",2],["auk_flash_f32",3],["auk_flash_f16",4],["auk_flash_q8_0",5],["auk_qwen_bf16",6],["auk_qwen_q8_0",7],["auk_vae_f32",8]]);return o.sort((c,d)=>(l.get(c.id)??99)-(l.get(d.id)??99)).map(c=>({id:c.id,label:Od(c),path:Dd(c),format:c.format,precision:c.precision}))}if(a.family==="yue2"){const o=jd.filter(c=>c.family===a.family&&c.format==="gguf"),l=new Map([["yue2_main_q8_0",0],["yue2_main_q4_0",1],["yue2_main_bf16",2],["yue2_vae_f16",3],["yue2_vae_f32",4]]);return o.filter(c=>c.format==="gguf").sort((c,d)=>(l.get(c.id)??99)-(l.get(d.id)??99)).map(c=>({id:c.id,label:Od(c),path:Dd(c),format:c.format,precision:c.precision}))}const i=t?mq(a):yb(a);if(a.family==="ace_step"||a.family==="minimax_music3"||t)return i.filter(o=>o.format==="gguf").sort((o,l)=>t?wb(o,a.download_id)-wb(l,a.download_id):+(l.default===!0)-+(o.default===!0)).map(o=>({id:o.id,label:Od(o),path:Dd(o),format:o.format,precision:o.precision}));const n=Fm(i.filter(o=>o.format==="gguf"&&["q8_0","q8"].includes(o.precision))),s=Fm(i.filter(o=>o.format==="gguf"&&["f16","fp16"].includes(o.precision)))||Fm(i.filter(o=>o.format==="gguf"&&o.precision==="bf16")),r=!n&&!s?i.filter(o=>o.format==="gguf"):[];return[n,s,...r].filter(o=>o!==void 0).map(o=>({id:o.id,label:Od(o),path:Dd(o),format:o.format,precision:o.precision}))}const Oi=cq.models.flatMap(a=>{const t=gq(a);if(a.download_id&&t.length===0)return[];const i=t[0],n=_b.get(a.family);return[{...a,display_name:Nd(a.display_name_en,a.display_name)||a.id,input_hint:Nd(a.input_hint_en,a.input_hint),download_id:i?.id||a.download_id,install_packages:t,path:i?.path||a.path,request_options:n?.options?.request?.map(s=>s.name),required_request_options:n?.options?.request?.filter(s=>s.required===!0).map(s=>s.name),builtin_voices:a.builtin_voices??n?.ui?.builtin_voices,default_voice:a.default_voice??n?.ui?.default_voice}]}),Yo=Object.fromEntries(Object.entries(dq).filter(a=>Array.isArray(a[1])).map(([a,t])=>[a,t.map(i=>({...i,label:pq(i.name,i.label_en,i.label),placeholder:Nd(i.placeholder_en,i.placeholder),info:Nd(i.info_en,i.info)}))]));for(const[a,t]of _b){const i=t.options?.session?.find(r=>r.name==="lora"),n=t.options?.session?.find(r=>r.name==="lora_scale"),s=Yo[a]||[];!i||!n||s.some(r=>r.session_option===`${a}.lora`)||(Yo[a]=[...s,{name:"lora",group:"lora",scope:"session",session_option:`${a}.lora`,type:"text",label:"Adapter path",default:"",info:i.description},{name:"lora_scale",group:"lora",scope:"session",session_option:`${a}.lora_scale`,type:"number",label:"Strength",default:n.default??"",minimum:n.min,maximum:n.max,step:.1,info:n.description}])}const hq={tts:"Text to speech",clon:"Voice cloning",asr:"Transcription",gen:"Music & sound",midi:"Audio to MIDI",vc:"Voice conversion",svc:"Singing conversion",s2s:"Speech editing",sep:"Source separation",vad:"Voice activity",diar:"Speaker diarization",align:"Forced alignment",vdes:"Voice design",spk:"Speaker analysis",turn:"Turn detection",wake:"Wake-word detection",cls:"Audio classification"},_q={code:"it",name:"Italiano",translations:JSON.parse(`{"request.minimaxFrames":"{frames} fotogrammi di output allineati","param.minimax_h3.num_inference_steps.label":"Passaggi di denoising","param.minimax_h3.num_inference_steps.info":"Dodici passaggi di denoising offrono un buon equilibrio tra qualità e prestazioni.","param.minimax_h3.num_frames.label":"Fotogrammi di output","param.minimax_h3.num_frames.info":"Calcolati dalla durata a circa 24 fotogrammi per secondo di output. Modificando i fotogrammi si aggiorna anche la durata.","param.minimax_h3.guidance_scale.label":"Scala di guida","param.minimax_h3.sampler.label":"Campionatore","param.minimax_h3.dit_acceleration.label":"Accelerazione DiT","param.minimax_h3.dit_acceleration.info":"None usa il percorso DiT completo orientato alla qualità. Le modalità accelerate sono sperimentali e possono distorcere alcuni risultati.","param.minimax_h3.return_video.label":"Decodifica video","param.minimax_h3.return_video.info":"Disattivata per impostazione predefinita per ridurre l'uso della memoria e restituire solo l'audio.","model.minimax_h3.hint":"MiniMax-H3 usa un DiT audio/video congiunto. GGUF Q4 privilegia la qualità; GGUF Q4 ConvRot, solo CUDA, usa un po' più VRAM per una maggiore velocità. Il percorso DiT completo predefinito privilegia la qualità audio e disattiva la decodifica video.","status.modelReady":"{model} è caricato e pronto.","status.runningTask":"Esecuzione di {task}...","status.completeIn":"Completato in {seconds} s.","status.packageAvailable":"{model} userà {format}. Ora è disponibile nello Studio.","app.nativeStudio":"Studio nativo","nav.studio":"Studio","nav.arena":"Arena","nav.models":"Modelli","nav.runtime":"Runtime","language.label":"Lingua dell'interfaccia","theme.label":"Tema","theme.system":"Sistema","theme.dark":"Scuro","theme.light":"Chiaro","workflow.tts":"Sintesi vocale","workflow.asr":"ASR / Trascrizione","workflow.music":"Generazione di musica e video","workflow.vc":"Conversione vocale","workflow.sep":"Separazione sorgenti","workflow.analysis":"Analisi audio","workflow.design":"Progettazione voce","studio.eyebrow":"INTELLIGENZA AUDIO LOCALE","studio.title":"Studio audio","studio.subtitle.tts":"Genera una voce naturale dal testo, con voci predefinite e clonazione quando supportate.","studio.subtitle.asr":"Trascrivi l'audio parlato in testo, con controlli di lingua e timestamp quando supportati.","studio.subtitle.music":"Crea musica e suoni da una descrizione, un testo o un audio di riferimento.","studio.subtitle.vc":"Trasforma una registrazione in un'altra voce conservando l'interpretazione parlata o cantata.","studio.subtitle.sep":"Separa una registrazione in voce, strumenti o altre tracce audio disponibili.","studio.subtitle.analysis":"Analizza attività vocale, parlanti, tempi e allineamento dell'audio.","studio.subtitle.design":"Crea o perfeziona una voce da una descrizione e dai controlli di riferimento supportati.","studio.model":"Modello","studio.noModel":"Nessun modello selezionato","studio.resident":"Caricato","studio.notInstalled":"Non installato","studio.available":"Disponibile","studio.chooseInstalled":"Scegli un modello installato","studio.notDownloaded":"non scaricato","studio.pathFound":"Percorso trovato","studio.pathMissing":"Percorso mancante","studio.pathUnknown":"Percorso non verificato","studio.load":"Carica modello","studio.unload":"Scarica modello","studio.working":"Elaborazione…","studio.bundledLoaded":"Integrato · caricato","request.label":"RICHIESTA","request.title":"Input e controlli","request.prompt":"Prompt","request.text":"Testo","request.splitLongText":"Dividi e unisci testi lunghi","request.charactersPerChunk":"Caratteri per segmento","request.language":"Lingua","request.autoLanguage":"vuoto = automatico","request.seed":"Seed","request.randomSeed":"-1 = casuale","request.maxTokens":"Token massimi","request.sourceAudio":"Audio sorgente","request.recordMicrophone":"Registra microfono","voice.quickStart":"Voci demo per avvio rapido","voice.useReference":"Usa un file audio di riferimento qui sotto","voice.reference":"Voce di riferimento","voice.required":"obbligatoria","voice.optional":"opzionale","voice.referenceText":"Testo di riferimento","voice.transcript":"Trascrizione di riferimento","voice.saved":"Voci salvate","voice.browserOnly":"solo in questo browser","voice.chooseSaved":"Scegli una voce salvata...","voice.libraryName":"Nome nella libreria","voice.save":"Salva voce","common.delete":"Elimina","common.cancel":"Annulla","common.close":"Chiudi","common.refresh":"Aggiorna","common.browse":"Sfoglia","common.apply":"Applica","options.modelParameters":"Parametri del modello","options.additional":"Opzioni aggiuntive","run.run":"Esegui","run.cancel":"Annulla","run.working":"Elaborazione…","result.title":"Risultato","result.label":"RISULTATO","result.saveWav":"Salva WAV","result.empty":"L'audio generato e i risultati strutturati appariranno qui.","models.eyebrow":"LIBRERIA MODELLI","models.title":"Pacchetti locali","models.subtitle":"Scarica e gestisci i pacchetti dei modelli senza uscire dall'interfaccia.","models.folder":"Cartella modelli","models.useDefault":"Usa predefinita","models.showTypes":"Mostra tipi di modello","models.stopDownload":"Interrompi download","models.cleanPartial":"Elimina download parziale","runtime.title":"Registro sessione","runtime.status":"Stato","runtime.backend":"Backend","runtime.registered":"Registrati","runtime.resident":"Caricati","runtime.noEvents":"Nessun evento.","folder.title":"Scegli una cartella","folder.up":"Livello superiore","folder.select":"Seleziona questa cartella","common.applying":"Applicazione…","common.disabled":"Disabilitato","common.enabled":"Abilitato","file.choose":"Scegli file","file.none":"Nessun file selezionato","folder.closeLabel":"Chiudi selettore cartelle","folder.empty":"Questa cartella non contiene sottocartelle.","folder.eyebrow":"CARTELLA MODELLI","folder.loading":"Caricamento...","folder.loadingFolders":"Caricamento cartelle...","footer.embedded":"SvelteKit · incorporato in audiocpp_server","models.checkingSize":"verifica dimensione…","models.default":"Predefinita","models.downloaded":"Scaricato","models.folderHint":"download, rilevamento locale e caricamento dei modelli","models.folderPlaceholder":"cartella models accanto ad audiocpp_server","models.hfAccess":"Accesso HF richiesto","models.model":"modello","models.queued":"in coda","models.reinstall":"Reinstalla","models.selected":"Selezionato","models.sharedPackage":"Usa il pacchetto condiviso {name} mostrato sopra.","models.sizeUnavailable":"dimensione non disponibile","models.stopping":"arresto","models.update":"Aggiorna","models.updateAvailable":"Aggiornamento disponibile","models.upToDate":"Aggiornato","models.variants":"varianti","models.versionUnknown":"Versione sconosciuta","nav.primary":"Navigazione principale","nav.workflows":"Flussi di lavoro audio","arena.eyebrow":"ARENA","arena.title.tts":"Confronto TTS","arena.title.vc":"Confronto conversione vocale","arena.title.asr":"Confronto ASR","arena.subtitle":"Esegue lo stesso input sui modelli installati e sui pacchetti scelti, uno dopo l'altro.","arena.subtitle.tts":"Esegue lo stesso testo sui modelli TTS e sui pacchetti scelti.","arena.subtitle.vc":"Esegue lo stesso audio sorgente sui modelli di conversione vocale scelti.","arena.subtitle.asr":"Esegue lo stesso audio sorgente sui modelli ASR scelti e confronta le trascrizioni.","arena.mode.tts":"TTS","arena.mode.vc":"Conversione vocale","arena.mode.asr":"ASR","arena.input.label":"Input","arena.input.title":"Richiesta condivisa","arena.input.textPlaceholder":"Inserisci un prompt da confrontare tra modelli TTS","arena.input.groundTruth":"Testo atteso","arena.input.groundTruthPlaceholder":"Incolla la trascrizione attesa per calcolare il WER","arena.shared":"condivisa","arena.voice.label":"Voce","arena.voice.modelDefault":"Predefinita del modello","arena.voice.builtin":"Voce demo integrata","arena.voice.reference":"Audio di riferimento","arena.voice.builtinNote":"Le voci integrate vengono passate come voice ID a ogni modello. Questo tipo di voce non richiede testo di riferimento.","arena.voice.targetSpeaker":"Audio parlante target","arena.voice.clearTarget":"Cancella target","arena.voice.clearReference":"Cancella riferimento","arena.options.shared":"Opzioni condivise","arena.queue.label":"Coda","arena.queue.title":"Modelli","arena.queue.add":"Aggiungi","arena.queue.remove":"Rimuovi","arena.queue.clear":"Cancella","arena.queue.empty":"Aggiungi modelli installati o pacchetti di precisione da confrontare.","arena.run":"Esegui arena","arena.package.label":"Pacchetto","arena.package.configured":"Configurato","arena.results.title":"Confronta output","arena.results.empty":"Nessun risultato arena.","arena.metric.wall":"tempo","arena.metric.rtf":"rtf","arena.metric.wer":"wer","arena.itemStatus.queued":"in coda","arena.itemStatus.loading":"caricamento","arena.itemStatus.running":"esecuzione","arena.itemStatus.done":"completato","arena.itemStatus.failed":"fallito","arena.itemStatus.skipped":"saltato","arena.status.duplicate":"{model} {package} è già nell'arena.","arena.status.loadingModel":"Caricamento modello","arena.status.runningRequest":"Esecuzione richiesta","arena.status.addModel":"Aggiungi almeno un modello all'arena.","arena.status.running":"Esecuzione arena {mode}...","arena.status.complete":"Esecuzione arena completata.","arena.note.skippedTargetVoice":"Saltato perché questo modello VC richiede audio del parlante target.","arena.note.skippedReferenceText":"Saltato perché questo modello richiede testo di riferimento per l'input voce selezionato.","arena.note.builtinVoice":"Voce integrata usata: {voice}.","arena.note.referenceVoice":"Voce di riferimento usata.","arena.note.referenceUnsupported":"Voce predefinita usata; la voce di riferimento non è supportata.","arena.note.defaultVoice":"Voce predefinita usata: {voice}.","arena.note.skippedReferenceVoice":"Saltato perché questo modello richiede una voce di riferimento.","arena.error.seed":"Il seed deve essere -1 o un intero unsigned a 32 bit (0-4294967295).","arena.error.jsonObject":"deve essere un oggetto","arena.error.invalidJson":"JSON opzioni arena non valido: {error}","arena.error.unregistered":"Il modello configurato non è registrato da questo server.","arena.error.notDownloaded":"{package} non è scaricato.","arena.error.loadFailed":"Il modello non è stato caricato.","arena.error.missingCatalog":"Il modello non è più nel catalogo.","arena.error.enterTtsText":"Inserisci testo per l'arena TTS.","arena.error.chooseAsrSource":"Scegli audio sorgente per l'arena ASR.","arena.error.chooseVcSource":"Scegli audio sorgente per l'arena VC.","arena.error.noAudio":"La risposta non include audio.","request.alignmentText":"Testo di allineamento","request.context":"Prompt di contesto","request.contextHint":"terminologia o nomi opzionali","request.duration":"Durata in secondi","request.liveDescription":"Elabora richieste consecutive di quattro secondi usando la modalità streaming del modello.","request.liveTitle":"Trascrizione microfono in diretta","request.lyrics":"Testo della canzone","request.optional":"opzionale","request.recordingMicrophone":"Registrazione microfono","request.soundPlaceholder":"Descrivi il suono o la musica…","request.startLive":"Avvia diretta","request.stopLive":"Ferma diretta","request.stopRecording":"Ferma registrazione","request.textPlaceholder":"Inserisci il testo…","request.voiceDescription":"Descrizione della voce","request.voiceDescriptionPlaceholder":"Una voce calda e calma con ritmo misurato…","result.track":"traccia","result.tracks":"tracce","runtime.eyebrow":"RUNTIME","runtime.subtitle":"Eventi del ciclo di vita e delle richieste nel browser.","status.ready":"Pronto","studio.estimatedVram":"VRAM stimata: {value} GB","studio.vram":"VRAM —","task.align":"Allineamento forzato","task.asr":"Trascrizione","task.clon":"Clonazione vocale","task.diar":"Diarizzazione parlanti","task.gen":"Generazione musicale","task.s2s":"Modifica del parlato","task.sep":"Separazione sorgenti","task.svc":"Conversione della voce cantata","task.tts":"Sintesi vocale","task.vad":"Attività vocale","task.vc":"Conversione vocale","task.vdes":"Progettazione voce","voice.bundledNote":"L'audio di riferimento incluso e la relativa trascrizione vengono forniti automaticamente.","voice.namePlaceholder":"La mia voce di riferimento","voice.recommendedClone":"consigliata per la clonazione","voice.recording":"Registrazione voce di riferimento","voice.requiredClone":"obbligatoria per questa clonazione vocale","voice.transcriptPlaceholder":"Digita le parole esatte dell'audio di riferimento oppure carica il file .txt corrispondente."}`)},vq={code:"ja",name:"日本語",translations:{"request.minimaxFrames":"位置合わせ済みの出力フレーム数: {frames}","param.minimax_h3.num_inference_steps.label":"ノイズ除去ステップ数","param.minimax_h3.num_inference_steps.info":"ノイズ除去を12ステップにすると、品質と処理速度のバランスがよくなります。","param.minimax_h3.num_frames.label":"出力フレーム数","param.minimax_h3.num_frames.info":"出力の長さから、毎秒約24フレームとして計算します。フレーム数を変更すると、出力の長さも更新されます。","param.minimax_h3.guidance_scale.label":"ガイダンススケール","param.minimax_h3.sampler.label":"サンプラー","param.minimax_h3.dit_acceleration.label":"DiT高速化","param.minimax_h3.dit_acceleration.info":"Noneでは、品質を重視した完全なDiT処理を使用します。高速化モードは実験的な機能であり、出力に歪みが生じる場合があります。","param.minimax_h3.return_video.label":"動画のデコード","param.minimax_h3.return_video.info":"メモリ使用量を抑えて音声のみを返すため、デフォルトでは無効になっています。","model.minimax_h3.hint":"MiniMax-H3は音声と動画を統合したDiTを使用します。GGUF Q4は品質を重視します。CUDA専用のGGUF Q4 ConvRotは、VRAM使用量がやや増える代わりに処理が高速になります。デフォルトの完全なDiT処理では音声品質を重視し、動画のデコードを無効にします。","status.modelReady":"{model}の読み込みが完了し、使用可能になりました。","status.runningTask":"{task}を実行中…","status.completeIn":"{seconds}秒で完了しました。","status.packageAvailable":"{model}は{format}を使用します。スタジオで利用できるようになりました。","app.nativeStudio":"ネイティブスタジオ","nav.studio":"スタジオ","nav.arena":"アリーナ","nav.models":"モデル","nav.runtime":"ランタイム","language.label":"表示言語","theme.label":"テーマ","theme.system":"システム設定に従う","theme.dark":"ダーク","theme.light":"ライト","workflow.tts":"音声合成","workflow.asr":"音声認識 / 文字起こし","workflow.music":"音楽・動画生成","workflow.vc":"声質変換","workflow.sep":"音源分離","workflow.analysis":"音声解析","workflow.design":"声のデザイン","studio.eyebrow":"ローカル音声AI","studio.title":"オーディオスタジオ","studio.subtitle.tts":"テキストから自然な音声を生成します。対応モデルでは、プリセット音声や音声クローンを利用できます。","studio.subtitle.asr":"音声をテキストに書き起こします。対応モデルでは、言語やタイムスタンプを設定できます。","studio.subtitle.music":"説明文、歌詞、参照音声から音楽やサウンドを作成します。","studio.subtitle.vc":"話し方や歌い方を保ちながら、録音した音声を別の声に変換します。","studio.subtitle.sep":"録音した音声を、ボーカル、楽器などの対応する音声トラックに分離します。","studio.subtitle.analysis":"音声の発話区間、話者、タイミング、アラインメントを解析します。","studio.subtitle.design":"説明文と対応する参照設定を使って、声を作成・調整します。","studio.model":"モデル","studio.noModel":"モデルが選択されていません","studio.resident":"読み込み済み","studio.notInstalled":"未インストール","studio.available":"利用可能","studio.chooseInstalled":"インストール済みのモデルを選択","studio.notDownloaded":"未ダウンロード","studio.pathFound":"パスが見つかりました","studio.pathMissing":"パスが見つかりません","studio.pathUnknown":"パス未確認","studio.load":"モデルを読み込む","studio.unload":"モデルを解放","studio.working":"処理中…","studio.bundledLoaded":"内蔵 · 読み込み済み","request.label":"リクエスト","request.title":"入力と設定","request.prompt":"プロンプト","request.text":"テキスト","request.splitLongText":"長文を分割して結果を結合","request.charactersPerChunk":"セグメントあたりの文字数","request.language":"言語","request.autoLanguage":"空欄 = 自動","request.seed":"シード値","request.randomSeed":"-1 = ランダム","request.maxTokens":"最大トークン数","request.sourceAudio":"入力音声","request.recordMicrophone":"マイクで録音","voice.quickStart":"すぐに試せるデモ音声","voice.configured":"設定済みの音声","voice.useReference":"以下の参照音声ファイルを使用","voice.reference":"参照音声","voice.required":"必須","voice.optional":"任意","voice.referenceText":"参照テキスト","voice.transcript":"参照音声の文字起こし","voice.saved":"保存済みの音声","voice.browserOnly":"このブラウザー内のみ","voice.chooseSaved":"保存済みの音声を選択…","voice.libraryName":"ライブラリ内の名前","voice.save":"音声を保存","common.delete":"削除","common.cancel":"キャンセル","common.close":"閉じる","common.refresh":"更新","common.browse":"参照","common.apply":"適用","options.modelParameters":"モデルのパラメーター","options.additional":"追加オプション","run.run":"実行","run.cancel":"キャンセル","run.working":"処理中…","result.title":"結果","result.label":"結果","result.saveWav":"WAVを保存","result.empty":"生成された音声と構造化された結果がここに表示されます。","models.eyebrow":"モデルライブラリ","models.title":"ローカルパッケージ","models.subtitle":"この画面からモデルパッケージをダウンロード・管理できます。","models.folder":"モデルフォルダー","models.useDefault":"デフォルトを使用","models.showTypes":"モデルの種類を表示","models.stopDownload":"ダウンロードを停止","models.cleanPartial":"未完了のダウンロードを削除","runtime.title":"セッションログ","runtime.status":"状態","runtime.backend":"バックエンド","runtime.registered":"登録済み","runtime.resident":"読み込み済み","runtime.noEvents":"イベントはありません。","folder.title":"フォルダーを選択","folder.up":"上の階層へ","folder.select":"このフォルダーを選択","common.applying":"適用中…","common.disabled":"無効","common.enabled":"有効","file.choose":"ファイルを選択","file.none":"ファイルが選択されていません","folder.closeLabel":"フォルダー選択を閉じる","folder.empty":"このフォルダーにはサブフォルダーがありません。","folder.eyebrow":"モデルフォルダー","folder.loading":"読み込み中…","folder.loadingFolders":"フォルダーを読み込み中…","footer.embedded":"SvelteKit · audiocpp_serverに組み込み","models.checkingSize":"サイズを確認中…","models.default":"デフォルト","models.downloaded":"ダウンロード済み","models.folderHint":"モデルのダウンロード、ローカルでの検出、読み込みに使用","models.folderPlaceholder":"audiocpp_serverと同じ場所にあるmodelsフォルダー","models.hfAccess":"HFへのアクセスが必要","models.model":"モデル","models.queued":"待機中","models.reinstall":"再インストール","models.selected":"選択済み","models.sharedPackage":"上に表示されている共有パッケージ{name}を使用します。","models.sizeUnavailable":"サイズを取得できません","models.stopping":"停止中","models.update":"更新","models.updateAvailable":"更新があります","models.upToDate":"最新です","models.variants":"バリエーション","models.versionUnknown":"バージョン不明","nav.primary":"メインナビゲーション","nav.workflows":"音声ワークフロー","arena.eyebrow":"アリーナ","arena.title.tts":"音声合成の比較","arena.title.vc":"声質変換の比較","arena.title.asr":"音声認識の比較","arena.subtitle":"インストール済みのモデルと選択したパッケージで、同じ入力を順番に処理します。","arena.subtitle.tts":"選択した音声合成モデルとパッケージで、同じテキストを処理します。","arena.subtitle.vc":"選択した声質変換モデルで、同じ入力音声を処理します。","arena.subtitle.asr":"選択した音声認識モデルで同じ入力音声を処理し、文字起こし結果を比較します。","arena.mode.tts":"音声合成","arena.mode.vc":"声質変換","arena.mode.asr":"音声認識","arena.input.label":"入力","arena.input.title":"共通のリクエスト","arena.input.textPlaceholder":"音声合成モデル間で比較するプロンプトを入力","arena.input.groundTruth":"正解テキスト","arena.input.groundTruthPlaceholder":"単語誤り率(WER)を計算するための正解の文字起こしを貼り付け","arena.shared":"共通","arena.voice.label":"声","arena.voice.modelDefault":"モデルのデフォルト","arena.voice.builtin":"内蔵デモ音声","arena.voice.reference":"参照音声","arena.voice.builtinNote":"内蔵音声は、音声IDとして各モデルに渡されます。この種類の音声には参照テキストは不要です。","arena.voice.targetSpeaker":"変換先の話者の音声","arena.voice.clearTarget":"変換先の音声をクリア","arena.voice.clearReference":"参照音声をクリア","arena.options.shared":"共通オプション","arena.queue.label":"キュー","arena.queue.title":"モデル","arena.queue.add":"追加","arena.queue.remove":"削除","arena.queue.clear":"クリア","arena.queue.empty":"比較するインストール済みモデル、または精度別のパッケージを追加してください。","arena.run":"比較を実行","arena.package.label":"パッケージ","arena.package.configured":"設定済み","arena.results.title":"出力を比較","arena.results.empty":"比較結果はありません。","arena.metric.wall":"経過時間","arena.metric.rtf":"RTF","arena.metric.wer":"WER","arena.itemStatus.queued":"待機中","arena.itemStatus.loading":"読み込み中","arena.itemStatus.running":"実行中","arena.itemStatus.done":"完了","arena.itemStatus.failed":"失敗","arena.itemStatus.skipped":"スキップ","arena.status.duplicate":"{model} {package}はすでにアリーナに追加されています。","arena.status.loadingModel":"モデルを読み込み中","arena.status.runningRequest":"リクエストを実行中","arena.status.addModel":"アリーナにモデルを1つ以上追加してください。","arena.status.running":"アリーナで{mode}を実行中…","arena.status.complete":"アリーナでの実行が完了しました。","arena.note.skippedTargetVoice":"この声質変換モデルには変換先の話者の音声が必要なため、スキップしました。","arena.note.skippedReferenceText":"このモデルでは、選択した音声入力に参照テキストが必要なため、スキップしました。","arena.note.builtinVoice":"内蔵音声を使用しました: {voice}。","arena.note.referenceVoice":"参照音声を使用しました。","arena.note.referenceUnsupported":"参照音声に対応していないため、デフォルトの音声を使用しました。","arena.note.defaultVoice":"デフォルトの音声を使用しました: {voice}。","arena.note.skippedReferenceVoice":"このモデルには参照音声が必要なため、スキップしました。","arena.error.seed":"シード値は-1、または32ビット符号なし整数(0~4294967295)で指定してください。","arena.error.jsonObject":"オブジェクトである必要があります","arena.error.invalidJson":"アリーナのオプションJSONが無効です: {error}","arena.error.unregistered":"設定されたモデルは、このサーバーに登録されていません。","arena.error.notDownloaded":"{package}はダウンロードされていません。","arena.error.loadFailed":"モデルを読み込めませんでした。","arena.error.missingCatalog":"モデルはカタログに存在しなくなりました。","arena.error.enterTtsText":"音声合成の比較に使用するテキストを入力してください。","arena.error.chooseAsrSource":"音声認識の比較に使用する入力音声を選択してください。","arena.error.chooseVcSource":"声質変換の比較に使用する入力音声を選択してください。","arena.error.noAudio":"応答に音声が含まれていません。","request.alignmentText":"アラインメント用テキスト","request.context":"コンテキストプロンプト","request.contextHint":"用語や名前など(任意)","request.duration":"長さ(秒)","request.liveDescription":"モデルのストリーミングモードを使い、4秒ごとのリクエストを連続して処理します。","request.liveTitle":"マイク音声のリアルタイム文字起こし","request.lyrics":"歌詞","request.optional":"任意","request.recordingMicrophone":"マイクで録音中","request.soundPlaceholder":"サウンドや音楽の特徴を入力…","request.startLive":"リアルタイム文字起こしを開始","request.stopLive":"リアルタイム文字起こしを停止","request.stopRecording":"録音を停止","request.textPlaceholder":"テキストを入力…","request.voiceDescription":"声の説明","request.voiceDescriptionPlaceholder":"温かみのある落ち着いた声で、ゆったりとしたテンポ…","result.track":"トラック","result.tracks":"トラック","runtime.eyebrow":"ランタイム","runtime.subtitle":"ブラウザー内のライフサイクルとリクエストに関するイベント。","status.ready":"準備完了","studio.estimatedVram":"推定VRAM使用量: {value} GB","studio.vram":"VRAM —","task.align":"強制アラインメント","task.asr":"文字起こし","task.clon":"音声クローン","task.diar":"話者ダイアライゼーション","task.gen":"音楽生成","task.s2s":"発話の編集","task.sep":"音源分離","task.svc":"歌声変換","task.tts":"音声合成","task.vad":"音声区間検出","task.vc":"声質変換","task.vdes":"声のデザイン","voice.bundledNote":"同梱の参照音声と対応する文字起こしが自動的に入力されます。","voice.namePlaceholder":"自分の参照音声","voice.recommendedClone":"音声クローンに推奨","voice.recording":"参照音声を録音中","voice.requiredClone":"この音声クローンには必須","voice.transcriptPlaceholder":"参照音声で話されている内容を正確に入力するか、対応する.txtファイルを読み込んでください。"}},bq={code:"pl",name:"Polski",translations:JSON.parse('{"request.minimaxFrames":"{frames} wyrównanych klatek wyjściowych","param.minimax_h3.num_inference_steps.label":"Kroki odszumiania","param.minimax_h3.num_inference_steps.info":"Dwanaście kroków odszumiania zapewnia praktyczną równowagę jakości i wydajności.","param.minimax_h3.num_frames.label":"Klatki wyjściowe","param.minimax_h3.num_frames.info":"Obliczane z czasu trwania przy około 24 klatkach na sekundę wyjścia. Zmiana liczby klatek aktualizuje również czas trwania.","param.minimax_h3.guidance_scale.label":"Skala naprowadzania","param.minimax_h3.sampler.label":"Próbnik","param.minimax_h3.dit_acceleration.label":"Przyspieszenie DiT","param.minimax_h3.dit_acceleration.info":"None używa pełnej ścieżki DiT nastawionej na jakość. Tryby przyspieszone są eksperymentalne i mogą zniekształcać niektóre wyniki.","param.minimax_h3.return_video.label":"Dekoduj wideo","param.minimax_h3.return_video.info":"Domyślnie wyłączone, aby zmniejszyć zużycie pamięci i zwracać tylko dźwięk.","model.minimax_h3.hint":"MiniMax-H3 korzysta ze wspólnego DiT audio/wideo. GGUF Q4 stawia na jakość; dostępny tylko dla CUDA GGUF Q4 ConvRot używa nieco więcej VRAM, aby działać szybciej. Domyślna pełna ścieżka DiT nadaje priorytet jakości dźwięku, a dekodowanie wideo jest wyłączone.","status.modelReady":"{model} jest załadowany i gotowy.","status.runningTask":"Uruchamianie: {task}...","status.completeIn":"Ukończono w {seconds} s.","status.packageAvailable":"{model} użyje {format}. Model jest dostępny w Studio.","app.nativeStudio":"Studio natywne","nav.studio":"Studio","nav.arena":"Arena","nav.models":"Modele","nav.runtime":"Środowisko","language.label":"Język interfejsu","theme.label":"Motyw","theme.system":"System","theme.dark":"Ciemny","theme.light":"Jasny","workflow.tts":"Synteza mowy","workflow.asr":"ASR / Transkrypcja","workflow.music":"Generowanie muzyki i wideo","workflow.vc":"Konwersja głosu","workflow.sep":"Separacja źródeł","workflow.analysis":"Analiza dźwięku","workflow.design":"Projektowanie głosu","studio.eyebrow":"LOKALNA INTELIGENCJA AUDIO","studio.title":"Studio audio","studio.subtitle.tts":"Generuj naturalną mowę z tekstu, korzystając z gotowych głosów i klonowania, gdy model je obsługuje.","studio.subtitle.asr":"Transkrybuj mowę z nagrań na tekst, korzystając z ustawień języka i znaczników czasu, gdy są obsługiwane.","studio.subtitle.music":"Twórz muzykę i dźwięki na podstawie opisu, tekstu piosenki lub nagrania referencyjnego.","studio.subtitle.vc":"Przekształcaj nagranie w inny głos, zachowując sposób mówienia lub śpiewania.","studio.subtitle.sep":"Rozdzielaj nagranie na wokal, instrumenty lub inne dostępne ścieżki.","studio.subtitle.analysis":"Analizuj aktywność mowy, mówców, czas i wyrównanie nagrania.","studio.subtitle.design":"Twórz lub dopracowuj głos na podstawie opisu i obsługiwanych ustawień referencyjnych.","studio.model":"Model","studio.noModel":"Nie wybrano modelu","studio.resident":"Załadowany","studio.notInstalled":"Nie zainstalowano","studio.available":"Dostępny","studio.chooseInstalled":"Wybierz zainstalowany model","studio.notDownloaded":"nie pobrano","studio.pathFound":"Ścieżka znaleziona","studio.pathMissing":"Brak ścieżki","studio.pathUnknown":"Ścieżka niesprawdzona","studio.load":"Załaduj model","studio.unload":"Wyładuj model","studio.working":"Przetwarzanie…","studio.bundledLoaded":"Wbudowany · załadowany","request.label":"ŻĄDANIE","request.title":"Dane wejściowe i ustawienia","request.prompt":"Polecenie","request.text":"Tekst","request.splitLongText":"Dziel i łącz długi tekst","request.charactersPerChunk":"Znaki na fragment","request.language":"Język","request.autoLanguage":"puste = automatycznie","request.seed":"Ziarno","request.randomSeed":"-1 = losowe","request.maxTokens":"Maksymalna liczba tokenów","request.sourceAudio":"Dźwięk źródłowy","request.recordMicrophone":"Nagraj mikrofon","voice.quickStart":"Szybkie głosy demonstracyjne","voice.useReference":"Użyj pliku dźwiękowego poniżej","voice.reference":"Głos referencyjny","voice.required":"wymagany","voice.optional":"opcjonalny","voice.referenceText":"Tekst referencyjny","voice.transcript":"Transkrypcja referencyjna","voice.saved":"Zapisane głosy","voice.browserOnly":"tylko w tej przeglądarce","voice.chooseSaved":"Wybierz zapisany głos...","voice.libraryName":"Nazwa w bibliotece","voice.save":"Zapisz głos","common.delete":"Usuń","common.cancel":"Anuluj","common.close":"Zamknij","common.refresh":"Odśwież","common.browse":"Przeglądaj","common.apply":"Zastosuj","options.modelParameters":"Parametry modelu","options.additional":"Dodatkowe opcje","run.run":"Uruchom","run.cancel":"Anuluj","run.working":"Przetwarzanie…","result.title":"Wynik","result.label":"WYNIK","result.saveWav":"Zapisz WAV","result.empty":"W tym miejscu pojawi się wygenerowany dźwięk i wyniki strukturalne.","models.eyebrow":"BIBLIOTEKA MODELI","models.title":"Pakiety lokalne","models.subtitle":"Pobieraj i zarządzaj pakietami modeli bez opuszczania interfejsu.","models.folder":"Folder modeli","models.useDefault":"Użyj domyślnego","models.showTypes":"Pokaż typy modeli","models.stopDownload":"Zatrzymaj pobieranie","models.cleanPartial":"Usuń częściowe pobieranie","runtime.title":"Dziennik sesji","runtime.status":"Stan","runtime.backend":"Backend","runtime.registered":"Zarejestrowane","runtime.resident":"Załadowane","runtime.noEvents":"Brak zdarzeń.","folder.title":"Wybierz folder","folder.up":"Poziom wyżej","folder.select":"Wybierz ten folder","common.applying":"Stosowanie…","common.disabled":"Wyłączone","common.enabled":"Włączone","file.choose":"Wybierz plik","file.none":"Nie wybrano pliku","folder.closeLabel":"Zamknij przeglądarkę folderów","folder.empty":"Ten folder nie zawiera podfolderów.","folder.eyebrow":"FOLDER MODELI","folder.loading":"Ładowanie...","folder.loadingFolders":"Ładowanie folderów...","footer.embedded":"SvelteKit · wbudowany w audiocpp_server","models.checkingSize":"sprawdzanie rozmiaru…","models.default":"Domyślnie","models.downloaded":"Pobrano","models.folderHint":"pobieranie, wykrywanie lokalne i ładowanie modeli","models.folderPlaceholder":"folder models obok audiocpp_server","models.hfAccess":"Wymagany dostęp do HF","models.model":"model","models.queued":"w kolejce","models.reinstall":"Zainstaluj ponownie","models.selected":"Wybrano","models.sharedPackage":"Używa wspólnego pakietu {name} pokazanego powyżej.","models.sizeUnavailable":"rozmiar niedostępny","models.stopping":"zatrzymywanie","models.update":"Aktualizuj","models.updateAvailable":"Dostępna aktualizacja","models.upToDate":"Aktualny","models.variants":"warianty","models.versionUnknown":"Nieznana wersja","nav.primary":"Główna nawigacja","nav.workflows":"Przepływy pracy audio","arena.eyebrow":"ARENA","arena.title.tts":"Porównanie TTS","arena.title.vc":"Porównanie konwersji głosu","arena.title.asr":"Porównanie ASR","arena.subtitle":"Uruchamia ten sam input na wybranych zainstalowanych modelach i wariantach pakietów, jeden po drugim.","arena.subtitle.tts":"Uruchamia ten sam tekst na wybranych modelach TTS i wariantach pakietów.","arena.subtitle.vc":"Uruchamia to samo audio źródłowe na wybranych modelach konwersji głosu.","arena.subtitle.asr":"Uruchamia to samo audio źródłowe na wybranych modelach ASR i porównuje transkrypcje.","arena.mode.tts":"TTS","arena.mode.vc":"Konwersja głosu","arena.mode.asr":"ASR","arena.input.label":"Dane wejściowe","arena.input.title":"Wspólne żądanie","arena.input.textPlaceholder":"Wpisz jeden prompt do porównania modeli TTS","arena.input.groundTruth":"Tekst referencyjny","arena.input.groundTruthPlaceholder":"Wklej oczekiwaną transkrypcję, aby obliczyć WER","arena.shared":"wspólne","arena.voice.label":"Głos","arena.voice.modelDefault":"Domyślny modelu","arena.voice.builtin":"Wbudowany głos demo","arena.voice.reference":"Audio referencyjne","arena.voice.builtinNote":"Wbudowane głosy są przekazywane jako voice ID do każdego modelu. Ten typ głosu nie wymaga tekstu referencyjnego.","arena.voice.targetSpeaker":"Audio głosu docelowego","arena.voice.clearTarget":"Wyczyść cel","arena.voice.clearReference":"Wyczyść referencję","arena.options.shared":"Wspólne opcje","arena.queue.label":"Kolejka","arena.queue.title":"Modele","arena.queue.add":"Dodaj","arena.queue.remove":"Usuń","arena.queue.clear":"Wyczyść","arena.queue.empty":"Dodaj zainstalowane modele lub pakiety precyzji do porównania.","arena.run":"Uruchom arenę","arena.package.label":"Pakiet","arena.package.configured":"Skonfigurowany","arena.results.title":"Porównaj wyniki","arena.results.empty":"Brak wyników areny.","arena.metric.wall":"czas","arena.metric.rtf":"rtf","arena.metric.wer":"wer","arena.itemStatus.queued":"w kolejce","arena.itemStatus.loading":"ładowanie","arena.itemStatus.running":"uruchomione","arena.itemStatus.done":"gotowe","arena.itemStatus.failed":"błąd","arena.itemStatus.skipped":"pominięto","arena.status.duplicate":"{model} {package} jest już w arenie.","arena.status.loadingModel":"Ładowanie modelu","arena.status.runningRequest":"Uruchamianie żądania","arena.status.addModel":"Dodaj co najmniej jeden model do areny.","arena.status.running":"Uruchamianie areny {mode}...","arena.status.complete":"Arena zakończona.","arena.note.skippedTargetVoice":"Pominięto, ponieważ ten model VC wymaga audio głosu docelowego.","arena.note.skippedReferenceText":"Pominięto, ponieważ ten model wymaga tekstu referencyjnego dla wybranego wejścia głosu.","arena.note.builtinVoice":"Użyto wbudowanego głosu: {voice}.","arena.note.referenceVoice":"Użyto głosu referencyjnego.","arena.note.referenceUnsupported":"Użyto domyślnego głosu; głos referencyjny nie jest obsługiwany.","arena.note.defaultVoice":"Użyto domyślnego głosu: {voice}.","arena.note.skippedReferenceVoice":"Pominięto, ponieważ ten model wymaga głosu referencyjnego.","arena.error.seed":"Ziarno musi być -1 albo 32-bitową liczbą unsigned (0-4294967295).","arena.error.jsonObject":"musi być obiektem","arena.error.invalidJson":"Nieprawidłowy JSON opcji areny: {error}","arena.error.unregistered":"Skonfigurowany model nie jest zarejestrowany przez ten serwer.","arena.error.notDownloaded":"{package} nie został pobrany.","arena.error.loadFailed":"Model nie został załadowany.","arena.error.missingCatalog":"Modelu nie ma już w katalogu.","arena.error.enterTtsText":"Wpisz tekst dla areny TTS.","arena.error.chooseAsrSource":"Wybierz audio źródłowe dla areny ASR.","arena.error.chooseVcSource":"Wybierz audio źródłowe dla areny VC.","arena.error.noAudio":"Odpowiedź nie zawiera audio.","request.alignmentText":"Tekst do wyrównania","request.context":"Kontekst","request.contextHint":"opcjonalna terminologia lub nazwy","request.duration":"Czas trwania w sekundach","request.liveDescription":"Przetwarza kolejne czterosekundowe żądania w trybie strumieniowym modelu.","request.liveTitle":"Transkrypcja mikrofonu na żywo","request.lyrics":"Tekst utworu","request.optional":"opcjonalne","request.recordingMicrophone":"Nagrywanie mikrofonu","request.soundPlaceholder":"Opisz dźwięk lub muzykę…","request.startLive":"Uruchom na żywo","request.stopLive":"Zatrzymaj na żywo","request.stopRecording":"Zatrzymaj nagrywanie","request.textPlaceholder":"Wprowadź tekst…","request.voiceDescription":"Opis głosu","request.voiceDescriptionPlaceholder":"Ciepły, spokojny głos o umiarkowanym tempie…","result.track":"ścieżka","result.tracks":"ścieżki","runtime.eyebrow":"ŚRODOWISKO","runtime.subtitle":"Zdarzenia cyklu życia i żądań po stronie przeglądarki.","status.ready":"Gotowe","studio.estimatedVram":"Szacowane VRAM: {value} GB","studio.vram":"VRAM —","task.align":"Wymuszone wyrównanie","task.asr":"Transkrypcja","task.clon":"Klonowanie głosu","task.diar":"Diarizacja mówców","task.gen":"Generowanie muzyki","task.s2s":"Edycja mowy","task.sep":"Separacja źródeł","task.svc":"Konwersja głosu śpiewanego","task.tts":"Synteza mowy","task.vad":"Aktywność głosowa","task.vc":"Konwersja głosu","task.vdes":"Projektowanie głosu","voice.bundledNote":"Dołączone audio referencyjne i jego transkrypcja zostaną użyte automatycznie.","voice.namePlaceholder":"Mój głos referencyjny","voice.recommendedClone":"zalecana do klonowania","voice.recording":"Nagrywanie głosu referencyjnego","voice.requiredClone":"wymagana dla tego klonowania głosu","voice.transcriptPlaceholder":"Wpisz dokładne słowa z audio referencyjnego lub wczytaj pasujący plik .txt powyżej."}')},yq={code:"ru",name:"Русский",translations:JSON.parse('{"request.minimaxFrames":"{frames} выровненных выходных кадров","param.minimax_h3.num_inference_steps.label":"Шаги шумоподавления","param.minimax_h3.num_inference_steps.info":"Двенадцать шагов обеспечивают практичный баланс качества и производительности.","param.minimax_h3.num_frames.label":"Выходные кадры","param.minimax_h3.num_frames.info":"Рассчитываются из длительности примерно по 24 кадра на секунду вывода. Изменение числа кадров также обновляет длительность.","param.minimax_h3.guidance_scale.label":"Масштаб управления","param.minimax_h3.sampler.label":"Сэмплер","param.minimax_h3.dit_acceleration.label":"Ускорение DiT","param.minimax_h3.dit_acceleration.info":"None использует полный DiT с приоритетом качества. Режимы ускорения экспериментальны и могут искажать некоторые результаты.","param.minimax_h3.return_video.label":"Декодировать видео","param.minimax_h3.return_video.info":"По умолчанию выключено для снижения расхода памяти и возврата только аудио.","model.minimax_h3.hint":"MiniMax-H3 использует совместный аудио/видео DiT. GGUF Q4 ориентирован на качество; доступный только в CUDA GGUF Q4 ConvRot использует немного больше VRAM ради скорости. Полный DiT по умолчанию отдаёт приоритет качеству звука, а декодирование видео отключено.","status.modelReady":"{model} загружен и готов.","status.runningTask":"Выполняется: {task}...","status.completeIn":"Завершено за {seconds} с.","status.packageAvailable":"{model} будет использовать {format}. Модель доступна в Studio.","app.nativeStudio":"Нативная студия","nav.studio":"Студия","nav.arena":"Арена","nav.models":"Модели","nav.runtime":"Среда","language.label":"Язык интерфейса","theme.label":"Тема","theme.system":"Системная","theme.dark":"Тёмная","theme.light":"Светлая","workflow.tts":"Синтез речи","workflow.asr":"ASR / Распознавание","workflow.music":"Генерация музыки и видео","workflow.vc":"Преобразование голоса","workflow.sep":"Разделение источников","workflow.analysis":"Анализ аудио","workflow.design":"Дизайн голоса","studio.eyebrow":"ЛОКАЛЬНЫЙ АУДИО ИНТЕЛЛЕКТ","studio.title":"Аудиостудия","studio.subtitle.tts":"Создавайте естественную речь из текста с готовыми голосами и клонированием, если они поддерживаются.","studio.subtitle.asr":"Преобразуйте речь из аудио в текст с настройками языка и временных меток, если они поддерживаются.","studio.subtitle.music":"Создавайте музыку и звуки по описанию, тексту песни или эталонному аудио.","studio.subtitle.vc":"Преобразуйте запись в другой голос, сохраняя манеру речи или пения.","studio.subtitle.sep":"Разделяйте запись на вокал, инструменты и другие доступные аудиодорожки.","studio.subtitle.analysis":"Анализируйте речевую активность, говорящих, время и выравнивание аудио.","studio.subtitle.design":"Создавайте и настраивайте голос по текстовому описанию и поддерживаемым эталонным параметрам.","studio.model":"Модель","studio.noModel":"Модель не выбрана","studio.resident":"Загружена","studio.notInstalled":"Не установлена","studio.available":"Доступна","studio.chooseInstalled":"Выберите установленную модель","studio.notDownloaded":"не скачана","studio.pathFound":"Путь найден","studio.pathMissing":"Путь отсутствует","studio.pathUnknown":"Путь не проверен","studio.load":"Загрузить модель","studio.unload":"Выгрузить модель","studio.working":"Обработка…","studio.bundledLoaded":"Встроена · загружена","request.label":"ЗАПРОС","request.title":"Ввод и управление","request.prompt":"Запрос","request.text":"Текст","request.splitLongText":"Разделять и объединять длинный текст","request.charactersPerChunk":"Символов в части","request.language":"Язык","request.autoLanguage":"пусто = автоматически","request.seed":"Seed","request.randomSeed":"-1 = случайно","request.maxTokens":"Максимум токенов","request.sourceAudio":"Исходное аудио","request.recordMicrophone":"Записать микрофон","voice.quickStart":"Демонстрационные голоса","voice.useReference":"Использовать файл эталонного аудио ниже","voice.reference":"Эталонный голос","voice.required":"обязательно","voice.optional":"необязательно","voice.referenceText":"Эталонный текст","voice.transcript":"Эталонная расшифровка","voice.saved":"Сохранённые голоса","voice.browserOnly":"только в этом браузере","voice.chooseSaved":"Выберите сохранённый голос...","voice.libraryName":"Имя в библиотеке","voice.save":"Сохранить голос","common.delete":"Удалить","common.cancel":"Отмена","common.close":"Закрыть","common.refresh":"Обновить","common.browse":"Обзор","common.apply":"Применить","options.modelParameters":"Параметры модели","options.additional":"Дополнительные параметры","run.run":"Запустить","run.cancel":"Отмена","run.working":"Обработка…","result.title":"Результат","result.label":"РЕЗУЛЬТАТ","result.saveWav":"Сохранить WAV","result.empty":"Здесь появятся созданное аудио и структурированные результаты.","models.eyebrow":"БИБЛИОТЕКА МОДЕЛЕЙ","models.title":"Локальные пакеты","models.subtitle":"Скачивайте пакеты моделей и управляйте ими прямо в интерфейсе.","models.folder":"Папка моделей","models.useDefault":"По умолчанию","models.showTypes":"Типы моделей","models.stopDownload":"Остановить загрузку","models.cleanPartial":"Удалить частичную загрузку","runtime.title":"Журнал сеанса","runtime.status":"Состояние","runtime.backend":"Backend","runtime.registered":"Зарегистрировано","runtime.resident":"Загружено","runtime.noEvents":"Событий пока нет.","folder.title":"Выберите папку","folder.up":"На уровень выше","folder.select":"Выбрать эту папку","common.applying":"Применение…","common.disabled":"Выключено","common.enabled":"Включено","file.choose":"Выбрать файл","file.none":"Файл не выбран","folder.closeLabel":"Закрыть выбор папки","folder.empty":"В этой папке нет вложенных папок.","folder.eyebrow":"ПАПКА МОДЕЛЕЙ","folder.loading":"Загрузка...","folder.loadingFolders":"Загрузка папок...","footer.embedded":"SvelteKit · встроен в audiocpp_server","models.checkingSize":"проверка размера…","models.default":"По умолчанию","models.downloaded":"Скачано","models.folderHint":"загрузка, локальное обнаружение и загрузка моделей","models.folderPlaceholder":"папка models рядом с audiocpp_server","models.hfAccess":"Требуется доступ HF","models.model":"модель","models.queued":"в очереди","models.reinstall":"Переустановить","models.selected":"Выбрано","models.sharedPackage":"Использует общий пакет {name}, показанный выше.","models.sizeUnavailable":"размер недоступен","models.stopping":"остановка","models.update":"Обновить","models.updateAvailable":"Доступно обновление","models.upToDate":"Актуально","models.variants":"варианты","models.versionUnknown":"Версия неизвестна","nav.primary":"Основная навигация","nav.workflows":"Рабочие процессы аудио","arena.eyebrow":"АРЕНА","arena.title.tts":"Сравнение TTS","arena.title.vc":"Сравнение преобразования голоса","arena.title.asr":"Сравнение ASR","arena.subtitle":"Запускает один и тот же ввод через выбранные установленные модели и варианты пакетов по очереди.","arena.subtitle.tts":"Запускает один и тот же текст через выбранные модели TTS и варианты пакетов.","arena.subtitle.vc":"Запускает одно и то же исходное аудио через выбранные модели преобразования голоса.","arena.subtitle.asr":"Запускает одно и то же исходное аудио через выбранные модели ASR и сравнивает расшифровки.","arena.mode.tts":"TTS","arena.mode.vc":"Преобразование голоса","arena.mode.asr":"ASR","arena.input.label":"Ввод","arena.input.title":"Общий запрос","arena.input.textPlaceholder":"Введите один запрос для сравнения моделей TTS","arena.input.groundTruth":"Эталонный текст","arena.input.groundTruthPlaceholder":"Вставьте ожидаемую расшифровку для расчёта WER","arena.shared":"общий","arena.voice.label":"Голос","arena.voice.modelDefault":"По умолчанию модели","arena.voice.builtin":"Встроенный демо-голос","arena.voice.reference":"Эталонное аудио","arena.voice.builtinNote":"Встроенные голоса передаются каждой модели как voice ID. Для этого источника голоса эталонный текст не требуется.","arena.voice.targetSpeaker":"Аудио целевого говорящего","arena.voice.clearTarget":"Очистить цель","arena.voice.clearReference":"Очистить эталон","arena.options.shared":"Общие параметры","arena.queue.label":"Очередь","arena.queue.title":"Модели","arena.queue.add":"Добавить","arena.queue.remove":"Удалить","arena.queue.clear":"Очистить","arena.queue.empty":"Добавьте установленные модели или пакеты точности для сравнения.","arena.run":"Запустить арену","arena.package.label":"Пакет","arena.package.configured":"Настроено","arena.results.title":"Сравнить вывод","arena.results.empty":"Результатов арены пока нет.","arena.metric.wall":"время","arena.metric.rtf":"rtf","arena.metric.wer":"wer","arena.itemStatus.queued":"в очереди","arena.itemStatus.loading":"загрузка","arena.itemStatus.running":"выполняется","arena.itemStatus.done":"готово","arena.itemStatus.failed":"ошибка","arena.itemStatus.skipped":"пропущено","arena.status.duplicate":"{model} {package} уже есть в арене.","arena.status.loadingModel":"Загрузка модели","arena.status.runningRequest":"Выполнение запроса","arena.status.addModel":"Добавьте хотя бы одну модель в арену.","arena.status.running":"Выполняется арена {mode}...","arena.status.complete":"Выполнение арены завершено.","arena.note.skippedTargetVoice":"Пропущено: этой VC-модели нужно аудио целевого говорящего.","arena.note.skippedReferenceText":"Пропущено: этой модели нужен эталонный текст для выбранного голосового ввода.","arena.note.builtinVoice":"Использован встроенный голос: {voice}.","arena.note.referenceVoice":"Использован эталонный голос.","arena.note.referenceUnsupported":"Использован голос по умолчанию; эталонный голос не поддерживается.","arena.note.defaultVoice":"Использован голос по умолчанию: {voice}.","arena.note.skippedReferenceVoice":"Пропущено: этой модели нужен эталонный голос.","arena.error.seed":"Seed должен быть -1 или 32-битным unsigned-целым (0-4294967295).","arena.error.jsonObject":"должен быть объектом","arena.error.invalidJson":"Недопустимый JSON параметров арены: {error}","arena.error.unregistered":"Настроенная модель не зарегистрирована этим сервером.","arena.error.notDownloaded":"{package} не скачан.","arena.error.loadFailed":"Модель не загрузилась.","arena.error.missingCatalog":"Модели больше нет в каталоге.","arena.error.enterTtsText":"Введите текст для арены TTS.","arena.error.chooseAsrSource":"Выберите исходное аудио для арены ASR.","arena.error.chooseVcSource":"Выберите исходное аудио для арены VC.","arena.error.noAudio":"Ответ не содержит аудио.","request.alignmentText":"Текст для выравнивания","request.context":"Контекстный запрос","request.contextHint":"необязательные термины или имена","request.duration":"Длительность в секундах","request.liveDescription":"Обрабатывает последовательные четырёхсекундные запросы в потоковом режиме модели.","request.liveTitle":"Распознавание с микрофона в реальном времени","request.lyrics":"Текст песни","request.optional":"необязательно","request.recordingMicrophone":"Запись микрофона","request.soundPlaceholder":"Опишите звук или музыку…","request.startLive":"Запустить","request.stopLive":"Остановить","request.stopRecording":"Остановить запись","request.textPlaceholder":"Введите текст…","request.voiceDescription":"Описание голоса","request.voiceDescriptionPlaceholder":"Тёплый спокойный голос с размеренным темпом…","result.track":"дорожка","result.tracks":"дорожки","runtime.eyebrow":"СРЕДА","runtime.subtitle":"События жизненного цикла и запросов в браузере.","status.ready":"Готово","studio.estimatedVram":"Оценка VRAM: {value} ГБ","studio.vram":"VRAM —","task.align":"Принудительное выравнивание","task.asr":"Распознавание речи","task.clon":"Клонирование голоса","task.diar":"Диаризация говорящих","task.gen":"Генерация музыки","task.s2s":"Редактирование речи","task.sep":"Разделение источников","task.svc":"Преобразование вокала","task.tts":"Синтез речи","task.vad":"Голосовая активность","task.vc":"Преобразование голоса","task.vdes":"Дизайн голоса","voice.bundledNote":"Встроенное эталонное аудио и соответствующая расшифровка подставляются автоматически.","voice.namePlaceholder":"Мой эталонный голос","voice.recommendedClone":"рекомендуется для клонирования","voice.recording":"Запись эталонного голоса","voice.requiredClone":"требуется для этого клонирования","voice.transcriptPlaceholder":"Введите точные слова из эталонного аудио или загрузите соответствующий файл .txt выше."}')},wq={code:"vi",name:"Tiếng Việt",translations:JSON.parse('{"app.nativeStudio":"Phòng thu trên máy","nav.studio":"Phòng thu","nav.arena":"So sánh","nav.models":"Model","nav.runtime":"Trạng thái","nav.configuration":"Cấu hình","nav.primary":"Điều hướng chính","nav.workflows":"Các tác vụ âm thanh","language.label":"Ngôn ngữ giao diện","theme.label":"Giao diện","theme.system":"Theo hệ thống","theme.dark":"Tối","theme.mocha":"Catppuccin Mocha","theme.light":"Sáng","arena.eyebrow":"SO SÁNH","arena.title.tts":"So sánh giọng đọc","arena.title.vc":"So sánh chuyển đổi giọng","arena.title.asr":"So sánh nhận dạng giọng nói","arena.subtitle":"Chạy lần lượt cùng một đầu vào với các model và biến thể đã cài được chọn.","arena.subtitle.tts":"Đọc cùng một văn bản bằng các model giọng đọc và biến thể được chọn.","arena.subtitle.vc":"Chuyển đổi cùng một âm thanh nguồn bằng các model được chọn.","arena.subtitle.asr":"Nhận dạng cùng một âm thanh nguồn bằng các model được chọn và so sánh bản chép lời.","arena.mode.tts":"Đọc văn bản","arena.mode.vc":"Chuyển đổi giọng","arena.mode.asr":"Nhận dạng giọng nói","arena.input.label":"Đầu vào","arena.input.title":"Yêu cầu dùng chung","arena.input.textPlaceholder":"Nhập văn bản để so sánh các model giọng đọc","arena.input.groundTruth":"Bản chép lời chuẩn","arena.input.groundTruthPlaceholder":"Dán bản chép lời chuẩn để tính tỷ lệ lỗi từ (WER)","arena.shared":"dùng chung","arena.voice.label":"Giọng","arena.voice.modelDefault":"Mặc định của model","arena.voice.builtin":"Giọng mẫu có sẵn","arena.voice.reference":"Âm thanh tham chiếu","arena.voice.builtinNote":"Giọng có sẵn được gửi dưới dạng mã giọng cho từng model. Không cần bản chép lời với nguồn giọng này.","arena.voice.targetSpeaker":"Âm thanh giọng đích","arena.voice.clearTarget":"Bỏ giọng đích","arena.voice.clearReference":"Bỏ tham chiếu","arena.options.shared":"Tùy chọn dùng chung","arena.queue.label":"Hàng đợi","arena.queue.title":"Model","arena.queue.add":"Thêm","arena.queue.remove":"Bỏ","arena.queue.clear":"Xóa hàng đợi","arena.queue.empty":"Thêm model hoặc biến thể kiểu dữ liệu đã cài để so sánh.","arena.run":"Chạy so sánh","arena.package.label":"Gói","arena.package.configured":"Đã cấu hình","arena.results.title":"So sánh kết quả","arena.results.empty":"Chưa có kết quả so sánh.","arena.metric.wall":"thời gian","arena.metric.rtf":"RTF","arena.metric.wer":"WER","arena.itemStatus.queued":"đang chờ","arena.itemStatus.loading":"đang nạp","arena.itemStatus.running":"đang chạy","arena.itemStatus.done":"hoàn tất","arena.itemStatus.failed":"thất bại","arena.itemStatus.skipped":"đã bỏ qua","arena.status.duplicate":"{model} {package} đã có trong danh sách so sánh.","arena.status.loadingModel":"Đang nạp model","arena.status.runningRequest":"Đang chạy yêu cầu","arena.status.addModel":"Thêm ít nhất một model để so sánh.","arena.status.running":"Đang chạy so sánh {mode}...","arena.status.complete":"Đã hoàn tất so sánh.","arena.note.skippedTargetVoice":"Đã bỏ qua vì model chuyển đổi giọng này cần âm thanh giọng đích.","arena.note.skippedReferenceText":"Đã bỏ qua vì model này cần bản chép lời cho giọng tham chiếu đã chọn.","arena.note.builtinVoice":"Đã dùng giọng có sẵn: {voice}.","arena.note.referenceVoice":"Đã dùng giọng tham chiếu.","arena.note.referenceUnsupported":"Đã dùng giọng mặc định; model không hỗ trợ giọng tham chiếu.","arena.note.defaultVoice":"Đã dùng giọng mặc định: {voice}.","arena.note.skippedReferenceVoice":"Đã bỏ qua vì model này cần giọng tham chiếu.","arena.error.seed":"Seed phải là -1 hoặc số nguyên không dấu 32 bit (từ 0 đến 4294967295).","arena.error.jsonObject":"phải là một đối tượng JSON","arena.error.invalidJson":"JSON tùy chọn so sánh không hợp lệ: {error}","arena.error.unregistered":"Model đã cấu hình chưa được đăng ký trên máy chủ này.","arena.error.notDownloaded":"Chưa tải {package}.","arena.error.loadFailed":"Không nạp được model.","arena.error.missingCatalog":"Model không còn trong danh mục.","arena.error.enterTtsText":"Nhập văn bản để so sánh giọng đọc.","arena.error.chooseAsrSource":"Chọn âm thanh nguồn để so sánh nhận dạng giọng nói.","arena.error.chooseVcSource":"Chọn âm thanh nguồn để so sánh chuyển đổi giọng.","arena.error.noAudio":"Phản hồi không có âm thanh.","workflow.tts":"Đọc văn bản","workflow.asr":"Nhận dạng / Chép lời","workflow.music":"Tạo nhạc / video","workflow.vc":"Chuyển đổi giọng / S2S","workflow.enhancement":"Cải thiện / Khử nhiễu","models.tools":"công cụ","workflow.sep":"Tách nguồn âm thanh","workflow.analysis":"Phân tích âm thanh","workflow.design":"Thiết kế giọng","task.tts":"Đọc văn bản","task.clon":"Sao chép giọng","task.asr":"Chép lời","task.gen":"Tạo nhạc","task.midi":"Âm thanh sang MIDI","task.vc":"Chuyển đổi giọng","task.svc":"Chuyển đổi giọng hát","task.s2s":"Chỉnh sửa lời nói","task.sep":"Tách nguồn âm thanh","task.vad":"Phát hiện giọng nói","task.diar":"Phân tách người nói","task.align":"Căn chỉnh lời và âm thanh","task.vdes":"Thiết kế giọng","studio.eyebrow":"XỬ LÝ ÂM THANH TẠI MÁY","studio.title":"Phòng thu âm thanh","studio.subtitle.tts":"Tạo giọng đọc tự nhiên từ văn bản, với giọng có sẵn và sao chép giọng khi model hỗ trợ.","studio.subtitle.asr":"Chuyển lời nói thành văn bản, với tùy chọn ngôn ngữ và mốc thời gian khi model hỗ trợ.","studio.subtitle.music":"Tạo nhạc và âm thanh từ mô tả, lời bài hát hoặc âm thanh tham chiếu khi model hỗ trợ.","studio.subtitle.vc":"Chuyển đổi giọng nói, giọng hát hoặc nhận câu trả lời bằng giọng nói từ âm thanh đầu vào.","studio.subtitle.sep":"Tách bản ghi thành giọng hát, nhạc cụ hoặc các nguồn âm thanh mà model hỗ trợ.","studio.subtitle.analysis":"Phân tích giọng nói, người nói, mốc thời gian và căn chỉnh lời với âm thanh.","studio.subtitle.enhancement":"Cải thiện âm thanh, loại bỏ tiếng ồn nền hoặc khôi phục dải tần.","studio.subtitle.design":"Tạo hoặc tinh chỉnh giọng từ mô tả bằng văn bản và các tùy chọn tham chiếu được hỗ trợ.","studio.model":"Model","studio.noModel":"Chưa chọn model","studio.resident":"Đã nạp","studio.notInstalled":"Chưa cài","studio.available":"Có sẵn","studio.chooseInstalled":"Chọn một model đã cài","studio.notDownloaded":"chưa tải","studio.pathFound":"Đã tìm thấy đường dẫn","studio.pathMissing":"Không tìm thấy đường dẫn","studio.pathUnknown":"Chưa kiểm tra đường dẫn","studio.estimatedVram":"VRAM ước tính: {value} GB","studio.vram":"VRAM —","studio.load":"Nạp model","studio.unload":"Giải phóng model","studio.working":"Đang xử lý…","studio.bundledLoaded":"Có sẵn · đã nạp","request.label":"YÊU CẦU","request.title":"Đầu vào và tùy chọn","request.prompt":"Mô tả","request.alignmentText":"Văn bản cần căn chỉnh","request.text":"Văn bản","request.soundPlaceholder":"Mô tả âm thanh hoặc bản nhạc…","request.textPlaceholder":"Nhập văn bản…","request.splitLongText":"Chia và ghép văn bản dài","request.charactersPerChunk":"Số ký tự mỗi đoạn","request.lyrics":"Lời bài hát","request.optional":"không bắt buộc","request.context":"Ngữ cảnh","request.contextHint":"thuật ngữ hoặc tên riêng, không bắt buộc","request.voiceDescription":"Mô tả giọng","request.voiceDescriptionPlaceholder":"Giọng ấm áp, điềm tĩnh, nhịp đọc vừa phải…","request.language":"Ngôn ngữ","request.autoLanguage":"để trống = tự nhận dạng","request.seed":"Seed","request.randomSeed":"-1 = ngẫu nhiên","request.maxTokens":"Số token tối đa","request.duration":"Thời lượng (giây)","request.autoDuration":"-1 = tự động","request.rewriteCaption":"Viết lại mô tả","request.rewritingCaption":"Đang viết lại mô tả...","request.minimaxFrames":"{frames} khung hình đầu ra đã căn chỉnh","request.sourceAudio":"Âm thanh nguồn","request.stopRecording":"Dừng ghi âm","request.recordingMicrophone":"Đang ghi âm từ micro","request.recordMicrophone":"Ghi âm từ micro","request.liveTitle":"Chép lời trực tiếp từ micro","request.liveDescription":"Xử lý liên tiếp các đoạn âm thanh dài bốn giây bằng chế độ phát trực tiếp của model.","request.stopLive":"Dừng chép lời trực tiếp","request.startLive":"Bắt đầu chép lời trực tiếp","voice.quickStart":"Giọng có sẵn để thử nhanh","voice.configured":"Giọng đã cấu hình","voice.useReference":"Dùng tệp âm thanh tham chiếu bên dưới","voice.bundledNote":"Âm thanh tham chiếu có sẵn và bản chép lời tương ứng được cung cấp tự động.","voice.reference":"Giọng tham chiếu","voice.required":"bắt buộc","voice.optional":"không bắt buộc","voice.referenceText":"Văn bản tham chiếu","voice.recording":"Đang ghi âm giọng tham chiếu","voice.transcript":"Bản chép lời mẫu","voice.requiredClone":"bắt buộc để sao chép giọng này","voice.recommendedClone":"nên có để sao chép giọng","voice.transcriptPlaceholder":"Nhập đúng lời nói trong âm thanh mẫu, hoặc tải tệp .txt tương ứng ở trên.","voice.saved":"Giọng đã lưu","voice.browserOnly":"chỉ lưu trong trình duyệt này","voice.chooseSaved":"Chọn giọng đã lưu...","voice.libraryName":"Tên giọng trong thư viện","voice.namePlaceholder":"Giọng tham chiếu của tôi","voice.save":"Lưu giọng","voice.clearReference":"Bỏ giọng tham chiếu","voice.preset":"Giọng có sẵn","voice.speakerReferences":"Giọng tham chiếu của người nói","voice.upToFour":"không bắt buộc, tối đa 4","voice.speaker":"Người nói {number}","voice.dialoguePlaceholder":"[S1] Lời trong giọng tham chiếu của người nói 1. [S2] Lời trong giọng tham chiếu của người nói 2.","settings.load":"Nạp thiết lập JSON","settings.save":"Lưu thiết lập JSON","history.title":"Lịch sử chạy (Thử nghiệm)","history.clear":"Xóa lịch sử","history.deleteRun":"Xóa lần chạy {id}","history.wrongModel":"Không thể mở lịch sử của {label}: model hiện tại là {model}.","history.wait":"Chờ yêu cầu hiện tại hoặc việc khôi phục thiết lập hoàn tất.","configuration.history":"Lịch sử chạy","configuration.historyLimit":"Số lần chạy tối đa được lưu","configuration.save":"Lưu cấu hình","configuration.saved":"Đã lưu cấu hình.","studio.weightsPath":"Đường dẫn trọng số trên máy chủ","studio.downloadWeights":"Tải trọng số SafeTensors","studio.format":"Định dạng model","studio.configured":"Đã cấu hình","studio.serverConfigured":"Được thiết lập trong cấu hình máy chủ","studio.loadPackage":"Nạp {package}","studio.unloadPackage":"Giải phóng {package}","studio.packageNotDownloaded":"Chưa tải {package}","run.chooseModel":"Chọn một model đã cài trước","run.installModel":"Cài model này trong mục Model trước","run.elapsed":"Thời gian xử lý đã trôi qua","result.saveArtifact":"Lưu {format}","result.videoPreview":"Xem trước video","param.omnivoice.num_inference_steps.label":"Số bước tạo giọng","param.omnivoice.guidance_scale.label":"Mức bám sát tham chiếu","param.omnivoice.speed.label":"Tốc độ đọc","param.omnivoice.instruct.label":"Chỉ dẫn phong cách / chất giọng","param.omnivoice.instruct.placeholder":"Ví dụ: Đọc với giọng nhẹ nhàng, chậm rãi","common.delete":"Xóa","common.enabled":"Đã bật","common.disabled":"Đã tắt","common.cancel":"Hủy","common.close":"Đóng","common.refresh":"Làm mới","common.browse":"Duyệt thư mục","common.apply":"Áp dụng","common.applying":"Đang áp dụng…","file.choose":"Chọn tệp","file.none":"Chưa chọn tệp","file.preview":"Nghe / xem trước","file.clear":"Bỏ tệp","options.modelParameters":"Tham số model","options.additional":"Tùy chọn bổ sung","param.minimax_h3.num_inference_steps.label":"Số bước khử nhiễu","param.minimax_h3.num_inference_steps.info":"Mười hai bước khử nhiễu giúp cân bằng chất lượng và tốc độ.","param.minimax_h3.num_frames.label":"Số khung hình đầu ra","param.minimax_h3.num_frames.info":"Được tính từ thời lượng với khoảng 24 khung hình mỗi giây đầu ra. Đổi số khung hình cũng cập nhật thời lượng.","param.minimax_h3.guidance_scale.label":"Mức bám sát mô tả","param.minimax_h3.sampler.label":"Bộ lấy mẫu","param.minimax_h3.dit_acceleration.label":"Tăng tốc DiT","param.minimax_h3.dit_acceleration.info":"None dùng toàn bộ DiT để ưu tiên chất lượng. Các chế độ tăng tốc đang thử nghiệm và có thể làm méo một số kết quả.","param.minimax_h3.return_video.label":"Giải mã video","param.minimax_h3.return_video.info":"Mặc định tắt để giảm bộ nhớ sử dụng và chỉ trả về âm thanh.","model.minimax_h3.hint":"MiniMax-H3 dùng DiT kết hợp âm thanh và video. GGUF Q4 ưu tiên chất lượng; GGUF Q4 ConvRot chỉ chạy trên CUDA, dùng thêm một ít VRAM để tăng tốc. Chế độ DiT đầy đủ mặc định ưu tiên chất lượng âm thanh và tắt giải mã video.","run.run":"Chạy","run.cancel":"Hủy","run.working":"Đang xử lý…","result.label":"KẾT QUẢ","result.title":"Đầu ra","result.track":"bản âm thanh","result.tracks":"bản âm thanh","result.saveWav":"Lưu WAV","result.empty":"Âm thanh và kết quả xử lý sẽ xuất hiện ở đây.","models.eyebrow":"THƯ VIỆN MODEL","models.title":"Các gói trên máy","models.subtitle":"Tải và quản lý các gói model ngay trong giao diện này.","models.folder":"Thư mục model","models.folderHint":"nơi tải, tìm và nạp model","models.folderPlaceholder":"thư mục models bên cạnh audiocpp_server","models.default":"Mặc định","models.useDefault":"Dùng mặc định","models.showTypes":"Hiện các loại model","models.model":"model","models.variants":"biến thể","models.update":"Cập nhật","models.reinstall":"Cài lại","models.upToDate":"Đã cập nhật","models.updateAvailable":"Có bản cập nhật","models.versionUnknown":"Chưa rõ phiên bản","models.selected":"Đã chọn","models.downloaded":"Đã tải","models.queued":"đang chờ","models.stopping":"đang dừng","models.checkingSize":"đang kiểm tra dung lượng…","models.hfAccess":"Cần quyền truy cập Hugging Face","models.sizeUnavailable":"chưa rõ dung lượng","models.stopDownload":"Dừng tải","models.cleanPartial":"Xóa phần tải dở","models.sharedPackage":"Dùng chung gói {name} ở trên.","runtime.eyebrow":"TRẠNG THÁI","runtime.title":"Nhật ký phiên","runtime.subtitle":"Các sự kiện hoạt động và yêu cầu từ trình duyệt.","runtime.status":"Trạng thái","runtime.backend":"Bộ xử lý","runtime.registered":"Đã đăng ký","runtime.resident":"Đã nạp","runtime.noEvents":"Chưa có sự kiện.","status.ready":"Sẵn sàng","status.modelReady":"{model} đã nạp và sẵn sàng.","status.runningTask":"Đang chạy {task}...","status.completeIn":"Hoàn tất sau {seconds} giây.","status.packageAvailable":"{model} sẽ dùng {format}. Đã có thể dùng trong Phòng thu.","folder.eyebrow":"THƯ MỤC MODEL","folder.title":"Chọn thư mục","folder.closeLabel":"Đóng trình duyệt thư mục","folder.loading":"Đang tải...","folder.up":"Lên một cấp","folder.loadingFolders":"Đang tải danh sách thư mục...","folder.empty":"Thư mục này không có thư mục con.","folder.select":"Chọn thư mục này","footer.embedded":"SvelteKit · tích hợp trong audiocpp_server"}')},kq={code:"zh",name:"中文",translations:{"request.minimaxFrames":"{frames} 个对齐输出帧","param.minimax_h3.num_inference_steps.label":"去噪步数","param.minimax_h3.num_inference_steps.info":"十二个去噪步骤可在质量和性能之间取得实用的平衡。","param.minimax_h3.num_frames.label":"输出帧数","param.minimax_h3.num_frames.info":"根据时长自动计算,每秒输出约 24 帧。编辑帧数也会更新时长。","param.minimax_h3.guidance_scale.label":"引导强度","param.minimax_h3.sampler.label":"采样器","param.minimax_h3.dit_acceleration.label":"DiT 加速","param.minimax_h3.dit_acceleration.info":"“none”使用质量优先的完整 DiT 路径。加速模式为实验性功能,可能使某些输出失真。","param.minimax_h3.return_video.label":"解码视频","param.minimax_h3.return_video.info":"默认禁用以减少内存占用,并仅返回音频。","model.minimax_h3.hint":"MiniMax-H3 使用联合音频/视频 DiT。GGUF Q4 是质量优先版本;仅支持 CUDA 的 GGUF Q4 ConvRot 使用稍多显存以提高速度。默认完整 DiT 路径优先保证音频质量,并禁用视频解码。","status.modelReady":"{model} 已加载并准备就绪。","status.runningTask":"正在运行{task}...","status.completeIn":"已在 {seconds} 秒内完成。","status.packageAvailable":"{model} 将使用 {format},现可在工作室中使用。","app.nativeStudio":"原生工作室","nav.studio":"工作室","nav.arena":"对比场","nav.models":"模型","nav.runtime":"运行环境","language.label":"界面语言","theme.label":"主题","theme.system":"跟随系统","theme.dark":"深色","theme.light":"浅色","workflow.tts":"文本转语音","workflow.asr":"ASR / 转录","workflow.music":"音乐 / 视频生成","workflow.vc":"语音转换","workflow.sep":"音源分离","workflow.analysis":"音频分析","workflow.design":"音色设计","studio.eyebrow":"本地音频智能","studio.title":"音频工作室","studio.subtitle.tts":"从文本生成自然语音,并在模型支持时使用预设音色或声音克隆。","studio.subtitle.asr":"将语音音频转为文本,并在模型支持时设置语言和时间戳。","studio.subtitle.music":"根据描述、歌词或参考音频创作音乐和声音。","studio.subtitle.vc":"将录音转换为另一种声音,同时保留原有的说话或演唱表现。","studio.subtitle.sep":"将录音分离为人声、乐器或其他可用音轨。","studio.subtitle.analysis":"分析语音活动、说话人、时间信息和音频对齐。","studio.subtitle.design":"根据文字描述和支持的参考控制创建或调整声音。","studio.model":"模型","studio.noModel":"未选择模型","studio.resident":"已加载","studio.notInstalled":"未安装","studio.available":"可用","studio.chooseInstalled":"选择已安装的模型","studio.notDownloaded":"未下载","studio.pathFound":"已找到路径","studio.pathMissing":"路径不存在","studio.pathUnknown":"尚未检查路径","studio.load":"加载模型","studio.unload":"卸载模型","studio.working":"处理中…","studio.bundledLoaded":"内置 · 已加载","request.label":"请求","request.title":"输入与控制","request.prompt":"提示词","request.text":"文本","request.splitLongText":"拆分并合并长文本","request.charactersPerChunk":"每段字符数","request.language":"语言","request.autoLanguage":"留空 = 自动","request.seed":"随机种子","request.randomSeed":"-1 = 随机","request.maxTokens":"最大令牌数","request.sourceAudio":"源音频","request.recordMicrophone":"录制麦克风","voice.quickStart":"快速开始演示音色","voice.useReference":"使用下方参考音频文件","voice.reference":"参考音色","voice.required":"必需","voice.optional":"可选","voice.referenceText":"参考文本","voice.transcript":"参考转录","voice.saved":"已保存音色","voice.browserOnly":"仅存储在此浏览器中","voice.chooseSaved":"选择已保存音色...","voice.libraryName":"库名称","voice.save":"保存音色","common.delete":"删除","common.cancel":"取消","common.close":"关闭","common.refresh":"刷新","common.browse":"浏览","common.apply":"应用","options.modelParameters":"模型参数","options.additional":"其他选项","run.run":"运行","run.cancel":"取消","run.working":"处理中…","result.title":"输出","result.label":"结果","result.saveWav":"保存 WAV","result.empty":"生成的音频和结构化结果将显示在这里。","models.eyebrow":"模型库","models.title":"本地软件包","models.subtitle":"无需离开原生界面即可下载和管理模型包。","models.folder":"模型文件夹","models.useDefault":"使用默认值","models.showTypes":"显示模型类型","models.stopDownload":"停止下载","models.cleanPartial":"清理部分下载","runtime.title":"会话日志","runtime.status":"状态","runtime.backend":"后端","runtime.registered":"已注册","runtime.resident":"已加载","runtime.noEvents":"暂无事件。","folder.title":"选择文件夹","folder.up":"上一级","folder.select":"选择此文件夹","common.applying":"正在应用…","common.disabled":"已禁用","common.enabled":"已启用","file.choose":"选择文件","file.none":"未选择文件","folder.closeLabel":"关闭文件夹浏览器","folder.empty":"此文件夹没有子文件夹。","folder.eyebrow":"模型文件夹","folder.loading":"正在加载...","folder.loadingFolders":"正在加载文件夹...","footer.embedded":"SvelteKit · 内置于 audiocpp_server","models.checkingSize":"正在检查大小…","models.default":"默认","models.downloaded":"已下载","models.folderHint":"用于下载、本地检测和模型加载","models.folderPlaceholder":"audiocpp_server 旁的 models 文件夹","models.hfAccess":"需要 HF 访问权限","models.model":"模型","models.queued":"排队中","models.reinstall":"重新安装","models.selected":"已选择","models.sharedPackage":"使用上方显示的共享 {name} 软件包。","models.sizeUnavailable":"大小不可用","models.stopping":"正在停止","models.update":"更新","models.updateAvailable":"有可用更新","models.upToDate":"已是最新","models.variants":"变体","models.versionUnknown":"版本未知","nav.primary":"主导航","nav.workflows":"音频工作流程","arena.eyebrow":"对比场","arena.title.tts":"TTS 对比","arena.title.vc":"语音转换对比","arena.title.asr":"ASR 对比","arena.subtitle":"用同一输入依次运行已选择的已安装模型和精度包,方便比较输出。","arena.subtitle.tts":"用同一文本依次运行已选择的 TTS 模型和精度包。","arena.subtitle.vc":"用同一源音频依次运行已选择的语音转换模型。","arena.subtitle.asr":"用同一源音频依次运行已选择的 ASR 模型并比较转录结果。","arena.mode.tts":"TTS","arena.mode.vc":"语音转换","arena.mode.asr":"ASR","arena.input.label":"输入","arena.input.title":"共享请求","arena.input.textPlaceholder":"输入一段文本,用于对比多个 TTS 模型","arena.input.groundTruth":"真实文本","arena.input.groundTruthPlaceholder":"粘贴期望转录文本以计算 WER","arena.shared":"共享","arena.voice.label":"声音","arena.voice.modelDefault":"模型默认","arena.voice.builtin":"内置演示声音","arena.voice.reference":"参考音频","arena.voice.builtinNote":"内置声音会作为 voice ID 传给每个模型。此声音来源不需要参考文本。","arena.voice.targetSpeaker":"目标说话人音频","arena.voice.clearTarget":"清除目标","arena.voice.clearReference":"清除参考","arena.options.shared":"共享选项","arena.queue.label":"队列","arena.queue.title":"模型","arena.queue.add":"添加","arena.queue.remove":"移除","arena.queue.clear":"清空","arena.queue.empty":"添加已安装模型或精度包进行对比。","arena.run":"运行对比","arena.package.label":"软件包","arena.package.configured":"已配置","arena.results.title":"比较输出","arena.results.empty":"暂无对比结果。","arena.metric.wall":"耗时","arena.metric.rtf":"RTF","arena.metric.wer":"WER","arena.itemStatus.queued":"排队中","arena.itemStatus.loading":"加载中","arena.itemStatus.running":"运行中","arena.itemStatus.done":"完成","arena.itemStatus.failed":"失败","arena.itemStatus.skipped":"跳过","arena.status.duplicate":"{model} {package} 已在对比队列中。","arena.status.loadingModel":"正在加载模型","arena.status.runningRequest":"正在运行请求","arena.status.addModel":"请至少添加一个模型到对比场。","arena.status.running":"正在运行 {mode} 对比...","arena.status.complete":"对比运行完成。","arena.note.skippedTargetVoice":"已跳过:此语音转换模型需要目标说话人音频。","arena.note.skippedReferenceText":"已跳过:此模型对所选声音输入需要参考文本。","arena.note.builtinVoice":"使用内置声音:{voice}。","arena.note.referenceVoice":"使用参考声音。","arena.note.referenceUnsupported":"使用模型默认声音;此模型不支持参考声音。","arena.note.defaultVoice":"使用默认声音:{voice}。","arena.note.skippedReferenceVoice":"已跳过:此模型需要参考声音。","arena.error.seed":"Seed 必须为 -1 或 0 到 4294967295 的无符号 32 位整数。","arena.error.jsonObject":"必须是对象","arena.error.invalidJson":"对比场选项 JSON 无效:{error}","arena.error.unregistered":"此服务器未注册已配置模型。","arena.error.notDownloaded":"{package} 未下载。","arena.error.loadFailed":"模型未加载。","arena.error.missingCatalog":"模型已不在目录中。","arena.error.enterTtsText":"请输入 TTS 对比文本。","arena.error.chooseAsrSource":"请选择 ASR 对比的源音频。","arena.error.chooseVcSource":"请选择语音转换对比的源音频。","arena.error.noAudio":"响应中没有音频。","request.alignmentText":"对齐文本","request.context":"上下文提示","request.contextHint":"可选术语或名称","request.duration":"持续时间(秒)","request.liveDescription":"使用模型的流式模式连续处理四秒请求。","request.liveTitle":"实时麦克风转录","request.lyrics":"歌词","request.optional":"可选","request.recordingMicrophone":"正在录制麦克风","request.soundPlaceholder":"描述声音或音乐…","request.startLive":"开始实时处理","request.stopLive":"停止实时处理","request.stopRecording":"停止录制","request.textPlaceholder":"输入文本…","request.voiceDescription":"音色描述","request.voiceDescriptionPlaceholder":"温暖、平静且语速适中的声音…","result.track":"音轨","result.tracks":"音轨","runtime.eyebrow":"运行环境","runtime.subtitle":"浏览器端生命周期和请求事件。","status.ready":"就绪","studio.estimatedVram":"预计 VRAM:{value} GB","studio.vram":"VRAM —","task.align":"强制对齐","task.asr":"语音转录","task.clon":"声音克隆","task.diar":"说话人分离","task.gen":"音乐生成","task.s2s":"语音编辑","task.sep":"音源分离","task.svc":"歌声音色转换","task.tts":"文本转语音","task.vad":"语音活动检测","task.vc":"语音转换","task.vdes":"音色设计","voice.bundledNote":"内置参考音频及其匹配转录将自动提供。","voice.namePlaceholder":"我的参考音色","voice.recommendedClone":"建议用于克隆","voice.recording":"正在录制参考音色","voice.requiredClone":"此声音克隆必需","voice.transcriptPlaceholder":"输入参考音频中的准确文字,或加载上方匹配的 .txt 文件。"}},Mm={"app.nativeStudio":"Native Studio","nav.apps":"Apps","nav.studio":"Studio","nav.arena":"Arena","nav.library":"Lib","nav.models":"Models","nav.runtime":"Runtime","nav.configuration":"Configuration","nav.primary":"Primary navigation","nav.workflows":"Audio workflows","language.label":"Interface language","theme.label":"Theme","theme.system":"System","theme.dark":"Dark","theme.mocha":"Catppuccin Mocha","theme.light":"Light","theme.paper":"Paper","arena.eyebrow":"ARENA","arena.title.tts":"TTS comparison","arena.title.vc":"Voice conversion comparison","arena.title.asr":"ASR comparison","arena.subtitle":"Run the same input through selected installed models and package variants, one after another.","arena.subtitle.tts":"Run the same text through selected TTS models and package variants.","arena.subtitle.vc":"Run the same source audio through selected voice conversion models.","arena.subtitle.asr":"Run the same source audio through selected ASR models and compare transcripts.","arena.mode.tts":"TTS","arena.mode.vc":"Voice conversion","arena.mode.asr":"ASR","arena.input.label":"Input","arena.input.title":"Shared request","arena.input.textPlaceholder":"Enter one prompt to compare across TTS models","arena.input.groundTruth":"Ground truth text","arena.input.groundTruthPlaceholder":"Paste the expected transcript to calculate WER","arena.shared":"shared","arena.voice.label":"Voice","arena.voice.modelDefault":"Model default","arena.voice.builtin":"Built-in demo voice","arena.voice.reference":"Reference audio","arena.voice.builtinNote":"Built-in voices are passed as voice IDs for each model. Reference text is not required for this voice source.","arena.voice.targetSpeaker":"Target speaker audio","arena.voice.clearTarget":"Clear target","arena.voice.clearReference":"Clear reference","arena.options.shared":"Shared options","arena.queue.label":"Queue","arena.queue.title":"Models","arena.queue.add":"Add","arena.queue.remove":"Remove","arena.queue.clear":"Clear","arena.queue.empty":"Add installed models or dtype packages to compare.","arena.run":"Run arena","arena.package.label":"Package","arena.package.configured":"Configured","arena.results.title":"Compare outputs","arena.results.orderSelection":"Order: selection order","arena.results.orderRtf":"Order: RTF, lowest first · completed results first","arena.results.empty":"No arena results yet.","arena.metric.wall":"wall","arena.metric.rtf":"rtf","arena.metric.wer":"wer","arena.itemStatus.queued":"queued","arena.itemStatus.loading":"loading","arena.itemStatus.running":"running","arena.itemStatus.done":"done","arena.itemStatus.failed":"failed","arena.itemStatus.skipped":"skipped","arena.status.duplicate":"{model} {package} is already in the arena.","arena.status.loadingModel":"Loading model","arena.status.runningRequest":"Running request","arena.status.addModel":"Add at least one model to the arena.","arena.status.running":"Running {mode} arena...","arena.status.complete":"Arena run complete.","arena.note.skippedTargetVoice":"Skipped because this VC model requires target speaker audio.","arena.note.skippedReferenceText":"Skipped because this model requires reference text for the selected voice input.","arena.note.builtinVoice":"Used built-in voice: {voice}.","arena.note.referenceVoice":"Used reference voice.","arena.note.referenceUnsupported":"Used default voice; reference voice is not supported.","arena.note.defaultVoice":"Used default voice: {voice}.","arena.note.skippedReferenceVoice":"Skipped because this model requires a reference voice.","arena.error.seed":"Seed must be -1 or an unsigned 32-bit integer (0 to 4294967295).","arena.error.jsonObject":"must be an object","arena.error.invalidJson":"Arena options JSON is invalid: {error}","arena.error.unregistered":"Configured model is not registered by this server.","arena.error.notDownloaded":"{package} is not downloaded.","arena.error.loadFailed":"Model did not load.","arena.error.missingCatalog":"Model is no longer in the catalog.","arena.error.enterTtsText":"Enter text for the TTS arena.","arena.error.chooseAsrSource":"Choose source audio for the ASR arena.","arena.error.chooseVcSource":"Choose source audio for the VC arena.","arena.error.noAudio":"Response did not include audio.","workflow.tts":"Text to speech","workflow.asr":"ASR / Transcription","workflow.music":"Music / video generation","workflow.vc":"Voice Conversion / S2S","workflow.enhancement":"Enhancement / denoising","models.tools":"tools","workflow.sep":"Source separation","workflow.analysis":"Audio analysis","workflow.design":"Voice design","task.tts":"Text to speech","task.clon":"Voice cloning","task.asr":"Transcription","task.gen":"Music generation","task.midi":"Audio to MIDI","task.vc":"Voice conversion","task.svc":"Singing voice conversion","task.s2s":"Speech editing","task.sep":"Source separation","task.vad":"Voice activity","task.diar":"Speaker diarization","task.align":"Forced alignment","task.vdes":"Voice design","task.wake":"Wake-word detection","task.cls":"Audio classification","studio.eyebrow":"LOCAL AUDIO INTELLIGENCE","studio.title":"Audio studio","studio.subtitle.tts":"Generate natural speech from text, with voice presets and cloning when supported.","studio.subtitle.asr":"Transcribe spoken audio into text, with language and timestamp controls when supported.","studio.subtitle.music":"Create music and sound from a prompt, lyrics, or reference audio when supported.","studio.subtitle.vc":"Convert spoken or sung voices, or get a spoken reply to audio input.","studio.subtitle.sep":"Split a recording into vocals, instruments, or other available audio stems.","studio.subtitle.analysis":"Analyze audio for speech activity, speakers, timing, and alignment.","studio.subtitle.enhancement":"Enhance audio, remove background noise, or restore bandwidth.","studio.subtitle.design":"Create or refine a voice from a written description and supported reference controls.","studio.model":"Model","studio.noModel":"No model selected","studio.resident":"Resident","studio.notInstalled":"Not installed","studio.available":"Available","studio.chooseInstalled":"Choose an installed model","studio.notDownloaded":"not downloaded","studio.pathFound":"Path found","studio.pathMissing":"Path missing","studio.pathUnknown":"Path not inspected","studio.estimatedVram":"{value} GB estimated VRAM","studio.vram":"VRAM —","studio.load":"Load model","studio.unload":"Unload model","studio.working":"Working…","studio.bundledLoaded":"Bundled · loaded","request.label":"REQUEST","request.title":"Input & controls","request.prompt":"Prompt","request.alignmentText":"Alignment text","request.text":"Text","request.soundPlaceholder":"Describe the sound or music…","request.textPlaceholder":"Enter the text…","request.splitLongText":"Split and merge long text","request.charactersPerChunk":"Characters per chunk","request.lyrics":"Lyrics","request.optional":"optional","request.context":"Context prompt","request.contextHint":"optional terminology or names","request.voiceDescription":"Voice description","request.voiceDescriptionPlaceholder":"A warm, calm voice with measured pacing…","request.language":"Language","request.autoLanguage":"blank = auto","request.seed":"Seed","request.randomSeed":"-1 = random","request.maxTokens":"Maximum tokens","request.duration":"Duration seconds","request.autoDuration":"-1 = auto","request.rewriteCaption":"Rewrite caption","request.rewritingCaption":"Rewriting caption...","request.minimaxFrames":"{frames} aligned output frames","request.sourceAudio":"Source audio","request.stopRecording":"Stop recording","request.recordingMicrophone":"Recording microphone","request.recordMicrophone":"Record microphone","request.liveTitle":"Live microphone transcription","request.liveDescription":"Processes consecutive four-second requests using the model's streaming mode.","request.stopLive":"Stop live","request.startLive":"Start live","voice.quickStart":"Quick-start voice presets (demo voices)","voice.configured":"Configured voices","voice.useReference":"Use a reference audio file below","voice.bundledNote":"The bundled reference audio and its matching transcript are supplied automatically.","voice.reference":"Reference voice","voice.required":"required","voice.optional":"optional","voice.referenceText":"Reference text","voice.recording":"Recording voice reference","voice.transcript":"Reference transcript","voice.requiredClone":"required for this voice clone","voice.recommendedClone":"recommended for cloning","voice.transcriptPlaceholder":"Type the exact words spoken in the reference audio, or load a matching .txt file above.","voice.saved":"Saved voices","voice.browserOnly":"stored only in this browser","voice.chooseSaved":"Choose a saved voice...","voice.libraryName":"Library name","voice.namePlaceholder":"My reference voice","voice.save":"Save voice","voice.clearReference":"Clear reference","voice.preset":"Voice preset","voice.speakerReferences":"Speaker references","voice.upToFour":"optional, up to 4","voice.speaker":"Speaker {number}","voice.dialoguePlaceholder":"[S1] Words spoken in Speaker 1's reference. [S2] Words spoken in Speaker 2's reference.","settings.load":"Load settings JSON","settings.save":"Save settings JSON","history.title":"Run history (Experimental)","history.clear":"Clear history","history.deleteRun":"Delete generation {id}","history.wrongModel":"Cannot open history for {label}: the current model is {model}.","history.wait":"Wait for the current request or settings restore to finish.","configuration.history":"Run History","configuration.historyLimit":"Maximum retained runs","configuration.save":"Save configuration","configuration.saved":"Configuration saved.","studio.weightsPath":"Weights path on server","studio.downloadWeights":"Download SafeTensors weights","studio.format":"Model format","studio.configured":"Configured","studio.serverConfigured":"Configured by server config","studio.loadPackage":"Load {package}","studio.unloadPackage":"Unload {package}","studio.packageNotDownloaded":"{package} is not downloaded","run.chooseModel":"Choose an installed model first","run.installModel":"Install this model from the Models tab first","run.elapsed":"Elapsed generation time","result.saveArtifact":"Save {format}","result.videoPreview":"Video preview","common.delete":"Delete","common.enabled":"Enabled","common.disabled":"Disabled","common.cancel":"Cancel","common.close":"Close","common.refresh":"Refresh","common.browse":"Browse","common.apply":"Apply","common.applying":"Applying…","file.choose":"Choose file","file.none":"No file chosen","file.preview":"Preview","file.clear":"Clear file","options.modelParameters":"Model parameters","options.additional":"Additional options","param.minimax_h3.num_inference_steps.label":"Denoising steps","param.minimax_h3.num_inference_steps.info":"Twelve denoising steps provide a practical quality and performance balance.","param.minimax_h3.num_frames.label":"Output frames","param.minimax_h3.num_frames.info":"Calculated from duration at approximately 24 frames per output second. Editing frames also updates duration.","param.minimax_h3.guidance_scale.label":"Guidance scale","param.minimax_h3.sampler.label":"Sampler","param.minimax_h3.dit_acceleration.label":"DiT acceleration","param.minimax_h3.dit_acceleration.info":"None uses the quality-first full-DiT path. Acceleration modes are experimental and may distort some outputs.","param.minimax_h3.return_video.label":"Decode video","param.minimax_h3.return_video.info":"Disabled by default to reduce memory use and return audio only.","model.minimax_h3.hint":"MiniMax-H3 uses a joint audio/video DiT. GGUF Q4 is the quality-first choice; CUDA-only GGUF Q4 ConvRot uses slightly more VRAM for higher speed. The default full-DiT path prioritizes audio quality and video decoding is disabled.","run.run":"Run","run.cancel":"Cancel","run.working":"Working…","result.label":"RESULT","result.title":"Output","result.track":"track","result.tracks":"tracks","result.saveWav":"Save WAV","result.empty":"Generated audio and structured results appear here.","models.eyebrow":"MODEL LIBRARY","models.title":"Local packages","models.subtitle":"Download and manage model packages without leaving the native interface.","models.folder":"Models folder","models.folderHint":"downloads, local detection, and model loading","models.folderPlaceholder":"models folder beside audiocpp_server","models.default":"Default","models.useDefault":"Use default","models.showTypes":"Show model types","models.model":"model","models.variants":"variants","models.update":"Update","models.reinstall":"Reinstall","models.upToDate":"Up to date","models.updateAvailable":"Update available","models.versionUnknown":"Version unknown","models.selected":"Selected","models.downloaded":"Downloaded","models.queued":"queued","models.stopping":"stopping","models.checkingSize":"checking size…","models.hfAccess":"HF access required","models.sizeUnavailable":"size unavailable","models.stopDownload":"Stop download","models.cleanPartial":"Clean partial download","models.sharedPackage":"Uses the shared {name} package shown above.","runtime.eyebrow":"RUNTIME","runtime.title":"Session log","runtime.subtitle":"Browser-side lifecycle and request events.","runtime.status":"Status","runtime.backend":"Backend","runtime.registered":"Registered","runtime.resident":"Resident","runtime.noEvents":"No events yet.","runtime.serverLogNotice":"This panel shows UI events, not server logs. Add --log --log-file server.log to your server startup command, then open server.log on the server machine.","status.ready":"Ready","status.modelReady":"{model} is resident and ready.","status.runningTask":"Running {task}...","status.completeIn":"Complete in {seconds}s.","status.packageAvailable":"{model} will use {format}. It is available in Studio.","folder.eyebrow":"MODELS FOLDER","folder.title":"Choose a folder","folder.closeLabel":"Close folder browser","folder.loading":"Loading...","folder.up":"Up one level","folder.loadingFolders":"Loading folders...","folder.empty":"This folder has no subfolders.","folder.select":"Select this folder","footer.embedded":"SvelteKit · embedded in audiocpp_server"},xq=Object.assign({"../../lang/lang_it.json":_q,"../../lang/lang_ja.json":vq,"../../lang/lang_pl.json":bq,"../../lang/lang_ru.json":yq,"../../lang/lang_vi.json":wq,"../../lang/lang_zh.json":kq}),bf=new Map([["en",Mm]]),kb=[{code:"en",name:"English"}];for(const[a,t]of Object.entries(xq).sort(([i],[n])=>i.localeCompare(n))){const i=a.match(/lang_([^/\\.]+)\.json$/)?.[1]?.toLowerCase(),n=(t.code||i||"").trim().toLowerCase();!n||n==="en"||!t.name||!t.translations||(bf.set(n,t.translations),kb.push({code:n,name:t.name}))}const Sq=kb;function xb(a){const t=bf.get(a)||Mm;return(i,n={},s=i)=>{let r=t[i]||Mm[i]||s;for(const[o,l]of Object.entries(n))r=r.replaceAll(`{${o}}`,String(l));return r}}function Sb(a){for(const t of a){const i=t.toLowerCase();if(bf.has(i))return i;const n=i.split("-")[0];if(bf.has(n))return n}return"en"}var Tq=ie('<span class="svelte-i4ds1n"> </span>'),$q=ie('<video controls="" preload="metadata" class="svelte-i4ds1n"></video>',2),qq=ie('<audio controls="" class="svelte-i4ds1n"></audio>'),Aq=ie('<div class="media-preview svelte-i4ds1n"><div class="media-preview-header svelte-i4ds1n"><strong class="svelte-i4ds1n"> </strong> <!></div> <!></div>');function os(a,t){Ri(t,!1);const i=K(),n=K(),s=K();let r=Se(t,"file",8,null),o=Se(t,"src",8,""),l=Se(t,"name",8,""),c=Se(t,"kind",8,"audio"),d=Se(t,"label",8,"Preview"),g=K(""),h=K(null),m=K("");function p(){e(g)&&(URL.revokeObjectURL(e(g)),b(g,""))}Ns(p),Ee(()=>(Y(r()),e(h)),()=>{r()!==e(h)&&(p(),b(h,r()),r()&&b(g,URL.createObjectURL(r())))}),Ee(()=>(e(g),Y(o())),()=>{b(i,e(g)||o())}),Ee(()=>(e(i),e(m)),()=>{b(n,!!e(i)&&e(m)===e(i))}),Ee(()=>(Y(r()),Y(l())),()=>{b(s,r()?.name||l())}),bn(),en();var u=bs(),f=xt(u);{var _=v=>{var y=Aq(),S=k(y),q=k(S),M=k(q,!0);w(q);var P=$(q,2);{var B=C=>{var R=Tq(),H=k(R,!0);w(R),ne(()=>W(H,e(s))),J(C,R)};_e(P,C=>{e(s)&&C(B)})}w(S);var A=$(S,2);{var j=C=>{var R=$q();ne(()=>he(R,"src",e(i))),re("error",R,()=>b(m,e(i))),J(C,R)},G=C=>{var R=qq();ne(()=>he(R,"src",e(i))),re("error",R,()=>b(m,e(i))),J(C,R)};_e(A,C=>{c()==="video"?C(j):C(G,-1)})}w(y),ne(()=>W(M,d())),J(v,y)};_e(f,v=>{e(i)&&!e(n)&&v(_)})}J(a,u),Bi()}var Cq=ie('<details class="studio-options lora-controls svelte-1yw4t6e"><summary><!>LoRA adapter <span> </span></summary> <div class="lora-group-body svelte-1yw4t6e"><!></div></details>');function zm(a,t){let i=Se(t,"selected",8,0);var n=Cq(),s=k(n),r=k(s);ES(r,{size:16});var o=$(r,2),l=k(o,!0);w(o),w(s);var c=$(s,2),d=k(c);B4(d,t,"default",{}),w(c),w(n),ne(()=>W(l,i()>1?`${i()} selected`:i()?"Selected":"None")),J(a,n)}var Tb=ie("<small> </small>"),Gq=ie('<p> </p> <div class="lora-fields"><div><label for="lora-adapter-path">Adapter path <span>Optional</span></label> <div class="lora-path"><input id="lora-adapter-path" type="text" placeholder="Server adapter file or directory"/> <button type="button">Browse folder</button></div></div> <div><label for="lora-adapter-strength">Strength</label> <input id="lora-adapter-strength" type="number" placeholder="Adapter default"/></div></div> <!> <!> <button type="button">Clear adapter</button>',1);function Fq(a,t){Ri(t,!1);const i=K(),n=K(),s=K();let r=Se(t,"specs",8),o=Se(t,"values",8),l=Se(t,"editable",8,!1),c=Se(t,"busy",8,!1),d=Se(t,"onChange",8),g=Se(t,"onBrowse",8);Ee(()=>Y(r()),()=>{b(i,r().find(u=>u.name==="lora"))}),Ee(()=>Y(r()),()=>{b(n,r().find(u=>u.name==="lora_scale"))}),Ee(()=>Y(o()),()=>{b(s,String(o().lora??"").trim())}),bn(),en();var h=bs(),m=xt(h);{var p=u=>{{let f=Yt(()=>e(s)?1:0);zm(u,{get selected(){return e(f)},children:(_,v)=>{var y=Gq(),S=xt(y),q=k(S,!0);w(S);var M=$(S,2),P=k(M),B=$(k(P),2),A=k(B);Dt(A);var j=$(A,2);w(B),w(P);var G=$(P,2),C=$(k(G),2);Dt(C),w(G),w(M);var R=$(M,2);{var H=L=>{var I=Tb(),T=k(I,!0);w(I),ne(()=>W(T,(e(i),x(()=>e(i).info)))),J(L,I)};_e(R,L=>{e(i),x(()=>e(i).info)&&L(H)})}var E=$(R,2);{var U=L=>{var I=Tb(),T=k(I,!0);w(I),ne(()=>W(T,(e(n),x(()=>e(n).info)))),J(L,I)};_e(E,L=>{e(n),x(()=>e(n).info)&&L(U)})}var N=$(E,2);ne((L,I)=>{W(q,l()?"Applied when the model loads. Reload or generate to apply changes.":"Managed by the server configuration. Set the adapter and strength in its session options."),Gi(A,L),A.disabled=c()||!l(),j.disabled=c()||!l(),he(C,"step",(e(n),x(()=>e(n).step))),he(C,"min",(e(n),x(()=>e(n).minimum))),he(C,"max",(e(n),x(()=>e(n).maximum))),Gi(C,I),C.disabled=c()||!l()||!e(s),N.disabled=c()||!l()||!e(s)},[()=>(Y(o()),x(()=>String(o().lora??""))),()=>(Y(o()),x(()=>String(o().lora_scale??"")))]),re("input",A,L=>d()(e(i),L.currentTarget.value.trim())),re("click",j,()=>g()(e(i))),re("input",C,L=>{L.currentTarget.value===""?d()(e(n),""):Number.isFinite(L.currentTarget.valueAsNumber)&&d()(e(n),L.currentTarget.valueAsNumber)}),re("click",N,()=>{d()(e(i),""),d()(e(n),e(n).default??"")}),J(_,y)},$$slots:{default:!0}})}};_e(m,u=>{e(i)&&e(n)&&u(p)})}J(a,h),Bi()}var yf=ie("<option> </option>"),$b=ie("<optgroup></optgroup>"),Mq=ie("<label> </label> <select><!><!><!><!></select>",1);function qb(a,t){Ri(t,!1);let i=Se(t,"id",8),n=Se(t,"value",8,""),s=Se(t,"presets",24,()=>[]),r=Se(t,"savedVoices",24,()=>[]),o=Se(t,"presetLabel",8),l=Se(t,"emptyLabel",8),c=Se(t,"allowEmpty",8,!0),d=Se(t,"referenceOption",8,!1),g=Se(t,"disabled",8,!1),h=Se(t,"tr",8),m=Se(t,"onselect",8);en();var p=Mq(),u=xt(p),f=k(u,!0);w(u);var _=$(u,2),v=k(_);{var y=G=>{var C=yf(),R=k(C,!0);w(C),C.value=C.__value="",ne(()=>W(R,l())),J(G,C)};_e(v,G=>{c()&&G(y)})}var S=$(v);{var q=G=>{var C=yf(),R=k(C,!0);w(C),C.value=C.__value="reference",ne(H=>W(R,H),[()=>(Y(h()),x(()=>h()("arena.voice.reference")))]),J(G,C)};_e(S,G=>{d()&&G(q)})}var M=$(S);{var P=G=>{var C=$b();Mt(C,5,s,Qt,(R,H)=>{var E=yf(),U=k(E,!0);w(E);var N={};ne(()=>{W(U,e(H)),N!==(N=`preset:${e(H)}`)&&(E.value=E.__value=`preset:${e(H)}`)}),J(R,E)}),w(C),ne(()=>he(C,"label",o())),J(G,C)};_e(M,G=>{Y(s()),x(()=>s().length)&&G(P)})}var B=$(M);{var A=G=>{var C=$b();Mt(C,5,r,Qt,(R,H)=>{var E=yf(),U=k(E,!0);w(E);var N={};ne(()=>{W(U,(e(H),x(()=>e(H).name))),N!==(N=(e(H),x(()=>`saved:${e(H).id}`)))&&(E.value=(E.__value=(e(H),x(()=>`saved:${e(H).id}`)))??"")}),J(R,E)}),w(C),ne(R=>he(C,"label",R),[()=>(Y(h()),x(()=>h()("voice.saved")))]),J(G,C)};_e(B,G=>{Y(r()),x(()=>r().length)&&G(A)})}w(_);var j;Vn(_),ne(G=>{he(u,"for",i()),W(f,G),he(_,"id",i()),_.disabled=g(),j!==(j=n())&&(_.value=(_.__value=n())??"",An(_,n()))},[()=>(Y(h()),x(()=>h()("arena.voice.label")))]),re("change",_,G=>m()(G.currentTarget.value)),J(a,p),Bi()}const zq=/^\s*(Speaker\s+\d+\s*:)\s*(.*)$/i,Ab=new Set(["。","!","?","!","?",";",";","…","."]),Eq=new Set(["mr","mrs","ms","dr","prof","sr","jr","st","mt","rev","hon","vs","etc","eg","ie","approx","dept","est","fig","no","vol","jan","feb","mar","apr","jun","jul","aug","sep","sept","oct","nov","dec","inc","ltd","co","corp"]);function Cb(a){return a>="0"&&a<="9"}function Uq(a){return/[\p{L}\p{N}']/u.test(a)}function Rq(a,t){const i=a[t+1];if(i!==void 0&&!/\s/.test(i)||t>0&&Cb(a[t-1])&&i!==void 0&&Cb(i))return!1;let n=t;for(;n>0&&Uq(a[n-1]);)n-=1;const s=a.slice(n,t);return s.length===1&&/\p{L}/u.test(s)?!1:!Eq.has(s.toLowerCase())}function Bq(a){const t=[];let i=0;for(let n=0;n<a.length;n+=1){if(!Ab.has(a[n])||a[n]==="."&&!Rq(a,n))continue;let s=n+1;for(;s<a.length&&Ab.has(a[s]);)s+=1;for(;s<a.length&&/\s/.test(a[s]);)s+=1;t.push(a.slice(i,s)),i=s,n=s-1}return i<a.length&&t.push(a.slice(i)),t}function Pq(a,t){const i=[];let n=a.trim();for(;n.length>t;){let s=n.lastIndexOf(" ",t);s<=0&&(s=t);const r=n.slice(0,s).trim();r&&i.push(r),n=n.slice(s).trim()}return n&&i.push(n),i}function jq(a,t){const i=zq.exec(a),n=i?`${i[1]} `:"",s=i?i[2]:a.trim(),r=Math.max(1,t-n.length),o=Bq(s);o.length||o.push(s);const l=[];let c="",d="";for(const g of o){const h=g.trimEnd();if(!h)continue;const m=g.slice(h.length);if(c&&c.length+d.length+h.length>r&&(l.push(n+c.trim()),c="",d=""),h.length<=r){c=c?`${c}${d}${h}`:h,d=m;continue}c&&(l.push(n+c.trim()),c="",d="");for(const p of Pq(h,r))l.push(n+p)}return c&&l.push(n+c.trim()),l.length?l:[a]}function wf(a,t){const i=[];for(const o of a.split(/\r?\n/))o.trim()&&i.push(...o.length>t?jq(o,t):[o]);const n=[];let s=[],r=0;for(const o of i){const l=s.length?1:0;s.length&&r+l+o.length>t&&(n.push(s.join(`
|
||
`)),s=[],r=0),s.push(o),r+=(s.length>1?1:0)+o.length}return s.length&&n.push(s.join(`
|
||
`)),n.length?n:a.trim()?[a]:[]}function Em(a){return a==="vibevoice"?600:a==="voxcpm2"?60:1e3}const Gb="audiocpp.ui.theme",Nq=[{id:"mocha",label:"Catppuccin Mocha"},{id:"system",label:"System"},{id:"dark",label:"Dark"},{id:"light",label:"Light"},{id:"paper",label:"Paper"}];function Fb(a){return a==="dark"||a==="light"||a==="system"||a==="mocha"||a==="paper"?a:"mocha"}function Oq(a,t){return a!=="system"?a:t?"dark":"light"}var Mb=ie("<option> </option>"),kf=ie('<small class="svelte-15o25uj"> </small>'),Dq=ie('<div class="auk-field svelte-15o25uj"><label class="svelte-15o25uj"> </label> <select></select> <!></div>'),Iq=ie('<div class="auk-field wide svelte-15o25uj"><label for="auk-param-instruct" class="svelte-15o25uj"> <span class="svelte-15o25uj"> </span></label> <textarea id="auk-param-instruct" rows="2"></textarea> <!></div>'),Lq=ie('<div class="auk-field svelte-15o25uj"><label for="auk-param-duration" class="svelte-15o25uj"> <span class="svelte-15o25uj"> </span></label> <input id="auk-param-duration" type="number"/> <!></div>'),Vq=ie('<label class="toggle svelte-15o25uj"><input type="checkbox"/> <span class="svelte-15o25uj"></span> </label>'),Hq=ie("<select></select>"),Wq=ie('<div class="auk-range svelte-15o25uj"><input type="range"/> <output class="svelte-15o25uj"> </output></div>'),Qq=ie('<input type="number"/>'),Kq=ie('<div class="auk-field svelte-15o25uj"><label class="svelte-15o25uj"> </label> <!> <!></div>'),Yq=ie('<div class="auk-form svelte-15o25uj"><div class="auk-heading svelte-15o25uj"><strong>Components</strong> <span class="svelte-15o25uj"> </span></div> <div class="auk-grid auk-components svelte-15o25uj"></div> <div class="auk-grid svelte-15o25uj"><!> <!></div> <details class="svelte-15o25uj"><summary class="svelte-15o25uj">Sampling and memory <span class="svelte-15o25uj"> </span></summary> <div class="auk-grid details-grid svelte-15o25uj"></div></details></div>');function Jq(a,t){Ri(t,!1);const i=K(),n=K(),s=K(),r=K(),o=K();let l=Se(t,"task",8,"tts"),c=Se(t,"busy",8,!1),d=Se(t,"paramSpecs",24,()=>[]),g=Se(t,"advancedValues",24,()=>({})),h=Se(t,"tr",8,(N,L,I=N)=>I),m=Se(t,"localizedParameterText",8,(N,L)=>L==="label"?N.name:""),p=Se(t,"setParameterValue",8,()=>{});const u=["model_gguf","qwen_gguf","vae_gguf"],f=["num_inference_steps","guidance_scale","sway_sampling_coef"],_=["attention","mem_saver"];function v(N){return N.map(L=>d().find(I=>I.name===L)).filter(L=>L!==void 0)}Ee(()=>{},()=>{b(i,v(u))}),Ee(()=>{},()=>{b(n,v(f))}),Ee(()=>{},()=>{b(s,v(_))}),Ee(()=>Y(g()),()=>{b(r,String(g().model_gguf||"auk-base-f32.gguf"))}),Ee(()=>e(r),()=>{b(o,e(r).startsWith("auk-flash-")?"AuK-Flash":"Base")}),bn(),en();var y=Yq(),S=k(y),q=$(k(S),2),M=k(q,!0);w(q),w(S);var P=$(S,2);Mt(P,5,()=>e(i),Qt,(N,L)=>{var I=Dq(),T=k(I),F=k(T,!0);w(T);var z=$(T,2);Mt(z,5,()=>(e(L),x(()=>e(L).choices||[])),Qt,(ue,de)=>{var ae=Mb(),V=k(ae,!0);w(ae);var pe={};ne(()=>{W(V,e(de)),pe!==(pe=e(de))&&(ae.value=(ae.__value=e(de))??"")}),J(ue,ae)}),w(z);var D;Vn(z);var Q=$(z,2);{var X=ue=>{var de=kf(),ae=k(de,!0);w(de),ne(V=>W(ae,V),[()=>(Y(m()),e(L),Y(h()),x(()=>m()(e(L),"info",h())))]),J(ue,de)},Z=oi(()=>(Y(m()),e(L),Y(h()),x(()=>m()(e(L),"info",h()))));_e(Q,ue=>{e(Z)&&ue(X)})}w(I),ne((ue,de)=>{he(T,"for",(e(L),x(()=>"auk-param-"+e(L).name))),W(F,ue),he(z,"id",(e(L),x(()=>"auk-param-"+e(L).name))),z.disabled=c(),D!==(D=de)&&(z.value=(z.__value=de)??"",An(z,de))},[()=>(Y(m()),e(L),Y(h()),x(()=>m()(e(L),"label",h()))),()=>(Y(g()),e(L),x(()=>String(g()[e(L).name]??e(L).default??"")))]),re("change",z,ue=>p()(e(L),ue.currentTarget.value)),J(N,I)}),w(P);var B=$(P,2),A=k(B);{var j=N=>{var L=bs(),I=xt(L);Mt(I,1,()=>x(()=>v(["instruct"])),Qt,(T,F)=>{var z=Iq(),D=k(z),Q=k(D),X=$(Q),Z=k(X,!0);w(X),w(D);var ue=$(D,2);nn(ue);var de=$(ue,2);{var ae=pe=>{var Ce=kf(),ce=k(Ce,!0);w(Ce),ne(Te=>W(ce,Te),[()=>(Y(m()),e(F),Y(h()),x(()=>m()(e(F),"info",h())))]),J(pe,Ce)},V=oi(()=>(Y(m()),e(F),Y(h()),x(()=>m()(e(F),"info",h()))));_e(de,pe=>{e(V)&&pe(ae)})}w(z),ne((pe,Ce,ce,Te)=>{W(Q,`${pe??""} `),W(Z,Ce),ue.disabled=c(),Gi(ue,ce),he(ue,"placeholder",Te)},[()=>(Y(m()),e(F),Y(h()),x(()=>m()(e(F),"label",h()))),()=>(Y(h()),x(()=>h()("request.optional"))),()=>(Y(g()),x(()=>String(g().instruct??""))),()=>(Y(m()),e(F),Y(h()),x(()=>m()(e(F),"placeholder",h())))]),re("input",ue,pe=>p()(e(F),pe.currentTarget.value)),J(T,z)}),J(N,L)};_e(A,N=>{l()==="tts"&&N(j)})}var G=$(A,2);Mt(G,1,()=>x(()=>v(["duration_sec"])),Qt,(N,L)=>{var I=Lq(),T=k(I),F=k(T),z=$(F),D=k(z,!0);w(z),w(T);var Q=$(T,2);Dt(Q);var X=$(Q,2);{var Z=de=>{var ae=kf(),V=k(ae,!0);w(ae),ne(pe=>W(V,pe),[()=>(Y(m()),e(L),Y(h()),x(()=>m()(e(L),"info",h())))]),J(de,ae)},ue=oi(()=>(Y(m()),e(L),Y(h()),x(()=>m()(e(L),"info",h()))));_e(X,de=>{e(ue)&&de(Z)})}w(I),ne((de,ae,V,pe)=>{W(F,`${de??""} `),W(D,ae),Q.disabled=c(),he(Q,"min",(e(L),x(()=>e(L).minimum))),he(Q,"max",(e(L),x(()=>e(L).maximum))),he(Q,"step",(e(L),x(()=>e(L).step))),Gi(Q,V),he(Q,"placeholder",pe)},[()=>(Y(m()),e(L),Y(h()),x(()=>m()(e(L),"label",h()))),()=>(Y(h()),x(()=>h()("request.optional"))),()=>(Y(g()),x(()=>String(g().duration_sec??""))),()=>(Y(m()),e(L),Y(h()),x(()=>m()(e(L),"placeholder",h())))]),re("input",Q,de=>p()(e(L),de.currentTarget.value===""?"":de.currentTarget.valueAsNumber)),J(N,I)}),w(B);var C=$(B,2),R=k(C),H=$(k(R)),E=k(H,!0);w(H),w(R);var U=$(R,2);Mt(U,5,()=>(e(n),e(s),x(()=>[...e(n),...e(s)])),Qt,(N,L)=>{var I=Kq(),T=k(I),F=k(T,!0);w(T);var z=$(T,2);{var D=V=>{var pe=Vq(),Ce=k(pe);Dt(Ce);var ce=$(Ce,3,!0);w(pe),ne((Te,ye)=>{he(Ce,"id",(e(L),x(()=>"auk-param-"+e(L).name))),Ce.disabled=c(),Dl(Ce,Te),W(ce,ye)},[()=>(Y(g()),e(L),x(()=>!!g()[e(L).name])),()=>(Y(g()),e(L),Y(h()),x(()=>g()[e(L).name]?h()("common.enabled"):h()("common.disabled")))]),re("change",Ce,Te=>p()(e(L),Te.currentTarget.checked)),J(V,pe)},Q=V=>{var pe=Hq();Mt(pe,5,()=>(e(L),x(()=>e(L).choices||[])),Qt,(ce,Te)=>{var ye=Mb(),Ie=k(ye,!0);w(ye);var Je={};ne(()=>{W(Ie,e(Te)),Je!==(Je=e(Te))&&(ye.value=(ye.__value=e(Te))??"")}),J(ce,ye)}),w(pe);var Ce;Vn(pe),ne(ce=>{he(pe,"id",(e(L),x(()=>"auk-param-"+e(L).name))),pe.disabled=c(),Ce!==(Ce=ce)&&(pe.value=(pe.__value=ce)??"",An(pe,ce))},[()=>(Y(g()),e(L),x(()=>String(g()[e(L).name]??e(L).default??"")))]),re("change",pe,ce=>p()(e(L),ce.currentTarget.value)),J(V,pe)},X=V=>{var pe=Wq(),Ce=k(pe);Dt(Ce);var ce=$(Ce,2),Te=k(ce,!0);w(ce),w(pe),ne((ye,Ie)=>{he(Ce,"id",(e(L),x(()=>"auk-param-"+e(L).name))),Ce.disabled=c(),he(Ce,"min",(e(L),x(()=>e(L).minimum))),he(Ce,"max",(e(L),x(()=>e(L).maximum))),he(Ce,"step",(e(L),x(()=>e(L).step))),Gi(Ce,ye),W(Te,Ie)},[()=>(Y(g()),e(L),x(()=>Number(g()[e(L).name]??e(L).default))),()=>(Y(g()),e(L),x(()=>String(g()[e(L).name])))]),re("input",Ce,ye=>p()(e(L),ye.currentTarget.valueAsNumber)),J(V,pe)},Z=V=>{var pe=Qq();Dt(pe),ne(Ce=>{he(pe,"id",(e(L),x(()=>"auk-param-"+e(L).name))),pe.disabled=c(),he(pe,"min",(e(L),x(()=>e(L).minimum))),he(pe,"max",(e(L),x(()=>e(L).maximum))),he(pe,"step",(e(L),x(()=>e(L).step))),Gi(pe,Ce)},[()=>(Y(g()),e(L),x(()=>String(g()[e(L).name]??"")))]),re("input",pe,Ce=>p()(e(L),Ce.currentTarget.valueAsNumber)),J(V,pe)};_e(z,V=>{e(L),x(()=>e(L).type==="bool")?V(D):(e(L),x(()=>e(L).type==="choice")?V(Q,1):(e(L),x(()=>e(L).type==="slider")?V(X,2):V(Z,-1)))})}var ue=$(z,2);{var de=V=>{var pe=kf(),Ce=k(pe,!0);w(pe),ne(ce=>W(Ce,ce),[()=>(Y(m()),e(L),Y(h()),x(()=>m()(e(L),"info",h())))]),J(V,pe)},ae=oi(()=>(Y(m()),e(L),Y(h()),x(()=>m()(e(L),"info",h()))));_e(ue,V=>{e(ae)&&V(de)})}w(I),ne(V=>{he(T,"for",(e(L),x(()=>"auk-param-"+e(L).name))),W(F,V)},[()=>(Y(m()),e(L),Y(h()),x(()=>m()(e(L),"label",h())))]),J(N,I)}),w(U),w(C),w(y),ne(()=>{W(M,e(o)),W(E,(e(n),e(s),x(()=>e(n).length+e(s).length)))}),J(a,y),Bi()}const Jo=El({modelId:"",turns:[]});let Xq=1;const Zq={subscribe:Jo.subscribe};function Um(a){a.questionUrl&&URL.revokeObjectURL(a.questionUrl),a.replyUrl&&URL.revokeObjectURL(a.replyUrl),a.questionUrl="",a.replyUrl=""}function eA(){for(const a of Uu(Jo).turns)Um(a);Jo.set({modelId:"",turns:[]})}function zb(a){return a.filter(t=>t.state==="done"&&t.reply&&!t.leftOut)}function tA(a,t,i){const n=Uu(Jo),s=n.turns.filter(l=>l.state!=="failed"&&l.state!=="stopped");for(const l of n.turns)s.includes(l)||Um(l);const r=s.length>0&&n.modelId!==a,o={key:Xq++,state:t,seed:i,questionPath:"",questionUrl:"",replyText:"",replyUrl:"",reply:null,cut:!1,steps:"",leftOut:!1,live:!0,firstAudioMs:null,message:""};return Jo.set({modelId:r?n.modelId:a,turns:[...s,o]}),{turn:o,history:r?[]:zb(s)}}function Kl(a,t){Object.assign(a,t),Jo.update(i=>i)}function aA(a,t,i){Object.assign(t,i,{state:"done"});const n=Uu(Jo),s=n.modelId!==a;if(s)for(const r of n.turns)r!==t&&Um(r);return Jo.set(s?{modelId:a,turns:[t]}:n),s}function Rm(a){const t=atob(a),i=new Uint8Array(t.length);for(let n=0;n<t.length;n+=1)i[n]=t.charCodeAt(n);return i}function Eb(a){const t=new DataView(a.buffer,a.byteOffset,a.byteLength),i=l=>String.fromCharCode(a[l],a[l+1],a[l+2],a[l+3]);if(a.length<12||i(0)!=="RIFF"||i(8)!=="WAVE")throw new Error("The reply audio is not a WAV file.");let n=0,s=0,r=0,o=0;for(let l=12;l+8<=a.length;){const c=i(l),d=t.getUint32(l+4,!0),g=l+8;if(c==="fmt "&&g+16<=a.length)n=t.getUint16(g,!0),s=t.getUint16(g+2,!0),r=t.getUint32(g+4,!0),o=t.getUint16(g+14,!0);else if(c==="data"){if(n!==1||o!==16||s<1||r<1)throw new Error("The reply audio is not 16-bit PCM.");const h=Math.floor(Math.min(d,a.length-g)/(2*s)),m=new Float32Array(h);for(let p=0;p<h;p+=1)m[p]=t.getInt16(g+p*2*s,!0)/32768;return{sampleRate:r,samples:m}}l=g+d+(d&1)}throw new Error("The reply audio has no samples.")}class iA{context=null;sources=new Set;enabled=!1;open=!1;startTime=0;frames=0;rate=0;lead=.15;unavailable=!1;onchange=()=>{};beginTurn(t){if(this.open=!0,this.stop(),this.enabled=t,this.lead=.15,!!t){if(!this.context)try{this.context=new AudioContext({sampleRate:24e3,latencyHint:"interactive"})}catch{this.unavailable=!0,this.enabled=!1;return}this.context.resume().catch(()=>{})}}endTurn(){this.open=!1,this.suspendIfIdle()}get blocked(){return this.enabled&&this.context!==null&&this.context.state!=="running"}get playing(){return this.sources.size>0}push(t,i){const n=this.context;if(!this.enabled||!n||!t.length)return null;const s=n.currentTime;!this.frames||i!==this.rate?(this.startTime=s+this.lead,this.frames=0,this.rate=i):this.startTime+this.frames/this.rate<s+.02&&(this.lead=Math.min(1.5,this.lead*2),this.startTime=s+this.lead,this.frames=0);const r=n.createBuffer(1,t.length,i);r.copyToChannel(t,0);const o=n.createBufferSource();o.buffer=r,o.connect(n.destination),o.onended=()=>{o.disconnect(),this.sources.delete(o),this.sources.size||(this.onchange(),this.suspendIfIdle())};const l=this.startTime+this.frames/this.rate;return o.start(l),this.frames+=t.length,this.sources.add(o),this.sources.size===1&&this.onchange(),Math.max(0,l-s)}stop(){this.enabled=!1,this.frames=0;const t=this.sources.size>0;for(const i of this.sources)i.onended=null,i.stop(),i.disconnect();this.sources.clear(),t&&this.onchange(),this.suspendIfIdle()}close(){this.stop(),this.context?.close().catch(()=>{}),this.context=null}suspendIfIdle(){!this.open&&!this.sources.size&&this.context?.state==="running"&&this.context.suspend().catch(()=>{})}}var nA=ie('<button type="button" class="svelte-18zfjku">Stop audio</button>'),sA=ie('<small class="note svelte-18zfjku"> </small>'),rA=ie(`<small class="note svelte-18zfjku">This entry's id is not the catalog's S2S id, so Model parameters shows the family's ASR settings; turns leave them out and use Max tokens.</small>`),oA=ie('<button type="button" class="svelte-18zfjku"> </button>'),lA=ie('<audio controls=""></audio>'),cA=ie('<small class="svelte-18zfjku">…</small>'),dA=ie('<div class="reply-audio svelte-18zfjku"><audio controls=""></audio> <a class="svelte-18zfjku">Save WAV</a></div>'),uA=ie('<small class="turn-message svelte-18zfjku"> </small>'),fA=ie('<li><div class="turn-head svelte-18zfjku"><strong class="svelte-18zfjku"> </strong> <span aria-live="polite"> </span> <small class="svelte-18zfjku"> </small> <!></div> <div class="turn-row svelte-18zfjku"><span class="svelte-18zfjku">You</span> <!></div> <div class="turn-row svelte-18zfjku"><span class="svelte-18zfjku">Reply</span> <div class="reply svelte-18zfjku"><p class="svelte-18zfjku"> </p> <!></div></div> <!></li>'),pA=ie('<ol class="turns svelte-18zfjku"></ol>'),mA=ie('<p class="empty svelte-18zfjku">Record or choose a spoken question under Source audio, then press Run. Each Run adds a turn, and the earlier turns go with it.</p>'),gA=ie('<small class="note svelte-18zfjku">Live playback is not available; each reply is in its player when it finishes.</small>'),hA=ie('<small class="note svelte-18zfjku">The browser did not let live audio start; each reply is in its player when it finishes.</small>'),_A=ie('<section class="lfm2-conversation svelte-18zfjku" aria-label="Conversation"><div class="conversation-head svelte-18zfjku"><div><strong class="svelte-18zfjku">Conversation</strong> <small class="svelte-18zfjku"> </small></div> <div class="conversation-actions svelte-18zfjku"><!> <button type="button" class="svelte-18zfjku">New conversation</button></div></div> <!> <!> <!> <label class="toggle svelte-18zfjku"><input type="checkbox"/> <span></span>Play replies as they stream in</label> <!></section>');function Ub(a,t){Ri(t,!1);const i=()=>Bu(Zq,"$conversation",n),[n,s]=kp(),r=K(),o=K(),l=K(),c=K(),d=K();let g=Se(t,"modelId",8,""),h=Se(t,"busy",8,!1),m=Se(t,"server",8,null),p=Se(t,"loadedModels",24,()=>[]),u=Se(t,"catalogEntries",24,()=>[]),f=Se(t,"paramSpecs",24,()=>[]),_=Se(t,"sourceFile",8,null),v=Se(t,"sourceRecording",8,!1),y=Se(t,"clearSource",8,()=>{}),S=Se(t,"log",8,()=>{}),q=Se(t,"setPanelRunner",8,()=>()=>{});const M=K(new iA);let P=K(!0),B=K(!1),A=K(!1),j=K(!1),G=K(null),C=null,R=K(g());Ct(M,e(M).onchange=()=>{b(B,e(M).playing)});function H(ge){return u().find(Me=>Me.id===ge)?.display_name||ge}function E(ge){!e(G)||e(G).scrollTop+e(G).clientHeight<e(G).scrollHeight-24||Fs().then(()=>{e(G)&&Ct(G,e(G).scrollTop=e(G).scrollHeight)})}function U(ge){if(ge.aborted)throw new DOMException("The turn was stopped.","AbortError")}function N(ge){return u().find(Me=>Me.id===ge)?.family??"lfm2_audio"}function L(ge,Me){const Fe=Me;return typeof Fe=="object"&&Fe!==null&&Fe.id===`${ge}.reply`&&typeof Fe.kind=="string"&&typeof Fe.payload=="string"}function I(ge){return JSON.stringify(ge,(Me,Fe)=>(Me==="audio"||Me==="payload")&&typeof Fe=="string"?`<base64 data: ${Fe.length} chars>`:Fe,2)}function T(ge,Me,Fe,qe){const rt={audio:Fe,seed:ge.seed,options:Me};ge.maxTokens!==void 0&&(rt.max_tokens=ge.maxTokens);const Xe=N(ge.modelId);return ge.language&&Xe!=="lfm3_audio"&&(rt.language=ge.language),qe.length&&(rt.artifacts=qe.flatMap(Re=>[{id:`${Xe}.question`,kind:"custom",path:Re.questionPath},Re.reply])),{model:ge.modelId,request:rt}}function F(ge,Me,Fe){const qe={};typeof Fe.text=="string"&&(qe.replyText=Fe.text);let rt=null;typeof Fe.audio=="string"&&(rt=new Blob([Rm(Fe.audio)],{type:"audio/wav"}),qe.replyUrl=URL.createObjectURL(rt));const Xe=N(ge),Re=(Array.isArray(Fe.artifacts)?Fe.artifacts:[]).find(Be=>L(Xe,Be));return Re?(qe.reply={id:Re.id,kind:Re.kind,payload:Re.payload},Re.meta&&(qe.reply.meta=Re.meta),qe.cut=Re.meta?.ended==="false",qe.steps=Re.meta?.steps||""):qe.message="The server returned no reply artifact, so this turn does not go with the next question.",aA(ge,Me,qe)&&S()(`New ${Xe==="lfm3_audio"?"LFM3-Audio":"LFM2.5-Audio"} conversation with ${H(ge)}.`),rt}async function z(ge){if(v())throw ge.warning("Stop the recording first.");const Me=_();if(!Me)throw ge.warning("Record or choose source audio first.");e(M).beginTurn(e(P));const Fe=u().find(Ve=>Ve.id===ge.modelId)?.configured===!0,qe=m()?.ui_management===!0&&!Fe||p().some(Ve=>Ve.id===ge.modelId&&Ve.mode==="streaming");qe&&e(P)&&!e(M).unavailable&&document.querySelectorAll("audio, video").forEach(Ve=>Ve.pause()),b(j,e(M).unavailable),b(A,!1);const rt=performance.now(),Xe={...ge.options,return_codes:!0};if(e(d))for(const Ve of f())delete Xe[Ve.name];const{turn:Re,history:Be}=tA(ge.modelId,m()?.ui_management&&!Fe?"loading":"uploading",ge.seed),Oe=new AbortController,Ne=()=>Oe.abort();ge.signal.aborted?Ne():ge.signal.addEventListener("abort",Ne),C=Oe;const Ye=Oe.signal;let Ue="load";try{await ge.ensureLoaded("streaming"),U(Ye),Ue="read",Kl(Re,{state:"uploading",live:qe}),ge.setStatus("Uploading the question…");const Ve=await mr(Me);U(Ye),Ue="upload";const _t=await Os(Ve,Ye);U(Ye),Ue="run";const mt=T(ge,Xe,_t,Be);Kl(Re,{state:"waiting",questionPath:_t,questionUrl:URL.createObjectURL(Ve)}),ge.setStatus(qe?"Waiting for the reply…":"Waiting for the whole reply: this server runs the entry offline, so the reply does not stream.");let ot;if(qe){let nt=0,gt=!0;for await(const dt of Am(mt,Ye)){if(dt.type==="task.stream.done"){ot=dt.result;continue}const It=dt.event,Ut=It.partial_text,Rt=typeof Ut?.text=="string"?Ut.text:"";let ya=Re.firstAudioMs;if(gt&&typeof It.audio=="string")try{const xa=Eb(Rm(It.audio));nt+=xa.samples.length/xa.sampleRate;const pa=e(M).push(xa.samples,xa.sampleRate);ya===null&&(ya=performance.now()-rt+(pa??0)*1e3,b(A,e(M).blocked),e(A)&&e(M).stop())}catch(xa){gt=!1,e(M).stop(),e(P)&&(b(j,!0),S()(`Live playback stopped: ${xa instanceof Error?xa.message:String(xa)}`))}(Re.state!=="streaming"||Rt||ya!==Re.firstAudioMs)&&Kl(Re,{state:"streaming",replyText:Re.replyText+Rt,firstAudioMs:ya}),ge.setStatus(gt?`Streaming the reply: ${Math.floor(nt)} s`:"Streaming the reply…")}}else ot=await Ql(mt,Ye);U(Ye);const it=F(ge.modelId,Re,ot);return _()===Me&&y()(),{audio:it,text:Re.replyText,json:I(ot)}}catch(Ve){if(e(M).stop(),Ye.aborted||Ve?.name==="AbortError")throw Kl(Re,{state:"stopped",message:"Stopped before the reply finished; this turn is not part of the conversation."}),Ve?.name==="AbortError"?Ve:new DOMException("The turn was stopped.","AbortError");if(Ve instanceof gb){const mt="The connection closed before the reply finished; this turn is not part of the conversation.";throw Kl(Re,{state:"stopped",message:mt}),new Error(mt)}let _t=Ve instanceof Error?Ve.message:String(Ve);throw Ue==="read"?_t=`Could not read the question: ${_t}`:Ue==="upload"?_t=`Upload failed: ${_t}`:Ue==="run"&&Be.some(mt=>_t.includes(mt.questionPath))&&(_t+=" The server no longer has the questions this conversation uploaded, as after a restart; start a new conversation."),Kl(Re,{state:"failed",message:_t}),new Error(_t)}finally{ge.signal.removeEventListener("abort",Ne),C===Oe&&(C=null),e(M).endTurn()}}function D(){h()||(e(M).stop(),eA())}function Q(ge){h()||e(l)||Kl(ge,{leftOut:!ge.leftOut})}function X(){e(M).stop()}function Z(ge){return ge.state==="loading"?"loading the model":ge.state!=="done"?ge.state:ge.leftOut?"left out":ge.cut?"cut at max_tokens":"done"}function ue(ge){const Me=[`seed ${ge.seed}`];return ge.firstAudioMs!==null&&Me.push(`first audio ${(ge.firstAudioMs/1e3).toFixed(2)} s`),ge.steps&&Me.push(`${ge.steps} steps`),ge.live||Me.push("not streamed"),Me.join(" · ")}Qn(()=>q()(z)),Ns(()=>{C?.abort(),e(M).close()}),Ee(()=>i(),()=>{b(r,i().turns)}),Ee(()=>i(),()=>{b(o,i().modelId)}),Ee(()=>(e(r),e(o),Y(g())),()=>{b(l,e(r).length>0&&e(o)!==g())}),Ee(()=>(e(l),e(r)),()=>{b(c,e(l)?0:zb(e(r)).length)}),Ee(()=>i(),()=>{E(i())}),Ee(()=>Y(f()),()=>{b(d,f().some(ge=>ge.name==="audio_chunk_mode"))}),Ee(()=>(Y(g()),e(R),e(M)),()=>{g()!==e(R)&&(b(R,g()),e(M).stop())}),Ee(()=>(e(P),e(M)),()=>{e(P)||e(M).stop()}),bn(),en();var de=_A();re("play",Mp,X,!0);var ae=k(de),V=k(ae),pe=$(k(V),2),Ce=k(pe,!0);w(pe),w(V);var ce=$(V,2),Te=k(ce);{var ye=ge=>{var Me=nA();re("click",Me,X),J(ge,Me)};_e(Te,ge=>{e(B)&&ge(ye)})}var Ie=$(Te,2);w(ce),w(ae);var Je=$(ae,2);{var tt=ge=>{var Me=sA(),Fe=k(Me);w(Me),ne((qe,rt)=>W(Fe,`These turns are with ${qe??""}. Run starts a new conversation with ${rt??""}.`),[()=>(e(o),x(()=>H(e(o)))),()=>(Y(g()),x(()=>H(g())))]),J(ge,Me)};_e(Je,ge=>{e(l)&&ge(tt)})}var De=$(Je,2);{var le=ge=>{var Me=rA();J(ge,Me)};_e(De,ge=>{e(d)&&ge(le)})}var xe=$(De,2);{var Ke=ge=>{var Me=pA();Mt(Me,7,()=>e(r),Fe=>Fe.key,(Fe,qe,rt)=>{var Xe=fA();let Re;var Be=k(Xe),Oe=k(Be),Ne=k(Oe);w(Oe);var Ye=$(Oe,2);let Ue;var Ve=k(Ye,!0);w(Ye);var _t=$(Ye,2),mt=k(_t,!0);w(_t);var ot=$(_t,2);{var it=vt=>{var zt=oA(),Lt=k(zt,!0);w(zt),ne(()=>{zt.disabled=h()||e(l),he(zt,"aria-label",(e(qe),Y(e(rt)),x(()=>`${e(qe).leftOut?"Include":"Leave out"} turn ${e(rt)+1}`))),W(Lt,(e(qe),x(()=>e(qe).leftOut?"Include":"Leave out")))}),re("click",zt,()=>Q(e(qe))),J(vt,zt)};_e(ot,vt=>{e(qe),x(()=>e(qe).state==="done"&&e(qe).reply)&&vt(it)})}w(Be);var nt=$(Be,2),gt=$(k(nt),2);{var dt=vt=>{var zt=lA();ne(()=>{he(zt,"src",(e(qe),x(()=>e(qe).questionUrl))),he(zt,"aria-label",`Turn ${e(rt)+1} question`)}),J(vt,zt)},It=vt=>{var zt=cA();J(vt,zt)};_e(gt,vt=>{e(qe),x(()=>e(qe).questionUrl)?vt(dt):vt(It,-1)})}w(nt);var Ut=$(nt,2),Rt=$(k(Ut),2),ya=k(Rt),xa=k(ya,!0);w(ya);var pa=$(ya,2);{var et=vt=>{var zt=dA(),Lt=k(zt),ma=$(Lt,2);w(zt),ne(()=>{he(Lt,"src",(e(qe),x(()=>e(qe).replyUrl))),he(Lt,"aria-label",`Turn ${e(rt)+1} reply`),he(ma,"href",(e(qe),x(()=>e(qe).replyUrl))),he(ma,"download",`${e(o)}-turn-${e(rt)+1}-reply.wav`)}),J(vt,zt)};_e(pa,vt=>{e(qe),x(()=>e(qe).replyUrl)&&vt(et)})}w(Rt),w(Ut);var pt=$(Ut,2);{var ht=vt=>{var zt=uA(),Lt=k(zt,!0);w(zt),ne(()=>W(Lt,(e(qe),x(()=>e(qe).message)))),J(vt,zt)};_e(pt,vt=>{e(qe),x(()=>e(qe).message)&&vt(ht)})}w(Xe),ne((vt,zt)=>{he(Xe,"data-state",(e(qe),x(()=>e(qe).state))),Re=ba(Xe,1,"svelte-18zfjku",null,Re,{"left-out":e(qe).leftOut}),W(Ne,`Turn ${e(rt)+1}`),Ue=ba(Ye,1,"badge svelte-18zfjku",null,Ue,{bad:e(qe).state==="failed"||e(qe).state==="stopped"}),W(Ve,vt),W(mt,zt),W(xa,(e(qe),x(()=>e(qe).replyText||(e(qe).state==="done"?"(no text)":"…"))))},[()=>(e(qe),x(()=>Z(e(qe)))),()=>(e(qe),x(()=>ue(e(qe))))]),J(Fe,Xe)}),w(Me),qi(Me,Fe=>b(G,Fe),()=>e(G)),J(ge,Me)},fe=ge=>{var Me=mA();J(ge,Me)};_e(xe,ge=>{e(r),x(()=>e(r).length)?ge(Ke):ge(fe,-1)})}var we=$(xe,2),me=k(we);Dt(me),qt(3),w(we);var be=$(we,2);{var ke=ge=>{var Me=gA();J(ge,Me)},$e=ge=>{var Me=hA();J(ge,Me)};_e(be,ge=>{e(j)?ge(ke):e(A)&&ge($e,1)})}w(de),ne(()=>{W(Ce,e(c)?`${e(c)} earlier ${e(c)===1?"turn goes":"turns go"} with the next question`:"The next question starts the conversation"),Ie.disabled=(Y(h()),e(r),x(()=>h()||!e(r).length))}),re("click",Ie,D),Wp(me,()=>e(P),ge=>b(P,ge)),J(a,de),Bi(),s()}var vA=ie('<button type="button" class="svelte-4cgukj">Clear</button>'),bA=ie('<img alt="LiveAvatar reference" class="svelte-4cgukj"/>'),yA=ie('<small class="svelte-4cgukj">Uploading reference image…</small>'),wA=ie('<small class="error svelte-4cgukj"> </small>'),kA=ie('<button class="danger" type="button">Stop recording</button> <span class="recording-dot">Recording microphone…</span>',1),xA=ie("<span> </span>"),SA=ie('<button type="button">Record microphone</button> <button type="button">Clear file</button> <!>',1),TA=ie("<option> </option>"),$A=ie('<select class="svelte-4cgukj"></select>'),qA=ie('<div class="range-control svelte-4cgukj"><input type="range" class="svelte-4cgukj"/> <output class="svelte-4cgukj"> </output></div>'),AA=ie('<input class="svelte-4cgukj"/>'),CA=ie('<div><label class="svelte-4cgukj"> </label> <!></div>'),GA=ie('<label class="toggle svelte-4cgukj"><input type="checkbox" class="svelte-4cgukj"/> <span></span> </label>'),FA=ie('<label class="svelte-4cgukj"> </label> <input type="number" class="svelte-4cgukj"/>',1),MA=ie('<div class="field svelte-4cgukj"><!></div>'),zA=ie('<div class="liveavatar-form svelte-4cgukj"><div class="reference-image-field svelte-4cgukj"><label for="liveavatar-reference-image" class="svelte-4cgukj">Reference image <span class="svelte-4cgukj">required</span></label> <input id="liveavatar-reference-image" class="file-native svelte-4cgukj" type="file" accept="image/png,image/jpeg,image/webp"/> <div class="reference-image-actions svelte-4cgukj"><label class="file-picker" for="liveavatar-reference-image">Choose image</label> <span class="svelte-4cgukj"> </span> <!></div> <!> <!> <!></div> <div class="source-audio-field svelte-4cgukj"><label for="liveavatar-source-audio" class="svelte-4cgukj">Driving audio <span class="svelte-4cgukj">required</span></label> <input id="liveavatar-source-audio" class="file-native svelte-4cgukj" type="file" accept="audio/*"/> <label class="file-picker svelte-4cgukj" for="liveavatar-source-audio"><strong>Choose file</strong><span class="svelte-4cgukj"> </span></label> <div class="media-actions"><!></div> <!></div> <div class="control-grid svelte-4cgukj"></div> <details class="svelte-4cgukj"><summary class="svelte-4cgukj">Memory and execution</summary> <div class="control-grid memory-grid svelte-4cgukj"></div></details></div>');function EA(a,t){Ri(t,!1);const i=K(),n=K();let s=Se(t,"busy",8,!1),r=Se(t,"loraUploading",12,!1),o=Se(t,"paramSpecs",24,()=>[]),l=Se(t,"advancedValues",24,()=>({})),c=Se(t,"setParameterValue",8,()=>{}),d=Se(t,"sourceFile",8,null),g=Se(t,"sourceRecording",8,!1),h=Se(t,"sourceRecordingBlocked",8,!1),m=Se(t,"setSourceFile",8,()=>{}),p=Se(t,"startSourceRecording",8,()=>{}),u=Se(t,"stopSourceRecording",8,()=>{});const f=["generation_mode","height","width","num_frames","num_clips","num_inference_steps","guidance_scale","shift","negative_prompt"],_=["sage_attention","memory_saver","batched_cfg","fused_cfg","denoiser_layerwise","denoiser_layerwise_batch","target_cache_blocks","vae_cache_f16","vae_encoder_chunk_size","vae_decoder_tile_size","denoiser_weight_streaming"];let v=K(null),y=K(null),S=K(null),q=K(""),M=K(""),P=null;function B(le,xe){const Ke=o().find(fe=>fe.name===le);Ke&&c()(Ke,xe)}function A(){P?.abort(),P=null,r(!1),b(v,null),b(M,""),e(q)&&URL.revokeObjectURL(e(q)),b(q,""),e(y)&&Ct(y,e(y).value=""),B("reference_image_path","")}async function j(le){if(le){P?.abort(),b(M,""),b(v,le),e(q)&&URL.revokeObjectURL(e(q)),b(q,URL.createObjectURL(le)),r(!0),P=new AbortController;try{const xe=await Oc(le,P.signal);B("reference_image_path",xe)}catch(xe){P.signal.aborted||(b(M,xe instanceof Error?xe.message:String(xe)),B("reference_image_path",""))}finally{r(!1),P=null}}}function G(le){m()(le)}function C(){e(S)&&Ct(S,e(S).value=""),m()(null)}Ns(()=>{P?.abort(),e(q)&&URL.revokeObjectURL(e(q))}),Ee(()=>Y(o()),()=>{b(i,f.map(le=>o().find(xe=>xe.name===le)).filter(le=>le!==void 0))}),Ee(()=>Y(o()),()=>{b(n,_.map(le=>o().find(xe=>xe.name===le)).filter(le=>le!==void 0))}),bn(),en();var R=zA(),H=k(R),E=$(k(H),2);qi(E,le=>b(y,le),()=>e(y));var U=$(E,2),N=$(k(U),2),L=k(N,!0);w(N);var I=$(N,2);{var T=le=>{var xe=vA();ne(()=>xe.disabled=s()),re("click",xe,A),J(le,xe)};_e(I,le=>{e(v)&&le(T)})}w(U);var F=$(U,2);{var z=le=>{var xe=bA();ne(()=>he(xe,"src",e(q))),J(le,xe)};_e(F,le=>{e(q)&&le(z)})}var D=$(F,2);{var Q=le=>{var xe=yA();J(le,xe)};_e(D,le=>{r()&&le(Q)})}var X=$(D,2);{var Z=le=>{var xe=wA(),Ke=k(xe,!0);w(xe),ne(()=>W(Ke,e(M))),J(le,xe)};_e(X,le=>{e(M)&&le(Z)})}w(H);var ue=$(H,2),de=$(k(ue),2);qi(de,le=>b(S,le),()=>e(S));var ae=$(de,2),V=$(k(ae)),pe=k(V,!0);w(V),w(ae);var Ce=$(ae,2),ce=k(Ce);{var Te=le=>{var xe=kA(),Ke=xt(xe);qt(2),re("click",Ke,function(...fe){u()?.apply(this,fe)}),J(le,xe)},ye=le=>{var xe=SA(),Ke=xt(xe),fe=$(Ke,2),we=$(fe,2);{var me=be=>{var ke=xA(),$e=k(ke,!0);w(ke),ne(()=>W($e,(Y(d()),x(()=>d().name)))),J(be,ke)};_e(we,be=>{d()&&be(me)})}ne(()=>{Ke.disabled=h(),fe.disabled=!d()}),re("click",Ke,function(...be){p()?.apply(this,be)}),re("click",fe,C),J(le,xe)};_e(ce,le=>{g()?le(Te):le(ye,-1)})}w(Ce);var Ie=$(Ce,2);os(Ie,{get file(){return d()},kind:"audio",label:"Audio preview"}),w(ue);var Je=$(ue,2);Mt(Je,5,()=>e(i),Qt,(le,xe)=>{var Ke=CA();let fe;var we=k(Ke),me=k(we,!0);w(we);var be=$(we,2);{var ke=Me=>{var Fe=$A();Mt(Fe,5,()=>(e(xe),x(()=>e(xe).choices||[])),Qt,(rt,Xe)=>{var Re=TA(),Be=k(Re,!0);w(Re);var Oe={};ne(()=>{W(Be,e(Xe)),Oe!==(Oe=e(Xe))&&(Re.value=(Re.__value=e(Xe))??"")}),J(rt,Re)}),w(Fe);var qe;Vn(Fe),ne(rt=>{he(Fe,"id",(e(xe),x(()=>"liveavatar-"+e(xe).name))),qe!==(qe=rt)&&(Fe.value=(Fe.__value=rt)??"",An(Fe,rt))},[()=>(Y(l()),e(xe),x(()=>String(l()[e(xe).name]??e(xe).default??"")))]),re("change",Fe,rt=>c()(e(xe),rt.currentTarget.value)),J(Me,Fe)},$e=Me=>{var Fe=qA(),qe=k(Fe);Dt(qe);var rt=$(qe,2),Xe=k(rt,!0);w(rt),w(Fe),ne((Re,Be)=>{he(qe,"id",(e(xe),x(()=>"liveavatar-"+e(xe).name))),he(qe,"min",(e(xe),x(()=>e(xe).minimum))),he(qe,"max",(e(xe),x(()=>e(xe).maximum))),he(qe,"step",(e(xe),x(()=>e(xe).step))),Gi(qe,Re),W(Xe,Be)},[()=>(Y(l()),e(xe),x(()=>Number(l()[e(xe).name]??e(xe).default))),()=>(Y(l()),e(xe),x(()=>String(l()[e(xe).name])))]),re("input",qe,Re=>c()(e(xe),Re.currentTarget.valueAsNumber)),J(Me,Fe)},ge=Me=>{var Fe=AA();Dt(Fe),ne(qe=>{he(Fe,"id",(e(xe),x(()=>"liveavatar-"+e(xe).name))),he(Fe,"type",(e(xe),x(()=>e(xe).type==="number"?"number":"text"))),he(Fe,"min",(e(xe),x(()=>e(xe).minimum))),he(Fe,"max",(e(xe),x(()=>e(xe).maximum))),he(Fe,"step",(e(xe),x(()=>e(xe).step))),Gi(Fe,qe)},[()=>(Y(l()),e(xe),x(()=>String(l()[e(xe).name]??e(xe).default??"")))]),re("input",Fe,qe=>c()(e(xe),e(xe).type==="number"?qe.currentTarget.valueAsNumber:qe.currentTarget.value)),J(Me,Fe)};_e(be,Me=>{e(xe),x(()=>e(xe).type==="choice")?Me(ke):(e(xe),x(()=>e(xe).type==="slider")?Me($e,1):Me(ge,-1))})}w(Ke),ne(Me=>{fe=ba(Ke,1,"field svelte-4cgukj",null,fe,{wide:e(xe).type==="text"}),he(we,"for",(e(xe),x(()=>"liveavatar-"+e(xe).name))),W(me,Me)},[()=>(e(xe),x(()=>e(xe).label||e(xe).name.replace(/_/g," ")))]),J(le,Ke)}),w(Je);var tt=$(Je,2),De=$(k(tt),2);Mt(De,5,()=>e(n),Qt,(le,xe)=>{var Ke=MA(),fe=k(Ke);{var we=be=>{var ke=GA(),$e=k(ke);Dt($e);var ge=$($e,3,!0);w(ke),ne((Me,Fe)=>{he(ke,"for",(e(xe),x(()=>"liveavatar-"+e(xe).name))),he($e,"id",(e(xe),x(()=>"liveavatar-"+e(xe).name))),Dl($e,Me),W(ge,Fe)},[()=>(Y(l()),e(xe),x(()=>!!l()[e(xe).name])),()=>(e(xe),x(()=>e(xe).label||e(xe).name.replace(/_/g," ")))]),re("change",$e,Me=>c()(e(xe),Me.currentTarget.checked)),J(be,ke)},me=be=>{var ke=FA(),$e=xt(ke),ge=k($e,!0);w($e);var Me=$($e,2);Dt(Me),ne((Fe,qe)=>{he($e,"for",(e(xe),x(()=>"liveavatar-"+e(xe).name))),W(ge,Fe),he(Me,"id",(e(xe),x(()=>"liveavatar-"+e(xe).name))),he(Me,"min",(e(xe),x(()=>e(xe).minimum))),he(Me,"max",(e(xe),x(()=>e(xe).maximum))),he(Me,"step",(e(xe),x(()=>e(xe).step))),Gi(Me,qe)},[()=>(e(xe),x(()=>e(xe).label||e(xe).name.replace(/_/g," "))),()=>(Y(l()),e(xe),x(()=>Number(l()[e(xe).name]??e(xe).default)))]),re("input",Me,Fe=>c()(e(xe),Fe.currentTarget.valueAsNumber)),J(be,ke)};_e(fe,be=>{e(xe),x(()=>e(xe).type==="bool")?be(we):be(me,-1)})}w(Ke),J(le,Ke)}),w(De),w(tt),w(R),ne(()=>{E.disabled=s()||r(),W(L,(e(v),x(()=>e(v)?.name||"No image selected"))),de.disabled=s()||g(),W(pe,(Y(d()),x(()=>d()?.name||"No file chosen")))}),re("change",E,le=>j(le.currentTarget.files?.[0]||null)),re("change",de,le=>G(le.currentTarget.files?.[0]||null)),J(a,R),Bi()}var Rb=ie("<option> </option>"),Bb=ie('<small class="svelte-15djq8z"> </small>'),UA=ie('<div class="yue2-field svelte-15djq8z"><label class="svelte-15djq8z"> </label> <select></select> <!></div>'),Pb=ie('<span class="yue2-error svelte-15djq8z" role="alert"> </span>'),RA=ie(`<div class="lora-fields"><div class="yue2-field svelte-15djq8z"><label for="param-ar_lora" class="svelte-15djq8z">AR LoRA adapter</label> <input id="param-ar_lora" type="text" placeholder="Server path (.safetensors)"/> <input id="yue2-ar-lora-file" class="file file-native" type="file" accept=".safetensors"/> <div class="media-actions"><button type="button"> </button> <button type="button">Clear</button></div> <small class="svelte-15djq8z">LoRA requirements vary. Read the original adapter's documentation for usage instructions.</small> <!></div> <div class="yue2-field svelte-15djq8z"><label for="param-ar_lora_scale" class="svelte-15djq8z">AR LoRA strength</label> <input id="param-ar_lora_scale" type="number" step="0.1"/></div></div>`),BA=ie('<div class="lora-fields"><div class="yue2-field svelte-15djq8z"><label for="param-nar_lora" class="svelte-15djq8z">NAR LoRA adapter</label> <input id="param-nar_lora" type="text" placeholder="Server path (.safetensors)"/> <input id="yue2-nar-lora-file" class="file file-native" type="file" accept=".safetensors"/> <div class="media-actions"><button type="button"> </button> <button type="button">Clear</button></div> <!> <small class="svelte-15djq8z">Unfused NAR adapter for acoustic detail; relative paths resolve against the model root. Reload the model after changing this value.</small></div> <div class="yue2-field svelte-15djq8z"><label for="param-nar_lora_scale" class="svelte-15djq8z">NAR LoRA strength</label> <input id="param-nar_lora_scale" type="number" step="0.1"/></div></div> <small>Scales the LoRA deltas only; any full vae2llm/llm2vae projection replacement in the adapter stays at full strength.</small>',1),PA=ie("<!> <!>",1),jA=ie("<select></select>"),Bm=ie('<div class="yue2-range svelte-15djq8z"><input type="range"/> <output class="svelte-15djq8z"> </output></div>'),NA=ie("<input/>"),OA=ie('<div><label class="svelte-15djq8z"> </label> <!> <!></div>'),DA=ie("<span> </span>"),jb=ie('<span class="yue2-error svelte-15djq8z"> </span>'),IA=ie('<div class="yue2-field svelte-15djq8z"><label for="param-abc_file" class="svelte-15djq8z"> </label> <input id="param-abc_file" type="text"/></div>'),LA=ie('<span class="svelte-15djq8z">Extract or paste ABC to preview the score.</span>'),Nb=ie('<input type="number"/>'),Ob=ie('<div class="yue2-field svelte-15djq8z"><label class="svelte-15djq8z"> </label> <!></div>'),VA=ie('<div class="model-form yue2-form svelte-15djq8z"><div class="yue2-field wide svelte-15djq8z"><label for="lyrics" class="svelte-15djq8z"> <span class="svelte-15djq8z"> </span></label> <textarea id="lyrics" rows="5" placeholder="[Verse] ... [Chorus] ..."></textarea></div> <div class="yue2-grid yue2-grid-components svelte-15djq8z"><div class="yue2-field svelte-15djq8z"><label for="seed" class="svelte-15djq8z"> <span class="svelte-15djq8z"> </span></label> <input id="seed" type="number" min="-1" max="4294967295" step="1"/></div> <!></div> <!> <div class="yue2-grid yue2-grid-core svelte-15djq8z"></div> <details class="yue2-details svelte-15djq8z"><summary class="svelte-15djq8z">Yue2 ABC conditioning <span> </span></summary> <div class="yue2-cover svelte-15djq8z"><section class="yue2-cover-card svelte-15djq8z"><div class="yue2-cover-head svelte-15djq8z"><div><strong class="svelte-15djq8z">Cover source</strong> <small class="svelte-15djq8z">Use SheetSage2 + MERT2 to extract an editable ABC score from a song.</small></div> <button type="button" class="svelte-15djq8z"> </button></div> <label class="yue2-unload-toggle svelte-15djq8z"><input type="checkbox" role="switch" class="svelte-15djq8z"/> <span>Unload SheetSage2 after conversion</span></label> <small class="yue2-error svelte-15djq8z">Warning: VRAM may remain in use after unloading.</small> <input id="yue2-cover-audio" class="file file-native" type="file" accept="audio/*"/> <label class="file-picker yue2-cover-picker svelte-15djq8z" for="yue2-cover-audio"><strong>Choose source song</strong> <span> </span></label> <div class="media-actions"><button type="button">Clear</button> <!> <!></div> <!></section> <section class="yue2-cover-card svelte-15djq8z"><div class="yue2-cover-head svelte-15djq8z"><div><strong class="svelte-15djq8z">ABC score editor</strong> <small class="svelte-15djq8z">Edit the extracted score here. The sheet preview updates from this ABC.</small></div></div> <textarea id="param-abc" rows="8" placeholder="X:1 T:Cover melody M:4/4 L:1/8 K:C C D E F | G A B c |"></textarea> <!></section> <section class="yue2-cover-card yue2-sheet-card svelte-15djq8z"><div class="yue2-cover-head svelte-15djq8z"><div><strong class="svelte-15djq8z">Sheet preview</strong> <small class="svelte-15djq8z">Rendered from the editable ABC score.</small></div></div> <div class="yue2-sheet-preview svelte-15djq8z"><!></div> <!></section></div></details> <details class="yue2-details svelte-15djq8z"><summary class="svelte-15djq8z">Yue2 semantic sampling <span> </span></summary> <div class="yue2-grid svelte-15djq8z"></div></details> <details class="yue2-details svelte-15djq8z"><summary class="svelte-15djq8z">Yue2 ABC planner sampling <span> </span></summary> <div class="yue2-grid svelte-15djq8z"></div></details></div>');function HA(a,t){Ri(t,!1);const i=K(),n=K(),s=K(),r=K(),o=K();let l=Se(t,"lyrics",12,""),c=Se(t,"seed",12,1234),d=Se(t,"loraUploading",12,!1),g=Se(t,"busy",8,!1),h=Se(t,"paramSpecs",24,()=>[]),m=Se(t,"advancedValues",24,()=>({})),p=Se(t,"catalogEntries",24,()=>[]),u=Se(t,"loadedModels",24,()=>[]),f=Se(t,"server",8,null),_=Se(t,"modelPathFor",8,Qe=>Qe.path),v=Se(t,"loadTargetFor",8),y=Se(t,"loadOptionsFor",8,Qe=>Qe.load_options||{}),S=Se(t,"sessionOptionsFor",8,Qe=>Qe.session_options||{}),q=Se(t,"refreshModels",8,async()=>{}),M=Se(t,"log",8,()=>{}),P=Se(t,"tr",8,(Qe,Ge,bt=Qe)=>bt),B=Se(t,"localizedParameterText",8,(Qe,Ge)=>Ge==="label"?Qe.name:""),A=Se(t,"setParameterValue",8,()=>{});const j=["main_gguf","vae_gguf"],G=["style","cot","guidance_scale","num_inference_steps"],C=["abc","abc_file"],R=["semantic_temperature","semantic_top_p","semantic_top_k","semantic_repetition_penalty","semantic_penalty_window","semantic_min_tokens","semantic_max_tokens"],H=["abc_temperature","abc_top_p","abc_top_k","abc_repetition_penalty","abc_penalty_window","abc_min_tokens","abc_max_tokens"];let E=K(null),U=K(null),N=K(null),L=K(""),I=K(""),T=null;Ns(()=>T?.abort());async function F(Qe,Ge){if(!Qe)return;const bt=Vt=>{b(Ge==="ar"?L:I,Vt)};if(b(L,""),b(I,""),!Qe.name.toLowerCase().endsWith(".safetensors")){bt(`Select an unfused ${Ge.toUpperCase()} .safetensors adapter.`);return}d(!0),T=new AbortController;try{const Vt=await Oc(Qe,T.signal);ye(Ge==="ar"?"ar_lora":"nar_lora",Vt),M()(`YuE2 ${Ge.toUpperCase()} LoRA selected: ${Qe.name}`)}catch(Vt){T.signal.aborted||bt(Vt instanceof Error?Vt.message:String(Vt))}finally{d(!1),T=null,e(U)&&Ct(U,e(U).value=""),e(N)&&Ct(N,e(N).value="")}}let z=K(null),D=K(!1);const Q="audiocpp.ui.yue2.unloadSheetSageAfterConversion";let X=K(!0);Qn(()=>{b(X,localStorage.getItem(Q)!=="false")});let Z=K(""),ue=K(""),de=K(""),ae=K(null),V="",pe=K(""),Ce=null;function ce(Qe,Ge){return Qe.map(bt=>Ge.find(Vt=>Vt.name===bt)).filter(bt=>bt!==void 0)}function Te(Qe){return h().find(Ge=>Ge.name===Qe)}function ye(Qe,Ge){const bt=Te(Qe);bt&&A()(bt,Ge)}function Ie(Qe){try{return atob(Qe)}catch{return Qe}}function Je(Qe){if(typeof Qe.text=="string"&&Qe.text.trim())return Qe.text;const Ge=Array.isArray(Qe.artifacts)?Qe.artifacts:[];for(const bt of Ge){if(!bt||typeof bt!="object")continue;const Vt=bt,ea=String(Vt.meta?.format||Vt.meta?.extension||Vt.id||"");if(/abc|score/i.test(ea)&&typeof Vt.payload=="string")return Ie(Vt.payload)}return""}function tt(){return p().find(Qe=>Qe.family==="sheetsage2")||null}async function De(Qe){if(u().some(ea=>ea.id===Qe.id&&ea.loaded))return;const Ge=await Nc();if(Ge.find(ea=>ea.id===Qe.id&&ea.loaded))return;if(!f()?.ui_management){if(!Ge.some(ea=>ea.id===Qe.id))throw new Error("SheetSage2 is not registered. Add SheetSage2 to server config.");return}const Vt=await v()(Qe);await mf({id:Qe.id,path:Vt?.model_path??_()(Qe),family:Vt?.family??Qe.family,task:Qe.task,mode:Qe.mode||"offline",load_options:y()(Qe),session_options:S()(Qe)})}async function le(){if(!e(E)||e(D))return;b(D,!0),b(ue,""),b(Z,"Preparing SheetSage2 cover score transcription...");const Qe=e(X);let Ge=null;try{const bt=tt();if(!bt)throw new Error("SheetSage2 is not available in the model catalog.");await De(bt),Ge=bt.id,await q()(),b(Z,"Uploading source song...");const Vt=await Oc(e(E));b(Z,"Transcribing source song to ABC with SheetSage2...");const ea=await Ql({model:bt.id,request:{audio:Vt,options:{}}}),Ba=Je(ea);if(!Ba.trim())throw new Error("SheetSage2 did not return an ABC score.");b(de,Ba),ye("abc",Ba),ye("abc_file",""),ye("cot","melody"),b(Z,"ABC score imported. Review/edit the sheet before generating the cover."),M()("SheetSage2 cover score imported into Yue2 ABC conditioning.")}catch(bt){b(ue,bt instanceof Error?bt.message:String(bt)),b(Z,""),M()(`SheetSage2 cover transcription failed: ${e(ue)}`)}finally{if(Qe&&Ge){try{f()?.ui_management?await mo(Ge):await yn("/v1/tasks/unload_models",{method:"POST",body:JSON.stringify({model_ids:[Ge]})}),M()("SheetSage2 unloaded after cover transcription.")}catch(bt){const Vt=`SheetSage2 unload failed: ${bt instanceof Error?bt.message:String(bt)}`;b(ue,[e(ue),Vt].filter(Boolean).join(" ")),M()(Vt)}try{await q()()}catch(bt){const Vt=`Model status refresh failed: ${bt instanceof Error?bt.message:String(bt)}`;b(ue,[e(ue),Vt].filter(Boolean).join(" ")),M()(Vt)}}b(D,!1)}}function xe(){b(E,null),e(z)&&Ct(z,e(z).value="")}function Ke(Qe){b(de,Qe),ye("abc",Qe),Qe.trim()&&ye("abc_file","")}async function fe(Qe){const Ge=Qe.trim();if(e(ae)){if(!Ge){e(ae).replaceChildren(),V="",b(pe,"");return}if(Ge!==V&&(await Fs(),!!e(ae)))try{Ce||(Ce=(await Ho(()=>Promise.resolve().then(()=>KU),void 0,mn&&mn.tagName.toUpperCase()==="SCRIPT"&&mn.src||new URL("_app/immutable/bundle.RICyrw4S.js",document.baseURI).href)).renderAbc),e(ae).replaceChildren(),Ce(e(ae),Ge,{add_classes:!0,responsive:"resize"}),V=Ge,b(pe,"")}catch(bt){e(ae).replaceChildren(),V="",b(pe,bt instanceof Error?bt.message:String(bt))}}}Ee(()=>Y(h()),()=>{b(i,ce(j,h()))}),Ee(()=>Y(h()),()=>{b(n,ce(G,h()))}),Ee(()=>Y(h()),()=>{b(s,ce(C,h()))}),Ee(()=>Y(h()),()=>{b(r,ce(R,h()))}),Ee(()=>Y(h()),()=>{b(o,ce(H,h()))}),Ee(()=>(Y(m()),e(de),e(D)),()=>{String(m().abc||"")!==e(de)&&!e(D)&&b(de,String(m().abc||""))}),Ee(()=>e(de),()=>{fe(e(de))}),bn(),en();var we=VA(),me=k(we),be=k(me),ke=k(be),$e=$(ke),ge=k($e,!0);w($e),w(be);var Me=$(be,2);nn(Me),w(me);var Fe=$(me,2),qe=k(Fe),rt=k(qe),Xe=k(rt),Re=$(Xe),Be=k(Re,!0);w(Re),w(rt);var Oe=$(rt,2);Dt(Oe),w(qe);var Ne=$(qe,2);Mt(Ne,1,()=>e(i),Qt,(Qe,Ge)=>{var bt=UA(),Vt=k(bt),ea=k(Vt,!0);w(Vt);var Ba=$(Vt,2);Mt(Ba,5,()=>(e(Ge),x(()=>e(Ge).choices||[])),Qt,(Jt,ci)=>{var Hi=Rb(),Ka=k(Hi,!0);w(Hi);var ca={};ne(()=>{W(Ka,e(ci)),ca!==(ca=e(ci))&&(Hi.value=(Hi.__value=e(ci))??"")}),J(Jt,Hi)}),w(Ba);var ai;Vn(Ba);var Ti=$(Ba,2);{var Ht=Jt=>{var ci=Bb(),Hi=k(ci,!0);w(ci),ne(Ka=>W(Hi,Ka),[()=>(Y(B()),e(Ge),Y(P()),x(()=>B()(e(Ge),"info",P())))]),J(Jt,ci)},Ga=oi(()=>(Y(B()),e(Ge),Y(P()),x(()=>B()(e(Ge),"info",P()))));_e(Ti,Jt=>{e(Ga)&&Jt(Ht)})}w(bt),ne((Jt,ci)=>{he(Vt,"for",(e(Ge),x(()=>"param-"+e(Ge).name))),W(ea,Jt),he(Ba,"id",(e(Ge),x(()=>"param-"+e(Ge).name))),ai!==(ai=ci)&&(Ba.value=(Ba.__value=ci)??"",An(Ba,ci))},[()=>(Y(B()),e(Ge),Y(P()),x(()=>B()(e(Ge),"label",P()))),()=>(Y(m()),e(Ge),x(()=>String(m()[e(Ge).name]??"")))]),re("change",Ba,Jt=>A()(e(Ge),Jt.currentTarget.value)),J(Qe,bt)}),w(Fe);var Ye=$(Fe,2);{var Ue=Qe=>{{let Ge=Yt(()=>(Y(m()),x(()=>+!!m().ar_lora+ +!!m().nar_lora)));zm(Qe,{get selected(){return e(Ge)},children:(bt,Vt)=>{var ea=PA(),Ba=xt(ea);{var ai=ci=>{var Hi=RA(),Ka=k(Hi),ca=$(k(Ka),2);Dt(ca);var Bt=$(ca,2);qi(Bt,zi=>b(U,zi),()=>e(U));var ve=$(Bt,2),Le=k(ve),kt=k(Le,!0);w(Le);var jt=$(Le,2);w(ve);var ja=$(ve,4);{var ee=zi=>{var xi=Pb(),xn=k(xi,!0);w(xi),ne(()=>W(xn,e(L))),J(zi,xi)};_e(ja,zi=>{e(L)&&zi(ee)})}w(Ka);var Ua=$(Ka,2),Ii=$(k(Ua),2);Dt(Ii),w(Ua),w(Hi),ne((zi,xi)=>{ca.disabled=g()||d(),Gi(ca,zi),Bt.disabled=g()||d(),Le.disabled=g()||d(),W(kt,d()?"Uploading...":"Choose AR LoRA"),jt.disabled=(Y(g()),Y(d()),Y(m()),x(()=>g()||d()||!m().ar_lora)),Ii.disabled=(Y(g()),Y(d()),Y(m()),x(()=>g()||d()||!m().ar_lora)),Gi(Ii,xi)},[()=>(Y(m()),x(()=>String(m().ar_lora??""))),()=>(Y(m()),x(()=>Number(m().ar_lora_scale??1)))]),re("input",ca,zi=>ye("ar_lora",zi.currentTarget.value.trim())),re("change",Bt,zi=>F(zi.currentTarget.files?.[0]||null,"ar")),re("click",Le,()=>e(U)?.click()),re("click",jt,()=>{ye("ar_lora",""),b(L,"")}),re("change",Ii,zi=>{Number.isFinite(zi.currentTarget.valueAsNumber)&&ye("ar_lora_scale",zi.currentTarget.valueAsNumber)}),J(ci,Hi)},Ti=oi(()=>x(()=>Te("ar_lora")));_e(Ba,ci=>{e(Ti)&&ci(ai)})}var Ht=$(Ba,2);{var Ga=ci=>{var Hi=BA(),Ka=xt(Hi),ca=k(Ka),Bt=$(k(ca),2);Dt(Bt);var ve=$(Bt,2);qi(ve,xi=>b(N,xi),()=>e(N));var Le=$(ve,2),kt=k(Le),jt=k(kt,!0);w(kt);var ja=$(kt,2);w(Le);var ee=$(Le,2);{var Ua=xi=>{var xn=Pb(),is=k(xn,!0);w(xn),ne(()=>W(is,e(I))),J(xi,xn)};_e(ee,xi=>{e(I)&&xi(Ua)})}qt(2),w(ca);var Ii=$(ca,2),zi=$(k(Ii),2);Dt(zi),w(Ii),w(Ka),qt(2),ne((xi,xn)=>{Bt.disabled=g()||d(),Gi(Bt,xi),ve.disabled=g()||d(),kt.disabled=g()||d(),W(jt,d()?"Uploading...":"Choose NAR LoRA"),ja.disabled=(Y(g()),Y(d()),Y(m()),x(()=>g()||d()||!m().nar_lora)),zi.disabled=(Y(g()),Y(m()),x(()=>g()||!m().nar_lora)),Gi(zi,xn)},[()=>(Y(m()),x(()=>String(m().nar_lora??""))),()=>(Y(m()),x(()=>Number(m().nar_lora_scale??1)))]),re("input",Bt,xi=>ye("nar_lora",xi.currentTarget.value.trim())),re("change",ve,xi=>F(xi.currentTarget.files?.[0]||null,"nar")),re("click",kt,()=>e(N)?.click()),re("click",ja,()=>{ye("nar_lora",""),b(I,"")}),re("change",zi,xi=>{Number.isFinite(xi.currentTarget.valueAsNumber)&&ye("nar_lora_scale",xi.currentTarget.valueAsNumber)}),J(ci,Hi)},Jt=oi(()=>x(()=>Te("nar_lora")));_e(Ht,ci=>{e(Jt)&&ci(Ga)})}J(bt,ea)},$$slots:{default:!0}})}},Ve=oi(()=>x(()=>Te("ar_lora")||Te("nar_lora")));_e(Ye,Qe=>{e(Ve)&&Qe(Ue)})}var _t=$(Ye,2);Mt(_t,5,()=>e(n),Qt,(Qe,Ge)=>{var bt=OA();let Vt;var ea=k(bt),Ba=k(ea,!0);w(ea);var ai=$(ea,2);{var Ti=Ka=>{var ca=jA();Mt(ca,5,()=>(e(Ge),x(()=>e(Ge).choices||[])),Qt,(ve,Le)=>{var kt=Rb(),jt=k(kt,!0);w(kt);var ja={};ne(()=>{W(jt,e(Le)),ja!==(ja=e(Le))&&(kt.value=(kt.__value=e(Le))??"")}),J(ve,kt)}),w(ca);var Bt;Vn(ca),ne(ve=>{he(ca,"id",(e(Ge),x(()=>"param-"+e(Ge).name))),Bt!==(Bt=ve)&&(ca.value=(ca.__value=ve)??"",An(ca,ve))},[()=>(Y(m()),e(Ge),x(()=>String(m()[e(Ge).name]??"")))]),re("change",ca,ve=>A()(e(Ge),ve.currentTarget.value)),J(Ka,ca)},Ht=Ka=>{var ca=Bm(),Bt=k(ca);Dt(Bt);var ve=$(Bt,2),Le=k(ve,!0);w(ve),w(ca),ne((kt,jt)=>{he(Bt,"id",(e(Ge),x(()=>"param-"+e(Ge).name))),he(Bt,"min",(e(Ge),x(()=>e(Ge).minimum))),he(Bt,"max",(e(Ge),x(()=>e(Ge).maximum))),he(Bt,"step",(e(Ge),x(()=>e(Ge).step))),Gi(Bt,kt),W(Le,jt)},[()=>(Y(m()),e(Ge),x(()=>Number(m()[e(Ge).name]??e(Ge).default))),()=>(Y(m()),e(Ge),x(()=>String(m()[e(Ge).name])))]),re("input",Bt,kt=>A()(e(Ge),kt.currentTarget.valueAsNumber)),J(Ka,ca)},Ga=Ka=>{var ca=NA();Dt(ca),ne((Bt,ve)=>{he(ca,"id",(e(Ge),x(()=>"param-"+e(Ge).name))),he(ca,"type",(e(Ge),x(()=>e(Ge).type==="number"?"number":"text"))),he(ca,"min",(e(Ge),x(()=>e(Ge).minimum))),he(ca,"max",(e(Ge),x(()=>e(Ge).maximum))),he(ca,"step",(e(Ge),x(()=>e(Ge).step))),Gi(ca,Bt),he(ca,"placeholder",ve)},[()=>(Y(m()),e(Ge),x(()=>String(m()[e(Ge).name]??""))),()=>(Y(B()),e(Ge),Y(P()),x(()=>B()(e(Ge),"placeholder",P())))]),re("input",ca,Bt=>A()(e(Ge),e(Ge).type==="number"?Bt.currentTarget.valueAsNumber:Bt.currentTarget.value)),J(Ka,ca)};_e(ai,Ka=>{e(Ge),x(()=>e(Ge).type==="choice")?Ka(Ti):(e(Ge),x(()=>e(Ge).type==="slider")?Ka(Ht,1):Ka(Ga,-1))})}var Jt=$(ai,2);{var ci=Ka=>{var ca=Bb(),Bt=k(ca,!0);w(ca),ne(ve=>W(Bt,ve),[()=>(Y(B()),e(Ge),Y(P()),x(()=>B()(e(Ge),"info",P())))]),J(Ka,ca)},Hi=oi(()=>(Y(B()),e(Ge),Y(P()),x(()=>B()(e(Ge),"info",P()))));_e(Jt,Ka=>{e(Hi)&&Ka(ci)})}w(bt),ne(Ka=>{Vt=ba(bt,1,"yue2-field svelte-15djq8z",null,Vt,{wide:e(Ge).type==="text"}),he(ea,"for",(e(Ge),x(()=>"param-"+e(Ge).name))),W(Ba,Ka)},[()=>(Y(B()),e(Ge),Y(P()),x(()=>B()(e(Ge),"label",P())))]),J(Qe,bt)}),w(_t);var mt=$(_t,2),ot=k(mt),it=$(k(ot)),nt=k(it,!0);w(it),w(ot);var gt=$(ot,2),dt=k(gt),It=k(dt),Ut=$(k(It),2),Rt=k(Ut,!0);w(Ut),w(It);var ya=$(It,2),xa=k(ya);Dt(xa),qt(2),w(ya);var pa=$(ya,4);qi(pa,Qe=>b(z,Qe),()=>e(z));var et=$(pa,2),pt=$(k(et),2),ht=k(pt,!0);w(pt),w(et);var vt=$(et,2),zt=k(vt),Lt=$(zt,2);{var ma=Qe=>{var Ge=DA(),bt=k(Ge,!0);w(Ge),ne(()=>W(bt,e(Z))),J(Qe,Ge)};_e(Lt,Qe=>{e(Z)&&Qe(ma)})}var na=$(Lt,2);{var Ta=Qe=>{var Ge=jb(),bt=k(Ge,!0);w(Ge),ne(()=>W(bt,e(ue))),J(Qe,Ge)};_e(na,Qe=>{e(ue)&&Qe(Ta)})}w(vt);var Qa=$(vt,2);{let Qe=Yt(()=>(Y(P()),x(()=>P()("file.preview"))));os(Qa,{get file(){return e(E)},kind:"audio",get label(){return e(Qe)}})}w(dt);var li=$(dt,2),hi=$(k(li),2);nn(hi);var fa=$(hi,2);{var ti=Qe=>{var Ge=IA(),bt=k(Ge),Vt=k(bt,!0);w(bt);var ea=$(bt,2);Dt(ea),w(Ge),ne((Ba,ai,Ti)=>{W(Vt,Ba),Gi(ea,ai),he(ea,"placeholder",Ti)},[()=>(Y(B()),Y(P()),x(()=>B()(Te("abc_file"),"label",P()))),()=>(Y(m()),x(()=>String(m().abc_file??""))),()=>(Y(B()),Y(P()),x(()=>B()(Te("abc_file"),"placeholder",P())))]),re("input",ea,Ba=>ye("abc_file",Ba.currentTarget.value)),J(Qe,Ge)},Di=oi(()=>x(()=>Te("abc_file")));_e(fa,Qe=>{e(Di)&&Qe(ti)})}w(li);var Ai=$(li,2),ui=$(k(Ai),2),Ia=k(ui);{var Yi=Qe=>{var Ge=LA();J(Qe,Ge)},hn=oi(()=>(e(de),x(()=>!e(de).trim())));_e(Ia,Qe=>{e(hn)&&Qe(Yi)})}w(ui),qi(ui,Qe=>b(ae,Qe),()=>e(ae));var un=$(ui,2);{var rn=Qe=>{var Ge=jb(),bt=k(Ge,!0);w(Ge),ne(()=>W(bt,e(pe))),J(Qe,Ge)};_e(un,Qe=>{e(pe)&&Qe(rn)})}w(Ai),w(gt),w(mt);var He=$(mt,2),Gt=k(He),Pa=$(k(Gt)),Sa=k(Pa,!0);w(Pa),w(Gt);var ua=$(Gt,2);Mt(ua,5,()=>e(r),Qt,(Qe,Ge)=>{var bt=Ob(),Vt=k(bt),ea=k(Vt,!0);w(Vt);var Ba=$(Vt,2);{var ai=Ht=>{var Ga=Bm(),Jt=k(Ga);Dt(Jt);var ci=$(Jt,2),Hi=k(ci,!0);w(ci),w(Ga),ne((Ka,ca)=>{he(Jt,"id",(e(Ge),x(()=>"param-"+e(Ge).name))),he(Jt,"min",(e(Ge),x(()=>e(Ge).minimum))),he(Jt,"max",(e(Ge),x(()=>e(Ge).maximum))),he(Jt,"step",(e(Ge),x(()=>e(Ge).step))),Gi(Jt,Ka),W(Hi,ca)},[()=>(Y(m()),e(Ge),x(()=>Number(m()[e(Ge).name]??e(Ge).default))),()=>(Y(m()),e(Ge),x(()=>String(m()[e(Ge).name])))]),re("input",Jt,Ka=>A()(e(Ge),Ka.currentTarget.valueAsNumber)),J(Ht,Ga)},Ti=Ht=>{var Ga=Nb();Dt(Ga),ne(Jt=>{he(Ga,"id",(e(Ge),x(()=>"param-"+e(Ge).name))),he(Ga,"min",(e(Ge),x(()=>e(Ge).minimum))),he(Ga,"max",(e(Ge),x(()=>e(Ge).maximum))),he(Ga,"step",(e(Ge),x(()=>e(Ge).step))),Gi(Ga,Jt)},[()=>(Y(m()),e(Ge),x(()=>String(m()[e(Ge).name]??"")))]),re("input",Ga,Jt=>A()(e(Ge),Jt.currentTarget.valueAsNumber)),J(Ht,Ga)};_e(Ba,Ht=>{e(Ge),x(()=>e(Ge).type==="slider")?Ht(ai):Ht(Ti,-1)})}w(bt),ne(Ht=>{he(Vt,"for",(e(Ge),x(()=>"param-"+e(Ge).name))),W(ea,Ht)},[()=>(Y(B()),e(Ge),Y(P()),x(()=>B()(e(Ge),"label",P())))]),J(Qe,bt)}),w(ua),w(He);var Ot=$(He,2),Ea=k(Ot),wa=$(k(Ea)),$a=k(wa,!0);w(wa),w(Ea);var qa=$(Ea,2);Mt(qa,5,()=>e(o),Qt,(Qe,Ge)=>{var bt=Ob(),Vt=k(bt),ea=k(Vt,!0);w(Vt);var Ba=$(Vt,2);{var ai=Ht=>{var Ga=Bm(),Jt=k(Ga);Dt(Jt);var ci=$(Jt,2),Hi=k(ci,!0);w(ci),w(Ga),ne((Ka,ca)=>{he(Jt,"id",(e(Ge),x(()=>"param-"+e(Ge).name))),he(Jt,"min",(e(Ge),x(()=>e(Ge).minimum))),he(Jt,"max",(e(Ge),x(()=>e(Ge).maximum))),he(Jt,"step",(e(Ge),x(()=>e(Ge).step))),Gi(Jt,Ka),W(Hi,ca)},[()=>(Y(m()),e(Ge),x(()=>Number(m()[e(Ge).name]??e(Ge).default))),()=>(Y(m()),e(Ge),x(()=>String(m()[e(Ge).name])))]),re("input",Jt,Ka=>A()(e(Ge),Ka.currentTarget.valueAsNumber)),J(Ht,Ga)},Ti=Ht=>{var Ga=Nb();Dt(Ga),ne(Jt=>{he(Ga,"id",(e(Ge),x(()=>"param-"+e(Ge).name))),he(Ga,"min",(e(Ge),x(()=>e(Ge).minimum))),he(Ga,"max",(e(Ge),x(()=>e(Ge).maximum))),he(Ga,"step",(e(Ge),x(()=>e(Ge).step))),Gi(Ga,Jt)},[()=>(Y(m()),e(Ge),x(()=>String(m()[e(Ge).name]??"")))]),re("input",Ga,Jt=>A()(e(Ge),Jt.currentTarget.valueAsNumber)),J(Ht,Ga)};_e(Ba,Ht=>{e(Ge),x(()=>e(Ge).type==="slider")?Ht(ai):Ht(Ti,-1)})}w(bt),ne(Ht=>{he(Vt,"for",(e(Ge),x(()=>"param-"+e(Ge).name))),W(ea,Ht)},[()=>(Y(B()),e(Ge),Y(P()),x(()=>B()(e(Ge),"label",P())))]),J(Qe,bt)}),w(qa),w(Ot),w(we),ne((Qe,Ge,bt,Vt,ea)=>{W(ke,`${Qe??""} `),W(ge,Ge),W(Xe,`${bt??""} `),W(Be,Vt),W(nt,(e(s),x(()=>e(s).length))),Ut.disabled=!e(E)||e(D),W(Rt,e(D)?"Transcribing...":"Extract ABC"),Dl(xa,e(X)),xa.disabled=e(D),W(ht,ea),zt.disabled=!e(E)||e(D),Gi(hi,e(de)),W(Sa,(e(r),x(()=>e(r).length))),W($a,(e(o),x(()=>e(o).length)))},[()=>(Y(P()),x(()=>P()("request.lyrics"))),()=>(Y(P()),x(()=>P()("request.optional"))),()=>(Y(P()),x(()=>P()("request.seed"))),()=>(Y(P()),x(()=>P()("request.randomSeed"))),()=>(e(E),Y(P()),x(()=>e(E)?.name||P()("file.none")))]),za(Me,l),za(Oe,c),re("click",Ut,le),re("change",xa,Qe=>{b(X,Qe.currentTarget.checked),localStorage.setItem(Q,String(e(X)))}),re("change",pa,Qe=>b(E,Qe.currentTarget.files?.[0]||null)),re("click",zt,xe),re("input",hi,Qe=>Ke(Qe.currentTarget.value)),J(a,we),Bi()}var WA=ie("<option> </option>"),QA=ie('<label class="svelte-1ntrxhz">Saved voice</label> <select class="svelte-1ntrxhz"><option>Choose from Voices</option><!></select>',1),KA=ie('<button class="icon-button svelte-1ntrxhz" type="button" title="Clear recording" aria-label="Clear recording"><!></button>'),YA=ie('<div class="reference-fields svelte-1ntrxhz"><!> <div class="recording-label svelte-1ntrxhz"><label class="svelte-1ntrxhz">Reference recording</label> <!></div> <input class="file-native" type="file" accept="audio/*"/> <label class="file-picker svelte-1ntrxhz"><!><strong>Choose audio</strong><span class="svelte-1ntrxhz"> </span></label> <!> <label class="svelte-1ntrxhz">Words spoken in the recording <span class="svelte-1ntrxhz">Required with a recording</span></label> <textarea rows="3" placeholder="Enter the exact reference transcript." class="svelte-1ntrxhz"></textarea></div>');function Db(a,t){Ri(t,!1);let i=Se(t,"id",8),n=Se(t,"file",12,null),s=Se(t,"transcript",12,""),r=Se(t,"busy",8,!1),o=Se(t,"savedVoices",24,()=>[]),l=K("");function c(A){b(l,A);const j=o().find(G=>G.id===A);j&&(n(new File([j.audio],`${j.name}.wav`,{type:j.audio.type||"audio/wav"})),s(j.transcript))}en();var d=YA(),g=k(d);{var h=A=>{var j=QA(),G=xt(j),C=$(G,2),R=k(C);R.value=R.__value="";var H=$(R);Mt(H,1,o,Qt,(U,N)=>{var L=WA(),I=k(L,!0);w(L);var T={};ne(()=>{W(I,(e(N),x(()=>e(N).name))),T!==(T=(e(N),x(()=>e(N).id)))&&(L.value=(L.__value=(e(N),x(()=>e(N).id)))??"")}),J(U,L)}),w(C);var E;Vn(C),ne(()=>{he(G,"for",`${i()}-library`),he(C,"id",`${i()}-library`),C.disabled=r(),E!==(E=e(l))&&(C.value=(C.__value=e(l))??"",An(C,e(l)))}),re("change",C,U=>c(U.currentTarget.value)),J(A,j)};_e(g,A=>{Y(o()),x(()=>o().length)&&A(h)})}var m=$(g,2),p=k(m),u=$(p,2);{var f=A=>{var j=KA(),G=k(j);db(G,{size:14}),w(j),ne(()=>j.disabled=r()),re("click",j,()=>{n(null),b(l,"")}),J(A,j)};_e(u,A=>{n()&&A(f)})}w(m);var _=$(m,2),v=$(_,2),y=k(v);CS(y,{size:17});var S=$(y,2),q=k(S,!0);w(S),w(v);var M=$(v,2);os(M,{get file(){return n()},kind:"audio",label:"Reference preview"});var P=$(M,2),B=$(P,2);nn(B),w(d),ne(()=>{he(p,"for",`${i()}-audio`),he(_,"id",`${i()}-audio`),_.disabled=r(),he(v,"for",`${i()}-audio`),W(q,(Y(n()),x(()=>n()?.name||"No recording selected"))),he(P,"for",`${i()}-transcript`),he(B,"id",`${i()}-transcript`),B.disabled=r()}),re("change",_,A=>{n(A.currentTarget.files?.[0]||null),b(l,""),A.currentTarget.value=""}),za(B,s),J(a,d),Bi()}var JA=ie('<section aria-label="Single-voice reference" class="reference-section svelte-z6u13w"><h3 class="svelte-z6u13w"><!>Reference voice (optional)</h3> <!></section> <section class="script-section svelte-z6u13w"><div class="section-heading svelte-z6u13w"><h3 class="svelte-z6u13w"><!>Text to generate</h3> <button type="button" class="example svelte-z6u13w">Example</button></div> <label class="sr-only svelte-z6u13w" for="drama-single-text">Text to generate</label> <textarea id="drama-single-text" rows="6" placeholder="What should this voice say?" class="svelte-z6u13w"></textarea> <div class="text-count svelte-z6u13w"> </div></section>',1),XA=ie('<button type="button"><span class="speaker-number svelte-z6u13w"> </span><span class="speaker-name svelte-z6u13w"> </span> <!></button>'),ZA=ie('<div class="name-row svelte-z6u13w"><div class="svelte-z6u13w"><label for="drama-speaker-name" class="svelte-z6u13w">Speaker name</label><input id="drama-speaker-name" class="svelte-z6u13w"/></div> <button class="icon-button svelte-z6u13w" type="button" aria-label="Remove speaker"><!></button></div> <!>',1),eC=ie("<option> </option>"),tC=ie('<div class="dialogue-turn svelte-z6u13w"><div class="turn-heading svelte-z6u13w"><span class="turn-number svelte-z6u13w"> </span> <label class="sr-only svelte-z6u13w"> </label> <select class="svelte-z6u13w"></select> <div class="turn-actions svelte-z6u13w"><button class="icon-button svelte-z6u13w" type="button" title="Move turn up" aria-label="Move turn up"><!></button> <button class="icon-button svelte-z6u13w" type="button" title="Move turn down" aria-label="Move turn down"><!></button> <button class="icon-button svelte-z6u13w" type="button" title="Remove turn" aria-label="Remove turn"><!></button></div></div> <label class="sr-only svelte-z6u13w"> </label> <textarea rows="2" placeholder="Dialogue for this speaker..." class="svelte-z6u13w"></textarea></div>'),aC=ie('<p class="testing-warning svelte-z6u13w" role="note">Multi-speaker generation is still under testing. Voice assignment and consistency may vary.</p> <section class="cast-section svelte-z6u13w" aria-label="Speaker cast"><div class="section-heading svelte-z6u13w"><h3 class="svelte-z6u13w"><!>Cast <span class="svelte-z6u13w"> </span></h3> <button type="button" class="svelte-z6u13w"><!>Add speaker</button></div> <div class="cast-layout svelte-z6u13w"><div class="cast-list svelte-z6u13w" role="group" aria-label="Speakers"></div> <div class="cast-editor svelte-z6u13w"><!></div></div> <div class="text-count svelte-z6u13w"> </div></section> <section class="script-section svelte-z6u13w" aria-label="Dialogue editor"><div class="section-heading svelte-z6u13w"><h3 class="svelte-z6u13w"><!>Dialogue <span class="svelte-z6u13w"> </span></h3> <button type="button" class="example svelte-z6u13w">Example</button></div> <div class="dialogue-list svelte-z6u13w"></div> <button class="add-turn svelte-z6u13w" type="button"><!>Add turn</button></section>',1),iC=ie('<div class="drama-workspace svelte-z6u13w"><div class="mode-switch svelte-z6u13w" role="group" aria-label="Drama 3 mode"><button><!>Single voice</button> <button><!>Multi-speaker<span class="test-label svelte-z6u13w">Testing</span></button></div> <!></div>');function nC(a,t){Ri(t,!1);const i=K(),n=K();let s=Se(t,"busy",8,!1),r=Se(t,"savedVoices",24,()=>[]),o=Se(t,"setPanelRunner",8,()=>()=>{});const l=16,c=I=>({id:I,name:`Speaker ${I+1}`,file:null,transcript:""});let d=K("single"),g=K(null),h=K(""),m=K(""),p=K([c(0),c(1)]),u=K(0),f=2,_=K([{id:0,speaker:0,text:""},{id:1,speaker:1,text:""}]);function v(){const I=Array.from({length:l},(T,F)=>F).find(T=>!e(p).some(F=>F.id===T));I!==void 0&&(b(p,[...e(p),c(I)]),b(u,I))}function y(I){b(p,e(p).filter(T=>T.id!==I)),b(u,e(p)[0].id)}function S(I,T){const F=[...e(_)];[F[I],F[I+T]]=[F[I+T],F[I]],b(_,F)}function q(){b(_,[...e(_),{id:f++,speaker:e(u),text:""}])}function M(){e(d)==="single"?b(m,"The observatory opens at sunset. Tonight, we will follow the planets across the sky and listen for the first signs of a coming storm."):b(_,[{id:f++,speaker:e(p)[0].id,text:"The observatory opens at sunset. Did you bring the star charts?"},{id:f++,speaker:e(p)[1].id,text:"Yes, and the sky is finally clear. We should have a wonderful view tonight."}])}async function P(I){const T=e(d)==="single",F=e(p).map(ae=>({...ae})),z=e(_).map(ae=>({...ae})),D=e(g),Q=e(h).trim();let X=e(m).trim();if(T){if(D&&!Q)throw I.warning("Enter the words spoken in the reference recording.");if(!X)throw I.warning("Enter the text to generate.")}else{if(!z.length||z.some(V=>!V.text.trim()))throw I.warning("Enter text for every dialogue turn, or remove the empty turns.");const ae=new Set(z.map(V=>V.speaker));if(ae.size<2)throw I.warning("Assign dialogue to at least two different speakers.");for(const V of F.filter(pe=>ae.has(pe.id)))if(!V.file||!V.transcript.trim())throw b(u,V.id),I.warning(`${V.name}: add a reference recording and its exact transcript.`);X=z.map(V=>`<|speaker:${V.speaker}|> ${V.text.trim()}`).join(`
|
||
`)}await I.ensureLoaded("offline");const Z={...I.options},ue={model:I.modelId,input:X,seed:I.seed,response_format:"wav",options:Z};if(I.maxTokens!==void 0&&(ue.max_tokens=I.maxTokens),T)D&&(I.setStatus("Preparing voice reference..."),ue.voice_ref=await Os(await mr(D),I.signal),ue.reference_text=Q);else{I.setStatus("Preparing voice references...");const ae=new Set(z.map(pe=>pe.speaker)),V=[];for(const pe of F.filter(Ce=>ae.has(Ce.id))){const Ce=await mr(pe.file);V.push({text:`<|speaker:${pe.id}|> ${pe.transcript.trim()}`,audio_path:await Os(Ce,I.signal)})}Z.multi_reference_cond=JSON.stringify(V)}I.setStatus(T?D?"Cloning voice...":"Generating speech...":"Generating multi-speaker dialogue...");const de=await hf(ue,I.signal);return{audio:de.blob,text:"",json:JSON.stringify({mode:T?D?"single_voice_clone":"tts":"multi_speaker",speakers:T?1:new Set(z.map(ae=>ae.speaker)).size,seed:I.seed,text_chunk_size:Z.text_chunk_size,wall_ms:de.wallMs,rtf:de.rtf},null,2)}}Qn(()=>o()(P)),Ee(()=>(e(p),e(u)),()=>{b(i,e(p).findIndex(I=>I.id===e(u)))}),Ee(()=>e(p),()=>{b(n,e(p).filter(I=>I.file&&I.transcript.trim()).length)}),bn(),en();var B=iC(),A=k(B),j=k(A);let G;var C=k(j);ff(C,{size:17}),qt(),w(j);var R=$(j,2);let H;var E=k(R);Wl(E,{size:17}),qt(2),w(R),w(A);var U=$(A,2);{var N=I=>{var T=JA(),F=xt(T),z=k(F),D=k(z);ff(D,{size:17}),qt(),w(z);var Q=$(z,2);Db(Q,{id:"drama-single",get busy(){return s()},get savedVoices(){return r()},get file(){return e(g)},set file(ce){b(g,ce)},get transcript(){return e(h)},set transcript(ce){b(h,ce)},$$legacy:!0}),w(F);var X=$(F,2),Z=k(X),ue=k(Z),de=k(ue);Rd(de,{size:17}),qt(),w(ue);var ae=$(ue,2);w(Z);var V=$(Z,4);nn(V);var pe=$(V,2),Ce=k(pe);w(pe),w(X),ne(ce=>{ae.disabled=s(),V.disabled=s(),W(Ce,`${ce??""} characters`)},[()=>(e(m),x(()=>e(m).length.toLocaleString()))]),re("click",ae,M),za(V,()=>e(m),ce=>b(m,ce)),J(I,T)},L=I=>{var T=aC(),F=$(xt(T),2),z=k(F),D=k(z),Q=k(D);Wl(Q,{size:17});var X=$(Q,2),Z=k(X);w(X),w(D);var ue=$(D,2),de=k(ue);Pr(de,{size:15}),qt(),w(ue),w(z);var ae=$(z,2),V=k(ae);Mt(V,5,()=>e(p),me=>me.id,(me,be)=>{var ke=XA();let $e;var ge=k(ke),Me=k(ge,!0);w(ge);var Fe=$(ge),qe=k(Fe,!0);w(Fe);var rt=$(Fe,2);{var Xe=Be=>{km(Be,{size:14,"aria-label":"Reference ready"})},Re=oi(()=>(e(be),x(()=>e(be).file&&e(be).transcript.trim())));_e(rt,Be=>{e(Re)&&Be(Xe)})}w(ke),ne(()=>{ke.disabled=s(),he(ke,"aria-pressed",(e(u),e(be),x(()=>e(u)===e(be).id))),$e=ba(ke,1,"svelte-z6u13w",null,$e,{chosen:e(u)===e(be).id}),W(Me,(e(be),x(()=>e(be).id+1))),W(qe,(e(be),x(()=>e(be).name)))}),re("click",ke,()=>b(u,e(be).id)),J(me,ke)}),w(V);var pe=$(V,2),Ce=k(pe);cv(Ce,()=>e(u),me=>{var be=ZA(),ke=xt(be),$e=k(ke),ge=$(k($e));Dt(ge),w($e);var Me=$($e,2),Fe=k(Me);po(Fe,{size:16}),w(Me),w(ke);var qe=$(ke,2);{let rt=Yt(()=>`drama-speaker-${e(u)}`);Db(qe,{get id(){return e(rt)},get busy(){return s()},get savedVoices(){return r()},get file(){return e(p)[e(i)].file},set file(Xe){Ct(p,e(p)[e(i)].file=Xe)},get transcript(){return e(p)[e(i)].transcript},set transcript(Xe){Ct(p,e(p)[e(i)].transcript=Xe)},$$legacy:!0})}ne((rt,Xe)=>{ge.disabled=s(),he(Me,"title",rt),Me.disabled=Xe},[()=>(e(_),e(u),x(()=>e(_).some(rt=>rt.speaker===e(u))?"Reassign or remove this speaker's dialogue first":"Remove speaker")),()=>(Y(s()),e(p),e(_),e(u),x(()=>s()||e(p).length<=2||e(_).some(rt=>rt.speaker===e(u))))]),za(ge,()=>e(p)[e(i)].name,rt=>Ct(p,e(p)[e(i)].name=rt)),re("click",Me,()=>y(e(u))),J(me,be)}),w(pe),w(ae);var ce=$(ae,2),Te=k(ce);w(ce),w(F);var ye=$(F,2),Ie=k(ye),Je=k(Ie),tt=k(Je);Rd(tt,{size:17});var De=$(tt,2),le=k(De);w(De),w(Je);var xe=$(Je,2);w(Ie);var Ke=$(Ie,2);Mt(Ke,7,()=>e(_),me=>me.id,(me,be,ke)=>{var $e=tC(),ge=k($e),Me=k(ge),Fe=k(Me,!0);w(Me);var qe=$(Me,2),rt=k(qe);w(qe);var Xe=$(qe,2);Mt(Xe,5,()=>e(p),Qt,(it,nt)=>{var gt=eC(),dt=k(gt,!0);w(gt);var It={};ne(()=>{W(dt,(e(nt),x(()=>e(nt).name))),It!==(It=(e(nt),x(()=>e(nt).id)))&&(gt.value=(gt.__value=(e(nt),x(()=>e(nt).id)))??"")}),J(it,gt)}),w(Xe);var Re=$(Xe,2),Be=k(Re),Oe=k(Be);ib(Oe,{size:14}),w(Be);var Ne=$(Be,2),Ye=k(Ne);ab(Ye,{size:14}),w(Ne);var Ue=$(Ne,2),Ve=k(Ue);po(Ve,{size:14}),w(Ue),w(Re),w(ge);var _t=$(ge,2),mt=k(_t);w(_t);var ot=$(_t,2);nn(ot),w($e),ne(it=>{W(Fe,it),he(qe,"for",(e(be),x(()=>`drama-line-speaker-${e(be).id}`))),W(rt,`Turn ${e(ke)+1} speaker`),he(Xe,"id",(e(be),x(()=>`drama-line-speaker-${e(be).id}`))),Xe.disabled=s(),Be.disabled=s()||e(ke)===0,Ne.disabled=(Y(s()),Y(e(ke)),e(_),x(()=>s()||e(ke)===e(_).length-1)),Ue.disabled=s(),he(_t,"for",(e(be),x(()=>`drama-line-${e(be).id}`))),W(mt,`Turn ${e(ke)+1} text`),he(ot,"id",(e(be),x(()=>`drama-line-${e(be).id}`))),ot.disabled=s()},[()=>(Y(e(ke)),x(()=>String(e(ke)+1).padStart(2,"0")))]),rs(Xe,()=>e(be).speaker,it=>(e(be).speaker=it,Zi(()=>e(_)),Zi(()=>{s(),e(p)}))),re("click",Be,()=>S(e(ke),-1)),re("click",Ne,()=>S(e(ke),1)),re("click",Ue,()=>b(_,e(_).filter(it=>it.id!==e(be).id))),za(ot,()=>e(be).text,it=>(e(be).text=it,Zi(()=>e(_)),Zi(()=>{s(),e(p)}))),J(me,$e)}),w(Ke);var fe=$(Ke,2),we=k(fe);Pr(we,{size:15}),qt(),w(fe),w(ye),ne(()=>{W(Z,`${e(p),x(()=>e(p).length)??""} / 16`),ue.disabled=(Y(s()),e(p),x(()=>s()||e(p).length>=l)),W(Te,`${e(n)??""} of ${e(p),x(()=>e(p).length)??""} references ready`),W(le,`${e(_),x(()=>e(_).length)??""} turns`),xe.disabled=s(),fe.disabled=s()}),re("click",ue,v),re("click",xe,M),re("click",fe,q),J(I,T)};_e(U,I=>{e(d)==="single"?I(N):I(L,-1)})}w(B),ne(()=>{he(j,"aria-pressed",e(d)==="single"),j.disabled=s(),G=ba(j,1,"svelte-z6u13w",null,G,{chosen:e(d)==="single"}),he(R,"aria-pressed",e(d)==="multi"),R.disabled=s(),H=ba(R,1,"svelte-z6u13w",null,H,{chosen:e(d)==="multi"})}),re("click",j,()=>b(d,"single")),re("click",R,()=>b(d,"multi")),J(a,B),Bi()}function We(a){if(!a)throw new Error("Assertion failed.")}const sC=Math.PI/180,Pm=180/Math.PI,xf=a=>{const t=(a%360+360)%360;if(t===0||t===90||t===180||t===270)return t;throw new Error(`Invalid rotation ${a}.`)},Ib=[1,0,0,0,1,0,0,0,1],rC=(a,t,i)=>{const[n,s,,r,o]=a,l=Math.abs(n)*t+Math.abs(r)*i,c=Math.abs(s)*t+Math.abs(o)*i;return Sf(Sf(Vb(-t/2,-i/2),a),Vb(l/2,c/2))},oC=a=>{const[t,i]=a,n=Math.atan2(i,lC(a)?-t:t);return xf(Om(n*Pm,90))},lC=a=>{const[t,i,,n,s]=a;return t*s-i*n<0},Lb=a=>{const t=a*sC,i=Math.round(Math.cos(t)),n=Math.round(Math.sin(t));return[i,n,0,-n,i,0,0,0,1]},Vb=(a,t)=>[1,0,0,0,1,0,a,t,1],cC=(a,t)=>[a,0,0,0,t,0,0,0,1],Sf=(a,t)=>{const i=new Array(9);for(let n=0;n<3;n++)for(let s=0;s<3;s++)i[3*n+s]=a[3*n]*t[s]+a[3*n+1]*t[3+s]+a[3*n+2]*t[6+s];return i},dC=(a,t,i,n)=>({rotation:xf(a+(t?-i:i)),flip:t!==n}),Ar=a=>a&&a[a.length-1],go=a=>a>=0&&a<2**32,uC=a=>a>=-2147483648&&a<2**31,Tt=a=>{let t=0;for(;a.readBits(1)===0&&t<32;)t++;if(t>=32)throw new Error("Invalid exponential-Golomb code.");return(1<<t)-1+a.readBits(t)},ho=a=>{const t=Tt(a);return(t&1)===0?-(t>>1):t+1>>1},fC=(a,t,i,n)=>{for(let s=t;s<i;s++){const r=Math.floor(s/8);let o=a[r];const l=7-(s&7);o&=~(1<<l),o|=(n&1<<i-s-1)>>i-s-1<<l,a[r]=o}},zs=a=>a.constructor===Uint8Array?a:ArrayBuffer.isView(a)?new Uint8Array(a.buffer,a.byteOffset,a.byteLength):new Uint8Array(a),jr=a=>a.constructor===DataView?a:ArrayBuffer.isView(a)?new DataView(a.buffer,a.byteOffset,a.byteLength):new DataView(a),pC=typeof globalThis.TextEncoder<"u"?globalThis.TextEncoder:class{constructor(){this.encoding="utf-8"}encode(t=""){const i=new Uint8Array(3*t.length);let n=0;for(let s=0;s<t.length;s++){let r=t.charCodeAt(s);if(r<128)i[n++]=r;else if(r<2048)i[n++]=192|r>>6,i[n++]=128|r&63;else if(r<55296||r>57343)i[n++]=224|r>>12,i[n++]=128|r>>6&63,i[n++]=128|r&63;else{const o=s+1<t.length?t.charCodeAt(s+1):0;r<56320&&o>=56320&&o<=57343?(r=65536+(r-55296<<10)+(o-56320),s++,i[n++]=240|r>>18,i[n++]=128|r>>12&63,i[n++]=128|r>>6&63,i[n++]=128|r&63):(i[n++]=239,i[n++]=191,i[n++]=189)}}return i.slice(0,n)}},ys=new pC,Id={bt709:1,bt470bg:5,smpte170m:6,bt2020:9,smpte432:12},Ld={bt709:1,smpte170m:6,linear:8,"iec61966-2-1":13,pq:16,hlg:18},Vd={rgb:0,bt709:1,bt470bg:5,smpte170m:6,"bt2020-ncl":9},Hb=a=>!a||a.primaries==null&&a.transfer==null&&a.matrix==null&&a.fullRange==null,Tf=a=>a instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&a instanceof SharedArrayBuffer||ArrayBuffer.isView(a);class Wb{constructor(){this.currentPromise=Promise.resolve(),this.pending=0}async acquire(){let t;const i=new Promise(s=>{let r=!1;t=()=>{r||(s(),this.pending--,r=!0)}}),n=this.currentPromise;return this.currentPromise=i,this.pending++,await n,t}}const Qb=(a,t,i)=>{let n=0,s=a.length-1,r=-1;for(;n<=s;){const o=n+(s-n+1)/2|0;i(a[o])<=t?(r=o,n=o+1):s=o-1}return r},jm=()=>{let a,t;return{promise:new Promise((n,s)=>{a=n,t=s}),resolve:a,reject:t}},_o=a=>{throw new Error(`Unexpected value: ${a}`)},mC=(a,t,i)=>{const n=a.getUint8(t),s=a.getUint8(t+1),r=a.getUint8(t+2);return n<<16|s<<8|r},Nm=(a,t,i,n)=>{i=i>>>0,i=i&16777215,n?(a.setUint8(t,i&255),a.setUint8(t+1,i>>>8&255),a.setUint8(t+2,i>>>16&255)):(a.setUint8(t,i>>>16&255),a.setUint8(t+1,i>>>8&255),a.setUint8(t+2,i&255))},gC=(a,t,i,n)=>{i=ls(i,-8388608,8388607),i<0&&(i=i+16777216&16777215),Nm(a,t,i,n)},ls=(a,t,i)=>Math.max(t,Math.min(i,a)),hC=(a,t,i)=>a+(t-a)*i,Kb="und",Om=(a,t)=>Math.round(a/t)*t,$f=(a,t)=>Math.round(a*t)/t,Yb=(a,t)=>Math.floor(a*t)/t,_C=a=>{let t=0;for(;a!==0;)a&=a-1,t++;return t},vC=/^[a-z]{3}$/,bC=a=>vC.test(a),Xo=1e6*(1+Number.EPSILON),yC=(a,t)=>{const i=a<0?-1:1;a=Math.abs(a);let n=0,s=1,r=1,o=0,l=a;for(;;){const c=Math.floor(l),d=c*r+n,g=c*o+s;if(g>t)return{num:i*r,den:o};if(n=r,s=o,r=d,o=g,l=1/(l-c),!isFinite(l))break}return{num:i*r,den:o}};class Jb{constructor(){this.currentPromise=Promise.resolve()}call(t){return this.currentPromise=this.currentPromise.then(t)}}let Dm=null;const wC=()=>Dm!==null?Dm:Dm=!!(typeof navigator<"u"&&(navigator.vendor?.match(/apple/i)||/AppleWebKit/.test(navigator.userAgent)&&!/Chrome/.test(navigator.userAgent)||/\b(iPad|iPhone|iPod)\b/.test(navigator.userAgent)));let Im=null;const Xb=()=>Im!==null?Im:Im=typeof navigator<"u"&&navigator.userAgent?.includes("Firefox");let Lm=null;const kC=()=>Lm!==null?Lm:Lm=!!(typeof navigator<"u"&&(navigator.vendor?.includes("Google Inc")||/Chrome/.test(navigator.userAgent))),Zb=a=>typeof globalThis.isSecureContext<"u"&&!globalThis.isSecureContext?`${a} is not available in this environment; this may be because this page is running in an insecure context. Try serving your page over HTTPS or use localhost.`:`${a} is not available in this environment.`,xC=(async()=>{})().constructor,Zo=a=>a instanceof xC||a instanceof Promise?!0:typeof a?.then=="function",Vm=function*(a){for(const t in a){const i=a[t];i!==void 0&&(yield{key:t,value:i})}},SC=a=>{switch(a.toLowerCase()){case"image/jpeg":case"image/jpg":return".jpg";case"image/png":return".png";case"image/gif":return".gif";case"image/webp":return".webp";case"image/bmp":return".bmp";case"image/svg+xml":return".svg";case"image/tiff":return".tiff";case"image/avif":return".avif";case"image/x-icon":case"image/vnd.microsoft.icon":return".ico";default:return null}},TC=(a,t)=>{if(a.length!==t.length)return!1;for(let i=0;i<a.length;i++)if(a[i]!==t[i])return!1;return!0},$C=()=>{Symbol.dispose??=Symbol("Symbol.dispose")},ey=a=>typeof a=="number"&&!Number.isNaN(a),qC=(a,t)=>{let i=-1,n=1/0;for(let s=0;s<a.length;s++){const r=t(a[s]);r<n&&(n=r,i=s)}return i},Hm=a=>{We(Number.isInteger(a.num)),We(Number.isInteger(a.den)),We(a.den!==0);let t=Math.abs(a.num),i=Math.abs(a.den);for(;i!==0;){const s=t%i;t=i,i=s}const n=t||1;return{num:a.num/n,den:a.den/n}},Wm=(a,t)=>{if(typeof a!="object"||!a)throw new TypeError(`${t} must be an object.`);if(!Number.isInteger(a.left)||a.left<0)throw new TypeError(`${t}.left must be a non-negative integer.`);if(!Number.isInteger(a.top)||a.top<0)throw new TypeError(`${t}.top must be a non-negative integer.`);if(!Number.isInteger(a.width)||a.width<0)throw new TypeError(`${t}.width must be a non-negative integer.`);if(!Number.isInteger(a.height)||a.height<0)throw new TypeError(`${t}.height must be a non-negative integer.`)},AC=a=>new Promise(t=>setTimeout(t,a)),ty=a=>Array.isArray(a)?a:[a];class Qm{constructor(){this._listeners=new Map}on(t,i,n){this._listeners.has(t)||this._listeners.set(t,new Set);const s={fn:i,once:n?.once??!1};return this._listeners.get(t).add(s),()=>{this._listeners.get(t)?.delete(s)}}_emit(...t){const[i,n]=t,s=this._listeners.get(i);if(s)for(const r of s){try{r.fn(n)}catch(o){console.error(o)}r.once&&s.delete(r)}}}const CC=a=>a!==null&&typeof a=="object"&&Object.getPrototypeOf(a)===Object.prototype&&Object.values(a).every(t=>typeof t=="string");var Nr;(function(a){a[a.Silent=0]="Silent",a[a.Errors=1]="Errors",a[a.Warnings=2]="Warnings",a[a.Info=3]="Info"})(Nr||(Nr={}));class wn{constructor(){}static get level(){return wn._level}static set level(t){if(t!==Nr.Silent&&t!==Nr.Errors&&t!==Nr.Warnings&&t!==Nr.Info)throw new TypeError("Invalid log level. Use one of the values of the LogLevel enum.");wn._level=t}static get _emitter(){return wn._emitterInstance??=new Qm}static on(t,i,n){return wn._emitter.on(t,i,n)}static _error(...t){wn._emitter._emit("error",t),wn._level>=Nr.Errors&&console.error(...t)}static _warn(...t){wn._emitter._emit("warn",t),wn._level>=Nr.Warnings&&console.warn(...t)}static _info(...t){wn._emitter._emit("info",t),wn._level>=Nr.Info&&console.info(...t)}}wn._level=Nr.Info,wn._emitterInstance=null;class ay{constructor(t,i){if(this.data=t,this.mimeType=i,!(t instanceof Uint8Array))throw new TypeError("data must be a Uint8Array.");if(typeof i!="string")throw new TypeError("mimeType must be a string.")}}class iy{constructor(t,i,n,s){if(this.data=t,this.mimeType=i,this.name=n,this.description=s,!(t instanceof Uint8Array))throw new TypeError("data must be a Uint8Array.");if(i!==void 0&&typeof i!="string")throw new TypeError("mimeType, when provided, must be a string.");if(n!==void 0&&typeof n!="string")throw new TypeError("name, when provided, must be a string.");if(s!==void 0&&typeof s!="string")throw new TypeError("description, when provided, must be a string.")}}const GC=a=>{if(!a||typeof a!="object")throw new TypeError("tags must be an object.");if(a.title!==void 0&&typeof a.title!="string")throw new TypeError("tags.title, when provided, must be a string.");if(a.description!==void 0&&typeof a.description!="string")throw new TypeError("tags.description, when provided, must be a string.");if(a.artist!==void 0&&typeof a.artist!="string")throw new TypeError("tags.artist, when provided, must be a string.");if(a.album!==void 0&&typeof a.album!="string")throw new TypeError("tags.album, when provided, must be a string.");if(a.albumArtist!==void 0&&typeof a.albumArtist!="string")throw new TypeError("tags.albumArtist, when provided, must be a string.");if(a.trackNumber!==void 0&&(!Number.isInteger(a.trackNumber)||a.trackNumber<=0))throw new TypeError("tags.trackNumber, when provided, must be a positive integer.");if(a.tracksTotal!==void 0&&(!Number.isInteger(a.tracksTotal)||a.tracksTotal<=0))throw new TypeError("tags.tracksTotal, when provided, must be a positive integer.");if(a.discNumber!==void 0&&(!Number.isInteger(a.discNumber)||a.discNumber<=0))throw new TypeError("tags.discNumber, when provided, must be a positive integer.");if(a.discsTotal!==void 0&&(!Number.isInteger(a.discsTotal)||a.discsTotal<=0))throw new TypeError("tags.discsTotal, when provided, must be a positive integer.");if(a.genre!==void 0&&typeof a.genre!="string")throw new TypeError("tags.genre, when provided, must be a string.");if(a.date!==void 0&&(!(a.date instanceof Date)||Number.isNaN(a.date.getTime())))throw new TypeError("tags.date, when provided, must be a valid Date.");if(a.beatsPerMinute!==void 0&&(!Number.isInteger(a.beatsPerMinute)||a.beatsPerMinute<=0))throw new TypeError("tags.beatsPerMinute, when provided, must be a positive integer.");if(a.lyrics!==void 0&&typeof a.lyrics!="string")throw new TypeError("tags.lyrics, when provided, must be a string.");if(a.images!==void 0){if(!Array.isArray(a.images))throw new TypeError("tags.images, when provided, must be an array.");for(const t of a.images){if(!t||typeof t!="object")throw new TypeError("Each image in tags.images must be an object.");if(!(t.data instanceof Uint8Array))throw new TypeError("Each image.data must be a Uint8Array.");if(typeof t.mimeType!="string")throw new TypeError("Each image.mimeType must be a string.");if(!["coverFront","coverBack","unknown"].includes(t.kind))throw new TypeError("Each image.kind must be 'coverFront', 'coverBack', or 'unknown'.")}}if(a.comment!==void 0&&typeof a.comment!="string")throw new TypeError("tags.comment, when provided, must be a string.");if(a.raw!==void 0){if(!a.raw||typeof a.raw!="object")throw new TypeError("tags.raw, when provided, must be an object.");for(const t of Object.values(a.raw))if(t!==null&&typeof t!="string"&&!(Array.isArray(t)&&t.every(i=>typeof i=="string"))&&!(t instanceof Uint8Array)&&!(t instanceof ay)&&!(t instanceof iy)&&!CC(t))throw new TypeError("Each value in tags.raw must be a string, string array, Uint8Array, RichImageData, AttachedFile, Record<string, string>, or null.")}},FC=a=>{if(!a||typeof a!="object")throw new TypeError("disposition must be an object.");if(a.default!==void 0&&typeof a.default!="boolean")throw new TypeError("disposition.default must be a boolean.");if(a.primary!==void 0&&typeof a.primary!="boolean")throw new TypeError("disposition.primary must be a boolean.");if(a.forced!==void 0&&typeof a.forced!="boolean")throw new TypeError("disposition.forced must be a boolean.");if(a.original!==void 0&&typeof a.original!="boolean")throw new TypeError("disposition.original must be a boolean.");if(a.commentary!==void 0&&typeof a.commentary!="boolean")throw new TypeError("disposition.commentary must be a boolean.");if(a.hearingImpaired!==void 0&&typeof a.hearingImpaired!="boolean")throw new TypeError("disposition.hearingImpaired must be a boolean.");if(a.visuallyImpaired!==void 0&&typeof a.visuallyImpaired!="boolean")throw new TypeError("disposition.visuallyImpaired must be a boolean.")};class Pn{constructor(t){this.bytes=t,this.pos=0}seekToByte(t){this.pos=8*t}readBit(){const t=Math.floor(this.pos/8),i=this.bytes[t]??0,n=7-(this.pos&7),s=(i&1<<n)>>n;return this.pos++,s}readBits(t){if(t===1)return this.readBit();let i=0;for(let n=0;n<t;n++)i<<=1,i|=this.readBit();return i}writeBits(t,i){const n=this.pos+t;for(let s=this.pos;s<n;s++){const r=Math.floor(s/8);let o=this.bytes[r];const l=7-(s&7);o&=~(1<<l),o|=(i&1<<n-s-1)>>n-s-1<<l,this.bytes[r]=o}this.pos=n}copyBits(t,i){let n=0;for(n;n<t-7;n+=8)this.writeBits(8,i.readBits(8));const s=t-n;s>0&&this.writeBits(s,i.readBits(s))}readAlignedByte(){if(this.pos%8!==0)throw new Error("Bitstream is not byte-aligned.");const t=this.pos/8,i=this.bytes[t]??0;return this.pos+=8,i}skipBits(t){this.pos+=t}getBitsLeft(){return this.bytes.length*8-this.pos}clone(){const t=new Pn(this.bytes);return t.pos=this.pos,t}}const Hd=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],qf=[-1,1,2,3,4,5,6,8],MC=a=>{if(!a||a.byteLength<2)throw new TypeError("AAC description must be at least 2 bytes long.");const t=new Pn(a),i=Km(t),{frequencyIndex:n,sampleRate:s}=Ym(t),r=t.readBits(4);let o=null;r>=1&&r<=7&&(o=qf[r]);let l=i,c=!1,d=s;if(i===5||i===29)c=i===29,d=Ym(t).sampleRate,l=Km(t),l===22&&t.skipBits(4);else for(;t.getBitsLeft()>15;){const g=t.pos;if(t.readBits(11)!==695){t.pos=g+1;continue}Km(t)===5&&t.readBits(1)&&(d=Ym(t).sampleRate,t.getBitsLeft()>11&&t.readBits(11)===1352&&(c=!!t.readBits(1)));break}return o!==null&&o>1&&(c=!1),{objectType:i,coreObjectType:l,frequencyIndex:n,channelConfiguration:r,outputSampleRate:d,outputNumberOfChannels:c&&o===1?2:o}},Km=a=>{const t=a.readBits(5);return t===31?32+a.readBits(6):t},Ym=a=>{const t=a.readBits(4);return t===15?{frequencyIndex:t,sampleRate:a.readBits(24)}:{frequencyIndex:t,sampleRate:t<Hd.length?Hd[t]:null}},Jm=a=>{const t=a.objectType===5||a.objectType===29,i=a.objectType===29,n=t?a.outputSampleRate/2:a.outputSampleRate,s=i?1:a.outputNumberOfChannels,r=qf.indexOf(s);if(r===-1)throw new TypeError(`Unsupported number of channels: ${a.outputNumberOfChannels}`);let o=16;a.objectType>=32&&(o+=6),Xm(n)===15&&(o+=24),t&&(o+=9,Xm(a.outputSampleRate)===15&&(o+=24));const l=Math.ceil(o/8),c=new Uint8Array(l),d=new Pn(c);return ny(d,a.objectType),sy(d,n),d.writeBits(4,r),t&&(sy(d,a.outputSampleRate),ny(d,2)),d.writeBits(3,0),c},ny=(a,t)=>{t<32?a.writeBits(5,t):(a.writeBits(5,31),a.writeBits(6,t-32))},sy=(a,t)=>{const i=Xm(t);a.writeBits(4,i),i===15&&a.writeBits(24,t)},Xm=a=>{const t=Hd.indexOf(a);return t===-1?15:t};const zC=[48e3,44100,32e3],EC=[24e3,22050,16e3];var vo;(function(a){a[a.NON_IDR_SLICE=1]="NON_IDR_SLICE",a[a.SLICE_DPA=2]="SLICE_DPA",a[a.SLICE_DPB=3]="SLICE_DPB",a[a.SLICE_DPC=4]="SLICE_DPC",a[a.IDR=5]="IDR",a[a.SEI=6]="SEI",a[a.SPS=7]="SPS",a[a.PPS=8]="PPS",a[a.AUD=9]="AUD",a[a.SPS_EXT=13]="SPS_EXT"})(vo||(vo={}));var gr;(function(a){a[a.RASL_N=8]="RASL_N",a[a.RASL_R=9]="RASL_R",a[a.BLA_W_LP=16]="BLA_W_LP",a[a.RSV_IRAP_VCL23=23]="RSV_IRAP_VCL23",a[a.VPS_NUT=32]="VPS_NUT",a[a.SPS_NUT=33]="SPS_NUT",a[a.PPS_NUT=34]="PPS_NUT",a[a.AUD_NUT=35]="AUD_NUT",a[a.PREFIX_SEI_NUT=39]="PREFIX_SEI_NUT",a[a.SUFFIX_SEI_NUT=40]="SUFFIX_SEI_NUT"})(gr||(gr={}));const Wd=function*(a){let t=0,i=-1;for(;t<a.length-2;){const n=a.indexOf(0,t);if(n===-1||n>=a.length-2)break;t=n;let s=0;if(t+3<a.length&&a[t+1]===0&&a[t+2]===0&&a[t+3]===1?s=4:a[t+1]===0&&a[t+2]===1&&(s=3),s===0){t++;continue}i!==-1&&t>i&&(yield{offset:i,length:t-i}),i=t+s,t=i}i!==-1&&i<a.length&&(yield{offset:i,length:a.length-i})},ry=function*(a,t){let i=0;const n=new DataView(a.buffer,a.byteOffset,a.byteLength);for(;i+t<=a.length;){let s;t===1?s=n.getUint8(i):t===2?s=n.getUint16(i,!1):t===3?s=mC(n,i):(We(t===4),s=n.getUint32(i,!1)),i+=t,yield{offset:i,length:s},i+=s}},UC=(a,t)=>{if(t.description){const s=(zs(t.description)[4]&3)+1;return ry(a,s)}else return Wd(a)},oy=a=>a&31,Af=a=>{const t=[],i=a.length;for(let n=0;n<i;n++)n+2<i&&a[n]===0&&a[n+1]===0&&a[n+2]===3?(t.push(0,0),n+=2):t.push(a[n]);return new Uint8Array(t)},RC=(a,t)=>{const i=a.reduce((r,o)=>r+t+o.byteLength,0),n=new Uint8Array(i);let s=0;for(const r of a){const o=new DataView(n.buffer,n.byteOffset,n.byteLength);switch(t){case 1:o.setUint8(s,r.byteLength);break;case 2:o.setUint16(s,r.byteLength,!1);break;case 3:Nm(o,s,r.byteLength,!1);break;case 4:o.setUint32(s,r.byteLength,!1);break}s+=t,n.set(r,s),s+=r.byteLength}return n},BC=a=>{try{const t=[],i=[],n=[];for(const l of Wd(a)){const c=a.subarray(l.offset,l.offset+l.length),d=oy(c[0]);d===vo.SPS?t.push(c):d===vo.PPS?i.push(c):d===vo.SPS_EXT&&n.push(c)}if(t.length===0||i.length===0)return null;const s=t[0],r=jC(s);We(r!==null);const o=r.profileIdc===100||r.profileIdc===110||r.profileIdc===122||r.profileIdc===144;return{configurationVersion:1,avcProfileIndication:r.profileIdc,profileCompatibility:r.constraintFlags,avcLevelIndication:r.levelIdc,lengthSizeMinusOne:3,sequenceParameterSets:t,pictureParameterSets:i,chromaFormat:o?r.chromaFormatIdc:null,bitDepthLumaMinus8:o?r.bitDepthLumaMinus8:null,bitDepthChromaMinus8:o?r.bitDepthChromaMinus8:null,sequenceParameterSetExt:o?n:null}}catch(t){return wn._error("Error building AVC Decoder Configuration Record:",t),null}},PC=a=>{const t=[];t.push(a.configurationVersion),t.push(a.avcProfileIndication),t.push(a.profileCompatibility),t.push(a.avcLevelIndication),t.push(252|a.lengthSizeMinusOne&3),t.push(224|a.sequenceParameterSets.length&31);for(const i of a.sequenceParameterSets){const n=i.byteLength;t.push(n>>8),t.push(n&255);for(let s=0;s<n;s++)t.push(i[s])}t.push(a.pictureParameterSets.length);for(const i of a.pictureParameterSets){const n=i.byteLength;t.push(n>>8),t.push(n&255);for(let s=0;s<n;s++)t.push(i[s])}if((a.avcProfileIndication===100||a.avcProfileIndication===110||a.avcProfileIndication===122||a.avcProfileIndication===144)&&a.chromaFormat!==null){We(a.bitDepthLumaMinus8!==null),We(a.bitDepthChromaMinus8!==null),We(a.sequenceParameterSetExt!==null),t.push(252|a.chromaFormat&3),t.push(248|a.bitDepthLumaMinus8&7),t.push(248|a.bitDepthChromaMinus8&7),t.push(a.sequenceParameterSetExt.length);for(const i of a.sequenceParameterSetExt){const n=i.byteLength;t.push(n>>8),t.push(n&255);for(let s=0;s<n;s++)t.push(i[s])}}return new Uint8Array(t)},ly={1:{num:1,den:1},2:{num:12,den:11},3:{num:10,den:11},4:{num:16,den:11},5:{num:40,den:33},6:{num:24,den:11},7:{num:20,den:11},8:{num:32,den:11},9:{num:80,den:33},10:{num:18,den:11},11:{num:15,den:11},12:{num:64,den:33},13:{num:160,den:99},14:{num:4,den:3},15:{num:3,den:2},16:{num:2,den:1}},jC=a=>{try{const t=Af(a),i=new Pn(t);if(i.skipBits(1),i.skipBits(2),i.readBits(5)!==7)return null;const s=i.readAlignedByte(),r=i.readAlignedByte(),o=i.readAlignedByte();Tt(i);let l=1,c=0,d=0,g=0;if((s===100||s===110||s===122||s===244||s===44||s===83||s===86||s===118||s===128)&&(l=Tt(i),l===3&&(g=i.readBits(1)),c=Tt(i),d=Tt(i),i.skipBits(1),i.readBits(1))){for(let N=0;N<(l!==3?8:12);N++)if(i.readBits(1)){const I=N<6?16:64;let T=8,F=8;for(let z=0;z<I;z++){if(F!==0){const D=ho(i);F=(T+D+256)%256}T=F===0?T:F}}}Tt(i);const h=Tt(i);if(h===0)Tt(i);else if(h===1){i.skipBits(1),ho(i),ho(i);const U=Tt(i);for(let N=0;N<U;N++)ho(i)}Tt(i),i.skipBits(1);const m=Tt(i),p=Tt(i),u=16*(m+1),f=16*(p+1);let _=u,v=f;const y=i.readBits(1);if(y||i.skipBits(1),i.skipBits(1),i.readBits(1)){const U=Tt(i),N=Tt(i),L=Tt(i),I=Tt(i);let T,F;if((g===0?l:0)===0)T=1,F=2-y;else{const D=l===3?1:2,Q=l===1?2:1;T=D,F=Q*(2-y)}_-=T*(U+N),v-=F*(L+I)}let q=2,M=2,P=2,B=0,A={num:1,den:1},j=null,G=null,C=null,R=null;const H=i.pos;if(i.readBits(1)){if(i.readBits(1)){const D=i.readBits(8);if(D===255)A={num:i.readBits(16),den:i.readBits(16)};else{const Q=ly[D];Q&&(A=Q)}}i.readBits(1)&&i.skipBits(1),i.readBits(1)&&(i.skipBits(3),B=i.readBits(1),i.readBits(1)&&(q=i.readBits(8),M=i.readBits(8),P=i.readBits(8))),i.readBits(1)&&(Tt(i),Tt(i)),i.readBits(1)&&(i.skipBits(32),i.skipBits(32),i.skipBits(1));const F=i.readBits(1);F&&cy(i);const z=i.readBits(1);z&&cy(i),(F||z)&&i.skipBits(1),i.skipBits(1),C=i.pos,R=i.readBits(1),R&&(i.skipBits(1),Tt(i),Tt(i),Tt(i),Tt(i),j=Tt(i),G=Tt(i))}if(j===null){We(G===null);const U=r&16;if((s===44||s===86||s===100||s===110||s===122||s===244)&&U)j=0,G=0;else{const N=m+1,L=p+1,I=(2-y)*L,T=Gf.find(z=>z.level>=o)??Ar(Gf),F=Math.min(Math.floor(T.maxDpbMbs/(N*I)),16);j=F,G=F}}return We(G!==null),{emulationUnpreventedBytes:t,profileIdc:s,constraintFlags:r,levelIdc:o,frameMbsOnlyFlag:y,chromaFormatIdc:l,bitDepthLumaMinus8:c,bitDepthChromaMinus8:d,codedWidth:u,codedHeight:f,displayWidth:_,displayHeight:v,pixelAspectRatio:A,colourPrimaries:q,matrixCoefficients:P,transferCharacteristics:M,fullRangeFlag:B,numReorderFrames:j,maxDecFrameBuffering:G,vuiParametersFlagBitOffset:H,bitstreamRestrictionFlagBitOffset:C,bitstreamRestrictionFlag:R}}catch(t){return wn._error("Error parsing AVC SPS:",t),null}},cy=a=>{const t=Tt(a);a.skipBits(4),a.skipBits(4);for(let i=0;i<=t;i++)Tt(a),Tt(a),a.skipBits(1);a.skipBits(5),a.skipBits(5),a.skipBits(5),a.skipBits(5)},NC=(a,t)=>{if(t.description){const s=(zs(t.description)[21]&3)+1;return ry(a,s)}else return Wd(a)},Zm=a=>a>>1&63,OC=a=>{try{const t=new Pn(Af(a));t.skipBits(16),t.readBits(4);const i=t.readBits(3),n=t.readBits(1),{general_profile_space:s,general_tier_flag:r,general_profile_idc:o,general_profile_compatibility_flags:l,general_constraint_indicator_flags:c,general_level_idc:d}=IC(t,i);Tt(t);const g=Tt(t);let h=0;g===3&&(h=t.readBits(1));const m=Tt(t),p=Tt(t);let u=m,f=p;if(t.readBits(1)){const R=Tt(t),H=Tt(t),E=Tt(t),U=Tt(t);let N=1,L=1;const I=h===0?g:0;I===1?(N=2,L=2):I===2&&(N=2,L=1),u-=(R+H)*N,f-=(E+U)*L}const _=Tt(t),v=Tt(t);Tt(t);const S=t.readBits(1)?0:i;let q=0;for(let R=S;R<=i;R++)Tt(t),q=Tt(t),Tt(t);Tt(t),Tt(t),Tt(t),Tt(t),Tt(t),Tt(t),t.readBits(1)&&t.readBits(1)&&LC(t),t.skipBits(1),t.skipBits(1),t.readBits(1)&&(t.skipBits(4),t.skipBits(4),Tt(t),Tt(t),t.skipBits(1));const M=Tt(t);if(VC(t,M),t.readBits(1)){const R=Tt(t);for(let H=0;H<R;H++)Tt(t),t.skipBits(1)}t.skipBits(1),t.skipBits(1);let P=2,B=2,A=2,j=0,G=0,C={num:1,den:1};if(t.readBits(1)){const R=WC(t,i);C=R.pixelAspectRatio,P=R.colourPrimaries,B=R.transferCharacteristics,A=R.matrixCoefficients,j=R.fullRangeFlag,G=R.minSpatialSegmentationIdc}return{displayWidth:u,displayHeight:f,pixelAspectRatio:C,colourPrimaries:P,transferCharacteristics:B,matrixCoefficients:A,fullRangeFlag:j,maxDecFrameBuffering:q+1,spsMaxSubLayersMinus1:i,spsTemporalIdNestingFlag:n,generalProfileSpace:s,generalTierFlag:r,generalProfileIdc:o,generalProfileCompatibilityFlags:l,generalConstraintIndicatorFlags:c,generalLevelIdc:d,chromaFormatIdc:g,bitDepthLumaMinus8:_,bitDepthChromaMinus8:v,minSpatialSegmentationIdc:G}}catch(t){return wn._error("Error parsing HEVC SPS:",t),null}},DC=a=>{try{const t=[],i=[],n=[],s=[];for(const d of Wd(a)){const g=a.subarray(d.offset,d.offset+d.length),h=Zm(g[0]);h===gr.VPS_NUT?t.push(g):h===gr.SPS_NUT?i.push(g):h===gr.PPS_NUT?n.push(g):(h===gr.PREFIX_SEI_NUT||h===gr.SUFFIX_SEI_NUT)&&s.push(g)}if(i.length===0||n.length===0)return null;const r=OC(i[0]);if(!r)return null;let o=0;if(n.length>0){const d=n[0],g=new Pn(Af(d));g.skipBits(16),Tt(g),Tt(g),g.skipBits(1),g.skipBits(1),g.skipBits(3),g.skipBits(1),g.skipBits(1),Tt(g),Tt(g),ho(g),g.skipBits(1),g.skipBits(1),g.readBits(1)&&Tt(g),ho(g),ho(g),g.skipBits(1),g.skipBits(1),g.skipBits(1),g.skipBits(1);const h=g.readBits(1),m=g.readBits(1);!h&&!m?o=0:h&&!m?o=2:!h&&m?o=3:o=0}const l=[...t.length?[{arrayCompleteness:1,nalUnitType:gr.VPS_NUT,nalUnits:t}]:[],...i.length?[{arrayCompleteness:1,nalUnitType:gr.SPS_NUT,nalUnits:i}]:[],...n.length?[{arrayCompleteness:1,nalUnitType:gr.PPS_NUT,nalUnits:n}]:[],...s.length?[{arrayCompleteness:1,nalUnitType:Zm(s[0][0]),nalUnits:s}]:[]];return{configurationVersion:1,generalProfileSpace:r.generalProfileSpace,generalTierFlag:r.generalTierFlag,generalProfileIdc:r.generalProfileIdc,generalProfileCompatibilityFlags:r.generalProfileCompatibilityFlags,generalConstraintIndicatorFlags:r.generalConstraintIndicatorFlags,generalLevelIdc:r.generalLevelIdc,minSpatialSegmentationIdc:r.minSpatialSegmentationIdc,parallelismType:o,chromaFormatIdc:r.chromaFormatIdc,bitDepthLumaMinus8:r.bitDepthLumaMinus8,bitDepthChromaMinus8:r.bitDepthChromaMinus8,avgFrameRate:0,constantFrameRate:0,numTemporalLayers:r.spsMaxSubLayersMinus1+1,temporalIdNested:r.spsTemporalIdNestingFlag,lengthSizeMinusOne:3,arrays:l}}catch(t){return wn._error("Error building HEVC Decoder Configuration Record:",t),null}},IC=(a,t)=>{const i=a.readBits(2),n=a.readBits(1),s=a.readBits(5);let r=0;for(let g=0;g<32;g++)r=r<<1|a.readBits(1);const o=new Uint8Array(6);for(let g=0;g<6;g++)o[g]=a.readBits(8);const l=a.readBits(8),c=[],d=[];for(let g=0;g<t;g++)c.push(a.readBits(1)),d.push(a.readBits(1));if(t>0)for(let g=t;g<8;g++)a.skipBits(2);for(let g=0;g<t;g++)c[g]&&a.skipBits(88),d[g]&&a.skipBits(8);return{general_profile_space:i,general_tier_flag:n,general_profile_idc:s,general_profile_compatibility_flags:r,general_constraint_indicator_flags:o,general_level_idc:l}},LC=a=>{for(let t=0;t<4;t++)for(let i=0;i<(t===3?2:6);i++)if(!a.readBits(1))Tt(a);else{const s=Math.min(64,1<<4+(t<<1));t>1&&ho(a);for(let r=0;r<s;r++)ho(a)}},VC=(a,t)=>{const i=[];for(let n=0;n<t;n++)i[n]=HC(a,n,t,i)},HC=(a,t,i,n)=>{let s=0,r=0,o=0;if(t!==0&&(r=a.readBits(1)),r){if(t===i){const c=Tt(a);o=t-(c+1)}else o=t-1;a.readBits(1),Tt(a);const l=n[o]??0;for(let c=0;c<=l;c++)a.readBits(1)||a.readBits(1);s=n[o]}else{const l=Tt(a),c=Tt(a);for(let d=0;d<l;d++)Tt(a),a.readBits(1);for(let d=0;d<c;d++)Tt(a),a.readBits(1);s=l+c}return s},WC=(a,t)=>{let i=2,n=2,s=2,r=0,o=0,l={num:1,den:1};if(a.readBits(1)){const c=a.readBits(8);if(c===255)l={num:a.readBits(16),den:a.readBits(16)};else{const d=ly[c];d&&(l=d)}}return a.readBits(1)&&a.readBits(1),a.readBits(1)&&(a.readBits(3),r=a.readBits(1),a.readBits(1)&&(i=a.readBits(8),n=a.readBits(8),s=a.readBits(8))),a.readBits(1)&&(Tt(a),Tt(a)),a.readBits(1),a.readBits(1),a.readBits(1),a.readBits(1)&&(Tt(a),Tt(a),Tt(a),Tt(a)),a.readBits(1)&&(a.readBits(32),a.readBits(32),a.readBits(1)&&Tt(a),a.readBits(1)&&QC(a,!0,t)),a.readBits(1)&&(a.readBits(1),a.readBits(1),a.readBits(1),o=Tt(a),Tt(a),Tt(a),Tt(a),Tt(a)),{pixelAspectRatio:l,colourPrimaries:i,transferCharacteristics:n,matrixCoefficients:s,fullRangeFlag:r,minSpatialSegmentationIdc:o}},QC=(a,t,i)=>{let n=!1,s=!1,r=!1;n=a.readBits(1)===1,s=a.readBits(1)===1,(n||s)&&(r=a.readBits(1)===1,r&&(a.readBits(8),a.readBits(5),a.readBits(1),a.readBits(5)),a.readBits(4),a.readBits(4),r&&a.readBits(4),a.readBits(5),a.readBits(5),a.readBits(5));for(let o=0;o<=i;o++){const l=a.readBits(1)===1;let c=!0;l||(c=a.readBits(1)===1);let d=!1;c?Tt(a):d=a.readBits(1)===1;let g=1;d||(g=Tt(a)+1),n&&dy(a,g,r),s&&dy(a,g,r)}},dy=(a,t,i)=>{for(let n=0;n<t;n++)Tt(a),Tt(a),i&&(Tt(a),Tt(a)),a.readBits(1)},KC=a=>{const t=[];t.push(a.configurationVersion),t.push((a.generalProfileSpace&3)<<6|(a.generalTierFlag&1)<<5|a.generalProfileIdc&31),t.push(a.generalProfileCompatibilityFlags>>>24&255),t.push(a.generalProfileCompatibilityFlags>>>16&255),t.push(a.generalProfileCompatibilityFlags>>>8&255),t.push(a.generalProfileCompatibilityFlags&255),t.push(...a.generalConstraintIndicatorFlags),t.push(a.generalLevelIdc&255),t.push(240|a.minSpatialSegmentationIdc>>8&15),t.push(a.minSpatialSegmentationIdc&255),t.push(252|a.parallelismType&3),t.push(252|a.chromaFormatIdc&3),t.push(248|a.bitDepthLumaMinus8&7),t.push(248|a.bitDepthChromaMinus8&7),t.push(a.avgFrameRate>>8&255),t.push(a.avgFrameRate&255),t.push((a.constantFrameRate&3)<<6|(a.numTemporalLayers&7)<<3|(a.temporalIdNested&1)<<2|a.lengthSizeMinusOne&3),t.push(a.arrays.length&255);for(const i of a.arrays){t.push((i.arrayCompleteness&1)<<7|0|i.nalUnitType&63),t.push(i.nalUnits.length>>8&255),t.push(i.nalUnits.length&255);for(const n of i.nalUnits){t.push(n.length>>8&255),t.push(n.length&255);for(let s=0;s<n.length;s++)t.push(n[s])}}return new Uint8Array(t)};var uy;(function(a){a[a.audAllowed=0]="audAllowed",a[a.beforeFirstVcl=1]="beforeFirstVcl",a[a.afterFirstVcl=2]="afterFirstVcl",a[a.eoBitstreamAllowed=3]="eoBitstreamAllowed",a[a.noMoreDataAllowed=4]="noMoreDataAllowed"})(uy||(uy={}));const YC=function*(a){const t=new Pn(a),i=()=>{let n=0;for(let s=0;s<8;s++){const r=t.readAlignedByte();if(n+=(r&127)*2**(s*7),!(r&128))break;if(s===7&&r&128)return null}return n>2**32-1?null:n};for(;t.getBitsLeft()>=8;){t.skipBits(1);const n=t.readBits(4),s=t.readBits(1),r=t.readBits(1);t.skipBits(1),s&&t.skipBits(8);let o;if(r){const l=i();if(l===null)return;o=l}else o=Math.floor(t.getBitsLeft()/8);We(t.pos%8===0),yield{type:n,data:a.subarray(t.pos/8,t.pos/8+o)},t.skipBits(o*8)}},fy=a=>{const t=jr(a),i=t.getUint8(9),n=t.getUint16(10,!0),s=t.getUint32(12,!0),r=t.getInt16(16,!0),o=t.getUint8(18);let l=null;return o&&(l=a.subarray(19,21+i)),{outputChannelCount:i,preSkip:n,inputSampleRate:s,outputGain:r,channelMappingFamily:o,channelMappingTable:l}},JC=(a,t,i)=>{switch(a){case"avc":{for(const n of UC(i,t)){const s=i[n.offset],r=oy(s);if(r>=vo.NON_IDR_SLICE&&r<=vo.SLICE_DPC)return"delta";if(r===vo.IDR)return"key";if(r===vo.SEI&&!kC()){const o=i.subarray(n.offset,n.offset+n.length),l=Af(o);let c=1;do{let d=0;for(;;){const m=l[c++];if(m===void 0||(d+=m,m<255))break}let g=0;for(;;){const m=l[c++];if(m===void 0||(g+=m,m<255))break}if(d===6){const m=new Pn(l);m.pos=8*c;const p=Tt(m),u=m.readBits(1);if(p===0&&u===1)return"key"}c+=g}while(c<l.length-1)}}return"delta"}case"hevc":{for(const n of NC(i,t)){const s=Zm(i[n.offset]);if(s<gr.BLA_W_LP)return"delta";if(s<=gr.RSV_IRAP_VCL23)return"key"}return"delta"}case"vp8":return(i[0]&1)===0?"key":"delta";case"vp9":{const n=new Pn(i);if(n.readBits(2)!==2)return null;const s=n.readBits(1);return(n.readBits(1)<<1)+s===3&&n.skipBits(1),n.readBits(1)?null:n.readBits(1)===0?"key":"delta"}case"av1":{let n=!1;for(const{type:s,data:r}of YC(i))if(s===1){const o=new Pn(r);o.skipBits(4),n=!!o.readBits(1)}else if(s===3||s===6||s===7){if(n)return"key";const o=new Pn(r);return o.readBits(1)?null:o.readBits(2)===0?"key":"delta"}return null}case"prores":return"key";default:_o(a),We(!1)}};var py;(function(a){a[a.STREAMINFO=0]="STREAMINFO",a[a.VORBIS_COMMENT=4]="VORBIS_COMMENT",a[a.PICTURE=6]="PICTURE"})(py||(py={}));const XC=a=>{if(a.length<7||a[0]!==11||a[1]!==119)return null;const t=new Pn(a);t.skipBits(16),t.skipBits(16);const i=t.readBits(2);if(i===3)return null;const n=t.readBits(6),s=t.readBits(5);if(s>8)return null;const r=t.readBits(3),o=t.readBits(3);(o&1)!==0&&o!==1&&t.skipBits(2),(o&4)!==0&&t.skipBits(2),o===2&&t.skipBits(2);const l=t.readBits(1),c=Math.floor(n/2);return{fscod:i,bsid:s,bsmod:r,acmod:o,lfeon:l,bitRateCode:c}},ZC=[1,2,3,6],eG=a=>{if(a.length<6||a[0]!==11||a[1]!==119)return null;const t=new Pn(a);t.skipBits(16);const i=t.readBits(2);if(t.skipBits(3),i!==0&&i!==2)return null;const n=t.readBits(11),s=t.readBits(2);let r=0,o;s===3?(r=t.readBits(2),o=3):o=t.readBits(2);const l=t.readBits(3),c=t.readBits(1),d=t.readBits(5);if(d<11||d>16)return null;const g=ZC[o];let h;return s<3?h=zC[s]/1e3:h=EC[r]/1e3,{dataRate:Math.round((n+1)*h/(g*16)),substreams:[{fscod:s,fscod2:r,bsid:d,bsmod:0,acmod:l,lfeon:c,numDepSub:0,chanLoc:0}]}},tG=1683496997,aG=18,iG=10,my=32,nG=20,sG=8,rG=[0,8e3,16e3,32e3,0,0,11025,22050,44100,0,0,12e3,24e3,48e3,96e3,192e3],oG=[32e3,56e3,64e3,96e3,112e3,128e3,192e3,224e3,256e3,32e4,384e3,448e3,512e3,576e3,64e4,768e3,96e4,1024e3,1152e3,128e4,1344e3,1408e3,1411200,1472e3,1536e3,192e4,2048e3,3072e3,384e4,0,0,0],lG=[16,16,20,20,0,24,24,0],gy=[1,2,2,2,2,3,3,4,4,5,6,6,6,7,8,8],cG=[1,2,2,2,2,3,18,19,6,7,518,323,83,519,582,535],dG=8,uG=[32e3,44100,48e3,0],fG=[8e3,16e3,32e3,64e3,128e3,22050,44100,88200,176400,352800,12e3,24e3,48e3,96e3,192e3,384e3],pG=[512,1024,2048,4096],mG=a=>{const t=gG(a),i=jr(a);let n=t?Math.ceil(t.frameSize/4)*4:0,s=null;for(;n+4<=a.length&&i.getUint32(n)===tG;){const o=hG(a.subarray(n));if(!o)break;s??=o,n+=o.frameSize}if(t)return{frameSize:s?n:t.frameSize,sampleRate:t.sampleRate,numberOfChannels:t.numberOfChannels,sampleCount:t.sampleCount,channelLayout:t.channelLayout,pcmResolution:t.pcmResolution,bitRate:t.bitRate,core:t,hasExtensions:s!==null};if(!s?.asset)return null;const{asset:r}=s;return{frameSize:n,sampleRate:r.sampleRate,numberOfChannels:r.numberOfChannels,sampleCount:r.sampleCount,channelLayout:r.channelLayout,pcmResolution:r.pcmResolution,bitRate:0,core:null,hasExtensions:!0}},gG=a=>{if(a.length<aG||a[0]!==127||a[1]!==254||a[2]!==128||a[3]!==1)return null;const t=new Pn(a);if(t.skipBits(32),t.skipBits(1),t.readBits(5)!==my-1)return null;const i=t.readBits(1),n=t.readBits(7)+1;if(n%sG!==0)return null;const s=t.readBits(14)+1;if(s<96)return null;const r=t.readBits(6);if(r>=gy.length)return null;const o=rG[t.readBits(4)];if(o===0)return null;const l=oG[t.readBits(5)];if(t.readBits(1)!==0)return null;t.skipBits(4),t.skipBits(5);const c=t.readBits(2);if(c===3)return null;t.skipBits(1),i&&t.skipBits(16),t.skipBits(7);const d=lG[t.readBits(3)];if(d===0)return null;const g=c!==0;return{frameSize:s,sampleRate:o,numberOfChannels:gy[r]+(g?1:0),sampleCount:n*my,channelLayout:cG[r]|(g?dG:0),amode:r,lfePresent:g,bitRate:l,pcmResolution:d}},hG=a=>{if(a.length<iG||a[0]!==100||a[1]!==88||a[2]!==32||a[3]!==37)return null;const t=new Pn(a);t.skipBits(32),t.skipBits(8);const i=t.readBits(2),n=t.readBits(1),s=8+4*n,r=16+4*n;t.skipBits(s);const o=t.readBits(r)+1,l={frameSize:o,asset:null};if(!t.readBits(1))return l;const c=uG[t.readBits(2)],d=512*(t.readBits(3)+1);t.readBits(1)&&t.skipBits(36);const g=t.readBits(3)+1,h=t.readBits(3)+1,m=[];for(let v=0;v<g;v++)m.push(t.readBits(i+1));for(const v of m)t.skipBits(8*_C(v));if(t.readBits(1)){t.skipBits(2);const v=t.readBits(2)+1<<2,y=t.readBits(2)+1;t.skipBits(y*v)}for(let v=0;v<h;v++)t.skipBits(r);t.skipBits(9),t.skipBits(3),t.readBits(1)&&t.skipBits(4),t.readBits(1)&&t.skipBits(24),t.readBits(1)&&t.skipBits(8*(t.readBits(10)+1));const p=t.readBits(5)+1,u=fG[t.readBits(4)],f=t.readBits(8)+1;let _=0;if(t.readBits(1)&&(f>2&&t.skipBits(1),f>6&&t.skipBits(1),t.readBits(1))){const v=t.readBits(2)+1<<2;_=t.readBits(v)}return c===0||t.getBitsLeft()<0?l:{frameSize:o,asset:{sampleRate:u,numberOfChannels:f,sampleCount:Math.round(d*u/c),channelLayout:_,pcmResolution:p}}},_G=a=>{const t=new Uint8Array(nG),i=jr(t);i.setUint32(0,a.sampleRate),i.setUint32(4,a.bitRate),i.setUint32(8,a.bitRate),t[12]=a.pcmResolution;const n=a.core&&!a.hasExtensions?1:0,s=new Pn(t);return s.seekToByte(13),s.writeBits(2,Math.max(pG.indexOf(a.sampleCount),0)),s.writeBits(5,n),s.writeBits(1,a.core?.lfePresent?1:0),s.writeBits(6,a.core?.amode??0),s.writeBits(14,a.core?a.core.frameSize-1:0),s.writeBits(1,0),s.writeBits(3,0),s.writeBits(16,a.channelLayout),s.writeBits(1,0),s.writeBits(1,0),s.writeBits(1,0),s.writeBits(5,0),t};const Cr=["avc","hevc","vp9","av1","vp8","prores"],Ds=["pcm-s16","pcm-s16be","pcm-s24","pcm-s24be","pcm-s32","pcm-s32be","pcm-f32","pcm-f32be","pcm-f64","pcm-f64be","pcm-u8","pcm-s8","ulaw","alaw"],Cf=["aac","opus","mp3","vorbis","flac","ac3","eac3","dts"],el=[...Cf,...Ds],Yl=["webvtt"],Gf=[{maxMacroblocks:99,maxBitrate:64e3,maxDpbMbs:396,level:10},{maxMacroblocks:396,maxBitrate:192e3,maxDpbMbs:900,level:11},{maxMacroblocks:396,maxBitrate:384e3,maxDpbMbs:2376,level:12},{maxMacroblocks:396,maxBitrate:768e3,maxDpbMbs:2376,level:13},{maxMacroblocks:396,maxBitrate:2e6,maxDpbMbs:2376,level:20},{maxMacroblocks:792,maxBitrate:4e6,maxDpbMbs:4752,level:21},{maxMacroblocks:1620,maxBitrate:4e6,maxDpbMbs:8100,level:22},{maxMacroblocks:1620,maxBitrate:1e7,maxDpbMbs:8100,level:30},{maxMacroblocks:3600,maxBitrate:14e6,maxDpbMbs:18e3,level:31},{maxMacroblocks:5120,maxBitrate:2e7,maxDpbMbs:20480,level:32},{maxMacroblocks:8192,maxBitrate:2e7,maxDpbMbs:32768,level:40},{maxMacroblocks:8192,maxBitrate:5e7,maxDpbMbs:32768,level:41},{maxMacroblocks:8704,maxBitrate:5e7,maxDpbMbs:34816,level:42},{maxMacroblocks:22080,maxBitrate:135e6,maxDpbMbs:110400,level:50},{maxMacroblocks:36864,maxBitrate:24e7,maxDpbMbs:184320,level:51},{maxMacroblocks:36864,maxBitrate:24e7,maxDpbMbs:184320,level:52},{maxMacroblocks:139264,maxBitrate:24e7,maxDpbMbs:696320,level:60},{maxMacroblocks:139264,maxBitrate:48e7,maxDpbMbs:696320,level:61},{maxMacroblocks:139264,maxBitrate:8e8,maxDpbMbs:696320,level:62}],hy=[{maxPictureSize:36864,maxBitrate:128e3,tier:"L",level:30},{maxPictureSize:122880,maxBitrate:15e5,tier:"L",level:60},{maxPictureSize:245760,maxBitrate:3e6,tier:"L",level:63},{maxPictureSize:552960,maxBitrate:6e6,tier:"L",level:90},{maxPictureSize:983040,maxBitrate:1e7,tier:"L",level:93},{maxPictureSize:2228224,maxBitrate:12e6,tier:"L",level:120},{maxPictureSize:2228224,maxBitrate:3e7,tier:"H",level:120},{maxPictureSize:2228224,maxBitrate:2e7,tier:"L",level:123},{maxPictureSize:2228224,maxBitrate:5e7,tier:"H",level:123},{maxPictureSize:8912896,maxBitrate:25e6,tier:"L",level:150},{maxPictureSize:8912896,maxBitrate:1e8,tier:"H",level:150},{maxPictureSize:8912896,maxBitrate:4e7,tier:"L",level:153},{maxPictureSize:8912896,maxBitrate:16e7,tier:"H",level:153},{maxPictureSize:8912896,maxBitrate:6e7,tier:"L",level:156},{maxPictureSize:8912896,maxBitrate:24e7,tier:"H",level:156},{maxPictureSize:35651584,maxBitrate:6e7,tier:"L",level:180},{maxPictureSize:35651584,maxBitrate:24e7,tier:"H",level:180},{maxPictureSize:35651584,maxBitrate:12e7,tier:"L",level:183},{maxPictureSize:35651584,maxBitrate:48e7,tier:"H",level:183},{maxPictureSize:35651584,maxBitrate:24e7,tier:"L",level:186},{maxPictureSize:35651584,maxBitrate:8e8,tier:"H",level:186}],_y=[{maxPictureSize:36864,maxBitrate:2e5,level:10},{maxPictureSize:73728,maxBitrate:8e5,level:11},{maxPictureSize:122880,maxBitrate:18e5,level:20},{maxPictureSize:245760,maxBitrate:36e5,level:21},{maxPictureSize:552960,maxBitrate:72e5,level:30},{maxPictureSize:983040,maxBitrate:12e6,level:31},{maxPictureSize:2228224,maxBitrate:18e6,level:40},{maxPictureSize:2228224,maxBitrate:3e7,level:41},{maxPictureSize:8912896,maxBitrate:6e7,level:50},{maxPictureSize:8912896,maxBitrate:12e7,level:51},{maxPictureSize:8912896,maxBitrate:18e7,level:52},{maxPictureSize:35651584,maxBitrate:18e7,level:60},{maxPictureSize:35651584,maxBitrate:24e7,level:61},{maxPictureSize:35651584,maxBitrate:48e7,level:62}],vy=[{maxPictureSize:147456,maxBitrate:15e5,tier:"M",level:0},{maxPictureSize:278784,maxBitrate:3e6,tier:"M",level:1},{maxPictureSize:665856,maxBitrate:6e6,tier:"M",level:4},{maxPictureSize:1065024,maxBitrate:1e7,tier:"M",level:5},{maxPictureSize:2359296,maxBitrate:12e6,tier:"M",level:8},{maxPictureSize:2359296,maxBitrate:3e7,tier:"H",level:8},{maxPictureSize:2359296,maxBitrate:2e7,tier:"M",level:9},{maxPictureSize:2359296,maxBitrate:5e7,tier:"H",level:9},{maxPictureSize:8912896,maxBitrate:3e7,tier:"M",level:12},{maxPictureSize:8912896,maxBitrate:1e8,tier:"H",level:12},{maxPictureSize:8912896,maxBitrate:4e7,tier:"M",level:13},{maxPictureSize:8912896,maxBitrate:16e7,tier:"H",level:13},{maxPictureSize:8912896,maxBitrate:6e7,tier:"M",level:14},{maxPictureSize:8912896,maxBitrate:24e7,tier:"H",level:14},{maxPictureSize:35651584,maxBitrate:6e7,tier:"M",level:15},{maxPictureSize:35651584,maxBitrate:24e7,tier:"H",level:15},{maxPictureSize:35651584,maxBitrate:6e7,tier:"M",level:16},{maxPictureSize:35651584,maxBitrate:24e7,tier:"H",level:16},{maxPictureSize:35651584,maxBitrate:1e8,tier:"M",level:17},{maxPictureSize:35651584,maxBitrate:48e7,tier:"H",level:17},{maxPictureSize:35651584,maxBitrate:16e7,tier:"M",level:18},{maxPictureSize:35651584,maxBitrate:8e8,tier:"H",level:18},{maxPictureSize:35651584,maxBitrate:16e7,tier:"M",level:19},{maxPictureSize:35651584,maxBitrate:8e8,tier:"H",level:19}],Qd=["ap4x","ap4h","apch","apcn","apcs","apco"],e0=["dtsc","dtsh","dtsl","dtse"],vG=[{fourCc:"apco",bitrate:45e6,alpha:!1},{fourCc:"apcs",bitrate:102e6,alpha:!1},{fourCc:"apcn",bitrate:147e6,alpha:!1},{fourCc:"apch",bitrate:22e7,alpha:!1},{fourCc:"ap4h",bitrate:33e7,alpha:!0},{fourCc:"ap4x",bitrate:5e8,alpha:!0}],bG=(a,t,i,n,s)=>{if(a==="avc"){const o=Math.ceil(t/16)*Math.ceil(i/16),l=Gf.find(m=>o<=m.maxMacroblocks&&n<=m.maxBitrate)??Ar(Gf),c=l?l.level:0,d="64".padStart(2,"0"),g="00",h=c.toString(16).padStart(2,"0");return`avc1.${d}${g}${h}`}else if(a==="hevc"){const c=t*i,d=hy.find(h=>c<=h.maxPictureSize&&n<=h.maxBitrate)??Ar(hy);return`hev1.1.6.${d.tier}${d.level}.B0`}else{if(a==="vp8")return"vp8";if(a==="vp9"){const o=t*i;return`vp09.00.${(_y.find(d=>o<=d.maxPictureSize&&n<=d.maxBitrate)??Ar(_y)).level.toString().padStart(2,"0")}.08`}else if(a==="av1"){const o=t*i,l=vy.find(g=>o<=g.maxPictureSize&&n<=g.maxBitrate)??Ar(vy);return`av01.0.${l.level.toString().padStart(2,"0")}${l.tier}.08`}else if(a==="prores"){const o=Math.pow(t*i/2073600,.95),l=vG.filter(g=>g.alpha===s);let c=l[0].fourCc,d=1/0;for(const{fourCc:g,bitrate:h}of l){const m=Math.abs(h*o-n);m<d&&(d=m,c=g)}return c}else _o(a)}throw new TypeError(`Unhandled codec '${String(a)}'.`)},yG=a=>{const t=a.split("."),i=Number(t[1]),n=Number(t[2]),s=Number(t[3]),r=t[4]?Number(t[4]):1;return[1,1,i,2,1,n,3,1,s,4,1,r]},by=a=>{const t=a.split("."),s=(1<<7)+1,r=Number(t[1]),o=t[2],l=Number(o.slice(0,-1)),c=(r<<5)+l,d=o.slice(-1)==="H"?1:0,g=Number(t[3]),h=g===8?0:1,m=g===12?1:0,p=t[4]?Number(t[4]):0,u=t[5]?Number(t[5][0]):1,f=t[5]?Number(t[5][1]):1,_=t[5]?Number(t[5][2]):0,v=(d<<7)+(h<<6)+(m<<5)+(p<<4)+(u<<3)+(f<<2)+_;return[s,c,v,0]},wG=(a,t,i)=>{if(a==="aac")return t>=2&&i<=24e3?"mp4a.40.29":i<=24e3?"mp4a.40.5":"mp4a.40.2";if(a==="mp3")return"mp3";if(a==="opus")return"opus";if(a==="vorbis")return"vorbis";if(a==="flac")return"flac";if(a==="ac3")return"ac-3";if(a==="eac3")return"ec-3";if(a==="dts")return"dtsc";if(Ds.includes(a))return a;throw new TypeError(`Unhandled codec '${a}'.`)},kG=48e3,yy=/^pcm-([usf])(\d+)(be)?$/,tl=a=>{if(We(Ds.includes(a)),a==="ulaw")return{dataType:"ulaw",sampleSize:1,littleEndian:!0,silentValue:255};if(a==="alaw")return{dataType:"alaw",sampleSize:1,littleEndian:!0,silentValue:213};const t=yy.exec(a);We(t);let i;t[1]==="u"?i="unsigned":t[1]==="s"?i="signed":i="float";const n=Number(t[2])/8,s=t[3]!=="be",r=a==="pcm-u8"?2**7:0;return{dataType:i,sampleSize:n,littleEndian:s,silentValue:r}},Ff=a=>a.startsWith("avc1")||a.startsWith("avc3")?"avc":a.startsWith("hev1")||a.startsWith("hvc1")?"hevc":a==="vp8"?"vp8":a.startsWith("vp09")?"vp9":a.startsWith("av01")?"av1":Qd.includes(a)?"prores":a==="mp3"||a==="mp4a.69"||a==="mp4a.6B"||a==="mp4a.6b"||a==="mp4a.40.34"?"mp3":a.startsWith("mp4a.40.")||a==="mp4a.67"?"aac":a==="opus"?"opus":a==="vorbis"?"vorbis":a==="flac"?"flac":a==="ac-3"||a==="ac3"?"ac3":a==="ec-3"||a==="eac3"?"eac3":e0.includes(a)?"dts":a==="ulaw"?"ulaw":a==="alaw"?"alaw":yy.test(a)?a:a==="webvtt"?"webvtt":null,xG=a=>a==="avc"?{avc:{format:"avc"}}:a==="hevc"?{hevc:{format:"hevc"}}:{},SG=a=>a==="aac"?{aac:{format:"aac"}}:a==="opus"?{opus:{format:"opus"}}:{},TG=["avc1","avc3","hev1","hvc1","vp8","vp09","av01",...Qd],$G=/^(avc1|avc3)\.[0-9a-fA-F]{6}$/,qG=/^(hev1|hvc1)\.(?:[ABC]?\d+)\.[0-9a-fA-F]{1,8}\.[LH]\d+(?:\.[0-9a-fA-F]{1,2}){0,6}$/,AG=/^vp09(?:\.\d{2}){3}(?:(?:\.\d{2}){5})?$/,CG=/^av01\.\d\.\d{2}[MH]\.\d{2}(?:\.\d\.\d{3}\.\d{2}\.\d{2}\.\d{2}\.\d)?$/,t0=(a,t)=>{if(!a)throw new TypeError("Video chunk metadata must be provided.");if(typeof a!="object")throw new TypeError("Video chunk metadata must be an object.");if(!a.decoderConfig)throw new TypeError("Video chunk metadata must include a decoder configuration.");if(typeof a.decoderConfig!="object")throw new TypeError("Video chunk metadata decoder configuration must be an object.");if(typeof a.decoderConfig.codec!="string")throw new TypeError("Video chunk metadata decoder configuration must specify a codec string.");if(!TG.some(i=>a.decoderConfig.codec.startsWith(i)))throw new TypeError("Video chunk metadata decoder configuration codec string must be a valid video codec string as specified in the Mediabunny Codec Registry.");if(!Number.isInteger(a.decoderConfig.codedWidth)||a.decoderConfig.codedWidth<=0)throw new TypeError("Video chunk metadata decoder configuration must specify a valid codedWidth (positive integer).");if(!Number.isInteger(a.decoderConfig.codedHeight)||a.decoderConfig.codedHeight<=0)throw new TypeError("Video chunk metadata decoder configuration must specify a valid codedHeight (positive integer).");if(a.decoderConfig.displayAspectWidth!==void 0&&(!Number.isInteger(a.decoderConfig.displayAspectWidth)||a.decoderConfig.displayAspectWidth<=0))throw new TypeError("Video chunk metadata decoder configuration displayAspectWidth, when defined, must be a positive integer.");if(a.decoderConfig.displayAspectHeight!==void 0&&(!Number.isInteger(a.decoderConfig.displayAspectHeight)||a.decoderConfig.displayAspectHeight<=0))throw new TypeError("Video chunk metadata decoder configuration displayAspectHeight, when defined, must be a positive integer.");if(a.decoderConfig.displayAspectWidth!==void 0!=(a.decoderConfig.displayAspectHeight!==void 0))throw new TypeError("Video chunk metadata decoder configuration must specify both displayAspectWidth and displayAspectHeight, or neither.");if(a.decoderConfig.description!==void 0&&!Tf(a.decoderConfig.description))throw new TypeError("Video chunk metadata decoder configuration description, when defined, must be an ArrayBuffer or an ArrayBuffer view.");if(a.decoderConfig.colorSpace!==void 0){const{colorSpace:i}=a.decoderConfig;if(typeof i!="object")throw new TypeError("Video chunk metadata decoder configuration colorSpace, when provided, must be an object.");const n=Object.keys(Id);if(i.primaries!=null&&!n.includes(i.primaries))throw new TypeError(`Video chunk metadata decoder configuration colorSpace primaries, when defined, must be one of ${n.join(", ")}.`);const s=Object.keys(Ld);if(i.transfer!=null&&!s.includes(i.transfer))throw new TypeError(`Video chunk metadata decoder configuration colorSpace transfer, when defined, must be one of ${s.join(", ")}.`);const r=Object.keys(Vd);if(i.matrix!=null&&!r.includes(i.matrix))throw new TypeError(`Video chunk metadata decoder configuration colorSpace matrix, when defined, must be one of ${r.join(", ")}.`);if(i.fullRange!=null&&typeof i.fullRange!="boolean")throw new TypeError("Video chunk metadata decoder configuration colorSpace fullRange, when defined, must be a boolean.")}if(a.decoderConfig.codec.startsWith("avc1")||a.decoderConfig.codec.startsWith("avc3")){if(!$G.test(a.decoderConfig.codec))throw new TypeError("Video chunk metadata decoder configuration codec string for AVC must be a valid AVC codec string as specified in Section 3.4 of RFC 6381.")}else if(a.decoderConfig.codec.startsWith("hev1")||a.decoderConfig.codec.startsWith("hvc1")){if(!qG.test(a.decoderConfig.codec))throw new TypeError("Video chunk metadata decoder configuration codec string for HEVC must be a valid HEVC codec string as specified in Section E.3 of ISO 14496-15.")}else if(a.decoderConfig.codec.startsWith("vp8")){if(a.decoderConfig.codec!=="vp8")throw new TypeError('Video chunk metadata decoder configuration codec string for VP8 must be "vp8".')}else if(a.decoderConfig.codec.startsWith("vp09")){if(!AG.test(a.decoderConfig.codec))throw new TypeError('Video chunk metadata decoder configuration codec string for VP9 must be a valid VP9 codec string as specified in Section "Codecs Parameter String" of https://www.webmproject.org/vp9/mp4/.')}else if(a.decoderConfig.codec.startsWith("av01")){if(!CG.test(a.decoderConfig.codec))throw new TypeError('Video chunk metadata decoder configuration codec string for AV1 must be a valid AV1 codec string as specified in Section "Codecs Parameter String" of https://aomediacodec.github.io/av1-isobmff/.')}else if(Qd.some(i=>a.decoderConfig.codec.startsWith(i))&&!Qd.some(i=>a.decoderConfig.codec===i))throw new TypeError(`Video chunk metadata decoder configuration codec string for ProRes must be one of the valid ProRes four-character codes: ${Qd.join(", ")}.`);if(t!==null&&Ff(a.decoderConfig.codec)!==t)throw new TypeError(`Video chunk metadata decoder configuration codec string '${a.decoderConfig.codec}' does not fit to the track codec '${t}'.`)},GG=["mp4a","mp3","opus","vorbis","flac","ulaw","alaw","pcm","ac-3","ec-3","dts"],a0=(a,t)=>{if(!a)throw new TypeError("Audio chunk metadata must be provided.");if(typeof a!="object")throw new TypeError("Audio chunk metadata must be an object.");if(!a.decoderConfig)throw new TypeError("Audio chunk metadata must include a decoder configuration.");if(typeof a.decoderConfig!="object")throw new TypeError("Audio chunk metadata decoder configuration must be an object.");if(typeof a.decoderConfig.codec!="string")throw new TypeError("Audio chunk metadata decoder configuration must specify a codec string.");if(!GG.some(i=>a.decoderConfig.codec.startsWith(i)))throw new TypeError("Audio chunk metadata decoder configuration codec string must be a valid audio codec string as specified in the Mediabunny Codec Registry.");if(!Number.isInteger(a.decoderConfig.sampleRate)||a.decoderConfig.sampleRate<=0)throw new TypeError("Audio chunk metadata decoder configuration must specify a valid sampleRate (positive integer).");if(!Number.isInteger(a.decoderConfig.numberOfChannels)||a.decoderConfig.numberOfChannels<=0)throw new TypeError("Audio chunk metadata decoder configuration must specify a valid numberOfChannels (positive integer).");if(a.decoderConfig.description!==void 0&&!Tf(a.decoderConfig.description))throw new TypeError("Audio chunk metadata decoder configuration description, when defined, must be an ArrayBuffer or an ArrayBuffer view.");if(a.decoderConfig.codec.startsWith("mp4a")&&a.decoderConfig.codec!=="mp4a.69"&&a.decoderConfig.codec!=="mp4a.6B"&&a.decoderConfig.codec!=="mp4a.6b"){if(!["mp4a.40.2","mp4a.40.02","mp4a.40.5","mp4a.40.05","mp4a.40.29","mp4a.67"].includes(a.decoderConfig.codec))throw new TypeError("Audio chunk metadata decoder configuration codec string for AAC must be a valid AAC codec string as specified in https://www.w3.org/TR/webcodecs-aac-codec-registration/.")}else if(a.decoderConfig.codec.startsWith("mp3")||a.decoderConfig.codec.startsWith("mp4a")){if(a.decoderConfig.codec!=="mp3"&&a.decoderConfig.codec!=="mp4a.69"&&a.decoderConfig.codec!=="mp4a.6B"&&a.decoderConfig.codec!=="mp4a.6b")throw new TypeError('Audio chunk metadata decoder configuration codec string for MP3 must be "mp3", "mp4a.69" or "mp4a.6B".')}else if(a.decoderConfig.codec.startsWith("opus")){if(a.decoderConfig.codec!=="opus")throw new TypeError('Audio chunk metadata decoder configuration codec string for Opus must be "opus".');if(a.decoderConfig.description&&a.decoderConfig.description.byteLength<18)throw new TypeError("Audio chunk metadata decoder configuration description, when specified, is expected to be an Identification Header as specified in Section 5.1 of RFC 7845.")}else if(a.decoderConfig.codec.startsWith("vorbis")){if(a.decoderConfig.codec!=="vorbis")throw new TypeError('Audio chunk metadata decoder configuration codec string for Vorbis must be "vorbis".');if(!a.decoderConfig.description)throw new TypeError("Audio chunk metadata decoder configuration for Vorbis must include a description, which is expected to adhere to the format described in https://www.w3.org/TR/webcodecs-vorbis-codec-registration/.")}else if(a.decoderConfig.codec.startsWith("flac")){if(a.decoderConfig.codec!=="flac")throw new TypeError('Audio chunk metadata decoder configuration codec string for FLAC must be "flac".');if(!a.decoderConfig.description||a.decoderConfig.description.byteLength<42)throw new TypeError("Audio chunk metadata decoder configuration for FLAC must include a description, which is expected to adhere to the format described in https://www.w3.org/TR/webcodecs-flac-codec-registration/.")}else if(a.decoderConfig.codec.startsWith("ac-3")||a.decoderConfig.codec.startsWith("ac3")){if(a.decoderConfig.codec!=="ac-3")throw new TypeError('Audio chunk metadata decoder configuration codec string for AC-3 must be "ac-3".')}else if(a.decoderConfig.codec.startsWith("ec-3")||a.decoderConfig.codec.startsWith("eac3")){if(a.decoderConfig.codec!=="ec-3")throw new TypeError('Audio chunk metadata decoder configuration codec string for EC-3 must be "ec-3".')}else if(a.decoderConfig.codec.startsWith("dts")){if(!e0.includes(a.decoderConfig.codec))throw new TypeError(`Audio chunk metadata decoder configuration codec string for DTS must be one of the following four-character codes: ${e0.join(", ")}.`)}else if((a.decoderConfig.codec.startsWith("pcm")||a.decoderConfig.codec.startsWith("ulaw")||a.decoderConfig.codec.startsWith("alaw"))&&!Ds.includes(a.decoderConfig.codec))throw new TypeError(`Audio chunk metadata decoder configuration codec string for PCM must be one of the supported PCM codecs (${Ds.join(", ")}).`);if(t!==null&&Ff(a.decoderConfig.codec)!==t)throw new TypeError(`Audio chunk metadata decoder configuration codec string '${a.decoderConfig.codec}' does not fit to the track codec '${t}'.`)},wy=a=>{if(!a)throw new TypeError("Subtitle metadata must be provided.");if(typeof a!="object")throw new TypeError("Subtitle metadata must be an object.");if(!a.config)throw new TypeError("Subtitle metadata must include a config object.");if(typeof a.config!="object")throw new TypeError("Subtitle metadata config must be an object.");if(typeof a.config.description!="string")throw new TypeError("Subtitle metadata config description must be a string.")};const ky=new Uint8Array(0);class Or{constructor(t,i,n,s,r=-1,o,l){if(this.data=t,this.type=i,this.timestamp=n,this.duration=s,this.sequenceNumber=r,t===ky&&o===void 0)throw new Error("Internal error: byteLength must be explicitly provided when constructing metadata-only packets.");if(o===void 0&&(o=t.byteLength),!(t instanceof Uint8Array))throw new TypeError("data must be a Uint8Array.");if(i!=="key"&&i!=="delta")throw new TypeError('type must be either "key" or "delta".');if(!Number.isFinite(n))throw new TypeError("timestamp must be a number.");if(!Number.isFinite(s)||s<0)throw new TypeError("duration must be a non-negative number.");if(!Number.isFinite(r))throw new TypeError("sequenceNumber must be a number.");if(!Number.isInteger(o)||o<0)throw new TypeError("byteLength must be a non-negative integer.");if(l!==void 0&&(typeof l!="object"||!l))throw new TypeError("sideData, when provided, must be an object.");if(l?.alpha!==void 0&&!(l.alpha instanceof Uint8Array))throw new TypeError("sideData.alpha, when provided, must be a Uint8Array.");if(l?.alphaByteLength!==void 0&&(!Number.isInteger(l.alphaByteLength)||l.alphaByteLength<0))throw new TypeError("sideData.alphaByteLength, when provided, must be a non-negative integer.");this.byteLength=o,this.sideData=l??{},this.sideData.alpha&&this.sideData.alphaByteLength===void 0&&(this.sideData.alphaByteLength=this.sideData.alpha.byteLength)}get isMetadataOnly(){return this.data===ky}get microsecondTimestamp(){return Math.trunc(Xo*this.timestamp)}get microsecondDuration(){return Math.trunc(Xo*this.duration)}toEncodedVideoChunk(){if(this.isMetadataOnly)throw new TypeError("Metadata-only packets cannot be converted to a video chunk.");if(typeof EncodedVideoChunk>"u")throw new Error("EncodedVideoChunk is not available in this environment.");return new EncodedVideoChunk({data:this.data,type:this.type,timestamp:this.microsecondTimestamp,duration:this.microsecondDuration})}alphaToEncodedVideoChunk(t=this.type){if(!this.sideData.alpha)throw new TypeError("This packet does not contain alpha side data.");if(this.isMetadataOnly)throw new TypeError("Metadata-only packets cannot be converted to a video chunk.");if(typeof EncodedVideoChunk>"u")throw new Error("EncodedVideoChunk is not available in this environment.");return new EncodedVideoChunk({data:this.sideData.alpha,type:t,timestamp:this.microsecondTimestamp,duration:this.microsecondDuration})}toEncodedAudioChunk(){if(this.isMetadataOnly)throw new TypeError("Metadata-only packets cannot be converted to an audio chunk.");if(typeof EncodedAudioChunk>"u")throw new Error("EncodedAudioChunk is not available in this environment.");return new EncodedAudioChunk({data:this.data,type:this.type,timestamp:this.microsecondTimestamp,duration:this.microsecondDuration})}static fromEncodedChunk(t,i){if(!(t instanceof EncodedVideoChunk||t instanceof EncodedAudioChunk))throw new TypeError("chunk must be an EncodedVideoChunk or EncodedAudioChunk.");const n=new Uint8Array(t.byteLength);return t.copyTo(n),new Or(n,t.type,t.timestamp/1e6,(t.duration??0)/1e6,void 0,void 0,i)}clone(t){if(t!==void 0&&(typeof t!="object"||t===null))throw new TypeError("options, when provided, must be an object.");if(t?.data!==void 0&&!(t.data instanceof Uint8Array))throw new TypeError("options.data, when provided, must be a Uint8Array.");if(t?.type!==void 0&&t.type!=="key"&&t.type!=="delta")throw new TypeError('options.type, when provided, must be either "key" or "delta".');if(t?.timestamp!==void 0&&!Number.isFinite(t.timestamp))throw new TypeError("options.timestamp, when provided, must be a number.");if(t?.duration!==void 0&&!Number.isFinite(t.duration))throw new TypeError("options.duration, when provided, must be a number.");if(t?.sequenceNumber!==void 0&&!Number.isFinite(t.sequenceNumber))throw new TypeError("options.sequenceNumber, when provided, must be a number.");if(t?.sideData!==void 0&&(typeof t.sideData!="object"||t.sideData===null))throw new TypeError("options.sideData, when provided, must be an object.");return new Or(t?.data??this.data,t?.type??this.type,t?.timestamp??this.timestamp,t?.duration??this.duration,t?.sequenceNumber??this.sequenceNumber,this.byteLength,t?.sideData??this.sideData)}}const FG=a=>{let i=(a.hasVideo?"video/":a.hasAudio?"audio/":"application/")+(a.isQuickTime?"quicktime":"mp4");if(a.codecStrings.length>0){const n=[...new Set(a.codecStrings)];i+=`; codecs="${n.join(", ")}"`}return i};const i0=8,xy=16;class Kd{constructor(t){this.value=t}}class n0{constructor(t){this.value=t}}class Sy{constructor(t){this.value=t}}class al{constructor(t){this.value=t}}var at;(function(a){a[a.EBML=440786851]="EBML",a[a.EBMLVersion=17030]="EBMLVersion",a[a.EBMLReadVersion=17143]="EBMLReadVersion",a[a.EBMLMaxIDLength=17138]="EBMLMaxIDLength",a[a.EBMLMaxSizeLength=17139]="EBMLMaxSizeLength",a[a.DocType=17026]="DocType",a[a.DocTypeVersion=17031]="DocTypeVersion",a[a.DocTypeReadVersion=17029]="DocTypeReadVersion",a[a.Void=236]="Void",a[a.Segment=408125543]="Segment",a[a.SeekHead=290298740]="SeekHead",a[a.Seek=19899]="Seek",a[a.SeekID=21419]="SeekID",a[a.SeekPosition=21420]="SeekPosition",a[a.Duration=17545]="Duration",a[a.Info=357149030]="Info",a[a.TimestampScale=2807729]="TimestampScale",a[a.MuxingApp=19840]="MuxingApp",a[a.WritingApp=22337]="WritingApp",a[a.Tracks=374648427]="Tracks",a[a.TrackEntry=174]="TrackEntry",a[a.TrackNumber=215]="TrackNumber",a[a.TrackUID=29637]="TrackUID",a[a.TrackType=131]="TrackType",a[a.FlagEnabled=185]="FlagEnabled",a[a.FlagDefault=136]="FlagDefault",a[a.FlagForced=21930]="FlagForced",a[a.FlagOriginal=21934]="FlagOriginal",a[a.FlagHearingImpaired=21931]="FlagHearingImpaired",a[a.FlagVisualImpaired=21932]="FlagVisualImpaired",a[a.FlagCommentary=21935]="FlagCommentary",a[a.FlagLacing=156]="FlagLacing",a[a.Name=21358]="Name",a[a.Language=2274716]="Language",a[a.LanguageBCP47=2274717]="LanguageBCP47",a[a.CodecID=134]="CodecID",a[a.CodecPrivate=25506]="CodecPrivate",a[a.CodecDelay=22186]="CodecDelay",a[a.SeekPreRoll=22203]="SeekPreRoll",a[a.DefaultDuration=2352003]="DefaultDuration",a[a.Video=224]="Video",a[a.PixelWidth=176]="PixelWidth",a[a.PixelHeight=186]="PixelHeight",a[a.DisplayWidth=21680]="DisplayWidth",a[a.DisplayHeight=21690]="DisplayHeight",a[a.DisplayUnit=21682]="DisplayUnit",a[a.AlphaMode=21440]="AlphaMode",a[a.Audio=225]="Audio",a[a.SamplingFrequency=181]="SamplingFrequency",a[a.Channels=159]="Channels",a[a.BitDepth=25188]="BitDepth",a[a.SimpleBlock=163]="SimpleBlock",a[a.BlockGroup=160]="BlockGroup",a[a.Block=161]="Block",a[a.BlockAdditions=30113]="BlockAdditions",a[a.BlockMore=166]="BlockMore",a[a.BlockAdditional=165]="BlockAdditional",a[a.BlockAddID=238]="BlockAddID",a[a.BlockDuration=155]="BlockDuration",a[a.ReferenceBlock=251]="ReferenceBlock",a[a.Cluster=524531317]="Cluster",a[a.Timestamp=231]="Timestamp",a[a.Cues=475249515]="Cues",a[a.CuePoint=187]="CuePoint",a[a.CueTime=179]="CueTime",a[a.CueTrackPositions=183]="CueTrackPositions",a[a.CueTrack=247]="CueTrack",a[a.CueClusterPosition=241]="CueClusterPosition",a[a.Colour=21936]="Colour",a[a.MatrixCoefficients=21937]="MatrixCoefficients",a[a.TransferCharacteristics=21946]="TransferCharacteristics",a[a.Primaries=21947]="Primaries",a[a.Range=21945]="Range",a[a.Projection=30320]="Projection",a[a.ProjectionType=30321]="ProjectionType",a[a.ProjectionPoseYaw=30323]="ProjectionPoseYaw",a[a.ProjectionPosePitch=30324]="ProjectionPosePitch",a[a.ProjectionPoseRoll=30325]="ProjectionPoseRoll",a[a.Attachments=423732329]="Attachments",a[a.AttachedFile=24999]="AttachedFile",a[a.FileDescription=18046]="FileDescription",a[a.FileName=18030]="FileName",a[a.FileMediaType=18016]="FileMediaType",a[a.FileData=18012]="FileData",a[a.FileUID=18094]="FileUID",a[a.Chapters=272869232]="Chapters",a[a.Tags=307544935]="Tags",a[a.Tag=29555]="Tag",a[a.Targets=25536]="Targets",a[a.TargetTypeValue=26826]="TargetTypeValue",a[a.TargetType=25546]="TargetType",a[a.TagTrackUID=25541]="TagTrackUID",a[a.TagEditionUID=25545]="TagEditionUID",a[a.TagChapterUID=25540]="TagChapterUID",a[a.TagAttachmentUID=25542]="TagAttachmentUID",a[a.SimpleTag=26568]="SimpleTag",a[a.TagName=17827]="TagName",a[a.TagLanguage=17530]="TagLanguage",a[a.TagString=17543]="TagString",a[a.TagBinary=17541]="TagBinary",a[a.ContentEncodings=28032]="ContentEncodings",a[a.ContentEncoding=25152]="ContentEncoding",a[a.ContentEncodingOrder=20529]="ContentEncodingOrder",a[a.ContentEncodingScope=20530]="ContentEncodingScope",a[a.ContentCompression=20532]="ContentCompression",a[a.ContentCompAlgo=16980]="ContentCompAlgo",a[a.ContentCompSettings=16981]="ContentCompSettings",a[a.ContentEncryption=20533]="ContentEncryption"})(at||(at={})),at.EBML,at.Segment,at.SeekHead,at.Info,at.Cluster,at.Tracks,at.Cues,at.Attachments,at.Chapters,at.Tags;const Ty=a=>a<256?1:a<65536?2:a<1<<24?3:a<2**32?4:a<2**40?5:6,$y=a=>a<1n<<8n?1:a<1n<<16n?2:a<1n<<24n?3:a<1n<<32n?4:a<1n<<40n?5:a<1n<<48n?6:a<1n<<56n?7:8,qy=a=>a>=-64&&a<64?1:a>=-8192&&a<8192?2:a>=-1048576&&a<1<<20?3:a>=-134217728&&a<1<<27?4:a>=-17179869184&&a<2**34?5:6,MG=a=>{if(a<127)return 1;if(a<16383)return 2;if(a<(1<<21)-1)return 3;if(a<(1<<28)-1)return 4;if(a<2**35-1)return 5;if(a<2**42-1)return 6;throw new Error("EBML varint size not supported "+a)};class zG{constructor(t){this.writer=t,this.helper=new Uint8Array(8),this.helperView=new DataView(this.helper.buffer),this.offsets=new WeakMap,this.dataOffsets=new WeakMap}writeByte(t){this.helperView.setUint8(0,t),this.writer.write(this.helper.subarray(0,1))}writeFloat32(t){this.helperView.setFloat32(0,t,!1),this.writer.write(this.helper.subarray(0,4))}writeFloat64(t){this.helperView.setFloat64(0,t,!1),this.writer.write(this.helper)}writeUnsignedInt(t,i=Ty(t)){let n=0;switch(i){case 6:this.helperView.setUint8(n++,t/2**40|0);case 5:this.helperView.setUint8(n++,t/2**32|0);case 4:this.helperView.setUint8(n++,t>>24);case 3:this.helperView.setUint8(n++,t>>16);case 2:this.helperView.setUint8(n++,t>>8);case 1:this.helperView.setUint8(n++,t);break;default:throw new Error("Bad unsigned int size "+i)}this.writer.write(this.helper.subarray(0,n))}writeUnsignedBigInt(t,i=$y(t)){let n=0;for(let s=i-1;s>=0;s--)this.helperView.setUint8(n++,Number(t>>BigInt(s*8)&0xffn));this.writer.write(this.helper.subarray(0,n))}writeSignedInt(t,i=qy(t)){t<0&&(t+=2**(i*8)),this.writeUnsignedInt(t,i)}writeVarInt(t,i=MG(t)){let n=0;switch(i){case 1:this.helperView.setUint8(n++,128|t);break;case 2:this.helperView.setUint8(n++,64|t>>8),this.helperView.setUint8(n++,t);break;case 3:this.helperView.setUint8(n++,32|t>>16),this.helperView.setUint8(n++,t>>8),this.helperView.setUint8(n++,t);break;case 4:this.helperView.setUint8(n++,16|t>>24),this.helperView.setUint8(n++,t>>16),this.helperView.setUint8(n++,t>>8),this.helperView.setUint8(n++,t);break;case 5:this.helperView.setUint8(n++,8|t/2**32&7),this.helperView.setUint8(n++,t>>24),this.helperView.setUint8(n++,t>>16),this.helperView.setUint8(n++,t>>8),this.helperView.setUint8(n++,t);break;case 6:this.helperView.setUint8(n++,4|t/2**40&3),this.helperView.setUint8(n++,t/2**32|0),this.helperView.setUint8(n++,t>>24),this.helperView.setUint8(n++,t>>16),this.helperView.setUint8(n++,t>>8),this.helperView.setUint8(n++,t);break;default:throw new Error("Bad EBML varint size "+i)}this.writer.write(this.helper.subarray(0,n))}writeAsciiString(t){this.writer.write(new Uint8Array(t.split("").map(i=>i.charCodeAt(0))))}writeEBML(t){if(t!==null)if(t instanceof Uint8Array)this.writer.write(t);else if(Array.isArray(t))for(const i of t)this.writeEBML(i);else if(this.offsets.set(t,this.writer.getPos()),this.writeUnsignedInt(t.id),Array.isArray(t.data)){const i=this.writer.getPos(),n=t.size===-1?1:t.size??4;t.size===-1?this.writeByte(255):this.writer.seek(this.writer.getPos()+n);const s=this.writer.getPos();if(this.dataOffsets.set(t,s),this.writeEBML(t.data),t.size!==-1){const r=this.writer.getPos()-s,o=this.writer.getPos();this.writer.seek(i),this.writeVarInt(r,n),this.writer.seek(o)}}else if(typeof t.data=="number"){const i=t.size??Ty(t.data);this.writeVarInt(i),this.writeUnsignedInt(t.data,i)}else if(typeof t.data=="bigint"){const i=t.size??$y(t.data);this.writeVarInt(i),this.writeUnsignedBigInt(t.data,i)}else if(typeof t.data=="string")this.writeVarInt(t.data.length),this.writeAsciiString(t.data);else if(t.data instanceof Uint8Array)this.writeVarInt(t.data.byteLength,t.size),this.writer.write(t.data);else if(t.data instanceof Kd)this.writeVarInt(4),this.writeFloat32(t.data.value);else if(t.data instanceof n0)this.writeVarInt(8),this.writeFloat64(t.data.value);else if(t.data instanceof Sy){const i=t.size??qy(t.data.value);this.writeVarInt(i),this.writeSignedInt(t.data.value,i)}else if(t.data instanceof al){const i=ys.encode(t.data.value);this.writeVarInt(i.length),this.writer.write(i)}else _o(t.data)}}const EG={avc:"V_MPEG4/ISO/AVC",hevc:"V_MPEGH/ISO/HEVC",vp8:"V_VP8",vp9:"V_VP9",av1:"V_AV1",prores:"V_PRORES",aac:"A_AAC",mp3:"A_MPEG/L3",opus:"A_OPUS",vorbis:"A_VORBIS",flac:"A_FLAC",ac3:"A_AC3",eac3:"A_EAC3",dts:"A_DTS","pcm-u8":"A_PCM/INT/LIT","pcm-s16":"A_PCM/INT/LIT","pcm-s16be":"A_PCM/INT/BIG","pcm-s24":"A_PCM/INT/LIT","pcm-s24be":"A_PCM/INT/BIG","pcm-s32":"A_PCM/INT/LIT","pcm-s32be":"A_PCM/INT/BIG","pcm-f32":"A_PCM/FLOAT/IEEE","pcm-f64":"A_PCM/FLOAT/IEEE",webvtt:"S_TEXT/WEBVTT"};const UG=a=>{let i=(a.hasVideo?"video/":a.hasAudio?"audio/":"application/")+(a.isWebM?"webm":"x-matroska");if(a.codecStrings.length>0){const n=[...new Set(a.codecStrings.filter(Boolean))];i+=`; codecs="${n.join(", ")}"`}return i};const Ay=7,Cy=9,Mf=a=>{const t=a.filePos,i=tF(a,9),n=new Pn(i);if(n.readBits(12)!==4095||(n.skipBits(1),n.readBits(2)!==0))return null;const o=n.readBits(1),l=n.readBits(2)+1,c=n.readBits(4);if(c===15)return null;n.skipBits(1);const d=n.readBits(3);if(d===0)throw new Error("ADTS frames with channel configuration 0 are not supported.");n.skipBits(1),n.skipBits(1),n.skipBits(1),n.skipBits(1);const g=n.readBits(13);n.skipBits(11);const h=n.readBits(2)+1;if(h!==1)throw new Error("ADTS frames with more than one AAC frame are not supported.");let m=null;return o===1?a.filePos-=2:m=n.readBits(16),{objectType:l,samplingFrequencyIndex:c,channelConfiguration:d,frameLength:g,numberOfAacFrames:h,crcCheck:m,startPos:t}};var RG=function(a,t,i){if(t!=null){if(typeof t!="object"&&typeof t!="function")throw new TypeError("Object expected.");var n,s;if(i){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");n=t[Symbol.asyncDispose]}if(n===void 0){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");n=t[Symbol.dispose],i&&(s=n)}if(typeof n!="function")throw new TypeError("Object not disposable.");s&&(n=function(){try{s.call(this)}catch(r){return Promise.reject(r)}}),a.stack.push({value:t,dispose:n,async:i})}else i&&a.stack.push({async:!0});return t},BG=(function(a){return function(t){function i(o){t.error=t.hasError?new a(o,t.error,"An error was suppressed during disposal."):o,t.hasError=!0}var n,s=0;function r(){for(;n=t.stack.pop();)try{if(!n.async&&s===1)return s=0,t.stack.push(n),Promise.resolve().then(r);if(n.dispose){var o=n.dispose.call(n.value);if(n.async)return s|=2,Promise.resolve(o).then(r,function(l){return i(l),r()})}else s|=1}catch(l){i(l)}if(s===1)return t.hasError?Promise.reject(t.error):Promise.resolve();if(t.hasError)throw t.error}return r()}})(typeof SuppressedError=="function"?SuppressedError:function(a,t,i){var n=new Error(i);return n.name="SuppressedError",n.error=a,n.suppressed=t,n});$C();let Gy=-1/0,Fy=-1/0,Yd=null;typeof FinalizationRegistry<"u"&&(Yd=new FinalizationRegistry(a=>{const t=performance.now();a.type==="video"?(t-Gy>=1e3&&(wn._error("A VideoSample was garbage collected without first being closed. For proper resource management, make sure to call close() on all your VideoSamples as soon as you're done using them."),Gy=t),typeof VideoFrame<"u"&&a.data instanceof VideoFrame&&a.data.close()):(t-Fy>=1e3&&(wn._error("An AudioSample was garbage collected without first being closed. For proper resource management, make sure to call close() on all your AudioSamples as soon as you're done using them."),Fy=t),typeof AudioData<"u"&&a.data instanceof AudioData&&a.data.close())}));class Jl{constructor(){this._referenceCount=0,this._lastAllocationBuffer=null}}const s0=["I420","I420P10","I420P12","I420A","I420AP10","I420AP12","I422","I422P10","I422P12","I422A","I422AP10","I422AP12","I444","I444P10","I444P12","I444A","I444AP10","I444AP12","NV12","RGBA","RGBX","BGRA","BGRX"],PG=new Set(s0);class Is{get codedWidth(){return this.visibleRect.width}get codedHeight(){return this.visibleRect.height}get displayWidth(){return this.rotation%180===0?this.squarePixelWidth:this.squarePixelHeight}get displayHeight(){return this.rotation%180===0?this.squarePixelHeight:this.squarePixelWidth}get microsecondTimestamp(){return Math.trunc(Xo*this.timestamp)}get microsecondDuration(){return Math.trunc(Xo*this.duration)}get hasAlpha(){return this.format&&this.format.includes("A")}constructor(t,i){if(this._closed=!1,t instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&t instanceof SharedArrayBuffer||ArrayBuffer.isView(t)){if(!i||typeof i!="object")throw new TypeError("init must be an object.");if(i.format===void 0||!PG.has(i.format))throw new TypeError("init.format must be one of: "+s0.join(", "));if(!Number.isInteger(i.codedWidth)||i.codedWidth<=0)throw new TypeError("init.codedWidth must be a positive integer.");if(!Number.isInteger(i.codedHeight)||i.codedHeight<=0)throw new TypeError("init.codedHeight must be a positive integer.");if(i.rotation!==void 0&&![0,90,180,270].includes(i.rotation))throw new TypeError("init.rotation, when provided, must be 0, 90, 180, or 270.");if(i.flip!==void 0&&typeof i.flip!="boolean")throw new TypeError("init.flip, when provided, must be a boolean.");if(!Number.isFinite(i.timestamp))throw new TypeError("init.timestamp must be a number.");if(i.duration!==void 0&&(!Number.isFinite(i.duration)||i.duration<0))throw new TypeError("init.duration, when provided, must be a non-negative number.");if(i.layout!==void 0){if(!Array.isArray(i.layout))throw new TypeError("init.layout, when provided, must be an array.");for(const r of i.layout){if(!r||typeof r!="object"||Array.isArray(r))throw new TypeError("Each entry in init.layout must be an object.");if(!Number.isInteger(r.offset)||r.offset<0)throw new TypeError("plane.offset must be a non-negative integer.");if(!Number.isInteger(r.stride)||r.stride<0)throw new TypeError("plane.stride must be a non-negative integer.")}}if(i.visibleRect!==void 0&&Wm(i.visibleRect,"init.visibleRect"),i.displayWidth!==void 0&&(!Number.isInteger(i.displayWidth)||i.displayWidth<=0))throw new TypeError("init.displayWidth, when provided, must be a positive integer.");if(i.displayHeight!==void 0&&(!Number.isInteger(i.displayHeight)||i.displayHeight<=0))throw new TypeError("init.displayHeight, when provided, must be a positive integer.");if(i.displayWidth!==void 0!=(i.displayHeight!==void 0))throw new TypeError("init.displayWidth and init.displayHeight must be either both provided or both omitted.");this.format=i.format,this.rotation=i.rotation??0,this.flip=i.flip??!1,this.timestamp=i.timestamp,this.duration=i.duration??0;const n=i.layout??OG(i.format,i.codedWidth,i.codedHeight);let s=i.colorSpace??null;s===null&&(this.format==="RGBA"||this.format==="RGBX"||this.format==="BGRA"||this.format==="BGRX"?s={primaries:"bt709",transfer:"iec61966-2-1",matrix:"rgb",fullRange:!0}:s={primaries:"bt709",transfer:"bt709",matrix:"bt709",fullRange:!1}),this.visibleRect={left:i.visibleRect?.left??0,top:i.visibleRect?.top??0,width:i.visibleRect?.width??i.codedWidth,height:i.visibleRect?.height??i.codedHeight},i.displayWidth!==void 0?(this.squarePixelWidth=this.rotation%180===0?i.displayWidth:i.displayHeight,this.squarePixelHeight=this.rotation%180===0?i.displayHeight:i.displayWidth):(this.squarePixelWidth=this.visibleRect.width,this.squarePixelHeight=this.visibleRect.height),this._data=i._doNotCopy?zs(t):zs(t).slice(),this._layout=n,this.colorSpace=new r0(s)}else if(typeof VideoFrame<"u"&&t instanceof VideoFrame){if(i?.rotation!==void 0&&![0,90,180,270].includes(i.rotation))throw new TypeError("init.rotation, when provided, must be 0, 90, 180, or 270.");if(i?.flip!==void 0&&typeof i.flip!="boolean")throw new TypeError("init.flip, when provided, must be a boolean.");if(i?.timestamp!==void 0&&!Number.isFinite(i?.timestamp))throw new TypeError("init.timestamp, when provided, must be a number.");if(i?.duration!==void 0&&(!Number.isFinite(i.duration)||i.duration<0))throw new TypeError("init.duration, when provided, must be a non-negative number.");i?.visibleRect!==void 0&&Wm(i.visibleRect,"init.visibleRect"),this._data=t,this._layout=null,this.format=t.format,this.visibleRect={left:t.visibleRect?.x??0,top:t.visibleRect?.y??0,width:t.visibleRect?.width??t.codedWidth,height:t.visibleRect?.height??t.codedHeight},this.rotation=i?.rotation??0,this.flip=i?.flip??!1,this.squarePixelWidth=t.displayWidth,this.squarePixelHeight=t.displayHeight,this.timestamp=i?.timestamp??t.timestamp/1e6,this.duration=i?.duration??(t.duration??0)/1e6,this.colorSpace=new r0(t.colorSpace)}else if(typeof HTMLImageElement<"u"&&t instanceof HTMLImageElement||typeof SVGImageElement<"u"&&t instanceof SVGImageElement||typeof ImageBitmap<"u"&&t instanceof ImageBitmap||typeof HTMLVideoElement<"u"&&t instanceof HTMLVideoElement||typeof HTMLCanvasElement<"u"&&t instanceof HTMLCanvasElement||typeof OffscreenCanvas<"u"&&t instanceof OffscreenCanvas){if(!i||typeof i!="object")throw new TypeError("init must be an object.");if(i.rotation!==void 0&&![0,90,180,270].includes(i.rotation))throw new TypeError("init.rotation, when provided, must be 0, 90, 180, or 270.");if(i.flip!==void 0&&typeof i.flip!="boolean")throw new TypeError("init.flip, when provided, must be a boolean.");if(!Number.isFinite(i.timestamp))throw new TypeError("init.timestamp must be a number.");if(i.duration!==void 0&&(!Number.isFinite(i.duration)||i.duration<0))throw new TypeError("init.duration, when provided, must be a non-negative number.");if(i.visibleRect!==void 0&&Wm(i.visibleRect,"init.visibleRect"),typeof VideoFrame<"u")return new Is(new VideoFrame(t,{timestamp:Math.trunc(i.timestamp*Xo),duration:Math.trunc((i.duration??0)*Xo)||void 0,visibleRect:i.visibleRect&&{x:i.visibleRect.left,y:i.visibleRect.top,width:i.visibleRect.width,height:i.visibleRect.height}}),i);let n=0,s=0;if("naturalWidth"in t?(n=t.naturalWidth,s=t.naturalHeight):"videoWidth"in t?(n=t.videoWidth,s=t.videoHeight):"width"in t&&(n=Number(t.width),s=Number(t.height)),!n||!s)throw new TypeError("Could not determine dimensions.");const r=i.visibleRect??{left:0,top:0,width:n,height:s},o=new OffscreenCanvas(r.width,r.height),l=o.getContext("2d",{alpha:Xb(),willReadFrequently:!0});if(!l)throw new Error("OffscreenCanvas must have support for the '2d' context in order to create a VideoSample from this data.");l.drawImage(t,-r.left,-r.top),this._data=o,this._layout=null,this.format="RGBX",this.visibleRect={left:0,top:0,width:r.width,height:r.height},this.squarePixelWidth=r.width,this.squarePixelHeight=r.height,this.rotation=i.rotation??0,this.flip=i.flip??!1,this.timestamp=i.timestamp,this.duration=i.duration??0,this.colorSpace=new r0({matrix:"rgb",primaries:"bt709",transfer:"iec61966-2-1",fullRange:!0})}else if(t instanceof Jl){if(!i||typeof i!="object")throw new TypeError("init must be an object.");if(i.rotation!==void 0&&![0,90,180,270].includes(i.rotation))throw new TypeError("init.rotation, when provided, must be 0, 90, 180, or 270.");if(i.flip!==void 0&&typeof i.flip!="boolean")throw new TypeError("init.flip, when provided, must be a boolean.");if(!Number.isFinite(i.timestamp))throw new TypeError("init.timestamp must be a number.");if(i.duration!==void 0&&(!Number.isFinite(i.duration)||i.duration<0))throw new TypeError("init.duration, when provided, must be a non-negative number.");if(this._data=t,t._referenceCount++,this.format=t.getFormat(),this.format!==null&&!s0.includes(this.format))throw new TypeError("getFormat() must return a VideoSamplePixelFormat or null.");if(this.visibleRect={left:0,top:0,width:t.getCodedWidth(),height:t.getCodedHeight()},!Number.isInteger(this.visibleRect.width)||this.visibleRect.width<=0)throw new TypeError("getCodedWidth() must return a positive integer.");if(!Number.isInteger(this.visibleRect.height)||this.visibleRect.height<=0)throw new TypeError("getCodedHeight() must return a positive integer.");if(this.squarePixelWidth=t.getSquarePixelWidth(),!Number.isInteger(this.squarePixelWidth)||this.squarePixelWidth<=0)throw new TypeError("getSquarePixelWidth() must return a positive integer.");if(this.squarePixelHeight=t.getSquarePixelHeight(),!Number.isInteger(this.squarePixelHeight)||this.squarePixelHeight<=0)throw new TypeError("getSquarePixelHeight() must return a positive integer.");this.rotation=i.rotation??0,this.flip=i.flip??!1,this.timestamp=i.timestamp,this.duration=i.duration??0,this.colorSpace=t.getColorSpace()}else throw new TypeError("Invalid data type: Must be a BufferSource, CanvasImageSource, or VideoSampleResource.");this.encodeOptions=i?.encodeOptions??{},this.pixelAspectRatio=Hm({num:this.squarePixelWidth*this.codedHeight,den:this.squarePixelHeight*this.codedWidth}),Yd?.register(this,{type:"video",data:this._data},this)}clone(){if(this._closed)throw new Error("VideoSample is closed.");return We(this._data!==null),this._data instanceof Jl?new Is(this._data,{timestamp:this.timestamp,duration:this.duration,rotation:this.rotation,flip:this.flip,encodeOptions:this.encodeOptions}):Xd(this._data)?new Is(this._data.clone(),{timestamp:this.timestamp,duration:this.duration,rotation:this.rotation,flip:this.flip,encodeOptions:this.encodeOptions}):this._data instanceof Uint8Array?(We(this._layout),new Is(this._data,{format:this.format,layout:this._layout,codedWidth:this.codedWidth,codedHeight:this.codedHeight,timestamp:this.timestamp,duration:this.duration,colorSpace:this.colorSpace,rotation:this.rotation,flip:this.flip,visibleRect:this.visibleRect,displayWidth:this.displayWidth,displayHeight:this.displayHeight,encodeOptions:this.encodeOptions,_doNotCopy:!0})):new Is(this._data,{format:this.format,codedWidth:this.codedWidth,codedHeight:this.codedHeight,timestamp:this.timestamp,duration:this.duration,colorSpace:this.colorSpace,rotation:this.rotation,flip:this.flip,visibleRect:this.visibleRect,displayWidth:this.displayWidth,displayHeight:this.displayHeight,encodeOptions:this.encodeOptions})}close(){this._closed||(Yd?.unregister(this),this._data instanceof Jl?(this._data._referenceCount--,this._data._referenceCount===0&&this._data.close()):Xd(this._data)?this._data.close():this._data=null,this._closed=!0)}allocationSize(t={}){if(Uy(t),this._closed)throw new Error("VideoSample is closed.");if((t.format??this.format)==null)throw new Error("Cannot get allocation size when format is null.");return Xd(this._data)?this._data.allocationSize(t):Ry(this,t).allocationSize}async copyTo(t,i={}){if(!Tf(t))throw new TypeError("destination must be an ArrayBuffer or an ArrayBuffer view.");if(Uy(i),this._closed)throw new Error("VideoSample is closed.");if((i.format??this.format)==null)throw new Error("Cannot copy video sample data when format is null.");if(We(this._data!==null),Xd(this._data))return this._data.copyTo(t,i);if(i.format&&!["RGBA","RGBX","BGRA","BGRX"].includes(this.format)&&["RGBA","RGBX","BGRA","BGRX"].includes(i.format))if(this._data instanceof Jl){const d={stack:[],error:void 0,hasError:!1};try{const g=RG(d,await this._data.toRgbSample({timestamp:this.timestamp,duration:this.duration,rotation:this.rotation,flip:this.flip},i.colorSpace??"srgb"),!1);if(!(g instanceof Is))throw new TypeError("toRgbSample() must return a VideoSample.");if(!["RGBA","RGBX","BGRA","BGRX"].includes(g.format))throw new Error(`Sample returned by toRgbSample was expected to have an RGB format, got '${g.format}' instead.`);return await g.copyTo(t,i)}catch(g){d.error=g,d.hasError=!0}finally{BG(d)}}else{if(typeof VideoFrame>"u")throw new Error("For this sample, converting from a non-RGB to an RGB format requires VideoFrame to be defined.");const d=this.toVideoFrame(),g=await d.copyTo(t,i);return d.close(),g}const n=Ry(this,i);We(this.format);const s=zs(t);if(s.byteLength<n.allocationSize)throw new TypeError(`Destination buffer too small. Required: ${n.allocationSize}, Available: ${s.byteLength}`);const r=zf(this.format);let o;if(this._data instanceof Jl){let d=this._data.getDataPlanes();if(Zo(d)&&(d=await d),!Array.isArray(d)||d.some(g=>!(g.data instanceof Uint8Array)||!Number.isInteger(g.stride)||g.stride<0))throw new TypeError('getDataPlanes() must return an array of objects with a Uint8Array "data" property and a non-negative integer "stride" property.');o=d}else if(this._data instanceof Uint8Array)We(this._layout),We(this._layout.length===r.length),o=this._layout.map((d,g)=>{const h=Math.ceil(this.codedHeight/r[g].heightDivisor);return{data:this._data.subarray(d.offset,d.offset+d.stride*h),stride:d.stride}});else{const g=this._data.getContext("2d");We(g);const h=g.getImageData(0,0,this.codedWidth,this.codedHeight);o=[{data:zs(h.data),stride:4*this.codedWidth}]}const l=[],c=r.length;for(let d=0;d<c;d++){const g=n.computedLayouts[d],h=o[d].stride,m=o[d].data;let p=g.sourceTop*h;p+=g.sourceLeftBytes;let u=g.destinationOffset;const f=g.sourceWidthBytes,_={offset:u,stride:g.destinationStride};for(let v=0;v<g.sourceHeight;v++){if(p+f>m.byteLength)throw new Error("Source buffer OOB read.");if(u+f>s.byteLength)throw new Error("Destination buffer OOB write.");const y=m.subarray(p,p+f);s.set(y,u),p+=h,u+=g.destinationStride}l.push(_)}if(i.format!==void 0){const d=this.format.startsWith("RGB")!==i.format.startsWith("RGB"),g=this.format.includes("X")&&i.format.includes("A");if(d||g)for(let h=0;h<n.allocationSize;h+=4){if(d){const m=s[h],p=s[h+2];s[h]=p,s[h+2]=m}g&&(s[h+3]=255)}}return l}toVideoFrame(){if(this._closed)throw new Error("VideoSample is closed.");if(We(this._data!==null),this._data instanceof Jl){if(this.format===null)throw new Error("Cannot convert a VideoSampleResource-backed VideoSample to VideoFrame if format is null.");const t=this._data.getDataPlanes();if(Zo(t))throw new Error("Cannot convert a VideoSampleResource-backed VideoSample to VideoFrame if getDataPlanes() returns a promise.");const i=t.reduce((o,l)=>o+l.data.byteLength,0),n=new Uint8Array(i);let s=0;const r=[];for(const o of t)n.set(o.data,s),r.push(s),s+=o.data.byteLength;return new VideoFrame(n,{format:this.format,layout:t.map((o,l)=>({offset:r[l],stride:o.stride})),codedWidth:this.codedWidth,codedHeight:this.codedHeight,timestamp:this.microsecondTimestamp,duration:this.microsecondDuration,colorSpace:this.colorSpace,visibleRect:this.visibleRect,displayWidth:this.squarePixelWidth,displayHeight:this.squarePixelHeight})}else return Xd(this._data)?new VideoFrame(this._data,{timestamp:this.microsecondTimestamp,duration:this.microsecondDuration||void 0}):this._data instanceof Uint8Array?(We(this._layout),new VideoFrame(this._data,{format:this.format,codedWidth:this.codedWidth,codedHeight:this.codedHeight,layout:this._layout,timestamp:this.microsecondTimestamp,duration:this.microsecondDuration||void 0,colorSpace:this.colorSpace,visibleRect:this.visibleRect,displayWidth:this.squarePixelWidth,displayHeight:this.squarePixelHeight})):new VideoFrame(this._data,{timestamp:this.microsecondTimestamp,duration:this.microsecondDuration||void 0})}draw(t,i,n,s,r,o,l,c,d){let g=0,h=0,m=this.displayWidth,p=this.displayHeight,u=0,f=0,_=this.displayWidth,v=this.displayHeight;if(o!==void 0?(g=i,h=n,m=s,p=r,u=o,f=l,c!==void 0?(_=c,v=d):(_=m,v=p)):(u=i,f=n,s!==void 0&&(_=s,v=r)),!(typeof CanvasRenderingContext2D<"u"&&t instanceof CanvasRenderingContext2D||typeof OffscreenCanvasRenderingContext2D<"u"&&t instanceof OffscreenCanvasRenderingContext2D))throw new TypeError("context must be a CanvasRenderingContext2D or OffscreenCanvasRenderingContext2D.");if(!Number.isFinite(g))throw new TypeError("sx must be a number.");if(!Number.isFinite(h))throw new TypeError("sy must be a number.");if(!Number.isFinite(m)||m<0)throw new TypeError("sWidth must be a non-negative number.");if(!Number.isFinite(p)||p<0)throw new TypeError("sHeight must be a non-negative number.");if(!Number.isFinite(u))throw new TypeError("dx must be a number.");if(!Number.isFinite(f))throw new TypeError("dy must be a number.");if(!Number.isFinite(_)||_<0)throw new TypeError("dWidth must be a non-negative number.");if(!Number.isFinite(v)||v<0)throw new TypeError("dHeight must be a non-negative number.");if(this._closed)throw new Error("VideoSample is closed.");({sx:g,sy:h,sWidth:m,sHeight:p}=this._unmapSourceRegion(g,h,m,p,this.rotation,this.flip));const y=this.toCanvasImageSource();t.save();const S=u+_/2,q=f+v/2;t.translate(S,q),this.flip&&t.scale(-1,1),t.rotate(this.rotation*Math.PI/180);const M=this.rotation%180===0?1:_/v;t.scale(1/M,M),t.drawImage(y,g,h,m,p,-_/2,-v/2,_,v),t.restore()}drawWithFit(t,i){if(!(typeof CanvasRenderingContext2D<"u"&&t instanceof CanvasRenderingContext2D||typeof OffscreenCanvasRenderingContext2D<"u"&&t instanceof OffscreenCanvasRenderingContext2D))throw new TypeError("context must be a CanvasRenderingContext2D or OffscreenCanvasRenderingContext2D.");if(!i||typeof i!="object")throw new TypeError("options must be an object.");if(!["fill","contain","cover"].includes(i.fit))throw new TypeError("options.fit must be 'fill', 'contain', or 'cover'.");if(i.rotation!==void 0&&![0,90,180,270].includes(i.rotation))throw new TypeError("options.rotation, when provided, must be 0, 90, 180, or 270.");if(i.flip!==void 0&&typeof i.flip!="boolean")throw new TypeError("options.flip, when provided, must be a boolean.");i.crop!==void 0&&o0(i.crop,"options.");const n=t.canvas.width,s=t.canvas.height,r=i.rotation??this.rotation,o=i.flip??this.flip,[l,c]=r%180===0?[this.squarePixelWidth,this.squarePixelHeight]:[this.squarePixelHeight,this.squarePixelWidth];let d=i.crop;d&&(d=Ey(d,l,c));let g,h,m,p;const{sx:u,sy:f,sWidth:_,sHeight:v}=this._unmapSourceRegion(i.crop?.left??0,i.crop?.top??0,i.crop?.width??l,i.crop?.height??c,r,o);if(i.fit==="fill")g=0,h=0,m=n,p=s;else{const[S,q]=i.crop?[i.crop.width,i.crop.height]:[l,c],M=i.fit==="contain"?Math.min(n/S,s/q):Math.max(n/S,s/q);m=S*M,p=q*M,g=(n-m)/2,h=(s-p)/2}t.save();const y=r%180===0?1:m/p;t.translate(n/2,s/2),o&&t.scale(-1,1),t.rotate(r*Math.PI/180),t.scale(1/y,y),t.translate(-n/2,-s/2),t.drawImage(this.toCanvasImageSource(),u,f,_,v,g,h,m,p),t.restore()}_unmapSourceRegion(t,i,n,s,r,o){return o&&(t=(r%180===0?this.squarePixelWidth:this.squarePixelHeight)-t-n),r===90?[t,i,n,s]=[i,this.squarePixelHeight-t-n,s,n]:r===180?[t,i]=[this.squarePixelWidth-t-n,this.squarePixelHeight-i-s]:r===270&&([t,i,n,s]=[this.squarePixelWidth-i-s,t,s,n]),{sx:t,sy:i,sWidth:n,sHeight:s}}_drawWithFitAndMipmapping(t,i,n){const s=t.width,r=t.height,[o,l]=n.rotation%180===0?[this.squarePixelWidth,this.squarePixelHeight]:[this.squarePixelHeight,this.squarePixelWidth],c=n.crop?n.crop.width:o,d=n.crop?n.crop.height:l;let g=0;2*s<c&&2*r<d&&(g=Math.floor(Math.log2(Math.min(c/s,d/r))));const h=s*2**g,m=r*2**g,{canvas:p,context:u,isNew:f}=g>0?zy(h,m):{canvas:t,context:i,isNew:n.targetIsFresh};u.imageSmoothingQuality="high",n.fillBlack?(u.fillStyle="black",u.fillRect(0,0,h,m)):f||u.clearRect(0,0,h,m),this.drawWithFit(u,{fit:n.fit,rotation:n.rotation,flip:n.flip,crop:n.crop}),u.globalCompositeOperation="copy";for(let _=g;_>1;_--){const v=s*2**_,y=r*2**_;u.drawImage(p,0,0,v,y,0,0,v/2,y/2)}u.globalCompositeOperation="source-over",g>0&&(i.imageSmoothingQuality="high",i.globalCompositeOperation="copy",i.drawImage(p,0,0,2*s,2*r,0,0,s,r),i.globalCompositeOperation="source-over")}toCanvasImageSource(){if(this._closed)throw new Error("VideoSample is closed.");if(We(this._data!==null),this._data instanceof Jl||this._data instanceof Uint8Array){const t=this.toVideoFrame();return queueMicrotask(()=>t.close()),t}else return this._data}async transform(t){if(!t||typeof t!="object")throw new TypeError("options must be an object.");if(t.width!==void 0&&(!Number.isInteger(t.width)||t.width<=0))throw new TypeError("options.width, when provided, must be a positive integer.");if(t.height!==void 0&&(!Number.isInteger(t.height)||t.height<=0))throw new TypeError("options.height, when provided, must be a positive integer.");if(t.roundDimensionsTo!==void 0&&(!Number.isInteger(t.roundDimensionsTo)||t.roundDimensionsTo<=0))throw new TypeError("options.roundDimensionsTo, when provided, must be a positive integer.");if(t.fit!==void 0&&!["fill","contain","cover"].includes(t.fit))throw new TypeError('options.fit, when provided, must be one of "fill", "contain", or "cover".');if(t.width!==void 0&&t.height!==void 0&&t.fit===void 0)throw new TypeError("When both options.width and options.height are provided, options.fit must also be provided.");if(t.rotate!==void 0&&![0,90,180,270].includes(t.rotate))throw new TypeError("options.rotate, when provided, must be 0, 90, 180 or 270.");if(t.flip!==void 0&&typeof t.flip!="boolean")throw new TypeError("options.flip, when provided, must be a boolean.");if(t.crop!==void 0&&o0(t.crop,"options."),t.alpha!==void 0&&!["keep","discard"].includes(t.alpha))throw new TypeError("options.alpha, when provided, must be 'keep' or 'discard'.");const{rotation:i,flip:n}=dC(this.rotation,this.flip,t.rotate??0,t.flip??!1),[s,r]=i%180===0?[this.squarePixelWidth,this.squarePixelHeight]:[this.squarePixelHeight,this.squarePixelWidth];let o=t.crop;o&&(o=Ey(o,s,r));const l=o?o.width:s,c=o?o.height:r,d=l/c;let g,h;t.width!==void 0&&t.height===void 0?(g=t.width,h=g/d):t.width===void 0&&t.height!==void 0?(h=t.height,g=h*d):t.width!==void 0&&t.height!==void 0?(g=t.width,h=t.height):(g=l,h=c),g=Om(g,t.roundDimensionsTo??1),h=Om(h,t.roundDimensionsTo??1);const m={width:g,height:h,fit:t.fit??"fill",rotation:i,flip:n,crop:o??{left:0,top:0,width:s,height:r},alpha:t.alpha??"keep"};for(const _ of jG){let v=_(this,m);if(Zo(v)&&(v=await v),v!==null)return v}const{canvas:p,context:u,isNew:f}=zy(m.width,m.height);return this._drawWithFitAndMipmapping(p,u,{fit:m.fit,rotation:m.rotation,flip:m.flip,crop:m.crop,targetIsFresh:f,fillBlack:m.alpha==="discard"}),new Is(p,{timestamp:this.timestamp,duration:this.duration,rotation:0,flip:!1})}setRotation(t){if(![0,90,180,270].includes(t))throw new TypeError("newRotation must be 0, 90, 180, or 270.");this.rotation=t}setFlip(t){if(typeof t!="boolean")throw new TypeError("newFlip must be a boolean.");this.flip=t}setTimestamp(t){if(!Number.isFinite(t))throw new TypeError("newTimestamp must be a number.");this.timestamp=t}setDuration(t){if(!Number.isFinite(t)||t<0)throw new TypeError("newDuration must be a non-negative number.");this.duration=t}setEncodeOptions(t){if(!t||typeof t!="object")throw new TypeError("newEncodeOptions must be an object.");this.encodeOptions=t}[Symbol.dispose](){this.close()}}const jG=[],NG=3,Jd=[];let My=0;const zy=(a,t)=>{for(const s of Jd)if(s.canvas.width===a&&s.canvas.height===t)return s.age=My++,{canvas:s.canvas,context:s.context,isNew:!1};let i;if(typeof OffscreenCanvas<"u")i=new OffscreenCanvas(a,t);else{if(typeof window>"u"||typeof document>"u")throw new Error("Cannot transform VideoSamples in this environment. Either run in an environment with OffscreenCanvas or HTMLCanvasElement, or supply a custom VideoSample transformer using registerVideoSampleTransformer().");i=document.createElement("canvas"),i.width=a,i.height=t}const n=i.getContext("2d",{alpha:!0,willReadFrequently:!1});if(!n)throw new Error("The '2d' canvas context is required to transform VideoSamples. Register a custom transformer using registerVideoSampleTransformer to work around this limitation.");return Jd.length>=NG&&Jd.splice(qC(Jd,s=>s.age),1),Jd.push({canvas:i,context:n,age:My++}),{canvas:i,context:n,isNew:!0}};class r0{constructor(t){if(t!==void 0){if(!t||typeof t!="object")throw new TypeError("init.colorSpace, when provided, must be an object.");const i=Object.keys(Id);if(t.primaries!=null&&!i.includes(t.primaries))throw new TypeError(`init.colorSpace.primaries, when provided, must be one of ${i.join(", ")}.`);const n=Object.keys(Ld);if(t.transfer!=null&&!n.includes(t.transfer))throw new TypeError(`init.colorSpace.transfer, when provided, must be one of ${n.join(", ")}.`);const s=Object.keys(Vd);if(t.matrix!=null&&!s.includes(t.matrix))throw new TypeError(`init.colorSpace.matrix, when provided, must be one of ${s.join(", ")}.`);if(t.fullRange!=null&&typeof t.fullRange!="boolean")throw new TypeError("init.colorSpace.fullRange, when provided, must be a boolean.")}this.primaries=t?.primaries??null,this.transfer=t?.transfer??null,this.matrix=t?.matrix??null,this.fullRange=t?.fullRange??null}toJSON(){return{primaries:this.primaries,transfer:this.transfer,matrix:this.matrix,fullRange:this.fullRange}}}const Xd=a=>typeof VideoFrame<"u"&&a instanceof VideoFrame,Ey=(a,t,i)=>{const n=Math.min(a.left,t),s=Math.min(a.top,i),r=Math.min(a.width,t-n),o=Math.min(a.height,i-s);return We(r>=0),We(o>=0),{left:n,top:s,width:r,height:o}},o0=(a,t)=>{if(!a||typeof a!="object")throw new TypeError(t+"crop, when provided, must be an object.");if(!Number.isInteger(a.left)||a.left<0)throw new TypeError(t+"crop.left must be a non-negative integer.");if(!Number.isInteger(a.top)||a.top<0)throw new TypeError(t+"crop.top must be a non-negative integer.");if(!Number.isInteger(a.width)||a.width<0)throw new TypeError(t+"crop.width must be a non-negative integer.");if(!Number.isInteger(a.height)||a.height<0)throw new TypeError(t+"crop.height must be a non-negative integer.")},Uy=a=>{if(!a||typeof a!="object")throw new TypeError("options must be an object.");if(a.colorSpace!==void 0&&!["display-p3","srgb"].includes(a.colorSpace))throw new TypeError("options.colorSpace, when provided, must be 'display-p3' or 'srgb'.");if(a.format!==void 0&&typeof a.format!="string")throw new TypeError("options.format, when provided, must be a string.");if(a.layout!==void 0){if(!Array.isArray(a.layout))throw new TypeError("options.layout, when provided, must be an array.");for(const t of a.layout){if(!t||typeof t!="object")throw new TypeError("Each entry in options.layout must be an object.");if(!Number.isInteger(t.offset)||t.offset<0)throw new TypeError("plane.offset must be a non-negative integer.");if(!Number.isInteger(t.stride)||t.stride<0)throw new TypeError("plane.stride must be a non-negative integer.")}}if(a.rect!==void 0){if(!a.rect||typeof a.rect!="object")throw new TypeError("options.rect, when provided, must be an object.");if(a.rect.x!==void 0&&(!Number.isInteger(a.rect.x)||a.rect.x<0))throw new TypeError("options.rect.x, when provided, must be a non-negative integer.");if(a.rect.y!==void 0&&(!Number.isInteger(a.rect.y)||a.rect.y<0))throw new TypeError("options.rect.y, when provided, must be a non-negative integer.");if(a.rect.width!==void 0&&(!Number.isInteger(a.rect.width)||a.rect.width<0))throw new TypeError("options.rect.width, when provided, must be a non-negative integer.");if(a.rect.height!==void 0&&(!Number.isInteger(a.rect.height)||a.rect.height<0))throw new TypeError("options.rect.height, when provided, must be a non-negative integer.")}},OG=(a,t,i)=>{const n=zf(a),s=[];let r=0;for(const o of n){const l=Math.ceil(t/o.widthDivisor),c=Math.ceil(i/o.heightDivisor),d=l*o.sampleBytes,g=d*c;s.push({offset:r,stride:d}),r+=g}return s},zf=a=>{const t=(i,n,s,r,o)=>{const l=[{sampleBytes:i,widthDivisor:1,heightDivisor:1},{sampleBytes:n,widthDivisor:s,heightDivisor:r},{sampleBytes:n,widthDivisor:s,heightDivisor:r}];return o&&l.push({sampleBytes:i,widthDivisor:1,heightDivisor:1}),l};switch(a){case"I420":return t(1,1,2,2,!1);case"I420P10":case"I420P12":return t(2,2,2,2,!1);case"I420A":return t(1,1,2,2,!0);case"I420AP10":case"I420AP12":return t(2,2,2,2,!0);case"I422":return t(1,1,2,1,!1);case"I422P10":case"I422P12":return t(2,2,2,1,!1);case"I422A":return t(1,1,2,1,!0);case"I422AP10":case"I422AP12":return t(2,2,2,1,!0);case"I444":return t(1,1,1,1,!1);case"I444P10":case"I444P12":return t(2,2,1,1,!1);case"I444A":return t(1,1,1,1,!0);case"I444AP10":case"I444AP12":return t(2,2,1,1,!0);case"NV12":return[{sampleBytes:1,widthDivisor:1,heightDivisor:1},{sampleBytes:2,widthDivisor:2,heightDivisor:2}];case"RGBA":case"RGBX":case"BGRA":case"BGRX":return[{sampleBytes:4,widthDivisor:1,heightDivisor:1}];default:_o(a),We(!1)}},Ry=(a,t)=>{const i={left:0,top:0,width:a.codedWidth,height:a.codedHeight},n=t.rect,s=DG(i,n,a.codedWidth,a.codedHeight,a.format),r=t.layout;let o;if(!t.format||t.format===a.format)o=a.format;else if(["RGBA","RGBX","BGRA","BGRX"].includes(t.format))o=t.format;else throw new Error("NotSupportedError: Invalid destination format.");return LG(s,o,r)},DG=(a,t,i,n,s)=>{const r={...a};if(t!==void 0){if(t.width===0||t.height===0)throw new TypeError("visibleRect dimensions cannot be zero.");if((t.x||0)+(t.width||0)>i)throw new TypeError("visibleRect exceeds codedWidth.");if((t.y||0)+(t.height||0)>n)throw new TypeError("visibleRect exceeds codedHeight.");r.x=t.x||0,r.y=t.y||0,r.width=t.width||0,r.height=t.height||0}if(!IG(s,r))throw new TypeError("visibleRect alignment is invalid for the format.");return r},IG=(a,t)=>{if(a===null)return!0;const i=zf(a);for(let n=0;n<i.length;n++){const s=i[n],r=s.widthDivisor,o=s.heightDivisor;if((t.x||0)%r!==0||(t.y||0)%o!==0)return!1}return!0},LG=(a,t,i)=>{const n=zf(t),s=n.length;if(i!==void 0&&i.length!==s)throw new TypeError(`Layout must have ${s} planes.`);let r=0;const o=[],l=[];for(let c=0;c<s;c++){const d=n[c],g=d.sampleBytes,h=d.widthDivisor,m=d.heightDivisor,p={destinationOffset:0,destinationStride:0,sourceTop:0,sourceHeight:0,sourceLeftBytes:0,sourceWidthBytes:0};if(p.sourceTop=Math.ceil(Math.trunc(a.y||0)/m),p.sourceHeight=Math.ceil(Math.trunc(a.height||0)/m),p.sourceLeftBytes=Math.floor(Math.trunc(a.x||0)/h)*g,p.sourceWidthBytes=Math.floor(Math.trunc(a.width||0)/h)*g,i!==void 0){const _=i[c];if(_.stride<p.sourceWidthBytes)throw new TypeError(`Stride for plane ${c} is too small.`);p.destinationOffset=_.offset,p.destinationStride=_.stride}else p.destinationOffset=r,p.destinationStride=p.sourceWidthBytes;const f=p.destinationStride*p.sourceHeight+p.destinationOffset;if(f>4294967295)throw new TypeError("Allocation size exceeds limit.");l.push(f),r=Math.max(r,f);for(let _=0;_<c;_++){const v=o[_];if(!(l[c]<=v.destinationOffset||l[_]<=p.destinationOffset))throw new TypeError("Planes overlap.")}o.push(p)}return{allocationSize:r,computedLayouts:o}},Ef=new Set(["f32","f32-planar","s16","s16-planar","s32","s32-planar","u8","u8-planar"]);class Zd{constructor(){this._referenceCount=0}}class Ls{get microsecondTimestamp(){return Math.trunc(Xo*this.timestamp)}get microsecondDuration(){return Math.trunc(Xo*this.duration)}constructor(t){if(this._closed=!1,eu(t)){if(t.format===null)throw new TypeError("AudioData with null format is not supported.");this._data=t,this.format=t.format,this.sampleRate=t.sampleRate,this.numberOfFrames=t.numberOfFrames,this.numberOfChannels=t.numberOfChannels,this.timestamp=t.timestamp/1e6,this.duration=t.numberOfFrames/t.sampleRate}else if(t instanceof Zd){if(this._data=t,t._referenceCount++,this.format=t.getFormat(),!Ef.has(this.format))throw new TypeError("getFormat() must return an AudioSampleFormat.");if(this.sampleRate=t.getSampleRate(),!Number.isInteger(this.sampleRate)||this.sampleRate<=0)throw new TypeError("getSampleRate() must return a positive integer.");if(this.numberOfFrames=t.getNumberOfFrames(),!Number.isInteger(this.numberOfFrames)||this.numberOfFrames<0)throw new TypeError("getNumberOfFrames() must return a non-negative integer.");if(this.numberOfChannels=t.getNumberOfChannels(),!Number.isInteger(this.numberOfChannels)||this.numberOfChannels<=0)throw new TypeError("getNumberOfChannels() must return a positive integer.");if(this.timestamp=t.getTimestamp(),!Number.isFinite(this.timestamp))throw new TypeError("getTimestamp() must return a finite number.");this.duration=this.numberOfFrames/this.sampleRate}else{if(!t||typeof t!="object")throw new TypeError("Invalid AudioDataInit: must be an object.");if(!Ef.has(t.format))throw new TypeError("Invalid AudioDataInit: invalid format.");if(!Number.isFinite(t.sampleRate)||t.sampleRate<=0)throw new TypeError("Invalid AudioDataInit: sampleRate must be > 0.");if(!Number.isInteger(t.numberOfChannels)||t.numberOfChannels===0)throw new TypeError("Invalid AudioDataInit: numberOfChannels must be an integer > 0.");if(!Number.isFinite(t?.timestamp))throw new TypeError("init.timestamp must be a number.");const i=t.data.byteLength/(il(t.format)*t.numberOfChannels);if(!Number.isInteger(i))throw new TypeError("Invalid AudioDataInit: data size is not a multiple of frame size.");this.format=t.format,this.sampleRate=t.sampleRate,this.numberOfFrames=i,this.numberOfChannels=t.numberOfChannels,this.timestamp=t.timestamp,this.duration=i/t.sampleRate;let n;if(t.data instanceof ArrayBuffer)n=new Uint8Array(t.data);else if(ArrayBuffer.isView(t.data))n=new Uint8Array(t.data.buffer,t.data.byteOffset,t.data.byteLength);else throw new TypeError("Invalid AudioDataInit: data is not a BufferSource.");const s=this.numberOfFrames*this.numberOfChannels*il(this.format);if(n.byteLength<s)throw new TypeError("Invalid AudioDataInit: insufficient data size.");this._data=n}Yd?.register(this,{type:"audio",data:this._data},this)}allocationSize(t){if(!t||typeof t!="object")throw new TypeError("options must be an object.");if(!Number.isInteger(t.planeIndex)||t.planeIndex<0)throw new TypeError("planeIndex must be a non-negative integer.");if(t.format!==void 0&&!Ef.has(t.format))throw new TypeError("Invalid format.");if(t.frameOffset!==void 0&&(!Number.isInteger(t.frameOffset)||t.frameOffset<0))throw new TypeError("frameOffset must be a non-negative integer.");if(t.frameCount!==void 0&&(!Number.isInteger(t.frameCount)||t.frameCount<0))throw new TypeError("frameCount must be a non-negative integer.");if(this._closed)throw new Error("AudioSample is closed.");const i=t.format??this.format,n=t.frameOffset??0;if(n>=this.numberOfFrames)throw new RangeError("frameOffset out of range");const s=t.frameCount!==void 0?t.frameCount:this.numberOfFrames-n;if(s>this.numberOfFrames-n)throw new RangeError("frameCount out of range");const r=il(i),o=Xl(i);if(o&&t.planeIndex>=this.numberOfChannels)throw new RangeError("planeIndex out of range");if(!o&&t.planeIndex!==0)throw new RangeError("planeIndex out of range");return(o?s:s*this.numberOfChannels)*r}copyTo(t,i){if(!Tf(t))throw new TypeError("destination must be an ArrayBuffer or an ArrayBuffer view.");if(!i||typeof i!="object")throw new TypeError("options must be an object.");if(!Number.isInteger(i.planeIndex)||i.planeIndex<0)throw new TypeError("planeIndex must be a non-negative integer.");if(i.format!==void 0&&!Ef.has(i.format))throw new TypeError("Invalid format.");if(i.frameOffset!==void 0&&(!Number.isInteger(i.frameOffset)||i.frameOffset<0))throw new TypeError("frameOffset must be a non-negative integer.");if(i.frameCount!==void 0&&(!Number.isInteger(i.frameCount)||i.frameCount<0))throw new TypeError("frameCount must be a non-negative integer.");if(this._closed)throw new Error("AudioSample is closed.");const{format:n,frameCount:s,frameOffset:r}=i;let{planeIndex:o}=i,l=this.format;const c=n??this.format;if(!c)throw new Error("Destination format not determined");const d=this.numberOfFrames,g=this.numberOfChannels,h=r??0;if(h>=d)throw new RangeError("frameOffset out of range");const m=s!==void 0?s:d-h;if(m>d-h)throw new RangeError("frameCount out of range");const p=il(c),u=Xl(c);if(u&&o>=g)throw new RangeError("planeIndex out of range");if(!u&&o!==0)throw new RangeError("planeIndex out of range");const _=(u?m:m*g)*p;if(t.byteLength<_)throw new RangeError("Destination buffer is too small");const v=jr(t),y=Py(c);if(eu(this._data))if(wC()&&g>2&&c!==l){HG(this._data,v,l,c,g,o,h,m);return}else try{this._data.copyTo(t,{planeIndex:o,frameOffset:h,frameCount:m,format:c});return}catch(A){if(c==="f32-planar")throw A;l="f32-planar"}const S=By(l),q=il(l),M=Xl(l);let P;if(this._data instanceof Zd){const A=j=>{const G=this._data.getDataPlane(j);if(!(G instanceof Uint8Array))throw new TypeError("getDataPlane() must return a Uint8Array.");const C=d*q*(M?1:g);if(G.byteLength!==C)throw new TypeError(`Data plane ${j} has invalid size. Expected exactly ${C} bytes, got ${G.byteLength} bytes.`);return G};if(M)if(u)P=A(o),o=0;else{P=new Uint8Array(d*q*g);for(let j=0;j<g;j++){const G=A(j);P.set(G,j*d*q)}}else P=A(0)}else if(this._data instanceof Uint8Array)P=this._data;else if(We(l==="f32-planar"),u)P=new Uint8Array(this._data.allocationSize({format:"f32-planar",planeIndex:o})),this._data.copyTo(P,{format:"f32-planar",planeIndex:o}),o=0;else{P=new Uint8Array(this._data.allocationSize({format:"f32-planar",planeIndex:0})*g);for(let A=0;A<g;A++)this._data.copyTo(P.subarray(A*d*q,(A+1)*d*q),{format:"f32-planar",planeIndex:A})}const B=jr(P);for(let A=0;A<m;A++)if(u){const j=A*p;let G;M?G=(o*d+(A+h))*q:G=((A+h)*g+o)*q;const C=S(B,G);y(v,j,C)}else for(let j=0;j<g;j++){const C=(A*g+j)*p;let R;M?R=(j*d+(A+h))*q:R=((A+h)*g+j)*q;const H=S(B,R);y(v,C,H)}}clone(){if(this._closed)throw new Error("AudioSample is closed.");if(this._data instanceof Zd){const t=new Ls(this._data);return t.setTimestamp(this.timestamp),t}else if(eu(this._data)){const t=new Ls(this._data.clone());return t.setTimestamp(this.timestamp),t}else return new Ls({format:this.format,sampleRate:this.sampleRate,numberOfFrames:this.numberOfFrames,numberOfChannels:this.numberOfChannels,timestamp:this.timestamp,data:this._data})}trim(t,i=this.numberOfFrames){if(!Number.isInteger(t)||t<0)throw new TypeError("startFrame must be a non-negative integer.");if(!Number.isInteger(i)||i<0)throw new TypeError("endFrame must be a non-negative integer.");if(t>this.numberOfFrames)throw new RangeError("startFrame out of range.");if(i>this.numberOfFrames)throw new RangeError("endFrame out of range.");if(i<t)throw new RangeError("endFrame must not be less than startFrame.");if(this._closed)throw new Error("AudioSample is closed.");const n=i-t,s=il(this.format);let r;if(Xl(this.format)){const o=n*s;if(r=new Uint8Array(o*this.numberOfChannels),n>0)for(let l=0;l<this.numberOfChannels;l++)this.copyTo(r.subarray(l*o,(l+1)*o),{planeIndex:l,format:this.format,frameOffset:t,frameCount:n})}else r=new Uint8Array(n*this.numberOfChannels*s),n>0&&this.copyTo(r,{planeIndex:0,format:this.format,frameOffset:t,frameCount:n});return new Ls({data:r,format:this.format,sampleRate:this.sampleRate,numberOfChannels:this.numberOfChannels,timestamp:this.timestamp+t/this.sampleRate})}close(){this._closed||(Yd?.unregister(this),this._data instanceof Zd?(this._data._referenceCount--,this._data._referenceCount===0&&this._data.close()):eu(this._data)?this._data.close():this._data=new Uint8Array(0),this._closed=!0)}toAudioData(){if(this._closed)throw new Error("AudioSample is closed.");return this._data instanceof Zd?this._createAudioDataFromData():eu(this._data)?this._data.timestamp===this.microsecondTimestamp?this._data.clone():this._createAudioDataFromData():new AudioData({format:this.format,sampleRate:this.sampleRate,numberOfFrames:this.numberOfFrames,numberOfChannels:this.numberOfChannels,timestamp:this.microsecondTimestamp,data:this._data.buffer instanceof ArrayBuffer?this._data.buffer:this._data.slice()})}_createAudioDataFromData(){if(Xl(this.format)){const t=this.allocationSize({planeIndex:0,format:this.format}),i=new ArrayBuffer(t*this.numberOfChannels);for(let n=0;n<this.numberOfChannels;n++)this.copyTo(new Uint8Array(i,n*t,t),{planeIndex:n,format:this.format});return new AudioData({format:this.format,sampleRate:this.sampleRate,numberOfFrames:this.numberOfFrames,numberOfChannels:this.numberOfChannels,timestamp:this.microsecondTimestamp,data:i})}else{const t=new ArrayBuffer(this.allocationSize({planeIndex:0,format:this.format}));return this.copyTo(t,{planeIndex:0,format:this.format}),new AudioData({format:this.format,sampleRate:this.sampleRate,numberOfFrames:this.numberOfFrames,numberOfChannels:this.numberOfChannels,timestamp:this.microsecondTimestamp,data:t})}}toAudioBuffer(){if(this._closed)throw new Error("AudioSample is closed.");const t=new AudioBuffer({numberOfChannels:this.numberOfChannels,length:this.numberOfFrames,sampleRate:this.sampleRate}),i=new Float32Array(this.allocationSize({planeIndex:0,format:"f32-planar"})/4);for(let n=0;n<this.numberOfChannels;n++)this.copyTo(i,{planeIndex:n,format:"f32-planar"}),t.copyToChannel(i,n);return t}setTimestamp(t){if(!Number.isFinite(t))throw new TypeError("newTimestamp must be a number.");this.timestamp=t}[Symbol.dispose](){this.close()}static*_fromAudioBuffer(t,i){if(!(t instanceof AudioBuffer))throw new TypeError("audioBuffer must be an AudioBuffer.");const n=48e3*5,s=t.numberOfChannels,r=t.sampleRate,o=t.length,l=Math.floor(n/s);let c=0,d=o;for(;d>0;){const g=Math.min(l,d),h=new Float32Array(s*g);for(let m=0;m<s;m++)t.copyFromChannel(h.subarray(m*g,(m+1)*g),m,c);yield new Ls({format:"f32-planar",sampleRate:r,numberOfFrames:g,numberOfChannels:s,timestamp:i+c/r,data:h}),c+=g,d-=g}}static fromAudioBuffer(t,i){if(!(t instanceof AudioBuffer))throw new TypeError("audioBuffer must be an AudioBuffer.");const n=48e3*5,s=t.numberOfChannels,r=t.sampleRate,o=t.length,l=Math.floor(n/s);let c=0,d=o;const g=[];for(;d>0;){const h=Math.min(l,d),m=new Float32Array(s*h);for(let u=0;u<s;u++)t.copyFromChannel(m.subarray(u*h,(u+1)*h),u,c);const p=new Ls({format:"f32-planar",sampleRate:r,numberOfFrames:h,numberOfChannels:s,timestamp:i+c/r,data:m});g.push(p),c+=h,d-=h}return g}}const il=a=>{switch(a){case"u8":case"u8-planar":return 1;case"s16":case"s16-planar":return 2;case"s32":case"s32-planar":return 4;case"f32":case"f32-planar":return 4;default:throw new Error("Unknown AudioSampleFormat")}},Xl=a=>{switch(a){case"u8-planar":case"s16-planar":case"s32-planar":case"f32-planar":return!0;default:return!1}},By=a=>{switch(a){case"u8":case"u8-planar":return(t,i)=>(t.getUint8(i)-128)/128;case"s16":case"s16-planar":return(t,i)=>t.getInt16(i,!0)/32768;case"s32":case"s32-planar":return(t,i)=>t.getInt32(i,!0)/2147483648;case"f32":case"f32-planar":return(t,i)=>t.getFloat32(i,!0)}},Py=a=>{switch(a){case"u8":case"u8-planar":return(t,i,n)=>t.setUint8(i,ls(Math.round(n*128)+128,0,255));case"s16":case"s16-planar":return(t,i,n)=>t.setInt16(i,ls(Math.round(n*32768),-32768,32767),!0);case"s32":case"s32-planar":return(t,i,n)=>t.setInt32(i,ls(Math.round(n*2147483648),-2147483648,2147483647),!0);case"f32":case"f32-planar":return(t,i,n)=>t.setFloat32(i,n,!0)}},eu=a=>typeof AudioData<"u"&&a instanceof AudioData,VG=a=>{switch(a){case"u8-planar":return"u8";case"s16-planar":return"s16";case"s32-planar":return"s32";case"f32-planar":return"f32";default:return a}},HG=(a,t,i,n,s,r,o,l)=>{const c=By(i),d=Py(n),g=il(i),h=il(n),m=Xl(i);if(Xl(n))if(m){const u=new ArrayBuffer(l*g),f=jr(u);a.copyTo(u,{planeIndex:r,frameOffset:o,frameCount:l,format:i});for(let _=0;_<l;_++){const v=_*g,y=_*h,S=c(f,v);d(t,y,S)}}else{const u=new ArrayBuffer(l*s*g),f=jr(u);a.copyTo(u,{planeIndex:0,frameOffset:o,frameCount:l,format:i});for(let _=0;_<l;_++){const v=(_*s+r)*g,y=_*h,S=c(f,v);d(t,y,S)}}else if(m){const u=l*g,f=new ArrayBuffer(u),_=jr(f);for(let v=0;v<s;v++){a.copyTo(f,{planeIndex:v,frameOffset:o,frameCount:l,format:i});for(let y=0;y<l;y++){const S=y*g,q=(y*s+v)*h,M=c(_,S);d(t,q,M)}}}else{const u=new ArrayBuffer(l*s*g),f=jr(u);a.copyTo(u,{planeIndex:0,frameOffset:o,frameCount:l,format:i});for(let _=0;_<l;_++)for(let v=0;v<s;v++){const y=_*s+v,S=y*g,q=y*h,M=c(f,S);d(t,q,M)}}},WG=(a,t)=>{const i=a.allocationSize({format:t,planeIndex:0}),n=new ArrayBuffer(i);return a.copyTo(n,{format:t,planeIndex:0}),new Ls({data:n,format:t,numberOfChannels:a.numberOfChannels,sampleRate:a.sampleRate,timestamp:a.timestamp,duration:a.duration})};const jy=new Map,Ny=new Map,QG=a=>{if(!a||typeof a!="object")throw new TypeError("Encoding config must be an object.");if(!Cr.includes(a.codec))throw new TypeError(`Invalid video codec '${a.codec}'. Must be one of: ${Cr.join(", ")}.`);const t=a.bitrate;if(a.quality===void 0&&t===void 0)throw new TypeError("config.quality must be provided.");if(a.quality!==void 0&&t!==void 0)throw new TypeError("config.quality and config.bitrate cannot both be provided.");if(a.quality!==void 0&&!(a.quality instanceof Es))throw new TypeError("config.quality, when provided, must be a Quality.");if(t!==void 0&&!(t instanceof Es)&&(!Number.isInteger(t)||t<=0))throw new TypeError("config.bitrate, when provided, must be a positive integer or a quality.");if(a.keyFrameInterval!==void 0&&(!Number.isFinite(a.keyFrameInterval)||a.keyFrameInterval<0))throw new TypeError("config.keyFrameInterval, when provided, must be a non-negative number.");if(a.sizeChangeBehavior!==void 0&&!["deny","passThrough","fill","contain","cover"].includes(a.sizeChangeBehavior))throw new TypeError("config.sizeChangeBehavior, when provided, must be 'deny', 'passThrough', 'fill', 'contain' or 'cover'.");if(a.transform!==void 0){if(typeof a.transform!="object"||!a.transform)throw new TypeError("config.transform, when provided, must be an object.");if(a.transform.width!==void 0&&(!Number.isInteger(a.transform.width)||a.transform.width<=0))throw new TypeError("config.transform.width, when provided, must be a positive integer.");if(a.transform.height!==void 0&&(!Number.isInteger(a.transform.height)||a.transform.height<=0))throw new TypeError("config.transform.height, when provided, must be a positive integer.");if(a.transform.fit!==void 0&&!["fill","contain","cover"].includes(a.transform.fit))throw new TypeError('config.transform.fit, when provided, must be one of "fill", "contain", or "cover".');if(a.transform.width!==void 0&&a.transform.height!==void 0&&a.transform.fit===void 0&&!["fill","contain","cover"].includes(a.sizeChangeBehavior))throw new TypeError("When both config.transform.width and config.transform.height are provided, config.transform.fit must also be provided.");if(a.transform.fit!==void 0&&["fill","contain","cover"].includes(a.sizeChangeBehavior)&&a.transform.fit!==a.sizeChangeBehavior)throw new TypeError("config.transform.fit, when provided, cannot differ from config.sizeChangeBehavior when config.sizeChangeBehavior is 'fill', 'contain' or 'cover', as sizeChangeBehavior already determines the fitting algorithm.");if(a.transform.rotate!==void 0&&![0,90,180,270].includes(a.transform.rotate))throw new TypeError("config.transform.rotate, when provided, must be 0, 90, 180 or 270.");if(a.transform.flip!==void 0&&typeof a.transform.flip!="boolean")throw new TypeError("config.transform.flip, when provided, must be a boolean.");if(a.transform.crop!==void 0&&o0(a.transform.crop,"config.transform."),a.transform.process!==void 0&&typeof a.transform.process!="function")throw new TypeError("config.transform.process, when provided, must be a function.");if(a.transform.frameRate!==void 0&&(!Number.isFinite(a.transform.frameRate)||a.transform.frameRate<=0))throw new TypeError("config.transform.frameRate, when provided, must be a finite positive number.");if(a.transform.force!==void 0&&typeof a.transform.force!="boolean")throw new TypeError("config.transform.force, when provided, must be a boolean.")}if(a.onEncodedPacket!==void 0&&typeof a.onEncodedPacket!="function")throw new TypeError("config.onEncodedPacket, when provided, must be a function.");if(a.onEncoderConfig!==void 0&&typeof a.onEncoderConfig!="function")throw new TypeError("config.onEncoderConfig, when provided, must be a function.");if(a.onEncodedSample!==void 0&&typeof a.onEncodedSample!="function")throw new TypeError("config.onEncodedSample, when provided, must be a function.");Oy(a.codec,a)},Oy=(a,t)=>{if(!t||typeof t!="object")throw new TypeError("Encoding options must be an object.");if(t.alpha!==void 0&&!["discard","keep"].includes(t.alpha))throw new TypeError("options.alpha, when provided, must be 'discard' or 'keep'.");const i=t.bitrateMode;if(i!==void 0&&!["constant","variable"].includes(i))throw new TypeError("bitrateMode, when provided, must be 'constant' or 'variable'.");if(t.latencyMode!==void 0&&!["quality","realtime"].includes(t.latencyMode))throw new TypeError("latencyMode, when provided, must be 'quality' or 'realtime'.");if(t.fullCodecString!==void 0&&typeof t.fullCodecString!="string")throw new TypeError("fullCodecString, when provided, must be a string.");if(t.fullCodecString!==void 0&&Ff(t.fullCodecString)!==a)throw new TypeError(`fullCodecString, when provided, must be a string that matches the specified codec (${a}).`);if(t.hardwareAcceleration!==void 0&&!["no-preference","prefer-hardware","prefer-software"].includes(t.hardwareAcceleration))throw new TypeError("hardwareAcceleration, when provided, must be 'no-preference', 'prefer-hardware' or 'prefer-software'.");if(t.scalabilityMode!==void 0&&typeof t.scalabilityMode!="string")throw new TypeError("scalabilityMode, when provided, must be a string.");if(t.contentHint!==void 0&&typeof t.contentHint!="string")throw new TypeError("contentHint, when provided, must be a string.")},Dy=a=>{const t=a.bitrateMode,i=a.quality._toVideoRateControl(a.codec,a.width,a.height,t),n=(r,o,l)=>({codec:a.fullCodecString??bG(a.codec,a.width,a.height,l,a.alpha==="keep"),width:a.width,height:a.height,displayWidth:a.squarePixelWidth,displayHeight:a.squarePixelHeight,bitrate:r,bitrateMode:o,alpha:a.alpha??"discard",framerate:a.framerate,latencyMode:a.latencyMode,hardwareAcceleration:a.hardwareAcceleration,scalabilityMode:a.scalabilityMode,contentHint:a.contentHint,...xG(a.codec)}),s=[];return i.quantizer!==null&&s.push({config:n(void 0,"quantizer",i.bitrate),quantizer:i.quantizer}),i.bitrateMode!=="quantizer"&&s.push({config:n(i.bitrate,i.bitrateMode,i.bitrate),quantizer:null}),We(s.length>0),s},KG=a=>{if(!a||typeof a!="object")throw new TypeError("Encoding config must be an object.");if(!el.includes(a.codec))throw new TypeError(`Invalid audio codec '${a.codec}'. Must be one of: ${el.join(", ")}.`);const t=a.bitrate;if(a.quality===void 0&&t===void 0&&!(Ds.includes(a.codec)||a.codec==="flac"))throw new TypeError("config.quality must be provided for compressed audio codecs.");if(a.quality!==void 0&&t!==void 0)throw new TypeError("config.quality and config.bitrate cannot both be provided.");if(a.quality!==void 0&&!(a.quality instanceof Es))throw new TypeError("config.quality, when provided, must be a Quality.");if(t!==void 0&&!(t instanceof Es)&&(!Number.isInteger(t)||t<=0))throw new TypeError("config.bitrate, when provided, must be a positive integer or a quality.");if(a.transform!==void 0){if(typeof a.transform!="object"||!a.transform)throw new TypeError("config.transform, when provided, must be an object.");if(a.transform.numberOfChannels!==void 0&&(!Number.isInteger(a.transform.numberOfChannels)||a.transform.numberOfChannels<=0))throw new TypeError("config.transform.numberOfChannels, when provided, must be a positive integer.");if(a.transform.sampleRate!==void 0&&(!Number.isInteger(a.transform.sampleRate)||a.transform.sampleRate<=0))throw new TypeError("config.transform.sampleRate, when provided, must be a positive integer.");if(a.transform.sampleFormat!==void 0&&!["u8","s16","s32","f32"].includes(a.transform.sampleFormat))throw new TypeError("config.transform.sampleFormat, when provided, must be one of: u8, s16, s32, f32.");if(a.transform.process!==void 0&&typeof a.transform.process!="function")throw new TypeError("config.transform.process, when provided, must be a function.")}if(a.onEncodedPacket!==void 0&&typeof a.onEncodedPacket!="function")throw new TypeError("config.onEncodedPacket, when provided, must be a function.");if(a.onEncoderConfig!==void 0&&typeof a.onEncoderConfig!="function")throw new TypeError("config.onEncoderConfig, when provided, must be a function.");if(a.onEncodedSample!==void 0&&typeof a.onEncodedSample!="function")throw new TypeError("config.onEncodedSample, when provided, must be a function.");Iy(a.codec,a)},Iy=(a,t)=>{if(!t||typeof t!="object")throw new TypeError("Encoding options must be an object.");const i=t.bitrateMode;if(i!==void 0&&!["constant","variable"].includes(i))throw new TypeError("bitrateMode, when provided, must be 'constant' or 'variable'.");if(t.fullCodecString!==void 0&&typeof t.fullCodecString!="string")throw new TypeError("fullCodecString, when provided, must be a string.");if(t.fullCodecString!==void 0&&Ff(t.fullCodecString)!==a)throw new TypeError(`fullCodecString, when provided, must be a string that matches the specified codec (${a}).`)},Ly=a=>{const t=a.bitrateMode;return{codec:a.fullCodecString??wG(a.codec,a.numberOfChannels,a.sampleRate),numberOfChannels:a.numberOfChannels,sampleRate:a.sampleRate,bitrate:a.quality?._toAudioBitrate(a.codec),bitrateMode:a.quality?._bitrateMode??t,...SG(a.codec)}};class Es{constructor(t){if((typeof t=="number"||typeof t=="string")&&(t={quality:t}),!t||typeof t!="object")throw new TypeError("options must be an object.");if(t.bitrateMode!==void 0&&!["constant","variable"].includes(t.bitrateMode))throw new TypeError("options.bitrateMode, when provided, must be 'constant' or 'variable'.");if("quality"in t){if(typeof t.quality=="string"?!(t.quality in Vy):typeof t.quality!="number"||Number.isNaN(t.quality))throw new TypeError("options.quality must be a number, or one of 'very-low', 'low', 'medium', 'high' or 'very-high'.");if(t.preferBitrate!==void 0&&typeof t.preferBitrate!="boolean")throw new TypeError("options.preferBitrate, when provided, must be a boolean.");if("bitrate"in t||"quantizer"in t)throw new TypeError("options.quality cannot be combined with options.bitrate or options.quantizer.");this._quality=typeof t.quality=="string"?Vy[t.quality]:t.quality,this._preferBitrate=t.preferBitrate??!1,this._bitrate=void 0,this._quantizer=void 0}else{if(t.bitrate!==void 0&&(!Number.isInteger(t.bitrate)||t.bitrate<=0))throw new TypeError("options.bitrate, when provided, must be a positive integer.");if(t.quantizer!==void 0&&(!Number.isInteger(t.quantizer)||t.quantizer<0))throw new TypeError("options.quantizer, when provided, must be a non-negative integer.");if(t.bitrate===void 0&&t.quantizer===void 0)throw new TypeError("At least one of options.bitrate or options.quantizer must be set.");if("preferBitrate"in t)throw new TypeError("options.preferBitrate can only be combined with options.quality.");this._quality=void 0,this._preferBitrate=!1,this._bitrate=t.bitrate,this._quantizer=t.quantizer}this._bitrateMode=t.bitrateMode}_toVideoRateControl(t,i,n,s){const r=YG[t];let o=null,l=this._bitrateMode??s??"variable";if(this._quantizer!==void 0){if(r)if(this._quantizer<r.min||this._quantizer>r.max){if(this._bitrate===void 0)throw new Error(`Quantizer ${this._quantizer} is out of range for codec '${t}'; must be between ${r.min} and ${r.max}.`)}else o=this._quantizer,this._bitrate===void 0&&(l="quantizer");else if(this._bitrate===void 0)throw new Error(`Codec '${t}' does not support quantizer-based encoding. Provide a bitrate in the Quality to define a fallback.`)}else this._bitrate===void 0&&r&&!this._preferBitrate&&(We(this._quality!==void 0),o=ls(Math.round(hC(r.worst,r.best,this._quality)),r.min,r.max));let c;if(this._bitrate!==void 0)c=this._bitrate;else{let d=this._quality;d===void 0&&(We(o!==null&&r),d=ls((o-r.worst)/(r.best-r.worst),0,1)),c=Hy(t,i,n,l0(d))}return{quantizer:o,bitrate:c,bitrateMode:l}}_toVideoBitrate(t,i,n){return this._bitrate!==void 0?this._bitrate:(We(this._quality!==void 0),Hy(t,i,n,l0(this._quality)))}_toAudioBitrate(t){if(Ds.includes(t)||t==="flac")return;if(this._bitrate!==void 0)return this._bitrate;if(this._quality===void 0)throw new Error("This Quality defines neither a quality level nor a bitrate and therefore cannot be used for audio encoding.");const i=l0(this._quality),s={aac:128e3,opus:64e3,mp3:16e4,vorbis:64e3,ac3:384e3,eac3:192e3,dts:768e3}[t];if(!s)throw new Error(`Unhandled codec: ${t}`);let r=s*i;return t==="aac"?r=[96e3,128e3,16e4,192e3].reduce((l,c)=>Math.abs(c-r)<Math.abs(l-r)?c:l):t==="opus"||t==="vorbis"?r=Math.max(6e3,r):t==="mp3"&&(r=[8e3,16e3,24e3,32e3,4e4,48e3,64e3,8e4,96e3,112e3,128e3,16e4,192e3,224e3,256e3,32e4].reduce((l,c)=>Math.abs(c-r)<Math.abs(l-r)?c:l)),Math.round(r/1e3)*1e3}}const Vy={"very-low":0,low:.25,medium:.5,high:.75,"very-high":1},YG={avc:{min:0,max:51,worst:41,best:16},hevc:{min:0,max:51,worst:41,best:16},vp9:{min:0,max:63,worst:52,best:20},av1:{min:0,max:255,worst:208,best:80}},l0=a=>.3*Math.exp(2.5538*a),Hy=(a,t,i,n)=>{const s=t*i,r=1920*1080,o=3e6,l=Math.pow(s/r,.95),c=o*l,d={avc:1,hevc:.6,vp9:.6,av1:.4,vp8:1.2,prores:22e7/o},h=c*d[a]*n;return Math.ceil(h/1e3)*1e3},Wy=(a,t)=>{if(a==="avc")return{avc:{quantizer:t}};if(a==="hevc")return{hevc:{quantizer:t}};if(a==="vp9")return{vp9:{quantizer:t}};if(a==="av1")return{av1:{quantizer:t}};We(!1)},JG=async(a,t={})=>{const{width:i=1280,height:n=720,quality:s,bitrate:r,frameRate:o,...l}=t;if(!Cr.includes(a))return!1;if(!Number.isInteger(i)||i<=0)throw new TypeError("width must be a positive integer.");if(!Number.isInteger(n)||n<=0)throw new TypeError("height must be a positive integer.");if(s!==void 0&&!(s instanceof Es))throw new TypeError("quality, when provided, must be a Quality.");if(s!==void 0&&r!==void 0)throw new TypeError("quality and bitrate cannot both be provided.");if(r!==void 0&&!(r instanceof Es)&&(!Number.isInteger(r)||r<=0))throw new TypeError("bitrate must be a positive integer or a quality.");if(o!==void 0&&(!Number.isFinite(o)||o<=0))throw new TypeError("frameRate, when provided, must be a finite positive number.");Oy(a,l);const c=Uf(s,r)??new Es("medium");let d;try{d=Dy({codec:a,width:i,height:n,quality:c,framerate:o,...l,alpha:"discard"})}catch{return!1}const g=JSON.stringify(d),h=jy.get(g);if(h)return h;const m=(async()=>{for(const{config:u}of d)if(Ky.some(f=>f.supports(a,u)))return!0;if(typeof VideoEncoder>"u"||(i%2===1||n%2===1)&&a==="avc")return!1;for(const{config:u,quantizer:f}of d){try{if(!(await VideoEncoder.isConfigSupported(u)).supported)continue}catch{continue}if(!Xb()||await new Promise(async v=>{try{const y=new VideoEncoder({output:()=>{},error:()=>v(!1)});y.configure(u);const S=new Uint8Array(i*n*4),q=new VideoFrame(S,{format:"RGBA",codedWidth:i,codedHeight:n,timestamp:0});y.encode(q,f!==null?Wy(a,f):void 0),q.close(),await y.flush(),v(!0)}catch{v(!1)}}))return!0}return!1})();return jy.set(g,m),m},Qy=async(a,t={})=>{const{numberOfChannels:i=2,sampleRate:n=48e3,quality:s,bitrate:r,...o}=t;if(!el.includes(a))return!1;if(!Number.isInteger(i)||i<=0)throw new TypeError("numberOfChannels must be a positive integer.");if(!Number.isInteger(n)||n<=0)throw new TypeError("sampleRate must be a positive integer.");if(s!==void 0&&!(s instanceof Es))throw new TypeError("quality, when provided, must be a Quality.");if(s!==void 0&&r!==void 0)throw new TypeError("quality and bitrate cannot both be provided.");if(r!==void 0&&!(r instanceof Es)&&(!Number.isInteger(r)||r<=0))throw new TypeError("bitrate must be a positive integer.");Iy(a,o);const l=Uf(s,r)??new Es("medium"),c=Ly({codec:a,numberOfChannels:i,sampleRate:n,quality:l,...o}),d=JSON.stringify(c),g=Ny.get(d);if(g)return g;const h=(async()=>{if(Yy.some(m=>m.supports(a,c))||Ds.includes(a))return!0;if(typeof AudioEncoder>"u")return!1;try{return(await AudioEncoder.isConfigSupported(c)).supported===!0}catch{return!1}})();return Ny.set(d,h),h},Uf=(a,t)=>{if(a!==void 0)return a;if(t!==void 0)return t instanceof Es?t:new Es({bitrate:t})};const Ky=[],Yy=[];const XG=a=>{let n=a>>2,s=4096,r=0,o=12,l=0;for(n<0&&(n=-n,r=128),n+=33,n>8191&&(n=8191);(n&s)!==s&&o>=5;)s>>=1,o--;return l=n>>o-4&15,~(r|o-5<<4|l)&255},ZG=a=>{let i=2048,n=0,s=11,r=0,o=a>>3;for(o<0?o=-o-1:n=128,o>4095&&(o=4095);(o&i)!==i&&s>=5;)i>>=1,s--;return r=o>>(s===4?1:s-4)&15,(n|s-4<<4|r)^85};class Zl{constructor(t,i,n,s,r){this.bytes=t,this.view=i,this.offset=n,this.start=s,this.end=r,this.bufferPos=s-n}static tempFromBytes(t){return new Zl(t,jr(t),0,0,t.length)}get length(){return this.end-this.start}get filePos(){return this.offset+this.bufferPos}set filePos(t){this.bufferPos=t-this.offset}get remainingLength(){return Math.max(this.end-this.filePos,0)}skip(t){this.bufferPos+=t}slice(t,i=this.end-t){if(t<this.start||t+i>this.end)throw new RangeError("Slicing outside of original slice.");return new Zl(this.bytes,this.view,this.offset,t,t+i)}}const eF=(a,t)=>{if(a.filePos<a.start||a.filePos+t>a.end)throw new RangeError(`Tried reading [${a.filePos}, ${a.filePos+t}), but slice is [${a.start}, ${a.end}). This is likely an internal error, please report it alongside the file that caused it.`)},tF=(a,t)=>{eF(a,t);const i=a.bytes.subarray(a.bufferPos,a.bufferPos+t);return a.bufferPos+=t,i};class Jy{constructor(t){this.mutex=new Wb,this.trackTimestampInfo=new WeakMap,this.output=t}onTrackClose(t){}validateTimestamp(t,i,n){let s=this.trackTimestampInfo.get(t);if(s){if(n&&(s.maxTimestampBeforeLastKeyPacket=s.maxTimestamp),s.maxTimestampBeforeLastKeyPacket!==null&&i<s.maxTimestampBeforeLastKeyPacket)throw new Error(`Timestamps cannot be smaller than the largest timestamp of the previous GOP (a GOP begins with a key packet and ends right before the next key packet). Got ${i}s, but largest timestamp is ${s.maxTimestampBeforeLastKeyPacket}s.`);s.maxTimestamp=Math.max(s.maxTimestamp,i)}else{if(!n)throw new Error("First packet must be a key packet.");s={maxTimestamp:i,maxTimestampBeforeLastKeyPacket:null},this.trackTimestampInfo.set(t,s)}}}const Rf=/<(?:(\d{2}):)?(\d{2}):(\d{2}).(\d{3})>/g,aF=/(?:(\d{2}):)?(\d{2}):(\d{2}).(\d{3})/,iF=a=>{const t=aF.exec(a);if(!t)throw new Error("Expected match.");return 3600*1e3*Number(t[1]||"0")+60*1e3*Number(t[2])+1e3*Number(t[3])+Number(t[4])},Xy=a=>{const t=Math.floor(a/36e5),i=Math.floor(a%(3600*1e3)/(60*1e3)),n=Math.floor(a%(60*1e3)/1e3),s=a%1e3;return t.toString().padStart(2,"0")+":"+i.toString().padStart(2,"0")+":"+n.toString().padStart(2,"0")+"."+s.toString().padStart(3,"0")};class Bf{constructor(t){this.writer=t,this.helper=new Uint8Array(8),this.helperView=new DataView(this.helper.buffer),this.offsets=new WeakMap}writeU32(t){this.helperView.setUint32(0,t,!1),this.writer.write(this.helper.subarray(0,4))}writeU64(t){this.helperView.setUint32(0,Math.floor(t/2**32),!1),this.helperView.setUint32(4,t,!1),this.writer.write(this.helper.subarray(0,8))}writeAscii(t){for(let i=0;i<t.length;i++)this.helperView.setUint8(i%8,t.charCodeAt(i)),i%8===7&&this.writer.write(this.helper);t.length%8!==0&&this.writer.write(this.helper.subarray(0,t.length%8))}writeBox(t){if(this.offsets.set(t,this.writer.getPos()),t.contents&&!t.children)this.writeBoxHeader(t,t.size??t.contents.byteLength+8),this.writer.write(t.contents);else{const i=this.writer.getPos();if(this.writeBoxHeader(t,0),t.contents&&this.writer.write(t.contents),t.children)for(const r of t.children)r&&this.writeBox(r);const n=this.writer.getPos(),s=t.size??n-i;this.writer.seek(i),this.writeBoxHeader(t,s),this.writer.seek(n)}}writeBoxHeader(t,i){this.writeU32(t.largeSize?1:i),this.writeAscii(t.type),t.largeSize&&this.writeU64(i)}measureBoxHeader(t){return 8+(t.largeSize?8:0)}patchBox(t){const i=this.offsets.get(t);We(i!==void 0);const n=this.writer.getPos();this.writer.seek(i),this.writeBox(t),this.writer.seek(n)}measureBox(t){if(t.contents&&!t.children)return this.measureBoxHeader(t)+t.contents.byteLength;{let i=this.measureBoxHeader(t);if(t.contents&&(i+=t.contents.byteLength),t.children)for(const n of t.children)n&&(i+=this.measureBox(n));return i}}}const di=new Uint8Array(8),hr=new DataView(di.buffer),kn=a=>[(a%256+256)%256],_a=a=>(hr.setUint16(0,a,!1),[di[0],di[1]]),c0=a=>(hr.setInt16(0,a,!1),[di[0],di[1]]),Zy=a=>(hr.setUint32(0,a,!1),[di[1],di[2],di[3]]),ut=a=>(hr.setUint32(0,a,!1),[di[0],di[1],di[2],di[3]]),Dr=a=>(hr.setInt32(0,a,!1),[di[0],di[1],di[2],di[3]]),Gr=a=>(hr.setUint32(0,Math.floor(a/2**32),!1),hr.setUint32(4,a,!1),[di[0],di[1],di[2],di[3],di[4],di[5],di[6],di[7]]),e2=a=>(hr.setInt32(0,Math.floor(a/2**32),!1),hr.setUint32(4,a,!1),[di[0],di[1],di[2],di[3],di[4],di[5],di[6],di[7]]),t2=a=>(hr.setInt16(0,2**8*a,!1),[di[0],di[1]]),_r=a=>(hr.setInt32(0,2**16*a,!1),[di[0],di[1],di[2],di[3]]),d0=a=>(hr.setInt32(0,2**30*a,!1),[di[0],di[1],di[2],di[3]]),u0=(a,t)=>{const i=[];let n=a;do{let s=n&127;n>>=7,i.length>0&&(s|=128),i.push(s)}while(n>0||t);return i.reverse()},Ki=(a,t=!1)=>{const i=Array(a.length).fill(null).map((n,s)=>a.charCodeAt(s));return t&&i.push(0),i},a2=a=>[_r(a[0]),_r(a[1]),d0(a[2]),_r(a[3]),_r(a[4]),d0(a[5]),_r(a[6]),_r(a[7]),d0(a[8])],la=(a,t,i)=>({type:a,contents:t&&new Uint8Array(t.flat(10)),children:i}),Fi=(a,t,i,n,s)=>la(a,[kn(t),Zy(i),n??[]],s),nF=a=>a.isQuickTime?la("ftyp",[Ki("qt "),ut(512),Ki("qt ")]):a.fragmented?a.cmaf?la("ftyp",[Ki("iso5"),ut(512),Ki("iso5"),Ki("iso6"),Ki("mp41"),Ki("cmfc"),Ki("dash")]):la("ftyp",[Ki("iso5"),ut(512),Ki("iso5"),Ki("iso6"),Ki("mp41")]):la("ftyp",[Ki("isom"),ut(512),Ki("isom"),a.holdsAvc?Ki("avc1"):[],Ki("mp41")]),i2=()=>la("styp",[Ki("iso5"),ut(0),Ki("iso5"),Ki("iso6"),Ki("mp41"),Ki("cmfc"),Ki("dash")]),n2=(a,t)=>{const i=Math.max(0,a.minWrittenTimestamp);let n=Math.max(0,a.maxWrittenEndTimestamp-i);return Number.isFinite(n)||(n=0),Fi("sidx",1,0,[ut(1),ut(Vs),Gr(sn(i,Vs)),Gr(0),_a(0),_a(1),ut(t&2147483647),ut(sn(n,Vs)),ut(0)])},Pf=a=>({type:"mdat",largeSize:a}),sF=a=>({type:"free",size:a}),tu=a=>la("moov",void 0,[rF(a.creationTime,a.trackDatas),...a.trackDatas.map(t=>oF(t,a.creationTime)),a.isFragmented?LF(a.trackDatas):null,i7(a)]),rF=(a,t)=>{const i=Math.max(0,...t.map(o=>Math.max(0,sn(Dc(o),Vs)+sn(o.startTimestampOffset??0,Vs)))),n=Math.max(0,...t.map(o=>o.track.id))+1,s=!go(a)||!go(i),r=s?Gr:ut;return Fi("mvhd",+s,0,[r(a),r(a),ut(Vs),r(i),_r(1),t2(1),Array(10).fill(0),a2(Ib),Array(24).fill(0),ut(n)])},oF=(a,t)=>{const i=m7(a),n=a.startTimestampOffset!==null&&a.startTimestampOffset!==0;return la("trak",void 0,[lF(a,t),n?cF(a):null,dF(a,t),i.name!==void 0?la("udta",void 0,[la("name",[...ys.encode(i.name)])]):null])},lF=(a,t)=>{const i=Math.max(0,sn(Dc(a),Vs)+sn(a.startTimestampOffset??0,Vs)),n=!go(t)||!go(i),s=n?Gr:ut;let r;if(a.type==="video"&&a.track.metadata.transformationMatrix)r=a.track.metadata.transformationMatrix;else if(a.type==="video"){const{rotation:c,flip:d}=a.track.metadata,g=Sf(Lb(c??0),cC(d?-1:1,1));r=rC(g,a.info.width,a.info.height)}else r=Ib;let o=2;a.track.metadata.disposition?.default!==!1&&(o|=1);const l=a.type==="video"?0:a.type==="audio"?1:a.type==="subtitle"?2:_o(a);return Fi("tkhd",+n,o,[s(t),s(t),ut(a.track.id),ut(0),s(i),Array(8).fill(0),_a(0),_a(l),t2(a.type==="audio"?1:0),_a(0),a2(r),_r(a.type==="video"?a.info.width:0),_r(a.type==="video"?a.info.height:0)])},cF=a=>{const t=a.startTimestampOffset;if(We(t!==null),t>0){const i=sn(t,Vs),n=sn(Dc(a),Vs),s=!go(i)||!go(n),r=s?Gr:ut,o=s?e2:Dr;return la("edts",void 0,[Fi("elst",s?1:0,0,[ut(2),r(i),o(-1),_r(1),r(n),o(0),_r(1)])])}else{const i=sn(-t,a.timescale),n=Math.max(0,sn(Dc(a),Vs)+sn(t,Vs)),s=!uC(i)||!go(n),r=s?Gr:ut,o=s?e2:Dr;return la("edts",void 0,[Fi("elst",s?1:0,0,[ut(1),r(n),o(i),_r(1)])])}},dF=(a,t)=>la("mdia",void 0,[uF(a,t),f0(!0,fF[a.type],pF[a.type]),mF(a)]),uF=(a,t)=>{const i=sn(Dc(a),a.timescale),n=!go(t)||!go(i),s=n?Gr:ut;return Fi("mdhd",+n,0,[s(t),s(t),ut(a.timescale),s(i),_a(u2(a.track.metadata.languageCode??Kb)),_a(0)])},fF={video:"vide",audio:"soun",subtitle:"text"},pF={video:"MediabunnyVideoHandler",audio:"MediabunnySoundHandler",subtitle:"MediabunnyTextHandler"},f0=(a,t,i,n="\0\0\0\0")=>Fi("hdlr",0,0,[a?Ki("mhlr"):ut(0),Ki(t),Ki(n),ut(0),ut(0),Ki(i,!0)]),mF=a=>la("minf",void 0,[gF[a.type](),hF(),bF(a)]),gF={video:()=>Fi("vmhd",0,1,[_a(0),_a(0),_a(0),_a(0)]),audio:()=>Fi("smhd",0,0,[_a(0),_a(0)]),subtitle:()=>Fi("nmhd",0,0)},hF=()=>la("dinf",void 0,[_F()]),_F=()=>Fi("dref",0,0,[ut(1)],[vF()]),vF=()=>Fi("url ",0,1),bF=a=>{const t=a.compositionTimeOffsetTable.length>1||a.compositionTimeOffsetTable.some(i=>i.sampleCompositionTimeOffset!==0);return la("stbl",void 0,[yF(a),BF(a),t?DF(a):null,t?IF(a):null,jF(a),NF(a),OF(a),PF(a)])},yF=a=>{let t;if(a.type==="video")t=wF(o7(a.track.source._codec,a.info.decoderConfig.codec),a);else if(a.type==="audio"){const i=d2(a.track.source._codec,a.info.decoderConfig.codec,a.muxer.isQuickTime);We(i),t=qF(i,a)}else a.type==="subtitle"&&(t=UF(d7[a.track.source._codec],a));return We(t),Fi("stsd",0,0,[ut(1)],[t])},wF=(a,t)=>la(a,[Array(6).fill(0),_a(1),_a(0),_a(0),Array(12).fill(0),_a(t.info.width),_a(t.info.height),ut(4718592),ut(4718592),ut(0),_a(1),kn(10),Ki("Mediabunny"),Array(21).fill(0),_a(t.info.hasAlphaChannel?32:24),c0(65535)],[l7[t.track.source._codec]?.(t)??null,kF(t),Hb(t.info.decoderConfig.colorSpace)?null:xF(t),p0(t)]),p0=a=>a.avgBitrate===0&&a.maxBitrate===0?null:la("btrt",[ut(0),ut(a.maxBitrate),ut(a.avgBitrate)]),kF=a=>a.info.pixelAspectRatio.num===a.info.pixelAspectRatio.den?null:la("pasp",[ut(a.info.pixelAspectRatio.num),ut(a.info.pixelAspectRatio.den)]),xF=a=>{const t=a.info.decoderConfig.colorSpace;return la("colr",[Ki(a.muxer.isQuickTime?"nclc":"nclx"),_a(t?.primaries!=null?Id[t.primaries]:2),_a(t?.transfer!=null?Ld[t.transfer]:2),_a(t?.matrix!=null?Vd[t.matrix]:2),a.muxer.isQuickTime?[]:kn((t?.fullRange?1:0)<<7)])},SF=a=>a.info.decoderConfig&&la("avcC",[...zs(a.info.decoderConfig.description)]),TF=a=>a.info.decoderConfig&&la("hvcC",[...zs(a.info.decoderConfig.description)]),s2=a=>{if(!a.info.decoderConfig)return null;const t=a.info.decoderConfig,i=t.codec.split("."),n=Number(i[1]),s=Number(i[2]),r=Number(i[3]),o=i[4]?Number(i[4]):1,l=i[8]?Number(i[8]):Number(t.colorSpace?.fullRange??0),c=(r<<4)+(o<<1)+l,d=i[5]?Number(i[5]):t.colorSpace?.primaries?Id[t.colorSpace.primaries]:1,g=i[6]?Number(i[6]):t.colorSpace?.transfer?Ld[t.colorSpace.transfer]:1,h=i[7]?Number(i[7]):t.colorSpace?.matrix?Vd[t.colorSpace.matrix]:1;return Fi("vpcC",1,0,[kn(n),kn(s),kn(c),kn(d),kn(g),kn(h),_a(0)])},$F=a=>la("av1C",by(a.info.decoderConfig.codec)),qF=(a,t)=>{let i=0,n,s=16;const r=Ds.includes(t.track.source._codec);if(r){const o=t.track.source._codec,{sampleSize:l}=tl(o);s=8*l,s>16&&(i=1)}if(t.muxer.isQuickTime&&(i=1),i===0)n=[Array(6).fill(0),_a(1),_a(i),_a(0),ut(0),_a(t.info.numberOfChannels),_a(s),_a(0),_a(0),_a(t.info.sampleRate<2**16?t.info.sampleRate:0),_a(0)];else{const o=r?0:-2;n=[Array(6).fill(0),_a(1),_a(i),_a(0),ut(0),_a(t.info.numberOfChannels),_a(Math.min(s,16)),c0(o),_a(0),_a(t.info.sampleRate<2**16?t.info.sampleRate:0),_a(0),r?[ut(1),ut(s/8),ut(t.info.numberOfChannels*s/8)]:[ut(0),ut(0),ut(0)],ut(2)]}return la(a,n,[c7(t.track.source._codec,t.muxer.isQuickTime)?.(t)??null,p0(t)])},m0=a=>{let t;switch(a.track.source._codec){case"aac":t=64;break;case"mp3":t=107;break;case"vorbis":t=221;break;default:throw new Error(`Unhandled audio codec: ${a.track.source._codec}`)}let i=[...kn(t),...kn(21),...Zy(0),...ut(a.maxBitrate),...ut(a.avgBitrate)];if(a.info.decoderConfig.description){const n=zs(a.info.decoderConfig.description);i=[...i,...kn(5),...u0(n.byteLength),...n]}return i=[..._a(1),...kn(0),...kn(4),...u0(i.length),...i,...kn(6),...kn(1),...kn(2)],i=[...kn(3),...u0(i.length),...i],Fi("esds",0,0,i)},nl=a=>la("wave",void 0,[AF(a),CF(a),la("\0\0\0\0")]),AF=a=>la("frma",[Ki(d2(a.track.source._codec,a.info.decoderConfig.codec,a.muxer.isQuickTime))]),CF=a=>{const{littleEndian:t}=tl(a.track.source._codec);return la("enda",[_a(+t)])},GF=a=>{let t=a.info.numberOfChannels,i=3840,n=a.info.sampleRate,s=0,r=0,o=new Uint8Array(0);const l=a.info.decoderConfig?.description;if(l){We(l.byteLength>=18);const c=zs(l),d=fy(c);t=d.outputChannelCount,i=d.preSkip,n=d.inputSampleRate,s=d.outputGain,r=d.channelMappingFamily,d.channelMappingTable&&(o=d.channelMappingTable)}return la("dOps",[kn(0),kn(t),_a(i),ut(n),c0(s),kn(r),...o])},FF=a=>{const t=a.info.decoderConfig?.description;We(t);const i=zs(t);return Fi("dfLa",0,0,[...i.subarray(4)])},Ir=a=>{const{littleEndian:t,sampleSize:i}=tl(a.track.source._codec),n=+t;return Fi("pcmC",0,0,[kn(n),kn(8*i)])},MF=a=>{We(a.info.primingPacket);const t=XC(a.info.primingPacket.data);if(!t)throw new Error("Couldn't extract AC-3 frame info from the audio packet. Ensure the packets contain valid AC-3 sync frames (as specified in ETSI TS 102 366).");const i=new Uint8Array(3),n=new Pn(i);return n.writeBits(2,t.fscod),n.writeBits(5,t.bsid),n.writeBits(3,t.bsmod),n.writeBits(3,t.acmod),n.writeBits(1,t.lfeon),n.writeBits(5,t.bitRateCode),n.writeBits(5,0),la("dac3",[...i])},zF=a=>{We(a.info.primingPacket);const t=eG(a.info.primingPacket.data);if(!t)throw new Error("Couldn't extract E-AC-3 frame info from the audio packet. Ensure the packets contain valid E-AC-3 sync frames (as specified in ETSI TS 102 366).");let i=16;for(const o of t.substreams)i+=23,o.numDepSub>0?i+=9:i+=1;const n=Math.ceil(i/8),s=new Uint8Array(n),r=new Pn(s);r.writeBits(13,t.dataRate),r.writeBits(3,t.substreams.length-1);for(const o of t.substreams)r.writeBits(2,o.fscod),r.writeBits(5,o.bsid),r.writeBits(1,0),r.writeBits(1,0),r.writeBits(3,o.bsmod),r.writeBits(3,o.acmod),r.writeBits(1,o.lfeon),r.writeBits(3,0),r.writeBits(4,o.numDepSub),o.numDepSub>0?r.writeBits(9,o.chanLoc):r.writeBits(1,0);return la("dec3",[...s])},EF=a=>{We(a.info.primingPacket);const t=mG(a.info.primingPacket.data);if(!t)throw new Error("Couldn't extract DTS frame info from the audio packet. Ensure the packets contain valid DTS frames as specified in ETSI TS 102 114.");return la("ddts",[..._G(t)])},UF=(a,t)=>la(a,[Array(6).fill(0),_a(1)],[u7[t.track.source._codec](t),p0(t)]),RF=a=>la("vttC",[...ys.encode(a.info.config.description)]),BF=a=>Fi("stts",0,0,[ut(a.timeToSampleTable.length),a.timeToSampleTable.map(t=>[ut(t.sampleCount),ut(t.sampleDelta)])]),PF=a=>{if(a.samples.every(i=>i.type==="key"))return null;const t=[...a.samples.entries()].filter(([,i])=>i.type==="key");return Fi("stss",0,0,[ut(t.length),t.map(([i])=>ut(i+1))])},jF=a=>Fi("stsc",0,0,[ut(a.compactlyCodedChunkTable.length),a.compactlyCodedChunkTable.map(t=>[ut(t.firstChunk),ut(t.samplesPerChunk),ut(1)])]),NF=a=>{if(a.type==="audio"&&a.info.requiresPcmTransformation){const{sampleSize:t}=tl(a.track.source._codec);return Fi("stsz",0,0,[ut(t*a.info.numberOfChannels),ut(a.samples.reduce((i,n)=>i+sn(n.duration,a.timescale),0))])}return Fi("stsz",0,0,[ut(0),ut(a.samples.length),a.samples.map(t=>ut(t.size))])},OF=a=>a.finalizedChunks.length>0&&Ar(a.finalizedChunks).offset>=2**32?Fi("co64",0,0,[ut(a.finalizedChunks.length),a.finalizedChunks.map(t=>Gr(t.offset))]):Fi("stco",0,0,[ut(a.finalizedChunks.length),a.finalizedChunks.map(t=>ut(t.offset))]),DF=a=>Fi("ctts",1,0,[ut(a.compositionTimeOffsetTable.length),a.compositionTimeOffsetTable.map(t=>[ut(t.sampleCount),Dr(t.sampleCompositionTimeOffset)])]),IF=a=>{let t=1/0,i=-1/0,n=1/0,s=-1/0;We(a.compositionTimeOffsetTable.length>0),We(a.samples.length>0);for(let o=0;o<a.compositionTimeOffsetTable.length;o++){const l=a.compositionTimeOffsetTable[o];t=Math.min(t,l.sampleCompositionTimeOffset),i=Math.max(i,l.sampleCompositionTimeOffset)}for(let o=0;o<a.samples.length;o++){const l=a.samples[o];n=Math.min(n,sn(l.timestamp,a.timescale)),s=Math.max(s,sn(l.timestamp+l.duration,a.timescale))}const r=Math.max(-t,0);return s>=2**31?null:Fi("cslg",0,0,[Dr(r),Dr(t),Dr(i),Dr(n),Dr(s)])},LF=a=>la("mvex",void 0,a.map(VF)),VF=a=>Fi("trex",0,0,[ut(a.track.id),ut(1),ut(0),ut(0),ut(0)]),r2=(a,t)=>la("moof",void 0,[HF(a),...t.map(WF)]),HF=a=>Fi("mfhd",0,0,[ut(a)]),o2=a=>{let t=0,i=0;const n=0,s=0,r=a.type==="delta";return i|=+r,r?t|=1:t|=2,t<<24|i<<16|n<<8|s},WF=a=>la("traf",void 0,[QF(a),KF(a),YF(a)]),QF=a=>{We(a.currentChunk);let t=0;t|=8,t|=16,t|=32,t|=131072;const i=a.currentChunk.samples[1]??a.currentChunk.samples[0],n={duration:i.timescaleUnitsToNextSample,size:i.size,flags:o2(i)};return Fi("tfhd",0,t,[ut(a.track.id),ut(n.duration),ut(n.size),ut(n.flags)])},KF=a=>(We(a.currentChunk),Fi("tfdt",1,0,[Gr(sn(a.currentChunk.startTimestamp,a.timescale))])),YF=a=>{We(a.currentChunk);const t=a.currentChunk.samples.map(f=>f.timescaleUnitsToNextSample),i=a.currentChunk.samples.map(f=>f.size),n=a.currentChunk.samples.map(o2),s=a.currentChunk.samples.map(f=>sn(f.timestamp-f.decodeTimestamp,a.timescale)),r=new Set(t),o=new Set(i),l=new Set(n),c=new Set(s),d=l.size===2&&n[0]!==n[1],g=r.size>1,h=o.size>1,m=!d&&l.size>1,p=c.size>1||[...c].some(f=>f!==0);let u=0;return u|=1,u|=4*+d,u|=256*+g,u|=512*+h,u|=1024*+m,u|=2048*+p,Fi("trun",1,u,[ut(a.currentChunk.samples.length),ut(a.currentChunk.offset-a.currentChunk.moofOffset||0),d?ut(n[0]):[],a.currentChunk.samples.map((f,_)=>[g?ut(t[_]):[],h?ut(i[_]):[],m?ut(n[_]):[],p?Dr(s[_]):[]])])},JF=a=>la("mfra",void 0,[...a.map(XF),ZF()]),XF=a=>Fi("tfra",1,0,[ut(a.track.id),ut(63),ut(a.finalizedChunks.length),a.finalizedChunks.map(i=>[Gr(sn(i.samples[0].timestamp,a.timescale)),Gr(i.moofOffset),ut(i.trafIndex+1),ut(1),ut(1)])]),ZF=()=>Fi("mfro",0,0,[ut(0)]),e7=()=>la("vtte"),t7=(a,t,i,n,s)=>la("vttc",void 0,[s!==null?la("vsid",[Dr(s)]):null,i!==null?la("iden",[...ys.encode(i)]):null,t!==null?la("ctim",[...ys.encode(Xy(t))]):null,n!==null?la("sttg",[...ys.encode(n)]):null,la("payl",[...ys.encode(a)])]),a7=a=>la("vtta",[...ys.encode(a)]),i7=a=>{const t=[],i=a.format._options.metadataFormat??"auto",n=a.output._metadataTags;if(i==="mdir"||i==="auto"&&!a.isQuickTime){const s=s7(n);s&&t.push(s)}else if(i==="mdta"){const s=r7(n);s&&t.push(s)}else(i==="udta"||i==="auto"&&a.isQuickTime)&&n7(t,a.output._metadataTags);return t.length===0?null:la("udta",void 0,t)},n7=(a,t)=>{for(const{key:i,value:n}of Vm(t))switch(i){case"title":a.push(Lr("©nam",n));break;case"description":a.push(Lr("©des",n));break;case"artist":a.push(Lr("©ART",n));break;case"album":a.push(Lr("©alb",n));break;case"albumArtist":a.push(Lr("albr",n));break;case"genre":a.push(Lr("©gen",n));break;case"date":a.push(Lr("©day",n.toISOString().slice(0,10)));break;case"comment":a.push(Lr("©cmt",n));break;case"lyrics":a.push(Lr("©lyr",n));break;case"raw":break;case"discNumber":case"discsTotal":case"trackNumber":case"tracksTotal":case"beatsPerMinute":case"images":break;default:_o(i)}if(t.raw)for(const i in t.raw){const n=t.raw[i];n==null||i.length!==4||a.some(s=>s.type===i)||(typeof n=="string"?a.push(Lr(i,n)):n instanceof Uint8Array&&a.push(la(i,Array.from(n))))}},Lr=(a,t)=>{const i=ys.encode(t);return la(a,[_a(i.length),_a(u2("und")),Array.from(i)])},l2={"image/jpeg":13,"image/png":14,"image/bmp":27},c2=(a,t)=>{const i=[];for(const{key:n,value:s}of Vm(a))switch(n){case"title":i.push({key:t?"title":"©nam",value:Fr(s)});break;case"description":i.push({key:t?"description":"©des",value:Fr(s)});break;case"artist":i.push({key:t?"artist":"©ART",value:Fr(s)});break;case"album":i.push({key:t?"album":"©alb",value:Fr(s)});break;case"albumArtist":i.push({key:t?"album_artist":"aART",value:Fr(s)});break;case"comment":i.push({key:t?"comment":"©cmt",value:Fr(s)});break;case"genre":i.push({key:t?"genre":"©gen",value:Fr(s)});break;case"beatsPerMinute":t||i.push({key:"tmpo",value:la("data",[ut(21),ut(0),_a(s)])});break;case"lyrics":i.push({key:t?"lyrics":"©lyr",value:Fr(s)});break;case"date":i.push({key:t?"date":"©day",value:Fr(s.toISOString().slice(0,10))});break;case"images":for(const r of s)r.kind==="coverFront"&&i.push({key:"covr",value:la("data",[ut(l2[r.mimeType]??0),ut(0),Array.from(r.data)])});break;case"trackNumber":if(t){const r=a.tracksTotal!==void 0?`${s}/${a.tracksTotal}`:s.toString();i.push({key:"track",value:Fr(r)})}else i.push({key:"trkn",value:la("data",[ut(0),ut(0),_a(0),_a(s),_a(a.tracksTotal??0),_a(0)])});break;case"discNumber":t||i.push({key:"disc",value:la("data",[ut(0),ut(0),_a(0),_a(s),_a(a.discsTotal??0),_a(0)])});break;case"tracksTotal":case"discsTotal":break;case"raw":break;default:_o(n)}if(a.raw)for(const n in a.raw){const s=a.raw[n];s==null||!t&&n.length!==4||i.some(r=>r.key===n)||(typeof s=="string"?i.push({key:n,value:Fr(s)}):s instanceof Uint8Array?i.push({key:n,value:la("data",[ut(0),ut(0),Array.from(s)])}):s instanceof ay&&i.push({key:n,value:la("data",[ut(l2[s.mimeType]??0),ut(0),Array.from(s.data)])}))}return i},s7=a=>{const t=c2(a,!1);return t.length===0?null:Fi("meta",0,0,void 0,[f0(!1,"mdir","","appl"),la("ilst",void 0,t.map(i=>la(i.key,void 0,[i.value])))])},r7=a=>{const t=c2(a,!0);return t.length===0?null:la("meta",void 0,[f0(!1,"mdta",""),Fi("keys",0,0,[ut(t.length)],t.map(i=>la("mdta",[...ys.encode(i.key)]))),la("ilst",void 0,t.map((i,n)=>{const s=String.fromCharCode(...ut(n+1));return la(s,void 0,[i.value])}))])},Fr=a=>la("data",[ut(1),ut(0),...ys.encode(a)]),o7=(a,t)=>{switch(a){case"avc":return t.startsWith("avc3")?"avc3":"avc1";case"hevc":return"hvc1";case"vp8":return"vp08";case"vp9":return"vp09";case"av1":return"av01";case"prores":return t}},l7={avc:SF,hevc:TF,vp8:s2,vp9:s2,av1:$F,prores:null},d2=(a,t,i)=>{switch(a){case"aac":return"mp4a";case"mp3":return"mp4a";case"opus":return"Opus";case"vorbis":return"mp4a";case"flac":return"fLaC";case"ulaw":return"ulaw";case"alaw":return"alaw";case"pcm-u8":return"raw ";case"pcm-s8":return"sowt";case"ac3":return"ac-3";case"eac3":return"ec-3";case"dts":return t}if(i)switch(a){case"pcm-s16":return"sowt";case"pcm-s16be":return"twos";case"pcm-s24":return"in24";case"pcm-s24be":return"in24";case"pcm-s32":return"in32";case"pcm-s32be":return"in32";case"pcm-f32":return"fl32";case"pcm-f32be":return"fl32";case"pcm-f64":return"fl64";case"pcm-f64be":return"fl64"}else switch(a){case"pcm-s16":return"ipcm";case"pcm-s16be":return"ipcm";case"pcm-s24":return"ipcm";case"pcm-s24be":return"ipcm";case"pcm-s32":return"ipcm";case"pcm-s32be":return"ipcm";case"pcm-f32":return"fpcm";case"pcm-f32be":return"fpcm";case"pcm-f64":return"fpcm";case"pcm-f64be":return"fpcm"}},c7=(a,t)=>{switch(a){case"aac":return m0;case"mp3":return m0;case"opus":return GF;case"vorbis":return m0;case"flac":return FF;case"ac3":return MF;case"eac3":return zF;case"dts":return EF}if(t)switch(a){case"pcm-s24":return nl;case"pcm-s24be":return nl;case"pcm-s32":return nl;case"pcm-s32be":return nl;case"pcm-f32":return nl;case"pcm-f32be":return nl;case"pcm-f64":return nl;case"pcm-f64be":return nl}else switch(a){case"pcm-s16":return Ir;case"pcm-s16be":return Ir;case"pcm-s24":return Ir;case"pcm-s24be":return Ir;case"pcm-s32":return Ir;case"pcm-s32be":return Ir;case"pcm-f32":return Ir;case"pcm-f32be":return Ir;case"pcm-f64":return Ir;case"pcm-f64be":return Ir}return null},d7={webvtt:"wvtt"},u7={webvtt:RF},u2=a=>{We(a.length===3);let t=0;for(let i=0;i<3;i++)t<<=5,t+=a.charCodeAt(i)-96;return t};class g0{constructor(t,i){if(this.finalized=!1,this.started=!1,this.pos=0,this.trackedWrites=null,this.trackedStart=-1,this.trackedEnd=-1,t._writerAcquired)throw new Error("Can't have multiple Writers for the same Target.");this.target=t,t._setMonotonicity(i),t._writerAcquired=!0}start(){We(!this.started),this.target._start(),this.started=!0}write(t){We(this.started&&!this.finalized),this.maybeTrackWrites(t),this.target._write(t,this.pos),this.pos+=t.byteLength}seek(t){this.pos=t}getPos(){return this.pos}async flush(){return We(this.started&&!this.finalized),this.target._flush()}async finalize(){We(this.started&&!this.finalized),await this.target._finalize(),this.finalized=!0}maybeTrackWrites(t){if(!this.trackedWrites)return;let i=this.getPos();if(i<this.trackedStart){if(i+t.byteLength<=this.trackedStart)return;t=t.subarray(this.trackedStart-i),i=0}const n=i+t.byteLength-this.trackedStart;let s=this.trackedWrites.byteLength;for(;s<n;)s*=2;if(s!==this.trackedWrites.byteLength){const r=new Uint8Array(s);r.set(this.trackedWrites,0),this.trackedWrites=r}this.trackedWrites.set(t,i-this.trackedStart),this.trackedEnd=Math.max(this.trackedEnd,i+t.byteLength)}startTrackingWrites(){this.trackedWrites=new Uint8Array(2**10),this.trackedStart=this.getPos(),this.trackedEnd=this.trackedStart}stopTrackingWrites(){if(!this.trackedWrites)throw new Error("Internal error: Can't get tracked writes since nothing was tracked.");const i={data:this.trackedWrites.subarray(0,this.trackedEnd-this.trackedStart),start:this.trackedStart,end:this.trackedEnd};return this.trackedWrites=null,i}}class bo extends Qm{constructor(){super(...arguments),this._writerAcquired=!1,this._monotonicity=null,this.onwrite=null}_setMonotonicity(t){this._monotonicity!==!1&&(this._monotonicity=t)}_dispatchWrite(t,i){this.onwrite?.(t,i),this._emit("write",{start:t,end:i})}slice(t){if(!Number.isInteger(t)||t<0)throw new TypeError("offset must be a non-negative integer.");return new f7(this,t)}}const h0=2**16,_0=2**32;class au extends bo{constructor(t={}){if(super(),this.buffer=null,this._maxPos=0,!t||typeof t!="object")throw new TypeError("BufferTarget options, when provided, must be an object.");if(t.onFinalize!==void 0&&typeof t.onFinalize!="function")throw new TypeError("options.onFinalize, when provided, must be a function.");if(this._options=t,this._supportsResize="resize"in new ArrayBuffer(0),this._supportsResize)try{this._buffer=new ArrayBuffer(h0,{maxByteLength:_0})}catch{this._buffer=new ArrayBuffer(h0),this._supportsResize=!1}else this._buffer=new ArrayBuffer(h0);this._bytes=new Uint8Array(this._buffer)}_ensureSize(t){let i=this._buffer.byteLength;for(;i<t;)i*=2;if(i!==this._buffer.byteLength){if(i>_0)throw new Error(`ArrayBuffer exceeded maximum size of ${_0} bytes. Please consider using another target.`);if(this._supportsResize)this._buffer.resize(i);else{const n=new ArrayBuffer(i),s=new Uint8Array(n);s.set(this._bytes,0),this._buffer=n,this._bytes=s}}}_start(){}_write(t,i){this._ensureSize(i+t.byteLength),this._bytes.set(t,i),this._maxPos=Math.max(this._maxPos,i+t.byteLength),this._dispatchWrite(i,i+t.byteLength)}async _flush(){}async _finalize(){this.buffer=this._buffer.slice(0,this._maxPos),this._options.onFinalize&&await this._options.onFinalize(this.buffer),this._emit("finalized")}async _close(){}_getSlice(t,i){return this._bytes.slice(t,i)}}class f7 extends bo{constructor(t,i){super(),this._baseTarget=t,this._offset=i}_start(){}_write(t,i){this._baseTarget._write(t,this._offset+i),this._dispatchWrite(i,i+t.byteLength)}_flush(){return this._baseTarget._flush()}async _finalize(){this._emit("finalized")}async _close(){}_setMonotonicity(t){super._setMonotonicity(t),this._baseTarget._setMonotonicity(t)}}class v0{constructor(t,i){if(this.rootPath=t,this.getTarget=i,typeof t!="string")throw new TypeError("rootPath must be a string.");if(typeof i!="function")throw new TypeError("getTarget must be a function.")}}const Vs=57600,p7=2082844800,m7=a=>{const t={},i=a.track;return i.metadata.name!==void 0&&(t.name=i.metadata.name),t},sn=(a,t,i=!0)=>{const n=a*t;return i?Math.round(n):n},Dc=a=>{if(a.samples.length===0)return 0;let t=1/0,i=-1/0;for(let n=0;n<a.samples.length;n++){const s=a.samples[n];s.timestamp<t&&(t=s.timestamp),s.timestamp+s.duration>i&&(i=s.timestamp+s.duration)}return t===1/0?0:i-t};class g7 extends Jy{constructor(t,i){super(t),this.writer=null,this.boxWriter=null,this.initWriter=null,this.initBoxWriter=null,this.auxTarget=new au,this.auxWriter=new g0(this.auxTarget,!1),this.auxBoxWriter=new Bf(this.auxWriter),this.mdat=null,this.ftypSize=null,this.trackDatas=[],this.allTracksKnown=jm(),this.creationTime=Math.floor(Date.now()/1e3)+p7,this.finalizedChunks=[],this.wroteFragmentedHeader=!1,this.nextFragmentNumber=1,this.maxWrittenTimestamp=-1/0,this.minWrittenTimestamp=1/0,this.maxWrittenEndTimestamp=-1/0,this.segmentHeaderSize=null,this.format=i,this.formatOptions={...i._options},this.isQuickTime=i instanceof w2,this.isCmaf=i instanceof y2,this.minimumFragmentDuration=this.formatOptions.minimumFragmentDuration??(i instanceof y2?1/0:1),this.auxWriter.start()}async start(){const t=await this.mutex.acquire();if(this.isCmaf?(this.fastStart="fragmented",this.isFragmented=!0):(this.writer=await this.output._getRootWriter(n=>this.formatOptions.fastStart!==void 0?this.formatOptions.fastStart==="fragmented":n instanceof au),this.boxWriter=new Bf(this.writer),this.fastStart=this.formatOptions.fastStart??(this.writer.target instanceof au?"in-memory":!1),this.isFragmented=this.fastStart==="fragmented"),this.isCmaf){if(!this.output._hasInitTarget())throw new Error("CMAF outputs require the initTarget field in OutputOptions to be set; the init segment will be written to it.");const n=await this.output._getInitTarget(),s=new g0(n,!0);s.start(),this.initWriter=s,this.initBoxWriter=new Bf(s)}const i=this.output.tracks.some(n=>n.isVideoTrack()&&n.source._codec==="avc");{const n=this.initBoxWriter??this.boxWriter;if(We(n),this.formatOptions.onFtyp&&n.writer.startTrackingWrites(),n.writeBox(nF({isQuickTime:this.isQuickTime,holdsAvc:i,fragmented:this.isFragmented,cmaf:this.isCmaf})),this.formatOptions.onFtyp){const{data:s,start:r}=n.writer.stopTrackingWrites();this.formatOptions.onFtyp(s,r)}this.ftypSize=n.writer.getPos(),this.isCmaf&&await this.initWriter.flush()}if(this.fastStart!=="in-memory")if(this.fastStart==="reserve"){for(const n of this.output.tracks)if(n.metadata.maximumPacketCount===void 0)throw new Error("All tracks must specify maximumPacketCount in their metadata when using fastStart: 'reserve'.")}else this.isFragmented||(We(this.writer),We(this.boxWriter),this.formatOptions.onMdat&&this.writer.startTrackingWrites(),this.mdat=Pf(!0),this.boxWriter.writeBox(this.mdat));await this.writer?.flush();for(const n of this.output.tracks)n.isVideoTrack()&&n.metadata.decoderConfig?this.getVideoTrackData(n,n.metadata.primingPacket??null,{decoderConfig:n.metadata.decoderConfig}):n.isAudioTrack()&&n.metadata.decoderConfig&&this.getAudioTrackData(n,n.metadata.primingPacket??null,{decoderConfig:n.metadata.decoderConfig});t()}allTracksAreKnown(){for(const t of this.output.tracks)if(!t.source._closed&&!this.trackDatas.some(i=>i.track===t))return!1;return!0}async getMimeType(){await this.allTracksKnown.promise;const t=this.trackDatas.map(i=>i.type==="video"||i.type==="audio"?i.info.decoderConfig.codec:{webvtt:"wvtt"}[i.track.source._codec]);return FG({isQuickTime:this.isQuickTime,hasVideo:this.trackDatas.some(i=>i.type==="video"),hasAudio:this.trackDatas.some(i=>i.type==="audio"),codecStrings:t})}getVideoTrackData(t,i,n){const s=this.trackDatas.find(p=>p.track===t);if(s)return s;t0(n,t.source._codec),We(n),We(n.decoderConfig);const r={...n.decoderConfig};We(r.codedWidth!==void 0),We(r.codedHeight!==void 0);let o=!1;if(t.source._codec==="avc"&&!r.description){if(!i)throw new Error("No AVC description provided; you must therefore provide a priming packet.");const p=BC(i.data);if(!p)throw new Error("Couldn't extract an AVCDecoderConfigurationRecord from the AVC packet. Make sure the packets are in Annex B format (as specified in ITU-T-REC-H.264) when not providing a description, or provide a description (must be an AVCDecoderConfigurationRecord as specified in ISO 14496-15) and ensure the packets are in AVCC format.");r.description=PC(p),o=!0}else if(t.source._codec==="hevc"&&!r.description){if(!i)throw new Error("No HEVC description provided; you must therefore provide a priming packet.");const p=DC(i.data);if(!p)throw new Error("Couldn't extract an HEVCDecoderConfigurationRecord from the HEVC packet. Make sure the packets are in Annex B format (as specified in ITU-T-REC-H.265) when not providing a description, or provide a description (must be an HEVCDecoderConfigurationRecord as specified in ISO 14496-15) and ensure the packets are in HEVC format.");r.description=KC(p),o=!0}const l=yC(1/(t.metadata.frameRate??Vs),1e6).den,c=r.displayAspectWidth,d=r.displayAspectHeight,g=c===void 0||d===void 0?{num:1,den:1}:Hm({num:c*r.codedHeight,den:d*r.codedWidth}),h=r.codec==="ap4h"||r.codec==="ap4x",m={muxer:this,track:t,type:"video",info:{width:r.codedWidth,height:r.codedHeight,pixelAspectRatio:g,decoderConfig:r,requiresAnnexBTransformation:o,hasAlphaChannel:h},timescale:l,samples:[],sampleQueue:[],timestampProcessingQueue:[],timeToSampleTable:[],compositionTimeOffsetTable:[],lastTimescaleUnits:null,lastSample:null,startTimestampOffset:null,finalizedChunks:[],currentChunk:null,compactlyCodedChunkTable:[],closed:!1,avgBitrate:t.source._nominalBitrate??t.metadata.averageBitrate??0,maxBitrate:t.source._nominalBitrate??t.metadata.bitrate??0};return this.trackDatas.push(m),this.trackDatas.sort((p,u)=>p.track.id-u.track.id),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),m}getAudioTrackData(t,i,n){const s=this.trackDatas.find(c=>c.track===t);if(s)return s;a0(n,t.source._codec),We(n),We(n.decoderConfig);const r={...n.decoderConfig};let o=!1;if(t.source._codec==="aac"&&!r.description){if(!i)throw new Error("No AAC description provided; you must therefore provide a priming packet.");const c=Mf(Zl.tempFromBytes(i.data));if(!c)throw new Error("Couldn't parse ADTS header from the AAC packet. Make sure the packets are in ADTS format (as specified in ISO 13818-7) when not providing a description, or provide a description (must be an AudioSpecificConfig as specified in ISO 14496-3) and ensure the packets are raw AAC data.");const d=Hd[c.samplingFrequencyIndex],g=qf[c.channelConfiguration];if(d===void 0||g===void 0)throw new Error("Invalid ADTS frame header.");r.description=Jm({objectType:c.objectType,outputSampleRate:d,outputNumberOfChannels:g}),o=!0}if(!i){if(t.source._codec==="ac3"||t.source._codec==="eac3")throw new Error("AC-3/E-AC-3 require a priming packet.");if(t.source._codec==="dts")throw new Error("DTS requires a priming packet.")}const l={muxer:this,track:t,type:"audio",info:{numberOfChannels:n.decoderConfig.numberOfChannels,sampleRate:n.decoderConfig.sampleRate,decoderConfig:r,requiresPcmTransformation:!this.isFragmented&&Ds.includes(t.source._codec),expectedNextPcmPacketTimestamp:null,requiresAdtsStripping:o,primingPacket:i},timescale:r.sampleRate,samples:[],sampleQueue:[],timestampProcessingQueue:[],timeToSampleTable:[],compositionTimeOffsetTable:[],lastTimescaleUnits:null,lastSample:null,startTimestampOffset:null,finalizedChunks:[],currentChunk:null,compactlyCodedChunkTable:[],closed:!1,avgBitrate:t.source._nominalBitrate??t.metadata.averageBitrate??0,maxBitrate:t.source._nominalBitrate??t.metadata.bitrate??0};return this.trackDatas.push(l),this.trackDatas.sort((c,d)=>c.track.id-d.track.id),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),l}getSubtitleTrackData(t,i){const n=this.trackDatas.find(r=>r.track===t);if(n)return n;wy(i),We(i),We(i.config);const s={muxer:this,track:t,type:"subtitle",info:{config:i.config},timescale:1e3,samples:[],sampleQueue:[],timestampProcessingQueue:[],timeToSampleTable:[],compositionTimeOffsetTable:[],lastTimescaleUnits:null,lastSample:null,startTimestampOffset:null,finalizedChunks:[],currentChunk:null,compactlyCodedChunkTable:[],closed:!1,avgBitrate:t.source._nominalBitrate??t.metadata.averageBitrate??0,maxBitrate:t.source._nominalBitrate??t.metadata.bitrate??0,lastCueEndTimestamp:null,cueQueue:[],nextSourceId:0,cueToSourceId:new WeakMap};return this.trackDatas.push(s),this.trackDatas.sort((r,o)=>r.track.id-o.track.id),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),s}async addEncodedVideoPacket(t,i,n){const s=await this.mutex.acquire();try{const r=this.getVideoTrackData(t,i,n);let o=i.data;if(r.info.requiresAnnexBTransformation){const c=[...Wd(o)].map(d=>o.subarray(d.offset,d.offset+d.length));if(c.length===0)throw new Error("Failed to transform packet data. Make sure all packets are provided in Annex B format, as specified in ITU-T-REC-H.264 and ITU-T-REC-H.265.");o=RC(c,4)}this.validateTimestamp(r.track,i.timestamp,i.type==="key");const l=this.createSampleForTrack(r,o,i.timestamp,i.duration,i.type);await this.registerSample(r,l)}finally{s()}}async addEncodedAudioPacket(t,i,n){const s=await this.mutex.acquire();try{const r=this.getAudioTrackData(t,i,n);let o=i.data;if(r.info.requiresAdtsStripping){const g=Mf(Zl.tempFromBytes(o));if(!g)throw new Error("Expected ADTS frame, didn't get one.");const h=g.crcCheck===null?Ay:Cy;o=o.subarray(h)}this.validateTimestamp(r.track,i.timestamp,i.type==="key");let l=i.timestamp,c=i.duration;if(r.info.requiresPcmTransformation){const h=tl(r.info.decoderConfig.codec).sampleSize*r.info.numberOfChannels;if(c=o.byteLength/h/r.info.sampleRate,r.info.expectedNextPcmPacketTimestamp!==null){const m=l-r.info.expectedNextPcmPacketTimestamp;if(m<.01)l=r.info.expectedNextPcmPacketTimestamp;else{const p=await this.padWithSilence(r,r.info.expectedNextPcmPacketTimestamp,m);l=r.info.expectedNextPcmPacketTimestamp+p}}r.info.expectedNextPcmPacketTimestamp=l+c}const d=this.createSampleForTrack(r,o,l,c,i.type);await this.registerSample(r,d)}finally{s()}}async padWithSilence(t,i,n){const s=sn(n,t.timescale);if(n=s/t.timescale,s>0){const{sampleSize:r,silentValue:o}=tl(t.info.decoderConfig.codec),l=s*t.info.numberOfChannels,c=new Uint8Array(r*l).fill(o),d=this.createSampleForTrack(t,new Uint8Array(c.buffer),i,n,"key");await this.registerSample(t,d)}return n}async addSubtitleCue(t,i,n){const s=await this.mutex.acquire();try{const r=this.getSubtitleTrackData(t,n);this.validateTimestamp(r.track,i.timestamp,!0),t.source._codec==="webvtt"&&(r.cueQueue.push(i),await this.processWebVTTCues(r,i.timestamp))}finally{s()}}async processWebVTTCues(t,i){for(;t.cueQueue.length>0;){t.lastCueEndTimestamp??=Math.min(0,t.cueQueue[0].timestamp);const n=new Set([]);for(const d of t.cueQueue)We(d.timestamp<=i),We(t.lastCueEndTimestamp<=d.timestamp+d.duration),n.add(Math.max(d.timestamp,t.lastCueEndTimestamp)),n.add(d.timestamp+d.duration);const s=[...n].sort((d,g)=>d-g),r=s[0],o=s[1]??r;if(i<o)break;if(t.lastCueEndTimestamp<r){this.auxWriter.seek(0);const d=e7();this.auxBoxWriter.writeBox(d);const g=this.auxTarget._getSlice(0,this.auxWriter.getPos()),h=this.createSampleForTrack(t,g,t.lastCueEndTimestamp,r-t.lastCueEndTimestamp,"key");await this.registerSample(t,h),t.lastCueEndTimestamp=r}this.auxWriter.seek(0);for(let d=0;d<t.cueQueue.length;d++){const g=t.cueQueue[d];if(g.timestamp>=o)break;Rf.lastIndex=0;const h=Rf.test(g.text),m=g.timestamp+g.duration;let p=t.cueToSourceId.get(g);if(p===void 0&&o<m&&(p=t.nextSourceId++,t.cueToSourceId.set(g,p)),g.notes){const f=a7(g.notes);this.auxBoxWriter.writeBox(f)}const u=t7(g.text,h?r:null,g.identifier??null,g.settings??null,p??null);this.auxBoxWriter.writeBox(u),m===o&&t.cueQueue.splice(d--,1)}const l=this.auxTarget._getSlice(0,this.auxWriter.getPos()),c=this.createSampleForTrack(t,l,r,o-r,"key");await this.registerSample(t,c),t.lastCueEndTimestamp=o}}createSampleForTrack(t,i,n,s,r){return{timestamp:n,decodeTimestamp:n,duration:s,data:i,size:i.byteLength,type:r,timescaleUnitsToNextSample:sn(s,t.timescale)}}processTimestamps(t,i){if(t.timestampProcessingQueue.length===0)return;if(t.type==="audio"&&t.info.requiresPcmTransformation){We(!this.isFragmented),t.startTimestampOffset??=t.timestampProcessingQueue[0].timestamp;let s=0;for(let r=0;r<t.timestampProcessingQueue.length;r++){const o=t.timestampProcessingQueue[r],l=sn(o.duration,t.timescale);s+=l}if(t.timeToSampleTable.length===0)t.timeToSampleTable.push({sampleCount:s,sampleDelta:1});else{const r=Ar(t.timeToSampleTable);r.sampleCount+=s}t.timestampProcessingQueue.length=0;return}const n=t.timestampProcessingQueue.map(s=>s.timestamp).sort((s,r)=>s-r);this.isFragmented?t.startTimestampOffset??=Math.min(n[0],0):t.startTimestampOffset??=n[0];for(let s=0;s<t.timestampProcessingQueue.length;s++){const r=t.timestampProcessingQueue[s];r.decodeTimestamp=n[s];const o=sn(r.timestamp-r.decodeTimestamp,t.timescale),l=sn(r.duration,t.timescale);if(t.lastTimescaleUnits!==null){We(t.lastSample);const c=sn(r.decodeTimestamp,t.timescale,!1),d=Math.round(c-t.lastTimescaleUnits);if(We(d>=0),t.lastTimescaleUnits+=d,t.lastSample.timescaleUnitsToNextSample=d,!this.isFragmented){let g=Ar(t.timeToSampleTable);if(We(g),g.sampleCount===1){g.sampleDelta=d;const m=t.timeToSampleTable[t.timeToSampleTable.length-2];m&&m.sampleDelta===d&&(m.sampleCount++,t.timeToSampleTable.pop(),g=m)}else g.sampleDelta!==d&&(g.sampleCount--,t.timeToSampleTable.push(g={sampleCount:1,sampleDelta:d}));g.sampleDelta===l?g.sampleCount++:t.timeToSampleTable.push({sampleCount:1,sampleDelta:l});const h=Ar(t.compositionTimeOffsetTable);We(h),h.sampleCompositionTimeOffset===o?h.sampleCount++:t.compositionTimeOffsetTable.push({sampleCount:1,sampleCompositionTimeOffset:o})}}else t.lastTimescaleUnits=sn(r.decodeTimestamp,t.timescale,!1),this.isFragmented||(t.timeToSampleTable.push({sampleCount:1,sampleDelta:l}),t.compositionTimeOffsetTable.push({sampleCount:1,sampleCompositionTimeOffset:o}));t.lastSample=r}if(t.timestampProcessingQueue.length=0,We(t.lastSample),We(t.lastTimescaleUnits!==null),i!==void 0&&t.lastSample.timescaleUnitsToNextSample===0){We(i.type==="key");const s=sn(i.timestamp,t.timescale,!1),r=Math.round(s-t.lastTimescaleUnits);t.lastSample.timescaleUnitsToNextSample=r}}async registerSample(t,i){i.type==="key"&&this.processTimestamps(t,i),t.timestampProcessingQueue.push(i),this.isFragmented?(t.sampleQueue.push(i),await this.interleaveSamples()):this.fastStart==="reserve"?await this.registerSampleFastStartReserve(t,i):await this.addSampleToTrack(t,i)}async addSampleToTrack(t,i){if(!this.isFragmented&&(t.samples.push(i),this.fastStart==="reserve")){const s=t.track.metadata.maximumPacketCount;if(We(s!==void 0),t.samples.length>s)throw new Error(`Track #${t.track.id} has already reached the maximum packet count (${s}). Either add less packets or increase the maximum packet count.`)}let n=!1;if(!t.currentChunk)n=!0;else{t.currentChunk.startTimestamp=Math.min(t.currentChunk.startTimestamp,i.timestamp);const s=i.timestamp-t.currentChunk.startTimestamp;if(this.isFragmented){const r=this.trackDatas.every(o=>{if(t===o)return i.type==="key";const l=o.sampleQueue[0];return l?l.type==="key":o.closed});s>=this.minimumFragmentDuration&&r&&i.timestamp>this.maxWrittenTimestamp&&(n=!0,await this.finalizeFragment())}else n=s>=.5}n&&(t.currentChunk&&await this.finalizeCurrentChunk(t),t.currentChunk={startTimestamp:i.timestamp,samples:[],offset:null,moofOffset:null,trafIndex:null}),We(t.currentChunk),t.currentChunk.samples.push(i),this.isFragmented&&(this.maxWrittenTimestamp=Math.max(this.maxWrittenTimestamp,i.timestamp),this.maxWrittenEndTimestamp=Math.max(this.maxWrittenEndTimestamp,i.timestamp+i.duration),this.minWrittenTimestamp=Math.min(this.minWrittenTimestamp,i.timestamp))}async finalizeCurrentChunk(t){if(We(!this.isFragmented),We(this.writer),!t.currentChunk)return;t.finalizedChunks.push(t.currentChunk),this.finalizedChunks.push(t.currentChunk);let i=t.currentChunk.samples.length;if(t.type==="audio"&&t.info.requiresPcmTransformation&&(i=t.currentChunk.samples.reduce((n,s)=>n+sn(s.duration,t.timescale),0)),(t.compactlyCodedChunkTable.length===0||Ar(t.compactlyCodedChunkTable).samplesPerChunk!==i)&&t.compactlyCodedChunkTable.push({firstChunk:t.finalizedChunks.length,samplesPerChunk:i}),this.fastStart==="in-memory"){t.currentChunk.offset=0;return}t.currentChunk.offset=this.writer.getPos();for(const n of t.currentChunk.samples)We(n.data),this.writer.write(n.data),n.data=null;await this.writer.flush()}async interleaveSamples(t=!1){if(We(this.isFragmented),!(!t&&!this.allTracksAreKnown()))e:for(;;){let i=null,n=1/0;for(const r of this.trackDatas){if(!t&&r.sampleQueue.length===0&&!r.closed)break e;r.sampleQueue.length>0&&r.sampleQueue[0].timestamp<n&&(i=r,n=r.sampleQueue[0].timestamp)}if(!i)break;const s=i.sampleQueue.shift();await this.addSampleToTrack(i,s)}}async finalizeFragment(t=!this.isCmaf){if(We(this.isFragmented),!this.wroteFragmentedHeader){this.wroteFragmentedHeader=!0;const p=this.initBoxWriter??this.boxWriter;We(p),this.formatOptions.onMoov&&p.writer.startTrackingWrites(),this.ensureOneEnabledTrack();const u=tu(this);if(p.writeBox(u),this.formatOptions.onMoov){const{data:f,start:_}=p.writer.stopTrackingWrites();this.formatOptions.onMoov(f,_)}if(this.isCmaf){We(this.initWriter),await this.initWriter.flush(),await this.initWriter.finalize(),this.writer=await this.output._getRootWriter(!0),this.boxWriter=new Bf(this.writer);const f=this.boxWriter.measureBox(i2()),_=this.boxWriter.measureBox(n2(this,0));this.segmentHeaderSize=f+_,this.writer.seek(this.segmentHeaderSize)}}We(this.writer),We(this.boxWriter);const i=this.trackDatas.filter(p=>p.currentChunk);if(i.length===0){t&&await this.writer.flush();return}const n=this.nextFragmentNumber++,s=r2(n,i),r=this.writer.getPos(),o=r+this.boxWriter.measureBox(s);let l=o+i0,c=1/0;for(let p=0;p<i.length;p++){const u=i[p];We(u.currentChunk),We(u.startTimestampOffset!==null),u.currentChunk.offset=l,u.currentChunk.moofOffset=r,u.currentChunk.trafIndex=p,u.currentChunk.startTimestamp-=u.startTimestampOffset;for(const f of u.currentChunk.samples)l+=f.size,f.timestamp-=u.startTimestampOffset,f.decodeTimestamp-=u.startTimestampOffset;c=Math.min(c,u.currentChunk.startTimestamp)}const d=l-o,g=d>=2**32;if(g)for(const p of i)p.currentChunk.offset+=xy-i0;this.formatOptions.onMoof&&this.writer.startTrackingWrites();const h=r2(n,i);if(this.boxWriter.writeBox(h),this.formatOptions.onMoof){const{data:p,start:u}=this.writer.stopTrackingWrites();this.formatOptions.onMoof(p,u,c)}We(this.writer.getPos()===o),this.formatOptions.onMdat&&this.writer.startTrackingWrites();const m=Pf(g);m.size=d,this.boxWriter.writeBox(m),this.writer.seek(o+(g?xy:i0));for(const p of i)for(const u of p.currentChunk.samples)this.writer.write(u.data),u.data=null;if(this.formatOptions.onMdat){const{data:p,start:u}=this.writer.stopTrackingWrites();this.formatOptions.onMdat(p,u)}for(const p of i)p.finalizedChunks.push(p.currentChunk),this.finalizedChunks.push(p.currentChunk),p.currentChunk=null;t&&await this.writer.flush()}async registerSampleFastStartReserve(t,i){this.allTracksAreKnown()?(this.mdat||await this.createFastStartReserveMdat(),await this.addSampleToTrack(t,i)):t.sampleQueue.push(i)}async createFastStartReserveMdat(){We(this.writer),We(this.boxWriter),this.ensureOneEnabledTrack();const t=tu(this),n=this.boxWriter.measureBox(t)+this.computeSampleTableSizeUpperBound()+4096;We(this.ftypSize!==null),this.writer.seek(this.ftypSize+n),this.formatOptions.onMdat&&this.writer.startTrackingWrites(),this.mdat=Pf(!0),this.boxWriter.writeBox(this.mdat);for(const s of this.trackDatas){for(const r of s.sampleQueue)await this.addSampleToTrack(s,r);s.sampleQueue.length=0}}computeSampleTableSizeUpperBound(){We(this.fastStart==="reserve");let t=0;for(const i of this.trackDatas){const n=i.track.metadata.maximumPacketCount;We(n!==void 0),t+=8*Math.ceil(2/3*n),t+=4*n,t+=8*Math.ceil(2/3*n),t+=12*Math.ceil(2/3*n),t+=4*n,t+=8*n}return t}async onTrackClose(t){const i=await this.mutex.acquire(),n=this.trackDatas.find(s=>s.track===t);n&&(n.closed=!0,n.type==="subtitle"&&t.source._codec==="webvtt"&&await this.processWebVTTCues(n,1/0),this.processTimestamps(n)),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),this.isFragmented&&await this.interleaveSamples(),i()}ensureOneEnabledTrack(){for(const t of["video","audio","subtitle"]){const i=this.trackDatas.filter(s=>s.type===t);if(i.length===0)continue;if(!i.some(s=>s.track.metadata.disposition?.default!==!1)){const s=i[0];s.track.metadata.disposition={...s.track.metadata.disposition,default:!0}}}}async forceFragmentFinalization(){We(this.isFragmented);const t=await this.mutex.acquire();try{for(const i of this.trackDatas)i.type==="subtitle"&&i.track.source._codec==="webvtt"&&await this.processWebVTTCues(i,1/0),this.processTimestamps(i);await this.interleaveSamples(!0),await this.finalizeFragment()}finally{t()}}async finalize(){const t=await this.mutex.acquire();this.allTracksKnown.resolve(),this.ensureOneEnabledTrack(),!this.mdat&&this.fastStart==="reserve"&&await this.createFastStartReserveMdat();for(const i of this.trackDatas)i.closed=!0,i.type==="subtitle"&&i.track.source._codec==="webvtt"&&await this.processWebVTTCues(i,1/0),this.processTimestamps(i);if(this.isFragmented)await this.interleaveSamples(!0),await this.finalizeFragment(!1);else for(const i of this.trackDatas){await this.finalizeCurrentChunk(i);const n=Dc(i);if(n>0){let l=0;for(const c of i.samples)l+=c.size;i.avgBitrate=Math.round(8*l/n)}else i.avgBitrate=0;let s=0,r=0,o=0;for(let l=0;l<i.samples.length;l++){const c=i.samples[l];for(r+=c.size;c.decodeTimestamp-i.samples[s].decodeTimestamp>=1;)r-=i.samples[s].size,s++;o=Math.max(o,r)}if(i.maxBitrate=8*o,i.startTimestampOffset!==null)for(let l=0;l<i.samples.length;l++){const c=i.samples[l];c.timestamp-=i.startTimestampOffset,c.decodeTimestamp-=i.startTimestampOffset}}if(We(this.writer),We(this.boxWriter),this.fastStart==="in-memory"){this.mdat=Pf(!1);let i;for(let s=0;s<2;s++){const r=tu(this),o=this.boxWriter.measureBox(r);i=this.boxWriter.measureBox(this.mdat);let l=this.writer.getPos()+o+i;for(const c of this.finalizedChunks){c.offset=l;for(const{data:d}of c.samples)We(d),l+=d.byteLength,i+=d.byteLength}if(l<2**32)break;i>=2**32&&(this.mdat.largeSize=!0)}this.formatOptions.onMoov&&this.writer.startTrackingWrites();const n=tu(this);if(this.boxWriter.writeBox(n),this.formatOptions.onMoov){const{data:s,start:r}=this.writer.stopTrackingWrites();this.formatOptions.onMoov(s,r)}this.formatOptions.onMdat&&this.writer.startTrackingWrites(),this.mdat.size=i,this.boxWriter.writeBox(this.mdat);for(const s of this.finalizedChunks)for(const r of s.samples)We(r.data),this.writer.write(r.data),r.data=null;if(this.formatOptions.onMdat){const{data:s,start:r}=this.writer.stopTrackingWrites();this.formatOptions.onMdat(s,r)}}else if(this.isFragmented)if(this.isCmaf){const i=this.segmentHeaderSize!==null?this.writer.getPos()-this.segmentHeaderSize:0;this.writer.seek(0),this.boxWriter.writeBox(i2()),this.boxWriter.writeBox(n2(this,i))}else{const i=this.writer.getPos(),n=JF(this.trackDatas);this.boxWriter.writeBox(n);const s=this.writer.getPos()-i;this.writer.seek(this.writer.getPos()-4),this.boxWriter.writeU32(s)}else{We(this.mdat);const i=this.boxWriter.offsets.get(this.mdat);We(i!==void 0);const n=this.writer.getPos()-i;if(this.mdat.size=n,this.mdat.largeSize=n>=2**32,this.boxWriter.patchBox(this.mdat),this.formatOptions.onMdat){const{data:r,start:o}=this.writer.stopTrackingWrites();this.formatOptions.onMdat(r,o)}const s=tu(this);if(this.fastStart==="reserve"){We(this.ftypSize!==null),this.writer.seek(this.ftypSize),this.formatOptions.onMoov&&this.writer.startTrackingWrites(),this.boxWriter.writeBox(s);const r=this.boxWriter.offsets.get(this.mdat)-this.writer.getPos();this.boxWriter.writeBox(sF(r))}else this.formatOptions.onMoov&&this.writer.startTrackingWrites(),this.boxWriter.writeBox(s);if(this.formatOptions.onMoov){const{data:r,start:o}=this.writer.stopTrackingWrites();this.formatOptions.onMoov(r,o)}}t()}}const h7=-32768,_7=2**15-1,f2="Mediabunny",p2=6,m2=5,v7={video:1,audio:2,subtitle:17};class b7 extends Jy{constructor(t,i){super(t),this.trackDatas=[],this.allTracksKnown=jm(),this.segment=null,this.segmentInfo=null,this.seekHead=null,this.tracksElement=null,this.tagsElement=null,this.attachmentsElement=null,this.segmentDuration=null,this.cues=null,this.currentCluster=null,this.currentClusterStartMsTimestamp=null,this.currentClusterMaxMsTimestamp=null,this.trackDatasInCurrentCluster=new Map,this.startTimestamp=1/0,this.endTimestamp=-1/0,this.warnedAboutTooNegativeTimestamp=!1,this.format=i}async start(){const t=await this.mutex.acquire();this.writer=await this.output._getRootWriter(!!this.format._options.appendOnly),this.ebmlWriter=new zG(this.writer),this.writeEBMLHeader(),this.createSegmentInfo(),this.createCues(),await this.writer.flush();for(const i of this.output.tracks)i.isVideoTrack()&&i.metadata.decoderConfig?this.getVideoTrackData(i,i.metadata.primingPacket??null,{decoderConfig:i.metadata.decoderConfig}):i.isAudioTrack()&&i.metadata.decoderConfig&&this.getAudioTrackData(i,i.metadata.primingPacket??null,{decoderConfig:i.metadata.decoderConfig});t()}writeEBMLHeader(){this.format._options.onEbmlHeader&&this.writer.startTrackingWrites();const t={id:at.EBML,data:[{id:at.EBMLVersion,data:1},{id:at.EBMLReadVersion,data:1},{id:at.EBMLMaxIDLength,data:4},{id:at.EBMLMaxSizeLength,data:8},{id:at.DocType,data:this.format instanceof jf?"webm":"matroska"},{id:at.DocTypeVersion,data:2},{id:at.DocTypeReadVersion,data:2}]};if(this.ebmlWriter.writeEBML(t),this.format._options.onEbmlHeader){const{data:i,start:n}=this.writer.stopTrackingWrites();this.format._options.onEbmlHeader(i,n)}}maybeCreateSeekHead(t){if(this.format._options.appendOnly)return;const i=new Uint8Array([28,83,187,107]),n=new Uint8Array([21,73,169,102]),s=new Uint8Array([22,84,174,107]),r=new Uint8Array([25,65,164,105]),o=new Uint8Array([18,84,195,103]),l={id:at.SeekHead,data:[{id:at.Seek,data:[{id:at.SeekID,data:i},{id:at.SeekPosition,size:5,data:t?this.ebmlWriter.offsets.get(this.cues)-this.segmentDataOffset:0}]},{id:at.Seek,data:[{id:at.SeekID,data:n},{id:at.SeekPosition,size:5,data:t?this.ebmlWriter.offsets.get(this.segmentInfo)-this.segmentDataOffset:0}]},{id:at.Seek,data:[{id:at.SeekID,data:s},{id:at.SeekPosition,size:5,data:t?this.ebmlWriter.offsets.get(this.tracksElement)-this.segmentDataOffset:0}]},this.attachmentsElement?{id:at.Seek,data:[{id:at.SeekID,data:r},{id:at.SeekPosition,size:5,data:t?this.ebmlWriter.offsets.get(this.attachmentsElement)-this.segmentDataOffset:0}]}:null,this.tagsElement?{id:at.Seek,data:[{id:at.SeekID,data:o},{id:at.SeekPosition,size:5,data:t?this.ebmlWriter.offsets.get(this.tagsElement)-this.segmentDataOffset:0}]}:null]};this.seekHead=l}createSegmentInfo(){const t={id:at.Duration,data:new n0(0)};this.segmentDuration=t;const i={id:at.Info,data:[{id:at.TimestampScale,data:1e6},{id:at.MuxingApp,data:f2},{id:at.WritingApp,data:f2},this.format._options.appendOnly?null:t]};this.segmentInfo=i}createTracks(){const t={id:at.Tracks,data:[]};this.tracksElement=t;for(const i of this.trackDatas){let n=EG[i.track.source._codec];We(n),i.type==="audio"&&i.track.source._codec==="dts"&&(i.info.decoderConfig.codec==="dtse"?n="A_DTS/EXPRESS":i.info.decoderConfig.codec==="dtsl"&&(n="A_DTS/LOSSLESS"));let s=0;if(i.type==="audio"&&i.track.source._codec==="opus"){s=1e6*80;const r=i.info.decoderConfig.description;if(r){const o=zs(r),l=fy(o);s=Math.round(1e9*(l.preSkip/kG))}}t.data.push({id:at.TrackEntry,data:[{id:at.TrackNumber,data:i.track.id},{id:at.TrackUID,data:i.track.id},{id:at.TrackType,data:v7[i.type]},i.track.metadata.disposition?.default===!1?{id:at.FlagDefault,data:0}:null,i.track.metadata.disposition?.forced?{id:at.FlagForced,data:1}:null,i.track.metadata.disposition?.hearingImpaired?{id:at.FlagHearingImpaired,data:1}:null,i.track.metadata.disposition?.visuallyImpaired?{id:at.FlagVisualImpaired,data:1}:null,i.track.metadata.disposition?.original?{id:at.FlagOriginal,data:1}:null,i.track.metadata.disposition?.commentary?{id:at.FlagCommentary,data:1}:null,{id:at.FlagLacing,data:0},{id:at.Language,data:i.track.metadata.languageCode??Kb},{id:at.CodecID,data:n},i.codecPrivate?{id:at.CodecPrivate,data:zs(i.codecPrivate)}:null,{id:at.CodecDelay,data:0},{id:at.SeekPreRoll,data:s},i.track.metadata.name!==void 0?{id:at.Name,data:new al(i.track.metadata.name)}:null,i.type==="video"?this.videoSpecificTrackInfo(i):null,i.type==="audio"?this.audioSpecificTrackInfo(i):null,i.type==="subtitle"?this.subtitleSpecificTrackInfo(i):null]})}}videoSpecificTrackInfo(t){const{frameRate:i,transformationMatrix:n}=t.track.metadata,s=[i?{id:at.DefaultDuration,data:1e9/i}:null];let r,o,l;if(n){r=oC(n);const u=Sf(Lb(-r),n);o=Math.sign(u[0]),l=Math.sign(u[4]),l===-1&&(l=1,o=-o,r=xf(r+180))}else r=t.track.metadata.rotation??0,o=t.track.metadata.flip?-1:1,l=1;const c=r?xf(o===-1?r:-r):0,d=Math.round(Math.acos(o)*Pm),g=Math.round(Math.acos(l)*Pm),h=!!t.info.aspectRatio&&t.info.aspectRatio.num*t.info.height!==t.info.aspectRatio.den*t.info.width,m=t.info.decoderConfig.colorSpace,p={id:at.Video,data:[{id:at.PixelWidth,data:t.info.width},{id:at.PixelHeight,data:t.info.height},h?{id:at.DisplayWidth,data:t.info.aspectRatio.num}:null,h?{id:at.DisplayHeight,data:t.info.aspectRatio.den}:null,h?{id:at.DisplayUnit,data:3}:null,t.info.alphaMode?{id:at.AlphaMode,data:1}:null,Hb(m)?null:{id:at.Colour,data:[{id:at.MatrixCoefficients,data:m?.matrix!=null?Vd[m.matrix]:2},{id:at.TransferCharacteristics,data:m?.transfer!=null?Ld[m.transfer]:2},{id:at.Primaries,data:m?.primaries!=null?Id[m.primaries]:2},{id:at.Range,data:m?.fullRange!=null?m.fullRange?2:1:0}]},c||d||g?{id:at.Projection,data:[{id:at.ProjectionType,data:0},d?{id:at.ProjectionPoseYaw,data:new Kd(d)}:null,g?{id:at.ProjectionPosePitch,data:new Kd(g)}:null,c?{id:at.ProjectionPoseRoll,data:new Kd((c+180)%360-180)}:null]}:null]};return s.push(p),s}audioSpecificTrackInfo(t){const i=Ds.includes(t.track.source._codec)?tl(t.track.source._codec):null;return[{id:at.Audio,data:[{id:at.SamplingFrequency,data:new Kd(t.info.sampleRate)},{id:at.Channels,data:t.info.numberOfChannels},i?{id:at.BitDepth,data:8*i.sampleSize}:null]}]}subtitleSpecificTrackInfo(t){return[]}maybeCreateTags(){const t=[],i=(r,o)=>{t.push({id:at.SimpleTag,data:[{id:at.TagName,data:new al(r)},typeof o=="string"?{id:at.TagString,data:new al(o)}:{id:at.TagBinary,data:o}]})},n=this.output._metadataTags,s=new Set;for(const{key:r,value:o}of Vm(n))switch(r){case"title":i("TITLE",o),s.add("TITLE");break;case"description":i("DESCRIPTION",o),s.add("DESCRIPTION");break;case"artist":i("ARTIST",o),s.add("ARTIST");break;case"album":i("ALBUM",o),s.add("ALBUM");break;case"albumArtist":i("ALBUM_ARTIST",o),s.add("ALBUM_ARTIST");break;case"genre":i("GENRE",o),s.add("GENRE");break;case"beatsPerMinute":i("BPM",o.toString()),s.add("BPM");break;case"comment":i("COMMENT",o),s.add("COMMENT");break;case"lyrics":i("LYRICS",o),s.add("LYRICS");break;case"date":i("DATE",o.toISOString().slice(0,10)),s.add("DATE");break;case"trackNumber":{const l=n.tracksTotal!==void 0?`${o}/${n.tracksTotal}`:o.toString();i("PART_NUMBER",l),s.add("PART_NUMBER")}break;case"discNumber":{const l=n.discsTotal!==void 0?`${o}/${n.discsTotal}`:o.toString();i("DISC",l),s.add("DISC")}break;case"tracksTotal":case"discsTotal":break;case"images":case"raw":break;default:_o(r)}if(n.raw)for(const r in n.raw){const o=n.raw[r];o==null||s.has(r)||(typeof o=="string"||o instanceof Uint8Array)&&i(r,o)}t.length!==0&&(this.tagsElement={id:at.Tags,data:[{id:at.Tag,data:[{id:at.Targets,data:[{id:at.TargetTypeValue,data:50},{id:at.TargetType,data:"MOVIE"}]},...t]}]})}maybeCreateAttachments(){const t=this.output._metadataTags,i=[],n=new Set,s=t.images??[];for(const r of s){let o=r.name;o===void 0&&(o=(r.kind==="coverFront"?"cover":r.kind==="coverBack"?"back":"image")+(SC(r.mimeType)??""));let l;for(;;){l=0n;for(let c=0;c<8;c++)l<<=8n,l|=BigInt(Math.floor(Math.random()*256));if(l!==0n&&!n.has(l))break}n.add(l),i.push({id:at.AttachedFile,data:[r.description!==void 0?{id:at.FileDescription,data:new al(r.description)}:null,{id:at.FileName,data:new al(o)},{id:at.FileMediaType,data:r.mimeType},{id:at.FileData,data:r.data},{id:at.FileUID,data:l}]})}for(const[r,o]of Object.entries(t.raw??{}))!(o instanceof iy)||!/^\d+$/.test(r)||s.find(c=>c.mimeType===o.mimeType&&TC(c.data,o.data))||i.push({id:at.AttachedFile,data:[o.description!==void 0?{id:at.FileDescription,data:new al(o.description)}:null,{id:at.FileName,data:new al(o.name??"")},{id:at.FileMediaType,data:o.mimeType??""},{id:at.FileData,data:o.data},{id:at.FileUID,data:BigInt(r)}]});i.length!==0&&(this.attachmentsElement={id:at.Attachments,data:i})}createSegment(){this.createTracks(),this.maybeCreateTags(),this.maybeCreateAttachments(),this.maybeCreateSeekHead(!1);const t={id:at.Segment,size:this.format._options.appendOnly?-1:p2,data:[this.seekHead,this.segmentInfo,this.tracksElement,this.attachmentsElement,this.tagsElement]};if(this.segment=t,this.format._options.onSegmentHeader&&this.writer.startTrackingWrites(),this.ebmlWriter.writeEBML(t),this.format._options.onSegmentHeader){const{data:i,start:n}=this.writer.stopTrackingWrites();this.format._options.onSegmentHeader(i,n)}}createCues(){this.cues={id:at.Cues,data:[]}}get segmentDataOffset(){return We(this.segment),this.ebmlWriter.dataOffsets.get(this.segment)}allTracksAreKnown(){for(const t of this.output.tracks)if(!t.source._closed&&!this.trackDatas.some(i=>i.track===t))return!1;return!0}async getMimeType(){await this.allTracksKnown.promise;const t=this.trackDatas.map(i=>i.type==="video"||i.type==="audio"?i.info.decoderConfig.codec:{webvtt:"wvtt"}[i.track.source._codec]);return UG({isWebM:this.format instanceof jf,hasVideo:this.trackDatas.some(i=>i.type==="video"),hasAudio:this.trackDatas.some(i=>i.type==="audio"),codecStrings:t})}getVideoTrackData(t,i,n){const s=this.trackDatas.find(d=>d.track===t);if(s)return s;t0(n,t.source._codec),We(n),We(n.decoderConfig),We(n.decoderConfig.codedWidth!==void 0),We(n.decoderConfig.codedHeight!==void 0);const r=n.decoderConfig.displayAspectWidth,o=n.decoderConfig.displayAspectHeight,l=r===void 0||o===void 0?null:Hm({num:r,den:o}),c={track:t,type:"video",info:{width:n.decoderConfig.codedWidth,height:n.decoderConfig.codedHeight,aspectRatio:l,decoderConfig:n.decoderConfig,alphaMode:i?!!i.sideData.alpha:null},chunkQueue:[],lastWrittenMsTimestamp:null,codecPrivate:n.decoderConfig.description??null,closed:!1};return t.source._codec==="vp9"?c.codecPrivate=new Uint8Array(yG(c.info.decoderConfig.codec)):t.source._codec==="av1"?c.codecPrivate=new Uint8Array(by(c.info.decoderConfig.codec)):t.source._codec==="prores"&&(c.codecPrivate=ys.encode(n.decoderConfig.codec)),this.trackDatas.push(c),this.trackDatas.sort((d,g)=>d.track.id-g.track.id),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),c}getAudioTrackData(t,i,n){const s=this.trackDatas.find(c=>c.track===t);if(s)return s;a0(n,t.source._codec),We(n),We(n.decoderConfig);const r={...n.decoderConfig};let o=!1;if(t.source._codec==="aac"&&!r.description){if(!i)throw new Error("No AAC description provided; you must therefore provide a priming packet.");const c=Mf(Zl.tempFromBytes(i.data));if(!c)throw new Error("Couldn't parse ADTS header from the AAC packet. Make sure the packets are in ADTS format (as specified in ISO 13818-7) when not providing a description, or provide a description (must be an AudioSpecificConfig as specified in ISO 14496-3) and ensure the packets are raw AAC data.");const d=Hd[c.samplingFrequencyIndex],g=qf[c.channelConfiguration];if(d===void 0||g===void 0)throw new Error("Invalid ADTS frame header.");r.description=Jm({objectType:c.objectType,outputSampleRate:d,outputNumberOfChannels:g}),o=!0}const l={track:t,type:"audio",info:{numberOfChannels:n.decoderConfig.numberOfChannels,sampleRate:n.decoderConfig.sampleRate,decoderConfig:r,requiresAdtsStripping:o},chunkQueue:[],lastWrittenMsTimestamp:null,codecPrivate:r.description??null,closed:!1};return this.trackDatas.push(l),this.trackDatas.sort((c,d)=>c.track.id-d.track.id),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),l}getSubtitleTrackData(t,i){const n=this.trackDatas.find(r=>r.track===t);if(n)return n;wy(i),We(i),We(i.config);const s={track:t,type:"subtitle",info:{config:i.config},chunkQueue:[],lastWrittenMsTimestamp:null,codecPrivate:ys.encode(i.config.description),closed:!1};return this.trackDatas.push(s),this.trackDatas.sort((r,o)=>r.track.id-o.track.id),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),s}async addEncodedVideoPacket(t,i,n){const s=await this.mutex.acquire();try{const r=this.getVideoTrackData(t,i,n);r.info.alphaMode??=!!i.sideData.alpha;let o=i.data;if(t.source._codec==="prores"){if(o.byteLength<8)throw new Error("ProRes packet too small, expected at least 8 bytes.");o=o.subarray(8)}const l=i.type==="key";this.validateTimestamp(r.track,i.timestamp,l);let c=i.timestamp,d=i.duration;t.metadata.frameRate!==void 0&&(c=$f(c,t.metadata.frameRate),d=$f(d,t.metadata.frameRate));const g=r.info.alphaMode?i.sideData.alpha??null:null,h=this.createInternalChunk(o,c,d,i.type,g);t.source._codec==="vp9"&&this.fixVP9ColorSpace(r,h),r.chunkQueue.push(h),await this.interleaveChunks()}finally{s()}}async addEncodedAudioPacket(t,i,n){const s=await this.mutex.acquire();try{const r=this.getAudioTrackData(t,i,n);let o=i.data;if(r.info.requiresAdtsStripping){const d=Mf(Zl.tempFromBytes(o));if(!d)throw new Error("Expected ADTS frame, didn't get one.");const g=d.crcCheck===null?Ay:Cy;o=o.subarray(g)}const l=i.type==="key";this.validateTimestamp(r.track,i.timestamp,l);const c=this.createInternalChunk(o,i.timestamp,i.duration,i.type);r.chunkQueue.push(c),await this.interleaveChunks()}finally{s()}}async addSubtitleCue(t,i,n){const s=await this.mutex.acquire();try{const r=this.getSubtitleTrackData(t,n);this.validateTimestamp(r.track,i.timestamp,!0);let o=i.text;const l=Math.round(i.timestamp*1e3);Rf.lastIndex=0,o=o.replace(Rf,h=>{const p=iF(h.slice(1,-1))-l;return`<${Xy(p)}>`});const c=ys.encode(o),d=`${i.settings??""}
|
||
${i.identifier??""}
|
||
${i.notes??""}`,g=this.createInternalChunk(c,i.timestamp,i.duration,"key",d.trim()?ys.encode(d):null);r.chunkQueue.push(g),await this.interleaveChunks()}finally{s()}}async interleaveChunks(t=!1){if(!(!t&&!this.allTracksAreKnown())){e:for(;;){let i=null,n=1/0;for(const r of this.trackDatas){if(!t&&r.chunkQueue.length===0&&!r.closed)break e;r.chunkQueue.length>0&&r.chunkQueue[0].timestamp<n&&(i=r,n=r.chunkQueue[0].timestamp)}if(!i)break;const s=i.chunkQueue.shift();this.writeBlock(i,s)}t||await this.writer.flush()}}fixVP9ColorSpace(t,i){if(i.type!=="key"||!t.info.decoderConfig.colorSpace||!t.info.decoderConfig.colorSpace.matrix)return;const n=new Pn(i.data);n.skipBits(2);const s=n.readBits(1),o=(n.readBits(1)<<1)+s;if(o===3&&n.skipBits(1),n.readBits(1)||n.readBits(1)!==0||(n.skipBits(2),n.readBits(24)!==4817730))return;o>=2&&n.skipBits(1);const g={rgb:7,bt709:2,bt470bg:1,smpte170m:3}[t.info.decoderConfig.colorSpace.matrix];fC(i.data,n.pos,n.pos+3,g)}createInternalChunk(t,i,n,s,r=null){return{data:t,type:s,timestamp:i,duration:n,additions:r}}writeBlock(t,i){this.segment||this.createSegment();const n=Math.round(1e3*i.timestamp),s=this.trackDatas.every(h=>{if(t===h)return i.type==="key";const m=h.chunkQueue[0];return m?m.type==="key":h.closed});let r=!1;if(!this.currentCluster)r=!0;else{We(this.currentClusterStartMsTimestamp!==null),We(this.currentClusterMaxMsTimestamp!==null);const h=n-this.currentClusterStartMsTimestamp;r=s&&n>this.currentClusterMaxMsTimestamp&&h>=1e3*(this.format._options.minimumClusterDuration??1)||h>_7}r&&this.createNewCluster(n);const o=n-this.currentClusterStartMsTimestamp;if(o<h7){if(!this.warnedAboutTooNegativeTimestamp){const h=this.format instanceof jf?"WebM":"Matroska";wn._warn(`Packets had to be discarded because their timestamp is too negative to represent in ${h}.`),this.warnedAboutTooNegativeTimestamp=!0}return}const l=new Uint8Array(4),c=new DataView(l.buffer);c.setUint8(0,128|t.track.id),c.setInt16(1,o,!1);const d=Math.round(1e3*i.duration);if(!!i.additions||t.type==="subtitle"){const h={id:at.BlockGroup,data:[{id:at.Block,data:[l,i.data]},i.type==="delta"?{id:at.ReferenceBlock,data:new Sy(t.lastWrittenMsTimestamp-n)}:null,i.additions?{id:at.BlockAdditions,data:[{id:at.BlockMore,data:[{id:at.BlockAddID,data:1},{id:at.BlockAdditional,data:i.additions}]}]}:null,d>0?{id:at.BlockDuration,data:d}:null]};this.ebmlWriter.writeEBML(h)}else{c.setUint8(3,+(i.type==="key")<<7);const h={id:at.SimpleBlock,data:[l,i.data]};this.ebmlWriter.writeEBML(h)}this.startTimestamp=Math.min(this.startTimestamp,n),this.endTimestamp=Math.max(this.endTimestamp,n+d),t.lastWrittenMsTimestamp=n,this.trackDatasInCurrentCluster.has(t)||this.trackDatasInCurrentCluster.set(t,{firstMsTimestamp:n}),this.currentClusterMaxMsTimestamp=Math.max(this.currentClusterMaxMsTimestamp,n)}createNewCluster(t){t=Math.max(0,t),this.currentCluster&&this.finalizeCurrentCluster(),this.format._options.onCluster&&this.writer.startTrackingWrites(),this.currentCluster={id:at.Cluster,size:this.format._options.appendOnly?-1:m2,data:[{id:at.Timestamp,data:t}]},this.ebmlWriter.writeEBML(this.currentCluster),this.currentClusterStartMsTimestamp=t,this.currentClusterMaxMsTimestamp=t,this.trackDatasInCurrentCluster.clear()}finalizeCurrentCluster(){if(We(this.currentCluster),!this.format._options.appendOnly){const s=this.writer.getPos()-this.ebmlWriter.dataOffsets.get(this.currentCluster),r=this.writer.getPos();this.writer.seek(this.ebmlWriter.offsets.get(this.currentCluster)+4),this.ebmlWriter.writeVarInt(s,m2),this.writer.seek(r)}if(this.format._options.onCluster){We(this.currentClusterStartMsTimestamp!==null);const{data:s,start:r}=this.writer.stopTrackingWrites();this.format._options.onCluster(s,r,this.currentClusterStartMsTimestamp/1e3)}const t=this.ebmlWriter.offsets.get(this.currentCluster)-this.segmentDataOffset,i=new Map;for(const[s,{firstMsTimestamp:r}]of this.trackDatasInCurrentCluster)i.has(r)||i.set(r,[]),i.get(r).push(s);const n=[...i.entries()].sort((s,r)=>s[0]-r[0]);for(const[s,r]of n)We(this.cues),this.cues.data.push({id:at.CuePoint,data:[{id:at.CueTime,data:Math.max(0,s)},...r.map(o=>({id:at.CueTrackPositions,data:[{id:at.CueTrack,data:o.track.id},{id:at.CueClusterPosition,data:t}]}))]})}async onTrackClose(t){const i=await this.mutex.acquire(),n=this.trackDatas.find(s=>s.track===t);n&&(n.closed=!0),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),await this.interleaveChunks(),i()}async finalize(){const t=await this.mutex.acquire();this.allTracksKnown.resolve();for(const i of this.trackDatas)i.closed=!0;if(this.segment||this.createSegment(),await this.interleaveChunks(!0),this.currentCluster&&this.finalizeCurrentCluster(),We(this.cues),this.ebmlWriter.writeEBML(this.cues),!this.format._options.appendOnly){const i=this.writer.getPos()-this.segmentDataOffset;this.writer.seek(this.ebmlWriter.offsets.get(this.segment)+4),this.ebmlWriter.writeVarInt(i,p2);const n=this.startTimestamp===1/0?0:this.endTimestamp-this.startTimestamp;this.segmentDuration.data=new n0(n),this.writer.seek(this.ebmlWriter.offsets.get(this.segmentDuration)),this.ebmlWriter.writeEBML(this.segmentDuration),We(this.seekHead),this.writer.seek(this.ebmlWriter.offsets.get(this.seekHead)),this.maybeCreateSeekHead(!0),this.ebmlWriter.writeEBML(this.seekHead)}t()}}class y7{constructor(t){this.sourceSampleRate=null,this.sourceNumberOfChannels=null,this.startTime=null,this.bufferStartFrame=0,this.maxWrittenFrame=null,this.targetSampleRate=t.targetSampleRate,this.targetNumberOfChannels=t.targetNumberOfChannels,this.onSample=t.onSample,this.bufferSizeInFrames=Math.floor(this.targetSampleRate*5),this.bufferSizeInSamples=this.bufferSizeInFrames*this.targetNumberOfChannels}doChannelMixerSetup(){We(this.sourceNumberOfChannels!==null);const t=this.sourceNumberOfChannels,i=this.targetNumberOfChannels;t===1&&i===2?this.channelMixer=(n,s)=>n[s*t]:t===1&&i===4?this.channelMixer=(n,s,r)=>n[s*t]*+(r<2):t===1&&i===6?this.channelMixer=(n,s,r)=>n[s*t]*+(r===2):t===2&&i===1?this.channelMixer=(n,s)=>{const r=s*t;return .5*(n[r]+n[r+1])}:t===2&&i===4?this.channelMixer=(n,s,r)=>r<2?n[s*t+r]:0:t===2&&i===6?this.channelMixer=(n,s,r)=>r<2?n[s*t+r]:0:t===4&&i===1?this.channelMixer=(n,s)=>{const r=s*t;return .25*(n[r]+n[r+1]+n[r+2]+n[r+3])}:t===4&&i===2?this.channelMixer=(n,s,r)=>{const o=s*t;return .5*(n[o+r]+n[o+r+2])}:t===4&&i===6?this.channelMixer=(n,s,r)=>{const o=s*t;return r<2?n[o+r]:r===2||r===3?0:n[o+r-2]}:t===6&&i===1?this.channelMixer=(n,s)=>{const r=s*t;return Math.SQRT1_2*(n[r]+n[r+1])+n[r+2]+.5*(n[r+4]+n[r+5])}:t===6&&i===2?this.channelMixer=(n,s,r)=>{const o=s*t;return n[o+r]+Math.SQRT1_2*(n[o+2]+n[o+r+4])}:t===6&&i===4?this.channelMixer=(n,s,r)=>{const o=s*t;return r<2?n[o+r]+Math.SQRT1_2*n[o+2]:n[o+r+2]}:this.channelMixer=(n,s,r)=>r<t?n[s*t+r]:0}ensureTempBufferSize(t){let i=this.tempSourceBuffer.length;for(;i<t;)i*=2;if(i!==this.tempSourceBuffer.length){const n=new Float32Array(i);n.set(this.tempSourceBuffer),this.tempSourceBuffer=n}}async add(t){if(this.sourceSampleRate===null){this.sourceSampleRate=t.sampleRate,this.sourceNumberOfChannels=t.numberOfChannels,this.startTime=t.timestamp;const d=Math.ceil(this.targetSampleRate/this.sourceSampleRate);this.bufferCapacityInFrames=this.bufferSizeInFrames+d,this.outputBuffer=new Float32Array(this.bufferCapacityInFrames*this.targetNumberOfChannels),this.tempSourceBuffer=new Float32Array(this.sourceSampleRate*this.sourceNumberOfChannels),this.doChannelMixerSetup()}We(this.startTime!==null);const i=t.numberOfFrames*t.numberOfChannels;this.ensureTempBufferSize(i);const n=t.allocationSize({planeIndex:0,format:"f32"}),s=new Float32Array(this.tempSourceBuffer.buffer,0,n/4);t.copyTo(s,{planeIndex:0,format:"f32"});const r=t.timestamp-this.startTime,o=r+t.duration,l=Math.floor((r-1/this.sourceSampleRate)*this.targetSampleRate)+1,c=Math.ceil(o*this.targetSampleRate);for(let d=l;d<c;d++){if(d<this.bufferStartFrame)continue;for(;d>=this.bufferStartFrame+this.bufferCapacityInFrames;)await this.finalizeCurrentBuffer(),this.bufferStartFrame+=this.bufferSizeInFrames;const g=d-this.bufferStartFrame;We(g<this.bufferCapacityInFrames);const p=(d/this.targetSampleRate-r)*this.sourceSampleRate,u=Math.floor(p),f=Math.ceil(p),_=p-u;for(let v=0;v<this.targetNumberOfChannels;v++){let y=0,S=0;u>=0&&u<t.numberOfFrames&&(y=this.channelMixer(s,u,v)),f>=0&&f<t.numberOfFrames&&(S=this.channelMixer(s,f,v));const q=y+_*(S-y),M=g*this.targetNumberOfChannels+v;this.outputBuffer[M]+=q}this.maxWrittenFrame===null?this.maxWrittenFrame=g:this.maxWrittenFrame=Math.max(this.maxWrittenFrame,g)}}async finalizeCurrentBuffer(){if(this.maxWrittenFrame===null)return;We(this.startTime!==null);const t=Math.min(this.maxWrittenFrame+1,this.bufferSizeInFrames)*this.targetNumberOfChannels,i=new Float32Array(t);i.set(this.outputBuffer.subarray(0,t));const n=new Ls({format:"f32",sampleRate:this.targetSampleRate,numberOfChannels:this.targetNumberOfChannels,timestamp:this.startTime+this.bufferStartFrame/this.targetSampleRate,data:i});await this.onSample(n),this.outputBuffer.copyWithin(0,this.bufferSizeInSamples),this.outputBuffer.fill(0,this.outputBuffer.length-this.bufferSizeInSamples),this.maxWrittenFrame=this.maxWrittenFrame>=this.bufferSizeInFrames?this.maxWrittenFrame-this.bufferSizeInFrames:null}async finalize(){for(;this.maxWrittenFrame!==null;)await this.finalizeCurrentBuffer(),this.bufferStartFrame+=this.bufferSizeInFrames}}var w7=function(a,t,i){if(t!=null){if(typeof t!="object"&&typeof t!="function")throw new TypeError("Object expected.");var n,s;if(i){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");n=t[Symbol.asyncDispose]}if(n===void 0){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");n=t[Symbol.dispose],i&&(s=n)}if(typeof n!="function")throw new TypeError("Object not disposable.");s&&(n=function(){try{s.call(this)}catch(r){return Promise.reject(r)}}),a.stack.push({value:t,dispose:n,async:i})}else i&&a.stack.push({async:!0});return t},k7=(function(a){return function(t){function i(o){t.error=t.hasError?new a(o,t.error,"An error was suppressed during disposal."):o,t.hasError=!0}var n,s=0;function r(){for(;n=t.stack.pop();)try{if(!n.async&&s===1)return s=0,t.stack.push(n),Promise.resolve().then(r);if(n.dispose){var o=n.dispose.call(n.value);if(n.async)return s|=2,Promise.resolve(o).then(r,function(l){return i(l),r()})}else s|=1}catch(l){i(l)}if(s===1)return t.hasError?Promise.reject(t.error):Promise.resolve();if(t.hasError)throw t.error}return r()}})(typeof SuppressedError=="function"?SuppressedError:function(a,t,i){var n=new Error(i);return n.name="SuppressedError",n.error=a,n.suppressed=t,n});class b0{constructor(){this._connectedTrack=null,this._closingPromise=null,this._closed=!1,this._nominalBitrate=null}_ensureValidAdd(){if(!this._connectedTrack)throw new Error("Source is not connected to an output track.");if(this._connectedTrack.output.state==="canceled")throw new Error("Output has been canceled.");if(this._connectedTrack.output.state==="finalizing"||this._connectedTrack.output.state==="finalized")throw new Error("Output has been finalized.");if(this._connectedTrack.output.state==="pending")throw new Error("Output has not started.");if(this._closed)throw new Error("Source is closed.")}async _start(){}async _flushAndClose(t){}close(){if(this._closingPromise)return;const t=this._connectedTrack;if(!t)throw new Error("Cannot call close without connecting the source to an output track.");if(t.output.state==="pending")throw new Error("Cannot call close before output has been started.");this._closingPromise=(async()=>{await this._flushAndClose(!1),this._closed=!0,!(t.output.state==="finalizing"||t.output.state==="finalized")&&t.output._muxer.onTrackClose(t)})()}async _flushOrWaitForOngoingClose(t){return this._closingPromise??=(async()=>{await this._flushAndClose(t),this._closed=!0})()}}class g2 extends b0{constructor(t){if(super(),!Cr.includes(t))throw new TypeError(`Invalid video codec '${t}'. Must be one of: ${Cr.join(", ")}.`);this._codec=t}}const h2=(a,t)=>{if(a.metadata.hasOnlyKeyPackets&&t.type!=="key")throw new Error("Cannot add non-key packets to a hasOnlyKeyPackets video track.")};class x7{setError(t){this.errorSet||(this.error=t,this.errorSet=!0)}constructor(t,i){this.source=t,this.encodingConfig=i,this.ensureEncoderPromise=null,this.encoderInitialized=!1,this.encoder=null,this.muxer=null,this.lastMultipleOfKeyFrameInterval=-1,this.emittedEncoderPackets=0,this.codedWidth=null,this.codedHeight=null,this.outputWidth=null,this.outputHeight=null,this.frameRateLastSample=null,this.frameRateLastTimestamp=null,this.frameRateLastEndTimestamp=null,this.preciseTimings=[],this.customEncoder=null,this.customEncoderCallSerializer=new Jb,this.customEncoderQueueSize=0,this.defaultEncodeOptions={},this.alphaEncoder=null,this.splitter=null,this.splitterCreationFailed=!1,this.alphaFrameQueue=[],this.error=null,this.errorSet=!1,this.lastMuxerPromise=Promise.resolve(),this.closed=!1}async add(t,i,n){const s=t;try{this.checkForEncoderError(),this.source._ensureValidAdd();const r=this.encodingConfig,o=r.sizeChangeBehavior??"deny";let l=!1;if(this.codedWidth!==null&&this.codedHeight!==null){if((t.codedWidth!==this.codedWidth||t.codedHeight!==this.codedHeight)&&(l=!0,o==="deny"))throw new Error(`Video sample size must remain constant. Expected ${this.codedWidth}x${this.codedHeight}, got ${t.codedWidth}x${t.codedHeight}. To allow the sample size to change over time, set \`sizeChangeBehavior\` to a value other than 'deny' in the encoding options.`)}else this.codedWidth=t.codedWidth,this.codedHeight=t.codedHeight;if(r.transform?.width!==void 0||r.transform?.height!==void 0||r.transform?.rotate!==void 0||r.transform?.flip!==void 0||r.transform?.crop!==void 0||r.transform?.force===!0||l&&o!=="passThrough"){let h=r.transform?.width,m=r.transform?.height,p=r.transform?.fit??"fill";l&&o!=="passThrough"&&(We(this.outputWidth),We(this.outputHeight),We(o!=="deny"),h=this.outputWidth,m=this.outputHeight,p=o);const u=await t.transform({width:h,height:m,roundDimensionsTo:2,crop:r.transform?.crop,rotate:r.transform?.rotate,flip:r.transform?.flip,fit:p,alpha:r.alpha});(this.outputWidth===null||this.outputHeight===null)&&(this.outputWidth=u.displayWidth,this.outputHeight=u.displayHeight),i&&t.close(),t=u,i=!0}else(this.outputWidth===null||this.outputHeight===null)&&(this.outputWidth=t.codedWidth,this.outputHeight=t.codedHeight);const g=r.transform?.frameRate;if(g!==void 0){const h=t.timestamp+t.duration,m=Yb(t.timestamp,g);if(this.frameRateLastSample!==null)if(m<=this.frameRateLastTimestamp){this.frameRateLastSample.close(),this.frameRateLastSample=t.clone(),this.frameRateLastEndTimestamp=h;return}else await this.padFrameRate(m,n);t===s&&(t=t.clone(),i=!0),t.setTimestamp(m),t.setDuration(1/g),this.frameRateLastSample?.close(),this.frameRateLastSample=t.clone(),this.frameRateLastTimestamp=m,this.frameRateLastEndTimestamp=h}await this.processAndEncode(t,n)}finally{i&&t.close()}}async processAndEncode(t,i){const n=this.encodingConfig;let s;if(n.transform?.process){let r=n.transform.process(t);if(Zo(r)&&(r=await r),r===null)return;Array.isArray(r)||(r=[r]);const o=[];try{for(const l of r)l instanceof Is?o.push(l):typeof VideoFrame<"u"&&l instanceof VideoFrame?o.push(new Is(l)):o.push(new Is(l,{timestamp:t.timestamp,duration:t.duration}))}catch(l){for(const c of o)c!==t&&c.close();for(const c of r)(c instanceof Is&&c!==t||typeof VideoFrame<"u"&&c instanceof VideoFrame)&&c.close();throw l}s=o}else s=[t];try{for(const r of s){if(this.encoderInitialized||(this.ensureEncoderPromise||this.ensureEncoder(r),this.encoderInitialized||await this.ensureEncoderPromise),We(this.encoderInitialized),this.closed)break;const o=this.encodingConfig.keyFrameInterval??2,l=Math.floor(r.timestamp/o),c={...this.defaultEncodeOptions,...r.encodeOptions,...i},d={...c,keyFrame:c.keyFrame!==void 0?c.keyFrame:o===0||l!==this.lastMultipleOfKeyFrameInterval};if(this.lastMultipleOfKeyFrameInterval=l,this.encodingConfig.onEncodedSample?.(r),this.customEncoder){this.customEncoderQueueSize++;const g=r.clone(),h=this.customEncoderCallSerializer.call(()=>this.customEncoder.encode(g,d)).catch(m=>this.setError(m)).finally(()=>{this.customEncoderQueueSize--,g.close()});this.customEncoderQueueSize>=4&&await h}else{We(this.encoder);const g=r.toVideoFrame(),h=Qb(this.preciseTimings,g.timestamp,p=>p.microsecondTimestamp),m=h!==-1?this.preciseTimings[h]:null;if(m&&m.microsecondTimestamp===g.timestamp?(m.timestamp!==r.timestamp&&(m.timestampIsValid=!1),m.duration!==r.duration&&(m.durationIsValid=!1)):(this.preciseTimings.splice(h+1,0,{microsecondTimestamp:g.timestamp,timestamp:r.timestamp,duration:r.duration,timestampIsValid:!0,durationIsValid:!0}),this.preciseTimings.length>128&&this.preciseTimings.shift()),this.alphaEncoder)if(!!g.format&&!g.format.includes("A")||this.splitterCreationFailed){this.alphaFrameQueue.push(null);try{this.encoder.encode(g,d)}finally{g.close()}}else{this.splitter||(this.splitter=new S7);const{colorFrame:u,alphaFrame:f}=await this.splitter.split(g);this.alphaFrameQueue.push(f);try{this.encoder.encode(u,d)}finally{u.close()}}else try{this.encoder.encode(g,d)}finally{g.close()}this.encoder.encodeQueueSize>=4&&await new Promise(p=>this.encoder.addEventListener("dequeue",p,{once:!0}))}await this.lastMuxerPromise}}finally{for(const r of s)r!==t&&r.close()}}async padFrameRate(t,i){const n=this.encodingConfig.transform.frameRate;We(this.frameRateLastSample);const s=Math.round((t-this.frameRateLastTimestamp)*n);for(let r=1;r<s;r++){const o={stack:[],error:void 0,hasError:!1};try{const l=w7(o,this.frameRateLastSample.clone(),!1);l.setTimestamp(this.frameRateLastTimestamp+r/n),l.setDuration(1/n),await this.processAndEncode(l,i)}catch(l){o.error=l,o.hasError=!0}finally{k7(o)}}}ensureEncoder(t){this.ensureEncoderPromise=(async()=>{const i=Uf(this.encodingConfig.quality,this.encodingConfig.bitrate);We(i!==void 0);const n=Dy({...this.encodingConfig,quality:i,width:t.codedWidth,height:t.codedHeight,squarePixelWidth:t.squarePixelWidth,squarePixelHeight:t.squarePixelHeight,framerate:this.source._connectedTrack?.metadata.frameRate});let s=null,r;for(const l of n){const c=l.config;if(this.encodingConfig.onEncoderConfig?.(c),r=Ky.find(g=>g.supports(this.encodingConfig.codec,c)),r){s=l;break}if(typeof VideoEncoder>"u")continue;if(c.alpha="discard",this.encodingConfig.alpha==="keep"&&(c.latencyMode="quality"),(c.width%2===1||c.height%2===1)&&(this.encodingConfig.codec==="avc"||this.encodingConfig.codec==="hevc"))throw new Error(`The dimensions ${c.width}x${c.height} are not supported for codec '${this.encodingConfig.codec}'; both width and height must be even numbers. Make sure to round your dimensions to the nearest even number.`);try{if((await VideoEncoder.isConfigSupported(c)).supported){s=l;break}}catch{}}if(!s){if(typeof VideoEncoder>"u")throw new Error(Zb("VideoEncoder"));const l=n[0].config,c=n.map(({config:d,quantizer:g})=>g!==null?`quantizer ${g}`:`${d.bitrate} bps`);throw new Error(`This specific encoder configuration (${l.codec}, ${c.join(" / ")}, ${l.width}x${l.height}, hardware acceleration: ${l.hardwareAcceleration??"no-preference"}) is not supported in this environment. Consider using another codec or changing your video parameters.`)}const o=s.config;if(s.quantizer!==null?this.defaultEncodeOptions=Wy(this.encodingConfig.codec,s.quantizer):this.source._nominalBitrate=o.bitrate??null,r)this.customEncoder=new r,this.customEncoder.codec=this.encodingConfig.codec,this.customEncoder.config=o,this.customEncoder.onPacket=(l,c)=>{if(!(l instanceof Or))throw new TypeError("The first argument passed to onPacket must be an EncodedPacket.");if(c!==void 0&&(!c||typeof c!="object"))throw new TypeError("The second argument passed to onPacket must be an object or undefined.");h2(this.source._connectedTrack,l),this.encodingConfig.onEncodedPacket?.(l,c),this.lastMuxerPromise=this.muxer.addEncodedVideoPacket(this.source._connectedTrack,l,c).catch(d=>{this.setError(d)})},this.customEncoder.onError=l=>{this.setError(l)},await this.customEncoder.init();else{const l=[],c=[];let d=0,g=0;const h=(p,u,f)=>{const _={};if(u){const M=new Uint8Array(u.byteLength);u.copyTo(M),_.alpha=M}let v=Or.fromEncodedChunk(p,_);const y=Qb(this.preciseTimings,p.timestamp,M=>M.microsecondTimestamp),S=y!==-1?this.preciseTimings[y]:null;let q=null;this.emittedEncoderPackets===0&&v.type==="delta"&&f?.decoderConfig&&(q=JC(this.encodingConfig.codec,f.decoderConfig,v.data)),(S&&S.microsecondTimestamp===p.timestamp||q!==null)&&(v=v.clone({timestamp:S?.timestampIsValid?S.timestamp:void 0,duration:S?.durationIsValid?S.duration:void 0,type:q??void 0})),h2(this.source._connectedTrack,v),this.encodingConfig.onEncodedPacket?.(v,f),this.lastMuxerPromise=this.muxer.addEncodedVideoPacket(this.source._connectedTrack,v,f).catch(M=>{this.setError(M)}),this.emittedEncoderPackets++},m=new Error("Encoding error").stack;if(this.encoder=new VideoEncoder({output:(p,u)=>{if(!this.alphaEncoder){h(p,null,u);return}const f=this.alphaFrameQueue.shift();We(f!==void 0),f?(this.alphaEncoder.encode(f,{...this.defaultEncodeOptions,keyFrame:p.type==="key"}),g++,f.close(),l.push({chunk:p,meta:u})):g===0?h(p,null,u):(c.push(d+g),l.push({chunk:p,meta:u}))},error:p=>{p.stack=m,this.setError(p)}}),this.encoder.configure(o),this.encodingConfig.alpha==="keep"){const p=new Error("Encoding error").stack;this.alphaEncoder=new VideoEncoder({output:(u,f)=>{g--;const _=l.shift();for(We(_!==void 0),h(_.chunk,u,_.meta),d++;c.length>0&&c[0]===d;){c.shift();const v=l.shift();We(v!==void 0),h(v.chunk,null,v.meta)}},error:u=>{u.stack=p,this.setError(u)}}),this.alphaEncoder.configure(o)}}We(this.source._connectedTrack),this.muxer=this.source._connectedTrack.output._muxer,this.encoderInitialized=!0})()}async flushAndClose(t){try{if(!t&&(this.checkForEncoderError(),this.frameRateLastSample)){const i=this.encodingConfig.transform.frameRate,n=Yb(this.frameRateLastEndTimestamp,i);await this.padFrameRate(n)}this.closed=!0,t||(this.customEncoder?this.customEncoderCallSerializer.call(()=>this.customEncoder.flush()):this.encoder&&(await this.encoder.flush(),await this.alphaEncoder?.flush(),await AC(25)))}finally{this.closed=!0,this.frameRateLastSample?.close(),this.frameRateLastSample=null,this.customEncoder?await this.customEncoderCallSerializer.call(()=>this.customEncoder.close()).catch(i=>this.setError(i)):this.encoder&&(this.encoder.state!=="closed"&&this.encoder.close(),this.alphaEncoder&&this.alphaEncoder.state!=="closed"&&this.alphaEncoder.close(),this.alphaFrameQueue.forEach(i=>i?.close()),this.alphaFrameQueue.length=0,this.splitter?.close())}t||this.checkForEncoderError()}getQueueSize(){return this.customEncoder?this.customEncoderQueueSize:this.encoder?.encodeQueueSize??0}checkForEncoderError(){if(this.errorSet)throw this.error}}let y0=null;class S7{constructor(){this.worker=null,this.pendingRequests=new Map,this.nextRequestId=0}split(t){if(!this.worker){if(!y0){const s=new Blob([`(${T7.toString()})()`],{type:"application/javascript"});y0=URL.createObjectURL(s)}this.worker=new Worker(y0),this.worker.addEventListener("message",s=>{const r=s.data,o=this.pendingRequests.get(r.id);o&&(this.pendingRequests.delete(r.id),"error"in r?o.reject(new Error(r.error)):o.resolve({colorFrame:r.colorFrame,alphaFrame:r.alphaFrame}))}),this.worker.addEventListener("error",s=>{const r=new Error(s.message||"Color/alpha splitter worker error.");for(const o of this.pendingRequests.values())o.reject(r);this.pendingRequests.clear()})}const i=this.nextRequestId++,n=jm();return this.pendingRequests.set(i,n),this.worker.postMessage({id:i,sourceFrame:t},{transfer:[t]}),n.promise}close(){this.worker?.terminate(),this.worker=null;const t=new Error("Color/alpha splitter closed.");for(const i of this.pendingRequests.values())i.reject(t);this.pendingRequests.clear()}}const T7=()=>{let a=null,t=Promise.resolve();self.addEventListener("message",r=>{const{id:o,sourceFrame:l}=r.data;t=t.then(async()=>{try{const{colorFrame:c,alphaFrame:d}=await i(l);self.postMessage({id:o,colorFrame:c,alphaFrame:d},{transfer:[c,d]})}catch(c){self.postMessage({id:o,error:c.message})}finally{l.close()}})});const i=async r=>{const o=r.format;if(!o)throw new Error("CPU color/alpha splitting requires a known VideoFrame format.");const l=r.allocationSize();if((!a||a.byteLength!==l)&&(a=new Uint8Array(l)),await r.copyTo(a),o==="RGBA"||o==="BGRA")return n(a,o,r);if(o==="I420A"||o==="I420AP10"||o==="I420AP12"||o==="I422A"||o==="I422AP10"||o==="I422AP12"||o==="I444A"||o==="I444AP10"||o==="I444AP12")return s(a,o,r);throw new Error(`CPU color/alpha splitting does not support format '${o}'.`)},n=(r,o,l)=>{const c=l.visibleRect?.width??l.codedWidth,d=l.visibleRect?.height??l.codedHeight,g=c*d,h=Math.ceil(c/2),m=Math.ceil(d/2),p=g+h*m*2,u=new Uint8Array(p);for(let y=0,S=3;y<g;y++,S+=4)u[y]=r[S];u.fill(128,g);const f=new VideoFrame(r,{format:o==="RGBA"?"RGBX":"BGRX",codedWidth:c,codedHeight:d,timestamp:l.timestamp,duration:l.duration??void 0}),_={format:"I420",codedWidth:c,codedHeight:d,timestamp:l.timestamp,duration:l.duration??void 0,transfer:[u.buffer]},v=new VideoFrame(u,_);return{colorFrame:f,alphaFrame:v}},s=(r,o,l)=>{const c=l.visibleRect?.width??l.codedWidth,d=l.visibleRect?.height??l.codedHeight,g=o.includes("P10"),h=o.includes("P12"),m=g||h?2:1;let p,u;o.startsWith("I420")?(p=Math.ceil(c/2),u=Math.ceil(d/2)):o.startsWith("I422")?(p=Math.ceil(c/2),u=d):(p=c,u=d);const f=c*d,_=p*u,v=f*m,y=_*m,S=f*m,q=v+y*2,M=o.replace("A",""),P=Math.ceil(c/2),B=Math.ceil(d/2),A=P*B,j=A*m,G=S+2*j,C=new Uint8Array(G),R=q;C.set(r.subarray(R,R+S),0);const H=S,E=g?512:h?2048:128;m===1?C.fill(E,H):new Uint16Array(C.buffer,H,2*A).fill(E);const U=g?"I420P10":h?"I420P12":"I420",N=new VideoFrame(r.subarray(0,q),{format:M,codedWidth:c,codedHeight:d,timestamp:l.timestamp,duration:l.duration??void 0}),L={format:U,codedWidth:c,codedHeight:d,timestamp:l.timestamp,duration:l.duration??void 0,transfer:[C.buffer]},I=new VideoFrame(C,L);return{colorFrame:N,alphaFrame:I}}};class $7 extends g2{constructor(t,i){if(!(typeof HTMLCanvasElement<"u"&&t instanceof HTMLCanvasElement)&&!(typeof OffscreenCanvas<"u"&&t instanceof OffscreenCanvas))throw new TypeError("canvas must be an HTMLCanvasElement or OffscreenCanvas.");QG(i),super(i.codec),this._encoder=new x7(this,i),this._canvas=t}add(t,i=0,n){if(!Number.isFinite(t))throw new TypeError("timestamp must be a finite number.");if(!Number.isFinite(i)||i<0)throw new TypeError("duration must be a non-negative number.");const s=new Is(this._canvas,{timestamp:t,duration:i});return this._encoder.add(s,!0,n)}_flushAndClose(t){return this._encoder.flushAndClose(t)}}class _2 extends b0{constructor(t){if(super(),!el.includes(t))throw new TypeError(`Invalid audio codec '${t}'. Must be one of: ${el.join(", ")}.`);this._codec=t}}class q7{setError(t){this.errorSet||(this.error=t,this.errorSet=!0)}constructor(t,i){this.source=t,this.encodingConfig=i,this.ensureEncoderPromise=null,this.encoderInitialized=!1,this.encoder=null,this.muxer=null,this.lastNumberOfChannels=null,this.lastSampleRate=null,this.isPcmEncoder=!1,this.outputSampleSize=null,this.writeOutputValue=null,this.customEncoder=null,this.customEncoderCallSerializer=new Jb,this.customEncoderQueueSize=0,this.lastEndSampleIndex=null,this.resampler=null,this.error=null,this.errorSet=!1,this.lastMuxerPromise=Promise.resolve(),this.closed=!1}async add(t,i){try{if(this.checkForEncoderError(),this.source._ensureValidAdd(),this.lastNumberOfChannels!==null&&this.lastSampleRate!==null){if(t.numberOfChannels!==this.lastNumberOfChannels||t.sampleRate!==this.lastSampleRate)throw new Error(`Audio parameters must remain constant. Expected ${this.lastNumberOfChannels} channels at ${this.lastSampleRate} Hz, got ${t.numberOfChannels} channels at ${t.sampleRate} Hz.`)}else this.lastNumberOfChannels=t.numberOfChannels,this.lastSampleRate=t.sampleRate;const n=this.encodingConfig;n.transform?.numberOfChannels!==void 0||n.transform?.sampleRate!==void 0?(this.resampler||(this.resampler=new y7({targetNumberOfChannels:n.transform.numberOfChannels??t.numberOfChannels,targetSampleRate:n.transform.sampleRate??t.sampleRate,onSample:async r=>{await this.processAndEncode(r,!0)}})),await this.resampler.add(t)):await this.processAndEncode(t,i)}finally{i&&t.close()}}async processAndEncode(t,i){const n=this.encodingConfig;if(n.transform?.sampleFormat!==void 0&&VG(t.format)!==n.transform.sampleFormat){const s=WG(t,n.transform.sampleFormat);i&&t.close(),t=s,i=!0}if(n.transform?.process)try{let s=n.transform.process(t);if(Zo(s)&&(s=await s),s===null)return;Array.isArray(s)||(s=[s]);try{for(const r of s)if(!(r instanceof Ls))throw new TypeError("The audio process function must return an AudioSample, null, or an array of AudioSamples.");for(const r of s)await this.encodeSample(r,!0)}finally{for(const r of s)r instanceof Ls&&r.close()}}finally{i&&t.close()}else await this.encodeSample(t,i)}async encodeSample(t,i){try{if(this.encoderInitialized||(this.ensureEncoderPromise||this.ensureEncoder(t),this.encoderInitialized||await this.ensureEncoderPromise),We(this.encoderInitialized),this.closed)return;{const n=Math.round(t.timestamp*t.sampleRate),s=Math.round((t.timestamp+t.duration)*t.sampleRate);if(this.lastEndSampleIndex===null)this.lastEndSampleIndex=s;else{const r=n-this.lastEndSampleIndex;if(r>=64){const o=new Ls({data:new Float32Array(r*t.numberOfChannels),format:"f32-planar",sampleRate:t.sampleRate,numberOfChannels:t.numberOfChannels,numberOfFrames:r,timestamp:this.lastEndSampleIndex/t.sampleRate});await this.encodeSample(o,!0)}this.lastEndSampleIndex+=t.numberOfFrames}}if(this.encodingConfig.onEncodedSample?.(t),this.customEncoder){this.customEncoderQueueSize++;const n=t.clone(),s=this.customEncoderCallSerializer.call(()=>this.customEncoder.encode(n)).catch(r=>this.setError(r)).finally(()=>{this.customEncoderQueueSize--,n.close()});this.customEncoderQueueSize>=4&&await s,await this.lastMuxerPromise}else if(this.isPcmEncoder)await this.doPcmEncoding(t,i);else{We(this.encoder);const n=t.toAudioData();this.encoder.encode(n),n.close(),i&&t.close(),this.encoder.encodeQueueSize>=4&&await new Promise(s=>this.encoder.addEventListener("dequeue",s,{once:!0})),await this.lastMuxerPromise}}finally{i&&t.close()}}async doPcmEncoding(t,i){We(this.outputSampleSize),We(this.writeOutputValue);const{numberOfChannels:n,numberOfFrames:s,sampleRate:r,timestamp:o}=t,l=2048,c=[];for(let f=0;f<s;f+=l){const _=Math.min(l,t.numberOfFrames-f),v=_*n*this.outputSampleSize,y=new ArrayBuffer(v),S=new DataView(y);c.push({frameCount:_,view:S})}const d=t.format==="s32"||t.format==="s32-planar",g=d?"s32-planar":"f32-planar",h=d?1/2147483648:1,m=t.allocationSize({planeIndex:0,format:g}),p=d?new Int32Array(m/4):new Float32Array(m/4);for(let f=0;f<n;f++){t.copyTo(p,{planeIndex:f,format:g});for(let _=0;_<c.length;_++){const{frameCount:v,view:y}=c[_];for(let S=0;S<v;S++)this.writeOutputValue(y,(S*n+f)*this.outputSampleSize,p[_*l+S]*h)}}i&&t.close();const u={decoderConfig:{codec:this.encodingConfig.codec,numberOfChannels:n,sampleRate:r}};for(let f=0;f<c.length;f++){const{frameCount:_,view:v}=c[f],y=v.buffer,S=f*l,q=new Or(new Uint8Array(y),"key",o+S/r,_/r);this.encodingConfig.onEncodedPacket?.(q,u),await this.muxer.addEncodedAudioPacket(this.source._connectedTrack,q,u)}}ensureEncoder(t){this.ensureEncoderPromise=(async()=>{const{numberOfChannels:i,sampleRate:n}=t,s=Uf(this.encodingConfig.quality,this.encodingConfig.bitrate),r=Ly({numberOfChannels:i,sampleRate:n,...this.encodingConfig,quality:s});this.encodingConfig.onEncoderConfig?.(r),this.source._nominalBitrate=r.bitrate??null;const o=Yy.find(l=>l.supports(this.encodingConfig.codec,r));if(o)this.customEncoder=new o,this.customEncoder.codec=this.encodingConfig.codec,this.customEncoder.config=r,this.customEncoder.onPacket=(l,c)=>{if(!(l instanceof Or))throw new TypeError("The first argument passed to onPacket must be an EncodedPacket.");if(c!==void 0&&(!c||typeof c!="object"))throw new TypeError("The second argument passed to onPacket must be an object or undefined.");this.encodingConfig.onEncodedPacket?.(l,c),this.lastMuxerPromise=this.muxer.addEncodedAudioPacket(this.source._connectedTrack,l,c).catch(d=>{this.setError(d)})},this.customEncoder.onError=l=>{this.setError(l)},await this.customEncoder.init();else if(Ds.includes(this.encodingConfig.codec))this.initPcmEncoder();else{if(typeof AudioEncoder>"u")throw new Error(Zb("AudioEncoder"));let l;try{l=(await AudioEncoder.isConfigSupported(r)).supported??!1}catch{l=!1}if(!l)throw new Error(`This specific encoder configuration (${r.codec}, ${r.bitrate} bps, ${r.numberOfChannels} channels, ${r.sampleRate} Hz) is not supported in this environment. Consider using another codec or changing your audio parameters.`);const c=new Error("Encoding error").stack;this.encoder=new AudioEncoder({output:(d,g)=>{if(this.encodingConfig.codec==="aac"&&g?.decoderConfig){let m=!1;if(!g.decoderConfig.description||g.decoderConfig.description.byteLength<2?m=!0:m=MC(zs(g.decoderConfig.description)).objectType===0,m){const p=Number(Ar(r.codec.split(".")));g.decoderConfig.description=Jm({objectType:p,outputNumberOfChannels:g.decoderConfig.numberOfChannels,outputSampleRate:g.decoderConfig.sampleRate})}}let h=Or.fromEncodedChunk(d);h=h.clone({timestamp:$f(h.timestamp,r.sampleRate),duration:d.duration!=null?$f(h.duration,r.sampleRate):void 0}),this.encodingConfig.onEncodedPacket?.(h,g),this.lastMuxerPromise=this.muxer.addEncodedAudioPacket(this.source._connectedTrack,h,g).catch(m=>{this.setError(m)})},error:d=>{d.stack=c,this.setError(d)}}),this.encoder.configure(r)}We(this.source._connectedTrack),this.muxer=this.source._connectedTrack.output._muxer,this.encoderInitialized=!0})()}initPcmEncoder(){this.isPcmEncoder=!0;const t=this.encodingConfig.codec,{dataType:i,sampleSize:n,littleEndian:s}=tl(t);switch(this.outputSampleSize=n,n){case 1:i==="unsigned"?this.writeOutputValue=(r,o,l)=>r.setUint8(o,ls(Math.round(l*128)+128,0,255)):i==="signed"?this.writeOutputValue=(r,o,l)=>{r.setInt8(o,ls(Math.round(l*128),-128,127))}:i==="ulaw"?this.writeOutputValue=(r,o,l)=>{const c=ls(Math.round(l*32768),-32768,32767);r.setUint8(o,XG(c))}:i==="alaw"?this.writeOutputValue=(r,o,l)=>{const c=ls(Math.round(l*32768),-32768,32767);r.setUint8(o,ZG(c))}:We(!1);break;case 2:i==="unsigned"?this.writeOutputValue=(r,o,l)=>r.setUint16(o,ls(Math.round(l*32768)+32768,0,65535),s):i==="signed"?this.writeOutputValue=(r,o,l)=>r.setInt16(o,ls(Math.round(l*32768),-32768,32767),s):We(!1);break;case 3:i==="unsigned"?this.writeOutputValue=(r,o,l)=>Nm(r,o,ls(Math.round(l*8388608)+8388608,0,16777215),s):i==="signed"?this.writeOutputValue=(r,o,l)=>gC(r,o,ls(Math.round(l*8388608),-8388608,8388607),s):We(!1);break;case 4:i==="unsigned"?this.writeOutputValue=(r,o,l)=>r.setUint32(o,ls(Math.round(l*2147483648)+2147483648,0,4294967295),s):i==="signed"?this.writeOutputValue=(r,o,l)=>r.setInt32(o,ls(Math.round(l*2147483648),-2147483648,2147483647),s):i==="float"?this.writeOutputValue=(r,o,l)=>r.setFloat32(o,l,s):We(!1);break;case 8:i==="float"?this.writeOutputValue=(r,o,l)=>r.setFloat64(o,l,s):We(!1);break;default:_o(n),We(!1)}}async flushAndClose(t){try{t||(this.checkForEncoderError(),this.resampler&&await this.resampler.finalize()),this.closed=!0,t||(this.customEncoder?this.customEncoderCallSerializer.call(()=>this.customEncoder.flush()):this.encoder&&await this.encoder.flush())}finally{this.closed=!0,this.resampler=null,this.customEncoder?await this.customEncoderCallSerializer.call(()=>this.customEncoder.close()).catch(i=>this.setError(i)):this.encoder&&this.encoder.state!=="closed"&&this.encoder.close()}t||this.checkForEncoderError()}getQueueSize(){return this.customEncoder?this.customEncoderQueueSize:this.isPcmEncoder?0:this.encoder?.encodeQueueSize??0}checkForEncoderError(){if(this.errorSet)throw this.error}}class v2 extends _2{constructor(t,i={}){if(KG(t),typeof i!="object"||!i)throw new TypeError("options must be an object.");if(i.startTimestamp!==void 0&&!Number.isFinite(i.startTimestamp))throw new TypeError("options.startTimestamp, when provided, must be a finite number.");super(t.codec),this._encoder=new q7(this,t),this._accumulatedTime=i.startTimestamp??0}async add(t){if(!(t instanceof AudioBuffer))throw new TypeError("audioBuffer must be an AudioBuffer.");const i=Ls._fromAudioBuffer(t,this._accumulatedTime);this._accumulatedTime+=t.duration;for(const n of i)await this._encoder.add(n,!0)}_flushAndClose(t){return this._encoder.flushAndClose(t)}}class A7 extends b0{constructor(t){if(super(),!Yl.includes(t))throw new TypeError(`Invalid subtitle codec '${t}'. Must be one of: ${Yl.join(", ")}.`);this._codec=t}}class w0{get supportsVideoRotationMetadata(){return this.supportsVideoTransformationMetadata}getSupportedVideoCodecs(){return this.getSupportedCodecs().filter(t=>Cr.includes(t))}getSupportedAudioCodecs(){return this.getSupportedCodecs().filter(t=>el.includes(t))}getSupportedSubtitleCodecs(){return this.getSupportedCodecs().filter(t=>Yl.includes(t))}_codecUnsupportedHint(t){return""}_isFragmentedIsobmff(){return!1}}class k0 extends w0{constructor(t={}){if(!t||typeof t!="object")throw new TypeError("options must be an object.");if(t.fastStart!==void 0&&![!1,"in-memory","reserve","fragmented"].includes(t.fastStart))throw new TypeError("options.fastStart, when provided, must be false, 'in-memory', 'reserve', or 'fragmented'.");if(t.minimumFragmentDuration!==void 0&&(!ey(t.minimumFragmentDuration)||t.minimumFragmentDuration<0))throw new TypeError("options.minimumFragmentDuration, when provided, must be a non-negative number.");if(t.onFtyp!==void 0&&typeof t.onFtyp!="function")throw new TypeError("options.onFtyp, when provided, must be a function.");if(t.onMoov!==void 0&&typeof t.onMoov!="function")throw new TypeError("options.onMoov, when provided, must be a function.");if(t.onMdat!==void 0&&typeof t.onMdat!="function")throw new TypeError("options.onMdat, when provided, must be a function.");if(t.onMoof!==void 0&&typeof t.onMoof!="function")throw new TypeError("options.onMoof, when provided, must be a function.");if(t.metadataFormat!==void 0&&!["mdir","mdta","udta","auto"].includes(t.metadataFormat))throw new TypeError("options.metadataFormat, when provided, must be either 'auto', 'mdir', 'mdta', or 'udta'.");super(),this._options=t}getSupportedTrackCounts(){return{video:{min:0,max:4294967295},audio:{min:0,max:4294967295},subtitle:{min:0,max:4294967295},total:{min:0,max:4294967295}}}get supportsVideoTransformationMetadata(){return!0}get supportsTimestampedMediaData(){return!0}get negativeTimestampSupport(){return"full"}_createMuxer(t){return new g7(t,this)}_isFragmentedIsobmff(){return this._options.fastStart==="fragmented"}}class b2 extends k0{constructor(t){super(t)}get _name(){return"MP4"}get fileExtension(){return".mp4"}get mimeType(){return"video/mp4"}getSupportedCodecs(){return[...Cr,...Cf,"pcm-s16","pcm-s16be","pcm-s24","pcm-s24be","pcm-s32","pcm-s32be","pcm-f32","pcm-f32be","pcm-f64","pcm-f64be",...Yl]}_codecUnsupportedHint(t){return new w2().getSupportedCodecs().includes(t)?" Switching to MOV will grant support for this codec.":""}}class y2 extends k0{constructor(t){super(t)}get _name(){return"CMAF"}get fileExtension(){return".m4s"}get mimeType(){return"video/mp4"}getSupportedCodecs(){return[...Cr,...Cf,"pcm-s16","pcm-s16be","pcm-s24","pcm-s24be","pcm-s32","pcm-s32be","pcm-f32","pcm-f32be","pcm-f64","pcm-f64be",...Yl]}}class w2 extends k0{constructor(t){super(t)}get _name(){return"MOV"}get fileExtension(){return".mov"}get mimeType(){return"video/quicktime"}getSupportedCodecs(){return[...Cr,...el]}_codecUnsupportedHint(t){return new b2().getSupportedCodecs().includes(t)?" Switching to MP4 will grant support for this codec.":""}}class k2 extends w0{constructor(t={}){if(!t||typeof t!="object")throw new TypeError("options must be an object.");if(t.appendOnly!==void 0&&typeof t.appendOnly!="boolean")throw new TypeError("options.appendOnly, when provided, must be a boolean.");if(t.minimumClusterDuration!==void 0&&(!ey(t.minimumClusterDuration)||t.minimumClusterDuration<0))throw new TypeError("options.minimumClusterDuration, when provided, must be a non-negative number.");if(t.onEbmlHeader!==void 0&&typeof t.onEbmlHeader!="function")throw new TypeError("options.onEbmlHeader, when provided, must be a function.");if(t.onSegmentHeader!==void 0&&typeof t.onSegmentHeader!="function")throw new TypeError("options.onHeader, when provided, must be a function.");if(t.onCluster!==void 0&&typeof t.onCluster!="function")throw new TypeError("options.onCluster, when provided, must be a function.");super(),this._options=t}_createMuxer(t){return new b7(t,this)}get _name(){return"Matroska"}getSupportedTrackCounts(){return{video:{min:0,max:127},audio:{min:0,max:127},subtitle:{min:0,max:127},total:{min:0,max:127}}}get fileExtension(){return".mkv"}get mimeType(){return"video/x-matroska"}getSupportedCodecs(){return[...Cr,...Cf,...Ds.filter(t=>!["pcm-s8","pcm-f32be","pcm-f64be","ulaw","alaw"].includes(t)),...Yl]}get supportsVideoTransformationMetadata(){return!1}get supportsTimestampedMediaData(){return!0}get negativeTimestampSupport(){return"prefer-non-negative"}}class jf extends k2{constructor(t){super(t)}getSupportedCodecs(){return[...Cr.filter(t=>["vp8","vp9","av1"].includes(t)),...el.filter(t=>["opus","vorbis"].includes(t)),...Yl]}get _name(){return"WebM"}get fileExtension(){return".webm"}get mimeType(){return"video/webm"}_codecUnsupportedHint(t){return new k2().getSupportedCodecs().includes(t)?" Switching to MKV will grant support for this codec.":""}}const x2=["video","audio","subtitle"];class iu{constructor(t,i,n,s,r){this.id=t,this.output=i,this.type=n,this.source=s,this.metadata=r}isVideoTrack(){return this.type==="video"}isAudioTrack(){return this.type==="audio"}isSubtitleTrack(){return this.type==="subtitle"}canBePairedWith(t){if(!(t instanceof iu))throw new TypeError("other must be an OutputTrack.");if(this===t)return!1;const i=ty(this.metadata.group),n=ty(t.metadata.group);for(const s of i)if(this.type!==t.type&&n.some(l=>s===l)||n.some(l=>s._pairedGroups.has(l)))return!0;return!1}}class C7 extends iu{constructor(t,i,n,s){super(t,i,"video",n,s)}}class G7 extends iu{constructor(t,i,n,s){super(t,i,"audio",n,s)}}class F7 extends iu{constructor(t,i,n,s){super(t,i,"subtitle",n,s)}}class nu{constructor(){this._pairedGroups=new Set}pairWith(t){if(!(t instanceof nu))throw new TypeError("other must be an OutputTrackGroup.");if(this===t)throw new TypeError("Cannot pair a group with itself.");this._pairedGroups.add(t),t._pairedGroups.add(this)}}const x0=a=>{if(!a||typeof a!="object")throw new TypeError("metadata must be an object.");if(a.languageCode!==void 0&&!bC(a.languageCode))throw new TypeError("metadata.languageCode, when provided, must be a three-letter, ISO 639-2/T language code.");if(a.name!==void 0&&typeof a.name!="string")throw new TypeError("metadata.name, when provided, must be a string.");if(a.disposition!==void 0&&FC(a.disposition),a.maximumPacketCount!==void 0&&(!Number.isInteger(a.maximumPacketCount)||a.maximumPacketCount<0))throw new TypeError("metadata.maximumPacketCount, when provided, must be a non-negative integer.");if(a.bitrate!==void 0&&(!Number.isFinite(a.bitrate)||a.bitrate<0))throw new TypeError("metadata.bitrate, when provided, must be a non-negative number.");if(a.averageBitrate!==void 0&&(!Number.isFinite(a.averageBitrate)||a.averageBitrate<0))throw new TypeError("metadata.averageBitrate, when provided, must be a non-negative number.");if(a.group!==void 0&&!(a.group instanceof nu)&&(!Array.isArray(a.group)||a.group.some(t=>!(t instanceof nu))))throw new TypeError("metadata.group, when provided, must be an OutputTrackGroup instance or an array of OutputTrackGroup instances.")};class S2 extends Qm{get target(){const t="Output.target cannot be used when using PathedTarget with an async callback. Use the 'target' event instead.";if(this._rootTargetPromise)throw new TypeError(t);const i=this._getRootTarget();if(Zo(i))throw new TypeError(t);return i}constructor(t){if(super(),this.state="pending",this.defaultTrackGroup=new nu,this.tracks=[],this._onFinalize=null,this._unfinalizedTargets=new Set,this._rootWriterPromise=null,this._startPromise=null,this._cancelPromise=null,this._finalizePromise=null,this._mutex=new Wb,this._metadataTags={},this._rootTarget=null,this._rootTargetPromise=null,this._firstMediaStreamTimestamp=null,!t||typeof t!="object")throw new TypeError("options must be an object.");if(!(t.format instanceof w0))throw new TypeError("options.format must be an OutputFormat.");if(!(t.target instanceof bo||t.target instanceof v0))throw new TypeError("options.target must be a Target or a PathedTarget.");if(t.target instanceof bo&&this._rememberTarget(t.target),t.initTarget!==void 0&&!(t.initTarget instanceof bo)&&typeof t.initTarget!="function")throw new Error("options.initTarget, when provided, must be a Target or a function that returns or resolves to a Target.");if(t.onFinalize!==void 0&&typeof t.onFinalize!="function")throw new TypeError("options.onFinalize, when provided, must be a function.");this.format=t.format,this._target=t.target,this._onFinalize=t.onFinalize??null,this._initTarget=t.initTarget??null,this._initTarget instanceof bo&&this._rememberTarget(this._initTarget),this._muxer=t.format._createMuxer(this)}_getTargetValidated(t){We(this._target instanceof v0);const i=this._target.getTarget(t),n=s=>{if(!(s instanceof bo))throw new TypeError("getTarget must return a Target.");return s};return Zo(i)?i.then(n):n(i)}async _getTarget(t){We(this._target instanceof v0);const i=await this._getTargetValidated(t);return this._emit("target",{target:i,request:t,isRoot:t.isRoot}),this.state==="canceled"?await i._close():this._rememberTarget(i),i}_rememberTarget(t){this._unfinalizedTargets.add(t),t.on("finalized",()=>this._unfinalizedTargets.delete(t),{once:!0})}async _getInitTarget(){if(We(this._initTarget!==null),this._initTarget instanceof bo)return this._initTarget;const t=await this._initTarget();return this.state==="canceled"?await t._close():this._rememberTarget(t),t}_hasInitTarget(){return this._initTarget!==null}_getRootTarget(){if(this._rootTarget)return this._rootTarget;if(this._rootTargetPromise)return this._rootTargetPromise;if(this._target instanceof bo)return this._emit("target",{target:this._target,request:null,isRoot:!0}),this._rootTarget=this._target,this._target;const t={path:this._target.rootPath,isRoot:!0,mimeType:this.format.mimeType},i=this._getTargetValidated(t),n=s=>(this.state==="canceled"?s._close():this._rememberTarget(s),this._emit("target",{target:s,request:t,isRoot:!0}),this._rootTarget=s,s);return Zo(i)?this._rootTargetPromise=i.then(n):n(i)}_getRootWriter(t){return this._rootWriterPromise??=(async()=>{const i=await this._getRootTarget(),n=new g0(i,typeof t=="boolean"?t:t(i));return n.start(),n})()}addVideoTrack(t,i={}){if(!(t instanceof g2))throw new TypeError("source must be a VideoSource.");if(x0(i),i.rotation!==void 0&&![0,90,180,270].includes(i.rotation))throw new TypeError(`Invalid video rotation: ${i.rotation}. Has to be 0, 90, 180 or 270.`);if(i.flip!==void 0&&typeof i.flip!="boolean")throw new TypeError("metadata.flip, when provided, must be a boolean.");if(i.transformationMatrix!==void 0&&(!Array.isArray(i.transformationMatrix)||i.transformationMatrix.length!==9||!i.transformationMatrix.every(s=>Number.isFinite(s))))throw new TypeError("metadata.transformationMatrix, when provided, must be an array of 9 finite numbers.");if(i.frameRate!==void 0&&(!Number.isFinite(i.frameRate)||i.frameRate<=0))throw new TypeError(`Invalid video frame rate: ${i.frameRate}. Must be a positive number.`);if(i.decoderConfig!==void 0&&t0({decoderConfig:i.decoderConfig},t._codec),i.primingPacket!==void 0){if(!(i.primingPacket instanceof Or))throw new TypeError("metadata.primingPacket, when provided, must be an EncodedPacket.");if(i.decoderConfig===void 0)throw new TypeError("metadata.primingPacket can only be provided alongside metadata.decoderConfig.")}const n={...i};return n.group??=this.defaultTrackGroup,this._addTrack(new C7(this.tracks.length+1,this,t,n))}addAudioTrack(t,i={}){if(!(t instanceof _2))throw new TypeError("source must be an AudioSource.");if(x0(i),i.decoderConfig!==void 0&&a0({decoderConfig:i.decoderConfig},t._codec),i.primingPacket!==void 0){if(!(i.primingPacket instanceof Or))throw new TypeError("metadata.primingPacket, when provided, must be an EncodedPacket.");if(i.decoderConfig===void 0)throw new TypeError("metadata.primingPacket can only be provided alongside metadata.decoderConfig.")}const n={...i};return n.group??=this.defaultTrackGroup,this._addTrack(new G7(this.tracks.length+1,this,t,n))}addSubtitleTrack(t,i={}){if(!(t instanceof A7))throw new TypeError("source must be a SubtitleSource.");x0(i);const n={...i};return n.group??=this.defaultTrackGroup,this._addTrack(new F7(this.tracks.length+1,this,t,n))}setMetadataTags(t){if(GC(t),this.state!=="pending")throw new Error("Cannot set metadata tags after output has been started or canceled.");this._metadataTags=t}_addTrack(t){if(this.state!=="pending")throw new Error("Cannot add track after output has been started or canceled.");if(t.source._connectedTrack)throw new Error("Source is already used for a track.");const i=this.format.getSupportedTrackCounts(),n=this.tracks.reduce((o,l)=>o+(l.type===t.type?1:0),0),s=i[t.type].max;if(n===s)throw new Error(s===0?`${this.format._name} does not support ${t.type} tracks.`:`${this.format._name} does not support more than ${s} ${t.type} track${s===1?"":"s"}.`);const r=i.total.max;if(this.tracks.length===r)throw new Error(`${this.format._name} does not support more than ${r} tracks${r===1?"":"s"} in total.`);if(t.isVideoTrack()){const o=this.format.getSupportedVideoCodecs();if(o.length===0)throw new Error(`${this.format._name} does not support video tracks.`+this.format._codecUnsupportedHint(t.source._codec));if(!o.includes(t.source._codec))throw new Error(`Codec '${t.source._codec}' cannot be contained within ${this.format._name}. Supported video codecs are: ${o.map(l=>`'${l}'`).join(", ")}.`+this.format._codecUnsupportedHint(t.source._codec))}else if(t.isAudioTrack()){const o=this.format.getSupportedAudioCodecs();if(o.length===0)throw new Error(`${this.format._name} does not support audio tracks.`+this.format._codecUnsupportedHint(t.source._codec));if(!o.includes(t.source._codec))throw new Error(`Codec '${t.source._codec}' cannot be contained within ${this.format._name}. Supported audio codecs are: ${o.map(l=>`'${l}'`).join(", ")}.`+this.format._codecUnsupportedHint(t.source._codec))}else if(t.isSubtitleTrack()){const o=this.format.getSupportedSubtitleCodecs();if(o.length===0)throw new Error(`${this.format._name} does not support subtitle tracks.`+this.format._codecUnsupportedHint(t.source._codec));if(!o.includes(t.source._codec))throw new Error(`Codec '${t.source._codec}' cannot be contained within ${this.format._name}. Supported subtitle codecs are: ${o.map(l=>`'${l}'`).join(", ")}.`+this.format._codecUnsupportedHint(t.source._codec))}return this.tracks.push(t),t.source._connectedTrack=t,t}hasEnoughTracks(){const t=this.format.getSupportedTrackCounts();for(const n of x2){const s=this.tracks.reduce((o,l)=>o+(l.type===n?1:0),0),r=t[n].min;if(s<r)return!1}const i=t.total.min;return!(this.tracks.length<i)}async start(){const t=this.format.getSupportedTrackCounts();for(const n of x2){const s=this.tracks.reduce((o,l)=>o+(l.type===n?1:0),0),r=t[n].min;if(s<r)throw new Error(r===t[n].max?`${this.format._name} requires exactly ${r} ${n} track${r===1?"":"s"}.`:`${this.format._name} requires at least ${r} ${n} track${r===1?"":"s"}.`)}const i=t.total.min;if(this.tracks.length<i)throw new Error(i===t.total.max?`${this.format._name} requires exactly ${i} track${i===1?"":"s"}.`:`${this.format._name} requires at least ${i} track${i===1?"":"s"}.`);if(this.state==="canceled")throw new Error("Output has been canceled.");return this._startPromise?(wn._warn("Output has already been started."),this._startPromise):this._startPromise=(async()=>{this.state="started";const n=this._mutex.acquire();try{await this._muxer.start();const s=this.tracks.map(r=>r.source._start());await Promise.all(s)}finally{(await n)()}})()}getMimeType(){return this._muxer.getMimeType()}async cancel(){if(this.state==="canceled")return this._cancelPromise??void 0;if(this.state==="finalizing"||this.state==="finalized"){this.state==="finalized"&&wn._warn("Output has already been finalized.");return}return this._cancelPromise=(async()=>{this.state="canceled";const t=await this._mutex.acquire();try{const i=this.tracks.map(n=>n.source._flushOrWaitForOngoingClose(!0));await Promise.all(i),await Promise.all([...this._unfinalizedTargets].map(n=>n._close())),this._unfinalizedTargets.clear()}finally{t()}})()}async finalize(){if(this.state==="pending")throw new Error("Cannot finalize before starting.");if(this.state==="canceled")throw new Error("Cannot finalize after canceling.");return this._finalizePromise?(wn._warn("Output has already been finalized."),this._finalizePromise):this._finalizePromise=(async()=>{this.state="finalizing";const t=await this._mutex.acquire();try{const i=this.tracks.map(n=>n.source._flushOrWaitForOngoingClose(!1));if(await Promise.all(i),await this._muxer.finalize(),this._rootWriterPromise){const n=await this._rootWriterPromise;n.finalized||(await n.flush(),await n.finalize())}this._onFinalize&&await this._onFinalize(),this.state="finalized"}catch(i){throw this.state="canceled",i}finally{await Promise.all([...this._unfinalizedTargets].map(i=>i._close().catch(()=>{}))),this._unfinalizedTargets.clear(),t()}})()}}function S0(a,t,i){const n=Number(a);if(!Number.isSafeInteger(n)||n<=0)throw new Error(`${i} video has invalid ${t} metadata`);return n}function T2(a,t,i){const n=atob(a.slice(t,t+i)),s=new Uint8Array(n.length);for(let r=0;r<n.length;r+=1)s[r]=n.charCodeAt(r);return s}function $2(a){const t=new Uint8ClampedArray(a.length/3*4);for(let i=0,n=0;i<a.length;i+=3,n+=4)t[n]=a[i],t[n+1]=a[i+1],t[n+2]=a[i+2],t[n+3]=255;return t}function M7(a,t,i){const n=Math.min(t.length,Math.ceil(i*t.sampleRate));if(n===t.length)return t;const s=a.createBuffer(t.numberOfChannels,n,t.sampleRate);for(let r=0;r<t.numberOfChannels;r+=1)s.copyToChannel(t.getChannelData(r).subarray(0,n),r);return s}async function z7(a,t,i,n,s="aac"){if(t.format!=="rgb24")throw new Error(`${n} video artifact is not RGB24`);if(typeof VideoEncoder>"u")throw new Error("This browser does not support H.264 encoding through WebCodecs");const r=S0(t.width,"width",n),o=S0(t.height,"height",n),l=S0(t.frames,"frame count",n),c=Number(t.fps);if(!Number.isFinite(c)||c<=0)throw new Error(`${n} video has invalid frame rate metadata`);const d=r*o*3,g=d/3*4,h=Math.ceil(d*l/3)*4;if(a.length!==h)throw new Error(`${n} RGB24 payload size does not match its video metadata`);const m=document.createElement("canvas");m.width=r,m.height=o;const p=m.getContext("2d",{alpha:!1});if(!p)throw new Error(`Unable to create the ${n} video canvas`);const u=new AudioContext;try{const f=await u.decodeAudioData(await i.arrayBuffer()),_=M7(u,f,l/c),v=new Es("high"),y=new Es("high");if(!await JG("avc",{width:r,height:o,quality:v}))throw new Error(`This browser cannot encode H.264 video for ${n} MP4 output`);const S={numberOfChannels:_.numberOfChannels,sampleRate:_.sampleRate,quality:y},q=typeof AudioEncoder<"u"&&await Qy(s,S),M=new au,P=new S2({format:new b2({fastStart:"in-memory"}),target:M}),B=new $7(m,{codec:"avc",quality:v,keyFrameInterval:2,onEncodedPacket:(G,C)=>{const R=C?.decoderConfig,H=R?.description;if(C&&R&&H!==void 0){const E={...R};if(H&&typeof H=="object"&&"byteLength"in H){const U=ArrayBuffer.isView(H)?new Uint8Array(H.buffer,H.byteOffset,H.byteLength):new Uint8Array(H);E.description=U.slice().buffer}else delete E.description;C.decoderConfig=E}}}),A=q?new v2({codec:s,quality:y}):null;P.addVideoTrack(B),A&&P.addAudioTrack(A),await P.start(),A&&await A.add(_);const j=1/c;for(let G=0;G<l;G+=1){const C=T2(a,G*g,g);if(C.length!==d)throw await P.cancel(),new Error(`${n} RGB24 frame ${G} has an invalid size`);p.putImageData(new ImageData($2(C),r,o),0,0),await B.add(G*j,j)}if(await P.finalize(),!M.buffer)throw new Error(`${n} MP4 encoder returned no output`);return{blob:new Blob([M.buffer],{type:"video/mp4"}),audioIncluded:q}}finally{await u.close()}}async function q2(a,t,i,n,s="aac"){const r=[{id:`${n}_result`,extension:"json",mime:"application/json",url:URL.createObjectURL(new Blob([JSON.stringify(a)],{type:"application/json"}))}],o=Array.isArray(a.artifacts)?a.artifacts.find(l=>typeof l?.payload=="string"&&l.meta?.format==="rgb24"):void 0;if(!o||typeof o.payload!="string")return{artifacts:r,warning:`${i} returned no RGB24 video artifact.`};if(!t)return{artifacts:r,warning:`${i} MP4 encoding requires the driving audio.`};try{const l=await z7(o.payload,o.meta||{},t,i,s);return r.push({id:`${n}_video`,extension:"mp4",mime:"video/mp4",url:URL.createObjectURL(l.blob)}),{artifacts:r,warning:l.audioIncluded?"":`Browser ${s.toUpperCase()} encoding is unavailable; the MP4 has no audio track.`}}catch(l){return{artifacts:r,warning:`${i} MP4 encoding failed: ${l instanceof Error?l.message:String(l)}`}}}var E7=ie('<div class="latentsync-video svelte-h2zppn"><label for="latentsync-video" class="svelte-h2zppn">Face video <span class="svelte-h2zppn">required</span></label> <input id="latentsync-video" class="file-native" type="file" accept="video/*"/> <label class="file-picker svelte-h2zppn" for="latentsync-video"><strong>Choose video</strong><span class="svelte-h2zppn"> </span></label> <button type="button" class="svelte-h2zppn">Clear video</button> <!></div>');function U7(a,t){Ri(t,!1);let i=Se(t,"busy",8,!1),n=Se(t,"sourceFile",8,null),s=Se(t,"setPanelRunner",8,()=>()=>{}),r=K(null),o=K(null);async function l(f){if(!e(r))throw f.warning("Choose a face video.");if(!n())throw f.warning("Choose the speech audio that will drive the lips.");const _=e(r),v=n();await f.ensureLoaded("offline"),f.setStatus("Uploading video and speech audio...");const y=await Oc(_,f.signal),S=await Os(await mr(v,16e3),f.signal);f.setStatus("Synchronizing lip motion...");const q=await Ql({model:f.modelId,request:{audio:S,options:{...f.options,seed:f.seed,reference_video_file:y}}},f.signal);f.setStatus("Encoding MP4...");const M=await q2(q,v,"LatentSync","latentsync","opus");if(M.warning||!M.artifacts.some(P=>P.mime==="video/mp4")){for(const P of M.artifacts)URL.revokeObjectURL(P.url);throw new Error(M.warning)}return{audio:null,text:M.warning,artifacts:M.artifacts,json:JSON.stringify(q,(P,B)=>P==="payload"&&typeof B=="string"?`<base64 data: ${B.length} chars>`:B,2)}}Qn(()=>s()(l)),en();var c=E7(),d=$(k(c),2);qi(d,f=>b(o,f),()=>e(o));var g=$(d,2),h=$(k(g)),m=k(h,!0);w(h),w(g);var p=$(g,2),u=$(p,2);os(u,{get file(){return e(r)},kind:"video",label:"Face video preview"}),w(c),ne(()=>{d.disabled=i(),W(m,(e(r),x(()=>e(r)?.name||"No video selected"))),p.disabled=!e(r)||i()}),re("change",d,f=>b(r,f.currentTarget.files?.[0]||null)),re("click",p,()=>{b(r,null),e(o)&&Ct(o,e(o).value="")}),J(a,c),Bi()}const R7={latentsync:{component:U7,requestMode:"panel",blocksRunWhileUploading:!1,replacesGenericControls:{text:!0,language:!0,duration:!0,voice:!0,chunking:!0}},fish_drama3:{component:nC,requestMode:"panel",blocksRunWhileUploading:!1,replacesGenericControls:{text:!0,language:!0,voice:!0,chunking:!0,settingsImport:!0,advancedJson:!0}},auk:{component:Jq,requestMode:"default",blocksRunWhileUploading:!1,replacesGenericControls:{packageButtons:!0,text:!1,genSource:!1,language:!0,seed:!1,duration:!0,params:!0,advancedJson:!1}},lfm2_audio:{component:Ub,tasks:["s2s"],requestMode:"panel",blocksRunWhileUploading:!1,replacesGenericControls:{packageButtons:!1,text:!1,genSource:!1,language:!1,seed:!1,duration:!1,params:!1,advancedJson:!1}},lfm3_audio:{component:Ub,tasks:["s2s"],requestMode:"panel",blocksRunWhileUploading:!1,replacesGenericControls:{packageButtons:!1,text:!1,genSource:!1,language:!0,seed:!1,duration:!1,params:!1,advancedJson:!1}},liveavatar:{component:EA,requestMode:"default",blocksRunWhileUploading:!0,replacesGenericControls:{packageButtons:!1,text:!1,genSource:!1,language:!0,seed:!1,duration:!0,params:!0,advancedJson:!0}},yue2:{component:HA,requestMode:"yue2",blocksRunWhileUploading:!0,replacesGenericControls:{packageButtons:!0,text:!0,genSource:!0,language:!0,seed:!0,duration:!0,params:!0,advancedJson:!0}}};function A2(a,t){if(!a)return;const i=R7[a],n=i?.tasks;if(!(n&&!n.includes(t||"")))return i}var B7=ie('<div class="lora-fields"><div><label for="ace-lora">Adapter path <span> </span></label> <div class="lora-path"><input id="ace-lora" type="text" placeholder="Server adapter file or PEFT directory"/> <button type="button">Browse folder</button></div></div> <div><label for="ace-lora-scale">LoRA strength</label> <input id="ace-lora-scale" type="number" step="0.1"/></div></div> <button type="button">Clear adapter</button>',1),P7=ie('<label for="lyrics"> <span> </span></label> <textarea id="lyrics" rows="3" placeholder="[Verse]..."></textarea> <div class="media-actions"><button type="button"> </button></div> <!>',1);function j7(a,t){Ri(t,!1);const i=K(),n=K();let s=Se(t,"modelId",8),r=Se(t,"text",12,""),o=Se(t,"lyrics",12,""),l=Se(t,"language",12,""),c=Se(t,"duration",12,30),d=Se(t,"seed",24,()=>-1),g=Se(t,"busy",8,!1),h=Se(t,"adapterEditable",8,!1),m=Se(t,"rewritingCaption",12,!1),p=Se(t,"advancedValues",28,()=>({})),u=Se(t,"paramSpecs",24,()=>[]),f=Se(t,"outputText",12,""),_=Se(t,"outputJson",12,""),v=Se(t,"status",12,""),y=Se(t,"warningStatus",12,""),S=Se(t,"errorStatus",12,""),q=Se(t,"ensureLoaded",8),M=Se(t,"requestOptions",8),P=Se(t,"resolveRequestSeed",8),B=Se(t,"setParameterValue",8),A=Se(t,"onBrowseAdapter",8),j=Se(t,"log",8),G=Se(t,"tr",8);function C(X){if(Array.isArray(X.artifacts)){const Z=X.artifacts.find(ue=>typeof ue=="object"&&ue!==null&&ue.id==="ace_step_caption_plan"&&typeof ue.payload=="string");if(Z){const ue=Uint8Array.from(atob(Z.payload),de=>de.charCodeAt(0));return JSON.parse(new TextDecoder().decode(ue))}}return typeof X.text=="string"?{caption:X.text}:{}}async function R(){if(!(g()||m())){if(!r().trim()&&!o().trim()){v("Enter a caption or lyrics to rewrite."),y(v()),S("");return}m(!0),y(""),S(""),v(G()("request.rewritingCaption"));try{await q()();const X={text:r(),seed:P()(d()),options:{...M()(),duration_sec:c(),rewrite_caption:!0}};l().trim()&&(X.language=l()),o().trim()&&(X.lyrics=o());const Z=await Ql({model:s(),request:X}),ue=C(Z);typeof ue.caption=="string"&&ue.caption.trim()&&r(ue.caption),typeof ue.language=="string"&&ue.language.trim()&&l(ue.language),typeof ue.duration_seconds=="number"&&Number.isFinite(ue.duration_seconds)&&ue.duration_seconds>0&&c(ue.duration_seconds);const de={...p()};typeof ue.bpm=="number"&&Number.isFinite(ue.bpm)&&(de.bpm=ue.bpm),typeof ue.keyscale=="string"&&(de.keyscale=ue.keyscale),typeof ue.timesignature=="string"&&(de.timesignature=ue.timesignature),p(de),f(typeof Z.text=="string"?Z.text:""),_(JSON.stringify(ue,null,2)),v("Caption rewritten.")}catch(X){v(X instanceof Error?X.message:String(X)),S(v()),j()(`Caption rewrite failed: ${v()}`)}finally{m(!1)}}}Ee(()=>Y(u()),()=>{b(i,u().find(X=>X.name==="lora"))}),Ee(()=>Y(u()),()=>{b(n,u().find(X=>X.name==="lora_scale"))}),bn(),en();var H=P7(),E=xt(H),U=k(E),N=$(U),L=k(N,!0);w(N),w(E);var I=$(E,2);nn(I);var T=$(I,2),F=k(T),z=k(F,!0);w(F),w(T);var D=$(T,2);{var Q=X=>{{let Z=Yt(()=>(Y(p()),x(()=>p().lora?1:0)));zm(X,{get selected(){return e(Z)},children:(ue,de)=>{var ae=B7(),V=xt(ae),pe=k(V),Ce=k(pe),ce=$(k(Ce)),Te=k(ce,!0);w(ce),w(Ce);var ye=$(Ce,2),Ie=k(ye);Dt(Ie);var Je=$(Ie,2);w(ye),w(pe);var tt=$(pe,2),De=$(k(tt),2);Dt(De),w(tt),w(V);var le=$(V,2);ne((xe,Ke,fe)=>{W(Te,xe),Ie.disabled=g()||m()||!h(),he(Ie,"title",h()?"":"Set adapter session options in the server configuration."),Gi(Ie,Ke),Je.disabled=g()||m()||!h(),De.disabled=(Y(g()),Y(m()),Y(h()),Y(p()),x(()=>g()||m()||!h()||!p().lora)),Gi(De,fe),le.disabled=(Y(g()),Y(m()),Y(h()),Y(p()),x(()=>g()||m()||!h()||!p().lora))},[()=>(Y(G()),x(()=>G()("request.optional"))),()=>(Y(p()),x(()=>String(p().lora??""))),()=>(Y(p()),x(()=>Number(p().lora_scale??1)))]),re("input",Ie,xe=>B()(e(i),xe.currentTarget.value.trim())),re("click",Je,()=>A()(e(i))),re("input",De,xe=>{Number.isFinite(xe.currentTarget.valueAsNumber)&&B()(e(n),xe.currentTarget.valueAsNumber)}),re("click",le,()=>B()(e(i),"")),J(ue,ae)},$$slots:{default:!0}})}};_e(D,X=>{e(i)&&e(n)&&X(Q)})}ne((X,Z,ue,de)=>{W(U,`${X??""} `),W(L,Z),F.disabled=ue,W(z,de)},[()=>(Y(G()),x(()=>G()("request.lyrics"))),()=>(Y(G()),x(()=>G()("request.optional"))),()=>(Y(g()),Y(m()),Y(r()),Y(o()),x(()=>g()||m()||!r().trim()&&!o().trim())),()=>(Y(m()),Y(G()),x(()=>m()?G()("request.rewritingCaption"):G()("request.rewriteCaption")))]),za(I,o),re("click",F,R),J(a,H),Bi()}var N7=ie('<label class="arena-section-label" for="arena-text"><!> </label> <textarea id="arena-text" rows="5"></textarea>',1),C2=ie("<span> </span>"),O7=ie('<label class="arena-section-label" for="arena-source"><!> </label> <input id="arena-source" class="file file-native" type="file" accept="audio/*"/> <label class="file-picker" for="arena-source"><!><strong> </strong><span> </span></label> <div class="media-actions"><button type="button"> </button> <!></div> <!>',1),D7=ie('<section class="arena-input-section"><label class="arena-section-label" for="arena-ground-truth"><!> <span> </span></label> <textarea id="arena-ground-truth" rows="4"></textarea></section>'),I7=ie('<div><label for="arena-seed"> </label> <input id="arena-seed" type="number" min="-1" max="4294967295" step="1"/></div>'),L7=ie('<h3 class="arena-section-label"><!> </h3> <div class="reference-input-grid"><div><!></div> <div><label for="arena-reference-text"> <span> </span></label> <textarea id="arena-reference-text" rows="2"></textarea></div></div>',1),V7=ie('<div class="quick-voice-note"> </div> <!>',1),H7=ie('<label for="arena-voice"> <span> </span></label> <input id="arena-voice" class="file file-native" type="file" accept="audio/*"/> <label class="file-picker" for="arena-voice"><!><strong> </strong><span> </span></label> <!>',1),W7=ie('<div class="media-actions"><button type="button"> </button> <!></div>'),T0=ie("<option> </option>"),Q7=ie('<article><div><strong> </strong> <span> </span></div> <span class="arena-status"> </span> <button type="button"><!> </button></article>'),K7=ie('<div class="arena-items"></div>'),Y7=ie('<div class="empty-output"><p> </p></div>'),J7=ie('<audio controls=""></audio>'),X7=ie('<pre class="arena-text-output"> </pre>'),Z7=ie("<div><dt> </dt><dd> </dd></div>"),e9=ie('<dl class="arena-metrics"><div><dt> </dt><dd> </dd></div> <div><dt> </dt><dd> </dd></div> <!></dl>'),t9=ie("<p> </p>"),a9=ie('<p class="arena-error"> </p>'),i9=ie('<article><header><span class="arena-result-number"> </span> <div class="arena-result-identity"><strong> </strong> <span> </span></div> <span class="arena-status"> </span></header> <!> <!> <!> <!> <!></article>'),n9=ie('<p class="arena-result-order"> </p> <div class="arena-result-list"></div>',1),s9=ie('<div class="empty-output"><div class="wave">~</div><p> </p></div>'),r9=ie('<section class="hero arena-hero"><div><p class="eyebrow"> </p> <h1> </h1> <p> </p></div> <div class="arena-mode-switch"><button> </button> <button> </button> <button> </button></div></section> <div class="arena-grid"><section class="arena-inputs"><div class="section-title"><div><span> </span><h2> </h2></div> <span class="task-chip"> </span></div> <section class="arena-input-section"><!></section> <!> <div class="field-grid"><div><label for="arena-language"> <span> </span></label> <input id="arena-language"/></div> <!></div> <div><!> <!> <!></div> <details class="arena-options"><summary><!> <span>JSON</span></summary> <textarea class="code" rows="3"></textarea></details></section> <section class="arena-queue"><div class="section-title"><div><span> </span><h2> </h2></div> <span class="task-chip"> </span></div> <div class="arena-add-row"><div><label for="arena-model"> </label> <select id="arena-model"></select></div> <div><label for="arena-package"> </label> <select id="arena-package"><!><!></select></div> <button type="button"><!> </button></div> <!></section> <section class="arena-results"><div class="section-title"><div><span> </span><h2> </h2></div> <span class="task-chip"> </span></div> <!></section> <div class="arena-actions"><div class="runbar arena-runbar"><button class="run"><!> <span> </span> <kbd>Ctrl Enter</kbd></button> <button><!> </button> <button><!> </button></div> <div> </div></div></div>',1);function o9(a,t){Ri(t,!1);const i=K();let n=Se(t,"activeCatalog",24,()=>[]),s=Se(t,"loadedModels",24,()=>[]),r=Se(t,"savedVoices",24,()=>[]),o=Se(t,"server",8,null),l=Se(t,"modelsFolder",8,""),c=Se(t,"maxTokens",8,1024),d=Se(t,"entrySelectable",8,()=>!0),g=Se(t,"studioPackageSlots",8,()=>[]),h=Se(t,"packageIsAvailable",8,()=>!1),m=Se(t,"supportsMaxTokens",8,()=>!1),p=Se(t,"supportsRequestOption",8,()=>!1),u=Se(t,"requiresRequestOption",8,()=>!1),f=Se(t,"refresh",8,async()=>{}),_=Se(t,"log",8,()=>{}),v=Se(t,"tr",8,(oe,ze,Pe=oe)=>Pe);class y extends Error{}let S=K("tts"),q=K(""),M=K(""),P=K(""),B=K(""),A=K(1234),j=K(null),G=K(null),C=K(""),R=K("default"),H=K(""),E=K(""),U=K(null),N=K(null),L=K(""),I=K("{}"),T=K([]),F=K(!1),z=null,D=K(""),Q=K([]),X=K(),Z=K([]),ue=K([]),de=K([]),ae=K([]),V=K(""),pe=K(""),Ce=K("");const ce={demo_1_man:"demo_1_man",demo_2_man:"demo_2_man",demo_3_woman:"demo_3_woman",demo_4_woman:"demo_4_woman"};async function Te(){try{b(de,await mb())}catch(oe){b(de,[]),_()(`Arena voices unavailable: ${oe instanceof Error?oe.message:oe}`)}}function ye(oe){if(!l())return oe;const ze=oe.replace(/\\/g,"/");if(ze==="models")return l();if(!ze.startsWith("models/"))return oe;const Pe=ze.slice(7),st=l().includes("\\")?"\\":"/";return`${l().replace(/[\\/]+$/,"")}${st}${Pe.replace(/\//g,st)}`}function Ie(oe){return oe.replace(/\\/g,"/").replace(/\/$/,"").toLowerCase()}function Je(oe,ze){const Pe=Ie(ze),st=Ie(oe);return Pe===st||Pe.endsWith(`/${st}`)}function tt(oe){return!!o()&&(!o()?.ui_management||oe.configured===!0)}function De(oe,ze){return tt(oe)?oe.path:ye(ze?.path||oe.path)}function le(oe,ze){return{...oe.session_options||{},...ze?.session_options||{}}}function xe(oe){if(!Number.isInteger(oe)||oe<-1||oe>4294967295)throw new Error(v()("arena.error.seed"));if(oe>=0)return oe;const ze=new Uint32Array(1);return globalThis.crypto.getRandomValues(ze),ze[0]}function Ke(oe){return["clon","vc","svc"].includes(oe.task)&&oe.family!=="rvc"||oe.task==="s2s"&&oe.family==="personaplex"||oe.task==="tts"&&!["supertonic"].includes(oe.family)}function fe(oe){return["clon","vc","svc"].includes(oe.task)&&oe.family!=="rvc"}function we(oe){return oe.task==="tts"&&oe.family==="qwen3_tts"&&!oe.id.includes("custom")}function me(oe,ze){return u()(oe,"reference_text")||ze&&we(oe)}function be(oe){return e(S)==="vc"&&oe.task==="vc"&&oe.family!=="rvc"}function ke(){return e(S)==="tts"&&e(R)==="builtin"&&e(H)?ce[e(H)]||e(H):""}function $e(oe){return oe.normalize("NFKC").toLowerCase().replace(/[^\p{L}\p{N}']+/gu," ").trim().split(/\s+/).filter(Boolean)}function ge(oe,ze){const Pe=$e(oe),st=$e(ze);if(!Pe.length)return"";const yt=Array.from({length:st.length+1},(Ze,lt)=>lt),ct=new Array(st.length+1);for(let Ze=1;Ze<=Pe.length;Ze+=1){ct[0]=Ze;for(let lt=1;lt<=st.length;lt+=1){const sa=yt[lt-1]+(Pe[Ze-1]===st[lt-1]?0:1),Xt=yt[lt]+1,ra=ct[lt-1]+1;ct[lt]=Math.min(sa,Xt,ra)}for(let lt=0;lt<=st.length;lt+=1)yt[lt]=ct[lt]}return`${(yt[st.length]/Pe.length*100).toFixed(2)}%`}function Me(oe){const ze=Number.parseFloat(oe);return Number.isFinite(ze)?ze:Number.POSITIVE_INFINITY}function Fe(oe,ze){const Pe=oe.status==="done",st=ze.status==="done";if(Pe!==st)return Pe?-1:1;if(Pe&&st){const yt=Me(oe.rtf)-Me(ze.rtf);if(yt!==0)return yt}return e(T).indexOf(oe)-e(T).indexOf(ze)}function qe(oe){return v()(`arena.itemStatus.${oe}`,{},oe)}function rt(oe){if(Be(),oe.startsWith("saved:")){const ze=r().find(Pe=>Pe.id===oe.slice(6));if(!ze)return;b(E,ze.id),b(R,"reference"),b(U,new File([ze.audio],`${ze.name}.wav`,{type:ze.audio.type||"audio/wav"})),b(L,ze.transcript)}else oe.startsWith("preset:")?(b(R,"builtin"),b(H,oe.slice(7))):oe==="reference"&&b(R,"reference")}function Xe(oe){(e(E)||e(H))&&b(L,""),b(E,""),b(H,""),b(U,oe),oe&&b(R,"reference")}function Re(){b(j,null),e(G)&&Ct(G,e(G).value="")}function Be(){b(R,"default"),b(E,""),b(H,""),b(U,null),b(L,""),e(N)&&Ct(N,e(N).value="")}function Oe(oe){return n().find(ze=>ze.id===oe.entryId)}function Ne(oe,ze){return(oe.install_packages||[]).find(Pe=>Pe.id===ze.packageId)}function Ye(oe,ze){b(T,e(T).map(Pe=>Pe.id===oe?{...Pe,...ze}:Pe))}function Ue(){for(const oe of e(T))oe.outputUrl&&URL.revokeObjectURL(oe.outputUrl);b(T,e(T).map(oe=>({...oe,status:"queued",note:"",error:"",outputUrl:"",outputText:"",wallMs:"",rtf:"",wer:""})))}function Ve(){for(const oe of e(T))oe.outputUrl&&URL.revokeObjectURL(oe.outputUrl);b(T,[])}function _t(oe){e(F)||oe===e(S)||(Ve(),b(S,oe),b(D,""))}function mt(){if(!e(X))return;const oe=e(Z).find(Pe=>Pe.id===e(M));if(e(T).some(Pe=>Pe.entryId===e(X)?.id&&Pe.packageId===oe?.id)){b(D,v()("arena.status.duplicate",{model:e(X).display_name,package:oe?.label||""}));return}b(T,[...e(T),{id:crypto.randomUUID(),entryId:e(X).id,packageId:oe?.id,label:e(X).display_name,packageLabel:oe?.label||v()("arena.package.configured"),status:"queued",note:"",error:"",outputUrl:"",outputText:"",wallMs:"",rtf:"",wer:""}])}function ot(oe){const ze=e(T).find(Pe=>Pe.id===oe);ze?.outputUrl&&URL.revokeObjectURL(ze.outputUrl),b(T,e(T).filter(Pe=>Pe.id!==oe))}function it(){try{const oe=JSON.parse(e(I)||"{}");if(Array.isArray(oe)||oe===null)throw new Error(v()("arena.error.jsonObject"));return oe}catch(oe){throw new Error(v()("arena.error.invalidJson",{error:oe instanceof Error?oe.message:String(oe)}))}}async function nt(oe){if(!oe)return;const ze=await mr(oe);return Os(ze,z?.signal)}async function gt(oe,ze){if(tt(oe)){if(!s().some(lt=>lt.id===oe.id&<.loaded))throw new Error(v()("arena.error.unregistered"));return}ze=ze||oe.install_packages?.[0];const Pe=ze?Cm(ze):void 0;if(ze&&!h()(oe,ze))throw new y(v()("arena.error.notDownloaded",{package:ze.label}));const st=De(oe,ze),yt=le(oe,ze);if(s().find(lt=>lt.id===oe.id&<.loaded&&Je(st,lt.path)&&Object.entries(yt).every(([sa,Xt])=>lt.session_options?.[sa]===Xt)))return;const Ze=s().filter(lt=>lt.loaded&&(lt.id!==oe.id||!Je(st,lt.path)));for(const lt of Ze)await mo(lt.id);if(Ze.length&&await f()(),await mf({id:oe.id,path:st,family:Pe?.family??oe.family,task:oe.task,mode:oe.mode||"offline",load_options:{...ze?.load_options,...oe.load_options},session_options:yt}),await f()(),!s().some(lt=>lt.id===oe.id&<.loaded&&Je(st,lt.path)&&Object.entries(yt).every(([sa,Xt])=>lt.session_options?.[sa]===Xt)))throw new Error(v()("arena.error.loadFailed"))}async function dt(oe,ze){const Pe=Oe(oe);if(!Pe){Ye(oe.id,{status:"failed",error:v()("arena.error.missingCatalog")});return}const st=Ne(Pe,oe),yt=performance.now();try{Ye(oe.id,{status:"loading",note:v()("arena.status.loadingModel"),error:""}),await gt(Pe,st),Ye(oe.id,{status:"running",note:v()("arena.status.runningRequest")});const ct={...Pe.default_options||{},...ze},Ze=ke(),lt=e(R)==="reference"&&!!e(U);if(be(Pe)&&!lt){Ye(oe.id,{status:"skipped",note:v()("arena.note.skippedTargetVoice"),error:""});return}if(e(S)==="tts"&&me(Pe,lt)&&!e(L).trim()){Ye(oe.id,{status:"skipped",note:v()("arena.note.skippedReferenceText"),error:""});return}const Xt=lt&&Ke(Pe)?await nt(e(U)):void 0;let ra="";if(Ze)ra=v()("arena.note.builtinVoice",{voice:e(H)});else if(lt&&Xt)ra=v()("arena.note.referenceVoice");else if(lt&&!Ke(Pe))ra=v()("arena.note.referenceUnsupported");else if(Pe.default_voice)ra=v()("arena.note.defaultVoice",{voice:Pe.default_voice});else if(fe(Pe)&&!Ze){Ye(oe.id,{status:"skipped",note:v()("arena.note.skippedReferenceVoice"),error:""});return}if(e(S)==="tts"){if(!e(P).trim())throw new y(v()("arena.error.enterTtsText"));const ta={model:Pe.id,input:e(P),language:e(B),seed:xe(e(A)),options:ct};m()(Pe)&&(ta.max_tokens=c()),Xt?ta.voice_ref=Xt:Ze?ta.voice=Ze:Pe.default_voice&&(ta.voice=Pe.default_voice),lt&&e(L).trim()&&p()(Pe,"reference_text")&&(ta.reference_text=e(L));const Aa=await hf(ta,z?.signal);Ye(oe.id,{status:"done",note:ra,outputUrl:URL.createObjectURL(Aa.blob),wallMs:Aa.wallMs||`${(performance.now()-yt).toFixed(1)}`,rtf:Aa.rtf||""});return}if(e(S)==="asr"){const ta=await nt(e(j));if(!ta)throw new y(v()("arena.error.chooseAsrSource"));const Aa=await _f({model:Pe.id,audio:ta,language:e(B),options:ct},z?.signal),Ha=typeof Aa.text=="string"?Aa.text:"",on=Aa.timing;Ye(oe.id,{status:"done",note:ra,outputText:Ha,wallMs:typeof on?.wall_ms=="number"?String(on.wall_ms):"",rtf:typeof on?.rtf=="number"?String(on.rtf):"",wer:e(C).trim()?ge(e(C),Ha):""});return}const _i=await nt(e(j));if(!_i)throw new y(v()("arena.error.chooseVcSource"));const Va={audio:_i,seed:xe(e(A)),options:ct};e(P).trim()&&(Va.text=e(P)),e(B).trim()&&(Va.language=e(B)),Xt?Va.voice_ref=Xt:Ze&&(Va.voice_id=Ze);const ga=await Ql({model:Pe.id,request:Va},z?.signal),Ya=typeof ga.audio=="string"?ga.audio:Array.isArray(ga.named_audio_outputs)&&typeof ga.named_audio_outputs[0]?.audio=="string"?ga.named_audio_outputs[0].audio:"";if(!Ya)throw new Error(v()("arena.error.noAudio"));const Kt=ga.timing;Ye(oe.id,{status:"done",note:ra,outputUrl:vf(Ya),wallMs:typeof Kt?.wall_ms=="number"?String(Kt.wall_ms):"",rtf:typeof Kt?.rtf=="number"?String(Kt.rtf):""})}catch(ct){Ye(oe.id,{status:ct instanceof y?"skipped":"failed",error:ct instanceof Error?ct.message:String(ct),note:""}),_()(`Arena row failed: ${ct instanceof Error?ct.message:ct}`)}}async function It(){if(!e(F)){if(!e(T).length){b(D,v()("arena.status.addModel"));return}b(F,!0),z=new AbortController,Ue(),b(D,v()("arena.status.running",{mode:e(Ce)})),_()(e(D));try{const oe=it();for(const ze of e(T)){if(z?.signal.aborted)break;await dt(ze,oe)}b(D,v()("arena.status.complete")),_()(e(D))}catch(oe){b(D,oe instanceof Error?oe.message:String(oe))}finally{b(F,!1),z=null}}}function Ut(){z?.abort()}Ns(()=>{z?.abort();for(const oe of e(T))oe.outputUrl&&URL.revokeObjectURL(oe.outputUrl)}),Qn(Te),Ee(()=>(Y(n()),e(S)),()=>{b(Q,n().filter(oe=>oe.arena!==!1&&(e(S)==="tts"?["tts","clon"].includes(oe.task):e(S)==="vc"?oe.task==="vc":oe.task==="asr")))}),Ee(()=>(e(q),e(Q)),()=>{(!e(q)||!e(Q).some(oe=>oe.id===e(q)))&&b(q,e(Q)[0]?.id||"")}),Ee(()=>(e(Q),e(q)),()=>{b(X,e(Q).find(oe=>oe.id===e(q))||e(Q)[0])}),Ee(()=>(e(X),Y(g())),()=>{b(Z,e(X)?g()(e(X)).map(oe=>oe.choice).filter(oe=>!!oe):[])}),Ee(()=>(e(Z),e(M)),()=>{e(Z).length&&!e(Z).some(oe=>oe.id===e(M))&&b(M,e(Z)[0].id)}),Ee(()=>e(de),()=>{b(ae,[...e(de)].sort((oe,ze)=>oe.localeCompare(ze,"en",{sensitivity:"base",numeric:!0})))}),Ee(()=>(e(R),e(ae)),()=>{e(R)==="builtin"&&!e(ae).length&&b(R,"default")}),Ee(()=>(e(S),e(R)),()=>{e(S)==="vc"&&e(R)!=="reference"&&(b(R,"reference"),b(H,""))}),Ee(()=>(e(R),e(ae),e(H)),()=>{e(R)==="builtin"&&!e(ae).includes(e(H))&&b(H,e(ae)[0]||"")}),Ee(()=>(e(R),e(H),gf),()=>{b(i,e(R)==="builtin"&&e(H)?gf(e(H)):"")}),Ee(()=>(e(S),Y(v())),()=>{b(V,e(S)==="tts"?v()("arena.title.tts"):e(S)==="vc"?v()("arena.title.vc"):v()("arena.title.asr"))}),Ee(()=>(e(S),Y(v())),()=>{b(pe,e(S)==="tts"?v()("arena.subtitle.tts"):e(S)==="vc"?v()("arena.subtitle.vc"):v()("arena.subtitle.asr"))}),Ee(()=>(e(S),Y(v())),()=>{b(Ce,e(S)==="tts"?v()("arena.mode.tts"):e(S)==="vc"?v()("arena.mode.vc"):v()("arena.mode.asr"))}),Ee(()=>e(T),()=>{b(ue,e(T).every(oe=>["done","failed","skipped"].includes(oe.status))?[...e(T)].sort(Fe):e(T))}),bn();var Rt={runArena:It};en();var ya=r9(),xa=xt(ya),pa=k(xa),et=k(pa),pt=k(et,!0);w(et);var ht=$(et,2),vt=k(ht,!0);w(ht);var zt=$(ht,2),Lt=k(zt,!0);w(zt),w(pa);var ma=$(pa,2),na=k(ma);let Ta;var Qa=k(na,!0);w(na);var li=$(na,2);let hi;var fa=k(li,!0);w(li);var ti=$(li,2);let Di;var Ai=k(ti,!0);w(ti),w(ma),w(xa);var ui=$(xa,2),Ia=k(ui),Yi=k(Ia),hn=k(Yi),un=k(hn),rn=k(un,!0);w(un);var He=$(un),Gt=k(He,!0);w(He),w(hn);var Pa=$(hn,2),Sa=k(Pa,!0);w(Pa),w(Yi);var ua=$(Yi,2),Ot=k(ua);{var Ea=oe=>{var ze=N7(),Pe=xt(ze),st=k(Pe);Rd(st,{size:17});var yt=$(st,1,!0);w(Pe);var ct=$(Pe,2);nn(ct),ne((Ze,lt)=>{W(yt,Ze),he(ct,"placeholder",lt)},[()=>(Y(v()),x(()=>v()("request.text"))),()=>(Y(v()),x(()=>v()("arena.input.textPlaceholder")))]),za(ct,()=>e(P),Ze=>b(P,Ze)),J(oe,ze)},wa=oe=>{var ze=O7(),Pe=xt(ze),st=k(Pe);Ud(st,{size:17});var yt=$(st,1,!0);w(Pe);var ct=$(Pe,2);qi(ct,Ha=>b(G,Ha),()=>e(G));var Ze=$(ct,2),lt=k(Ze);Rc(lt,{size:16});var sa=$(lt),Xt=k(sa,!0);w(sa);var ra=$(sa),_i=k(ra,!0);w(ra),w(Ze);var Va=$(Ze,2),ga=k(Va),Ya=k(ga,!0);w(ga);var Kt=$(ga,2);{var ta=Ha=>{var on=C2(),Fn=k(on,!0);w(on),ne(()=>W(Fn,(e(j),x(()=>e(j).name)))),J(Ha,on)};_e(Kt,Ha=>{e(j)&&Ha(ta)})}w(Va);var Aa=$(Va,2);{let Ha=Yt(()=>(Y(v()),x(()=>v()("file.preview"))));os(Aa,{get file(){return e(j)},kind:"audio",get label(){return e(Ha)}})}ne((Ha,on,Fn,Ys)=>{W(yt,Ha),W(Xt,on),W(_i,Fn),ga.disabled=!e(j),W(Ya,Ys)},[()=>(Y(v()),x(()=>v()("request.sourceAudio"))),()=>(Y(v()),x(()=>v()("file.choose"))),()=>(e(j),Y(v()),x(()=>e(j)?.name||v()("file.none"))),()=>(Y(v()),x(()=>v()("file.clear")))]),re("change",ct,Ha=>b(j,Ha.currentTarget.files?.[0]||null)),re("click",ga,Re),J(oe,ze)};_e(Ot,oe=>{e(S)==="tts"?oe(Ea):oe(wa,-1)})}w(ua);var $a=$(ua,2);{var qa=oe=>{var ze=D7(),Pe=k(ze),st=k(Pe);Wo(st,{size:17});var yt=$(st),ct=$(yt),Ze=k(ct,!0);w(ct),w(Pe);var lt=$(Pe,2);nn(lt),w(ze),ne((sa,Xt,ra)=>{W(yt,`${sa??""} `),W(Ze,Xt),he(lt,"placeholder",ra)},[()=>(Y(v()),x(()=>v()("arena.input.groundTruth"))),()=>(Y(v()),x(()=>v()("request.optional"))),()=>(Y(v()),x(()=>v()("arena.input.groundTruthPlaceholder")))]),za(lt,()=>e(C),sa=>b(C,sa)),J(oe,ze)};_e($a,oe=>{e(S)==="asr"&&oe(qa)})}var Qe=$($a,2),Ge=k(Qe),bt=k(Ge),Vt=k(bt),ea=$(Vt),Ba=k(ea,!0);w(ea),w(bt);var ai=$(bt,2);Dt(ai),w(Ge);var Ti=$(Ge,2);{var Ht=oe=>{var ze=I7(),Pe=k(ze),st=k(Pe,!0);w(Pe);var yt=$(Pe,2);Dt(yt),w(ze),ne(ct=>W(st,ct),[()=>(Y(v()),x(()=>v()("request.seed")))]),za(yt,()=>e(A),ct=>b(A,ct)),J(oe,ze)};_e(Ti,oe=>{e(S)!=="asr"&&oe(Ht)})}w(Qe);var Ga=$(Qe,2);let Jt;var ci=k(Ga);{var Hi=oe=>{var ze=L7(),Pe=xt(ze),st=k(Pe);ff(st,{size:17});var yt=$(st,1,!0);w(Pe);var ct=$(Pe,2),Ze=k(ct),lt=k(Ze);{let Ya=Yt(()=>e(E)?`saved:${e(E)}`:e(R)==="builtin"?`preset:${e(H)}`:e(R)==="reference"?"reference":""),Kt=Yt(()=>e(S)==="tts"?e(ae):[]),ta=Yt(()=>(Y(v()),x(()=>v()("arena.voice.builtin")))),Aa=Yt(()=>(Y(v()),x(()=>v()("arena.voice.modelDefault")))),Ha=Yt(()=>e(S)==="tts");qb(lt,{id:"arena-voice-mode",get value(){return e(Ya)},get presets(){return e(Kt)},get savedVoices(){return r()},get presetLabel(){return e(ta)},get emptyLabel(){return e(Aa)},get allowEmpty(){return e(Ha)},referenceOption:!0,get tr(){return v()},get disabled(){return e(F)},onselect:rt})}w(Ze);var sa=$(Ze,2),Xt=k(sa),ra=k(Xt),_i=$(ra),Va=k(_i,!0);w(_i),w(Xt);var ga=$(Xt,2);nn(ga),w(sa),w(ct),ne((Ya,Kt,ta)=>{W(yt,Ya),W(ra,`${Kt??""} `),W(Va,ta)},[()=>(e(S),Y(v()),x(()=>e(S)==="vc"?v()("arena.voice.targetSpeaker"):v()("voice.reference"))),()=>(Y(v()),x(()=>v()("voice.referenceText"))),()=>(Y(v()),x(()=>v()("request.optional")))]),za(ga,()=>e(L),Ya=>b(L,Ya)),J(oe,ze)};_e(ci,oe=>{e(S)!=="asr"&&oe(Hi)})}var Ka=$(ci,2);{var ca=oe=>{var ze=V7(),Pe=xt(ze),st=k(Pe,!0);w(Pe);var yt=$(Pe,2);{let ct=Yt(()=>(Y(v()),x(()=>v()("file.preview"))));os(yt,{get src(){return e(i)},get name(){return e(H)},kind:"audio",get label(){return e(ct)}})}ne(ct=>W(st,ct),[()=>(Y(v()),x(()=>v()("arena.voice.builtinNote")))]),J(oe,ze)},Bt=oe=>{var ze=H7(),Pe=xt(ze),st=k(Pe),yt=$(st),ct=k(yt,!0);w(yt),w(Pe);var Ze=$(Pe,2);qi(Ze,Ya=>b(N,Ya),()=>e(N));var lt=$(Ze,2),sa=k(lt);Rc(sa,{size:16});var Xt=$(sa),ra=k(Xt,!0);w(Xt);var _i=$(Xt),Va=k(_i,!0);w(_i),w(lt);var ga=$(lt,2);{let Ya=Yt(()=>(Y(v()),x(()=>v()("file.preview"))));os(ga,{get file(){return e(U)},kind:"audio",get label(){return e(Ya)}})}ne((Ya,Kt,ta,Aa)=>{W(st,`${Ya??""} `),W(ct,Kt),W(ra,ta),W(Va,Aa)},[()=>(e(S),Y(v()),x(()=>e(S)==="vc"?v()("arena.voice.targetSpeaker"):v()("voice.reference"))),()=>(e(S),Y(v()),x(()=>e(S)==="vc"?v()("voice.required"):v()("voice.optional"))),()=>(Y(v()),x(()=>v()("file.choose"))),()=>(e(U),Y(v()),x(()=>e(U)?.name||v()("file.none")))]),re("change",Ze,Ya=>Xe(Ya.currentTarget.files?.[0]||null)),J(oe,ze)};_e(Ka,oe=>{e(R)==="builtin"?oe(ca):(e(S)==="vc"||e(R)==="reference")&&oe(Bt,1)})}var ve=$(Ka,2);{var Le=oe=>{var ze=W7(),Pe=k(ze),st=k(Pe,!0);w(Pe);var yt=$(Pe,2);{var ct=Ze=>{var lt=C2(),sa=k(lt,!0);w(lt),ne(()=>W(sa,(e(U),x(()=>e(U).name)))),J(Ze,lt)};_e(yt,Ze=>{e(U)&&Ze(ct)})}w(ze),ne((Ze,lt)=>{Pe.disabled=Ze,W(st,lt)},[()=>(e(R),e(U),e(L),x(()=>e(R)==="default"&&!e(U)&&!e(L).trim())),()=>(e(S),Y(v()),x(()=>e(S)==="vc"?v()("arena.voice.clearTarget"):v()("arena.voice.clearReference")))]),re("click",Pe,Be),J(oe,ze)};_e(ve,oe=>{e(S)!=="asr"&&oe(Le)})}w(Ga);var kt=$(Ga,2),jt=k(kt),ja=k(jt);nb(ja,{size:16});var ee=$(ja);qt(),w(jt);var Ua=$(jt,2);nn(Ua),w(kt),w(Ia);var Ii=$(Ia,2),zi=k(Ii),xi=k(zi),xn=k(xi),is=k(xn,!0);w(xn);var Mr=$(xn),jn=k(Mr,!0);w(Mr),w(xi);var Cn=$(xi,2),ws=k(Cn,!0);w(Cn),w(zi);var Qr=$(zi,2),dl=k(Qr),wo=k(dl),ks=k(wo,!0);w(wo);var ko=$(wo,2);Mt(ko,5,()=>e(Q),Qt,(oe,ze)=>{var Pe=T0(),st=k(Pe,!0);w(Pe);var yt={};ne(ct=>{Pe.disabled=ct,W(st,(e(ze),x(()=>e(ze).display_name))),yt!==(yt=(e(ze),x(()=>e(ze).id)))&&(Pe.value=(Pe.__value=(e(ze),x(()=>e(ze).id)))??"")},[()=>(Y(d()),e(ze),x(()=>!d()(e(ze))))]),J(oe,Pe)}),w(ko),w(dl);var ul=$(dl,2),vr=k(ul),Kc=k(vr,!0);w(vr);var Qs=$(vr,2),Kr=k(Qs);Mt(Kr,1,()=>e(Z),Qt,(oe,ze)=>{var Pe=T0(),st=k(Pe);w(Pe);var yt={};ne((ct,Ze)=>{Pe.disabled=ct,W(st,`${e(ze),x(()=>e(ze).label)??""}${Ze??""}`),yt!==(yt=(e(ze),x(()=>e(ze).id)))&&(Pe.value=(Pe.__value=(e(ze),x(()=>e(ze).id)))??"")},[()=>(e(X),Y(h()),e(ze),x(()=>e(X)?!h()(e(X),e(ze)):!0)),()=>(e(X),Y(h()),e(ze),Y(v()),x(()=>e(X)&&h()(e(X),e(ze))?"":` · ${v()("studio.notDownloaded")}`))]),J(oe,Pe)});var fu=$(Kr);{var br=oe=>{var ze=T0(),Pe=k(ze,!0);w(ze),ze.value=ze.__value="",ne(st=>W(Pe,st),[()=>(Y(v()),x(()=>v()("arena.package.configured")))]),J(oe,ze)};_e(fu,oe=>{e(Z),e(X),x(()=>!e(Z).length&&e(X))&&oe(br)})}w(Qs),w(ul);var xo=$(ul,2),ac=k(xo);Pr(ac,{size:15});var Yc=$(ac,1,!0);w(xo),w(Qr);var fl=$(Qr,2);{var pl=oe=>{var ze=K7();Mt(ze,5,()=>e(T),Qt,(Pe,st)=>{var yt=Q7();let ct;var Ze=k(yt),lt=k(Ze),sa=k(lt,!0);w(lt);var Xt=$(lt,2),ra=k(Xt,!0);w(Xt),w(Ze);var _i=$(Ze,2),Va=k(_i,!0);w(_i);var ga=$(_i,2),Ya=k(ga);po(Ya,{size:14});var Kt=$(Ya,1,!0);w(ga),w(yt),ne((ta,Aa)=>{ct=ba(yt,1,"",null,ct,{done:e(st).status==="done",failed:e(st).status==="failed",skipped:e(st).status==="skipped"}),W(sa,(e(st),x(()=>e(st).label))),W(ra,(e(st),x(()=>e(st).packageLabel))),W(Va,ta),ga.disabled=e(F),W(Kt,Aa)},[()=>(e(st),x(()=>qe(e(st).status))),()=>(Y(v()),x(()=>v()("arena.queue.remove")))]),re("click",ga,()=>ot(e(st).id)),J(Pe,yt)}),w(ze),J(oe,ze)},ic=oe=>{var ze=Y7(),Pe=k(ze),st=k(Pe,!0);w(Pe),w(ze),ne(yt=>W(st,yt),[()=>(Y(v()),x(()=>v()("arena.queue.empty")))]),J(oe,ze)};_e(fl,oe=>{e(T),x(()=>e(T).length)?oe(pl):oe(ic,-1)})}w(Ii);var Ji=$(Ii,2),ml=k(Ji),Gn=k(ml),Ks=k(Gn),fn=k(Ks,!0);w(Ks);var gl=$(Ks),ns=k(gl,!0);w(gl),w(Gn);var yi=$(Gn,2),zr=k(yi);w(yi),w(ml);var Jc=$(ml,2);{var xs=oe=>{var ze=n9(),Pe=xt(ze),st=k(Pe,!0);w(Pe);var yt=$(Pe,2);Mt(yt,5,()=>e(ue),Qt,(ct,Ze,lt)=>{var sa=i9();let Xt;var ra=k(sa),_i=k(ra),Va=k(_i,!0);w(_i);var ga=$(_i,2),Ya=k(ga),Kt=k(Ya,!0);w(Ya);var ta=$(Ya,2),Aa=k(ta,!0);w(ta),w(ga);var Ha=$(ga,2),on=k(Ha,!0);w(Ha),w(ra);var Fn=$(ra,2);{var Ys=Xi=>{var Wi=J7();ne(()=>he(Wi,"src",(e(Ze),x(()=>e(Ze).outputUrl)))),J(Xi,Wi)};_e(Fn,Xi=>{e(Ze),x(()=>e(Ze).outputUrl)&&Xi(Ys)})}var Xr=$(Fn,2);{var nc=Xi=>{var Wi=X7(),Kn=k(Wi,!0);w(Wi),ne(()=>W(Kn,(e(Ze),x(()=>e(Ze).outputText)))),J(Xi,Wi)};_e(Xr,Xi=>{e(Ze),x(()=>e(Ze).outputText)&&Xi(nc)})}var sc=$(Xr,2);{var _l=Xi=>{var Wi=e9(),Kn=k(Wi),vl=k(Kn),Zc=k(vl,!0);w(vl);var Mn=$(vl),Ts=k(Mn,!0);w(Mn),w(Kn);var Zr=$(Kn,2),eo=k(Zr),Mo=k(eo,!0);w(eo);var rc=$(eo),pu=k(rc,!0);w(rc),w(Zr);var ed=$(Zr,2);{var bl=to=>{var ds=Z7(),yl=k(ds),Js=k(yl,!0);w(yl);var zo=$(yl),wl=k(zo,!0);w(zo),w(ds),ne(Sn=>{W(Js,Sn),W(wl,(e(Ze),x(()=>e(Ze).wer)))},[()=>(Y(v()),x(()=>v()("arena.metric.wer")))]),J(to,ds)};_e(ed,to=>{e(Ze),x(()=>e(Ze).wer)&&to(bl)})}w(Wi),ne((to,ds)=>{W(Zc,to),W(Ts,(e(Ze),x(()=>e(Ze).wallMs||"?"))),W(Mo,ds),W(pu,(e(Ze),x(()=>e(Ze).rtf||"?")))},[()=>(Y(v()),x(()=>v()("arena.metric.wall"))),()=>(Y(v()),x(()=>v()("arena.metric.rtf")))]),J(Xi,Wi)};_e(sc,Xi=>{e(Ze),x(()=>e(Ze).outputUrl||e(Ze).outputText||e(Ze).wallMs||e(Ze).rtf||e(Ze).wer)&&Xi(_l)})}var Co=$(sc,2);{var Go=Xi=>{var Wi=t9(),Kn=k(Wi,!0);w(Wi),ne(()=>W(Kn,(e(Ze),x(()=>e(Ze).note)))),J(Xi,Wi)};_e(Co,Xi=>{e(Ze),x(()=>e(Ze).note)&&Xi(Go)})}var Fo=$(Co,2);{var Er=Xi=>{var Wi=a9(),Kn=k(Wi,!0);w(Wi),ne(()=>W(Kn,(e(Ze),x(()=>e(Ze).error)))),J(Xi,Wi)};_e(Fo,Xi=>{e(Ze),x(()=>e(Ze).error)&&Xi(Er)})}w(sa),ne((Xi,Wi)=>{Xt=ba(sa,1,"",null,Xt,{done:e(Ze).status==="done",failed:e(Ze).status==="failed",skipped:e(Ze).status==="skipped"}),W(Va,Xi),W(Kt,(e(Ze),x(()=>e(Ze).label))),W(Aa,(e(Ze),x(()=>e(Ze).packageLabel))),W(on,Wi)},[()=>x(()=>String(lt+1).padStart(2,"0")),()=>(e(Ze),x(()=>qe(e(Ze).status)))]),J(ct,sa)}),w(yt),ne(ct=>W(st,ct),[()=>(e(T),Y(v()),x(()=>e(T).every(ct=>["done","failed","skipped"].includes(ct.status))?v()("arena.results.orderRtf"):v()("arena.results.orderSelection")))]),J(oe,ze)},Xc=oe=>{var ze=s9(),Pe=$(k(ze)),st=k(Pe,!0);w(Pe),w(ze),ne(yt=>W(st,yt),[()=>(Y(v()),x(()=>v()("arena.results.empty")))]),J(oe,ze)};_e(Jc,oe=>{e(T),x(()=>e(T).length)?oe(xs):oe(Xc,-1)})}w(Ji);var Ss=$(Ji,2),So=k(Ss),To=k(So),hl=k(To);Bc(hl,{size:15});var $o=$(hl,2),Yr=k($o,!0);w($o),qt(2),w(To);var Jr=$(To,2),qo=k(Jr);Qo(qo,{size:14});var Ao=$(qo,1,!0);w(Jr);var Wt=$(Jr,2),St=k(Wt);po(St,{size:14});var ka=$(St,1,!0);w(Wt),w(So);var Fa=$(So,2);let ii;var La=k(Fa,!0);return w(Fa),w(Ss),w(ui),ne((oe,ze,Pe,st,yt,ct,Ze,lt,sa,Xt,ra,_i,Va,ga,Ya,Kt,ta,Aa,Ha,on,Fn,Ys)=>{W(pt,oe),W(vt,e(V)),W(Lt,e(pe)),na.disabled=e(F),Ta=ba(na,1,"",null,Ta,{active:e(S)==="tts"}),W(Qa,ze),li.disabled=e(F),hi=ba(li,1,"",null,hi,{active:e(S)==="vc"}),W(fa,Pe),ti.disabled=e(F),Di=ba(ti,1,"",null,Di,{active:e(S)==="asr"}),W(Ai,st),W(rn,yt),W(Gt,ct),W(Sa,e(Ce)),W(Vt,`${Ze??""} `),W(Ba,lt),he(ai,"placeholder",sa),Jt=ba(Ga,1,"",null,Jt,{"arena-input-section":e(S)!=="asr"}),W(ee,`${Xt??""} `),W(is,ra),W(jn,_i),W(ws,(e(T),x(()=>e(T).length))),W(ks,Va),W(Kc,ga),xo.disabled=!e(X),W(Yc,Ya),W(fn,Kt),W(ns,ta),W(zr,`${Aa??""} / ${e(T),x(()=>e(T).length)??""}`),To.disabled=(e(F),e(T),x(()=>e(F)||!e(T).length)),W(Yr,Ha),Jr.disabled=!e(F),W(Ao,on),Wt.disabled=(e(F),e(T),x(()=>e(F)||!e(T).length)),W(ka,Fn),ii=ba(Fa,1,"status",null,ii,{busy:e(F)}),W(La,Ys)},[()=>(Y(v()),x(()=>v()("arena.eyebrow"))),()=>(Y(v()),x(()=>v()("arena.mode.tts"))),()=>(Y(v()),x(()=>v()("arena.mode.vc"))),()=>(Y(v()),x(()=>v()("arena.mode.asr"))),()=>(Y(v()),x(()=>v()("arena.input.label"))),()=>(Y(v()),x(()=>v()("arena.input.title"))),()=>(Y(v()),x(()=>v()("request.language"))),()=>(Y(v()),x(()=>v()("request.optional"))),()=>(Y(v()),x(()=>v()("request.autoLanguage"))),()=>(Y(v()),x(()=>v()("arena.options.shared"))),()=>(Y(v()),x(()=>v()("arena.queue.label"))),()=>(Y(v()),x(()=>v()("arena.queue.title"))),()=>(Y(v()),x(()=>v()("studio.model"))),()=>(Y(v()),x(()=>v()("arena.package.label"))),()=>(Y(v()),x(()=>v()("arena.queue.add"))),()=>(Y(v()),x(()=>v()("result.label"))),()=>(Y(v()),x(()=>v()("arena.results.title"))),()=>(e(T),x(()=>e(T).filter(oe=>oe.status==="done").length)),()=>(e(F),Y(v()),x(()=>e(F)?v()("run.working"):v()("arena.run"))),()=>(Y(v()),x(()=>v()("run.cancel"))),()=>(Y(v()),x(()=>v()("arena.queue.clear"))),()=>(e(D),Y(v()),x(()=>e(D)||v()("status.ready")))]),re("click",na,()=>_t("tts")),re("click",li,()=>_t("vc")),re("click",ti,()=>_t("asr")),za(ai,()=>e(B),oe=>b(B,oe)),za(Ua,()=>e(I),oe=>b(I,oe)),rs(ko,()=>e(q),oe=>b(q,oe)),re("change",ko,()=>b(M,"")),rs(Qs,()=>e(M),oe=>b(M,oe)),re("click",xo,mt),re("click",To,It),re("click",Jr,Ut),re("click",Wt,Ve),J(a,ya),Il(t,"runArena",It),Bi(Rt)}const $0=Object.values(Object.assign({"./dubbing/app.ts":{id:"cross-language-dubbing",name:"Cross-language dubbing",description:"Translate a recording and generate speech in the target language.",tasks:["asr","tts"],modes:["offline"],load:()=>Ho(()=>Promise.resolve().then(()=>cR),void 0,mn&&mn.tagName.toUpperCase()==="SCRIPT"&&mn.src||new URL("_app/immutable/bundle.RICyrw4S.js",document.baseURI).href)},"./tts/app.ts":{id:"tts",name:"Text to speech",description:"Write a script, cast named speakers, refine recordings, and export your narration.",tasks:["tts","clon","vdes"],modes:["offline"],load:()=>Ho(()=>Promise.resolve().then(()=>KB),void 0,mn&&mn.tagName.toUpperCase()==="SCRIPT"&&mn.src||new URL("_app/immutable/bundle.RICyrw4S.js",document.baseURI).href)},"./voice-chat/app.ts":{id:"voice-chat-avatar",name:"Voice chat",description:"Talk with LFM3-Audio in a voice you choose, with an animated portrait.",tasks:["asr","s2s","tts","gen"],modes:["offline","streaming"],load:()=>Ho(()=>Promise.resolve().then(()=>gP),void 0,mn&&mn.tagName.toUpperCase()==="SCRIPT"&&mn.src||new URL("_app/immutable/bundle.RICyrw4S.js",document.baseURI).href)}})).sort((a,t)=>a.name.localeCompare(t.name));if(new Set($0.map(a=>a.id)).size!==$0.length)throw new Error("Duplicate app id.");var l9=ie('<p role="status" class="svelte-ishglm">Opening app…</p>'),c9=ie('<p role="alert" class="svelte-ishglm"> </p>'),d9=ie('<header class="app-context svelte-ishglm"><button class="svelte-ishglm">← All apps</button><span>/</span><span> </span></header> <!> <!> <!>',1),u9=ie('<button class="app-card svelte-ishglm"><strong class="svelte-ishglm"> </strong><span class="svelte-ishglm"> </span><span class="app-open svelte-ishglm">Open app →</span></button>'),f9=ie('<header class="app-heading svelte-ishglm"><div><p class="eyebrow svelte-ishglm">APPS</p><h1 class="svelte-ishglm">Make something with your models</h1><p class="svelte-ishglm">Choose a workflow. Create and reuse speaker presets inside Text to speech.</p></div></header> <aside class="early-release svelte-ishglm" aria-label="Early release"><strong class="svelte-ishglm">Early release</strong> <p class="svelte-ishglm">Apps are still being developed. Workflows and saved project formats may change. Export audio you want to keep.</p></aside> <div class="app-grid svelte-ishglm"></div>',1),p9=ie('<section class="apps-page svelte-ishglm"><!></section>');function m9(a,t){Ri(t,!1);let i=Se(t,"active",8,!0),n=K(null),s=K(null),r=K(null),o=K(!1),l=K(!1),c=K("");function d(){return!e(o)&&!e(l)}async function g(v){if(d()){b(n,v),b(l,!0),b(c,"");try{b(s,(await v.load()).default)}catch(y){b(c,`Could not open ${v.name}: ${String(y)}`)}finally{b(l,!1)}}}async function h(){if(d())try{await e(r)?.saveBeforeClose?.(),b(n,null),b(s,null),b(c,"")}catch(v){b(c,`Could not save the app before closing: ${String(v)}`)}}var m={canClose:d};en();var p=p9();re("beforeunload",Tc,v=>{e(o)&&(v.preventDefault(),v.returnValue="")});var u=k(p);{var f=v=>{var y=d9(),S=xt(y),q=k(S),M=$(q,2),P=k(M,!0);w(M),w(S);var B=$(S,2);{var A=H=>{var E=l9();J(H,E)};_e(B,H=>{e(l)&&H(A)})}var j=$(B,2);{var G=H=>{var E=c9(),U=k(E,!0);w(E),ne(()=>W(U,e(c))),J(H,E)};_e(j,H=>{e(c)&&H(G)})}var C=$(j,2);{var R=H=>{var E=bs(),U=xt(E);kd(U,()=>e(s),(N,L)=>{qi(L(N,{get active(){return i()},get busy(){return e(o)},set busy(I){b(o,I)},$$legacy:!0}),I=>b(r,I),()=>e(r))}),J(H,E)};_e(C,H=>{e(s)&&H(R)})}ne(()=>{q.disabled=e(o)||e(l),W(P,(e(n),x(()=>e(n).name)))}),re("click",q,h),J(v,y)},_=v=>{var y=f9(),S=$(xt(y),4);Mt(S,5,()=>$0,Qt,(q,M)=>{var P=u9(),B=k(P),A=k(B,!0);w(B);var j=$(B),G=k(j,!0);w(j),qt(),w(P),ne(()=>{W(A,(e(M),x(()=>e(M).name))),W(G,(e(M),x(()=>e(M).description)))}),re("click",P,()=>g(e(M))),J(q,P)}),w(S),J(v,y)};_e(u,v=>{e(n)?v(f):v(_,-1)})}return w(p),J(a,p),Il(t,"canClose",d),Bi(m)}const G2="audiocpp.ui.configuration",Nf=El({historyLimit:10}),Of=El("");function F2(a){if(!Number.isSafeInteger(a.historyLimit)||a.historyLimit<1)throw new Error("History length must be a positive integer.")}function g9(){const a=localStorage.getItem(G2);if(a===null)return;const t=JSON.parse(a);F2(t),Nf.set({historyLimit:t.historyLimit})}function h9(a){F2(a),localStorage.setItem(G2,JSON.stringify(a)),Nf.set(a),Of.set("")}var _9=ie('<div class="configuration-error svelte-19sueow" role="alert"> </div>'),v9=ie('<div role="status"> </div>'),b9=ie('<section class="configuration-page svelte-19sueow"><h1 class="svelte-19sueow"> </h1> <form class="svelte-19sueow"><h2 class="svelte-19sueow"> </h2> <label for="history-limit" class="svelte-19sueow"> </label> <input id="history-limit" type="number" min="1" step="1" required="" class="svelte-19sueow"/> <button type="submit"> </button> <!> <!></form></section>');function y9(a,t){Ri(t,!1);const i=()=>Bu(Nf,"$uiConfiguration",s),n=()=>Bu(Of,"$uiConfigurationError",s),[s,r]=kp();let o=Se(t,"tr",8),l=K(i().historyLimit),c=K("");function d(){try{h9({historyLimit:e(l)}),b(c,"configuration.saved")}catch(j){Of.set(j instanceof Error?j.message:String(j)),b(c,"")}}Ee(()=>i(),()=>{b(l,i().historyLimit)}),bn(),en();var g=b9(),h=k(g),m=k(h,!0);w(h);var p=$(h,2),u=k(p),f=k(u,!0);w(u);var _=$(u,2),v=k(_,!0);w(_);var y=$(_,2);Dt(y);var S=$(y,2),q=k(S,!0);w(S);var M=$(S,2);{var P=j=>{var G=_9(),C=k(G,!0);w(G),ne(()=>W(C,n())),J(j,G)};_e(M,j=>{n()&&j(P)})}var B=$(M,2);{var A=j=>{var G=v9(),C=k(G,!0);w(G),ne(R=>W(C,R),[()=>(Y(o()),e(c),x(()=>o()(e(c))))]),J(j,G)};_e(B,j=>{e(c)&&j(A)})}w(p),w(g),ne((j,G,C,R)=>{W(m,j),W(f,G),W(v,C),W(q,R)},[()=>(Y(o()),x(()=>o()("nav.configuration"))),()=>(Y(o()),x(()=>o()("configuration.history"))),()=>(Y(o()),x(()=>o()("configuration.historyLimit"))),()=>(Y(o()),x(()=>o()("configuration.save")))]),za(y,()=>e(l),j=>b(l,j)),re("submit",p,X4(d)),J(a,g),Bi(),r()}var w9=ie('<span class="download-count svelte-1vlt8au"> </span>'),q0=ie("<option> </option>"),k9=ie('<button class="svelte-1vlt8au">Stop</button>'),x9=ie('<div class="download-row svelte-1vlt8au"><span class="svelte-1vlt8au"> </span><span class="svelte-1vlt8au"> </span><!></div>'),S9=ie('<details class="downloads svelte-1vlt8au" open=""><summary class="svelte-1vlt8au">Downloads</summary><!></details>'),T9=ie('<header class="svelte-1vlt8au"><h2 class="svelte-1vlt8au"> </h2><span> </span></header>'),$9=ie('<span class="svelte-1vlt8au"> </span>'),q9=ie('<span class="svelte-1vlt8au">Update available</span>'),A9=ie('<button class="svelte-1vlt8au">Update</button>'),C9=ie('<details class="manage svelte-1vlt8au"><summary class="svelte-1vlt8au">Manage</summary><div class="svelte-1vlt8au"><!><button class="svelte-1vlt8au">Remove</button></div></details>'),G9=ie('<button class="svelte-1vlt8au">Stop download</button>'),F9=ie('<button class="svelte-1vlt8au">Clean partial download</button>'),M9=ie('<div><span> </span><progress max="100" class="svelte-1vlt8au"></progress><p> </p><!></div>'),z9=ie('<div class="package svelte-1vlt8au"><label class="svelte-1vlt8au"> </label><select class="svelte-1vlt8au"></select><span class="svelte-1vlt8au"> </span></div> <div><strong> </strong><!></div> <div class="actions svelte-1vlt8au"><button class="primary svelte-1vlt8au"> </button> <!></div> <!>',1),E9=ie('<a target="_blank" rel="noreferrer">View weights ↗</a>'),U9=ie('<span class="state svelte-1vlt8au">Manual setup</span><div class="actions svelte-1vlt8au"><!><button class="svelte-1vlt8au">Open in Studio</button></div>',1),R9=ie('<div class="model-row svelte-1vlt8au"><div class="identity svelte-1vlt8au"><strong class="svelte-1vlt8au"> </strong><span class="svelte-1vlt8au"> </span><!></div> <!></div>'),B9=ie('<section class="family svelte-1vlt8au"><!> <!></section>'),P9=ie('<div class="empty svelte-1vlt8au">No models match these filters.<button class="svelte-1vlt8au">Clear filters</button></div>'),j9=ie('<section class="library svelte-1vlt8au" aria-label="Model library"><header class="library-heading svelte-1vlt8au"><div><h1 class="svelte-1vlt8au">Model Library</h1><span class="svelte-1vlt8au"> </span></div> <!></header> <details class="folder-settings svelte-1vlt8au"><summary class="svelte-1vlt8au">Models folder <span class="svelte-1vlt8au"> </span></summary> <div class="folder-editor svelte-1vlt8au"><label class="folder-path svelte-1vlt8au">Folder path<input aria-label="Models folder path" class="svelte-1vlt8au"/></label> <button class="svelte-1vlt8au">Browse</button> <button class="svelte-1vlt8au">Apply</button> <button class="svelte-1vlt8au">Use default</button></div> <div class="folder-history svelte-1vlt8au"><div class="history-picker svelte-1vlt8au"><!> <select aria-label="Recent folders" aria-describedby="folder-history-hint" class="svelte-1vlt8au"><option disabled="">Recent folders</option><!></select> <!></div> <p id="folder-history-hint" class="svelte-1vlt8au">Choose a recent path, then Apply to switch folders.</p></div></details> <div class="filters svelte-1vlt8au"><input type="search" aria-label="Search models" placeholder="Search models or families" class="svelte-1vlt8au"/> <select aria-label="Task" class="svelte-1vlt8au"><option>All tasks</option><!></select> <select aria-label="Installation status" class="svelte-1vlt8au"><option>All models</option><option>Installed</option><option>Not installed</option></select></div> <div class="result-count svelte-1vlt8au"> </div> <!> <!></section>');function N9(a,t){Ri(t,!1);const i=K(),n=K();let s=Se(t,"groups",8),r=Se(t,"packageSizes",8),o=Se(t,"installJobs",8),l=Se(t,"packageSizeState",8),c=Se(t,"modelsFolderInput",12),d=Se(t,"modelsFolder",8),g=Se(t,"modelsFolderHistory",24,()=>[]),h=Se(t,"defaultModelsFolder",8),m=Se(t,"applyingModelsFolder",8),p=Se(t,"modelsFolderIsDefault",8),u=Se(t,"openFolderBrowser",8),f=Se(t,"applyModelsFolder",8),_=Se(t,"installPackage",8),v=Se(t,"removePackage",8),y=Se(t,"stopPackageDownload",8),S=Se(t,"cleanPartialDownload",8),q=Se(t,"openModel",8),M=Se(t,"taskLabel",8),P=Se(t,"formatBytes",8),B=Se(t,"installProgressLabel",8),A=Se(t,"workflowForEntry",8),j=Se(t,"workflows",8),G=K(""),C=K(""),R=K("all"),H=K({});const E=Oe=>!!Oe&&["queued","running","cancelling"].includes(Oe.state);function U(Oe,Ne,Ye,Ue){if(Ne[Oe.id]?.installed)return"Installed";const Ve=Ye[Oe.id];return E(Ve)?Ve.state==="queued"?"Queued":Ve.state==="cancelling"?"Stopping":"Downloading":Ve&&["failed","cancelled"].includes(Ve.state)?Ve.state==="failed"?"Download failed":"Incomplete":Ne[Oe.id]?"Not installed":Ue==="failed"?"Status unavailable":"Checking"}function N(Oe,Ne,Ye){const Ue=Oe.install_packages||[];return Ue.find(Ve=>Ve.id===Ne[Oe.id])||Ue.find(Ve=>Ye[Ve.id]?.installed)||Ue[0]}function L(Oe,Ne){return new Set(Oe.flatMap(Ye=>(Ye.install_packages||[]).filter(Ue=>Ne[Ue.id]?.installed).map(Ue=>Ue.id))).size}Ee(()=>(Y(s()),e(G),Y(r()),e(C),Y(A()),e(R)),()=>{b(i,s().map(Oe=>({...Oe,entries:Oe.entries.filter(Ne=>{const Ye=`${Oe.label} ${Ne.display_name} ${Ne.family}`.toLowerCase().includes(e(G).trim().toLowerCase()),Ue=L([Ne],r())>0,Ve=!!Ne.install_packages?.length&&Ne.install_packages.every(_t=>!!r()[_t.id]);return Ye&&(!e(C)||A()(Ne)===e(C))&&(e(R)==="all"||(e(R)==="installed"?Ue:Ve&&!Ue))})})).filter(Oe=>Oe.entries.length))}),Ee(()=>Y(o()),()=>{b(n,Object.values(o()).filter(E))}),bn(),en();var I=j9(),T=k(I),F=k(T),z=$(k(F)),D=k(z);w(z),w(F);var Q=$(F,2);{var X=Oe=>{var Ne=w9(),Ye=k(Ne);w(Ne),ne(()=>W(Ye,`${e(n),x(()=>e(n).length)??""} active downloads`)),J(Oe,Ne)};_e(Q,Oe=>{e(n),x(()=>e(n).length)&&Oe(X)})}w(T);var Z=$(T,2),ue=k(Z),de=$(k(ue)),ae=k(de,!0);w(de),w(ue);var V=$(ue,2),pe=k(V),Ce=$(k(pe));Dt(Ce),w(pe);var ce=$(pe,2),Te=$(ce,2),ye=$(Te,2);w(V);var Ie=$(V,2),Je=k(Ie),tt=k(Je);ZS(tt,{size:16,"aria-hidden":"true"});var De=$(tt,2),le=k(De);le.value=le.__value="";var xe=$(le);Mt(xe,1,g,Qt,(Oe,Ne)=>{var Ye=q0(),Ue=k(Ye,!0);w(Ye);var Ve={};ne(()=>{W(Ue,e(Ne)),Ve!==(Ve=e(Ne))&&(Ye.value=(Ye.__value=e(Ne))??"")}),J(Oe,Ye)}),w(De),De.value=De.__value="";var Ke=$(De,2);xm(Ke,{size:14,"aria-hidden":"true"}),w(Je),qt(2),w(Ie),w(Z);var fe=$(Z,2),we=k(fe);Dt(we);var me=$(we,2),be=k(me);be.value=be.__value="";var ke=$(be);Mt(ke,1,j,Qt,(Oe,Ne)=>{var Ye=q0(),Ue=k(Ye,!0);w(Ye);var Ve={};ne(()=>{W(Ue,(e(Ne),x(()=>e(Ne).label))),Ve!==(Ve=(e(Ne),x(()=>e(Ne).id)))&&(Ye.value=(Ye.__value=(e(Ne),x(()=>e(Ne).id)))??"")}),J(Oe,Ye)}),w(me);var $e=$(me,2),ge=k($e);ge.value=ge.__value="all";var Me=$(ge);Me.value=Me.__value="installed";var Fe=$(Me);Fe.value=Fe.__value="missing",w($e),w(fe);var qe=$(fe,2),rt=k(qe);w(qe);var Xe=$(qe,2);{var Re=Oe=>{var Ne=S9(),Ye=$(k(Ne));Mt(Ye,1,()=>e(n),Qt,(Ue,Ve)=>{const _t=Yt(()=>(Y(s()),e(Ve),x(()=>s().flatMap(Ut=>Ut.entries).find(Ut=>Ut.install_packages?.some(Rt=>Rt.id===e(Ve).id)))));var mt=x9(),ot=k(mt),it=k(ot,!0);w(ot);var nt=$(ot),gt=k(nt,!0);w(nt);var dt=$(nt);{var It=Ut=>{var Rt=k9();ne(()=>Rt.disabled=(e(Ve),x(()=>e(Ve).state==="cancelling"))),re("click",Rt,()=>y()(e(_t),e(Ve))),J(Ut,Rt)};_e(dt,Ut=>{e(_t)&&Ut(It)})}w(mt),ne(Ut=>{W(it,(Y(e(_t)),e(Ve),x(()=>e(_t)?.display_name||e(Ve).id))),W(gt,Ut)},[()=>(Y(B()),e(Ve),x(()=>B()(e(Ve))))]),J(Ue,mt)}),w(Ne),J(Oe,Ne)};_e(Xe,Oe=>{e(n),x(()=>e(n).length)&&Oe(Re)})}var Be=$(Xe,2);Mt(Be,1,()=>e(i),Oe=>Oe.family,(Oe,Ne)=>{var Ye=B9(),Ue=k(Ye);{var Ve=mt=>{var ot=T9(),it=k(ot),nt=k(it,!0);w(it);var gt=$(it);let dt;var It=k(gt,!0);w(gt),w(ot),ne((Ut,Rt)=>{W(nt,(e(Ne),x(()=>e(Ne).label))),dt=ba(gt,1,"svelte-1vlt8au",null,dt,Ut),W(It,Rt)},[()=>({installed:L(e(Ne).entries,r())>0}),()=>(e(Ne),Y(r()),x(()=>L(e(Ne).entries,r())?`${L(e(Ne).entries,r())} package${L(e(Ne).entries,r())===1?"":"s"} installed`:e(Ne).entries.every(Ut=>!Ut.install_packages?.length)?"Manual setup":e(Ne).entries.some(Ut=>Ut.install_packages?.some(Rt=>!r()[Rt.id]))?"Status pending":"Not installed"))]),J(mt,ot)};_e(Ue,mt=>{e(Ne),x(()=>e(Ne).entries.length>1)&&mt(Ve)})}var _t=$(Ue,2);Mt(_t,1,()=>(e(Ne),x(()=>e(Ne).entries)),mt=>mt.id,(mt,ot)=>{const it=Yt(()=>(e(ot),x(()=>new Set((e(ot).install_packages||[]).map(na=>na.id)).size))),nt=Yt(()=>(e(ot),e(H),Y(r()),x(()=>N(e(ot),e(H),r())))),gt=Yt(()=>(Y(e(nt)),Y(o()),x(()=>e(nt)?o()[e(nt).id]:void 0))),dt=Yt(()=>(Y(e(nt)),Y(r()),x(()=>e(nt)&&r()[e(nt).id]?.installed))),It=Yt(()=>(e(Ne),Y(o()),x(()=>e(Ne).entries.some(na=>na.install_packages?.some(Ta=>E(o()[Ta.id]))))));var Ut=R9(),Rt=k(Ut),ya=k(Rt),xa=k(ya,!0);w(ya);var pa=$(ya),et=k(pa,!0);w(pa);var pt=$(pa);{var ht=na=>{var Ta=$9(),Qa=k(Ta);w(Ta),ne(li=>W(Qa,`${li??""} of ${e(it)??""} packages installed`),[()=>(e(ot),Y(r()),x(()=>L([e(ot)],r())))]),J(na,Ta)},vt=oi(()=>(Y(e(it)),e(ot),Y(r()),x(()=>e(it)&&e(ot).install_packages?.every(na=>!!r()[na.id]))));_e(pt,na=>{e(vt)&&na(ht)})}w(Rt);var zt=$(Rt,2);{var Lt=na=>{var Ta=z9(),Qa=xt(Ta),li=k(Qa),hi=k(li);w(li);var fa=$(li);Mt(fa,5,()=>(e(ot),x(()=>e(ot).install_packages||[])),Qt,($a,qa)=>{var Qe=q0(),Ge=k(Qe);w(Qe);var bt={};ne(Vt=>{W(Ge,`${e(qa),x(()=>e(qa).label)??""} · ${Vt??""}`),bt!==(bt=(e(qa),x(()=>e(qa).id)))&&(Qe.value=(Qe.__value=(e(qa),x(()=>e(qa).id)))??"")},[()=>(e(qa),Y(r()),Y(o()),Y(l()),x(()=>U(e(qa),r(),o(),l())))]),J($a,Qe)}),w(fa);var ti;Vn(fa);var Di=$(fa),Ai=k(Di,!0);w(Di),w(Qa);var ui=$(Qa,2);let Ia;var Yi=k(ui),hn=k(Yi,!0);w(Yi);var un=$(Yi);{var rn=$a=>{var qa=q9();J($a,qa)};_e(un,$a=>{Y(e(dt)),Y(r()),Y(e(nt)),x(()=>e(dt)&&r()[e(nt).id]?.version_state==="update_available")&&$a(rn)})}w(ui);var He=$(ui,2),Gt=k(He),Pa=k(Gt,!0);w(Gt);var Sa=$(Gt,2);{var ua=$a=>{var qa=C9(),Qe=k(qa),Ge=$(Qe),bt=k(Ge);{var Vt=Ba=>{var ai=A9();ne(()=>ai.disabled=e(It)),re("click",ai,()=>_()(e(ot),e(nt),!0)),J(Ba,ai)};_e(bt,Ba=>{Y(r()),Y(e(nt)),x(()=>r()[e(nt).id]?.version_state==="update_available")&&Ba(Vt)})}var ea=$(bt);w(Ge),w(qa),ne(()=>{he(Qe,"aria-label",(e(ot),x(()=>`Manage ${e(ot).display_name}`))),ea.disabled=e(It)}),re("click",ea,()=>v()(e(ot),e(nt))),J($a,qa)};_e(Sa,$a=>{e(dt)&&$a(ua)})}w(He);var Ot=$(He,2);{var Ea=$a=>{var qa=M9();let Qe;var Ge=k(qa),bt=k(Ge,!0);w(Ge);var Vt=$(Ge),ea=$(Vt),Ba=k(ea,!0);w(ea);var ai=$(ea);{var Ti=Jt=>{var ci=G9();ne(()=>ci.disabled=(Y(e(gt)),x(()=>e(gt).state==="cancelling"))),re("click",ci,()=>y()(e(ot),e(gt))),J(Jt,ci)},Ht=oi(()=>(Y(e(gt)),x(()=>E(e(gt))))),Ga=Jt=>{var ci=F9();re("click",ci,()=>S()(e(ot),e(gt))),J(Jt,ci)};_e(ai,Jt=>{e(Ht)?Jt(Ti):Jt(Ga,-1)})}w(qa),ne(Jt=>{Qe=ba(qa,1,"job svelte-1vlt8au",null,Qe,{failed:e(gt).state==="failed"}),W(bt,Jt),Gi(Vt,(Y(e(gt)),x(()=>e(gt).progress_percent>=0?e(gt).progress_percent:void 0))),W(Ba,(Y(e(gt)),x(()=>e(gt).message)))},[()=>(Y(B()),Y(e(gt)),x(()=>B()(e(gt))))]),J($a,qa)},wa=oi(()=>(Y(e(gt)),x(()=>e(gt)&&!["complete","cleaned"].includes(e(gt).state))));_e(Ot,$a=>{e(wa)&&$a(Ea)})}ne(($a,qa,Qe)=>{he(li,"for",(e(ot),x(()=>`package-${e(ot).id}`))),W(hi,`Package (${e(it)??""})`),he(fa,"id",(e(ot),x(()=>`package-${e(ot).id}`))),ti!==(ti=(Y(e(nt)),x(()=>e(nt).id)))&&(fa.value=(fa.__value=(Y(e(nt)),x(()=>e(nt).id)))??"",An(fa,(Y(e(nt)),x(()=>e(nt).id)))),W(Ai,$a),Ia=ba(ui,1,"state svelte-1vlt8au",null,Ia,{installed:e(dt)}),W(hn,qa),Gt.disabled=Qe,W(Pa,e(dt)?"Open in Studio":"Download")},[()=>(Y(r()),Y(e(nt)),Y(P()),x(()=>r()[e(nt).id]?.size_bytes?`${P()(r()[e(nt).id].size_bytes)} download`:"Download size unavailable")),()=>(Y(e(dt)),Y(e(nt)),Y(r()),Y(o()),Y(l()),x(()=>e(dt)?"✓ Installed":U(e(nt),r(),o(),l()))),()=>(Y(e(dt)),Y(e(gt)),Y(r()),Y(e(nt)),x(()=>!e(dt)&&(E(e(gt))||!r()[e(nt).id])))]),re("change",fa,$a=>b(H,{...e(H),[e(ot).id]:$a.currentTarget.value})),re("click",Gt,()=>e(dt)?q()(e(ot),e(nt)):_()(e(ot),e(nt))),J(na,Ta)},ma=na=>{var Ta=U9(),Qa=$(xt(Ta)),li=k(Qa);{var hi=ti=>{var Di=E9();ne(()=>he(Di,"href",(e(ot),x(()=>e(ot).weights_url)))),J(ti,Di)};_e(li,ti=>{e(ot),x(()=>e(ot).weights_url)&&ti(hi)})}var fa=$(li);w(Qa),re("click",fa,()=>q()(e(ot))),J(na,Ta)};_e(zt,na=>{e(nt)?na(Lt):na(ma,-1)})}w(Ut),ne(na=>{W(xa,(e(ot),x(()=>e(ot).display_name))),W(et,na)},[()=>(Y(M()),e(ot),x(()=>M()(e(ot))))]),J(mt,Ut)}),w(Ye),J(Oe,Ye)},Oe=>{var Ne=P9(),Ye=$(k(Ne));w(Ne),re("click",Ye,()=>{b(G,""),b(C,""),b(R,"all")}),J(Oe,Ne)}),w(I),ne((Oe,Ne,Ye,Ue)=>{W(D,`${Oe??""} models · ${Ne??""} packages installed`),W(ae,d()||h()),he(Ce,"placeholder",h()),ce.disabled=m(),Te.disabled=Ye,ye.disabled=m()||p(),De.disabled=(Y(m()),Y(g()),x(()=>m()||!g().length)),W(rt,`${Ue??""} models · A–Z`)},[()=>(Y(s()),x(()=>s().reduce((Oe,Ne)=>Oe+Ne.entries.length,0))),()=>(Y(s()),Y(r()),x(()=>L(s().flatMap(Oe=>Oe.entries),r()))),()=>(Y(m()),Y(c()),Y(d()),x(()=>m()||!c().trim()||c().trim()===d())),()=>(e(i),x(()=>e(i).reduce((Oe,Ne)=>Oe+Ne.entries.length,0)))]),za(Ce,c),re("click",ce,()=>u()()),re("click",Te,()=>f()(!1)),re("click",ye,()=>f()(!0)),re("change",De,Oe=>{c(Oe.currentTarget.value),Oe.currentTarget.value=""}),za(we,()=>e(G),Oe=>b(G,Oe)),rs(me,()=>e(C),Oe=>b(C,Oe)),rs($e,()=>e(R),Oe=>b(R,Oe)),J(a,I),Bi()}const O9="audiocpp-native-studio",D9="audiocpp-native-apps",sl="voices",M2="model-presets";function z2(a){const t=a===sl;return new Promise((i,n)=>{const s=indexedDB.open(t?O9:D9,1);s.onupgradeneeded=()=>{for(const r of t?[sl]:[M2,"app-projects"])s.result.createObjectStore(r,{keyPath:"id"})},s.onsuccess=()=>i(s.result),s.onerror=()=>n(s.error||new Error("Could not open the library."))})}function rl(a,t,i){return z2(a).then(n=>new Promise((s,r)=>{const o=n.transaction(a,t),l=i(o.objectStore(a));l.onerror=()=>r(l.error||new Error("Library operation failed.")),o.oncomplete=()=>{n.close(),s(l.result)},o.onabort=()=>{n.close(),r(o.error||new Error("Library transaction was aborted."))},o.onerror=()=>{n.close(),r(o.error||new Error("Library transaction failed."))}}))}async function Ic(){return(await rl(sl,"readonly",t=>t.getAll())).sort((t,i)=>i.createdAt-t.createdAt)}function I9(a){return rl(sl,"readwrite",t=>t.put(a))}async function L9(){const a=await Ic(),t=await Promise.all(a.map(async({audio:i,...n})=>{const s=await new Promise((r,o)=>{const l=new FileReader;l.onload=()=>r(String(l.result).split(",")[1]),l.onerror=()=>o(l.error),l.readAsDataURL(i)});return{...n,audio:s,audioType:i.type}}));return new Blob([JSON.stringify({format:"audiocpp-voices",version:1,voices:t})],{type:"application/json"})}async function V9(a){const t=JSON.parse(await a.text());if(t?.format!=="audiocpp-voices"||t.version!==1||!Array.isArray(t.voices))throw new Error("Not a supported audio.cpp voice library backup.");const i=new Set,n=t.voices.map(r=>{if(!r||typeof r.id!="string"||!r.id||i.has(r.id)||typeof r.name!="string"||!r.name.trim()||typeof r.transcript!="string"||typeof r.createdAt!="number"||!Number.isFinite(r.createdAt)||typeof r.audio!="string"||!r.audio||typeof r.audioType!="string")throw new Error("The backup contains an invalid voice. No voices were imported.");i.add(r.id);const o=Uint8Array.from(atob(r.audio),l=>l.charCodeAt(0));return{id:r.id,name:r.name,transcript:r.transcript,createdAt:r.createdAt,audio:new Blob([o],{type:r.audioType})}}),s=await z2(sl);return await new Promise((r,o)=>{const l=s.transaction(sl,"readwrite");for(const c of n)l.objectStore(sl).put(c);l.oncomplete=()=>{s.close(),r()},l.onabort=()=>{s.close(),o(l.error||new Error("Voice import failed."))}}),n.length}function H9(a){return rl(sl,"readwrite",t=>t.delete(a))}async function W9(){return(await rl(M2,"readonly",t=>t.getAll())).filter(t=>["tts","clon","vdes"].includes(t.model.task))}async function Q9(a){return(await rl("app-projects","readonly",i=>i.getAll())).filter(i=>i.appId===a).sort((i,n)=>n.updatedAt-i.updatedAt)}function K9(a){return rl("app-projects","readwrite",t=>t.put(a))}function Y9(a){return rl("app-projects","readwrite",t=>t.delete(a))}function J9(a){return rl("app-projects","readonly",t=>t.get(a))}var X9=ie('<p role="status"> </p>'),Z9=ie('<p class="library-error svelte-19fh7lt" role="alert"> </p>'),eM=ie('<button><span class="voice-avatar svelte-19fh7lt"> </span><strong class="svelte-19fh7lt"> </strong> <span class="voice-excerpt svelte-19fh7lt"> </span></button>'),tM=ie('<button class="svelte-19fh7lt"><!>Add voice</button>'),aM=ie('<div class="voice-empty svelte-19fh7lt"><!><p> </p><!></div>'),iM=ie('<label class="svelte-19fh7lt">Name<input aria-label="Voice name" class="svelte-19fh7lt"/></label> <!> <label class="svelte-19fh7lt">Words spoken in the recording (optional)<textarea aria-label="Voice transcript" rows="5" class="svelte-19fh7lt"></textarea></label> <div class="tools svelte-19fh7lt"><button class="primary svelte-19fh7lt"><!> </button> <button class="icon svelte-19fh7lt" title="Download voice" aria-label="Download voice"><!></button> <button class="icon svelte-19fh7lt" title="Delete voice" aria-label="Delete voice"><!></button></div> <div class="voice-use svelte-19fh7lt"><button class="svelte-19fh7lt"><!>Use in Studio</button></div>',1),nM=ie('<div class="voice-empty svelte-19fh7lt"><!><p>Select a voice</p></div>'),sM=ie('<section class="voice-library-page svelte-19fh7lt"><header class="library-head svelte-19fh7lt"><div class="library-title svelte-19fh7lt"><!><h1 class="svelte-19fh7lt">Voices</h1><span class="svelte-19fh7lt"> </span></div> <div class="library-actions svelte-19fh7lt"><button class="svelte-19fh7lt"><!>Export library</button> <button class="svelte-19fh7lt"><!>Import library</button> <button class="svelte-19fh7lt"><!>Add voice</button></div> <input hidden="" type="file" accept="application/json,.json"/> <input hidden="" type="file" accept="audio/*"/></header> <p class="library-help svelte-19fh7lt">Export all saved voices, including recordings and transcripts, to transfer them to another browser or device. Backups stay on your device.</p> <!> <!> <div class="library-layout svelte-19fh7lt"><div class="voice-browser svelte-19fh7lt"><label class="voice-search svelte-19fh7lt"><!><input aria-label="Search voices" placeholder="Search voices" class="svelte-19fh7lt"/></label> <label class="voice-sort svelte-19fh7lt">Sort voices<select aria-label="Sort voices"><option>Name (A–Z)</option><option>Newest first</option></select></label> <div class="voice-grid svelte-19fh7lt"></div> <!></div> <aside class="voice-editor svelte-19fh7lt"><!></aside></div></section>');function rM(a,t){Ri(t,!1);const i=K(),n=K(),s=K();let r=Se(t,"ontext",8),o=Se(t,"onchange",8),l=K([]),c=K(),d=K(),g=K(""),h=K("name"),m=K(""),p=K(),u=K(!1),f=K(""),_=K();function v(){return!e(u)&&(!e(n)||confirm("Discard unsaved voice edits?"))}async function y(){b(l,await Ic())}function S($e){e(n)&&!confirm("Discard unsaved voice edits?")||(b(d,$e),b(c,{...$e}),b(f,""))}async function q($e){if(!(!$e||e(u))){if(e(n)&&!confirm("Discard unsaved voice edits?")){Ct(_,e(_).value="");return}b(u,!0),b(f,"");try{const ge=await mr($e);b(c,{id:crypto.randomUUID(),name:$e.name.replace(/\.[^.]+$/,""),transcript:"",audio:ge,createdAt:Date.now()}),b(d,void 0)}catch(ge){b(f,`Cannot import ${$e.name}: ${String(ge)}`)}finally{b(u,!1),Ct(_,e(_).value="")}}}async function M(){if(e(c)){if(!e(c).name.trim()){b(f,"Give this voice a name.");return}b(u,!0),b(f,"");try{const $e={...e(c),name:e(c).name.trim()};await I9($e),await y(),b(d,$e),b(c,{...$e}),await o()()}catch($e){b(f,String($e))}finally{b(u,!1)}}}async function P(){if(!(!e(c)||!confirm(`Delete voice "${e(c).name}"?`))){b(u,!0),b(f,"");try{e(d)&&await H9(e(c).id),b(c,void 0),b(d,void 0),await y(),await o()()}catch($e){b(f,String($e))}finally{b(u,!1)}}}async function B(){if(!(!e(c)||e(n)||e(u))){b(f,"");try{await r()(e(c))}catch($e){b(f,String($e))}}}function A(){if(!e(c))return;const $e=URL.createObjectURL(e(c).audio),ge=document.createElement("a");ge.href=$e,ge.download=`${e(c).name}.wav`,ge.click(),setTimeout(()=>URL.revokeObjectURL($e),1e3)}async function j(){b(u,!0),b(f,""),b(m,"");try{const $e=URL.createObjectURL(await L9()),ge=document.createElement("a");ge.href=$e,ge.download="audiocpp-voices.json",ge.click(),setTimeout(()=>URL.revokeObjectURL($e),1e3),b(m,`Exported ${e(l).length} saved voices. Unsaved edits are not included.`)}catch($e){b(f,String($e))}finally{b(u,!1)}}async function G($e){if(!(!$e||e(u))){if(e(n)&&!confirm("Discard unsaved voice edits?")||!confirm("Import this backup? Existing voices with matching IDs will be updated. Other saved voices will be kept.")){Ct(p,e(p).value="");return}b(u,!0),b(f,""),b(m,"");try{const ge=await V9($e);await y(),b(c,void 0),b(d,void 0),await o()(),b(m,`Imported ${ge} voices.`)}catch(ge){b(f,String(ge))}finally{b(u,!1),Ct(p,e(p).value="")}}}Qn(()=>{y().catch($e=>b(f,String($e)))}),Ee(()=>(e(l),e(g),e(h)),()=>{b(i,e(l).filter($e=>`${$e.name} ${$e.transcript}`.toLowerCase().includes(e(g).toLowerCase())).sort(($e,ge)=>e(h)==="name"?$e.name.localeCompare(ge.name,void 0,{numeric:!0,sensitivity:"base"})||$e.id.localeCompare(ge.id):ge.createdAt-$e.createdAt))}),Ee(()=>(e(c),e(d)),()=>{b(n,!!e(c)&&(!e(d)||e(c).name!==e(d).name||e(c).transcript!==e(d).transcript||e(c).audio!==e(d).audio))}),Ee(()=>e(c),()=>{b(s,e(c)?new File([e(c).audio],`${e(c).name}.wav`,{type:"audio/wav"}):null)}),bn();var C={canClose:v};en();var R=sM();re("beforeunload",Tc,$e=>{(e(n)||e(u))&&($e.preventDefault(),$e.returnValue="")});var H=k(R),E=k(H),U=k(E);Wl(U,{size:25});var N=$(U,2),L=k(N);w(N),w(E);var I=$(E,2),T=k(I),F=k(T);Uc(F,{size:16}),qt(),w(T);var z=$(T,2),D=k(z);Pc(D,{size:16}),qt(),w(z);var Q=$(z,2),X=k(Q);Pc(X,{size:16}),qt(),w(Q),w(I);var Z=$(I,2);qi(Z,$e=>b(p,$e),()=>e(p));var ue=$(Z,2);qi(ue,$e=>b(_,$e),()=>e(_)),w(H);var de=$(H,4);{var ae=$e=>{var ge=X9(),Me=k(ge,!0);w(ge),ne(()=>W(Me,e(m))),J($e,ge)};_e(de,$e=>{e(m)&&$e(ae)})}var V=$(de,2);{var pe=$e=>{var ge=Z9(),Me=k(ge,!0);w(ge),ne(()=>W(Me,e(f))),J($e,ge)};_e(V,$e=>{e(f)&&$e(pe)})}var Ce=$(V,2),ce=k(Ce),Te=k(ce),ye=k(Te);lb(ye,{size:16});var Ie=$(ye);Dt(Ie),w(Te);var Je=$(Te,2),tt=$(k(Je)),De=k(tt);De.value=De.__value="name";var le=$(De);le.value=le.__value="newest",w(tt),w(Je);var xe=$(Je,2);Mt(xe,5,()=>e(i),$e=>$e.id,($e,ge)=>{var Me=eM();let Fe;var qe=k(Me),rt=k(qe,!0);w(qe);var Xe=$(qe),Re=k(Xe,!0);w(Xe);var Be=$(Xe,2),Oe=k(Be,!0);w(Be),w(Me),ne(Ne=>{Me.disabled=e(u),Fe=ba(Me,1,"voice-tile svelte-19fh7lt",null,Fe,{active:e(c)?.id===e(ge).id}),W(rt,Ne),W(Re,(e(ge),x(()=>e(ge).name))),W(Oe,(e(ge),x(()=>e(ge).transcript||"No transcript")))},[()=>(e(ge),x(()=>e(ge).name.slice(0,1).toUpperCase()))]),re("click",Me,()=>S(e(ge))),J($e,Me)}),w(xe);var Ke=$(xe,2);{var fe=$e=>{var ge=aM(),Me=k(ge);Wl(Me,{size:36});var Fe=$(Me),qe=k(Fe,!0);w(Fe);var rt=$(Fe);{var Xe=Re=>{var Be=tM(),Oe=k(Be);Pc(Oe,{size:16}),qt(),w(Be),ne(()=>Be.disabled=e(u)),re("click",Be,()=>e(_).click()),J(Re,Be)};_e(rt,Re=>{e(g)||Re(Xe)})}w(ge),ne(()=>W(qe,e(g)?"No matching voices":"Your voice collection is empty")),J($e,ge)};_e(Ke,$e=>{e(i),x(()=>!e(i).length)&&$e(fe)})}w(ce);var we=$(ce,2),me=k(we);{var be=$e=>{var ge=iM(),Me=xt(ge),Fe=$(k(Me));Dt(Fe),w(Me);var qe=$(Me,2);os(qe,{get file(){return e(s)},label:"Voice preview"});var rt=$(qe,2),Xe=$(k(rt));nn(Xe),w(rt);var Re=$(rt,2),Be=k(Re),Oe=k(Be);aT(Oe,{size:16});var Ne=$(Oe,1,!0);w(Be);var Ye=$(Be,2),Ue=k(Ye);Uc(Ue,{size:16}),w(Ye);var Ve=$(Ye,2),_t=k(Ve);po(_t,{size:16}),w(Ve),w(Re);var mt=$(Re,2),ot=k(mt),it=k(ot);Wo(it,{size:16}),qt(),w(ot),w(mt),ne(()=>{Fe.disabled=e(u),Xe.disabled=e(u),Be.disabled=e(u)||!e(n),W(Ne,e(n)?"Save voice":"Saved"),Ye.disabled=e(u),Ve.disabled=e(u),ot.disabled=e(u)||e(n)}),za(Fe,()=>e(c).name,nt=>Ct(c,e(c).name=nt)),za(Xe,()=>e(c).transcript,nt=>Ct(c,e(c).transcript=nt)),re("click",Be,M),re("click",Ye,A),re("click",Ve,P),re("click",ot,B),J($e,ge)},ke=$e=>{var ge=nM(),Me=k(ge);uf(Me,{size:32}),qt(),w(ge),J($e,ge)};_e(me,$e=>{e(c)?$e(be):$e(ke,-1)})}return w(we),w(Ce),w(R),ne(()=>{W(L,`${e(l),x(()=>e(l).length)??""} saved · This browser`),T.disabled=(e(u),e(l),x(()=>e(u)||!e(l).length)),z.disabled=e(u),Q.disabled=e(u)}),re("click",T,j),re("click",z,()=>e(p).click()),re("click",Q,()=>e(_).click()),re("change",Z,$e=>G($e.currentTarget.files?.[0])),re("change",ue,$e=>q($e.currentTarget.files?.[0])),za(Ie,()=>e(g),$e=>b(g,$e)),rs(tt,()=>e(h),$e=>b(h,$e)),J(a,R),Il(t,"canClose",v),Bi(C)}async function su(){const[a,t]=await Promise.all([qm(),Nc()]),i=[],n=t.filter(s=>!a.ui_management||s.configured);for(const s of n){const r=Oi.find(o=>o.id===s.id)||Oi.find(o=>o.family===s.family&&o.task===s.task);i.push(A0({...r,...s,display_name:r?.display_name||s.id,load_options:void 0},void 0,s.path,s.session_options||{}))}if(a.ui_management){const s=await fb(),r=new Map(s.data.map(o=>[o.id,o]));for(const o of Oi.filter(l=>!n.some(c=>c.id===l.id))){const l=(o.install_packages||[]).map(c=>Pd(c,r.get(c.id))).filter(c=>r.get(c.id)?.installed&&c.load_target);for(const c of l)i.push(A0(o,c,Cm(c).model_path));if(!l.length){const c=t.find(d=>d.id===o.id&&d.loaded);c&&i.push(A0(o,void 0,c.path,c.session_options))}}}return i}function A0(a,t,i,n={...a.session_options,...t?.session_options}){const s=Yo[a.id]||Yo[a.family]||[],r=Object.fromEntries(s.filter(o=>o.scope!=="session"&&o.default!==void 0&&o.default!==""&&(a.request_options===void 0||a.request_options.includes(o.name))).map(o=>[o.name,o.default]));return{version:1,id:`model:${a.id}:${t?.id||"configured"}`,name:`${a.display_name}${t?` · ${t.label}`:""}`,createdAt:0,model:{id:a.id,display_name:a.display_name,family:t?.load_target?.family??a.family,task:a.task,mode:a.mode,path:i,package_id:t?.id,load_options:{...t?.load_options,...a.load_options},session_options:n},request:{seed:-1,...a.default_voice?{voice:a.default_voice}:{},options:{...a.default_options,...r}},chunking:{enabled:!0,characters:400}}}const C0=El(0);function oM(){return new Promise((a,t)=>{const i=indexedDB.open("audiocpp-tts-speakers",1);i.onupgradeneeded=()=>i.result.createObjectStore("speakers",{keyPath:"id"}),i.onsuccess=()=>a(i.result),i.onerror=()=>t(i.error)})}async function Df(a,t){const i=await oM();return new Promise((n,s)=>{const r=i.transaction("speakers",a),o=t(r.objectStore("speakers"));r.oncomplete=()=>{i.close(),n(o.result)},r.onabort=r.onerror=()=>{i.close(),s(r.error||new Error("Could not save the speaker library."))}})}async function G0(){const a=await W9();return(await Df("readwrite",i=>{const n=i.getAll();return n.onsuccess=()=>{const s=n.result,r=new Set(s.map(o=>o.id));for(const o of a){const l=`model-preset:${o.id}`;if(!["tts","clon","vdes"].includes(o.model.task)||r.has(l))continue;const c={id:l,name:o.name,configuration:structuredClone(o),voice:{kind:"builtin",id:o.request.voice||""}};i.add(c),s.push(c),r.add(l)}},n})).filter(i=>!("deleted"in i))}async function E2(a){const t=await Df("readwrite",i=>i.put(a));return C0.update(i=>i+1),t}async function lM(a){a.startsWith("model-preset:")?await Df("readwrite",t=>t.put({id:a,deleted:!0})):await Df("readwrite",t=>t.delete(a)),C0.update(t=>t+1)}function U2(){return{version:2,id:crypto.randomUUID(),title:"Untitled narration",updatedAt:Date.now(),speakers:[],defaultSpeakerId:"",pauseIncrement:.1,source:"",chunks:[],archivedChunks:[],reference:null,speech:null,transcription:null,enhancement:null,split:{method:"paragraph",characters:400},assembly:{pause:.25,sampleRate:24e3},finish:{normalize:!1,peakDb:-1,gainDb:0,format:"wav"},assembled:null,finished:null}}function ru(a,t=null){return{id:crypto.randomUUID(),text:a,speakerId:null,takes:[],takeId:"",override:t,pauseAfter:null}}function cs(a){return a.takes.find(t=>t.id===a.takeId)}function ol(a,t){const i=yo(a,t),n=i?.configuration||t.override||a.speech,s=i?.voice||t.voice;if(!n||s?.kind!=="builtin")return n;const r={...n.request};return s.id?r.voice=s.id:delete r.voice,{...n,request:r}}function If(a,t){const i=yo(a,t);return i?i.voice.kind==="reference"?i.voice.data:null:t.voice?.kind==="builtin"?null:t.voice?.kind==="reference"?t.voice.data:a.reference}function Hs(a,t){const i=ol(a,t),n=If(a,t);return JSON.stringify([t.text,i?.model,i?.request,n?.id,n?.transcript])}function Hn(a,t){const i=cs(t);return!!i&&i.signature===Hs(a,t)}function R2(a){return JSON.stringify([a.chunks.map(t=>{const i=[t.id,t.takeId,t.pauseAfter],n=cs(t)?.editing;return n&&(n.silences.length||n.removed?.length)&&(i.push(n.silences),n.removed?.length&&i.push(n.removed)),i}),a.assembly])}function ou(a){return a.chunks.length>0&&a.chunks.every(t=>Hn(a,t))&&a.assembled?.signature===R2(a)}function Lc(a){const{format:t,...i}=a.finish;return JSON.stringify([a.assembled?.signature,i,a.enhancement?.model,a.enhancement?.request])}function yo(a,t){const i=t?.speakerId||a.defaultSpeakerId;return a.speakers?.find(n=>n.id===i)}function ec(a){return a.voice.kind==="reference"?a.voice.data.name:a.voice.id.replace(/^[a-z]{2}_/,"").replace(/_/g," ")||"Model voice"}function B2(a){if(a.speakers){const n=a.version!==2;return a.version=2,n}a.version=2,a.speakers=[],a.defaultSpeakerId="";const t=new Map;function i(n,s,r){const o=JSON.stringify([n.model,n.request,s.kind==="builtin"?s:[s.data.id,s.data.transcript]]),l=t.get(o);if(l)return l;const c={id:crypto.randomUUID(),name:r,configuration:structuredClone(n),voice:structuredClone(s)};return a.speakers.push(c),t.set(o,c.id),c.id}a.speech&&(a.defaultSpeakerId=i(a.speech,a.reference?{kind:"reference",data:a.reference}:{kind:"builtin",id:a.speech.request.voice||""},"Main speaker"));for(const n of[...a.chunks,...a.archivedChunks]){if(!n.override&&!n.voice)continue;const s=n.override||a.speech;if(!s)continue;const r=n.voice||(a.reference?{kind:"reference",data:a.reference}:{kind:"builtin",id:s.request.voice||""});n.speakerId=i(s,r,`Speaker ${a.speakers.length+1}`)}return!0}class Vc{constructor(t,i){if(this.signal=i,t.version!==1)throw new Error("Unsupported model configuration version.");this.configuration=structuredClone(t);const n=t.request.seed;if(!Number.isInteger(n)||n<-1||n>4294967295)throw new Error("Seed must be -1 or an unsigned 32-bit integer.");this.resolvedSeed=n===-1?crypto.getRandomValues(new Uint32Array(1))[0]:n}signal;configuration;resolvedSeed;prepared=!1;async prepare(){if(this.prepared)return;this.signal.throwIfAborted();const t=await qm(),i=await Nc();this.signal.throwIfAborted();const n=this.configuration.model,s=i.find(r=>r.id===n.id);if(!t.ui_management||s?.configured){if(!s||s.family!==n.family||s.task!==n.task||s.mode!==n.mode)throw new Error("This model configuration does not match a model registered by this configured server.");if(s.path!==n.path||Object.entries(n.session_options).some(([r,o])=>s.session_options?.[r]!==o))throw new Error("The model configuration differs from the server configuration. Update the server configuration before using it.");if(Object.keys(n.load_options).length)throw new Error("Saved load options cannot be applied to a server-configured model. Use a model managed by the UI.")}else{if(!(await ub(n.path)).exists)throw new Error("The model is not installed at its saved path. Install it in Models first.");this.signal.throwIfAborted(),s?.loaded&&await mo(n.id,this.signal),this.signal.throwIfAborted(),await mf({id:n.id,family:n.family,task:n.task,mode:n.mode,path:n.path,load_options:n.load_options,session_options:n.session_options},this.signal)}this.signal.throwIfAborted(),this.prepared=!0}async run(t,i=0){await this.prepare(),this.signal.throwIfAborted();const{model:n,request:s}=this.configuration,{seed:r,...o}=s,l={...s.options};if(["tts","clon","vdes"].includes(n.task)){if(!t.text?.trim())throw new Error("Enter text to synthesize.");const h={...o,options:l,model:n.id,input:t.text,response_format:"wav",seed:(this.resolvedSeed+i)%4294967296};return t.voice_ref&&(delete h.voice,h.voice_ref=t.voice_ref),t.reference_text&&(h.reference_text=t.reference_text),{kind:"audio",blob:(await hf(h,this.signal)).blob}}if(n.task==="asr"){if(!t.audio)throw new Error("Choose audio to transcribe.");const h=["owsm","crisperwhisper"].includes(n.family)&&l.return_timestamps===!0;return{kind:"json",data:await _f({model:n.id,audio:t.audio,language:s.language,text:t.text||"",options:l},this.signal,h)}}const c=await Ql({model:n.id,request:{...o,...t,options:l,seed:(this.resolvedSeed+i)%4294967296}},this.signal);if(typeof c.audio!="string")throw new Error("The processing model did not return a single audio output.");const d=atob(c.audio),g=Uint8Array.from(d,h=>h.charCodeAt(0));return{kind:"audio",blob:new Blob([g],{type:"audio/wav"})}}}var F0=ie("<option> </option>"),cM=ie('<optgroup label="Installed models"></optgroup>'),dM=ie('<label class="svelte-99kkwg">Variation seed (-1 = random)<input type="number" min="-1" max="4294967295" class="svelte-99kkwg"/></label>'),uM=ie('<input type="checkbox" class="svelte-99kkwg"/>'),fM=ie('<select class="svelte-99kkwg"></select>'),pM=ie('<input type="number" class="svelte-99kkwg"/>'),mM=ie('<label class="svelte-99kkwg"> <!></label>'),gM=ie('<div class="choice-settings svelte-99kkwg"><!> <label class="svelte-99kkwg">Language<input placeholder="Model default" class="svelte-99kkwg"/></label> <!></div> <details class="svelte-99kkwg"><summary>Request options JSON</summary><textarea rows="4" class="svelte-99kkwg"></textarea><button class="svelte-99kkwg">Apply options</button></details>',1),hM=ie('<div class="choice-meta svelte-99kkwg"><span> </span><button type="button" class="svelte-99kkwg"> </button></div> <!>',1),_M=ie('<p class="empty-choice svelte-99kkwg">Install a compatible model from Models.</p>'),vM=ie('<p role="alert" class="svelte-99kkwg"> </p>'),bM=ie('<div class="model-choice svelte-99kkwg"><label class="svelte-99kkwg"> <select class="svelte-99kkwg"><option> </option><!><!></select></label> <!> <!></div>');function lu(a,t){Ri(t,!1);const i=K(),n=K(),s=K(),r=K(),o=K();let l=Se(t,"label",8),c=Se(t,"emptyLabel",8,"Choose an installed model"),d=Se(t,"inherit",8,null),g=Se(t,"choices",8),h=Se(t,"tasks",8),m=Se(t,"families",8,void 0),p=Se(t,"value",12),u=Se(t,"disabled",8,!1),f=Se(t,"settingsLabel",8,"More generation options"),_=Se(t,"onchange",8),v=K(""),y=K(""),S=K(!1);function q(X){p(X?structuredClone(e(i).find(Z=>Z.id===X)):null),b(y,""),b(S,!1),_()("model")}function M(X,Z){e(s)&&(p()||p(structuredClone(e(s))),p({...p(),request:{...p().request,[X]:Z}}),_()())}function P(X,Z){e(s)&&(p()||p(structuredClone(e(s))),p({...p(),request:{...p().request,options:{...e(s).request.options,[X]:Z}}}),_()())}Ee(()=>(Y(g()),Y(h()),Y(m())),()=>{b(i,g().filter(X=>h().includes(X.model.task)&&X.model.mode==="offline"&&(!m()||m().includes(X.model.family))))}),Ee(()=>e(i),()=>{b(n,e(i))}),Ee(()=>(Y(p()),Y(d())),()=>{b(s,p()||d())}),Ee(()=>(e(s),Oi),()=>{b(r,e(s)&&(Oi.find(X=>X.id===e(s).model.id)||Oi.find(X=>X.family===e(s).model.family&&X.task===e(s).model.task)))}),Ee(()=>(e(s),e(r)),()=>{b(o,e(s)?(Yo[e(s).model.id]||Yo[e(s).model.family]||[]).filter(X=>X.scope!=="session"&&["number","slider","bool","choice"].includes(X.type)&&(e(r)?.request_options===void 0||e(r).request_options.includes(X.name))):[])}),bn(),en();var B=bM(),A=k(B),j=k(A,!0),G=$(j),C=k(G),R=k(C,!0);w(C),C.value=C.__value="";var H=$(C);{var E=X=>{var Z=F0(),ue=k(Z);w(Z);var de={};ne(()=>{W(ue,`${Y(p()),x(()=>p().model.display_name)??""} · saved settings`),de!==(de=(Y(p()),x(()=>p().id)))&&(Z.value=(Z.__value=(Y(p()),x(()=>p().id)))??"")}),J(X,Z)},U=oi(()=>(Y(p()),e(i),x(()=>p()&&!e(i).some(X=>X.id===p().id))));_e(H,X=>{e(U)&&X(E)})}var N=$(H);{var L=X=>{var Z=cM();Mt(Z,5,()=>e(n),Qt,(ue,de)=>{var ae=F0(),V=k(ae,!0);w(ae);var pe={};ne(()=>{W(V,(e(de),x(()=>e(de).name))),pe!==(pe=(e(de),x(()=>e(de).id)))&&(ae.value=(ae.__value=(e(de),x(()=>e(de).id)))??"")}),J(ue,ae)}),w(Z),J(X,Z)};_e(N,X=>{e(n),x(()=>e(n).length)&&X(L)})}w(G);var I;Vn(G),w(A);var T=$(A,2);{var F=X=>{var Z=hM(),ue=xt(Z),de=k(ue),ae=k(de,!0);w(de);var V=$(de),pe=k(V,!0);w(V),w(ue);var Ce=$(ue,2);{var ce=Te=>{var ye=gM(),Ie=xt(ye),Je=k(Ie);{var tt=be=>{var ke=dM(),$e=$(k(ke));Dt($e),w(ke),ne(()=>{he($e,"aria-label",`${l()} seed`),Gi($e,(e(s),x(()=>e(s).request.seed))),$e.disabled=u()}),re("change",$e,ge=>M("seed",ge.currentTarget.valueAsNumber)),J(be,ke)},De=oi(()=>(e(s),x(()=>["tts","clon","vdes"].includes(e(s).model.task))));_e(Je,be=>{e(De)&&be(tt)})}var le=$(Je,2),xe=$(k(le));Dt(xe),w(le);var Ke=$(le,2);Mt(Ke,1,()=>e(o),Qt,(be,ke)=>{var $e=mM(),ge=k($e),Me=$(ge);{var Fe=Xe=>{var Re=uM();Dt(Re),ne(Be=>{Dl(Re,Be),Re.disabled=u()},[()=>(e(s),e(ke),x(()=>!!(e(s).request.options[e(ke).name]??e(ke).default)))]),re("change",Re,Be=>P(e(ke).name,Be.currentTarget.checked)),J(Xe,Re)},qe=Xe=>{var Re=fM();Mt(Re,5,()=>(e(ke),x(()=>e(ke).choices||[])),Qt,(Oe,Ne)=>{var Ye=F0(),Ue=k(Ye,!0);w(Ye);var Ve={};ne(()=>{W(Ue,e(Ne)),Ve!==(Ve=e(Ne))&&(Ye.value=(Ye.__value=e(Ne))??"")}),J(Oe,Ye)}),w(Re);var Be;Vn(Re),ne(Oe=>{Re.disabled=u(),Be!==(Be=Oe)&&(Re.value=(Re.__value=Oe)??"",An(Re,Oe))},[()=>(e(s),e(ke),x(()=>String(e(s).request.options[e(ke).name]??e(ke).default)))]),re("change",Re,Oe=>P(e(ke).name,Oe.currentTarget.value)),J(Xe,Re)},rt=Xe=>{var Re=pM();Dt(Re),ne(Be=>{he(Re,"min",(e(ke),x(()=>e(ke).minimum))),he(Re,"max",(e(ke),x(()=>e(ke).maximum))),he(Re,"step",(e(ke),x(()=>e(ke).step||"any"))),Gi(Re,Be),Re.disabled=u()},[()=>(e(s),e(ke),x(()=>Number(e(s).request.options[e(ke).name]??e(ke).default)))]),re("change",Re,Be=>P(e(ke).name,Be.currentTarget.valueAsNumber)),J(Xe,Re)};_e(Me,Xe=>{e(ke),x(()=>e(ke).type==="bool")?Xe(Fe):(e(ke),x(()=>e(ke).type==="choice")?Xe(qe,1):Xe(rt,-1))})}w($e),ne(()=>W(ge,`${e(ke),x(()=>e(ke).label||e(ke).name)??""} `)),J(be,$e)}),w(Ie);var fe=$(Ie,2),we=$(k(fe));nn(we);var me=$(we);w(fe),ne(()=>{he(xe,"aria-label",`${l()} language`),Gi(xe,(e(s),x(()=>e(s).request.language||""))),xe.disabled=u(),he(we,"aria-label",`${l()} options JSON`),we.disabled=u(),me.disabled=u()}),re("change",xe,be=>M("language",be.currentTarget.value)),za(we,()=>e(v),be=>b(v,be)),re("click",me,()=>{try{const be=JSON.parse(e(v));if(!be||typeof be!="object"||Array.isArray(be))throw new Error("Options must be a JSON object.");p({...e(s),request:{...e(s).request,options:be}}),b(y,""),_()()}catch(be){b(y,String(be))}}),re("toggle",fe,be=>{be.currentTarget.open&&b(v,JSON.stringify(e(s).request.options,null,2))}),J(Te,ye)};_e(Ce,Te=>{e(S)&&Te(ce)})}ne(Te=>{W(ae,(Y(p()),e(s),x(()=>p()?e(s).model.display_name:"Uses the project default"))),V.disabled=u(),he(V,"aria-expanded",e(S)),W(pe,Te)},[()=>(e(S),Y(f()),x(()=>e(S)?`Hide ${f().toLowerCase()}`:f()))]),re("click",V,()=>{b(S,!e(S)),b(v,JSON.stringify(e(s).request.options,null,2))}),J(X,Z)},z=X=>{var Z=_M();J(X,Z)};_e(T,X=>{e(s)?X(F):(e(i),x(()=>!e(i).length)&&X(z,1))})}var D=$(T,2);{var Q=X=>{var Z=vM(),ue=k(Z,!0);w(Z),ne(()=>W(ue,e(y))),J(X,Z)};_e(D,X=>{e(y)&&X(Q)})}w(B),ne(()=>{W(j,l()),he(G,"aria-label",l()),G.disabled=u(),W(R,c()),I!==(I=(Y(p()),x(()=>p()?.id||"")))&&(G.value=(G.__value=(Y(p()),x(()=>p()?.id||"")))??"",An(G,(Y(p()),x(()=>p()?.id||""))))}),re("change",G,X=>q(X.currentTarget.value)),J(a,B),Bi()}var Hc=ie("<option> </option>"),yM=ie('<optgroup label="Built-in voices"></optgroup>'),wM=ie('<optgroup label="Recorded voices from Lib"></optgroup>'),kM=ie('<p class="svelte-66z6ov">Choose a speech model first.</p>'),xM=ie('<p class="svelte-66z6ov"> </p>'),SM=ie('<label class="upload svelte-66z6ov">Upload a different voice recording<input type="file" accept="audio/*" class="svelte-66z6ov"/></label>'),TM=ie('<p role="alert" class="svelte-66z6ov">This model does not support recorded voices. Choose a cloning model or a built-in voice.</p>'),$M=ie('<!> <audio controls="" class="svelte-66z6ov"></audio> <label class="svelte-66z6ov">Words spoken in this recording<textarea rows="2" class="svelte-66z6ov"></textarea></label> <details class="svelte-66z6ov"><summary class="svelte-66z6ov">Fill transcript using a recognition model</summary><!><button type="button" class="svelte-66z6ov">Transcribe this recording</button></details>',1),qM=ie('<p role="alert" class="svelte-66z6ov"> </p>'),AM=ie(`<div class="voice-choice svelte-66z6ov"><label class="svelte-66z6ov"> <select class="svelte-66z6ov"><!><!><option>Use model's default voice</option><!><!><!><!></select></label> <!> <!> <!> <!></div>`);function CM(a,t){Ri(t,!1);const i=K(),n=K(),s=K(),r=K(),o=K();let l=Se(t,"label",8),c=Se(t,"configuration",8),d=Se(t,"assignment",8),g=Se(t,"inheritedReference",8,null),h=Se(t,"allowInherit",8,!1),m=Se(t,"voices",8),p=Se(t,"choices",8),u=Se(t,"transcription",12),f=Se(t,"disabled",8,!1),_=Se(t,"onchange",8),v=Se(t,"onbusy",8),y=Se(t,"ontranscribe",8),S=Se(t,"onconfiguration",8),q=K(""),M=K(""),P=K();Ns(()=>{e(M)&&URL.revokeObjectURL(e(M))});function B(De){if(b(q,""),De==="inherit"){_()(void 0);return}if(De.startsWith("builtin:")){_()({kind:"builtin",id:De.slice(8)});return}const le=m().find(xe=>xe.id===De);le&&_()({kind:"reference",data:{id:crypto.randomUUID(),name:le.name,audio:le.audio,transcript:le.transcript}})}async function A(De){if(De){v()(!0),b(q,"");try{const le=await mr(De);_()({kind:"reference",data:{id:crypto.randomUUID(),name:De.name,audio:le,transcript:""}})}catch(le){b(q,String(le))}finally{v()(!1)}}}Ee(()=>(Y(d()),Y(g())),()=>{b(r,d()?.kind==="reference"?d().data:d()?.kind==="builtin"?null:g())}),Ee(()=>(e(r),e(P),e(M)),()=>{e(r)?.audio!==e(P)&&(e(M)&&URL.revokeObjectURL(e(M)),b(P,e(r)?.audio),b(M,e(P)?URL.createObjectURL(e(P)):""))}),Ee(()=>(Y(c()),Oi),()=>{b(i,c()&&(Oi.find(De=>De.id===c().model.id)||Oi.find(De=>De.family===c().model.family&&De.task===c().model.task)))}),Ee(()=>e(i),()=>{b(n,e(i)?.builtin_voices||[])}),Ee(()=>(Y(c()),Ko),()=>{b(s,!!c()&&(c().model.task==="clon"||Ko[c().model.family]?.includes("speaker_reference")))}),Ee(()=>(Y(d()),Y(h()),Y(c())),()=>{b(o,d()?.kind==="reference"?"reference":d()?.kind==="builtin"?`builtin:${d().id}`:h()?"inherit":`builtin:${c()?.request.voice||""}`)}),bn(),en();var j=AM(),G=k(j),C=k(G),R=$(C),H=k(R);{var E=De=>{var le=Hc(),xe=k(le);w(le),le.value=le.__value="inherit",ne(()=>W(xe,`Use default · ${Y(g()),Y(c()),x(()=>g()?.name||c()?.request.voice||"model default")??""}`)),J(De,le)};_e(H,De=>{h()&&De(E)})}var U=$(H);{var N=De=>{var le=Hc(),xe=k(le);w(le),le.value=le.__value="reference",ne(()=>W(xe,`Recording: ${e(r),x(()=>e(r).name)??""}`)),J(De,le)};_e(U,De=>{e(r)&&De(N)})}var L=$(U);L.value=L.__value="builtin:";var I=$(L);{var T=De=>{var le=Hc(),xe=k(le);w(le);var Ke={};ne(()=>{W(xe,`${Y(c()),x(()=>c().request.voice)??""} · saved setting`),Ke!==(Ke=(Y(c()),x(()=>`builtin:${c().request.voice}`)))&&(le.value=(le.__value=(Y(c()),x(()=>`builtin:${c().request.voice}`)))??"")}),J(De,le)},F=oi(()=>(Y(c()),e(n),x(()=>c()?.request.voice&&!e(n).includes(c().request.voice))));_e(I,De=>{e(F)&&De(T)})}var z=$(I);{var D=De=>{var le=yM();Mt(le,5,()=>e(n),Qt,(xe,Ke)=>{var fe=Hc(),we=k(fe);w(fe);var me={};ne(be=>{W(we,`${be??""} · ${e(Ke)??""}`),me!==(me=`builtin:${e(Ke)}`)&&(fe.value=fe.__value=`builtin:${e(Ke)}`)},[()=>(e(Ke),x(()=>e(Ke).includes("_")?e(Ke).slice(e(Ke).indexOf("_")+1).replace(/_/g," "):e(Ke)))]),J(xe,fe)}),w(le),J(De,le)};_e(z,De=>{e(n),x(()=>e(n).length)&&De(D)})}var Q=$(z);{var X=De=>{var le=wM();Mt(le,5,m,Qt,(xe,Ke)=>{var fe=Hc(),we=k(fe,!0);w(fe);var me={};ne(()=>{W(we,(e(Ke),x(()=>e(Ke).name))),me!==(me=(e(Ke),x(()=>e(Ke).id)))&&(fe.value=(fe.__value=(e(Ke),x(()=>e(Ke).id)))??"")}),J(xe,fe)}),w(le),J(De,le)};_e(Q,De=>{e(s),Y(m()),x(()=>e(s)&&m().length)&&De(X)})}var Z=$(Q);{var ue=De=>{var le=Hc(),xe=k(le);w(le);var Ke={};ne(()=>{W(xe,`${Y(d()),x(()=>d().id)??""} · saved in project`),Ke!==(Ke=(Y(d()),x(()=>`builtin:${d().id}`)))&&(le.value=(le.__value=(Y(d()),x(()=>`builtin:${d().id}`)))??"")}),J(De,le)},de=oi(()=>(Y(d()),e(n),Y(c()),x(()=>d()?.kind==="builtin"&&d().id&&!e(n).includes(d().id)&&c()?.request.voice!==d().id)));_e(Z,De=>{e(de)&&De(ue)})}w(R);var ae;Vn(R),w(G);var V=$(G,2);{var pe=De=>{var le=kM();J(De,le)},Ce=De=>{var le=xM(),xe=k(le,!0);w(le),ne(()=>W(xe,(Y(d()),Y(c()),x(()=>d()?.kind==="builtin"?`Voice: ${d().id||"model default"}`:`Current voice: ${c().request.voice||"model default"}`)))),J(De,le)};_e(V,De=>{c()?e(r)||De(Ce,1):De(pe)})}var ce=$(V,2);{var Te=De=>{var le=SM(),xe=$(k(le));w(le),ne(()=>xe.disabled=f()),re("change",xe,Ke=>A(Ke.currentTarget.files?.[0])),J(De,le)};_e(ce,De=>{e(s)&&De(Te)})}var ye=$(ce,2);{var Ie=De=>{var le=$M(),xe=xt(le);{var Ke=ge=>{var Me=TM();J(ge,Me)};_e(xe,ge=>{e(s)||ge(Ke)})}var fe=$(xe,2),we=$(fe,2),me=$(k(we));nn(me),w(we);var be=$(we,2),ke=$(k(be));{let ge=Yt(()=>`${l()} recognition model`);lu(ke,{get label(){return e(ge)},get choices(){return p()},tasks:["asr"],get disabled(){return f()},get onchange(){return S()},get value(){return u()},set value(Me){u(Me)},$$legacy:!0})}var $e=$(ke);w(be),ne(()=>{he(fe,"src",e(M)),he(me,"aria-label",`${l()} transcript`),Gi(me,(e(r),x(()=>e(r).transcript))),me.disabled=f(),$e.disabled=f()||!u()}),re("play",fe,ge=>document.querySelectorAll(".tts-app audio").forEach(Me=>{Me!==ge.currentTarget&&Me.pause()})),re("input",me,ge=>_()({kind:"reference",data:{...e(r),transcript:ge.currentTarget.value}})),re("click",$e,function(...ge){y()?.apply(this,ge)}),J(De,le)};_e(ye,De=>{e(r)&&De(Ie)})}var Je=$(ye,2);{var tt=De=>{var le=qM(),xe=k(le,!0);w(le),ne(()=>W(xe,e(q))),J(De,le)};_e(Je,De=>{e(q)&&De(tt)})}w(j),ne(()=>{W(C,`${l()??""} `),he(R,"aria-label",l()),R.disabled=f()||!c(),ae!==(ae=e(o))&&(R.value=(R.__value=e(o))??"",An(R,e(o)))}),re("change",R,De=>B(De.currentTarget.value)),J(a,j),Bi()}var GM=ie("<option> </option>"),FM=ie('<label class="svelte-8dlqpu">Speaker preset<select aria-label="Speaker preset" class="svelte-8dlqpu"><option>Create a new speaker preset</option><!></select></label>'),MM=ie('<p role="alert" class="svelte-8dlqpu"> </p>'),zM=ie('<dialog aria-labelledby="speaker-dialog-title" class="svelte-8dlqpu"><header class="svelte-8dlqpu"><div class="speaker-symbol svelte-8dlqpu"><!></div> <div><h2 id="speaker-dialog-title" class="svelte-8dlqpu"> </h2> <p class="svelte-8dlqpu">A speaker preset saves the model, voice, and generation settings together.</p></div> <button class="close svelte-8dlqpu" aria-label="Close speaker editor"><!></button></header> <div class="dialog-body svelte-8dlqpu"><!> <label class="svelte-8dlqpu">Speaker name<input aria-label="Speaker name" placeholder="e.g. Alex, Host, or Storyteller" class="svelte-8dlqpu"/></label> <!> <!> <!></div> <footer class="svelte-8dlqpu"><span class="svelte-8dlqpu">Saved as a speaker preset for future projects.</span><button class="svelte-8dlqpu">Cancel</button><button class="save-speaker svelte-8dlqpu"> </button></footer></dialog>');function P2(a,t){Ri(t,!1);let i=Se(t,"initial",8,null),n=Se(t,"saved",24,()=>[]),s=Se(t,"choices",8),r=Se(t,"voices",8),o=Se(t,"number",8,1),l=Se(t,"presetEditor",8,!1),c=Se(t,"onsave",8),d=Se(t,"onclose",8),g=Se(t,"onbusy",8),h=K(i()?.name||`Speaker ${o()}`),m=K(i()?structuredClone(i().configuration):null),p=K(i()?structuredClone(i().voice):{kind:"builtin",id:""}),u=K(null),f=K(""),_=K(!1),v=K(""),y=K(),S=K(null);function q(pe){b(f,pe),b(v,"");const Ce=n().find(ce=>ce.id===pe);b(h,Ce?.name||`Speaker ${o()}`),b(m,Ce?structuredClone(Ce.configuration):null),b(p,Ce?structuredClone(Ce.voice):{kind:"builtin",id:""})}function M(pe){b(_,pe),g()(pe)}async function P(){if(e(p)?.kind!=="reference"||!e(u)||e(_))return;const pe=e(p).data;M(!0),b(v,""),b(S,new AbortController);try{const Ce=new Vc(e(u),e(S).signal),ce=await Os(pe.audio,e(S).signal),Te=await Ce.run({audio:ce});if(Te.kind!=="json"||typeof Te.data.text!="string")throw new Error("The model did not return a transcript.");b(p,{kind:"reference",data:{...pe,transcript:Te.data.text}})}catch(Ce){b(v,e(S)?.signal.aborted?"":String(Ce))}finally{b(S,null),M(!1)}}async function B(){if(!(!e(h).trim()||!e(m)||!e(p)||e(_))){M(!0),b(v,"");try{await c()({id:i()?.id||e(f)||crypto.randomUUID(),name:e(h).trim(),configuration:structuredClone(e(m)),voice:structuredClone(e(p))}),d()()}catch(pe){b(v,`Could not save speaker: ${String(pe)}`)}finally{M(!1)}}}Qn(()=>e(y).showModal()),Ns(()=>{e(S)?.abort(),g()(!1)}),en();var A=zM(),j=k(A),G=k(j),C=k(G);Bd(C,{size:20}),w(G);var R=$(G,2),H=k(R),E=k(H,!0);w(H),qt(2),w(R);var U=$(R,2),N=k(U);db(N,{size:18}),w(U),w(j);var L=$(j,2),I=k(L);{var T=pe=>{var Ce=FM(),ce=$(k(Ce)),Te=k(ce);Te.value=Te.__value="";var ye=$(Te);Mt(ye,1,n,Qt,(Je,tt)=>{var De=GM(),le=k(De,!0);w(De);var xe={};ne(()=>{W(le,(e(tt),x(()=>e(tt).name))),xe!==(xe=(e(tt),x(()=>e(tt).id)))&&(De.value=(De.__value=(e(tt),x(()=>e(tt).id)))??"")}),J(Je,De)}),w(ce);var Ie;Vn(ce),w(Ce),ne(()=>{ce.disabled=e(_),Ie!==(Ie=e(f))&&(ce.value=(ce.__value=e(f))??"",An(ce,e(f)))}),re("change",ce,Je=>q(Je.currentTarget.value)),J(pe,Ce)};_e(I,pe=>{Y(i()),Y(n()),x(()=>!i()&&n().length)&&pe(T)})}var F=$(I,2),z=$(k(F));Dt(z),w(F);var D=$(F,2);lu(D,{label:"Speech model",emptyLabel:"Choose an installed speech model",settingsLabel:"Model settings",get choices(){return s()},tasks:["tts","clon","vdes"],get disabled(){return e(_)},onchange:pe=>{pe==="model"&&b(p,{kind:"builtin",id:e(m)?.request.voice||""})},get value(){return e(m)},set value(pe){b(m,pe)},$$legacy:!0});var Q=$(D,2);CM(Q,{label:"Speaker voice",get configuration(){return e(m)},get assignment(){return e(p)},get voices(){return r()},get choices(){return s()},get disabled(){return e(_)},onchange:pe=>b(p,pe),onbusy:M,ontranscribe:P,onconfiguration:()=>{},get transcription(){return e(u)},set transcription(pe){b(u,pe)},$$legacy:!0});var X=$(Q,2);{var Z=pe=>{var Ce=MM(),ce=k(Ce,!0);w(Ce),ne(()=>W(ce,e(v))),J(pe,Ce)};_e(X,pe=>{e(v)&&pe(Z)})}w(L);var ue=$(L,2),de=$(k(ue)),ae=$(de),V=k(ae,!0);w(ae),w(ue),w(A),qi(A,pe=>b(y,pe),()=>e(y)),ne(pe=>{W(E,l()?i()?"Edit speaker preset":"New speaker preset":i()?"Edit speaker":"Add a speaker"),U.disabled=e(_),z.disabled=e(_),de.disabled=e(_),ae.disabled=pe,W(V,e(_)?"Working…":l()?"Save preset":i()?"Save speaker":"Add speaker")},[()=>(e(_),e(h),e(m),e(p),x(()=>e(_)||!e(h).trim()||!e(m)||!e(p)))]),re("click",U,function(...pe){d()?.apply(this,pe)}),za(z,()=>e(h),pe=>b(h,pe)),re("click",de,function(...pe){d()?.apply(this,pe)}),re("click",ae,B),re("cancel",A,pe=>{pe.target===pe.currentTarget&&(e(_)?(pe.preventDefault(),e(S)?.abort()):d()())}),J(a,A),Bi()}var EM=ie('<p role="alert" class="svelte-1rz8r6m"> </p>'),UM=ie('<p role="status" class="svelte-1rz8r6m">Loading speaker presets…</p>'),RM=ie('<button><span class="avatar svelte-1rz8r6m"><!></span><strong class="svelte-1rz8r6m"> </strong> <span class="svelte-1rz8r6m"> </span><small class="svelte-1rz8r6m"> </small></button>'),BM=ie('<div class="empty svelte-1rz8r6m"><!><h2 class="svelte-1rz8r6m"> </h2><p class="svelte-1rz8r6m"> </p></div>'),PM=ie('<h2 class="svelte-1rz8r6m"> </h2> <dl class="svelte-1rz8r6m"><dt class="svelte-1rz8r6m">Model</dt><dd class="svelte-1rz8r6m"> </dd><dt class="svelte-1rz8r6m">Voice</dt><dd class="svelte-1rz8r6m"> </dd><dt class="svelte-1rz8r6m">Voice source</dt><dd class="svelte-1rz8r6m"> </dd><dt class="svelte-1rz8r6m">Seed</dt><dd class="svelte-1rz8r6m"> </dd><dt class="svelte-1rz8r6m">Language</dt><dd class="svelte-1rz8r6m"> </dd></dl> <div class="tools svelte-1rz8r6m"><button class="svelte-1rz8r6m"><!>Edit speaker</button><button class="svelte-1rz8r6m"><!>Duplicate</button><button class="delete svelte-1rz8r6m"><!>Delete preset</button></div>',1),jM=ie('<div class="empty svelte-1rz8r6m"><!><p class="svelte-1rz8r6m">Select a speaker to see its settings.</p></div>'),NM=ie('<div class="speaker-layout svelte-1rz8r6m"><div class="browser svelte-1rz8r6m"><label class="search svelte-1rz8r6m"><!><input aria-label="Search speaker presets" placeholder="Search speakers, voices, or models" class="svelte-1rz8r6m"/></label> <div class="speaker-grid svelte-1rz8r6m"></div> <!></div> <aside aria-label="Speaker preset details" class="svelte-1rz8r6m"><!></aside></div>'),OM=ie('<section class="speaker-library" aria-label="Speaker preset library"><header class="svelte-1rz8r6m"><div><h1 class="svelte-1rz8r6m">Speakers</h1><p class="svelte-1rz8r6m"> </p></div> <button class="primary svelte-1rz8r6m"><!>New speaker preset</button></header> <p class="purpose svelte-1rz8r6m">Manage speaker presets here, then choose them in Text to speech. Existing projects keep their own speaker settings.</p> <!> <!></section> <!>',1);function DM(a,t){Ri(t,!1);const i=K(),n=K();let s=K([]),r=K([]),o=K([]),l=K(""),c=K(""),d=K(null),g=K(!1),h=K(!1),m=K(!0),p=K("");function u(){return!e(h)&&!e(g)}async function f(){b(s,await G0())}function _(F){b(d,F?structuredClone(F):null),b(g,!0),b(p,"")}async function v(F){await E2(F),await f(),b(c,F.id),b(l,"")}async function y(){if(!(!e(n)||e(h))){b(h,!0),b(p,"");try{const F=`${e(n).name} copy`;let z=F;for(let D=2;e(s).some(Q=>Q.name===z);D++)z=`${F} ${D}`;await v({...structuredClone(e(n)),id:crypto.randomUUID(),name:z})}catch(F){b(p,`Could not duplicate speaker: ${String(F)}`)}finally{b(h,!1)}}}async function S(){if(!(!e(n)||e(h)||!confirm(`Delete speaker preset "${e(n).name}"? Existing projects keep their own copy.`))){b(h,!0),b(p,"");try{await lM(e(n).id),await f(),b(c,"")}catch(F){b(p,`Could not delete speaker: ${String(F)}`)}finally{b(h,!1)}}}Qn(async()=>{try{const[F,z,D]=await Promise.all([G0(),su().catch(Q=>(b(p,`Models are unavailable. Saved speakers can still be edited. ${String(Q)}`),[])),Ic()]);b(s,F),b(r,z),b(o,D)}catch(F){b(p,`Could not open speaker presets: ${String(F)}`)}finally{b(m,!1)}}),Ee(()=>(e(s),e(l)),()=>{b(i,e(s).filter(F=>`${F.name} ${F.configuration.model.display_name} ${ec(F)}`.toLowerCase().includes(e(l).toLowerCase())))}),Ee(()=>(e(s),e(c)),()=>{b(n,e(s).find(F=>F.id===e(c)))}),bn();var q={canClose:u};en();var M=OM(),P=xt(M),B=k(P),A=k(B),j=$(k(A)),G=k(j);w(j),w(A);var C=$(A,2),R=k(C);Pr(R,{size:16}),qt(),w(C),w(B);var H=$(B,4);{var E=F=>{var z=EM(),D=k(z,!0);w(z),ne(()=>W(D,e(p))),J(F,z)};_e(H,F=>{e(p)&&F(E)})}var U=$(H,2);{var N=F=>{var z=UM();J(F,z)},L=F=>{var z=NM(),D=k(z),Q=k(D),X=k(Q);lb(X,{size:16});var Z=$(X);Dt(Z),w(Q);var ue=$(Q,2);Mt(ue,5,()=>e(i),Te=>Te.id,(Te,ye)=>{var Ie=RM();let Je;var tt=k(Ie),De=k(tt);Bd(De,{size:20}),w(tt);var le=$(tt),xe=k(le,!0);w(le);var Ke=$(le,2),fe=k(Ke,!0);w(Ke);var we=$(Ke),me=k(we,!0);w(we),w(Ie),ne(be=>{Je=ba(Ie,1,"speaker-tile svelte-1rz8r6m",null,Je,{active:e(c)===e(ye).id}),he(Ie,"aria-pressed",(e(c),e(ye),x(()=>e(c)===e(ye).id))),he(Ie,"aria-label",(e(ye),x(()=>`Select ${e(ye).name}`))),Ie.disabled=e(h),W(xe,(e(ye),x(()=>e(ye).name))),W(fe,be),W(me,(e(ye),x(()=>e(ye).configuration.model.display_name)))},[()=>(Y(ec),e(ye),x(()=>ec(e(ye))))]),re("click",Ie,()=>b(c,e(ye).id)),J(Te,Ie)}),w(ue);var de=$(ue,2);{var ae=Te=>{var ye=BM(),Ie=k(ye);Bd(Ie,{size:32});var Je=$(Ie),tt=k(Je,!0);w(Je);var De=$(Je),le=k(De,!0);w(De),w(ye),ne(()=>{W(tt,e(l)?"No matching speakers":"Create your first speaker preset"),W(le,e(l)?"Try a different name, voice, or model.":"Save a model, voice, and generation settings once, then reuse them in your TTS projects.")}),J(Te,ye)};_e(de,Te=>{e(i),x(()=>!e(i).length)&&Te(ae)})}w(D);var V=$(D,2),pe=k(V);{var Ce=Te=>{var ye=PM(),Ie=xt(ye),Je=k(Ie,!0);w(Ie);var tt=$(Ie,2),De=$(k(tt)),le=k(De,!0);w(De);var xe=$(De,2),Ke=k(xe,!0);w(xe);var fe=$(xe,2),we=k(fe,!0);w(fe);var me=$(fe,2),be=k(me,!0);w(me);var ke=$(me,2),$e=k(ke,!0);w(ke),w(tt);var ge=$(tt,2),Me=k(ge),Fe=k(Me);rb(Fe,{size:15}),qt(),w(Me);var qe=$(Me),rt=k(qe);$S(rt,{size:15}),qt(),w(qe);var Xe=$(qe),Re=k(Xe);po(Re,{size:15}),qt(),w(Xe),w(ge),ne(Be=>{W(Je,(e(n),x(()=>e(n).name))),W(le,(e(n),x(()=>e(n).configuration.model.display_name))),W(Ke,Be),W(we,(e(n),x(()=>e(n).voice.kind==="reference"?"Reference recording":"Built-in voice"))),W(be,(e(n),x(()=>e(n).configuration.request.seed===-1?"Random":e(n).configuration.request.seed))),W($e,(e(n),x(()=>e(n).configuration.request.language||"Model default"))),Me.disabled=e(h),qe.disabled=e(h),Xe.disabled=e(h)},[()=>(Y(ec),e(n),x(()=>ec(e(n))))]),re("click",Me,()=>_(e(n))),re("click",qe,y),re("click",Xe,S),J(Te,ye)},ce=Te=>{var ye=jM(),Ie=k(ye);Bd(Ie,{size:28}),qt(),w(ye),J(Te,ye)};_e(pe,Te=>{e(n)?Te(Ce):Te(ce,-1)})}w(V),w(z),za(Z,()=>e(l),Te=>b(l,Te)),J(F,z)};_e(U,F=>{e(m)?F(N):F(L,-1)})}w(P);var I=$(P,2);{var T=F=>{{let z=Yt(()=>(e(s),x(()=>e(s).length+1)));P2(F,{get initial(){return e(d)},get choices(){return e(r)},get voices(){return e(o)},get number(){return e(z)},onsave:v,onclose:()=>b(g,!1),onbusy:D=>b(h,D),presetEditor:!0})}};_e(I,F=>{e(g)&&F(T)})}return ne(()=>{W(G,`${e(s),x(()=>e(s).length)??""} saved · Model, voice, and settings together`),C.disabled=e(h)||e(m)}),re("click",C,()=>_(null)),J(a,M),Il(t,"canClose",u),Bi(q)}var IM=ie('<nav class="library-tabs svelte-inevtl" aria-label="Library collections"><button><!>Voices</button> <button><!>Speakers</button></nav> <!>',1);function LM(a,t){Ri(t,!1);let i=Se(t,"onchange",8),n=Se(t,"ontext",8),s=K("voices"),r=K(null),o=K(null);function l(){return e(s)==="voices"?e(r)?.canClose()??!0:e(o)?.canClose()??!0}function c(M){e(s)!==M&&l()&&b(s,M)}var d={canClose:l},g=IM(),h=xt(g),m=k(h);let p;var u=k(m);Wl(u,{size:16}),qt(),w(m);var f=$(m,2);let _;var v=k(f);Bd(v,{size:16}),qt(),w(f),w(h);var y=$(h,2);{var S=M=>{qi(rM(M,{get onchange(){return i()},get ontext(){return n()},$$legacy:!0}),P=>b(r,P),()=>e(r))},q=M=>{qi(DM(M,{$$legacy:!0}),P=>b(o,P),()=>e(o))};_e(y,M=>{e(s)==="voices"?M(S):M(q,-1)})}return ne(()=>{he(m,"aria-pressed",e(s)==="voices"),p=ba(m,1,"svelte-inevtl",null,p,{active:e(s)==="voices"}),he(f,"aria-pressed",e(s)==="speakers"),_=ba(f,1,"svelte-inevtl",null,_,{active:e(s)==="speakers"})}),re("click",m,()=>c("voices")),re("click",f,()=>c("speakers")),J(a,g),Il(t,"canClose",l),Bi(d)}var Lf=ie("<button> </button>"),cu=ie("<option> </option>"),VM=ie("<div><!></div>"),HM=ie("<button> <small> </small></button>"),WM=ie("<optgroup></optgroup>"),QM=ie('<label for="utility-weights"> </label> <input id="utility-weights"/> <a class="utility-weights-link" target="_blank" rel="noreferrer"> </a>',1),KM=ie('<div class="studio-package-buttons"></div>'),YM=ie('<div class="hint"> </div>'),JM=ie('<button type="button" class="settings-import"><!> </button>'),XM=ie('<section class="studio-input-section"><label class="studio-section-label" for="text"><!> </label> <textarea id="text"></textarea></section>'),ZM=ie('<div class="long-text-row"><label class="toggle"><input type="checkbox"/> <span></span> </label> <div><label for="chunk-budget"> </label> <input id="chunk-budget" type="number" min="40" max="10000"/></div></div>'),ez=ie('<label for="lyrics"> <span> </span></label> <textarea id="lyrics" rows="3" placeholder="[Verse]…"></textarea>',1),tz=ie('<label class="studio-section-label" for="context"><!> <span> </span></label> <textarea id="context" rows="2"></textarea>',1),az=ie('<label class="studio-section-label" for="instructions"><!> </label> <textarea id="instructions" rows="2"></textarea>',1),du=ie("<span> </span>"),iz=ie('<input id="language" placeholder="English"/>'),nz=ie('<select id="language"></select>'),sz=ie('<input id="language" placeholder="auto"/>'),rz=ie('<div><label for="language"> <!></label> <!></div>'),oz=ie('<div><label for="seed"> <span> </span></label> <input id="seed" type="number" min="-1" max="4294967295" step="1"/></div>'),lz=ie('<input id="tokens" type="number"/>'),cz=ie('<input id="tokens" type="number" min="1"/>'),dz=ie('<div><label for="tokens"> </label> <!></div>'),j2=ie("<small> </small>"),uz=ie('<div><label for="duration"> <!></label> <input id="duration" type="number" step="0.1"/> <!></div>'),fz=ie('<button class="danger" type="button"><!> </button> <span class="recording-dot"> </span>',1),pz=ie('<button type="button"><!> </button> <button class="studio-icon-button" type="button"><!></button> <!>',1),mz=ie('<button class="danger" type="button"> </button>'),gz=ie('<button type="button"> </button>'),hz=ie('<div class="live-card"><div><strong> </strong> <small> </small></div> <!></div>'),_z=ie('<section class="studio-input-section"><label class="studio-section-label" for="source"><!> <span> </span></label> <input id="source" class="file file-native" type="file" accept="audio/*"/> <label class="file-picker" for="source"><!><strong> </strong><span> </span></label> <div class="media-actions"><!></div> <!> <!></section>'),vz=ie('<section class="studio-input-section"><label class="studio-section-label" for="video"><!>Video <span> </span></label> <input id="video" class="file file-native" type="file" accept="video/*"/> <label class="file-picker" for="video"><strong> </strong><span> </span></label> <div class="media-actions"><button type="button"> </button> <!></div> <!></section>'),bz=ie('<div class="quick-voice-note"> </div>'),N2=ie("<!> <!>",1),yz=ie('<div><label for="reference-file"> <span>.txt</span></label> <input id="reference-file" class="file file-native" type="file" accept=".txt,text/plain"/> <label class="file-picker" for="reference-file"><!><strong> </strong><span> </span></label></div>'),wz=ie('<div class="reference-input-grid"><div><label for="voice"> <span> </span></label> <input id="voice" class="file file-native" type="file" accept="audio/*"/> <label class="file-picker" for="voice"><!><strong> </strong><span> </span></label></div> <!></div>'),kz=ie('<button class="danger" type="button"> </button> <span class="recording-dot"> </span>',1),xz=ie('<button type="button"><!> </button> <button type="button"> </button> <!>',1),Sz=ie('<div class="media-actions"><!></div>'),Tz=ie('<label for="reference"> <span> </span></label> <textarea id="reference" rows="2"></textarea>',1),$z=ie('<section class="studio-input-section studio-voice-section"><h3 class="studio-section-label"><!> </h3> <!> <!> <!> <!> <!></section>'),qz=ie('<div><label> </label> <input class="file file-native" type="file" accept="audio/*"/> <label class="file-picker"><strong> </strong> <span> </span></label> <div class="media-actions"><button type="button"> </button></div> <!></div>'),Az=ie('<label for="dialogue-reference"> </label> <textarea id="dialogue-reference" rows="2"></textarea>',1),Cz=ie('<div class="vibevoice-speakers"><div class="studio-section-label"><!> <span> </span></div> <div class="reference-input-grid"></div> <!></div>'),Gz=ie('<label class="toggle"><input type="checkbox"/> <span></span> </label>'),Fz=ie("<select></select>"),Mz=ie('<div class="range"><input type="range"/> <output> </output></div>'),zz=ie("<input/>"),Ez=ie("<div><label> </label> <!> <!></div>"),Uz=ie('<details class="studio-options"><summary><!> <span> </span></summary> <div class="parameter-grid"></div></details>'),Rz=ie('<details class="studio-options"><summary><!> <span>JSON</span></summary> <textarea class="code" rows="3"></textarea></details>'),Bz=ie('<strong style="font-variant-numeric: tabular-nums"> </strong>'),Pz=ie('<div class="section-title"><div><span> </span><h2> </h2></div> <div class="studio-request-actions"><span class="task-chip"> </span> <!></div></div> <input type="file" accept=".json,application/json" hidden=""/> <!> <!> <!> <!> <!> <div class="field-grid"><!> <!> <!> <!></div> <!> <!> <!> <!> <!> <!> <!> <div class="runbar"><button class="run"><!><span> </span> <kbd>Ctrl ↵</kbd></button> <button><!> </button> <div><!> </div></div>',1),jz=ie('<div class="section-title"><div><span> </span><h2> </h2></div></div> <div class="empty-output"><p> </p></div>',1),Nz=ie('<a class="settings-download"> </a>'),Oz=ie('<span class="task-chip"> </span>'),Dz=ie('<article><div><strong> </strong><a> </a></div> <audio controls=""></audio></article>'),O2=ie('<div class="audio-list"></div>'),Iz=ie("<article><div><strong> </strong><a> </a></div> <!></article>"),Lz=ie('<div class="empty-output"><div class="wave">∿</div><p> </p></div>'),Vz=ie('<textarea class="transcript" readonly="" rows="7"></textarea>'),Hz=ie('<details class="studio-response-details"><summary>Response JSON</summary><pre> </pre></details>'),Wz=ie('<div class="history-error" role="alert"> </div>'),Qz=ie('<li><button type="button" class="history-select"><strong> </strong> <small> <!></small></button> <button type="button"> </button></li>'),Kz=ie('<details class="generation-history"><summary> <span> </span></summary> <!> <div class="history-actions"><button type="button"> </button></div> <ul></ul></details>'),Yz=ie('<nav class="workflow-tabs"></nav> <section class="hero studio-heading"><div><p class="eyebrow"> </p> <h1> </h1> <p> </p></div> <span> </span></section> <div class="studio-grid"><aside class="model-rail studio-model-toolbar"><div class="studio-model-picker"><label for="model"> </label> <select id="model"><option> </option><!></select> <div class="path-state"><span> </span> <span> </span></div></div> <div class="studio-model-packages"><!> <!></div> <!></aside> <section class="controls"><!></section> <section class="output"><div class="section-title"><div><span> </span><h2> </h2></div> <!> <!></div> <!> <!> <!> <!> <!> <!></section></div>',1),Jz=ie('<section class="page-head"><p class="eyebrow"> </p><h1> </h1><p> </p></section> <section class="panel log-panel"><div class="runtime-cards"><div><span> </span><strong> </strong></div> <div><span> </span><strong> </strong></div> <div><span> </span><strong> </strong></div> <div><span> </span><strong> </strong></div></div> <p class="hint"> </p> <pre class="logs"> </pre></section>',1),Xz=ie('<div class="folder-browser-roots"></div>'),Zz=ie('<div class="folder-browser-error"> </div>'),D2=ie('<div class="folder-browser-empty"> </div>'),eE=ie('<button><span class="folder-icon">></span><span> </span></button>'),tE=ie('<div class="folder-browser-list"></div>'),aE=ie('<div class="folder-browser-backdrop"><div class="panel folder-browser-dialog" role="dialog" aria-modal="true" aria-labelledby="folder-browser-title"><header><div><span> </span><h2 id="folder-browser-title"> </h2></div> <button> </button></header> <div class="folder-browser-location"> </div> <!> <div class="folder-browser-toolbar"><button> </button> <button> </button></div> <!> <footer><button> </button> <button class="primary"> </button></footer></div></div>'),iE=ie('<header class="topbar"><div class="brand"><div class="mark">A</div> <div><strong>audio.cpp</strong> <span> </span></div></div> <nav><button> </button> <button> </button> <button> </button> <button> </button> <!> <button> </button> <button> </button></nav> <label class="language-picker"><span> </span> <select></select></label> <label class="theme-picker"><span> </span> <select></select></label> <div><i></i> </div></header> <main><!> <!></main> <!> <footer><span>audio.cpp native WebUI</span><span> </span></footer>',1);function nE(a,t){Ri(t,!1);const i=()=>Bu(Nf,"$uiConfiguration",n),[n,s]=kp(),r=K(),o=K(),l=K(),c=K(),d=K(),g=K(),h=K(),m=K(),p=K(),u=K(),f=K(),_=K(),v=K(),y=K(),S=K(),q=K(),M=K(),P=K(),B=K(),A=K(),j=K(),G=K(),C=K(),R=K(),H=K(),E=K(),U=K(),N=K(),L=K(),I=K(),T=K(),F=K(),z=K(),D=K();let Q=K("studio"),X=K(null),Z=K(null),ue=K(!1),de=K(null),ae=K(Oi[0]?.id||""),V=K(Oi[0]),pe=K(e(V)?.path||""),Ce=K(!1),ce=K([]),Te=K(null),ye=K(null),Ie=K(!1),Je=K(!1),tt=K(!1),De=K(!1),le=K("Ready"),xe=K(""),Ke=K(""),fe=K(""),we=K(""),me=K("English"),be=K(""),ke=K(""),$e=K(""),ge=K(""),Me=K(30),Fe=K(1234),qe=K(1024),rt=K(0),Xe=K(null),Re=K(null),Be=K(null),Oe=K([null,null,null,null]),Ne=K(null),Ye=K(null),Ue=K(null),Ve=K([null,null,null,null]),_t=K(null),mt=K(null),ot=K("{}"),it=K({}),nt=K([]),gt=K([]),dt=K([]),It=K(""),Ut=K(""),Rt=K(null),ya=K([]),xa=K(""),pa=K(!1),et=1,pt=K(null),ht=K(""),vt=K(0),zt=null,Lt=K(null),ma={},na={},Ta=new Set,Qa=!1,li=K([]),hi=null,fa=null,ti=K(!0),Di=K(Em(e(V)?.family||"")),Ai=K([]),ui=K(""),Ia=K(null),Yi=K(null),hn=null,un=null,rn=null,He=K(!1),Gt=!1,Pa=Promise.resolve(),Sa=0,ua=K({}),Ot=K(""),Ea=K(""),wa=K([]),$a=K(""),qa=K(!0),Qe=K(!1),Ge=K(!1),bt=K(!1),Vt=K(""),ea=K(null),Ba=K(null),ai=null,Ti=K({}),Ht=K({}),Ga=K("idle"),Jt=null,ci=!1,Hi={},Ka=K([]),ca=K([]),Bt=K(""),ve=K("en"),Le=K("mocha"),kt=!0,jt=null,ja=null,ee=K(xb(e(ve)));const Ua={demo_1_man:"demo_1_man",demo_2_man:"demo_2_man",demo_3_woman:"demo_3_woman",demo_4_woman:"demo_4_woman"},Ii=new Set(["ming3_tts","ming3_audio","latentsync","xtts_v2","kugelaudio","crisperwhisper","index_echo","audio_flamingo","owsm","owsm_ctc","reuse","sidon","smart_turn","maya1","gigaam_asr","samsone","sam_audio","tone_color_vc","moss_ttsd","moss_voicegen","canary_asr","cohere_asr","moss_transcribe_diarize","audiosr","controlfoley","breeze_tts","cosyvoice3","firered_audio","fireredtts3","irodori_tts","kitten_tts2","kokoro_tts","meanvc2","midashenglm_gen","plapre"]),zi={};function xi(O){b(ve,Sb([O])),localStorage.setItem("audiocpp.ui.language",e(ve)),document.documentElement.lang=e(ve)}function xn(O=e(Le)){const te=Oq(O,kt);document.documentElement.dataset.theme=te,document.querySelector('meta[name="theme-color"]')?.setAttribute("content",getComputedStyle(document.documentElement).getPropertyValue("--bg").trim())}function is(O){b(Le,Fb(O)),localStorage.setItem(Gb,e(Le)),xn(e(Le))}async function Mr(){try{if("serviceWorker"in navigator){const O=await navigator.serviceWorker.getRegistrations();await Promise.all(O.map(te=>te.unregister()))}if("caches"in window){const O=await window.caches.keys();await Promise.all(O.map(te=>window.caches.delete(te)))}}catch(O){console.warn("Unable to clear legacy WebUI caches:",O)}}function jn(O,te,se=e(ee)){return se(`workflow.${O==="conversion"?"vc":O==="separation"?"sep":O}`,{},te)}function Cn(O,te=e(ee),se){return O?se&&(se.workflow||ta(se)==="enhancement")?jn(ta(se),O,te):te(`task.${O}`,{},hq[O]||O):te("studio.title")}function ws(O,te,se=e(ee)){const Ae=te==="label"?O.label_en||O.label||O.name.replace(/_/g," "):te==="info"?O.info_en||O.info||"":O.placeholder_en||O.placeholder||"";return se(`param.${e(V)?.family}.${O.name}.${te}`,{},Ae)}function Qr(O=e(ee)){const te=e(V)?.input_hint_en||e(V)?.input_hint||"";return O(`model.${e(V)?.family}.hint`,{},te)}function dl(O){const te=Math.max(1,Number.isFinite(O)?O:1)*24;return Math.max(5,Math.round((te-3)/17)*17+3)}function wo(O){const te=e(V)?.family==="ace_step"?-1:1;b(Me,Math.max(te,Number.isFinite(O)?O:te)),e(V)?.family==="minimax_h3"&&b(it,{...e(it),num_frames:dl(e(Me))})}function ks(O,te){b(it,{...e(it),[O.name]:te});const se=O.session_option||O.name;if(!e(Ce)&&O.scope==="session"&&e(V)?.install_packages?.some(Ae=>e(Ht)[Ae.id]?.load_target?.session_options[se]!==void 0)&&(Ta=new Set([...Ta,se])),(e(V)?.family==="ace_step"||O.group==="lora")&&O.name==="lora"&&te===""&&(ma={...ma},delete ma[O.session_option||`${e(V).family}.lora`],O.group==="lora"&&delete ma[`${e(V).family}.lora_scale`]),(O.group==="lora"||["auk","yue2","liveavatar","fish_drama3","ace_step"].includes(e(V)?.family||""))&&O.scope==="session"&&b(d,e(ce).some(Ae=>Ae.id===e(ae)&&Ae.loaded&&Ao(Ae,e(V)))),e(V)?.family==="minimax_h3"&&O.name==="num_frames"){const Ae=Number(te);Number.isFinite(Ae)&&Ae>0&&b(Me,Ae/24)}}function ko(O=e(V)){O?.family!=="yue2"||e(ge).trim()||b(ge,O.default_text||"")}function ul(){return e(fe).trim()?e(fe):e(V).default_text||""}const vr=[{id:"tts",label:"Text to speech",filterLabel:"TTS",tasks:["tts","clon"]},{id:"asr",label:"ASR / Transcription",filterLabel:"ASR",tasks:["asr"]},{id:"music",label:"Music / video generation",filterLabel:"Music / video generation",tasks:["gen"]},{id:"conversion",label:"Voice Conversion / S2S",filterLabel:"Voice Conversion / S2S",tasks:["vc","svc","s2s"]},{id:"enhancement",label:"Enhancement / denoising",filterLabel:"Enhancement / denoising",tasks:["s2s"]},{id:"separation",label:"Source separation",filterLabel:"Separation",tasks:["sep","s2s"]},{id:"analysis",label:"Audio analysis",filterLabel:"Analysis",tasks:["vad","diar","align","spk","midi","asr","turn","wake","cls"]},{id:"design",label:"Voice design",filterLabel:"Voice design",tasks:["vdes"]}],Kc={fish_drama3:"Fish Audio Drama 3",kugelaudio:"KugelAudio",crisperwhisper:"CrisperWhisper",index_echo:"Index-Echo S2TT",audio_flamingo:"Audio Flamingo",owsm:"OWSM",owsm_ctc:"OWSM-CTC",reuse:"RE-USE",sidon:"Sidon",smart_turn:"Smart Turn",gigaam_asr:"GigaAM ASR",ced:"CED",firered_vad:"FireRed VAD",samsone:"SAMSONE",sam_audio:"SAM Audio",builtin_audio_utils:"Audio utilities",qwen3_tts:"Qwen3-TTS",irodori_tts:"Irodori-TTS",chatterbox:"Chatterbox",stable_audio:"Stable Audio 3",qwen3_asr:"Qwen3-ASR",vevo2:"Vevo2",seed_vc:"Seed-VC",breeze_tts:"BreezeTTS 2",cosyvoice3:"CosyVoice3",magpie_tts:"MagpieTTS",meanvc2:"MeanVC2",niagara_asr:"Niagara ASR",canary_asr:"Canary 180M Flash",cohere_asr:"Cohere Transcribe",moss_transcribe_diarize:"MOSS-Transcribe-Diarize",apollo:"Apollo",universr:"UniverSR",pulsevad:"PulseVAD",nemotron_3_diar:"Nemotron 3 Diarization",lfm2_audio:"LFM2.5-Audio",lfm3_audio:"LFM3-Audio",personaplex:"PersonaPlex"},Qs={canary_asr:0,cohere_asr:256,moss_transcribe_diarize:5120},Kr={canary_asr:["en","de","es","fr"],cohere_asr:["en","fr","de","es","it","pt","nl","pl","el","ar","ja","zh","vi","ko"],confucius4_r2t2:["Auto","Chinese","English","Cantonese","Japanese","Korean","Arabic","German","French","Spanish","Portuguese","Indonesian","Italian","Russian","Thai","Vietnamese","Turkish","Hindi","Malay","Dutch","Swedish","Danish","Finnish","Polish","Czech","Filipino","Persian","Greek","Romanian","Hungarian","Macedonian"]};function fu(O){const Ae=(O.replace(/\\/g,"/").split("/").filter(Boolean).pop()||"").match(/(?:^|[-_])(\d+(?:\.\d+)?[bm])(?:[-_]|$)/i);return Ae?Ae[1].toUpperCase():""}function br(O,te){const se=So(te),Ae=So(Jc(O));if(se===Ae)return!0;const je=So(O).replace(/^models\//,"");return se===je||se.endsWith(`/${je}`)}function xo(O,te){return O.family!==te.family||O.task!==te.task?!1:br(O.path,te.path)?!0:!!(O.install_packages||[]).some(se=>br(se.path,te.path))}function ac(O){const te=Oi.find(se=>se.id===O.id);return te&&xo(te,O)?te:Oi.find(se=>xo(se,O))}function Yc(O,te){const se=fu(O.path),Ae=Kc[O.family]||te?.display_name||O.family;return se&&!Ae.toLowerCase().includes(se.toLowerCase())?`${Ae} ${se}`:Ae}function fl(O){return ac(O)?.display_name||Yc(O)}function pl(O,te){return O.localeCompare(te,"en",{sensitivity:"base",numeric:!0})}function ic(O=!1){return(O?e(ce).filter(se=>se.configured&&!Oi.some(Ae=>Ae.id===se.id)):e(ce)).map(se=>{const Ae=ac(se),je=Oi.find(Zt=>Zt.family===se.family&&Zt.task===se.task),wt=Ae||je,ha=Zt=>Zt&&O?`${Zt} (${se.id})`:Zt;return{...wt||{id:se.id,display_name:se.id,family:se.family,path:se.path,task:se.task,mode:se.mode},id:se.id,display_name:ha(Ae?Ae.display_name:Yc(se,wt)),display_name_en:ha(Ae?Ae.display_name_en:wt?.display_name_en),family:se.family,path:se.path,task:se.task,mode:se.mode,install_packages:[],configured:!0}})}function Ji(O){return!e(Te)||!O?!1:!e(Te).ui_management||O.configured===!0}function ml(O){return Array.from(O.reduce((te,se)=>{const Ae=te.get(se.family)||[];return Ae.push(se),te.set(se.family,Ae),te},new Map)).map(([te,se])=>({family:te,entries:[...se].sort((Ae,je)=>pl(Ae.display_name,je.display_name)),label:se.length>1&&Kc[te]||se[0].display_name})).sort((te,se)=>pl(te.label,se.label))}let Gn=K("tts"),Ks={},fn=K(Oi),gl=K(ml(Oi));class ns extends Error{}function yi(O){const te=`${new Date().toLocaleTimeString()} ${O}`;b(li,[te,...e(li)].slice(0,200))}function zr(O){if(!Number.isFinite(O)||O<=0)return"0 B";const te=["B","KB","MB","GB","TB"],se=Math.min(Math.floor(Math.log(O)/Math.log(1024)),te.length-1);return`${(O/1024**se).toFixed(se<2?0:1)} ${te[se]}`}function Jc(O){if(!e(Ot))return O;const te=O.replace(/\\/g,"/");if(te==="models")return e(Ot);if(!te.startsWith("models/"))return O;const se=te.slice(7),Ae=e(Ot).includes("\\")?"\\":"/";return`${e(Ot).replace(/[\\/]+$/,"")}${Ae}${se.replace(/\//g,Ae)}`}function xs(O){const te=O.install_packages||[],se=te.find(Ae=>Ae.id===e(Ti)[O.id])||te[0];return se?Pd(se,e(Ht)[se.id]):void 0}function Xc(O,te){return xs(O)?.id===te.id}function Ss(O){return Ji(O)?O.path:Jc(xs(O)?.path||O.path)}function So(O){return O.replace(/\\/g,"/").replace(/\/$/,"").toLowerCase()}function To(O,te){return br(O.path,te)}async function hl(O){if(Ji(O)||O.id===e(ae)&&e(Ce)||!O.install_packages?.length)return;const te=xs(O);return!te.load_target&&!te.load_target_error&&await Ha(),Cm(xs(O))}function $o(O){return{...O.id===e(ae)&&e(Ce)?{}:xs(O)?.load_options,...O.load_options,...O.id===e(ae)?na:{}}}function Yr(O,te=xs(O)){O.id===e(ae)&&e(Ce)&&(te=void 0);const se=O.id===e(ae)?yl(te?.session_options):{};return{...O.session_options||{},...te?.session_options||{},...O.id===e(ae)?ma:{},...se}}function Jr(O,te,se){te=Pd(te,e(Ht)[te.id]);const Ae=Yr(O,te),je=Array.from(new Set((O.id===e(ae)&&e(Ce)?[]:O.install_packages||[]).flatMap(ha=>Object.keys(e(Ht)[ha.id]?.load_target?.session_options||{}))));if(O.id===e(ae))for(const ha of e(nt).filter(Zt=>Zt.scope==="session"))je.push(ha.session_option||ha.name);if(!je.length)return!0;const wt=se.session_options||{};return je.every(ha=>wt[ha]===Ae[ha])}function qo(O,te,se){return O.id===e(ae)&&e(Ce)?!1:(se=Pd(se,e(Ht)[se.id]),To(se,te.path)&&Jr(O,se,te))}function Ao(O,te){if(!te)return br(e(pe),O.path);const se=xs(te);return se?br(e(pe),O.path)&&Jr(te,se,O):br(e(pe),O.path)}function Wt(O,te=e(ce)){return te.find(se=>se.id===O.id&&se.loaded)}function St(O,te,se=e(ce)){const Ae=Wt(O,se);return!!(Ae&&qo(O,Ae,te))}function ka(O,te,se=e(ce),Ae=e(Ht)){return St(O,te,se)||Ae[te.id]?.installed===!0&&!!Ae[te.id]?.load_target}function Fa(O){const te=O.install_packages||[];if(O.family==="ace_step"||O.family==="minimax_music3"||Ii.has(O.family))return te.map(je=>({key:je.id,label:je.label,choice:je}));const se=te.find(je=>je.format==="gguf"&&["q8","q8_0"].includes(je.precision)),Ae=te.find(je=>je.format==="gguf"&&["f16","fp16","bf16"].includes(je.precision));return!se&&!Ae?te.map(je=>({key:je.id,label:je.label,choice:je})):[{key:"q8",label:se?.label||"GGUF Q8",choice:se},{key:"fp16",label:Ae?.label||"GGUF FP16",choice:Ae}]}function ii(O){if(!Number.isInteger(O)||O<-1||O>4294967295)throw new Error("Seed must be -1 or an unsigned 32-bit integer (0 to 4294967295).");if(O>=0)return O;const te=new Uint32Array(1);return globalThis.crypto.getRandomValues(te),te[0]}function La(O,te){return(O+te)%4294967296}function oe(O){return O.replace(/\.[^.]+$/,"").trim().toLowerCase()}function ze(O){const te=!!(O&&(e(Bt)||e(ui)||e(Be)&&e(Be).name!==O.name));O&&(b(Bt,""),b(ui,"")),b(Be,O),te&&(b(_t,null),b(ke,""),e(mt)&&Ct(mt,e(mt).value=""),b(le,"Reference voice changed. Choose or enter its matching transcript."),b(xe,e(le)))}function Pe(){b(Bt,""),b(ui,""),b(Be,null),b(_t,null),b(ke,""),e(Ue)&&Ct(Ue,e(Ue).value=""),e(mt)&&Ct(mt,e(mt).value="")}function st(){b(Xe,null),e(Ne)&&Ct(Ne,e(Ne).value="")}function yt(){b(Re,null),e(Ye)&&Ct(Ye,e(Ye).value="")}function ct(O,te){b(Oe,e(Oe).map((se,Ae)=>Ae===O?te:se))}function Ze(O){ct(O,null),e(Ve)[O]&&Ct(Ve,e(Ve)[O].value="")}function lt(O){b(Bt,O),O&&(b(ui,""),b(Be,null),b(_t,null),b(ke,""),e(Ue)&&Ct(Ue,e(Ue).value=""),e(mt)&&Ct(mt,e(mt).value=""))}async function sa(O){if(b(_t,O),!!O)try{const te=(await O.text()).replace(/^\uFEFF/,"").trim();if(!te)throw new Error("The selected reference text file is empty.");b(ke,te);const se=!e(Be)||oe(O.name)===oe(e(Be).name);b(le,se?`Loaded reference transcript from ${O.name}.`:`Loaded ${O.name}. Its name does not match ${e(Be)?.name}; verify that it is the correct transcript.`),b(xe,se?"":e(le))}catch(te){b(_t,null),b(ke,""),e(mt)&&Ct(mt,e(mt).value=""),b(le,te instanceof Error?te.message:String(te)),b(xe,"")}}function Xt(O){return O.state==="complete"||O.state==="cleaned"?100:O.progress_percent>=0?Math.min(100,Math.max(0,O.progress_percent)):0}function ra(O){const te=Xt(O);return O.total_bytes>0?`${te}% · ${zr(O.downloaded_bytes)} / ${zr(O.total_bytes)}`:O.downloaded_bytes>0?`${zr(O.downloaded_bytes)} downloaded`:O.state==="failed"?"Download failed":O.state==="cleaned"?"Partial files cleaned":O.state==="complete"?"100% · complete":O.state==="queued"?"0% · queued":"Connecting and checking package files…"}function _i(O,te){return(O.install_packages||[]).map(se=>te[se.id]).filter(se=>se!==void 0)}function Va(O){return O.family==="ming3_audio"&&["tts","clon"].includes(O.task)?!1:O.request_options!==void 0?O.request_options.includes("max_tokens"):["tts","clon","gen","s2s","vdes"].includes(O.task)}function ga(O,te){return O.request_options===void 0||O.request_options.includes(te)}function Ya(O,te){return O.required_request_options?.includes(te)===!0}function Kt(O){return e(D).has(O.id)}function ta(O){return O.workflow?O.workflow:["apollo","universr","audiosr"].includes(O.family)?"enhancement":vr.find(te=>te.tasks.some(se=>se===O.task))?.id||"tts"}function Aa(O,te=e(ee)){return O==="Ready"?te("status.ready"):O}async function Ha(){if(!(!e(Te)?.ui_management||ci)){ci=!0;try{const O=await fb();b(Ga,O.state),O.data.length&&(b(Ht,Object.fromEntries(O.data.map(se=>[se.id,se]))),O.state==="complete"&&Ys(e(Ht)),e(ae)&&!e(Ce)&&!Ji(e(V))&&e(V).install_packages?.length&&(b(pe,Ss(e(V))),Wi()));const te=O.state==="idle"||O.state==="running"||O.data.length===0;te&&Jt===null?Jt=window.setInterval(Ha,1e3):!te&&Jt!==null&&(window.clearInterval(Jt),Jt=null)}catch(O){b(Ga,"failed"),yi(`Package sizes unavailable: ${O instanceof Error?O.message:O}`)}finally{ci=!1}}}function on(){if(!(e(Q)==="library"&&!e(X)?.canClose())&&!(e(Q)==="apps"&&!e(Z)?.canClose())){if(!e(Te)?.ui_management){b(Q,"studio"),b(le,"Model management is disabled for this configured server."),b(xe,e(le)),b(Ke,"");return}b(Q,"models"),e(Ga)==="idle"&&b(Ga,"running"),Ha()}}function Fn(O,te){b(Ti,{...e(Ti),[O.id]:te.id}),localStorage.setItem("audiocpp.ui.packageIds",JSON.stringify(e(Ti))),O.id===e(ae)&&(b(Ce,!1),b(pe,Ss(O)),Wi())}function Ys(O=e(Ht)){const te={...e(Ti)};let se=!1;for(const Ae of Oi){const je=Ae.install_packages||[];if(!je.length)continue;const wt=je.find(Tn=>Tn.id===te[Ae.id]),ha=wt?e(ua)[wt.id]:void 0;if(ha&&["queued","running","cancelling"].includes(ha.state)||wt&&O[wt.id]?.installed)continue;const Nt=je.find(Tn=>O[Tn.id]?.installed);Nt?te[Ae.id]!==Nt.id&&(te[Ae.id]=Nt.id,se=!0):te[Ae.id]!==void 0&&(delete te[Ae.id],se=!0)}return se?(b(Ti,te),localStorage.setItem("audiocpp.ui.packageIds",JSON.stringify(e(Ti))),e(ae)&&!e(Ce)&&(b(pe,Ss(e(V))),Wi()),!0):!1}function Xr(O=e(ce)){const te={...e(Ti)};let se=!1;for(const Ae of Oi){const je=Wt(Ae,O);if(!je)continue;const wt=xs(Ae),ha=wt&&qo(Ae,je,wt)?wt:(Ae.install_packages||[]).find(Zt=>qo(Ae,je,Zt));ha&&te[Ae.id]!==ha.id&&(te[Ae.id]=ha.id,se=!0)}return se?(b(Ti,te),localStorage.setItem("audiocpp.ui.packageIds",JSON.stringify(e(Ti))),e(ae)&&!e(Ce)&&(b(pe,Ss(e(V))),Wi()),!0):!1}async function nc(O=e(Ht)){const te=Oi.filter(se=>{const Ae=Wt(se);if(!Ae)return!1;const je=(se.install_packages||[]).find(wt=>qo(se,Ae,wt));return!!(je&&O[je.id]?.installed===!1)});if(!te.length)return!1;for(const se of te)await mo(se.id);return await Mn(),!0}async function sc(){e(Q)==="library"&&!e(X)?.canClose()||e(Q)==="apps"&&!e(Z)?.canClose()||(b(Q,"studio"),await Jf(),await Mn(),e(Te)?.ui_management&&(await Ha(),await nc(),Ys()&&e(ae)&&await Ts()))}function _l(O){b(Ot,O.models_root),b(Ea,O.models_root),b($a,O.default_models_root),b(qa,O.is_default),e(Ce)||b(pe,Ss(e(V))),b(wa,[O.models_root,...e(wa),O.default_models_root].filter((te,se,Ae)=>te&&Ae.indexOf(te)===se).slice(0,10)),localStorage.setItem("audiocpp.ui.modelsFolderHistory",JSON.stringify(e(wa)))}function Co(){b(ae,""),b(Bt,""),b(ca,[]),b(Re,null),b(pe,""),b(ye,null),b(nt,[]),b(it,{}),b(ot,"{}"),localStorage.removeItem("audiocpp.ui.model"),Js()}function Go(O=!1){return Ji(e(V))||!e(ae)||!O&&e(d)||e(ye)!==!1?!1:(Co(),!0)}async function Fo(O=!1){if(!(!e(Te)?.ui_management||e(Qe))){b(Qe,!0),b(xe,""),b(Ke,""),b(le,O?"Restoring the default models folder…":"Changing models folder…");try{const te=await pb(O?"":e(Ea).trim());_l(te),te.is_default?localStorage.removeItem("audiocpp.ui.modelsFolder"):localStorage.setItem("audiocpp.ui.modelsFolder",te.models_root),b(ua,{}),b(Ht,{}),b(Ga,"idle"),Hi={},ai!==null&&(window.clearInterval(ai),ai=null),Jt!==null&&(window.clearInterval(Jt),Jt=null),await Ha(),await Ts();const se=Go();b(le,se?`Models folder: ${te.models_root}. No installed model is selected.`:`Models folder: ${te.models_root}`),yi(e(le))}catch(te){b(le,te instanceof Error?te.message:String(te)),b(Ke,e(le)),yi(`Models folder change failed: ${e(le)}`)}finally{b(Qe,!1)}}}async function Er(O="",te=null){b(Ba,te),b(Ge,!0),b(bt,!0),b(Vt,"");try{b(ea,await FT(O||e(Ea).trim()||e(Ot)))}catch(se){b(Vt,se instanceof Error?se.message:String(se))}finally{b(bt,!1)}}function Xi(){e(ea)&&(e(Ba)?ks(e(Ba),e(ea).current):b(Ea,e(ea).current),b(Ge,!1))}function Wi(){if(e(Ce))return;const O=xs(e(V))?.session_options||{};if(!Object.keys(O).length)return;const te={...e(it)};for(const se of e(nt).filter(Ae=>Ae.scope==="session")){const Ae=se.session_option||se.name;if(O[Ae]===void 0||Ta.has(Ae))continue;const je=ma[Ae]??O[Ae];te[se.name]=se.type==="bool"?je==="true":["number","slider"].includes(se.type)?Number(je):je}b(it,te)}function Kn(){ma={},na={},Ta=new Set,Qa=!1;const O=Yo[e(V)?.id]||Yo[e(V)?.family]||[],te=A2(e(V)?.family,e(V)?.task)?.replacesGenericControls,se=e(V)?.task==="gen"&&!te?.duration;b(nt,O.filter(je=>!(["vibevoice","moss_ttsd"].includes(e(V)?.family)&&je.name==="voice_samples")&&!(se&&je.name==="duration_sec"))),b(it,Object.fromEntries(O.map(je=>[je.name,je.default??""]))),Wi();const Ae=e(ce).find(je=>je.id===e(ae))?.session_options||{};for(const je of e(nt).filter(wt=>wt.group==="lora")){const wt=Ae[je.session_option||je.name];wt!==void 0&&Ct(it,e(it)[je.name]=wt)}if(e(V)?.family==="ace_step"&&Ji(e(V))){const je=e(ce).find(wt=>wt.id===e(ae))?.session_options;b(it,{...e(it),lora:je?.["ace_step.lora"]??"",lora_scale:Number(je?.["ace_step.lora_scale"]??1)})}if(e(V)?.family in Qs&&b(rt,Qs[e(V).family]),e(V)?.family==="confucius4_r2t2"?b(we,"Auto"):["owsm","owsm_ctc","index_echo","audio_flamingo","kugelaudio","smart_turn","reuse","sidon","hviske_asr_v6","voxtral_tts"].includes(e(V)?.family)?b(we,""):e(V)?.family in Kr&&b(we,"en"),e(V)?.family==="minimax_h3"?(b(Me,15),b(it,{...e(it),num_frames:dl(e(Me)),dit_acceleration:"none"})):e(V)?.task==="gen"&&b(Me,30),e(V)?.family==="yue2"){if(Ji(e(V))){const je=e(ce).find(wt=>wt.id===e(ae))?.session_options;b(it,{...e(it),ar_lora:je?.["yue2.ar_lora"]??"",ar_lora_scale:Number(je?.["yue2.ar_lora_scale"]??1),nar_lora:je?.["yue2.nar_lora"]??"",nar_lora_scale:Number(je?.["yue2.nar_lora_scale"]??1)})}b(fe,""),b(ge,""),ko()}else["liveavatar","moss_ttsd","sam_audio"].includes(e(V)?.family)?b(fe,e(V).default_text||""):e(V)?.family==="ming3_audio"&&e(V).task==="s2s"?b(fe,""):!e(fe).trim()&&e(V)?.default_text&&b(fe,e(V).default_text);e(V)?.builtin_voices?.length&&e(V).default_voice&&!e(Bt)&&b(Bt,e(V).default_voice),b(ot,"{}")}let vl=!1;function Zc(){if(!e(Te)||e(Te).ui_management)return;const O=ic();if(!O.length){Co();return}const se=(e(ae)?O.find(je=>je.id===e(ae)):void 0)||O[0],Ae=!vl||e(ae)!==se.id;Ae&&(b(Bt,""),b(ca,[])),b(ae,se.id),b(V,se),b(Gn,ta(se)),Ks={...Ks,[e(Gn)]:se.id},b(pe,se.path),b(ye,!0),localStorage.setItem("audiocpp.ui.model",se.id),Ae&&(b(Di,Em(se.family)),Kn()),vl=!0}async function Mn(){try{await(async O=>{var te=od(O,2);b(Te,te[0]),b(ce,te[1])})(await Promise.all([qm(),Nc()])),e(Te).ui_management?Xr():Zc()}catch(O){b(le,O instanceof Error?O.message:String(O))}}async function Ts(){if(!e(ae)||!e(pe).trim()){b(ye,null);return}if(Ji(e(V))){b(ye,e(ce).some(O=>O.id===e(ae)));return}b(ye,null);try{b(ye,(await ub(e(pe))).exists)}catch{b(ye,null)}}function Zr(O){if(b(xa,""),!O){Co(),b(le,"No model selected. Choose an installed model or download one from the Models tab.");return}const te=e(fn).find(se=>se.id===O);!te||!Kt(te)||(b(ae,O),b(V,te),b(Ce,!1),b(Bt,""),b(ca,[]),b(Gn,ta(te)),Ks={...Ks,[e(Gn)]:O},b(pe,Ss(te)),b(Di,Em(te.family)),localStorage.setItem("audiocpp.ui.model",O),Kn(),b(le,e(ee)("status.ready")),Ts(),Xf())}function eo(O){const te=vr.find(wt=>wt.id===O);if(!te||(b(Gn,O),e(ae)&&ta(e(V))===O))return;const se=Ks[O],je=(se?e(fn).find(wt=>wt.id===se&&ta(wt)===O&&Kt(wt)):void 0)||e(fn).find(wt=>ta(wt)===O&&Kt(wt));if(je){Zr(je.id);return}Co(),b(le,`No installed models are available for ${te.label}. Install one from the Models tab.`)}async function Mo(O){if(!e(v)){if(!e(ae)){b(le,"Choose an installed model before loading."),b(xe,e(le)),b(Ke,"");return}if(Ji(e(V))){b(le,e(Te)?.ui_management?"This model is configured by the server and loads on its first request.":"This server was not started with UI management enabled."),b(xe,e(le)),b(Ke,"");return}b(Ie,!0),b(xe,""),b(Ke,""),b(le,`Loading ${e(V).display_name}…`),yi(e(le));try{const te=await hl(e(V));te&&b(pe,te.model_path);const se=e(ce).filter(Ae=>Ae.loaded&&(Ae.id!==e(V).id||!br(e(pe),Ae.path)||!Ao(Ae,e(V))));for(const Ae of se)yi(`Unloading ${fl(Ae)} before loading ${e(V).display_name}.`),await mo(Ae.id);se.length&&await Mn(),await mf({id:e(V).id,path:e(pe),family:te?.family??e(V).family,task:e(V).task,mode:O||e(V).mode||"offline",load_options:$o(e(V)),session_options:Yr(e(V))}),await Mn(),await Xf(),b(le,e(ee)("status.modelReady",{model:e(V).display_name})),b(Ke,""),yi(e(le))}catch(te){throw b(le,te instanceof Error?te.message:String(te)),b(Ke,e(le)),yi(`Load failed: ${e(le)}`),te}finally{b(Ie,!1)}}}async function rc(){if(!e(ae))return;const O=e(V).display_name;b(Ie,!0);try{Ji(e(V))?await ST([e(V).id]):await mo(e(V).id),await Mn(),await Xf();const te=Go(!0);b(le,te?`${O} unloaded. No installed model is selected.`:`${O} unloaded.`),yi(e(le))}catch(te){b(le,te instanceof Error?te.message:String(te))}finally{b(Ie,!1)}}async function pu(O){if(!(e(Ie)||!ka(e(V),O))){if(St(e(V),O)){await rc();return}if(Fn(e(V),O),await Ts(),e(ye)!==!0){b(le,`${e(V).display_name} ${O.label} is not available at the expected path.`),b(Ke,e(le));return}await Mo()}}async function ed(){e(Ie)||!e(ae)||e(ye)===!1||(e(d)?await rc():await Mo())}async function bl(O){if(!O)return;const te=e(V).task==="sep"||e(V).family==="apollo"?44100:["asr","vad","diar","align","midi","wake","cls"].includes(e(V).task)?16e3:void 0,se=await mr(O,te);return Os(se,hi?.signal)}async function to(){if(e(V).family==="moss_ttsd"){const je=e(Oe).map(Boolean).lastIndexOf(!0);return je<0?void 0:(await Promise.all(e(Oe).slice(0,Math.max(2,je+1)).map(async ha=>ha&&await bl(ha)||""))).join(",")}const O=e(Oe).findIndex(je=>!je);if(O>=0&&e(Oe).slice(O+1).some(Boolean))throw new ns("VibeVoice speaker references must be filled from Speaker 1 without gaps.");const se=e(Oe).filter(je=>!!je);return se.length?(await Promise.all(se.map(je=>bl(je)))).filter(je=>!!je).join(","):void 0}function ds(){let O={};try{if(O=JSON.parse(e(ot)||"{}"),Array.isArray(O)||O===null)throw new Error("must be an object")}catch(Ae){throw new Error(`Advanced JSON is invalid: ${Ae instanceof Error?Ae.message:Ae}`)}const te=e(V).default_options||{},se=Object.fromEntries(Object.entries(e(it)).filter(([Ae,je])=>{const wt=e(nt).find(ha=>ha.name===Ae);return!(wt?.scope==="session"||je===""&&wt&&wt.default===void 0||e(V)?.family==="canary_asr"&&Ae==="target_language"&&je===""||e(V)?.family==="universr"&&Ae==="input_sample_rate"&&je===""||e(V)?.family==="auk"&&typeof je=="string"&&je.trim().length===0||e(f)&&typeof je=="string"&&je.trim().length===0)}));return{...te,...se,...O}}function yl(O={}){const te=Object.fromEntries(e(nt).filter(se=>se.scope==="session").filter(se=>se.group!=="lora"||String(e(it).lora??"").trim().length>0).map(se=>{const Ae=se.session_option||se.name,je=O[Ae]!==void 0&&!Ta.has(Ae)?ma[Ae]??O[Ae]:e(it)[se.name];return[Ae,String(je??se.default??"")]}).filter(([,se])=>se.length>0));if(e(V)?.family==="auk"){const se=te["auk.model_gguf"]||"auk-base-f32.gguf";te["auk.variant"]=se.startsWith("auk-flash-")?"flash":"base"}return te}function Js(){if(e(pt)===null){for(const O of e(gt))URL.revokeObjectURL(O.url);for(const O of e(dt))URL.revokeObjectURL(O.url);e(Rt)&&URL.revokeObjectURL(e(Rt).url)}b(gt,[]),b(dt,[]),b(It,""),b(Ut,""),b(Rt,null),b(pt,null),b(ht,"")}function zo(O){for(const te of O.audio)URL.revokeObjectURL(te.url);for(const te of O.artifacts)URL.revokeObjectURL(te.url);URL.revokeObjectURL(O.settings.url)}async function wl(O,te=!1){if(O.modelId!==e(ae)||O.task!==e(V).task){b(xa,e(ee)("history.wrongModel",{label:O.label,model:e(V).display_name})),yi(e(xa));return}if(te){if(e(tt)||e(Ie)||e(pa)){b(xa,e(ee)("history.wait"));return}b(pa,!0);try{await Yf(O.settingsJson)}catch(se){b(xa,se instanceof Error?se.message:String(se)),yi(`History settings restore failed: ${e(xa)}`);return}finally{b(pa,!1)}return wl(O)}b(xa,""),Js(),b(pt,O.id),b(ht,O.modelId),b(gt,O.audio),b(dt,O.artifacts),b(It,O.text),b(Ut,O.json),b(Rt,O.settings)}function Sn(O){const te=e(ya).find(Ae=>Ae.id===O);if(!te)return;const se=e(pt)===O;if(se&&Js(),b(ya,e(ya).filter(Ae=>Ae.id!==O)),zo(te),se){const Ae=e(ya).find(je=>je.modelId===e(ae)&&je.task===e(V).task);Ae&&wl(Ae)}}function Rs(){e(pt)!==null&&Js();for(const O of e(ya))zo(O);b(ya,[]),b(xa,"")}function Bs(O){const te=e(ya).slice(O);if(!te.length)return;const se=te.some(Ae=>Ae.id===e(pt));se&&Js(),b(ya,e(ya).slice(0,O));for(const Ae of te)zo(Ae);if(se){const Ae=e(ya).find(je=>je.modelId===e(ae)&&je.task===e(V).task);Ae&&wl(Ae)}}async function yr(){if(Ji(e(V))){if(Qa)throw new Error("The imported model settings require a reload through the server configuration.");if(!e(ce).some(O=>O.id===e(ae)))throw new Error("Configured model is not registered by this server.");return}if(!e(d)||Qa){if(Qa&&e(ce).some(O=>O.id===e(ae)&&O.loaded)&&(await mo(e(ae)),await Mn()),await Mo(),await Mn(),!e(ce).some(O=>O.id===e(ae)&&O.loaded&&Ao(O,e(V))))throw new Error("Model did not load.");Qa=!1}}async function kl(O,te,se={}){const Ae=e(fn).find(Zt=>Zt.id===O.id);if(!Ae||Ae.family!==O.family||Ae.task!==O.task)throw new Error(`The saved model is not available in this UI: ${O.id}`);if(!Kt(Ae))throw new Error(`Install ${Ae.display_name} before applying its settings.`);const je=O.package_id?Ae.install_packages?.find(Zt=>Zt.id===O.package_id):void 0;if(O.package_id&&!je)throw new Error(`The saved package is not available: ${O.package_id}`);if(je&&!ka(Ae,je,e(ce),e(Ht)))throw new Error(`Install ${je.label} before applying its settings.`);const wt=$o(Ae);Zr(Ae.id),je&&(b(Ti,{...e(Ti),[Ae.id]:je.id}),localStorage.setItem("audiocpp.ui.packageIds",JSON.stringify(e(Ti)))),b(pe,je?Ss(Ae):O.path),b(Ce,!je),ma={...O.session_options||{}},na={...O.load_options||{}},b(it,{...e(it),...te||Object.fromEntries(Object.entries(se).filter(([Zt])=>e(nt).some(Nt=>Nt.name===Zt)))});for(const Zt of e(nt).filter(Nt=>Nt.scope==="session")){const Nt=ma[Zt.session_option||Zt.name];if(Nt!==void 0){if(Zt.type==="bool"&&!["true","false"].includes(Nt))throw new Error(`Invalid boolean setting: ${Zt.name}`);if(["number","slider"].includes(Zt.type)&&!Number.isFinite(Number(Nt)))throw new Error(`Invalid numeric setting: ${Zt.name}`);Ct(it,e(it)[Zt.name]=Zt.type==="bool"?Nt==="true":["number","slider"].includes(Zt.type)?Number(Nt):Nt)}}Wi();const ha=e(ce).find(Zt=>Zt.id===Ae.id&&Zt.loaded);return Qa=!!(ha&&(!br(e(pe),ha.path)||Object.entries(Yr(Ae)).some(([Zt,Nt])=>ha.session_options?.[Zt]!==Nt)||JSON.stringify(wt)!==JSON.stringify(na))),await Ts(),Ae}async function Yf(O){const te=JSON.parse(O);if(te.schema_version!==1||typeof te.model?.id!="string"||!Array.isArray(te.requests)||!te.requests.length||!te.requests.every(Nt=>Nt&&Nt.body&&typeof Nt.body=="object"&&!Array.isArray(Nt.body)))throw new Error("Choose an audio.cpp settings JSON exported with Save settings JSON.");const se=te.requests[0].body,Ae=se.request||se,je=te.ui,wt=te.resolved_seed;if(!Number.isInteger(wt)||wt<0||wt>4294967295)throw new Error("The settings JSON has an invalid resolved seed.");const ha=await kl(te.model,je?.advanced_values,Ae.options);b(fe,je?.text??(te.requests[0].endpoint==="/v1/audio/speech"?te.requests.map(Nt=>Nt.body.input).join(`
|
||
|
||
`):Ae.text||"")),b(ge,je?.lyrics??Ae.lyrics??""),b(we,je?.language??Ae.language??""),b(me,je?.moss_language??Ae.language??"English"),b(be,je?.context??(ha.task==="asr"&&Ae.text||"")),b(ke,je?.reference_text??Ae.reference_text??""),b($e,je?.instructions??Ae.instructions??""),b(Me,je?.duration??Ae.duration_seconds??Ae.options?.duration_sec??e(Me)),b(qe,je?.max_tokens??Ae.max_tokens??e(qe)),b(rt,je?.asr_max_tokens??Ae.options?.max_tokens??e(rt)),b(ti,je?.long_text??te.requests.length>1),b(Di,je?.text_chunk_size??e(Di)),b(Bt,je?.voice??Ae.voice??""),b(ot,je?.advanced_json??JSON.stringify(Object.fromEntries(Object.entries(Ae.options||{}).filter(([Nt])=>!e(nt).some(Tn=>Tn.name===Nt))),null,2)),b(Fe,wt),b(Xe,null),b(Be,null),b(Re,null),b(Oe,[null,null,null,null]),b(ui,""),b(_t,null),e(Ne)&&Ct(Ne,e(Ne).value=""),e(Ue)&&Ct(Ue,e(Ue).value=""),e(Ye)&&Ct(Ye,e(Ye).value=""),e(mt)&&Ct(mt,e(mt).value="");for(const Nt of e(Ve))Nt&&(Nt.value="");const Zt=Object.values(te.input_files||{}).flat().filter(Nt=>typeof Nt=="string"&&Nt);b(le,`Imported settings for ${ha.display_name}.`),Zt.length&&b(le,e(le)+` Reselect the referenced files: ${Zt.join(", ")}.`),te.backend&&te.backend!==e(Te)?.backend&&b(le,e(le)+` Exported backend: ${te.backend}; current backend: ${e(Te)?.backend}.`),b(xe,Zt.length?e(le):""),b(Ke,""),yi(e(le)),Qa&&e(Te)?.ui_management&&!Ji(e(V))&&window.confirm("The imported model settings differ from the loaded model. Reload now?")&&await yr()}async function hP(O){if(!(!O||e(tt)||e(Ie)||e(pa)))try{await Yf(await O.text())}catch(te){b(le,te instanceof Error?te.message:String(te)),b(Ke,e(le)),b(xe,""),yi(`Settings import failed: ${e(le)}`)}finally{e(Lt)&&Ct(Lt,e(Lt).value="")}}async function ux(O){if(Ji(e(V))){if(!e(ce).some(se=>se.id===e(ae)&&se.mode===O))throw new Error(`Configured model is not registered in ${O} mode.`);return}const te=e(ce).find(se=>se.id===e(ae)&&se.loaded);if((!te||te.mode!==O)&&(await Mo(O),await Mn()),!e(ce).some(se=>se.id===e(ae)&&se.loaded&&se.mode===O&&Ao(se,e(V))))throw new Error(`Model did not load in ${O} mode.`)}function fx(){for(const O of["audio/webm;codecs=opus","audio/webm","audio/ogg;codecs=opus"])if(MediaRecorder.isTypeSupported(O))return O}async function R_(O){if(!navigator.mediaDevices?.getUserMedia||typeof MediaRecorder>"u"){b(le,"Microphone recording is not supported by this browser.");return}if(!(e(Ia)||e(He)))try{hn=await navigator.mediaDevices.getUserMedia({audio:!0});const te=[],se=fx();b(Ia,new MediaRecorder(hn,se?{mimeType:se}:void 0)),b(Yi,O),Ct(Ia,e(Ia).ondataavailable=Ae=>{Ae.data.size&&te.push(Ae.data)}),Ct(Ia,e(Ia).onstop=()=>{const Ae=new Blob(te,{type:e(Ia)?.mimeType||se||"audio/webm"}),je=new File([Ae],`recording-${Date.now()}.webm`,{type:Ae.type});O==="source"?b(Xe,je):(b(Bt,""),b(ui,""),b(Be,je),e(Ue)&&Ct(Ue,e(Ue).value="")),hn?.getTracks().forEach(wt=>wt.stop()),hn=null,b(Ia,null),b(Yi,null),b(le,`${O==="voice"?"Voice reference":"Source audio"} recording captured.`)}),e(Ia).start(),b(le,`Recording ${O==="voice"?"voice reference":"source audio"}…`)}catch(te){b(le,te instanceof Error?te.message:String(te)),hn?.getTracks().forEach(se=>se.stop()),hn=null,b(Ia,null),b(Yi,null)}}function B_(){e(Ia)?.state==="recording"&&e(Ia).stop()}async function Jf(){try{b(Ai,await Ic())}catch(O){yi(`Voice library unavailable: ${O instanceof Error?O.message:O}`)}}async function Xf(){if(!e(ae)||!e(Te)){b(ca,[]);return}try{b(ca,await mb(e(ae))),e(Bt)&&(new Set([...e(ca),...e(G)?e(V)?.builtin_voices||[]:[]]).has(e(Bt))||b(Bt,""))}catch(O){b(ca,[]),yi(`Configured voices unavailable: ${O instanceof Error?O.message:O}`)}}function _P(O){O.startsWith("saved:")?px(O.slice(6)):O.startsWith("preset:")?lt(O.slice(7)):Pe()}function px(O){b(ui,O);const te=e(Ai).find(se=>se.id===O);te&&(b(Bt,""),b(Be,new File([te.audio],`${te.name}.wav`,{type:"audio/wav"})),b(_t,null),e(Ue)&&Ct(Ue,e(Ue).value=""),e(mt)&&Ct(mt,e(mt).value=""),b(ke,te.transcript),b(le,`Selected saved voice “${te.name}”.`))}async function vP(O){if(!O.size)return;const te=new File([O],`live-${Sa}.webm`,{type:O.type}),se=await mr(te,16e3),Ae=await Os(se),je=await _f({model:e(V).id,audio:Ae,language:e(we),text:e(be),options:ds()}),wt=String(je.text||"").trim();wt&&b(It,[e(It),wt].filter(Boolean).join(" ")),Sa+=1,b(le,`Listening… ${Sa} chunk${Sa===1?"":"s"} transcribed.`)}function mx(){if(!un||Gt)return;const O=[],te=fx();rn=new MediaRecorder(un,te?{mimeType:te}:void 0),rn.ondataavailable=se=>{se.data.size&&O.push(se.data)},rn.onstop=()=>{const se=new Blob(O,{type:rn?.mimeType||te||"audio/webm"});Pa=Pa.then(()=>vP(se)).catch(Ae=>{b(le,Ae instanceof Error?Ae.message:String(Ae)),yi(`Live transcription failed: ${e(le)}`)}),rn=null,Gt||mx()},rn.start(),window.setTimeout(()=>{rn?.state==="recording"&&rn.stop()},4e3)}async function bP(){if(e(F)){if(!navigator.mediaDevices?.getUserMedia||typeof MediaRecorder>"u"){b(le,"Live microphone transcription is not supported by this browser.");return}Js(),b(He,!0),Gt=!1,Sa=0;try{await ux("streaming"),un=await navigator.mediaDevices.getUserMedia({audio:!0}),b(le,"Listening… speech is transcribed in four-second native streaming requests."),mx()}catch(O){b(le,O instanceof Error?O.message:String(O)),gx()}}}function gx(){Gt=!0,rn?.state==="recording"&&rn.stop(),un?.getTracks().forEach(O=>O.stop()),un=null,b(He,!1),b(le,Sa?`Live transcription stopped after ${Sa} chunks.`:"Live transcription stopped.")}function yP(O){return fa=O,()=>{fa===O&&(fa=null)}}async function wP(O,te){if(Ji(e(V)))return yr();const se=()=>{if(e(ae)!==O)throw new Error("The model changed while it loaded; press Run again.")};(!e(d)||Qa)&&(Qa&&e(ce).some(Ae=>Ae.id===e(ae)&&Ae.loaded)&&(await mo(e(ae)),await Mn(),se()),await Mo(te),await Mn(),se(),Qa=!1),await ux(te).finally(se)}async function kP(O,te,se){const Ae=fa,je=e(V).id;if(!Ae)throw e(Q)!=="studio"?new ns("Open the Studio tab to run this entry."):new Error(`${e(V).display_name} is not ready.`);const wt=await Ae({modelId:je,seed:O,maxTokens:Va(e(V))?e(qe):void 0,language:e(we).trim(),options:ds(),signal:se,setStatus:ha=>{b(le,ha)},warning:ha=>new ns(ha),ensureLoaded:ha=>wP(je,ha)});Js(),wt.audio&&b(gt,[{id:"reply",url:URL.createObjectURL(wt.audio)}]),b(It,wt.text),b(Ut,wt.json),b(dt,wt.artifacts||[]),b(ht,je),b(xe,""),b(Ke,""),b(le,e(ee)("status.completeIn",{seconds:((performance.now()-te)/1e3).toFixed(2)})),yi(e(le))}async function hx(){if(e(tt)||e(De)||e(v)||e(pa))return;if(!e(ae)){b(le,"Choose an installed model before running a request."),b(xe,e(le)),b(Ke,"");return}if(!e(d)&&e(ye)===!1){b(le,`${e(V).display_name} is not downloaded. Install a model package from the Models tab first.`),b(xe,e(le)),b(Ke,"");return}b(tt,!0),hi=new AbortController;const O=performance.now();b(vt,0),zt=window.setInterval(()=>{b(vt,(performance.now()-O)/1e3)},250);let te=[],se=[],Ae="",je="",wt=!1;const ha=[];b(xe,""),b(Ke,""),b(le,e(ee)("status.runningTask",{task:Cn(e(V).task)})),yi(e(le));const Zt=e(V).family==="liveavatar"?e(Xe):null;try{const Nt=ii(e(Fe));if(e(_)){await kP(Nt,O,hi.signal);return}if(e(H)&&!e(Be))throw new ns(`${e(V).display_name_en||e(V).display_name} requires a reference voice.`);if(e(U)&&!e(ke).trim()){const fi=e(C)?"Qwen3-TTS Base voice cloning":e(V).display_name_en||e(V).display_name;throw new ns(`${fi} requires a reference transcript. Choose a matching .txt file or enter the transcript.`)}if(e(E)&&!e(ge).trim())throw new ns(`${e(V).display_name_en||e(V).display_name} requires lyrics.`);if(e(V).family==="liveavatar"){if(!e(Xe))throw new ns("LiveAvatar requires driving audio.");if(!String(e(it).reference_image_path||"").trim())throw new ns("LiveAvatar requires a reference image.")}await yr();const Tn=e(ce).find(fi=>fi.id===e(V).id),$s={schema_version:1,created_at:new Date().toISOString(),backend:e(Te)?.backend,resolved_seed:Nt,model:{id:e(V).id,display_name:e(V).display_name,family:e(V).family,task:e(V).task,mode:Tn?.mode||e(V).mode||"offline",path:Tn?.path||e(pe),package_id:e(Ce)?void 0:xs(e(V))?.id,load_options:$o(e(V)),session_options:Tn?.session_options||Yr(e(V))},ui:{text:e(fe),lyrics:e(ge),language:e(we),moss_language:e(me),context:e(be),reference_text:e(ke),instructions:e($e),duration:e(Me),max_tokens:e(qe),asr_max_tokens:e(rt),long_text:e(ti),text_chunk_size:e(Di),voice:e(Bt),advanced_values:{...e(it)},advanced_json:e(ot)},input_files:{source:e(Xe)?.name,voice_reference:e(Be)?.name,video:e(Re)?.name,speaker_references:e(Oe).map(fi=>fi?.name||null)},requests:ha},pn=ds();if(e(j)){const fi=await to();fi&&(pn.voice_samples=fi)}e(B)&&e(Re)&&(pn.video=await Oc(e(Re),hi?.signal));const us=e(P)?await bl(e(Xe)):void 0,Xs=e(A)&&!e(j)&&!(e(G)&&e(Bt))?await bl(e(Be)):void 0;if(["tts","clon","vdes"].includes(e(V).task)){if(!e(fe).trim())throw new ns("Enter text to generate.");const fi=Math.max(40,e(Di));e(V).family==="voxcpm2"&&(pn.text_chunk_size=fi),e(V).family==="ming3_tts"&&e(ti)&&(pn.text_chunk_size=fi);const zn=e(ti)&&e(V).task!=="vdes"&&!["moss_ttsd","ming3_tts"].includes(e(V).family)?wf(e(fe),fi):[e(fe)],tn=[],vi=[];for(let As=0;As<zn.length;As+=1){b(le,zn.length>1?`Synthesizing chunk ${As+1} of ${zn.length}…`:e(ee)("status.runningTask",{task:Cn(e(V).task)}));const fs={model:e(V).id,input:zn[As],language:["moss_ttsd","moss_voicegen"].includes(e(V).family)?e(me):e(we),seed:La(Nt,As),options:pn};Va(e(V))&&!["kugelaudio","voxtral_tts"].includes(e(V).family)&&(fs.max_tokens=e(qe)),Xs?fs.voice_ref=Xs:e(Bt)?fs.voice=Ua[e(Bt)]||e(Bt):e(V).default_voice&&(fs.voice=e(V).default_voice),e(ke).trim()&&ga(e(V),"reference_text")&&(fs.reference_text=e(ke)),e(V).task==="vdes"&&e($e).trim()&&(e(V).family==="ming3_tts"?fs.instruct=e($e):fs.instructions=e($e)),ha.push({endpoint:"/v1/audio/speech",body:JSON.parse(JSON.stringify(fs))});const er=await hf(fs,hi.signal);tn.push(er.blob),vi.push({chunk:As+1,characters:zn[As].length,wall_ms:er.wallMs,rtf:er.rtf})}const Zs=await xT(tn);te=[{id:zn.length>1?"merged":"output",url:URL.createObjectURL(Zs)}],je=JSON.stringify({seed:Nt,chunks:zn.length,characters:e(fe).length,chunk_budget:e(Di),timings:vi},null,2)}else if(e(V).task==="asr"){if(!us)throw new ns("Choose an audio file.");e(V).family in Qs?pn.max_tokens=e(rt):e(V).family==="ming3_audio"&&(pn.max_tokens=e(qe));const fi={model:e(V).id,audio:us,language:e(we),text:e(be),options:pn},zn=["owsm","crisperwhisper"].includes(e(V).family)&&pn.return_timestamps===!0;ha.push({endpoint:zn?"/v1/audio/transcriptions/details":"/v1/audio/transcriptions",body:JSON.parse(JSON.stringify(fi))});const tn=await _f(fi,hi.signal,zn);Ae=String(tn.text||""),je=JSON.stringify(tn,null,2)}else{if(e(M)&&!us)throw new ns("Choose a source audio file.");const fi={options:pn};if(["gen","s2s","align"].includes(e(V).task)&&e(fe).trim()&&!e(f)&&!e(I)&&!["apollo","universr","reuse","sidon"].includes(e(V).family)&&(fi.text=e(fe)),["gen","s2s","align"].includes(e(V).task)&&e(we).trim()&&!e(f)&&!["apollo","universr","reuse","sidon"].includes(e(V).family)&&(fi.language=e(we)),e(V).task==="gen"){if(e(f))fi.lyrics=e(ge).trim();else{const vi=ul();vi&&(fi.text=vi),e(ge).trim()&&(fi.lyrics=e(ge)),!e(y)&&e(V).family!=="auk"&&(pn.duration_sec=e(Me))}fi.seed=Nt,Va(e(V))&&(fi.max_tokens=e(qe))}else e(V).task==="s2s"&&(["apollo","reuse","sidon"].includes(e(V).family)||(fi.seed=Nt),Va(e(V))&&(fi.max_tokens=e(qe)));us&&(fi.audio=us),Xs&&(fi.voice_ref=Xs),e(ke).trim()&&ga(e(V),"reference_text")&&(fi.reference_text=e(ke));const zn={model:e(V).id,request:fi};ha.push({endpoint:"/v1/tasks/run",body:JSON.parse(JSON.stringify(zn))});const tn=await Ql(zn,hi.signal);if(Ae=typeof tn.text=="string"?tn.text:"",je=JSON.stringify(tn,(vi,Zs)=>(vi==="audio"||vi==="payload")&&typeof Zs=="string"?`<base64 data: ${Zs.length} chars>`:Zs,2),typeof tn.audio=="string"&&(te=[{id:"output",url:vf(tn.audio)}]),Array.isArray(tn.named_audio_outputs)){for(const vi of te)URL.revokeObjectURL(vi.url);te=tn.named_audio_outputs.filter(vi=>typeof vi?.id=="string"&&typeof vi?.audio=="string").map(vi=>({id:vi.id,url:vf(vi.audio)}))}if(Array.isArray(tn.artifacts))if(e(V).family==="liveavatar"){b(le,"Encoding LiveAvatar MP4 in browser…");const vi=await q2(tn,Zt,"LiveAvatar","liveavatar");se=vi.artifacts,vi.warning&&yi(vi.warning)}else se=tn.artifacts.filter(vi=>typeof vi?.id=="string"&&typeof vi?.payload=="string").map(vi=>({id:vi.id,extension:vi.meta?.extension||(vi.meta?.format==="midi"?"mid":"bin"),mime:vi.meta?.mime||"application/octet-stream",url:`data:${vi.meta?.mime||"application/octet-stream"};base64,${vi.payload}`}))}const wr=JSON.stringify($s,null,2),kr=URL.createObjectURL(new Blob([wr],{type:"application/json"}));Js(),b(gt,te),b(dt,se),b(It,Ae),b(Ut,je),b(Rt,{url:kr,filename:`${$s.model.id}-${Date.now()}.settings.json`}),b(ht,$s.model.id);{const fi={id:et++,modelId:e(ht),task:$s.model.task,label:$s.model.display_name,createdAt:new Date().toISOString(),seed:Nt,audio:te,artifacts:se,text:Ae,json:je,settings:e(Rt),settingsJson:wr};b(ya,[fi,...e(ya)]),b(pt,fi.id),Bs(i().historyLimit)}b(xa,""),wt=!0;const qs=((performance.now()-O)/1e3).toFixed(2);b(xe,""),b(Ke,""),b(le,e(ee)("status.completeIn",{seconds:qs})),yi(e(le))}catch(Nt){Nt?.name==="AbortError"?(b(le,"Cancelled."),b(xe,""),b(Ke,"")):(b(le,Nt instanceof Error?Nt.message:String(Nt)),b(xe,Nt instanceof ns?e(le):""),b(Ke,Nt instanceof ns?"":e(le)),yi(`Request failed: ${e(le)}`))}finally{if(zt!==null&&window.clearInterval(zt),zt=null,!wt){for(const Nt of te)URL.revokeObjectURL(Nt.url);for(const Nt of se)URL.revokeObjectURL(Nt.url)}b(tt,!1),hi=null,Ji(e(V))&&!e(d)&&Mn()}}function xP(){hi?.abort()}function SP(O){if(!(e(Q)==="library"||e(Q)==="apps")){if(O.key==="Escape"&&e(Ge)){b(Ge,!1);return}(O.ctrlKey||O.metaKey)&&O.key==="Enter"&&!e(tt)&&(O.preventDefault(),e(Q)==="arena"?e(de)?.runArena():hx())}}function mu(O){O!==e(Q)&&(e(Q)==="library"&&!e(X)?.canClose()||e(Q)==="apps"&&!e(Z)?.canClose()||b(Q,O))}async function gu(){if(e(Te)?.ui_management)try{const O=await CT(),te=Object.fromEntries(O.map(je=>{const wt=e(ua)[je.id];return[je.id,{...je,total_bytes:je.total_bytes||wt?.total_bytes||0}]}));b(ua,{...e(ua),...te});let se=!1;for(const je of Oi){const wt=_i(je,e(ua)).filter(Zt=>Zt.state==="complete");for(const Zt of wt){const Nt=e(Ht)[Zt.id];Nt&&!Nt.installed&&b(Ht,{...e(Ht),[Zt.id]:{...Nt,installed:!0}}),Zt.finished_at_ms>(Hi[Zt.id]||0)&&(Hi={...Hi,[Zt.id]:Zt.finished_at_ms},se=!0)}wt.length>0&&je.id===e(ae)&&await Ts()}se&&(b(Ga,"idle"),await Ha());const Ae=Object.values(e(ua)).some(je=>je.state==="queued"||je.state==="running"||je.state==="cancelling");Ae&&ai===null?ai=window.setInterval(gu,1500):!Ae&&ai!==null&&(window.clearInterval(ai),ai=null)}catch(O){yi(`Installer status unavailable: ${O instanceof Error?O.message:O}`)}}async function TP(O,te,se=!1){if(e(Ht)[te.id]?.installed&&!se)return;const Ae=e(ua)[te.id];if(Ae&&["queued","running","cancelling"].includes(Ae.state))return;const je=e(Ht)[te.id]?.size_bytes,wt=se?"Update":"Download";if(!window.confirm(`${wt} ${O.display_name} ${te.label}${je?` (${zr(je)})`:""}?`))return;Fn(O,te),b(le,`Starting ${te.label} installation for ${O.display_name}...`);const Zt=e(Ht)[te.id]?.size_bytes||0;b(ua,{...e(ua),[te.id]:{id:te.id,state:"queued",message:"Sending installation request…",exit_code:-1,downloaded_bytes:0,total_bytes:Zt,progress_percent:0,started_at_ms:0,finished_at_ms:0}});try{ai===null&&(ai=window.setInterval(gu,1e3));const Nt=await TT({id:te.id,overwrite:se});b(ua,{...e(ua),[Nt.id]:{...Nt,total_bytes:Nt.total_bytes||Zt}}),await gu(),b(le,`${O.display_name} ${te.label} installation is running in the background.`),yi(e(le))}catch(Nt){b(le,Nt instanceof Error?Nt.message:String(Nt)),b(ua,{...e(ua),[te.id]:{id:te.id,state:"failed",message:e(le),exit_code:-1,downloaded_bytes:0,total_bytes:0,progress_percent:-1,started_at_ms:0,finished_at_ms:Date.now()}}),yi(`Installer failed to start: ${e(le)}`)}}async function $P(O,te){if(["queued","running","cancelling"].includes(te.state)){b(le,`Stopping ${O.display_name} download...`);try{const se=await $T(te.id);b(ua,{...e(ua),[se.id]:se}),ai===null&&(ai=window.setInterval(gu,500)),b(le,`${O.display_name} download is stopping. Staging files will be removed automatically.`),yi(e(le))}catch(se){b(le,se instanceof Error?se.message:String(se)),b(Ke,e(le)),b(ua,{...e(ua),[te.id]:{...te,state:"failed",message:e(le),finished_at_ms:Date.now()}})}}}async function qP(O,te){if(!["queued","running","cancelling"].includes(te.state)){b(le,`Cleaning partial ${O.display_name} download...`);try{const se=await qT(te.id);b(ua,{...e(ua),[te.id]:{...te,state:"cleaned",message:se.message,downloaded_bytes:0,total_bytes:0,progress_percent:100,finished_at_ms:Date.now()}}),b(le,se.message),yi(e(le))}catch(se){b(le,se instanceof Error?se.message:String(se)),b(Ke,e(le)),b(ua,{...e(ua),[te.id]:{...te,state:"failed",message:e(le),finished_at_ms:Date.now()}})}}}async function AP(O,te){if(!(!e(Ht)[te.id]?.installed||!window.confirm(`Delete ${O.display_name} ${te.label}?
|
||
|
||
Only this package precision will be removed.`))){b(le,`Deleting ${O.display_name} ${te.label}...`);try{St(O,te)&&(b(le,`Unloading ${O.display_name} ${te.label} before deletion...`),await mo(O.id),await Mn());const Ae=await AT(te.id);b(Ht,{...e(Ht),[te.id]:{...e(Ht)[te.id],installed:!1}});const je={...e(ua)};if(delete je[te.id],b(ua,je),Xc(O,te)){const wt=(O.install_packages||[]).find(Zt=>Zt.id!==te.id&&e(Ht)[Zt.id]?.installed),ha={...e(Ti)};wt?ha[O.id]=wt.id:delete ha[O.id],b(Ti,ha),localStorage.setItem("audiocpp.ui.packageIds",JSON.stringify(e(Ti))),O.id===e(ae)&&!e(Ce)&&(b(pe,Ss(O)),Wi())}Ys(e(Ht)),b(Ga,"idle"),await Ha(),O.id===e(ae)&&(await Ts(),Go()),b(le,Ae.message||`${O.display_name} ${te.label} deleted.`),yi(e(le))}catch(Ae){b(le,Ae instanceof Error?Ae.message:String(Ae)),yi(`Package deletion failed: ${e(le)}`)}}}Qn(async()=>{try{g9()}catch(se){Of.set(se instanceof Error?se.message:String(se)),yi(`Configuration could not be loaded: ${se instanceof Error?se.message:se}`)}await Mr(),jt=window.matchMedia("(prefers-color-scheme: dark)"),kt=jt.matches,ja=se=>{kt=se.matches,e(Le)==="system"&&xn()},jt.addEventListener("change",ja),b(Le,Fb(localStorage.getItem(Gb))),xn(e(Le));const O=localStorage.getItem("audiocpp.ui.language");b(ve,Sb(O?[O]:navigator.languages)),document.documentElement.lang=e(ve);try{const se=JSON.parse(localStorage.getItem("audiocpp.ui.modelsFolderHistory")||"[]");if(!Array.isArray(se)||se.some(Ae=>typeof Ae!="string"||!Ae.trim()))throw new Error("Invalid models-folder history.");b(wa,[...new Set(se)].slice(0,10))}catch(se){yi(`Models folder history unavailable: ${se instanceof Error?se.message:String(se)}`)}try{b(Ti,JSON.parse(localStorage.getItem("audiocpp.ui.packageIds")||"{}"))}catch{b(Ti,{})}localStorage.removeItem("audiocpp.ui.packagePaths");const te=localStorage.getItem("audiocpp.ui.model");if(te&&b(ae,te),b(V,e(fn).find(se=>se.id===e(ae))||e(fn)[0]||Oi[0]),b(Bt,""),b(ca,[]),b(Gn,ta(e(V))),e(ae)&&(Ks={...Ks,[e(Gn)]:e(ae)}),Kn(),await Mn(),e(nt).some(se=>se.group==="lora")&&Kn(),e(Te)?.ui_management)try{let se=await GT();const Ae=localStorage.getItem("audiocpp.ui.modelsFolder");Ae&&Ae!==se.models_root&&(se=await pb(Ae)),_l(se)}catch(se){b(le,se instanceof Error?se.message:String(se)),b(Ke,e(le)),yi(`Models folder unavailable: ${e(le)}`)}b(pe,Ss(e(V))),e(Te)?.ui_management?(await Ha(),await Ts(),Go()&&b(le,"No installed model is selected. Choose a downloaded model or install one from the Models tab.")):b(ye,!!e(ae)),await Jf(),await Xf(),await gu()}),Ns(()=>{zt!==null&&window.clearInterval(zt),Js();for(const O of e(ya))zo(O);hi?.abort(),e(Ia)?.state==="recording"&&e(Ia).stop(),Gt=!0,rn?.state==="recording"&&rn.stop(),hn?.getTracks().forEach(O=>O.stop()),un?.getTracks().forEach(O=>O.stop()),ai!==null&&window.clearInterval(ai),Jt!==null&&window.clearInterval(Jt),jt&&ja&&jt.removeEventListener("change",ja)}),Ee(()=>e(Q),()=>{e(Q)==="apps"&&b(ue,!0)}),Ee(()=>e(ve),()=>{b(ee,xb(e(ve)))}),Ee(()=>(e(Te),e(Ht)),()=>{b(fn,e(Te)&&!e(Te).ui_management?ic():[...Oi.map(O=>({...O,install_packages:O.install_packages?.map(te=>Pd(te,e(Ht)[te.id]))})),...ic(!0)])}),Ee(()=>e(fn),()=>{b(gl,ml(e(fn)))}),Ee(()=>(e(fn),e(ae),Oi),()=>{b(V,e(fn).find(O=>O.id===e(ae))||e(fn)[0]||Oi[0])}),Ee(()=>(e(V),e(Ti)),()=>{b(r,e(V)?.install_packages?.find(O=>O.id===e(Ti)[e(V).id])||e(V)?.install_packages?.[0])}),Ee(()=>(e(Ce),e(V),e(r)),()=>{b(o,e(Ce)||Ji(e(V))||!e(r)||!!e(r).load_target)}),Ee(()=>e(Gn),()=>{b(l,vr.find(O=>O.id===e(Gn))||vr[0])}),Ee(()=>(e(fn),e(Gn)),()=>{b(c,e(fn).filter(O=>ta(O)===e(Gn)).sort((O,te)=>pl(O.display_name,te.display_name)))}),Ee(()=>(e(ce),e(ae),e(V)),()=>{b(d,e(ce).some(O=>O.id===e(ae)&&O.loaded&&Ao(O,e(V))))}),Ee(()=>e(V),()=>{b(g,A2(e(V)?.family,e(V)?.task))}),Ee(()=>e(g),()=>{b(h,e(g)?.component)}),Ee(()=>e(nt),()=>{b(m,e(nt).filter(O=>O.group==="lora"))}),Ee(()=>(e(nt),e(V)),()=>{b(p,e(nt).filter(O=>O.group!=="lora"&&!(e(V)?.family==="ace_step"&&["lora","lora_scale"].includes(O.name))))}),Ee(()=>e(g),()=>{b(u,e(g)?.replacesGenericControls||zi)}),Ee(()=>e(g),()=>{b(f,e(g)?.requestMode==="yue2")}),Ee(()=>e(g),()=>{b(_,e(g)?.requestMode==="panel")}),Ee(()=>(e(g),e(Je)),()=>{b(v,e(g)?.blocksRunWhileUploading===!0&&e(Je))}),Ee(()=>e(V),()=>{b(y,e(V)?.id==="firered-audio-semantic-edit"||e(V)?.id==="firered-audio-acoustic-edit")}),Ee(()=>e(V),()=>{b(S,e(V)?.family==="ace_step")}),Ee(()=>e(V),()=>{b(q,(e(V)?.family==="breeze_tts"||e(V)?.family==="chatterbox_turbo"||e(V)?.family==="maya1"||e(V)?.family==="kugelaudio"||e(V)?.family==="voxtral_tts"||e(V)?.family==="lfm2_audio"&&!e(V)?.builtin_voices?.length)&&e(V)?.task==="tts")}),Ee(()=>(e(V),e(y)),()=>{b(M,["asr","vc","svc","s2s","sep","vad","diar","align","midi","turn","wake","cls"].includes(e(V)?.task)||e(y)||e(V)?.family==="liveavatar"||e(V)?.family==="latentsync"||e(V)?.family==="auk"&&e(V)?.task==="gen")}),Ee(()=>(e(M),e(V),e(u)),()=>{b(P,e(M)||e(V)?.task==="gen"&&!e(u).genSource)}),Ee(()=>e(V),()=>{b(B,e(V)?.request_options?.includes("video")===!0)}),Ee(()=>(e(V),e(q)),()=>{b(A,["clon","vc","svc"].includes(e(V)?.task)&&e(V)?.family!=="rvc"||e(V)?.task==="s2s"&&e(V)?.family==="personaplex"||e(V)?.task==="tts"&&!["supertonic"].includes(e(V)?.family)&&!e(q))}),Ee(()=>e(V),()=>{b(j,e(V)?.family==="vibevoice"||e(V)?.family==="moss_ttsd")}),Ee(()=>e(V),()=>{b(G,!!e(V)?.builtin_voices?.length)}),Ee(()=>e(V),()=>{b(C,e(V)?.task==="tts"&&e(V)?.family==="qwen3_tts"&&!e(V)?.id.includes("custom"))}),Ee(()=>e(V),()=>{b(R,["tts","clon"].includes(e(V)?.task)&&!["auk","maya1","moss_ttsd","voxtral_tts"].includes(e(V)?.family))}),Ee(()=>(e(R),e(Bt),e(V),e(C)),()=>{b(H,!(e(R)&&e(Bt))&&(["clon","vc","svc"].includes(e(V)?.task)&&e(V)?.family!=="rvc"||e(C)))}),Ee(()=>e(V),()=>{b(E,Ya(e(V),"lyrics"))}),Ee(()=>(e(V),e(R),e(Bt),e(Be),e(C)),()=>{b(U,Ya(e(V),"reference_text")&&!(e(R)&&e(Bt))||!!e(Be)&&e(C))}),Ee(()=>(e(G),e(ca),e(V)),()=>{b(Ka,e(G)?Array.from(new Set([...e(ca).filter(O=>!(O in Ua)),...e(V)?.builtin_voices||[]])):e(ca))}),Ee(()=>(e(Bt),e(Te),e(G),gf),()=>{b(N,e(Bt)&&e(Te)&&!e(G)?gf(Ua[e(Bt)]||e(Bt)):"")}),Ee(()=>(e(G),e(Ka)),()=>{b(L,e(G)||e(Ka).every(O=>O in Ua))}),Ee(()=>e(V),()=>{b(I,["lfm2_audio","lfm3_audio"].includes(e(V)?.family)&&e(V)?.task==="s2s")}),Ee(()=>(e(V),e(I),e(u)),()=>{b(T,["tts","clon","gen","s2s","align","vdes"].includes(e(V)?.task)&&!["apollo","universr","builtin_audio_utils","reuse","sidon"].includes(e(V)?.family)&&!e(I)&&!e(u).text)}),Ee(()=>e(V),()=>{b(F,e(V)?.task==="asr"&&["voxtral_realtime","nemotron_asr","higgs_audio_stt","sense_asr","vibevoice_asr_streaming","confucius4_r2t2"].includes(e(V)?.family))}),Ee(()=>(e(Te),e(Ht),e(Ga)),()=>{b(z,e(Te)===null||!!e(Te).ui_management&&Object.keys(e(Ht)).length===0&&e(Ga)!=="failed")}),Ee(()=>(e(fn),e(ce),e(ae),e(ye),e(Ht)),()=>{b(D,new Set(e(fn).filter(O=>{if(Ji(O)||e(ce).some(se=>se.id===O.id&&se.loaded)||O.id===e(ae)&&e(ye)===!0)return!0;const te=O.install_packages||[];return!te.length||te.some(se=>e(Ht)[se.id]===void 0)?!0:te.some(se=>e(Ht)[se.id]?.installed)}).map(O=>O.id)))}),Ee(()=>i(),()=>{Bs(i().historyLimit)}),bn(),en();var _x=iE();j4("1uha8ag",O=>{d4(te=>{Mp.title=te??""},[()=>(e(tt),e(vt),x(()=>e(tt)?`${e(vt).toFixed(1)} s · audio.cpp · Native Studio`:"audio.cpp · Native Studio"))])}),re("keydown",Tc,SP);var P_=xt(_x),j_=k(P_),vx=$(k(j_),2),bx=$(k(vx),2),CP=k(bx,!0);w(bx),w(vx),w(j_);var Zf=$(j_,2),hu=k(Zf);let yx;var GP=k(hu,!0);w(hu);var td=$(hu,2);let wx;var FP=k(td,!0);w(td);var _u=$(td,2);let kx;var MP=k(_u,!0);w(_u);var ad=$(_u,2);let xx;var zP=k(ad,!0);w(ad);var Sx=$(ad,2);{var EP=O=>{var te=Lf();let se;var Ae=k(te,!0);w(te),ne(je=>{se=ba(te,1,"",null,se,{active:e(Q)==="models"}),W(Ae,je)},[()=>(e(ee),x(()=>e(ee)("nav.models")))]),re("click",te,on),J(O,te)};_e(Sx,O=>{e(Te),x(()=>e(Te)?.ui_management!==!1)&&O(EP)})}var vu=$(Sx,2);let Tx;var UP=k(vu,!0);w(vu);var bu=$(vu,2);let $x;var RP=k(bu,!0);w(bu),w(Zf);var N_=$(Zf,2),O_=k(N_),BP=k(O_,!0);w(O_);var xl=$(O_,2);Mt(xl,5,()=>Sq,Qt,(O,te,se,Ae)=>{var je=cu(),wt=k(je,!0);w(je);var ha={};ne(()=>{W(wt,(e(te),x(()=>e(te).name))),ha!==(ha=(e(te),x(()=>e(te).code)))&&(je.value=(je.__value=(e(te),x(()=>e(te).code)))??"")}),J(O,je)}),w(xl);var qx;Vn(xl),w(N_);var D_=$(N_,2),I_=k(D_),PP=k(I_,!0);w(I_);var Sl=$(I_,2);Mt(Sl,5,()=>Nq,Qt,(O,te)=>{var se=cu(),Ae=k(se,!0);w(se);var je={};ne(wt=>{W(Ae,wt),je!==(je=(e(te),x(()=>e(te).id)))&&(se.value=(se.__value=(e(te),x(()=>e(te).id)))??"")},[()=>(e(ee),e(te),x(()=>e(ee)(`theme.${e(te).id}`,{},e(te).label)))]),J(O,se)}),w(Sl);var Ax;Vn(Sl),w(D_);var L_=$(D_,2);let Cx;var jP=$(k(L_),1,!0);w(L_),w(P_);var V_=$(P_,2),Gx=k(V_);{var NP=O=>{var te=VM(),se=k(te);{let Ae=Yt(()=>e(Q)==="apps");qi(m9(se,{get active(){return e(Ae)},$$legacy:!0}),je=>b(Z,je),()=>e(Z))}w(te),ne(()=>he(te,"hidden",e(Q)!=="apps")),J(O,te)};_e(Gx,O=>{e(ue)&&O(NP)})}var OP=$(Gx,2);{var DP=O=>{var te=Yz(),se=xt(te);Mt(se,5,()=>vr,Qt,(oa,Et)=>{var Ma=HM();let aa;var Ca=k(Ma),Li=$(Ca),Mi=k(Li,!0);w(Li),w(Ma),ne((ji,Ni)=>{Ma.disabled=e(pa),aa=ba(Ma,1,"",null,aa,{active:e(Gn)===e(Et).id}),W(Ca,`${ji??""} `),W(Mi,Ni)},[()=>(e(Et),e(ee),x(()=>jn(e(Et).id,e(Et).label,e(ee)))),()=>(e(fn),e(Et),x(()=>e(fn).filter(ji=>ta(ji)===e(Et).id).length))]),re("click",Ma,()=>eo(e(Et).id)),J(oa,Ma)}),w(se);var Ae=$(se,2),je=k(Ae),wt=k(je),ha=k(wt,!0);w(wt);var Zt=$(wt,2),Nt=k(Zt,!0);w(Zt);var Tn=$(Zt,2),$s=k(Tn,!0);w(Tn),w(je);var pn=$(je,2);let us;var Xs=k(pn,!0);w(pn),w(Ae);var wr=$(Ae,2),kr=k(wr),qs=k(kr),fi=k(qs),zn=k(fi,!0);w(fi);var tn=$(fi,2),vi=k(tn),Zs=k(vi,!0);w(vi),vi.value=vi.__value="";var As=$(vi);Mt(As,1,()=>(e(l),x(()=>e(l).tasks)),Qt,(oa,Et)=>{const Ma=Yt(()=>(e(c),e(Et),x(()=>e(c).filter(Mi=>Mi.task===e(Et)))));var aa=bs(),Ca=xt(aa);{var Li=Mi=>{var ji=WM();Mt(ji,5,()=>e(Ma),Qt,(Ni,Qi)=>{var Wn=cu(),ms=k(Wn);w(Wn);var Zn={};ne((Si,tr)=>{Wn.disabled=Si,W(ms,`${e(Qi),x(()=>e(Qi).display_name)??""}${tr??""}`),Zn!==(Zn=(e(Qi),x(()=>e(Qi).id)))&&(Wn.value=(Wn.__value=(e(Qi),x(()=>e(Qi).id)))??"")},[()=>(e(D),e(Qi),x(()=>!e(D).has(e(Qi).id))),()=>(e(D),e(Qi),e(ee),x(()=>e(D).has(e(Qi).id)?"":` — ${e(ee)("studio.notDownloaded")}`))]),J(Ni,Wn)}),w(ji),ne(Ni=>he(ji,"label",Ni),[()=>(e(Et),e(ee),x(()=>Cn(e(Et),e(ee))))]),J(Mi,ji)};_e(Ca,Mi=>{Y(e(Ma)),x(()=>e(Ma).length)&&Mi(Li)})}J(oa,aa)}),w(tn);var fs=$(tn,2),er=k(fs);let oc;var Eo=k(er,!0);w(er);var Tl=$(er,2),$l=k(Tl,!0);w(Tl),w(fs),w(qs);var ql=$(qs,2),$n=k(ql);{var ln=oa=>{var Et=QM(),Ma=xt(Et),aa=k(Ma,!0);w(Ma);var Ca=$(Ma,2);Dt(Ca);var Li=$(Ca,2),Mi=k(Li,!0);w(Li),ne((ji,Ni)=>{W(aa,ji),Ca.disabled=e(d)||e(Ie)||e(tt),he(Li,"href",(e(V),x(()=>e(V).weights_url))),W(Mi,Ni)},[()=>(e(ee),x(()=>e(ee)("studio.weightsPath"))),()=>(e(ee),x(()=>e(ee)("studio.downloadWeights")))]),za(Ca,()=>e(pe),ji=>b(pe,ji)),re("change",Ca,Ts),J(oa,Et)},Cs=oi(()=>(e(V),e(Te),x(()=>e(V).family==="builtin_audio_utils"&&e(Te)?.ui_management&&!Ji(e(V)))));_e($n,oa=>{e(Cs)&&oa(ln)})}var Yn=$($n,2);{var ps=oa=>{var Et=KM();Mt(Et,5,()=>(e(V),x(()=>Fa(e(V)))),Qt,(Ma,aa)=>{const Ca=Yt(()=>(e(aa),x(()=>e(aa).choice))),Li=Yt(()=>(Y(e(Ca)),e(V),e(ce),e(Ht),x(()=>!!(e(Ca)&&ka(e(V),e(Ca),e(ce),e(Ht)))))),Mi=Yt(()=>(Y(e(Ca)),e(V),e(ce),x(()=>!!(e(Ca)&&St(e(V),e(Ca),e(ce))))));var ji=Lf();let Ni;var Qi=k(ji,!0);w(ji),ne((Wn,ms)=>{ji.disabled=e(Ie)||!e(Li),he(ji,"title",Wn),Ni=ba(ji,1,"",null,Ni,ms),W(Qi,(Y(e(Ca)),e(aa),x(()=>e(Ca)?.label||e(aa).label)))},[()=>(Y(e(Ca)),Y(e(Mi)),e(ee),Y(e(Li)),e(aa),x(()=>e(Ca)?.load_target_error||(!e(Mi)&&!e(Ca)?.load_target?"Package load target is not ready":e(ee)(e(Mi)?"studio.unloadPackage":e(Li)?"studio.loadPackage":"studio.packageNotDownloaded",{package:e(Ca)?.label||e(aa).label})))),()=>({resident:e(Mi),"selected-package":!!(e(Ca)&&e(Li)&&Xc(e(V),e(Ca)))})]),re("click",ji,()=>e(Ca)&&pu(e(Ca))),J(Ma,ji)}),w(Et),ne(Ma=>he(Et,"aria-label",Ma),[()=>(e(ee),x(()=>e(ee)("studio.format")))]),J(oa,Et)},xr=oa=>{var Et=Lf();let Ma;var aa=k(Et,!0);w(Et),ne((Ca,Li,Mi)=>{Ma=ba(Et,1,"single-model-toggle",null,Ma,{resident:e(d)}),Et.disabled=Ca,he(Et,"title",Li),W(aa,Mi)},[()=>(e(ae),e(Ie),e(v),e(ye),e(d),e(o),e(V),x(()=>!e(ae)||e(Ie)||e(v)||e(ye)===!1||!e(d)&&!e(o)||Ji(e(V))&&!e(d))),()=>(e(r),e(o),e(V),e(d),e(ee),x(()=>e(r)?.load_target_error||(e(o)?Ji(e(V))&&!e(d)?e(ee)("studio.serverConfigured"):e(d)?e(ee)("studio.unload"):e(ee)("studio.load"):"Package load target is not ready"))),()=>(e(V),e(Ie),e(ee),e(d),x(()=>Ji(e(V))?e(Ie)?e(ee)("studio.working"):e(d)?e(ee)("studio.bundledLoaded"):e(ee)("studio.configured"):e(Ie)?e(ee)("studio.working"):e(d)?e(ee)(e(V).family==="builtin_audio_utils"?"studio.unload":"studio.bundledLoaded"):e(ee)("studio.load")))]),re("click",Et,ed),J(oa,Et)};_e(Yn,oa=>{e(ae),e(V),e(u),x(()=>e(ae)&&(e(V).install_packages||[]).length&&!e(u).packageButtons)?oa(ps):oa(xr,-1)})}w(ql);var lc=$(ql,2);{var yu=oa=>{var Et=YM(),Ma=k(Et,!0);w(Et),ne(aa=>W(Ma,aa),[()=>(e(ee),x(()=>Qr(e(ee))))]),J(oa,Et)};_e(lc,oa=>{e(ae),e(V),x(()=>e(ae)&&(e(V)?.input_hint_en||e(V)?.input_hint))&&oa(yu)})}w(kr);var cc=$(kr,2),wu=k(cc);{var H_=oa=>{var Et=Pz(),Ma=xt(Et),aa=k(Ma),Ca=k(aa),Li=k(Ca,!0);w(Ca);var Mi=$(Ca),ji=k(Mi,!0);w(Mi),w(aa);var Ni=$(aa,2),Qi=k(Ni),Wn=k(Qi,!0);w(Qi);var ms=$(Qi,2);{var Zn=$t=>{var Ft=JM(),Pt=k(Ft);Rc(Pt,{size:14});var At=$(Pt,1,!0);w(Ft),ne(ni=>{Ft.disabled=e(tt)||e(Ie)||e(pa),W(At,ni)},[()=>(e(ee),x(()=>e(ee)("settings.load")))]),re("click",Ft,()=>e(Lt)?.click()),J($t,Ft)};_e(ms,$t=>{e(u),x(()=>!e(u).settingsImport)&&$t(Zn)})}w(Ni),w(Ma);var Si=$(Ma,2);qi(Si,$t=>b(Lt,$t),()=>e(Lt));var tr=$(Si,2);{var id=$t=>{var Ft=XM(),Pt=k(Ft),At=k(Pt);Rd(At,{size:17});var ni=$(At,1,!0);w(Pt);var Xa=$(Pt,2);nn(Xa),w(Ft),ne((Ra,Na)=>{W(ni,Ra),he(Xa,"rows",(e(V),x(()=>e(V).task==="gen"?3:4))),he(Xa,"placeholder",Na)},[()=>(e(V),e(ee),x(()=>e(V).task==="gen"?e(ee)("request.prompt"):e(V).task==="align"?e(ee)("request.alignmentText"):e(ee)("request.text"))),()=>(e(V),e(ee),x(()=>e(V).task==="gen"?e(ee)("request.soundPlaceholder"):e(ee)("request.textPlaceholder")))]),za(Xa,()=>e(fe),Ra=>b(fe,Ra)),J($t,Ft)};_e(tr,$t=>{e(T)&&$t(id)})}var Uo=$(tr,2);{var Su=$t=>{var Ft=ZM(),Pt=k(Ft),At=k(Pt);Dt(At);var ni=$(At,3,!0);w(Pt);var Xa=$(Pt,2),Ra=k(Xa),Na=k(Ra,!0);w(Ra);var si=$(Ra,2);Dt(si),w(Xa),w(Ft),ne((ft,Ei)=>{W(ni,ft),W(Na,Ei),si.disabled=!e(ti)},[()=>(e(ee),x(()=>e(ee)("request.splitLongText"))),()=>(e(ee),x(()=>e(ee)("request.charactersPerChunk")))]),Wp(At,()=>e(ti),ft=>b(ti,ft)),za(si,()=>e(Di),ft=>b(Di,ft)),J($t,Ft)},K_=oi(()=>(e(V),e(u),x(()=>["tts","clon"].includes(e(V).task)&&e(V).family!=="moss_ttsd"&&!e(u).chunking)));_e(Uo,$t=>{e(K_)&&$t(Su)})}var Tu=$(Uo,2);{var tp=$t=>{{let Ft=Yt(()=>e(tt)||e(Ie)),Pt=Yt(()=>(e(Te),e(V),x(()=>e(Te)?.ui_management===!0&&!Ji(e(V)))));j7($t,{get modelId(){return e(V),x(()=>e(V).id)},get seed(){return e(Fe)},get busy(){return e(Ft)},get adapterEditable(){return e(Pt)},onBrowseAdapter:At=>Er(e(Ot),At),get paramSpecs(){return e(nt)},ensureLoaded:yr,requestOptions:ds,resolveRequestSeed:ii,setParameterValue:ks,log:yi,get tr(){return e(ee)},get text(){return e(fe)},set text(At){b(fe,At)},get lyrics(){return e(ge)},set lyrics(At){b(ge,At)},get language(){return e(we)},set language(At){b(we,At)},get duration(){return e(Me)},set duration(At){b(Me,At)},get rewritingCaption(){return e(De)},set rewritingCaption(At){b(De,At)},get advancedValues(){return e(it)},set advancedValues(At){b(it,At)},get outputText(){return e(It)},set outputText(At){b(It,At)},get outputJson(){return e(Ut)},set outputJson(At){b(Ut,At)},get status(){return e(le)},set status(At){b(le,At)},get warningStatus(){return e(xe)},set warningStatus(At){b(xe,At)},get errorStatus(){return e(Ke)},set errorStatus(At){b(Ke,At)},$$legacy:!0})}},Y_=$t=>{var Ft=bs(),Pt=xt(Ft);{let At=Yt(()=>e(tt)||e(Ie)||!e(o)),ni=Yt(()=>(e(V),e(ce),Y(Nc),x(()=>e(V).family==="yue2"&&Ji(e(V))?async()=>{b(ce,await Nc())}:Mn))),Xa=Yt(()=>e(Yi)==="source"),Ra=Yt(()=>(e(Ia),e(He),x(()=>!!e(Ia)||e(He))));kd(Pt,()=>e(h),(Na,si)=>{si(Na,{get task(){return e(V),x(()=>e(V).task)},get busy(){return e(At)},get paramSpecs(){return e(nt)},get advancedValues(){return e(it)},get catalogEntries(){return e(fn)},get loadedModels(){return e(ce)},get server(){return e(Te)},get modelId(){return e(V),x(()=>e(V).id)},setPanelRunner:yP,modelPathFor:Ss,sessionOptionsFor:Yr,loadOptionsFor:$o,loadTargetFor:hl,get refreshModels(){return e(ni)},log:yi,get tr(){return e(ee)},localizedParameterText:ws,setParameterValue:ks,get sourceFile(){return e(Xe)},get savedVoices(){return e(Ai)},clearSource:st,get sourceRecording(){return e(Xa)},get sourceRecordingBlocked(){return e(Ra)},setSourceFile:ft=>b(Xe,ft),startSourceRecording:()=>R_("source"),stopSourceRecording:B_,get lyrics(){return e(ge)},set lyrics(ft){b(ge,ft)},get seed(){return e(Fe)},set seed(ft){b(Fe,ft)},get loraUploading(){return e(Je)},set loraUploading(ft){b(Je,ft)},$$legacy:!0})})}J($t,Ft)},J_=$t=>{var Ft=ez(),Pt=xt(Ft),At=k(Pt),ni=$(At),Xa=k(ni,!0);w(ni),w(Pt);var Ra=$(Pt,2);nn(Ra),ne((Na,si)=>{W(At,`${Na??""} `),W(Xa,si),Ra.required=e(E),he(Ra,"aria-required",e(E))},[()=>(e(ee),x(()=>e(ee)("request.lyrics"))),()=>(e(E),e(ee),x(()=>e(E)?e(ee)("voice.required"):e(ee)("request.optional")))]),za(Ra,()=>e(ge),Na=>b(ge,Na)),J($t,Ft)};_e(Tu,$t=>{e(V),x(()=>e(V).family==="ace_step")?$t(tp):e(h)?$t(Y_,1):(e(V),x(()=>e(V).task==="gen")&&$t(J_,2))})}var ap=$(Tu,2);{var Al=$t=>{var Ft=tz(),Pt=xt(Ft),At=k(Pt);Wo(At,{size:17});var ni=$(At),Xa=$(ni),Ra=k(Xa,!0);w(Xa),w(Pt);var Na=$(Pt,2);nn(Na),ne((si,ft)=>{W(ni,`${si??""} `),W(Ra,ft)},[()=>(e(ee),x(()=>e(ee)("request.context"))),()=>(e(ee),x(()=>e(ee)("request.contextHint")))]),za(Na,()=>e(be),si=>b(be,si)),J($t,Ft)},X_=oi(()=>(e(V),x(()=>e(V).task==="asr"&&!["samsone","audio_flamingo","index_echo"].includes(e(V).family))));_e(ap,$t=>{e(X_)&&$t(Al)})}var Cl=$(ap,2);{var nd=$t=>{var Ft=az(),Pt=xt(Ft),At=k(Pt);Rd(At,{size:17});var ni=$(At,1,!0);w(Pt);var Xa=$(Pt,2);nn(Xa),ne((Ra,Na)=>{W(ni,Ra),he(Xa,"placeholder",Na)},[()=>(e(ee),x(()=>e(ee)("request.voiceDescription"))),()=>(e(ee),x(()=>e(ee)("request.voiceDescriptionPlaceholder")))]),za(Xa,()=>e($e),Ra=>b($e,Ra)),J($t,Ft)};_e(Cl,$t=>{e(V),x(()=>e(V).task==="vdes")&&$t(nd)})}var dc=$(Cl,2),ip=k(dc);{var Z_=$t=>{var Ft=rz(),Pt=k(Ft),At=k(Pt),ni=$(At);{var Xa=ri=>{var pi=du(),an=k(pi,!0);w(pi),ne(wi=>W(an,wi),[()=>(e(ee),x(()=>e(ee)("request.autoLanguage")))]),J(ri,pi)};_e(ni,ri=>{e(V),x(()=>!Kr[e(V).family])&&ri(Xa)})}w(Pt);var Ra=$(Pt,2);{var Na=ri=>{var pi=iz();Dt(pi),za(pi,()=>e(me),an=>b(me,an)),J(ri,pi)},si=oi(()=>(e(V),x(()=>["moss_ttsd","moss_voicegen"].includes(e(V).family)))),ft=ri=>{var pi=nz();Mt(pi,5,()=>(e(V),x(()=>Kr[e(V).family])),Qt,(an,wi)=>{var $i=cu(),cn=k($i,!0);w($i);var _n={};ne(()=>{W(cn,e(wi)),_n!==(_n=e(wi))&&($i.value=($i.__value=e(wi))??"")}),J(an,$i)}),w(pi),rs(pi,()=>e(we),an=>b(we,an)),J(ri,pi)},Ei=ri=>{var pi=sz();Dt(pi),za(pi,()=>e(we),an=>b(we,an)),J(ri,pi)};_e(Ra,ri=>{e(si)?ri(Na):(e(V),x(()=>Kr[e(V).family])?ri(ft,1):ri(Ei,-1))})}w(Ft),ne(ri=>W(At,`${ri??""} `),[()=>(e(ee),x(()=>e(ee)("request.language")))]),J($t,Ft)},lj=oi(()=>(e(V),e(u),x(()=>["tts","clon","asr","gen","s2s","align","vdes"].includes(e(V).task)&&!e(u).language&&!["apollo","universr","moss_transcribe_diarize","builtin_audio_utils","sam_audio","samsone","gigaam_asr","maya1","owsm","owsm_ctc","index_echo","audio_flamingo","kugelaudio","reuse","sidon","hviske_asr_v6","voxtral_tts"].includes(e(V).family))));_e(ip,$t=>{e(lj)&&$t(Z_)})}var Ox=$(ip,2);{var cj=$t=>{var Ft=oz(),Pt=k(Ft),At=k(Pt),ni=$(At),Xa=k(ni,!0);w(ni),w(Pt);var Ra=$(Pt,2);Dt(Ra),w(Ft),ne((Na,si)=>{W(At,`${Na??""} `),W(Xa,si)},[()=>(e(ee),x(()=>e(ee)("request.seed"))),()=>(e(ee),x(()=>e(ee)("request.randomSeed")))]),za(Ra,()=>e(Fe),Na=>b(Fe,Na)),J($t,Ft)},dj=oi(()=>(e(V),e(u),x(()=>["tts","clon","gen","s2s","vdes"].includes(e(V).task)&&!e(u).seed&&!["apollo","builtin_audio_utils","reuse","sidon"].includes(e(V).family))));_e(Ox,$t=>{e(dj)&&$t(cj)})}var Dx=$(Ox,2);{var uj=$t=>{var Ft=dz(),Pt=k(Ft),At=k(Pt,!0);w(Pt);var ni=$(Pt,2);{var Xa=Na=>{var si=lz();Dt(si),ne(()=>{he(si,"min",(e(V),x(()=>e(V).family==="canary_asr"?0:1))),he(si,"max",(e(V),x(()=>e(V).family==="canary_asr"?1015:e(V).family==="cohere_asr"?1014:void 0)))}),za(si,()=>e(rt),ft=>b(rt,ft)),J(Na,si)},Ra=Na=>{var si=cz();Dt(si),za(si,()=>e(qe),ft=>b(qe,ft)),J(Na,si)};_e(ni,Na=>{e(V),x(()=>e(V).family in Qs)?Na(Xa):Na(Ra,-1)})}w(Ft),ne(Na=>W(At,Na),[()=>(e(ee),x(()=>e(ee)("request.maxTokens")))]),J($t,Ft)},fj=oi(()=>(e(V),x(()=>Va(e(V))&&!["kugelaudio","crisperwhisper","audio_flamingo","owsm","hviske_asr_v6","voxtral_tts"].includes(e(V).family))));_e(Dx,$t=>{e(fj)&&$t(uj)})}var pj=$(Dx,2);{var mj=$t=>{var Ft=uz(),Pt=k(Ft),At=k(Pt,!0),ni=$(At);{var Xa=ft=>{var Ei=du(),ri=k(Ei,!0);w(Ei),ne(pi=>W(ri,pi),[()=>(e(ee),x(()=>e(ee)("request.autoDuration")))]),J(ft,Ei)};_e(ni,ft=>{e(S)&&ft(Xa)})}w(Pt);var Ra=$(Pt,2);Dt(Ra);var Na=$(Ra,2);{var si=ft=>{var Ei=j2(),ri=k(Ei,!0);w(Ei),ne(pi=>W(ri,pi),[()=>(e(ee),e(it),x(()=>e(ee)("request.minimaxFrames",{frames:Number(e(it).num_frames||0)})))]),J(ft,Ei)};_e(Na,ft=>{e(V),x(()=>e(V).family==="minimax_h3")&&ft(si)})}w(Ft),ne(ft=>{W(At,ft),he(Ra,"min",e(S)?-1:1),Gi(Ra,e(Me))},[()=>(e(ee),x(()=>e(ee)("request.duration")))]),re("input",Ra,ft=>wo(ft.currentTarget.valueAsNumber)),J($t,Ft)};_e(pj,$t=>{e(V),e(u),x(()=>e(V).task==="gen"&&!e(u).duration)&&$t(mj)})}w(dc);var Ix=$(dc,2);{var gj=$t=>{var Ft=_z(),Pt=k(Ft),At=k(Pt);Ud(At,{size:17});var ni=$(At),Xa=$(ni),Ra=k(Xa,!0);w(Xa),w(Pt);var Na=$(Pt,2);qi(Na,Wa=>b(Ne,Wa),()=>e(Ne));var si=$(Na,2),ft=k(si);Rc(ft,{size:16});var Ei=$(ft),ri=k(Ei,!0);w(Ei);var pi=$(Ei),an=k(pi,!0);w(pi),w(si);var wi=$(si,2),$i=k(wi);{var cn=Wa=>{var Oa=fz(),ia=xt(Oa),da=k(ia);Qo(da,{size:14});var Da=$(da,1,!0);w(ia);var ki=$(ia,2),dn=k(ki,!0);w(ki),ne((Nn,gs)=>{W(Da,Nn),W(dn,gs)},[()=>(e(ee),x(()=>e(ee)("request.stopRecording"))),()=>(e(ee),x(()=>e(ee)("request.recordingMicrophone")))]),re("click",ia,B_),J(Wa,Oa)},_n=Wa=>{var Oa=pz(),ia=xt(Oa),da=k(ia);uf(da,{size:14});var Da=$(da,1,!0);w(ia);var ki=$(ia,2),dn=k(ki);po(dn,{size:15}),w(ki);var Nn=$(ki,2);{var gs=On=>{var En=du(),Un=k(En,!0);w(En),ne(()=>W(Un,(e(Xe),x(()=>e(Xe).name)))),J(On,En)};_e(Nn,On=>{e(Xe)&&On(gs)})}ne((On,En,Un,Ro)=>{ia.disabled=On,W(Da,En),ki.disabled=!e(Xe),he(ki,"title",Un),he(ki,"aria-label",Ro)},[()=>(e(Ia),e(He),x(()=>!!e(Ia)||e(He))),()=>(e(ee),x(()=>e(ee)("request.recordMicrophone"))),()=>(e(ee),x(()=>e(ee)("file.clear"))),()=>(e(ee),x(()=>e(ee)("file.clear")))]),re("click",ia,()=>R_("source")),re("click",ki,st),J(Wa,Oa)};_e($i,Wa=>{e(Yi)==="source"?Wa(cn):Wa(_n,-1)})}w(wi);var Vi=$(wi,2);{let Wa=Yt(()=>(e(ee),x(()=>e(ee)("file.preview"))));os(Vi,{get file(){return e(Xe)},kind:"audio",get label(){return e(Wa)}})}var Pi=$(Vi,2);{var qn=Wa=>{var Oa=hz(),ia=k(Oa),da=k(ia),Da=k(da,!0);w(da);var ki=$(da,2),dn=k(ki,!0);w(ki),w(ia);var Nn=$(ia,2);{var gs=En=>{var Un=mz(),Ro=k(Un,!0);w(Un),ne(uc=>W(Ro,uc),[()=>(e(ee),x(()=>e(ee)("request.stopLive")))]),re("click",Un,gx),J(En,Un)},On=En=>{var Un=gz(),Ro=k(Un,!0);w(Un),ne((uc,np)=>{Un.disabled=uc,W(Ro,np)},[()=>(e(tt),e(Ia),x(()=>e(tt)||!!e(Ia))),()=>(e(ee),x(()=>e(ee)("request.startLive")))]),re("click",Un,bP),J(En,Un)};_e(Nn,En=>{e(He)?En(gs):En(On,-1)})}w(Oa),ne((En,Un)=>{W(Da,En),W(dn,Un)},[()=>(e(ee),x(()=>e(ee)("request.liveTitle"))),()=>(e(ee),x(()=>e(ee)("request.liveDescription")))]),J(Wa,Oa)};_e(Pi,Wa=>{e(F)&&Wa(qn)})}w(Ft),ne((Wa,Oa,ia,da)=>{W(ni,`${Wa??""} `),W(Ra,Oa),W(ri,ia),W(an,da)},[()=>(e(ee),x(()=>e(ee)("request.sourceAudio"))),()=>(e(M),e(ee),x(()=>e(M)?"":`(${e(ee)("request.optional")})`)),()=>(e(ee),x(()=>e(ee)("file.choose"))),()=>(e(Xe),e(ee),x(()=>e(Xe)?.name||e(ee)("file.none")))]),re("change",Na,Wa=>b(Xe,Wa.currentTarget.files?.[0]||null)),J($t,Ft)};_e(Ix,$t=>{e(P),e(V),x(()=>e(P)&&e(V).family!=="liveavatar")&&$t(gj)})}var Lx=$(Ix,2);{var hj=$t=>{var Ft=vz(),Pt=k(Ft),At=k(Pt);_T(At,{size:17});var ni=$(At,2),Xa=k(ni,!0);w(ni),w(Pt);var Ra=$(Pt,2);qi(Ra,Vi=>b(Ye,Vi),()=>e(Ye));var Na=$(Ra,2),si=k(Na),ft=k(si,!0);w(si);var Ei=$(si),ri=k(Ei,!0);w(Ei),w(Na);var pi=$(Na,2),an=k(pi),wi=k(an,!0);w(an);var $i=$(an,2);{var cn=Vi=>{var Pi=du(),qn=k(Pi,!0);w(Pi),ne(()=>W(qn,(e(Re),x(()=>e(Re).name)))),J(Vi,Pi)};_e($i,Vi=>{e(Re)&&Vi(cn)})}w(pi);var _n=$(pi,2);{let Vi=Yt(()=>(e(ee),x(()=>e(ee)("file.preview"))));os(_n,{get file(){return e(Re)},kind:"video",get label(){return e(Vi)}})}w(Ft),ne((Vi,Pi,qn,Wa)=>{W(Xa,Vi),W(ft,Pi),W(ri,qn),an.disabled=!e(Re),W(wi,Wa)},[()=>(e(ee),x(()=>e(ee)("request.optional"))),()=>(e(ee),x(()=>e(ee)("file.choose"))),()=>(e(Re),e(ee),x(()=>e(Re)?.name||e(ee)("file.none"))),()=>(e(ee),x(()=>e(ee)("file.clear")))]),re("change",Ra,Vi=>b(Re,Vi.currentTarget.files?.[0]||null)),re("click",an,yt),J($t,Ft)};_e(Lx,$t=>{e(B)&&$t(hj)})}var Vx=$(Lx,2);{var _j=$t=>{var Ft=$z(),Pt=k(Ft),At=k(Pt);ff(At,{size:17});var ni=$(At,1,!0);w(Pt);var Xa=$(Pt,2);{let wi=Yt(()=>e(ui)?`saved:${e(ui)}`:e(Bt)?`preset:${e(Bt)}`:""),$i=Yt(()=>e(R)?e(Ka):[]),cn=Yt(()=>(e(V),e(Ai),x(()=>e(V).family==="kugelaudio"?[]:e(Ai)))),_n=Yt(()=>(e(G),e(V),e(ee),e(Te),e(L),x(()=>e(G)||e(V).family==="kugelaudio"?e(ee)("voice.preset"):e(Te)?.ui_management===!1||!e(L)?e(ee)("voice.configured"):e(ee)("voice.quickStart")))),Vi=Yt(()=>(e(ee),x(()=>e(ee)("voice.useReference")))),Pi=Yt(()=>(e(V),x(()=>e(V).family!=="kugelaudio")));qb(Xa,{id:"quick-start-voice",get value(){return e(wi)},get presets(){return e($i)},get savedVoices(){return e(cn)},get presetLabel(){return e(_n)},get emptyLabel(){return e(Vi)},get allowEmpty(){return e(Pi)},get tr(){return e(ee)},onselect:_P})}var Ra=$(Xa,2);{var Na=wi=>{var $i=bs(),cn=xt($i);{var _n=Vi=>{var Pi=N2(),qn=xt(Pi);{var Wa=da=>{var Da=bz(),ki=k(Da,!0);w(Da),ne(dn=>W(ki,dn),[()=>(e(ee),x(()=>e(ee)("voice.bundledNote")))]),J(da,Da)};_e(qn,da=>{e(G),e(V),x(()=>!e(G)&&e(V).family!=="kugelaudio")&&da(Wa)})}var Oa=$(qn,2);{var ia=da=>{{let Da=Yt(()=>(e(ee),x(()=>e(ee)("file.preview"))));os(da,{get src(){return e(N)},get name(){return e(Bt)},kind:"audio",get label(){return e(Da)}})}};_e(Oa,da=>{e(N)&&da(ia)})}J(Vi,Pi)};_e(cn,Vi=>{e(Bt)&&Vi(_n)})}J(wi,$i)};_e(Ra,wi=>{e(R),e(Ka),x(()=>e(R)&&e(Ka).length)&&wi(Na)})}var si=$(Ra,2);{var ft=wi=>{var $i=wz(),cn=k($i),_n=k(cn),Vi=k(_n),Pi=$(Vi),qn=k(Pi,!0);w(Pi),w(_n);var Wa=$(_n,2);qi(Wa,On=>b(Ue,On),()=>e(Ue));var Oa=$(Wa,2),ia=k(Oa);Rc(ia,{size:16});var da=$(ia),Da=k(da,!0);w(da);var ki=$(da),dn=k(ki,!0);w(ki),w(Oa),w(cn);var Nn=$(cn,2);{var gs=On=>{var En=yz(),Un=k(En),Ro=k(Un);qt(),w(Un);var uc=$(Un,2);qi(uc,qu=>b(mt,qu),()=>e(mt));var np=$(uc,2),a6=k(np);Wo(a6,{size:16});var t1=$(a6),$j=k(t1,!0);w(t1);var i6=$(t1),qj=k(i6,!0);w(i6),w(np),w(En),ne((qu,Aj,Cj)=>{W(Ro,`${qu??""} `),W($j,Aj),W(qj,Cj)},[()=>(e(ee),x(()=>e(ee)("voice.referenceText"))),()=>(e(ee),x(()=>e(ee)("file.choose"))),()=>(e(_t),e(ee),x(()=>e(_t)?.name||e(ee)("file.none")))]),re("change",uc,qu=>sa(qu.currentTarget.files?.[0]||null)),J(On,En)};_e(Nn,On=>{e(V),x(()=>e(V).family!=="auk")&&On(gs)})}w($i),ne((On,En,Un,Ro)=>{W(Vi,`${On??""} `),W(qn,En),W(Da,Un),W(dn,Ro)},[()=>(e(ee),x(()=>e(ee)("voice.reference"))),()=>(e(H),e(ee),x(()=>e(H)?e(ee)("voice.required"):e(ee)("voice.optional"))),()=>(e(ee),x(()=>e(ee)("file.choose"))),()=>(e(Be),e(ee),x(()=>e(Be)?.name||e(ee)("file.none")))]),re("change",Wa,On=>ze(On.currentTarget.files?.[0]||null)),J(wi,$i)};_e(si,wi=>{(!e(G)||!e(Bt))&&wi(ft)})}var Ei=$(si,2);{var ri=wi=>{var $i=Sz(),cn=k($i);{var _n=Pi=>{var qn=kz(),Wa=xt(qn),Oa=k(Wa,!0);w(Wa);var ia=$(Wa,2),da=k(ia,!0);w(ia),ne((Da,ki)=>{W(Oa,Da),W(da,ki)},[()=>(e(ee),x(()=>e(ee)("request.stopRecording"))),()=>(e(ee),x(()=>e(ee)("voice.recording")))]),re("click",Wa,B_),J(Pi,qn)},Vi=Pi=>{var qn=xz(),Wa=xt(qn),Oa=k(Wa);uf(Oa,{size:14});var ia=$(Oa,1,!0);w(Wa);var da=$(Wa,2),Da=k(da,!0);w(da);var ki=$(da,2);{var dn=Nn=>{var gs=du(),On=k(gs,!0);w(gs),ne(()=>W(On,(e(Be),x(()=>e(Be).name)))),J(Nn,gs)};_e(ki,Nn=>{e(Be)&&Nn(dn)})}ne((Nn,gs,On,En)=>{Wa.disabled=Nn,W(ia,gs),da.disabled=On,W(Da,En)},[()=>(e(Ia),e(He),x(()=>!!e(Ia)||e(He))),()=>(e(ee),x(()=>e(ee)("request.recordMicrophone"))),()=>(e(Bt),e(ui),e(Be),e(_t),e(ke),x(()=>!e(Bt)&&!e(ui)&&!e(Be)&&!e(_t)&&!e(ke).trim())),()=>(e(ee),x(()=>e(ee)("voice.clearReference")))]),re("click",Wa,()=>R_("voice")),re("click",da,Pe),J(Pi,qn)};_e(cn,Pi=>{e(Yi)==="voice"?Pi(_n):Pi(Vi,-1)})}w($i),J(wi,$i)};_e(Ei,wi=>{(!e(G)||!e(Bt))&&wi(ri)})}var pi=$(Ei,2);{var an=wi=>{var $i=N2(),cn=xt($i);{let Pi=Yt(()=>(e(ee),x(()=>e(ee)("file.preview"))));os(cn,{get file(){return e(Be)},kind:"audio",get label(){return e(Pi)}})}var _n=$(cn,2);{var Vi=Pi=>{var qn=Tz(),Wa=xt(qn),Oa=k(Wa),ia=$(Oa),da=k(ia,!0);w(ia),w(Wa);var Da=$(Wa,2);nn(Da),ne((ki,dn,Nn)=>{W(Oa,`${ki??""} `),W(da,dn),he(Da,"placeholder",Nn)},[()=>(e(ee),x(()=>e(ee)("voice.transcript"))),()=>(e(U),e(ee),x(()=>e(U)?e(ee)("voice.requiredClone"):e(ee)("voice.recommendedClone"))),()=>(e(ee),x(()=>e(ee)("voice.transcriptPlaceholder")))]),za(Da,()=>e(ke),ki=>b(ke,ki)),J(Pi,qn)};_e(_n,Pi=>{e(V),x(()=>e(V).family!=="auk")&&Pi(Vi)})}J(wi,$i)};_e(pi,wi=>{(!e(G)||!e(Bt))&&wi(an)})}w(Ft),ne((wi,$i)=>{he(Ft,"aria-label",wi),W(ni,$i)},[()=>(e(ee),x(()=>e(ee)("voice.reference"))),()=>(e(ee),x(()=>e(ee)("voice.reference")))]),J($t,Ft)};_e(Vx,$t=>{e(A),e(V),e(j),e(u),x(()=>(e(A)||e(V).family==="kugelaudio")&&!e(j)&&!e(u).voice)&&$t(_j)})}var Hx=$(Vx,2);{var vj=$t=>{var Ft=Cz(),Pt=k(Ft),At=k(Pt);Wl(At,{size:17});var ni=$(At),Xa=$(ni),Ra=k(Xa,!0);w(Xa),w(Pt);var Na=$(Pt,2);Mt(Na,4,()=>[0,1,2,3],Qt,(Ei,ri)=>{var pi=qz(),an=k(pi),wi=k(an,!0);w(an);var $i=$(an,2);qi($i,(Da,ki)=>Ct(Ve,e(Ve)[ki]=Da),Da=>e(Ve)?.[Da],()=>[ri]);var cn=$($i,2),_n=k(cn),Vi=k(_n,!0);w(_n);var Pi=$(_n,2),qn=k(Pi,!0);w(Pi),w(cn);var Wa=$(cn,2),Oa=k(Wa),ia=k(Oa,!0);w(Oa),w(Wa);var da=$(Wa,2);{let Da=Yt(()=>(e(ee),x(()=>e(ee)("file.preview"))));os(da,{get file(){return e(Oe),x(()=>e(Oe)[ri])},kind:"audio",get label(){return e(Da)}})}w(pi),ne((Da,ki,dn,Nn)=>{he(an,"for","vibevoice-speaker-"+ri),W(wi,Da),he($i,"id","vibevoice-speaker-"+ri),he(cn,"for","vibevoice-speaker-"+ri),W(Vi,ki),W(qn,dn),Oa.disabled=(e(Oe),x(()=>!e(Oe)[ri])),W(ia,Nn)},[()=>(e(ee),x(()=>e(ee)("voice.speaker",{number:ri+1}))),()=>(e(ee),x(()=>e(ee)("file.choose"))),()=>(e(Oe),e(ee),x(()=>e(Oe)[ri]?.name||e(ee)("file.none"))),()=>(e(ee),x(()=>e(ee)("file.clear")))]),re("change",$i,Da=>ct(ri,Da.currentTarget.files?.[0]||null)),re("click",Oa,()=>Ze(ri)),J(Ei,pi)}),w(Na);var si=$(Na,2);{var ft=Ei=>{var ri=Az(),pi=xt(ri),an=k(pi,!0);w(pi);var wi=$(pi,2);nn(wi),ne(($i,cn)=>{W(an,$i),he(wi,"placeholder",cn)},[()=>(e(ee),x(()=>e(ee)("voice.transcript"))),()=>(e(ee),x(()=>e(ee)("voice.dialoguePlaceholder")))]),za(wi,()=>e(ke),$i=>b(ke,$i)),J(Ei,ri)};_e(si,Ei=>{e(V),x(()=>e(V).family==="moss_ttsd")&&Ei(ft)})}w(Ft),ne((Ei,ri)=>{W(ni,`${Ei??""} `),W(Ra,ri)},[()=>(e(ee),x(()=>e(ee)("voice.speakerReferences"))),()=>(e(ee),x(()=>e(ee)("voice.upToFour")))]),J($t,Ft)};_e(Hx,$t=>{e(j)&&$t(vj)})}var Wx=$(Hx,2);{var bj=$t=>{{let Ft=Yt(()=>(e(Te),e(V),x(()=>e(Te)?.ui_management===!0&&!Ji(e(V))))),Pt=Yt(()=>e(tt)||e(Ie));Fq($t,{get specs(){return e(m)},get values(){return e(it)},get editable(){return e(Ft)},get busy(){return e(Pt)},onChange:ks,onBrowse:At=>Er(e(Ot),At)})}};_e(Wx,$t=>{e(m),x(()=>e(m).length)&&$t(bj)})}var Qx=$(Wx,2);{var yj=$t=>{var Ft=Uz(),Pt=k(Ft),At=k(Pt);cb(At,{size:16});var ni=$(At),Xa=$(ni),Ra=k(Xa,!0);w(Xa),w(Pt);var Na=$(Pt,2);Mt(Na,5,()=>e(p),Qt,(si,ft)=>{var Ei=Ez();let ri;var pi=k(Ei),an=k(pi,!0);w(pi);var wi=$(pi,2);{var $i=Oa=>{var ia=Gz(),da=k(ia);Dt(da);var Da=$(da,3,!0);w(ia),ne((ki,dn)=>{he(da,"id",(e(ft),x(()=>"param-"+e(ft).name))),Dl(da,ki),W(Da,dn)},[()=>(e(it),e(ft),x(()=>!!e(it)[e(ft).name])),()=>(e(it),e(ft),e(ee),x(()=>e(it)[e(ft).name]?e(ee)("common.enabled"):e(ee)("common.disabled")))]),re("change",da,ki=>ks(e(ft),ki.currentTarget.checked)),J(Oa,ia)},cn=Oa=>{var ia=Fz();Mt(ia,5,()=>(e(ft),x(()=>e(ft).choices||[])),Qt,(Da,ki)=>{var dn=cu(),Nn=k(dn,!0);w(dn);var gs={};ne(()=>{W(Nn,e(ki)),gs!==(gs=e(ki))&&(dn.value=(dn.__value=e(ki))??"")}),J(Da,dn)}),w(ia);var da;Vn(ia),ne(Da=>{he(ia,"id",(e(ft),x(()=>"param-"+e(ft).name))),da!==(da=Da)&&(ia.value=(ia.__value=Da)??"",An(ia,Da))},[()=>(e(it),e(ft),x(()=>String(e(it)[e(ft).name]??"")))]),re("change",ia,Da=>ks(e(ft),Da.currentTarget.value)),J(Oa,ia)},_n=Oa=>{var ia=Mz(),da=k(ia);Dt(da);var Da=$(da,2),ki=k(Da,!0);w(Da),w(ia),ne((dn,Nn)=>{he(da,"id",(e(ft),x(()=>"param-"+e(ft).name))),he(da,"min",(e(ft),x(()=>e(ft).minimum))),he(da,"max",(e(ft),x(()=>e(ft).maximum))),he(da,"step",(e(ft),x(()=>e(ft).step))),Gi(da,dn),W(ki,Nn)},[()=>(e(it),e(ft),x(()=>Number(e(it)[e(ft).name]??e(ft).default))),()=>(e(it),e(ft),x(()=>String(e(it)[e(ft).name])))]),re("input",da,dn=>ks(e(ft),dn.currentTarget.valueAsNumber)),J(Oa,ia)},Vi=Oa=>{var ia=zz();Dt(ia),ne((da,Da)=>{he(ia,"id",(e(ft),x(()=>"param-"+e(ft).name))),he(ia,"type",(e(ft),x(()=>e(ft).type==="number"?"number":"text"))),he(ia,"min",(e(ft),x(()=>e(ft).minimum))),he(ia,"max",(e(ft),x(()=>e(ft).maximum))),he(ia,"step",(e(ft),x(()=>e(ft).step))),Gi(ia,da),he(ia,"placeholder",Da)},[()=>(e(it),e(ft),x(()=>String(e(it)[e(ft).name]??""))),()=>(e(ft),e(ee),x(()=>ws(e(ft),"placeholder",e(ee))))]),re("input",ia,da=>ks(e(ft),e(ft).type!=="number"?da.currentTarget.value:da.currentTarget.value===""?"":da.currentTarget.valueAsNumber)),J(Oa,ia)};_e(wi,Oa=>{e(ft),x(()=>e(ft).type==="bool")?Oa($i):(e(ft),x(()=>e(ft).type==="choice")?Oa(cn,1):(e(ft),x(()=>e(ft).type==="slider")?Oa(_n,2):Oa(Vi,-1)))})}var Pi=$(wi,2);{var qn=Oa=>{var ia=j2(),da=k(ia,!0);w(ia),ne(Da=>W(da,Da),[()=>(e(ft),e(ee),x(()=>ws(e(ft),"info",e(ee))))]),J(Oa,ia)},Wa=oi(()=>(e(ft),e(ee),x(()=>ws(e(ft),"info",e(ee)))));_e(Pi,Oa=>{e(Wa)&&Oa(qn)})}w(Ei),ne(Oa=>{ri=ba(Ei,1,"",null,ri,{wide:e(ft).type==="text"}),he(pi,"for",(e(ft),x(()=>"param-"+e(ft).name))),W(an,Oa)},[()=>(e(ft),e(ee),x(()=>ws(e(ft),"label",e(ee))))]),J(si,Ei)}),w(Na),w(Ft),ne(si=>{W(ni,`${si??""} `),W(Ra,(e(p),x(()=>e(p).length)))},[()=>(e(ee),x(()=>e(ee)("options.modelParameters")))]),J($t,Ft)};_e(Qx,$t=>{e(p),e(u),x(()=>e(p).length&&!e(u).params)&&$t(yj)})}var Kx=$(Qx,2);{var wj=$t=>{var Ft=Rz(),Pt=k(Ft),At=k(Pt);nb(At,{size:16});var ni=$(At);qt(),w(Pt);var Xa=$(Pt,2);nn(Xa),w(Ft),ne(Ra=>W(ni,`${Ra??""} `),[()=>(e(ee),x(()=>e(ee)("options.additional")))]),za(Xa,()=>e(ot),Ra=>b(ot,Ra)),J($t,Ft)};_e(Kx,$t=>{e(u),x(()=>!e(u).advancedJson)&&$t(wj)})}var Yx=$(Kx,2),sd=k(Yx),Jx=k(sd);Bc(Jx,{size:15});var Xx=$(Jx),kj=k(Xx,!0);w(Xx),qt(2),w(sd);var $u=$(sd,2),Zx=k($u);Qo(Zx,{size:14});var xj=$(Zx,1,!0);w($u);var e1=$($u,2);let e6;var t6=k(e1);{var Sj=$t=>{var Ft=Bz(),Pt=k(Ft);w(Ft),ne((At,ni)=>{he(Ft,"aria-label",At),W(Pt,`${ni??""} s ·`)},[()=>(e(ee),x(()=>e(ee)("run.elapsed"))),()=>(e(vt),x(()=>e(vt).toFixed(1)))]),J($t,Ft)};_e(t6,$t=>{e(tt)&&$t(Sj)})}var Tj=$(t6);w(e1),w(Yx),ne(($t,Ft,Pt,At,ni,Xa)=>{W(Li,$t),W(ji,Ft),W(Wn,(e(V),x(()=>e(V)?.task))),sd.disabled=!e(ae)||e(tt)||e(De)||e(pa)||e(v)||!e(d)&&(e(ye)===!1||!e(o)),he(sd,"title",Pt),W(kj,At),$u.disabled=!e(tt),W(xj,ni),e6=ba(e1,1,"status",null,e6,{busy:e(tt),warning:!e(tt)&&e(le)===e(xe),error:!e(tt)&&e(le)===e(Ke)}),W(Tj,` ${Xa??""}`)},[()=>(e(ee),x(()=>e(ee)("request.label"))),()=>(e(ee),x(()=>e(ee)("request.title"))),()=>(e(ae),e(ee),e(d),e(ye),x(()=>e(ae)?!e(d)&&e(ye)===!1?e(ee)("run.installModel"):"":e(ee)("run.chooseModel"))),()=>(e(tt),e(ee),x(()=>e(tt)?e(ee)("run.working"):e(ee)("run.run"))),()=>(e(ee),x(()=>e(ee)("run.cancel"))),()=>(e(le),e(ee),x(()=>Aa(e(le),e(ee))))]),re("change",Si,$t=>hP($t.currentTarget.files?.[0]||null)),re("click",sd,hx),re("click",$u,xP),J(oa,Et)},W_=oa=>{var Et=jz(),Ma=xt(Et),aa=k(Ma),Ca=k(aa),Li=k(Ca,!0);w(Ca);var Mi=$(Ca),ji=k(Mi,!0);w(Mi),w(aa),w(Ma);var Ni=$(Ma,2),Qi=k(Ni),Wn=k(Qi,!0);w(Qi),w(Ni),ne((ms,Zn,Si)=>{W(Li,ms),W(ji,Zn),W(Wn,Si)},[()=>(e(ee),x(()=>e(ee)("request.label"))),()=>(e(ee),x(()=>e(ee)("studio.noModel"))),()=>(e(ee),x(()=>e(ee)("studio.chooseInstalled")))]),J(oa,Et)};_e(wu,oa=>{e(ae)?oa(H_):oa(W_,-1)})}w(cc);var ep=$(cc,2),ku=k(ep),xu=k(ku),Q_=k(xu),YP=k(Q_,!0);w(Q_);var Ex=$(Q_),JP=k(Ex,!0);w(Ex),w(xu);var Ux=$(xu,2);{var XP=oa=>{var Et=Nz(),Ma=k(Et,!0);w(Et),ne(aa=>{he(Et,"href",(e(Rt),x(()=>e(Rt).url))),he(Et,"download",(e(Rt),x(()=>e(Rt).filename))),W(Ma,aa)},[()=>(e(ee),x(()=>e(ee)("settings.save")))]),J(oa,Et)};_e(Ux,oa=>{e(Rt)&&oa(XP)})}var ZP=$(Ux,2);{var ej=oa=>{var Et=Oz(),Ma=k(Et);w(Et),ne(aa=>W(Ma,`${e(gt),x(()=>e(gt).length)??""} ${aa??""}`),[()=>(e(gt),e(ee),x(()=>e(gt).length===1?e(ee)("result.track"):e(ee)("result.tracks")))]),J(oa,Et)};_e(ZP,oa=>{e(gt),x(()=>e(gt).length)&&oa(ej)})}w(ku);var Rx=$(ku,2);{var tj=oa=>{var Et=O2();Mt(Et,5,()=>e(gt),Qt,(Ma,aa)=>{var Ca=Dz(),Li=k(Ca),Mi=k(Li),ji=k(Mi,!0);w(Mi);var Ni=$(Mi),Qi=k(Ni,!0);w(Ni),w(Li);var Wn=$(Li,2);w(Ca),ne(ms=>{W(ji,(e(aa),x(()=>e(aa).id))),he(Ni,"href",(e(aa),x(()=>e(aa).url))),he(Ni,"download",(e(ht),e(pt),e(aa),x(()=>`${e(ht)}-${e(pt)||"output"}-${e(aa).id}.wav`))),W(Qi,ms),he(Wn,"src",(e(aa),x(()=>e(aa).url)))},[()=>(e(ee),x(()=>e(ee)("result.saveWav")))]),J(Ma,Ca)}),w(Et),J(oa,Et)};_e(Rx,oa=>{e(gt),x(()=>e(gt).length)&&oa(tj)})}var Bx=$(Rx,2);{var aj=oa=>{var Et=O2();Mt(Et,5,()=>e(dt),Qt,(Ma,aa)=>{var Ca=Iz(),Li=k(Ca),Mi=k(Li),ji=k(Mi,!0);w(Mi);var Ni=$(Mi),Qi=k(Ni,!0);w(Ni),w(Li);var Wn=$(Li,2);{var ms=Si=>{{let tr=Yt(()=>(e(V),e(aa),x(()=>`${e(V).id}-${e(aa).id}.${e(aa).extension}`))),id=Yt(()=>(e(ee),x(()=>e(ee)("result.videoPreview"))));os(Si,{get src(){return e(aa),x(()=>e(aa).url)},get name(){return e(tr)},kind:"video",get label(){return e(id)}})}},Zn=oi(()=>(e(aa),x(()=>e(aa).mime.startsWith("video/"))));_e(Wn,Si=>{e(Zn)&&Si(ms)})}w(Ca),ne(Si=>{W(ji,(e(aa),x(()=>e(aa).id))),he(Ni,"href",(e(aa),x(()=>e(aa).url))),he(Ni,"download",(e(ht),e(pt),e(aa),x(()=>`${e(ht)}-${e(pt)||"output"}-${e(aa).id}.${e(aa).extension}`))),W(Qi,Si)},[()=>(e(ee),e(aa),x(()=>e(ee)("result.saveArtifact",{format:e(aa).extension.toUpperCase()})))]),J(Ma,Ca)}),w(Et),J(oa,Et)};_e(Bx,oa=>{e(dt),x(()=>e(dt).length)&&oa(aj)})}var Px=$(Bx,2);{var ij=oa=>{var Et=Lz(),Ma=$(k(Et)),aa=k(Ma,!0);w(Ma),w(Et),ne(Ca=>W(aa,Ca),[()=>(e(ee),x(()=>e(ee)("result.empty")))]),J(oa,Et)};_e(Px,oa=>{e(gt),e(dt),x(()=>!e(gt).length&&!e(dt).length)&&oa(ij)})}var jx=$(Px,2);{var nj=oa=>{var Et=Vz();nn(Et),ne(()=>Gi(Et,e(It))),J(oa,Et)};_e(jx,oa=>{e(It)&&oa(nj)})}var Nx=$(jx,2);{var sj=oa=>{var Et=Hz(),Ma=$(k(Et)),aa=k(Ma,!0);w(Ma),w(Et),ne(()=>W(aa,e(Ut))),J(oa,Et)};_e(Nx,oa=>{e(Ut)&&oa(sj)})}var rj=$(Nx,2);{var oj=oa=>{var Et=Kz(),Ma=k(Et),aa=k(Ma),Ca=$(aa),Li=k(Ca);w(Ca),w(Ma);var Mi=$(Ma,2);{var ji=Zn=>{var Si=Wz(),tr=k(Si,!0);w(Si),ne(()=>W(tr,e(xa))),J(Zn,Si)};_e(Mi,Zn=>{e(xa)&&Zn(ji)})}var Ni=$(Mi,2),Qi=k(Ni),Wn=k(Qi,!0);w(Qi),w(Ni);var ms=$(Ni,2);Mt(ms,5,()=>e(ya),Zn=>Zn.id,(Zn,Si)=>{var tr=Qz();let id;var Uo=k(tr),Su=k(Uo),K_=k(Su,!0);w(Su);var Tu=$(Su,2),tp=k(Tu),Y_=$(tp);{var J_=Cl=>{var nd=Op();ne(dc=>W(nd,`· ${dc??""} ${e(Si),x(()=>e(Si).seed)??""}`),[()=>(e(ee),x(()=>e(ee)("request.seed")))]),J(Cl,nd)},ap=oi(()=>(e(Si),x(()=>["gen","tts","clon","vdes"].includes(e(Si).task))));_e(Y_,Cl=>{e(ap)&&Cl(J_)})}w(Tu),w(Uo);var Al=$(Uo,2),X_=k(Al,!0);w(Al),w(tr),ne((Cl,nd,dc,ip,Z_)=>{id=ba(tr,1,"",null,id,{active:e(pt)===e(Si).id}),he(Uo,"aria-pressed",(e(pt),e(Si),x(()=>e(pt)===e(Si).id))),Uo.disabled=e(pa),W(K_,(e(Si),x(()=>e(Si).label))),W(tp,`${Cl??""} · ${nd??""}`),he(Al,"title",dc),Al.disabled=e(pa),he(Al,"aria-label",ip),W(X_,Z_)},[()=>(e(Si),x(()=>new Date(e(Si).createdAt).toLocaleTimeString())),()=>(e(Si),x(()=>Cn(e(Si).task))),()=>(e(ee),e(Si),x(()=>e(ee)("history.deleteRun",{id:e(Si).id}))),()=>(e(ee),e(Si),x(()=>e(ee)("history.deleteRun",{id:e(Si).id}))),()=>(e(ee),x(()=>e(ee)("common.delete")))]),re("click",Uo,()=>wl(e(Si),!0)),re("click",Al,()=>Sn(e(Si).id)),J(Zn,tr)}),w(ms),w(Et),ne((Zn,Si)=>{W(aa,`${Zn??""} `),W(Li,`${e(ya),x(()=>e(ya).length)??""}/${i(),x(()=>i().historyLimit)??""}`),Qi.disabled=e(pa),W(Wn,Si)},[()=>(e(ee),x(()=>e(ee)("history.title"))),()=>(e(ee),x(()=>e(ee)("history.clear")))]),re("click",Qi,Rs),J(oa,Et)};_e(rj,oa=>{e(ya),x(()=>e(ya).length)&&oa(oj)})}w(ep),w(wr),ne((oa,Et,Ma,aa,Ca,Li,Mi,ji,Ni,Qi,Wn,ms)=>{he(se,"aria-label",oa),W(ha,Et),W(Nt,Ma),W($s,aa),us=ba(pn,1,"studio-model-status",null,us,{ready:e(d)}),W(Xs,Ca),he(kr,"aria-label",Li),W(zn,Mi),tn.disabled=e(z)||e(pa),W(Zs,ji),oc=ba(er,1,"",null,oc,{good:e(ye)===!0,bad:e(ye)===!1}),W(Eo,Ni),W($l,Qi),W(YP,Wn),W(JP,ms)},[()=>(e(ee),x(()=>e(ee)("nav.workflows"))),()=>(e(ee),x(()=>e(ee)("studio.eyebrow"))),()=>(e(ae),e(V),e(ee),x(()=>e(ae)?Cn(e(V)?.task,e(ee),e(V)):e(ee)("studio.title"))),()=>(e(ee),e(Gn),x(()=>e(ee)(`studio.subtitle.${e(Gn)==="conversion"?"vc":e(Gn)==="separation"?"sep":e(Gn)}`))),()=>(e(ae),e(d),e(ee),e(ye),x(()=>e(ae)?e(d)?e(ee)("studio.resident"):e(ye)===!1?e(ee)("studio.notInstalled"):e(ee)("studio.available"):e(ee)("studio.chooseInstalled"))),()=>(e(ee),x(()=>e(ee)("studio.model"))),()=>(e(ee),x(()=>e(ee)("studio.model"))),()=>(e(ee),x(()=>e(ee)("studio.noModel"))),()=>(e(ae),e(ee),e(ye),x(()=>e(ae)?e(ye)===!0?e(ee)("studio.pathFound"):e(ye)===!1?e(ee)("studio.pathMissing"):e(ee)("studio.pathUnknown"):e(ee)("studio.noModel"))),()=>(e(ae),e(ee),e(V),x(()=>e(ae)?e(ee)("studio.estimatedVram",{value:e(V)?.min_vram_gb||"?"}):e(ee)("studio.vram"))),()=>(e(ee),x(()=>e(ee)("result.label"))),()=>(e(ee),x(()=>e(ee)("result.title")))]),rs(tn,()=>e(ae),oa=>b(ae,oa)),re("change",tn,oa=>Zr(oa.currentTarget.value)),J(O,te)},IP=O=>{qi(o9(O,{get activeCatalog(){return e(fn)},get loadedModels(){return e(ce)},get savedVoices(){return e(Ai)},get server(){return e(Te)},get modelsFolder(){return e(Ot)},get maxTokens(){return e(qe)},entrySelectable:Kt,studioPackageSlots:Fa,packageIsAvailable:ka,supportsMaxTokens:Va,supportsRequestOption:ga,requiresRequestOption:Ya,refresh:Mn,log:yi,get tr(){return e(ee)},$$legacy:!0}),te=>b(de,te),()=>e(de))},LP=O=>{{let te=Yt(()=>(e(ee),x(()=>vr.map(se=>({id:se.id,label:jn(se.id,se.filterLabel,e(ee))})))));N9(O,{get groups(){return e(gl)},get packageSizes(){return e(Ht)},get installJobs(){return e(ua)},get packageSizeState(){return e(Ga)},get modelsFolder(){return e(Ot)},get modelsFolderHistory(){return e(wa)},get defaultModelsFolder(){return e($a)},get applyingModelsFolder(){return e(Qe)},get modelsFolderIsDefault(){return e(qa)},openFolderBrowser:Er,applyModelsFolder:Fo,installPackage:TP,removePackage:AP,stopPackageDownload:$P,cleanPartialDownload:qP,formatBytes:zr,installProgressLabel:ra,workflowForEntry:ta,taskLabel:se=>Cn(se.task,e(ee),se),get workflows(){return e(te)},openModel:(se,Ae)=>{Ae&&Fn(se,Ae),Zr(se.id),b(Q,"studio")},get modelsFolderInput(){return e(Ea)},set modelsFolderInput(se){b(Ea,se)},$$legacy:!0})}},VP=O=>{qi(LM(O,{onchange:async()=>{await Jf(),e(ui)&&!e(Ai).some(te=>te.id===e(ui))&&b(ui,"")},ontext:async te=>{await Jf(),eo("tts"),px(te.id),b(Q,"studio")},$$legacy:!0}),te=>b(X,te),()=>e(X))},HP=O=>{y9(O,{get tr(){return e(ee)}})},WP=O=>{var te=Jz(),se=xt(te),Ae=k(se),je=k(Ae,!0);w(Ae);var wt=$(Ae),ha=k(wt,!0);w(wt);var Zt=$(wt),Nt=k(Zt,!0);w(Zt),w(se);var Tn=$(se,2),$s=k(Tn),pn=k($s),us=k(pn),Xs=k(us,!0);w(us);var wr=$(us),kr=k(wr,!0);w(wr),w(pn);var qs=$(pn,2),fi=k(qs),zn=k(fi,!0);w(fi);var tn=$(fi),vi=k(tn,!0);w(tn),w(qs);var Zs=$(qs,2),As=k(Zs),fs=k(As,!0);w(As);var er=$(As),oc=k(er,!0);w(er),w(Zs);var Eo=$(Zs,2),Tl=k(Eo),$l=k(Tl,!0);w(Tl);var ql=$(Tl),$n=k(ql,!0);w(ql),w(Eo),w($s);var ln=$($s,2),Cs=k(ln,!0);w(ln);var Yn=$(ln,2),ps=k(Yn,!0);w(Yn),w(Tn),ne((xr,lc,yu,cc,wu,H_,W_,ep,ku,xu)=>{W(je,xr),W(ha,lc),W(Nt,yu),W(Xs,cc),W(kr,(e(Te),x(()=>e(Te)?.status||"offline"))),W(zn,wu),W(vi,(e(Te),x(()=>e(Te)?.backend||"—"))),W(fs,H_),W(oc,(e(ce),x(()=>e(ce).length))),W($l,W_),W($n,ep),W(Cs,ku),W(ps,xu)},[()=>(e(ee),x(()=>e(ee)("runtime.eyebrow"))),()=>(e(ee),x(()=>e(ee)("runtime.title"))),()=>(e(ee),x(()=>e(ee)("runtime.subtitle"))),()=>(e(ee),x(()=>e(ee)("runtime.status"))),()=>(e(ee),x(()=>e(ee)("runtime.backend"))),()=>(e(ee),x(()=>e(ee)("runtime.registered"))),()=>(e(ee),x(()=>e(ee)("runtime.resident"))),()=>(e(ce),x(()=>e(ce).filter(xr=>xr.loaded).length)),()=>(e(ee),x(()=>e(ee)("runtime.serverLogNotice"))),()=>(e(li),e(ee),x(()=>e(li).length?e(li).join(`
|
||
`):e(ee)("runtime.noEvents")))]),J(O,te)};_e(OP,O=>{e(Q)==="studio"?O(DP):e(Q)==="arena"?O(IP,1):e(Q)==="models"?O(LP,2):e(Q)==="library"?O(VP,3):e(Q)==="configuration"?O(HP,4):e(Q)!=="apps"&&O(WP,5)})}w(V_);var Fx=$(V_,2);{var QP=O=>{var te=aE(),se=k(te),Ae=k(se),je=k(Ae),wt=k(je),ha=k(wt,!0);w(wt);var Zt=$(wt),Nt=k(Zt,!0);w(Zt),w(je);var Tn=$(je,2),$s=k(Tn,!0);w(Tn),w(Ae);var pn=$(Ae,2),us=k(pn,!0);w(pn);var Xs=$(pn,2);{var wr=$n=>{var ln=Xz();Mt(ln,5,()=>(e(ea),x(()=>e(ea).roots)),Qt,(Cs,Yn)=>{var ps=Lf(),xr=k(ps,!0);w(ps),ne(()=>W(xr,e(Yn))),re("click",ps,()=>Er(e(Yn),e(Ba))),J(Cs,ps)}),w(ln),J($n,ln)};_e(Xs,$n=>{e(ea),x(()=>e(ea)?.roots.length)&&$n(wr)})}var kr=$(Xs,2),qs=k(kr),fi=k(qs,!0);w(qs);var zn=$(qs,2),tn=k(zn,!0);w(zn),w(kr);var vi=$(kr,2);{var Zs=$n=>{var ln=Zz(),Cs=k(ln,!0);w(ln),ne(()=>W(Cs,e(Vt))),J($n,ln)},As=$n=>{var ln=D2(),Cs=k(ln,!0);w(ln),ne(Yn=>W(Cs,Yn),[()=>(e(ee),x(()=>e(ee)("folder.loadingFolders")))]),J($n,ln)},fs=$n=>{var ln=tE();Mt(ln,5,()=>(e(ea),x(()=>e(ea).directories)),Qt,(Cs,Yn)=>{var ps=eE(),xr=$(k(ps)),lc=k(xr,!0);w(xr),w(ps),ne(()=>{he(ps,"title",(e(Yn),x(()=>e(Yn).path))),W(lc,(e(Yn),x(()=>e(Yn).name)))}),re("click",ps,()=>Er(e(Yn).path,e(Ba))),J(Cs,ps)}),w(ln),J($n,ln)},er=$n=>{var ln=D2(),Cs=k(ln,!0);w(ln),ne(Yn=>W(Cs,Yn),[()=>(e(ee),x(()=>e(ee)("folder.empty")))]),J($n,ln)};_e(vi,$n=>{e(Vt)?$n(Zs):e(bt)?$n(As,1):(e(ea),x(()=>e(ea)?.directories.length)?$n(fs,2):$n(er,-1))})}var oc=$(vi,2),Eo=k(oc),Tl=k(Eo,!0);w(Eo);var $l=$(Eo,2),ql=k($l,!0);w($l),w(oc),w(se),w(te),ne(($n,ln,Cs,Yn,ps,xr,lc,yu,cc,wu)=>{W(ha,$n),W(Nt,ln),he(Tn,"aria-label",Cs),he(Tn,"title",Yn),W($s,ps),W(us,xr),qs.disabled=(e(ea),e(bt),x(()=>!e(ea)?.parent||e(bt))),W(fi,lc),zn.disabled=e(bt),W(tn,yu),W(Tl,cc),$l.disabled=!e(ea)||e(bt),W(ql,wu)},[()=>(e(ee),x(()=>e(ee)("folder.eyebrow"))),()=>(e(Ba),e(ee),x(()=>e(Ba)?"Select LoRA adapter directory":e(ee)("folder.title"))),()=>(e(ee),x(()=>e(ee)("folder.closeLabel"))),()=>(e(ee),x(()=>e(ee)("common.close"))),()=>(e(ee),x(()=>e(ee)("common.close"))),()=>(e(ea),e(ee),x(()=>e(ea)?.current||e(ee)("folder.loading"))),()=>(e(ee),x(()=>e(ee)("folder.up"))),()=>(e(ee),x(()=>e(ee)("common.refresh"))),()=>(e(ee),x(()=>e(ee)("common.cancel"))),()=>(e(Ba),e(ee),x(()=>e(Ba)?"Use adapter folder":e(ee)("folder.select")))]),re("click",Tn,()=>b(Ge,!1)),re("click",qs,()=>Er(e(ea)?.parent||"",e(Ba))),re("click",zn,()=>Er(e(ea)?.current||"",e(Ba))),re("click",Eo,()=>b(Ge,!1)),re("click",$l,Xi),J(O,te)};_e(Fx,O=>{e(Ge)&&O(QP)})}var Mx=$(Fx,2),zx=$(k(Mx)),KP=k(zx,!0);w(zx),w(Mx),ne((O,te,se,Ae,je,wt,ha,Zt,Nt,Tn,$s,pn,us,Xs,wr)=>{W(CP,O),he(Zf,"aria-label",te),yx=ba(hu,1,"",null,yx,{active:e(Q)==="studio"}),W(GP,se),td.disabled=Ae,wx=ba(td,1,"",null,wx,{active:e(Q)==="apps"}),W(FP,je),kx=ba(_u,1,"",null,kx,{active:e(Q)==="arena"}),W(MP,wt),ad.disabled=ha,xx=ba(ad,1,"",null,xx,{active:e(Q)==="library"}),W(zP,Zt),Tx=ba(vu,1,"",null,Tx,{active:e(Q)==="logs"}),W(UP,Nt),bu.disabled=e(pa),$x=ba(bu,1,"",null,$x,{active:e(Q)==="configuration"}),W(RP,Tn),W(BP,$s),he(xl,"aria-label",pn),qx!==(qx=e(ve))&&(xl.value=(xl.__value=e(ve))??"",An(xl,e(ve))),W(PP,us),he(Sl,"aria-label",Xs),Ax!==(Ax=e(Le))&&(Sl.value=(Sl.__value=e(Le))??"",An(Sl,e(Le))),Cx=ba(L_,1,"server-pill",null,Cx,{online:e(Te)?.status==="ok"}),W(jP,(e(Te),x(()=>e(Te)?.backend||"offline"))),W(KP,wr)},[()=>(e(ee),x(()=>e(ee)("app.nativeStudio"))),()=>(e(ee),x(()=>e(ee)("nav.primary"))),()=>(e(ee),x(()=>e(ee)("nav.studio"))),()=>(e(tt),e(Ie),e(pa),e(Ia),e(He),x(()=>e(tt)||e(Ie)||e(pa)||!!e(Ia)||e(He))),()=>(e(ee),x(()=>e(ee)("nav.apps"))),()=>(e(ee),x(()=>e(ee)("nav.arena"))),()=>(e(tt),e(pa),e(Ia),e(He),x(()=>e(tt)||e(pa)||!!e(Ia)||e(He))),()=>(e(ee),x(()=>e(ee)("nav.library"))),()=>(e(ee),x(()=>e(ee)("nav.runtime"))),()=>(e(ee),x(()=>e(ee)("nav.configuration"))),()=>(e(ee),x(()=>e(ee)("language.label"))),()=>(e(ee),x(()=>e(ee)("language.label"))),()=>(e(ee),x(()=>e(ee)("theme.label"))),()=>(e(ee),x(()=>e(ee)("theme.label"))),()=>(e(ee),x(()=>e(ee)("footer.embedded")))]),re("click",hu,sc),re("click",td,()=>mu("apps")),re("click",_u,()=>mu("arena")),re("click",ad,()=>mu("library")),re("click",vu,()=>mu("logs")),re("click",bu,()=>mu("configuration")),re("change",xl,O=>xi(O.currentTarget.value)),re("change",Sl,O=>is(O.currentTarget.value)),J(a,_x),Bi(),s()}const sE=Object.freeze(Object.defineProperty({__proto__:null,component:nE},Symbol.toStringTag,{value:"Module"})),rE=Object.freeze(Object.defineProperty({__proto__:null,default:({status:a,message:t})=>`<!doctype html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<title>`+t+`</title>
|
||
|
||
<style>
|
||
body {
|
||
--bg: white;
|
||
--fg: #222;
|
||
--divider: #ccc;
|
||
background: var(--bg);
|
||
color: var(--fg);
|
||
font-family:
|
||
system-ui,
|
||
-apple-system,
|
||
BlinkMacSystemFont,
|
||
'Segoe UI',
|
||
Roboto,
|
||
Oxygen,
|
||
Ubuntu,
|
||
Cantarell,
|
||
'Open Sans',
|
||
'Helvetica Neue',
|
||
sans-serif;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
height: 100vh;
|
||
margin: 0;
|
||
}
|
||
|
||
.error {
|
||
display: flex;
|
||
align-items: center;
|
||
max-width: 32rem;
|
||
margin: 0 1rem;
|
||
}
|
||
|
||
.status {
|
||
font-weight: 200;
|
||
font-size: 3rem;
|
||
line-height: 1;
|
||
position: relative;
|
||
top: -0.05rem;
|
||
}
|
||
|
||
.message {
|
||
border-left: 1px solid var(--divider);
|
||
padding: 0 0 0 1rem;
|
||
margin: 0 0 0 1rem;
|
||
min-height: 2.5rem;
|
||
display: flex;
|
||
align-items: center;
|
||
}
|
||
|
||
.message h1 {
|
||
font-weight: 400;
|
||
font-size: 1em;
|
||
margin: 0;
|
||
}
|
||
|
||
@media (prefers-color-scheme: dark) {
|
||
body {
|
||
--bg: #222;
|
||
--fg: #ddd;
|
||
--divider: #666;
|
||
}
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<div class="error">
|
||
<span class="status">`+a+`</span>
|
||
<div class="message">
|
||
<h1>`+t+`</h1>
|
||
</div>
|
||
</div>
|
||
</body>
|
||
</html>
|
||
`},Symbol.toStringTag,{value:"Module"}));function oE(a){return a&&a.__esModule&&Object.prototype.hasOwnProperty.call(a,"default")?a.default:a}var M0,I2;function lE(){if(I2)return M0;I2=1;var a="6.7.0";return M0=a,M0}var z0,L2;function E0(){if(L2)return z0;L2=1;var a=function(i,n){var s=this;n||(n={}),s.qpm=n.qpm?parseInt(n.qpm,10):null,s.extraMeasuresAtBeginning=n.extraMeasuresAtBeginning?parseInt(n.extraMeasuresAtBeginning,10):0,s.beatCallback=n.beatCallback,s.eventCallback=n.eventCallback,s.lineEndCallback=n.lineEndCallback,s.lineEndAnticipation=n.lineEndAnticipation?parseInt(n.lineEndAnticipation,10):0,s.beatSubdivisions=n.beatSubdivisions?parseInt(n.beatSubdivisions,10):1,s.beatSubdivisions||(s.beatSubdivisions=1),s.joggerTimer=null,s.replaceTarget=function(o){if(!n.qpm){var l=o.metaText?o.metaText.tempo:null;s.qpm=o.getBpm(l)}if(s.noteTimings=o.setTiming(s.qpm,s.extraMeasuresAtBeginning),o.noteTimings.length===0&&(s.noteTimings=o.setTiming(0,0)),s.lineEndCallback&&(s.lineEndTimings=t(o.noteTimings,s.lineEndAnticipation)),s.startTime=null,s.currentBeat=0,s.currentEvent=0,s.currentLine=0,s.currentTime=0,s.isPaused=!1,s.isRunning=!1,s.pausedPercent=null,s.justUnpaused=!1,s.newSeekPercent=0,s.lastTimestamp=0,s.noteTimings.length!==0){s.millisecondsPerBeat=1e3/(s.qpm/60)/s.beatSubdivisions,s.lastMoment=s.noteTimings[s.noteTimings.length-1].milliseconds;var c=o.getMeter(),d="";if(c&&c.type==="specified"&&c.value&&c.value.length>0&&c.value[0].num.indexOf("+")>0&&(d=c.value[0].num),s.beatStarts=[],d){for(var g=s.noteTimings[s.noteTimings.length-1].millisecondsPerMeasure,h=s.lastMoment/g,m=d.split("+"),p=0;p<m.length;p++)m[p]=parseInt(m[p],10)/2;for(var u=0,f=0,_=0;_<h;_++)for(var v=_*g,y=0,S=0;S<m.length;S++){var q=m[S];if(s.beatSubdivisions===1)s.beatSubdivisions===1&&u<s.lastMoment&&s.beatStarts.push({b:f,ts:u}),u+=q*s.millisecondsPerBeat;else for(var M=q*s.beatSubdivisions,P=0;P<Math.floor(M);P++){var B=P/M,A=Math.round(v+y*s.millisecondsPerBeat);A<s.lastMoment&&s.beatStarts.push({b:f+B,ts:A}),y++}f++}s.beatStarts.push({b:h*m.length,ts:s.lastMoment}),s.totalBeats=s.beatStarts.length}else{s.totalBeats=Math.round(s.lastMoment/s.millisecondsPerBeat);for(var j=0;j<s.totalBeats+1;j++)s.beatStarts.push({b:j/s.beatSubdivisions,ts:Math.round(j*s.millisecondsPerBeat)})}}},s.replaceTarget(i),s.doTiming=function(o){if(s.lastTimestamp!==o&&(s.lastTimestamp=o,!s.isPaused&&s.isRunning)){for(s.startTime||(s.startTime=o),s.currentTime=o-s.startTime,s.currentTime+=16;s.noteTimings.length>s.currentEvent&&s.noteTimings[s.currentEvent].milliseconds<s.currentTime;){if(s.eventCallback&&s.noteTimings[s.currentEvent].type==="event"){var l=s.startTime;s.eventCallback(s.noteTimings[s.currentEvent]),l!==s.startTime&&(s.currentTime=o-s.startTime)}s.currentEvent++}if(s.lineEndCallback&&s.lineEndTimings.length>s.currentLine&&s.lineEndTimings[s.currentLine].milliseconds<s.currentTime&&s.currentEvent<s.noteTimings.length){var c=s.noteTimings[s.currentEvent].milliseconds===s.currentTime?s.noteTimings[s.currentEvent]:s.noteTimings[s.currentEvent-1];s.lineEndCallback(s.lineEndTimings[s.currentLine],c,{line:s.currentLine,endTimings:s.lineEndTimings,currentTime:s.currentTime}),s.currentLine++}if(s.currentTime<s.lastMoment){if(requestAnimationFrame(s.doTiming),s.currentBeat<s.beatStarts.length&&s.beatStarts[s.currentBeat].ts<=s.currentTime){var d=s.doBeatCallback(o);s.currentBeat++,d!==null&&(s.currentTime=d)}}else if(s.currentBeat<=s.totalBeats&&s.beatCallback){var g=s.doBeatCallback(o);s.currentBeat++,g!==null&&(s.currentTime=g),requestAnimationFrame(s.doTiming)}if(s.currentTime>=s.lastMoment)if(s.eventCallback){var h=s.eventCallback(null);s.shouldStop(h).then(function(m){m&&s.stop()})}else s.stop()}},s.shouldStop=function(o){return new Promise(function(l){if(!o)return l(!0);if(o==="continue")return l(!1);o.then&&o.then(function(c){l(c!=="continue")})})},s.doBeatCallback=function(o){if(s.beatCallback){for(var l=s.currentEvent;l<s.noteTimings.length&&s.noteTimings[l].left===null;)l++;var c,d;if(l<s.noteTimings.length){for(c=s.noteTimings[l].milliseconds,l=Math.max(0,s.currentEvent-1);l>=0&&s.noteTimings[l].left===null;)l--;d=s.noteTimings[l]}var g={},h={};if(d){g.top=d.top,g.height=d.height;var m=Math.max(0,o-s.startTime-d.milliseconds),p=c-d.milliseconds,u=d.endX-d.left,f=p?m*u/p:0;g.left=d.left+f,s.currentEvent===0&&d.milliseconds>o-s.startTime&&(g.left=void 0),h={timestamp:o,startTime:s.startTime,ev:d,endMs:c,offMs:m,offPx:f,gapMs:p,gapPx:u}}else h={timestamp:o,startTime:s.startTime};if(s.currentBeat<0||s.currentBeat>=s.beatStarts.length||!s.beatStarts[s.currentBeat]){var _={currentBeat:s.currentBeat,beatStartLength:s.beatStarts.length,totalBeats:s.totalBeats,startTime:s.startTime,currentTime:s.currentTime,lastMoment:s.lastMoment,lastTimestamp:s.lastTimestamp,qpm:s.qpm,millisecondsPerBeat:s.millisecondsPerBeat,beatSubdivisions:s.beatSubdivisions,currentEvent:s.currentEvent,currentLine:s.currentLine,isPaused:s.isPaused,isRunning:s.isRunning,pausedPercent:s.pausedPercent,justUnpaused:s.justUnpaused,newSeekPercent:s.newSeekPercent};setTimeout(function(){throw new Error("abcjs-timing-callback error: "+JSON.stringify(_))},1)}else{var v=s.startTime;if(s.beatCallback(s.beatStarts[s.currentBeat].b,s.totalBeats/s.beatSubdivisions,s.lastMoment,g,h),v!==s.startTime)return o-s.startTime}}return null};var r=60;s.animationJogger=function(){s.isRunning&&(s.doTiming(performance.now()),s.joggerTimer=setTimeout(s.animationJogger,r))},s.start=function(o,l){if(s.isRunning=!0,s.isPaused&&(s.isPaused=!1,o===void 0&&(s.justUnpaused=!0)),o)s.setProgress(o,l);else if(o===0)s.reset();else if(s.pausedPercent!==null){var c=performance.now();s.currentTime=s.lastMoment*s.pausedPercent,s.startTime=c-s.currentTime,s.pausedPercent=null,s.reportNext=!0}requestAnimationFrame(s.doTiming),s.joggerTimer=setTimeout(s.animationJogger,r)},s.pause=function(){s.isPaused=!0;var o=performance.now();s.pausedPercent=(o-s.startTime)/s.lastMoment,s.isRunning=!1,s.joggerTimer&&(clearTimeout(s.joggerTimer),s.joggerTimer=null)},s.currentMillisecond=function(){return s.currentTime},s.reset=function(){s.currentBeat=0,s.currentEvent=0,s.currentLine=0,s.startTime=null,s.pausedPercent=null},s.stop=function(){s.pause(),s.reset()},s.setProgress=function(o,l){var c;switch(l){case"seconds":s.currentTime=o*1e3,s.currentTime<0&&(s.currentTime=0),s.currentTime>s.lastMoment&&(s.currentTime=s.lastMoment),c=s.currentTime/s.lastMoment;break;case"beats":s.currentTime=o*s.millisecondsPerBeat*s.beatSubdivisions,s.currentTime<0&&(s.currentTime=0),s.currentTime>s.lastMoment&&(s.currentTime=s.lastMoment),c=s.currentTime/s.lastMoment;break;default:c=o,c<0&&(c=0),c>1&&(c=1),s.currentTime=s.lastMoment*c;break}s.isRunning||(s.pausedPercent=c);var d=performance.now();for(s.startTime=d-s.currentTime,s.currentEvent=0;s.noteTimings.length>s.currentEvent&&s.noteTimings[s.currentEvent].milliseconds<s.currentTime;)s.currentEvent++;if(s.lineEndCallback)for(s.currentLine=0;s.lineEndTimings.length>s.currentLine&&s.lineEndTimings[s.currentLine].milliseconds+s.lineEndAnticipation<s.currentTime;)s.currentLine++;var g=s.currentBeat;for(s.currentBeat=0;s.currentBeat<s.beatStarts.length&&!(s.beatStarts[s.currentBeat].ts>s.currentTime);s.currentBeat++);s.currentBeat--,s.beatCallback&&g!==s.currentBeat&&(s.doBeatCallback(s.startTime+s.currentTime),s.currentBeat++),s.eventCallback&&s.currentEvent>=0&&s.noteTimings[s.currentEvent].type==="event"&&s.eventCallback(s.noteTimings[s.currentEvent]),s.lineEndCallback&&s.lineEndCallback(s.lineEndTimings[s.currentLine],s.noteTimings[s.currentEvent],{line:s.currentLine,endTimings:s.lineEndTimings}),s.joggerTimer=setTimeout(s.animationJogger,r)}};function t(i,n){for(var s=[],r=null,o=0;o<i.length;o++){var l=i[o];l.type!=="end"&&l.top!==r&&(s.push({measureNumber:l.measureNumber,milliseconds:l.milliseconds-n,top:l.top,bottom:l.top+l.height}),r=l.top)}return s}return z0=a,z0}var U0,V2;function cE(){if(V2)return U0;V2=1;var a=E0(),t={};return(function(){var i,n;t.startAnimation=function(s,r,o){i&&(i.stop(),i=void 0),o.showCursor&&(n=s.querySelector(".abcjs-cursor"),n||(n=document.createElement("DIV"),n.className="abcjs-cursor cursor",n.style.position="absolute",s.appendChild(n),s.style.position="relative"));function l(u){for(var f=0;f<u.length;f++){var _=u[f];_.classList.contains("abcjs-bar")||(_.style.display="none")}}var c;function d(u){if(c){var f=s.querySelectorAll(c);l(f)}c=u}function g(u){var f=s.querySelectorAll(u);l(f)}function h(u){o.hideCurrentMeasure?g(u):o.hideFinishedMeasures&&d(u)}function m(u){return".abcjs-l"+u.line+".abcjs-m"+u.measureNumber}function p(u){if(u){if(u.measureStart){var f=m(u);f&&h(f)}n&&(n.style.left=u.left+"px",n.style.top=u.top+"px",n.style.width=u.width+"px",n.style.height=u.height+"px")}else i.stop(),i=void 0}i=new a(r,{qpm:o.bpm,eventCallback:p}),i.start()},t.pauseAnimation=function(s){i&&(s?i.pause():i.start())},t.stopAnimation=function(){i&&(i.stop(),i=void 0)}})(),U0=t,U0}var R0,H2;function Vr(){if(H2)return R0;H2=1;var a={};return a.cloneArray=function(t){for(var i=[],n=0;n<t.length;n++)i.push(Object.assign({},t[n]));return i},a.cloneHashOfHash=function(t){var i={};for(var n in t)t.hasOwnProperty(n)&&(i[n]=Object.assign({},t[n]));return i},a.cloneHashOfArrayOfHash=function(t){var i={};for(var n in t)t.hasOwnProperty(n)&&(i[n]=a.cloneArray(t[n]));return i},a.strip=function(t){return t.replace(/^\s+/,"").replace(/\s+$/,"")},a.startsWith=function(t,i){return t.indexOf(i)===0},a.endsWith=function(t,i){var n=t.length-i.length;return n>=0&&t.lastIndexOf(i)===n},a.last=function(t){return t.length===0?null:t[t.length-1]},R0=a,R0}var B0,W2;function P0(){if(W2)return B0;W2=1;var a=Vr(),t={};return(function(){var i,n,s,r,o;t.initialize=function(T,F,z,D,Q){i=T,n=F,s=z,r=D,o=Q,l()};function l(){s.annotationfont={face:"Helvetica",size:12,weight:"normal",style:"normal",decoration:"none"},s.gchordfont={face:"Helvetica",size:12,weight:"normal",style:"normal",decoration:"none"},s.historyfont={face:'"Times New Roman"',size:16,weight:"normal",style:"normal",decoration:"none"},s.infofont={face:'"Times New Roman"',size:14,weight:"normal",style:"italic",decoration:"none"},s.measurefont={face:'"Times New Roman"',size:14,weight:"normal",style:"italic",decoration:"none"},s.partsfont={face:'"Times New Roman"',size:15,weight:"normal",style:"normal",decoration:"none"},s.repeatfont={face:'"Times New Roman"',size:13,weight:"normal",style:"normal",decoration:"none"},s.textfont={face:'"Times New Roman"',size:16,weight:"normal",style:"normal",decoration:"none"},s.tripletfont={face:"Times",size:11,weight:"normal",style:"italic",decoration:"none"},s.vocalfont={face:'"Times New Roman"',size:13,weight:"bold",style:"normal",decoration:"none"},s.wordsfont={face:'"Times New Roman"',size:16,weight:"normal",style:"normal",decoration:"none"},r.formatting.composerfont={face:'"Times New Roman"',size:14,weight:"normal",style:"italic",decoration:"none"},r.formatting.subtitlefont={face:'"Times New Roman"',size:16,weight:"normal",style:"normal",decoration:"none"},r.formatting.tempofont={face:'"Times New Roman"',size:15,weight:"bold",style:"normal",decoration:"none"},r.formatting.titlefont={face:'"Times New Roman"',size:20,weight:"normal",style:"normal",decoration:"none"},r.formatting.footerfont={face:'"Times New Roman"',size:12,weight:"normal",style:"normal",decoration:"none"},r.formatting.headerfont={face:'"Times New Roman"',size:12,weight:"normal",style:"normal",decoration:"none"},r.formatting.voicefont={face:'"Times New Roman"',size:13,weight:"bold",style:"normal",decoration:"none"},r.formatting.tablabelfont={face:'"Trebuchet MS"',size:16,weight:"normal",style:"normal",decoration:"none"},r.formatting.tabnumberfont={face:'"Arial"',size:11,weight:"normal",style:"normal",decoration:"none"},r.formatting.tabgracefont={face:'"Arial"',size:8,weight:"normal",style:"normal",decoration:"none"},r.formatting.annotationfont=s.annotationfont,r.formatting.gchordfont=s.gchordfont,r.formatting.historyfont=s.historyfont,r.formatting.infofont=s.infofont,r.formatting.measurefont=s.measurefont,r.formatting.partsfont=s.partsfont,r.formatting.repeatfont=s.repeatfont,r.formatting.textfont=s.textfont,r.formatting.tripletfont=s.tripletfont,r.formatting.vocalfont=s.vocalfont,r.formatting.wordsfont=s.wordsfont}var c={gchordfont:!0,measurefont:!0,partsfont:!0,annotationfont:!0,composerfont:!0,historyfont:!0,infofont:!0,subtitlefont:!0,textfont:!0,titlefont:!0,voicefont:!0},d=function(T){switch(T){case"Arial-Italic":return{face:"Arial",weight:"normal",style:"italic",decoration:"none"};case"Arial-Bold":return{face:"Arial",weight:"bold",style:"normal",decoration:"none"};case"Bookman-Demi":return{face:"Bookman,serif",weight:"bold",style:"normal",decoration:"none"};case"Bookman-DemiItalic":return{face:"Bookman,serif",weight:"bold",style:"italic",decoration:"none"};case"Bookman-Light":return{face:"Bookman,serif",weight:"normal",style:"normal",decoration:"none"};case"Bookman-LightItalic":return{face:"Bookman,serif",weight:"normal",style:"italic",decoration:"none"};case"Courier":return{face:'"Courier New"',weight:"normal",style:"normal",decoration:"none"};case"Courier-Oblique":return{face:'"Courier New"',weight:"normal",style:"italic",decoration:"none"};case"Courier-Bold":return{face:'"Courier New"',weight:"bold",style:"normal",decoration:"none"};case"Courier-BoldOblique":return{face:'"Courier New"',weight:"bold",style:"italic",decoration:"none"};case"AvantGarde-Book":return{face:"AvantGarde,Arial",weight:"normal",style:"normal",decoration:"none"};case"AvantGarde-BookOblique":return{face:"AvantGarde,Arial",weight:"normal",style:"italic",decoration:"none"};case"AvantGarde-Demi":case"Avant-Garde-Demi":return{face:"AvantGarde,Arial",weight:"bold",style:"normal",decoration:"none"};case"AvantGarde-DemiOblique":return{face:"AvantGarde,Arial",weight:"bold",style:"italic",decoration:"none"};case"Helvetica-Oblique":return{face:"Helvetica",weight:"normal",style:"italic",decoration:"none"};case"Helvetica-Bold":return{face:"Helvetica",weight:"bold",style:"normal",decoration:"none"};case"Helvetica-BoldOblique":return{face:"Helvetica",weight:"bold",style:"italic",decoration:"none"};case"Helvetica-Narrow":return{face:'"Helvetica Narrow",Helvetica',weight:"normal",style:"normal",decoration:"none"};case"Helvetica-Narrow-Oblique":return{face:'"Helvetica Narrow",Helvetica',weight:"normal",style:"italic",decoration:"none"};case"Helvetica-Narrow-Bold":return{face:'"Helvetica Narrow",Helvetica',weight:"bold",style:"normal",decoration:"none"};case"Helvetica-Narrow-BoldOblique":return{face:'"Helvetica Narrow",Helvetica',weight:"bold",style:"italic",decoration:"none"};case"Palatino-Roman":return{face:"Palatino",weight:"normal",style:"normal",decoration:"none"};case"Palatino-Italic":return{face:"Palatino",weight:"normal",style:"italic",decoration:"none"};case"Palatino-Bold":return{face:"Palatino",weight:"bold",style:"normal",decoration:"none"};case"Palatino-BoldItalic":return{face:"Palatino",weight:"bold",style:"italic",decoration:"none"};case"NewCenturySchlbk-Roman":return{face:'"New Century",serif',weight:"normal",style:"normal",decoration:"none"};case"NewCenturySchlbk-Italic":return{face:'"New Century",serif',weight:"normal",style:"italic",decoration:"none"};case"NewCenturySchlbk-Bold":return{face:'"New Century",serif',weight:"bold",style:"normal",decoration:"none"};case"NewCenturySchlbk-BoldItalic":return{face:'"New Century",serif',weight:"bold",style:"italic",decoration:"none"};case"Times":case"Times-Roman":case"Times-Narrow":case"Times-Courier":case"Times-New-Roman":return{face:'"Times New Roman"',weight:"normal",style:"normal",decoration:"none"};case"Times-Italic":case"Times-Italics":return{face:'"Times New Roman"',weight:"normal",style:"italic",decoration:"none"};case"Times-Bold":return{face:'"Times New Roman"',weight:"bold",style:"normal",decoration:"none"};case"Times-BoldItalic":return{face:'"Times New Roman"',weight:"bold",style:"italic",decoration:"none"};case"ZapfChancery-MediumItalic":return{face:'"Zapf Chancery",cursive,serif',weight:"normal",style:"normal",decoration:"none"};default:return null}},g=function(T,F,z,D,Q){function X(){var tt=parseInt(T[0].token);return T.shift(),F?T.length===0?{face:F.face,weight:F.weight,style:F.style,decoration:F.decoration,size:tt}:T.length===1&&T[0].token==="box"&&c[Q]?{face:F.face,weight:F.weight,style:F.style,decoration:F.decoration,size:tt,box:!0}:(n("Extra parameters in font definition.",z,D),{face:F.face,weight:F.weight,style:F.style,decoration:F.decoration,size:tt}):(n("Can't set just the size of the font since there is no default value.",z,D),{face:'"Times New Roman"',weight:"normal",style:"normal",decoration:"none",size:tt})}if(T[0].token==="*"){if(T.shift(),T[0].type==="number")return X();n("Expected font size number after *.",z,D)}if(T[0].type==="number")return X();for(var Z=[],ue,de="normal",ae="normal",V="none",pe=!1,Ce="face",ce=!1;T.length;){var Te=T.shift(),ye=Te.token.toLowerCase();switch(Ce){case"face":ce||ye!=="utf"&&Te.type!=="number"&&ye!=="bold"&&ye!=="italic"&&ye!=="underline"&&ye!=="box"?Z.length>0&&Te.token==="-"?(ce=!0,Z[Z.length-1]=Z[Z.length-1]+Te.token):ce?(ce=!1,Z[Z.length-1]=Z[Z.length-1]+Te.token):Z.push(Te.token):Te.type==="number"?(ue?n("Font size specified twice in font definition.",z,D):ue=Te.token,Ce="modifier"):ye==="bold"?de="bold":ye==="italic"?ae="italic":ye==="underline"?V="underline":ye==="box"?(c[Q]?pe=!0:n(`This font style doesn't support "box"`,z,D),Ce="finished"):ye==="utf"?(Te=T.shift(),Ce="size"):n("Unknown parameter "+Te.token+" in font definition.",z,D);break;case"size":Te.type==="number"?ue?n("Font size specified twice in font definition.",z,D):ue=Te.token:n("Expected font size in font definition.",z,D),Ce="modifier";break;case"modifier":ye==="bold"?de="bold":ye==="italic"?ae="italic":ye==="underline"?V="underline":ye==="box"?(c[Q]?pe=!0:n(`This font style doesn't support "box"`,z,D),Ce="finished"):n("Unknown parameter "+Te.token+" in font definition.",z,D);break;case"finished":n('Extra characters found after "box" in font definition.',z,D);break}}ue===void 0?F?ue=F.size:(n("Must specify the size of the font since there is no default value.",z,D),ue=12):ue=parseFloat(ue),Z=Z.join(" "),Z===""&&(F?Z=F.face:(n("Must specify the name of the font since there is no default value.",z,D),Z="sans-serif"));var Ie=d(Z),Je={};return Ie?(Je.face=Ie.face,Je.weight=Ie.weight,Je.style=Ie.style,Je.decoration=Ie.decoration,Je.size=ue,pe&&(Je.box=!0),Je):(Je.face=Z,Je.weight=de,Je.style=ae,Je.decoration=V,Je.size=ue,pe&&(Je.box=!0),Je)},h=function(T,F,z){return F.length===0?'Directive "'+T+'" requires a font as a parameter.':(s[T]=g(F,s[T],z,0,T),s.is_in_header&&(r.formatting[T]=s[T]),null)},m=function(T,F,z){return F.length===0?'Directive "'+T+'" requires a font as a parameter.':(r.formatting[T]=g(F,r.formatting[T],z,0,T),null)},p=function(T,F){var z="";F.forEach(function(Q){z+=Q.token});var D=parseFloat(z);if(isNaN(D)||D===0)return'Directive "'+T+'" requires a number as a parameter.';r.formatting.scale=D},u=["acoustic-bass-drum","bass-drum-1","side-stick","acoustic-snare","hand-clap","electric-snare","low-floor-tom","closed-hi-hat","high-floor-tom","pedal-hi-hat","low-tom","open-hi-hat","low-mid-tom","hi-mid-tom","crash-cymbal-1","high-tom","ride-cymbal-1","chinese-cymbal","ride-bell","tambourine","splash-cymbal","cowbell","crash-cymbal-2","vibraslap","ride-cymbal-2","hi-bongo","low-bongo","mute-hi-conga","open-hi-conga","low-conga","high-timbale","low-timbale","high-agogo","low-agogo","cabasa","maracas","short-whistle","long-whistle","short-guiro","long-guiro","claves","hi-wood-block","low-wood-block","mute-cuica","open-cuica","mute-triangle","open-triangle"],f=function(T){var F=T.split(/\s+/);if(F.length!==2&&F.length!==3)return{error:'Expected parameters "abc-note", "drum-sound", and optionally "note-head"'};var z=F[0],D=parseInt(F[1],10);if((isNaN(D)||D<35||D>81)&&F[1]&&(D=u.indexOf(F[1].toLowerCase())+35),isNaN(D)||D<35||D>81)return{error:'Expected drum name, received "'+F[1]+'"'};var Q={sound:D};return F.length===3&&(Q.noteHead=F[2]),{key:z,value:Q}},_=function(T,F){var z=i.getMeasurement(F);return z.used===0||F.length!==0?{error:'Directive "'+T+'" requires a measurement as a parameter.'}:z.value},v=function(T,F){var z=i.getMeasurement(F);return z.used===0||F.length!==0?'Directive "'+T+'" requires a measurement as a parameter.':(r.formatting[T]=z.value,null)},y=function(T,F,z,D,Q){if(z.length!==1||z[0].type!=="number")return'Directive "'+F+'" requires a number as a parameter.';var X=z[0].intt;return D!==void 0&&X<D?'Directive "'+F+'" requires a number greater than or equal to '+D+" as a parameter.":Q!==void 0&&X>Q?'Directive "'+F+'" requires a number less than or equal to '+Q+" as a parameter.":(s[T]=X,null)},S=function(T,F,z){if(z.length===1&&(z[0].token==="true"||z[0].token==="false"))return s[T]=z[0].token==="true",null;var D=y(T,F,z,0,1);return D!==null?D:(s[T]=s[T]===1,null)},q=function(T,F,z,D){if(z.length!==1)return'Directive "'+F+'" requires one of [ '+D.join(", ")+" ] as a parameter.";for(var Q=z[0].token,X=!1,Z=0;!X&&Z<D.length;Z++)D[Z]===Q&&(X=!0);return X?(s[T]=Q,null):'Directive "'+F+'" requires one of [ '+D.join(", ")+" ] as a parameter."},M=["nobarlines","barlines","beataccents","nobeataccents","droneon","droneoff","drumon","drumoff","fermatafixed","fermataproportional","gchordon","gchordoff","controlcombo","temperamentnormal","noportamento"],P=["gchord","ptstress","beatstring"],B=["bassvol","chordvol","c","channel","beatmod","deltaloudness","drumbars","gracedivider","makechordchannels","randomchordattack","chordattack","stressmodel","transpose","rtranspose","vol","volinc","gchordbars"],A=["program"],j=["ratio","snt","bendvelocity","pitchbend","control","temperamentlinear"],G=["beat"],C=["drone"],R=["portamento"],H=["expand","grace","trim"],E=["drum","chordname"],U=["bassprog","chordprog"],N=function(T,F,z){var D=T.shift().token,Q=[];if(M.indexOf(D)>=0)T.length!==0&&n("Unexpected parameter in MIDI "+D,z,0);else if(P.indexOf(D)>=0)T.length!==1?n("Expected one parameter in MIDI "+D,z,0):Q.push(T[0].token);else if(B.indexOf(D)>=0)T.length!==1?n("Expected one parameter in MIDI "+D,z,0):T[0].type!=="number"?n("Expected one integer parameter in MIDI "+D,z,0):Q.push(T[0].intt);else if(A.indexOf(D)>=0)T.length!==1&&T.length!==2?n("Expected one or two parameters in MIDI "+D,z,0):T[0].type!=="number"||T.length===2&&T[1].type!=="number"?n("Expected integer parameter in MIDI "+D,z,0):(Q.push(T[0].intt),T.length===2&&Q.push(T[1].intt));else if(j.indexOf(D)>=0)T.length!==2?n("Expected two parameters in MIDI "+D,z,0):T[0].type!=="number"||T[1].type!=="number"?n("Expected two integer parameters in MIDI "+D,z,0):(Q.push(T[0].intt),Q.push(T[1].intt));else if(R.indexOf(D)>=0)T.length!==2?n("Expected two parameters in MIDI "+D,z,0):T[0].type!=="alpha"||T[1].type!=="number"?n("Expected one string and one integer parameters in MIDI "+D,z,0):(Q.push(T[0].token),Q.push(T[1].intt));else if(D==="drummap")T.length===2&&T[0].type==="alpha"&&T[1].type==="number"?(F.formatting||(F.formatting={}),F.formatting.midi||(F.formatting.midi={}),F.formatting.midi.drummap||(F.formatting.midi.drummap={}),F.formatting.midi.drummap[T[0].token]=T[1].intt,Q=F.formatting.midi.drummap):T.length===3&&T[0].type==="punct"&&T[1].type==="alpha"&&T[2].type==="number"?(F.formatting||(F.formatting={}),F.formatting.midi||(F.formatting.midi={}),F.formatting.midi.drummap||(F.formatting.midi.drummap={}),F.formatting.midi.drummap[T[0].token+T[1].token]=T[2].intt,Q=F.formatting.midi.drummap):n("Expected one note name and one integer parameter in MIDI "+D,z,0);else if(H.indexOf(D)>=0)T.length!==3||T[0].type!=="number"||T[1].token!=="/"||T[2].type!=="number"?n("Expected fraction parameter in MIDI "+D,z,0):(Q.push(T[0].intt),Q.push(T[2].intt));else if(G.indexOf(D)>=0)T.length!==4?n("Expected four parameters in MIDI "+D,z,0):T[0].type!=="number"||T[1].type!=="number"||T[2].type!=="number"||T[3].type!=="number"?n("Expected four integer parameters in MIDI "+D,z,0):(Q.push(T[0].intt),Q.push(T[1].intt),Q.push(T[2].intt),Q.push(T[3].intt));else if(C.indexOf(D)>=0)T.length!==5?n("Expected five parameters in MIDI "+D,z,0):T[0].type!=="number"||T[1].type!=="number"||T[2].type!=="number"||T[3].type!=="number"||T[4].type!=="number"?n("Expected five integer parameters in MIDI "+D,z,0):(Q.push(T[0].intt),Q.push(T[1].intt),Q.push(T[2].intt),Q.push(T[3].intt),Q.push(T[4].intt));else if(A.indexOf(D)>=0)T.length!==1||T.length!==4?n("Expected one or two parameters in MIDI "+D,z,0):T[0].type!=="number"?n("Expected integer parameter in MIDI "+D,z,0):T.length===4?(T[1].token!=="octave"&&n("Expected octave parameter in MIDI "+D,z,0),T[2].token!=="="&&n("Expected octave parameter in MIDI "+D,z,0),T[3].type!=="number"&&n("Expected integer parameter for octave in MIDI "+D,z,0)):(Q.push(T[0].intt),T.length===4&&Q.push(T[3].intt));else if(E.indexOf(D)>=0)if(T.length<2)n("Expected string parameter and at least one integer parameter in MIDI "+D,z,0);else if(T[0].type!=="alpha")n("Expected string parameter and at least one integer parameter in MIDI "+D,z,0);else{var X=T.shift();for(Q.push(X.token);T.length>0;)X=T.shift(),X.type!=="number"&&n("Expected integer parameter in MIDI "+D,z,0),Q.push(X.intt)}else if(U.indexOf(D)>=0){if(T.length!==1&&T.length!==2)n("Expected one or two parameters in MIDI "+D,z,0);else if(T[0].type!=="number")n("Expected integer parameter in MIDI "+D,z,0);else if(T.length===2&&T[1].type!=="alpha")n("Expected alpha parameter in MIDI "+D,z,0);else if(Q.push(T[0].intt),T.length===2){var Z=T[1].token;Z.indexOf("octave=")!=-1?(Z=Z.replace("octave=",""),Z=parseInt(Z),isNaN(Z)?n("Expected octave value in MIDI"+D):(Z<-1&&(n("Expected octave= in MIDI "+D+" to be >= -1 (recv:"+Z+")"),Z=-1),Z>3&&(n("Expected octave= in MIDI "+D+" to be <= 3 (recv:"+Z+")"),Z=3),Q.push(Z))):n("Expected octave= in MIDI"+D)}}o.hasBeginMusic()?o.appendElement("midi",-1,-1,{cmd:D,params:Q}):(F.formatting.midi===void 0&&(F.formatting.midi={}),F.formatting.midi[D]=Q)};t.parseFontChangeLine=function(T){T=T.replace(/\$\$/g,"");var F=T.split("$");if(F.length>1&&s.setfont){var z=[];F[0]!==""&&z.push({text:F[0]});for(var D=1;D<F.length;D++)if(F[D][0]==="0")z.push({text:F[D].substring(1).replace(/\x03/g,"$$")});else{var Q=parseInt(F[D][0],10);s.setfont[Q]?z.push({font:s.setfont[Q],text:F[D].substring(1).replace(/\x03/g,"$$")}):z[z.length-1].text+="$"+F[D].replace(/\x03/g,"$$")}return z}return T.replace(/\x03/g,"$$")};var L=["auto","above","below","hidden"];t.addDirective=function(T){var F=i.tokenize(T,0,T.length);if(F.length===0||F[0].type!=="alpha")return null;var z=T.substring(T.indexOf(F[0].token)+F[0].token.length);z=i.stripComment(z);var D=F.shift().token.toLowerCase(),Q="",X;switch(D){case"bagpipes":r.formatting.bagpipes=!0;break;case"flatbeams":r.formatting.flatbeams=!0;break;case"jazzchords":r.formatting.jazzchords=!0;break;case"accentAbove":r.formatting.accentAbove=!0;break;case"germanAlphabet":r.formatting.germanAlphabet=!0;break;case"landscape":s.landscape=!0;break;case"papersize":s.papersize=z;break;case"graceslurs":if(F.length!==1)return"Directive graceslurs requires one parameter: 0 or 1";if(F[0].token==="0"||F[0].token==="false")r.formatting.graceSlurs=!1;else if(F[0].token==="1"||F[0].token==="true")r.formatting.graceSlurs=!0;else return"Directive graceslurs requires one parameter: 0 or 1 (received "+F[0].token+")";break;case"lineThickness":var Z=I(F);if(Z.value!==void 0&&(r.formatting.lineThickness=Z.value),Z.error)return Z.error;break;case"stretchlast":var ue=I(F);if(ue.value!==void 0&&(r.formatting.stretchlast=ue.value),ue.error)return ue.error;break;case"titlecaps":s.titlecaps=!0;break;case"titleleft":r.formatting.titleleft=!0;break;case"measurebox":r.formatting.measurebox=!0;break;case"vocal":return q("vocalPosition",D,F,L);case"dynamic":return q("dynamicPosition",D,F,L);case"gchord":return q("chordPosition",D,F,L);case"ornament":return q("ornamentPosition",D,F,L);case"volume":return q("volumePosition",D,F,L);case"botmargin":case"botspace":case"composerspace":case"indent":case"leftmargin":case"linesep":case"musicspace":case"partsspace":case"pageheight":case"pagewidth":case"rightmargin":case"stafftopmargin":case"staffsep":case"staffwidth":case"subtitlespace":case"sysstaffsep":case"systemsep":case"textspace":case"titlespace":case"topmargin":case"topspace":case"vocalspace":case"wordsspace":return v(D,F);case"voicescale":if(F.length!==1||F[0].type!=="number")return"voicescale requires one float as a parameter";var de=F.shift();return s.currentVoice&&(s.currentVoice.scale=de.floatt,o.changeVoiceScale(s.currentVoice.scale)),null;case"voicecolor":if(F.length!==1)return"voicecolor requires one string as a parameter";var ae=F.shift();return s.currentVoice&&(s.currentVoice.color=ae.token,o.changeVoiceColor(s.currentVoice.color)),null;case"vskip":var V=Math.round(_(D,F));return V.error?V.error:(o.addSpacing(V),null);case"scale":p(D,F);break;case"sep":if(F.length===0)o.addSeparator(14,14,85,{startChar:s.iChar,endChar:s.iChar+5});else{var pe=i.getMeasurement(F);if(pe.used===0)return'Directive "'+D+'" requires 3 numbers: space above, space below, length of line';var Ce=pe.value;if(pe=i.getMeasurement(F),pe.used===0)return'Directive "'+D+'" requires 3 numbers: space above, space below, length of line';var ce=pe.value;if(pe=i.getMeasurement(F),pe.used===0||F.length!==0)return'Directive "'+D+'" requires 3 numbers: space above, space below, length of line';var Te=pe.value;o.addSeparator(Ce,ce,Te,{startChar:s.iChar,endChar:s.iChar+z.length})}break;case"barsperstaff":if(Q=y("barsperstaff",D,F),Q!==null)return Q;break;case"staffnonote":if(F.length!==1)return"Directive staffnonote requires one parameter: 0 or 1";if(F[0].token==="0")s.staffnonote=!0;else if(F[0].token==="1")s.staffnonote=!1;else return"Directive staffnonote requires one parameter: 0 or 1 (received "+F[0].token+")";break;case"printtempo":if(Q=S("printTempo",D,F),Q!==null)return Q;break;case"partsbox":if(Q=S("partsBox",D,F),Q!==null)return Q;s.partsfont.box=s.partsBox;break;case"freegchord":if(Q=S("freegchord",D,F),Q!==null)return Q;break;case"measurenb":case"barnumbers":if(Q=y("barNumbers",D,F),Q!==null)return Q;break;case"setbarnb":if(F.length!==1||F[0].type!=="number")return"Directive setbarnb requires a number as a parameter.";s.currBarNumber=o.setBarNumberImmediate(F[0].intt);break;case"keywarn":if(F.length!==1||F[0].type!=="number"||F[0].intt!==1&&F[0].intt!==0)return"Directive "+D+" requires 0 or 1 as a parameter.";s[D]=F[0].intt===1;break;case"begintext":var ye="";for(X=i.nextLine();X&&X.indexOf("%%endtext")!==0;){if(a.startsWith(X,"%%")){var Ie=X.substring(2);Ie=Ie.trim()+`
|
||
`,ye+=Ie}else ye+=X.trim()+`
|
||
`;X=i.nextLine()}o.addText(ye,{startChar:s.iChar,endChar:s.iChar+ye.length+7});break;case"continueall":s.continueall=!0;break;case"beginps":for(X=i.nextLine();X&&X.indexOf("%%endps")!==0;)i.nextLine();n("Postscript ignored",T,0);break;case"deco":z.length>0&&s.ignoredDecorations.push(z.substring(0,z.indexOf(" "))),n("Decoration redefinition ignored",T,0);break;case"text":var Je=i.translateString(z);o.addText(t.parseFontChangeLine(Je),{startChar:s.iChar,endChar:s.iChar+z.length+7});break;case"center":var tt=i.translateString(z);o.addCentered(t.parseFontChangeLine(tt));break;case"font":break;case"setfont":var De=i.tokenize(z,0,z.length);if(De.length>=4&&De[0].token==="-"&&De[1].type==="number"){var le=parseInt(De[1].token);le>=1&&le<=9&&(s.setfont||(s.setfont=[]),De.shift(),De.shift(),s.setfont[le]=g(De,s.setfont[le],T,0,"setfont"))}break;case"gchordfont":case"partsfont":case"tripletfont":case"vocalfont":case"textfont":case"annotationfont":case"historyfont":case"infofont":case"measurefont":case"repeatfont":case"wordsfont":return h(D,F,T);case"composerfont":case"subtitlefont":case"tempofont":case"titlefont":case"voicefont":case"footerfont":case"headerfont":return m(D,F,T);case"barlabelfont":case"barnumberfont":case"barnumfont":return h("measurefont",F,T);case"staves":case"score":s.score_is_present=!0;for(var xe=function(nt,gt,dt,It,Ut){(gt||s.staves.length===0)&&s.staves.push({index:s.staves.length,numVoices:0});var Rt=a.last(s.staves);dt!==void 0&&Rt.bracket===void 0&&(Rt.bracket=dt),It!==void 0&&Rt.brace===void 0&&(Rt.brace=It),Ut&&(Rt.connectBarLines="end"),s.voices[nt]===void 0&&(s.voices[nt]={staffNum:Rt.index,index:Rt.numVoices},Rt.numVoices++)},Ke=!1,fe=!1,we=!1,me=!1,be=!1,ke=!1,$e=!1,ge,Me=function(){if($e=!0,ge){var nt="start";ge.staffNum>0&&(s.staves[ge.staffNum-1].connectBarLines==="start"||s.staves[ge.staffNum-1].connectBarLines==="continue")&&(nt="continue"),s.staves[ge.staffNum].connectBarLines=nt}};F.length;){var Fe=F.shift();switch(Fe.token){case"(":Ke?n("Can't nest parenthesis in %%score",T,Fe.start):(Ke=!0,me=!0);break;case")":!Ke||me?n("Unexpected close parenthesis in %%score",T,Fe.start):Ke=!1;break;case"[":fe?n("Can't nest brackets in %%score",T,Fe.start):(fe=!0,be=!0);break;case"]":!fe||be?n("Unexpected close bracket in %%score",T,Fe.start):(fe=!1,s.staves[ge.staffNum].bracket="end");break;case"{":we?n("Can't nest braces in %%score",T,Fe.start):(we=!0,ke=!0);break;case"}":!we||ke?n("Unexpected close brace in %%score",T,Fe.start):(we=!1,s.staves[ge.staffNum].brace="end");break;case"|":Me();break;default:for(var qe="";(Fe.type==="alpha"||Fe.type==="number")&&(qe+=Fe.token,Fe.continueId);)Fe=F.shift();var rt=!Ke||me,Xe=be?"start":fe?"continue":void 0,Re=ke?"start":we?"continue":void 0;xe(qe,rt,Xe,Re,$e),me=!1,be=!1,ke=!1,$e=!1,ge=s.voices[qe],D==="staves"&&Me();break}}break;case"maxstaves":var Be=i.getInt(z);Be.digits===0?n("Expected number of staves in maxstaves"):Be.value>0&&(r.formatting.maxStaves=Be.value);break;case"newpage":var Oe=i.getInt(z);o.addNewPage(Oe.digits===0?-1:Oe.value);break;case"abc":var Ne=z.split(" ");switch(Ne[0]){case"-copyright":case"-creator":case"-edited-by":case"-version":case"-charset":var Ye=Ne.shift();o.addMetaText(D+Ye,Ne.join(" "),{startChar:s.iChar,endChar:s.iChar+z.length+5});break;default:return"Unknown directive: "+D+Ne[0]}break;case"header":case"footer":var Ue=i.getMeat(z,0,z.length);Ue=z.substring(Ue.start,Ue.end),Ue[0]==='"'&&Ue[Ue.length-1]==='"'&&(Ue=Ue.substring(1,Ue.length-1));var Ve=Ue.split(" "),_t={};Ve.length===1?_t={left:"",center:Ve[0],right:""}:Ve.length===2?_t={left:Ve[0],center:Ve[1],right:""}:_t={left:Ve[0],center:Ve[1],right:Ve[2]},Ve.length>3&&n("Too many tabs in "+D+": "+Ve.length+" found.",z,0),o.addMetaTextObj(D,_t,{startChar:s.iChar,endChar:s.iChar+T.length});break;case"midi":var mt=i.tokenize(z,0,z.length,!0);mt.length>0&&mt[0].token==="="&&mt.shift(),mt.length===0?n("Expected midi command",z,0):N(mt,r,z);break;case"percmap":var ot=f(z);ot.error?n(ot.error,T,8):(r.formatting.percmap||(r.formatting.percmap={}),r.formatting.percmap[ot.key]=ot.value);break;case"visualtranspose":var it=i.getInt(z);it.digits===0?n("Expected number of half steps in visualTranspose"):s.globalTranspose=it.value;break;case"map":case"playtempo":case"auquality":case"continuous":case"nobarcheck":r.formatting[D]=z;break;default:return"Unknown directive: "+D}return null},t.globalFormatting=function(T){for(var F in T)if(T.hasOwnProperty(F)){var z=""+T[F],D=i.tokenize(z,0,z.length),Q;switch(F){case"titlefont":case"gchordfont":case"composerfont":case"footerfont":case"headerfont":case"historyfont":case"infofont":case"measurefont":case"partsfont":case"repeatfont":case"subtitlefont":case"tempofont":case"textfont":case"voicefont":case"tripletfont":case"vocalfont":case"wordsfont":case"annotationfont":case"tablabelfont":case"tabnumberfont":case"tabgracefont":h(F,D,z);break;case"scale":p(F,D);break;case"partsbox":Q=S("partsBox",F,D),Q!==null&&n(Q),s.partsfont.box=s.partsBox;break;case"freegchord":Q=S("freegchord",F,D),Q!==null&&n(Q);break;case"fontboxpadding":(D.length!==1||D[0].type!=="number")&&n('Directive "'+F+'" requires a number as a parameter.'),r.formatting.fontboxpadding=D[0].floatt;break;case"stafftopmargin":(D.length!==1||D[0].type!=="number")&&n('Directive "'+F+'" requires a number as a parameter.'),r.formatting.stafftopmargin=D[0].floatt;break;case"stretchlast":var X=I(D);if(X.value!==void 0&&(r.formatting.stretchlast=X.value),X.error)return X.error;break;default:n("Formatting directive unrecognized: ",F,0)}}};function I(T){if(T.length===0)return{value:1};if(T.length===1)if(T[0].type==="number"){if(T[0].floatt>=0||T[0].floatt<=1)return{value:T[0].floatt}}else{if(T[0].token==="false")return{value:0};if(T[0].token==="true")return{value:1}}return{error:"Directive stretchlast requires zero or one parameter: false, true, or number between 0 and 1 (received "+T[0].token+")"}}})(),B0=t,B0}var j0,Q2;function dE(){if(Q2)return j0;Q2=1;var a={};const t=["C,,,","D,,,","E,,,","F,,,","G,,,","A,,,","B,,,","C,,","D,,","E,,","F,,","G,,","A,,","B,,","C,","D,","E,","F,","G,","A,","B,","C","D","E","F","G","A","B","c","d","e","f","g","a","b","c'","d'","e'","f'","g'","a'","b'","c''","d''","e''","f''","g''","a''","b''","c'''","d'''","e'''","f'''","g'''","a'''","b'''"];return a.pitchIndex=function(i){return t.indexOf(i)},a.noteName=function(i){return t[i]},j0=a,j0}var N0,K2;function Y2(){if(K2)return N0;K2=1;var a=["C","C♯","D","D♯","E","F","F♯","G","G♯","A","A♯","B"],t=["C","D♭","D","E♭","E","F","G♭","G","A♭","A","B♭","B"],i=["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"],n=["C","Db","D","Eb","E","F","Gb","G","Ab","A","Bb","B"];function s(r,o,l,c){if(!o||o%12===0)return r;for(;o<0;)o+=12;o>11&&(o=o%12);var d=r.match(/^([A-G][b#♭♯]?)([^\/]+)?\/?([A-G][b#♭♯]?)?(.+)?/);if(!d)return r;var g=d[1],h=d[2],m=d[3],p=d[4],u=a.indexOf(g);if(u<0&&(u=t.indexOf(g)),u<0&&(u=i.indexOf(g)),u<0&&(u=n.indexOf(g)),u<0)return r;u+=o,u=u%12,l?c?r=n[u]:r=t[u]:c?r=i[u]:r=a[u];var f=h&&(h.indexOf("dim")>=0||h.indexOf("°")>=0);if(f&&r==="A#"&&(r="Bb"),f&&r==="D#"&&(r="Eb"),f&&r==="A♯"&&(r="B♭"),f&&r==="D♯"&&(r="E♭"),h&&(r+=h),m){var u=a.indexOf(m);u<0&&(u=t.indexOf(m)),u<0&&(u=i.indexOf(m)),u<0&&(u=n.indexOf(m)),r+="/",u>=0?(u+=o,u=u%12,l?c?r+=n[u]:r+=t[u]:c?r+=i[u]:r+=a[u]):r+=m}return p&&(r+=p),r}return N0=s,N0}var O0,J2;function X2(){if(J2)return O0;J2=1;var a={C:{modes:["CMaj","CIon","Amin","AAeo","Am","GMix","DDor","EPhr","FLyd","BLoc"],stepsFromC:0},Db:{modes:["DbMaj","DbIon","Bbmin","BbAeo","Bbm","AbMix","EbDor","FPhr","GbLyd","CLoc"],stepsFromC:1},D:{modes:["DMaj","DIon","Bmin","BAeo","Bm","AMix","EDor","F#Phr","GLyd","C#Loc"],stepsFromC:2},Eb:{modes:["EbMaj","EbIon","Cmin","CAeo","Cm","BbMix","FDor","GPhr","AbLyd","DLoc"],stepsFromC:3},E:{modes:["EMaj","EIon","C#min","C#Aeo","C#m","BMix","F#Dor","G#Phr","ALyd","D#Loc"],stepsFromC:4},F:{modes:["FMaj","FIon","Dmin","DAeo","Dm","CMix","GDor","APhr","BbLyd","ELoc"],stepsFromC:5},Gb:{modes:["GbMaj","GbIon","Ebmin","EbAeo","Ebm","DbMix","AbDor","BbPhr","CbLyd","FLoc"],stepsFromC:6},G:{modes:["GMaj","GIon","Emin","EAeo","Em","DMix","ADor","BPhr","CLyd","F#Loc"],stepsFromC:7},Ab:{modes:["AbMaj","AbIon","Fmin","FAeo","Fm","EbMix","BbDor","CPhr","DbLyd","GLoc"],stepsFromC:8},A:{modes:["AMaj","AIon","F#min","F#Aeo","F#m","EMix","BDor","C#Phr","DLyd","G#Loc"],stepsFromC:9},Bb:{modes:["BbMaj","BbIon","Gmin","GAeo","Gm","FMix","CDor","DPhr","EbLyd","ALoc"],stepsFromC:10},B:{modes:["BMaj","BIon","G#min","G#Aeo","G#m","F#Mix","C#Dor","D#Phr","ELyd","A#Loc"],stepsFromC:11},"C#":{modes:["C#Maj","C#Ion","A#min","A#Aeo","A#m","G#Mix","D#Dor","E#Phr","F#Lyd","B#Loc"],stepsFromC:1},"F#":{modes:["F#Maj","F#Ion","D#min","D#Aeo","D#m","C#Mix","G#Dor","A#Phr","BLyd","E#Loc"],stepsFromC:6},Cb:{modes:["CbMaj","CbIon","Abmin","AbAeo","Abm","GbMix","DbDor","EbPhr","FbLyd","BbLoc"],stepsFromC:11}},t=["maj","ion","min","aeo","m","mix","dor","phr","lyd","loc"];function i(c){return t.indexOf(c.toLowerCase())>=0}var n=null;function s(){n={};for(var c=Object.keys(a),d=0;d<c.length;d++){var g=a[c[d]];n[c[d].toLowerCase()]=c[d];for(var h=0;h<g.modes.length;h++){var m=g.modes[h].toLowerCase();n[m]=c[d]}}}function r(c){n||s();var d=c.toLowerCase().match(/([a-g][b#]?)(maj|ion|min|aeo|mix|dor|phr|lyd|loc|m)?/);if(!d||!d[2])return c;d=d[1]+d[2];var g=n[d];return g||c}function o(c,d){var g=a[c];if(!g||d==="")return c;var h=d.toLowerCase().match(/^(maj|ion|min|aeo|mix|dor|phr|lyd|loc|m)/);if(!h)return c;for(var m=h[1],p=0;p<g.modes.length;p++){var u=g.modes[p],f=u.toLowerCase().indexOf(m);if(f!==-1&&f===u.length-m.length)return u.substring(0,u.length-m.length)}return c}function l(c,d){var g=a[c];if(!g)return c;for(;d<0;)d+=12;for(var h=(g.stepsFromC+d)%12,m=0;m<Object.keys(a).length;m++){var p=Object.keys(a)[m];if(a[p].stepsFromC===h)return p}return c}return O0={relativeMajor:r,relativeMode:o,transposeKey:l,isLegalMode:i},O0}var D0,Z2;function ew(){if(Z2)return D0;Z2=1;var{relativeMajor:a}=X2(),t={acc:"sharp",note:"f"},i={acc:"sharp",note:"c"},n={acc:"sharp",note:"g"},s={acc:"sharp",note:"d"},r={acc:"sharp",note:"A"},o={acc:"sharp",note:"e"},l={acc:"sharp",note:"B"},c={acc:"flat",note:"B"},d={acc:"flat",note:"e"},g={acc:"flat",note:"A"},h={acc:"flat",note:"d"},m={acc:"flat",note:"G"},p={acc:"flat",note:"c"},u={acc:"flat",note:"F"},f={"C#":[t,i,n,s,r,o,l],"F#":[t,i,n,s,r,o],B:[t,i,n,s,r],E:[t,i,n,s],A:[t,i,n],D:[t,i],G:[t],C:[],F:[c],Bb:[c,d],Eb:[c,d,g],Cm:[c,d,g],Ab:[c,d,g,h],Db:[c,d,g,h,m],Gb:[c,d,g,h,m,p],Cb:[c,d,g,h,m,p,u],"A#":[c,d],"B#":[],"D#":[c,d,g],"E#":[c],"G#":[c,d,g,h],none:[]};function _(v){var y=f[a(v)];return y?JSON.parse(JSON.stringify(y)):null}return D0=_,D0}var I0,tw;function aw(){if(tw)return I0;tw=1;var a=dE(),t=Y2(),i=ew(),n={},s={C:0,"C#":1,Db:1,D:2,"D#":3,Eb:3,E:4,F:5,"F#":6,Gb:6,G:7,"G#":8,Ab:8,A:9,"A#":10,Bb:10,B:11},r=["C","Db","D","Eb","E","F","F#","G","Ab","A","Bb","B"],o=["C","C#","D","D#","E","F","F#","G","G#","A","Bb","B"];n.keySignature=function(m,p,u,f,_){if(m.clef.type==="perc"||m.clef.type==="none")return{accidentals:i(p),root:u,acc:f};_||(_=0),m.localTransposeVerticalMovement=0,m.localTransposePreferFlats=!1;var v=i(p);if(!v)return m.key;if(m.localTranspose=(m.globalTranspose?m.globalTranspose:0)+_,!m.localTranspose)return{accidentals:v,root:u,acc:f};if(m.globalTransposeOrigKeySig=v,m.localTranspose%12===0)return m.localTransposeVerticalMovement=m.localTranspose/12*7,{accidentals:v,root:u,acc:f};var y=p[0];p[1]==="b"||p[1]==="#"?(y+=p[1],p=p.substr(2)):p=p.substr(1);var S=s[y],q=S!==void 0;q||(S=0,y="C",p="");for(var M=S+m.localTranspose;M<0;)M+=12;M>11&&(M=M%12);var P=p[0]==="m"?o[M]:r[M],B=P+p,A=i(B);(A.length===0||A[0].acc==="flat")&&(m.localTransposePreferFlats=!0);var j=B.charCodeAt(0)-y.charCodeAt(0);return m.localTranspose>0?(j<0||j===0&&(y[1]==="#"||B[1]==="b"))&&(j+=7):m.localTranspose<0&&(j>0||j===0&&(y[1]==="b"||B[1]==="#"))&&(j-=7),m.localTranspose>0?m.localTransposeVerticalMovement=j+Math.floor(m.localTranspose/12)*7:m.localTransposeVerticalMovement=j+Math.ceil(m.localTranspose/12)*7,q?{accidentals:A,root:P[0],acc:P.length>1?P[1]:""}:{accidentals:[],root:u,acc:f}},n.chordName=function(m,p){return t(p,m.localTranspose,m.localTransposePreferFlats,m.freegchord)};var l=["c","d","e","f","g","a","b"];function c(m,p,u,f,_){for(var v=l[(m+49)%7],y=0,S=0;S<f.length;S++)f[S].note.toLowerCase()===v&&(y=d[f[S].acc]);for(var q=d[u],M=q-y,P=l[(p+49)%7],B=0,A=0;A<_.accidentals.length;A++)_.accidentals[A].note.toLowerCase()===P&&(B=d[_.accidentals[A].acc]);var j=M+B;return j<-2&&(p--,j+=P==="c"||P==="f"?1:2),j>2&&(p++,j-=P==="b"||P==="e"?1:2),[p,j]}var d={dblflat:-2,flat:-1,natural:0,sharp:1,dblsharp:2},g={"-2":"dblflat","-1":"flat",0:"natural",1:"sharp",2:"dblsharp"},h={"-2":"__","-1":"_",0:"=",1:"^",2:"^^"};return n.note=function(m,p){if(!(!m.localTranspose||m.clef.type==="perc")){var u=p.pitch;if(m.localTransposeVerticalMovement&&(p.pitch=p.pitch+m.localTransposeVerticalMovement,p.name)){var f=p.accidental?p.name.substring(1):p.name,_=p.accidental?p.name[0]:"",v=a.pitchIndex(f);p.name=_+a.noteName(v+m.localTransposeVerticalMovement)}if(p.accidental){var y=c(u,p.pitch,p.accidental,m.globalTransposeOrigKeySig,m.targetKey);p.pitch=y[0],p.accidental=g[y[1]],p.name&&(p.name=h[y[1]]+p.name.replace(/[_^=]/g,""))}}},I0=n,I0}var L0,iw;function V0(){if(iw)return L0;iw=1;var a=P0(),t=aw(),i={};return(function(){var n,s,r,o;i.initialize=function(u,f,_,v,y){n=u,s=f,r=_,o=y},i.standardKey=function(u,f,_,v){return t.keySignature(r,u,f,_,v)};var l={treble:{clef:"treble",pitch:4,mid:0},"treble+8":{clef:"treble+8",pitch:4,mid:0},"treble-8":{clef:"treble-8",pitch:4,mid:0},"treble^8":{clef:"treble+8",pitch:4,mid:0},treble_8:{clef:"treble-8",pitch:4,mid:0},treble1:{clef:"treble",pitch:2,mid:2},treble2:{clef:"treble",pitch:4,mid:0},treble3:{clef:"treble",pitch:6,mid:-2},treble4:{clef:"treble",pitch:8,mid:-4},treble5:{clef:"treble",pitch:10,mid:-6},perc:{clef:"perc",pitch:6,mid:0},none:{clef:"none",mid:0},bass:{clef:"bass",pitch:8,mid:-12},"bass+8":{clef:"bass+8",pitch:8,mid:-12},"bass-8":{clef:"bass-8",pitch:8,mid:-12},"bass^8":{clef:"bass+8",pitch:8,mid:-12},bass_8:{clef:"bass-8",pitch:8,mid:-12},"bass+16":{clef:"bass",pitch:8,mid:-12},"bass-16":{clef:"bass",pitch:8,mid:-12},"bass^16":{clef:"bass",pitch:8,mid:-12},bass_16:{clef:"bass",pitch:8,mid:-12},bass1:{clef:"bass",pitch:2,mid:-6},bass2:{clef:"bass",pitch:4,mid:-8},bass3:{clef:"bass",pitch:6,mid:-10},bass4:{clef:"bass",pitch:8,mid:-12},bass5:{clef:"bass",pitch:10,mid:-14},tenor:{clef:"alto",pitch:8,mid:-8},tenor1:{clef:"alto",pitch:2,mid:-2},tenor2:{clef:"alto",pitch:4,mid:-4},tenor3:{clef:"alto",pitch:6,mid:-6},tenor4:{clef:"alto",pitch:8,mid:-8},tenor5:{clef:"alto",pitch:10,mid:-10},alto:{clef:"alto",pitch:6,mid:-6},alto1:{clef:"alto",pitch:2,mid:-2},alto2:{clef:"alto",pitch:4,mid:-4},alto3:{clef:"alto",pitch:6,mid:-6},alto4:{clef:"alto",pitch:8,mid:-8},alto5:{clef:"alto",pitch:10,mid:-10},"alto+8":{clef:"alto+8",pitch:6,mid:-6},"alto-8":{clef:"alto-8",pitch:6,mid:-6},"alto^8":{clef:"alto+8",pitch:6,mid:-6},alto_8:{clef:"alto-8",pitch:6,mid:-6}},c=function(u,f){var _=l[u],v=_?_.mid:0;return v+f};i.fixClef=function(u){var f=l[u.type];f&&(u.clefPos=f.pitch,u.type=f.clef)},i.deepCopyKey=function(u){var f={accidentals:[],root:u.root,acc:u.acc,mode:u.mode};return u.accidentals.forEach(function(_){f.accidentals.push(Object.assign({},_))}),u.explicitAccidentals&&(f.explicitAccidentals=[],u.explicitAccidentals.forEach(function(_){f.explicitAccidentals.push(Object.assign({},_))})),f};var d=function(){r.currentVoice&&(r.currentVoice.key=i.deepCopyKey(r.key))},g={A:5,B:6,C:0,D:1,E:2,F:3,G:4,a:12,b:13,c:7,d:8,e:9,f:10,g:11};i.addPosToKey=function(u,f){var _=u.verticalPos;f.accidentals.forEach(function(v){var y=g[v.note];y=y-_,v.verticalPos=y}),f.impliedNaturals&&f.impliedNaturals.forEach(function(v){var y=g[v.note];y=y-_,v.verticalPos=y}),_<-10?(f.accidentals.forEach(function(v){v.verticalPos-=7,(v.verticalPos>=11||v.verticalPos===10&&v.acc==="flat")&&(v.verticalPos-=7),v.note==="A"&&v.acc==="sharp"&&(v.verticalPos-=7),(v.note==="G"||v.note==="F")&&v.acc==="flat"&&(v.verticalPos-=7)}),f.impliedNaturals&&f.impliedNaturals.forEach(function(v){v.verticalPos-=7,(v.verticalPos>=11||v.verticalPos===10&&v.acc==="flat")&&(v.verticalPos-=7),v.note==="A"&&v.acc==="sharp"&&(v.verticalPos-=7),(v.note==="G"||v.note==="F")&&v.acc==="flat"&&(v.verticalPos-=7)})):_<-4?(f.accidentals.forEach(function(v){v.verticalPos-=7,_===-8&&(v.note==="f"||v.note==="g")&&v.acc==="sharp"&&(v.verticalPos-=7)}),f.impliedNaturals&&f.impliedNaturals.forEach(function(v){v.verticalPos-=7,_===-8&&(v.note==="f"||v.note==="g")&&v.acc==="sharp"&&(v.verticalPos-=7)})):_>=7&&(f.accidentals.forEach(function(v){v.verticalPos+=7}),f.impliedNaturals&&f.impliedNaturals.forEach(function(v){v.verticalPos+=7}))},i.fixKey=function(u,f){var _=Object.assign({},f);return i.addPosToKey(u,_),_};var h=function(u){var f=0,_=u[f++];(_==="^"||_==="_")&&(_=u[f++]);var v=g[_];for(v===void 0&&(v=6);f<u.length;f++)if(u[f]===",")v-=7;else if(u[f]==="'")v+=7;else break;return{mid:v-6,str:u.substring(f)}},m=function(u){for(var f=0;f<u.length;f++)u[f].note==="b"?u[f].note="B":u[f].note==="a"?u[f].note="A":u[f].note==="F"?u[f].note="f":u[f].note==="E"?u[f].note="e":u[f].note==="D"?u[f].note="d":u[f].note==="C"?u[f].note="c":u[f].note==="G"&&u[f].acc==="sharp"?u[f].note="g":u[f].note==="g"&&u[f].acc==="flat"&&(u[f].note="G")};i.parseKey=function(u,f){u.length===0&&(u="none");var _=n.tokenize(u,0,u.length),v={};if(_.length===0)return s("Must pass in key signature.",u,0),v;switch(_[0].token){case"HP":a.addDirective("bagpipes"),r.key={root:"HP",accidentals:[],acc:"",mode:""},v.foundKey=!0,_.shift(),f||(r.globalKey=i.deepCopyKey(r.key)),d();break;case"Hp":a.addDirective("bagpipes"),r.key={root:"Hp",accidentals:[{acc:"natural",note:"g"},{acc:"sharp",note:"f"},{acc:"sharp",note:"c"}],acc:"",mode:""},v.foundKey=!0,_.shift(),f||(r.globalKey=i.deepCopyKey(r.key)),d();break;case"none":r.key={root:"none",accidentals:[],acc:"",mode:""},v.foundKey=!0,_.shift(),f||(r.globalKey=i.deepCopyKey(r.key)),d();break;default:var y=n.getKeyPitch(_[0].token);if(y.len>0){v.foundKey=!0;var S="",q="";_[0].token.length>1?_[0].token=_[0].token.substring(1):_.shift();var M=y.token;if(_.length>0){var P=n.getSharpFlat(_[0].token);if(P.len>0&&(_[0].token.length>1?_[0].token=_[0].token.substring(1):_.shift(),M+=P.token,S=P.token),_.length>0){var B=n.getMode(_[0].token);B.len>0&&(_.shift(),M+=B.token,q=B.token)}if(i.standardKey(M,y.token,S,0)===void 0)return s("Unsupported key signature: "+M,u,0),v}var A=i.deepCopyKey(r.key),j=!f&&r.globalTranspose?-r.globalTranspose:0,G;if(f&&(G=r.globalTransposeOrigKeySig),r.key=i.deepCopyKey(i.standardKey(M,y.token,S,j)),f&&(r.globalTransposeOrigKeySig=G),r.key.mode=q,A&&r.keywarn!==!1){for(var C,R=0;R<r.key.accidentals.length;R++)for(C=0;C<A.accidentals.length;C++)A.accidentals[C].note&&r.key.accidentals[R].note.toLowerCase()===A.accidentals[C].note.toLowerCase()&&(A.accidentals[C].note=null);for(C=0;C<A.accidentals.length;C++)A.accidentals[C].note&&(r.key.impliedNaturals||(r.key.impliedNaturals=[]),r.key.impliedNaturals.push({acc:"natural",note:A.accidentals[C].note}))}f||(r.globalKey=i.deepCopyKey(r.key)),d()}break}if(_.length===0||(_[0].token==="exp"&&_.shift(),_.length===0)||(_[0].token==="oct"&&_.shift(),_.length===0))return v;var H=n.getKeyAccidentals2(_);if(H.warn&&s(H.warn,u,0),H.accs){v.foundKey||(v.foundKey=!0,r.key={root:"none",acc:"",mode:"",accidentals:[]}),m(H.accs);for(var E=0;E<H.accs.length;E++){for(var U=!1,N=0;N<r.key.accidentals.length&&!U;N++)r.key.accidentals[N].note===H.accs[E].note&&(U=!0,r.key.accidentals[N].acc!==H.accs[E].acc&&(r.key.accidentals[N].acc=H.accs[E].acc,r.key.explicitAccidentals||(r.key.explicitAccidentals=[]),r.key.explicitAccidentals.push(H.accs[E])));if(!U&&(r.key.explicitAccidentals||(r.key.explicitAccidentals=[]),r.key.explicitAccidentals.push(H.accs[E]),r.key.accidentals.push(H.accs[E]),r.key.impliedNaturals))for(var L=0;L<r.key.impliedNaturals.length;L++)r.key.impliedNaturals[L].note===H.accs[E].note&&r.key.impliedNaturals.splice(L,1)}f||(r.globalKey=i.deepCopyKey(r.key)),d()}for(var I;_.length>0;)switch(_[0].token){case"m":case"middle":if(_.shift(),_.length===0)return s("Expected = after middle",u,0),v;if(I=_.shift(),I.token!=="="){s("Expected = after middle",u,I.start);break}if(_.length===0)return s("Expected parameter after middle=",u,0),v;var T=n.getPitchFromTokens(_);T.warn&&s(T.warn,u,0),T.position&&(r.clef.verticalPos=T.position-6);break;case"transpose":if(_.shift(),_.length===0)return s("Expected = after transpose",u,0),v;if(I=_.shift(),I.token!=="="){s("Expected = after transpose",u,I.start);break}if(_.length===0)return s("Expected parameter after transpose=",u,0),v;if(_[0].type!=="number"){s("Expected number after transpose",u,_[0].start);break}r.clef.transpose=_[0].intt,_.shift();break;case"stafflines":if(_.shift(),_.length===0)return s("Expected = after stafflines",u,0),v;if(I=_.shift(),I.token!=="="){s("Expected = after stafflines",u,I.start);break}if(_.length===0)return s("Expected parameter after stafflines=",u,0),v;if(_[0].type!=="number"){s("Expected number after stafflines",u,_[0].start);break}r.clef.stafflines=_[0].intt,_.shift();break;case"staffscale":if(_.shift(),_.length===0)return s("Expected = after staffscale",u,0),v;if(I=_.shift(),I.token!=="="){s("Expected = after staffscale",u,I.start);break}if(_.length===0)return s("Expected parameter after staffscale=",u,0),v;if(_[0].type!=="number"){s("Expected number after staffscale",u,_[0].start);break}r.clef.staffscale=_[0].floatt,_.shift();break;case"octave":if(_.shift(),_.length===0)return s("Expected = after octave",u,0),v;if(I=_.shift(),I.token!=="="){s("Expected = after octave",u,I.start);break}if(_.length===0)return s("Expected parameter after octave=",u,0),v;if(_[0].type!=="number"){s("Expected number after octave",u,_[0].start);break}r.octave=_[0].intt,_.shift();break;case"style":if(_.shift(),_.length===0)return s("Expected = after style",u,0),v;if(I=_.shift(),I.token!=="="){s("Expected = after style",u,I.start);break}if(_.length===0)return s("Expected parameter after style=",u,0),v;switch(_[0].token){case"normal":case"harmonic":case"rhythm":case"x":case"triangle":r.style=_[0].token,_.shift();break;default:s("error parsing style element: "+_[0].token,u,_[0].start);break}break;case"clef":if(_.shift(),_.length===0)return s("Expected = after clef",u,0),v;if(I=_.shift(),I.token!=="="){s("Expected = after clef",u,I.start);break}if(_.length===0)return s("Expected parameter after clef=",u,0),v;case"treble":case"bass":case"alto":case"tenor":case"perc":case"none":var F=_.shift();switch(F.token){case"treble":case"tenor":case"alto":case"bass":case"perc":case"none":break;case"C":F.token="alto";break;case"F":F.token="bass";break;case"G":F.token="treble";break;case"c":F.token="alto";break;case"f":F.token="bass";break;case"g":F.token="treble";break;default:s("Expected clef name. Found "+F.token,u,F.start);break}_.length>0&&_[0].type==="number"&&(F.token+=_[0].token,_.shift()),_.length>1&&(_[0].token==="-"||_[0].token==="+"||_[0].token==="^"||_[0].token==="_")&&_[1].token==="8"&&(F.token+=_[0].token+_[1].token,_.shift(),_.shift()),r.clef={type:F.token,verticalPos:c(F.token,0)},r.currentVoice&&r.currentVoice.transpose!==void 0&&(r.clef.transpose=r.currentVoice.transpose),v.foundClef=!0;break;default:s("Unknown parameter: "+_[0].token,u,_[0].start),_.shift()}return v};var p=function(u){var f=r.voices[u];if(!(r.currentVoice&&r.currentVoice.index===f.index&&r.currentVoice.staffNum===f.staffNum))return r.currentVoice=f,f.key?r.key=i.deepCopyKey(f.key):r.globalKey&&(r.key=i.deepCopyKey(r.globalKey)),o.setCurrentVoice(f.staffNum,f.index,u)};i.parseVoice=function(u,f,_){var v=n.getMeat(u,f,_),y=v.start,S=v.end,q=n.getToken(u,y,S);if(q.length===0){s("Expected a voice id",u,y);return}var M=!1;r.voices[q]===void 0&&(r.voices[q]={},M=!0,r.score_is_present&&s("Can't have an unknown V: id when the %score directive is present",u,y)),y+=q.length,y+=n.eatWhiteSpace(u,y);for(var P={startStaff:M},B=function(T){var F=n.getVoiceToken(u,y,S);F.warn!==void 0?s("Expected value for "+T+" in voice: "+F.warn,u,y):F.err!==void 0?s("Expected value for "+T+" in voice: "+F.err,u,y):F.token.length===0&&u[y]!=='"'?s("Expected value for "+T+" in voice",u,y):P[T]=F.token,y+=F.len},A=function(T,F,z){var D=n.getVoiceToken(u,y,S);D.warn!==void 0?s("Expected value for "+F+" in voice: "+D.warn,u,y):D.err!==void 0?s("Expected value for "+F+" in voice: "+D.err,u,y):D.token.length===0&&u[y]!=='"'?s("Expected value for "+F+" in voice",u,y):(D.token=parseFloat(D.token),r.voices[T][F]=D.token),y+=D.len},j=function(T,F){var z=n.getVoiceToken(u,y,S);if(z.warn!==void 0)s("Expected value for "+T+" in voice: "+z.warn,u,y);else if(z.err!==void 0)s("Expected value for "+T+" in voice: "+z.err,u,y);else if(z.token.length===0&&u[y]!=='"')s("Expected value for "+T+" in voice",u,y);else return z.token;y+=z.len},G=function(T,F){var z={_B:2,_E:9,_b:-10,_e:-3},D=n.getVoiceToken(u,y,S);if(D.warn!==void 0)s("Expected one of (_B, _E, _b, _e) for "+F+" in voice: "+D.warn,u,y);else if(D.token.length===0&&u[y]!=='"')s("Expected one of (_B, _E, _b, _e) for "+F+" in voice",u,y);else{var Q=z[D.token];Q?r.voices[T][F]=Q:s("Expected one of (_B, _E, _b, _e) for "+F+" in voice",u,y)}y+=D.len};y<S;){var C=n.getVoiceToken(u,y,S);if(y+=C.len,C.warn)s("Error parsing voice: "+C.warn,u,y);else{var R=null;switch(C.token){case"clef":case"cl":B("clef");var H=0;P.clef!==void 0&&(P.clef=P.clef.replace(/[',]/g,""),P.clef.indexOf("+16")!==-1&&(H+=14,P.clef=P.clef.replace("+16","")),P.verticalPos=c(P.clef,H));break;case"treble":case"bass":case"tenor":case"alto":case"perc":case"none":case"treble'":case"bass'":case"tenor'":case"alto'":case"none'":case"treble''":case"bass''":case"tenor''":case"alto''":case"none''":case"treble,":case"bass,":case"tenor,":case"alto,":case"none,":case"treble,,":case"bass,,":case"tenor,,":case"alto,,":case"none,,":case"treble+8":case"treble-8":case"treble^8":case"treble_8":case"treble1":case"treble2":case"treble3":case"treble4":case"treble5":case"bass+8":case"bass-8":case"bass^8":case"bass_8":case"bass+16":case"bass-16":case"bass^16":case"bass_16":case"bass1":case"bass2":case"bass3":case"bass4":case"bass5":case"tenor1":case"tenor2":case"tenor3":case"tenor4":case"tenor5":case"alto1":case"alto2":case"alto3":case"alto4":case"alto5":case"alto+8":case"alto-8":case"alto^8":case"alto_8":var E=0;P.clef=C.token.replace(/[',]/g,""),P.verticalPos=c(P.clef,E),r.voices[q].clef=C.token;break;case"staves":case"stave":case"stv":B("staves");break;case"brace":case"brc":B("brace");break;case"bracket":case"brk":B("bracket");break;case"name":case"nm":B("name");break;case"subname":case"sname":case"snm":B("subname");break;case"merge":P.startStaff=!1;break;case"stem":case"stems":R=n.getVoiceToken(u,y,S),R.warn!==void 0?s("Expected value for stems in voice: "+R.warn,u,y):R.err!==void 0?s("Expected value for stems in voice: "+R.err,u,y):R.token==="up"||R.token==="down"?r.voices[q].stem=R.token:s("Expected up or down for voice stem",u,y),y+=R.len;break;case"up":case"down":r.voices[q].stem=C.token;break;case"middle":case"m":B("verticalPos"),P.verticalPos=h(P.verticalPos).mid;break;case"gchords":case"gch":r.voices[q].suppressChords=!0,R=n.getVoiceToken(u,y,S),R.token==="0"&&(y=y+R.len);break;case"space":case"spc":B("spacing");break;case"scale":A(q,"scale");break;case"score":G(q,"scoreTranspose");break;case"transpose":A(q,"transpose");break;case"stafflines":A(q,"stafflines");break;case"staffscale":A(q,"staffscale");break;case"octave":A(q,"octave");break;case"volume":A(q,"volume");break;case"cue":var U=j("cue");U==="on"?r.voices[q].scale=.6:r.voices[q].scale=1;break;case"style":R=n.getVoiceToken(u,y,S),R.warn!==void 0?s("Expected value for style in voice: "+R.warn,u,y):R.err!==void 0?s("Expected value for style in voice: "+R.err,u,y):R.token==="normal"||R.token==="harmonic"||R.token==="rhythm"||R.token==="x"||R.token==="triangle"?r.voices[q].style=R.token:s("Expected one of [normal, harmonic, rhythm, x, triangle] for voice style",u,y),y+=R.len;break}}y+=n.eatWhiteSpace(u,y)}if((P.startStaff||r.staves.length===0)&&(r.staves.push({index:r.staves.length,meter:r.origMeter}),r.score_is_present||(r.staves[r.staves.length-1].numVoices=0)),r.voices[q].staffNum===void 0){r.voices[q].staffNum=r.staves.length-1;var N=0;for(var L in r.voices)r.voices.hasOwnProperty(L)&&r.voices[L].staffNum===r.voices[q].staffNum&&N++;r.voices[q].index=N-1}var I=r.staves[r.voices[q].staffNum];return r.score_is_present||I.numVoices++,P.clef&&(I.clef={type:P.clef,verticalPos:P.verticalPos}),P.spacing&&(I.spacing_below_offset=P.spacing),P.verticalPos&&(I.verticalPos=P.verticalPos),P.name&&(I.name?I.name.push(P.name):I.name=[P.name]),P.subname&&(I.subname?I.subname.push(P.subname):I.subname=[P.subname]),p(q)}})(),L0=i,L0}var H0,nw;function uE(){if(nw)return H0;nw=1;var a=Vr(),t=P0(),i=V0(),n=function(s,r,o,l,c){this.reset=function(h,m,p,u){i.initialize(h,m,p,u,c),t.initialize(h,m,p,u,c)},this.reset(s,r,o,l),this.setTitle=function(h,m){o.hasMainTitle?c.addSubtitle(h,{startChar:o.iChar,endChar:o.iChar+m+2}):(c.addMetaText("title",h,{startChar:o.iChar,endChar:o.iChar+m+2}),o.hasMainTitle=!0)},this.setMeter=function(h){if(h=s.stripComment(h),h==="C")return o.havent_set_length===!0&&(o.default_length=.125,o.havent_set_length=!1),{type:"common_time"};if(h==="C|")return o.havent_set_length===!0&&(o.default_length=.125,o.havent_set_length=!1),{type:"cut_time"};if(h==="o")return o.havent_set_length===!0&&(o.default_length=.125,o.havent_set_length=!1),{type:"tempus_perfectum"};if(h==="c")return o.havent_set_length===!0&&(o.default_length=.125,o.havent_set_length=!1),{type:"tempus_imperfectum"};if(h==="o.")return o.havent_set_length===!0&&(o.default_length=.125,o.havent_set_length=!1),{type:"tempus_perfectum_prolatio"};if(h==="c.")return o.havent_set_length===!0&&(o.default_length=.125,o.havent_set_length=!1),{type:"tempus_imperfectum_prolatio"};if(h.length===0||h.toLowerCase()==="none")return o.havent_set_length===!0&&(o.default_length=.125,o.havent_set_length=!1),null;var m=s.tokenize(h,0,h.length);try{var p=function(){var S={value:0,num:""},q=m.shift();for(q.token==="("&&(q=m.shift());;){if(q.type!=="number")throw"Expected top number of meter";if(S.value+=parseInt(q.token),S.num+=q.token,m.length===0||m[0].token==="/")return S;if(q=m.shift(),q.token===")"){if(m.length===0||m[0].token==="/")return S;throw"Unexpected paren in meter"}if(q.token!=="."&&q.token!=="+"||(S.num+=q.token,m.length===0))throw"Expected top number of meter";q=m.shift()}return S},u=function(){var S=p();if(m.length===0)return S;var q=m.shift();if(q.token!=="/")throw"Expected slash in meter";if(q=m.shift(),q.type!=="number")throw"Expected bottom number of meter";return S.den=q.token,S.value=S.value/parseInt(S.den),S};if(m.length===0)throw"Expected meter definition in M: line";for(var f={type:"specified",value:[]},_=0;;){var v=u();_+=v.value;var y={num:v.num};if(v.den!==void 0&&(y.den=v.den),f.value.push(y),m.length===0)break}return o.havent_set_length===!0&&(o.default_length=_<.75?.0625:.125,o.havent_set_length=!1),f}catch(S){r(S,h,0)}return null},this.calcTempo=function(h){var m=.25;o.meter&&o.meter.type==="specified"?m=1/parseInt(o.meter.value[0].den):o.origMeter&&o.origMeter.type==="specified"&&(m=1/parseInt(o.origMeter.value[0].den));for(var p=0;p<h.duration;p++)h.duration[p]=m*h.duration[p];return h},this.resolveTempo=function(){o.tempo&&(this.calcTempo(o.tempo),l.metaText.tempo=o.tempo,delete o.tempo)},this.addUserDefinition=function(h,m,p){var u=h.indexOf("=",m);if(u===-1){r("Need an = in a macro definition",h,m);return}var f=a.strip(h.substring(m,u)),_=a.strip(h.substring(u+1));if(f.length!==1){r("Macro definitions can only be one character",h,m);return}var v="HIJKLMNOPQRSTUVWXYhijklmnopqrstuvw~";if(v.indexOf(f)===-1){r("Macro definitions must be H-Y, h-w, or tilde",h,m);return}if(_.length===0){r("Missing macro definition",h,m);return}o.macros===void 0&&(o.macros={}),o.macros[f]=_},this.setDefaultLength=function(h,m,p){var u=h.substring(m,p).replace(/ /g,""),f=u.split("/");if(f.length===2){var _=parseInt(f[0]),v=parseInt(f[1]);v>0&&(o.default_length=_/v,o.havent_set_length=!1)}else f.length===1&&f[0]==="1"&&(o.default_length=1,o.havent_set_length=!1)};var d={larghissimo:20,adagissimo:24,sostenuto:28,grave:32,largo:40,lento:50,larghetto:60,adagio:68,adagietto:74,andante:80,andantino:88,"marcia moderato":84,"andante moderato":100,moderato:112,allegretto:116,"allegro moderato":120,allegro:126,animato:132,agitato:140,veloce:148,"mosso vivo":156,vivace:164,vivacissimo:172,allegrissimo:176,presto:184,prestissimo:210};this.setTempo=function(h,m,p,u){try{var f=s.tokenize(h,m,p);if(f.length===0)throw"Missing parameter in Q: field";var _={startChar:u+m-2,endChar:u+p},v=!0,y=f.shift();if(y.type==="quote"&&(_.preString=y.token,y=f.shift(),f.length===0))return d[_.preString.toLowerCase()]&&(_.bpm=d[_.preString.toLowerCase()],_.suppressBpm=!0),{type:"immediate",tempo:_};if(y.type==="alpha"&&y.token==="C"){if(f.length===0)throw"Missing tempo after C in Q: field";if(y=f.shift(),y.type==="punct"&&y.token==="="){if(f.length===0)throw"Missing tempo after = in Q: field";if(y=f.shift(),y.type!=="number")throw"Expected number after = in Q: field";_.duration=[1],_.bpm=parseInt(y.token)}else if(y.type==="number"){if(_.duration=[parseInt(y.token)],f.length===0)throw"Missing = after duration in Q: field";if(y=f.shift(),y.type!=="punct"||y.token!=="=")throw"Expected = after duration in Q: field";if(f.length===0)throw"Missing tempo after = in Q: field";if(y=f.shift(),y.type!=="number")throw"Expected number after = in Q: field";_.bpm=parseInt(y.token)}else throw"Expected number or equal after C in Q: field"}else if(y.type==="number"){var S=parseInt(y.token);if(f.length===0||f[0].type==="quote")_.duration=[1],_.bpm=S;else{if(v=!1,y=f.shift(),y.type!=="punct"&&y.token!=="/"||(y=f.shift(),y.type!=="number"))throw"Expected fraction in Q: field";var q=parseInt(y.token);for(_.duration=[S/q];f.length>0&&f[0].token!=="="&&f[0].type!=="quote";){if(y=f.shift(),y.type!=="number"||(S=parseInt(y.token),y=f.shift(),y.type!=="punct"&&y.token!=="/")||(y=f.shift(),y.type!=="number"))throw"Expected fraction in Q: field";q=parseInt(y.token),_.duration.push(S/q)}if(y=f.shift(),y.type!=="punct"&&y.token!=="=")throw"Expected = in Q: field";if(y=f.shift(),y.type!=="number")throw"Expected tempo in Q: field";_.bpm=parseInt(y.token)}}else throw"Unknown value in Q: field";if(f.length!==0&&(y=f.shift(),y.type==="quote"&&(_.postString=y.token,y=f.shift()),f.length!==0))throw"Unexpected string at end of Q: field";return o.printTempo===!1&&(_.suppress=!0),{type:v?"delaySet":"immediate",tempo:_}}catch(M){return r(M,h,m),{type:"none"}}},this.letter_to_inline_header=function(h,m,p){var u=!1,f=s.eatWhiteSpace(h,m);if(m+=f,h.length>=m+5&&h[m]==="["&&h[m+2]===":"){var _=h.indexOf("]",m),v=o.iChar+m,y=o.iChar+_+1;switch(h.substring(m,m+3)){case"[I:":var S=t.addDirective(h.substring(m+3,_));return S&&r(S,h,m),[_-m+1+f];case"[M:":var q=this.setMeter(h.substring(m+3,_));return p&&o.currentVoice&&q?o.staves[o.currentVoice.staffNum].meter=q:c.hasBeginMusic()&&q?c.appendStartingElement("meter",v,y,q):o.meter=q,[_-m+1+f];case"[K:":var M=i.parseKey(h.substring(m+3,_),!0);return M.foundClef&&c.hasBeginMusic()&&c.appendStartingElement("clef",v,y,o.clef),M.foundKey&&c.hasBeginMusic()&&c.appendStartingElement("key",v,y,i.fixKey(o.clef,o.key)),[_-m+1+f];case"[P:":var P=t.parseFontChangeLine(h.substring(m+3,_));return p||l.lines.length<=l.lineNum?o.partForNextLine={title:P,startChar:v,endChar:y}:c.appendElement("part",v,y,{title:P}),[_-m+1+f];case"[L:":return this.setDefaultLength(h,m+3,_),[_-m+1+f];case"[Q:":if(_>0){var B=this.setTempo(h,m+3,_,o.iChar);return B.type==="delaySet"?c.hasBeginMusic()?c.appendElement("tempo",v,y,this.calcTempo(B.tempo)):o.tempoForNextLine=["tempo",v,y,this.calcTempo(B.tempo)]:B.type==="immediate"&&(!p&&c.hasBeginMusic()?c.appendElement("tempo",v,y,B.tempo):o.tempoForNextLine=["tempo",v,y,B.tempo]),[_-m+1+f,h[m+1],h.substring(m+3,_)]}break;case"[V:":if(_>0)return u=i.parseVoice(h,m+3,_),[_-m+1+f,h[m+1],h.substring(m+3,_),u];break;case"[r:":return[_-m+1+f]}}return[0]},this.letter_to_body_header=function(h,m){var p=!1;if(h.length>=m+3)switch(h.substring(m,m+2)){case"I:":var u=t.addDirective(h.substring(m+2));return u&&r(u,h,m),[h.length];case"M:":var f=this.setMeter(h.substring(m+2));return c.hasBeginMusic()&&f&&c.appendStartingElement("meter",o.iChar+m,o.iChar+h.length,f),[h.length];case"K:":var _=i.parseKey(h.substring(m+2),c.hasBeginMusic());return _.foundClef&&c.hasBeginMusic()&&o.keywarn!==!1&&c.appendStartingElement("clef",o.iChar+m,o.iChar+h.length,o.clef),_.foundKey&&c.hasBeginMusic()&&o.keywarn!==!1&&c.appendStartingElement("key",o.iChar+m,o.iChar+h.length,i.fixKey(o.clef,o.key)),[h.length];case"P:":return c.hasBeginMusic()&&c.appendElement("part",o.iChar+m,o.iChar+h.length,{title:h.substring(m+2)}),[h.length];case"L:":return this.setDefaultLength(h,m+2,h.length),[h.length];case"Q:":var v=h.indexOf("",m+2);v===-1&&(v=h.length);var y=this.setTempo(h,m+2,v,o.iChar);return y.type==="delaySet"?c.appendElement("tempo",o.iChar+m,o.iChar+h.length,this.calcTempo(y.tempo)):y.type==="immediate"&&c.appendElement("tempo",o.iChar+m,o.iChar+h.length,y.tempo),[v,h[m],a.strip(h.substring(m+2))];case"V:":return p=i.parseVoice(h,m+2,h.length),[h.length,h[m],a.strip(h.substring(m+2)),p]}return[0]};var g={A:"author",B:"book",C:"composer",D:"discography",F:"url",G:"group",I:"instruction",N:"notes",O:"origin",R:"rhythm",S:"source",W:"unalignedWords",Z:"transcription"};this.parseHeader=function(h){var m=g[h[0]],p=h.length-2,u=s.translateString(s.stripComment(h.substring(2)));if(m==="unalignedWords"||m==="notes")c.addMetaTextArray(m,t.parseFontChangeLine(u),{startChar:o.iChar,endChar:o.iChar+h.length});else if(m!==void 0)c.addMetaText(m,t.parseFontChangeLine(u),{startChar:o.iChar,endChar:o.iChar+h.length});else{var f=o.iChar,_=f+h.length;switch(h[0]){case"H":for(c.addMetaTextArray("history",t.parseFontChangeLine(u),{startChar:o.iChar,endChar:o.iChar+h.length}),h=s.peekLine();h&&h[1]!==":";)s.nextLine(),c.addMetaTextArray("history",t.parseFontChangeLine(s.translateString(s.stripComment(h))),{startChar:o.iChar,endChar:o.iChar+h.length}),h=s.peekLine();break;case"K":this.resolveTempo();var v=i.parseKey(h.substring(2),!1);!o.is_in_header&&c.hasBeginMusic()&&o.keywarn!==!1&&(v.foundClef&&c.appendStartingElement("clef",f,_,o.clef),v.foundKey&&c.appendStartingElement("key",f,_,i.fixKey(o.clef,o.key))),o.is_in_header=!1;break;case"L":this.setDefaultLength(h,2,h.length);break;case"M":o.origMeter=o.meter=this.setMeter(h.substring(2));break;case"P":o.is_in_header?c.addMetaText("partOrder",t.parseFontChangeLine(u),{startChar:o.iChar,endChar:o.iChar+h.length}):o.partForNextLine={title:u,startChar:f,endChar:_};break;case"Q":var y=this.setTempo(h,2,h.length,o.iChar);y.type==="delaySet"?o.tempo=y.tempo:y.type==="immediate"&&(l.metaText.tempo?o.tempoForNextLine=["tempo",f,_,y.tempo]:l.metaText.tempo=y.tempo);break;case"T":o.titlecaps&&(u=u.toUpperCase()),this.setTitle(t.parseFontChangeLine(s.theReverser(u)),p);break;case"U":this.addUserDefinition(h,2,h.length);break;case"V":if(i.parseVoice(h,2,h.length),!o.is_in_header)return{newline:!0};break;case"s":return{symbols:!0};case"w":return{words:!0};case"X":break;case"E":case"m":r("Ignored header",h,0);break;default:return{regular:!0}}}return{}}};return H0=n,H0}var Ws={},sw;function fE(){return sw||(sw=1,Ws.legalAccents=["trill","trillh","lowermordent","uppermordent","mordent","pralltriller","accent","fermata","invertedfermata","tenuto","0","1","2","3","4","5","+","wedge","open","thumb","snap","turn","roll","breath","shortphrase","mediumphrase","longphrase","segno","coda","D.S.","D.C.","fine","beambr1","beambr2","slide","marcato","upbow","downbow","/","//","///","////","trem1","trem2","trem3","trem4","turnx","invertedturn","invertedturnx","trill(","trill)","arpeggio","xstem","mark","umarcato","style=normal","style=harmonic","style=rhythm","style=x","style=triangle","D.C.alcoda","D.C.alfine","D.S.alcoda","D.S.alfine","editorial","courtesy"],Ws.volumeDecorations=["p","pp","f","ff","mf","mp","ppp","pppp","fff","ffff","sfz"],Ws.dynamicDecorations=["crescendo(","crescendo)","diminuendo(","diminuendo)","glissando(","glissando)","~(","~)"],Ws.accentPseudonyms=[["<","accent"],[">","accent"],["tr","trill"],["plus","+"],["emphasis","accent"],["^","umarcato"],["marcato","umarcato"]],Ws.accentDynamicPseudonyms=[["<(","crescendo("],["<)","crescendo)"],[">(","diminuendo("],[">)","diminuendo)"]],Ws.nonDecorations="ABCDEFGabcdefgxyzZ[]|^_{",Ws.durations=[.5,.75,.875,.9375,.96875,.984375,.25,.375,.4375,.46875,.484375,.4921875,.125,.1875,.21875,.234375,.2421875,.24609375,.0625,.09375,.109375,.1171875,.12109375,.123046875,.03125,.046875,.0546875,.05859375,.060546875,.0615234375,.015625,.0234375,.02734375,.029296875,.0302734375,.03076171875],Ws.pitches={A:5,B:6,C:0,D:1,E:2,F:3,G:4,a:12,b:13,c:7,d:8,e:9,f:10,g:11},Ws.rests={x:"invisible",X:"invisible-multimeasure",y:"spacer",z:"rest",Z:"multimeasure"},Ws.accMap={dblflat:"__",flat:"_",natural:"=",sharp:"^",dblsharp:"^^",quarterflat:"_/",quartersharp:"^/"},Ws.tripletQ={2:3,3:2,4:3,5:2,6:2,7:2,8:3,9:2}),Ws}var W0,rw;function pE(){if(rw)return W0;rw=1;var a=V0(),t=aw(),i,n,s,r,o,l,{legalAccents:c,volumeDecorations:d,dynamicDecorations:g,accentPseudonyms:h,accentDynamicPseudonyms:m,nonDecorations:p,durations:u,pitches:f,rests:_,accMap:v,tripletQ:y}=fE(),S=function(T,F,z,D,Q,X){i=T,n=F,s=z,r=D,o=Q,l=X,this.lineContinuation=!1},q=function(T,F,z){if(T.inTie[F]===void 0)return!1;var D=T.currentVoice?T.currentVoice.staffNum*100+T.currentVoice.index:0;return!!(T.inTie[F][D]&&(z.pitches!==void 0||z.rest.type!=="spacer"))},M={};S.prototype.parseMusic=function(T){l.resolveTempo(),s.is_in_header=!1;for(var F=0,z=s.iChar;i.isWhiteSpace(T[F])&&F<T.length;)F++;if(!(F===T.length||T[F]==="%")){var D=s.start_new_line;s.continueall===void 0?s.start_new_line=!0:s.start_new_line=!1;var Q=0,X=l.letter_to_body_header(T,F);X[0]>0&&(F+=X[0],X[1]==="V"&&this.startNewLine());for(var Z=0;F<T.length;){var ue=F;if(T[F]==="%")break;var de=l.letter_to_inline_header(T,F,D);if(de[0]>0)F+=de[0],de[1]==="V"&&(D=!0);else{(!o.hasBeginMusic()||D&&!this.lineContinuation)&&(this.startNewLine(),D=!1);for(var ae;;)if(ae=i.eatWhiteSpace(T,F),ae>0&&(F+=ae),F>0&&T[F-1]===""&&(ae=l.letter_to_body_header(T,F),ae[0]>0&&(ae[1]==="V"&&this.startNewLine(),F=ae[0],s.start_new_line=!1)),ae=R(T,F),ae[0]>0&&(F+=ae[0]),ae=B(T,F),ae[0]>0){M.chord||(M.chord=[]);var V=i.translateString(ae[1]);V=V.replace(/;/g,`
|
||
`);for(var pe=!1,Ce=0;Ce<M.chord.length;Ce++)M.chord[Ce].position===ae[2]&&(pe=!0,M.chord[Ce].name+=`
|
||
`+V);pe===!1&&(ae[2]===null&&ae[3]?M.chord.push({name:V,rel_position:ae[3]}):M.chord.push({name:V,position:ae[2]})),F+=ae[0];var ce=i.skipWhiteSpace(T.substring(F));ce>0&&(M.force_end_beam_last=!0),F+=ce}else if(p.indexOf(T[F])===-1?ae=C(T,F):ae=[0],ae[0]>0)ae[1]===null?F+1<T.length&&this.startNewLine():ae[1].length>0&&(ae[1].indexOf("style=")===0?M.style=ae[1].substring(6):ae[1].indexOf("class=")===0?M.extraClass=ae[1].substring(6):(M.decoration===void 0&&(M.decoration=[]),ae[1]==="beambr1"?M.beambr=1:ae[1]==="beambr2"?M.beambr=2:M.decoration.push(ae[1]))),F+=ae[0];else if(ae=A(T,F),ae[0]>0)M.gracenotes=ae[1],F+=ae[0];else break;if(ae=H(T,F),ae[0]>0){Z=0,M.gracenotes!==void 0&&(M.rest={type:"spacer"},M.duration=.125,s.addFormattingOptions(M,r.formatting,"note"),o.appendElement("note",z+F,z+F+ae[0],M),s.measureNotEmpty=!0,M={});var Te={type:ae[1]};Te.type.length===0?n("Unknown bar type",T,F):(s.inEnding&&Te.type!=="bar_thin"&&(Te.endEnding=!0,s.inEnding=!1),ae[2]&&(Te.startEnding=ae[2],s.inEnding&&(Te.endEnding=!0),s.inEnding=!0,ae[1]==="bar_right_repeat"?s.restoreStartEndingHoldOvers():s.duplicateStartEndingHoldOvers()),M.decoration!==void 0&&(Te.decoration=M.decoration),M.chord!==void 0&&(Te.chord=M.chord),Te.startEnding&&s.barFirstEndingNum===void 0?s.barFirstEndingNum=s.currBarNumber:Te.startEnding&&Te.endEnding&&s.barFirstEndingNum?s.currBarNumber=s.barFirstEndingNum:Te.endEnding&&(s.barFirstEndingNum=void 0),Te.type!=="bar_invisible"&&s.measureNotEmpty&&I()&&(s.currBarNumber++,s.barNumbers&&s.currBarNumber%s.barNumbers===0&&(Te.barNumber=s.currBarNumber)),s.addFormattingOptions(M,r.formatting,"bar"),o.appendElement("bar",z+ue,z+F+ae[0],Te),s.measureNotEmpty=!1,M={}),F+=ae[0]}else if(T[F]==="&")ae=j(T,F),ae[0]>0&&(o.appendElement("overlay",z,z+1,{}),F+=1,Z++);else{if(ae=E(T,F),ae.consumed>0&&(ae.startSlur!==void 0&&(M.startSlur=ae.startSlur),ae.dottedSlur&&(M.dottedSlur=!0),ae.triplet!==void 0&&(Q>0?n("Can't nest triplets",T,F):(M.startTriplet=ae.triplet,M.tripletMultiplier=ae.tripletQ/ae.triplet,M.tripletR=ae.num_notes,Q=ae.num_notes===void 0?ae.triplet:ae.num_notes)),F+=ae.consumed),T[F]==="["){F++;for(var ye=null,Ie=!1,Je=!1;!Je;){var tt=C(T,F);tt[0]>0&&(F+=tt[0]);var De=N(T,F,{},!1);if(De!==null&&De.pitch!==void 0)tt[0]>0&&tt[1].indexOf("style=")!==0&&(M.decoration===void 0&&(M.decoration=[]),M.decoration.push(tt[1])),De.end_beam&&(M.end_beam=!0,delete De.end_beam),M.pitches===void 0?(M.duration=De.duration,M.pitches=[De]):M.pitches.push(De),delete De.duration,tt[0]>0&&tt[1].indexOf("style=")===0&&(M.pitches[M.pitches.length-1].style=tt[1].substr(6)),s.inTieChord[M.pitches.length]&&(De.endTie=!0,s.inTieChord[M.pitches.length]=void 0),De.startTie&&(s.inTieChord[M.pitches.length]=!0),F=De.endChar,delete De.endChar;else if(T[F]===" ")n("Spaces are not allowed in chords",T,F),F++;else{if(F<T.length&&T[F]==="]"){F++,s.next_note_duration!==0&&(M.duration=M.duration*s.next_note_duration,s.next_note_duration=0),q(s,Z,M)&&(M.pitches.forEach(function(ke){ke.endTie=!0}),P(s,Z,!1)),Q>0&&!(M.rest&&M.rest.type==="spacer")&&(Q--,Q===0&&(M.endTriplet=!0));for(var le=!1;F<T.length&&!le;){switch(T[F]){case" ":case" ":U(M);break;case")":M.endSlur===void 0?M.endSlur=1:M.endSlur++;break;case"-":M.pitches.forEach(function(ke){ke.startTie={}}),P(s,Z,!0);break;case">":case"<":var xe=L(T,F);F+=xe[0]-1,s.next_note_duration=xe[2],ye?ye=ye*xe[1]:ye=xe[1];break;case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"/":var Ke=i.getFraction(T,F);ye=Ke.value,F=Ke.index;var fe=T[F];fe===" "&&(Ie=!0),fe==="-"||fe===")"||fe===" "||fe==="<"||fe===">"?F--:le=!0;break;case"0":ye=0;break;default:le=!0;break}le||F++}}else n("Expected ']' to end the chords",T,F);M.pitches!==void 0&&(ye!==null&&(M.duration=M.duration*ye,Ie&&U(M)),s.addFormattingOptions(M,r.formatting,"note"),o.appendElement("note",z+ue,z+F,M),s.measureNotEmpty=!0,M={}),Je=!0}}}else{var we={},me=N(T,F,we,!0);if(we.endTie!==void 0&&P(s,Z,!0),me!==null){me.pitch!==void 0?(M.pitches=[{}],me.accidental!==void 0&&(M.pitches[0].accidental=me.accidental),M.pitches[0].pitch=me.pitch,M.pitches[0].name=me.name,(me.midipitch||me.midipitch===0)&&(M.pitches[0].midipitch=me.midipitch),me.endSlur!==void 0&&(M.pitches[0].endSlur=me.endSlur),me.endTie!==void 0&&(M.pitches[0].endTie=me.endTie),me.startSlur!==void 0&&(M.pitches[0].startSlur=me.startSlur),M.startSlur!==void 0&&(M.pitches[0].startSlur=M.startSlur),M.dottedSlur!==void 0&&(M.pitches[0].dottedSlur=!0),me.startTie!==void 0&&(M.pitches[0].startTie=me.startTie),M.startTie!==void 0&&(M.pitches[0].startTie=M.startTie)):(M.rest=me.rest,me.rest.type==="multimeasure"&&I()&&(s.currBarNumber+=me.rest.text-1),me.endSlur!==void 0&&(M.endSlur=me.endSlur),me.endTie!==void 0&&(M.rest.endTie=me.endTie),me.startSlur!==void 0&&(M.startSlur=me.startSlur),me.startTie!==void 0&&(M.rest.startTie=me.startTie),M.startTie!==void 0&&(M.rest.startTie=M.startTie)),me.chord!==void 0&&(M.chord=me.chord),me.duration!==void 0&&(M.duration=me.duration),me.decoration!==void 0&&(M.decoration=me.decoration),me.graceNotes!==void 0&&(M.graceNotes=me.graceNotes),delete M.startSlur,delete M.dottedSlur,q(s,Z,M)&&(M.pitches!==void 0?M.pitches[0].endTie=!0:M.rest.type!=="spacer"&&(M.rest.endTie=!0),P(s,Z,!1)),(me.startTie||M.startTie)&&P(s,Z,!0),F=me.endChar,Q>0&&!(me.rest&&me.rest.type==="spacer")&&(Q--,Q===0&&(M.endTriplet=!0)),me.end_beam&&U(M),M.rest&&M.rest.type==="rest"&&M.duration===1&&G(s)<=1&&(M.rest.type="whole",M.duration=G(s)),M.duration<1&&u.indexOf(M.duration)===-1&&M.duration!==0&&(!M.rest||M.rest.type!=="spacer")&&n("Duration not representable: "+T.substring(ue,F),T,F),s.addFormattingOptions(M,r.formatting,"note");var be=o.appendElement("note",z+ue,z+F,M);be||(this.startNewLine(),o.appendElement("note",z+ue,z+F,M)),s.measureNotEmpty=!0,M={}}}F===ue&&(T[F]!==" "&&T[F]!=="`"&&n("Unknown character ignored",T,F),F++)}}}this.lineContinuation=T.indexOf("")>=0||X[0]>0,this.lineContinuation||(M={})}};var P=function(T,F,z){var D=T.currentVoice?T.currentVoice.staffNum*100+T.currentVoice.index:0;T.inTie[F]===void 0&&(T.inTie[F]=[]),T.inTie[F][D]=z},B=function(T,F){if(T[F]==='"'){var z=i.getBrackettedSubstring(T,F,5);if(z[2]||n("Missing the closing quote while parsing the chord symbol",T,F),z[0]>0&&z[1].length>0&&z[1][0]==="^")z[1]=z[1].substring(1),z[2]="above";else if(z[0]>0&&z[1].length>0&&z[1][0]==="_")z[1]=z[1].substring(1),z[2]="below";else if(z[0]>0&&z[1].length>0&&z[1][0]==="<")z[1]=z[1].substring(1),z[2]="left";else if(z[0]>0&&z[1].length>0&&z[1][0]===">")z[1]=z[1].substring(1),z[2]="right";else if(z[0]>0&&z[1].length>0&&z[1][0]==="@"){z[1]=z[1].substring(1);var D=i.getFloat(z[1]);if(D.digits===0)return n("Missing first position in absolutely positioned annotation.",T,F),z[1]=z[1].replace("@",""),z[2]="above",z;if(z[1]=z[1].substring(D.digits),z[1][0]!==",")return n("Missing comma absolutely positioned annotation.",T,F),z[1]=z[1].replace("@",""),z[2]="above",z;z[1]=z[1].substring(1);var Q=i.getFloat(z[1]);if(Q.digits===0)return n("Missing second position in absolutely positioned annotation.",T,F),z[1]=z[1].replace("@",""),z[2]="above",z;z[1]=z[1].substring(Q.digits);var X=i.skipWhiteSpace(z[1]);z[1]=z[1].substring(X),z[2]=null,z[3]={x:D.value,y:Q.value}}else s.freegchord!==!0&&(z[1]=z[1].replace(/([ABCDEFG0-9])b/g,"$1♭"),z[1]=z[1].replace(/([ABCDEFG0-9])#/g,"$1♯"),z[1]=z[1].replace(/^([ABCDEFG])([♯♭]?)o([^A-Za-z])/g,"$1$2°$3"),z[1]=z[1].replace(/^([ABCDEFG])([♯♭]?)o$/g,"$1$2°"),z[1]=z[1].replace(/^([ABCDEFG])([♯♭]?)0([^A-Za-z])/g,"$1$2ø$3"),z[1]=z[1].replace(/^([ABCDEFG])([♯♭]?)\^([^A-Za-z])/g,"$1$2∆$3")),z[2]="default",z[1]=t.chordName(s,z[1]);return z}return[0,""]},A=function(T,F){if(T[F]==="{"){var z=i.getBrackettedSubstring(T,F,1,"}");z[2]||n("Missing the closing '}' while parsing grace note",T,F),T[F+z[0]]===")"&&(z[0]++,z[1]+=")");for(var D=[],Q=0,X=!1;Q<z[1].length;){var Z=!1;z[1][Q]==="/"&&(Z=!0,Q++);var ue=N(z[1],Q,{},!1);ue!==null?(ue.duration=ue.duration/(s.default_length*8),Z&&(ue.acciaccatura=!0),ue.rest?n("Rests not allowed as grace notes '"+z[1][Q]+"' while parsing grace note",T,F):D.push(ue),X&&(ue.endTie=!0,X=!1),ue.startTie&&(X=!0),Q=ue.endChar,delete ue.endChar,ue.end_beam&&(ue.endBeam=!0,delete ue.end_beam)):(z[1][Q]===" "?D.length>0&&(D[D.length-1].endBeam=!0):n("Unknown character '"+z[1][Q]+"' while parsing grace note",T,F),Q++)}if(D.length)return[z[0],D]}return[0]};function j(T,F){if(T[F]==="&"){for(var z=F;T[F]&&T[F]!==":"&&T[F]!=="|";)F++;return[F-z,T.substring(z+1,F)]}return[0]}function G(T){var F=T.origMeter;return!F||F.type!=="specified"||!F.value||F.value.length===0?1:parseInt(F.value[0].num,10)/parseInt(F.value[0].den,10)}var C=function(T,F){var z=s.macros[T[F]];if(z!==void 0)return(z[0]==="!"||z[0]==="+")&&(z=z.substring(1)),(z[z.length-1]==="!"||z[z.length-1]==="+")&&(z=z.substring(0,z.length-1)),c.includes(z)?[1,z]:d.includes(z)?(s.volumePosition==="hidden"&&(z=""),[1,z]):g.includes(z)?(s.dynamicPosition==="hidden"&&(z=""),[1,z]):(s.ignoredDecorations.includes(z)||n("Unknown macro: "+z,T,F),[1,""]);switch(T[F]){case".":if(T[F+1]==="("||T[F+1]==="-")break;return[1,"staccato"];case"u":return[1,"upbow"];case"v":return[1,"downbow"];case"~":return[1,"irishroll"];case"!":case"+":var D=i.getBrackettedSubstring(T,F,5);if(D[1].length>1&&(D[1][0]==="^"||D[1][0]==="_")&&(D[1]=D[1].substring(1)),c.includes(D[1])||D[1].indexOf("class=")===0)return D;if(d.includes(D[1]))return s.volumePosition==="hidden"&&(D[1]=""),D;if(g.includes(D[1]))return s.dynamicPosition==="hidden"&&(D[1]=""),D;var Q=h.findIndex(function(X){return D[1]===X[0]});return Q>=0?(D[1]=h[Q][1],D):(Q=m.findIndex(function(X){return D[1]===X[0]}),Q>=0?(D[1]=m[Q][1],s.dynamicPosition==="hidden"&&(D[1]=""),D):T[F]==="!"&&(D[0]===1||T[F+D[0]-1]!=="!")?[1,null]:(n("Unknown decoration: "+D[1],T,F),D[1]="",D));case"H":return[1,"fermata"];case"J":return[1,"slide"];case"L":return[1,"accent"];case"M":return[1,"mordent"];case"O":return[1,"coda"];case"P":return[1,"pralltriller"];case"R":return[1,"roll"];case"S":return[1,"segno"];case"T":return[1,"trill"];case"t":return[1,"trillh"]}return[0,0]},R=function(T,F){for(var z=F;i.isWhiteSpace(T[F]);)F++;return[F-z]},H=function(T,F){var z=i.getBarLine(T,F);if(z.len===0)return[0,""];if(z.warn)return n(z.warn,T,F),[z.len,""];for(var D=0;D<T.length&&T[F+z.len+D]===" ";D++);var Q=z.len;if(T[F+z.len+D]==="["&&(z.len+=D+1),T[F+z.len]==='"'&&T[F+z.len-1]==="["){var X=i.getBrackettedSubstring(T,F+z.len,5);return[z.len+X[0],z.token,X[1]]}var Z=i.getTokenOf(T.substring(F+z.len),"1234567890-,");return Z.len===0||Z.token[0]==="-"?[Q,z.token]:[z.len+Z.len,z.token,Z.token]},E=function(T,F){var z={},D=F;for(T[F]==="."&&T[F+1]==="("&&(z.dottedSlur=!0,F++);T[F]==="("||i.isWhiteSpace(T[F]);)T[F]==="("&&(F+1<T.length&&T[F+1]>="2"&&T[F+1]<="9"?(z.triplet!==void 0?n("Can't nest triplets",T,F):(z.triplet=T[F+1]-"0",z.tripletQ=y[z.triplet],z.num_notes=z.triplet,F+2<T.length&&T[F+2]===":"&&(F+3<T.length&&T[F+3]===":"?F+4<T.length&&T[F+4]>="1"&&T[F+4]<="9"?(z.num_notes=T[F+4]-"0",F+=3):n("expected number after the two colons after the triplet to mark the duration",T,F):F+3<T.length&&T[F+3]>="1"&&T[F+3]<="9"?(z.tripletQ=T[F+3]-"0",F+4<T.length&&T[F+4]===":"?F+5<T.length&&T[F+5]>="1"&&T[F+5]<="9"&&(z.num_notes=T[F+5]-"0",F+=4):F+=2):n("expected number after the triplet to mark the duration",T,F))),F++):z.startSlur===void 0?z.startSlur=1:z.startSlur++),F++;return z.consumed=F-D,z};S.prototype.startNewLine=function(){var T={startChar:-1,endChar:-1};s.partForNextLine.title&&(T.part=s.partForNextLine),T.clef=s.currentVoice&&s.staves[s.currentVoice.staffNum].clef!==void 0?Object.assign({},s.staves[s.currentVoice.staffNum].clef):Object.assign({},s.clef);var F=s.currentVoice?s.currentVoice.scoreTranspose:0;if(T.key=a.standardKey(s.key.root+s.key.acc+s.key.mode,s.key.root,s.key.acc,F),T.key.mode=s.key.mode,s.key.impliedNaturals&&(T.key.impliedNaturals=s.key.impliedNaturals),s.key.explicitAccidentals)for(var z=0;z<s.key.explicitAccidentals.length;z++){for(var D=!1,Q=0;Q<T.key.accidentals.length;Q++)T.key.accidentals[Q].note===s.key.explicitAccidentals[z].note&&(T.key.accidentals[Q].acc=s.key.explicitAccidentals[z].acc,D=!0);D||T.key.accidentals.push(s.key.explicitAccidentals[z])}if(s.targetKey=T.key,T.key.explicitAccidentals&&delete T.key.explicitAccidentals,a.addPosToKey(T.clef,T.key),s.meter!==null?(s.currentVoice?(s.staves.forEach(function(de){de.meter=s.meter}),T.meter=s.staves[s.currentVoice.staffNum].meter,s.staves[s.currentVoice.staffNum].meter=null):T.meter=s.meter,s.meter=null):s.currentVoice&&s.staves[s.currentVoice.staffNum].meter&&(T.meter=s.staves[s.currentVoice.staffNum].meter,s.staves[s.currentVoice.staffNum].meter=null),s.currentVoice&&s.currentVoice.name&&(T.name=s.currentVoice.name),s.vocalfont&&(T.vocalfont=s.vocalfont),s.tripletfont&&(T.tripletfont=s.tripletfont),s.gchordfont&&(T.gchordfont=s.gchordfont),s.style&&(T.style=s.style),s.currentVoice){var X=s.staves[s.currentVoice.staffNum];X.brace&&(T.brace=X.brace),X.bracket&&(T.bracket=X.bracket),X.connectBarLines&&(T.connectBarLines=X.connectBarLines),X.name&&(T.name=X.name[s.currentVoice.index]),X.subname&&(T.subname=X.subname[s.currentVoice.index]),s.currentVoice.stem&&(T.stem=s.currentVoice.stem),s.currentVoice.stafflines&&(T.stafflines=s.currentVoice.stafflines),s.currentVoice.staffscale&&(T.staffscale=s.currentVoice.staffscale),s.currentVoice.scale&&(T.scale=s.currentVoice.scale),s.currentVoice.color&&(T.color=s.currentVoice.color),s.currentVoice.style&&(T.style=s.currentVoice.style),s.currentVoice.transpose&&(T.clef.transpose=s.currentVoice.transpose),T.currentVoice=s.currentVoice;for(var Z=Object.keys(s.voices),ue=0;ue<Z.length;ue++)T.currentVoice.staffNum===s.voices[Z[ue]].staffNum&&T.currentVoice.index===s.voices[Z[ue]].index&&(T.currentVoiceName=Z[ue])}s.barNumbers===0&&I()&&s.currBarNumber!==1&&(T.barNumber=s.currBarNumber),o.startNewLine(T),s.key.impliedNaturals&&delete s.key.impliedNaturals,s.partForNextLine={},s.tempoForNextLine.length===4&&o.appendElement(s.tempoForNextLine[0],s.tempoForNextLine[1],s.tempoForNextLine[2],s.tempoForNextLine[3]),s.tempoForNextLine=[]};var U=function(T){return T.duration!==void 0&&T.duration<.25&&(T.end_beam=!0),T},N=function(T,F,z,D){var Q=function(Ce){return Ce==="octave"||Ce==="duration"||Ce==="Zduration"||Ce==="broken_rhythm"||Ce==="end_slur"},X;T[F]==="."&&T[F+1]==="-"&&(X=!0,F++);for(var Z="startSlur",ue=!1;;){switch(T[F]){case"(":if(Z==="startSlur")z.startSlur===void 0?z.startSlur=1:z.startSlur++;else return Q(Z)?(z.endChar=F,z):null;break;case")":if(Q(Z))z.endSlur===void 0?z.endSlur=1:z.endSlur++;else return null;break;case"^":if(Z==="startSlur")z.accidental="sharp",Z="sharp2";else if(Z==="sharp2")z.accidental="dblsharp",Z="pitch";else return Q(Z)?(z.endChar=F,z):null;break;case"_":if(Z==="startSlur")z.accidental="flat",Z="flat2";else if(Z==="flat2")z.accidental="dblflat",Z="pitch";else return Q(Z)?(z.endChar=F,z):null;break;case"=":if(Z==="startSlur")z.accidental="natural",Z="pitch";else return Q(Z)?(z.endChar=F,z):null;break;case"A":case"B":case"C":case"D":case"E":case"F":case"G":case"a":case"b":case"c":case"d":case"e":case"f":case"g":if(Z==="startSlur"||Z==="sharp2"||Z==="flat2"||Z==="pitch"){if(z.pitch=f[T[F]],z.pitch+=7*(s.currentVoice&&s.currentVoice.octave!==void 0?s.currentVoice.octave:s.octave),z.name=T[F],z.accidental&&(z.name=v[z.accidental]+z.name),t.note(s,z),Z="octave",D&&s.next_note_duration!==0?(z.duration=s.default_length*s.next_note_duration,s.next_note_duration=0,ue=!0):z.duration=s.default_length,s.clef&&s.clef.type==="perc"||s.currentVoice&&s.currentVoice.clef==="perc"){var de=T[F];z.accidental&&(de=v[z.accidental]+de),r.formatting&&r.formatting.midi&&r.formatting.midi.drummap&&(z.midipitch=r.formatting.midi.drummap[de])}}else return Q(Z)?(z.endChar=F,z):null;break;case",":if(Z==="octave")z.pitch-=7,z.name+=",";else return Q(Z)?(z.endChar=F,z):null;break;case"'":if(Z==="octave")z.pitch+=7,z.name+="'";else return Q(Z)?(z.endChar=F,z):null;break;case"x":case"X":case"y":case"z":case"Z":if(Z==="startSlur")z.rest={type:_[T[F]]},delete z.accidental,delete z.startSlur,delete z.startTie,delete z.endSlur,delete z.endTie,delete z.end_beam,delete z.grace_notes,z.rest.type.indexOf("multimeasure")>=0?(z.duration=r.getBarLength(),z.rest.text=1,Z="Zduration"):(D&&s.next_note_duration!==0?(z.duration=s.default_length*s.next_note_duration,s.next_note_duration=0,ue=!0):z.duration=s.default_length,Z="duration");else return Q(Z)?(z.endChar=F,z):null;break;case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"0":case"/":if(Z==="octave"||Z==="duration"){var ae=i.getFraction(T,F);for(z.duration=z.duration*ae.value,z.endChar=ae.index;ae.index<T.length&&(i.isWhiteSpace(T[ae.index])||T[ae.index]==="-");)T[ae.index]==="-"?z.startTie={}:z=U(z),ae.index++;F=ae.index-1,Z="broken_rhythm"}else if(Z==="sharp2")z.accidental="quartersharp",Z="pitch";else if(Z==="flat2")z.accidental="quarterflat",Z="pitch";else if(Z==="Zduration"){var V=i.getNumber(T,F);return z.duration=V.num*r.getBarLength(),z.rest.text=V.num,z.endChar=V.index,z}else return null;break;case"-":if(Z==="startSlur")o.addTieToLastNote(X),z.endTie=!0;else if(Z==="octave"||Z==="duration"||Z==="end_slur")if(z.startTie={},!ue&&D)Z="broken_rhythm";else return i.isWhiteSpace(T[F+1])&&U(z),z.endChar=F+1,z;else return Z==="broken_rhythm"?(z.endChar=F,z):null;break;case" ":case" ":if(Q(Z)){z.end_beam=!0,X=!1;do T[F]==="."&&T[F+1]==="-"&&(X=!0,F++),T[F]==="-"&&(z.startTie={},X&&(z.startTie.style="dotted")),F++;while(F<T.length&&(i.isWhiteSpace(T[F])||T[F]==="-")||T[F]==="."&&T[F+1]==="-");if(z.endChar=F,!ue&&D&&(T[F]==="<"||T[F]===">"))F--,Z="broken_rhythm";else return z}else return null;break;case">":case"<":if(Q(Z))if(D){var pe=L(T,F);F+=pe[0]-1,s.next_note_duration=pe[2],z.duration=pe[1]*z.duration,Z="end_slur"}else return z.endChar=F,z;else return null;break;default:return Q(Z)?(z.endChar=F,z):null}if(F++,F===T.length)return Q(Z)?(z.endChar=F,z):null}return null},L=function(T,F){switch(T[F]){case">":return F<T.length-2&&T[F+1]===">"&&T[F+2]===">"?[3,1.875,.125]:F<T.length-1&&T[F+1]===">"?[2,1.75,.25]:[1,1.5,.5];case"<":return F<T.length-2&&T[F+1]==="<"&&T[F+2]==="<"?[3,.125,1.875]:F<T.length-1&&T[F+1]==="<"?[2,.25,1.75]:[1,.5,1.5]}return null};function I(){return s.currentVoice===void 0||s.currentVoice.staffNum===0&&s.currentVoice.index===0}return W0=S,W0}var Q0,ow;function mE(){if(ow)return Q0;ow=1;var a=Vr(),t=function(i,n){this.lineIndex=0,this.lines=i,this.multilineVars=n,this.skipWhiteSpace=function(p){for(var u=0;u<p.length;u++)if(!this.isWhiteSpace(p[u]))return u;return p.length};var s=function(p,u){return u>=p.length};this.eatWhiteSpace=function(p,u){for(var f=u;f<p.length;f++)if(!this.isWhiteSpace(p[f]))return f-u;return f-u},this.getKeyPitch=function(p){var u=this.skipWhiteSpace(p);if(s(p,u))return{len:0};switch(p[u]){case"A":return{len:u+1,token:"A"};case"B":return{len:u+1,token:"B"};case"C":return{len:u+1,token:"C"};case"D":return{len:u+1,token:"D"};case"E":return{len:u+1,token:"E"};case"F":return{len:u+1,token:"F"};case"G":return{len:u+1,token:"G"}}return{len:0}},this.getSharpFlat=function(p){if(p==="bass")return{len:0};switch(p[0]){case"#":return{len:1,token:"#"};case"b":return{len:1,token:"b"}}return{len:0}},this.getMode=function(p){var u=function(v,y){for(;y<v.length&&(v[y]>="a"&&v[y]<="z"||v[y]>="A"&&v[y]<="Z");)y++;return y},f=this.skipWhiteSpace(p);if(s(p,f))return{len:0};var _=p.substring(f,f+3).toLowerCase();switch((_.length>1&&_[1]===" "||_[1]==="^"||_[1]==="_"||_[1]==="=")&&(_=_[0]),_){case"mix":return{len:u(p,f),token:"Mix"};case"dor":return{len:u(p,f),token:"Dor"};case"phr":return{len:u(p,f),token:"Phr"};case"lyd":return{len:u(p,f),token:"Lyd"};case"loc":return{len:u(p,f),token:"Loc"};case"aeo":return{len:u(p,f),token:"m"};case"maj":return{len:u(p,f),token:""};case"ion":return{len:u(p,f),token:""};case"min":return{len:u(p,f),token:"m"};case"m":return{len:u(p,f),token:"m"}}return{len:0}},this.getClef=function(p,u){var f=p,_=this.skipWhiteSpace(p);if(s(p,_))return{len:0};var v=!1,y=p.substring(_);if(a.startsWith(y,"clef=")&&(v=!0,y=y.substring(5),_+=5),y.length===0&&v)return{len:_+5,warn:"No clef specified: "+f};var S=this.skipWhiteSpace(y);if(s(y,S))return{len:0};S>0&&(_+=S,y=y.substring(S));var q=null;if(a.startsWith(y,"treble"))q="treble";else if(a.startsWith(y,"bass3"))q="bass3";else if(a.startsWith(y,"bass"))q="bass";else if(a.startsWith(y,"tenor"))q="tenor";else if(a.startsWith(y,"alto2"))q="alto2";else if(a.startsWith(y,"alto1"))q="alto1";else if(a.startsWith(y,"alto"))q="alto";else if(!u&&v&&a.startsWith(y,"none"))q="none";else if(a.startsWith(y,"perc"))q="perc";else if(!u&&v&&a.startsWith(y,"C"))q="tenor";else if(!u&&v&&a.startsWith(y,"F"))q="bass";else if(!u&&v&&a.startsWith(y,"G"))q="treble";else return{len:_+5,warn:"Unknown clef specified: "+f};return y=y.substring(q.length),S=this.isMatch(y,"+8"),S>0?q+="+8":(S=this.isMatch(y,"-8"),S>0&&(q+="-8")),{len:_+q.length,token:q,explicit:v}},this.getBarLine=function(p,u){switch(p[u]){case"]":switch(++u,p[u]){case"|":return{len:2,token:"bar_thick_thin"};case"[":return++u,p[u]>="1"&&p[u]<="9"||p[u]==='"'?{len:2,token:"bar_invisible"}:{len:1,warn:"Unknown bar symbol"};default:return{len:1,token:"bar_invisible"}}case":":switch(++u,p[u]){case":":return{len:2,token:"bar_dbl_repeat"};case"|":switch(++u,p[u]){case"]":return++u,p[u]==="|"?(++u,p[u]===":"?{len:5,token:"bar_dbl_repeat"}:{len:3,token:"bar_right_repeat"}):{len:3,token:"bar_right_repeat"};case"|":return++u,p[u]===":"?{len:4,token:"bar_dbl_repeat"}:{len:3,token:"bar_right_repeat"};default:return{len:2,token:"bar_right_repeat"}}default:return{len:1,warn:"Unknown bar symbol"}}case"[":if(++u,p[u]==="|")switch(++u,p[u]){case":":return{len:3,token:"bar_left_repeat"};case"]":return{len:3,token:"bar_invisible"};default:return{len:2,token:"bar_thick_thin"}}else return p[u]>="1"&&p[u]<="9"||p[u]==='"'?{len:1,token:"bar_invisible"}:{len:0};case"|":switch(++u,p[u]){case"]":return{len:2,token:"bar_thin_thick"};case"|":return++u,p[u]===":"?{len:3,token:"bar_left_repeat"}:{len:2,token:"bar_thin_thin"};case":":for(var f=0;p[u+f]===":";)f++;return{len:1+f,token:"bar_left_repeat"};default:return{len:1,token:"bar_thin"}}}return{len:0}},this.getTokenOf=function(p,u){for(var f=0;f<p.length;f++)if(u.indexOf(p[f])<0)return{len:f,token:p.substring(0,f)};return{len:f,token:p}},this.getToken=function(p,u,f){for(var _=u;_<f&&!this.isWhiteSpace(p[_]);)_++;return p.substring(u,_)},this.isMatch=function(p,u){var f=this.skipWhiteSpace(p);return s(p,f)?0:a.startsWith(p.substring(f),u)?f+u.length:0},this.getPitchFromTokens=function(p){var u={},f={A:5,B:6,C:0,D:1,E:2,F:3,G:4,a:12,b:13,c:7,d:8,e:9,f:10,g:11};if(u.position=f[p[0].token],u.position===void 0)return{warn:"Pitch expected. Found: "+p[0].token};for(p.shift();p.length;)switch(p[0].token){case",":u.position-=7,p.shift();break;case"'":u.position+=7,p.shift();break;default:return u}return u},this.getKeyAccidentals2=function(p){for(var u;p.length>0;){var f;if(p[0].token==="^"){if(f="sharp",p.shift(),p.length===0)return{accs:u,warn:"Expected note name after "+f};switch(p[0].token){case"^":f="dblsharp",p.shift();break;case"/":f="quartersharp",p.shift();break}}else if(p[0].token==="=")f="natural",p.shift();else if(p[0].token==="_"){if(f="flat",p.shift(),p.length===0)return{accs:u,warn:"Expected note name after "+f};switch(p[0].token){case"_":f="dblflat",p.shift();break;case"/":f="quarterflat",p.shift();break}}else return{accs:u};if(p.length===0)return{accs:u,warn:"Expected note name after "+f};switch(p[0].token[0]){case"a":case"b":case"c":case"d":case"e":case"f":case"g":case"A":case"B":case"C":case"D":case"E":case"F":case"G":u===void 0&&(u=[]),u.push({acc:f,note:p[0].token[0]}),p[0].token.length===1?p.shift():p[0].token=p[0].token.substring(1);break;default:return{accs:u,warn:"Expected note name after "+f+" Found: "+p[0].token}}}return{accs:u}},this.getKeyAccidental=function(p){var u={"^":"sharp","^^":"dblsharp","=":"natural",_:"flat",__:"dblflat","_/":"quarterflat","^/":"quartersharp"},f=this.skipWhiteSpace(p);if(s(p,f))return{len:0};var _=null;switch(p[f]){case"^":case"_":case"=":_=p[f];break;default:return{len:0}}if(f++,s(p,f))return{len:1,warn:"Expected note name after accidental"};switch(p[f]){case"a":case"b":case"c":case"d":case"e":case"f":case"g":case"A":case"B":case"C":case"D":case"E":case"F":case"G":return{len:f+1,token:{acc:u[_],note:p[f]}};case"^":case"_":case"/":if(_+=p[f],f++,s(p,f))return{len:2,warn:"Expected note name after accidental"};switch(p[f]){case"a":case"b":case"c":case"d":case"e":case"f":case"g":case"A":case"B":case"C":case"D":case"E":case"F":case"G":return{len:f+1,token:{acc:u[_],note:p[f]}};default:return{len:2,warn:"Expected note name after accidental"}}break;default:return{len:1,warn:"Expected note name after accidental"}}},this.isWhiteSpace=function(p){return p===" "||p===" "||p===""},this.getMeat=function(p,u,f){var _=p.indexOf("%",u);for(_>=0&&_<f&&(f=_);u<f&&(p[u]===" "||p[u]===" "||p[u]==="");)u++;for(;u<f&&(p[f-1]===" "||p[f-1]===" "||p[f-1]==="");)f--;return{start:u,end:f}};var r=function(p){return p>="A"&&p<="Z"||p>="a"&&p<="z"},o=function(p){return p>="0"&&p<="9"};this.tokenize=function(p,u,f,_){var v=this.getMeat(p,u,f);u=v.start,f=v.end;for(var y=[],S;u<f;){if(p[u]==='"'){for(S=u+1;S<f&&p[S]!=='"';)S++;y.push({type:"quote",token:p.substring(u+1,S),start:u+1,end:S}),S++}else if(r(p[u])){if(S=u+1,_)for(;S<f&&!this.isWhiteSpace(p[S]);)S++;else for(;S<f&&r(p[S]);)S++;y.push({type:"alpha",token:p.substring(u,S),continueId:o(p[S]),start:u,end:S}),u=S+1}else if(p[u]==="."&&o(p[S+1])){S=u+1;for(var q=null,M=null;S<f&&o(p[S]);)S++;M=parseFloat(p.substring(u,S)),y.push({type:"number",token:p.substring(u,S),intt:q,floatt:M,continueId:r(p[S]),start:u,end:S}),u=S+1}else if(o(p[u])||p[u]==="-"&&o(p[S+1])){S=u+1;for(var P=null,B=null;S<f&&o(p[S]);)S++;if(p[S]==="."&&o(p[S+1]))for(S++;S<f&&o(p[S]);)S++;else P=parseInt(p.substring(u,S));B=parseFloat(p.substring(u,S)),y.push({type:"number",token:p.substring(u,S),intt:P,floatt:B,continueId:r(p[S]),start:u,end:S}),u=S+1}else p[u]===" "||p[u]===" "||y.push({type:"punct",token:p[u],start:u,end:u+1}),S=u+1;u=S}return y},this.getVoiceToken=function(p,u,f){for(var _=u;_<f&&this.isWhiteSpace(p[_])||p[_]==="=";)_++;if(p[_]==='"'){var v=p.indexOf('"',_+1);return v===-1||v>=f?{len:1,err:"Missing close quote"}:{len:v-u+1,token:this.translateString(p.substring(_+1,v))}}else{for(var y=_;y<f&&!this.isWhiteSpace(p[y])&&p[y]!=="=";)y++;return{len:y-u+1,token:p.substring(_,y)}}};var l={"`a":"à","'a":"á","^a":"â","~a":"ã",'"a':"ä",oa:"å",aa:"å","=a":"ā",ua:"ă",";a":"ą","`e":"è","'e":"é","^e":"ê",'"e':"ë","=e":"ē",ue:"ĕ",";e":"ę",".e":"ė","`i":"ì","'i":"í","^i":"î",'"i':"ï","=i":"ī",ui:"ĭ",";i":"į","`o":"ò","'o":"ó","^o":"ô","~o":"õ",'"o':"ö","=o":"ō",uo:"ŏ","/o":"ø","`u":"ù","'u":"ú","^u":"û","~u":"ũ",'"u':"ü",ou:"ů","=u":"ū",uu:"ŭ",";u":"ų","`A":"À","'A":"Á","^A":"Â","~A":"Ã",'"A':"Ä",oA:"Å",AA:"Å","=A":"Ā",uA:"Ă",";A":"Ą","`E":"È","'E":"É","^E":"Ê",'"E':"Ë","=E":"Ē",uE:"Ĕ",";E":"Ę",".E":"Ė","`I":"Ì","'I":"Í","^I":"Î","~I":"Ĩ",'"I':"Ï","=I":"Ī",uI:"Ĭ",";I":"Į",".I":"İ","`O":"Ò","'O":"Ó","^O":"Ô","~O":"Õ",'"O':"Ö","=O":"Ō",uO:"Ŏ","/O":"Ø","`U":"Ù","'U":"Ú","^U":"Û","~U":"Ũ",'"U':"Ü",oU:"Ů","=U":"Ū",uU:"Ŭ",";U":"Ų",ae:"æ",AE:"Æ",oe:"œ",OE:"Œ",ss:"ß","'c":"ć","^c":"ĉ",uc:"č",cc:"ç",".c":"ċ",cC:"Ç","'C":"Ć","^C":"Ĉ",uC:"Č",".C":"Ċ","~N":"Ñ","~n":"ñ","=s":"š",vs:"š",DH:"Ð",dh:"ð",HO:"Ő",Ho:"ő",HU:"Ű",Hu:"ű","'Y":"Ý","'y":"ý","^Y":"Ŷ","^y":"ŷ",'"Y':"Ÿ",'"y':"ÿ",vS:"Š",vZ:"Ž",vz:"ž"},c={"#":"♯",b:"♭","=":"♮"},d={201:"♯",202:"♭",203:"♮",241:"¡",242:"¢",252:"a",262:"2",272:"o",302:"Â",312:"Ê",322:"Ò",332:"Ú",342:"â",352:"ê",362:"ò",372:"ú",243:"£",253:"«",263:"3",273:"»",303:"Ã",313:"Ë",323:"Ó",333:"Û",343:"ã",353:"ë",363:"ó",373:"û",244:"¤",254:"¬",264:" ́",274:"1⁄4",304:"Ä",314:"Ì",324:"Ô",334:"Ü",344:"ä",354:"ì",364:"ô",374:"ü",245:"¥",255:"-",265:"μ",275:"1⁄2",305:"Å",315:"Í",325:"Õ",335:"Ý",345:"å",355:"í",365:"õ",375:"ý",246:"¦",256:"®",266:"¶",276:"3⁄4",306:"Æ",316:"Î",326:"Ö",336:"Þ",346:"æ",356:"î",366:"ö",376:"þ",247:"§",257:" ̄",267:"·",277:"¿",307:"Ç",317:"Ï",327:"×",337:"ß",347:"ç",357:"ï",367:"÷",377:"ÿ",250:" ̈",260:"°",270:" ̧",300:"À",310:"È",320:"Ð",330:"Ø",340:"à",350:"è",360:"ð",370:"ø",251:"©",261:"±",271:"1",301:"Á",311:"É",321:"Ñ",331:"Ù",341:"á",351:"é",361:"ñ",371:"ù"};this.translateString=function(p){var u=p.split("\\");if(u.length===1)return p;var f=null;return u.forEach(function(_){if(f===null)f=_;else{var v=l[_.substring(0,2)];v!==void 0?f+=v+_.substring(2):(v=d[_.substring(0,3)],v!==void 0?f+=v+_.substring(3):(v=c[_.substring(0,1)],v!==void 0?f+=v+_.substring(1):f+="\\"+_))}}),f},this.getNumber=function(p,u){for(var f=0;u<p.length;)switch(p[u]){case"0":f=f*10,u++;break;case"1":f=f*10+1,u++;break;case"2":f=f*10+2,u++;break;case"3":f=f*10+3,u++;break;case"4":f=f*10+4,u++;break;case"5":f=f*10+5,u++;break;case"6":f=f*10+6,u++;break;case"7":f=f*10+7,u++;break;case"8":f=f*10+8,u++;break;case"9":f=f*10+9,u++;break;default:return{num:f,index:u}}return{num:f,index:u}},this.getFraction=function(p,u){var f=1,_=1;if(p[u]!=="/"){var v=this.getNumber(p,u);f=v.num,u=v.index}if(p[u]==="/")if(u++,p[u]==="/"){for(var y=.5;p[u++]==="/";)y=y/2;return{value:f*y,index:u-1}}else{var S=u,q=this.getNumber(p,u);q.num===0&&S===u&&(q.num=2),q.num!==0&&(_=q.num),u=q.index}return{value:f/_,index:u}};function g(p){const f=/^(\d+)\./.exec(p);return f?f[1]:null}var h=[{match:/,\s*The$/,replace:"The "},{match:/,\s*the$/,replace:"the "},{match:/,\s*A$/,replace:"A "},{match:/,\s*a$/,replace:"a "},{match:/,\s*An$/,replace:"An "},{match:/,\s*an$/,replace:"an "},{match:/,\s*Da$/,replace:"Da "},{match:/,\s*La$/,replace:"La "},{match:/,\s*Le$/,replace:"Le "},{match:/,\s*Les$/,replace:"Les "},{match:/,\s*Ye$/,replace:"Ye "}];this.theReverser=function(p){for(var u=0;u<h.length;u++){var f=h[u],_=p.match(f.match);if(_){var v=g(p);v&&(p=p.replace(v+".",""),p=p.trim());var y=_[0].length,S=f.replace+p.substring(0,p.length-y);return v&&(S=v+". "+S),S}}return p},this.stripComment=function(p){var u=p.indexOf("%");return u>=0?a.strip(p.substring(0,u)):a.strip(p)},this.getInt=function(p){var u=parseInt(p);if(isNaN(u))return{digits:0};var f=""+u,_=p.indexOf(f);return{value:u,digits:_+f.length}},this.getFloat=function(p){var u=parseFloat(p);if(isNaN(u))return{digits:0};var f=""+u,_=p.indexOf(f);return{value:u,digits:_+f.length}},this.getMeasurement=function(p){if(p.length===0)return{used:0};var u=1,f="";if(p[0].token==="-")p.shift(),f="-",u++;else if(p[0].type!=="number")return{used:0};if(f+=p.shift().token,p.length===0)return{used:1,value:parseInt(f)};var _=p.shift();if(_.token==="."){if(u++,p.length===0)return{used:u,value:parseInt(f)};if(p[0].type==="number"&&(_=p.shift(),f=f+"."+_.token,u++,p.length===0))return{used:u,value:parseFloat(f)};_=p.shift()}switch(_.token){case"pt":return{used:u+1,value:parseFloat(f)};case"px":return{used:u+1,value:parseFloat(f)};case"cm":return{used:u+1,value:parseFloat(f)/2.54*72};case"in":return{used:u+1,value:parseFloat(f)*72};default:return p.unshift(_),{used:u,value:parseFloat(f)}}};var m=function(p){return p=p.replace(/\\n/g,`
|
||
`),p=p.replace(/\\"/g,'"'),p};this.getBrackettedSubstring=function(p,u,f,_){for(var v=_||p[u],y=u+1,S=!1;y<p.length&&(S||p[y]!==v);)S=p[y]==="\\",++y;return p[y]===v?[y-u+1,m(p.substring(u+1,y)),!0]:(y=u+f,y>p.length-1&&(y=p.length-1),[y-u+1,m(p.substring(u+1,y)),!1])}};return t.prototype.peekLine=function(){return this.lines[this.lineIndex]},t.prototype.nextLine=function(){if(this.lineIndex>0&&(this.multilineVars.iChar+=this.lines[this.lineIndex-1].length+1),this.lineIndex<this.lines.length){var i=this.lines[this.lineIndex];return this.lineIndex++,i}return null},Q0=t,Q0}var K0,lw;function cw(){if(lw)return K0;lw=1;function a(g,h,m){if(!(!h||g.lines.length===0)){var p=g.deline({lineBreaks:!1}),u=i(p,h);g.lines=t(p,u,m),g.lineBreaks=u}}function t(g,h,m){for(var p=[],u=[],f=[],_=1,v=0;v<h.length;v++){var y=h[v];if(g[y.ogLine].staff){var S=g[y.ogLine].staff[y.staff];if(p[y.line]||(p[y.line]={staff:[]}),!p[y.line].staff[y.staff]){p[y.line].staff[y.staff]={voices:[]},m!==void 0&&y.staff===0&&y.line>0&&(p[y.line].staff[y.staff].barNumber=_);for(var q=Object.keys(S),M=0;M<q.length;M++){var P=q[M]==="voices";q[M]==="meter"&&y.line!==0&&(P=!0),P||(p[y.line].staff[y.staff][q[M]]=S[q[M]])}u[y.staff]&&(p[y.line].staff[y.staff].key=u[y.staff])}p[y.line].staff[y.staff].voices[y.voice]||(p[y.line].staff[y.staff].voices[y.voice]=[]),p[y.line].staff[y.staff].voices[y.voice]=g[y.ogLine].staff[y.staff].voices[y.voice].slice(y.start,y.end+1),f[y.staff*10+y.voice]&&p[y.line].staff[y.staff].voices[y.voice].unshift({el_type:"stem",direction:f[y.staff*10+y.voice].direction});for(var B=p[y.line].staff[y.staff].voices[y.voice],A=B.length-1;A>=0;A--)if(B[A].el_type==="key"){u[y.staff]={root:B[A].root,acc:B[A].acc,mode:B[A].mode,accidentals:B[A].accidentals.filter(function(G){return G.acc!=="natural"})};break}for(A=B.length-1;A>=0;A--)if(B[A].el_type==="stem"){f[y.staff*10+y.voice]={direction:B[A].direction};break}if(m!==void 0&&y.staff===0&&y.voice===0)for(A=0;A<B.length;A++)B[A].el_type==="bar"&&(_++,A===B.length-1?delete B[A].barNumber:B[A].barNumber=_)}else p[y.line]=g[y.ogLine]}for(var j=0;j<p.length;j++)p[j].staff&&(p[j].staff=p[j].staff.filter(function(G){return G!=null}));return p}function i(g,h){for(var m=[],p=0,u=0,f=0,_=0;_<g.length;_++){var v=g[_];if(v.staff){var y=u,S=h[p];p++;for(var q=0;q<v.staff.length;q++)for(var M=v.staff[q],P=0;P<M.voices.length;P++){f=y;for(var B=0,A=0,j=M.voices[P],G=0,C=0;C<j.length;C++){var R=j[C];R.el_type==="bar"&&(S[A]===B&&(m.push({ogLine:_,line:f,staff:q,voice:P,start:G,end:C}),G=C+1,f++,u=Math.max(u,f),A++),B++)}m.push({ogLine:_,line:f,staff:q,voice:P,start:G,end:j.length}),f++,u=Math.max(u,f)}}else m.push({ogLine:_,line:f}),f++,u=Math.max(u,f)}return m}function n(g,h){for(var m=[],p=[],u=0,f=0;f<g.length;f++){var _=g[f],v=u+_;if(v<h)u=v;else{var y=h-u,S=v-h;y<S&&u>0?(m.push(f-1),p.push(Math.round(u-_)),u=_):f<g.length-1&&(m.push(f),p.push(Math.round(u)),u=0)}}return p.push(Math.round(u)),{lineBreaks:m,totals:p}}function s(g){for(var h=[],m=0;m<g.length;m++)h.push(g[m]);return h}function r(g,h,m,p,u,f,_,v,y,S,q){for(var M=S;M<g.length;M++){var P=g[M];m+=P,p+=P;var B=Math.abs(m-h[v]),A=Math.abs(B-f)<h[0]/10;if(A)if(B<f){var j=s(u),G=s(y);G.push(M-1),j.push(p-P),q.push({accumulator:m,lineAccumulator:P,lineWidths:j,lastVariance:Math.abs(m-h[v+1]),highestVariance:Math.max(_,f),currLine:v+1,lineBreaks:G,startIndex:M+1})}else B>f&&M<g.length-1&&(j=s(u),G=s(y),q.push({accumulator:m,lineAccumulator:p,lineWidths:j,lastVariance:B,highestVariance:Math.max(_,B),currLine:v,lineBreaks:G,startIndex:M+1}));B>f?(y.push(M-1),v++,_=Math.max(_,f),f=Math.abs(m-h[v]),u.push(p-P),p=P):f=B}u.push(p)}function o(g,h,m,p){for(var u=Math.ceil(g.total/h),f=Math.floor(g.total/u),_=[],v=0;v<u;v++)_.push(f*(v+1));var y=[];y.push({accumulator:0,lineAccumulator:0,lineWidths:[],lastVariance:999999,highestVariance:0,currLine:0,lineBreaks:[],startIndex:0});for(var S=0;S<y.length;)r(g.measureWidths,_,y[S].accumulator,y[S].lineAccumulator,y[S].lineWidths,y[S].lastVariance,y[S].highestVariance,y[S].currLine,y[S].lineBreaks,y[S].startIndex,y),S++;for(v=0;v<y.length;v++){var q=y[v];q.variances=[],q.aveVariance=0;for(var M=0;M<q.lineWidths.length;M++){var P=q.lineWidths[M];q.variances.push(P-_[0]),q.aveVariance+=Math.abs(P-_[0])}q.aveVariance=q.aveVariance/q.lineWidths.length,p.attempts.push({type:"optimizeLineWidths",lineBreaks:q.lineBreaks,variances:q.variances,aveVariance:q.aveVariance,widths:g.measureWidths})}var B=9999999,A=-1;for(v=0;v<y.length;v++)q=y[v],q.aveVariance<B&&(B=q.aveVariance,A=v);return{failed:!1,lineBreaks:y[A].lineBreaks,variance:y[A].highestVariance}}function l(g,h,m){for(var p=[],u=[],f=0,_=!1,v=0;v<g.length;v++)f+=g[v],f>h&&(_=!0),v%m===m-1&&(v!==g.length-1&&p.push(v),u.push(Math.round(f)),f=0);return{failed:_,totals:u,lineBreaks:p}}function c(g,h,m){var p={lineBreaks:g,staffwidth:h};for(var u in m)m.hasOwnProperty(u)&&u!=="wrap"&&u!=="staffwidth"&&(p[u]=m[u]);return{revisedParams:p}}function d(g,h,m){if(h.length===0||m.staffwidth<h[0].left)return{reParse:!1,explanation:"Staff width is narrower than the margin",revisedParams:m};var p=m.scale?Math.max(m.scale,.1):1,u=m.wrap.minSpacing?Math.max(parseFloat(m.wrap.minSpacing),1):1,f=m.wrap.minSpacingLimit?Math.max(parseFloat(m.wrap.minSpacingLimit),1):u-.1,_=m.wrap.maxSpacing?Math.max(parseFloat(m.wrap.maxSpacing),1):void 0;m.wrap.lastLineLimit&&!_&&(_=Math.max(parseFloat(m.wrap.lastLineLimit),1));for(var v=m.wrap.preferredMeasuresPerLine?Math.max(parseInt(m.wrap.preferredMeasuresPerLine,10),0):void 0,y=[],S=[],q=0;q<h.length;q++){var M=h[q],P=m.staffwidth-M.left,B=P/u/p,A=P/_/p,j=P/f/p,G={widths:M,lineBreakPoint:B,minLineSize:A,attempts:[],staffWidth:m.staffwidth,minWidth:Math.round(j)},C=null;if(v){var R=l(M.measureWidths,B,v);G.attempts.push({type:"Fixed Measures Per Line",preferredMeasuresPerLine:v,lineBreaks:R.lineBreaks,failed:R.failed,totals:R.totals}),R.failed||(C=R.lineBreaks)}if(!C){var H=n(M.measureWidths,B);G.attempts.push({type:"Free Form",lineBreaks:H.lineBreaks,totals:H.totals}),C=H.lineBreaks,C.length>0&&M.measureWidths.length<25&&(H=o(M,B,C,G),G.attempts.push({type:"Optimize",failed:H.failed,reason:H.reason,lineBreaks:H.lineBreaks,totals:H.totals}),H.failed||(C=H.lineBreaks))}y.push(C),S.push(G)}var E=m.staffwidth,U=c(y,E,m);return U.explanation=S,U.reParse=!0,U}return K0={wrapLines:a,calcLineWraps:d},K0}var Y0,dw;function gE(){if(dw)return Y0;dw=1;function a(c){const d=c.getMeterFraction(),g=d.num===4&&d.den===4;if(!(d.num===2&&d.den===2)&&!g)throw new Error("notCommonTime");const m=c.deline();let p=[],u=!1;return m.forEach(f=>{if(f.subtitle)u&&p.push({type:"subtitle",subtitle:f.subtitle.text});else if(f.text)u=!0,p.push({type:"text",text:f.text.text});else if(f.staff){u=!0;const _=f.staff,v=i(_);p=p.concat(v)}}),s(p),r(p),o(p),p}const t=["break","(break)","no chord","n.c.","tacet"];function i(c){const d=[];let g="",h=[],m={chord:["","","",""]},p="",u="";if(c.forEach((f,_)=>{f.voices&&f.voices.forEach((v,y)=>{let S=0,q=0;v.forEach(M=>{if(M.el_type==="part")h.length>0&&_===0&&y===0&&(d.push({type:"part",name:g,lines:[h]}),h=[]),g=M.title;else if(M.el_type==="note"){l(M,m);const P=Math.floor(S);if(M.chord&&M.chord.length>0){const B=M.chord[0],A=B.position==="default"||t.indexOf(B.name.toLowerCase())>=0?B.name:"";A&&(P>0&&!m.chord[0]&&(m.chord[0]=p),p=A,m.chord[P]?P<4&&!m.chord[P+1]&&(m.chord[P+1]=A):m.chord[P]=A),M.chord.forEach(j=>{j.position!=="default"&&t.indexOf(B.name.toLowerCase())<0&&(m.annotations||(m.annotations=[]),m.annotations.push(j.name))})}if(!M.rest||M.rest.type!=="spacer"){const B=M.duration===0&&!M.rest?.25:M.duration,A=Math.floor(B*4);if(A>4)q+=Math.floor(A/4),S=0;else{let j=B*4;M.tripletMultiplier&&(j*=M.tripletMultiplier),S+=j}}}else if(M.el_type==="bar"){if(u&&(m.ending=u,u=""),l(M,m),M.chord&&M.chord.forEach(P=>{P.position!=="default"&&(m.annotations||(m.annotations=[]),m.annotations.push(P.name))}),(M.type==="bar_dbl_repeat"||M.type==="bar_left_repeat")&&(m.hasStartRepeat=!0),(M.type==="bar_dbl_repeat"||M.type==="bar_right_repeat")&&(m.hasEndRepeat=!0),M.startEnding&&(u=M.startEnding),S>=4){if(m.chord[0]===""&&(m.chord[1]||m.chord[2]||m.chord[3])&&(m.chord[0]=n(h)),_===0&&y===0)h.push(m);else{let P=q,B=0;for(;P>=d[B].lines[0].length&&B<d.length;)P-=d[B].lines[0].length,B++;if(B<d.length&&P<d[B].lines[0].length){const A=d[B].lines[0][P];!A.chord[0]&&m.chord[0]&&(A.chord[0]=m.chord[0]),!A.chord[1]&&m.chord[1]&&(A.chord[1]=m.chord[1]),!A.chord[2]&&m.chord[2]&&(A.chord[2]=m.chord[2]),!A.chord[3]&&m.chord[3]&&(A.chord[3]=m.chord[3]),m.annotations&&(A.annotations?A.annotations=A.annotations.concat(m.annotations):A.annotations=m.annotations)}q++}m={chord:["","","",""]}}else m.chord=["","","",""];S=0}else M.el_type}),_===0&&y===0&&d.push({type:"part",name:g,lines:[h]})})}),!p)throw new Error("noChords");return d}function n(c){for(let d=c.length-1;d>=0;d--)for(let g=c[d].chord.length-1;g>=0;g--)if(c[d].chord[g])return c[d].chord[g]}function s(c){c.forEach(d=>{if(d.type==="part"){const g=d.lines[0],h=g.findIndex(p=>!!p.ending),m=g.findIndex((p,u)=>u>h&&!!p.ending);if(h>=0&&m>=0&&m-h===g.length-m){let p=!0;for(let u=0;u<m-h&&p;u++){const f=g[h+u],_=g[m+u];if(f.chord[0]!==_.chord[0]&&(p=!1),f.chord[1]!==_.chord[1]&&(p=!1),f.chord[2]!==_.chord[2]&&(p=!1),f.chord[3]!==_.chord[3]&&(p=!1),f.annotations&&!_.annotations&&(p=!1),!f.annotations&&_.annotations&&(p=!1),f.annotations&&_.annotations)if(f.annotations.length!==_.annotations.length)p=!1;else for(let v=0;v<f.annotations.length;v++)f.annotations[v]!==_.annotations[v]&&(p=!1)}p&&(delete g[h].ending,g.splice(m,g.length-m))}}})}function r(c){c.forEach(d=>{if(d.type==="part"){const g=[],h=d.lines[0];let m=!1;const p=h.findIndex(_=>!!_.hasEndRepeat);(p>=0?Math.min(p+1,h.length):h.length)===12&&(m=!0);const f=m?4:8;for(let _=0;_<h.length;_+=f){const v=h.slice(_,_+f),y=v.findIndex(S=>!!S.hasEndRepeat);y>=0&&y<v.length-1?(g.push(v.slice(0,y+1)),g.push(v.slice(y+1))):g.push(v)}for(let _=0;_<g.length;_++)if(g[_][0].ending){const v=Math.max(0,_-1),y=g[v].length-g[_].length,S=[];for(let q=0;q<y;q++)S.push({noBorder:!0,chord:["","","",""]});g[_]=S.concat(g[_])}d.lines=g}})}function o(c){c.forEach(d=>{if(d.lines){let g=!1,h="";d.lines.forEach(m=>{m.forEach(p=>{if(!p.noBorder){const u=p.chord;!u[0]&&!u[1]&&!u[2]&&!u[3]?(g?h&&(u[0]="%"):u[0]=h,g=!0):!u[1]&&!u[2]&&!u[3]?(g=!0,h=u[0]):(g=!1,h=u[3]||u[2]||u[1])}})})}})}function l(c,d){if(c.decoration)for(let g=0;g<c.decoration.length;g++)switch(c.decoration[g]){case"fermata":case"segno":case"coda":case"D.C.":case"D.S.":case"D.C.alcoda":case"D.C.alfine":case"D.S.alcoda":case"D.S.alfine":case"fine":d.annotations||(d.annotations=[]),d.annotations.push(c.decoration[g]);break}}return Y0=a,Y0}var J0,uw;function Us(){if(uw)return J0;uw=1;var a={};return a.FONTEM=360,a.FONTSIZE=30,a.STEP=a.FONTSIZE*93/720,a.SPACE=10,a.TOPNOTE=15,a.STAVEHEIGHT=100,a.INDENT=50,J0=a,J0}var X0,fw;function hE(){if(fw)return X0;fw=1;const a=Vr();function t(o){this.sections=[{type:"startRepeat",index:-1}],this.addBar=function(l){var c=o.length-1,d=l.type==="bar_left_repeat"||l.type==="bar_dbl_repeat",g=l.type==="bar_right_repeat"||l.type==="bar_dbl_repeat",h=l.startEnding?r(l.startEnding):void 0;g&&(this.sections.length>0&&this.sections[this.sections.length-1].type==="endRepeat"&&this.sections.push({type:"startRepeat",index:this.sections[this.sections.length-1].index}),this.sections.push({type:"endRepeat",index:c})),h&&this.sections.push({type:"startEnding",index:c,endings:h}),d&&this.sections.push({type:"startRepeat",index:c})},this.resolveRepeats=function(){var l,c=this.sections[this.sections.length-1],d=o.length-1;if(c.type==="startRepeat"?c.end=d:c.index+1<d&&this.sections.push({type:"startRepeat",index:c.index+1}),this.sections.length<2)return o;for(var g=[],h=null,m=0;m<this.sections.length;m++){var p=this.sections[m];switch(p.type){case"startRepeat":if(h){if(h.common.end||(h.common.end=p.index),h.endings)for(l=0;l<h.endings.length;l++)h.endings[l]&&!h.endings[l].end&&h.endings[l].start!==p.index&&(h.endings[l].end=p.index);this.sections[m-1].type==="endRepeat"&&h.endings&&h.endings.length&&(h.endings[h.endings.length]={start:-1,end:-1}),g.push(h)}if(h){var u=h.common.end;if(h.endings)for(l=0;l<h.endings.length;l++)h.endings[l]&&(u=Math.max(u,h.endings[l].end));u<p.index-1&&g.push({common:{start:u+1,end:p.index}})}h={common:{start:p.index}};break;case"startEnding":{if(h)for(h.common.end||(h.common.end=p.index),h.endings||(h.endings=[]),l=0;l<p.endings.length;l++)h.endings[p.endings[l]]={start:p.index+1};break}case"endRepeat":if(h){if(h.endings||(h.endings=[]),h.endings.length>0)for(l=0;l<h.endings.length;l++)h.endings[l]&&!h.endings[l].end&&(h.endings[l].end=p.index);h.common.end||(h.common.end=p.index)}break}}if(h){if(h.common.end||(h.common.end=d),h.endings)for(l=0;l<h.endings.length;l++)h.endings[l]&&!h.endings[l].end&&(h.endings[l].end=d);g.push(h)}for(var f=[],_=-1,v=0;v<g.length;v++){var y=g[v];if(!y.endings)i(o,f,y.common.start,y.common.end);else if(y.endings.length===0)i(o,f,y.common.start,y.common.end),i(o,f,y.common.start,y.common.end);else for(l=0;l<y.endings.length;l++){var S=y.endings[l];S&&(i(o,f,y.common.start,y.common.end),S.start>0&&i(o,f,S.start,S.end),_=Math.max(_,S.end))}}return f}}function i(o,l,c,d){c<0&&(c=0),l.length>0&&o[c].el_type==="bar"&&l[l.length-1].el_type==="bar"&&c++;for(var g=c;g<=d;g++){var h,m=!1;if(o[g].el_type==="key"||o[g].el_type==="meter"||o[g].el_type==="tempo"||o[g].el_type==="instrument"){for(h=l.length-1;h>=0&&l[h].el_type!==o[g].el_type;)h--;h>=0&&(o[g].el_type==="key"&&s(o[g],l[h])||o[g].el_type==="meter"&&o[g].num===l[h].num&&o[g].den===l[h].den||o[g].el_type==="instrument"&&o[g].program===l[h].program||o[g].el_type==="tempo"&&o[g].qpm===l[h].qpm)&&(m=!0)}m||l.push(n(o[g]))}}function n(o){var l=Object.assign({},o);return l.pitches&&(l.pitches=a.cloneArray(l.pitches)),l}function s(o,l){return!o.accidentals||!l.accidentals?!1:JSON.stringify(o.accidentals)===JSON.stringify(l.accidentals)}function r(o){var l=[],c,d,g;if(o.indexOf(",")>0)for(d=o.split(","),g=0;g<d.length;g++)c=parseInt(d[g],10),c>0&&l.push(c);else if(o.indexOf("-")>0){d=o.split("-");var h=parseInt(d[0],10),m=parseInt(d[1],10);for(g=h;g<=m;g++)l.push(g)}else c=parseInt(o,10),c>0&&l.push(c);return l}return X0=t,X0}var Z0,pw;function mw(){if(pw)return Z0;pw=1;var a,t=Vr(),i=hE();return(function(){var n=1,s=128;a=function(_,v){v=v||{};var y,S=v.program||0,q=v.midiTranspose||0;_.visualTranspose&&(q-=_.visualTranspose);var M=v.channel||0,P=!1,B=v.drum||"",A=v.drumBars||1,j=v.drumIntro||0,G=B!=="",C=!!v.drumOff,R=[],H=50;S=parseInt(S,10),q=parseInt(q,10),M=parseInt(M,10),M===10&&(S=s),B=B.split(" "),A=parseInt(A,10),j=parseInt(j,10);var E=_.formatting.bagpipes;E&&(S=71);var U=[];if(_.formatting.midi){var N=_.formatting.midi;N.program&&N.program.length>0&&(S=N.program[0],N.program.length>1&&(S=N.program[1],M=N.program[0]),P=!0),N.transpose&&(q=N.transpose[0]),N.channel&&(M=N.channel[0],P=!0),N.drum&&(B=N.drum),N.drumbars&&(A=N.drumbars[0]),N.drumon&&(G=!0),M===10&&(S=s),N.beat&&U.push({el_type:"beat",beats:N.beat}),N.nobeataccents&&U.push({el_type:"beataccents",value:!1})}v.qpm?y=parseInt(v.qpm,10):_.metaText.tempo?y=g(_.metaText.tempo,_.getBeatLength()):v.defaultQpm?y=v.defaultQpm:y=180;var L=[];E&&L.push({el_type:"bagpipes"}),L.push({el_type:"instrument",program:S}),M&&L.push({el_type:"channel",channel:M}),q&&L.push({el_type:"transpose",transpose:q}),L.push({el_type:"tempo",qpm:y});for(var I=0;I<U.length;I++)L.push(U[I]);var T=[],F=[],z=[],D=[],Q=[0],X={};X[0]={el_type:"tempo",qpm:y,timing:0};for(var Z,ue=[],de=!1,ae=_.lines,V=0;V<ae.length;V++){var pe=ae[V];if(pe.staff){let Xe=function(Re){var Be={pppp:[15,10,5,1],ppp:[30,20,10,1],pp:[45,35,20,1],p:[60,50,35,1],mp:[75,65,50,1],mf:[90,80,65,1],f:[105,95,80,1],ff:[120,110,95,1],fff:[127,125,110,1],ffff:[127,125,110,1]},Oe;if(Re.decoration){if(Re.decoration.indexOf("pppp")>=0?Oe="pppp":Re.decoration.indexOf("ppp")>=0?Oe="ppp":Re.decoration.indexOf("pp")>=0?Oe="pp":Re.decoration.indexOf("p")>=0?Oe="p":Re.decoration.indexOf("mp")>=0?Oe="mp":Re.decoration.indexOf("mf")>=0?Oe="mf":Re.decoration.indexOf("f")>=0?Oe="f":Re.decoration.indexOf("ff")>=0?Oe="ff":Re.decoration.indexOf("fff")>=0?Oe="fff":Re.decoration.indexOf("ffff")>=0&&(Oe="ffff"),Oe){Z=Be[Oe].slice(0);let ot=[Z];Array.isArray(Re.decoration)&&(ot=[],Re.decoration.forEach(it=>{it in Be&&ot.push(Be[it].slice(0))})),T[ce].push({el_type:"beat",beats:Z.slice(0),volumesPerNotePitch:ot}),z[Ie]=!1,D[Ie]=!1}if(Re.decoration.indexOf("crescendo(")>=0){var Ne=r(Je,we,"crescendo)"),Ye=Math.min(127,Z[0]+H),Ue=o(Je,we+Ne+1,Object.keys(Be));Ue&&(Ye=Be[Ue][0]),Ne>0?z[Ie]=Math.floor((Ye-Z[0])/Ne):z[Ie]=!1,D[Ie]=!1}else if(Re.decoration.indexOf("crescendo)")>=0)z[Ie]=!1;else if(Re.decoration.indexOf("diminuendo(")>=0){var Ve=r(Je,we,"diminuendo)"),_t=Math.max(15,Z[0]-H),mt=o(Je,we+Ve+1,Object.keys(Be));mt&&(_t=Be[mt][0]),z[Ie]=!1,Ve>0?D[Ie]=Math.floor((_t-Z[0])/Ve):D[Ie]=!1}else Re.decoration.indexOf("diminuendo)")>=0&&(D[Ie]=!1)}};for(var Ce=pe.staff,ce=0,Te=0;Te<Ce.length;Te++){var ye=Ce[Te];if(!(ye.clef&&ye.clef.type==="TAB"))for(var Ie=0;Ie<ye.voices.length;Ie++){var Je=ye.voices[Ie];if(!T[ce]){T[ce]=[].concat(JSON.parse(JSON.stringify(L)));var tt=d(pe.staff,ce);tt&&T[ce].unshift({el_type:"name",trackName:tt}),ue[ce]=new i(T[ce])}if(q&&ye.clef.type==="perc"&&T[ce].push({el_type:"transpose",transpose:0}),ye.clef&&ye.clef.type==="perc"&&!P)for(var De=0;De<T[ce].length;De++)T[ce][De].el_type==="instrument"&&(T[ce][De].program=s);else ye.key&&p(T[ce],ye.key);ye.meter&&u(T[ce],ye.meter),!de&&G&&(T[ce].push({el_type:"drum",params:{pattern:B,bars:A,on:G,intro:j}}),de=!0),ye.clef&&ye.clef.type!=="perc"&&ye.clef.transpose&&(ye.clef.el_type="clef",T[ce].push({el_type:"transpose",transpose:ye.clef.transpose}),F[ce]=!1),ye.clef&&ye.clef.type&&(ye.clef.type.indexOf("-8")>=0?(T[ce].push({el_type:"transpose",transpose:-12}),F[ce]=!0):ye.clef.type.indexOf("+8")>=0?(T[ce].push({el_type:"transpose",transpose:12}),F[ce]=!0):F[ce]&&(T[ce].push({el_type:"transpose",transpose:0}),F[ce]=!1)),_.formatting.midi&&_.formatting.midi.drumoff&&(T[ce].push({el_type:"bar"}),T[ce].push({el_type:"drum",params:{pattern:"",on:!1}}));var le=0,xe=0,Ke=0,fe=0;Z=[105,95,85,1];for(var we=0;we<Je.length;we++){var me=Je[we];switch(me.el_type){case"note":if(z[Ie]&&(Z[0]+=z[Ie],Z[1]+=z[Ie],Z[2]+=z[Ie],T[ce].push({el_type:"beat",beats:Z.slice(0)})),D[Ie]&&(Z[0]+=D[Ie],Z[1]+=D[Ie],Z[2]+=D[Ie],T[ce].push({el_type:"beat",beats:Z.slice(0)})),Xe(me),!me.rest||me.rest.type!=="spacer"){var be={elem:me,el_type:"note",timing:Q[ce]};if(me.style?be.style=me.style:R[ce]&&(be.style=R[ce]),be.duration=me.duration===0?.25:me.duration,me.startTriplet){if(xe=me.tripletMultiplier,Ke=me.startTriplet*xe*me.duration,me.startTriplet!==me.tripletR&&we+me.tripletR<=Je.length){for(var ke=0,$e=we;$e<we+me.tripletR;$e++)ke+=Je[$e].duration;Ke=xe*ke}be.duration=be.duration*xe,be.duration=Math.round(be.duration*1e6)/1e6,fe=be.duration}else xe&&(me.endTriplet?(xe=0,be.duration=Math.round((Ke-fe)*1e6)/1e6):(be.duration=be.duration*xe,be.duration=Math.round(be.duration*1e6)/1e6,fe+=be.duration));me.rest&&(be.rest=me.rest),me.decoration&&(be.decoration=me.decoration.slice(0)),me.pitches&&(be.pitches=t.cloneArray(me.pitches)),me.gracenotes&&(be.gracenotes=t.cloneArray(me.gracenotes)),me.chord&&(be.chord=t.cloneArray(me.chord)),T[ce].push(be),me.style==="rhythm"&&c(T),le++,Q[ce]+=be.duration}break;case"key":case"keySignature":p(T[ce],me);break;case"meter":u(T[ce],me);break;case"clef":me.transpose&&T[ce].push({el_type:"transpose",transpose:me.transpose}),me.type&&(me.type.indexOf("-8")>=0?T[ce].push({el_type:"transpose",transpose:-12}):me.type.indexOf("+8")>=0&&T[ce].push({el_type:"transpose",transpose:12}));break;case"tempo":y=g(me,_.getBeatLength()),T[ce].push({el_type:"tempo",qpm:y,timing:Q[ce]}),X[""+Q[ce]]={el_type:"tempo",qpm:y,timing:Q[ce]};break;case"bar":le>0&&T[ce].push({el_type:"bar"}),Xe(me),le=0,ue[ce].addBar(me,ce);break;case"style":R[ce]=me.head;break;case"timeSignature":T[ce].push(h(me));break;case"part":break;case"stem":case"scale":case"break":case"font":break;case"midi":var ge=!1;switch(me.cmd){case"drumon":G=!0,ge=!0;break;case"drumoff":G=!1,ge=!0;break;case"drum":B=me.params,ge=!0;break;case"drumbars":A=me.params[0],ge=!0;break;case"drummap":break;case"channel":me.params[0]===10&&T[ce].push({el_type:"instrument",program:s});break;case"program":f(T[ce],{el_type:"instrument",program:me.params[0]}),P=!0;break;case"transpose":T[ce].push({el_type:"transpose",transpose:me.params[0]});break;case"gchordoff":T[ce].push({el_type:"gchordOn",tacet:!0});break;case"gchordon":T[ce].push({el_type:"gchordOn",tacet:!1});break;case"beat":T[ce].push({el_type:"beat",beats:me.params});break;case"nobeataccents":T[ce].push({el_type:"beataccents",value:!1});break;case"beataccents":T[ce].push({el_type:"beataccents",value:!0});break;case"vol":case"volinc":T[ce].push({el_type:me.cmd,volume:me.params[0]});break;case"swing":case"gchord":case"bassvol":case"chordvol":T[ce].push({el_type:me.cmd,param:me.params[0]});break;case"bassprog":case"chordprog":T[ce].push({el_type:me.cmd,value:me.params[0],octaveShift:me.params[1]});break;case"gchordbars":T[ce].push({el_type:me.cmd,param:me.params[0]});break;default:console.log("MIDI seq: midi cmd not handled: ",me.cmd,me)}ge&&(T[0].push({el_type:"drum",params:{pattern:B,bars:A,intro:j,on:G}}),de=!0);break;default:console.log("MIDI: element type "+me.el_type+" not handled.")}}ce++,Q[ce]||(Q[ce]=0)}}}}for(var Me=0;Me<ue.length;Me++)T[Me]=ue[Me].resolveRepeats();if(l(T,X),j)for(var Fe=_.getPickupLength(),qe=0;qe<T.length;qe++){for(var rt=0;T[qe][rt].el_type!=="note"&&T[qe].length>rt;)rt++;if(T[qe].length>rt){for(var $e=0;$e<j;$e++)Fe===0||$e<j-1?(T[qe].splice(rt,0,{el_type:"note",rest:{type:"rest"},duration:n},{el_type:"bar"}),rt+=2):T[qe].splice(rt++,0,{el_type:"note",rest:{type:"rest"},duration:n-Fe});C&&(G=!1,T[qe].splice(rt++,0,{el_type:"drum",params:{pattern:B,bars:A,intro:j,on:G}}),C=!1)}}return T.length>0&&T[0].length>0&&(T[0][0].pickupLength=_.getPickupLength()),T};function r(_,v,y){for(var S=0,q=v+1;q<_.length;q++)if(_[q].el_type==="note"&&S++,_[q].decoration&&_[q].decoration.indexOf(y)>=0)return S;return S}function o(_,v,y){for(var S=Math.min(_.length,v+3),q=v;q<S;q++)if(_[q].el_type==="note"&&_[q].decoration){for(var M=0;M<_[q].decoration.length;M++)if(y.indexOf(_[q].decoration[M])>=0)return _[q].decoration[M]}return null}function l(_,v){if(!(!v||v.length===0))for(var y=Object.keys(v),S=0;S<_.length;S++)for(var q=_[S],M=v[0]?v[0].qpm:0,P=0;P<q.length;P++){var B=q[P];B.el_type==="tempo"&&(M=B.qpm),y.indexOf(""+B.timing)>=0&&M!==v[""+B.timing].qpm&&(M=v[""+B.timing].qpm,B.el_type==="tempo"?(B.qpm=v[""+B.timing].qpm,P++):(_[S].splice(P,0,{el_type:"tempo",qpm:v[""+B.timing].qpm,timing:B.timing}),P+=2))}}function c(_){for(var v=0;v<_.length;v++)for(var y=_[v],S=y.length-1;S>=0&&y[S].el_type!=="bar";)y[S].noChordVoice=!0,S--}function d(_,v){if(!(!_||_.length<=v||!_[v].title))return _[v].title.join(" ")}function g(_,v){var y=.25;_.duration&&(y=_.duration[0]);var S=60;return _.bpm&&(S=_.bpm),y*S/v}function h(_){var v;switch(_.type){case"common_time":v={el_type:"meter",num:4,den:4},n=4/4;break;case"cut_time":v={el_type:"meter",num:2,den:2},n=2/2;break;case"specified":let q=0;if(_.value&&_.value.length>0&&_.value[0].num.indexOf("+")>0)for(var y=_.value[0].num.split("+"),S=0;S<y.length;S++)q+=parseInt(y[S],10);else q=parseInt(_.value[0].num,10);v={el_type:"meter",num:q,den:_.value[0].den},n=q/parseInt(_.value[0].den,10);break;default:v={el_type:"meter"},n=1}return v}function m(_){for(var v=[],y=0;y<_.length;y++)_[y].acc!=="natural"&&v.push(_[y]);return v}function p(_,v){var y;v.root==="HP"?y={el_type:"key",accidentals:[{acc:"natural",note:"g"},{acc:"sharp",note:"f"},{acc:"sharp",note:"c"}]}:y={el_type:"key",accidentals:m(v.accidentals)},f(_,y)}function u(_,v){var y=h(v);f(_,y)}function f(_,v){for(var y=_.length-1;y>=0;y--)if(_[y].el_type===v.el_type){JSON.stringify(_[y])!==JSON.stringify(v)&&_.push(v);return}_.push(v)}})(),Z0=a,Z0}var eg,gw;function _E(){if(gw)return eg;gw=1;var a=function(g,h,m,p){this.chordTrack=[],this.chordTrackFinished=!1,this.chordChannel=g,this.currentChords=[],this.lastChord,this.chordLastBar,this.chordsOff=!!h,this.gChordTacet=this.chordsOff,this.hasRhythmHead=!1,this.transpose=0,this.lastBarTime=0,this.meter=p,this.tempoChangeFactor=1,this.bassInstrument=m.bassprog&&m.bassprog.length>=1?m.bassprog[0]:0,this.chordInstrument=m.chordprog&&m.chordprog.length>=1?m.chordprog[0]:0,this.bassOctaveShift=m.bassprog&&m.bassprog.length===2?m.bassprog[1]:0,this.chordOctaveShift=m.chordprog&&m.chordprog.length===2?m.chordprog[1]:0,this.boomVolume=m.bassvol&&m.bassvol.length===1?m.bassvol[0]:64,this.chickVolume=m.chordvol&&m.chordvol.length===1?m.chordvol[0]:48,m.gchord&&m.gchord.length>0?this.overridePattern=n(m.gchord[0]):this.overridePattern=void 0};a.prototype.setMeter=function(d){this.meter=d},a.prototype.setTempoChangeFactor=function(d){this.tempoChangeFactor=d},a.prototype.setLastBarTime=function(d){this.lastBarTime=d},a.prototype.setTranspose=function(d){this.transpose=d},a.prototype.setRhythmHead=function(d,g){this.hasRhythmHead=d;var h=[];if(d&&this.lastChord&&this.lastChord.chick)for(var m=0;m<this.lastChord.chick.length;m++){var p=Object.assign({},g.pitches[0]);p.actualPitch=this.lastChord.chick[m],h.push(p)}return h},a.prototype.barEnd=function(d){this.chordTrack.length>0&&!this.chordTrackFinished&&(this.resolveChords(this.lastBarTime,l(d.time)),this.currentChords=[]),this.chordLastBar=this.lastChord},a.prototype.gChordOn=function(d){this.chordsOff||(this.gChordTacet=d.tacet)},a.prototype.paramChange=function(d){switch(d.el_type){case"gchord":d.param&&d.param.length>0?this.overridePattern=n(d.param):this.overridePattern=void 0;break;case"bassprog":this.bassInstrument=d.value,d.octaveShift!=null&&d.octaveShift!=null?this.bassOctaveShift=d.octaveShift:this.bassOctaveShift=0;break;case"chordprog":this.chordInstrument=d.value,d.octaveShift!=null&&d.octaveShift!=null?this.chordOctaveShift=d.octaveShift:this.chordOctaveShift=0;break;case"bassvol":this.boomVolume=d.param;break;case"chordvol":this.chickVolume=d.param;break;default:console.log("unhandled midi param",d)}},a.prototype.finish=function(){this.chordTrackEmpty()||(this.chordTrackFinished=!0)},a.prototype.addTrack=function(d){this.chordTrackEmpty()||d.push(this.chordTrack)},a.prototype.findChord=function(d){if(this.gChordTacet)return"break";if(this.chordTrackFinished||!d.chord||d.chord.length===0)return null;for(var g=0;g<d.chord.length;g++){var h=d.chord[g];if(h.position==="default")return h.name;if(this.breakSynonyms.indexOf(h.name.toLowerCase())>=0)return"break"}return null},a.prototype.interpretChord=function(d){if(d.length!==0){if(d==="break")return{chick:[]};var g=d.substring(0,1);if(g==="("){if(d=d.substring(1,d.length-1),d.length===0)return;g=d.substring(0,1)}var h=this.basses[g];if(h){for(var m=this.transpose;m<-8;)m+=12;for(;m>8;)m-=12;h+=m,h<33?h+=12:h>44&&(h-=12);var p=h;h+=this.bassOctaveShift*12;var u=h-5,f;d.length===1&&(f=this.chordNotes(h,""));var _=d.substring(1),v=_.substring(0,1);v==="b"||v==="♭"?(p--,h--,u--,_=_.substring(1)):(v==="#"||v==="♯")&&(p++,h++,u++,_=_.substring(1));var y=_.split("/");if(f=this.chordNotes(p,y[0]),f.length>=3){var S=f[2]-f[0];u=u+S-7}if(y.length===2){var q=this.basses[y[1].substring(0,1)];if(q){var M=y[1].substring(1),P={"#":1,"♯":1,b:-1,"♭":-1}[M]||0;h=this.basses[y[1].substring(0,1)]+P+m,h+=this.bassOctaveShift*12,u=h}}return{boom:h,boom2:u,chick:f}}}},a.prototype.chordNotes=function(d,g){g=g.replace(/♭/g,"b").replace(/♯/g,"#");var h=o[g];h||(g.slice(0,2).toLowerCase()==="ma"||g[0]==="M"?h=o.M:g[0]==="m"||g[0]==="-"?h=o.m:h=o.M),d+=12,d+=this.chordOctaveShift*12;for(var m=[],p=0;p<h.length;p++)m.push(d+h[p]);return m},a.prototype.writeNote=function(d,g,h,m,p,u){d!==void 0&&this.chordTrack.push({cmd:"note",pitch:d,volume:h,start:this.lastBarTime+m*c(g,this.tempoChangeFactor),duration:c(p,this.tempoChangeFactor),gap:0,instrument:u})},a.prototype.chordTrackEmpty=function(){for(var d=!0,g=0;g<this.chordTrack.length&&d;g++)this.chordTrack[g].cmd==="note"&&(d=!1);return d},a.prototype.resolveChords=function(d,g){if(!this.hasRhythmHead){var h=this.meter.num,m=this.meter.den,p=1/m,u=p/2,f=parseInt(h,10)/parseInt(m,10),_=f-(g-d)/this.tempoChangeFactor;Math.abs(_)<1e-5&&(_=0),(this.currentChords.length===0||this.currentChords[0].beat!==0)&&this.currentChords.unshift({beat:0,chord:this.chordLastBar});var v=s(this.currentChords,8*h/m),y=this.overridePattern?this.overridePattern:this.rhythmPatterns[h+"/"+m];if(_){y=[];for(var S=(g-d)/this.tempoChangeFactor*8,q=0;q<S/2;q+=2)y.push("chick"),y.push("")}if(!y){y=[];for(var q=0;q<8*h/m/2;q++)y.push("chick"),y.push("")}for(var M=!0,P=Math.min(y.length,v.length),q=0;q<P;q++){q>0&&v[q-1]&&v[q]&&v[q-1].boom!==v[q].boom&&(M=!0);var B=y[q],A=B.indexOf("boom")>=0,j=!A&&q!==0&&y[0].indexOf("boom")>=0&&(!v[q-1]||v[q-1].boom!==v[q].boom),G=t(v[q],B,M,j);A&&(M=!1);for(var C=0;C<G.length;C++)this.writeNote(G[C],.125,A||j?this.boomVolume:this.chickVolume,q,u,A||j?this.bassInstrument:this.chordInstrument),j?j=!1:A=!1}}},a.prototype.processChord=function(d){if(!this.chordTrackFinished){var g=this.findChord(d);if(g){var h=this.interpretChord(g);if(h){this.chordTrack.length===0&&this.chordTrack.push({cmd:"program",channel:this.chordChannel,instrument:this.chordInstrument}),this.lastChord=h;var m=r(this.lastBarTime,l(d.time));this.currentChords.push({chord:this.lastChord,beat:m,start:l(d.time)})}}}};function t(d,g,h,m){var p=[];if(!d)return p;g.indexOf("boom")>=0?p.push(h?d.boom:d.boom2):m&&p.push(d.boom);var u=d.chick.length;if(g.indexOf("chick")>=0)for(var f=0;f<u;f++)p.push(d.chick[f]);switch(g){case"DO":p.push(d.chick[0]);break;case"MI":p.push(d.chick[1]);break;case"SOL":p.push(i(d,2));break;case"TI":p.push(i(d,3));break;case"TOP":p.push(i(d,4));break;case"do":p.push(d.chick[0]+12);break;case"mi":p.push(d.chick[1]+12);break;case"sol":p.push(i(d,2)+12);break;case"ti":p.push(i(d,3)+12);break;case"top":p.push(i(d,4)+12);break}return p}function i(d,g){var h=Math.floor(g/d.chick.length),m=d.chick[g%d.chick.length];return m+h*12}function n(d){for(var g=[],h=0;h<d.length;h++){var m=d[h];switch(m){case"z":g.push("");break;case"2":g.push("");break;case"c":g.push("chick");break;case"b":g.push("boom&chick");break;case"f":g.push("boom");break;case"G":g.push("DO");break;case"H":g.push("MI");break;case"I":g.push("SOL");break;case"J":g.push("TI");break;case"K":g.push("TOP");break;case"g":g.push("do");break;case"h":g.push("mi");break;case"i":g.push("sol");break;case"j":g.push("ti");break;case"k":g.push("top");break}}return g}function s(d,g,h){var m=[];if(d.length===0)return m;for(var p=d[0].chord,u=1;u<d.length;u++){for(var f=d[u];m.length<f.beat;)m.push(p);p=f.chord}for(;m.length<g;)m.push(p);return m}function r(d,g){var h=g-d;return h*8}a.prototype.breakSynonyms=["break","(break)","no chord","n.c.","tacet"],a.prototype.basses={A:33,B:35,C:36,D:38,E:40,F:41,G:43};var o={"-addb2":[0,1,3,7],maddb2:[0,1,3,7],addb2:[0,1,4,7],susb2:[0,1,7],"-add2":[0,2,3,7],madd2:[0,2,3,7],add2:[0,2,4,7],sus2:[0,2,7],"-7sus2":[0,2,7,10],"7sus2":[0,2,7,10],m7sus2:[0,2,7,10],min7sus2:[0,2,7,10],"7sus2/9":[0,2,7,10,14],"add#2":[0,3,4,7],"-add4":[0,3,5,7],madd4:[0,3,5,7],dim:[0,3,6],"m(b5)":[0,3,6],"°":[0,3,6],"˚":[0,3,6],"-add#4":[0,3,6,7],"madd#4":[0,3,6,7],dim7:[0,3,6,9],"°7":[0,3,6,9],"˚7":[0,3,6,9],"-7(b5)":[0,3,6,10],"-7b5":[0,3,6,10],"m7(b5)":[0,3,6,10],m7b5:[0,3,6,10],ø:[0,3,6,10],ø7:[0,3,6,10],"-":[0,3,7],m:[0,3,7],"-(b6)":[0,3,7,8],"-b6":[0,3,7,8],"m(b6)":[0,3,7,8],mb6:[0,3,7,8],"-6":[0,3,7,9],m6:[0,3,7,9],"-6(9)":[0,3,7,9,14],"-6/9":[0,3,7,9,14],"-69":[0,3,7,9,14],"m6(9)":[0,3,7,9,14],"m6/9":[0,3,7,9,14],m69:[0,3,7,9,14],"-7":[0,3,7,10],m7:[0,3,7,10],"-7(b9)":[0,3,7,10,13],"-7b9":[0,3,7,10,13],"-7(9)":[0,3,7,10,14],"-7/9":[0,3,7,10,14],"-9":[0,3,7,10,14],"m7(9)":[0,3,7,10,14],"m7/9":[0,3,7,10,14],m9:[0,3,7,10,14],"-7(9,11)":[0,3,7,10,14,17],"-7/9/11":[0,3,7,10,14,17],"m7(9,11)":[0,3,7,10,14,17],"m7/9/11":[0,3,7,10,14,17],"-13":[0,3,7,10,14,17,21],"-7(9,11,13)":[0,3,7,10,14,17,21],"-7/9/11/13":[0,3,7,10,14,17,21],m13:[0,3,7,10,14,17,21],"m7(9,11,13)":[0,3,7,10,14,17,21],"m7/9/11/13":[0,3,7,10,14,17,21],"-7(9,13)":[0,3,7,10,14,21],"-7/9/13":[0,3,7,10,14,21],"m7(9,13)":[0,3,7,10,14,21],"m7/9/13":[0,3,7,10,14,21],"-7(11)":[0,3,7,10,17],"-7/11":[0,3,7,10,17],"m7(11)":[0,3,7,10,17],"m7/11":[0,3,7,10,17],"-7(11,13)":[0,3,7,10,17,21],"-7/11/13":[0,3,7,10,17,21],"m7(11,13)":[0,3,7,10,17,21],"m7/11/13":[0,3,7,10,17,21],"-(maj7)":[0,3,7,11],"-7M":[0,3,7,11],"-maj7":[0,3,7,11],"-∆7":[0,3,7,11],"m(maj7)":[0,3,7,11],mM7:[0,3,7,11],"min(maj7)":[0,3,7,11],"-9+7":[0,3,7,11,13],"-(maj9)":[0,3,7,11,14],"-7M(9)":[0,3,7,11,14],"-maj9":[0,3,7,11,14],"-∆9":[0,3,7,11,14],"m(maj9)":[0,3,7,11,14],mM9:[0,3,7,11,14],"min(maj9)":[0,3,7,11,14],"-11":[0,3,7,11,14,17],m11:[0,3,7,11,14,17],"-addb9":[0,3,7,13],maddb9:[0,3,7,13],"-add9":[0,3,7,14],madd9:[0,3,7,14],"-add11":[0,3,7,17],madd11:[0,3,7,17],"-add#11":[0,3,7,18],"madd#11":[0,3,7,18],"-#5":[0,3,8],"-(#5)":[0,3,8],"m#5":[0,3,8],"m(#5)":[0,3,8],"-7#5":[0,3,8,10],"-7(#5)":[0,3,8,10],"dim7(b13)":[0,3,9,20],"°7(b13)":[0,3,9,20],"˚7(b13)":[0,3,9,20],add4:[0,4,5,7],"maj(b5)":[0,4,6],majb5:[0,4,6],"add#4":[0,4,6,7],"7(b5)":[0,4,6,10],"7b5":[0,4,6,10],"7(b5,b9)":[0,4,6,10,13],"7(b9,b5)":[0,4,6,10,13],"7b5(b9)":[0,4,6,10,13],"7b9,b5":[0,4,6,10,13],"7b9b5":[0,4,6,10,13],"7(b5,b9,b13)":[0,4,6,10,13,20],"7/b5/b9/b13":[0,4,6,10,13,20],"7b5/b9/b13":[0,4,6,10,13,20],"7(b5,b9,13)":[0,4,6,10,13,21],"7/b5/b9/13":[0,4,6,10,13,21],"7b5/b9/13":[0,4,6,10,13,21],"7(9,b5)":[0,4,6,10,14],"7(b5,9)":[0,4,6,10,14],"7b5(9)":[0,4,6,10,14],"9b5":[0,4,6,10,14],"13(b5)":[0,4,6,10,14,21],"13b5":[0,4,6,10,14,21],"7(b5,9,13)":[0,4,6,10,14,21],"7/b5/9/13":[0,4,6,10,14,21],"7b5/9/13":[0,4,6,10,14,21],"7#9b5":[0,4,6,10,15],"7(#9,b5)":[0,4,6,10,15],"7(b5,#9)":[0,4,6,10,15],"7b5(#9)":[0,4,6,10,15],"7(b5,#9,b13)":[0,4,6,10,15,20],"7/b5/#9/b13":[0,4,6,10,15,20],"7b5/#9/b13":[0,4,6,10,15,20],"7(b5,#9,13)":[0,4,6,10,15,21],"7/b5/#9/13":[0,4,6,10,15,21],"7b5/#9/13":[0,4,6,10,15,21],"7(b5,b13)":[0,4,6,10,20],"7/b5/b13":[0,4,6,10,20],"7b5/b13":[0,4,6,10,20],"7(b5,13)":[0,4,6,10,21],"7/b5/13":[0,4,6,10,21],"7b5(13)":[0,4,6,10,21],"7b5/13":[0,4,6,10,21],"7M(b5)":[0,4,6,11],"maj7(b5)":[0,4,6,11],maj7b5:[0,4,6,11],"7M(b5,9)":[0,4,6,11,14],"maj7(b5,9)":[0,4,6,11,14],"maj7b5/9":[0,4,6,11,14],"7M(b5,9,13)":[0,4,6,11,14,21],"maj7(b5,9,13)":[0,4,6,11,14,21],"maj7b5/9/13":[0,4,6,11,14,21],"7M(b5,13)":[0,4,6,11,21],"maj7(b5,13)":[0,4,6,11,21],"maj7b5/13":[0,4,6,11,21],M:[0,4,7],Δ:[0,4,7],"∆":[0,4,7],6:[0,4,7,9],"6(9)":[0,4,7,9,14],"6/9":[0,4,7,9,14],69:[0,4,7,9,14],"6add9":[0,4,7,9,14],"6(9,11)":[0,4,7,9,14,17],"6/9/11":[0,4,7,9,14,17],6911:[0,4,7,9,14,17],"6(9,#11)":[0,4,7,9,14,18],"6/9/#11":[0,4,7,9,14,18],"69#11":[0,4,7,9,14,18],"6(11)":[0,4,7,9,17],"6/11":[0,4,7,9,17],611:[0,4,7,9,17],"6#11":[0,4,7,9,18],"6(#11)":[0,4,7,9,18],"6/#11":[0,4,7,9,18],7:[0,4,7,10],"7(b9)":[0,4,7,10,13],"7b9":[0,4,7,10,13],"7(9)":[0,4,7,10,14],"7/9":[0,4,7,10,14],9:[0,4,7,10,14],"7(9,11)":[0,4,7,10,14,17],"7/9/11":[0,4,7,10,14,17],"7(9,11,13)":[0,4,7,10,14,17,21],"7/9/11/13":[0,4,7,10,14,17,21],"7#11":[0,4,7,10,14,18],"7(#11)":[0,4,7,10,14,18],"9#11":[0,4,7,10,14,18],"9(#11)":[0,4,7,10,14,18],"(13)":[0,4,7,10,14,21],13:[0,4,7,10,14,21],"7(9,13)":[0,4,7,10,14,21],"7/9/13":[0,4,7,10,14,21],"9/13":[0,4,7,10,14,21],"7#9":[0,4,7,10,15],"7(#9)":[0,4,7,10,15],"7(#9,b13)":[0,4,7,10,15,20],"7(11)":[0,4,7,10,17],"7/11":[0,4,7,10,17],"7(11,13)":[0,4,7,10,17,21],"7/11/13":[0,4,7,10,17,21],"13#11":[0,4,7,10,18,21],"13(#11)":[0,4,7,10,18,21],"7(b13)":[0,4,7,10,20],"7b13":[0,4,7,10,20],"7(13)":[0,4,7,10,21],"7/13":[0,4,7,10,21],"7M":[0,4,7,11],maj7:[0,4,7,11],Δ7:[0,4,7,11],"∆7":[0,4,7,11],"7M(9)":[0,4,7,11,14],"7M/9":[0,4,7,11,14],"maj7(9)":[0,4,7,11,14],"maj7/9":[0,4,7,11,14],maj9:[0,4,7,11,14],Δ9:[0,4,7,11,14],"∆9":[0,4,7,11,14],"7M(9,11)":[0,4,7,11,14,17],"7M/9/11":[0,4,7,11,14,17],maj11:[0,4,7,11,14,17],"maj7(9,11)":[0,4,7,11,14,17],"maj7/9/11":[0,4,7,11,14,17],Δ11:[0,4,7,11,14,17],"∆11":[0,4,7,11,14,17],"7M(9,11,13)":[0,4,7,11,14,17,21],"7M/9/11/13":[0,4,7,11,14,17,21],maj13:[0,4,7,11,14,17,21],"maj7(9,11,13)":[0,4,7,11,14,17,21],"maj7/9/11/13":[0,4,7,11,14,17,21],"Δ11(13)":[0,4,7,11,14,17,21],Δ13:[0,4,7,11,14,17,21],"∆11(13)":[0,4,7,11,14,17,21],"7M(9,#11)":[0,4,7,11,14,18],"7M/9/#11":[0,4,7,11,14,18],"maj7(9,#11)":[0,4,7,11,14,18],"maj7/9/#11":[0,4,7,11,14,18],"maj9#11":[0,4,7,11,14,18],"maj9(#11)":[0,4,7,11,14,18],"maj9/#11":[0,4,7,11,14,18],"Δ9(#11)":[0,4,7,11,14,18],"7M(9,#11,13)":[0,4,7,11,14,18,21],"7M/9/#11/13":[0,4,7,11,14,18,21],"maj13#11":[0,4,7,11,14,18,21],"maj13(#11)":[0,4,7,11,14,18,21],"maj13/#11":[0,4,7,11,14,18,21],"Δ13(#11)":[0,4,7,11,14,18,21],"∆13(#11)":[0,4,7,11,14,18,21],"7M(9,13)":[0,4,7,11,14,21],"7M/9/13":[0,4,7,11,14,21],"maj7(9,13)":[0,4,7,11,14,21],"maj7/9/13":[0,4,7,11,14,21],"maj9(13)":[0,4,7,11,14,21],"Δ9(13)":[0,4,7,11,14,21],"∆9(13)":[0,4,7,11,14,21],"7M(11)":[0,4,7,11,17],"7M/11":[0,4,7,11,17],"maj7(11)":[0,4,7,11,17],"maj7/11":[0,4,7,11,17],"Δ7(11)":[0,4,7,11,17],"∆7(11)":[0,4,7,11,17],"7M(#11)":[0,4,7,11,18],"7M/#11":[0,4,7,11,18],"maj7(#11)":[0,4,7,11,18],"maj7/#11":[0,4,7,11,18],"Δ7(#11)":[0,4,7,11,18],"∆7(#11)":[0,4,7,11,18],"7M(13)":[0,4,7,11,21],"7M/13":[0,4,7,11,21],"maj7(13)":[0,4,7,11,21],"maj7/13":[0,4,7,11,21],"Δ7(13)":[0,4,7,11,21],"∆7(13)":[0,4,7,11,21],addb9:[0,4,7,13],add9:[0,4,7,14],"add#9":[0,4,7,15],add11:[0,4,7,17],"add#11":[0,4,7,18],"+":[0,4,8],aug:[0,4,8],"+7":[0,4,8,10],"7#5":[0,4,8,10],"7(#5)":[0,4,8,10],"7+5":[0,4,8,10],aug7:[0,4,8,10],"7(b9,#5)":[0,4,8,10,13],"7b9#5":[0,4,8,10,13],"9#5":[0,4,8,10,14],"9(#5)":[0,4,8,10,14],"9+5":[0,4,8,10,14],"13#5":[0,4,8,10,14,21],"13(#5)":[0,4,8,10,14,21],"7M(#5)":[0,4,8,11],"maj7#5":[0,4,8,11],"maj7(#5)":[0,4,8,11],"7M(#5,9)":[0,4,8,11,14],"maj7#5/9":[0,4,8,11,14],"maj7(#5,9)":[0,4,8,11,14],"maj7#5#11":[0,4,8,11,18],"maj7(#5,#11)":[0,4,8,11,18],sus:[0,5,7],sus4:[0,5,7],"-7sus4":[0,5,7,10],"7sus":[0,5,7,10],"7sus4":[0,5,7,10],m7sus4:[0,5,7,10],min7sus4:[0,5,7,10],"7sus(b9)":[0,5,7,10,13],"7sus4(b9)":[0,5,7,10,13],"-9sus4":[0,5,7,10,14],"7sus4(9)":[0,5,7,10,14],"7sus4/9":[0,5,7,10,14],"9sus":[0,5,7,10,14],"9sus4":[0,5,7,10,14],m9sus4:[0,5,7,10,14],min9sus4:[0,5,7,10,14],"11sus4":[0,5,7,10,14,17],"13sus4":[0,5,7,10,14,21],"7sus(#9)":[0,5,7,10,15],"7sus4(#9)":[0,5,7,10,15],"7sus4(11)":[0,5,7,10,17],"7sus4(13)":[0,5,7,10,21],"7Msus":[0,5,7,11],"7Msus4":[0,5,7,11],maj7sus:[0,5,7,11],maj7sus4:[0,5,7,11],"#4":[0,6],b5:[0,6],"sus#4":[0,6,7],"7Msus#4":[0,6,11],"maj7sus#4":[0,6,11],5:[0,7],11:[0,7,10,14,17],"5(8)":[0,7,12],"5add8":[0,7,12],"5(9)":[0,7,14],"5add9":[0,7,14],"#5":[0,8],b6:[0,8]};a.prototype.rhythmPatterns={"2/2":["boom","","","","chick","","",""],"3/2":["boom","","","","chick","","","","chick","","",""],"4/2":["boom","","","","chick","","","","boom","","","","chick","","",""],"2/4":["boom","","chick",""],"3/4":["boom","","chick","","chick",""],"4/4":["boom","","chick","","boom","","chick",""],"5/4":["boom","","chick","","chick","","boom","","chick",""],"6/4":["boom","","chick","","boom","","chick","","boom","","chick",""],"3/8":["boom","","chick"],"5/8":["boom","chick","chick","boom","chick"],"6/8":["boom","","chick","boom","","chick"],"7/8":["boom","chick","chick","boom","chick","boom","chick"],"9/8":["boom","","chick","boom","","chick","boom","","chick"],"10/8":["boom","chick","chick","boom","chick","chick","boom","chick","boom","chick"],"11/8":["boom","chick","chick","boom","chick","chick","boom","chick","boom","chick","chick"],"12/8":["boom","","chick","boom","","chick","boom","","chick","boom","","chick"]};function l(d){return d/1e6}function c(d,g){return Math.round(d*g*1e6)/1e6}return eg=a,eg}var tg,hw;function _w(){if(hw)return tg;hw=1;var a={f0:"_C",n0:"=C",s0:"^C",x0:"C",f1:"_D",n1:"=D",s1:"^D",x1:"D",f2:"_E",n2:"=E",s2:"^E",x2:"E",f3:"_F",n3:"=F",s3:"^F",x3:"F",f4:"_G",n4:"=G",s4:"^G",x4:"G",f5:"_A",n5:"=A",s5:"^A",x5:"A",f6:"_B",n6:"=B",s6:"^B",x6:"B",f7:"_c",n7:"=c",s7:"^c",x7:"c",f8:"_d",n8:"=d",s8:"^d",x8:"d",f9:"_e",n9:"=e",s9:"^e",x9:"e",f10:"_f",n10:"=f",s10:"^f",x10:"f",f11:"_g",n11:"=g",s11:"^g",x11:"g",f12:"_a",n12:"=a",s12:"^a",x12:"a",f13:"_b",n13:"=b",s13:"^b",x13:"b",f14:"_c'",n14:"=c'",s14:"^c'",x14:"c'",f15:"_d'",n15:"=d'",s15:"^d'",x15:"d'",f16:"_e'",n16:"=e'",s16:"^e'",x16:"e'"};function t(i){var n=(i.accidental?i.accidental[0]:"x")+i.verticalPos;return a[n]}return tg=t,tg}var ag,vw;function vE(){if(vw)return ag;vw=1;var a,t=_E(),i=_w();return(function(){var n,s,r,o,l,c=1,d,g,h,m,p,u,f={num:4,den:4},_=128,v,y=!0,S=105,q=95,M=85,P=[[S,q,M]],B=.25,A,j,G=0,C,R={},H,E=0,U,N=0,L=-.001,I=.4;a=function(fe,we,me,be){we||(we={}),be||(be={}),n=[],s=[0,0,0,0,0,0,0],o=[],l=we.qpm,c=1,d=void 0,g=void 0,h=void 0,m=void 0,p=0,U=me,f={num:4,den:4},y=!0,S=105,q=95,M=85,P=[],B=.25,A=void 0,j=void 0,G=0,C=[],R={},H=1,fe.length>0&&fe[0].length>0&&(E=fe[0][0].pickupLength),we.bassprog!==void 0&&!be.bassprog&&(be.bassprog=[we.bassprog]),we.bassvol!==void 0&&!be.bassvol&&(be.bassvol=[we.bassvol]),we.chordprog!==void 0&&!be.chordprog&&(be.chordprog=[we.chordprog]),we.chordvol!==void 0&&!be.chordvol&&(be.chordvol=[we.chordvol]),we.gchord!==void 0&&!be.gchord&&(be.gchord=[we.gchord]),u=new t(fe.length,we.chordsOff,be,f),D(fe,we);for(var ke=0;ke<fe.length;ke++){r=0,u.setTranspose(r);var $e=fe[ke];h=[{cmd:"program",channel:ke,instrument:d}],m=void 0,v=0,u.setLastBarTime(0);var ge=!1;(we.voicesOff===!0||we.voicesOff&&we.voicesOff.length&&we.voicesOff.indexOf(ke)>=0)&&(ge=!0);for(var Me=0;Me<$e.length;Me++){var Fe=$e[Me];switch(Fe.el_type){case"name":m={cmd:"text",type:"name",text:Fe.trackName};break;case"note":ae(Fe,ge);break;case"key":s=ce(Fe);break;case"meter":f=Fe,u.setMeter(f),B=Q(f),le();break;case"tempo":l?c=Fe.qpm?l/Fe.qpm:1:l=Fe.qpm,u.setTempoChangeFactor(c);break;case"transpose":r=Fe.transpose,u.setTranspose(r);break;case"bar":u.barEnd(Fe),n=[],ke===0&&xe(fe.length+1),u.setRhythmHead(!1),v=F(Fe.time),u.setLastBarTime(v);break;case"bagpipes":break;case"instrument":if(d===void 0&&(d=Fe.program),g=Fe.program,h.length>0&&h[h.length-1].cmd==="program")h[h.length-1].instrument=Fe.program;else{var qe;for(qe=h.length-1;qe>=0&&h[qe].cmd!=="program";qe--);(qe<0||h[qe].instrument!==Fe.program)&&h.push({cmd:"program",channel:0,instrument:Fe.program})}break;case"channel":T(Fe.channel);break;case"drum":R=De(Fe.params),le();break;case"gchordOn":u.gChordOn(Fe);break;case"beat":S=Fe.beats[0],q=Fe.beats[1],M=Fe.beats[2],Fe.volumesPerNotePitch?P=Fe.volumesPerNotePitch:P=[];break;case"vol":A=Fe.volume;break;case"volinc":j=Fe.volume;break;case"beataccents":y=Fe.value;break;case"gchord":case"bassprog":case"chordprog":case"bassvol":case"chordvol":case"gchordbars":u.paramChange(Fe);break;default:console.log("MIDI creation. Unknown el_type: "+Fe.el_type+`
|
||
`);break}}h[0].instrument===void 0&&(h[0].instrument=d||0),m&&h.unshift(m),o.push(h),u.finish(),C.length>0}return we.detuneOctave&&Ke(o,parseInt(we.detuneOctave,10)),u.addTrack(o),C.length>0&&o.push(C),{tempo:l,instrument:d,tracks:o,totalDuration:p}};function T(fe){for(var we=h.length-1;we>=0;we--)if(h[we].cmd==="program"){h[we].channel=fe;return}}function F(fe){return fe/1e6}function z(fe){return Math.round(fe*c*1e6)/1e6}function D(fe,we){for(var me=0;me<fe.length;me++){for(var be=fe[me],ke={},$e=we.qpm,ge=0,Me=1,Fe=0;Fe<be.length;Fe++){var qe=be[Fe];if(qe.el_type==="tempo"){$e?Me=qe.qpm?$e/qe.qpm:1:$e=qe.qpm;continue}qe.time=ge;var rt=qe.duration?qe.duration:0;if(ge+=Math.round(rt*Me*1e6),qe.pitches){for(var Xe=0;Xe<qe.pitches.length;Xe++){var Re=qe.pitches[Xe];if(Re){if(Re.duration=qe.duration,Re.startTie)ke[Re.pitch]===void 0?ke[Re.pitch]={el:Fe,pitch:Xe}:(be[ke[Re.pitch].el].pitches[ke[Re.pitch].pitch].duration+=Re.duration,qe.pitches[Xe]=null);else if(Re.endTie){var Be=ke[Re.pitch];if(Be){var Oe=Re.duration;delete be[Be.el].pitches[Be.pitch].startTie,be[Be.el].pitches[Be.pitch].duration+=Oe,qe.pitches[Xe]=null,delete ke[Re.pitch]}else delete Re.endTie}}}delete qe.duration}}for(var Ne in ke)if(ke.hasOwnProperty(Ne)){var Ye=ke[Ne];delete be[Ye.el].pitches[Ye.pitch].startTie}}}function Q(fe){switch(parseInt(fe.den,10)){case 2:return .5;case 4:return .25;case 8:return fe.num%3===0?.375:.125;case 16:return .125}return .25}function X(fe,we,me){var be=me-fe;return be/we}function Z(fe,we,me){if(we)return 0;let be=S,ke=q,$e=M;me!==void 0&&P.length>=me+1&&(be=P[me][0],ke=P[me][1],$e=P[me][2]);var ge;if(A!==void 0)ge=A,A=void 0;else if(!y)ge=ke;else if(E>fe)ge=$e;else{var Me=X(v,Q(f),fe);Me===0?ge=be:parseInt(Me,10)===Me?ge=ke:ge=$e}return j&&(ge+=j,j=void 0),ge<0&&(ge=0),ge>127&&(ge=127),we?0:ge}function ue(fe,we){var me={};if(fe.decoration)for(var be=0;be<fe.decoration.length;be++)fe.decoration[be]==="staccato"?me.thisBreakBetweenNotes="staccato":fe.decoration[be]==="tenuto"?me.thisBreakBetweenNotes="tenuto":fe.decoration[be]==="accent"?me.velocity=Math.min(127,we*1.5):fe.decoration[be]==="trill"?me.noteModification="trill":fe.decoration[be]==="lowermordent"?me.noteModification="lowermordent":fe.decoration[be]==="uppermordent"?me.noteModification="pralltriller":fe.decoration[be]==="mordent"?me.noteModification="mordent":fe.decoration[be]==="turn"?me.noteModification="turn":fe.decoration[be]==="roll"?me.noteModification="roll":fe.decoration[be]==="pralltriller"?me.noteModification="pralltriller":fe.decoration[be]==="trillh"&&(me.noteModification="trillh");return me}function de(fe,we){var me=we.start,be=we.duration,ke=z(1/32);switch(fe){case"trill":for(var $e=2;be>0;)h.push({cmd:"note",pitch:we.pitch+$e,volume:we.volume,start:me,duration:ke,gap:0,instrument:g,style:"decoration"}),$e=$e===2?0:2,be-=ke,me+=ke;break;case"trillh":for(var $e=1;be>0;)h.push({cmd:"note",pitch:we.pitch+$e,volume:we.volume,start:me,duration:ke,gap:0,instrument:g,style:"decoration"}),$e=$e===1?0:1,be-=ke,me+=ke;break;case"pralltriller":h.push({cmd:"note",pitch:we.pitch,volume:we.volume,start:me,duration:ke,gap:0,instrument:g,style:"decoration"}),be-=ke,me+=ke,h.push({cmd:"note",pitch:we.pitch+2,volume:we.volume,start:me,duration:ke,gap:0,instrument:g,style:"decoration"}),be-=ke,me+=ke,h.push({cmd:"note",pitch:we.pitch,volume:we.volume,start:me,duration:be,gap:0,instrument:g});break;case"mordent":case"lowermordent":h.push({cmd:"note",pitch:we.pitch,volume:we.volume,start:me,duration:ke,gap:0,instrument:g,style:"decoration"}),be-=ke,me+=ke,h.push({cmd:"note",pitch:we.pitch-2,volume:we.volume,start:me,duration:ke,gap:0,instrument:g,style:"decoration"}),be-=ke,me+=ke,h.push({cmd:"note",pitch:we.pitch,volume:we.volume,start:me,duration:be,gap:0,instrument:g});break;case"turn":ke=we.duration/4,h.push({cmd:"note",pitch:we.pitch+2,volume:we.volume,start:me,duration:ke,gap:0,instrument:g,style:"decoration"}),h.push({cmd:"note",pitch:we.pitch,volume:we.volume,start:me+ke,duration:ke,gap:0,instrument:g,style:"decoration"}),h.push({cmd:"note",pitch:we.pitch-1,volume:we.volume,start:me+ke*2,duration:ke,gap:0,instrument:g,style:"decoration"}),h.push({cmd:"note",pitch:we.pitch,volume:we.volume,start:me+ke*3,duration:ke,gap:0,instrument:g,style:"decoration"});break;case"roll":for(;be>0;)h.push({cmd:"note",pitch:we.pitch,volume:we.volume,start:me,duration:ke,gap:0,instrument:g,style:"decoration"}),be-=ke*2,me+=ke*2;break}}function ae(fe,we){var me=Z(F(fe.time),we);u.processChord(fe);var be;if(fe.gracenotes&&fe.pitches&&fe.pitches.length>0&&fe.pitches[0]&&(be=Te(fe.gracenotes,fe.pitches[0].duration),fe.elem&&(fe.elem.midiGraceNotePitches=ye(be,F(fe.time),me*2/3,g))),fe.elem){var ke=F(fe.time),$e=ke/B/l*60*1e3;if(fe.elem.currentTrackMilliseconds===void 0)fe.elem.currentTrackMilliseconds=$e,fe.elem.currentTrackWholeNotes=ke;else if(fe.elem.currentTrackMilliseconds.length===void 0)fe.elem.currentTrackMilliseconds!==$e&&(fe.elem.currentTrackMilliseconds=[fe.elem.currentTrackMilliseconds,$e],fe.elem.currentTrackWholeNotes=[fe.elem.currentTrackWholeNotes,ke]);else{for(var ge=!1,Me=0;Me<fe.elem.currentTrackMilliseconds.length;Me++)fe.elem.currentTrackMilliseconds[Me]===$e&&(ge=!0);ge||(fe.elem.currentTrackMilliseconds.push($e),fe.elem.currentTrackWholeNotes.push(ke))}}if(fe.pitches){var Fe="",qe=ue(fe,me);qe.thisBreakBetweenNotes&&(Fe=qe.thisBreakBetweenNotes),qe.velocity&&(me=qe.velocity);var rt=fe.pitches;fe.style==="rhythm"&&(rt=u.setRhythmHead(!0,fe)),fe.elem&&(fe.elem.midiPitches=[]);for(var Xe=0;Xe<rt.length;Xe++){let Ve=me;!qe.velocity&&Array.isArray(fe.decoration)&&fe.decoration.length>Xe&&(Ve=Z(F(fe.time),we,Xe));var Re=rt[Xe];if(Re){Re.startSlur&&(G+=Re.startSlur.length),Re.endSlur&&(G-=Re.endSlur.length);var Be=Re.actualPitch?Re.actualPitch:Ce(Re);if(g===_&&U){var Oe=i(Re);Oe&&U[Oe]&&(Be=U[Oe].sound)}var Ne={cmd:"note",pitch:Be,volume:Ve,start:F(fe.time),duration:z(Re.duration),instrument:g,startChar:fe.elem.startChar,endChar:fe.elem.endChar};if(Ne=Ie(Ne),fe.gracenotes&&(Ne.duration=Ne.duration/2,Ne.start=Ne.start+Ne.duration),fe.elem&&fe.elem.midiPitches.push(Ne),qe.noteModification)de(qe.noteModification,Ne);else{switch(G>0?Ne.endType="tenuto":Fe&&(Ne.endType=Fe),Ne.endType){case"tenuto":Ne.gap=L;break;case"staccato":var Ye=Ne.duration*I;Ne.gap=l/60*Ye;break;default:Ne.gap=N;break}h.push(Ne)}}}h.length-1}var Ue=V(fe);p=Math.max(p,F(fe.time)+z(Ue))}function V(fe){return fe.pitches&&fe.pitches.length>0&&fe.pitches[0]?fe.pitches[0].duration:fe.elem?fe.elem.duration:fe.duration}var pe=[0,2,4,5,7,9,11];function Ce(fe){if(fe.midipitch!==void 0)return fe.midipitch;var we=fe.pitch;if(fe.accidental)switch(fe.accidental){case"sharp":n[we]=1;break;case"flat":n[we]=-1;break;case"natural":n[we]=0;break;case"dblsharp":n[we]=2;break;case"dblflat":n[we]=-2;break;case"quartersharp":n[we]=.25;break;case"quarterflat":n[we]=-.25;break}var me=Je(we)*12+pe[tt(we)]+60;return n[we]!==void 0?me+=n[we]:me+=s[tt(we)],me+=r,me}function ce(fe){var we=[0,0,0,0,0,0,0];if(!fe.accidentals)return we;for(var me=0;me<fe.accidentals.length;me++){var be=fe.accidentals[me],ke;switch(be.acc){case"flat":ke=-1;break;case"quarterflat":ke=-.25;break;case"sharp":ke=1;break;case"quartersharp":ke=.25;break;default:ke=0;break}var $e=be.note.toLowerCase(),ge=tt($e.charCodeAt(0)-99);we[ge]+=ke}return we}function Te(fe,we){for(var me=0,be=[],ke,$e=0;$e<fe.length;$e++)ke=fe[$e],me+=ke.duration;var ge=we/2/me;for($e=0;$e<fe.length;$e++){ke=fe[$e];var Me=Ce(ke);if(g===_&&U){var Fe=i(ke);Fe&&U[Fe]&&(Me=U[Fe].sound)}var qe={pitch:Me,duration:ke.duration*ge};qe=Ie(qe),be.push(qe)}return be}function ye(fe,we,me,be){var ke=[];me=Math.round(me);for(var $e=0;$e<fe.length;$e++){var ge=fe[$e];h.push({cmd:"note",pitch:ge.pitch,volume:me,start:we,duration:ge.duration,gap:0,instrument:be,style:"grace"}),ke.push({pitch:ge.pitch,durationInMeasures:ge.duration,volume:me,instrument:be}),we+=ge.duration}return ke}function Ie(fe){var we=""+fe.pitch;return we.indexOf(".75")>=0?(fe.pitch=Math.round(fe.pitch),fe.cents=-50):we.indexOf(".25")>=0&&(fe.pitch=Math.round(fe.pitch),fe.cents=50),fe}function Je(fe){return Math.floor(fe/7)}function tt(fe){return fe=fe%7,fe<0&&(fe+=7),fe}function De(fe){if(fe.pattern.length===0||fe.on===!1)return{on:!1};for(var we=fe.pattern[0],me=[],be="",ke=0,$e=0;$e<we.length;$e++)if(we[$e]==="d"&&ke++,we[$e]==="d"||we[$e]==="z")be.length!==0?(me.push(be),be=we[$e]):be=be+we[$e];else{if(be.length===0)return{on:!1};be=be+we[$e]}if(be.length!==0&&me.push(be),fe.pattern.length!==ke*2+1)return{on:!1};for(var ge={on:!0,bars:fe.bars,pattern:[]},Me=Q(f),Fe=0,qe=0;qe<me.length;qe++){be=me[qe];for(var rt=1,Xe=!1,Re=0,Be=1;Be<be.length;Be++)switch(be[Be]){case"/":Re!==0&&(rt*=Re),Re=0,Xe=!0;break;case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":Re=Re*10+be[Be];break;default:return{on:!1}}Xe?(Re===0&&(Re=2),rt/=Re):Re&&(rt*=Re),be[0]==="d"?(ge.pattern.push({len:rt*Me,pitch:fe.pattern[1+Fe],velocity:fe.pattern[1+Fe+ke]}),Fe++):ge.pattern.push({len:rt*Me,pitch:null})}return H=fe.bars?fe.bars:1,ge}function le(){if(!(!R||!R.pattern)){for(var fe=R,we=0,me=f.num/f.den,be=0;be<fe.pattern.length;be++)we+=fe.pattern[be].len;var ke=we/H/me;for(be=0;be<fe.pattern.length;be++)fe.pattern[be].len=fe.pattern[be].len/ke;R=fe}}function xe(fe){if(!(C.length===0&&!R.on)){var we=f.num/f.den;if(C.length===0){if(p<we)return;C.push({cmd:"program",channel:fe,instrument:_})}if(R.on)for(var me=v,be=0;be<R.pattern.length;be++){var ke=z(R.pattern[be].len);R.pattern[be].pitch&&C.push({cmd:"note",pitch:R.pattern[be].pitch,volume:R.pattern[be].velocity,start:me,duration:ke,gap:0,instrument:_}),me+=ke}}}function Ke(fe,we){for(var me={},be=0;be<fe.length;be++)for(var ke=0;ke<fe[be].length;ke++){var $e=fe[be][ke];$e.cmd==="note"&&(me[$e.start]===void 0&&(me[$e.start]=[]),me[$e.start].push({track:be,event:ke,pitch:$e.pitch}))}var ge=Object.keys(me);for(be=0;be<ge.length;be++){var Me=me[ge[be]];if(Me.length>1){Me=Me.sort(function(Re,Be){return Re.pitch-Be.pitch});var Fe=Me[Me.length-1],qe=Fe.pitch%12,rt=!1;for(ke=0;!rt&&ke<Me.length-1;ke++)Me[ke].pitch%12===qe&&(rt=!0);if(rt){var Xe=fe[Fe.track][Fe.event];Xe.cents||(Xe.cents=0),Xe.cents+=we}}}}})(),ag=a,ag}var ig,bw;function bE(){if(bw)return ig;bw=1;function a(c,d){d||(d={});for(var g=!!d.lineBreaks,h=[],m=!1,p=[],u=[],f=[],_=[],v=[],y=[],S=[],q=0;q<c.length;q++){var M=l(c[q]);if(M.staff){if(m&&!M.vskip)for(var P=h[h.length-1],B=0;B<P.staff.length;B++){var A=M.staff[B],j=P.staff[B];if(A&&(o(A.meter,p[B])||(i(A.meter,A.voices),p[B]=A.meter,delete A.meter),o(A.key,u[B])||(n(A.key,A.voices),u[B]=A.key,delete A.key),A.title&&(j.abbrevTitle=A.title),o(A.clef,f[B])||(s(A.clef,A.voices),f[B]=A.clef,delete A.clef),o(A.vocalfont,_[B])||(r(A.vocalfont,A.voices,"vocalfont"),_[B]=A.vocalfont,delete A.vocalfont),o(A.gchordfont,v[B])||(r(A.gchordfont,A.voices,"gchordfont"),v[B]=A.gchordfont,delete A.gchordfont),o(A.tripletfont,y[B])||(r(A.tripletfont,A.voices,"tripletfont"),y[B]=A.tripletfont,delete A.tripletfont),o(A.annotationfont,S[B])||(r(A.annotationfont,A.voices,"annotationfont"),S[B]=A.annotationfont,delete A.annotationfont)),A)for(var G=0;G<j.voices.length;G++){var C=j.voices[G],R=A.voices[G];g&&C.push({el_type:"break"}),R&&(j.voices[G]=C.concat(R))}}else{for(var H=0;H<M.staff.length;H++)u[H]=M.staff[H].key,p[H]=M.staff[H].meter,f[H]=M.staff[H].clef;h.push(l(M))}m=!0}else m=!1,h.push(M)}return h}function t(c,d){return c==="abselem"?"abselem":d}function i(c,d){c.el_type="meter",c.startChar=-1,c.endChar=-1;for(var g=0;g<d.length;g++)d[g].unshift(c)}function n(c,d){c.el_type="key",c.startChar=-1,c.endChar=-1;for(var g=0;g<d.length;g++)d[g].unshift(c)}function s(c,d){c.el_type="clef",c.startChar=-1,c.endChar=-1;for(var g=0;g<d.length;g++)d[g].unshift(c)}function r(c,d,g){c.el_type="font",c.type=g,c.startChar=-1,c.endChar=-1;for(var h=0;h<d.length;h++)d[h].unshift(c)}function o(c,d){if(!c)return!0;var g=JSON.stringify(c,t),h=JSON.stringify(d,t);return g===h}function l(c){for(var d={},g=Object.keys(c),h=0;h<g.length;h++)if(g[h]!=="staff")d[g[h]]=c[g[h]];else{d.staff=[];for(var m=0;m<c.staff.length;m++){for(var p={},u=Object.keys(c.staff[m]),f=0;f<u.length;f++)if(u[f]!=="voices")p[u[f]]=c.staff[m][u[f]];else{p.voices=[];for(var _=0;_<c.staff[m].voices.length;_++)p.voices.push([].concat(c.staff[m].voices[_]))}d.staff.push(p)}}return d}return ig=a,ig}var ng,yw;function ww(){if(yw)return ng;yw=1;var a=Vr(),t=Us(),i=mw(),n=vE(),s=bE(),r=function(){this.reset=function(){this.version="1.1.0",this.media="screen",this.metaText={},this.metaTextInfo={},this.formatting={},this.lines=[],this.staffNum=0,this.voiceNum=0,this.lineNum=0,this.runningFonts={},delete this.visualTranspose},this.reset();function o(m,p,u,f){for(var _=0;_<f.length;_++)m[u][f[_]]=p[u][f[_]]}this.copyTopInfo=function(m){var p=["tempo","title","header","rhythm","origin","composer","author","partOrder"];o(this,m,"metaText",p),o(this,m,"metaTextInfo",p)},this.copyBottomInfo=function(m){var p=["unalignedWords","book","source","discography","notes","transcription","history","abc-copyright","abc-creator","abc-edited-by","footer"];o(this,m,"metaText",p),o(this,m,"metaTextInfo",p)},this.getBeatLength=function(){var m=this.getMeterFraction(),p=1;return m.num===6||m.num===9||m.num===12||m.num===3&&m.den===8?p=3:m.den===8&&(m.num===5||m.num===7)&&(p=2),p/m.den};function l(m,p){for(var u=0,f=0;f<m.length;f++)if(m[f].staff)for(var _=0;_<m[f].staff.length;_++)for(var v=0;v<m[f].staff[_].voices.length;v++)for(var y=m[f].staff[_].voices[v],S=1,q=0;q<y.length;q++){var M=y[q].rest&&y[q].rest.type==="spacer";if(y[q].startTriplet&&(S=y[q].tripletMultiplier),y[q].duration&&!M&&y[q].el_type!=="tempo"&&(u+=y[q].duration*S),y[q].endTriplet&&(S=1),u>=p&&(u-=p),y[q].el_type==="bar")return u}return u}this.getPickupLength=function(){var m=this.getBarLength(),p=l(this.lines,m);return p<1e-8||m-p<1e-8?0:p},this.getBarLength=function(){var m=this.getMeterFraction();return m.num/m.den},this.getTotalTime=function(){return this.totalTime},this.getTotalBeats=function(){return this.totalBeats},this.millisecondsPerMeasure=function(m){var p;if(m)p=m;else{var u=this.metaText?this.metaText.tempo:null;p=this.getBpm(u)}p<=0&&(p=1);var f=this.getBeatsPerMeasure(),_=f/p;return _*6e4},this.getBeatsPerMeasure=function(){var m=this.getBeatLength(),p=this.getBarLength();return p/m},this.getMeter=function(){for(var m=0;m<this.lines.length;m++){var p=this.lines[m];if(p.staff)for(var u=0;u<p.staff.length;u++){var f=p.staff[u].meter;if(f)return f}}return{type:"common_time"}},this.getMeterFraction=function(){var m=this.getMeter(),p=4,u=4;if(m)if(m.type==="specified"){if(m.value&&m.value.length>0&&m.value[0].num.indexOf("+")>0){var f=m.value[0].num.split("+");p=0;for(var _=0;_<f.length;_++)p+=parseInt(f[_],10)}else p=parseInt(m.value[0].num,10);u=parseInt(m.value[0].den,10)}else m.type==="cut_time"?(p=2,u=2):m.type==="common_time"&&(p=4,u=4);return this.meter={num:p,den:u},this.meter},this.getKeySignature=function(){for(var m=0;m<this.lines.length;m++){var p=this.lines[m];if(p.staff){for(var u=0;u<p.staff.length;u++)if(p.staff[u].key)return p.staff[u].key}}return{}},this.getElementFromChar=function(m){for(var p=0;p<this.lines.length;p++){var u=this.lines[p];if(u.staff)for(var f=0;f<u.staff.length;f++)for(var _=u.staff[f],v=0;v<_.voices.length;v++)for(var y=_.voices[v],S=0;S<y.length;S++){var q=y[S];if(q.startChar&&q.endChar&&q.startChar<=m&&q.endChar>m)return q}}return null};function c(m){for(var p,u,f,_,v=m.length-1;v>=0;v--){var y=m[v];y.type==="bar"?(y.top=f,y.nextTop=p,p=f,y.bottom=_,y.nextBottom=u,u=_):y.type==="event"&&(f=y.top,_=y.top+y.height)}}function d(m){var p=[];for(var u in m)m.hasOwnProperty(u)&&p.push(m[u]);return p=p.sort(function(f,_){var v=f.milliseconds-_.milliseconds;return v!==0?v:f.type==="bar"?-1:1}),p}this.addElementToEvents=function(m,p,u,f,_,v,y,S,q,M){if(p.hint)return{isTiedState:void 0,duration:0};var P=p.durationClass?p.durationClass:p.duration;if(p.abcelem.rest&&p.abcelem.rest.type==="spacer"&&(P=0),P>0){for(var B=[],A=0;A<p.elemset.length;A++)p.elemset[A]!==null&&B.push(p.elemset[A]);var j=p.startTie;if(q!==void 0)m["event"+q].elements.push(B),M&&(m["event"+u]||(m["event"+u]={type:"event",milliseconds:u,line:v,measureNumber:y,top:f,height:_,left:null,width:0,elements:[],startChar:null,endChar:null,startCharArray:[],endCharArray:[]}),m["event"+u].measureStart=!0,M=!1),j||(q=void 0);else{if(!m["event"+u])m["event"+u]={type:"event",milliseconds:u,line:v,measureNumber:y,top:f,height:_,left:p.x,width:p.w,elements:[B],startChar:p.abcelem.startChar,endChar:p.abcelem.endChar,startCharArray:[p.abcelem.startChar],endCharArray:[p.abcelem.endChar],midiPitches:p.abcelem.midiPitches?a.cloneArray(p.abcelem.midiPitches):[]},p.abcelem.midiGraceNotePitches&&(m["event"+u].midiGraceNotePitches=a.cloneArray(p.abcelem.midiGraceNotePitches));else{if(m["event"+u].left?m["event"+u].left=Math.min(m["event"+u].left,p.x):m["event"+u].left=p.x,m["event"+u].elements.push(B),m["event"+u].startCharArray.push(p.abcelem.startChar),m["event"+u].endCharArray.push(p.abcelem.endChar),m["event"+u].startChar===null&&(m["event"+u].startChar=p.abcelem.startChar),m["event"+u].endChar===null&&(m["event"+u].endChar=p.abcelem.endChar),p.abcelem.midiPitches&&p.abcelem.midiPitches.length){m["event"+u].midiPitches||(m["event"+u].midiPitches=[]);for(var A=0;A<p.abcelem.midiPitches.length;A++)m["event"+u].midiPitches.push(p.abcelem.midiPitches[A])}if(p.abcelem.midiGraceNotePitches&&p.abcelem.midiGraceNotePitches.length){m["event"+u].midiGraceNotePitches||(m["event"+u].midiGraceNotePitches=[]);for(var G=0;G<p.abcelem.midiGraceNotePitches.length;G++)m["event"+u].midiGraceNotePitches.push(p.abcelem.midiGraceNotePitches[G])}}M&&(m["event"+u].measureStart=!0,M=!1)}}return{isTiedState:q,duration:P/S,nextIsBar:M||p.type==="bar"}},this.makeVoicesArray=function(){for(var m=[],p=[],u={},f=0;f<this.engraver.staffgroups.length;f++){var _=this.engraver.staffgroups[f];if(_&&_.staffs&&_.staffs.length>0){var v=_.staffs[0],y=v.absoluteY,S=y-v.top*t.STEP,q=_.staffs[_.staffs.length-1];y=q.absoluteY;for(var M=y-q.bottom*t.STEP,P=M-S,B=_.voices,A=0;A<B.length;A++)if(!(B[A].staff&&B[A].staff.isTabStaff)){var j=!1;m[A]||(m[A]=[]),p[A]===void 0&&(p[A]=0);for(var G=B[A].children,C=0;C<G.length;C++)G[C].type==="tempo"&&(u[p[A]]=this.getBpm(G[C].abcelem)),m[A].push({top:S,height:P,line:_.line,measureNumber:p[A],elem:G[C]}),G[C].type==="bar"&&j&&p[A]++,(G[C].type==="note"||G[C].type==="rest")&&(j=!0)}}}return this.tempoLocations=u,m},this.setupEvents=function(m,p,u,f){f||(f=1);for(var _=[],v={},y=m,S,q=!0,M=this.makeVoicesArray(),P=0,B=0;B<M.length;B++){var A=y,j=Math.round(A*1e3),G=0,C=-1,R=M[B],H=u;p=this.getBeatLength()*H/60;for(var E=-1,U=0;U<R.length;U++){var N=R[U].measureNumber;E!==N&&this.tempoLocations[N]&&(H=this.tempoLocations[N],p=f*this.getBeatLength()*H/60,E=N);var L=R[U].elem,I=this.addElementToEvents(v,L,j,R[U].top,R[U].height,R[U].line,R[U].measureNumber,p,S,q);S=I.isTiedState,q=I.nextIsBar,A+=I.duration;var T;if(L.duration>0&&v["event"+j]&&(T="event"+j),j=Math.round(A*1e3),L.type==="bar"){var F=L.abcelem.type,z=F==="bar_right_repeat"||F==="bar_dbl_repeat",D=L.abcelem.startEnding==="1",Q=F==="bar_left_repeat"||F==="bar_dbl_repeat"||F==="bar_right_repeat";if(z){U>0&&(v[T].endX=L.x),C===-1&&(C=U);var X=0;E=-1;for(var Z=G;Z<C;Z++){N=R[Z].measureNumber,E!==N&&this.tempoLocations[N]&&(H=this.tempoLocations[N],p=f*this.getBeatLength()*H/60,E=N);var ue=R[Z].elem;I=this.addElementToEvents(v,ue,j,R[Z].top,R[Z].height,R[Z].line,R[Z].measureNumber,p,S,q),S=I.isTiedState,q=I.nextIsBar,A+=I.duration,X=j,j=Math.round(A*1e3)}v["event"+X]&&(v["event"+X].endX=R[C].elem.x),q=!0,C=-1}D&&(C=U),Q&&(G=U)}}P=Math.max(P,j)}return _=d(v),c(_),h(this.lines,_),_.push({type:"end",milliseconds:P}),this.addUsefulCallbackInfo(_,H*f),_},this.addUsefulCallbackInfo=function(m,p){for(var u=this.millisecondsPerMeasure(p),f=0;f<m.length;f++){var _=m[f];_.millisecondsPerMeasure=u}};function g(m,p){for(;p<m.length&&m[p].left===null;)p++;return m[p]}function h(m,p){if(!(p.length<1)){for(var u=0;u<p.length-1;u++){var f=p[u],_=g(p,u+1);if(f.left!==null){var v=_&&f.top===_.top?_.left:m[f.line].staffGroup.w;f.endX!==void 0?v>f.left&&(f.endX=Math.min(f.endX,v)):f.endX=v}}var y=p[p.length-1];y.endX=m[y.line].staffGroup.w}}this.getBpm=function(m){var p;if(m||(m=this.metaText?this.metaText.tempo:null),m){p=m.bpm;var u=this.getBeatLength(),f=m.duration&&m.duration.length>0?m.duration[0]:u;p=p*f/u}if(!p){p=180;var _=this.getMeterFraction();_&&_.num!==3&&_.num%3===0&&(p=120)}return p},this.setTiming=function(m,p){if(p=p||0,!this.engraver||!this.engraver.staffgroups)return console.log("setTiming cannot be called before the tune is drawn."),this.noteTimings=[],this.noteTimings;var u=this.metaText?this.metaText.tempo:null,f=this.getBpm(u),_=1;m?u&&(_=m/f):m=f;var v=this.getBeatLength(),y=m/60,S=this.getBarLength(),q=S/v*p/y;q&&(q-=this.getPickupLength()/v/y);var M=v*y;return this.noteTimings=this.setupEvents(q,M,m,_),this.noteTimings.length>0?(this.totalTime=this.noteTimings[this.noteTimings.length-1].milliseconds/1e3,this.totalBeats=this.totalTime*y):(this.totalTime=void 0,this.totalBeats=void 0),this.noteTimings},this.setUpAudio=function(m){m||(m={});var p=i(this,m);return n(p,m,this.formatting.percmap,this.formatting.midi)},this.deline=function(m){return s(this.lines,m)},this.findSelectableElement=function(m){return this.engraver&&this.engraver.selectables?this.engraver.findSelectableElement(m):null},this.getSelectableArray=function(){return this.engraver&&this.engraver.selectables?this.engraver.selectables:[]}};return ng=r,ng}var sg,kw;function yE(){if(kw)return sg;kw=1;var a=V0(),t=function(C){var R=this,H={},E="";C.reset(),this.setVisualTranspose=function(U){U!==void 0&&(C.visualTranspose=U)},this.cleanUp=function(U,N,L){p(C),delete C.runningFonts,n(C),C.metaText.tempo&&C.metaText.tempo.bpm&&!C.metaText.tempo.duration&&(C.metaText.tempo.duration=[C.getBeatLength()]),G(C);var I=!1,T,F,z;for(T=0;T<C.lines.length;T++)if(C.lines[T].staff!==void 0){var D=!1;for(F=0;F<C.lines[T].staff.length;F++)if(C.lines[T].staff[F]===void 0)I=!0,C.lines[T].staff[F]=null;else for(z=0;z<C.lines[T].staff[F].voices.length;z++)C.lines[T].staff[F].voices[z]===void 0?C.lines[T].staff[F].voices[z]=[]:u(C.lines[T].staff[F].voices[z])&&(D=!0);D||(C.lines[T]=null,I=!0)}if(I&&(C.lines=C.lines.filter(function(Ce){return!!Ce}),C.lines.forEach(function(Ce){Ce.staff&&(Ce.staff=Ce.staff.filter(function(ce){return!!ce}))})),U)for(;c(C.lines,U););if(N){for(I=!1,T=0;T<C.lines.length;T++)if(C.lines[T].staff!==void 0)for(F=0;F<C.lines[T].staff.length;F++){var Q=!1;for(z=0;z<C.lines[T].staff[F].voices.length;z++)f(C.lines[T].staff[F].voices[z])&&(Q=!0);Q||(I=!0,C.lines[T].staff[F]=null)}I&&C.lines.forEach(function(Ce){Ce.staff&&(Ce.staff=Ce.staff.filter(function(ce){return!!ce}))})}for(o(C.lines),T=0;T<C.lines.length;T++)if(C.lines[T].staff)for(F=0;F<C.lines[T].staff.length;F++)delete C.lines[T].staff[F].workingClef;for(var X=!1;s(C);)X=!0;if(X)for(var Z=0,ue=A(C.lines,Z);ue!=="not-found";)ue=A(C.lines,Z),ue?Z++:j(C.lines,Z);for(var T=0;T<C.lines.length;T++){var de=C.lines[T].staff;if(de)for(C.staffNum=0;C.staffNum<de.length;C.staffNum++)for(de[C.staffNum].clef&&a.fixClef(de[C.staffNum].clef),C.voiceNum=0;C.voiceNum<de[C.staffNum].voices.length;C.voiceNum++){var ae=de[C.staffNum].voices[C.voiceNum];l(ae,C.staffNum,C.voiceNum,L);for(var V=0;V<ae.length;V++)ae[V].el_type==="clef"&&a.fixClef(ae[V]);if(ae.length>0&&ae[ae.length-1].barNumber){var pe=g(C.lines,T);pe&&(pe.staff[0].barNumber=ae[ae.length-1].barNumber),delete ae[ae.length-1].barNumber}}}return delete C.staffNum,delete C.voiceNum,delete C.lineNum,delete C.potentialStartBeam,delete C.potentialEndBeam,delete C.vskipPending,L},this.addTieToLastNote=function(U){var N=h(C);return N&&N.pitches&&N.pitches.length>0?(N.pitches[0].startTie={},U&&(N.pitches[0].startTie.style="dotted"),!0):!1},this.appendElement=function(U,N,L,I){if(I.el_type=U,N!==null&&(I.startChar=N),L!==null&&(I.endChar=L),U==="note"){var T=m(I);T>=.25||I.force_end_beam_last&&C.potentialStartBeam!==void 0?S(C):I.end_beam&&C.potentialStartBeam!==void 0?I.rest===void 0?y(I,C):S(C):I.rest===void 0&&(C.potentialStartBeam===void 0?I.end_beam||(C.potentialStartBeam=I,delete C.potentialEndBeam):C.potentialEndBeam=I)}else S(C);return delete I.end_beam,delete I.force_end_beam_last,I.rest&&I.rest.type==="invisible"&&delete I.decoration,C.lines.length<=C.lineNum||C.lines[C.lineNum].staff.length<=C.staffNum?!1:(v(R,C,I,H,E),!0)},this.appendStartingElement=function(U,N,L,I){p(C);var T;U==="key"&&(T=I.impliedNaturals,delete I.impliedNaturals,delete I.explicitAccidentals);var F=Object.assign({},I);if(C.lines[C.lineNum]){var z=C.lines[C.lineNum].staff;if(z){z.length<=C.staffNum&&(z[C.staffNum]={},z[C.staffNum].clef=Object.assign({},z[0].clef),z[C.staffNum].key=Object.assign({},z[0].key),z[0].meter&&(z[C.staffNum].meter=Object.assign({},z[0].meter)),z[C.staffNum].workingClef=Object.assign({},z[0].workingClef),z[C.staffNum].voices=[[]]),U==="clef"&&(z[C.staffNum].workingClef=F);for(var D=z[C.staffNum].voices[C.voiceNum],Q=0;Q<D.length;Q++){if(D[Q].el_type==="note"||D[Q].el_type==="bar"){F.el_type=U,F.startChar=N,F.endChar=L,T&&(F.accidentals=T.concat(F.accidentals)),D.push(F);return}if(D[Q].el_type===U){F.el_type=U,F.startChar=N,F.endChar=L,T&&(F.accidentals=T.concat(F.accidentals)),D[Q]=F;return}}z[C.staffNum][U]=I}}},this.addSubtitle=function(U,N){_(C,{subtitle:{text:U,startChar:N.startChar,endChar:N.endChar}})},this.addSpacing=function(U){C.vskipPending=U},this.addNewPage=function(U){_(C,{newpage:U})},this.addSeparator=function(U,N,L,I){_(C,{separator:{spaceAbove:Math.round(U),spaceBelow:Math.round(N),lineLength:Math.round(L),startChar:I.startChar,endChar:I.endChar}})},this.addText=function(U,N){_(C,{text:{text:U,startChar:N.startChar,endChar:N.endChar}})},this.addCentered=function(U){_(C,{text:[{text:U,center:!0}]})},this.changeVoiceScale=function(U){R.appendElement("scale",null,null,{size:U})},this.changeVoiceColor=function(U){R.appendElement("color",null,null,{color:U})},this.startNewLine=function(U){p(C),U.currentVoiceName&&(E=U.currentVoiceName,H[U.currentVoiceName]=U),C.lines[C.lineNum]===void 0?B(R,C,U):C.lines[C.lineNum].staff===void 0?(C.lineNum++,this.startNewLine(U)):C.lines[C.lineNum].staff[C.staffNum]===void 0?P(R,C,U):C.lines[C.lineNum].staff[C.staffNum].voices[C.voiceNum]===void 0?M(R,C,U):u(C.lines[C.lineNum].staff[C.staffNum].voices[C.voiceNum])?(C.lineNum++,this.startNewLine(U)):U.part&&R.appendElement("part",U.part.startChar,U.part.endChar,{title:U.part.title})},this.setRunningFont=function(U,N){C.runningFonts[U]=N},this.setBarNumberImmediate=function(U){var N=this.getCurrentVoice();if(N&&N.length>0){var L=N[N.length-1];if(L.el_type==="bar")L.barNumber!==void 0&&(L.barNumber=U);else return U-1}return U},this.hasBeginMusic=function(){for(var U=0;U<C.lines.length;U++)if(C.lines[U].staff)return!0;return!1},this.isFirstLine=function(U){for(var N=U-1;N>=0;N--)if(C.lines[N].staff!==void 0)return!1;return!0},this.getCurrentVoice=function(){var U=d(C.lines,C.lineNum);if(!U)return null;var N=U.staff[C.staffNum];return N&&N.voices[C.voiceNum]!==void 0?N.voices[C.voiceNum]:null},this.setCurrentVoice=function(U,N,L){C.staffNum=U,C.voiceNum=N,E=L;for(var I=0;I<C.lines.length;I++)if(C.lines[I].staff&&(C.lines[I].staff[U]===void 0||C.lines[I].staff[U].voices[N]===void 0||!u(C.lines[I].staff[U].voices[N])))return C.lineNum=I,!!(!C.lines[I].staff[U]||C.lines[I].staff[U].voices[N]);return C.lineNum=I,!1},this.addMetaText=function(U,N,L){C.metaText[U]===void 0?(C.metaText[U]=N,C.metaTextInfo[U]=L):(typeof C.metaText[U]=="string"&&typeof N=="string"?C.metaText[U]+=`
|
||
`+N:(C.metaText[U]==="string"&&(C.metaText[U]=[{text:C.metaText[U]}]),typeof N=="string"&&(N=[{text:N}]),C.metaText[U]=C.metaText[U].concat(N)),C.metaTextInfo[U].endChar=L.endChar)},this.addMetaTextArray=function(U,N,L){C.metaText[U]===void 0?(C.metaText[U]=[N],C.metaTextInfo[U]=L):(C.metaText[U].push(N),C.metaTextInfo[U].endChar=L.endChar)},this.addMetaTextObj=function(U,N,L){C.metaText[U]=N,C.metaTextInfo[U]=L}};function i(C){if(!C||typeof C=="string")return!1;for(var R=0;R<C.length;R++)if(typeof C[R]!="string")return!1;return!0}function n(C){i(C.metaText.notes)&&(C.metaText.notes=C.metaText.notes.join(`
|
||
`)),i(C.metaText.history)&&(C.metaText.history=C.metaText.history.join(`
|
||
`))}function s(C){for(var R=!1,H=0;H<C.lines.length;H++){var E=C.lines[H];if(E.staff)for(var U=0;U<E.staff.length;U++){for(var N=E.staff[U],L=[],I=0;I<N.voices.length;I++){var T=N.voices[I];L.push({hasOverlay:!1,voice:[],snip:[]});for(var F=0,z=!1,D=-1,Q=0;Q<T.length;Q++){var X=T[Q];if(X.el_type==="overlay"&&!z){R=!0,z=!0,D=Q,L[I].hasOverlay=!0;for(var Z=0;Z<H;Z++)C.lines[Z].staff&&C.lines[Z].staff.forEach(Ce=>{N.voices.length>=Ce.voices.length&&Ce.voices.forEach(ce=>{let Te=[];ce.forEach(ye=>{ye.el_type==="bar"?Te.push(ye):ye.el_type==="note"&&Te.push({el_type:"note",duration:ye.duration,rest:{type:"invisible"},startChar:ye.startChar,endChar:ye.endChar})}),Ce.voices.push(Te)})})}else X.el_type==="bar"?(z?(z=!1,L[I].snip.push({start:D,len:Q-D}),L[I].voice.push(X)):(F>0&&L[I].voice.push({el_type:"note",duration:F,rest:{type:"invisible"},startChar:X.startChar,endChar:X.endChar}),L[I].voice.push(X)),F=0):X.el_type==="note"?z?L[I].voice.push(X):(!X.rest||X.rest.type!=="spacer")&&(F+=X.duration):(X.el_type==="scale"||X.el_type==="stem"||X.el_type==="overlay"||X.el_type==="style"||X.el_type==="transpose"||X.el_type==="color")&&L[I].voice.push(X)}L[I].hasOverlay&&L[I].snip.length===0&&L[I].snip.push({start:D,len:T.length-D})}for(I=0;I<L.length;I++){var ue=L[I];if(ue.hasOverlay){ue.voice.splice(0,0,{el_type:"stem",direction:"down"}),N.voices.push(ue.voice);for(var de=ue.snip.length-1;de>=0;de--){var ae=ue.snip[de];N.voices[I].splice(ae.start,ae.len),N.voices[I].splice(ae.start+1,0,{el_type:"stem",direction:"auto"});var V=r(N.voices[I],ae.start);N.voices[I].splice(V,0,{el_type:"stem",direction:"up"})}for(de=0;de<N.voices[N.voices.length-1].length;de++){N.voices[N.voices.length-1][de]=Object.assign({},N.voices[N.voices.length-1][de]);var pe=N.voices[N.voices.length-1][de];pe.el_type==="bar"&&pe.startEnding&&delete pe.startEnding,pe.el_type==="bar"&&pe.endEnding&&delete pe.endEnding}}}}}return R}function r(C,R){for(var H=R-1;H>0&&C[H].el_type!=="bar";H--);return H}function o(C){for(var R=!0,H=0;H<C.length;H++){var E=C[H];if(E.staff){for(var U=0;U<E.staff.length;U++){var N=E.staff[U];if(N.title){for(var L=!1,I=0;I<N.title.length;I++)N.title[I]?(N.title[I]=R?N.title[I].name:N.title[I].subname,N.title[I]?L=!0:N.title[I]=""):N.title[I]="";L||delete N.title}}R=!1}}}function l(C,R,H,E){E[R]||(E[R]=[]),E[R][H]||(E[R][H]=[]);for(var U,N=function(ae,V,pe){if(E[R][H][pe]===void 0){for(U=0;U<E[R][H].length;U++)if(E[R][H][U]!==void 0){pe=U;break}if(E[R][H][pe]===void 0){var Ce=pe*100+1;ae.endSlur.forEach(function(ye){Ce===ye&&--Ce}),E[R][H][pe]=[Ce]}}for(var ce,Te=0;Te<V;Te++)ce=E[R][H][pe].pop(),ae.endSlur.push(ce);return E[R][H][pe].length===0&&delete E[R][H][pe],ce},L=function(ae,V,pe,Ce){ae.startSlur=[],E[R][H][pe]===void 0&&(E[R][H][pe]=[]);for(var ce=pe*100+1,Te=0;Te<V;Te++)Ce&&(Ce.forEach(function(ye){ce===ye&&++ce}),Ce.forEach(function(ye){ce===ye&&++ce}),Ce.forEach(function(ye){ce===ye&&++ce})),E[R][H][pe].forEach(function(ye){ce===ye&&++ce}),E[R][H][pe].forEach(function(ye){ce===ye&&++ce}),E[R][H][pe].push(ce),ae.startSlur.push({label:ce}),ae.dottedSlur&&(ae.startSlur[ae.startSlur.length-1].style="dotted",delete ae.dottedSlur),ce++},I=0;I<C.length;I++){var T=C[I];if(T.el_type==="note"){if(T.gracenotes)for(var F=0;F<T.gracenotes.length;F++){if(T.gracenotes[F].endSlur){var z=T.gracenotes[F].endSlur;T.gracenotes[F].endSlur=[];for(var D=0;D<z;D++)N(T.gracenotes[F],1,20)}T.gracenotes[F].startSlur&&(U=T.gracenotes[F].startSlur,L(T.gracenotes[F],U,20))}if(T.endSlur&&(U=T.endSlur,T.endSlur=[],N(T,U,0)),T.startSlur&&(U=T.startSlur,L(T,U,0)),T.pitches){for(var Q=[],X=0;X<T.pitches.length;X++)if(T.pitches[X].endSlur){var Z=T.pitches[X].endSlur;T.pitches[X].endSlur=[];for(var ue=0;ue<Z;ue++){var de=N(T.pitches[X],1,X+1);Q.push(de)}}for(X=0;X<T.pitches.length;X++)T.pitches[X].startSlur&&(U=T.pitches[X].startSlur,L(T.pitches[X],U,X+1,Q));T.gracenotes&&T.pitches[0].endSlur&&T.pitches[0].endSlur[0]===100&&T.pitches[0].startSlur&&(T.gracenotes[0].endSlur?T.gracenotes[0].endSlur.push(T.pitches[0].startSlur[0].label):T.gracenotes[0].endSlur=[T.pitches[0].startSlur[0].label],T.pitches[0].endSlur.length===1?delete T.pitches[0].endSlur:T.pitches[0].endSlur[0]===100?T.pitches[0].endSlur.shift():T.pitches[0].endSlur[T.pitches[0].endSlur.length-1]===100&&T.pitches[0].endSlur.pop(),E[R][H][1].length===1?delete E[R][H][1]:E[R][H][1].pop())}}}}function c(C,R){for(var H=0;H<C.length;H++)if(C[H].staff!==void 0)for(var E=0;E<C[H].staff.length;E++)for(var U=[],N=0;N<C[H].staff[E].voices.length;N++)for(var L=C[H].staff[E].voices[N],I=0,T=0;T<L.length;T++)if(L[T].el_type==="bar"){if(I++,I>=R&&T<L.length-1){var F=g(C,H);if(!F){var z=JSON.parse(JSON.stringify(C[H]));C.push(Object.assign({},z)),F=C[C.length-1];for(var D=0;D<F.staff.length;D++)for(var Q=0;Q<F.staff[D].voices.length;Q++)F.staff[D].voices[Q]=[]}var X=T+1,Z=C[H].staff[E].voices[N].slice(X);return C[H].staff[E].voices[N]=C[H].staff[E].voices[N].slice(0,X),F.staff[E].voices[N]=U.concat(Z.concat(F.staff[E].voices[N])),!0}}else L[T].duration||U.push(L[T]);return!1}function d(C,R){if(C.length<=R)return null;for(;R>=0;){if(C[R].staff)return C[R];R--}return null}function g(C,R){for(R++;C.length>R;){if(C[R].staff)return C[R];R++}return null}function h(C){if(!C.lines[C.lineNum]||!C.lines[C.lineNum].staff||!C.lines[C.lineNum].staff[C.staffNum])return null;var R=C.lines[C.lineNum].staff[C.staffNum].voices[C.voiceNum];if(!R)return null;for(var H=R.length-1;H>=0;H--){var E=R[H];if(E.el_type==="note")return E}return null}function m(C){return C.duration?C.duration:0}function p(C){C.potentialStartBeam&&C.potentialEndBeam&&(C.potentialStartBeam.startBeam=!0,C.potentialEndBeam.endBeam=!0),delete C.potentialStartBeam,delete C.potentialEndBeam}function u(C){for(var R=0;R<C.length;R++)if(C[R].el_type==="note"||C[R].el_type==="bar")return!0;return!1}function f(C){for(var R=0;R<C.length;R++)if(C[R].el_type==="note"&&(C[R].rest===void 0||C[R].chord!==void 0))return!0;return!1}function _(C,R){C.vskipPending&&(R.vskip=C.vskipPending,delete C.vskipPending),C.lines.push(R)}function v(C,R,H,E,U){var N=R.lines[R.lineNum].staff[R.staffNum];if(H.pitches!==void 0){var L=N.workingClef.verticalPos;H.pitches.forEach(function(T){T.verticalPos=T.pitch-L})}if(H.gracenotes!==void 0){var I=N.workingClef.verticalPos;H.gracenotes.forEach(function(T){T.verticalPos=T.pitch-I})}N.voices.length<=R.voiceNum&&(E[U]||(E[U]={}),M(C,R,E[U])),N.voices[R.voiceNum].push(H)}function y(C,R){R.potentialStartBeam.startBeam=!0,C.endBeam=!0,delete R.potentialStartBeam,delete R.potentialEndBeam}function S(C){C.potentialStartBeam!==void 0&&C.potentialEndBeam!==void 0&&(C.potentialStartBeam.startBeam=!0,C.potentialEndBeam.endBeam=!0),delete C.potentialStartBeam,delete C.potentialEndBeam}function q(C,R,H){if(C.runningFonts[R]){for(var E=!1,U=Object.keys(H),N=0;N<U.length;N++)C.runningFonts[R][U[N]]!==H[U[N]]&&(E=!0);E&&(C.lines[C.lineNum].staff[C.staffNum][R]=H)}C.runningFonts[R]=H}function M(C,R,H){var E=R.lines[R.lineNum].staff[R.staffNum];if(E.voices[R.voiceNum]=[],E.title||(E.title=[]),E.title[R.voiceNum]={name:H.name,subname:H.subname},H.style&&C.appendElement("style",null,null,{head:H.style}),H.stem)C.appendElement("stem",null,null,{direction:H.stem});else if(R.voiceNum>0){if(E.voices[0]!==void 0){for(var U=!1,N=0;N<E.voices[0].length;N++)E.voices[0].el_type==="stem"&&(U=!0);if(!U){var L={el_type:"stem",direction:"up"};E.voices[0].splice(0,0,L)}}C.appendElement("stem",null,null,{direction:"down"})}H.scale&&C.appendElement("scale",null,null,{size:H.scale}),H.color&&C.appendElement("color",null,null,{color:H.color})}function P(C,R,H){H.key&&H.key.impliedNaturals&&(H.key.accidentals=H.key.accidentals.concat(H.key.impliedNaturals),delete H.key.impliedNaturals),R.lines[R.lineNum].staff[R.staffNum]={voices:[],clef:H.clef,key:H.key,workingClef:H.clef};var E=R.lines[R.lineNum].staff[R.staffNum];H.stafflines!==void 0&&(E.clef.stafflines=H.stafflines,E.workingClef.stafflines=H.stafflines),H.staffscale&&(E.staffscale=H.staffscale),H.annotationfont&&q(R,"annotationfont",H.annotationfont),H.gchordfont&&q(R,"gchordfont",H.gchordfont),H.tripletfont&&q(R,"tripletfont",H.tripletfont),H.vocalfont&&q(R,"vocalfont",H.vocalfont),H.bracket&&(E.bracket=H.bracket),H.brace&&(E.brace=H.brace),H.connectBarLines&&(E.connectBarLines=H.connectBarLines),H.barNumber&&(E.barNumber=H.barNumber),M(C,R,H),H.part&&C.appendElement("part",H.part.startChar,H.part.endChar,{title:H.part.title}),H.meter!==void 0&&(E.meter=H.meter),R.vskipPending&&(R.lines[R.lineNum].vskip=R.vskipPending,delete R.vskipPending)}function B(C,R,H){R.lines[R.lineNum]={staff:[]},P(C,R,H)}function A(C,R){for(var H=!1,E=!1,U=0;U<C.length;U++){var N=C[U].staff;if(N)for(var L=0;L<N.length;L++){var I=N[L];if(R<I.voices.length){E=!0;for(var T=I.voices[R],F=0;F<T.length;F++){var z=T[F];z.el_type==="note"&&(!z.rest||z.chord)&&(H=!0)}}}}return E?H:"not-found"}function j(C,R){for(var H=0;H<C.length;H++){var E=C[H].staff;if(E)for(var U=0;U<E.length;U++){var N=E[U];R<N.voices.length&&N.voices.splice(R,1)}}}function G(C){for(var R=1;R<C.lines.length;R++){var H=C.lines[R];if(H.subtitle){var E=C.lines[R-1];if(E.staff)for(var U=0;U<E.staff.length;U++)for(var N=0;N<E.staff[U].voices.length;N++){var L=E.staff[U].voices[N];if(L[L.length-1].el_type==="key"){L.pop();for(var I=C.lines[R];R<C.lines.length&&!I.staff;)R++,I=C.lines[R];if(I)for(var T=0;T<I.staff.length;T++){for(var F=I.staff[T].key.accidentals,z=[],D=0;D<F.length;D++)F[D].acc!=="natural"&&z.push(F[D]);I.staff[T].key.accidentals=z}}}}}}return sg=t,sg}var rg,xw;function og(){if(xw)return rg;xw=1;var a=Vr(),t=P0(),i=uE(),n=pE(),s=mE(),r=cw(),o=gE(),l=ww(),c=yE(),d=function(){var g=new l,h=new c(g),m,p="",u="";this.getTune=function(){var E={formatting:g.formatting,lines:g.lines,media:g.media,metaText:g.metaText,metaTextInfo:g.metaTextInfo,version:g.version,addElementToEvents:g.addElementToEvents,addUsefulCallbackInfo:g.addUsefulCallbackInfo,getTotalTime:g.getTotalTime,getTotalBeats:g.getTotalBeats,getBarLength:g.getBarLength,getBeatLength:g.getBeatLength,getBeatsPerMeasure:g.getBeatsPerMeasure,getBpm:g.getBpm,getMeter:g.getMeter,getMeterFraction:g.getMeterFraction,getPickupLength:g.getPickupLength,getKeySignature:g.getKeySignature,getElementFromChar:g.getElementFromChar,makeVoicesArray:g.makeVoicesArray,millisecondsPerMeasure:g.millisecondsPerMeasure,setupEvents:g.setupEvents,setTiming:g.setTiming,setUpAudio:g.setUpAudio,deline:g.deline,findSelectableElement:g.findSelectableElement,getSelectableArray:g.getSelectableArray};return g.lineBreaks&&(E.lineBreaks=g.lineBreaks),g.visualTranspose&&(E.visualTranspose=g.visualTranspose),g.chordGrid&&(E.chordGrid=g.chordGrid),E};function f(E,U,N){E.positioning||(E.positioning={}),E.positioning[U]=N}function _(E,U,N){E.fonts||(E.fonts={}),E.fonts[U]=N}var v={reset:function(){for(var E in this)this.hasOwnProperty(E)&&typeof this[E]!="function"&&delete this[E];this.iChar=0,this.key={accidentals:[],root:"none",acc:"",mode:""},this.meter=null,this.origMeter=null,this.hasMainTitle=!1,this.default_length=.125,this.clef={type:"treble",verticalPos:0},this.octave=0,this.next_note_duration=0,this.start_new_line=!0,this.is_in_header=!0,this.partForNextLine={},this.tempoForNextLine=[],this.havent_set_length=!0,this.voices={},this.staves=[],this.macros={},this.currBarNumber=1,this.barCounter={},this.ignoredDecorations=[],this.score_is_present=!1,this.inEnding=!1,this.inTie=[],this.inTieChord={},this.vocalPosition="auto",this.dynamicPosition="auto",this.chordPosition="auto",this.ornamentPosition="auto",this.volumePosition="auto",this.openSlurs=[],this.freegchord=!1,this.endingHoldOver={}},differentFont:function(E,U){return this[E].decoration!==U[E].decoration||this[E].face!==U[E].face||this[E].size!==U[E].size||this[E].style!==U[E].style||this[E].weight!==U[E].weight},addFormattingOptions:function(E,U,N){N==="note"?(this.vocalPosition!=="auto"&&f(E,"vocalPosition",this.vocalPosition),this.dynamicPosition!=="auto"&&f(E,"dynamicPosition",this.dynamicPosition),this.chordPosition!=="auto"&&f(E,"chordPosition",this.chordPosition),this.ornamentPosition!=="auto"&&f(E,"ornamentPosition",this.ornamentPosition),this.volumePosition!=="auto"&&f(E,"volumePosition",this.volumePosition),this.differentFont("annotationfont",U)&&_(E,"annotationfont",this.annotationfont),this.differentFont("gchordfont",U)&&_(E,"gchordfont",this.gchordfont),this.differentFont("vocalfont",U)&&_(E,"vocalfont",this.vocalfont),this.differentFont("tripletfont",U)&&_(E,"tripletfont",this.tripletfont)):N==="bar"&&(this.dynamicPosition!=="auto"&&f(E,"dynamicPosition",this.dynamicPosition),this.chordPosition!=="auto"&&f(E,"chordPosition",this.chordPosition),this.ornamentPosition!=="auto"&&f(E,"ornamentPosition",this.ornamentPosition),this.volumePosition!=="auto"&&f(E,"volumePosition",this.volumePosition),this.differentFont("measurefont",U)&&_(E,"measurefont",this.measurefont),this.differentFont("repeatfont",U)&&_(E,"repeatfont",this.repeatfont))},duplicateStartEndingHoldOvers:function(){this.endingHoldOver={inTie:[],inTieChord:{}};for(var E=0;E<this.inTie.length;E++)if(this.endingHoldOver.inTie.push([]),this.inTie[E])for(var U=0;U<this.inTie[E].length;U++)this.endingHoldOver.inTie[E].push(this.inTie[E][U]);for(var N in this.inTieChord)this.inTieChord.hasOwnProperty(N)&&(this.endingHoldOver.inTieChord[N]=this.inTieChord[N])},restoreStartEndingHoldOvers:function(){if(this.endingHoldOver.inTie){this.inTie=[],this.inTieChord={};for(var E=0;E<this.endingHoldOver.inTie.length;E++){this.inTie.push([]);for(var U=0;U<this.endingHoldOver.inTie[E].length;U++)this.inTie[E].push(this.endingHoldOver.inTie[E][U])}for(var N in this.endingHoldOver.inTieChord)this.endingHoldOver.inTieChord.hasOwnProperty(N)&&(this.inTieChord[N]=this.endingHoldOver.inTieChord[N])}}},y=function(E){v.warnings||(v.warnings=[]),v.warnings.push(E)},S=function(E){v.warningObjects||(v.warningObjects=[]),v.warningObjects.push(E)},q=function(E){var U=E.replace(/\x12/g," ");return U=U.replace(/&/g,"&"),U=U.replace(/</g,"<"),U.replace(/>/g,">")},M=function(E,U,N){U||(U=" ");var L=U[N];(L===" "||!L)&&(L="SPACE");var I=q(U.substring(N-64,N))+'<span style="text-decoration:underline;font-size:1.3em;font-weight:bold;">'+L+"</span>"+q(U.substring(N+1).substring(0,64));y("Music Line:"+m.lineIndex+":"+(N+1)+": "+E+": "+I),S({message:E,line:U,startChar:v.iChar+N,column:N})},P,B;this.getWarnings=function(){return v.warnings},this.getWarningObjects=function(){return v.warningObjects};var A=function(E,U){if(U.indexOf("")>=0){p+=U;return}if(U=p+U,p="",!E){M("Can't add words before the first line of music",E,0);return}U=a.strip(U),U[U.length-1]!=="-"&&(U=U+" ");for(var N=[],L=0,I=!1,T=function(D){var Q=a.strip(U.substring(L,D));if(Q=Q.replace(/\\([-_*|~])/g,"$1"),L=D+1,Q.length>0){I&&(Q=Q.replace(/~/g," "));var X=U[D];return X!=="_"&&X!=="-"&&(X=" "),N.push({syllable:m.translateString(Q),divider:X}),I=!1,!0}return!1},F=!1,z=0;z<U.length;z++){switch(U[z]){case" ":case"":T(z);break;case"-":!F&&!T(z)&&N.length>0&&(a.last(N).divider="-",N.push({skip:!0,to:"next"}));break;case"_":F||(T(z),N.push({skip:!0,to:"slur"}));break;case"*":F||(T(z),N.push({skip:!0,to:"next"}));break;case"|":F||(T(z),N.push({skip:!0,to:"bar"}));break;case"~":F||(I=!0);break}F=U[z]==="\\"}E.forEach(function(D){if(N.length!==0){if(N[0].skip){switch(N[0].to){case"next":D.el_type==="note"&&D.pitches!==null&&N.shift();break;case"slur":D.el_type==="note"&&D.pitches!==null&&N.shift();break;case"bar":D.el_type==="bar"&&N.shift();break}D.el_type!=="bar"&&(D.lyric===void 0?D.lyric=[{syllable:"",divider:" "}]:D.lyric.push({syllable:"",divider:" "}))}else if(D.el_type==="note"&&D.rest===void 0){var Q=N.shift();Q.syllable&&(Q.syllable=Q.syllable.replace(/ +/g," ")),D.lyric===void 0?D.lyric=[Q]:D.lyric.push(Q)}}})},j=function(E,U){if(U.indexOf("")>=0){u+=U;return}if(U=u+U,u="",!E){M("Can't add symbols before the first line of music",E,0);return}U=a.strip(U),U[U.length-1]!=="-"&&(U=U+" ");for(var N=[],L=0,I=!1,T=function(z){var D=a.strip(U.substring(L,z));if(L=z+1,D.length>0){I&&(D=D.replace(/~/g," "));var Q=U[z];return Q!=="_"&&Q!=="-"&&(Q=" "),N.push({syllable:m.translateString(D),divider:Q}),I=!1,!0}return!1},F=0;F<U.length;F++)switch(U[F]){case" ":case"":T(F);break;case"-":!T(F)&&N.length>0&&(a.last(N).divider="-",N.push({skip:!0,to:"next"}));break;case"_":T(F),N.push({skip:!0,to:"slur"});break;case"*":T(F),N.push({skip:!0,to:"next"});break;case"|":T(F),N.push({skip:!0,to:"bar"});break;case"~":I=!0;break}E.forEach(function(z){if(N.length!==0){if(N[0].skip)switch(N[0].to){case"next":z.el_type==="note"&&z.pitches!==null&&N.shift();break;case"slur":z.el_type==="note"&&z.pitches!==null&&N.shift();break;case"bar":z.el_type==="bar"&&N.shift();break}else if(z.el_type==="note"&&z.rest===void 0){var D=N.shift();z.lyric===void 0?z.lyric=[D]:z.lyric.push(D)}}})},G=function(E){if(a.startsWith(E,"%%")){var U=t.addDirective(E.substring(2));U&&M(U,E,2);return}var N=E.indexOf("%");if(N>=0&&(E=E.substring(0,N)),E=E.replace(/\s+$/,""),E.length!==0){if(p){A(h.getCurrentVoice(),E.substring(2));return}if(u){j(h.getCurrentVoice(),E.substring(2));return}if(E.length<2||E[1]!==":"||B.lineContinuation){B.parseMusic(E);return}var L=P.parseHeader(E);L.regular&&B.parseMusic(E),L.newline&&B.startNewLine(),L.words&&A(h.getCurrentVoice(),E.substring(2)),L.symbols&&j(h.getCurrentVoice(),E.substring(2))}};function C(E,U){E.push({el_type:"hint"});for(var N=0;N<U.length;N++){var L=U[N],I=Object.assign({},L);if(E.push(I),L.el_type==="bar")return}}function R(E,U){for(var N=0;N<E.length;N++){var L=E[N],I=U[N];if(I)for(var T=0;T<I.voices.length;T++){var F=I.voices[T],z=L.voices[T];z&&C(z,F)}}}function H(){for(var E=0;E<g.lines.length;E++){var U=g.lines[E].staff;if(U){for(var N=E+1;N<g.lines.length&&g.lines[N].staff===void 0;)N++;if(N<g.lines.length){var L=g.lines[N].staff;R(U,L)}}}}this.parse=function(E,U,N){U||(U={}),N||(N=0),g.reset(),E=E.replace(/\r\n?/g,`
|
||
`)+`
|
||
`;var L=E.split(`
|
||
\\`);if(L.length>1){for(var I=1;I<L.length;I++)for(;L[I].length>0&&L[I][0]!==`
|
||
`;)L[I]=L[I].substr(1),L[I-1]+=" ";E=L.join(" ")}E=E.replace(/\\%/g,"%"),E=E.replace(/\\([ \t]*)(%.*)*\n/g,function(Z,ue,de){var ae=de?Array(de.length+1).join(" "):"";return ue+""+ae+`
|
||
`});var T=E.split(`
|
||
`);a.last(T).length===0&&T.pop(),m=new s(T,v),P=new i(m,M,v,g,h),B=new n(m,M,v,g,h,P),U.print&&(g.media="print"),v.reset(),v.iChar=N,U.visualTranspose?(v.globalTranspose=parseInt(U.visualTranspose),v.globalTranspose===0?v.globalTranspose=void 0:h.setVisualTranspose(U.visualTranspose)):v.globalTranspose=void 0,U.lineBreaks&&(v.lineBreaks=U.lineBreaks),P.reset(m,M,v,g);try{U.format&&t.globalFormatting(U.format);for(var F=m.nextLine();F;){if(U.header_only&&v.is_in_header===!1||U.stop_on_warning&&v.warnings)throw"normal_abort";var z=v.is_in_header;G(F),z&&!v.is_in_header&&(h.setRunningFont("annotationfont",v.annotationfont),h.setRunningFont("gchordfont",v.gchordfont),h.setRunningFont("tripletfont",v.tripletfont),h.setRunningFont("vocalfont",v.vocalfont)),F=m.nextLine()}p&&A(h.getCurrentVoice(),""),u&&j(h.getCurrentVoice(),""),v.openSlurs=h.cleanUp(v.barsperstaff,v.staffnonote,v.openSlurs)}catch(Z){if(Z!=="normal_abort")throw Z}var D=792,Q=8.5*72;switch(v.papersize){case"legal":D=1008,Q=8.5*72;break;case"A4":D=11.7*72,Q=8.3*72;break}if(v.landscape){var X=D;D=Q,Q=X}if(g.formatting.pagewidth||(g.formatting.pagewidth=Q),g.formatting.pageheight||(g.formatting.pageheight=D),U.hint_measures&&H(),r.wrapLines(g,v.lineBreaks,v.barNumbers),U.chordGrid)try{g.chordGrid=o(g)}catch(Z){switch(Z.message){case"notCommonTime":M("Chord grid only works for 2/2 and 4/4 time.",0,0);break;case"noChords":M("No chords are found in the tune.",0,0);break;default:M(Z.message,0,0)}}}};return rg=d,rg}var lg,Sw;function wE(){if(Sw)return lg;Sw=1;var a=Vr(),t=function(i){var n="",s=i.match(/(\s*)/);i=a.strip(i);for(var r=i.split(`
|
||
X:`),o=1;o<r.length;o++)r[o]="X:"+r[o];var l=s?s[0].length:0,c=[];if(r.forEach(function(m){c.push({abc:m,startPos:l}),l+=m.length+1}),c.length>1&&!a.startsWith(c[0].abc,"X:")){var d=c.shift(),g=d.abc.split(`
|
||
`);g.forEach(function(m){a.startsWith(m,"%%")&&(n+=m+`
|
||
`)})}var h=n;return c.forEach(function(m){var p=m.abc.indexOf(`
|
||
|
||
`);p>0&&(m.abc=m.abc.substring(0,p)),m.pure=m.abc,m.abc=n+m.abc,m.title="";var u=m.pure.split("T:");u.length>1&&(u=u[1].split(`
|
||
`),m.title=a.strip(u[0]));var f=m.pure.substring(2,m.pure.indexOf(`
|
||
`));m.id=a.strip(f)}),{header:h,tunes:c}};return lg=t,lg}var cg,Tw;function kE(){if(Tw)return cg;Tw=1;function a(t,i){this.numLines=t,this.lineSpace=i,this.verticalSize=this.numLines*this.lineSpace;var n=3;this.bar={pitch:n,pitch2:i*t,height:5}}return a.prototype.bypass=function(t){var i=t.staffGroup.voices;return!!(i.length>0&&i[0].isPercussion)},a.prototype.setRelative=function(t,i,n){switch(t.type){case"bar":i.pitch=this.bar.pitch,i.pitch2=this.bar.pitch2,i.height=this.height;break;case"symbol":var s=this.bar.pitch2/2;if(t.name=="dots.dot")return n?(i.pitch=s,!1):(i.pitch=s+this.lineSpace,!0);break}return n},cg=a,cg}var dg,$w;function qw(){if($w)return dg;$w=1;var a=function(i,n){this.children=[],this.beams=[],this.otherchildren=[],this.w=0,this.duplicate=!1,this.voicenumber=i,this.voicetotal=n,this.bottom=7,this.top=7,this.specialY={tempoHeightAbove:0,partHeightAbove:0,volumeHeightAbove:0,dynamicHeightAbove:0,endingHeightAbove:0,chordHeightAbove:0,lyricHeightAbove:0,lyricHeightBelow:0,chordHeightBelow:0,volumeHeightBelow:0,dynamicHeightBelow:0}};return a.prototype.addChild=function(t){if(t.type==="bar"){for(var i=!0,n=0;i&&n<this.children.length;n++)this.children[n].type.indexOf("staff-extra")<0&&this.children[n].type!=="tempo"&&(i=!1);i||(this.beams.push("bar"),this.otherchildren.push("bar"))}this.children[this.children.length]=t,this.setRange(t)},a.prototype.setLimit=function(t,i){var n=i.specialY;n||(n=i),n[t]&&(this.specialY[t]?this.specialY[t]=Math.max(this.specialY[t],n[t]):this.specialY[t]=n[t])},a.prototype.adjustRange=function(t){t.bottom!==void 0&&(this.bottom=Math.min(this.bottom,t.bottom)),t.top!==void 0&&(this.top=Math.max(this.top,t.top))},a.prototype.setRange=function(t){this.adjustRange(t),this.setLimit("tempoHeightAbove",t),this.setLimit("partHeightAbove",t),this.setLimit("volumeHeightAbove",t),this.setLimit("dynamicHeightAbove",t),this.setLimit("endingHeightAbove",t),this.setLimit("chordHeightAbove",t),this.setLimit("lyricHeightAbove",t),this.setLimit("lyricHeightBelow",t),this.setLimit("chordHeightBelow",t),this.setLimit("volumeHeightBelow",t),this.setLimit("dynamicHeightBelow",t)},a.prototype.addOther=function(t){this.otherchildren.push(t),this.setRange(t)},a.prototype.addBeam=function(t){this.beams.push(t)},a.prototype.setWidth=function(t){this.w=t},dg=a,dg}var ug,Aw;function fg(){if(Aw)return ug;Aw=1;var a=function(t,i,n,s){if(t)for(var r=0;r<t.length;r++){var o=t[r],l=o.getAttribute("highlight");l||(l="fill"),o.setAttribute(l,s);var c=o.getAttribute("class");c||(c=""),c=c.replace(n,""),c=c.replace(i,""),i.length>0&&(c.length>0&&c[c.length-1]!==" "&&(c+=" "),c+=i),o.setAttribute("class",c)}};return ug=a,ug}var pg,Cw;function Gw(){if(Cw)return pg;Cw=1;var a=fg(),t=function(i,n){i===void 0&&(i="abcjs-note_selected"),n===void 0&&(n="#ff0000"),a(this.elemset,i,"",n)};return pg=t,pg}var mg,Fw;function Mw(){if(Fw)return mg;Fw=1;var a=fg(),t=function(i,n){i===void 0&&(i="abcjs-note_selected"),n===void 0&&(n="#000000"),a(this.elemset,"",i,n)};return mg=t,mg}var gg,zw;function Wc(){if(zw)return gg;zw=1;var a=Gw(),t=Mw(),i=function(s,r,o,l,c,d){d||(d={}),this.tuneNumber=c,this.abcelem=s,this.duration=r,this.durationClass=d.durationClassOveride?d.durationClassOveride:this.duration,this.minspacing=o||0,this.x=0,this.children=[],this.heads=[],this.extra=[],this.extraw=0,this.w=0,this.right=[],this.invisible=!1,this.bottom=void 0,this.top=void 0,this.type=l,s.extraClass&&(this.extraClass=s.extraClass),this.fixed={w:0,t:void 0,b:void 0},this.specialY={tempoHeightAbove:0,partHeightAbove:0,volumeHeightAbove:0,dynamicHeightAbove:0,endingHeightAbove:0,chordHeightAbove:0,lyricHeightAbove:0,lyricHeightBelow:0,chordHeightBelow:0,volumeHeightBelow:0,dynamicHeightBelow:0}};return i.prototype.getFixedCoords=function(){return{x:this.x,w:this.fixed.w,t:this.fixed.t,b:this.fixed.b}},i.prototype.addExtra=function(n){this.fixed.w=Math.max(this.fixed.w,n.dx+n.w),this.fixed.t===void 0?this.fixed.t=n.top:this.fixed.t=Math.max(this.fixed.t,n.top),this.fixed.b===void 0?this.fixed.b=n.bottom:this.fixed.b=Math.min(this.fixed.b,n.bottom),n.dx<this.extraw&&(this.extraw=n.dx),this.extra[this.extra.length]=n,this._addChild(n)},i.prototype.addHead=function(n){n.dx<this.extraw&&(this.extraw=n.dx),this.heads[this.heads.length]=n,this.addRight(n)},i.prototype.addRight=function(n){this.fixed.w=Math.max(this.fixed.w,n.dx+n.w),n.top!==void 0&&(this.fixed.t===void 0?this.fixed.t=n.top:this.fixed.t=Math.max(this.fixed.t,n.top)),n.bottom!==void 0&&(this.fixed.b===void 0?this.fixed.b=n.bottom:this.fixed.b=Math.min(this.fixed.b,n.bottom)),n.dx+n.w>this.w&&(this.w=n.dx+n.w),this.right[this.right.length]=n,this._addChild(n)},i.prototype.addFixed=function(n){this._addChild(n)},i.prototype.addFixedX=function(n){this._addChild(n)},i.prototype.addCentered=function(n){var s=n.w/2;-s<this.extraw&&(this.extraw=-s),this.extra[this.extra.length]=n,n.dx+s>this.w&&(this.w=n.dx+s),this.right[this.right.length]=n,this._addChild(n)},i.prototype.setLimit=function(n,s){s[n]&&(this.specialY[n]?this.specialY[n]=Math.max(this.specialY[n],s[n]):this.specialY[n]=s[n])},i.prototype._addChild=function(n){var s=!0;this.abcelem.el_type=="clef"&&n.type=="barNumber"&&(s=!1),n.parent=this,this.children[this.children.length]=n,s&&this.pushTop(n.top),this.pushBottom(n.bottom),this.setLimit("tempoHeightAbove",n),this.setLimit("partHeightAbove",n),this.setLimit("volumeHeightAbove",n),this.setLimit("dynamicHeightAbove",n),this.setLimit("endingHeightAbove",n),this.setLimit("chordHeightAbove",n),this.setLimit("lyricHeightAbove",n),this.setLimit("lyricHeightBelow",n),this.setLimit("chordHeightBelow",n),this.setLimit("volumeHeightBelow",n),this.setLimit("dynamicHeightBelow",n)},i.prototype.pushTop=function(n){n!==void 0&&(this.top===void 0?this.top=n:this.top=Math.max(n,this.top))},i.prototype.pushBottom=function(n){n!==void 0&&(this.bottom===void 0?this.bottom=n:this.bottom=Math.min(n,this.bottom))},i.prototype.setX=function(n){this.x=n;for(var s=0;s<this.children.length;s++)this.children[s].setX(n)},i.prototype.center=function(n,s){var r=(s.x-n.x)/2+n.x;this.x=r-this.w/2;for(var o=0;o<this.children.length;o++)this.children[o].setX(this.x)},i.prototype.setHint=function(){this.hint=!0},i.prototype.highlight=function(n,s){a.bind(this)(n,s)},i.prototype.unhighlight=function(n,s){t.bind(this)(n,s)},gg=i,gg}var hg,Ew;function Hr(){if(Ew)return hg;Ew=1;var a=function(i,n,s,r,o){switch(o=o||{},this.x=0,this.c=i,this.dx=n,this.w=s,this.pitch=r,this.scalex=o.scalex||1,this.scaley=o.scaley||1,this.type=o.type||"symbol",this.pitch2=o.pitch2,this.linewidth=o.linewidth,this.klass=o.klass,this.chordPos=o.chordPos,this.anchor=o.anchor?o.anchor:"middle",this.top=r,this.pitch2!==void 0&&this.pitch2>this.top&&(this.top=this.pitch2),this.bottom=r,this.pitch2!==void 0&&this.pitch2<this.bottom&&(this.bottom=this.pitch2),o.thickness&&(this.top+=o.thickness/2,this.bottom-=o.thickness/2),o.stemHeight&&(o.stemHeight>0?this.top+=o.stemHeight:this.bottom+=o.stemHeight),o.dim&&(this.dim=o.dim),o.position&&(this.position=o.position),o.voiceNumber!==void 0&&(this.voiceNumber=o.voiceNumber),this.height=o.height?o.height:4,o.top&&(this.top=o.top),o.bottom&&(this.bottom=o.bottom),o.name?this.name=o.name:this.c?this.name=this.c:this.name=this.type,o.realWidth?this.realWidth=o.realWidth:this.realWidth=this.w,this.centerVertically=!1,this.type){case"debug":this.chordHeightAbove=this.height;break;case"lyric":o.position&&o.position==="below"?this.lyricHeightBelow=this.height:this.lyricHeightAbove=this.height;break;case"chord":o.position&&o.position==="below"?this.chordHeightBelow=this.height:this.chordHeightAbove=this.height;break;case"text":this.pitch===void 0?o.position&&o.position==="below"?this.chordHeightBelow=this.height:this.chordHeightAbove=this.height:this.centerVertically=!0;break;case"part":this.partHeightAbove=this.height;break}};return a.prototype.getChordDim=function(){if(this.type==="debug"||!this.chordHeightAbove&&!this.chordHeightBelow)return null;var t=0,i=this.type==="chord"?this.realWidth/2:0,n=this.x-i-t,s=n+this.realWidth+t;return{left:n,right:s}},a.prototype.invertLane=function(t){this.lane===void 0&&(this.lane=0),this.lane=t-this.lane-1},a.prototype.putChordInLane=function(t){this.lane=t,this.chordHeightAbove?this.chordHeightAbove=this.height*1.25*this.lane:this.chordHeightBelow=this.height*1.25*this.lane},a.prototype.getLane=function(){return this.lane===void 0?0:this.lane},a.prototype.setX=function(t){this.x=t+this.dx},hg=a,hg}var _g,Uw;function xE(){if(Uw)return _g;Uw=1;var a=Wc(),t=Hr();function i(f){return f!=null&&f.constructor===Object}function n(f,_){for(var v in _)_.hasOwnProperty(v)&&(Array.isArray(_[v])||i(_[v])||(f[v]=_[v]))}function s(f){var _=new a("",0,0,"",0);return n(_,f),_.top=0,_.bottom=-1,f.abcelem&&(_.abcelem={},n(_.abcelem,f.abcelem),_.abcelem.el_type==="note"&&(_.abcelem.el_type="tabNumber")),f.cloned=_,_}function r(f,_){var v=s(f);if(_)for(var y=f.children,S=!0,q=0;q<y.length;q++){var M=y[q],P=new t("",0,0,0,"");n(P,M),S=_.tablature.setRelative(M,P,S),v.children.push(P)}return v}function o(f,_,v){var y="tab.tiny",S=7.5;f.isTabBig&&(y="tab.big",S=10);var q={el_type:"tab",icon:y,Ypos:S};if(S+=f.tabSymbolOffset,!f.hideTabSymbol){var M=new a(q,0,0,"symbol",0);M.x=_;var P=new t(y,0,0,7.5,"tab");P.x=v,M.children.push(P),M.abcelem.el_type=="tab"&&(P.pitch=S)}return M}function l(f){if(f.extra)for(var _=0;_<f.extra.length;_++){var v=f.extra[_];if(v.type=="lyric")return{bottom:v.bottom,height:v.height}}return null}function c(){this.accidentals=null}function d(f){for(var _=0,v=0;v<f.length;v++)f[v].tabNameInfos||_++;return _}function g(f,_,v,y,S){var q=y.num;y.note.quarter!=null&&(q=q.toString(),q+=y.note.quarter);var M=f.semantics.stringToPitch(y.str);v.notes.push({num:q,str:y.str,pitch:y.note.emit()});var P={type:"tabNumber"},B=new t(q,0,0,M+.3,P);return B.x=_,B.isGrace=S,B.isAltered=y.note.isAltered,B}function h(f,_){var v=0;if(f.extra){for(var y=0;y<f.extra.length;y++)if(f.extra[y].c.indexOf("noteheads")>=0){if(v===_)return f.extra[y].x+f.extra[y].w/2;v++}}return-1}function m(f){if(f.abcelem){var _=f.abcelem;if(_.rest)return _.gracenotes}return null}function p(f,_,v){var y=f.semantics.notesToNumber(_,v);if(y.error)return f.setError(y.error),y;if(y.graces&&y.notes){var S=y.notes.length-1;y.notes[S].graces=y.graces}return y}function u(f,_,v,y,S){for(var q=0;q<y.length;q++){var M={el_type:"note",startChar:v.abcelem.startChar,endChar:v.abcelem.endChar,notes:[],grace:!0},P=h(v,q),B=y[q],A=g(f,P,M,B,!0);_.children.push(A),S.push(M)}}return c.prototype.build=function(f,_,v,y,S,q,M){d(_);var P=_[S+y],B=_[M],A=null,j=null;P.children[0].abcelem.el_type!="clef"&&q!="none"&&P.children.splice(0,0,q);for(var G=0;G<P.children.length;G++){var C=P.children[G],R=C.x,H=R;switch(C.isClef&&(B.children.push(o(f,R,H)),C.abcelem.type.indexOf("-8")>=0&&(f.semantics.clefTranspose=-12),C.abcelem.type.indexOf("+8")>=0&&(f.semantics.clefTranspose=12)),C.type){case"staff-extra key-signature":this.accidentals=C.abcelem.accidentals,f.semantics.accidentals=this.accidentals;break;case"bar":f.semantics.measureAccidentals={};var E=!1;G===P.children.length-1&&(E=!0);var U=r(C,f);if(U.abcelem.barNumber){delete U.abcelem.barNumber;for(var N=0;N<U.children.length;N++)if(U.children[N].type==="barNumber"){U.children.splice(N,1);break}}U.abcelem.lastBar=E,B.children.push(U),v.push({el_type:C.abcelem.el_type,type:C.abcelem.type,endChar:C.abcelem.endChar,startChar:C.abcelem.startChar,abselem:U});break;case"rest":var L=m(C);if(L){if(A=p(f,null,L),A.error)return;Z={el_type:"note",startChar:C.abcelem.startChar,endChar:C.abcelem.endChar,notes:[],grace:!0},u(f,I,C,A.graces,v)}break;case"note":var I=s(C);I.x=C.heads[0].x+C.heads[0].w/2,I.lyricDim=l(C);var T=C.abcelem.pitches,F=C.abcelem.gracenotes;if(I.type="tabNumber",A=p(f,T,F),A.error)return;if(A.graces){var z=A.notes.length-1;A.notes[z].graces=A.graces}j={el_type:"note",startChar:C.abcelem.startChar,endChar:C.abcelem.endChar,notes:[]};for(var D=0;D<A.notes.length;D++){var Q=A.notes[D];if(Q.graces)for(var X=0;X<Q.graces.length;X++){var Z={el_type:"note",startChar:C.abcelem.startChar,endChar:C.abcelem.endChar,notes:[],grace:!0},ue=h(C,X),de=Q.graces[X],ae=g(f,ue,Z,de,!0);I.children.push(ae),v.push(Z)}var V=g(f,I.x+C.heads[D].dx,j,Q,!1);I.children.push(V)}j.notes.length>0&&(j.abselem=I,v.push(j),B.children.push(I));break}}},_g=c,_g}var vg,Rw;function SE(){if(Rw)return vg;Rw=1;var a=qw(),t=xE(),i=Us();function n(){return{tempoHeightAbove:0,partHeightAbove:0,volumeHeightAbove:0,dynamicHeightAbove:0,endingHeightAbove:0,chordHeightAbove:0,lyricHeightAbove:0,lyricHeightBelow:0,chordHeightBelow:0,volumeHeightBelow:0,dynamicHeightBelow:0}}function s(f){for(var _=0,v=0;v<f.children.length;v++){var y=f.children[v];y.specialY&&y.specialY.lyricHeightBelow>_&&(_=y.specialY.lyricHeightBelow)}return _}function r(f,_,v){var y=f.semantics,S=_.controller.getTextSize,q=y.tabInfos(f),M=y.suppress(f),P=!0;if(M&&(P=!1),P){var B=S.calc(q,"tablabelfont","text instrumentname");return v.tabNameInfos={textSize:{height:B.height,width:B.width},name:q},B.height}return 0}function o(f,_){return _[f].isTabStaff?f===_.length-1?!0:!_[f+1].isTabStaff:!1}function l(f){for(var _=0,v=0;v<f.length;v++)f[v].isTabStaff||_++;return _}function c(f,_){for(var v=_;v>=0;v--)if(!f[v].isTabStaff)return v;return-1}function d(f){for(var _=0;_<f.length;_++)if(f[_].isTabStaff){var v=c(f,_);f[_].hasStaff=f[v],f[v].hasTab||(f[v].hasTab=[]),f[v].hasTab.push(f[_])}}function g(f,_){return l(f)===1&&_.voices.length>1}function h(f,_){for(var v=0,y=0,S=!0,q=0;S;){if(!_[v])return-1;if(_[v].isTabStaff||(q=_[v].voices.length),_[v].isTabStaff){if(y++,o(v,_)&&y<q)return v+1}else if(y=0,v>=f&&(v+1==_.length||!_[v+1].isTabStaff))return v+1;if(v++,v>_.length)return-1}}function m(f,_){for(var v=_;v>=0;v--)if(!f[v].isTabStaff)return f[v];return null}function p(f,_){var v=f[_],y=v.children[0].abcelem;return y.el_type==="clef"?null:_==0?"none":f[_-1].children[0]}function u(f,_,v,y){var S=new t,q={clef:{type:"TAB"}},M=f.linePitch*f.nbLines,P=v.staff;if(P){var B=P[0];if(B&&B.clef&&B.clef.stafflines==0){f.setError("No tablatures when stafflines=0");return}P.splice(P.length,0,q)}var A=v.staffGroup,j=A.voices,G=j[0],C=s(G),R=3,H=y,E=A.staffs[H],U=M+R-E.bottom-C;E.isTabStaff&&(U=E.top);var N={bottom:-1,isTabStaff:!0,specialY:n(),lines:f.nbLines,linePitch:f.linePitch,dy:.15,top:U},L=h(y,A.staffs);if(L!==-1){N.parentIndex=L-1,A.staffs.splice(L,0,N),A.height+=M+R;var I=m(A.staffs,L),T=1;g(A.staffs,I)&&(T=I.voices.length),q.voices=[];for(var F=0;F<T;F++){var z=new a(0,0);F>0&&(z.duplicate=!0);var D=r(f,_,z)/i.STEP;D=Math.max(D,1),A.staffs[y].top+=1,A.height+=D,z.staff=N;var Q=j.length;j.splice(j.length,0,z);var X=p(j,F+y);q.voices[F]=[],S.build(f,j,q.voices[F],F,y,X,Q)}d(A.staffs)}}return vg=u,vg}var bg,Bw;function Pw(){if(Bw)return bg;Bw=1;var a={__:-2,_:-1,"_/":-.5,"=":0,"":0,"^/":.5,"^":1,"^^":2},t=["C","-","D","-","E","F","-","G","-","A","-","B","c","-","d","-","e","f","-","g","-","a","-","b"];function i(s){var r=s.match(/([_^\/]*)([ABCDEFGabcdefg])(,*)('*)/);if(r&&r.length===5){var o=a[r[1]],l=t.indexOf(r[2]),c=r[4].length-r[3].length;return 48+l+o+c*12}return 0}function n(s){s=parseInt(s,10);var r=Math.floor(s/12),o=s%12,l=t[o];if(l==="-"&&(l="^"+t[o-1]),r>4)for(l=l.toLowerCase(),r-=5;r>0;)l+="'",r--;else for(;r<4;)l+=",",r++;return l}return bg={noteToMidi:i,midiToNote:n},bg}var yg,jw;function Nw(){if(jw)return yg;jw=1;var{noteToMidi:a,midiToNote:t}=Pw();function i(s,r){var o=a(s);r&&(o+=r);var l=t(o),c=!1,d=!1,g=!1,h=null,m=null,p=!1,u=0;s.startsWith("_")?(c=!0,u=-1,s[1]=="/"?(c=!1,m="v",u=0):s[1]=="_"&&(p=!0,u-=1)):s.startsWith("^")?(d=!0,u=1,s[1]=="/"?(d=!1,m="^",u=0):s[1]=="^"&&(p=!0,u+=1)):s.startsWith("=")&&(h=!0,u=0),g=c||d||m!=null,(g||h)&&(m!=null||p?l=s.slice(2):l=s.slice(1));var f=(l.match(/,/g)||[]).length,_=(l.match(/'/g)||[]).length;this.pitch=o,this.pitchAltered=0,this.name=l,this.acc=u,this.isSharp=d,this.isKeySharp=!1,this.isDouble=p,this.isAltered=g,this.isFlat=c,this.isKeyFlat=!1,this.natural=h,this.quarter=m,this.isLower=this.name==this.name.toLowerCase(),this.name=this.name[0].toUpperCase(),this.hasComma=f,this.isQuoted=_}function n(s){var r=s.name,o=new i(r);return o.pitch=s.pitch,o.hasComma=s.hasComma,o.isLower=s.isLower,o.isQuoted=s.isQuoted,o.isSharp=s.isSharp,o.isKeySharp=s.isKeySharp,o.isFlat=s.isFlat,o.isKeyFlat=s.isKeyFlat,o}return i.prototype.sameNoteAs=function(s){return s.pitch===this.pitch},i.prototype.isLowerThan=function(s){return s.pitch>this.pitch},i.prototype.checkKeyAccidentals=function(s,r){if(!(this.isAltered||this.natural)){if(r[this.name.toUpperCase()])switch(r[this.name.toUpperCase()]){case"__":this.acc=-2,this.pitchAltered=-2;return;case"_":this.acc=-1,this.pitchAltered=-1;return;case"=":this.acc=0,this.pitchAltered=0;return;case"^":this.acc=1,this.pitchAltered=1;return;case"^^":this.acc=2,this.pitchAltered=2;return}else if(s)for(var o=this.name,l=0;l<s.length;l++){var c=s[l];o==c.note.toUpperCase()&&(c.acc=="flat"&&(this.acc=-1,this.isKeyFlat=!0,this.pitchAltered=-1),c.acc=="sharp"&&(this.acc=1,this.isKeySharp=!0,this.pitchAltered=1))}}},i.prototype.getAccidentalEquiv=function(){var s=n(this);return s.isSharp||s.isKeySharp?(s=s.nextNote(),s.isFlat=!0,s.isSharp=!1,s.isKeySharp=!1):(s.isFlat||s.isKeyFlat)&&(s=s.prevNote(),s.isSharp=!0,s.isFlat=!1,s.isKeyFlat=!1),s},i.prototype.nextNote=function(){var s=t(this.pitch+1+this.pitchAltered);return new i(s)},i.prototype.prevNote=function(){var s=t(this.pitch-1+this.pitchAltered);return new i(s)},i.prototype.emitNoAccidentals=function(){var s=this.name;this.isLower&&(s=s.toLowerCase());for(var r=0;r<this.isQuoted;r++)s+="'";for(var o=0;o<this.hasComma;o++)s+=",";return s},i.prototype.emit=function(){var s=this.name;(this.isSharp||this.isKeySharp)&&(s="^"+s,this.isDouble&&(s="^"+s)),(this.isFlat||this.isKeyFlat)&&(s="_"+s,this.isDouble&&(s="_"+s)),this.quarter&&(this.quarter=="^"?s="^/"+s:s="_/"+s),this.natural&&(s="="+s);for(var r=1;r<=this.hasComma;r++)s+=",";if(this.isLower){s=s.toLowerCase();for(var o=1;o<=this.isQuoted;o++)s+="'"}return s},yg=i,yg}var wg,Ow;function TE(){if(Ow)return wg;Ow=1;var a=Nw(),t=["A","B","C","D","E","F","G"];function i(n,s){var r=new a(n),o=new a(s);if(o.isLowerThan(r)){var l=r.emit(),c=o.emit();return{error:"Invalid string Instrument tuning : "+c+" string lower than "+l+" string"}}var d=[],g=t.indexOf(r.name),h=t.indexOf(o.name);if(g==-1||h==-1)return d;for(var m=!1;!m;)d.push(r.emit()),r=r.nextNote(),r.sameNoteAs(o)&&(m=!0);return d}return wg=i,wg}var kg,Dw;function $E(){if(Dw)return kg;Dw=1;const{noteToMidi:a}=Pw();var t=Nw(),i=TE();function n(m){var p=null,u=m.tuning;if(m.capo>0){p=[];for(var f=0;f<u.length;f++){for(var _=new t(u[f]),v=0;v<m.capo;v++)_=_.nextNote();p[f]=_.emit()}}return p}function s(m){var p=[],u=m.tuning;m.capo>0&&(u=m.capoTuning);for(var f=u.length-1,_=0;_<u.length;_++){var v=m.highestNote;_!=u.length-1&&(v=u[_+1]);var y=i(u[_],v);if(y.error)return y;p[f--]=y}return p}function r(m){var p=[];p[0]=[];for(var u=m.strings,f=1;f<u.length;f++)p[f]=u[f-1];return p}function o(m,p){for(var u=0;u<p.length-1;u++){var f=p[u],_=p[u+1];if(f.str==_.str){if(f.str==m.strings.length-1){f.num="?",_.num="?";return}_.num<f.num?(_.str++,_=c(m,_.note,_.str,m.secondPos,m.strings[_.str].length)):(f.str++,f=c(m,f.note,f.str,m.secondPos,m.strings[f.str].length)),p[u]=f,p[u+1]=_}}return null}function l(m,p){for(var u=[],f=0;f<p.length;f++)if(!p[f].endTie){var _=new t(p[f].name,m.clefTranspose);_.checkKeyAccidentals(m.accidentals,m.measureAccidentals);var v=d(m,_);u.push(v)}return o(m,u),u}function c(m,p,u,f,_){var v=m.strings;p.checkKeyAccidentals(m.accidentals,m.measureAccidentals),f&&(v=f);var y=p.emitNoAccidentals(),S=v[u].indexOf(y),q=p.acc;if(S!=-1){if(f&&(S+=_),(p.isFlat||p.acc==-1)&&S==0){var M=p.getAccidentalEquiv();u++,S=v[u].indexOf(M.emit()),q=0}return{num:S+q,str:u,note:p}}return null}function d(m,p){if(p.isAltered||p.natural){var u;p.isFlat?p.isDouble?u="__":u="_":p.isSharp?p.isDouble?u="^^":u="^":p.natural&&(u="="),m.measureAccidentals[p.name.toUpperCase()]=u}for(var f=m.stringPitches.length-1;f>=0;f--)if(p.pitch+p.pitchAltered>=m.stringPitches[f]){var _=p.pitch+p.pitchAltered-m.stringPitches[f];return p.quarter==="^"?_-=.5:p.quarter==="v"&&(_+=.5),{num:Math.round(_),str:m.stringPitches.length-1-f,note:p}}return{num:"?",str:m.stringPitches.length-1,note:p}}h.prototype.stringToPitch=function(m){var p=5.3,u=this.strings.length-1;return p+(u-m)*this.linePitch};function g(m,p){var u={num:"?",str:0,note:p};m.push(u),m.error=p.emit()+": unexpected note for instrument"}h.prototype.notesToNumber=function(m,p){var u,f,_=null,v=null;if(m&&(v=[],m.length>1?(v=l(this,m),v.error&&(_=v.error)):m[0].endTie||(u=new t(m[0].name,this.clefTranspose),u.checkKeyAccidentals(this.accidentals,this.measureAccidentals),f=d(this,u),f?v.push(f):(g(v,u),_=v.error))),_)return v;var y=null;if(p){y=[];for(var S=0;S<p.length;S++)u=new t(p[S].name,this.clefTranspose),u.checkKeyAccidentals(this.accidentals,this.measureAccidentals),f=d(this,u),f?y.push(f):(g(y,u),_=v.error)}return{notes:v,graces:y,error:_}},h.prototype.toString=function(){for(var m=[],p=0;p<this.tuning.length;p++){var u=this.tuning[p].replaceAll(",","").replaceAll("'","").toUpperCase();u[0]==="_"?u=u[1]+"b ":u[0]==="^"&&(u=u[1]+"# "),m.push(u)}return m.join("")},h.prototype.tabInfos=function(m){var p=m.params.label;if(p){var u=p.indexOf("%T"),f="";return u!=-1&&(f=this.toString(),m.capo>0&&(f+=" capo:"+m.capo),p=p.replace("%T",f)),p}return""},h.prototype.suppress=function(m){var p=m.params.suppress;return!!p};function h(m){var p=m.tuning,u=m.capo,f=m.params.highestNote;this.linePitch=m.linePitch,this.highestNote="a'",f&&(this.highestNote=f),this.measureAccidentals={},this.capo=0,u&&(this.capo=parseInt(u,10)),this.transpose=m.transpose?m.transpose:0,this.tuning=p,this.stringPitches=[];for(var _=0;_<this.tuning.length;_++){var v=a(this.tuning[_])+this.capo;this.stringPitches.push(v)}if(this.capo>0&&(this.capoTuning=n(this)),this.strings=s(this),this.strings.error){m.setError(this.strings.error),m.inError=!0;return}this.secondPos=r(this)}return kg=h,kg}var xg,Iw;function qE(){if(Iw)return xg;Iw=1;var a=kE(),t=SE(),i=$E();n.prototype.init=function(r,o,l,c){this.tune=r,this.params=l,this.tuneNumber=o,this.inError=!1,this.abcTune=r,this.linePitch=3,this.nbLines=c.defaultTuning.length,this.isTabBig=c.isTabBig,this.tabSymbolOffset=c.tabSymbolOffset,this.capo=l.capo,this.transpose=l.visualTranspose,this.hideTabSymbol=l.hideTabSymbol,this.tablature=new a(this.nbLines,this.linePitch);var d=l.tuning;d||(d=c.defaultTuning),this.tuning=d,this.semantics=new i(this)},n.prototype.setError=function(r){r&&(this.error=r,this.inError=!0,this.tune.warnings?this.tune.warnings.push(r):this.tune.warnings=[r])},n.prototype.render=function(r,o,l){this.inError||this.tablature.bypass(o)||t(this,r,o,l)};function n(){}var s=function(){return{name:"StringTab",tablature:n}};return xg=s,xg}var Sg,Lw;function Vw(){if(Lw)return Sg;Lw=1;var a=qE(),t={violin:{name:"StringTab",defaultTuning:["G,","D","A","e"],isTabBig:!1,tabSymbolOffset:0},fiddle:{name:"StringTab",defaultTuning:["G,","D","A","e"],isTabBig:!1,tabSymbolOffset:0},mandolin:{name:"StringTab",defaultTuning:["G,","D","A","e"],isTabBig:!1,tabSymbolOffset:0},guitar:{name:"StringTab",defaultTuning:["E,","A,","D","G","B","e"],isTabBig:!0,tabSymbolOffset:0},fiveString:{name:"StringTab",defaultTuning:["C,","G,","D","A","e"],isTabBig:!1,tabSymbolOffset:-.95}},i={inited:!1,plugins:{},register:function(n){var s=n.name,r=n.tablature;this.plugins[s]=r},setError:function(n,s){n.warnings?n.warning.push(s):n.warnings=[s]},preparePlugins:function(n,s,r){this.inited||(this.register(new a),this.inited=!0);var o=null;if(r.tablature){var l=r.tablature;o=[];for(var c=0;c<l.length;c++){var d=l[c],g=d.instrument;if(g==null)return this.setError(n,"tablature 'instrument' is missing"),o;var h=t[g],m=null;if(h&&(m=this.plugins[h.name]),m){r.visualTranspose!=0&&(d.visualTranspose=r.visualTranspose),d.abcSrc=r.tablature.abcSrc;var p={classz:m,tuneNumber:s,params:d,instance:null,tabType:h};o.push(p)}else if(g==="")o.push(null);else return this.setError(n,"Undefined tablature plugin: "+g),o}}return o},layoutTablatures:function(s,r){var o=r.tablatures,l=0;if(o&&o.length>0)for(var c=o.length,d=0;d<c;++d)o[d]&&o[d].params.firstStaffOnly&&(o[d].params.suppress=!1);for(var g=0;g<r.lines.length;g++){var h=r.lines[g];if(h.staff&&l++,l>1&&o&&o.length>0)for(var c=o.length,d=0;d<c;++d)o[d].params.firstStaffOnly&&(o[d].params.suppress=!0);var m=h.staff;if(m){for(var p=m.length,u=0;u<m.length;u++)if(o[u]&&u<p){var f=o[u];f.instance==null&&(f.instance=new f.classz,f.instance.init(r,f.tuneNumber,f.params,f.tabType)),f.instance.render(s,h,u)}}}}};return Sg=i,Sg}var Tg,Hw;function Vf(){if(Hw)return Tg;Hw=1;var a=og(),t=wE(),i=Vw(),n={};return(function(){n.numberOfTunes=function(r){var o=r.split(`
|
||
X:`),l=o.length;return l===0&&(l=1),l};var s=n.TuneBook=function(r){var o=t(r);this.header=o.header,this.tunes=o.tunes};s.prototype.getTuneById=function(r){for(var o=0;o<this.tunes.length;o++)if(this.tunes[o].id===""+r)return this.tunes[o];return null},s.prototype.getTuneByTitle=function(r){for(var o=0;o<this.tunes.length;o++)if(this.tunes[o].title===r)return this.tunes[o];return null},n.parseOnly=function(r,o){for(var l=n.numberOfTunes(r),c=[],d=0;d<l;d++)c.push(1);function g(){}return n.renderEngine(g,c,r,o)},n.renderEngine=function(r,o,l,c){var d=[],g=function(S){return S&&!S.propertyIsEnumerable("length")&&typeof S=="object"&&typeof S.length=="number"};if(!(o===void 0||l===void 0)){g(o)||(o=[o]),c===void 0&&(c={});for(var h=c.startingTune?parseInt(c.startingTune,10):0,m=new s(l),p=new a,u=0;u<o.length;u++){var f=o[u];if(f==="*"||typeof f=="string"&&(f=document.getElementById(f)),f)if(h>=0&&h<m.tunes.length){p.parse(m.tunes[h].abc,c,m.tunes[h].startPos-m.header.length);var _=p.getTune();c.tablature&&(_.tablatures=i.preparePlugins(_,h,c));var v=p.getWarnings();v&&(_.warnings=v);var y=r(f,_,u,m.tunes[h].abc);d.push(y||_)}else f.innerHTML&&(f.innerHTML="");h++}return d}},n.extractMeasures=function(r){for(var o=[],l=new s(r),c=0;c<l.tunes.length;c++){for(var d=l.tunes[c],g=d.abc.split("K:"),h=g[1].split(`
|
||
`),m=g[0]+"K:"+h[0]+`
|
||
`,p=null,u=null,f=null,_=[],v=!1,y=n.parseOnly(d.abc)[0],S=y.getPickupLength()>0,q=0;q<y.lines.length;q++){var M=y.lines[q];if(M.staff)for(var P=0;P<1;P++)for(var B=M.staff[P],A=0;A<1;A++)for(var j=B.voices[A],G=0;G<j.length;G++){var C=j[G];if(f===null&&C.startChar>=0&&(f=C.startChar,C.chord===void 0?u=p:u=null),C.chord&&(p=C),C.el_type==="bar"){if(v){var R=d.abc.substring(f,C.endChar),H={abc:R};p=u&&u.chord&&u.chord.length>0?u.chord[0].name:null,p&&(H.lastChord=p),C.startEnding&&(H.startEnding=C.startEnding),C.endEnding&&(H.endEnding=C.endEnding),_.push(H),f=null,v=!1}}else C.el_type==="note"&&(v=!0)}}o.push({header:m,measures:_,hasPickup:S})}return o}})(),Tg=n,Tg}var $g,Ww;function AE(){if(Ww)return $g;Ww=1;var a=ew(),{relativeMajor:t,transposeKey:i,relativeMode:n,isLegalMode:s}=X2(),r=Y2(),o;return(function(){o=function(A,j,G){if(j==="TEST")return{keyAccidentals:a,relativeMajor:t,transposeKey:i,relativeMode:n,transposeChordName:r};G=parseInt(G,10);var C=[],R;for(R=0;R<j.length;R++)C=C.concat(l(A,j[R],G));C=C.sort(function(U,N){return N.start-U.start});var H=A.split("");for(R=0;R<C.length;R++){var E=C[R];H.splice(E.start,E.end-E.start,E.note)}return H.join("")};function l(A,j,G){var C=[],R=j.getKeySignature();if(R.root==="Hp"||R.root==="HP")return C;C=C.concat(c(A,G));for(var H=0;H<j.lines.length;H++){var E=j.lines[H].staff;if(E)for(var U=0;U<E.length;U++){var N=E[U];N.clef.type!=="perc"&&(C=C.concat(d(A,N.voices,N.key,G)))}}return C}function c(A,j){for(var G=[],C=A.split("K:"),R=C[0].length,H=1;H<C.length;H++){var E=C[H],U=E.match(/^( *)([A-G])([#b]?)( ?)(\w*)/);if(U){var N=R+2+U[1].length,L=s(U[5])?U[5]:"",I=U[2]+U[3]+U[4]+L,T=f({root:U[2],acc:U[3],mode:L},j),F=T.root+T.acc+U[4]+T.mode;G.push({start:N,end:N+I.length,note:F})}R+=E.length+2}return G}function d(A,j,G,C){for(var R=[],H=f(G,C),E=0;E<j.length;E++)R=R.concat(m(A,j[E],G.root,g(G),H,C));return R}function g(A){for(var j={},G=0;G<A.accidentals.length;G++){var C=A.accidentals[G];C.acc==="flat"?j[C.note.toUpperCase()]="_":C.acc==="sharp"&&(j[C.note.toUpperCase()]="^")}return j}function h(A,j,G){var C=p.indexOf(A.root)-p.indexOf(j);return j==="none"&&(C=p.indexOf(A.root)),C===0?G>2?C+=7:G===-12&&(C-=7):G>0&&C<0?C+=7:G<0&&C>0&&(C-=7),G>12?C+=7:G<-12&&(C-=7),C}function m(A,j,G,C,R,H){for(var E=[],U=h(R,G,H),N={},L={},I=0;I<j.length;I++){var T=j[I];if(T.chord)for(var F=0;F<T.chord.length;F++){var z=T.chord[F];if(z.position==="default"){var D=R.accidentals.length&&R.accidentals[0].acc==="flat",Q=r(z.name,H,D,!0);Q=Q.replace(/♭/g,"b").replace(/♯/g,"#"),Q!==z.name&&E.push(P(A,T.startChar,T.endChar,Q))}}if(T.el_type==="note"&&T.pitches){for(var X=q(A,T.startChar,T.endChar),Z=0;Z<X.length;Z++){var ue=S(X[Z].note,G,C,N);ue.acc&&(N[ue.name.toUpperCase()]=ue.acc);var de=_(ue,R,U,L);de.acc&&(L[de.upper]=de.acc),E.push({note:de.acc+de.name,start:X[Z].index,end:X[Z].index+X[Z].note.length})}if(T.gracenotes)for(var ae=0;ae<T.gracenotes.length;ae++){var V=S(T.gracenotes[ae].name,G,C,N);V.acc&&(N[V.name.toUpperCase()]=V.acc);var pe=_(V,R,U,N);pe.acc&&(L[pe.upper]=pe.acc),E.push(M(A,T.startChar,T.endChar,pe.acc+pe.name,ae))}}else T.el_type==="bar"?(N={},L={}):T.el_type==="keySignature"&&(G=T.root,C=g(T),R=f(T,H),U=h(R,G,H))}return E}var p="CDEFGAB",u=[",,,,",",,,",",,",",","","'","''","'''","''''"];function f(A,j){if(A.root==="none")return{root:i("C",j),mode:"",acc:"",accidentals:[]};var G=t(A.root+A.acc+A.mode),C=i(G,j),R=n(C,A.mode),H=a(C);return{root:R[0],mode:A.mode,acc:R.length>1?R[1]:"",accidentals:H}}function _(A,j,G,C){for(var R=A.pitch,H=p.indexOf(A.name),E=p.indexOf(j.root),U=(E+R)%7,N=H+G,L=A.oct;N>6;)L++,N-=7;for(;N<0;)L--,N+=7;for(var I=p[U],T="",F=A.adj,z="=",D=0;D<j.accidentals.length;D++)if(j.accidentals[D].note.toLowerCase()===I.toLowerCase()){F=F+(j.accidentals[D].acc==="flat"?-1:1),z=j.accidentals[D].acc==="flat"?"_":"^";break}var Q;switch(F){case-2:T="__";break;case-1:T="_";break;case 0:T="=";break;case 1:T="^";break;case 2:T="^^";break;case-3:return Q={},Q.pitch=A.pitch-1,Q.oct=A.oct,Q.name=p[p.indexOf(A.name)-1],Q.name||(Q.name="B",Q.oct--),Q.name==="B"||Q.name==="E"?Q.adj=A.adj+1:Q.adj=A.adj+2,_(Q,j,G+1,C);case 3:return Q={},Q.pitch=A.pitch+1,Q.oct=A.oct,Q.name=p[p.indexOf(A.name)+1],Q.name||(Q.name="C",Q.oct++),Q.name==="C"||Q.name==="F"?Q.adj=A.adj-1:Q.adj=A.adj-2,_(Q,j,G+1,C)}switch((C[I]===T||!C[I]&&T===z)&&!A.courtesy&&(T=""),L){case 0:I=I+",,,";break;case 1:I=I+",,";break;case 2:I=I+",";break;case 4:I=I.toLowerCase();break;case 5:I=I.toLowerCase()+"'";break;case 6:I=I.toLowerCase()+"''";break;case 7:I=I.toLowerCase()+"'''";break;case 8:I=I.toLowerCase()+"''''";break}return L>4&&(I=I.toLowerCase()),{acc:T,name:I,upper:I.toUpperCase()}}var v=/([_^=]*)([A-Ga-g])([,']*)/,y=/([_^=]*[A-Ga-g][,']*)?(\d*\/*\d*)?([\>\<\-\)]*)?/;function S(A,j,G,C){var R=j==="none"?0:p.indexOf(j),H=A.match(v),E=H[2].toUpperCase(),U=p.indexOf(E)-R;U<0&&(U+=7);var N=u.indexOf(H[3]);E===H[2]&&N--;var L=C[E]||G[E]||"=";return{acc:H[1],name:E,pitch:U,oct:N,adj:B(H[1],G[E],C[E]),courtesy:H[1]===L}}function q(A,j,G){for(var C=A.substring(j,G),R,H=[],E=/("[^"]+")+/g;(R=E.exec(C))!==null;)H.push({start:E.lastIndex-R[0].length,end:E.lastIndex});for(var U=/(![^!]+!)+/g;(R=U.exec(C))!==null;)H.push({start:U.lastIndex-R[0].length,end:U.lastIndex});for(var N=[],L=/([_^=]*)([A-Ga-g])([,']*)/g;(R=L.exec(C))!==null;){for(var I=!1,T=0;T<H.length;T++)L.lastIndex>=H[T].start&&L.lastIndex<=H[T].end&&(I=!0);I||N.push({note:R[0],index:j+L.lastIndex-R[0].length})}return N}function M(A,j,G,C,R){var H=A.substring(j,G),E=/\{/,U=/\}/,N=/([^\{]*)/,L=/(\/*)/,I=H.match(new RegExp(N.source+E.source+L.source+y.source+L.source+y.source+L.source+y.source+L.source+y.source+L.source+y.source+L.source+y.source+L.source+y.source+L.source+y.source+U.source));if(I){for(var T=1+I[1].length,F=0;F<R;F++)I[F*3+2]&&(T+=I[F*3+2].length),I[F*3+3]&&(T+=I[F*3+3].length),I[F*3+4]&&(T+=I[F*3+4].length),I[F*3+5]&&(T+=I[F*3+5].length);I[R*3+2]&&(T+=I[F*3+2].length),j+=T;var z=I[R*3+3]?I[R*3+3].length:0;z+=I[R*3+4]?I[R*3+4].length:0,z+=I[R*3+5]?I[R*3+5].length:0,G=j+z}return{start:j,end:G,note:C}}function P(A,j,G,C){var R=A.substring(j,G).match(/([^"]+)?(".+")+/);return R[1]&&(j+=R[1].length),G=j+R[2].length,{start:j+1,end:G-1,note:C}}function B(A,j,G){if(!A&&G&&(A=G),!A)return 0;switch(j){case void 0:switch(A){case"__":return-2;case"_":return-1;case"=":return 0;case"^":return 1;case"^^":return 2;default:return 0}case"_":switch(A){case"__":return-1;case"_":return 0;case"=":return 1;case"^":return 2;case"^^":return 3;default:return 0}case"^":switch(A){case"__":return-3;case"_":return-2;case"=":return-1;case"^":return 0;case"^^":return 1;default:return 0}}return 0}})(),$g=o,$g}var qg,Qw;function CE(){if(Qw)return qg;Qw=1;var a=function(n,s,r,o){this.type="BeamElem",this.isflat=!!r,this.isgrace=!!(s&&s==="grace"),this.forceup=!!(this.isgrace||s&&s==="up"),this.forcedown=!!(s&&s==="down"),this.elems=[],this.total=0,this.average=6,this.allrests=!0,this.stemHeight=n,this.beams=[],o&&o.duration?(this.duration=o.duration,o.startTriplet&&(this.duration*=o.tripletMultiplier),this.duration=Math.round(this.duration*1e3)/1e3):this.duration=0};a.prototype.setHint=function(){this.hint=!0},a.prototype.runningDirection=function(i){var n=i.averagepitch;n!==void 0&&(this.total=Math.round(this.total+n),this.count||(this.count=0),this.count++)},a.prototype.add=function(i){var n=i.abcelem.averagepitch;n!==void 0&&(i.abcelem.rest||(this.allrests=!1),i.beam=this,this.elems.push(i),this.total=Math.round(this.total+n),(this.min===void 0||i.abcelem.minpitch<this.min)&&(this.min=i.abcelem.minpitch),(this.max===void 0||i.abcelem.maxpitch>this.max)&&(this.max=i.abcelem.maxpitch))},a.prototype.addBeam=function(i){this.beams.push(i)},a.prototype.setStemDirection=function(){if(this.average=t(this.total,this.count),this.forceup)this.stemsUp=!0;else if(this.forcedown)this.stemsUp=!1;else{var i=6;this.stemsUp=this.average<i}delete this.count,this.total=0},a.prototype.calcDir=function(){if(this.average=t(this.total,this.elems.length),this.forceup)this.stemsUp=!0;else if(this.forcedown)this.stemsUp=!1;else{var i=6;this.stemsUp=this.average<i}for(var n=this.stemsUp?"up":"down",s=0;s<this.elems.length;s++)for(var r=0;r<this.elems[s].heads.length;r++)this.elems[s].heads[r].stemDir=n};function t(i,n){return n?i/n:0}return qg=a,qg}var Ag,Kw;function GE(){if(Kw)return Ag;Kw=1;var a=function(i,n){this.startVoice=i,this.type=n};return a.prototype.setBottomStaff=function(t){this.endVoice=t,this.startVoice.header&&!this.endVoice.header&&(this.header=this.startVoice.header,delete this.startVoice.header)},a.prototype.continuing=function(t){this.lastContinuedVoice=t},a.prototype.getWidth=function(){return 10},a.prototype.isStartVoice=function(t){return!!(this.startVoice&&this.startVoice.staff&&this.startVoice.staff.voices.length>0&&this.startVoice.staff.voices[0]===t)},Ag=a,Ag}var Cg,Yw;function ll(){if(Yw)return Cg;Yw=1;var a=Us(),t={0:{d:[["M",4.83,-14.97],["c",.33,-.03,1.11,0,1.47,.06],["c",1.68,.36,2.97,1.59,3.78,3.6],["c",1.2,2.97,.81,6.96,-.9,9.27],["c",-.78,1.08,-1.71,1.71,-2.91,1.95],["c",-.45,.09,-1.32,.09,-1.77,0],["c",-.81,-.18,-1.47,-.51,-2.07,-1.02],["c",-2.34,-2.07,-3.15,-6.72,-1.74,-10.2],["c",.87,-2.16,2.28,-3.42,4.14,-3.66],["z"],["m",1.11,.87],["c",-.21,-.06,-.69,-.09,-.87,-.06],["c",-.54,.12,-.87,.42,-1.17,.99],["c",-.36,.66,-.51,1.56,-.6,3],["c",-.03,.75,-.03,4.59,0,5.31],["c",.09,1.5,.27,2.4,.6,3.06],["c",.24,.48,.57,.78,.96,.9],["c",.27,.09,.78,.09,1.05,0],["c",.39,-.12,.72,-.42,.96,-.9],["c",.33,-.66,.51,-1.56,.6,-3.06],["c",.03,-.72,.03,-4.56,0,-5.31],["c",-.09,-1.47,-.27,-2.37,-.6,-3.03],["c",-.24,-.48,-.54,-.78,-.93,-.9],["z"]],w:10.78,h:14.959},1:{d:[["M",3.3,-15.06],["c",.06,-.06,.21,-.03,.66,.15],["c",.81,.39,1.08,.39,1.83,.03],["c",.21,-.09,.39,-.15,.42,-.15],["c",.12,0,.21,.09,.27,.21],["c",.06,.12,.06,.33,.06,5.94],["c",0,3.93,0,5.85,.03,6.03],["c",.06,.36,.15,.69,.27,.96],["c",.36,.75,.93,1.17,1.68,1.26],["c",.3,.03,.39,.09,.39,.3],["c",0,.15,-.03,.18,-.09,.24],["c",-.06,.06,-.09,.06,-.48,.06],["c",-.42,0,-.69,-.03,-2.1,-.24],["c",-.9,-.15,-1.77,-.15,-2.67,0],["c",-1.41,.21,-1.68,.24,-2.1,.24],["c",-.39,0,-.42,0,-.48,-.06],["c",-.06,-.06,-.06,-.09,-.06,-.24],["c",0,-.21,.06,-.27,.36,-.3],["c",.75,-.09,1.32,-.51,1.68,-1.26],["c",.12,-.27,.21,-.6,.27,-.96],["c",.03,-.18,.03,-1.59,.03,-4.29],["c",0,-3.87,0,-4.05,-.06,-4.14],["c",-.09,-.15,-.18,-.24,-.39,-.24],["c",-.12,0,-.15,.03,-.21,.06],["c",-.03,.06,-.45,.99,-.96,2.13],["c",-.48,1.14,-.9,2.1,-.93,2.16],["c",-.06,.15,-.21,.24,-.33,.24],["c",-.24,0,-.42,-.18,-.42,-.39],["c",0,-.06,3.27,-7.62,3.33,-7.74],["z"]],w:8.94,h:15.058},2:{d:[["M",4.23,-14.97],["c",.57,-.06,1.68,0,2.34,.18],["c",.69,.18,1.5,.54,2.01,.9],["c",1.35,.96,1.95,2.25,1.77,3.81],["c",-.15,1.35,-.66,2.34,-1.68,3.15],["c",-.6,.48,-1.44,.93,-3.12,1.65],["c",-1.32,.57,-1.8,.81,-2.37,1.14],["c",-.57,.33,-.57,.33,-.24,.27],["c",.39,-.09,1.26,-.09,1.68,0],["c",.72,.15,1.41,.45,2.1,.9],["c",.99,.63,1.86,.87,2.55,.75],["c",.24,-.06,.42,-.15,.57,-.3],["c",.12,-.09,.3,-.42,.3,-.51],["c",0,-.09,.12,-.21,.24,-.24],["c",.18,-.03,.39,.12,.39,.3],["c",0,.12,-.15,.57,-.3,.87],["c",-.54,1.02,-1.56,1.74,-2.79,2.01],["c",-.42,.09,-1.23,.09,-1.62,.03],["c",-.81,-.18,-1.32,-.45,-2.01,-1.11],["c",-.45,-.45,-.63,-.57,-.96,-.69],["c",-.84,-.27,-1.89,.12,-2.25,.9],["c",-.12,.21,-.21,.54,-.21,.72],["c",0,.12,-.12,.21,-.27,.24],["c",-.15,0,-.27,-.03,-.33,-.15],["c",-.09,-.21,.09,-1.08,.33,-1.71],["c",.24,-.66,.66,-1.26,1.29,-1.89],["c",.45,-.45,.9,-.81,1.92,-1.56],["c",1.29,-.93,1.89,-1.44,2.34,-1.98],["c",.87,-1.05,1.26,-2.19,1.2,-3.63],["c",-.06,-1.29,-.39,-2.31,-.96,-2.91],["c",-.36,-.33,-.72,-.51,-1.17,-.54],["c",-.84,-.03,-1.53,.42,-1.59,1.05],["c",-.03,.33,.12,.6,.57,1.14],["c",.45,.54,.54,.87,.42,1.41],["c",-.15,.63,-.54,1.11,-1.08,1.38],["c",-.63,.33,-1.2,.33,-1.83,0],["c",-.24,-.12,-.33,-.18,-.54,-.39],["c",-.18,-.18,-.27,-.3,-.36,-.51],["c",-.24,-.45,-.27,-.84,-.21,-1.38],["c",.12,-.75,.45,-1.41,1.02,-1.98],["c",.72,-.72,1.74,-1.17,2.85,-1.32],["z"]],w:10.764,h:14.97},3:{d:[["M",3.78,-14.97],["c",.3,-.03,1.41,0,1.83,.06],["c",2.22,.3,3.51,1.32,3.72,2.91],["c",.03,.33,.03,1.26,-.03,1.65],["c",-.12,.84,-.48,1.47,-1.05,1.77],["c",-.27,.15,-.36,.24,-.45,.39],["c",-.09,.21,-.09,.36,0,.57],["c",.09,.15,.18,.24,.51,.39],["c",.75,.42,1.23,1.14,1.41,2.13],["c",.06,.42,.06,1.35,0,1.71],["c",-.18,.81,-.48,1.38,-1.02,1.95],["c",-.75,.72,-1.8,1.2,-3.18,1.38],["c",-.42,.06,-1.56,.06,-1.95,0],["c",-1.89,-.33,-3.18,-1.29,-3.51,-2.64],["c",-.03,-.12,-.03,-.33,-.03,-.6],["c",0,-.36,0,-.42,.06,-.63],["c",.12,-.3,.27,-.51,.51,-.75],["c",.24,-.24,.45,-.39,.75,-.51],["c",.21,-.06,.27,-.06,.6,-.06],["c",.33,0,.39,0,.6,.06],["c",.3,.12,.51,.27,.75,.51],["c",.36,.33,.57,.75,.6,1.2],["c",0,.21,0,.27,-.06,.42],["c",-.09,.18,-.12,.24,-.54,.54],["c",-.51,.36,-.63,.54,-.6,.87],["c",.06,.54,.54,.9,1.38,.99],["c",.36,.06,.72,.03,.96,-.06],["c",.81,-.27,1.29,-1.23,1.44,-2.79],["c",.03,-.45,.03,-1.95,-.03,-2.37],["c",-.09,-.75,-.33,-1.23,-.75,-1.44],["c",-.33,-.18,-.45,-.18,-1.98,-.18],["c",-1.35,0,-1.41,0,-1.5,-.06],["c",-.18,-.12,-.24,-.39,-.12,-.6],["c",.12,-.15,.15,-.15,1.68,-.15],["c",1.5,0,1.62,0,1.89,-.15],["c",.18,-.09,.42,-.36,.54,-.57],["c",.18,-.42,.27,-.9,.3,-1.95],["c",.03,-1.2,-.06,-1.8,-.36,-2.37],["c",-.24,-.48,-.63,-.81,-1.14,-.96],["c",-.3,-.06,-1.08,-.06,-1.38,.03],["c",-.6,.15,-.9,.42,-.96,.84],["c",-.03,.3,.06,.45,.63,.84],["c",.33,.24,.42,.39,.45,.63],["c",.03,.72,-.57,1.5,-1.32,1.65],["c",-1.05,.27,-2.1,-.57,-2.1,-1.65],["c",0,-.45,.15,-.96,.39,-1.38],["c",.12,-.21,.54,-.63,.81,-.81],["c",.57,-.42,1.38,-.69,2.25,-.81],["z"]],w:9.735,h:14.967},4:{d:[["M",8.64,-14.94],["c",.27,-.09,.42,-.12,.54,-.03],["c",.09,.06,.15,.21,.15,.3],["c",-.03,.06,-1.92,2.31,-4.23,5.04],["c",-2.31,2.73,-4.23,4.98,-4.26,5.01],["c",-.03,.06,.12,.06,2.55,.06],["l",2.61,0],["l",0,-2.37],["c",0,-2.19,.03,-2.37,.06,-2.46],["c",.03,-.06,.21,-.18,.57,-.42],["c",1.08,-.72,1.38,-1.08,1.86,-2.16],["c",.12,-.3,.24,-.54,.27,-.57],["c",.12,-.12,.39,-.06,.45,.12],["c",.06,.09,.06,.57,.06,3.96],["l",0,3.9],["l",1.08,0],["c",1.05,0,1.11,0,1.2,.06],["c",.24,.15,.24,.54,0,.69],["c",-.09,.06,-.15,.06,-1.2,.06],["l",-1.08,0],["l",0,.33],["c",0,.57,.09,1.11,.3,1.53],["c",.36,.75,.93,1.17,1.68,1.26],["c",.3,.03,.39,.09,.39,.3],["c",0,.15,-.03,.18,-.09,.24],["c",-.06,.06,-.09,.06,-.48,.06],["c",-.42,0,-.69,-.03,-2.1,-.24],["c",-.9,-.15,-1.77,-.15,-2.67,0],["c",-1.41,.21,-1.68,.24,-2.1,.24],["c",-.39,0,-.42,0,-.48,-.06],["c",-.06,-.06,-.06,-.09,-.06,-.24],["c",0,-.21,.06,-.27,.36,-.3],["c",.75,-.09,1.32,-.51,1.68,-1.26],["c",.21,-.42,.3,-.96,.3,-1.53],["l",0,-.33],["l",-2.7,0],["c",-2.91,0,-2.85,0,-3.09,-.15],["c",-.18,-.12,-.3,-.39,-.27,-.54],["c",.03,-.06,.18,-.24,.33,-.45],["c",.75,-.9,1.59,-2.07,2.13,-3.03],["c",.33,-.54,.84,-1.62,1.05,-2.16],["c",.57,-1.41,.84,-2.64,.9,-4.05],["c",.03,-.63,.06,-.72,.24,-.81],["l",.12,-.06],["l",.45,.12],["c",.66,.18,1.02,.24,1.47,.27],["c",.6,.03,1.23,-.09,2.01,-.33],["z"]],w:11.795,h:14.994},5:{d:[["M",1.02,-14.94],["c",.12,-.09,.03,-.09,1.08,.06],["c",2.49,.36,4.35,.36,6.96,-.06],["c",.57,-.09,.66,-.06,.81,.06],["c",.15,.18,.12,.24,-.15,.51],["c",-1.29,1.26,-3.24,2.04,-5.58,2.31],["c",-.6,.09,-1.2,.12,-1.71,.12],["c",-.39,0,-.45,0,-.57,.06],["c",-.09,.06,-.15,.12,-.21,.21],["l",-.06,.12],["l",0,1.65],["l",0,1.65],["l",.21,-.21],["c",.66,-.57,1.41,-.96,2.19,-1.14],["c",.33,-.06,1.41,-.06,1.95,0],["c",2.61,.36,4.02,1.74,4.26,4.14],["c",.03,.45,.03,1.08,-.03,1.44],["c",-.18,1.02,-.78,2.01,-1.59,2.7],["c",-.72,.57,-1.62,1.02,-2.49,1.2],["c",-1.38,.27,-3.03,.06,-4.2,-.54],["c",-1.08,-.54,-1.71,-1.32,-1.86,-2.28],["c",-.09,-.69,.09,-1.29,.57,-1.74],["c",.24,-.24,.45,-.39,.75,-.51],["c",.21,-.06,.27,-.06,.6,-.06],["c",.33,0,.39,0,.6,.06],["c",.3,.12,.51,.27,.75,.51],["c",.36,.33,.57,.75,.6,1.2],["c",0,.21,0,.27,-.06,.42],["c",-.09,.18,-.12,.24,-.54,.54],["c",-.18,.12,-.36,.3,-.42,.33],["c",-.36,.42,-.18,.99,.36,1.26],["c",.51,.27,1.47,.36,2.01,.27],["c",.93,-.21,1.47,-1.17,1.65,-2.91],["c",.06,-.45,.06,-1.89,0,-2.31],["c",-.15,-1.2,-.51,-2.1,-1.05,-2.55],["c",-.21,-.18,-.54,-.36,-.81,-.39],["c",-.3,-.06,-.84,-.03,-1.26,.06],["c",-.93,.18,-1.65,.6,-2.16,1.2],["c",-.15,.21,-.27,.3,-.39,.3],["c",-.15,0,-.3,-.09,-.36,-.18],["c",-.06,-.09,-.06,-.15,-.06,-3.66],["c",0,-3.39,0,-3.57,.06,-3.66],["c",.03,-.06,.09,-.15,.15,-.18],["z"]],w:10.212,h:14.997},6:{d:[["M",4.98,-14.97],["c",.36,-.03,1.2,0,1.59,.06],["c",.9,.15,1.68,.51,2.25,1.05],["c",.57,.51,.87,1.23,.84,1.98],["c",-.03,.51,-.21,.9,-.6,1.26],["c",-.24,.24,-.45,.39,-.75,.51],["c",-.21,.06,-.27,.06,-.6,.06],["c",-.33,0,-.39,0,-.6,-.06],["c",-.3,-.12,-.51,-.27,-.75,-.51],["c",-.39,-.36,-.57,-.78,-.57,-1.26],["c",0,-.27,0,-.3,.09,-.42],["c",.03,-.09,.18,-.21,.3,-.3],["c",.12,-.09,.3,-.21,.39,-.27],["c",.09,-.06,.21,-.18,.27,-.24],["c",.06,-.12,.09,-.15,.09,-.33],["c",0,-.18,-.03,-.24,-.09,-.36],["c",-.24,-.39,-.75,-.6,-1.38,-.57],["c",-.54,.03,-.9,.18,-1.23,.48],["c",-.81,.72,-1.08,2.16,-.96,5.37],["l",0,.63],["l",.3,-.12],["c",.78,-.27,1.29,-.33,2.1,-.27],["c",1.47,.12,2.49,.54,3.27,1.29],["c",.48,.51,.81,1.11,.96,1.89],["c",.06,.27,.06,.42,.06,.93],["c",0,.54,0,.69,-.06,.96],["c",-.15,.78,-.48,1.38,-.96,1.89],["c",-.54,.51,-1.17,.87,-1.98,1.08],["c",-1.14,.3,-2.4,.33,-3.24,.03],["c",-1.5,-.48,-2.64,-1.89,-3.27,-4.02],["c",-.36,-1.23,-.51,-2.82,-.42,-4.08],["c",.3,-3.66,2.28,-6.3,4.95,-6.66],["z"],["m",.66,7.41],["c",-.27,-.09,-.81,-.12,-1.08,-.06],["c",-.72,.18,-1.08,.69,-1.23,1.71],["c",-.06,.54,-.06,3,0,3.54],["c",.18,1.26,.72,1.77,1.8,1.74],["c",.39,-.03,.63,-.09,.9,-.27],["c",.66,-.42,.9,-1.32,.9,-3.24],["c",0,-2.22,-.36,-3.12,-1.29,-3.42],["z"]],w:9.956,h:14.982},7:{d:[["M",.21,-14.97],["c",.21,-.06,.45,0,.54,.15],["c",.06,.09,.06,.15,.06,.39],["c",0,.24,0,.33,.06,.42],["c",.06,.12,.21,.24,.27,.24],["c",.03,0,.12,-.12,.24,-.21],["c",.96,-1.2,2.58,-1.35,3.99,-.42],["c",.15,.12,.42,.3,.54,.45],["c",.48,.39,.81,.57,1.29,.6],["c",.69,.03,1.5,-.3,2.13,-.87],["c",.09,-.09,.27,-.3,.39,-.45],["c",.12,-.15,.24,-.27,.3,-.3],["c",.18,-.06,.39,.03,.51,.21],["c",.06,.18,.06,.24,-.27,.72],["c",-.18,.24,-.54,.78,-.78,1.17],["c",-2.37,3.54,-3.54,6.27,-3.87,9],["c",-.03,.33,-.03,.66,-.03,1.26],["c",0,.9,0,1.08,.15,1.89],["c",.06,.45,.06,.48,.03,.6],["c",-.06,.09,-.21,.21,-.3,.21],["c",-.03,0,-.27,-.06,-.54,-.15],["c",-.84,-.27,-1.11,-.3,-1.65,-.3],["c",-.57,0,-.84,.03,-1.56,.27],["c",-.6,.18,-.69,.21,-.81,.15],["c",-.12,-.06,-.21,-.18,-.21,-.3],["c",0,-.15,.6,-1.44,1.2,-2.61],["c",1.14,-2.22,2.73,-4.68,5.1,-8.01],["c",.21,-.27,.36,-.48,.33,-.48],["c",0,0,-.12,.06,-.27,.12],["c",-.54,.3,-.99,.39,-1.56,.39],["c",-.75,.03,-1.2,-.18,-1.83,-.75],["c",-.99,-.9,-1.83,-1.17,-2.31,-.72],["c",-.18,.15,-.36,.51,-.45,.84],["c",-.06,.24,-.06,.33,-.09,1.98],["c",0,1.62,-.03,1.74,-.06,1.8],["c",-.15,.24,-.54,.24,-.69,0],["c",-.06,-.09,-.06,-.15,-.06,-3.57],["c",0,-3.42,0,-3.48,.06,-3.57],["c",.03,-.06,.09,-.12,.15,-.15],["z"]],w:10.561,h:15.093},8:{d:[["M",4.98,-14.97],["c",.33,-.03,1.02,-.03,1.32,0],["c",1.32,.12,2.49,.6,3.21,1.32],["c",.39,.39,.66,.81,.78,1.29],["c",.09,.36,.09,1.08,0,1.44],["c",-.21,.84,-.66,1.59,-1.59,2.55],["l",-.3,.3],["l",.27,.18],["c",1.47,.93,2.31,2.31,2.25,3.75],["c",-.03,.75,-.24,1.35,-.63,1.95],["c",-.45,.66,-1.02,1.14,-1.83,1.53],["c",-1.8,.87,-4.2,.87,-6,.03],["c",-1.62,-.78,-2.52,-2.16,-2.46,-3.66],["c",.06,-.99,.54,-1.77,1.8,-2.97],["c",.54,-.51,.54,-.54,.48,-.57],["c",-.39,-.27,-.96,-.78,-1.2,-1.14],["c",-.75,-1.11,-.87,-2.4,-.3,-3.6],["c",.69,-1.35,2.25,-2.25,4.2,-2.4],["z"],["m",1.53,.69],["c",-.42,-.09,-1.11,-.12,-1.38,-.06],["c",-.3,.06,-.6,.18,-.81,.3],["c",-.21,.12,-.6,.51,-.72,.72],["c",-.51,.87,-.42,1.89,.21,2.52],["c",.21,.21,.36,.3,1.95,1.23],["c",.96,.54,1.74,.99,1.77,1.02],["c",.09,0,.63,-.6,.99,-1.11],["c",.21,-.36,.48,-.87,.57,-1.23],["c",.06,-.24,.06,-.36,.06,-.72],["c",0,-.45,-.03,-.66,-.15,-.99],["c",-.39,-.81,-1.29,-1.44,-2.49,-1.68],["z"],["m",-1.44,8.07],["l",-1.89,-1.08],["c",-.03,0,-.18,.15,-.39,.33],["c",-1.2,1.08,-1.65,1.95,-1.59,3],["c",.09,1.59,1.35,2.85,3.21,3.24],["c",.33,.06,.45,.06,.93,.06],["c",.63,0,.81,-.03,1.29,-.27],["c",.9,-.42,1.47,-1.41,1.41,-2.4],["c",-.06,-.66,-.39,-1.29,-.9,-1.65],["c",-.12,-.09,-1.05,-.63,-2.07,-1.23],["z"]],w:10.926,h:14.989},9:{d:[["M",4.23,-14.97],["c",.42,-.03,1.29,0,1.62,.06],["c",.51,.12,.93,.3,1.38,.57],["c",1.53,1.02,2.52,3.24,2.73,5.94],["c",.18,2.55,-.48,4.98,-1.83,6.57],["c",-1.05,1.26,-2.4,1.89,-3.93,1.83],["c",-1.23,-.06,-2.31,-.45,-3.03,-1.14],["c",-.57,-.51,-.87,-1.23,-.84,-1.98],["c",.03,-.51,.21,-.9,.6,-1.26],["c",.24,-.24,.45,-.39,.75,-.51],["c",.21,-.06,.27,-.06,.6,-.06],["c",.33,0,.39,0,.6,.06],["c",.3,.12,.51,.27,.75,.51],["c",.39,.36,.57,.78,.57,1.26],["c",0,.27,0,.3,-.09,.42],["c",-.03,.09,-.18,.21,-.3,.3],["c",-.12,.09,-.3,.21,-.39,.27],["c",-.09,.06,-.21,.18,-.27,.24],["c",-.06,.12,-.06,.15,-.06,.33],["c",0,.18,0,.24,.06,.36],["c",.24,.39,.75,.6,1.38,.57],["c",.54,-.03,.9,-.18,1.23,-.48],["c",.81,-.72,1.08,-2.16,.96,-5.37],["l",0,-.63],["l",-.3,.12],["c",-.78,.27,-1.29,.33,-2.1,.27],["c",-1.47,-.12,-2.49,-.54,-3.27,-1.29],["c",-.48,-.51,-.81,-1.11,-.96,-1.89],["c",-.06,-.27,-.06,-.42,-.06,-.96],["c",0,-.51,0,-.66,.06,-.93],["c",.15,-.78,.48,-1.38,.96,-1.89],["c",.15,-.12,.33,-.27,.42,-.36],["c",.69,-.51,1.62,-.81,2.76,-.93],["z"],["m",1.17,.66],["c",-.21,-.06,-.57,-.06,-.81,-.03],["c",-.78,.12,-1.26,.69,-1.41,1.74],["c",-.12,.63,-.15,1.95,-.09,2.79],["c",.12,1.71,.63,2.4,1.77,2.46],["c",1.08,.03,1.62,-.48,1.8,-1.74],["c",.06,-.54,.06,-3,0,-3.54],["c",-.15,-1.05,-.51,-1.53,-1.26,-1.68],["z"]],w:9.959,h:14.986},"rests.multimeasure":{d:[["M",0,-4],["l",0,16],["l",1,0],["l",0,-5],["l",40,0],["l",0,5],["l",1,0],["l",0,-16],["l",-1,0],["l",0,5],["l",-40,0],["l",0,-5],["z"]],w:42,h:18},"rests.whole":{d:[["M",.06,.03],["l",.09,-.06],["l",5.46,0],["l",5.49,0],["l",.09,.06],["l",.06,.09],["l",0,2.19],["l",0,2.19],["l",-.06,.09],["l",-.09,.06],["l",-5.49,0],["l",-5.46,0],["l",-.09,-.06],["l",-.06,-.09],["l",0,-2.19],["l",0,-2.19],["z"]],w:11.25,h:4.68},"rests.half":{d:[["M",.06,-4.62],["l",.09,-.06],["l",5.46,0],["l",5.49,0],["l",.09,.06],["l",.06,.09],["l",0,2.19],["l",0,2.19],["l",-.06,.09],["l",-.09,.06],["l",-5.49,0],["l",-5.46,0],["l",-.09,-.06],["l",-.06,-.09],["l",0,-2.19],["l",0,-2.19],["z"]],w:11.25,h:4.68},"rests.quarter":{d:[["M",1.89,-11.82],["c",.12,-.06,.24,-.06,.36,-.03],["c",.09,.06,4.74,5.58,4.86,5.82],["c",.21,.39,.15,.78,-.15,1.26],["c",-.24,.33,-.72,.81,-1.62,1.56],["c",-.45,.36,-.87,.75,-.96,.84],["c",-.93,.99,-1.14,2.49,-.6,3.63],["c",.18,.39,.27,.48,1.32,1.68],["c",1.92,2.25,1.83,2.16,1.83,2.34],["c",0,.18,-.18,.36,-.36,.39],["c",-.15,0,-.27,-.06,-.48,-.27],["c",-.75,-.75,-2.46,-1.29,-3.39,-1.08],["c",-.45,.09,-.69,.27,-.9,.69],["c",-.12,.3,-.21,.66,-.24,1.14],["c",-.03,.66,.09,1.35,.3,2.01],["c",.15,.42,.24,.66,.45,.96],["c",.18,.24,.18,.33,.03,.42],["c",-.12,.06,-.18,.03,-.45,-.3],["c",-1.08,-1.38,-2.07,-3.36,-2.4,-4.83],["c",-.27,-1.05,-.15,-1.77,.27,-2.07],["c",.21,-.12,.42,-.15,.87,-.15],["c",.87,.06,2.1,.39,3.3,.9],["l",.39,.18],["l",-1.65,-1.95],["c",-2.52,-2.97,-2.61,-3.09,-2.7,-3.27],["c",-.09,-.24,-.12,-.48,-.03,-.75],["c",.15,-.48,.57,-.96,1.83,-2.01],["c",.45,-.36,.84,-.72,.93,-.78],["c",.69,-.75,1.02,-1.8,.9,-2.79],["c",-.06,-.33,-.21,-.84,-.39,-1.11],["c",-.09,-.15,-.45,-.6,-.81,-1.05],["c",-.36,-.42,-.69,-.81,-.72,-.87],["c",-.09,-.18,0,-.42,.21,-.51],["z"]],w:7.888,h:21.435},"rests.8th":{d:[["M",1.68,-6.12],["c",.66,-.09,1.23,.09,1.68,.51],["c",.27,.3,.39,.54,.57,1.26],["c",.09,.33,.18,.66,.21,.72],["c",.12,.27,.33,.45,.6,.48],["c",.12,0,.18,0,.33,-.09],["c",.39,-.18,1.32,-1.29,1.68,-1.98],["c",.09,-.21,.24,-.3,.39,-.3],["c",.12,0,.27,.09,.33,.18],["c",.03,.06,-.27,1.11,-1.86,6.42],["c",-1.02,3.48,-1.89,6.39,-1.92,6.42],["c",0,.03,-.12,.12,-.24,.15],["c",-.18,.09,-.21,.09,-.45,.09],["c",-.24,0,-.3,0,-.48,-.06],["c",-.09,-.06,-.21,-.12,-.21,-.15],["c",-.06,-.03,.15,-.57,1.68,-4.92],["c",.96,-2.67,1.74,-4.89,1.71,-4.89],["l",-.51,.15],["c",-1.08,.36,-1.74,.48,-2.55,.48],["c",-.66,0,-.84,-.03,-1.32,-.27],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.33,-.45,.84,-.81,1.38,-.9],["z"]],w:7.534,h:13.883},"rests.16th":{d:[["M",3.33,-6.12],["c",.66,-.09,1.23,.09,1.68,.51],["c",.27,.3,.39,.54,.57,1.26],["c",.09,.33,.18,.66,.21,.72],["c",.15,.39,.57,.57,.87,.42],["c",.39,-.18,1.2,-1.23,1.62,-2.07],["c",.06,-.15,.24,-.24,.36,-.24],["c",.12,0,.27,.09,.33,.18],["c",.03,.06,-.45,1.86,-2.67,10.17],["c",-1.5,5.55,-2.73,10.14,-2.76,10.17],["c",-.03,.03,-.12,.12,-.24,.15],["c",-.18,.09,-.21,.09,-.45,.09],["c",-.24,0,-.3,0,-.48,-.06],["c",-.09,-.06,-.21,-.12,-.21,-.15],["c",-.06,-.03,.12,-.57,1.44,-4.92],["c",.81,-2.67,1.47,-4.86,1.47,-4.89],["c",-.03,0,-.27,.06,-.54,.15],["c",-1.08,.36,-1.77,.48,-2.58,.48],["c",-.66,0,-.84,-.03,-1.32,-.27],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.72,-1.05,2.22,-1.23,3.06,-.42],["c",.3,.33,.42,.6,.6,1.38],["c",.09,.45,.21,.78,.33,.9],["c",.09,.09,.27,.18,.45,.21],["c",.12,0,.18,0,.33,-.09],["c",.33,-.15,1.02,-.93,1.41,-1.59],["c",.12,-.21,.18,-.39,.39,-1.08],["c",.66,-2.1,1.17,-3.84,1.17,-3.87],["c",0,0,-.21,.06,-.42,.15],["c",-.51,.15,-1.2,.33,-1.68,.42],["c",-.33,.06,-.51,.06,-.96,.06],["c",-.66,0,-.84,-.03,-1.32,-.27],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.33,-.45,.84,-.81,1.38,-.9],["z"]],w:9.724,h:21.383},"rests.32nd":{d:[["M",4.23,-13.62],["c",.66,-.09,1.23,.09,1.68,.51],["c",.27,.3,.39,.54,.57,1.26],["c",.09,.33,.18,.66,.21,.72],["c",.12,.27,.33,.45,.6,.48],["c",.12,0,.18,0,.27,-.06],["c",.33,-.21,.99,-1.11,1.44,-1.98],["c",.09,-.24,.21,-.33,.39,-.33],["c",.12,0,.27,.09,.33,.18],["c",.03,.06,-.57,2.67,-3.21,13.89],["c",-1.8,7.62,-3.3,13.89,-3.3,13.92],["c",-.03,.06,-.12,.12,-.24,.18],["c",-.21,.09,-.24,.09,-.48,.09],["c",-.24,0,-.3,0,-.48,-.06],["c",-.09,-.06,-.21,-.12,-.21,-.15],["c",-.06,-.03,.09,-.57,1.23,-4.92],["c",.69,-2.67,1.26,-4.86,1.29,-4.89],["c",0,-.03,-.12,-.03,-.48,.12],["c",-1.17,.39,-2.22,.57,-3,.54],["c",-.42,-.03,-.75,-.12,-1.11,-.3],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.72,-1.05,2.22,-1.23,3.06,-.42],["c",.3,.33,.42,.6,.6,1.38],["c",.09,.45,.21,.78,.33,.9],["c",.12,.09,.3,.18,.48,.21],["c",.12,0,.18,0,.3,-.09],["c",.42,-.21,1.29,-1.29,1.56,-1.89],["c",.03,-.12,1.23,-4.59,1.23,-4.65],["c",0,-.03,-.18,.03,-.39,.12],["c",-.63,.18,-1.2,.36,-1.74,.45],["c",-.39,.06,-.54,.06,-1.02,.06],["c",-.66,0,-.84,-.03,-1.32,-.27],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.72,-1.05,2.22,-1.23,3.06,-.42],["c",.3,.33,.42,.6,.6,1.38],["c",.09,.45,.21,.78,.33,.9],["c",.18,.18,.51,.27,.72,.15],["c",.3,-.12,.69,-.57,1.08,-1.17],["c",.42,-.6,.39,-.51,1.05,-3.03],["c",.33,-1.26,.6,-2.31,.6,-2.34],["c",0,0,-.21,.03,-.45,.12],["c",-.57,.18,-1.14,.33,-1.62,.42],["c",-.33,.06,-.51,.06,-.96,.06],["c",-.66,0,-.84,-.03,-1.32,-.27],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.33,-.45,.84,-.81,1.38,-.9],["z"]],w:11.373,h:28.883},"rests.64th":{d:[["M",5.13,-13.62],["c",.66,-.09,1.23,.09,1.68,.51],["c",.27,.3,.39,.54,.57,1.26],["c",.15,.63,.21,.81,.33,.96],["c",.18,.21,.54,.3,.75,.18],["c",.24,-.12,.63,-.66,1.08,-1.56],["c",.33,-.66,.39,-.72,.6,-.72],["c",.12,0,.27,.09,.33,.18],["c",.03,.06,-.69,3.66,-3.54,17.64],["c",-1.95,9.66,-3.57,17.61,-3.57,17.64],["c",-.03,.06,-.12,.12,-.24,.18],["c",-.21,.09,-.24,.09,-.48,.09],["c",-.24,0,-.3,0,-.48,-.06],["c",-.09,-.06,-.21,-.12,-.21,-.15],["c",-.06,-.03,.06,-.57,1.05,-4.95],["c",.6,-2.7,1.08,-4.89,1.08,-4.92],["c",0,0,-.24,.06,-.51,.15],["c",-.66,.24,-1.2,.36,-1.77,.48],["c",-.42,.06,-.57,.06,-1.05,.06],["c",-.69,0,-.87,-.03,-1.35,-.27],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.72,-1.05,2.22,-1.23,3.06,-.42],["c",.3,.33,.42,.6,.6,1.38],["c",.09,.45,.21,.78,.33,.9],["c",.09,.09,.27,.18,.45,.21],["c",.21,.03,.39,-.09,.72,-.42],["c",.45,-.45,1.02,-1.26,1.17,-1.65],["c",.03,-.09,.27,-1.14,.54,-2.34],["c",.27,-1.2,.48,-2.19,.51,-2.22],["c",0,-.03,-.09,-.03,-.48,.12],["c",-1.17,.39,-2.22,.57,-3,.54],["c",-.42,-.03,-.75,-.12,-1.11,-.3],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.36,-.54,.96,-.87,1.65,-.93],["c",.54,-.03,1.02,.15,1.41,.54],["c",.27,.3,.39,.54,.57,1.26],["c",.09,.33,.18,.66,.21,.72],["c",.15,.39,.57,.57,.9,.42],["c",.36,-.18,1.2,-1.26,1.47,-1.89],["c",.03,-.09,.3,-1.2,.57,-2.43],["l",.51,-2.28],["l",-.54,.18],["c",-1.11,.36,-1.8,.48,-2.61,.48],["c",-.66,0,-.84,-.03,-1.32,-.27],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.36,-.54,.96,-.87,1.65,-.93],["c",.54,-.03,1.02,.15,1.41,.54],["c",.27,.3,.39,.54,.57,1.26],["c",.15,.63,.21,.81,.33,.96],["c",.21,.21,.54,.3,.75,.18],["c",.36,-.18,.93,-.93,1.29,-1.68],["c",.12,-.24,.18,-.48,.63,-2.55],["l",.51,-2.31],["c",0,-.03,-.18,.03,-.39,.12],["c",-1.14,.36,-2.1,.54,-2.82,.51],["c",-.42,-.03,-.75,-.12,-1.11,-.3],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.33,-.45,.84,-.81,1.38,-.9],["z"]],w:12.453,h:36.383},"rests.128th":{d:[["M",6.03,-21.12],["c",.66,-.09,1.23,.09,1.68,.51],["c",.27,.3,.39,.54,.57,1.26],["c",.09,.33,.18,.66,.21,.72],["c",.12,.27,.33,.45,.6,.48],["c",.21,0,.33,-.06,.54,-.36],["c",.15,-.21,.54,-.93,.78,-1.47],["c",.15,-.33,.18,-.39,.3,-.48],["c",.18,-.09,.45,0,.51,.15],["c",.03,.09,-7.11,42.75,-7.17,42.84],["c",-.03,.03,-.15,.09,-.24,.15],["c",-.18,.06,-.24,.06,-.45,.06],["c",-.24,0,-.3,0,-.48,-.06],["c",-.09,-.06,-.21,-.12,-.21,-.15],["c",-.06,-.03,.03,-.57,.84,-4.98],["c",.51,-2.7,.93,-4.92,.9,-4.92],["c",0,0,-.15,.06,-.36,.12],["c",-.78,.27,-1.62,.48,-2.31,.57],["c",-.15,.03,-.54,.03,-.81,.03],["c",-.66,0,-.84,-.03,-1.32,-.27],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.36,-.54,.96,-.87,1.65,-.93],["c",.54,-.03,1.02,.15,1.41,.54],["c",.27,.3,.39,.54,.57,1.26],["c",.09,.33,.18,.66,.21,.72],["c",.12,.27,.33,.45,.63,.48],["c",.12,0,.18,0,.3,-.09],["c",.42,-.21,1.14,-1.11,1.5,-1.83],["c",.12,-.27,.12,-.27,.54,-2.52],["c",.24,-1.23,.42,-2.25,.39,-2.25],["c",0,0,-.24,.06,-.51,.18],["c",-1.26,.39,-2.25,.57,-3.06,.54],["c",-.42,-.03,-.75,-.12,-1.11,-.3],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.36,-.54,.96,-.87,1.65,-.93],["c",.54,-.03,1.02,.15,1.41,.54],["c",.27,.3,.39,.54,.57,1.26],["c",.15,.63,.21,.81,.33,.96],["c",.18,.21,.51,.3,.75,.18],["c",.36,-.15,1.05,-.99,1.41,-1.77],["l",.15,-.3],["l",.42,-2.25],["c",.21,-1.26,.42,-2.28,.39,-2.28],["l",-.51,.15],["c",-1.11,.39,-1.89,.51,-2.7,.51],["c",-.66,0,-.84,-.03,-1.32,-.27],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.36,-.54,.96,-.87,1.65,-.93],["c",.54,-.03,1.02,.15,1.41,.54],["c",.27,.3,.39,.54,.57,1.26],["c",.15,.63,.21,.81,.33,.96],["c",.18,.18,.48,.27,.72,.21],["c",.33,-.12,1.14,-1.26,1.41,-1.95],["c",0,-.09,.21,-1.11,.45,-2.34],["c",.21,-1.2,.39,-2.22,.39,-2.28],["c",.03,-.03,0,-.03,-.45,.12],["c",-.57,.18,-1.2,.33,-1.71,.42],["c",-.3,.06,-.51,.06,-.93,.06],["c",-.66,0,-.84,-.03,-1.32,-.27],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.36,-.54,.96,-.87,1.65,-.93],["c",.54,-.03,1.02,.15,1.41,.54],["c",.27,.3,.39,.54,.57,1.26],["c",.09,.33,.18,.66,.21,.72],["c",.12,.27,.33,.45,.6,.48],["c",.18,0,.36,-.09,.57,-.33],["c",.33,-.36,.78,-1.14,.93,-1.56],["c",.03,-.12,.24,-1.2,.45,-2.4],["c",.24,-1.2,.42,-2.22,.42,-2.28],["c",.03,-.03,0,-.03,-.39,.09],["c",-1.05,.36,-1.8,.48,-2.58,.48],["c",-.63,0,-.84,-.03,-1.29,-.27],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.33,-.45,.84,-.81,1.38,-.9],["z"]],w:12.992,h:43.883},"accidentals.sharp":{d:[["M",5.73,-11.19],["c",.21,-.12,.54,-.03,.66,.24],["c",.06,.12,.06,.21,.06,2.31],["c",0,1.23,0,2.22,.03,2.22],["c",0,0,.27,-.12,.6,-.24],["c",.69,-.27,.78,-.3,.96,-.15],["c",.21,.15,.21,.18,.21,1.38],["c",0,1.02,0,1.11,-.06,1.2],["c",-.03,.06,-.09,.12,-.12,.15],["c",-.06,.03,-.42,.21,-.84,.36],["l",-.75,.33],["l",-.03,2.43],["c",0,1.32,0,2.43,.03,2.43],["c",0,0,.27,-.12,.6,-.24],["c",.69,-.27,.78,-.3,.96,-.15],["c",.21,.15,.21,.18,.21,1.38],["c",0,1.02,0,1.11,-.06,1.2],["c",-.03,.06,-.09,.12,-.12,.15],["c",-.06,.03,-.42,.21,-.84,.36],["l",-.75,.33],["l",-.03,2.52],["c",0,2.28,-.03,2.55,-.06,2.64],["c",-.21,.36,-.72,.36,-.93,0],["c",-.03,-.09,-.06,-.33,-.06,-2.43],["l",0,-2.31],["l",-1.29,.51],["l",-1.26,.51],["l",0,2.43],["c",0,2.58,0,2.52,-.15,2.67],["c",-.06,.09,-.27,.18,-.36,.18],["c",-.12,0,-.33,-.09,-.39,-.18],["c",-.15,-.15,-.15,-.09,-.15,-2.43],["c",0,-1.23,0,-2.22,-.03,-2.22],["c",0,0,-.27,.12,-.6,.24],["c",-.69,.27,-.78,.3,-.96,.15],["c",-.21,-.15,-.21,-.18,-.21,-1.38],["c",0,-1.02,0,-1.11,.06,-1.2],["c",.03,-.06,.09,-.12,.12,-.15],["c",.06,-.03,.42,-.21,.84,-.36],["l",.78,-.33],["l",0,-2.43],["c",0,-1.32,0,-2.43,-.03,-2.43],["c",0,0,-.27,.12,-.6,.24],["c",-.69,.27,-.78,.3,-.96,.15],["c",-.21,-.15,-.21,-.18,-.21,-1.38],["c",0,-1.02,0,-1.11,.06,-1.2],["c",.03,-.06,.09,-.12,.12,-.15],["c",.06,-.03,.42,-.21,.84,-.36],["l",.78,-.33],["l",0,-2.52],["c",0,-2.28,.03,-2.55,.06,-2.64],["c",.21,-.36,.72,-.36,.93,0],["c",.03,.09,.06,.33,.06,2.43],["l",.03,2.31],["l",1.26,-.51],["l",1.26,-.51],["l",0,-2.43],["c",0,-2.28,0,-2.43,.06,-2.55],["c",.06,-.12,.12,-.18,.27,-.24],["z"],["m",-.33,10.65],["l",0,-2.43],["l",-1.29,.51],["l",-1.26,.51],["l",0,2.46],["l",0,2.43],["l",.09,-.03],["c",.06,-.03,.63,-.27,1.29,-.51],["l",1.17,-.48],["l",0,-2.46],["z"]],w:8.25,h:22.462},"accidentals.halfsharp":{d:[["M",2.43,-10.05],["c",.21,-.12,.54,-.03,.66,.24],["c",.06,.12,.06,.21,.06,2.01],["c",0,1.05,0,1.89,.03,1.89],["l",.72,-.48],["c",.69,-.48,.69,-.51,.87,-.51],["c",.15,0,.18,.03,.27,.09],["c",.21,.15,.21,.18,.21,1.41],["c",0,1.11,-.03,1.14,-.09,1.23],["c",-.03,.03,-.48,.39,-1.02,.75],["l",-.99,.66],["l",0,2.37],["c",0,1.32,0,2.37,.03,2.37],["l",.72,-.48],["c",.69,-.48,.69,-.51,.87,-.51],["c",.15,0,.18,.03,.27,.09],["c",.21,.15,.21,.18,.21,1.41],["c",0,1.11,-.03,1.14,-.09,1.23],["c",-.03,.03,-.48,.39,-1.02,.75],["l",-.99,.66],["l",0,2.25],["c",0,1.95,0,2.28,-.06,2.37],["c",-.06,.12,-.12,.21,-.24,.27],["c",-.27,.12,-.54,.03,-.69,-.24],["c",-.06,-.12,-.06,-.21,-.06,-2.01],["c",0,-1.05,0,-1.89,-.03,-1.89],["l",-.72,.48],["c",-.69,.48,-.69,.48,-.87,.48],["c",-.15,0,-.18,0,-.27,-.06],["c",-.21,-.15,-.21,-.18,-.21,-1.41],["c",0,-1.11,.03,-1.14,.09,-1.23],["c",.03,-.03,.48,-.39,1.02,-.75],["l",.99,-.66],["l",0,-2.37],["c",0,-1.32,0,-2.37,-.03,-2.37],["l",-.72,.48],["c",-.69,.48,-.69,.48,-.87,.48],["c",-.15,0,-.18,0,-.27,-.06],["c",-.21,-.15,-.21,-.18,-.21,-1.41],["c",0,-1.11,.03,-1.14,.09,-1.23],["c",.03,-.03,.48,-.39,1.02,-.75],["l",.99,-.66],["l",0,-2.25],["c",0,-2.13,0,-2.28,.06,-2.4],["c",.06,-.12,.12,-.18,.27,-.24],["z"]],w:5.25,h:20.174},"accidentals.nat":{d:[["M",.21,-11.4],["c",.24,-.06,.78,0,.99,.15],["c",.03,.03,.03,.48,0,2.61],["c",-.03,1.44,-.03,2.61,-.03,2.61],["c",0,.03,.75,-.09,1.68,-.24],["c",.96,-.18,1.71,-.27,1.74,-.27],["c",.15,.03,.27,.15,.36,.3],["l",.06,.12],["l",.09,8.67],["c",.09,6.96,.12,8.67,.09,8.67],["c",-.03,.03,-.12,.06,-.21,.09],["c",-.24,.09,-.72,.09,-.96,0],["c",-.09,-.03,-.18,-.06,-.21,-.09],["c",-.03,-.03,-.03,-.48,0,-2.61],["c",.03,-1.44,.03,-2.61,.03,-2.61],["c",0,-.03,-.75,.09,-1.68,.24],["c",-.96,.18,-1.71,.27,-1.74,.27],["c",-.15,-.03,-.27,-.15,-.36,-.3],["l",-.06,-.15],["l",-.09,-7.53],["c",-.06,-4.14,-.09,-8.04,-.12,-8.67],["l",0,-1.11],["l",.15,-.06],["c",.09,-.03,.21,-.06,.27,-.09],["z"],["m",3.75,8.4],["c",0,-.33,0,-.42,-.03,-.42],["c",-.12,0,-2.79,.45,-2.79,.48],["c",-.03,0,-.09,6.3,-.09,6.33],["c",.03,0,2.79,-.45,2.82,-.48],["c",0,0,.09,-4.53,.09,-5.91],["z"]],w:5.4,h:22.8},"accidentals.flat":{d:[["M",-.36,-14.07],["c",.33,-.06,.87,0,1.08,.15],["c",.06,.03,.06,.36,-.03,5.25],["c",-.06,2.85,-.09,5.19,-.09,5.19],["c",0,.03,.12,-.03,.24,-.12],["c",.63,-.42,1.41,-.66,2.19,-.72],["c",.81,-.03,1.47,.21,2.04,.78],["c",.57,.54,.87,1.26,.93,2.04],["c",.03,.57,-.09,1.08,-.36,1.62],["c",-.42,.81,-1.02,1.38,-2.82,2.61],["c",-1.14,.78,-1.44,1.02,-1.8,1.44],["c",-.18,.18,-.39,.39,-.45,.42],["c",-.27,.18,-.57,.15,-.81,-.06],["c",-.06,-.09,-.12,-.18,-.15,-.27],["c",-.03,-.06,-.09,-3.27,-.18,-8.34],["c",-.09,-4.53,-.15,-8.58,-.18,-9.03],["l",0,-.78],["l",.12,-.06],["c",.06,-.03,.18,-.09,.27,-.12],["z"],["m",3.18,11.01],["c",-.21,-.12,-.54,-.15,-.81,-.06],["c",-.54,.15,-.99,.63,-1.17,1.26],["c",-.06,.3,-.12,2.88,-.06,3.87],["c",.03,.42,.03,.81,.06,.9],["l",.03,.12],["l",.45,-.39],["c",.63,-.54,1.26,-1.17,1.56,-1.59],["c",.3,-.42,.6,-.99,.72,-1.41],["c",.18,-.69,.09,-1.47,-.18,-2.07],["c",-.15,-.3,-.33,-.51,-.6,-.63],["z"]],w:6.75,h:18.801},"accidentals.halfflat":{d:[["M",4.83,-14.07],["c",.33,-.06,.87,0,1.08,.15],["c",.06,.03,.06,.6,-.12,9.06],["c",-.09,5.55,-.15,9.06,-.18,9.12],["c",-.03,.09,-.09,.18,-.15,.27],["c",-.24,.21,-.54,.24,-.81,.06],["c",-.06,-.03,-.27,-.24,-.45,-.42],["c",-.36,-.42,-.66,-.66,-1.8,-1.44],["c",-1.23,-.84,-1.83,-1.32,-2.25,-1.77],["c",-.66,-.78,-.96,-1.56,-.93,-2.46],["c",.09,-1.41,1.11,-2.58,2.4,-2.79],["c",.3,-.06,.84,-.03,1.23,.06],["c",.54,.12,1.08,.33,1.53,.63],["c",.12,.09,.24,.15,.24,.12],["c",0,0,-.12,-8.37,-.18,-9.75],["l",0,-.66],["l",.12,-.06],["c",.06,-.03,.18,-.09,.27,-.12],["z"],["m",-1.65,10.95],["c",-.6,-.18,-1.08,.09,-1.38,.69],["c",-.27,.6,-.36,1.38,-.18,2.07],["c",.12,.42,.42,.99,.72,1.41],["c",.3,.42,.93,1.05,1.56,1.59],["l",.48,.39],["l",0,-.12],["c",.03,-.09,.03,-.48,.06,-.9],["c",.03,-.57,.03,-1.08,0,-2.22],["c",-.03,-1.62,-.03,-1.62,-.24,-2.07],["c",-.21,-.42,-.6,-.75,-1.02,-.84],["z"]],w:6.728,h:18.801},"accidentals.dblflat":{d:[["M",-.36,-14.07],["c",.33,-.06,.87,0,1.08,.15],["c",.06,.03,.06,.36,-.03,5.25],["c",-.06,2.85,-.09,5.19,-.09,5.19],["c",0,.03,.12,-.03,.24,-.12],["c",.63,-.42,1.41,-.66,2.19,-.72],["c",.81,-.03,1.47,.21,2.04,.78],["c",.57,.54,.87,1.26,.93,2.04],["c",.03,.57,-.09,1.08,-.36,1.62],["c",-.42,.81,-1.02,1.38,-2.82,2.61],["c",-1.14,.78,-1.44,1.02,-1.8,1.44],["c",-.18,.18,-.39,.39,-.45,.42],["c",-.27,.18,-.57,.15,-.81,-.06],["c",-.06,-.09,-.12,-.18,-.15,-.27],["c",-.03,-.06,-.09,-3.27,-.18,-8.34],["c",-.09,-4.53,-.15,-8.58,-.18,-9.03],["l",0,-.78],["l",.12,-.06],["c",.06,-.03,.18,-.09,.27,-.12],["z"],["m",3.18,11.01],["c",-.21,-.12,-.54,-.15,-.81,-.06],["c",-.54,.15,-.99,.63,-1.17,1.26],["c",-.06,.3,-.12,2.88,-.06,3.87],["c",.03,.42,.03,.81,.06,.9],["l",.03,.12],["l",.45,-.39],["c",.63,-.54,1.26,-1.17,1.56,-1.59],["c",.3,-.42,.6,-.99,.72,-1.41],["c",.18,-.69,.09,-1.47,-.18,-2.07],["c",-.15,-.3,-.33,-.51,-.6,-.63],["z"],["m",3,-11],["c",.33,-.06,.87,0,1.08,.15],["c",.06,.03,.06,.36,-.03,5.25],["c",-.06,2.85,-.09,5.19,-.09,5.19],["c",0,.03,.12,-.03,.24,-.12],["c",.63,-.42,1.41,-.66,2.19,-.72],["c",.81,-.03,1.47,.21,2.04,.78],["c",.57,.54,.87,1.26,.93,2.04],["c",.03,.57,-.09,1.08,-.36,1.62],["c",-.42,.81,-1.02,1.38,-2.82,2.61],["c",-1.14,.78,-1.44,1.02,-1.8,1.44],["c",-.18,.18,-.39,.39,-.45,.42],["c",-.27,.18,-.57,.15,-.81,-.06],["c",-.06,-.09,-.12,-.18,-.15,-.27],["c",-.03,-.06,-.09,-3.27,-.18,-8.34],["c",-.09,-4.53,-.15,-8.58,-.18,-9.03],["l",0,-.78],["l",.12,-.06],["c",.06,-.03,.18,-.09,.27,-.12],["z"],["m",3.18,11.01],["c",-.21,-.12,-.54,-.15,-.81,-.06],["c",-.54,.15,-.99,.63,-1.17,1.26],["c",-.06,.3,-.12,2.88,-.06,3.87],["c",.03,.42,.03,.81,.06,.9],["l",.03,.12],["l",.45,-.39],["c",.63,-.54,1.26,-1.17,1.56,-1.59],["c",.3,-.42,.6,-.99,.72,-1.41],["c",.18,-.69,.09,-1.47,-.18,-2.07],["c",-.15,-.3,-.33,-.51,-.6,-.63],["z"]],w:12.1,h:18.804},"accidentals.dblsharp":{d:[["M",-.18,-3.96],["c",.06,-.03,.12,-.06,.15,-.06],["c",.09,0,2.76,.27,2.79,.3],["c",.12,.03,.15,.12,.15,.51],["c",.06,.96,.24,1.59,.57,2.1],["c",.06,.09,.15,.21,.18,.24],["l",.09,.06],["l",.09,-.06],["c",.03,-.03,.12,-.15,.18,-.24],["c",.33,-.51,.51,-1.14,.57,-2.1],["c",0,-.39,.03,-.45,.12,-.51],["c",.03,0,.66,-.09,1.44,-.15],["c",1.47,-.15,1.5,-.15,1.56,-.03],["c",.03,.06,0,.42,-.09,1.44],["c",-.09,.72,-.15,1.35,-.15,1.38],["c",0,.03,-.03,.09,-.06,.12],["c",-.06,.06,-.12,.09,-.51,.09],["c",-1.08,.06,-1.8,.3,-2.28,.75],["l",-.12,.09],["l",.09,.09],["c",.12,.15,.39,.33,.63,.45],["c",.42,.18,.96,.27,1.68,.33],["c",.39,0,.45,.03,.51,.09],["c",.03,.03,.06,.09,.06,.12],["c",0,.03,.06,.66,.15,1.38],["c",.09,1.02,.12,1.38,.09,1.44],["c",-.06,.12,-.09,.12,-1.56,-.03],["c",-.78,-.06,-1.41,-.15,-1.44,-.15],["c",-.09,-.06,-.12,-.12,-.12,-.54],["c",-.06,-.93,-.24,-1.56,-.57,-2.07],["c",-.06,-.09,-.15,-.21,-.18,-.24],["l",-.09,-.06],["l",-.09,.06],["c",-.03,.03,-.12,.15,-.18,.24],["c",-.33,.51,-.51,1.14,-.57,2.07],["c",0,.42,-.03,.48,-.12,.54],["c",-.03,0,-.66,.09,-1.44,.15],["c",-1.47,.15,-1.5,.15,-1.56,.03],["c",-.03,-.06,0,-.42,.09,-1.44],["c",.09,-.72,.15,-1.35,.15,-1.38],["c",0,-.03,.03,-.09,.06,-.12],["c",.06,-.06,.12,-.09,.51,-.09],["c",.72,-.06,1.26,-.15,1.68,-.33],["c",.24,-.12,.51,-.3,.63,-.45],["l",.09,-.09],["l",-.12,-.09],["c",-.48,-.45,-1.2,-.69,-2.28,-.75],["c",-.39,0,-.45,-.03,-.51,-.09],["c",-.03,-.03,-.06,-.09,-.06,-.12],["c",0,-.03,-.06,-.63,-.12,-1.38],["c",-.09,-.72,-.15,-1.35,-.15,-1.38],["z"]],w:7.95,h:7.977},"dots.dot":{d:[["M",1.32,-1.68],["c",.09,-.03,.27,-.06,.39,-.06],["c",.96,0,1.74,.78,1.74,1.71],["c",0,.96,-.78,1.74,-1.71,1.74],["c",-.96,0,-1.74,-.78,-1.74,-1.71],["c",0,-.78,.54,-1.5,1.32,-1.68],["z"]],w:3.45,h:3.45},"noteheads.dbl":{d:[["M",-.69,-4.02],["c",.18,-.09,.36,-.09,.54,0],["c",.18,.09,.24,.15,.33,.3],["c",.06,.15,.06,.18,.06,1.41],["l",0,1.23],["l",.12,-.18],["c",.72,-1.26,2.64,-2.31,4.86,-2.64],["c",.81,-.15,1.11,-.15,2.13,-.15],["c",.99,0,1.29,0,2.1,.15],["c",.75,.12,1.38,.27,2.04,.54],["c",1.35,.51,2.34,1.26,2.82,2.1],["l",.12,.18],["l",0,-1.23],["c",0,-1.2,0,-1.26,.06,-1.38],["c",.09,-.18,.15,-.24,.33,-.33],["c",.18,-.09,.36,-.09,.54,0],["c",.18,.09,.24,.15,.33,.3],["l",.06,.15],["l",0,3.54],["l",0,3.54],["l",-.06,.15],["c",-.09,.18,-.15,.24,-.33,.33],["c",-.18,.09,-.36,.09,-.54,0],["c",-.18,-.09,-.24,-.15,-.33,-.33],["c",-.06,-.12,-.06,-.18,-.06,-1.38],["l",0,-1.23],["l",-.12,.18],["c",-.48,.84,-1.47,1.59,-2.82,2.1],["c",-.84,.33,-1.71,.54,-2.85,.66],["c",-.45,.06,-2.16,.06,-2.61,0],["c",-1.14,-.12,-2.01,-.33,-2.85,-.66],["c",-1.35,-.51,-2.34,-1.26,-2.82,-2.1],["l",-.12,-.18],["l",0,1.23],["c",0,1.23,0,1.26,-.06,1.38],["c",-.09,.18,-.15,.24,-.33,.33],["c",-.18,.09,-.36,.09,-.54,0],["c",-.18,-.09,-.24,-.15,-.33,-.33],["l",-.06,-.15],["l",0,-3.54],["c",0,-3.48,0,-3.54,.06,-3.66],["c",.09,-.18,.15,-.24,.33,-.33],["z"],["m",7.71,.63],["c",-.36,-.06,-.9,-.06,-1.14,0],["c",-.3,.03,-.66,.24,-.87,.42],["c",-.6,.54,-.9,1.62,-.75,2.82],["c",.12,.93,.51,1.68,1.11,2.31],["c",.75,.72,1.83,1.2,2.85,1.26],["c",1.05,.06,1.83,-.54,2.1,-1.65],["c",.21,-.9,.12,-1.95,-.24,-2.82],["c",-.36,-.81,-1.08,-1.53,-1.95,-1.95],["c",-.3,-.15,-.78,-.3,-1.11,-.39],["z"]],w:16.83,h:8.145},"noteheads.whole":{d:[["M",6.51,-4.05],["c",.51,-.03,2.01,0,2.52,.03],["c",1.41,.18,2.64,.51,3.72,1.08],["c",1.2,.63,1.95,1.41,2.19,2.31],["c",.09,.33,.09,.9,0,1.23],["c",-.24,.9,-.99,1.68,-2.19,2.31],["c",-1.08,.57,-2.28,.9,-3.75,1.08],["c",-.66,.06,-2.31,.06,-2.97,0],["c",-1.47,-.18,-2.67,-.51,-3.75,-1.08],["c",-1.2,-.63,-1.95,-1.41,-2.19,-2.31],["c",-.09,-.33,-.09,-.9,0,-1.23],["c",.24,-.9,.99,-1.68,2.19,-2.31],["c",1.2,-.63,2.61,-.99,4.23,-1.11],["z"],["m",.57,.66],["c",-.87,-.15,-1.53,0,-2.04,.51],["c",-.15,.15,-.24,.27,-.33,.48],["c",-.24,.51,-.36,1.08,-.33,1.77],["c",.03,.69,.18,1.26,.42,1.77],["c",.6,1.17,1.74,1.98,3.18,2.22],["c",1.11,.21,1.95,-.15,2.34,-.99],["c",.24,-.51,.36,-1.08,.33,-1.8],["c",-.06,-1.11,-.45,-2.04,-1.17,-2.76],["c",-.63,-.63,-1.47,-1.05,-2.4,-1.2],["z"]],w:14.985,h:8.097},"noteheads.half":{d:[["M",7.44,-4.05],["c",.06,-.03,.27,-.03,.48,-.03],["c",1.05,0,1.71,.24,2.1,.81],["c",.42,.6,.45,1.35,.18,2.4],["c",-.42,1.59,-1.14,2.73,-2.16,3.39],["c",-1.41,.93,-3.18,1.44,-5.4,1.53],["c",-1.17,.03,-1.89,-.21,-2.28,-.81],["c",-.42,-.6,-.45,-1.35,-.18,-2.4],["c",.42,-1.59,1.14,-2.73,2.16,-3.39],["c",.63,-.42,1.23,-.72,1.98,-.96],["c",.9,-.3,1.65,-.42,3.12,-.54],["z"],["m",1.29,.87],["c",-.27,-.09,-.63,-.12,-.9,-.03],["c",-.72,.24,-1.53,.69,-3.27,1.8],["c",-2.34,1.5,-3.3,2.25,-3.57,2.79],["c",-.36,.72,-.06,1.5,.66,1.77],["c",.24,.12,.69,.09,.99,0],["c",.84,-.3,1.92,-.93,4.14,-2.37],["c",1.62,-1.08,2.37,-1.71,2.61,-2.19],["c",.36,-.72,.06,-1.5,-.66,-1.77],["z"]],w:10.37,h:8.132},"noteheads.quarter":{d:[["M",6.09,-4.05],["c",.36,-.03,1.2,0,1.53,.06],["c",1.17,.24,1.89,.84,2.16,1.83],["c",.06,.18,.06,.3,.06,.66],["c",0,.45,0,.63,-.15,1.08],["c",-.66,2.04,-3.06,3.93,-5.52,4.38],["c",-.54,.09,-1.44,.09,-1.83,.03],["c",-1.23,-.27,-1.98,-.87,-2.25,-1.86],["c",-.06,-.18,-.06,-.3,-.06,-.66],["c",0,-.45,0,-.63,.15,-1.08],["c",.24,-.78,.75,-1.53,1.44,-2.22],["c",1.2,-1.2,2.85,-2.01,4.47,-2.22],["z"]],w:9.81,h:8.094},"noteheads.slash.nostem":{d:[["M",9.3,-7.77],["c",.06,-.06,.18,-.06,1.71,-.06],["l",1.65,0],["l",.09,.09],["c",.06,.06,.06,.09,.06,.15],["c",-.03,.12,-9.21,15.24,-9.3,15.33],["c",-.06,.06,-.18,.06,-1.71,.06],["l",-1.65,0],["l",-.09,-.09],["c",-.06,-.06,-.06,-.09,-.06,-.15],["c",.03,-.12,9.21,-15.24,9.3,-15.33],["z"]],w:12.81,h:15.63},"noteheads.indeterminate":{d:[["M",.78,-4.05],["c",.12,-.03,.24,-.03,.36,.03],["c",.03,.03,.93,.72,1.95,1.56],["l",1.86,1.5],["l",1.86,-1.5],["c",1.02,-.84,1.92,-1.53,1.95,-1.56],["c",.21,-.12,.33,-.09,.75,.24],["c",.3,.27,.36,.36,.36,.54],["c",0,.03,-.03,.12,-.06,.18],["c",-.03,.06,-.9,.75,-1.89,1.56],["l",-1.8,1.47],["c",0,.03,.81,.69,1.8,1.5],["c",.99,.81,1.86,1.5,1.89,1.56],["c",.03,.06,.06,.15,.06,.18],["c",0,.18,-.06,.27,-.36,.54],["c",-.42,.33,-.54,.36,-.75,.24],["c",-.03,-.03,-.93,-.72,-1.95,-1.56],["l",-1.86,-1.5],["l",-1.86,1.5],["c",-1.02,.84,-1.92,1.53,-1.95,1.56],["c",-.21,.12,-.33,.09,-.75,-.24],["c",-.3,-.27,-.36,-.36,-.36,-.54],["c",0,-.03,.03,-.12,.06,-.18],["c",.03,-.06,.9,-.75,1.89,-1.56],["l",1.8,-1.47],["c",0,-.03,-.81,-.69,-1.8,-1.5],["c",-.99,-.81,-1.86,-1.5,-1.89,-1.56],["c",-.06,-.12,-.09,-.21,-.03,-.36],["c",.03,-.09,.57,-.57,.72,-.63],["z"]],w:9.843,h:8.139},"scripts.ufermata":{d:[["M",-.75,-10.77],["c",.12,0,.45,-.03,.69,-.03],["c",2.91,-.03,5.55,1.53,7.41,4.35],["c",1.17,1.71,1.95,3.72,2.43,6.03],["c",.12,.51,.12,.57,.03,.69],["c",-.12,.21,-.48,.27,-.69,.12],["c",-.12,-.09,-.18,-.24,-.27,-.69],["c",-.78,-3.63,-3.42,-6.54,-6.78,-7.38],["c",-.78,-.21,-1.2,-.24,-2.07,-.24],["c",-.63,0,-.84,0,-1.2,.06],["c",-1.83,.27,-3.42,1.08,-4.8,2.37],["c",-1.41,1.35,-2.4,3.21,-2.85,5.19],["c",-.09,.45,-.15,.6,-.27,.69],["c",-.21,.15,-.57,.09,-.69,-.12],["c",-.09,-.12,-.09,-.18,.03,-.69],["c",.33,-1.62,.78,-3,1.47,-4.38],["c",1.77,-3.54,4.44,-5.67,7.56,-5.97],["z"],["m",.33,7.47],["c",1.38,-.3,2.58,.9,2.31,2.25],["c",-.15,.72,-.78,1.35,-1.47,1.5],["c",-1.38,.27,-2.58,-.93,-2.31,-2.31],["c",.15,-.69,.78,-1.29,1.47,-1.44],["z"]],w:19.748,h:11.289},"scripts.dfermata":{d:[["M",-9.63,-.42],["c",.15,-.09,.36,-.06,.51,.03],["c",.12,.09,.18,.24,.27,.66],["c",.78,3.66,3.42,6.57,6.78,7.41],["c",.78,.21,1.2,.24,2.07,.24],["c",.63,0,.84,0,1.2,-.06],["c",1.83,-.27,3.42,-1.08,4.8,-2.37],["c",1.41,-1.35,2.4,-3.21,2.85,-5.22],["c",.09,-.42,.15,-.57,.27,-.66],["c",.21,-.15,.57,-.09,.69,.12],["c",.09,.12,.09,.18,-.03,.69],["c",-.33,1.62,-.78,3,-1.47,4.38],["c",-1.92,3.84,-4.89,6,-8.31,6],["c",-3.42,0,-6.39,-2.16,-8.31,-6],["c",-.48,-.96,-.84,-1.92,-1.14,-2.97],["c",-.18,-.69,-.42,-1.74,-.42,-1.92],["c",0,-.12,.09,-.27,.24,-.33],["z"],["m",9.21,0],["c",1.2,-.27,2.34,.63,2.34,1.86],["c",0,.9,-.66,1.68,-1.5,1.89],["c",-1.38,.27,-2.58,-.93,-2.31,-2.31],["c",.15,-.69,.78,-1.29,1.47,-1.44],["z"]],w:19.744,h:11.274},"scripts.sforzato":{d:[["M",-6.45,-3.69],["c",.06,-.03,.15,-.06,.18,-.06],["c",.06,0,2.85,.72,6.24,1.59],["l",6.33,1.65],["c",.33,.06,.45,.21,.45,.51],["c",0,.3,-.12,.45,-.45,.51],["l",-6.33,1.65],["c",-3.39,.87,-6.18,1.59,-6.21,1.59],["c",-.21,0,-.48,-.24,-.51,-.45],["c",0,-.15,.06,-.36,.18,-.45],["c",.09,-.06,.87,-.27,3.84,-1.05],["c",2.04,-.54,3.84,-.99,4.02,-1.02],["c",.15,-.06,1.14,-.24,2.22,-.42],["c",1.05,-.18,1.92,-.36,1.92,-.36],["c",0,0,-.87,-.18,-1.92,-.36],["c",-1.08,-.18,-2.07,-.36,-2.22,-.42],["c",-.18,-.03,-1.98,-.48,-4.02,-1.02],["c",-2.97,-.78,-3.75,-.99,-3.84,-1.05],["c",-.12,-.09,-.18,-.3,-.18,-.45],["c",.03,-.15,.15,-.3,.3,-.39],["z"]],w:13.5,h:7.5},"scripts.staccato":{d:[["M",-.36,-1.47],["c",.93,-.21,1.86,.51,1.86,1.47],["c",0,.93,-.87,1.65,-1.8,1.47],["c",-.54,-.12,-1.02,-.57,-1.14,-1.08],["c",-.21,-.81,.27,-1.65,1.08,-1.86],["z"]],w:2.989,h:3.004},"scripts.tenuto":{d:[["M",-4.2,-.48],["l",.12,-.06],["l",4.08,0],["l",4.08,0],["l",.12,.06],["c",.39,.21,.39,.75,0,.96],["l",-.12,.06],["l",-4.08,0],["l",-4.08,0],["l",-.12,-.06],["c",-.39,-.21,-.39,-.75,0,-.96],["z"]],w:8.985,h:1.08},"scripts.umarcato":{d:[["M",-.15,-8.19],["c",.15,-.12,.36,-.03,.45,.15],["c",.21,.42,3.45,7.65,3.45,7.71],["c",0,.12,-.12,.27,-.21,.3],["c",-.03,.03,-.51,.03,-1.14,.03],["c",-1.05,0,-1.08,0,-1.17,-.06],["c",-.09,-.06,-.24,-.36,-1.17,-2.4],["c",-.57,-1.29,-1.05,-2.34,-1.08,-2.34],["c",0,-.03,-.51,1.02,-1.08,2.34],["c",-.93,2.07,-1.08,2.34,-1.14,2.4],["c",-.06,.03,-.15,.06,-.18,.06],["c",-.15,0,-.33,-.18,-.33,-.33],["c",0,-.06,3.24,-7.32,3.45,-7.71],["c",.03,-.06,.09,-.15,.15,-.15],["z"]],w:7.5,h:8.245},"scripts.dmarcato":{d:[["M",-3.57,.03],["c",.03,0,.57,-.03,1.17,-.03],["c",1.05,0,1.08,0,1.17,.06],["c",.09,.06,.24,.36,1.17,2.4],["c",.57,1.29,1.05,2.34,1.08,2.34],["c",0,.03,.51,-1.02,1.08,-2.34],["c",.93,-2.07,1.08,-2.34,1.14,-2.4],["c",.06,-.03,.15,-.06,.18,-.06],["c",.15,0,.33,.18,.33,.33],["c",0,.09,-3.45,7.74,-3.54,7.83],["c",-.12,.12,-.3,.12,-.42,0],["c",-.09,-.09,-3.54,-7.74,-3.54,-7.83],["c",0,-.09,.12,-.27,.18,-.3],["z"]],w:7.5,h:8.25},"scripts.stopped":{d:[["M",-.27,-4.08],["c",.18,-.09,.36,-.09,.54,0],["c",.18,.09,.24,.15,.33,.3],["l",.06,.15],["l",0,1.5],["l",0,1.47],["l",1.47,0],["l",1.5,0],["l",.15,.06],["c",.15,.09,.21,.15,.3,.33],["c",.09,.18,.09,.36,0,.54],["c",-.09,.18,-.15,.24,-.33,.33],["c",-.12,.06,-.18,.06,-1.62,.06],["l",-1.47,0],["l",0,1.47],["l",0,1.47],["l",-.06,.15],["c",-.09,.18,-.15,.24,-.33,.33],["c",-.18,.09,-.36,.09,-.54,0],["c",-.18,-.09,-.24,-.15,-.33,-.33],["l",-.06,-.15],["l",0,-1.47],["l",0,-1.47],["l",-1.47,0],["c",-1.44,0,-1.5,0,-1.62,-.06],["c",-.18,-.09,-.24,-.15,-.33,-.33],["c",-.09,-.18,-.09,-.36,0,-.54],["c",.09,-.18,.15,-.24,.33,-.33],["l",.15,-.06],["l",1.47,0],["l",1.47,0],["l",0,-1.47],["c",0,-1.44,0,-1.5,.06,-1.62],["c",.09,-.18,.15,-.24,.33,-.33],["z"]],w:8.295,h:8.295},"scripts.upbow":{d:[["M",-4.65,-15.54],["c",.12,-.09,.36,-.06,.48,.03],["c",.03,.03,.09,.09,.12,.15],["c",.03,.06,.66,2.13,1.41,4.62],["c",1.35,4.41,1.38,4.56,2.01,6.96],["l",.63,2.46],["l",.63,-2.46],["c",.63,-2.4,.66,-2.55,2.01,-6.96],["c",.75,-2.49,1.38,-4.56,1.41,-4.62],["c",.06,-.15,.18,-.21,.36,-.24],["c",.15,0,.3,.06,.39,.18],["c",.15,.21,.24,-.18,-2.1,7.56],["c",-1.2,3.96,-2.22,7.32,-2.25,7.41],["c",0,.12,-.06,.27,-.09,.3],["c",-.12,.21,-.6,.21,-.72,0],["c",-.03,-.03,-.09,-.18,-.09,-.3],["c",-.03,-.09,-1.05,-3.45,-2.25,-7.41],["c",-2.34,-7.74,-2.25,-7.35,-2.1,-7.56],["c",.03,-.03,.09,-.09,.15,-.12],["z"]],w:9.73,h:15.608},"scripts.downbow":{d:[["M",-5.55,-9.93],["l",.09,-.06],["l",5.46,0],["l",5.46,0],["l",.09,.06],["l",.06,.09],["l",0,4.77],["c",0,5.28,0,4.89,-.18,5.01],["c",-.18,.12,-.42,.06,-.54,-.12],["c",-.06,-.09,-.06,-.18,-.06,-2.97],["l",0,-2.85],["l",-4.83,0],["l",-4.83,0],["l",0,2.85],["c",0,2.79,0,2.88,-.06,2.97],["c",-.15,.24,-.51,.24,-.66,0],["c",-.06,-.09,-.06,-.21,-.06,-4.89],["l",0,-4.77],["z"]],w:11.22,h:9.992},"scripts.turn":{d:[["M",-4.77,-3.9],["c",.36,-.06,1.05,-.06,1.44,.03],["c",.78,.15,1.5,.51,2.34,1.14],["c",.6,.45,1.05,.87,2.22,2.01],["c",1.11,1.08,1.62,1.5,2.22,1.86],["c",.6,.36,1.32,.57,1.92,.57],["c",.9,0,1.71,-.57,1.89,-1.35],["c",.24,-.93,-.39,-1.89,-1.35,-2.1],["l",-.15,-.06],["l",-.09,.15],["c",-.03,.09,-.15,.24,-.24,.33],["c",-.72,.72,-2.04,.54,-2.49,-.36],["c",-.48,-.93,.03,-1.86,1.17,-2.19],["c",.3,-.09,1.02,-.09,1.35,0],["c",.99,.27,1.74,.87,2.25,1.83],["c",.69,1.41,.63,3,-.21,4.26],["c",-.21,.3,-.69,.81,-.99,1.02],["c",-.3,.21,-.84,.45,-1.17,.54],["c",-1.23,.36,-2.49,.15,-3.72,-.6],["c",-.75,-.48,-1.41,-1.02,-2.85,-2.46],["c",-1.11,-1.08,-1.62,-1.5,-2.22,-1.86],["c",-.6,-.36,-1.32,-.57,-1.92,-.57],["c",-.9,0,-1.71,.57,-1.89,1.35],["c",-.24,.93,.39,1.89,1.35,2.1],["l",.15,.06],["l",.09,-.15],["c",.03,-.09,.15,-.24,.24,-.33],["c",.72,-.72,2.04,-.54,2.49,.36],["c",.48,.93,-.03,1.86,-1.17,2.19],["c",-.3,.09,-1.02,.09,-1.35,0],["c",-.99,-.27,-1.74,-.87,-2.25,-1.83],["c",-.69,-1.41,-.63,-3,.21,-4.26],["c",.21,-.3,.69,-.81,.99,-1.02],["c",.48,-.33,1.11,-.57,1.74,-.66],["z"]],w:16.366,h:7.893},"scripts.trill":{d:[["M",-.51,-16.02],["c",.12,-.09,.21,-.18,.21,-.18],["l",-.81,4.02],["l",-.81,4.02],["c",.03,0,.51,-.27,1.08,-.6],["c",.6,-.3,1.14,-.63,1.26,-.66],["c",1.14,-.54,2.31,-.6,3.09,-.18],["c",.27,.15,.54,.36,.6,.51],["l",.06,.12],["l",.21,-.21],["c",.9,-.81,2.22,-.99,3.12,-.42],["c",.6,.42,.9,1.14,.78,2.07],["c",-.15,1.29,-1.05,2.31,-1.95,2.25],["c",-.48,-.03,-.78,-.3,-.96,-.81],["c",-.09,-.27,-.09,-.9,-.03,-1.2],["c",.21,-.75,.81,-1.23,1.59,-1.32],["l",.24,-.03],["l",-.09,-.12],["c",-.51,-.66,-1.62,-.63,-2.31,.03],["c",-.39,.42,-.3,.09,-1.23,4.77],["l",-.81,4.14],["c",-.03,0,-.12,-.03,-.21,-.09],["c",-.33,-.15,-.54,-.18,-.99,-.18],["c",-.42,0,-.66,.03,-1.05,.18],["c",-.12,.06,-.21,.09,-.21,.09],["c",0,-.03,.36,-1.86,.81,-4.11],["c",.9,-4.47,.87,-4.26,.69,-4.53],["c",-.21,-.36,-.66,-.51,-1.17,-.36],["c",-.15,.06,-2.22,1.14,-2.58,1.38],["c",-.12,.09,-.12,.09,-.21,.6],["l",-.09,.51],["l",.21,.24],["c",.63,.75,1.02,1.47,1.2,2.19],["c",.06,.27,.06,.36,.06,.81],["c",0,.42,0,.54,-.06,.78],["c",-.15,.54,-.33,.93,-.63,1.35],["c",-.18,.24,-.57,.63,-.81,.78],["c",-.24,.15,-.63,.36,-.84,.42],["c",-.27,.06,-.66,.06,-.87,.03],["c",-.81,-.18,-1.32,-1.05,-1.38,-2.46],["c",-.03,-.6,.03,-.99,.33,-2.46],["c",.21,-1.08,.24,-1.32,.21,-1.29],["c",-1.2,.48,-2.4,.75,-3.21,.72],["c",-.69,-.06,-1.17,-.3,-1.41,-.72],["c",-.39,-.75,-.12,-1.8,.66,-2.46],["c",.24,-.18,.69,-.42,1.02,-.51],["c",.69,-.18,1.53,-.15,2.31,.09],["c",.3,.09,.75,.3,.99,.45],["c",.12,.09,.15,.09,.15,.03],["c",.03,-.03,.33,-1.59,.72,-3.45],["c",.36,-1.86,.66,-3.42,.69,-3.45],["c",0,-.03,.03,-.03,.21,.03],["c",.21,.06,.27,.06,.48,.06],["c",.42,-.03,.78,-.18,1.26,-.48],["c",.15,-.12,.36,-.27,.48,-.39],["z"],["m",-5.73,7.68],["c",-.27,-.03,-.96,-.06,-1.2,-.03],["c",-.81,.12,-1.35,.57,-1.5,1.2],["c",-.18,.66,.12,1.14,.75,1.29],["c",.66,.12,1.92,-.12,3.18,-.66],["l",.33,-.15],["l",.09,-.39],["c",.06,-.21,.09,-.42,.09,-.45],["c",0,-.03,-.45,-.3,-.75,-.45],["c",-.27,-.15,-.66,-.27,-.99,-.36],["z"],["m",4.29,3.63],["c",-.24,-.39,-.51,-.75,-.51,-.69],["c",-.06,.12,-.39,1.92,-.45,2.28],["c",-.09,.54,-.12,1.14,-.06,1.38],["c",.06,.42,.21,.6,.51,.57],["c",.39,-.06,.75,-.48,.93,-1.14],["c",.09,-.33,.09,-1.05,0,-1.38],["c",-.09,-.39,-.24,-.69,-.42,-1.02],["z"]],w:17.963,h:16.49},"scripts.segno":{d:[["M",-3.72,-11.22],["c",.78,-.09,1.59,.03,2.31,.42],["c",1.2,.6,2.01,1.71,2.31,3.09],["c",.09,.42,.09,1.2,.03,1.5],["c",-.15,.45,-.39,.81,-.66,.93],["c",-.33,.18,-.84,.21,-1.23,.15],["c",-.81,-.18,-1.32,-.93,-1.26,-1.89],["c",.03,-.36,.09,-.57,.24,-.9],["c",.15,-.33,.45,-.6,.72,-.75],["c",.12,-.06,.18,-.09,.18,-.12],["c",0,-.03,-.03,-.15,-.09,-.24],["c",-.18,-.45,-.54,-.87,-.96,-1.08],["c",-1.11,-.57,-2.34,-.18,-2.88,.9],["c",-.24,.51,-.33,1.11,-.24,1.83],["c",.27,1.92,1.5,3.54,3.93,5.13],["c",.48,.33,1.26,.78,1.29,.78],["c",.03,0,1.35,-2.19,2.94,-4.89],["l",2.88,-4.89],["l",.84,0],["l",.87,0],["l",-.03,.06],["c",-.15,.21,-6.15,10.41,-6.15,10.44],["c",0,0,.21,.15,.48,.27],["c",2.61,1.47,4.35,3.03,5.13,4.65],["c",1.14,2.34,.51,5.07,-1.44,6.39],["c",-.66,.42,-1.32,.63,-2.13,.69],["c",-2.01,.09,-3.81,-1.41,-4.26,-3.54],["c",-.09,-.42,-.09,-1.2,-.03,-1.5],["c",.15,-.45,.39,-.81,.66,-.93],["c",.33,-.18,.84,-.21,1.23,-.15],["c",.81,.18,1.32,.93,1.26,1.89],["c",-.03,.36,-.09,.57,-.24,.9],["c",-.15,.33,-.45,.6,-.72,.75],["c",-.12,.06,-.18,.09,-.18,.12],["c",0,.03,.03,.15,.09,.24],["c",.18,.45,.54,.87,.96,1.08],["c",1.11,.57,2.34,.18,2.88,-.9],["c",.24,-.51,.33,-1.11,.24,-1.83],["c",-.27,-1.92,-1.5,-3.54,-3.93,-5.13],["c",-.48,-.33,-1.26,-.78,-1.29,-.78],["c",-.03,0,-1.35,2.19,-2.91,4.89],["l",-2.88,4.89],["l",-.87,0],["l",-.87,0],["l",.03,-.06],["c",.15,-.21,6.15,-10.41,6.15,-10.44],["c",0,0,-.21,-.15,-.48,-.3],["c",-2.61,-1.44,-4.35,-3,-5.13,-4.62],["c",-.9,-1.89,-.72,-4.02,.48,-5.52],["c",.69,-.84,1.68,-1.41,2.73,-1.53],["z"],["m",8.76,9.09],["c",.03,-.03,.15,-.03,.27,-.03],["c",.33,.03,.57,.18,.72,.48],["c",.09,.18,.09,.57,0,.75],["c",-.09,.18,-.21,.3,-.36,.39],["c",-.15,.06,-.21,.06,-.39,.06],["c",-.21,0,-.27,0,-.39,-.06],["c",-.3,-.15,-.48,-.45,-.48,-.75],["c",0,-.39,.24,-.72,.63,-.84],["z"],["m",-10.53,2.61],["c",.03,-.03,.15,-.03,.27,-.03],["c",.33,.03,.57,.18,.72,.48],["c",.09,.18,.09,.57,0,.75],["c",-.09,.18,-.21,.3,-.36,.39],["c",-.15,.06,-.21,.06,-.39,.06],["c",-.21,0,-.27,0,-.39,-.06],["c",-.3,-.15,-.48,-.45,-.48,-.75],["c",0,-.39,.24,-.72,.63,-.84],["z"]],w:15,h:22.504},"scripts.coda":{d:[["M",-.21,-10.47],["c",.18,-.12,.42,-.06,.54,.12],["c",.06,.09,.06,.18,.06,1.5],["l",0,1.38],["l",.18,0],["c",.39,.06,.96,.24,1.38,.48],["c",1.68,.93,2.82,3.24,3.03,6.12],["c",.03,.24,.03,.45,.03,.45],["c",0,.03,.6,.03,1.35,.03],["c",1.5,0,1.47,0,1.59,.18],["c",.09,.12,.09,.3,0,.42],["c",-.12,.18,-.09,.18,-1.59,.18],["c",-.75,0,-1.35,0,-1.35,.03],["c",0,0,0,.21,-.03,.42],["c",-.24,3.15,-1.53,5.58,-3.45,6.36],["c",-.27,.12,-.72,.24,-.96,.27],["l",-.18,0],["l",0,1.38],["c",0,1.32,0,1.41,-.06,1.5],["c",-.15,.24,-.51,.24,-.66,0],["c",-.06,-.09,-.06,-.18,-.06,-1.5],["l",0,-1.38],["l",-.18,0],["c",-.39,-.06,-.96,-.24,-1.38,-.48],["c",-1.68,-.93,-2.82,-3.24,-3.03,-6.15],["c",-.03,-.21,-.03,-.42,-.03,-.42],["c",0,-.03,-.6,-.03,-1.35,-.03],["c",-1.5,0,-1.47,0,-1.59,-.18],["c",-.09,-.12,-.09,-.3,0,-.42],["c",.12,-.18,.09,-.18,1.59,-.18],["c",.75,0,1.35,0,1.35,-.03],["c",0,0,0,-.21,.03,-.45],["c",.24,-3.12,1.53,-5.55,3.45,-6.33],["c",.27,-.12,.72,-.24,.96,-.27],["l",.18,0],["l",0,-1.38],["c",0,-1.53,0,-1.5,.18,-1.62],["z"],["m",-.18,6.93],["c",0,-2.97,0,-3.15,-.06,-3.15],["c",-.09,0,-.51,.15,-.66,.21],["c",-.87,.51,-1.38,1.62,-1.56,3.51],["c",-.06,.54,-.12,1.59,-.12,2.16],["l",0,.42],["l",1.2,0],["l",1.2,0],["l",0,-3.15],["z"],["m",1.17,-3.06],["c",-.09,-.03,-.21,-.06,-.27,-.09],["l",-.12,0],["l",0,3.15],["l",0,3.15],["l",1.2,0],["l",1.2,0],["l",0,-.81],["c",-.06,-2.4,-.33,-3.69,-.93,-4.59],["c",-.27,-.39,-.66,-.69,-1.08,-.81],["z"],["m",-1.17,10.14],["l",0,-3.15],["l",-1.2,0],["l",-1.2,0],["l",0,.81],["c",.03,.96,.06,1.47,.15,2.13],["c",.24,2.04,.96,3.12,2.13,3.36],["l",.12,0],["l",0,-3.15],["z"],["m",3.18,-2.34],["l",0,-.81],["l",-1.2,0],["l",-1.2,0],["l",0,3.15],["l",0,3.15],["l",.12,0],["c",1.17,-.24,1.89,-1.32,2.13,-3.36],["c",.09,-.66,.12,-1.17,.15,-2.13],["z"]],w:16.035,h:21.062},"scripts.comma":{d:[["M",1.14,-4.62],["c",.3,-.12,.69,-.03,.93,.15],["c",.12,.12,.36,.45,.51,.78],["c",.9,1.77,.54,4.05,-1.08,6.75],["c",-.36,.63,-.87,1.38,-.96,1.44],["c",-.18,.12,-.42,.06,-.54,-.12],["c",-.09,-.18,-.09,-.3,.12,-.6],["c",.96,-1.44,1.44,-2.97,1.38,-4.35],["c",-.06,-.93,-.3,-1.68,-.78,-2.46],["c",-.27,-.39,-.33,-.63,-.24,-.96],["c",.09,-.27,.36,-.54,.66,-.63],["z"]],w:3.042,h:9.237},"scripts.roll":{d:[["M",1.95,-6],["c",.21,-.09,.36,-.09,.57,0],["c",.39,.15,.63,.39,1.47,1.35],["c",.66,.75,.78,.87,1.08,1.05],["c",.75,.45,1.65,.42,2.4,-.06],["c",.12,-.09,.27,-.27,.54,-.6],["c",.42,-.54,.51,-.63,.69,-.63],["c",.09,0,.3,.12,.36,.21],["c",.09,.12,.12,.3,.03,.42],["c",-.06,.12,-3.15,3.9,-3.3,4.08],["c",-.06,.06,-.18,.12,-.27,.18],["c",-.27,.12,-.6,.06,-.99,-.27],["c",-.27,-.21,-.42,-.39,-1.08,-1.14],["c",-.63,-.72,-.81,-.9,-1.17,-1.08],["c",-.36,-.18,-.57,-.21,-.99,-.21],["c",-.39,0,-.63,.03,-.93,.18],["c",-.36,.15,-.51,.27,-.9,.81],["c",-.24,.27,-.45,.51,-.48,.54],["c",-.12,.09,-.27,.06,-.39,0],["c",-.24,-.15,-.33,-.39,-.21,-.6],["c",.09,-.12,3.18,-3.87,3.33,-4.02],["c",.06,-.06,.18,-.15,.24,-.21],["z"]],w:10.817,h:6.125},"scripts.prall":{d:[["M",-4.38,-3.69],["c",.06,-.03,.18,-.06,.24,-.06],["c",.3,0,.27,-.03,1.89,1.95],["l",1.53,1.83],["c",.03,0,.57,-.84,1.23,-1.83],["c",1.14,-1.68,1.23,-1.83,1.35,-1.89],["c",.06,-.03,.18,-.06,.24,-.06],["c",.3,0,.27,-.03,1.89,1.95],["l",1.53,1.83],["l",.48,-.69],["c",.51,-.78,.54,-.84,.69,-.9],["c",.42,-.18,.87,.15,.81,.6],["c",-.03,.12,-.3,.51,-1.5,2.37],["c",-1.38,2.07,-1.5,2.22,-1.62,2.28],["c",-.06,.03,-.18,.06,-.24,.06],["c",-.3,0,-.27,.03,-1.89,-1.95],["l",-1.53,-1.83],["c",-.03,0,-.57,.84,-1.23,1.83],["c",-1.14,1.68,-1.23,1.83,-1.35,1.89],["c",-.06,.03,-.18,.06,-.24,.06],["c",-.3,0,-.27,.03,-1.89,-1.95],["l",-1.53,-1.83],["l",-.48,.69],["c",-.51,.78,-.54,.84,-.69,.9],["c",-.42,.18,-.87,-.15,-.81,-.6],["c",.03,-.12,.3,-.51,1.5,-2.37],["c",1.38,-2.07,1.5,-2.22,1.62,-2.28],["z"]],w:15.011,h:7.5},"scripts.arpeggio":{d:[["M",1.5,0],["c",1.5,2,1.5,3,1.5,3],["s",0,1,-2,1.5],["s",-.5,3,1,5.5],["l",1.5,0],["s",-1.75,-2,-1.9,-3.25],["s",2.15,-.6,2.95,-1.6],["s",.45,-1,.5,-1.25],["s",0,-1,-2,-3.9],["l",-1.5,0],["z"]],w:5,h:10},"scripts.mordent":{d:[["M",-.21,-4.95],["c",.27,-.15,.63,0,.75,.27],["c",.06,.12,.06,.24,.06,1.44],["l",0,1.29],["l",.57,-.84],["c",.51,-.75,.57,-.84,.69,-.9],["c",.06,-.03,.18,-.06,.24,-.06],["c",.3,0,.27,-.03,1.89,1.95],["l",1.53,1.83],["l",.48,-.69],["c",.51,-.78,.54,-.84,.69,-.9],["c",.42,-.18,.87,.15,.81,.6],["c",-.03,.12,-.3,.51,-1.5,2.37],["c",-1.38,2.07,-1.5,2.22,-1.62,2.28],["c",-.06,.03,-.18,.06,-.24,.06],["c",-.3,0,-.27,.03,-1.83,-1.89],["c",-.81,-.99,-1.5,-1.8,-1.53,-1.86],["c",-.06,-.03,-.06,-.03,-.12,.03],["c",-.06,.06,-.06,.15,-.06,2.28],["c",0,1.95,0,2.25,-.06,2.34],["c",-.18,.45,-.81,.48,-1.05,.03],["c",-.03,-.06,-.06,-.24,-.06,-1.41],["l",0,-1.35],["l",-.57,.84],["c",-.54,.78,-.6,.87,-.72,.93],["c",-.06,.03,-.18,.06,-.24,.06],["c",-.3,0,-.27,.03,-1.89,-1.95],["l",-1.53,-1.83],["l",-.48,.69],["c",-.51,.78,-.54,.84,-.69,.9],["c",-.42,.18,-.87,-.15,-.81,-.6],["c",.03,-.12,.3,-.51,1.5,-2.37],["c",1.38,-2.07,1.5,-2.22,1.62,-2.28],["c",.06,-.03,.18,-.06,.24,-.06],["c",.3,0,.27,-.03,1.89,1.95],["l",1.53,1.83],["c",.03,0,.06,-.06,.09,-.09],["c",.06,-.12,.06,-.15,.06,-2.28],["c",0,-1.92,0,-2.22,.06,-2.31],["c",.06,-.15,.15,-.24,.3,-.3],["z"]],w:15.011,h:10.012},"flags.u8th":{d:[["M",-.42,3.75],["l",0,-3.75],["l",.21,0],["l",.21,0],["l",0,.18],["c",0,.3,.06,.84,.12,1.23],["c",.24,1.53,.9,3.12,2.13,5.16],["l",.99,1.59],["c",.87,1.44,1.38,2.34,1.77,3.09],["c",.81,1.68,1.2,3.06,1.26,4.53],["c",.03,1.53,-.21,3.27,-.75,5.01],["c",-.21,.69,-.51,1.5,-.6,1.59],["c",-.09,.12,-.27,.21,-.42,.21],["c",-.15,0,-.42,-.12,-.51,-.21],["c",-.15,-.18,-.18,-.42,-.09,-.66],["c",.15,-.33,.45,-1.2,.57,-1.62],["c",.42,-1.38,.6,-2.58,.6,-3.9],["c",0,-.66,0,-.81,-.06,-1.11],["c",-.39,-2.07,-1.8,-4.26,-4.59,-7.14],["l",-.42,-.45],["l",-.21,0],["l",-.21,0],["l",0,-3.75],["z"]],w:6.692,h:22.59},"flags.u16th":{d:[["M",-.42,7.5],["l",0,-7.5],["l",.21,0],["l",.21,0],["l",0,.39],["c",.06,1.08,.39,2.19,.99,3.39],["c",.45,.9,.87,1.59,1.95,3.12],["c",1.29,1.86,1.77,2.64,2.22,3.57],["c",.45,.93,.72,1.8,.87,2.64],["c",.06,.51,.06,1.5,0,1.92],["c",-.12,.6,-.3,1.2,-.54,1.71],["l",-.09,.24],["l",.18,.45],["c",.51,1.2,.72,2.22,.69,3.42],["c",-.06,1.53,-.39,3.03,-.99,4.53],["c",-.3,.75,-.36,.81,-.57,.9],["c",-.15,.09,-.33,.06,-.48,0],["c",-.18,-.09,-.27,-.18,-.33,-.33],["c",-.09,-.18,-.06,-.3,.12,-.75],["c",.66,-1.41,1.02,-2.88,1.08,-4.32],["c",0,-.6,-.03,-1.05,-.18,-1.59],["c",-.3,-1.2,-.99,-2.4,-2.25,-3.87],["c",-.42,-.48,-1.53,-1.62,-2.19,-2.22],["l",-.45,-.42],["l",-.03,1.11],["l",0,1.11],["l",-.21,0],["l",-.21,0],["l",0,-7.5],["z"],["m",1.65,.09],["c",-.3,-.3,-.69,-.72,-.9,-.87],["l",-.33,-.33],["l",0,.15],["c",0,.3,.06,.81,.15,1.26],["c",.27,1.29,.87,2.61,2.04,4.29],["c",.15,.24,.6,.87,.96,1.38],["l",1.08,1.53],["l",.42,.63],["c",.03,0,.12,-.36,.21,-.72],["c",.06,-.33,.06,-1.2,0,-1.62],["c",-.33,-1.71,-1.44,-3.48,-3.63,-5.7],["z"]],w:6.693,h:26.337},"flags.u32nd":{d:[["M",-.42,11.25],["l",0,-11.25],["l",.21,0],["l",.21,0],["l",0,.36],["c",.09,1.68,.69,3.27,2.07,5.46],["l",.87,1.35],["c",1.02,1.62,1.47,2.37,1.86,3.18],["c",.48,1.02,.78,1.92,.93,2.88],["c",.06,.48,.06,1.5,0,1.89],["c",-.09,.42,-.21,.87,-.36,1.26],["l",-.12,.3],["l",.15,.39],["c",.69,1.56,.84,2.88,.54,4.38],["c",-.09,.45,-.27,1.08,-.45,1.47],["l",-.12,.24],["l",.18,.36],["c",.33,.72,.57,1.56,.69,2.34],["c",.12,1.02,-.06,2.52,-.42,3.84],["c",-.27,.93,-.75,2.13,-.93,2.31],["c",-.18,.15,-.45,.18,-.66,.09],["c",-.18,-.09,-.27,-.18,-.33,-.33],["c",-.09,-.18,-.06,-.3,.06,-.6],["c",.21,-.36,.42,-.9,.57,-1.38],["c",.51,-1.41,.69,-3.06,.48,-4.08],["c",-.15,-.81,-.57,-1.68,-1.2,-2.55],["c",-.72,-.99,-1.83,-2.13,-3.3,-3.33],["l",-.48,-.42],["l",-.03,1.53],["l",0,1.56],["l",-.21,0],["l",-.21,0],["l",0,-11.25],["z"],["m",1.26,-3.96],["c",-.27,-.3,-.54,-.6,-.66,-.72],["l",-.18,-.21],["l",0,.42],["c",.06,.87,.24,1.74,.66,2.67],["c",.36,.87,.96,1.86,1.92,3.18],["c",.21,.33,.63,.87,.87,1.23],["c",.27,.39,.6,.84,.75,1.08],["l",.27,.39],["l",.03,-.12],["c",.12,-.45,.15,-1.05,.09,-1.59],["c",-.27,-1.86,-1.38,-3.78,-3.75,-6.33],["z"],["m",-.27,6.09],["c",-.27,-.21,-.48,-.42,-.51,-.45],["c",-.06,-.03,-.06,-.03,-.06,.21],["c",0,.9,.3,2.04,.81,3.09],["c",.48,1.02,.96,1.77,2.37,3.63],["c",.6,.78,1.05,1.44,1.29,1.77],["c",.06,.12,.15,.21,.15,.18],["c",.03,-.03,.18,-.57,.24,-.87],["c",.06,-.45,.06,-1.32,-.03,-1.74],["c",-.09,-.48,-.24,-.9,-.51,-1.44],["c",-.66,-1.35,-1.83,-2.7,-3.75,-4.38],["z"]],w:6.697,h:32.145},"flags.u64th":{d:[["M",-.42,15],["l",0,-15],["l",.21,0],["l",.21,0],["l",0,.36],["c",.06,1.2,.39,2.37,1.02,3.66],["c",.39,.81,.84,1.56,1.8,3.09],["c",.81,1.26,1.05,1.68,1.35,2.22],["c",.87,1.5,1.35,2.79,1.56,4.08],["c",.06,.54,.06,1.56,-.03,2.04],["c",-.09,.48,-.21,.99,-.36,1.35],["l",-.12,.27],["l",.12,.27],["c",.09,.15,.21,.45,.27,.66],["c",.69,1.89,.63,3.66,-.18,5.46],["l",-.18,.39],["l",.15,.33],["c",.3,.66,.51,1.44,.63,2.1],["c",.06,.48,.06,1.35,0,1.71],["c",-.15,.57,-.42,1.2,-.78,1.68],["l",-.21,.27],["l",.18,.33],["c",.57,1.05,.93,2.13,1.02,3.18],["c",.06,.72,0,1.83,-.21,2.79],["c",-.18,1.02,-.63,2.34,-1.02,3.09],["c",-.15,.33,-.48,.45,-.78,.3],["c",-.18,-.09,-.27,-.18,-.33,-.33],["c",-.09,-.18,-.06,-.3,.03,-.54],["c",.75,-1.5,1.23,-3.45,1.17,-4.89],["c",-.06,-1.02,-.42,-2.01,-1.17,-3.15],["c",-.48,-.72,-1.02,-1.35,-1.89,-2.22],["c",-.57,-.57,-1.56,-1.5,-1.92,-1.77],["l",-.12,-.09],["l",0,1.68],["l",0,1.68],["l",-.21,0],["l",-.21,0],["l",0,-15],["z"],["m",.93,-8.07],["c",-.27,-.3,-.48,-.54,-.51,-.54],["c",0,0,0,.69,.03,1.02],["c",.15,1.47,.75,2.94,2.04,4.83],["l",1.08,1.53],["c",.39,.57,.84,1.2,.99,1.44],["c",.15,.24,.3,.45,.3,.45],["c",0,0,.03,-.09,.06,-.21],["c",.36,-1.59,-.15,-3.33,-1.47,-5.4],["c",-.63,-.93,-1.35,-1.83,-2.52,-3.12],["z"],["m",.06,6.72],["c",-.24,-.21,-.48,-.42,-.51,-.45],["l",-.06,-.06],["l",0,.33],["c",0,1.2,.3,2.34,.93,3.6],["c",.45,.9,.96,1.68,2.25,3.51],["c",.39,.54,.84,1.17,1.02,1.44],["c",.21,.33,.33,.51,.33,.48],["c",.06,-.09,.21,-.63,.3,-.99],["c",.06,-.33,.06,-.45,.06,-.96],["c",0,-.6,-.03,-.84,-.18,-1.35],["c",-.3,-1.08,-1.02,-2.28,-2.13,-3.57],["c",-.39,-.45,-1.44,-1.47,-2.01,-1.98],["z"],["m",0,6.72],["c",-.24,-.21,-.48,-.39,-.51,-.42],["l",-.06,-.06],["l",0,.33],["c",0,1.41,.45,2.82,1.38,4.35],["c",.42,.72,.72,1.14,1.86,2.73],["c",.36,.45,.75,.99,.87,1.2],["c",.15,.21,.3,.36,.3,.36],["c",.06,0,.3,-.48,.39,-.75],["c",.09,-.36,.12,-.63,.12,-1.05],["c",-.06,-1.05,-.45,-2.04,-1.2,-3.18],["c",-.57,-.87,-1.11,-1.53,-2.07,-2.49],["c",-.36,-.33,-.84,-.78,-1.08,-1.02],["z"]],w:6.682,h:39.694},"flags.d8th":{d:[["M",5.67,-21.63],["c",.24,-.12,.54,-.06,.69,.15],["c",.06,.06,.21,.36,.39,.66],["c",.84,1.77,1.26,3.36,1.32,5.1],["c",.03,1.29,-.21,2.37,-.81,3.63],["c",-.6,1.23,-1.26,2.13,-3.21,4.38],["c",-1.35,1.53,-1.86,2.19,-2.4,2.97],["c",-.63,.93,-1.11,1.92,-1.38,2.79],["c",-.15,.54,-.27,1.35,-.27,1.8],["l",0,.15],["l",-.21,0],["l",-.21,0],["l",0,-3.75],["l",0,-3.75],["l",.21,0],["l",.21,0],["l",.48,-.3],["c",1.83,-1.11,3.12,-2.1,4.17,-3.12],["c",.78,-.81,1.32,-1.53,1.71,-2.31],["c",.45,-.93,.6,-1.74,.51,-2.88],["c",-.12,-1.56,-.63,-3.18,-1.47,-4.68],["c",-.12,-.21,-.15,-.33,-.06,-.51],["c",.06,-.15,.15,-.24,.33,-.33],["z"]],w:8.492,h:21.691},"flags.ugrace":{d:[["M",6.03,6.93],["c",.15,-.09,.33,-.06,.51,0],["c",.15,.09,.21,.15,.3,.33],["c",.09,.18,.06,.39,-.03,.54],["c",-.06,.15,-10.89,8.88,-11.07,8.97],["c",-.15,.09,-.33,.06,-.48,0],["c",-.18,-.09,-.24,-.15,-.33,-.33],["c",-.09,-.18,-.06,-.39,.03,-.54],["c",.06,-.15,10.89,-8.88,11.07,-8.97],["z"]],w:12.019,h:9.954},"flags.dgrace":{d:[["M",-6.06,-15.93],["c",.18,-.09,.33,-.12,.48,-.06],["c",.18,.09,14.01,8.04,14.1,8.1],["c",.12,.12,.18,.33,.18,.51],["c",-.03,.21,-.15,.39,-.36,.48],["c",-.18,.09,-.33,.12,-.48,.06],["c",-.18,-.09,-14.01,-8.04,-14.1,-8.1],["c",-.12,-.12,-.18,-.33,-.18,-.51],["c",.03,-.21,.15,-.39,.36,-.48],["z"]],w:15.12,h:9.212},"flags.d16th":{d:[["M",6.84,-22.53],["c",.27,-.12,.57,-.06,.72,.15],["c",.15,.15,.33,.87,.45,1.56],["c",.06,.33,.06,1.35,0,1.65],["c",-.06,.33,-.15,.78,-.27,1.11],["c",-.12,.33,-.45,.96,-.66,1.32],["l",-.18,.27],["l",.09,.18],["c",.48,1.02,.72,2.25,.69,3.3],["c",-.06,1.23,-.42,2.28,-1.26,3.45],["c",-.57,.87,-.99,1.32,-3,3.39],["c",-1.56,1.56,-2.22,2.4,-2.76,3.45],["c",-.42,.84,-.66,1.8,-.66,2.55],["l",0,.15],["l",-.21,0],["l",-.21,0],["l",0,-7.5],["l",0,-7.5],["l",.21,0],["l",.21,0],["l",0,1.14],["l",0,1.11],["l",.27,-.15],["c",1.11,-.57,1.77,-.99,2.52,-1.47],["c",2.37,-1.56,3.69,-3.15,4.05,-4.83],["c",.03,-.18,.03,-.39,.03,-.78],["c",0,-.6,-.03,-.93,-.24,-1.5],["c",-.06,-.18,-.12,-.39,-.15,-.45],["c",-.03,-.24,.12,-.48,.36,-.6],["z"],["m",-.63,7.5],["c",-.06,-.18,-.15,-.36,-.15,-.36],["c",-.03,0,-.03,.03,-.06,.06],["c",-.06,.12,-.96,1.02,-1.95,1.98],["c",-.63,.57,-1.26,1.17,-1.44,1.35],["c",-1.53,1.62,-2.28,2.85,-2.55,4.32],["c",-.03,.18,-.03,.54,-.06,.99],["l",0,.69],["l",.18,-.09],["c",.93,-.54,2.1,-1.29,2.82,-1.83],["c",.69,-.51,1.02,-.81,1.53,-1.29],["c",1.86,-1.89,2.37,-3.66,1.68,-5.82],["z"]],w:8.475,h:22.591},"flags.d32nd":{d:[["M",6.84,-29.13],["c",.27,-.12,.57,-.06,.72,.15],["c",.12,.12,.27,.63,.36,1.11],["c",.33,1.59,.06,3.06,-.81,4.47],["l",-.18,.27],["l",.09,.15],["c",.12,.24,.33,.69,.45,1.05],["c",.63,1.83,.45,3.57,-.57,5.22],["l",-.18,.3],["l",.15,.27],["c",.42,.87,.6,1.71,.57,2.61],["c",-.06,1.29,-.48,2.46,-1.35,3.78],["c",-.54,.81,-.93,1.29,-2.46,3],["c",-.51,.54,-1.05,1.17,-1.26,1.41],["c",-1.56,1.86,-2.25,3.36,-2.37,5.01],["l",0,.33],["l",-.21,0],["l",-.21,0],["l",0,-11.25],["l",0,-11.25],["l",.21,0],["l",.21,0],["l",0,1.35],["l",.03,1.35],["l",.78,-.39],["c",1.38,-.69,2.34,-1.26,3.24,-1.92],["c",1.38,-1.02,2.28,-2.13,2.64,-3.21],["c",.15,-.48,.18,-.72,.18,-1.29],["c",0,-.57,-.06,-.9,-.24,-1.47],["c",-.06,-.18,-.12,-.39,-.15,-.45],["c",-.03,-.24,.12,-.48,.36,-.6],["z"],["m",-.63,7.2],["c",-.09,-.18,-.12,-.21,-.12,-.15],["c",-.03,.09,-1.02,1.08,-2.04,2.04],["c",-1.17,1.08,-1.65,1.56,-2.07,2.04],["c",-.84,.96,-1.38,1.86,-1.68,2.76],["c",-.21,.57,-.27,.99,-.3,1.65],["l",0,.54],["l",.66,-.33],["c",3.57,-1.86,5.49,-3.69,5.94,-5.7],["c",.06,-.39,.06,-1.2,-.03,-1.65],["c",-.06,-.39,-.24,-.9,-.36,-1.2],["z"],["m",-.06,7.2],["c",-.06,-.15,-.12,-.33,-.15,-.45],["l",-.06,-.18],["l",-.18,.21],["l",-1.83,1.83],["c",-.87,.9,-1.77,1.8,-1.95,2.01],["c",-1.08,1.29,-1.62,2.31,-1.89,3.51],["c",-.06,.3,-.06,.51,-.09,.93],["l",0,.57],["l",.09,-.06],["c",.75,-.45,1.89,-1.26,2.52,-1.74],["c",.81,-.66,1.74,-1.53,2.22,-2.16],["c",1.26,-1.53,1.68,-3.06,1.32,-4.47],["z"]],w:8.385,h:29.191},"flags.d64th":{d:[["M",7.08,-32.88],["c",.3,-.12,.66,-.03,.78,.24],["c",.18,.33,.27,2.1,.15,2.64],["c",-.09,.39,-.21,.78,-.39,1.08],["l",-.15,.3],["l",.09,.27],["c",.03,.12,.09,.45,.12,.69],["c",.27,1.44,.18,2.55,-.3,3.6],["l",-.12,.33],["l",.06,.42],["c",.27,1.35,.33,2.82,.21,3.63],["c",-.12,.6,-.3,1.23,-.57,1.8],["l",-.15,.27],["l",.03,.42],["c",.06,1.02,.06,2.7,.03,3.06],["c",-.15,1.47,-.66,2.76,-1.74,4.41],["c",-.45,.69,-.75,1.11,-1.74,2.37],["c",-1.05,1.38,-1.5,1.98,-1.95,2.73],["c",-.93,1.5,-1.38,2.82,-1.44,4.2],["l",0,.42],["l",-.21,0],["l",-.21,0],["l",0,-15],["l",0,-15],["l",.21,0],["l",.21,0],["l",0,1.86],["l",0,1.89],["c",0,0,.21,-.03,.45,-.09],["c",2.22,-.39,4.08,-1.11,5.19,-2.01],["c",.63,-.54,1.02,-1.14,1.2,-1.8],["c",.06,-.3,.06,-1.14,-.03,-1.65],["c",-.03,-.18,-.06,-.39,-.09,-.48],["c",-.03,-.24,.12,-.48,.36,-.6],["z"],["m",-.45,6.15],["c",-.03,-.18,-.06,-.42,-.06,-.54],["l",-.03,-.18],["l",-.33,.3],["c",-.42,.36,-.87,.72,-1.68,1.29],["c",-1.98,1.38,-2.25,1.59,-2.85,2.16],["c",-.75,.69,-1.23,1.44,-1.47,2.19],["c",-.15,.45,-.18,.63,-.21,1.35],["l",0,.66],["l",.39,-.18],["c",1.83,-.9,3.45,-1.95,4.47,-2.91],["c",.93,-.9,1.53,-1.83,1.74,-2.82],["c",.06,-.33,.06,-.87,.03,-1.32],["z"],["m",-.27,4.86],["c",-.03,-.21,-.06,-.36,-.06,-.36],["c",0,-.03,-.12,.09,-.24,.24],["c",-.39,.48,-.99,1.08,-2.16,2.19],["c",-1.47,1.38,-1.92,1.83,-2.46,2.49],["c",-.66,.87,-1.08,1.74,-1.29,2.58],["c",-.09,.42,-.15,.87,-.15,1.44],["l",0,.54],["l",.48,-.33],["c",1.5,-1.02,2.58,-1.89,3.51,-2.82],["c",1.47,-1.47,2.25,-2.85,2.4,-4.26],["c",.03,-.39,.03,-1.17,-.03,-1.71],["z"],["m",-.66,7.68],["c",.03,-.15,.03,-.6,.03,-.99],["l",0,-.72],["l",-.27,.33],["l",-1.74,1.98],["c",-1.77,1.92,-2.43,2.76,-2.97,3.9],["c",-.51,1.02,-.72,1.77,-.75,2.91],["c",0,.63,0,.63,.06,.6],["c",.03,-.03,.3,-.27,.63,-.54],["c",.66,-.6,1.86,-1.8,2.31,-2.31],["c",1.65,-1.89,2.52,-3.54,2.7,-5.16],["z"]],w:8.485,h:32.932},"clefs.C":{d:[["M",.06,-14.94],["l",.09,-.06],["l",1.92,0],["l",1.92,0],["l",.09,.06],["l",.06,.09],["l",0,14.85],["l",0,14.82],["l",-.06,.09],["l",-.09,.06],["l",-1.92,0],["l",-1.92,0],["l",-.09,-.06],["l",-.06,-.09],["l",0,-14.82],["l",0,-14.85],["z"],["m",5.37,0],["c",.09,-.06,.09,-.06,.57,-.06],["c",.45,0,.45,0,.54,.06],["l",.06,.09],["l",0,7.14],["l",0,7.11],["l",.09,-.06],["c",.18,-.18,.72,-.84,.96,-1.2],["c",.3,-.45,.66,-1.17,.84,-1.65],["c",.36,-.9,.57,-1.83,.6,-2.79],["c",.03,-.48,.03,-.54,.09,-.63],["c",.12,-.18,.36,-.21,.54,-.12],["c",.18,.09,.21,.15,.24,.66],["c",.06,.87,.21,1.56,.57,2.22],["c",.51,1.02,1.26,1.68,2.22,1.92],["c",.21,.06,.33,.06,.78,.06],["c",.45,0,.57,0,.84,-.06],["c",.45,-.12,.81,-.33,1.08,-.6],["c",.57,-.57,.87,-1.41,.99,-2.88],["c",.06,-.54,.06,-3,0,-3.57],["c",-.21,-2.58,-.84,-3.87,-2.16,-4.5],["c",-.48,-.21,-1.17,-.36,-1.77,-.36],["c",-.69,0,-1.29,.27,-1.5,.72],["c",-.06,.15,-.06,.21,-.06,.42],["c",0,.24,0,.3,.06,.45],["c",.12,.24,.24,.39,.63,.66],["c",.42,.3,.57,.48,.69,.72],["c",.06,.15,.06,.21,.06,.48],["c",0,.39,-.03,.63,-.21,.96],["c",-.3,.6,-.87,1.08,-1.5,1.26],["c",-.27,.06,-.87,.06,-1.14,0],["c",-.78,-.24,-1.44,-.87,-1.65,-1.68],["c",-.12,-.42,-.09,-1.17,.09,-1.71],["c",.51,-1.65,1.98,-2.82,3.81,-3.09],["c",.84,-.09,2.46,.03,3.51,.27],["c",2.22,.57,3.69,1.8,4.44,3.75],["c",.36,.93,.57,2.13,.57,3.36],["c",0,1.44,-.48,2.73,-1.38,3.81],["c",-1.26,1.5,-3.27,2.43,-5.28,2.43],["c",-.48,0,-.51,0,-.75,-.09],["c",-.15,-.03,-.48,-.21,-.78,-.36],["c",-.69,-.36,-.87,-.42,-1.26,-.42],["c",-.27,0,-.3,0,-.51,.09],["c",-.57,.3,-.81,.9,-.81,2.1],["c",0,1.23,.24,1.83,.81,2.13],["c",.21,.09,.24,.09,.51,.09],["c",.39,0,.57,-.06,1.26,-.42],["c",.3,-.15,.63,-.33,.78,-.36],["c",.24,-.09,.27,-.09,.75,-.09],["c",2.01,0,4.02,.93,5.28,2.4],["c",.9,1.11,1.38,2.4,1.38,3.84],["c",0,1.5,-.3,2.88,-.84,3.96],["c",-.78,1.59,-2.19,2.64,-4.17,3.15],["c",-1.05,.24,-2.67,.36,-3.51,.27],["c",-1.83,-.27,-3.3,-1.44,-3.81,-3.09],["c",-.18,-.54,-.21,-1.29,-.09,-1.74],["c",.15,-.6,.63,-1.2,1.23,-1.47],["c",.36,-.18,.57,-.21,.99,-.21],["c",.42,0,.63,.03,1.02,.21],["c",.42,.21,.84,.63,1.05,1.05],["c",.18,.36,.21,.6,.21,.96],["c",0,.3,0,.36,-.06,.51],["c",-.12,.24,-.27,.42,-.69,.72],["c",-.57,.42,-.69,.63,-.69,1.08],["c",0,.24,0,.3,.06,.45],["c",.12,.21,.3,.39,.57,.54],["c",.42,.18,.87,.21,1.53,.15],["c",1.08,-.15,1.8,-.57,2.34,-1.32],["c",.54,-.75,.84,-1.83,.99,-3.51],["c",.06,-.57,.06,-3.03,0,-3.57],["c",-.12,-1.47,-.42,-2.31,-.99,-2.88],["c",-.27,-.27,-.63,-.48,-1.08,-.6],["c",-.27,-.06,-.39,-.06,-.84,-.06],["c",-.45,0,-.57,0,-.78,.06],["c",-1.14,.27,-2.01,1.17,-2.46,2.49],["c",-.21,.57,-.3,.99,-.33,1.65],["c",-.03,.51,-.06,.57,-.24,.66],["c",-.12,.06,-.27,.06,-.39,0],["c",-.21,-.09,-.21,-.15,-.24,-.75],["c",-.09,-1.92,-.78,-3.72,-2.01,-5.19],["c",-.18,-.21,-.36,-.42,-.39,-.45],["l",-.09,-.06],["l",0,7.11],["l",0,7.14],["l",-.06,.09],["c",-.09,.06,-.09,.06,-.54,.06],["c",-.48,0,-.48,0,-.57,-.06],["l",-.06,-.09],["l",0,-14.82],["l",0,-14.85],["z"]],w:20.31,h:29.97},"clefs.F":{d:[["M",6.3,-7.8],["c",.36,-.03,1.65,0,2.13,.03],["c",3.6,.42,6.03,2.1,6.93,4.86],["c",.27,.84,.36,1.5,.36,2.58],["c",0,.9,-.03,1.35,-.18,2.16],["c",-.78,3.78,-3.54,7.08,-8.37,9.96],["c",-1.74,1.05,-3.87,2.13,-6.18,3.12],["c",-.39,.18,-.75,.33,-.81,.36],["c",-.06,.03,-.15,.06,-.18,.06],["c",-.15,0,-.33,-.18,-.33,-.33],["c",0,-.15,.06,-.21,.51,-.48],["c",3,-1.77,5.13,-3.21,6.84,-4.74],["c",.51,-.45,1.59,-1.5,1.95,-1.95],["c",1.89,-2.19,2.88,-4.32,3.15,-6.78],["c",.06,-.42,.06,-1.77,0,-2.19],["c",-.24,-2.01,-.93,-3.63,-2.04,-4.71],["c",-.63,-.63,-1.29,-1.02,-2.07,-1.2],["c",-1.62,-.39,-3.36,.15,-4.56,1.44],["c",-.54,.6,-1.05,1.47,-1.32,2.22],["l",-.09,.21],["l",.24,-.12],["c",.39,-.21,.63,-.24,1.11,-.24],["c",.3,0,.45,0,.66,.06],["c",1.92,.48,2.85,2.55,1.95,4.38],["c",-.45,.99,-1.41,1.62,-2.46,1.71],["c",-1.47,.09,-2.91,-.87,-3.39,-2.25],["c",-.18,-.57,-.21,-1.32,-.03,-2.28],["c",.39,-2.25,1.83,-4.2,3.81,-5.19],["c",.69,-.36,1.59,-.6,2.37,-.69],["z"],["m",11.58,2.52],["c",.84,-.21,1.71,.3,1.89,1.14],["c",.3,1.17,-.72,2.19,-1.89,1.89],["c",-.99,-.21,-1.5,-1.32,-1.02,-2.25],["c",.18,-.39,.6,-.69,1.02,-.78],["z"],["m",0,7.5],["c",.84,-.21,1.71,.3,1.89,1.14],["c",.21,.87,-.3,1.71,-1.14,1.89],["c",-.87,.21,-1.71,-.3,-1.89,-1.14],["c",-.21,-.84,.3,-1.71,1.14,-1.89],["z"]],w:20.153,h:23.142},"clefs.G":{d:[["M",9.69,-37.41],["c",.09,-.09,.24,-.06,.36,0],["c",.12,.09,.57,.6,.96,1.11],["c",1.77,2.34,3.21,5.85,3.57,8.73],["c",.21,1.56,.03,3.27,-.45,4.86],["c",-.69,2.31,-1.92,4.47,-4.23,7.44],["c",-.3,.39,-.57,.72,-.6,.75],["c",-.03,.06,0,.15,.18,.78],["c",.54,1.68,1.38,4.44,1.68,5.49],["l",.09,.42],["l",.39,0],["c",1.47,.09,2.76,.51,3.96,1.29],["c",1.83,1.23,3.06,3.21,3.39,5.52],["c",.09,.45,.12,1.29,.06,1.74],["c",-.09,1.02,-.33,1.83,-.75,2.73],["c",-.84,1.71,-2.28,3.06,-4.02,3.72],["l",-.33,.12],["l",.03,1.26],["c",0,1.74,-.06,3.63,-.21,4.62],["c",-.45,3.06,-2.19,5.49,-4.47,6.21],["c",-.57,.18,-.9,.21,-1.59,.21],["c",-.69,0,-1.02,-.03,-1.65,-.21],["c",-1.14,-.27,-2.13,-.84,-2.94,-1.65],["c",-.99,-.99,-1.56,-2.16,-1.71,-3.54],["c",-.09,-.81,.06,-1.53,.45,-2.13],["c",.63,-.99,1.83,-1.56,3,-1.53],["c",1.5,.09,2.64,1.32,2.73,2.94],["c",.06,1.47,-.93,2.7,-2.37,2.97],["c",-.45,.06,-.84,.03,-1.29,-.09],["l",-.21,-.09],["l",.09,.12],["c",.39,.54,.78,.93,1.32,1.26],["c",1.35,.87,3.06,1.02,4.35,.36],["c",1.44,-.72,2.52,-2.28,2.97,-4.35],["c",.15,-.66,.24,-1.5,.3,-3.03],["c",.03,-.84,.03,-2.94,0,-3],["c",-.03,0,-.18,0,-.36,.03],["c",-.66,.12,-.99,.12,-1.83,.12],["c",-1.05,0,-1.71,-.06,-2.61,-.3],["c",-4.02,-.99,-7.11,-4.35,-7.8,-8.46],["c",-.12,-.66,-.12,-.99,-.12,-1.83],["c",0,-.84,0,-1.14,.15,-1.92],["c",.36,-2.28,1.41,-4.62,3.3,-7.29],["l",2.79,-3.6],["c",.54,-.66,.96,-1.2,.96,-1.23],["c",0,-.03,-.09,-.33,-.18,-.69],["c",-.96,-3.21,-1.41,-5.28,-1.59,-7.68],["c",-.12,-1.38,-.15,-3.09,-.06,-3.96],["c",.33,-2.67,1.38,-5.07,3.12,-7.08],["c",.36,-.42,.99,-1.05,1.17,-1.14],["z"],["m",2.01,4.71],["c",-.15,-.3,-.3,-.54,-.3,-.54],["c",-.03,0,-.18,.09,-.3,.21],["c",-2.4,1.74,-3.87,4.2,-4.26,7.11],["c",-.06,.54,-.06,1.41,-.03,1.89],["c",.09,1.29,.48,3.12,1.08,5.22],["c",.15,.42,.24,.78,.24,.81],["c",0,.03,.84,-1.11,1.23,-1.68],["c",1.89,-2.73,2.88,-5.07,3.15,-7.53],["c",.09,-.57,.12,-1.74,.06,-2.37],["c",-.09,-1.23,-.27,-1.92,-.87,-3.12],["z"],["m",-2.94,20.7],["c",-.21,-.72,-.39,-1.32,-.42,-1.32],["c",0,0,-1.2,1.47,-1.86,2.37],["c",-2.79,3.63,-4.02,6.3,-4.35,9.3],["c",-.03,.21,-.03,.69,-.03,1.08],["c",0,.69,0,.75,.06,1.11],["c",.12,.54,.27,.99,.51,1.47],["c",.69,1.38,1.83,2.55,3.42,3.42],["c",.96,.54,2.07,.9,3.21,1.08],["c",.78,.12,2.04,.12,2.94,-.03],["c",.51,-.06,.45,-.03,.42,-.3],["c",-.24,-3.33,-.72,-6.33,-1.62,-10.08],["c",-.09,-.39,-.18,-.75,-.18,-.78],["c",-.03,-.03,-.42,0,-.81,.09],["c",-.9,.18,-1.65,.57,-2.22,1.14],["c",-.72,.72,-1.08,1.65,-1.05,2.64],["c",.06,.96,.48,1.83,1.23,2.58],["c",.36,.36,.72,.63,1.17,.9],["c",.33,.18,.36,.21,.42,.33],["c",.18,.42,-.18,.9,-.6,.87],["c",-.18,-.03,-.84,-.36,-1.26,-.63],["c",-.78,-.51,-1.38,-1.11,-1.86,-1.83],["c",-1.77,-2.7,-.99,-6.42,1.71,-8.19],["c",.3,-.21,.81,-.48,1.17,-.63],["c",.3,-.09,1.02,-.3,1.14,-.3],["c",.06,0,.09,0,.09,-.03],["c",.03,-.03,-.51,-1.92,-1.23,-4.26],["z"],["m",3.78,7.41],["c",-.18,-.03,-.36,-.06,-.39,-.06],["c",-.03,0,0,.21,.18,1.02],["c",.75,3.18,1.26,6.3,1.5,9.09],["c",.06,.72,0,.69,.51,.42],["c",.78,-.36,1.44,-.96,1.98,-1.77],["c",1.08,-1.62,1.2,-3.69,.3,-5.55],["c",-.81,-1.62,-2.31,-2.79,-4.08,-3.15],["z"]],w:19.051,h:57.057},"clefs.perc":{d:[["M",5.07,-7.44],["l",.09,-.06],["l",1.53,0],["l",1.53,0],["l",.09,.06],["l",.06,.09],["l",0,7.35],["l",0,7.32],["l",-.06,.09],["l",-.09,.06],["l",-1.53,0],["l",-1.53,0],["l",-.09,-.06],["l",-.06,-.09],["l",0,-7.32],["l",0,-7.35],["z"],["m",6.63,0],["l",.09,-.06],["l",1.53,0],["l",1.53,0],["l",.09,.06],["l",.06,.09],["l",0,7.35],["l",0,7.32],["l",-.06,.09],["l",-.09,.06],["l",-1.53,0],["l",-1.53,0],["l",-.09,-.06],["l",-.06,-.09],["l",0,-7.32],["l",0,-7.35],["z"]],w:21,h:14.97},"tab.big":{d:[["M",20.16,-21.66],["c",.24,-.09,.66,.09,.78,.36],["c",.09,.21,.09,.24,-.18,.54],["c",-.78,.81,-1.86,1.44,-2.94,1.71],["c",-.87,.24,-1.71,.24,-2.55,.03],["l",-.06,-.03],["l",-.18,.99],["c",-.33,1.98,-.75,4.26,-.96,5.04],["c",-.42,1.65,-1.26,3.18,-2.28,4.14],["c",-.57,.57,-1.17,.9,-1.86,1.08],["c",-.18,.06,-.33,.06,-.66,.06],["c",-.54,0,-.78,-.03,-1.23,-.27],["c",-.39,-.18,-.66,-.39,-1.38,-.99],["c",-.3,-.24,-.66,-.51,-.75,-.57],["c",-.21,-.15,-.27,-.24,-.24,-.45],["c",.06,-.27,.36,-.6,.6,-.66],["c",.18,-.03,.33,.06,.9,.57],["c",.48,.42,.72,.57,.93,.69],["c",.66,.33,1.38,.21,1.95,-.36],["c",.63,-.6,1.05,-1.62,1.23,-3],["c",.03,-.18,.09,-.66,.09,-1.11],["c",.09,-1.56,.33,-3.81,.57,-5.49],["c",.06,-.33,.09,-.63,.09,-.63],["c",-.03,-.03,-.81,-.12,-1.02,-.12],["c",-.57,0,-1.32,.12,-1.8,.33],["c",-.87,.3,-1.35,.78,-1.5,1.41],["c",-.18,.63,.09,1.26,.66,1.65],["c",.12,.06,.15,.12,.18,.24],["c",.09,.27,.06,.57,-.09,.75],["c",-.03,.06,-.12,.09,-.27,.15],["c",-.72,.21,-1.44,.15,-2.1,-.18],["c",-.54,-.27,-.96,-.66,-1.2,-1.14],["c",-.39,-.75,-.33,-1.74,.15,-2.52],["c",.27,-.42,.84,-.93,1.41,-1.23],["c",1.17,-.57,2.88,-.9,4.8,-.9],["c",.69,0,.78,0,1.08,.06],["c",.45,.09,1.11,.3,2.07,.6],["c",1.47,.48,1.83,.57,2.55,.54],["c",1.02,-.06,2.04,-.45,2.94,-1.11],["c",.12,-.09,.24,-.18,.27,-.18],["z"],["m",-5.88,13.05],["c",.21,-.03,.81,0,1.08,.06],["c",.48,.12,.9,.42,.99,.69],["c",.03,.09,.03,.15,0,.27],["c",0,.09,-.03,.57,-.06,1.08],["c",-.09,2.19,-.24,5.76,-.39,8.28],["c",-.06,1.53,-.06,1.77,.03,2.01],["c",.09,.18,.15,.24,.3,.3],["c",.24,.12,.54,.06,1.23,-.27],["c",.57,-.27,.66,-.3,.75,-.24],["c",.09,.06,.18,.3,.18,.45],["c",0,.33,-.15,.51,-.45,.63],["c",-.12,.03,-.39,.15,-.6,.27],["c",-1.17,.6,-1.38,.69,-1.8,.72],["c",-.45,.03,-.78,-.09,-1.08,-.39],["c",-.39,-.42,-.66,-1.2,-1.02,-3.12],["c",-.24,-1.23,-.36,-2.07,-.54,-3.75],["l",0,-.18],["l",-.36,.45],["c",-.6,.75,-1.32,1.59,-1.95,2.25],["c",-.15,.18,-.27,.3,-.27,.33],["c",0,0,.06,.09,.15,.18],["c",.24,.33,.6,.57,1.05,.69],["c",.18,.06,.3,.06,.69,.06],["l",.48,.03],["l",.06,.12],["c",.15,.27,.03,.72,-.21,.9],["c",-.18,.12,-.93,.27,-1.41,.27],["c",-.84,0,-1.59,-.3,-1.98,-.84],["l",-.12,-.15],["l",-.45,.42],["c",-.99,.87,-1.53,1.32,-2.16,1.74],["c",-.78,.51,-1.5,.84,-2.1,.93],["c",-.69,.12,-1.2,.03,-1.95,-.42],["c",-.21,-.12,-.51,-.27,-.66,-.36],["c",-.24,-.12,-.3,-.18,-.33,-.24],["c",-.12,-.27,.15,-.78,.45,-.93],["c",.24,-.12,.33,-.09,.9,.18],["c",.6,.3,.84,.39,1.2,.36],["c",.87,-.09,1.77,-.69,3.24,-2.31],["c",2.67,-2.85,4.59,-5.94,5.7,-9.15],["c",.15,-.45,.24,-.63,.42,-.81],["c",.21,-.24,.6,-.45,.99,-.51],["z"],["m",-3.99,16.05],["c",.18,0,.69,-.03,1.17,0],["c",3.27,.03,5.37,.75,6,2.07],["c",.45,.99,.12,2.4,-.81,3.42],["c",-.24,.27,-.57,.57,-.84,.75],["c",-.09,.06,-.18,.09,-.18,.12],["c",0,0,.18,.03,.42,.09],["c",1.23,.3,2.01,.81,2.37,1.59],["c",.27,.54,.3,1.32,.09,2.1],["c",-.12,.36,-.45,1.05,-.69,1.35],["c",-.87,1.17,-2.1,1.92,-3.54,2.25],["c",-.36,.06,-.48,.06,-.96,.06],["c",-.45,0,-.66,0,-.84,-.03],["c",-.84,-.18,-1.47,-.51,-2.07,-1.11],["c",-.33,-.33,-.45,-.51,-.45,-.63],["c",0,-.06,.03,-.15,.06,-.24],["c",.18,-.33,.69,-.6,.93,-.48],["c",.03,.03,.15,.12,.27,.24],["c",.39,.42,.99,.57,1.62,.45],["c",1.05,-.21,1.98,-1.02,2.31,-2.01],["c",.48,-1.53,-.48,-2.55,-2.58,-2.67],["c",-.21,0,-.36,-.03,-.42,-.06],["c",-.15,-.09,-.21,-.51,-.06,-.78],["c",.12,-.27,.24,-.33,.6,-.36],["c",.57,-.06,1.11,-.42,1.5,-.99],["c",.48,-.72,.54,-1.59,.18,-2.31],["c",-.12,-.21,-.45,-.54,-.69,-.69],["c",-.33,-.21,-.93,-.45,-1.35,-.51],["l",-.12,-.03],["l",-.06,.48],["c",-.54,2.94,-1.14,6.24,-1.29,6.75],["c",-.33,1.35,-.93,2.61,-1.65,3.6],["c",-.3,.36,-.81,.9,-1.14,1.14],["c",-.3,.24,-.84,.48,-1.14,.57],["c",-.33,.09,-.96,.09,-1.26,.03],["c",-.45,-.12,-.87,-.39,-1.53,-.96],["c",-.24,-.15,-.51,-.39,-.63,-.48],["c",-.3,-.21,-.33,-.33,-.21,-.63],["c",.12,-.18,.27,-.36,.42,-.45],["c",.27,-.12,.36,-.09,.87,.33],["c",.78,.6,1.08,.75,1.65,.72],["c",.45,-.03,.81,-.21,1.17,-.54],["c",.87,-.9,1.38,-2.85,1.38,-5.37],["c",0,-.6,.03,-1.11,.12,-2.04],["c",.06,-.69,.24,-2.01,.33,-2.58],["c",.06,-.24,.06,-.42,.06,-.42],["c",0,0,-.12,.03,-.21,.09],["c",-1.44,.57,-2.16,1.65,-1.74,2.55],["c",.09,.15,.18,.24,.27,.33],["c",.24,.21,.3,.27,.33,.39],["c",.06,.24,0,.63,-.15,.78],["c",-.09,.12,-.54,.21,-.96,.24],["c",-1.02,.03,-2.01,-.48,-2.43,-1.32],["c",-.21,-.45,-.27,-.9,-.15,-1.44],["c",.06,-.27,.21,-.66,.39,-.93],["c",.87,-1.29,3,-2.22,5.64,-2.43],["z"]],w:19.643,h:43.325},"tab.tiny":{d:[["M",16.02,-17.25],["c",.12,-.09,.15,-.09,.27,-.09],["c",.21,.03,.51,.3,.51,.45],["c",0,.06,-.12,.18,-.3,.36],["c",-1.11,1.08,-2.55,1.59,-3.84,1.41],["c",-.15,-.03,-.33,-.06,-.39,-.09],["c",-.06,-.03,-.09,-.03,-.12,-.03],["c",0,0,-.06,.42,-.15,.93],["c",-.33,2.01,-.66,3.69,-.84,4.26],["c",-.42,1.41,-1.23,2.67,-2.16,3.33],["c",-.27,.18,-.75,.42,-.99,.48],["c",-.3,.09,-.72,.09,-1.02,.06],["c",-.45,-.09,-.84,-.33,-1.53,-.9],["c",-.21,-.18,-.51,-.39,-.63,-.48],["c",-.27,-.21,-.3,-.24,-.3,-.36],["c",0,-.12,.09,-.36,.18,-.45],["c",.09,-.09,.27,-.18,.36,-.18],["c",.12,0,.3,.12,.66,.45],["c",.57,.51,.87,.69,1.23,.72],["c",.93,.06,1.68,-.78,1.98,-2.37],["c",.09,-.39,.15,-.75,.18,-1.53],["c",.06,-.99,.24,-2.79,.42,-4.05],["c",.03,-.3,.06,-.57,.06,-.6],["c",0,-.06,-.03,-.09,-.15,-.12],["c",-.9,-.18,-2.13,.06,-2.76,.57],["c",-.36,.3,-.51,.6,-.51,1.02],["c",0,.45,.15,.75,.48,.99],["c",.06,.06,.15,.18,.18,.24],["c",.12,.24,.03,.63,-.15,.69],["c",-.24,.12,-.6,.15,-.9,.15],["c",-.36,-.03,-.57,-.09,-.87,-.24],["c",-.78,-.36,-1.23,-1.11,-1.2,-1.92],["c",.12,-1.53,1.74,-2.49,4.62,-2.7],["c",1.2,-.09,1.47,-.03,3.33,.57],["c",.9,.3,1.14,.36,1.56,.39],["c",.45,0,.93,-.06,1.38,-.21],["c",.51,-.18,.81,-.33,1.41,-.75],["z"],["m",-4.68,10.38],["c",.39,-.06,.84,0,1.2,.15],["c",.24,.12,.36,.21,.45,.36],["l",.09,.09],["l",-.06,1.41],["c",-.09,2.19,-.18,3.96,-.27,5.49],["c",-.03,.78,-.06,1.59,-.06,1.86],["c",0,.42,0,.48,.06,.57],["c",.06,.18,.18,.24,.36,.27],["c",.18,0,.39,-.06,.84,-.27],["c",.45,-.21,.54,-.24,.63,-.18],["c",.12,.12,.15,.54,.03,.69],["c",-.03,.03,-.15,.12,-.27,.18],["c",-.15,.03,-.3,.12,-.36,.15],["c",-.87,.45,-1.02,.51,-1.26,.57],["c",-.33,.09,-.6,.06,-.84,-.06],["c",-.42,-.18,-.63,-.6,-.87,-1.44],["c",-.3,-1.23,-.57,-2.97,-.66,-4.08],["c",0,-.18,-.03,-.3,-.03,-.33],["l",-.06,.06],["c",-.18,.27,-1.11,1.38,-1.68,2.01],["l",-.33,.33],["l",.06,.09],["c",.06,.15,.27,.33,.48,.42],["c",.27,.18,.51,.24,.96,.27],["l",.39,0],["l",.03,.12],["c",.12,.21,.03,.57,-.15,.69],["c",-.03,.03,-.21,.09,-.36,.15],["c",-.27,.06,-.39,.06,-.75,.06],["c",-.48,0,-.75,-.03,-1.08,-.21],["c",-.21,-.12,-.51,-.36,-.57,-.48],["l",-.03,-.09],["l",-.39,.36],["c",-1.47,1.35,-2.49,1.98,-3.42,2.13],["c",-.54,.09,-.96,-.03,-1.62,-.39],["c",-.21,-.15,-.45,-.27,-.54,-.3],["c",-.18,-.09,-.21,-.21,-.12,-.45],["c",.06,-.27,.33,-.48,.54,-.48],["c",.03,0,.27,.09,.48,.21],["c",.48,.24,.69,.27,.99,.27],["c",.6,-.06,1.17,-.42,2.1,-1.35],["c",2.22,-2.22,4.02,-4.98,4.95,-7.59],["c",.21,-.57,.3,-.78,.48,-.93],["c",.15,-.15,.42,-.27,.66,-.33],["z"],["m",-3.06,12.84],["c",.27,-.03,1.68,0,2.01,.03],["c",1.92,.18,3.15,.69,3.63,1.5],["c",.18,.33,.24,.51,.21,.93],["c",0,.45,-.06,.72,-.24,1.11],["c",-.24,.51,-.69,1.02,-1.17,1.35],["c",-.21,.15,-.21,.15,-.12,.18],["c",.72,.15,1.11,.3,1.5,.57],["c",.39,.24,.63,.57,.75,.96],["c",.09,.3,.09,.96,0,1.29],["c",-.15,.57,-.39,1.05,-.78,1.5],["c",-.66,.75,-1.62,1.32,-2.61,1.53],["c",-.27,.06,-.42,.06,-.84,.06],["c",-.48,0,-.57,0,-.81,-.06],["c",-.6,-.18,-1.05,-.42,-1.47,-.81],["c",-.36,-.39,-.42,-.51,-.3,-.75],["c",.12,-.21,.39,-.39,.6,-.39],["c",.09,0,.15,.03,.33,.18],["c",.12,.12,.27,.24,.36,.27],["c",.96,.48,2.46,-.33,2.82,-1.5],["c",.24,-.81,-.03,-1.44,-.69,-1.77],["c",-.39,-.21,-1.02,-.33,-1.53,-.33],["c",-.18,0,-.21,0,-.27,-.09],["c",-.06,-.09,-.06,-.3,-.03,-.48],["c",.06,-.18,.18,-.36,.33,-.36],["c",.39,-.06,.51,-.09,.72,-.18],["c",.69,-.36,1.11,-1.23,.99,-2.01],["c",-.09,-.51,-.42,-.9,-.93,-1.17],["c",-.24,-.12,-.6,-.27,-.87,-.3],["c",-.09,-.03,-.09,-.03,-.12,.12],["c",0,.09,-.21,1.11,-.42,2.25],["c",-.66,3.75,-.72,3.99,-1.26,5.07],["c",-.9,1.89,-2.25,2.85,-3.48,2.61],["c",-.39,-.09,-.69,-.27,-1.38,-.84],["c",-.63,-.51,-.63,-.48,-.63,-.6],["c",0,-.18,.18,-.48,.39,-.57],["c",.21,-.12,.3,-.09,.81,.33],["c",.15,.15,.39,.3,.54,.36],["c",.18,.12,.27,.12,.48,.15],["c",.99,.06,1.71,-.78,2.04,-2.46],["c",.12,-.66,.18,-1.14,.21,-2.22],["c",.03,-1.23,.12,-2.25,.36,-3.63],["c",.03,-.24,.06,-.45,.06,-.48],["c",-.06,-.03,-.66,.27,-.9,.42],["c",-.06,.06,-.21,.18,-.33,.3],["c",-.57,.57,-.6,1.35,-.06,1.74],["c",.18,.12,.24,.24,.21,.51],["c",-.03,.3,-.15,.42,-.57,.48],["c",-1.11,.24,-2.22,-.42,-2.43,-1.38],["c",-.09,-.45,.03,-1.02,.3,-1.47],["c",.18,-.24,.6,-.63,.9,-.84],["c",.9,-.6,2.28,-1.02,3.69,-1.11],["z"]],w:15.709,h:34.656},"timesig.common":{d:[["M",6.66,-7.83],["c",.72,-.06,1.41,-.03,1.98,.09],["c",1.2,.27,2.34,.96,3.09,1.92],["c",.63,.81,1.08,1.86,1.14,2.73],["c",.06,1.02,-.51,1.92,-1.44,2.22],["c",-.24,.09,-.3,.09,-.63,.09],["c",-.33,0,-.42,0,-.63,-.06],["c",-.66,-.24,-1.14,-.63,-1.41,-1.2],["c",-.15,-.3,-.21,-.51,-.24,-.9],["c",-.06,-1.08,.57,-2.04,1.56,-2.37],["c",.18,-.06,.27,-.06,.63,-.06],["l",.45,0],["c",.06,.03,.09,.03,.09,0],["c",0,0,-.09,-.12,-.24,-.27],["c",-1.02,-1.11,-2.55,-1.68,-4.08,-1.5],["c",-1.29,.15,-2.04,.69,-2.4,1.74],["c",-.36,.93,-.42,1.89,-.42,5.37],["c",0,2.97,.06,3.96,.24,4.77],["c",.24,1.08,.63,1.68,1.41,2.07],["c",.81,.39,2.16,.45,3.18,.09],["c",1.29,-.45,2.37,-1.53,3.03,-2.97],["c",.15,-.33,.33,-.87,.39,-1.17],["c",.09,-.24,.15,-.36,.3,-.39],["c",.21,-.03,.42,.15,.39,.36],["c",-.06,.39,-.42,1.38,-.69,1.89],["c",-.96,1.8,-2.49,2.94,-4.23,3.18],["c",-.99,.12,-2.58,-.06,-3.63,-.45],["c",-.96,-.36,-1.71,-.84,-2.4,-1.5],["c",-1.11,-1.11,-1.8,-2.61,-2.04,-4.56],["c",-.06,-.6,-.06,-2.01,0,-2.61],["c",.24,-1.95,.9,-3.45,2.01,-4.56],["c",.69,-.66,1.44,-1.11,2.37,-1.47],["c",.63,-.24,1.47,-.42,2.22,-.48],["z"]],w:13.038,h:15.689},"timesig.cut":{d:[["M",6.24,-10.44],["c",.09,-.06,.09,-.06,.48,-.06],["c",.36,0,.36,0,.45,.06],["l",.06,.09],["l",0,1.23],["l",0,1.26],["l",.27,0],["c",1.26,0,2.49,.45,3.48,1.29],["c",1.05,.87,1.8,2.28,1.89,3.48],["c",.06,1.02,-.51,1.92,-1.44,2.22],["c",-.24,.09,-.3,.09,-.63,.09],["c",-.33,0,-.42,0,-.63,-.06],["c",-.66,-.24,-1.14,-.63,-1.41,-1.2],["c",-.15,-.3,-.21,-.51,-.24,-.9],["c",-.06,-1.08,.57,-2.04,1.56,-2.37],["c",.18,-.06,.27,-.06,.63,-.06],["l",.45,0],["c",.06,.03,.09,.03,.09,0],["c",0,-.03,-.45,-.51,-.66,-.69],["c",-.87,-.69,-1.83,-1.05,-2.94,-1.11],["l",-.42,0],["l",0,7.17],["l",0,7.14],["l",.42,0],["c",.69,-.03,1.23,-.18,1.86,-.51],["c",1.05,-.51,1.89,-1.47,2.46,-2.7],["c",.15,-.33,.33,-.87,.39,-1.17],["c",.09,-.24,.15,-.36,.3,-.39],["c",.21,-.03,.42,.15,.39,.36],["c",-.03,.24,-.21,.78,-.39,1.2],["c",-.96,2.37,-2.94,3.9,-5.13,3.9],["l",-.3,0],["l",0,1.26],["l",0,1.23],["l",-.06,.09],["c",-.09,.06,-.09,.06,-.45,.06],["c",-.39,0,-.39,0,-.48,-.06],["l",-.06,-.09],["l",0,-1.29],["l",0,-1.29],["l",-.21,-.03],["c",-1.23,-.21,-2.31,-.63,-3.21,-1.29],["c",-.15,-.09,-.45,-.36,-.66,-.57],["c",-1.11,-1.11,-1.8,-2.61,-2.04,-4.56],["c",-.06,-.6,-.06,-2.01,0,-2.61],["c",.24,-1.95,.93,-3.45,2.04,-4.59],["c",.42,-.39,.78,-.66,1.26,-.93],["c",.75,-.45,1.65,-.75,2.61,-.9],["l",.21,-.03],["l",0,-1.29],["l",0,-1.29],["z"],["m",-.06,10.44],["c",0,-5.58,0,-6.99,-.03,-6.99],["c",-.15,0,-.63,.27,-.87,.45],["c",-.45,.36,-.75,.93,-.93,1.77],["c",-.18,.81,-.24,1.8,-.24,4.74],["c",0,2.97,.06,3.96,.24,4.77],["c",.24,1.08,.66,1.68,1.41,2.07],["c",.12,.06,.3,.12,.33,.15],["l",.09,0],["l",0,-6.96],["z"]],w:13.038,h:20.97},"timesig.imperfectum":{d:[["M",13,-5],["a",8,8,0,1,0,0,10]],w:13.038,h:20.97},"timesig.imperfectum2":{d:[["M",13,-5],["a",8,8,0,1,0,0,10]],w:13.038,h:20.97},"timesig.perfectum":{d:[["M",13,-5],["a",8,8,0,1,0,0,10]],w:13.038,h:20.97},"timesig.perfectum2":{d:[["M",13,-5],["a",8,8,0,1,0,0,10]],w:13.038,h:20.97},f:{d:[["M",9.93,-14.28],["c",1.53,-.18,2.88,.45,3.12,1.5],["c",.12,.51,0,1.32,-.27,1.86],["c",-.15,.3,-.42,.57,-.63,.69],["c",-.69,.36,-1.56,.03,-1.83,-.69],["c",-.09,-.24,-.09,-.69,0,-.87],["c",.06,-.12,.21,-.24,.45,-.42],["c",.42,-.24,.57,-.45,.6,-.72],["c",.03,-.33,-.09,-.39,-.63,-.42],["c",-.3,0,-.45,0,-.6,.03],["c",-.81,.21,-1.35,.93,-1.74,2.46],["c",-.06,.27,-.48,2.25,-.48,2.31],["c",0,.03,.39,.03,.9,.03],["c",.72,0,.9,0,.99,.06],["c",.42,.15,.45,.72,.03,.9],["c",-.12,.06,-.24,.06,-1.17,.06],["l",-1.05,0],["l",-.78,2.55],["c",-.45,1.41,-.87,2.79,-.96,3.06],["c",-.87,2.37,-2.37,4.74,-3.78,5.91],["c",-1.05,.9,-2.04,1.23,-3.09,1.08],["c",-1.11,-.18,-1.89,-.78,-2.04,-1.59],["c",-.12,-.66,.15,-1.71,.54,-2.19],["c",.69,-.75,1.86,-.54,2.22,.39],["c",.06,.15,.09,.27,.09,.48],["c",0,.24,-.03,.27,-.12,.42],["c",-.03,.09,-.15,.18,-.27,.27],["c",-.09,.06,-.27,.21,-.36,.27],["c",-.24,.18,-.36,.36,-.39,.6],["c",-.03,.33,.09,.39,.63,.42],["c",.42,0,.63,-.03,.9,-.15],["c",.6,-.3,.96,-.96,1.38,-2.64],["c",.09,-.42,.63,-2.55,1.17,-4.77],["l",1.02,-4.08],["c",0,-.03,-.36,-.03,-.81,-.03],["c",-.72,0,-.81,0,-.93,-.06],["c",-.42,-.18,-.39,-.75,.03,-.9],["c",.09,-.06,.27,-.06,1.05,-.06],["l",.96,0],["l",0,-.09],["c",.06,-.18,.3,-.72,.51,-1.17],["c",1.2,-2.46,3.3,-4.23,5.34,-4.5],["z"]],w:16.155,h:19.445},m:{d:[["M",2.79,-8.91],["c",.09,0,.3,-.03,.45,-.03],["c",.24,.03,.3,.03,.45,.12],["c",.36,.15,.63,.54,.75,1.02],["l",.03,.21],["l",.33,-.3],["c",.69,-.69,1.38,-1.02,2.07,-1.02],["c",.27,0,.33,0,.48,.06],["c",.21,.09,.48,.36,.63,.6],["c",.03,.09,.12,.27,.18,.42],["c",.03,.15,.09,.27,.12,.27],["c",0,0,.09,-.09,.18,-.21],["c",.33,-.39,.87,-.81,1.29,-.99],["c",.78,-.33,1.47,-.21,2.01,.33],["c",.3,.33,.48,.69,.6,1.14],["c",.09,.42,.06,.54,-.54,3.06],["c",-.33,1.29,-.57,2.4,-.57,2.43],["c",0,.12,.09,.21,.21,.21],["c",.24,0,.75,-.3,1.2,-.72],["c",.45,-.39,.6,-.45,.78,-.27],["c",.18,.18,.09,.36,-.45,.87],["c",-1.05,.96,-1.83,1.47,-2.58,1.71],["c",-.93,.33,-1.53,.21,-1.8,-.33],["c",-.06,-.15,-.06,-.21,-.06,-.45],["c",0,-.24,.03,-.48,.6,-2.82],["c",.42,-1.71,.6,-2.64,.63,-2.79],["c",.03,-.57,-.3,-.75,-.84,-.48],["c",-.24,.12,-.54,.39,-.66,.63],["c",-.03,.09,-.42,1.38,-.9,3],["c",-.9,3.15,-.84,3,-1.14,3.15],["l",-.15,.09],["l",-.78,0],["c",-.6,0,-.78,0,-.84,-.06],["c",-.09,-.03,-.18,-.18,-.18,-.27],["c",0,-.03,.36,-1.38,.84,-2.97],["c",.57,-2.04,.81,-2.97,.84,-3.12],["c",.03,-.54,-.3,-.72,-.84,-.45],["c",-.24,.12,-.57,.42,-.66,.63],["c",-.06,.09,-.51,1.44,-1.05,2.97],["c",-.51,1.56,-.99,2.85,-.99,2.91],["c",-.06,.12,-.21,.24,-.36,.3],["c",-.12,.06,-.21,.06,-.9,.06],["c",-.6,0,-.78,0,-.84,-.06],["c",-.09,-.03,-.18,-.18,-.18,-.27],["c",0,-.03,.45,-1.38,.99,-2.97],["c",1.05,-3.18,1.05,-3.18,.93,-3.45],["c",-.12,-.27,-.39,-.3,-.72,-.15],["c",-.54,.27,-1.14,1.17,-1.56,2.4],["c",-.06,.15,-.15,.3,-.18,.36],["c",-.21,.21,-.57,.27,-.72,.09],["c",-.09,-.09,-.06,-.21,.06,-.63],["c",.48,-1.26,1.26,-2.46,2.01,-3.21],["c",.57,-.54,1.2,-.87,1.83,-1.02],["z"]],w:14.687,h:9.126},p:{d:[["M",1.92,-8.7],["c",.27,-.09,.81,-.06,1.11,.03],["c",.54,.18,.93,.51,1.17,.99],["c",.09,.15,.15,.33,.18,.36],["l",0,.12],["l",.3,-.27],["c",.66,-.6,1.35,-1.02,2.13,-1.2],["c",.21,-.06,.33,-.06,.78,-.06],["c",.45,0,.51,0,.84,.09],["c",1.29,.33,2.07,1.32,2.25,2.79],["c",.09,.81,-.09,2.01,-.45,2.79],["c",-.54,1.26,-1.86,2.55,-3.18,3.03],["c",-.45,.18,-.81,.24,-1.29,.24],["c",-.69,-.03,-1.35,-.18,-1.86,-.45],["c",-.3,-.15,-.51,-.18,-.69,-.09],["c",-.09,.03,-.18,.09,-.18,.12],["c",-.09,.12,-1.05,2.94,-1.05,3.06],["c",0,.24,.18,.48,.51,.63],["c",.18,.06,.54,.15,.75,.15],["c",.21,0,.36,.06,.42,.18],["c",.12,.18,.06,.42,-.12,.54],["c",-.09,.03,-.15,.03,-.78,0],["c",-1.98,-.15,-3.81,-.15,-5.79,0],["c",-.63,.03,-.69,.03,-.78,0],["c",-.24,-.15,-.24,-.57,.03,-.66],["c",.06,-.03,.48,-.09,.99,-.12],["c",.87,-.06,1.11,-.09,1.35,-.21],["c",.18,-.06,.33,-.18,.39,-.3],["c",.06,-.12,3.24,-9.42,3.27,-9.6],["c",.06,-.33,.03,-.57,-.15,-.69],["c",-.09,-.06,-.12,-.06,-.3,-.06],["c",-.69,.06,-1.53,1.02,-2.28,2.61],["c",-.09,.21,-.21,.45,-.27,.51],["c",-.09,.12,-.33,.24,-.48,.24],["c",-.18,0,-.36,-.15,-.36,-.3],["c",0,-.24,.78,-1.83,1.26,-2.55],["c",.72,-1.11,1.47,-1.74,2.28,-1.92],["z"],["m",5.37,1.47],["c",-.27,-.12,-.75,-.03,-1.14,.21],["c",-.75,.48,-1.47,1.68,-1.89,3.15],["c",-.45,1.47,-.42,2.34,0,2.7],["c",.45,.39,1.26,.21,1.83,-.36],["c",.51,-.51,.99,-1.68,1.38,-3.27],["c",.3,-1.17,.33,-1.74,.15,-2.13],["c",-.09,-.15,-.15,-.21,-.33,-.3],["z"]],w:14.689,h:13.127},r:{d:[["M",6.33,-9.12],["c",.27,-.03,.93,0,1.2,.06],["c",.84,.21,1.23,.81,1.02,1.53],["c",-.24,.75,-.9,1.17,-1.56,.96],["c",-.33,-.09,-.51,-.3,-.66,-.75],["c",-.03,-.12,-.09,-.24,-.12,-.3],["c",-.09,-.15,-.3,-.24,-.48,-.24],["c",-.57,0,-1.38,.54,-1.65,1.08],["c",-.06,.15,-.33,1.17,-.9,3.27],["c",-.57,2.31,-.81,3.12,-.87,3.21],["c",-.03,.06,-.12,.15,-.18,.21],["l",-.12,.06],["l",-.81,.03],["c",-.69,0,-.81,0,-.9,-.03],["c",-.09,-.06,-.18,-.21,-.18,-.3],["c",0,-.06,.39,-1.62,.9,-3.51],["c",.84,-3.24,.87,-3.45,.87,-3.72],["c",0,-.21,0,-.27,-.03,-.36],["c",-.12,-.15,-.21,-.24,-.42,-.24],["c",-.24,0,-.45,.15,-.78,.42],["c",-.33,.36,-.45,.54,-.72,1.14],["c",-.03,.12,-.21,.24,-.36,.27],["c",-.12,0,-.15,0,-.24,-.06],["c",-.18,-.12,-.18,-.21,-.06,-.54],["c",.21,-.57,.42,-.93,.78,-1.32],["c",.54,-.51,1.2,-.81,1.95,-.87],["c",.81,-.03,1.53,.3,1.92,.87],["l",.12,.18],["l",.09,-.09],["c",.57,-.45,1.41,-.84,2.19,-.96],["z"]],w:9.41,h:9.132},s:{d:[["M",4.47,-8.73],["c",.09,0,.36,-.03,.57,-.03],["c",.75,.03,1.29,.24,1.71,.63],["c",.51,.54,.66,1.26,.36,1.83],["c",-.24,.42,-.63,.57,-1.11,.42],["c",-.33,-.09,-.6,-.36,-.6,-.57],["c",0,-.03,.06,-.21,.15,-.39],["c",.12,-.21,.15,-.33,.18,-.48],["c",0,-.24,-.06,-.48,-.15,-.6],["c",-.15,-.21,-.42,-.24,-.75,-.15],["c",-.27,.06,-.48,.18,-.69,.36],["c",-.39,.39,-.51,.96,-.33,1.38],["c",.09,.21,.42,.51,.78,.72],["c",1.11,.69,1.59,1.11,1.89,1.68],["c",.21,.39,.24,.78,.15,1.29],["c",-.18,1.2,-1.17,2.16,-2.52,2.52],["c",-1.02,.24,-1.95,.12,-2.7,-.42],["c",-.72,-.51,-.99,-1.47,-.6,-2.19],["c",.24,-.48,.72,-.63,1.17,-.42],["c",.33,.18,.54,.45,.57,.81],["c",0,.21,-.03,.3,-.33,.51],["c",-.33,.24,-.39,.42,-.27,.69],["c",.06,.15,.21,.27,.45,.33],["c",.3,.09,.87,.09,1.2,0],["c",.75,-.21,1.23,-.72,1.29,-1.35],["c",.03,-.42,-.15,-.81,-.54,-1.2],["c",-.24,-.24,-.48,-.42,-1.41,-1.02],["c",-.69,-.42,-1.05,-.93,-1.05,-1.47],["c",0,-.39,.12,-.87,.3,-1.23],["c",.27,-.57,.78,-1.05,1.38,-1.35],["c",.24,-.12,.63,-.27,.9,-.3],["z"]],w:6.632,h:8.758},z:{d:[["M",2.64,-7.95],["c",.36,-.09,.81,-.03,1.71,.27],["c",.78,.21,.96,.27,1.74,.3],["c",.87,.06,1.02,.03,1.38,-.21],["c",.21,-.15,.33,-.15,.48,-.06],["c",.15,.09,.21,.3,.15,.45],["c",-.03,.06,-1.26,1.26,-2.76,2.67],["l",-2.73,2.55],["l",.54,.03],["c",.54,.03,.72,.03,2.01,.15],["c",.36,.03,.9,.06,1.2,.09],["c",.66,0,.81,-.03,1.02,-.24],["c",.3,-.3,.39,-.72,.27,-1.23],["c",-.06,-.27,-.06,-.27,-.03,-.39],["c",.15,-.3,.54,-.27,.69,.03],["c",.15,.33,.27,1.02,.27,1.5],["c",0,1.47,-1.11,2.7,-2.52,2.79],["c",-.57,.03,-1.02,-.09,-2.01,-.51],["c",-1.02,-.42,-1.23,-.48,-2.13,-.54],["c",-.81,-.06,-.96,-.03,-1.26,.18],["c",-.12,.06,-.24,.12,-.27,.12],["c",-.27,0,-.45,-.3,-.36,-.51],["c",.03,-.06,1.32,-1.32,2.91,-2.79],["l",2.88,-2.73],["c",-.03,0,-.21,.03,-.42,.06],["c",-.21,.03,-.78,.09,-1.23,.12],["c",-1.11,.12,-1.23,.15,-1.95,.27],["c",-.72,.15,-1.17,.18,-1.29,.09],["c",-.27,-.18,-.21,-.75,.12,-1.26],["c",.39,-.6,.93,-1.02,1.59,-1.2],["z"]],w:8.573,h:8.743},"+":{d:[["M",3.48,-9.3],["c",.18,-.09,.36,-.09,.54,0],["c",.18,.09,.24,.15,.33,.3],["l",.06,.15],["l",0,1.29],["l",0,1.29],["l",1.29,0],["c",1.23,0,1.29,0,1.41,.06],["c",.06,.03,.15,.09,.18,.12],["c",.12,.09,.21,.33,.21,.48],["c",0,.15,-.09,.39,-.21,.48],["c",-.03,.03,-.12,.09,-.18,.12],["c",-.12,.06,-.18,.06,-1.41,.06],["l",-1.29,0],["l",0,1.29],["c",0,1.23,0,1.29,-.06,1.41],["c",-.09,.18,-.15,.24,-.3,.33],["c",-.21,.09,-.39,.09,-.57,0],["c",-.18,-.09,-.24,-.15,-.33,-.33],["c",-.06,-.12,-.06,-.18,-.06,-1.41],["l",0,-1.29],["l",-1.29,0],["c",-1.23,0,-1.29,0,-1.41,-.06],["c",-.18,-.09,-.24,-.15,-.33,-.33],["c",-.09,-.18,-.09,-.36,0,-.54],["c",.09,-.18,.15,-.24,.33,-.33],["l",.15,-.06],["l",1.26,0],["l",1.29,0],["l",0,-1.29],["c",0,-1.23,0,-1.29,.06,-1.41],["c",.09,-.18,.15,-.24,.33,-.33],["z"]],w:7.507,h:7.515},",":{d:[["M",1.85,-3.36],["c",.57,-.15,1.17,.03,1.59,.45],["c",.45,.45,.6,.96,.51,1.89],["c",-.09,1.23,-.42,2.46,-.99,3.93],["c",-.3,.72,-.72,1.62,-.78,1.68],["c",-.18,.21,-.51,.18,-.66,-.06],["c",-.03,-.06,-.06,-.15,-.06,-.18],["c",0,-.06,.12,-.33,.24,-.63],["c",.84,-1.8,1.02,-2.61,.69,-3.24],["c",-.12,-.24,-.27,-.36,-.75,-.6],["c",-.36,-.15,-.42,-.21,-.6,-.39],["c",-.69,-.69,-.69,-1.71,0,-2.4],["c",.21,-.21,.51,-.39,.81,-.45],["z"]],w:3.452,h:8.143},"-":{d:[["M",.18,-5.34],["c",.09,-.06,.15,-.06,2.31,-.06],["c",2.46,0,2.37,0,2.46,.21],["c",.12,.21,.03,.42,-.15,.54],["c",-.09,.06,-.15,.06,-2.28,.06],["c",-2.16,0,-2.22,0,-2.31,-.06],["c",-.27,-.15,-.27,-.54,-.03,-.69],["z"]],w:5.001,h:.81},".":{d:[["M",1.32,-3.36],["c",1.05,-.27,2.1,.57,2.1,1.65],["c",0,1.08,-1.05,1.92,-2.1,1.65],["c",-.9,-.21,-1.5,-1.14,-1.26,-2.04],["c",.12,-.63,.63,-1.11,1.26,-1.26],["z"]],w:3.413,h:3.402},"scripts.wedge":{d:[["M",-3.66,-7.44],["c",.06,-.09,0,-.09,.81,.03],["c",1.86,.3,3.84,.3,5.73,0],["c",.78,-.12,.72,-.12,.78,-.03],["c",.15,.15,.12,.24,-.24,.6],["c",-.93,.93,-1.98,2.76,-2.67,4.62],["c",-.3,.78,-.51,1.71,-.51,2.13],["c",0,.15,0,.18,-.06,.27],["c",-.12,.09,-.24,.09,-.36,0],["c",-.06,-.09,-.06,-.12,-.06,-.27],["c",0,-.42,-.21,-1.35,-.51,-2.13],["c",-.69,-1.86,-1.74,-3.69,-2.67,-4.62],["c",-.36,-.36,-.39,-.45,-.24,-.6],["z"]],w:7.49,h:7.752},"scripts.thumb":{d:[["M",-.54,-3.69],["c",.15,-.03,.36,-.06,.51,-.06],["c",1.44,0,2.58,1.11,2.94,2.85],["c",.09,.48,.09,1.32,0,1.8],["c",-.27,1.41,-1.08,2.43,-2.16,2.73],["l",-.18,.06],["l",0,.12],["c",.03,.06,.06,.45,.09,.87],["c",.03,.57,.03,.78,0,.84],["c",-.09,.27,-.39,.48,-.66,.48],["c",-.27,0,-.57,-.21,-.66,-.48],["c",-.03,-.06,-.03,-.27,0,-.84],["c",.03,-.42,.06,-.81,.09,-.87],["l",0,-.12],["l",-.18,-.06],["c",-1.08,-.3,-1.89,-1.32,-2.16,-2.73],["c",-.09,-.48,-.09,-1.32,0,-1.8],["c",.15,-.84,.51,-1.53,1.02,-2.04],["c",.39,-.39,.84,-.63,1.35,-.75],["z"],["m",1.05,.9],["c",-.15,-.09,-.21,-.09,-.45,-.12],["c",-.15,0,-.3,.03,-.39,.03],["c",-.57,.18,-.9,.72,-1.08,1.74],["c",-.06,.48,-.06,1.8,0,2.28],["c",.15,.9,.42,1.44,.9,1.65],["c",.18,.09,.21,.09,.51,.09],["c",.3,0,.33,0,.51,-.09],["c",.48,-.21,.75,-.75,.9,-1.65],["c",.03,-.27,.03,-.54,.03,-1.14],["c",0,-.6,0,-.87,-.03,-1.14],["c",-.15,-.9,-.45,-1.44,-.9,-1.65],["z"]],w:5.955,h:9.75},"scripts.open":{d:[["M",-.54,-3.69],["c",.15,-.03,.36,-.06,.51,-.06],["c",1.44,0,2.58,1.11,2.94,2.85],["c",.09,.48,.09,1.32,0,1.8],["c",-.33,1.74,-1.47,2.85,-2.91,2.85],["c",-1.44,0,-2.58,-1.11,-2.91,-2.85],["c",-.09,-.48,-.09,-1.32,0,-1.8],["c",.15,-.84,.51,-1.53,1.02,-2.04],["c",.39,-.39,.84,-.63,1.35,-.75],["z"],["m",1.11,.9],["c",-.21,-.09,-.27,-.09,-.51,-.12],["c",-.3,0,-.42,.03,-.66,.15],["c",-.24,.12,-.51,.39,-.66,.63],["c",-.54,.93,-.63,2.64,-.21,3.81],["c",.21,.54,.51,.9,.93,1.11],["c",.21,.09,.24,.09,.54,.09],["c",.3,0,.33,0,.54,-.09],["c",.42,-.21,.72,-.57,.93,-1.11],["c",.36,-.99,.36,-2.37,0,-3.36],["c",-.21,-.54,-.51,-.9,-.9,-1.11],["z"]],w:5.955,h:7.5},"scripts.longphrase":{d:[["M",1.47,-15.09],["c",.36,-.09,.66,-.18,.69,-.18],["c",.06,0,.06,.54,.06,11.25],["l",0,11.25],["l",-.63,.15],["c",-.66,.18,-1.44,.39,-1.5,.39],["c",-.03,0,-.03,-3.39,-.03,-11.25],["l",0,-11.25],["l",.36,-.09],["c",.21,-.06,.66,-.18,1.05,-.27],["z"]],w:2.16,h:23.04},"scripts.mediumphrase":{d:[["M",1.47,-7.59],["c",.36,-.09,.66,-.18,.69,-.18],["c",.06,0,.06,.39,.06,7.5],["l",0,7.5],["l",-.63,.15],["c",-.66,.18,-1.44,.39,-1.5,.39],["c",-.03,0,-.03,-2.28,-.03,-7.5],["l",0,-7.5],["l",.36,-.09],["c",.21,-.06,.66,-.18,1.05,-.27],["z"]],w:2.16,h:15.54},"scripts.shortphrase":{d:[["M",1.47,-7.59],["c",.36,-.09,.66,-.18,.69,-.18],["c",.06,0,.06,.21,.06,3.75],["l",0,3.75],["l",-.42,.09],["c",-.57,.18,-1.65,.45,-1.71,.45],["c",-.03,0,-.03,-.72,-.03,-3.75],["l",0,-3.75],["l",.36,-.09],["c",.21,-.06,.66,-.18,1.05,-.27],["z"]],w:2.16,h:8.04},"scripts.snap":{d:[["M",4.5,-3.39],["c",.36,-.03,.96,-.03,1.35,0],["c",1.56,.15,3.15,.9,4.2,2.01],["c",.24,.27,.33,.42,.33,.6],["c",0,.27,.03,.24,-2.46,2.22],["c",-1.29,1.02,-2.4,1.86,-2.49,1.92],["c",-.18,.09,-.3,.09,-.48,0],["c",-.09,-.06,-1.2,-.9,-2.49,-1.92],["c",-2.49,-1.98,-2.46,-1.95,-2.46,-2.22],["c",0,-.18,.09,-.33,.33,-.6],["c",1.05,-1.08,2.64,-1.86,4.17,-2.01],["z"],["m",1.29,1.17],["c",-1.47,-.15,-2.97,.3,-4.14,1.2],["l",-.18,.15],["l",.06,.09],["c",.15,.12,3.63,2.85,3.66,2.85],["c",.03,0,3.51,-2.73,3.66,-2.85],["l",.06,-.09],["l",-.18,-.15],["c",-.84,-.66,-1.89,-1.08,-2.94,-1.2],["z"]],w:10.38,h:6.84}};t["noteheads.slash.whole"]={d:[["M",5,-5],["l",1,1],["l",-5,5],["l",-1,-1],["z"],["m",4,6],["l",-5,-5],["l",2,-2],["l",5,5],["z"],["m",0,-2],["l",1,1],["l",-5,5],["l",-1,-1],["z"],["m",-4,6],["l",-5,-5],["l",2,-2],["l",5,5],["z"]],w:10.81,h:15.63},t["noteheads.slash.quarter"]={d:[["M",9,-6],["l",0,4],["l",-9,9],["l",0,-4],["z"]],w:9,h:9},t["noteheads.harmonic.quarter"]={d:[["M",3.63,-4.02],["c",.09,-.06,.18,-.09,.24,-.03],["c",.03,.03,.87,.93,1.83,2.01],["c",1.5,1.65,1.8,1.98,1.8,2.04],["c",0,.06,-.3,.39,-1.8,2.04],["c",-.96,1.08,-1.8,1.98,-1.83,2.01],["c",-.06,.06,-.15,.03,-.24,-.03],["c",-.12,-.09,-3.54,-3.84,-3.6,-3.93],["c",-.03,-.03,-.03,-.09,-.03,-.15],["c",.03,-.06,3.45,-3.84,3.63,-3.96],["z"]],w:7.5,h:8.165},t["noteheads.triangle.quarter"]={d:[["M",0,4],["l",9,0],["l",-4.5,-9],["z"]],w:9,h:9};var i=function(r){for(var o=[],l=0,c=r.length;l<c;l++){o[l]=[];for(var d=0,g=r[l].length;d<g;d++)o[l][d]=r[l][d]}return o},n=function(r,o,l){for(var c=0,d=r.length;c<d;c++){var g=r[c],h,m;for(h=1,m=g.length;h<m;h++)g[h]*=h%2?o:l}},s={printSymbol:function(r,o,l,c,d){if(!t[l])return null;var g=i(t[l].d);g[0][1]+=r,g[0][2]+=o;for(var h="",m=0;m<g.length;m++)h+=g[m].join(" ");return d.path=h,c.path(d)},getPathForSymbol:function(r,o,l,c,d){if(c=c||1,d=d||1,!t[l])return null;var g=i(t[l].d);return(c!==1||d!==1)&&n(g,c,d),g[0][1]+=r,g[0][2]+=o,g},getSymbolWidth:function(r){return t[r]?t[r].w:0},symbolHeightInPitches:function(r){var o=t[r]?t[r].h:0;return o/a.STEP},getSymbolAlign:function(r){return r.substring(0,7)==="scripts"&&r!=="scripts.roll"?"center":"left"},getYCorr:function(r){switch(r){case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"+":return-2;case"timesig.common":case"timesig.cut":return 0;case"flags.d32nd":return-1;case"flags.d64th":return-2;case"flags.u32nd":return 1;case"flags.u64th":return 3;case"rests.whole":return 1;case"rests.half":return-1;case"rests.8th":return-1;case"rests.quarter":return-1;case"rests.16th":return-1;case"rests.32nd":return-1;case"rests.64th":return-1;case"f":case"m":case"p":case"s":case"z":return-4;case"scripts.trill":case"scripts.upbow":case"scripts.downbow":return-2;case"scripts.ufermata":case"scripts.wedge":case"scripts.roll":case"scripts.shortphrase":case"scripts.longphrase":return-1;case"scripts.dfermata":return 1;default:return 0}},setSymbol:function(r,o){t[r]=o}};return Cg=s,Cg}var Gg,Jw;function FE(){if(Jw)return Gg;Jw=1;var a=Wc(),t=ll(),i=Hr(),n=function(r,o){var l,c=0;r.el_type="clef";var d=new a(r,0,10,"staff-extra clef",o);switch(d.isClef=!0,r.type){case"treble":l="clefs.G";break;case"tenor":l="clefs.C";break;case"alto":l="clefs.C";break;case"bass":l="clefs.F";break;case"treble+8":l="clefs.G",c=1;break;case"tenor+8":l="clefs.C",c=1;break;case"bass+8":l="clefs.F",c=1;break;case"alto+8":l="clefs.C",c=1;break;case"treble-8":l="clefs.G",c=-1;break;case"tenor-8":l="clefs.C",c=-1;break;case"bass-8":l="clefs.F",c=-1;break;case"alto-8":l="clefs.C",c=-1;break;case"none":return null;case"perc":l="clefs.perc";break;default:d.addFixed(new i("clef="+r.type,0,0,void 0,{type:"debug"}))}var g=5;if(l){var h=t.symbolHeightInPitches(l),m=s(l);if(d.addRight(new i(l,g,t.getSymbolWidth(l),r.clefPos,{top:h+r.clefPos+m,bottom:r.clefPos+m})),c!==0){var p=.6666666666666666,u=(t.getSymbolWidth(l)-t.getSymbolWidth("8")*p)/2,f=c>0?d.top+3:d.bottom-1,_=c>0?d.top+3:d.bottom-3,v=_-2;r.type==="bass-8"&&(f=3,u=0),d.addRight(new i("8",g+u,t.getSymbolWidth("8")*p,f,{scalex:p,scaley:p,top:_,bottom:v}))}}return d};function s(r){switch(r){case"clefs.G":return-5;case"clefs.C":return-4;case"clefs.F":return-4;case"clefs.perc":return-2;default:return 0}}return Gg=n,Gg}var Fg,Xw;function ME(){if(Xw)return Fg;Xw=1;var a=Wc(),t=ll(),i=Hr(),n=function(s,r){if(s.el_type="keySignature",!s.accidentals||s.accidentals.length===0)return null;var o=new a(s,0,10,"staff-extra key-signature",r);o.isKeySig=!0;var l=0;return s.accidentals.forEach(function(c){var d,g=0;switch(c.acc){case"sharp":d="accidentals.sharp",g=-3;break;case"natural":d="accidentals.nat";break;case"flat":d="accidentals.flat",g=-1.2;break;case"quartersharp":d="accidentals.halfsharp",g=-2.5;break;case"quarterflat":d="accidentals.halfflat",g=-1.2;break;default:d="accidentals.flat"}o.addRight(new i(d,l,t.getSymbolWidth(d),c.verticalPos,{thickness:t.symbolHeightInPitches(d),top:c.verticalPos+t.symbolHeightInPitches(d)+g,bottom:c.verticalPos+g})),l+=t.getSymbolWidth(d)+2},this),o};return Fg=n,Fg}var Mg,Zw;function zE(){if(Zw)return Mg;Zw=1;var a=ll(),t=Hr(),i=function(n,s,r,o){o||(o={});var l=o.dir!==void 0?o.dir:null,c=o.headx!==void 0?o.headx:0,d=o.extrax!==void 0?o.extrax:0,g=o.flag!==void 0?o.flag:null,h=o.dot!==void 0?o.dot:0,m=o.dotshiftx!==void 0?o.dotshiftx:0,p=o.scale!==void 0?o.scale:1,u=o.accidentalSlot!==void 0?o.accidentalSlot:[],f=o.shouldExtendStem!==void 0?o.shouldExtendStem:!1,_=o.printAccidentals!==void 0?o.printAccidentals:!0,v=o.chordPos,y=r.verticalPos,S,q=0,M=0,P=0;if(s===void 0)n.addFixed(new t("pitch is undefined",0,0,0,{type:"debug"}));else if(s==="")S=new t(null,0,0,y,{chordPos:v});else{var B=c;if(r.printer_shift){var A=r.printer_shift==="same"?1:0;B=l==="down"?-a.getSymbolWidth(s)*p+A:a.getSymbolWidth(s)*p-A}var j={scalex:p,scaley:p,thickness:a.symbolHeightInPitches(s)*p,name:r.name,chordPos:v};if(S=new t(s,B,a.getSymbolWidth(s)*p,y,j),S.stemDir=l,g){var G=y+(l==="down"?-7:7)*p;f&&(l==="down"&&G>6&&(G=6),l==="up"&&G<6&&(G=6));var C=l==="down"?c:c+S.w-.6;n.addRight(new t(g,C,a.getSymbolWidth(g)*p,G,{scalex:p,scaley:p,chordPos:v}))}for(M=S.w+m-2+5*h;h>0;h--){var R=1-Math.abs(y)%2;n.addRight(new t("dots.dot",S.w+m-2+5*h,a.getSymbolWidth("dots.dot"),y+R,{chordPos:v}))}}if(S&&(S.highestVert=r.highestVert),_&&r.accidental){var H;switch(r.accidental){case"quartersharp":H="accidentals.halfsharp";break;case"dblsharp":H="accidentals.dblsharp";break;case"sharp":H="accidentals.sharp";break;case"quarterflat":H="accidentals.halfflat";break;case"flat":H="accidentals.flat";break;case"dblflat":H="accidentals.dblflat";break;case"natural":H="accidentals.nat"}for(var E=!1,U=d,N=0;N<u.length;N++)if(y-u[N][0]>=6){u[N][0]=y,U=u[N][1],E=!0;break}E===!1&&(U-=a.getSymbolWidth(H)*p+2,u.push([y,U]),q=a.getSymbolWidth(H)*p+2);var L=a.symbolHeightInPitches(H);n.addExtra(new t(H,U,a.getSymbolWidth(H),y,{scalex:p,scaley:p,top:y+L/2,bottom:y-L/2,chordPos:v})),P=a.getSymbolWidth(H)/2}return{notehead:S,accidentalshiftx:q,dotshiftx:M,extraLeft:P}};return Mg=i,Mg}var zg,ek;function EE(){if(ek)return zg;ek=1;var a=Wc(),t=ll(),i=Hr(),n=function(s,r){s.el_type="timeSignature";var o=new a(s,0,10,"staff-extra time-signature",r);if(s.type==="specified")for(var l=0,c=0;c<s.value.length;c++)if(c!==0&&(o.addRight(new i("+",l+1,t.getSymbolWidth("+"),6,{thickness:t.symbolHeightInPitches("+")})),l+=t.getSymbolWidth("+")+2),s.value[c].den){for(var d=0,g=0;g<s.value[c].num.length;g++)d+=t.getSymbolWidth(s.value[c].num[g]);var h=0;for(g=0;g<s.value[c].num.length;g++)h+=t.getSymbolWidth(s.value[c].den[g]);var m=Math.max(d,h);o.addRight(new i(s.value[c].num,l+(m-d)/2,d,8,{thickness:t.symbolHeightInPitches(s.value[c].num[0])})),o.addRight(new i(s.value[c].den,l+(m-h)/2,h,4,{thickness:t.symbolHeightInPitches(s.value[c].den[0])})),l+=m}else{for(var p=0,u=0;u<s.value[c].num.length;u++)p+=t.getSymbolWidth(s.value[c].num[u]);o.addRight(new i(s.value[c].num,l,p,6,{thickness:t.symbolHeightInPitches(s.value[c].num[0])})),l+=p}else s.type==="common_time"?o.addRight(new i("timesig.common",0,t.getSymbolWidth("timesig.common"),6,{thickness:t.symbolHeightInPitches("timesig.common")})):s.type==="cut_time"?o.addRight(new i("timesig.cut",0,t.getSymbolWidth("timesig.cut"),6,{thickness:t.symbolHeightInPitches("timesig.cut")})):s.type==="tempus_imperfectum"?o.addRight(new i("timesig.imperfectum",0,t.getSymbolWidth("timesig.imperfectum"),6,{thickness:t.symbolHeightInPitches("timesig.imperfectum")})):s.type==="tempus_imperfectum_prolatio"?o.addRight(new i("timesig.imperfectum2",0,t.getSymbolWidth("timesig.imperfectum2"),6,{thickness:t.symbolHeightInPitches("timesig.imperfectum2")})):s.type==="tempus_perfectum"?o.addRight(new i("timesig.perfectum",0,t.getSymbolWidth("timesig.perfectum"),6,{thickness:t.symbolHeightInPitches("timesig.perfectum")})):s.type==="tempus_perfectum_prolatio"?o.addRight(new i("timesig.perfectum2",0,t.getSymbolWidth("timesig.perfectum2"),6,{thickness:t.symbolHeightInPitches("timesig.perfectum2")})):console.log("time signature:",s);return o};return zg=n,zg}var Eg,tk;function UE(){if(tk)return Eg;tk=1;var a=function(i,n,s){this.type="DynamicDecoration",this.anchor=i,this.dec=n,s==="below"?this.volumeHeightBelow=6:this.volumeHeightAbove=6,this.pitch=void 0};return Eg=a,Eg}var Ug,ak;function RE(){if(ak)return Ug;ak=1;var a=function(i,n,s,r){this.type="CrescendoElem",this.anchor1=i,this.anchor2=n,this.dir=s,r==="above"?this.dynamicHeightAbove=6:this.dynamicHeightBelow=6,this.pitch=void 0};return Ug=a,Ug}var Rg,ik;function BE(){if(ik)return Rg;ik=1;var a=function(i,n){this.type="GlissandoElem",this.anchor1=i,this.anchor2=n};return Rg=a,Rg}var Bg,nk;function sk(){if(nk)return Bg;nk=1;var a=function(i){this.type="TieElem",this.anchor1=i.anchor1,this.anchor2=i.anchor2,i.isGrace&&(this.isGrace=!0),i.fixedY&&(this.fixedY=!0),i.stemDir&&(this.stemDir=i.stemDir),i.voiceNumber!==void 0&&(this.voiceNumber=i.voiceNumber),i.style!==void 0&&(this.dotted=!0),this.internalNotes=[]};return a.prototype.addInternalNote=function(t){this.internalNotes.push(t)},a.prototype.setEndAnchor=function(t){this.anchor2=t,this.anchor1?(this.top=Math.max(this.anchor1.pitch,this.anchor2.pitch)+4,this.bottom=Math.min(this.anchor1.pitch,this.anchor2.pitch)-4):(this.top=this.anchor2.pitch+4,this.bottom=this.anchor2.pitch-4)},a.prototype.setStartX=function(t){this.startLimitX=t},a.prototype.setEndX=function(t){this.endLimitX=t},a.prototype.setHint=function(){this.hint=!0},a.prototype.calcTieDirection=function(){if(this.isGrace)this.above=!1;else if(this.voiceNumber===0)this.above=!0;else if(this.voiceNumber>0)this.above=!1;else{var t;this.anchor1?t=this.anchor1.pitch:this.anchor2?t=this.anchor2.pitch:t=14,this.anchor1&&this.anchor1.stemDir==="down"&&this.anchor2&&this.anchor2.stemDir==="down"?this.above=!0:this.anchor1&&this.anchor1.stemDir==="up"&&this.anchor2&&this.anchor2.stemDir==="up"?this.above=!1:this.anchor1&&this.anchor2?this.above=t>=6:this.anchor1?this.above=this.anchor1.stemDir==="down":this.anchor2?this.above=this.anchor2.stemDir==="down":this.above=t>=6}},a.prototype.calcSlurDirection=function(){if(this.isGrace)this.above=!1;else if(this.voiceNumber===0)this.above=!0;else if(this.voiceNumber>0)this.above=!1;else{var t=!1;this.anchor1&&this.anchor1.stemDir==="down"&&(t=!0),this.anchor2&&this.anchor2.stemDir==="down"&&(t=!0);for(var i=0;i<this.internalNotes.length;i++){var n=this.internalNotes[i];n.stemDir==="down"&&(t=!0)}this.above=t}},a.prototype.calcX=function(t,i){this.anchor1?(this.startX=this.anchor1.x,this.anchor1.scalex<1&&(this.startX-=3)):this.startLimitX?this.startX=this.startLimitX.x+this.startLimitX.w:this.anchor2?this.startX=this.anchor2.x-20:this.startX=t,!this.anchor1&&this.dotted&&(this.startX-=3),this.anchor2?this.endX=this.anchor2.x:this.endLimitX?this.endX=this.endLimitX.x:this.endX=i},a.prototype.calcTieY=function(){this.anchor1?this.startY=this.anchor1.pitch:this.anchor2?this.startY=this.anchor2.pitch:this.startY=this.above?14:0,this.anchor2?this.endY=this.anchor2.pitch:this.anchor1?this.endY=this.anchor1.pitch:this.endY=this.above?14:0},a.prototype.calcSlurY=function(){if(this.anchor1&&this.anchor2){this.above&&this.anchor1.stemDir==="up"&&!this.fixedY?(this.startY=(this.anchor1.highestVert+this.anchor1.pitch)/2,this.startX+=this.anchor1.w/2):this.startY=this.anchor1.pitch;var t=this.anchor2.parent.beam&&this.anchor2.parent.beam.stemsUp&&this.anchor2.parent.beam.elems[0]!==this.anchor2.parent,i=(this.anchor2.highestVert+this.anchor2.pitch)/2;if(this.above&&this.anchor2.stemDir==="up"&&!this.fixedY&&!t&&i<this.startY?(this.endY=i,this.endX+=Math.round(this.anchor2.w/2)):this.endY=this.above&&t?this.anchor2.highestVert:this.anchor2.pitch,this.anchor1.scalex===1){var n=!!this.anchor1.parent.beam,s=!!this.anchor2.parent.beam;if(n){var r=this.anchor1.parent===this.anchor1.parent.beam.elems[this.anchor1.parent.beam.elems.length-1];r||(this.above?this.startY=this.anchor1.parent.fixed.t:this.startY=this.anchor1.parent.fixed.b)}if(s){var o=this.anchor2.parent===this.anchor2.parent.beam.elems[0];o||(this.above?this.endY=this.anchor2.parent.fixed.t:this.endY=this.anchor2.parent.fixed.b)}}}else this.anchor1?this.startY=this.endY=this.anchor1.pitch:this.anchor2?this.startY=this.endY=this.anchor2.pitch:(this.startY=this.above?14:0,this.endY=this.above?14:0)},a.prototype.avoidCollisionAbove=function(){if(this.above){for(var t=-50,i=0;i<this.internalNotes.length;i++)this.internalNotes[i].highestVert>t&&(t=this.internalNotes[i].highestVert);t>this.startY&&t>this.endY&&(this.startY=this.endY=t-1)}},a.prototype.getYBounds=function(){var t=10,i=1e3;this.isTie?(this.calcTieDirection(),this.calcX(t,i),this.calcTieY()):(this.calcSlurDirection(),this.calcX(t,i),this.calcSlurY());var n,s;return this.above?(s=Math.min(this.startY,this.endY),n=s+3):(n=Math.min(this.startY,this.endY),s=n-3),[n,s]},Bg=a,Bg}var Pg,rk;function PE(){if(rk)return Pg;rk=1;var a=UE(),t=RE(),i=BE(),n=ll(),s=Hr(),r=sk(),o=function(){this.startDiminuendoX=void 0,this.startCrescendoX=void 0,this.minTop=12,this.minBottom=0},l=function(u,f,_,v,y,S,q,M,P){for(var B,A=0;A<f.length;A++){if(f[A]==="staccato"||f[A]==="tenuto"||f[A]==="accent"&&!P){var j="scripts."+f[A];if(f[A]==="accent"&&(j="scripts.sforzato"),B===void 0?B=q==="down"?_+2:M-2:B=q==="down"?B+2:B-2,f[A]==="accent")q==="up"?B--:B++;else switch(B){case 2:case 4:case 6:case 8:case 10:q==="up"?B--:B++;break}_>9&&B++;var G=v/2;n.getSymbolAlign(j)!=="center"&&(G-=n.getSymbolWidth(j)/2),y.addFixedX(new s(j,G,n.getSymbolWidth(j),B))}if(f[A]==="slide"&&y.heads[0]){var C=y.heads[0].pitch;C-=2;var R=new s("",-S-15,0,C-1),H=new s("",-S-5,0,C+1);y.addFixedX(R),y.addFixedX(H),u.addOther(new r({anchor1:R,anchor2:H,fixedY:!0}))}}return B===void 0&&(B=_),{above:B,below:y.bottom}},c=function(u,f,_,v){for(var y=0;y<f.length;y++)switch(f[y]){case"p":case"mp":case"pp":case"ppp":case"pppp":case"f":case"ff":case"fff":case"ffff":case"sfz":case"mf":var S=new a(_,f[y],v);u.addOther(S)}},d=function(u,f,_,v,y){function S(){if(v.heads.length===0)return 10;for(var B=v.heads[0].pitch,A=1;A<v.heads.length;A++)B=Math.max(B,v.heads[A].pitch);return B}function q(){if(v.heads.length===0)return 2;for(var B=v.heads[0].pitch,A=1;A<v.heads.length;A++)B=Math.min(B,v.heads[A].pitch);return B}function M(B,A){var j=y==="down"?q()+1:S()+9;y!=="down"&&A===1&&j--;var G=_/2;G+=y==="down"?-5:3;for(var C=0;C<A;C++)j-=1,v.addFixedX(new s(B,G,n.getSymbolWidth(B),j))}for(var P=0;P<u.length;P++)switch(u[P]){case"/":M("flags.ugrace",1);break;case"//":M("flags.ugrace",2);break;case"///":M("flags.ugrace",3);break;case"////":M("flags.ugrace",4);break}},g=function(u,f,_,v,y,S,q,M){function P(H,E){H==="above"?v.above+=E:v.below-=E}function B(H){var E;return H==="above"?(E=v.above,E<S&&(E=S)):(E=v.below,E>q&&(E=q)),E}function A(H,E,U){var N=B(E),L=2,I=5;_.addFixedX(new s(H,f/2,0,N+L,{type:"decoration",klass:"ornament",thickness:3,anchor:U})),P(E,I)}function j(H,E){var U=f/2;n.getSymbolAlign(H)!=="center"&&(U-=n.getSymbolWidth(H)/2);var N=n.symbolHeightInPitches(H)+1,L=B(E);L=E==="above"?L+N/2:L-N/2,_.addFixedX(new s(H,U,n.getSymbolWidth(H),L,{klass:"ornament",thickness:n.symbolHeightInPitches(H),position:E})),P(E,N)}for(var G={"+":"scripts.stopped",open:"scripts.open",snap:"scripts.snap",wedge:"scripts.wedge",thumb:"scripts.thumb",shortphrase:"scripts.shortphrase",mediumphrase:"scripts.mediumphrase",longphrase:"scripts.longphrase",trill:"scripts.trill",trillh:"scripts.trill",roll:"scripts.roll",irishroll:"scripts.roll",marcato:"scripts.umarcato",dmarcato:"scripts.dmarcato",umarcato:"scripts.umarcato",turn:"scripts.turn",uppermordent:"scripts.prall",pralltriller:"scripts.prall",mordent:"scripts.mordent",lowermordent:"scripts.mordent",downbow:"scripts.downbow",upbow:"scripts.upbow",fermata:"scripts.ufermata",invertedfermata:"scripts.dfermata",breath:",",coda:"scripts.coda",segno:"scripts.segno"},C=!1,R=0;R<u.length;R++)switch(u[R]){case"0":case"1":case"2":case"3":case"4":case"5":case"D.C.":case"D.S.":A(u[R],y,"middle"),C=!0;break;case"D.C.alcoda":A("D.C. al coda",y,"end"),C=!0;break;case"D.C.alfine":A("D.C. al fine",y,"end"),C=!0;break;case"D.S.alcoda":A("D.S. al coda",y,"end"),C=!0;break;case"D.S.alfine":A("D.S. al fine",y,"end"),C=!0;break;case"fine":A("FINE",y,"middle"),C=!0;break;case"+":case"open":case"snap":case"wedge":case"thumb":case"shortphrase":case"mediumphrase":case"longphrase":case"trill":case"trillh":case"roll":case"irishroll":case"marcato":case"dmarcato":case"turn":case"uppermordent":case"pralltriller":case"mordent":case"lowermordent":case"downbow":case"upbow":case"fermata":case"breath":case"umarcato":case"coda":case"segno":j(G[u[R]],y),C=!0;break;case"invertedfermata":j(G[u[R]],"below"),C=!0;break;case"mark":_.klass="mark";break;case"accent":M&&(j("scripts.sforzato",y),C=!0);break}return C};function h(u,f,_){for(var v=0;v<u.length;v++)switch(u[v]){case"arpeggio":for(var y=f.abcelem.minpitch-1;y<=f.abcelem.maxpitch;y+=2)f.addExtra(new s("scripts.arpeggio",-n.getSymbolWidth("scripts.arpeggio")*2-_,0,y+2,{klass:"ornament",thickness:n.symbolHeightInPitches("scripts.arpeggio")}));break}}o.prototype.endLine=function(u){this.startDiminuendoX&&(u.addOther(new t(this.startDiminuendoX,p(u.children),">",this.dynamicPositioning)),this.startDiminuendoX=void 0),this.startCrescendoX&&(u.addOther(new t(this.startCrescendoX,p(u.children),"<",this.dynamicPositioning)),this.startCrescendoX=void 0)},o.prototype.dynamicDecoration=function(u,f,_,v){for(var y,S,q,M=0;M<f.length;M++)switch(f[M]){case"diminuendo(":this.startDiminuendoX=_,this.dynamicPositioning=v,y=void 0;break;case"diminuendo)":this.startDiminuendoX||(this.startDiminuendoX=m(u.children)),y={start:this.startDiminuendoX,stop:_},this.startDiminuendoX=void 0;break;case"crescendo(":this.startCrescendoX=_,this.dynamicPositioning=v,S=void 0;break;case"crescendo)":this.startCrescendoX||(this.startCrescendoX=m(u.children)),S={start:this.startCrescendoX,stop:_},this.startCrescendoX=void 0;break;case"~(":case"glissando(":this.startGlissandoX=_,q=void 0;break;case"~)":case"glissando)":q={start:this.startGlissandoX,stop:_},this.startGlissandoX=void 0;break}y&&u.addOther(new t(y.start,y.stop,">",v)),S&&u.addOther(new t(S.start,S.stop,"<",v)),q&&u.addOther(new i(q.start,q.stop))};function m(u){for(var f=0;f<u.length;f++)if(u[f].abcelem.pitches)return u[f];return null}function p(u){return u[u.length-1]}return o.prototype.createDecoration=function(u,f,_,v,y,S,q,M,P,B,A){P||(P={ornamentPosition:"above",volumePosition:B?"above":"below",dynamicPosition:B?"above":"below"}),c(u,f,y,P.volumePosition),this.dynamicDecoration(u,f,y,P.dynamicPosition),d(f,_,v,y,q);var j=l(u,f,_,v,y,S,q,M,A);j.above=Math.max(j.above,this.minTop),j.below=Math.min(j.below,M),g(f,v,y,j,P.ornamentPosition,this.minTop,M,A),h(f,y,S)},Pg=o,Pg}var jg,ok;function jE(){if(ok)return jg;ok=1;var a=function(i,n,s){this.type="EndingElem",this.text=i,this.anchor1=n,this.anchor2=s,this.endingHeightAbove=5,this.pitch=void 0};return jg=a,jg}var Ng,lk;function NE(){if(lk)return Ng;lk=1;var a=function(t){for(var i=0,n=0;n<t.voices.length;n++){var s=t.voices[n].staff;t.voices[n].duplicate||(i+=s.top,i+=-s.bottom)}return i};return Ng=a,Ng}var Og,ck;function OE(){if(ck)return Og;ck=1;var a=NE(),t=function(i){this.getTextSize=i,this.voices=[],this.staffs=[],this.brace=void 0,this.bracket=void 0};return t.prototype.setLimit=function(i,n){n.specialY[i]&&(n.staff.specialY[i]?n.staff.specialY[i]=Math.max(n.staff.specialY[i],n.specialY[i]):n.staff.specialY[i]=n.specialY[i])},t.prototype.addVoice=function(i,n,s){var r=this.voices.length;this.voices[r]=i,this.staffs[n]?this.staffs[n].voices.push(r):this.staffs[this.staffs.length]={top:10,bottom:2,lines:s,voices:[r],specialY:{tempoHeightAbove:0,partHeightAbove:0,volumeHeightAbove:0,dynamicHeightAbove:0,endingHeightAbove:0,chordHeightAbove:0,lyricHeightAbove:0,lyricHeightBelow:0,chordHeightBelow:0,volumeHeightBelow:0,dynamicHeightBelow:0}},i.staff=this.staffs[n]},t.prototype.setHeight=function(){this.height=a(this)},t.prototype.setWidth=function(i){this.w=i;for(var n=0;n<this.voices.length;n++)this.voices[n].setWidth(i)},t.prototype.setStaffLimits=function(i){i.staff.top=Math.max(i.staff.top,i.top),i.staff.bottom=Math.min(i.staff.bottom,i.bottom),this.setLimit("tempoHeightAbove",i),this.setLimit("partHeightAbove",i),this.setLimit("volumeHeightAbove",i),this.setLimit("dynamicHeightAbove",i),this.setLimit("endingHeightAbove",i),this.setLimit("chordHeightAbove",i),this.setLimit("lyricHeightAbove",i),this.setLimit("lyricHeightBelow",i),this.setLimit("chordHeightBelow",i),this.setLimit("volumeHeightBelow",i),this.setLimit("dynamicHeightBelow",i)},Og=t,Og}var Dg,dk;function DE(){if(dk)return Dg;dk=1;var a=Wc(),t=Hr(),i=function(s,r,o){this.type="TempoElement",this.tempo=s,this.tempo.type="tempo",this.tuneNumber=r,this.totalHeightInPitches=6,this.tempoHeightAbove=this.totalHeightInPitches,this.pitch=void 0,this.tempo.duration&&!this.tempo.suppressBpm&&(this.note=this.createNote(o,s,r))};return i.prototype.setX=function(n){this.x=n},i.prototype.createNote=function(n,s,r){var o=.75,l=s.duration[0],c=new a(s,l,1,"tempo",r),d,g,h;l<=1/32?(h="noteheads.quarter",g="flags.u32nd",d=0):l<=1/16?(h="noteheads.quarter",g="flags.u16th",d=0):l<=3/32?(h="noteheads.quarter",g="flags.u16nd",d=1):l<=1/8?(h="noteheads.quarter",g="flags.u8th",d=0):l<=3/16?(h="noteheads.quarter",g="flags.u8th",d=1):l<=1/4?(h="noteheads.quarter",d=0):l<=3/8?(h="noteheads.quarter",d=1):l<=1/2?(h="noteheads.half",d=0):l<=3/4?(h="noteheads.half",d=1):l<=1?(h="noteheads.whole",d=0):l<=1.5?(h="noteheads.whole",d=1):l<=2?(h="noteheads.dbl",d=0):(h="noteheads.dbl",d=1);var m=n(c,h,{verticalPos:0},{dir:"up",flag:g,dot:d,scale:o}),p=m.notehead;c.addHead(p);var u;if(h!=="noteheads.whole"&&h!=="noteheads.dbl"){var f=.3333333333333333*o,_=5*o,v=p.dx+p.w,y=-.6;u=new t(null,v,0,f,{type:"stem",pitch2:_,linewidth:y}),c.addRight(u)}return c},Dg=i,Dg}var Ig,uk;function IE(){if(uk)return Ig;uk=1;var a=function(i,n,s){this.type="TripletElem",this.anchor1=n,this.number=i,this.durationClass=("d"+Math.round(n.parent.durationClass*1e3)/1e3).replace(/\./,"-"),this.middleElems=[],this.flatBeams=s.flatBeams};return a.prototype.isClosed=function(){return!!this.anchor2},a.prototype.middleNote=function(t){this.middleElems.push(t)},a.prototype.setCloseAnchor=function(t){this.anchor2=t,(!this.anchor1.parent.beam||this.anchor1.stemDir==="up")&&(this.endingHeightAbove=4)},Ig=a,Ig}var Lg,fk;function LE(){if(fk)return Lg;fk=1;function a(i){switch(i){case"B#":return"H#";case"B♯":return"H♯";case"B":return"H";case"Bb":return"B";case"B♭":return"B"}return i}function t(i,n,s){var r=i.split(`
|
||
`);for(let o=0;o<r.length;o++){let c=r[o].match(/^([ABCDEFG][♯♭]?)?([^\/]+)?(\/([ABCDEFG][#b♯♭]?))?/);if(!c)continue;let d=c[1]||"",g=c[2]||"",h=c[4]||"";s&&(d=a(d),h=a(h));const m=n?"":"",p=h?"/"+h:"";r[o]=[d,g,p].join(m)}return r.join(`
|
||
`)}return Lg=t,Lg}var Vg,pk;function VE(){if(pk)return Vg;pk=1;var a=Hr(),t=Us();const i=LE();var n=function(r,o,l,c,d,g,h,m){for(var p=0;p<l.chord.length;p++){var u=l.chord[p].position,f=l.chord[p].rel_position,_=u==="left"||u==="right"||u==="below"||u==="above"||!!f,v,y;_?(v="annotationfont",y="abcjs-annotation"):(v="gchordfont",y="abcjs-chord");var S=r.attr(v,y),q=l.chord[p].name,M;if(typeof q=="string")M=s(q,u,f,_,v,y,S,r,o,l,c,d,g,h,m),c=M.roomTaken,d=M.roomTakenRight;else for(var P=0;P<q.length;P++)M=s(q[P].text,u,f,_,v,y,S,r,o,l,c,d,g,h,m),c=M.roomTaken,d=M.roomTakenRight}return{roomTaken:c,roomTakenRight:d}};function s(r,o,l,c,d,g,h,m,p,u,f,_,v,y,S){for(var q=r.split(`
|
||
`),M=q.length-1;M>=0;M--){var P=q[M],B=0,A;c||(P=i(P,y,S));var j=m.calc(P,d,g),G=j.width,C=j.height/t.STEP;switch(o){case"left":f+=G+7,B=-f,A=u.averagepitch,p.addExtra(new a(P,B,G+4,A,{type:"text",height:C,dim:h,position:"left"}));break;case"right":_+=4,B=_,A=u.averagepitch,p.addRight(new a(P,B,G+4,A,{type:"text",height:C,dim:h,position:"right"}));break;case"below":p.addRight(new a(P,0,0,void 0,{type:"text",position:"below",height:C,dim:h,realWidth:G}));break;case"above":p.addRight(new a(P,0,0,void 0,{type:"text",position:"above",height:C,dim:h,realWidth:G}));break;default:if(l){var R=l.y+3*t.STEP;p.addRight(new a(P,B+l.x,0,u.minpitch+R/t.STEP,{position:"relative",type:"text",height:C,dim:h}))}else{var H="above";u.positioning&&u.positioning.chordPosition&&(H=u.positioning.chordPosition),H!=="hidden"&&p.addCentered(new a(P,v/2,G,void 0,{type:"chord",position:H,height:C,dim:h,realWidth:G}))}}}return{roomTaken:f,roomTakenRight:_}}return Vg=n,Vg}var Hg,mk;function HE(){if(mk)return Hg;mk=1;var a=Wc(),t=CE(),i=GE(),n=FE(),s=ME(),r=zE(),o=EE(),l=PE(),c=jE(),d=ll(),g=Hr(),h=Us(),m=OE(),p=DE(),u=sk(),f=IE(),_=qw(),v=VE(),y=_w(),S=Vr(),q=function(E){var U=0;return E.duration&&(U=E.duration),U},M=!1,P={rest:{0:"rests.whole",1:"rests.half",2:"rests.quarter",3:"rests.8th",4:"rests.16th",5:"rests.32nd",6:"rests.64th",7:"rests.128th",multi:"rests.multimeasure"},note:{"-1":"noteheads.dbl",0:"noteheads.whole",1:"noteheads.half",2:"noteheads.quarter",3:"noteheads.quarter",4:"noteheads.quarter",5:"noteheads.quarter",6:"noteheads.quarter",7:"noteheads.quarter",nostem:"noteheads.quarter"},rhythm:{"-1":"noteheads.slash.whole",0:"noteheads.slash.whole",1:"noteheads.slash.whole",2:"noteheads.slash.quarter",3:"noteheads.slash.quarter",4:"noteheads.slash.quarter",5:"noteheads.slash.quarter",6:"noteheads.slash.quarter",7:"noteheads.slash.quarter",nostem:"noteheads.slash.nostem"},x:{"-1":"noteheads.indeterminate",0:"noteheads.indeterminate",1:"noteheads.indeterminate",2:"noteheads.indeterminate",3:"noteheads.indeterminate",4:"noteheads.indeterminate",5:"noteheads.indeterminate",6:"noteheads.indeterminate",7:"noteheads.indeterminate",nostem:"noteheads.indeterminate"},harmonic:{"-1":"noteheads.harmonic.quarter",0:"noteheads.harmonic.quarter",1:"noteheads.harmonic.quarter",2:"noteheads.harmonic.quarter",3:"noteheads.harmonic.quarter",4:"noteheads.harmonic.quarter",5:"noteheads.harmonic.quarter",6:"noteheads.harmonic.quarter",7:"noteheads.harmonic.quarter",nostem:"noteheads.harmonic.quarter"},triangle:{"-1":"noteheads.triangle.quarter",0:"noteheads.triangle.quarter",1:"noteheads.triangle.quarter",2:"noteheads.triangle.quarter",3:"noteheads.triangle.quarter",4:"noteheads.triangle.quarter",5:"noteheads.triangle.quarter",6:"noteheads.triangle.quarter",7:"noteheads.triangle.quarter",nostem:"noteheads.triangle.quarter"},uflags:{3:"flags.u8th",4:"flags.u16th",5:"flags.u32nd",6:"flags.u64th"},dflags:{3:"flags.d8th",4:"flags.d16th",5:"flags.d32nd",6:"flags.d64th"}},B=function(E,U,N){this.decoration=new l,this.getTextSize=E,this.tuneNumber=U,this.isBagpipes=N.bagpipes,this.flatBeams=N.flatbeams,this.graceSlurs=N.graceSlurs,this.percmap=N.percmap,this.initialClef=N.initialClef,this.jazzchords=!!N.jazzchords,this.accentAbove=!!N.accentAbove,this.germanAlphabet=!!N.germanAlphabet,this.reset()};B.prototype.reset=function(){this.slurs={},this.ties=[],this.voiceScale=1,this.voiceColor=void 0,this.slursbyvoice={},this.tiesbyvoice={},this.endingsbyvoice={},this.scaleByVoice={},this.colorByVoice={},this.tripletmultiplier=1,this.abcline=void 0,this.accidentalSlot=void 0,this.accidentalshiftx=void 0,this.dotshiftx=void 0,this.hasVocals=!1,this.minY=void 0,this.partstartelem=void 0,this.startlimitelem=void 0,this.stemdir=void 0},B.prototype.setStemHeight=function(E){this.stemHeight=Math.round(E*10/h.STEP)/10},B.prototype.getCurrentVoiceId=function(E,U){return"s"+E+"v"+U},B.prototype.pushCrossLineElems=function(E,U){this.slursbyvoice[this.getCurrentVoiceId(E,U)]=this.slurs,this.tiesbyvoice[this.getCurrentVoiceId(E,U)]=this.ties,this.endingsbyvoice[this.getCurrentVoiceId(E,U)]=this.partstartelem,this.scaleByVoice[this.getCurrentVoiceId(E,U)]=this.voiceScale,this.voiceColor&&(this.colorByVoice[this.getCurrentVoiceId(E,U)]=this.voiceColor)},B.prototype.popCrossLineElems=function(E,U){this.slurs=this.slursbyvoice[this.getCurrentVoiceId(E,U)]||{},this.ties=this.tiesbyvoice[this.getCurrentVoiceId(E,U)]||[],this.partstartelem=this.endingsbyvoice[this.getCurrentVoiceId(E,U)],this.voiceScale=this.scaleByVoice[this.getCurrentVoiceId(E,U)],this.voiceScale===void 0&&(this.voiceScale=1),this.voiceColor=this.colorByVoice[this.getCurrentVoiceId(E,U)]},B.prototype.containsLyrics=function(E){for(var U=0;U<E.length;U++)for(var N=0;N<E[U].voices.length;N++)for(var L=0;L<E[U].voices[N].length;L++){var I=E[U].voices[N][L];if(I.lyric){(!I.positioning||I.positioning.vocalPosition==="below")&&(this.hasVocals=!0);return}}},B.prototype.createABCLine=function(E,U,N){this.minY=2,this.containsLyrics(E);var L=new m(this.getTextSize);this.tempoSet=!1;for(var I=0;I<E.length;I++)M&&this.restoreState(),M=!1,this.createABCStaff(L,E[I],U,I,N);return L},B.prototype.createABCStaff=function(E,U,N,L,I){E.getTextSize.updateFonts(U);for(var T=0;T<U.voices.length;T++){var F=new _(T,U.voices.length);T===0?(F.barfrom=U.connectBarLines==="start"||U.connectBarLines==="continue",F.barto=U.connectBarLines==="continue"||U.connectBarLines==="end"):F.duplicate=!0,U.title&&U.title[T]&&(F.header=U.title[T].replace(/\\n/g,`
|
||
`),F.headerPosition=6+E.getTextSize.baselineToCenter(F.header,"voicefont","staff-extra voice-name",T,U.voices.length)/h.STEP),U.clef&&U.clef.type==="perc"&&(F.isPercussion=!0);var z=(!this.initialClef||I===0)&&n(U.clef,this.tuneNumber);z&&(T===0&&U.barNumber&&this.addMeasureNumber(U.barNumber,z),F.addChild(z),this.startlimitelem=z);var D=s(U.key,this.tuneNumber);if(D&&(F.addChild(D),this.startlimitelem=D),U.meter){U.meter.type==="specified"?this.measureLength=U.meter.value[0].num/U.meter.value[0].den:this.measureLength=1;var Q=o(U.meter,this.tuneNumber);F.addChild(Q),this.startlimitelem=Q}F.duplicate&&(F.children=[]);var X=U.clef.stafflines||U.clef.stafflines===0?U.clef.stafflines:5;E.addVoice(F,L,X);var Z=X===1;this.createABCVoice(U.voices[T],N,L,T,Z,F),E.setStaffLimits(F),T===0&&(U.brace==="start"||!E.brace&&U.brace?(E.brace||(E.brace=[]),E.brace.push(new i(F,"brace"))):U.brace==="end"&&E.brace?E.brace[E.brace.length-1].setBottomStaff(F):U.brace==="continue"&&E.brace&&E.brace[E.brace.length-1].continuing(F),U.bracket==="start"||!E.bracket&&U.bracket?(E.bracket||(E.bracket=[]),E.bracket.push(new i(F,"bracket"))):U.bracket==="end"&&E.bracket?E.bracket[E.bracket.length-1].setBottomStaff(F):U.bracket==="continue"&&E.bracket&&E.bracket[E.bracket.length-1].continuing(F))}};function A(E,U){var N=E[U];if(N.el_type!=="note"||!N.startBeam||N.endBeam)return{count:1,elem:N};for(var L=[];U<E.length&&E[U].el_type==="note"&&(L.push(E[U]),!E[U].endBeam);)U++;return{count:L.length,elem:L}}B.prototype.createABCVoice=function(E,U,N,L,I,T){this.popCrossLineElems(N,L),this.stemdir=this.isBagpipes?"down":null,this.abcline=E,this.partstartelem&&(this.partstartelem=new c("",null,null),T.addOther(this.partstartelem));var F=T.voicetotal<2?-1:T.voicenumber;for(var z in this.slurs)this.slurs.hasOwnProperty(z)&&(this.slurs[z]=new u({force:this.slurs[z].force,voiceNumber:F,stemDir:this.slurs[z].stemDir,style:this.slurs[z].dotted}),M&&this.slurs[z].setHint(),T.addOther(this.slurs[z]));for(var D=0;D<this.ties.length;D++)this.ties[D]=new u({force:this.ties[D].force,stemDir:this.ties[D].stemDir,voiceNumber:F,style:this.ties[D].dotted}),M&&this.ties[D].setHint(),T.addOther(this.ties[D]);for(var Q=0;Q<this.abcline.length;Q++)j(this.abcline[Q]),this.minY=Math.min(this.abcline[Q].minpitch,this.minY);for(var X=N===0,Z=0;Z<this.abcline.length;){var ue=A(this.abcline,Z),de=this.createABCElement(X,I,T,ue.elem);if(de)for(D=0;D<de.length;D++){if(!this.tempoSet&&U&&!U.suppress){this.tempoSet=!0;var ae=new a(U,0,0,"tempo",this.tuneNumber,{});ae.addFixedX(new p(U,this.tuneNumber,r)),T.addChild(ae)}T.addChild(de[D])}Z+=ue.count}this.decoration.endLine(T),this.pushCrossLineElems(N,L)},B.prototype.saveState=function(){this.tiesSave=S.cloneArray(this.ties),this.slursSave=S.cloneHashOfHash(this.slurs),this.slursbyvoiceSave=S.cloneHashOfHash(this.slursbyvoice),this.tiesbyvoiceSave=S.cloneHashOfArrayOfHash(this.tiesbyvoice)},B.prototype.restoreState=function(){this.ties=S.cloneArray(this.tiesSave),this.slurs=S.cloneHashOfHash(this.slursSave),this.slursbyvoice=S.cloneHashOfHash(this.slursbyvoiceSave),this.tiesbyvoice=S.cloneHashOfArrayOfHash(this.tiesbyvoiceSave)},B.prototype.createABCElement=function(E,U,N,L){var I=[];switch(L.el_type){case void 0:I=this.createBeam(U,N,L);break;case"note":I[0]=this.createNote(L,!1,U,N),this.triplet&&this.triplet.isClosed()&&(N.addOther(this.triplet),this.triplet=null,this.tripletmultiplier=1);break;case"bar":I[0]=this.createBarLine(N,L,E),N.duplicate&&I.length>0&&(I[0].invisible=!0);break;case"meter":I[0]=o(L,this.tuneNumber),this.startlimitelem=I[0],N.duplicate&&I.length>0&&(I[0].invisible=!0);break;case"clef":if(I[0]=n(L,this.tuneNumber),!I[0])return null;N.duplicate&&I.length>0&&(I[0].invisible=!0);break;case"key":var T=s(L,this.tuneNumber);T&&(I[0]=T,this.startlimitelem=I[0]),N.duplicate&&I.length>0&&(I[0].invisible=!0);break;case"stem":this.stemdir=L.direction==="auto"?void 0:L.direction;break;case"part":var F=new a(L,0,0,"part",this.tuneNumber),z=this.getTextSize.calc(L.title,"partsfont","part");F.addFixedX(new g(L.title,0,0,void 0,{type:"part",height:z.height/h.STEP})),I[0]=F;break;case"tempo":var D=new a(L,0,0,"tempo",this.tuneNumber);L.suppress||D.addFixedX(new p(L,this.tuneNumber,r)),I[0]=D;break;case"style":L.head==="normal"?delete this.style:this.style=L.head;break;case"hint":M=!0,this.saveState();break;case"midi":break;case"scale":this.voiceScale=L.size;break;case"color":this.voiceColor=L.color,N.color=this.voiceColor;break;default:var Q=new a(L,0,0,"unsupported",this.tuneNumber);Q.addFixed(new g("element type "+L.el_type,0,0,void 0,{type:"debug"})),I[0]=Q}return I};function j(E){if(E.pitches){G(E);for(var U=0,N=0;N<E.pitches.length;N++)U+=E.pitches[N].verticalPos;E.averagepitch=U/E.pitches.length,E.minpitch=E.pitches[0].verticalPos,E.maxpitch=E.pitches[E.pitches.length-1].verticalPos}}B.prototype.createBeam=function(E,U,N){var L=[],I=new t(this.stemHeight*this.voiceScale,this.stemdir,this.flatBeams,N[0]);M&&I.setHint();for(var T=0;T<N.length;T++)I.runningDirection(N[T]);I.setStemDirection();var F=this.stemdir;for(this.stemdir=I.stemsUp?"up":"down",T=0;T<N.length;T++){var z=N[T],D=this.createNote(z,!0,E,U);L.push(D),I.add(D),this.triplet&&this.triplet.isClosed()&&(U.addOther(this.triplet),this.triplet=null,this.tripletmultiplier=1)}return I.calcDir(),U.addBeam(I),this.stemdir=F,L};var G=function(E){var U;do{U=!0;for(var N=0;N<E.pitches.length-1;N++)if(E.pitches[N].pitch>E.pitches[N+1].pitch){U=!1;var L=E.pitches[N];E.pitches[N]=E.pitches[N+1],E.pitches[N+1]=L}}while(!U)},C=function(E,U,N,L,I,T,F,z,D){for(var Q=N;Q>11;Q--)Q%2===0&&!L&&E.addFixed(new g(null,z,(I+4)*D,Q,{type:"ledger"}));for(Q=U;Q<1;Q++)Q%2===0&&!L&&E.addFixed(new g(null,z,(I+4)*D,Q,{type:"ledger"}));for(Q=0;Q<T.length;Q++){var X=I;F==="down"&&(X=-X),E.addFixed(new g(null,X+z,(I+4)*D,T[Q],{type:"ledger"}))}};B.prototype.addGraceNotes=function(E,U,N,L,I,T,F){var z=.6,D=3.5/5;I=Math.round(I*D);var Q=null,X;E.gracenotes.length>1&&(Q=new t(I,"grace",T),M&&Q.setHint(),Q.mainNote=N);var Z,ue=[];for(Z=E.gracenotes.length-1;Z>=0;Z--)F+=10,ue[Z]=F,E.gracenotes[Z].accidental&&(F+=7);for(Z=0;Z<E.gracenotes.length;Z++){var de=E.gracenotes[Z].verticalPos;X=Q?null:P.uflags[T?5:3];var ae=[],V=r(N,"noteheads.quarter",E.gracenotes[Z],{dir:"up",headx:-ue[Z],extrax:-ue[Z],flag:X,scale:z*this.voiceScale,accidentalSlot:ae});V.notehead.highestVert=V.notehead.pitch+I;var pe=V.notehead;if(this.addSlursAndTies(N,E.gracenotes[Z],pe,U,"up",!0),N.addExtra(pe),E.gracenotes[Z].acciaccatura){var Ce=E.gracenotes[Z].verticalPos+7*z,ce=Q?5:6;N.addRight(new g("flags.ugrace",-ue[Z]+ce,0,Ce,{scalex:z,scaley:z}))}if(Q){var Te=E.gracenotes[Z].duration/2;T&&(Te/=2);var ye={heads:[pe],abcelem:{averagepitch:de,minpitch:de,maxpitch:de,duration:Te}};Q.add(ye)}else{var Ie=de+.3333333333333333*z,Je=de+7*z,tt=pe.dx+pe.w,De=-.6;N.addExtra(new g(null,tt,0,Ie,{type:"stem",pitch2:Je,linewidth:De}))}C(N,de,de,!1,d.getSymbolWidth("noteheads.quarter"),[],!0,pe.dx-1,.6);var le=E.rest&&(E.rest.type==="spacer"||E.rest.type==="invisible");Z===0&&!T&&this.graceSlurs&&!le&&U.addOther(new u({anchor1:pe,anchor2:L,isGrace:!0}))}return Q&&(Q.calcDir(),U.addBeam(Q)),F};function R(E,U,N,L,I,T,F,z,D){var Q,X=7,Z,ue,de;switch(I&&(T==="down"&&(X=3),T==="up"&&(X=11)),F&&(N<.5||N<1?X=7:X=5),U.rest.type){case"whole":Q=P.rest[0],U.averagepitch=X,U.minpitch=X,U.maxpitch=X,L=0;break;case"rest":U.style==="rhythm"?Q=P.rhythm[-z]:Q=P.rest[-z],U.averagepitch=X,U.minpitch=X,U.maxpitch=X;break;case"invisible":case"invisible-multimeasure":case"spacer":Q="",U.averagepitch=X,U.minpitch=X,U.maxpitch=X;break;case"multimeasure":Q=P.rest.multi,U.averagepitch=X,U.minpitch=X,U.maxpitch=X,L=0;var ae=d.getSymbolWidth(Q);E.addHead(new g(Q,ae,ae*2,7));var V=new g(""+U.rest.text,ae,ae,16,{type:"multimeasure-text"});E.addExtra(V)}if(U.rest.type.indexOf("multimeasure")<0&&U.rest.type!=="invisible"){var pe=r(E,Q,{verticalPos:X},{dot:L,scale:D});Z=pe.notehead,Z&&(E.addHead(Z),ue=pe.accidentalshiftx,de=pe.dotshiftx)}return{noteHead:Z,roomTaken:ue,roomTakenRight:de}}function H(E,U){for(var N=0;N<E.length;N++)if(JSON.stringify(E[N])===JSON.stringify(U))return;E.push(U)}return B.prototype.addNoteToAbcElement=function(E,U,N,L,I,T,F,z,D){var Q=0,X,Z=0,ue=0,de,ae,V=[],pe=[],Ce=0,ce=U.averagepitch>=6?"down":"up";L&&(ce=L),I=U.style?U.style:I,(!I||I==="normal")&&(I="note");var Te;T?Te=P[I].nostem:Te=P[I][-F],Te||console.log("noteSymbol:",I,F,T);var ye;for(ye=ce==="down"?U.pitches.length-2:1;ce==="down"?ye>=0:ye<U.pitches.length;ye=ce==="down"?ye-1:ye+1){var Ie=U.pitches[ce==="down"?ye+1:ye-1],Je=U.pitches[ye],tt=ce==="down"?Ie.pitch-Je.pitch:Je.pitch-Ie.pitch;tt<=1&&!Ie.printer_shift&&(Je.printer_shift=tt?"different":"same",(Je.verticalPos>11||Je.verticalPos<1)&&V.push(Je.verticalPos-Je.verticalPos%2),ce==="down"?Z=d.getSymbolWidth(Te)+2:Q=d.getSymbolWidth(Te)+2)}var De=U.pitches.length;for(ye=0;ye<U.pitches.length;ye++){if(!z){var le;ce==="down"&&ye!==0||ce==="up"&&ye!==De-1?le=null:le=P[ce==="down"?"dflags":"uflags"][-F]}var xe;if(U.pitches[ye].style)xe=P[U.pitches[ye].style][-F];else if(D.isPercussion&&this.percmap){xe=Te;var Ke=this.percmap[y(U.pitches[ye])];Ke&&Ke.noteHead&&P[Ke.noteHead]&&(xe=P[Ke.noteHead][-F])}else xe=Te;U.pitches[ye].highestVert=U.pitches[ye].verticalPos;var fe=(L==="up"||ce==="up")&&ye===0,we=(L==="down"||ce==="down")&&ye===De-1;if(fe||we){if((U.startSlur||De===1)&&(U.pitches[ye].highestVert=U.pitches[De-1].verticalPos,q(U)<1&&(L==="up"||ce==="up")&&(U.pitches[ye].highestVert+=6)),U.startSlur)for(U.pitches[ye].startSlur||(U.pitches[ye].startSlur=[]),ae=0;ae<U.startSlur.length;ae++)H(U.pitches[ye].startSlur,U.startSlur[ae]);if(U.endSlur)for(U.pitches[ye].highestVert=U.pitches[De-1].verticalPos,q(U)<1&&(L==="up"||ce==="up")&&(U.pitches[ye].highestVert+=6),U.pitches[ye].endSlur||(U.pitches[ye].endSlur=[]),ae=0;ae<U.endSlur.length;ae++)H(U.pitches[ye].endSlur,U.endSlur[ae])}var me=!z&&F<=-1,be=De>1?ye+1:null,ke=r(E,xe,U.pitches[ye],{dir:ce,extrax:-Z,flag:le,dot:N,dotshiftx:Q,scale:this.voiceScale,accidentalSlot:pe,shouldExtendStem:!L,printAccidentals:!D.isPercussion,chordPos:be});Ce=Math.max(d.getSymbolWidth(xe),Ce),E.extraw-=ke.extraLeft,X=ke.notehead,X&&(this.addSlursAndTies(E,U.pitches[ye],X,D,me?ce:null,!1),U.gracenotes&&U.gracenotes.length>0&&(X.bottom=X.bottom-1),E.addHead(X)),Z+=ke.accidentalshiftx,ue=Math.max(ue,ke.dotshiftx)}if(me){var $e=Math.round(70*this.voiceScale)/10,ge=ce==="down"?U.minpitch-$e:U.minpitch+1/3;ge>6&&!L&&(ge=6);var Me=ce==="down"?U.maxpitch-1/3:U.maxpitch+$e;Me<6&&!L&&(Me=6);var Fe=ce==="down"||E.heads.length===0?0:E.heads[0].w,qe=ce==="down"?1:-1;X&&X.c==="noteheads.slash.quarter"&&(ce==="down"?Me-=1:ge+=1),X&&X.c==="noteheads.triangle.quarter"&&(ce==="down"?Me-=.7:ge-=1.2),E.addRight(new g(null,Fe,0,ge,{type:"stem",pitch2:Me,linewidth:qe,bottom:ge-1})),de=Math.min(ge,Me)}return{noteHead:X,roomTaken:Z,roomTakenRight:ue,min:de,additionalLedgers:V,dir:ce,symbolWidth:Ce}},B.prototype.addLyric=function(E,U,N){var L="";U.lyric.forEach(function(F){var z=F.divider===" "?"":F.divider;L+=F.syllable+z+`
|
||
`});var I=this.getTextSize.calc(L,"vocalfont","lyric"),T=U.positioning?U.positioning.vocalPosition:"below";E.addCentered(new g(L,0,I.width,void 0,{type:"lyric",position:T,height:I.height/h.STEP,dim:this.getTextSize.attr("vocalfont","lyric"),voiceNumber:N}))},B.prototype.createNote=function(E,U,N,L){var I=null,T=0,F=0,z=0,D=[],Q,X=q(E),Z=!1;X===0&&(Z=!0,X=.25,U=!0);for(var ue=Math.floor(Math.log(X)/Math.log(2)),de=0,ae=Math.pow(2,ue),V=ae/2;ae<X;de++,ae+=V,V/=2);E.startTriplet&&(this.tripletmultiplier=E.tripletMultiplier);var pe=X*this.tripletmultiplier;E.rest&&E.rest.type==="multimeasure"&&(pe=1),E.rest&&E.rest.type==="invisible-multimeasure"&&(pe=this.measureLength*E.rest.text);var Ce=E.rest?"rest":"note",ce=new a(E,pe,1,Ce,this.tuneNumber,{durationClassOveride:E.duration*this.tripletmultiplier});if(M&&ce.setHint(),E.rest){this.measureLength===X&&E.rest.type!=="invisible"&&E.rest.type!=="spacer"&&E.rest.type.indexOf("multimeasure")<0&&(E.rest.type="whole");var Te=R(ce,E,X,de,L.voicetotal>1,this.stemdir,N,ue,this.voiceScale);I=Te.noteHead,T=Te.roomTaken,F=Te.roomTakenRight}else{var ye=this.addNoteToAbcElement(ce,E,de,this.stemdir,this.style,Z,ue,U,L);ye.min!==void 0&&(this.minY=Math.min(ye.min,this.minY)),I=ye.noteHead,T=ye.roomTaken,F=ye.roomTakenRight,D=ye.additionalLedgers,Q=ye.dir,z=ye.symbolWidth}if(E.lyric!==void 0&&this.addLyric(ce,E,L.voicenumber),E.gracenotes!==void 0&&(T+=this.addGraceNotes(E,L,ce,I,this.stemHeight*this.voiceScale,this.isBagpipes,T)),E.decoration){var Ie=U&&Q!=="up"?Math.min(-3,ce.bottom-6):ce.bottom;this.decoration.createDecoration(L,E.decoration,ce.top,I?I.w:0,ce,T,Q,Ie,E.positioning,this.hasVocals,this.accentAbove)}if(E.barNumber&&ce.addFixed(new g(E.barNumber,-10,0,0,{type:"barNumber"})),C(ce,E.minpitch,E.maxpitch,E.rest,z,D,Q,-2,1),E.chord!==void 0){var Je=v(this.getTextSize,ce,E,T,F,z,this.jazzchords,this.germanAlphabet);T=Je.roomTaken,F=Je.roomTakenRight}return E.startTriplet&&(this.triplet=new f(E.startTriplet,I,{flatBeams:this.flatBeams})),E.endTriplet&&this.triplet&&this.triplet.setCloseAnchor(I),this.triplet&&!E.startTriplet&&!E.endTriplet&&!(E.rest&&E.rest.type==="spacer")&&this.triplet.middleNote(I),ce},B.prototype.addSlursAndTies=function(E,U,N,L,I,T){if(U.endTie&&this.ties.length>0){for(var F=!1,z=0;z<this.ties.length;z++)if(this.ties[z].anchor1&&this.ties[z].anchor1.pitch===N.pitch){this.ties[z].setEndAnchor(N),L.setRange(this.ties[z]),this.ties.splice(z,1),F=!0;break}F||(this.ties[0].setEndAnchor(N),L.setRange(this.ties[0]),this.ties.splice(0,1))}var D=L.voicetotal<2?-1:L.voicenumber;if(U.startTie){var Q=new u({anchor1:N,force:this.stemdir==="down"||this.stemdir==="up",stemDir:this.stemdir,isGrace:T,voiceNumber:D,style:U.startTie.style});M&&Q.setHint(),this.ties[this.ties.length]=Q,L.addOther(Q),E.startTie=!0}var X,Z;if(U.endSlur)for(var ue=0;ue<U.endSlur.length;ue++)Z=U.endSlur[ue],this.slurs[Z]?(X=this.slurs[Z],X.setEndAnchor(N),L.setRange(X),delete this.slurs[Z]):(X=new u({anchor2:N,stemDir:this.stemdir,voiceNumber:D}),M&&X.setHint(),L.addOther(X)),this.startlimitelem&&X.setStartX(this.startlimitelem);else if(!T)for(var de in this.slurs)this.slurs.hasOwnProperty(de)&&this.slurs[de].addInternalNote(N);if(U.startSlur)for(ue=0;ue<U.startSlur.length;ue++)Z=U.startSlur[ue].label,X=new u({anchor1:N,stemDir:this.stemdir,voiceNumber:D,style:U.startSlur[ue].style}),M&&X.setHint(),this.slurs[Z]=X,L.addOther(X)},B.prototype.addMeasureNumber=function(E,U){var N=this.getTextSize.calc(E,"measurefont","bar-number"),L=0;U.isClef&&(L+=N.width/2);var I=N.width>10&&U.abcelem.type==="treble"?13.5:11;U.addFixed(new g(E,L,N.width,I+N.height/h.STEP,{type:"barNumber",dim:this.getTextSize.attr("measurefont","bar-number")}))},B.prototype.createBarLine=function(E,U,N){var L=new a(U,0,10,"bar",this.tuneNumber),I=null,T=0;U.barNumber&&this.addMeasureNumber(U.barNumber,L);var F=U.type==="bar_right_repeat"||U.type==="bar_dbl_repeat",z=U.type!=="bar_left_repeat"&&U.type!=="bar_thick_thin"&&U.type!=="bar_invisible",D=U.type==="bar_right_repeat"||U.type==="bar_dbl_repeat"||U.type==="bar_left_repeat"||U.type==="bar_thin_thick"||U.type==="bar_thick_thin",Q=U.type==="bar_left_repeat"||U.type==="bar_thick_thin"||U.type==="bar_thin_thin"||U.type==="bar_dbl_repeat",X=U.type==="bar_left_repeat"||U.type==="bar_dbl_repeat";if(F||X){for(var Z in this.slurs)this.slurs.hasOwnProperty(Z)&&this.slurs[Z].setEndX(L);this.startlimitelem=L}if(F&&(L.addRight(new g("dots.dot",T,1,7)),L.addRight(new g("dots.dot",T,1,5)),T+=6),z&&(I=new g(null,T,1,2,{type:"bar",pitch2:10,linewidth:.6}),L.addRight(I)),U.type==="bar_invisible"&&(I=new g(null,T,1,2,{type:"none",pitch2:10,linewidth:.6}),L.addRight(I)),U.decoration&&this.decoration.createDecoration(E,U.decoration,12,D?3:1,L,0,"down",2,U.positioning,this.hasVocals,this.accentAbove),D&&(T+=4,I=new g(null,T,4,2,{type:"bar",pitch2:10,linewidth:4}),L.addRight(I),T+=5),this.partstartelem&&U.endEnding&&(this.partstartelem.anchor2=I,this.partstartelem=null),Q&&(T+=3,I=new g(null,T,1,2,{type:"bar",pitch2:10,linewidth:.6}),L.addRight(I)),X&&(T+=3,L.addRight(new g("dots.dot",T,1,7)),L.addRight(new g("dots.dot",T,1,5))),U.startEnding&&N&&E.voicenumber===0){var ue=this.getTextSize.calc(U.startEnding,"repeatfont","").width;L.minspacing+=ue+10,this.partstartelem=new c(U.startEnding,I,null),E.addOther(this.partstartelem)}return L.extraw-=5,U.chord!==void 0&&v(this.getTextSize,L,U,0,0,0,!1,this.germanAlphabet),L},Hg=B,Hg}var Wg,gk;function WE(){if(gk)return Wg;gk=1;var a="http://www.w3.org/2000/svg";function t(o){this.svg=r(),this.currentGroup=[],o.appendChild(this.svg)}t.prototype.clear=function(){if(this.svg){var o=this.svg.parentNode;this.svg=r(),this.currentGroup=[],o&&(o.innerHTML="",o.appendChild(this.svg))}},t.prototype.setTitle=function(o){var l=document.createElement("title"),c=document.createTextNode(o);l.appendChild(c),this.svg.insertBefore(l,this.svg.firstChild)},t.prototype.setResponsiveWidth=function(o,l){if(this.svg.setAttribute("viewBox","0 0 "+o+" "+l),this.svg.setAttribute("preserveAspectRatio","xMinYMin meet"),this.svg.removeAttribute("height"),this.svg.removeAttribute("width"),this.svg.style.display="inline-block",this.svg.style.position="absolute",this.svg.style.top="0",this.svg.style.left="0",this.svg.parentNode){var c=this.svg.parentNode.getAttribute("class");c?c.indexOf("abcjs-container")<0&&this.svg.parentNode.setAttribute("class",c+" abcjs-container"):this.svg.parentNode.setAttribute("class","abcjs-container"),this.svg.parentNode.style.display="inline-block",this.svg.parentNode.style.position="relative",this.svg.parentNode.style.width="100%";var d=l/o*100;this.svg.parentNode.style["padding-bottom"]=d+"%",this.svg.parentNode.style["vertical-align"]="middle",this.svg.parentNode.style.overflow="hidden"}},t.prototype.setSize=function(o,l){this.svg.setAttribute("width",o),this.svg.setAttribute("height",l)},t.prototype.setAttribute=function(o,l){this.svg.setAttribute(o,l)},t.prototype.setScale=function(o){o!==1?(this.svg.style.transform="scale("+o+","+o+")",this.svg.style["-ms-transform"]="scale("+o+","+o+")",this.svg.style["-webkit-transform"]="scale("+o+","+o+")",this.svg.style["transform-origin"]="0 0",this.svg.style["-ms-transform-origin-x"]="0",this.svg.style["-ms-transform-origin-y"]="0",this.svg.style["-webkit-transform-origin-x"]="0",this.svg.style["-webkit-transform-origin-y"]="0"):(this.svg.style.transform="",this.svg.style["-ms-transform"]="",this.svg.style["-webkit-transform"]="")},t.prototype.insertStyles=function(o){var l=document.createElementNS(a,"style");l.textContent=o,this.svg.insertBefore(l,this.svg.firstChild)},t.prototype.setParentStyles=function(o){for(var l in o)o.hasOwnProperty(l)&&this.svg.parentNode&&(this.svg.parentNode.style[l]=o[l]);if(this.dummySvg){var c=document.querySelector("body");c.removeChild(this.dummySvg),this.dummySvg=null}};function i(o,l,c){var d=c-o;return"M "+o+" "+l+" l "+d+" 0 l 0 1 l "+-d+" 0 z "}function n(o,l,c){var d=c-l;return"M "+o+" "+l+" l 0 "+d+" l 1 0 l 0 "+-d+" z "}t.prototype.rect=function(o){var l=[],c=o.x,d=o.y,g=o.x+o.width,h=o.y+o.height;return l.push(i(c,d,g)),l.push(i(c,h,g)),l.push(n(g,d,h)),l.push(n(c,h,d)),this.path({path:l.join(" "),stroke:"none","data-name":o["data-name"]})},t.prototype.dottedLine=function(o){var l=document.createElementNS(a,"line");l.setAttribute("x1",o.x1),l.setAttribute("x2",o.x2),l.setAttribute("y1",o.y1),l.setAttribute("y2",o.y2),l.setAttribute("stroke",o.stroke),l.setAttribute("stroke-dasharray","5,5"),this.svg.insertBefore(l,this.svg.firstChild)},t.prototype.rectBeneath=function(o){var l=document.createElementNS(a,"rect");l.setAttribute("x",o.x),l.setAttribute("width",o.width),l.setAttribute("y",o.y),l.setAttribute("height",o.height),o.stroke&&l.setAttribute("stroke",o.stroke),o["stroke-opacity"]&&l.setAttribute("stroke-opacity",o["stroke-opacity"]),o.fill&&l.setAttribute("fill",o.fill),o["fill-opacity"]&&l.setAttribute("fill-opacity",o["fill-opacity"]),this.svg.insertBefore(l,this.svg.firstChild)},t.prototype.text=function(o,l,c,d){var g=document.createElementNS(a,"text");g.setAttribute("stroke","none");for(var h in l)l.hasOwnProperty(h)&&g.setAttribute(h,l[h]);for(var m=l["data-name"]=="free-text",p=(""+o).split(`
|
||
`),u=0;u<p.length;u++)if(!(m&&p[u]=="")){var f=document.createElementNS(a,"tspan");if(d)for(var _ in d)d.hasOwnProperty(_)&&f.setAttribute(_,d[_]);if(f.setAttribute("x",l.x?l.x:0),u!==0&&f.setAttribute("dy","1.2em"),p[u].indexOf("")!==-1){var v=p[u].split("");if(f.textContent=v[0],v[1]){var y=document.createElementNS(a,"tspan");y.setAttribute("dy","-0.3em"),y.setAttribute("style","font-size:0.7em"),y.textContent=v[1],f.appendChild(y)}if(v[2]){var S=v[1]?"0.4em":"0.1em",q=document.createElementNS(a,"tspan");q.setAttribute("dy",S),q.setAttribute("style","font-size:0.7em"),q.textContent=v[2],f.appendChild(q)}}else m&&p[u].trim()==""?f.innerHTML=" ":f.textContent=p[u];g.appendChild(f)}return c?c.appendChild(g):this.append(g),g},t.prototype.richTextLine=function(o,l,c,d,g,h){var m=document.createElementNS(a,"text");m.setAttribute("stroke","none"),m.setAttribute("class",d),m.setAttribute("x",l),m.setAttribute("y",c),m.setAttribute("text-anchor",g),m.setAttribute("dominant-baseline","middle");for(var p=0;p<o.length;p++){for(var u=o[p],f=document.createElementNS(a,"tspan"),_=Object.keys(u.attrs),v=0;v<_.length;v++){var y=u.attrs[_[v]];y!==""&&f.setAttribute(_[v],y)}f.textContent=u.content,m.appendChild(f)}return h?h.appendChild(m):this.append(m),m},t.prototype.guessWidth=function(o,l){var c=this.createDummySvg(),d=this.text(o,l,c),g;try{g=d.getBBox(),isNaN(g.height)||!g.height?g={width:l["font-size"]/2,height:l["font-size"]+2}:g={width:g.width,height:g.height}}catch{g={width:l["font-size"]/2,height:l["font-size"]+2}}return c.removeChild(d),g},t.prototype.createDummySvg=function(){if(!this.dummySvg){this.dummySvg=r();var o=["display: block !important;","height: 1px;","width: 1px;","position: absolute;"];this.dummySvg.setAttribute("style",o.join(""));var l=document.querySelector("body");l.appendChild(this.dummySvg)}return this.dummySvg};var s={};t.prototype.getTextSize=function(o,l,c){if(typeof o=="number"&&(o=""+o),!o||o.match(/^\s+$/))return{width:0,height:0};var d;if(o.length<20&&(d=o+JSON.stringify(l),s[d]))return s[d];var g=!c;c||(c=this.text(o,l));var h;try{h=c.getBBox(),isNaN(h.height)||!h.height?h=this.guessWidth(o,l):h={width:h.width,height:h.height}}catch{h=this.guessWidth(o,l)}return g&&(this.currentGroup.length>0?this.currentGroup[0].removeChild(c):this.svg.removeChild(c)),d&&(s[d]=h),h},t.prototype.openGroup=function(o){o=o||{};var l=document.createElementNS(a,"g");return o.klass&&l.setAttribute("class",o.klass),o.fill&&l.setAttribute("fill",o.fill),o.stroke&&l.setAttribute("stroke",o.stroke),o["data-name"]&&l.setAttribute("data-name",o["data-name"]),o.prepend?this.prepend(l):this.append(l),this.currentGroup.unshift(l),l},t.prototype.closeGroup=function(){var o=this.currentGroup.shift();return o&&o.children.length===0?(o.parentElement.removeChild(o),null):o},t.prototype.path=function(o){var l=document.createElementNS(a,"path");for(var c in o)o.hasOwnProperty(c)&&(c==="path"?l.setAttributeNS(null,"d",o.path):c==="klass"?l.setAttributeNS(null,"class",o[c]):o[c]!==void 0&&l.setAttributeNS(null,c,o[c]));return this.append(l),l},t.prototype.pathToBack=function(o){var l=document.createElementNS(a,"path");for(var c in o)o.hasOwnProperty(c)&&(c==="path"?l.setAttributeNS(null,"d",o.path):c==="klass"?l.setAttributeNS(null,"class",o[c]):l.setAttributeNS(null,c,o[c]));return this.prepend(l),l},t.prototype.lineToBack=function(o){for(var l=document.createElementNS(a,"line"),c=Object.keys(o),d=0;d<c.length;d++)l.setAttribute(c[d],o[c[d]]);return this.prepend(l),l},t.prototype.append=function(o){this.currentGroup.length>0?this.currentGroup[0].appendChild(o):this.svg.appendChild(o)},t.prototype.prepend=function(o){this.currentGroup.length>0?this.currentGroup[0].appendChild(o):this.svg.insertBefore(o,this.svg.firstChild)},t.prototype.setAttributeOnElement=function(o,l){for(var c in l)l.hasOwnProperty(c)&&o.setAttributeNS(null,c,l[c])},t.prototype.moveElementToChild=function(o,l){o.appendChild(l)};function r(){var o=document.createElementNS(a,"svg");return o.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink","http://www.w3.org/1999/xlink"),o.setAttribute("role","img"),o.setAttribute("fill","currentColor"),o.setAttribute("stroke","currentColor"),o}return Wg=t,Wg}var Qg,hk;function QE(){if(hk)return Qg;hk=1;var a=Us(),t=WE(),i=function(n){this.paper=new t(n),this.controller=null,this.space=3*a.SPACE,this.padding={},this.reset(),this.firefox=navigator.userAgent.indexOf("Firefox/")>=0};return i.prototype.reset=function(){this.paper.clear(),this.y=0,this.abctune=null,this.path=null,this.isPrint=!1,this.lineThickness=0,this.initVerticalSpace()},i.prototype.newTune=function(n){this.abctune=n,this.setVerticalSpace(n.formatting),this.isPrint=n.media==="print",this.setPadding(n)},i.prototype.setLineThickness=function(n){this.lineThickness=n},i.prototype.setPaddingOverride=function(n){this.paddingOverride={top:n.paddingtop,bottom:n.paddingbottom,right:n.paddingright,left:n.paddingleft}},i.prototype.setPadding=function(n){function s(r,o,l,c,d){n.formatting[l]!==void 0?r.padding[o]=n.formatting[l]:r.paddingOverride[o]!==void 0?r.padding[o]=r.paddingOverride[o]:r.isPrint?r.padding[o]=c:r.padding[o]=d}s(this,"top","topmargin",38,15),s(this,"bottom","botmargin",38,15),s(this,"left","leftmargin",68,15),s(this,"right","rightmargin",68,15)},i.prototype.adjustNonScaledItems=function(n){this.padding.top/=n,this.padding.bottom/=n,this.padding.left/=n,this.padding.right/=n,this.abctune.formatting.headerfont.size/=n,this.abctune.formatting.footerfont.size/=n},i.prototype.initVerticalSpace=function(){this.spacing={composer:7.56,graceBefore:8.67,graceInside:10.67,graceAfter:16,info:0,lineSkipFactor:1.1,music:7.56,paragraphSkipFactor:.4,parts:11.33,slurHeight:1,staffSeparation:61.33,staffTopMargin:0,stemHeight:26.67+10,subtitle:3.78,systemStaffSeparation:48,text:18.9,title:7.56,top:30.24,vocal:0,words:0}},i.prototype.setVerticalSpace=function(n){n.staffsep!==void 0&&(this.spacing.staffSeparation=n.staffsep*4/3),n.composerspace!==void 0&&(this.spacing.composer=n.composerspace*4/3),n.partsspace!==void 0&&(this.spacing.parts=n.partsspace*4/3),n.textspace!==void 0&&(this.spacing.text=n.textspace*4/3),n.musicspace!==void 0&&(this.spacing.music=n.musicspace*4/3),n.titlespace!==void 0&&(this.spacing.title=n.titlespace*4/3),n.sysstaffsep!==void 0&&(this.spacing.systemStaffSeparation=n.sysstaffsep*4/3),n.stafftopmargin!==void 0&&(this.spacing.staffTopMargin=n.stafftopmargin*4/3),n.subtitlespace!==void 0&&(this.spacing.subtitle=n.subtitlespace*4/3),n.topspace!==void 0&&(this.spacing.top=n.topspace*4/3),n.vocalspace!==void 0&&(this.spacing.vocal=n.vocalspace*4/3),n.wordsspace!==void 0&&(this.spacing.words=n.wordsspace*4/3)},i.prototype.calcY=function(n){return this.y-n*a.STEP},i.prototype.yToPitch=function(n){return n/a.STEP},i.prototype.moveY=function(n,s){s===void 0&&(s=1),this.y+=n*s},i.prototype.absolutemoveY=function(n){this.y=n},Qg=i,Qg}var Kg,_k;function KE(){if(_k)return Kg;_k=1;function a(t,i,n,s,r,o){var l=t.text;this.rows=[];var c;i&&this.rows.push({move:i});var d=n.calc("textfont","defined-text");if(l==="")this.rows.push({move:d.attr["font-size"]*2});else if(typeof l=="string"){let _=function(v){return v.replace(/^[ \t]*\n/gm,`X
|
||
`)};this.rows.push({move:d.attr["font-size"]/2}),this.rows.push({left:s,text:l,font:"textfont",klass:"defined-text",anchor:"start",startChar:t.startChar,endChar:t.endChar,absElemType:"freeText",name:"free-text"});var g=_(l);c=o.calc(g,"textfont","defined-text"),this.rows.push({move:c.height})}else if(l){for(var h=0,m=s,p="textfont",u=0;u<l.length;u++)l[u].font?p=l[u].font:p="textfont",this.rows.push({left:m,text:l[u].text,font:p,klass:"defined-text",anchor:"start",startChar:t.startChar,endChar:t.endChar,absElemType:"freeText",name:"free-text"}),c=o.calc(l[u].text,n.calc(p,"defined-text").font,"defined-text"),m+=c.width+c.height/2,h=Math.max(h,c.height);this.rows.push({move:h})}else if(t.length===1){var f=r/2;this.rows.push({left:f,text:t[0].text,font:"textfont",klass:"defined-text",anchor:"middle",startChar:t.startChar,endChar:t.endChar,absElemType:"freeText",name:"free-text"}),c=o.calc(t[0].text,"textfont","defined-text"),this.rows.push({move:c.height})}}return Kg=a,Kg}var Yg,vk;function YE(){if(vk)return Yg;vk=1;function a(t,i,n){this.rows=[],t&&this.rows.push({move:t}),this.rows.push({separator:i,absElemType:"separator"}),n&&this.rows.push({move:n})}return Yg=a,Yg}var Jg,bk;function JE(){if(bk)return Jg;bk=1;function a(t,i,n,s,r,o){this.rows=[],t&&this.rows.push({move:t});var l=i.titleleft?"start":"middle",c=i.titleleft?r:s;this.rows.push({left:c,text:n.text,font:"subtitlefont",klass:"text subtitle",anchor:l,startChar:n.startChar,endChar:n.endChar,absElemType:"subtitle",name:"subtitle"});var d=o.calc(n.text,"subtitlefont","text subtitle");this.rows.push({move:d.height})}return Jg=a,Jg}var Xg,yk;function Zg(){if(yk)return Xg;yk=1;function a(t,i,n){if(i.text){i.marginLeft||(i.marginLeft=0),i.klass||(i.klass=""),i.anchor||(i.anchor="start"),i.info||(i.info={startChar:-2,endChar:-2}),i.marginTop&&t.push({move:i.marginTop});var s={left:i.marginLeft,text:i.text,font:i.font,anchor:i.anchor,startChar:i.info.startChar,endChar:i.info.endChar,"dominant-baseline":i["dominant-baseline"]};i.absElemType&&(s.absElemType=i.absElemType),!i.inGroup&&i.klass&&(s.klass=i.klass),i.name&&(s.name=i.name),t.push(s);var r=n.calc("A",i.font,i.klass),o=i.text.split(`
|
||
`).length;if(i.text[i.text.length-1]===`
|
||
`&&o--,!i.noMove){var l=r.height*1.1*o;t.push({move:Math.round(l)}),i.marginBottom&&t.push({move:i.marginBottom})}}}return Xg=a,Xg}var eh,wk;function kk(){if(wk)return eh;wk=1;const a=Zg();function t(i,n,s,r,o,l,c,d){var g=d.calc("i",s,r);if(n==="")i.push({move:g.height});else{if(typeof n=="string"){a(i,{marginLeft:l,text:n,font:s,klass:r,marginTop:c.marginTop,anchor:c.anchor,absElemType:c.absElemType,info:c.info,name:o},d);return}c.marginTop&&i.push({move:c.marginTop});var h=0,m={left:l,anchor:c.anchor,phrases:[]};r&&(m.klass=r),i.push(m);for(var p=0;p<n.length;p++){var u=n[p],f=u.font?u.font:d.attr(s,r).font,_={content:u.text};f&&(_.attrs={"font-family":d.getFamily(f.face),"font-size":f.size,"font-weight":f.weight,"font-style":f.style,"font-decoration":f.decoration}),m.phrases.push(_);var v=d.calc(u.text,f,r);h=Math.max(h,v.height),u.text[u.text.length-1]===" "&&g.width}i.push({move:h})}}return eh=t,eh}var th,xk;function XE(){if(xk)return th;xk=1;const a=Zg(),t=kk();function i(n,s,r,o,l,c,d,g,h,m){if(this.rows=[],n.header&&c){var p=m.calc("X","headerfont","abcjs-header abcjs-meta-top").height;a(this.rows,{marginLeft:d,text:n.header.left,font:"headerfont",klass:"header meta-top",marginTop:-p,info:s.header,name:"header"},m),a(this.rows,{marginLeft:d+l/2,text:n.header.center,font:"headerfont",klass:"header meta-top",marginTop:-p,anchor:"middle",info:s.header,name:"header"},m),a(this.rows,{marginLeft:d+l,text:n.header.right,font:"headerfont",klass:"header meta-top",marginTop:-p,anchor:"end",info:s.header,name:"header"},m)}c&&this.rows.push({move:g.top});var u=r.titleleft?"start":"middle",f=r.titleleft?d:d+l/2;if(n.title){var _=h?"abcjs-title":"";t(this.rows,n.title,"titlefont",_,"title",f,{marginTop:g.title,anchor:u,absElemType:"title",info:s.title},m)}if(o.length)for(var v=0;v<o.length&&o[v].subtitle;){var _=h?"abcjs-text abcjs-subtitle":"";t(this.rows,o[v].subtitle.text,"subtitlefont",_,"subtitle",f,{marginTop:g.subtitle,anchor:u,absElemType:"subtitle",info:o[v].subtitle},m),v++}if(n.rhythm||n.origin||n.composer){if(this.rows.push({move:g.composer}),n.rhythm&&n.rhythm.length>0){var y=!!(n.composer||n.origin),_=h?"abcjs-rhythm":"";a(this.rows,{marginLeft:d,text:n.rhythm,font:"infofont",klass:_,absElemType:"rhythm",noMove:y,info:s.rhythm,name:"rhythm"},m)}n.composer&&n.composer,n.origin&&n.origin;var S=n.composer?n.composer:"";if(n.origin&&(typeof S=="string"&&typeof n.origin=="string"?S+=" ("+n.origin+")":typeof S=="string"&&typeof n.origin!="string"?(S=[{text:S}],S.push({text:" ("}),S=S.concat(n.origin),S.push({text:")"})):(S.push({text:" ("}),S=S.concat(n.origin),S.push({text:")"}))),S){var _=h?"abcjs-composer":"";t(this.rows,S,"composerfont",_,"composer",d+l,{anchor:"end",absElemType:"composer",info:s.composer,ingroup:!0},m)}}if(n.author&&n.author.length>0){var _=h?"abcjs-author":"";t(this.rows,n.author,"composerfont",_,"author",d+l,{anchor:"end",absElemType:"author",info:s.author},m)}if(n.partOrder&&n.partOrder.length>0){var _=h?"abcjs-part-order":"";t(this.rows,n.partOrder,"partsfont",_,"part-order",d,{absElemType:"partOrder",info:s.partOrder,anchor:"start"},m)}}return th=i,th}var ah,Sk;function ZE(){if(Sk)return ah;Sk=1;const a=Zg(),t=kk();function i(r,o,l,c,d,g,h){this.rows=[],r.unalignedWords&&r.unalignedWords.length>0&&this.unalignedWords(r.unalignedWords,c,d,g,h),this.extraText(r,c,d,g,h),r.footer&&l&&this.footer(r.footer,o,c,h)}i.prototype.unalignedWords=function(r,o,l,c,d){var g=c?"abcjs-unaligned-words":"",h="wordsfont",m=d.calc("i",h,g);this.rows.push({move:l.words}),s(this.rows,"",r,o,h,"unalignedWords","unalignedWords",g,"unalignedWords",l,c,d),this.rows.push({move:m.height})};function n(r,o,l,c,d,g,h){l&&(o&&(typeof l=="string"?l=o+l:l=[{text:o}].concat(l)),d=g?"abcjs-extra-text "+d:"",t(r,l,"historyfont",d,"description",c,{absElemType:"extraText",anchor:"start"},h))}function s(r,o,l,c,d,g,h,m,p,u,f,_){if(l){m=f?"abcjs-extra-text "+m:"";var v=_.calc("A",d,m);if(typeof l=="string")o&&(l=o+`
|
||
`+l),a(r,{marginLeft:c,text:l,font:d,absElemType:"extraText",name:p,"dominant-baseline":"middle",klass:m},_);else{r.push({startGroup:h,klass:m,name:p}),r.push({move:u.info}),o&&(a(r,{marginLeft:c,text:o,font:d,absElemType:"extraText",name:p,"dominant-baseline":"middle"},_),r.push({move:v.height*3/4}));for(var y=0;y<l.length;y++)t(r,l[y],d,"",p,c,{anchor:"start"},_),y<l.length-1&&typeof l[y]=="string"&&typeof l[y+1]!="string"&&r.push({move:v.height*3/4});r.push({endGroup:h,absElemType:g,startChar:-1,endChar:-1,name:p}),r.push({move:v.height})}}}return i.prototype.extraText=function(r,o,l,c,d){n(this.rows,"Book: ",r.book,o,"abcjs-book",c,d),n(this.rows,"Source: ",r.source,o,"abcjs-source",c,d),n(this.rows,"Discography: ",r.discography,o,"abcjs-discography",c,d),s(this.rows,"Notes:",r.notes,o,"historyfont","extraText","notes","abcjs-notes","description",l,c,d),n(this.rows,"Transcription: ",r.transcription,o,"abcjs-transcription",c,d),s(this.rows,"History:",r.history,o,"historyfont","extraText","history","abcjs-history","description",l,c,d),n(this.rows,"Copyright: ",r["abc-copyright"],o,"abcjs-copyright",c,d),n(this.rows,"Creator: ",r["abc-creator"],o,"abcjs-creator",c,d),n(this.rows,"Edited By: ",r["abc-edited-by"],o,"abcjs-edited-by",c,d)},i.prototype.footer=function(r,o,l,c){var d="header meta-bottom",g="footerfont";this.rows.push({startGroup:"footer",klass:d}),a(this.rows,{marginLeft:l,text:r.left,font:g,klass:d,name:"footer"},c),a(this.rows,{marginLeft:l+o/2,text:r.center,font:g,klass:d,anchor:"middle",name:"footer"},c),a(this.rows,{marginLeft:l+o,text:r.right,font:g,klass:d,anchor:"end",name:"footer"},c)},ah=i,ah}var ih,Tk;function $k(){if(Tk)return ih;Tk=1;function a(i,n,s,r){if(i.indexOf(n)===0){var o=i.replace(n,""),l=parseInt(o,10);""+l===o&&(s[r]=l)}}function t(i,n){var s=[];if(i.absEl.elemset){for(var r={},o=0;o<i.absEl.elemset.length;o++){var l=i.absEl.elemset[o];if(l)for(var c=l.getAttribute("class").split(" "),d=0;d<c.length;d++)r[c[d]]=!0}for(var g=0;g<Object.keys(r).length;g++)s.push(Object.keys(r)[g])}for(var h={},m=0;m<s.length;m++)a(s[m],"abcjs-v",h,"voice"),a(s[m],"abcjs-l",h,"line"),a(s[m],"abcjs-m",h,"measure");i.staffPos&&(h.staffPos=i.staffPos);for(var p=n.target;p&&p.dataset&&!p.dataset.name&&p.tagName.toLowerCase()!=="svg";)p=p.parentNode;for(var u=n.target;u&&u.dataset&&!u.dataset.index&&u.tagName.toLowerCase()!=="svg";)u=u.parentNode;return u&&u.dataset&&(h.name=u.dataset.name,h.clickedName=p.dataset.name,h.parentClasses=u.classList),p&&p.classList&&(h.clickedClasses=p.classList),h.selectableElement=i.svgEl,{classes:s,analysis:h}}return ih=t,ih}var nh,qk;function eU(){if(qk)return nh;qk=1;var a=Us(),t=$k();function i(A,j){if(A.rangeHighlight=S,A.dragging)for(var G=0;G<A.selectables.length;G++){var C=A.selectables[G];C.svgEl.getAttribute("selectable")==="true"&&(C.svgEl.setAttribute("tabindex",0),C.svgEl.setAttribute("data-index",G),C.svgEl.addEventListener("keydown",r.bind(A)),C.svgEl.addEventListener("keyup",o.bind(A)),C.svgEl.addEventListener("focus",s.bind(A)))}for(var R=0;R<j.length;R++)j[R].addEventListener("touchstart",p.bind(A),{passive:!0}),j[R].addEventListener("touchmove",u.bind(A),{passive:!0}),j[R].addEventListener("touchend",f.bind(A),{passive:!0}),j[R].addEventListener("mousedown",p.bind(A)),j[R].addEventListener("mousemove",u.bind(A)),j[R].addEventListener("mouseup",f.bind(A))}function n(A){var j=1,G=1,C=A.target.closest("svg"),R=0;C&&C.viewBox&&C.viewBox.baseVal&&(C.viewBox.baseVal.width!==0&&(j=C.viewBox.baseVal.width/C.clientWidth),C.viewBox.baseVal.height!==0&&(G=C.viewBox.baseVal.height/C.clientHeight),R=C.viewBox.baseVal.y);var H=A.target&&A.target.tagName==="svg",E,U;return H?(E=A.offsetX,U=A.offsetY):(E=A.layerX,U=A.layerY),E=E*j,U=U*G,[E,U+R]}function s(A){this.dragMechanism==="keyboard"&&this.dragYStep!==0&&this.dragTarget&&v.bind(this)(this.dragTarget,this.dragYStep,this.selectables.length,this.dragIndex,A),this.dragYStep=0}function r(A){switch(A.keyCode){case 38:case 40:A.preventDefault()}}function o(A){var j=!1,G=A.target.dataset.index;switch(A.keyCode){case 13:case 32:j=!0,this.dragTarget=this.selectables[G],this.dragIndex=G,this.dragMechanism="keyboard",f.bind(this)(A);break;case 38:j=!0,this.dragTarget=this.selectables[G],this.dragIndex=G,this.dragTarget&&this.dragTarget.isDraggable&&(this.dragging&&this.dragTarget.isDraggable&&this.dragTarget.absEl.highlight(void 0,this.dragColor),this.dragYStep--,this.dragTarget.svgEl.setAttribute("transform","translate(0,"+this.dragYStep*a.STEP+")"));break;case 40:j=!0,this.dragTarget=this.selectables[G],this.dragIndex=G,this.dragMechanism="keyboard",this.dragTarget&&this.dragTarget.isDraggable&&(this.dragging&&this.dragTarget.isDraggable&&this.dragTarget.absEl.highlight(void 0,this.dragColor),this.dragYStep++,this.dragTarget.svgEl.setAttribute("transform","translate(0,"+this.dragYStep*a.STEP+")"));break;case 9:this.dragYStep!==0&&f.bind(this)(A);break}j&&A.preventDefault()}function l(A,j){if(!j)return-1;var G=j.dataset;if(!G)return-1;for(var C=G.index,R=0;R<A.length;R++){var H=A[R].svgEl.dataset;if(H&&C===H.index)return R}return-1}function c(A,j,G){for(var C=9999999,R=-1,H=0;H<A.selectables.length&&C>0;H++){var E=A.selectables[H];if(A.getDim(E),E.dim.left<j&&E.dim.right>j&&E.dim.top<G&&E.dim.bottom>G)R=H,C=0;else if(E.dim.top<G&&E.dim.bottom>G){var U=Math.min(Math.abs(E.dim.left-j),Math.abs(E.dim.right-j));U<C&&(C=U,R=H)}else if(E.dim.left<j&&E.dim.right>j){var N=Math.min(Math.abs(E.dim.top-G),Math.abs(E.dim.bottom-G));N<C&&(C=N,R=H)}else{var L=Math.abs(j-E.dim.left)>Math.abs(j-E.dim.right)?Math.abs(j-E.dim.right):Math.abs(j-E.dim.left),I=Math.abs(G-E.dim.top)>Math.abs(G-E.dim.bottom)?Math.abs(G-E.dim.bottom):Math.abs(G-E.dim.top),T=Math.sqrt(L*L+I*I);T<C&&(C=T,R=H)}}return R>=0&&C<=12?R:-1}function d(A,j,G){if(A.x<=j.offsetX&&A.x+A.width>=j.offsetX&&A.y<=j.offsetY&&A.y+A.height>=j.offsetY)return[j.offsetX,j.offsetY];var C=Math.abs(j.layerY/G-j.offsetY);return C<3?[j.offsetX,j.offsetY]:[j.layerX,j.layerY]}function g(A){if(!A)return null;if(A.tagName==="svg")return A;if(!A.getAttribute)return null;for(var j=A.getAttribute("selectable");!j;)A.parentElement?(A=A.parentElement,A.tagName==="svg"?j=!0:j=A.getAttribute("selectable")):j=!0;return A}function h(A,j){var G,C,R,H=l(A.selectables,g(j.target));return H>=0?(R=d(A.selectables[H].svgEl.getBBox(),j,A.scale),G=R[0],C=R[1]):(R=n(j),G=R[0],C=R[1],H=c(A,G,C)),{x:G,y:C,clickedOn:H}}function m(A){if(!(!A||!A.target||!A.touches||A.touches.length<1)){var j=A.target.getBoundingClientRect(),G=A.touches[0].pageX-j.left,C=A.touches[0].pageY-j.top;A.touches[0].offsetX=G,A.touches[0].offsetY=C,A.touches[0].layerX=A.touches[0].pageX,A.touches[0].layerY=A.touches[0].pageY}}function p(A){var j=A;A.type==="touchstart"&&(m(A),A.touches.length>0&&(j=A.touches[0]));var G=h(this,j);G.clickedOn>=0&&(A.type==="touchstart"||A.button===0)&&this.selectables[G.clickedOn]&&(this.dragTarget=this.selectables[G.clickedOn],this.dragIndex=G.clickedOn,this.dragMechanism="mouse",this.dragMouseStart={x:G.x,y:G.y},this.dragging&&this.dragTarget.isDraggable&&(P(this.renderer.paper,"abcjs-dragging-in-progress"),this.dragTarget.absEl.highlight(void 0,this.dragColor)))}function u(A){var j=A;if(A.type==="touchmove"&&(m(A),A.touches.length>0&&(j=A.touches[0])),this.lastTouchMove=A,!(!this.dragTarget||!this.dragging||!this.dragTarget.isDraggable||this.dragMechanism!=="mouse"||!this.dragMouseStart)){var G=h(this,j),C=Math.round((G.y-this.dragMouseStart.y)/a.STEP);C!==this.dragYStep&&(this.dragYStep=C,this.dragTarget.svgEl.setAttribute("transform","translate(0,"+C*a.STEP+")"))}}function f(A){var j=A;A.type==="touchend"&&this.lastTouchMove&&(m(this.lastTouchMove),this.lastTouchMove&&this.lastTouchMove.touches&&this.lastTouchMove.touches.length>0&&(j=this.lastTouchMove.touches[0])),this.dragTarget&&(y.bind(this)(),this.dragTarget.absEl&&this.dragTarget.absEl.highlight&&(this.selected=[this.dragTarget.absEl],this.dragTarget.absEl.highlight(void 0,this.selectionColor)),v.bind(this)(this.dragTarget,this.dragYStep,this.selectables.length,this.dragIndex,j),this.dragTarget.svgEl&&this.dragTarget.svgEl.focus&&(this.dragTarget.svgEl.focus(),this.dragTarget=null,this.dragIndex=-1),B(this.renderer.svg,"abcjs-dragging-in-progress"))}function _(A){A>=0&&A<this.selectables.length&&(this.dragTarget=this.selectables[A],this.dragIndex=A,this.dragMechanism="keyboard",f.bind(this)({target:this.dragTarget.svgEl}))}function v(A,j,G,C,R){for(var H=t(A,R),E=H.classes,U=H.analysis,N=0;N<this.listeners.length;N++)this.listeners[N](A.absEl.abcelem,A.absEl.tuneNumber,E.join(" "),U,{step:j,max:G,index:C,setSelection:_.bind(this)},R)}function y(){for(var A=0;A<this.selected.length;A++)this.selected[A].unhighlight(void 0,this.renderer.foregroundColor);this.selected=[]}function S(A,j){y.bind(this)();for(var G=0;G<this.staffgroups.length;G++)for(var C=this.staffgroups[G].voices,R=0;R<C.length;R++)for(var H=C[R].children,E=0;E<H.length;E++){var U=H[E].abcelem.startChar,N=H[E].abcelem.endChar;(j>U&&A<N||j===A&&j===N)&&(this.selected[this.selected.length]=H[E],H[E].highlight(void 0,this.selectionColor))}}function q(A){var j=A.getAttribute("class");j||(j="");for(var G=j.split(" "),C={},R=0;R<G.length;R++)C[G[R]]=!0;return C}function M(A,j){var G=[];for(var C in j)j.hasOwnProperty(C)&&G.push(C);A.setAttribute("class",G.join(" "))}function P(A,j){if(A){var G=q(A.svg);G[j]=!0,M(A.svg,G)}}function B(A,j){if(A){var G=q(A.svg);delete G[j],M(A.svg,G)}}return nh=i,nh}var sh,Ak;function rh(){if(Ak)return sh;Ak=1;function a(t,i,n,s,r){return i+(s-i)/(n-t)*(r-t)}return sh=a,sh}var oh,Ck;function tU(){if(Ck)return oh;Ck=1;var a=Hr(),t=Us(),i=rh(),n=function(u){if(!(u.elems.length===0||u.allrests)){var f=l(u.stemsUp,u.isgrace),_=u.elems[0],v=u.elems[u.elems.length-1],y=0,S=u.stemsUp?_.abcelem.maxpitch:_.abcelem.minpitch;y=r(_,u.stemsUp,S,y),y=r(v,u.stemsUp,S,y),y=Math.max(u.stemHeight,y+3);var q=d(u.average,u.elems.length,y,u.stemsUp,_.abcelem.averagepitch,v.abcelem.averagepitch,u.isflat,u.min,u.max,u.isgrace),M=c(u.stemsUp,_,v);u.addBeam({startX:M[0],endX:M[1],startY:q[0],endY:q[1],dy:f});for(var P=p(u.elems,u.stemsUp,u.beams[0],u.isgrace,f),B=0;B<P.length;B++)u.addBeam(P[B]);g(u.elems,u.stemsUp,u.beams[0],f,u.mainNote)}},s=function(u){return u===void 0?0:Math.floor(Math.log(u)/Math.log(2))};function r(u,f,_,v){if(!u.children)return v;for(var y=0;y<u.children.length;y++){var S=u.children[y];f&&S.top!==void 0&&S.c==="flags.ugrace"?v=Math.max(v,S.top-_):!f&&S.bottom!==void 0&&S.c==="flags.ugrace"&&(v=Math.max(v,_-S.bottom+7))}return v}function o(u,f,_,v){if(v)return 0;var y=u-f,S=_/2;return y>S&&(y=S),y<-S&&(y=-S),y}function l(u,f){var _=u?t.STEP:-t.STEP;return f&&(_=_*.4),_}function c(u,f,_){var v=f.heads[u?0:f.heads.length-1],y=_.heads[u?0:_.heads.length-1],S=v.x;u&&(S+=v.w-.6);var q=y.x;return q+=u?y.w:.6,[S,q]}function d(u,f,_,v,y,S,q,M,P,B){var A=_-2,j=_-2,G=Math.round(v?Math.max(u+A,P+j):Math.min(u-A,M-j)),C=o(y,S,f,q),R=G+Math.floor(C/2),H=G+Math.floor(-C/2);return B||(v&&G<6||!v&&G>6)&&(R=6,H=6),[R,H]}function g(u,f,_,v,y){for(var S=0;S<u.length;S++){var q=u[S];if(!q.abcelem.rest){var M=!q.addExtra,P=M?y:q,B=q.heads[f?0:q.heads.length-1],A=1/5,j=B.pitch+(f?A:-A),G=f?B.w:0;M||(G+=B.dx);var C=B.x+G,R=i(_.startX,_.startY,_.endX,_.endY,C),H=f?-.6:.6;f||(R-=v/2/t.STEP),M&&(G+=q.heads[0].dx),B.c==="noteheads.slash.quarter"&&(f?j+=1:j-=1);var E=new a(null,G,0,j,{type:"stem",pitch2:R,linewidth:H});E.setX(P.x),P.addRight(E)}}}function h(u,f){for(var _=f+1;_<u.length;_++)if(!u[_].abcelem.rest)return _;return-1}function m(u,f){for(var _=f-1;_>=0;_--)if(!u[_].abcelem.rest)return _;return-1}function p(u,f,_,v,y){for(var S=[],q=[],M=0;M<u.length;M++){var P=u[M];if(!P.abcelem.rest){var B=P.heads[f?0:P.heads.length-1],A=B.x+(f?B.w:0),j=i(_.startX,_.startY,_.endX,_.endY,A),G=f?-1.5:1.5;v&&(G=G*2/3);var C=P.abcelem.duration;C===0&&(C=.25);for(var R=s(C);R<-3;R++){var H=-4-R;if(q[H]?q[H].single=!1:q[H]={x:A+(f?-.6:0),y:j+G*(H+1),durlog:R,single:!0},M>0&&P.abcelem.beambr&&P.abcelem.beambr<=H+1){q[H].split||(q[H].split=[q[H].x]);var E=c(f,u[M-1],P);q[H].split[q[H].split.length-1]>=E[0]&&(E[0]+=P.w),q[H].split.push(E[0]),q[H].split.push(E[1])}}for(var U=q.length-1;U>=0;U--){var N=h(u,M),L=N===-1||N<u.length&&s(u[N].abcelem.duration)>-U-4;if(L){var I=A,T=j+G*(U+1);if(q[U].single){var F=m(u,M),z=F===-1,D=N===-1;if(z)I=A+5;else if(D)I=A-5;else{var Q=u[F].abcelem.duration,X=u[N].abcelem.duration;Q===X?I=M%2===0?A+5:A-5:I=Q<X?A+5:A-5}T=i(_.startX,_.startY,_.endX,_.endY,I)+G*(U+1)}var Z={startX:q[U].x,endX:I,startY:q[U].y,endY:T,dy:y};if(q[U].split!==void 0){var ue=q[U].split;Z.endX<=ue[ue.length-1]&&(ue[ue.length-1]-=P.w),ue.push(Z.endX),Z.split=q[U].split}S.push(Z),q=q.slice(0,U)}}}}return S}return oh=n,oh}var lh,Gk;function aU(){if(Gk)return lh;Gk=1;var a=rh();function t(o){if(o.anchor1&&o.anchor2){o.hasBeam=!!o.anchor1.parent.beam&&o.anchor1.parent.beam===o.anchor2.parent.beam;var l=o.anchor1.parent.beam;if(o.hasBeam&&(l.elems[0]!==o.anchor1.parent||l.elems[l.elems.length-1]!==o.anchor2.parent)&&(o.hasBeam=!1),o.hasBeam){var c=i(l)?o.anchor1.x+o.anchor1.w:o.anchor1.x;o.yTextPos=s(c,o.anchor2.x,l),o.yTextPos+=i(l)?3:-2,o.xTextPos=r(c,o.anchor2.x),o.top=o.yTextPos+1,o.bottom=o.yTextPos-2,i(l)&&(o.endingHeightAbove=4)}else{var d=n(o);if(o.up=d,o.startNote=d?Math.max(o.anchor1.parent.top,9)+4:Math.min(o.anchor1.parent.bottom,0)-2,o.endNote=d?Math.max(o.anchor2.parent.top,9)+4:Math.min(o.anchor2.parent.bottom,0)-2,o.anchor1.parent.type==="rest"&&o.anchor2.parent.type!=="rest"?o.startNote=o.endNote:o.anchor2.parent.type==="rest"&&o.anchor1.parent.type!=="rest"&&(o.endNote=o.startNote),d){for(var g=0,h=0;h<o.middleElems.length;h++)g=Math.max(g,o.middleElems[h].top);g+=4,(g>o.startNote||g>o.endNote)&&(o.startNote=g+3,o.endNote=g+3)}else{for(var m=0,h=0;h<o.middleElems.length;h++)m=Math.min(m,o.middleElems[h].bottom-o.middleElems[h].height);m-=3,m<o.startNote&&m<o.endNote&&(o.startNote=Math.min(m,o.startNote)-2,o.endNote=Math.min(m,o.endNote)-2)}o.flatBeams&&(d?(o.startNote=Math.max(o.startNote,o.endNote),o.endNote=Math.max(o.startNote,o.endNote)):(o.startNote=Math.min(o.startNote,o.endNote),o.endNote=Math.min(o.startNote,o.endNote))),o.yTextPos=o.startNote+(o.endNote-o.startNote)/2,o.xTextPos=o.anchor1.x+(o.anchor2.x+o.anchor2.w-o.anchor1.x)/2,o.top=o.yTextPos+1,o.bottom=o.yTextPos-2}}delete o.middleElems,delete o.flatBeams}function i(o){return o.stemsUp}function n(o){var l=0,c=0;if(o.anchor1&&(o.anchor1.stemDir==="up"&&l++,o.anchor1.stemDir==="down"&&c++),o.anchor2&&(o.anchor2.stemDir==="up"&&l++,o.anchor2.stemDir==="down"&&c++),o.middleElems)for(var d=0;d<o.middleElems.length;d++){var g=o.middleElems[d];g.stemDir==="up"&&l++,g.stemDir==="down"&&c++}return l>=c}function s(o,l,c){if(c.beams.length===0)return 0;c=c.beams[0];var d=o+(l-o)/2;return a(c.startX,c.startY,c.endX,c.endY,d)}function r(o,l){return o+(l-o)/2}return lh=t,lh}var ch,Fk;function iU(){if(Fk)return ch;Fk=1;var a=tU(),t=rh(),i=aU(),n=function(g){for(var h=0;h<g.beams.length;h++)if(g.beams[h].type==="BeamElem"){a(g.beams[h]),s(g.beams[h]);for(var m=0;m<g.beams[h].elems.length;m++)g.adjustRange(g.beams[h].elems[m])}for(g.staff.specialY.chordLines=o(g.children),h=0;h<g.otherchildren.length;h++){var p=g.otherchildren[h];p.type==="TripletElem"&&(i(p),g.adjustRange(p))}g.staff.top=Math.max(g.staff.top,g.top),g.staff.bottom=Math.min(g.staff.bottom,g.bottom)};function s(g){for(var h=1.5,m=0;m<g.elems.length;m++){var p=g.elems[m];if(p.top)for(var u=d(p,g),f=0;f<p.children.length;f++){var _=p.children[f];if(_.klass==="ornament"&&_.position!=="below"&&_.bottom-h<u){var v=u-_.bottom+h;_.bottom+=v,_.top+=v,_.pitch+=v,u=p.top=_.top}}}}function r(g,h){var m=h.getChordDim();if(m){for(var p=0;p<g.length;p++){var u=g[p]<m.left;if(u){p>0&&h.putChordInLane(p),g[p]=m.right;return}}g.push(m.right),h.putChordInLane(g.length-1)}}function o(g){var h=[0],m=[0],p,u,f;for(p=0;p<g.length;p++){for(u=0;u<g[p].children.length;u++)f=g[p].children[u],f.chordHeightAbove&&r(h,f);for(u=g[p].children.length-1;u>=0;u--)f=g[p].children[u],f.chordHeightBelow&&r(m,f)}return(h.length>1||m.length>1)&&c(g,h.length,m.length),{above:h.length,below:m.length}}function l(g){for(var h=0,m=0;m<g.children.length;m++){var p=g.children[m];p.chordHeightBelow&&h++}return h}function c(g,h,m){for(var p=0;p<g.length;p++){l(g[p]);for(var u=0;u<g[p].children.length;u++){var f=g[p].children[u];f.chordHeightAbove&&f.invertLane(h)}}}function d(g,h){return h=h.beams[0],t(h.startX,h.startY,h.endX,h.endY,g.x)}return ch=n,ch}var dh,Mk;function nU(){if(Mk)return dh;Mk=1;var a=Us(),t=function(h,m){for(var p,u=0;u<m.staffs.length;u++){var f=m.staffs[u],_={tempoHeightAbove:0,partHeightAbove:0,volumeHeightAbove:0,dynamicHeightAbove:0,endingHeightAbove:0,chordHeightAbove:0,lyricHeightAbove:0,lyricHeightBelow:0,chordHeightBelow:0,volumeHeightBelow:0,dynamicHeightBelow:0};if(h.showDebug&&h.showDebug.indexOf("box")>=0&&(f.originalTop=f.top,f.originalBottom=f.bottom),n(f,_,"lyricHeightAbove"),n(f,_,"chordHeightAbove",f.specialY.chordLines.above),f.specialY.endingHeightAbove&&(f.specialY.chordHeightAbove?f.top+=2:f.top+=f.specialY.endingHeightAbove+i,_.endingHeightAbove=f.top),f.specialY.dynamicHeightAbove&&f.specialY.volumeHeightAbove?(f.top+=Math.max(f.specialY.dynamicHeightAbove,f.specialY.volumeHeightAbove)+i,_.dynamicHeightAbove=f.top,_.volumeHeightAbove=f.top):(n(f,_,"dynamicHeightAbove"),n(f,_,"volumeHeightAbove")),n(f,_,"partHeightAbove"),n(f,_,"tempoHeightAbove"),f.specialY.lyricHeightBelow&&(f.specialY.lyricHeightBelow+=h.spacing.vocal/a.STEP,_.lyricHeightBelow=f.bottom,f.bottom-=f.specialY.lyricHeightBelow+i),f.specialY.chordHeightBelow){_.chordHeightBelow=f.bottom;var v=f.specialY.chordHeightBelow;f.specialY.chordLines.below&&(v*=f.specialY.chordLines.below),f.bottom-=v+i}f.specialY.volumeHeightBelow&&f.specialY.dynamicHeightBelow?(_.volumeHeightBelow=f.bottom,_.dynamicHeightBelow=f.bottom,f.bottom-=Math.max(f.specialY.volumeHeightBelow,f.specialY.dynamicHeightBelow)+i):f.specialY.volumeHeightBelow?(_.volumeHeightBelow=f.bottom,f.bottom-=f.specialY.volumeHeightBelow+i):f.specialY.dynamicHeightBelow&&(_.dynamicHeightBelow=f.bottom,f.bottom-=f.specialY.dynamicHeightBelow+i),h.showDebug&&h.showDebug.indexOf("box")>=0&&(f.positionY=_);for(var y=0;y<f.voices.length;y++){var S=m.voices[f.voices[y]],q=s(_,S,h.spacing);f.bottom-=q}if(p!==void 0){var M=f.top-10,P=p+M,B=h.spacing.systemStaffSeparation/a.STEP,A=B-P;A>0&&(f.top+=A)}f.top+=h.spacing.staffTopMargin/a.STEP,p=2-f.bottom}},i=1;function n(h,m,p,u){if(h.specialY[p]){var f=h.specialY[p];u&&(f*=u),h.top+=f+i,m[p]=h.top}}function s(h,m,p){var u,f,_=0;for(u=0;u<m.children.length;u++){f=m.children[u];var v=r(h,f,p);v<f.bottom&&(_=f.bottom-v,f.bottom=v,m.bottom=v)}for(u=0;u<m.otherchildren.length;u++)switch(f=m.otherchildren[u],f.type){case"CrescendoElem":o(h,f);break;case"DynamicDecoration":l(h,f);break;case"EndingElem":c(h,f);break;case"TieElem":var y=f.getYBounds();m.staff.top=Math.max(m.staff.top,y[0]),m.staff.top=Math.max(m.staff.top,y[1]),m.staff.bottom=Math.min(m.staff.bottom,y[0]),m.staff.bottom=Math.min(m.staff.bottom,y[1]);break}return _}function r(h,m,p){for(var u=m.bottom,f=0;f<m.children.length;f++){var _=m.children[f];for(var v in m.specialY)m.specialY.hasOwnProperty(v)&&_[v]&&(_.pitch=h[v],v==="lyricHeightBelow"&&_.type==="lyric"&&_.voiceNumber&&(_.pitch-=_.voiceNumber*_[v],u=Math.min(m.bottom,_.pitch)),_.top===void 0&&(_.type==="TempoElement"?d(h,_):g(h,_,p),m.pushTop(_.top),m.pushBottom(_.bottom)))}return u}function o(h,m){m.dynamicHeightAbove?m.pitch=h.dynamicHeightAbove:m.pitch=h.dynamicHeightBelow}function l(h,m){m.volumeHeightAbove?m.pitch=h.volumeHeightAbove:m.pitch=h.volumeHeightBelow}function c(h,m){m.pitch=h.endingHeightAbove-2}function d(h,m){if(m.pitch=h.tempoHeightAbove,m.top=h.tempoHeightAbove,m.bottom=h.tempoHeightAbove,m.note){var p=m.pitch-m.totalHeightInPitches+1;m.note.top=p,m.note.bottom=p;for(var u=0;u<m.note.children.length;u++){var f=m.note.children[u];f.top+=p,f.bottom+=p,f.pitch+=p,f.pitch2!==void 0&&(f.pitch2+=p)}}}function g(h,m,p){switch(m.type){case"part":m.top=h.partHeightAbove+m.height,m.bottom=h.partHeightAbove;break;case"text":case"chord":m.chordHeightAbove?(m.top=h.chordHeightAbove,m.bottom=h.chordHeightAbove):(m.top=h.chordHeightBelow,m.bottom=h.chordHeightBelow);break;case"lyric":m.lyricHeightAbove?(m.top=h.lyricHeightAbove,m.bottom=h.lyricHeightAbove):(m.top=h.lyricHeightBelow+p.vocal/a.STEP,m.bottom=h.lyricHeightBelow+p.vocal/a.STEP,m.pitch-=p.vocal/a.STEP);break;case"debug":m.top=h.chordHeightAbove,m.bottom=h.chordHeightAbove;break}(m.pitch===void 0||m.top===void 0)&&console.error("RelativeElement position not set.",m.type,m.pitch,m.top,h)}return dh=t,dh}var uh,zk;function sU(){if(zk)return uh;zk=1;var a=function(){};a.beginLayout=function(n,s){s.i=0,s.durationindex=0,s.startx=n,s.minx=n,s.nextx=n,s.spacingduration=0},a.layoutEnded=function(n){return n.i>=n.children.length},a.getNextX=function(n){return Math.max(n.minx,n.nextx)},a.getSpacingUnits=function(n){return Math.sqrt(n.spacingduration*8)},a.layoutOneItem=function(n,s,r,o,l){var c=r.children[r.i];if(!c)return 0;var d=n-r.minx,g=r.durationindex+c.duration>0?o:0;if(c.abcelem.el_type==="note"&&!c.abcelem.rest&&r.voicenumber!==0&&l){var h=l.children[l.i],m=h&&(c.abcelem.maxpitch<=h.abcelem.maxpitch+1&&c.abcelem.maxpitch>=h.abcelem.minpitch-1||c.abcelem.minpitch<=h.abcelem.maxpitch+1&&c.abcelem.minpitch>=h.abcelem.minpitch-1);if(m&&c.abcelem.minpitch===h.abcelem.minpitch&&c.abcelem.maxpitch===h.abcelem.maxpitch&&h.heads&&h.heads.length>0&&c.heads&&c.heads.length>0&&h.heads[0].c===c.heads[0].c&&(m=!1),m){var p=h.heads&&h.heads.length>0?h.heads[0].realWidth:h.fixed.w;c.adjustedWidth||(c.adjustedWidth=p+c.w),c.w=c.adjustedWidth;for(var u=0;u<c.children.length;u++){var f=c.children[u];f.name.indexOf("accidental")<0&&(f.adjustedWidth||(f.adjustedWidth=f.dx+p),f.dx=f.adjustedWidth)}}}var _=t(c,g);return d<_&&(r.i===0||c.type!=="bar"||r.children[r.i-1].type!=="part"&&r.children[r.i-1].type!=="tempo")&&(n+=_-d),c.setX(n),r.spacingduration=c.duration,r.minx=n+i(c),r.i!==r.children.length-1&&(r.minx+=c.minspacing),this.updateNextX(n,s,r),n},a.shiftRight=function(n,s){var r=s.children[s.i];r&&(r.setX(r.x+n),s.minx+=n,s.nextx+=n)},a.updateNextX=function(n,s,r){r.nextx=n+s*this.getSpacingUnits(r)},a.updateIndices=function(n){this.layoutEnded(n)||(n.durationindex+=n.children[n.i].duration,n.children[n.i].type==="bar"&&(n.durationindex=Math.round(n.durationindex*64)/64),n.i++)};function t(n,s){var r=0;return(n.type==="note"||n.type==="bar")&&(r=s),-n.extraw+r}function i(n){return n.w}return uh=a,uh}var fh,Ek;function rU(){if(Ek)return fh;Ek=1;var a=sU();function t(o){for(var l=0,c=0;c<o.length;c++){var d=o[c];if(d.children.length>0){var g=d.children.length-1,h=d.children[g];if(h.abcelem.el_type==="bar"){var m=h.children[0].x;m>l?l=m:h.children[0].x=l}}}}var i=function(o,l,c,d,g){var h=1e-7,m=0,p=1e3,u=g;d.startx=u;var f,_=0;for(c&&console.log("init layout",o),f=0;f<d.voices.length;f++)a.beginLayout(u,d.voices[f]);for(var v=0;!n(d.voices);){for(_=null,f=0;f<d.voices.length;f++)!a.layoutEnded(d.voices[f])&&(!_||s(d.voices[f])<_)&&(_=s(d.voices[f]));var y=[],S=[];for(f=0;f<d.voices.length;f++){var q=s(d.voices[f]);q-_>h?S.push(d.voices[f]):y.push(d.voices[f])}v=0;var M=0;for(f=0;f<y.length;f++)a.getNextX(y[f])>u&&(u=a.getNextX(y[f]),v=a.getSpacingUnits(y[f]),M=y[f].spacingduration);m+=v,p=Math.min(p,v),c&&console.log("currentduration: ",_,m,p);var P=void 0;for(f=0;f<y.length;f++){var B=y[f];B.voicenumber===0&&(P=f);var A=P!==void 0&&y[P].voicenumber!==B.voicenumber?y[P]:void 0;r(B,A)||(A=void 0);var j=a.layoutOneItem(u,o,B,l,A),G=j-u;if(G>0){u=j;for(var C=0;C<f;C++)a.shiftRight(G,y[C])}}for(f=0;f<S.length;f++)S[f].spacingduration-=M,a.updateNextX(u,o,S[f]);for(f=0;f<y.length;f++){var R=y[f];a.updateIndices(R)}}for(f=0;f<d.voices.length;f++)a.getNextX(d.voices[f])>u&&(u=a.getNextX(d.voices[f]),v=a.getSpacingUnits(d.voices[f]));return t(d.voices),m+=v,d.setWidth(u),{spacingUnits:m,minSpace:p}};function n(o){for(var l=0;l<o.length;l++)if(!a.layoutEnded(o[l]))return!1;return!0}function s(o){return o.durationindex-(o.children[o.i]&&o.children[o.i].duration>0?0:5e-7)}function r(o,l){return!o||!o.staff||!o.staff.voices||o.staff.voices.length===0||!l||!l.staff||!l.staff.voices||l.staff.voices.length===0?!1:o.staff.voices[0]===l.staff.voices[0]}return fh=i,fh}var ph,Uk;function Rk(){if(Uk)return ph;Uk=1;function a(s,r,o,l,c){var d=s.padding.left,g=0,h,m;for(h=0;h<o.length;h++)o[h].header&&(m=r.calc(o[h].header,"voicefont",""),g=Math.max(g,m.width));if(g=t(g,l,r),g=t(g,c,r),g){var p=r.calc("A","voicefont","");g+=p.width}d+=g;var u=0;return u=i(l,d,u),u=i(c,d,u),d+u}function t(s,r,o){if(r){for(var l=0;l<r.length;l++)if(r[l].header){var c=o.calc(r[l].header,"voicefont","");s=Math.max(s,c.width)}}return s}function i(s,r,o){if(s)for(var l=0;l<s.length;l++)n(r,s[l]),o=Math.max(o,s[l].getWidth());return o}function n(s,r){r.x=s}return ph=a,ph}var mh,Bk;function oU(){if(Bk)return mh;Bk=1;var a=Rk();function t(n,s,r){var o=a(n,s.getTextSize,s.voices,s.brace,s.bracket),l=i(s,r.minPadding),c=l.totalDuration,d=l.minSpacing,g=d*c;r.minWidth&&(g=Math.max(g,r.minWidth));var h=r.minPadding?r.minPadding/2:2;s.startx=o,s.w=g+o;for(var m=0;m<s.voices.length;m++){var p=s.voices[m];p.startx=o,p.w=g+o;for(var u=o,f=!1,_=0,v=0;v<p.children.length;v++){var y=p.children[v];f||(y.duration!==0?(f=!0,_=(g+o-u)/c,s.gridStart=u):(y.x=u,u+=y.w+y.minspacing)),f&&(r.align==="center"?y.x=u+y.duration*_/2-y.w/2:y.duration===0?y.x=u+1-y.w:y.x=u+h-y.extraw,u+=y.duration*_);for(var S=0;S<y.children.length;S++){var q=y.children[S],M=q.dx?q.dx:0;q.x=y.x+M}}s.gridEnd=u}return g}function i(n,s){for(var r=0,o=0,l=0;l<n.voices.length;l++){for(var c=0,d=n.voices[l],g=0;g<d.children.length;g++){var h=d.children[g];if(c+=h.duration,h.duration){var m=(h.w+s)/h.duration;r=Math.max(r,m)}}o=Math.max(o,c)}return{totalDuration:o,minSpacing:r}}return mh=t,mh}var gh,Pk;function lU(){if(Pk)return gh;Pk=1;function a(t){for(var i=[],n=0;n<t.length;n++){var s=t[n],r=s.staffGroup,o=[];if(r&&r&&r.staffs)for(var l=0;l<r.staffs.length;l++){for(var c=r.staffs[l],d={},g=0;g<c.voices.length;g++)for(var h=r.voices[c.voices[g]],m=0,p=0;p<h.children.length;p++){var u="T"+Math.round(m*1e3);d[u]||(d[u]=[]),h.children[p].abcelem.el_type==="note"&&(d[u].push(h.children[p]),m+=h.children[p].duration)}o.push(d)}i.push(o)}return i}return gh=a,gh}var hh,jk;function cU(){if(jk)return hh;jk=1;var a=iU(),t=nU(),i=rU(),n=Rk(),s=oU(),r=lU(),o=function(p,u,f,_,v,y){var S,q,M=f;for(S=0;S<u.lines.length;S++)if(q=u.lines[S],q.staff){var P;y!==void 0?P=s(p,q.staffGroup,y):P=l(p,M,_,q.staffGroup,u.formatting,S===u.lines.length-1,!1),Math.round(P)>Math.round(M)&&(M=P,v&&(S=-1))}for(S=0;S<u.lines.length;S++)if(q=u.lines[S],q.staffGroup&&q.staffGroup.voices){for(var B=0;B<q.staffGroup.voices.length;B++)a(q.staffGroup.voices[B]);t(p,q.staffGroup)}var A=r(u.lines);for(S=0;S<u.lines.length;S++)q=u.lines[S],q.staffGroup&&g(A[S]);for(S=0;S<u.lines.length;S++)q=u.lines[S],q.staffGroup&&q.staffGroup.setHeight();return M},l=function(p,u,f,_,v,y,S){for(var q=n(p,_.getTextSize,_.voices,_.brace,_.bracket),M=f,P=0;P<8;P++){var B=i(M,p.minPadding,S,_,q);if(M=c(y,v.stretchlast,u+p.padding.left,_.w,M,B.spacingUnits,B.minSpace,p.padding.left+p.padding.right),M===null)break}return d(_.voices),_.w-q};function c(p,u,f,_,v,y,S,q){if(p)if(u===void 0){if(_/f<.66)return null}else{var M=1-(_+q)/f,P=M<u;if(!P)return null}if(Math.abs(f-_)<2)return null;var B=y*v,A=_-B;return y>0?(v=(f-A)/y,v*S>50&&(v=50/S),v):null}function d(p){for(var u=0;u<p.length;u++)for(var f=p[u],_=1;_<f.children.length-1;_++){var v=f.children[_];if(v.abcelem.rest&&(v.abcelem.rest.type==="whole"||v.abcelem.rest.type==="multimeasure")){var y=f.children[_-1],S=f.children[_+1];v.center(y,S)}}}function g(p){for(var u=0;u<p.length;u++)for(var f=p[u],_=Object.keys(f),v=0;v<_.length;v++){var y=f[_[v]],S=y.length-1;if(y.length>1){var q=y[0].abcelem.rest&&y[0].abcelem.rest.type==="rest",M=y[S].abcelem.rest&&y[S].abcelem.rest.type==="rest";if(q&&!y[S].abcelem.rest){var P=y[0].children.find(function(C){return C.name.includes("rest")}),B=h(y[S]);if(P){var A=P.bottom-B;A-=2,A<0&&y[0].children.length>0&&(y[0].bottom-=A,y[0].top-=A,y[0].children[0].bottom-=A,y[0].children[0].top-=A,y[0].children[0].pitch-=A)}}else if(M&&!y[0].abcelem.rest){var j=y[S].children.find(function(C){return C.name.includes("rest")});if(j){var G=j.top-m(y[0]);G+=2,G>0&&y[S].children.length>0&&(y[S].bottom-=G,y[S].top-=G,y[S].children[0].bottom-=G,y[S].children[0].top-=G,y[S].children[0].pitch-=G)}}}}}function h(p){if(p.children){for(var u=-90,f=0;f<p.children.length;f++){var _=p.children[f];_.type!=="chord"&&(u=Math.max(u,_.top))}if(u>-90)return u}return p.top}function m(p){if(p.children){for(var u=90,f=0;f<p.children.length;f++){var _=p.children[f];_.type!=="lyric"&&(u=Math.min(u,_.bottom))}if(u<90)return u}return p.bottom}return hh=o,hh}var _h,Nk;function dU(){if(Nk)return _h;Nk=1;var a=function(i){this.shouldAddClasses=i.shouldAddClasses,this.reset()};return a.prototype.reset=function(){this.lineNumber=null,this.voiceNumber=null,this.measureNumber=null,this.measureTotalPerLine=[],this.noteNumber=null},a.prototype.incrLine=function(){this.lineNumber===null?this.lineNumber=0:this.lineNumber++,this.voiceNumber=null,this.measureNumber=null,this.noteNumber=null},a.prototype.incrVoice=function(){this.voiceNumber===null?this.voiceNumber=0:this.voiceNumber++,this.measureNumber=null,this.noteNumber=null},a.prototype.isInMeasure=function(){return this.measureNumber!==null},a.prototype.newMeasure=function(){this.measureNumber&&(this.measureTotalPerLine[this.lineNumber]=this.measureNumber),this.measureNumber=null,this.noteNumber=null},a.prototype.startMeasure=function(){this.measureNumber=0,this.noteNumber=0},a.prototype.incrMeasure=function(){this.measureNumber++,this.noteNumber=0},a.prototype.incrNote=function(){this.noteNumber++},a.prototype.measureTotal=function(){for(var t=0,i=0;i<this.lineNumber;i++)t+=this.measureTotalPerLine[i]?this.measureTotalPerLine[i]:0;return this.measureNumber&&(t+=this.measureNumber),t},a.prototype.getCurrent=function(t){return{line:this.lineNumber,measure:this.measureNumber,measureTotal:this.measureTotal(),voice:this.voiceNumber,note:this.noteNumber}},a.prototype.generate=function(t){if(!this.shouldAddClasses)return"";var i=[];if(t&&t.length>0&&i.push(t),t==="abcjs-tab-number")return i.join(" ");if(t==="text instrument-name")return"abcjs-text abcjs-instrument-name";if(this.lineNumber!==null&&i.push("l"+this.lineNumber),this.measureNumber!==null&&i.push("m"+this.measureNumber),this.measureNumber!==null&&i.push("mm"+this.measureTotal()),this.voiceNumber!==null&&i.push("v"+this.voiceNumber),t&&(t.indexOf("note")>=0||t.indexOf("rest")>=0||t.indexOf("lyric")>=0)&&this.noteNumber!==null&&i.push("n"+this.noteNumber),i.length>0){i=i.join(" "),i=i.split(" ");for(var n=0;n<i.length;n++)i[n].indexOf("abcjs-")!==0&&i[n].length>0&&(i[n]="abcjs-"+i[n])}return i.join(" ")},_h=a,_h}var vh,Ok;function uU(){if(Ok)return vh;Ok=1;var a=function(i,n){this.formatting=i,this.classes=n};return a.prototype.updateFonts=function(t){t.gchordfont&&(this.formatting.gchordfont=t.gchordfont),t.tripletfont&&(this.formatting.tripletfont=t.tripletfont),t.annotationfont&&(this.formatting.annotationfont=t.annotationfont),t.vocalfont&&(this.formatting.vocalfont=t.vocalfont)},a.prototype.getFamily=function(t){return t[0]==='"'&&t[t.length-1]==='"'?t.substring(1,t.length-1):t},a.prototype.calc=function(t,i){var n;typeof t=="string"?(n=this.formatting[t],n?n={face:n.face,size:Math.round(n.size*4/3),decoration:n.decoration,style:n.style,weight:n.weight,box:n.box}:n={face:"Arial",size:Math.round(48/3),decoration:"underline",style:"normal",weight:"normal"}):n={face:t.face,size:Math.round(t.size*4/3),decoration:t.decoration,style:t.style,weight:t.weight,box:t.box};var s=this.formatting.fontboxpadding?this.formatting.fontboxpadding:.1;n.padding=n.size*s;var r={"font-size":n.size,"font-style":n.style,"font-family":this.getFamily(n.face),"font-weight":n.weight,"text-decoration":n.decoration,class:this.classes.generate(i)};return{font:n,attr:r}},vh=a,vh}var bh,Dk;function fU(){if(Dk)return bh;Dk=1;var a=function(i,n){this.getFontAndAttr=i,this.svg=n};return a.prototype.updateFonts=function(t){this.getFontAndAttr.updateFonts(t)},a.prototype.attr=function(t,i){return this.getFontAndAttr.calc(t,i)},a.prototype.getFamily=function(t){return t[0]==='"'&&t[t.length-1]==='"'?t.substring(1,t.length-1):t},a.prototype.calc=function(t,i,n,s){var r;typeof i=="string"?r=this.attr(i,n):r={font:{face:i.face,size:i.size,decoration:i.decoration,style:i.style,weight:i.weight},attr:{"font-size":i.size,"font-style":i.style,"font-family":this.getFamily(i.face),"font-weight":i.weight,"text-decoration":i.decoration,class:this.getFontAndAttr.classes.generate(n)}};var o=this.svg.getTextSize(t,r.attr,s);return r.font.box?{height:o.height+r.font.padding*4,width:o.width+r.font.padding*4}:o},a.prototype.baselineToCenter=function(t,i,n,s,r){var o=this.calc(t,i,n).height,l=this.attr(i,n).font.size;return o*.5+(r-s-2)*l},bh=a,bh}var yh,Ik;function tc(){if(Ik)return yh;Ik=1;var a=function(){for(var t=0,i,n=arguments[t++],s=[],r,o,l,c;n;){if(r=/^[^\x25]+/.exec(n))s.push(r[0]);else if(r=/^\x25{2}/.exec(n))s.push("%");else if(r=/^\x25(?:(\d+)\$)?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(n)){if((i=arguments[r[1]||t++])==null||i==null)throw"Too few arguments.";if(/[^s]/.test(r[7])&&typeof i!="number")throw"Expecting number but found "+typeof i;switch(r[7]){case"b":i=i.toString(2);break;case"c":i=String.fromCharCode(i);break;case"d":i=parseInt(i);break;case"e":i=r[6]?i.toExponential(r[6]):i.toExponential();break;case"f":i=r[6]?parseFloat(i).toFixed(r[6]):parseFloat(i);break;case"o":i=i.toString(8);break;case"s":i=(i=String(i))&&r[6]?i.substring(0,r[6]):i;break;case"u":i=Math.abs(i);break;case"x":i=i.toString(16);break;case"X":i=i.toString(16).toUpperCase();break}i=/[def]/.test(r[7])&&r[2]&&i>0?"+"+i:i,l=r[3]?r[3]=="0"?"0":r[3][1]:" ",c=r[5]-String(i).length,o=r[5]?str_repeat(l,c):"",s.push(r[4]?i+o:o+i)}else throw"Huh ?!";n=n.substring(r[0].length)}return s.join("")};return yh=a,yh}var wh,Lk;function Wr(){if(Lk)return wh;Lk=1;function a(t){return parseFloat(t.toFixed(2))}return wh=a,wh}var kh,Vk;function cl(){if(Vk)return kh;Vk=1;var a=Wr();function t(i,n,s){var r=n.y;if(n.phrases){var d=i.paper.richTextLine(n.phrases,n.x,n.y,n.klass,n.anchor);return d}if(n.lane){var o=n.dim.font.size*.25;r+=(n.dim.font.size+o)*n.lane}var l;n.dim?(l=n.dim,l.attr.class=n.klass):l=i.controller.getFontAndAttr.calc(n.type,n.klass),n.anchor&&(l.attr["text-anchor"]=n.anchor),n["dominant-baseline"]&&(l.attr["dominant-baseline"]=n["dominant-baseline"]),l.attr.x=n.x,l.attr.y=r,n.centerVertically||(l.attr.y+=l.font.size),n.type==="debugfont"&&(console.log("Debug msg: "+n.text),l.attr.stroke="#ff0000"),n.cursor&&(l.attr.cursor=n.cursor);var c;n.name==="free-text"?c=n.text.replace(/^[ \t]*\n/gm,`
|
||
`):c=n.text.replace(/\n\n/g,`
|
||
|
||
`),c=c.replace(/^\n/,`
|
||
`),l.font.box&&(s||i.paper.openGroup({klass:l.attr.class,fill:i.foregroundColor,"data-name":n.name}),l.attr["text-anchor"]==="end"?l.attr.x-=l.font.padding:l.attr["text-anchor"]==="start"&&(l.attr.x+=l.font.padding),l.attr.y+=l.font.padding,delete l.attr.class),n.noClass&&delete l.attr.class,l.attr.x=a(l.attr.x),l.attr.y=a(l.attr.y),n.name&&(l.attr["data-name"]=n.name);var d=i.paper.text(c,l.attr);if(l.font.box){var g=d.getBBox(),h=0;l.attr["text-anchor"]==="middle"?h=g.width/2+l.font.padding:l.attr["text-anchor"]==="end"&&(h=g.width+l.font.padding*2);var m=0;n.centerVertically&&(m=g.height-l.font.padding),i.paper.rect({"data-name":"box",x:Math.round(n.x-h),y:Math.round(r-m),width:Math.round(g.width+l.font.padding*2),height:Math.round(g.height+l.font.padding*2)}),s||(d=i.paper.closeGroup())}return d}return kh=t,kh}var xh,Hk;function pU(){if(Hk)return xh;Hk=1;var a=tc(),t=Us(),i=cl();function n(c,d,g){var h=d.startVoice.staff.absoluteY-t.STEP*10;return d.endVoice&&d.endVoice.staff?d.endY=d.endVoice.staff.absoluteY-t.STEP*2:d.lastContinuedVoice&&d.lastContinuedVoice.staff?d.endY=d.lastContinuedVoice.staff.absoluteY-t.STEP*2:d.endY=d.startVoice.staff.absoluteY-t.STEP*2,l(c,d.x,h,d.endY,d.type,d.header,g)}function s(c,d,g,h,m){d+=t.STEP;var p=t.STEP*.75,u=t.STEP*.75,f=h-g,_=a("M %f %f l %f %f l %f %f l %f %f z",d,g-u,0,f+u*2,p,0,0,-(f+u*2)),v=t.STEP*2,y=t.STEP;return _+=a("M %f %f q %f %f %f %f q %f %f %f %f z",d+p,g-u,v*.6,y*.2,v,-y,-v*.1,y*.3,-v,y+t.STEP),_+=a("M %f %f q %f %f %f %f q %f %f %f %f z",d+p,g+u+f,v*.6,-y*.2,v,y,-v*.1,-y*.3,-v,-y-t.STEP),c.paper.path({path:_,stroke:c.foregroundColor,fill:c.foregroundColor,class:c.controller.classes.generate(m),"data-name":m})}function r(c,d,g,h,m){var p=h-g,u=o(d,g,[7.5,-8,21,0,18.5,-10.5,7.5],[0,p/5.5,p/3.14,p/2,p/2.93,p/4.88,0]);return u+=o(d,g,[0,17.5,-7.5,6.6,-5,20,0],[p/2,p/1.46,p/1.22,p,p/1.19,p/1.42,p/2]),c.paper.path({path:u,stroke:c.foregroundColor,fill:c.foregroundColor,class:c.controller.classes.generate(m),"data-name":m})}function o(c,d,g,h){return a("M %f %f C %f %f %f %f %f %f C %f %f %f %f %f %f z",c+g[0],d+h[0],c+g[1],d+h[1],c+g[2],d+h[2],c+g[3],d+h[3],c+g[4],d+h[4],c+g[5],d+h[5],c+g[6],d+h[6])}var l=function(c,d,g,h,m,p,u){var f;if(p){c.paper.openGroup({klass:c.controller.classes.generate("staff-extra voice-name"),"data-name":m});var _=g+(h-g)/2;_=_-c.controller.getTextSize.baselineToCenter(p,"voicefont","staff-extra voice-name",0,1),i(c,{x:c.padding.left,y:_,text:p,type:"voicefont",klass:"staff-extra voice-name",anchor:"start",centerVertically:!0})}return m==="brace"?f=r(c,d,g,h,m):m==="bracket"&&(f=s(c,d,g,h,m)),p&&(f=c.paper.closeGroup()),u.wrapSvgEl({el_type:m,startChar:-1,endChar:-1},f),f};return xh=n,xh}var Sh,Wk;function uu(){if(Wk)return Sh;Wk=1;function a(t,i,n){var s=t.paper.path(i);return s}return Sh=a,Sh}var Th,Qk;function mU(){if(Qk)return Th;Qk=1;var a=tc(),t=uu(),i=Wr();function n(f,_,v){(!_.anchor1||!_.anchor2||!_.anchor1.heads||!_.anchor2.heads||_.anchor1.heads.length===0||_.anchor2.heads.length===0)&&window.console.error("Glissando Element not set.");var y=4,S=f.calcY(_.anchor1.heads[0].pitch),q=f.calcY(_.anchor2.heads[0].pitch),M=_.anchor1.x+_.anchor1.w/2,P=_.anchor2.x+_.anchor2.w/2,B=s(M,S,P,q),A=_.anchor1.w/2+y,j=_.anchor2.w/2+y,G=r(M,S,P,q),C=o(S,G,A);o(q,G,-j);var R=l(B-A-j),H=u(f,M+A,C,R,G);return v.wrapSvgEl({el_type:"glissando",startChar:-1,endChar:-1},H),[H]}function s(f,_,v,y){var S=v-f,q=y-_;return Math.sqrt(S*S+q*q)}function r(f,_,v,y){return(y-_)/(v-f)}function o(f,_,v){return i(f+v*_)}function l(f){var _=5;return Math.max(2,Math.floor((f-_*2)/6))}var c=[[3.5,-4.8]],d=[[1.5,-1],[.3,-.3],[-3.5,3.8]],g=[[-1.5,2]],h=[[3,4],[3,-4]],m=[[-3,4],[-3,-4]];function p(f,_){for(var v="",y=0;y<f.length;y++)v+="l"+f[y][0]+" "+o(f[y][1],_,f[y][0]);return v}var u=function(f,_,v,y,S){var q=a("M %f %f",_,v);q+=p(c,S);var M;for(M=0;M<y;M++)q+=p(h,S);for(q+=p(d,S),M=0;M<y;M++)q+=p(m,S);return q+=p(g,S)+"z",t(f,{path:q,highlight:"stroke",stroke:f.foregroundColor,class:f.controller.classes.generate("decoration"),"data-name":"glissando"})};return Th=n,Th}var $h,Kk;function gU(){if(Kk)return $h;Kk=1;var a=tc(),t=uu(),i=Wr();function n(r,o,l){o.pitch===void 0&&window.console.error("Crescendo Element y-coordinate not set.");var c=r.calcY(o.pitch)+4,d=8,g=o.anchor1?o.anchor1.x:0,h=o.anchor2?o.anchor2.x:800,m;return o.dir==="<"?m=s(r,c+d/2,c,c+d/2,c+d,g,h):m=s(r,c,c+d/2,c+d,c+d/2,g,h),l.wrapSvgEl({el_type:"dynamicDecoration",startChar:-1,endChar:-1},m),[m]}var s=function(r,o,l,c,d,g,h){o=i(o),l=i(l),c=i(c),d=i(d),g=i(g),h=i(h);var m=a("M %f %f L %f %f M %f %f L %f %f",g,o,h,l,g,c,h,d);return t(r,{path:m,highlight:"stroke",stroke:r.foregroundColor,class:r.controller.classes.generate("dynamics decoration"),"data-name":"dynamics"})};return $h=n,$h}var qh,Yk;function Ah(){if(Yk)return qh;Yk=1;var a=Wr();function t(){this.ingroup=!1}t.prototype.beginGroup=function(n,s){this.paper=n,this.controller=s,this.path=[],this.lastM=[0,0],this.ingroup=!0,this.paper.openGroup()},t.prototype.isInGroup=function(){return this.ingroup},t.prototype.addPath=function(n){if(n=n||[],n.length!==0){n[0][0]="m",n[0][1]=a(n[0][1]-this.lastM[0]),n[0][2]=a(n[0][2]-this.lastM[1]),this.lastM[0]+=n[0][1],this.lastM[1]+=n[0][2],this.path.push(n[0]);for(var s=1,r=n.length;s<r;s++)n[s][0]==="m"&&(this.lastM[0]+=n[s][1],this.lastM[1]+=n[s][2]),this.path.push(n[s])}},t.prototype.endGroup=function(n,s,r){this.ingroup=!1;for(var o="",l=0;l<this.path.length;l++)o+=this.path[l].join(" ");this.path=[];var c=this.paper.closeGroup();if(c){var d=this.controller.classes.generate(n);d&&(r&&(d+=" "+r),c.setAttribute("class",d)),c.setAttribute("fill",this.controller.renderer.foregroundColor),c.setAttribute("stroke","none"),c.setAttribute("data-name",s)}return c};var i=new t;return qh=i,qh}var Ch,Jk;function Gh(){if(Jk)return Ch;Jk=1;var a=cl(),t=ll(),i=Ah();function n(r,o,l,c,d){var g,h;if(!c)return null;if(c.length>1&&c.indexOf(".")<0){var m=i.isInGroup()?"":d.klass;r.paper.openGroup({"data-name":d.name,klass:m});for(var p=0,u=0;u<c.length;u++){var f=c[u];h=t.getYCorr(f),g=t.printSymbol(o+p,r.calcY(l+h),f,r.paper,{stroke:d.stroke,fill:d.fill}),g?u<c.length-1&&(p+=s(f,c[u+1],t.getSymbolWidth(f))):a(r,{x:o,y:r.y,text:"no symbol:"+c,type:"debugfont",klass:"debug-msg",anchor:"start"},!1)}var _=r.paper.closeGroup();return _}else return h=t.getYCorr(c),i.isInGroup()?g=t.printSymbol(o,r.calcY(l+h),c,r.paper,{"data-name":d.name}):g=t.printSymbol(o,r.calcY(l+h),c,r.paper,{klass:d.klass,stroke:d.stroke,fill:d.fill,"data-name":d.name}),g||(a(r,{x:o,y:r.y,text:"no symbol:"+c,type:"debugfont",klass:"debug-msg",anchor:"start"},!1),null)}function s(r,o,l){var c=l;return r==="f"&&o==="f"&&(c=c*2/3),r==="p"&&o==="p"&&(c=c*5/6),r==="f"&&o==="z"&&(c=c*5/8),c}return Ch=n,Ch}var Fh,Xk;function hU(){if(Xk)return Fh;Xk=1;var a=Gh();function t(i,n,s){n.pitch===void 0&&window.console.error("Dynamic Element y-coordinate not set.");var r=1,o=1,l=a(i,n.anchor.x,n.pitch,n.dec,{scalex:r,scaley:o,klass:i.controller.classes.generate("decoration dynamics"),fill:i.foregroundColor,stroke:"none",name:"dynamics"});return s.wrapSvgEl({el_type:"dynamicDecoration",startChar:-1,endChar:-1,decoration:n.dec},l),[l]}return Fh=t,Fh}var Mh,Zk;function _U(){if(Zk)return Mh;Zk=1;var a=tc(),t=cl(),i=uu(),n=Wr();function s(l,c,d){l.paper.openGroup({klass:l.controller.classes.generate("triplet "+c.durationClass),"data-name":"triplet"}),c.hasBeam||o(l,c.anchor1.x,c.startNote,c.anchor2.x+c.anchor2.w,c.endNote,c.up),t(l,{x:c.xTextPos,y:l.calcY(c.yTextPos-1),text:""+c.number,type:"tripletfont",anchor:"middle",centerVertically:!0,noClass:!0,name:""+c.number},!0);var g=l.paper.closeGroup();return d.wrapSvgEl({el_type:"triplet",startChar:-1,endChar:-1},g),g}function r(l,c,d,g){return a("M %f %f L %f %f",n(l),n(c),n(d),n(g))}function o(l,c,d,g,h,m){d=l.calcY(d),h=l.calcY(h);var p=m?5:-5,u="";u+=r(c,d,c,d+p),u+=r(g,h,g,h+p);var f=c+(g-c)/2,_=8,v=(h-d)/(g-c),y=f-_,S=d+(y-c)*v;u+=r(c,d,y,S);var q=f+_,M=d+(q-c)*v;u+=r(q,M,g,h),i(l,{path:u,stroke:l.foregroundColor,"data-name":"triplet-bracket"})}return Mh=s,Mh}var zh,e3;function vU(){if(e3)return zh;e3=1;var a=tc(),t=cl(),i=uu(),n=Wr();function s(r,o,l,c,d){o.pitch===void 0&&window.console.error("Ending Element y-coordinate not set.");var g=n(r.calcY(o.pitch)),h=20,m="";o.anchor1&&(l=n(o.anchor1.x+o.anchor1.w),m+=a("M %f %f L %f %f ",l,g,l,n(g+h))),o.anchor2&&(c=n(o.anchor2.x),m+=a("M %f %f L %f %f ",c,g,c,n(g+h))),m+=a("M %f %f L %f %f ",l,g,c,g),r.paper.openGroup({klass:r.controller.classes.generate("ending"),fill:r.foregroundColor,"data-name":"ending"}),i(r,{path:m,stroke:r.foregroundColor,fill:r.foregroundColor,"data-name":"line"}),o.anchor1&&t(r,{x:n(l+5),y:n(r.calcY(o.pitch-.5)),text:o.text,type:"repeatfont",klass:"ending",anchor:"start",noClass:!0,name:o.text});var p=r.paper.closeGroup();return d.wrapSvgEl({el_type:"ending",startChar:-1,endChar:-1},p),[p]}return zh=s,zh}var Eh,t3;function bU(){if(t3)return Eh;t3=1;var a=tc(),t=Wr();function i(r,o,l,c,d){n(o,l,c);var g="";o.anchor1?g+="abcjs-start-m"+o.anchor1.parent.counters.measure+"-n"+o.anchor1.parent.counters.note:g+="abcjs-start-edge",o.anchor2?g+=" abcjs-end-m"+o.anchor2.parent.counters.measure+"-n"+o.anchor2.parent.counters.note:g+=" abcjs-end-edge",o.hint&&(g="abcjs-hint");var h=o.fixedY?1.5:0,m=s(r,o.startX,o.endX,o.startY+h,o.endY+h,o.above,g,o.isTie,o.dotted),p=-1;o.anchor1&&!o.isTie&&(p=o.anchor1.parent.abcelem.startChar-1);var u=-1;return o.anchor2&&!o.isTie&&(u=o.anchor2.parent.abcelem.endChar+1),d.wrapSvgEl({el_type:"slur",startChar:p,endChar:u},m),[m]}var n=function(r,o,l){!r.anchor1||!r.anchor2||r.anchor1.pitch===r.anchor2.pitch&&r.internalNotes.length===0?r.isTie=!0:r.isTie=!1,r.isTie?(r.calcTieDirection(),r.calcX(o,l),r.calcTieY()):(r.calcSlurDirection(),r.calcX(o,l),r.calcSlurY()),r.avoidCollisionAbove()},s=function(r,o,l,c,d,g,h,m,p){var u=m?1.2:1.5;o=t(o+6),l=t(l+4),c=c+(g?u:-u),d=d+(g?u:-u);var f=t(r.calcY(c)),_=t(r.calcY(d)),v=l-o,y=_-f,S=Math.sqrt(v*v+y*y),q=v/S,M=y/S,P=S/3.5,B=m?10:25,A=(g?-1:1)*Math.min(B,Math.max(4,P)),j=t(o+P*q-A*M),G=t(f+P*M+A*q),C=t(l-P*q-A*M),R=t(_-P*M+A*q),H=2;h?h+=" slur":h="slur",h+=m?" tie":" legato";var E;if(p){h+=" dotted";var U=a("M %f %f C %f %f %f %f %f %f",o,f,j,G,C,R,l,_);E=r.paper.path({path:U,stroke:r.foregroundColor,fill:"none","stroke-dasharray":"5 5",class:r.controller.classes.generate(h),"data-name":m?"tie":"slur"})}else{var N=a("M %f %f C %f %f %f %f %f %f C %f %f %f %f %f %f z",o,f,j,G,C,R,l,_,t(C-H*M),t(R+H*q),t(j-H*M),t(G+H*q),o,f);E=r.paper.path({path:N,stroke:"none",fill:r.foregroundColor,class:r.controller.classes.generate(h),"data-name":m?"tie":"slur"})}return E};return Eh=i,Eh}var Uh,a3;function yU(){if(a3)return Uh;a3=1;var a=uu(),t=Wr();function i(o,l){if(l.beams.length!==0){for(var c="",d=0;d<l.beams.length;d++){var g=l.beams[d];if(g.split){for(var h=s(o,g.startX,g.startY,g.endX,g.endY),m=[],p=0;p<g.split.length;p+=2)m.push([g.split[p],g.split[p+1]]);for(p=0;p<m.length;p++){var u=r(g.startX,g.startY,h,m[p][0]),f=r(g.startX,g.startY,h,m[p][1]);c+=n(o,m[p][0],u,m[p][1],f,g.dy)}}else c+=n(o,g.startX,g.startY,g.endX,g.endY,g.dy)}var _=("abcjs-d"+l.duration).replace(/\./g,"-"),v=o.controller.classes.generate("beam-elem "+_),y=a(o,{path:c,stroke:"none",fill:o.foregroundColor,class:v});return[y]}}function n(o,l,c,d,g,h){c=t(o.calcY(c)),g=t(o.calcY(g)),l=t(l),d=t(d);var m=t(c+h),p=t(g+h);return"M"+l+" "+c+" L"+d+" "+g+"L"+d+" "+p+" L"+l+" "+m+"z"}function s(o,l,c,d,g){return(g-c)/(d-l)}function r(o,l,c,d){var g=d-o;return l+g*c}return Uh=i,Uh}var Rh,i3;function Bh(){if(i3)return Rh;i3=1;var a=Ah(),t=Wr();function i(n,s,r,o,l,c,d){if(r<0||o<l){var g=t(l);l=t(o),o=g}else o=t(o),l=t(l);s=t(s);var h=t(s+r);if(n.firefox){s+=r/2;var p={x1:s,x2:s,y1:o,y2:l,stroke:n.foregroundColor,"stroke-width":Math.abs(r)};return c&&(p.class=c),d&&(p["data-name"]=d),n.paper.lineToBack(p)}for(var m=[["M",s,o],["L",s,l],["L",h,l],["L",h,o],["z"]],p={path:""},u=0;u<m.length;u++)p.path+=m[u].join(" ");return c&&(p.class=c),d&&(p["data-name"]=d),a.isInGroup()||(p.stroke="none",p.fill=n.foregroundColor),n.paper.pathToBack(p)}return Rh=i,Rh}var Ph,n3;function wU(){if(n3)return Ph;n3=1;var a=tc(),t=Wr();function i(n,s,r,o,l,c,d){var g=n.foregroundColor;s=t(s),r=t(r);var h=t(o-d),m=t(o+d);if(n.firefox){o+=d/2;var p={x1:s,x2:r,y1:o,y2:o,stroke:n.foregroundColor,"stroke-width":Math.abs(d*2)};return l&&(p.class=l),c&&(p["data-name"]=c),n.paper.lineToBack(p)}var u=a("M %f %f L %f %f L %f %f L %f %f z",s,h,r,h,r,m,s,m),f={path:u,stroke:"none",fill:g};c&&(f["data-name"]=c),l&&(f.class=l);var _=n.paper.pathToBack(f);return _}return Ph=i,Ph}var jh,s3;function r3(){if(s3)return jh;s3=1;var a=wU();function t(i,n,s,r,o,l,c){var d=i.calcY(r);return a(i,n,s,d,o,l,c)}return jh=t,jh}var Nh,o3;function l3(){if(o3)return Nh;o3=1;var a=cl(),t=Bh(),i=r3(),n=Gh();function s(o,l,c){l.pitch===void 0&&window.console.error(l.type+" Relative Element y-coordinate not set.");var d=o.calcY(l.pitch);switch(l.type){case"symbol":if(l.c===null)return null;var g="symbol";l.klass&&(g+=" "+l.klass),l.graphelem=n(o,l.x,l.pitch,l.c,{scalex:l.scalex,scaley:l.scaley,klass:o.controller.classes.generate(g),name:l.name});break;case"debug":l.graphelem=a(o,{x:l.x,y:o.calcY(15),text:""+l.c,type:"debugfont",klass:o.controller.classes.generate("debug-msg"),anchor:"start",centerVertically:!1,dim:l.dim},!1);break;case"tabNumber":var h="middle",m="tabnumberfont",p="abcjs-tab-number";l.isGrace&&(m="tabgracefont",d+=2.5,p="tab-grace"),l.graphelem=a(o,{x:l.x,y:d,text:""+l.c,type:m,klass:o.controller.classes.generate(p),anchor:h,centerVertically:!1,dim:l.dim,cursor:"default"},!1);break;case"barNumber":l.graphelem=a(o,{x:l.x,y:d,text:""+l.c,type:"measurefont",klass:o.controller.classes.generate("bar-number"),anchor:"middle",dim:l.dim,name:"bar-number"},!0);break;case"lyric":l.graphelem=a(o,{x:l.x,y:d,text:l.c,type:"vocalfont",klass:o.controller.classes.generate("lyric"),anchor:"middle",dim:l.dim,name:"lyric"},!1);break;case"chord":l.graphelem=a(o,{x:l.x,y:d,text:l.c,type:"gchordfont",klass:o.controller.classes.generate("chord"),anchor:"middle",dim:l.dim,lane:l.getLane(),name:"chord"},!1);break;case"decoration":l.graphelem=a(o,{x:l.x,y:d+6,text:l.c,type:"annotationfont",klass:o.controller.classes.generate("annotation"),anchor:l.anchor,centerVertically:!0,dim:l.dim},!1);break;case"text":l.graphelem=a(o,{x:l.x,y:d,text:l.c,type:"annotationfont",klass:o.controller.classes.generate("annotation"),anchor:"start",centerVertically:l.centerVertically,dim:l.dim,lane:l.getLane(),name:"annotation"},!1);break;case"multimeasure-text":l.graphelem=a(o,{x:l.x+l.w/2,y:d,text:l.c,type:"tempofont",klass:o.controller.classes.generate("rest"),anchor:"middle",centerVertically:!1,dim:l.dim},!1);break;case"part":l.graphelem=a(o,{x:l.x,y:d,text:l.c,type:"partsfont",klass:o.controller.classes.generate("part"),anchor:"start",dim:l.dim,name:l.c},!0);break;case"bar":l.graphelem=t(o,l.x,l.linewidth+o.lineThickness,d,c||o.calcY(l.pitch2),null,"bar");break;case"stem":var u=l.linewidth>0?l.linewidth+o.lineThickness:l.linewidth-o.lineThickness;l.graphelem=t(o,l.x,u,d,o.calcY(l.pitch2),"abcjs-stem","stem");break;case"ledger":l.graphelem=i(o,l.x,l.x+l.w,l.pitch,"abcjs-ledger","ledger",.35+o.lineThickness);break}return l.scalex!==1&&l.graphelem&&r(o.paper,l.graphelem,l.scalex,l.scaley,l.x,d),l.graphelem}function r(o,l,c,d,g,h){o.setAttributeOnElement(l,{style:"transform:scale("+c+","+d+");transform-origin:"+g+"px "+h+"px;"})}return Nh=s,Nh}var Oh,c3;function kU(){if(c3)return Oh;c3=1;var a=l3(),t=cl();function i(n,s){var r=s.x;s.pitch===void 0&&window.console.error("Tempo Element y-coordinate not set."),s.tempo.el_type="tempo";var o=n.calcY(s.pitch)+2,l,c;if(s.tempo.preString){l=t(n,{x:r,y:o,text:s.tempo.preString,type:"tempofont",klass:"abcjs-tempo",anchor:"start",noClass:!0,name:"pre"},!0),c=n.controller.getTextSize.calc(s.tempo.preString,"tempofont","tempo",l);var d=c.width,g=d/s.tempo.preString.length;r+=d+g}if(s.note){s.note.setX(r);for(var h=0;h<s.note.children.length;h++)a(n,s.note.children[h],r);r+=s.note.w+5;var m="= "+s.tempo.bpm;l=t(n,{x:r,y:o,text:m,type:"tempofont",klass:"abcjs-tempo",anchor:"start",noClass:!0,name:"beats"}),c=n.controller.getTextSize.calc(m,"tempofont","tempo",l);var p=c.width,u=p/m.length;r+=p+u}s.tempo.postString&&t(n,{x:r,y:o,text:s.tempo.postString,type:"tempofont",klass:"abcjs-tempo",anchor:"start",noClass:!0,name:"post"},!0)}return Oh=i,Oh}var Dh,d3;function xU(){if(d3)return Dh;d3=1;var a=kU(),t=l3(),i=Us(),n=fg(),s=Ah();function r(o,l,c,d,g){if(!l.invisible){var h=l.children.length>0&&l.children[0].type==="TempoElement";l.elemset=[],s.beginGroup(o.paper,o.controller);for(var m=0;m<l.children.length;m++){var p=l.children[m];switch(p.type){case"TempoElement":a(o,p);break;default:var u=t(o,p,c);if(p.type==="symbol"&&p.c&&p.c.indexOf("notehead")>=0&&u.setAttribute("class","abcjs-notehead"),u&&p.chordPos&&p.name.indexOf("flags.")!==0){var f=u.getAttribute("class");f?f=f+" abcjs-chord-pos-"+p.chordPos:f="abcjs-chord-pos-"+p.chordPos,u.setAttribute("class",f)}}}var f=l.type;if((l.type==="note"||l.type==="rest")&&(l.counters=o.controller.classes.getCurrent(),f+=" d"+Math.round(l.durationClass*1e3)/1e3,f=f.replace(/\./g,"-"),l.abcelem.pitches))for(var _=0;_<l.abcelem.pitches.length;_++)f+=" p"+l.abcelem.pitches[_].pitch;var v=s.endGroup(f,l.type,l.extraClass);if(v){if(l.cloned&&(l.cloned.overrideClasses=v.className.baseVal),l.overrideClasses){var y=v.classList&&v.classList.length>0?v.classList[0]+" ":"";v.setAttribute("class",y+l.overrideClasses)}if(h)l.startChar=l.abcelem.startChar,l.endChar=l.abcelem.endChar,d.add(l,v,!1,g);else{l.elemset.push(v);var S=!1;(l.type==="note"||l.type==="tabNumber")&&(S=!0),d.add(l,v,S,g)}}else l.elemset.length>0&&d.add(l,l.elemset[0],l.type==="note",g);if(l.klass&&n(l.elemset,"mark","","#00ff00"),l.hint&&n(l.elemset,"abcjs-hint","",null),l.abcelem.abselem=l,l.heads&&l.heads.length>0){l.notePositions=[];for(var q=0;q<l.heads.length;q++)l.notePositions.push({x:l.heads[q].x+l.heads[q].w/2,y:g.zero-l.heads[q].pitch*i.STEP})}}}return Dh=r,Dh}var Ih,u3;function SU(){if(u3)return Ih;u3=1;var a=mU(),t=gU(),i=hU(),n=_U(),s=vU(),r=bU(),o=yU(),l=cl(),c=xU();function d(h,m,p,u,f){var _=m.w-1;h.staffbottom=m.staff.bottom;var v=h.foregroundColor;if(m.color&&(h.foregroundColor=m.color),m.header){var y=l(h,{x:h.padding.left,y:h.calcY(m.headerPosition),text:m.header,type:"voicefont",klass:"staff-extra voice-name",anchor:"start",centerVertically:!0,name:"voice-name"},!0);u.wrapSvgEl({el_type:"voiceName",startChar:-1,endChar:-1,text:m.header},y)}var S,q,M=!1;for(S=0;S<m.children.length;S++){q=m.children[S],(q.type==="note"||q.type==="rest")&&(M=!0);var P=!1;q.type!=="staff-extra"&&!h.controller.classes.isInMeasure()&&(h.controller.classes.startMeasure(),P=!0),m.staff.isTabStaff&&(q.invisible=!1,q.type=="bar"&&q.abcelem.lastBar&&(p=m.topLine)),c(h,q,m.barto||S===m.children.length-1?p:0,u,f),(q.type==="note"||g(q))&&h.controller.classes.incrNote(),q.type==="bar"&&!P&&M&&h.controller.classes.incrMeasure()}for(h.controller.classes.startMeasure(),S=0;S<m.beams.length;S++){var B=m.beams[S];B==="bar"?h.controller.classes.incrMeasure():o(h,B,u)}for(h.controller.classes.startMeasure(),S=0;S<m.otherchildren.length;S++)if(q=m.otherchildren[S],q==="bar")h.controller.classes.incrMeasure();else switch(q.type){case"GlissandoElem":q.elemset=a(h,q,u);break;case"CrescendoElem":q.elemset=t(h,q,u);break;case"DynamicDecoration":q.elemset=i(h,q,u);break;case"TripletElem":n(h,q,u);break;case"EndingElem":q.elemset=s(h,q,m.startx+10,_,u);break;case"TieElem":q.elemset=r(h,q,m.startx+10,_,u);break;default:console.log(q),c(h,q,m.startx+10,_,u,f)}h.foregroundColor=v}function g(h){return h.type!=="rest"?!1:!!(h.abcelem&&h.abcelem.rest&&h.abcelem.rest.type!=="spacer")}return Ih=d,Ih}var Lh,f3;function TU(){if(f3)return Lh;f3=1;var a=r3();function t(i,n,s,r,o,l){var c="abcjs-top-line",d=2;o&&(d=o),i.paper.openGroup({prepend:!0,klass:i.controller.classes.generate("abcjs-staff")});var g=0,h=0;if(r===1)a(i,n,s,6,c,null,l+i.lineThickness),g=i.calcY(10),h=i.calcY(2);else for(var m=r-1;m>=0;m--){var p=(m+1)*d;h=i.calcY(p),g===0&&(g=h),a(i,n,s,p,c,null,l+i.lineThickness),c=void 0}return i.paper.closeGroup(),[g,h]}return Lh=t,Lh}var Vh,p3;function $U(){if(p3)return Vh;p3=1;function a(t,i,n){var s=t.paper.rectBeneath(i);return n&&t.paper.text(n,{x:0,y:i.y+7,"text-anchor":"start","font-size":"14px",fill:"rgba(0,0,255,.4)",stroke:"rgba(0,0,255,.4)"}),s}return Vh=a,Vh}var Hh,m3;function qU(){if(m3)return Hh;m3=1;function a(t,i){var n="rgba(0,0,0,255)",s="rgba(0,0,0,0)",r=Math.round(t.y),o=t.controller.width,l=(o-i)/2,c=l+i,d="M "+l+" "+r+" L "+c+" "+r+" L "+c+" "+(r+1)+" L "+l+" "+(r+1)+" L "+l+" "+r+" z";t.paper.pathToBack({path:d,stroke:s,fill:n,class:t.controller.classes.generate("defined-text")})}return Hh=a,Hh}var Wh,g3;function h3(){if(g3)return Wh;g3=1;var a=qU(),t=cl();function i(n,s,r){for(var o=0;o<s.rows.length;o++){var l=s.rows[o];if(l.absmove)n.absolutemoveY(l.absmove);else if(l.move)n.moveY(l.move);else if(l.text||l.phrases){var c=l.left?l.left:0,d=t(n,{x:c,y:n.y,text:l.text,phrases:l.phrases,"dominant-baseline":l["dominant-baseline"],type:l.font,klass:l.klass,name:l.name,anchor:l.anchor});l.absElemType&&r.wrapSvgEl({el_type:l.absElemType,name:l.name,startChar:l.startChar,endChar:l.endChar,text:l.text},d)}else if(l.separator)a(n,l.separator);else if(l.startGroup)n.paper.openGroup({klass:l.klass,"data-name":l.name});else if(l.endGroup){var g=n.paper.closeGroup();l.absElemType&&r.wrapSvgEl({el_type:l.absElemType,name:l.name,startChar:l.startChar,endChar:l.endChar,text:""},g)}}}return Wh=i,Wh}var Qh,_3;function AU(){if(_3)return Qh;_3=1;var a=Us(),t=pU(),i=SU(),n=TU(),s=$U(),r=Bh(),o=h3();function l(g,h,m,p){for(var u,f=g.y,_=0;_<h.staffs.length;_++){var v=h.staffs[_];g.moveY(a.STEP,v.top),v.absoluteY=g.y,g.showDebug&&(g.showDebug.indexOf("box")>=0&&v.voices&&d(g,h.voices,v.voices),g.showDebug.indexOf("grid")>=0&&(g.paper.dottedLine({x1:g.padding.left,x2:g.padding.left+g.controller.width,y1:f,y2:f,stroke:"#0000ff"}),s(g,{x:g.padding.left,y:g.calcY(v.originalTop),width:g.controller.width,height:g.calcY(v.originalBottom)-g.calcY(v.originalTop),fill:g.foregroundColor,stroke:g.foregroundColor,"fill-opacity":.1,"stroke-opacity":.1}),u=0,E(v,"chordHeightAbove"),E(v,"chordHeightBelow"),E(v,"dynamicHeightAbove"),E(v,"dynamicHeightBelow"),E(v,"endingHeightAbove"),E(v,"lyricHeightAbove"),E(v,"lyricHeightBelow"),E(v,"partHeightAbove"),E(v,"tempoHeightAbove"),E(v,"volumeHeightAbove"),E(v,"volumeHeightBelow"))),g.moveY(a.STEP,-v.bottom),g.showDebug&&g.showDebug.indexOf("grid")>=0&&g.paper.dottedLine({x1:g.padding.left,x2:g.padding.left+g.controller.width,y1:g.y,y2:g.y,stroke:"#0000aa"})}for(var y,S,q=2,M=0,P=0;P<h.voices.length;P++){var B=h.voices[P].staff,A=h.voices[P].tabNameInfos;if(g.y=B.absoluteY,g.controller.classes.incrVoice(),!h.voices[P].duplicate){if(y||(y=g.calcY(10)),S=g.calcY(q),B.lines!==0){B.linePitch&&(q=B.linePitch),g.controller.classes.newMeasure();var j=n(g,h.startx,h.w,B.lines,B.linePitch,.35);S=j[1],B.bottomLine=S,B.topLine=j[0],B.hasTab&&(M=B.topLine),B.hasStaff&&(M=B.hasStaff.topLine,h.voices[P].barto=!0,h.voices[P].topLine=y)}c(g,B.absoluteY,h.brace,P,m),c(g,B.absoluteY,h.bracket,P,m)}i(g,h.voices[P],M,m,{top:f,zero:g.y,height:h.height*a.STEP});var G=0;if(A){var C={rows:[]};C.rows.push({absmove:S+2});var R=8;C.rows.push({left:h.startx+R,text:A.name,font:"tablabelfont",klass:"text instrument-name",anchor:"start"}),C.rows.push({move:A.textSize.height}),o(g,C),G=A.textSize.height}g.controller.classes.newMeasure(),h.voices[P].duplicate||(M=g.calcY(2+G))}g.controller.classes.newMeasure();var H=h.staffs.length;H>1&&(y=h.staffs[0].topLine,S=h.staffs[H-1].bottomLine,r(g,h.startx,.6,y,S,null)),g.y=f;function E(U,N){var L=["rgb(207,27,36)","rgb(168,214,80)","rgb(110,161,224)","rgb(191,119,218)","rgb(195,30,151)","rgb(31,170,177)","rgb(220,166,142)"];if(U.positionY&&U.positionY[N]){var I=U.specialY[N]*a.STEP;N==="chordHeightAbove"&&U.specialY.chordLines&&U.specialY.chordLines.above&&(I*=U.specialY.chordLines.above),N==="chordHeightBelow"&&U.specialY.chordLines&&U.specialY.chordLines.below&&(I*=U.specialY.chordLines.below),s(g,{x:g.padding.left,y:g.calcY(U.positionY[N]),width:g.controller.width,height:I,fill:L[u],stroke:L[u],"fill-opacity":.4,"stroke-opacity":.4},N.substr(0,4)),u+=1,u>6&&(u=0)}}}function c(g,h,m,p,u){if(m)for(var f=0;f<m.length;f++)m[f].isStartVoice(p)&&(m[f].startY=h-a.STEP*10,m[f].elemset=t(g,m[f],u))}function d(g,h,m){for(var p=0;p<m.length;p++)for(var u=h[m[p]].children,f=0;f<u.length;f++){var _=u[f],v=_.getFixedCoords();if(!(_.invisible||v.t===void 0||v.b===void 0)){var y=(v.t-v.b)*a.STEP;s(g,{x:v.x,y:g.calcY(v.t),width:v.w,height:y,fill:"#88e888","fill-opacity":.4,stroke:"#4aa93d","stroke-opacity":.8});for(var S=0;S<_.children.length;S++){var q=_.children[S],M=q.getChordDim();if(M){var P=g.calcY(q.pitch);P+=q.dim.font.size*q.getLane(),s(g,{x:M.left,y:P,width:M.right-M.left,height:q.dim.font.size,fill:"none",stroke:"#4aa93d","stroke-opacity":.8})}}}}}return Qh=l,Qh}var Kh,v3;function CU(){if(v3)return Kh;v3=1;function a(t,i,n,s){var r=(i+t.padding.left+t.padding.right)*n,o=(t.y+t.padding.bottom)*n;if(t.isPrint&&(o=Math.max(o,1056)),t.ariaLabel!==""){var l="Sheet Music";t.abctune&&t.abctune.metaText&&t.abctune.metaText.title&&(l+=' for "'+t.abctune.metaText.title+'"'),t.paper.setTitle(l);var c=t.ariaLabel?t.ariaLabel:l;t.paper.setAttribute("aria-label",c)}var d=["-webkit-touch-callout: none;","-webkit-user-select: none;","-khtml-user-select: none;","-moz-user-select: none;","-ms-user-select: none;","user-select: none;"];t.paper.insertStyles(".abcjs-dragging-in-progress text, .abcjs-dragging-in-progress tspan {"+d.join(" ")+"}");var g={overflow:"hidden"};s==="resize"?t.paper.setResponsiveWidth(r,o):(g.width="",g.height=o+"px",n<1?(g.width=r+"px",t.paper.setSize(r/n,o/n)):t.paper.setSize(r,o)),t.paper.setScale(n),t.paper.setParentStyles(g)}return Kh=a,Kh}var Yh,b3;function GU(){if(b3)return Yh;b3=1;var a=Gw(),t=Mw();function i(n,s,r){this.elements=[],this.paper=n,this.tuneNumber=r,this.selectTypes=s}return i.prototype.getElements=function(){return this.elements},i.prototype.add=function(n,s,r,o){if(this.canSelect(n)){var l;this.selectTypes===void 0?l={selectable:!1,"data-index":this.elements.length}:l={selectable:!0,tabindex:0,"data-index":this.elements.length},this.paper.setAttributeOnElement(s,l);var c={absEl:n,svgEl:s,isDraggable:r};o!==void 0&&(c.staffPos=o),this.elements.push(c)}},i.prototype.canSelect=function(n){return this.selectTypes===!1||!n||!n.abcelem?!1:this.selectTypes===!0?!0:this.selectTypes===void 0?n.abcelem.el_type==="note"||n.abcelem.el_type==="tabNumber":this.selectTypes.indexOf(n.abcelem.el_type)>=0},i.prototype.wrapSvgEl=function(n,s){var r={tuneNumber:this.tuneNumber,abcelem:n,elemset:[s],highlight:a,unhighlight:t};this.add(r,s,!1)},Yh=i,Yh}var Jh,y3;function FU(){if(y3)return Jh;y3=1;const a=Gh(),t=Bh();function i(y,S,q,M,P){const B=P.gchordfont;P.partsfont;const A=P.annotationfont,j=P.repeatfont,G=P.textfont,C=P.subtitlefont,R=50,H=10,E=14,U=10,N=20,L=16;y.paper.openGroup({klass:"abcjs-chord-grid"}),S.forEach(I=>{switch(I.type){case"text":v(y,I.text,q,y.y,16,G,null,null,!1),y.moveY(L);break;case"subtitle":v(y,I.subtitle,q,y.y+U,20,C,null,"abcjs-subtitle",!1),y.moveY(N);break;case"part":if(I.lines.length>0){v(y,I.name,q,y.y+U,20,C,I.name,"abcjs-part",!1),y.moveY(N);const T=I.lines[0].length,F=M/T;I.lines.forEach((z,D)=>{let Q=!1,X=!1;z.forEach(ue=>{ue.ending&&(Q=!0),ue.annotations&&ue.annotations.length>0&&(X=!0)});const Z=X?E:Q?H:0;z.forEach((ue,de)=>{if(!ue.noBorder){y.paper.rect({x:q+de*F,y:y.y,width:F,height:Z+R}),y.paper.rect({x:q+de*F+1,y:y.y+1,width:F-2,height:Z+R-2});let V=0,pe=0;const Ce=y.y,ce=q+F*de;ue.hasStartRepeat&&(s(y,ce,Ce,Ce+R+Z,!0,Z),V=12),ue.hasEndRepeat&&(s(y,ce+F,Ce,Ce+R+Z,!1,Z),pe=12);let Te=0;ue.ending&&(Te=v(y,ue.ending,q+de*F+4,Ce+10,12,j,null,null,!1).getBBox().width+4),l(y,Ce,q+V,F,D,de,ue.chord,B,V+pe,R,Z),ue.annotations&&ue.annotations.length>0&&o(y,Ce,q+de*F+Te,ue.annotations,A),Z&&y.paper.rectBeneath({x:q+de*F,y:y.y,width:F,height:Z,fill:"#e8e8e8",stroke:"none"})}}),y.moveY(Z+R)}),y.moveY(N)}break}}),y.paper.closeGroup()}function n(y,S,q,M){var P=S-10,B=S+10,A=q+10,j=q-10,G=S-10,C=-y.yToPitch(M)+2,R=S+6.5,H=-y.yToPitch(M)-2.3;y.paper.lineToBack({x1:P,x2:B,y1:A,y2:j,"stroke-width":"3px","stroke-linecap":"round"}),a(y,G,C,"dots.dot",{scalex:1,scaley:1,klass:"",name:"dot"}),a(y,R,H,"dots.dot",{scalex:1,scaley:1,klass:"",name:"dot"})}function s(y,S,q,M,P,B){const A=P?S+2:S-4,j=P?S+9:S-11;y.paper.openGroup({klass:"abcjs-repeat"}),t(y,A,3+y.lineThickness,q,M,null,"bar"),a(y,j,-y.yToPitch(B)-4,"dots.dot",{scalex:1,scaley:1,klass:"",name:"dot"}),a(y,j,-y.yToPitch(B)-8,"dots.dot",{scalex:1,scaley:1,klass:"",name:"dot"}),y.paper.closeGroup()}const r={segno:"scripts.segno",coda:"scripts.coda",fermata:"scripts.ufermata"};function o(y,S,q,M,P){q+=3;let B;for(let A=0;A<M.length;A++)switch(M[A]){case"segno":case"coda":case"fermata":{q+=12,B=a(y,q,-3,r[M[A]],{scalex:1,scaley:1,name:r[M[A]]});const j=B.getBBox();q+=j.width}break;default:v(y,M[A],q,S+12,12,P,null,null,!1)}}function l(y,S,q,M,P,B,A,j,G,C,R){const H=q+M*B;!A[1]&&!A[2]&&!A[3]?p(y,H,S+R,M-G,C,A[0],j,R):!A[1]&&!A[3]?u(y,H,S,M-G,C,A[0],A[2],j,R):f(y,H,S,M-G,C,A,j,R)}function c(y,S,q,M,P,B,A){const j=v(y,P,S,q,M,B,null,"abcjs-chord",!0);let G=j.getBBox(),C=M;for(;G.width>A&&C>=14;)C-=2,j.setAttribute("font-size",C),G=j.getBBox()}const d=34,g=26,h=20,m=-3;function p(y,S,q,M,P,B,A,j){B==="%"?n(y,S+M/2,q+P/2,j+P/2):c(y,S+M/2,q+P/2+m,d,B,A,M)}function u(y,S,q,M,P,B,A,j,G){y.paper.lineToBack({x1:S,x2:S+M,y1:q+P+G,y2:q+2}),c(y,S+M/4,q+P/4+5+G+m,g,B,j,M/2),c(y,S+3*M/4,q+3*P/4+G+m,g,A,j,M/2)}function f(y,S,q,M,P,B,A,j){y.paper.lineToBack({x1:S+3,x2:S+M-3,y1:q+P/2+j,y2:q+P/2+j}),y.paper.lineToBack({x1:S+M/2,x2:S+M/2,y1:q+3+j,y2:q+P-3+j}),B[0]&&c(y,S+M/4,q+P/4+2+j+m,h,_(B[0]),A,M/2),B[1]&&c(y,S+3*M/4,q+P/4+2+j+m,h,_(B[1]),A,M/2),B[2]&&c(y,S+M/4,q+3*P/4+j+m,h,_(B[2]),A,M/2),B[3]&&c(y,S+3*M/4,q+3*P/4+j+m,h,_(B[3]),A,M/2)}function _(y){return y==="No Chord"?"N.C.":y}function v(y,S,q,M,P,B,A,j,G){const C={x:q,y:M,stroke:"none","font-size":P,"font-style":B.style,"font-family":B.face,"font-weight":B.weight,"text-decoration":B.decoration};return A&&(C["data-name"]=A),j&&(C.class=j),C["text-anchor"]=G?"middle":"start",y.paper.text(S,C,null,{"alignment-baseline":"middle"})}return Jh=i,Jh}var Xh,w3;function MU(){if(w3)return Xh;w3=1;var a=AU(),t=CU(),i=h3(),n=Us(),s=GU(),r=FU();function o(d,g,h,m,p,u,f,_,v,y,S){var q=new s(d.paper,_,v),M={};g.shouldAddClasses&&(M.klass="abcjs-meta-top"),d.paper.openGroup(M),d.moveY(d.padding.top),i(d,h.topText,q),d.paper.closeGroup(),d.moveY(d.spacing.music);let P=!1;S&&h.chordGrid&&(r(d,h.chordGrid,d.padding.left,m,h.formatting),S==="noMusic"&&(P=!0));var B=[],A=0;if(!P)for(var j=0;j<h.lines.length;j++){g.incrLine();var G=h.lines[j];if(G.staff){if(A++,h.formatting.maxStaves&&A>h.formatting.maxStaves)break;g.shouldAddClasses&&(M.klass="abcjs-staff-wrapper abcjs-l"+g.lineNumber),d.paper.openGroup(M),G.vskip&&d.moveY(G.vskip),B.length>=1?c(d,d.spacing.staffSeparation,B[B.length-1],G.staffGroup):j>0&&d.moveY(d.spacing.staffSeparation);var C=l(d,G.staffGroup,q,j);C.line=y+j,B.push(C),d.paper.closeGroup()}else G.nonMusic&&(g.shouldAddClasses&&(M.klass="abcjs-non-music"),d.paper.openGroup(M),i(d,G.nonMusic,q),d.paper.closeGroup())}return g.reset(),P||h.bottomText&&h.bottomText.rows&&h.bottomText.rows.length>0&&(g.shouldAddClasses&&(M.klass="abcjs-meta-bottom"),d.paper.openGroup(M),d.moveY(24),i(d,h.bottomText,q),d.paper.closeGroup()),t(d,p,f,u),{staffgroups:B,selectables:q.getElements()}}function l(d,g,h,m){a(d,g,h,m);var p=g.height*n.STEP;return d.moveY(p),g}function c(d,g,h,m){var p=h.staffs[h.staffs.length-1],u=-(p.bottom-2),f=m.staffs[0].top-10,_=f+u,v=_*n.STEP;v<g&&d.moveY(g-v)}return Xh=o,Xh}var Zh,k3;function zU(){if(k3)return Zh;k3=1;var a=$k();function t(i){for(var n=i;n&&n.attributes&&n.tagName.toLowerCase()!=="svg"&&!n.attributes.selectable;)n=n.parentNode;if(n&&n.attributes&&n.attributes.selectable){var s=n.attributes["data-index"].nodeValue;if(s&&(s=parseInt(s,10),s>=0&&s<this.selectables.length)){var r=this.selectables[s],o=a(r,i);return o.index=s,o.element=r,o}}return null}return Zh=t,Zh}var e_,x3;function t_(){if(x3)return e_;x3=1;var a=Us(),t=HE(),i=QE(),n=KE(),s=YE(),r=JE(),o=XE(),l=ZE(),c=eU(),d=cU(),g=dU(),h=uU(),m=fU(),p=MU(),u=Vw(),f=zU(),_=function(S,q){q=q||{},this.findSelectableElement=f,this.oneSvgPerLine=q.oneSvgPerLine,this.selectionColor=q.selectionColor,this.dragColor=q.dragColor?q.dragColor:q.selectionColor,this.dragging=!!q.dragging,this.selectTypes=q.selectTypes,this.responsive=q.responsive,this.space=3*a.SPACE,this.initialClef=q.initialClef,this.timeBasedLayout=q.timeBasedLayout,this.expandToWidest=!!q.expandToWidest,this.scale=q.scale?parseFloat(q.scale):0,this.classes=new g({shouldAddClasses:q.add_classes}),this.scale>.1||(this.scale=void 0),q.staffwidth?(this.staffwidthScreen=q.staffwidth,this.staffwidthPrint=q.staffwidth):(this.staffwidthScreen=740,this.staffwidthPrint=680),this.listeners=[],q.clickListener&&this.addSelectListener(q.clickListener),this.renderer=new i(S),this.renderer.setPaddingOverride(q),q.showDebug&&(this.renderer.showDebug=q.showDebug),q.jazzchords&&(this.jazzchords=q.jazzchords),q.accentAbove&&(this.accentAbove=q.accentAbove),q.germanAlphabet&&(this.germanAlphabet=q.germanAlphabet),q.lineThickness&&(this.lineThickness=q.lineThickness),q.chordGrid&&(this.chordGrid=q.chordGrid),this.renderer.controller=this,this.renderer.foregroundColor=q.foregroundColor?q.foregroundColor:"currentColor",q.ariaLabel!==void 0&&(this.renderer.ariaLabel=q.ariaLabel),this.renderer.minPadding=q.minPadding?q.minPadding:0,this.reset()};_.prototype.reset=function(){this.selected=[],this.staffgroups=[],this.engraver&&this.engraver.reset(),this.engraver=null,this.renderer.reset(),this.dragTarget=null,this.dragIndex=-1,this.dragMouseStart={x:-1,y:-1},this.dragYStep=0,this.lineThickness&&this.renderer.setLineThickness(this.lineThickness)},_.prototype.engraveABC=function(S,q,M){S[0]===void 0&&(S=[S]),this.reset();for(var P=0;P<S.length;P++)q===void 0&&(q=P),this.getFontAndAttr=new h(S[P].formatting,this.classes),this.getTextSize=new m(this.getFontAndAttr,this.renderer.paper),this.engraveTune(S[P],q,M)},_.prototype.adjustNonScaledItems=function(S){this.width/=S,this.renderer.adjustNonScaledItems(S)},_.prototype.getMeasureWidths=function(S){this.reset(),this.getFontAndAttr=new h(S.formatting,this.classes),this.getTextSize=new m(this.getFontAndAttr,this.renderer.paper);var q=this.jazzchords;this.setupTune(S,0),this.constructTuneElements(S),d(this.renderer,S,0,this.space,this.timeBasedLayout);for(var M=[],P,B=!0,A=0;A<S.lines.length;A++){var j=S.lines[A];if(j.staff){if(B&&(P={left:0,measureWidths:[],total:0},M.push(P),B=!1),j.staffGroup.voices.length>0)for(var G=j.staffGroup.voices[0],C=!1,R=0,H=0;H<G.children.length;H++){var E=G.children[H];!C&&!E.isClef&&!E.isKeySig&&(C=!0,P.left=E.x,R=E.x),E.type==="bar"&&(P.measureWidths.push(E.x-R),P.total+=E.x-R,R=E.x)}}else B=!0}return this.jazzchords=q,M},_.prototype.setupTune=function(S,q){this.classes.reset(),S.formatting.jazzchords!==void 0&&(this.jazzchords=S.formatting.jazzchords),S.formatting.accentAbove!==void 0&&(this.accentAbove=S.formatting.accentAbove),this.renderer.newTune(S),this.engraver=new t(this.getTextSize,q,{bagpipes:S.formatting.bagpipes,flatbeams:S.formatting.flatbeams,graceSlurs:S.formatting.graceSlurs!==!1,percmap:S.formatting.percmap,initialClef:this.initialClef,jazzchords:this.jazzchords,timeBasedLayout:this.timeBasedLayout,accentAbove:this.accentAbove,germanAlphabet:this.germanAlphabet}),this.engraver.setStemHeight(this.renderer.spacing.stemHeight),this.engraver.measureLength=S.getMeterFraction().num/S.getMeterFraction().den,S.formatting.staffwidth?this.width=S.formatting.staffwidth*1.33:this.width=this.renderer.isPrint?this.staffwidthPrint:this.staffwidthScreen;var M=S.formatting.scale?S.formatting.scale:this.scale;return this.responsive==="resize"&&(M=void 0),M===void 0&&(M=this.renderer.isPrint?.75:1),this.adjustNonScaledItems(M),M},_.prototype.constructTuneElements=function(S){S.topText=new o(S.metaText,S.metaTextInfo,S.formatting,S.lines,this.width,this.renderer.isPrint,this.renderer.padding.left,this.renderer.spacing,this.classes.shouldAddClasses,this.getTextSize);var q,M,P=!1,B=!1;for(q=0;q<S.lines.length;q++)if(M=S.lines[q],M.staff)B=!0,M.staffGroup=this.engraver.createABCLine(M.staff,P?null:S.metaText.tempo,q),P=!0;else if(M.subtitle){if(B){var A=this.width/2+this.renderer.padding.left;M.nonMusic=new r(this.renderer.spacing.subtitle,S.formatting,M.subtitle,A,this.renderer.padding.left,this.getTextSize)}}else M.text!==void 0?(B=!0,M.nonMusic=new n(M.text,M.vskip,this.getFontAndAttr,this.renderer.padding.left,this.width,this.getTextSize)):M.separator!==void 0&&M.separator.lineLength&&(B=!0,M.nonMusic=new s(M.separator.spaceAbove,M.separator.lineLength,M.separator.spaceBelow));S.bottomText=new l(S.metaText,this.width,this.renderer.isPrint,this.renderer.padding.left,this.renderer.spacing,this.classes.shouldAddClasses,this.getTextSize)},_.prototype.engraveTune=function(S,q,M){var P=this.jazzchords,B=this.setupTune(S,q);this.constructTuneElements(S);var A=d(this.renderer,S,this.width,this.space,this.expandToWidest,this.timeBasedLayout);if(this.expandToWidest&&A>this.width+1&&(S.topText=new o(S.metaText,S.metaTextInfo,S.formatting,S.lines,A,this.renderer.isPrint,this.renderer.padding.left,this.renderer.spacing,this.classes.shouldAddClasses,this.getTextSize),S.lines&&S.lines.length>0))for(var j=S.lines.length,G=0;G<j;++G){var C=S.lines[G];if(C.nonMusic&&C.nonMusic.rows&&C.nonMusic.rows.length>0)for(var R=C.nonMusic.rows.length,H=0;H<R;++H){var E=C.nonMusic.rows[H];E.left&&(C.subtitle?E.left=A/2+this.renderer.padding.left:C.text&&C.text.length>0&&C.text[0].center&&(E.left=A/2+this.renderer.padding.left))}}S.tablatures&&u.layoutTablatures(this.renderer,S);var U=p(this.renderer,this.classes,S,this.width,A,this.responsive,B,this.selectTypes,q,M,this.chordGrid);if(this.staffgroups=U.staffgroups,this.selectables=U.selectables,this.oneSvgPerLine){var N=this.renderer.paper.svg.parentNode;this.svgs=v(this.renderer,N,S.metaText.title,this.responsive,B)}else this.svgs=[this.renderer.paper.svg];c(this,this.svgs),this.jazzchords=P};function v(S,q,M,P,B){M||(M="Untitled");var A=q.querySelector("svg");P==="resize"&&(q.style.paddingBottom="");for(var j=A.querySelector("style"),G=P==="resize"?A.viewBox.baseVal.width:A.getAttribute("width"),C=q.querySelectorAll("svg > g"),R=0,H=[],E=0;E<C.length;E++){var U=C[E],N=U.getBBox(),L=N.y-R,I=N.height+L,T=document.createElement("div"),F="overflow: hidden;";P!=="resize"&&(F+="height:"+I*B+"px;"),T.setAttribute("style",F);var z=y(A),D='Sheet Music for "'+M+'" section '+(E+1);z.setAttribute("aria-label",D),P!=="resize"&&z.setAttribute("height",I),P==="resize"&&(z.style.position="");var Q=S.firefox?I+1:I;z.setAttribute("viewBox","0 "+R+" "+G+" "+Q),z.appendChild(j.cloneNode(!0));var X=document.createElement("title");X.innerText=D,z.appendChild(X),z.appendChild(U),T.appendChild(z),H.push(z),q.appendChild(T),R=N.y+N.height}return q.removeChild(A),H}function y(S){for(var q="http://www.w3.org/2000/svg",M=document.createElementNS(q,"svg"),P=0;P<S.attributes.length;P++){var B=S.attributes[P];B.name!=="height"&&B.name!="aria-label"&&M.setAttribute(B.name,B.value)}return M}return _.prototype.getDim=function(S){if(!S.dim){var q=S.svgEl.getBBox();S.dim={left:Math.round(q.x),top:Math.round(q.y),right:Math.round(q.x+q.width),bottom:Math.round(q.y+q.height)}}return S.dim},_.prototype.addSelectListener=function(S){this.listeners[this.listeners.length]=S},e_=_,e_}var a_,S3;function T3(){if(S3)return a_;S3=1;var a=Vf();ww();var t=t_(),i=og(),n=cw(),s={};function r(){var d=window.innerWidth;for(var g in s)if(s.hasOwnProperty(g)){var h=s[g],m=h.offsetLeft;d-=m*2,h.style.width=d+"px"}}try{window.addEventListener("resize",r),window.addEventListener("orientationChange",r)}catch{}function o(d,g,h,m,p){h.viewportHorizontal?(d.innerHTML='<div class="abcjs-inner"></div>',h.scrollHorizontal?(d.style.overflowX="auto",d.style.overflowY="hidden"):d.style.overflow="hidden",s[d.id]=d,d=d.children[0]):h.viewportVertical?(d.innerHTML='<div class="abcjs-inner scroll-amount"></div>',d.style.overflowX="hidden",d.style.overflowY="auto",d=d.children[0]):d.innerHTML="";var u=new t(d,h);if(u.engraveABC(g,m,p),g.engraver=u,h.viewportVertical||h.viewportHorizontal){var f=d.parentNode;f.style.width=d.style.width}}var l=function(d,g,h,m,p){var u={},f;if(h){for(f in h)h.hasOwnProperty(f)&&(u[f]=h[f]);u.warnings_id&&u.tablature&&(u.tablature.warning_id=u.warnings_id)}if(m)for(f in m)m.hasOwnProperty(f)&&(f==="listener"?m[f].highlight&&(u.clickListener=m[f].highlight):u[f]=m[f]);if(p)for(f in p)p.hasOwnProperty(f)&&(u[f]=p[f]);function _(v,y,S,q){var M=!1;return v==="*"&&(M=!0,v=document.createElement("div"),v.setAttribute("style","visibility: hidden;"),document.body.appendChild(v)),!M&&u.wrap&&u.staffwidth?(y=c(v,y,S,q,u),y):(u.afterParsing&&u.afterParsing(y,S,q),o(v,y,u,S,0),M&&v.parentNode.removeChild(v),null)}return a.renderEngine(_,d,g,u)};function c(d,g,h,m,p){var u=new t(d,p),f=u.getMeasureWidths(g),_=n.calcLineWraps(g,f,p);if(_.reParse){var v=new i;v.parse(m,_.revisedParams),g=v.getTune();var y=v.getWarnings();y&&(g.warnings=y)}return p.afterParsing&&p.afterParsing(g,h,m),o(d,g,_.revisedParams,h,0),g.explanation=_.explanation,g}return a_=l,a_}var i_,$3;function EU(){if($3)return i_;$3=1;var a=Vf(),t=t_(),i=function(n,s){function r(o,l,c,d){o=document.createElement("div"),o.setAttribute("style","visibility: hidden;"),document.body.appendChild(o);var g=new t(o,s),h=g.getMeasureWidths(l);return o.parentNode.removeChild(o),{sections:h}}return a.renderEngine(r,"*",n,s)};return i_=i,i_}var n_,q3;function s_(){if(q3)return n_;q3=1;var a={};return n_=a,n_}var r_,A3;function UU(){if(A3)return r_;A3=1;var a=s_(),t=function(i,n,s,r){a[n]||(a[n]={});var o=a[n];return o[s]||(o[s]=new Promise(function(l,c){var d=new XMLHttpRequest;let g=i+n+"-mp3/"+s+".mp3";d.open("GET",g,!0),d.responseType="arraybuffer",d.onload=function(){if(d.status!==200){c(Error("Can't load sound at "+g+" status="+d.status));return}var h=function(p){l({instrument:n,name:s,status:"loaded",audioBuffer:p})},m=r.decodeAudioData(d.response,h,function(){c(Error("Can't decode sound at "+g))});m&&typeof m.catch=="function"&&m.catch(c)},d.onerror=function(){c(Error("Can't load sound at "+g))},d.send()}).catch(l=>{throw console.error("Didn't load note",n,s,":",l.message),l})),o[s]};return r_=t,r_}var o_,C3;function l_(){if(C3)return o_;C3=1;var a=["acoustic_grand_piano","bright_acoustic_piano","electric_grand_piano","honkytonk_piano","electric_piano_1","electric_piano_2","harpsichord","clavinet","celesta","glockenspiel","music_box","vibraphone","marimba","xylophone","tubular_bells","dulcimer","drawbar_organ","percussive_organ","rock_organ","church_organ","reed_organ","accordion","harmonica","tango_accordion","acoustic_guitar_nylon","acoustic_guitar_steel","electric_guitar_jazz","electric_guitar_clean","electric_guitar_muted","overdriven_guitar","distortion_guitar","guitar_harmonics","acoustic_bass","electric_bass_finger","electric_bass_pick","fretless_bass","slap_bass_1","slap_bass_2","synth_bass_1","synth_bass_2","violin","viola","cello","contrabass","tremolo_strings","pizzicato_strings","orchestral_harp","timpani","string_ensemble_1","string_ensemble_2","synth_strings_1","synth_strings_2","choir_aahs","voice_oohs","synth_choir","orchestra_hit","trumpet","trombone","tuba","muted_trumpet","french_horn","brass_section","synth_brass_1","synth_brass_2","soprano_sax","alto_sax","tenor_sax","baritone_sax","oboe","english_horn","bassoon","clarinet","piccolo","flute","recorder","pan_flute","blown_bottle","shakuhachi","whistle","ocarina","lead_1_square","lead_2_sawtooth","lead_3_calliope","lead_4_chiff","lead_5_charang","lead_6_voice","lead_7_fifths","lead_8_bass_lead","pad_1_new_age","pad_2_warm","pad_3_polysynth","pad_4_choir","pad_5_bowed","pad_6_metallic","pad_7_halo","pad_8_sweep","fx_1_rain","fx_2_soundtrack","fx_3_crystal","fx_4_atmosphere","fx_5_brightness","fx_6_goblins","fx_7_echoes","fx_8_scifi","sitar","banjo","shamisen","koto","kalimba","bagpipe","fiddle","shanai","tinkle_bell","agogo","steel_drums","woodblock","taiko_drum","melodic_tom","synth_drum","reverse_cymbal","guitar_fret_noise","breath_noise","seashore","bird_tweet","telephone_ring","helicopter","applause","gunshot","percussion"];return o_=a,o_}var c_,G3;function RU(){if(G3)return c_;G3=1;var a=l_(),t=function(i){for(var n=[],s=0;s<i.tracks.length;s++)n.push([]);var r=a[0];return i.tracks.forEach(function(o,l){o.forEach(function(c){switch(c.cmd){case"note":var d=c.instrument!==void 0?a[c.instrument]:r;if(c.duration>0){var g=c.gap?c.gap:0,h=c.duration;g=Math.min(g,h*2/3);var m={pitch:c.pitch,instrument:d,start:Math.round(c.start*1e6)/1e6,end:Math.round((c.start+h-g)*1e6)/1e6,volume:c.volume};c.startChar&&(m.startChar=c.startChar),c.endChar&&(m.endChar=c.endChar),c.style&&(m.style=c.style),c.cents&&(m.cents=c.cents),n[l].push(m)}break;case"program":r=a[c.instrument];break;case"text":break;default:console.log("Unhandled midi event",c)}})}),n};return c_=t,c_}var d_,F3;function Hf(){if(F3)return d_;F3=1;function a(t){if(t)window.abcjsAudioContext=t;else if(!window.abcjsAudioContext){var i=window.AudioContext||window.webkitAudioContext;if(i)window.abcjsAudioContext=new i;else return!1}return window.abcjsAudioContext.state!=="suspended"}return d_=a,d_}var u_,M3;function Qc(){if(M3)return u_;M3=1;var a=Hf();function t(){return window.abcjsAudioContext||a(),window.abcjsAudioContext}return u_=t,u_}var f_,z3;function Wf(){if(z3)return f_;z3=1;var a=Qc();function t(){if(!window.Promise||!window.AudioContext&&!window.webkitAudioContext&&!navigator.mozAudioContext&&!navigator.msAudioContext)return!1;var i=a();if(i)return i.resume!==void 0}return f_=t,f_}var p_,E3;function m_(){if(E3)return p_;E3=1;var a={21:"A0",22:"Bb0",23:"B0",24:"C1",25:"Db1",26:"D1",27:"Eb1",28:"E1",29:"F1",30:"Gb1",31:"G1",32:"Ab1",33:"A1",34:"Bb1",35:"B1",36:"C2",37:"Db2",38:"D2",39:"Eb2",40:"E2",41:"F2",42:"Gb2",43:"G2",44:"Ab2",45:"A2",46:"Bb2",47:"B2",48:"C3",49:"Db3",50:"D3",51:"Eb3",52:"E3",53:"F3",54:"Gb3",55:"G3",56:"Ab3",57:"A3",58:"Bb3",59:"B3",60:"C4",61:"Db4",62:"D4",63:"Eb4",64:"E4",65:"F4",66:"Gb4",67:"G4",68:"Ab4",69:"A4",70:"Bb4",71:"B4",72:"C5",73:"Db5",74:"D5",75:"Eb5",76:"E5",77:"F5",78:"Gb5",79:"G5",80:"Ab5",81:"A5",82:"Bb5",83:"B5",84:"C6",85:"Db6",86:"D6",87:"Eb6",88:"E6",89:"F6",90:"Gb6",91:"G6",92:"Ab6",93:"A6",94:"Bb6",95:"B6",96:"C7",97:"Db7",98:"D7",99:"Eb7",100:"E7",101:"F7",102:"Gb7",103:"G7",104:"Ab7",105:"A7",106:"Bb7",107:"B7",108:"C8",109:"Db8",110:"D8",111:"Eb8",112:"E8",113:"F8",114:"Gb8",115:"G8",116:"Ab8",117:"A8",118:"Bb8",119:"B8",120:"C9",121:"Db9"};return p_=a,p_}var g_,U3;function BU(){if(U3)return g_;U3=1;var a=function(i){return window.URL.createObjectURL(t(i.audioBuffers))};function t(i){var n=i[0],s=n.numberOfChannels,r=n.length*s*2+44,o=new ArrayBuffer(r),l=new DataView(o),c=[],d,g,h=0,m=0;for(u(1179011410),u(r-8),u(1163280727),u(544501094),u(16),p(1),p(s),u(n.sampleRate),u(n.sampleRate*2*s),p(s*2),p(16),u(1635017060),u(r-m-4),d=0;d<s;d++)c.push(n.getChannelData(d));for(;m<r;){for(d=0;d<c.length;d++)g=Math.max(-1,Math.min(1,c[d][h])),g=(.5+g<0?g*32768:g*32767)|0,l.setInt16(m,g,!0),m+=2;h++}return new Blob([o],{type:"audio/wav"});function p(f){l.setUint16(m,f,!0),m+=2}function u(f){l.setUint32(m,f,!0),m+=4}}return g_=a,g_}var h_,R3;function B3(){if(R3)return h_;R3=1;function a(t){return Math.pow(2,t/1200)}return h_=a,h_}var __,P3;function PU(){if(P3)return __;P3=1;var a=s_(),t=m_(),i=B3();function n(r,o,l,c,d,g,h,m,p){var u=window.OfflineAudioContext||window.webkitOfflineAudioContext,f=l.len*l.tempoMultiplier;g&&(f+=g/1e3),f-=m,f<0&&(f=.005);var _=new u(2,Math.floor((f+h)*o),o),v=t[l.pitch];if(!a[l.instrument])return p&&p("placeNote skipped (instrument empty): "+l.instrument+":"+v),Promise.resolve();var y=a[l.instrument][v];return y?y.then(function(S){var q=_.createBufferSource();q.buffer=S.audioBuffer;var M=l.volume/96*d;q.gainNode=_.createGain(),l.pan&&_.createStereoPanner&&(q.panNode=_.createStereoPanner(),q.panNode.pan.setValueAtTime(l.pan,0)),q.gainNode.gain.value=M,q.gainNode.gain.linearRampToValueAtTime(q.gainNode.gain.value,f),q.gainNode.gain.linearRampToValueAtTime(0,f+h),l.cents&&(q.playbackRate.value=i(l.cents)),q.panNode?(q.panNode.connect(_.destination),q.gainNode.connect(q.panNode)):q.gainNode.connect(_.destination),q.connect(q.gainNode),q.start(0),q.noteOff?q.noteOff(f+h):q.stop(f+h);var P;return _.oncomplete=function(B){if(B.renderedBuffer&&B.renderedBuffer.getChannelData)for(var A=0;A<c.length;A++){var j=c[A]*l.tempoMultiplier;g&&(j-=g/1e3),j<0&&(j=0),j=Math.floor(j*o),s(r,B.renderedBuffer,j)}p&&p("placeNote: "+l.instrument+":"+v),P()},_.startRendering(),new Promise(function(B){P=B})}).catch(function(S){return p&&p("placeNote catch: "+S.message),Promise.reject(S)}):(p&&p("placeNote skipped: "+l.instrument+":"+v),Promise.resolve())}var s=function(r,o,l){for(var c=0;c<2;c++)for(var d=o.getChannelData(c),g=r.getChannelData(c),h=0;h<d.length;h++)g[h+l]+=d[h]};return __=n,__}var v_,j3;function b_(){if(j3)return v_;j3=1;var a=UU(),t=RU(),i=Hf(),n=Qc(),s=Wf(),r=m_(),o=l_(),l=BU(),c=PU(),d=s_(),g="MIDI is not supported in this browser.",h="https://paulrosen.github.io/midi-js-soundfonts/abcjs/",m="https://paulrosen.github.io/midi-js-soundfonts/FluidR3_GM/",p="https://paulrosen.github.io/midi-js-soundfonts/MusyngKite/";function u(){var f=this;f.audioBufferPossible=void 0,f.directSource=[],f.startTimeSec=void 0,f.pausedTimeSec=void 0,f.audioBuffers=[],f.duration=void 0,f.isRunning=!1,f.options={},f.pickupLength=0,f.init=function(y){y||(y={}),y.options&&(f.options=y.options),i(y.audioContext);var S=n().currentTime;if(f.debugCallback=y.debugCallback,f.debugCallback&&f.debugCallback("init called"),f.audioBufferPossible=f._deviceCapable(),!f.audioBufferPossible)return Promise.reject({status:"NotSupported",message:g});var q=y.options?y.options:{};f.soundFontUrl=q.soundFontUrl?q.soundFontUrl:m,f.soundFontUrl[f.soundFontUrl.length-1]!=="/"&&(f.soundFontUrl+="/"),q.soundFontVolumeMultiplier||q.soundFontVolumeMultiplier===0?f.soundFontVolumeMultiplier=q.soundFontVolumeMultiplier:f.soundFontUrl===m||f.soundFontUrl===p?f.soundFontVolumeMultiplier=3:f.soundFontUrl===h?f.soundFontVolumeMultiplier=.4:f.soundFontVolumeMultiplier=1,q.programOffsets?f.programOffsets=q.programOffsets:f.soundFontUrl===h?f.programOffsets={bright_acoustic_piano:20,honkytonk_piano:20,electric_piano_1:30,electric_piano_2:30,harpsichord:40,clavinet:20,celesta:20,glockenspiel:40,vibraphone:30,marimba:35,xylophone:30,tubular_bells:35,dulcimer:30,drawbar_organ:20,percussive_organ:25,rock_organ:20,church_organ:40,reed_organ:40,accordion:40,harmonica:40,acoustic_guitar_nylon:20,acoustic_guitar_steel:30,electric_guitar_jazz:25,electric_guitar_clean:15,electric_guitar_muted:35,overdriven_guitar:25,distortion_guitar:20,guitar_harmonics:30,electric_bass_finger:15,electric_bass_pick:30,fretless_bass:40,violin:105,viola:50,cello:40,contrabass:60,trumpet:10,trombone:90,alto_sax:20,tenor_sax:20,clarinet:20,flute:50,banjo:50,woodblock:20}:f.programOffsets={};var M=q.fadeLength!==void 0?parseInt(q.fadeLength,10):NaN;if(f.fadeLength=isNaN(M)?200:M,M=q.noteEnd!==void 0?parseInt(q.noteEnd,10):NaN,f.noteEnd=isNaN(M)?0:M,f.pan=q.pan,f.meterSize=1,y.visualObj){f.flattened=y.visualObj.setUpAudio(q);var P=y.visualObj.getMeterFraction();P.den&&(f.meterSize=P.num/P.den),f.pickupLength=y.visualObj.getPickupLength()}else if(y.sequence)f.flattened=y.sequence;else return Promise.reject(new Error("Must pass in either a visualObj or a sequence"));f.millisecondsPerMeasure=y.millisecondsPerMeasure?y.millisecondsPerMeasure:y.visualObj?y.visualObj.millisecondsPerMeasure(f.flattened.tempo):1e3,f.beatsPerMeasure=y.visualObj?y.visualObj.getBeatsPerMeasure():4,f.sequenceCallback=q.sequenceCallback,f.callbackContext=q.callbackContext,f.onEnded=q.onEnded,f.meterFraction=y.visualObj?y.visualObj.getMeterFraction():{den:1};var B={},A=[],j=[],G=o[0];f.flattened.tracks.forEach(function(U){U.forEach(function(N){if(N.cmd==="program"&&o[N.instrument]&&(G=o[N.instrument]),N.pitch!==void 0){var L=N.pitch,I=r[L],T=N.instrument!==void 0?o[N.instrument]:G;if(I)if(B[T]||(B[T]={}),!d[T]||!d[T][I])B[T][I]=!0;else{var F=T+":"+I;A.indexOf(F)<0&&A.push(F)}else{var z=T+":"+I;console.log("Can't find note: ",L,z),j.indexOf(z)<0&&j.push(z)}}})}),f.debugCallback&&f.debugCallback("note gathering time = "+Math.floor((n().currentTime-S)*1e3)+"ms"),S=n().currentTime;var C=[];Object.keys(B).forEach(function(U){Object.keys(B[U]).forEach(function(N){C.push({instrument:U,note:N})})}),f.debugCallback&&f.debugCallback("notes "+JSON.stringify(C));for(var R=[],H=256,E=0;E<C.length;E+=H)R.push(C.slice(E,E+H));return new Promise(function(U,N){var L={cached:A,error:j,loaded:[]},I=0,T=function(){f.debugCallback&&f.debugCallback("loadBatch idx="+I+" len="+R.length),I<R.length?f._loadBatch(R[I],f.soundFontUrl,S).then(function(F){f.debugCallback&&f.debugCallback("loadBatch then"),S=n().currentTime,F&&(F.error&&(L.error=L.error.concat(F.error)),F.loaded&&(L.loaded=L.loaded.concat(F.loaded))),I++,T()},N):(f.debugCallback&&f.debugCallback("resolve init"),U(L))};T()})},f._loadBatch=(function(y,S,q,M){var P=[];return y.forEach(function(B){f.debugCallback&&f.debugCallback("getNote "+B.instrument+":"+B.note),P.push(a(S,B.instrument,B.note,n()))}),Promise.all(P).then(function(B){f.debugCallback&&f.debugCallback("mp3 load time = "+Math.floor((n().currentTime-q)*1e3)+"ms");for(var A=[],j=[],G=[],C=[],R=0;R<B.length;R++){var H=B[R],E=H.instrument+":"+H.name;H.status==="loaded"?A.push(E):H.status==="pending"?G.push(E):H.status==="cached"?j.push(E):C.push(E+" "+H.message)}if(G.length>0){if(f.debugCallback&&f.debugCallback("pending "+JSON.stringify(G)),M?M=M*2:M=50,M<9e4)return new Promise(function(L,I){setTimeout(function(){var T=[];for(R=0;R<G.length;R++)E=G[R].split(":"),T.push({instrument:E[0],note:E[1]});f.debugCallback&&f.debugCallback("retry "+JSON.stringify(T)),f._loadBatch(T,S,q,M).then(function(F){L(F)}).catch(function(F){I(F)})},M)});for(var U=[],N=0;N<y.length;N++)U.push(y[N].instrument+"/"+y[N].note);return f.debugCallback&&f.debugCallback("loadBatch timeout"),Promise.reject(new Error("timeout attempting to load: "+U.join(", ")))}else return f.debugCallback&&f.debugCallback("loadBatch resolve"),Promise.resolve({loaded:A,cached:j,error:C})}).catch(function(B){f.debugCallback&&f.debugCallback("loadBatch catch "+B.message)})}),f.prime=function(){var y=f.fadeLength/1e3;return f.isRunning=!1,f.audioBufferPossible?(f.debugCallback&&f.debugCallback("prime called"),new Promise(function(S,q){try{let I=function(T){var F=T&&T.audioBuffers&&T.audioBuffers.length>0?T.audioBuffers[0].duration:0;return{status:n().state,duration:F}};var M=n().currentTime,P=f.millisecondsPerMeasure/1e3/f.meterSize;if(f.duration=f.flattened.totalDuration*P,f.duration<=0)return f.audioBuffers=[],S({status:"empty",seconds:0});f.duration+=y;var B=Math.floor(n().sampleRate*f.duration);f.stop();var A=t(f.flattened);if(f.options.swing){var j=f.options.drumIntro?0:f.pickupLength;v(A,f.options.swing,f.meterFraction,j)}f.sequenceCallback&&f.sequenceCallback(A,f.callbackContext);var G=_(A.length,f.pan),C={};A.forEach(function(T,F){var z=G&&G.length>F?G[F]:0;T.forEach(function(D){var Q=D.instrument+":"+D.pitch+":"+D.volume+":"+Math.round((D.end-D.start)*1e3)/1e3+":"+z+":"+P+":"+(D.cents?D.cents:0);f.debugCallback&&f.debugCallback("noteMapTrack "+Q),C[Q]||(C[Q]=[]),C[Q].push(D.start)})});for(var R=[],H=n().createBuffer(2,B,n().sampleRate),E=0;E<Object.keys(C).length;E++){var U=Object.keys(C)[E],N=U.split(":"),L=N[6]!==void 0?parseFloat(N[6]):0;N={instrument:N[0],pitch:parseInt(N[1],10),volume:parseInt(N[2],10),len:parseFloat(N[3]),pan:parseFloat(N[4]),tempoMultiplier:parseFloat(N[5]),cents:L},R.push(c(H,n().sampleRate,N,C[U],f.soundFontVolumeMultiplier,f.programOffsets[N.instrument],y,f.noteEnd/1e3,f.debugCallback))}f.audioBuffers=[H],f.debugCallback&&(f.debugCallback("sampleRate = "+n().sampleRate),f.debugCallback("totalSamples = "+B),f.debugCallback("creationTime = "+Math.floor((n().currentTime-M)*1e3)+"ms")),Promise.all(R).then(function(){n().state==="suspended"?n().resume().then(function(){S(I(f))}):n().state==="interrupted"?n().suspend().then(function(){n().resume().then(function(){S(I(f))})}):S(I(f))}).catch(function(T){q(T)})}catch(I){q(I)}})):Promise.reject(new Error(g))};function _(y,S){if(S==null)return null;var q=[];if(S.length){for(var M=0;M<y;M++)if(M<S.length){var P=parseFloat(S[M]);P<-1?P=-1:P>1&&(P=1),q.push(P)}else q.push(0);return q}else{var B=parseFloat(S);if(B*(y-1)>2)return null;for(var A=y%2===0,j=A?0-B/2:0,G=j+B,C=0;C<y;C++)A=C%2===0,A?(q.push(j),j-=B):(q.push(G),G+=B);return q}}f.start=function(){if(!f.audioBufferPossible)throw new Error(g);f.debugCallback&&f.debugCallback("start called");var y=f.pausedTimeSec?f.pausedTimeSec:0;f._kickOffSound(y),f.startTimeSec=n().currentTime-y,f.pausedTimeSec=void 0,f.debugCallback&&f.debugCallback("MIDI STARTED",f.startTimeSec)},f.pause=function(){if(!f.audioBufferPossible)throw new Error(g);return f.debugCallback&&f.debugCallback("pause called"),f.pausedTimeSec=f.stop(),f.pausedTimeSec},f.resume=function(){f.start()},f.seek=function(y,S){var q;switch(S){case"seconds":q=y;break;case"beats":q=y*f.millisecondsPerMeasure/f.beatsPerMeasure/1e3;break;default:q=(f.duration-f.fadeLength/1e3)*y;break}if(!f.audioBufferPossible)throw new Error(g);f.debugCallback&&f.debugCallback("seek called sec="+q),f.isRunning?(f.stop(),f._kickOffSound(q)):f.pausedTimeSec=q,f.pausedTimeSec=q},f.stop=function(){f.isRunning=!1,f.pausedTimeSec=void 0,f.directSource.forEach(function(S){try{S.stop()}catch(q){console.log("direct source didn't stop:",q)}}),f.directSource=[];var y=n().currentTime-f.startTimeSec;return y},f.finished=function(){f.startTimeSec=void 0,f.pausedTimeSec=void 0,f.isRunning=!1},f.download=function(){return l(f)},f.getAudioBuffer=function(){return f.audioBuffers[0]},f.getIsRunning=function(){return f.isRunning},f._deviceCapable=function(){return s()?!0:(console.warn(g),f.debugCallback&&f.debugCallback(g),!1)},f._kickOffSound=function(y){f.isRunning=!0,f.directSource=[],f.audioBuffers.forEach(function(S,q){f.directSource[q]=n().createBufferSource(),f.directSource[q].buffer=S,f.directSource[q].connect(n().destination)}),f.directSource.forEach(function(S){S.start(0,y)}),f.onEnded&&(f.directSource[0].onended=function(){f.onEnded(f.callbackContext)})};function v(y,S,q,M){if(!(q.den!==4&&q.den!==8)&&(S=parseFloat(S),!(isNaN(S)||S<=50))){S>75&&(S=75),S=S/50-1;var P=0,B=.25;q.den===8&&(B=B/2);for(var A=B/2,j=A*S,G=0;G<y.length;G++)for(var C=y[G],R=0;R<C.length;R++){var H=C[R];if((H.start-M)%A===0&&(H.start-M)%B!==0&&(R===0||C[R-1].start<=C[R].start-A)&&(R===C.length-1||C[R+1].start>=C[R].start+A)){var E=H.start;H.start+=j,H.volume*=1+P,R>0&&C[R-1].end===E&&(C[R-1].end=H.start,C[R-1].volume*=1-P)}}}}}return v_=u,v_}var y_,N3;function O3(){if(N3)return y_;N3=1;var a=function(){var t=this;t.tracks=[],t.totalDuration=0,t.currentInstrument=[],t.starts=[],t.addTrack=function(){return t.tracks.push([]),t.currentInstrument.push(0),t.starts.push(0),t.tracks.length-1},t.setInstrument=function(i,n){t.tracks[i].push({channel:0,cmd:"program",instrument:n}),t.currentInstrument[i]=n},t.appendNote=function(i,n,s,r,o){var l={cmd:"note",duration:s,gap:0,instrument:t.currentInstrument[i],pitch:n,start:t.starts[i],volume:r};o&&(l.cents=o),t.tracks[i].push(l),t.starts[i]+=s,t.totalDuration=Math.max(t.totalDuration,t.starts[i])}};return y_=a,y_}var w_,D3;function jU(){if(D3)return w_;D3=1;var a=`
|
||
<svg version="1.0" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 700 700" preserveAspectRatio="xMidYMid meet">
|
||
<g transform="translate(0,700) scale(0.1,-0.1)" >
|
||
<path d="M3111 6981 c-20 -37 -90 -55 -364 -96 -120 -18 -190 -33 -244 -55
|
||
-42 -17 -124 -42 -182 -56 -78 -18 -119 -34 -157 -60 -28 -19 -86 -46 -128
|
||
-60 -43 -13 -107 -42 -144 -64 -37 -23 -84 -46 -106 -52 -21 -7 -56 -29 -79
|
||
-50 -22 -22 -61 -50 -86 -63 -26 -13 -67 -40 -91 -60 -24 -20 -65 -47 -90 -60
|
||
-25 -13 -53 -31 -61 -41 -8 -9 -32 -30 -54 -46 -75 -54 -486 -460 -512 -507
|
||
-15 -25 -48 -69 -75 -98 -26 -28 -48 -57 -48 -63 0 -6 -18 -29 -39 -53 -21
|
||
-23 -56 -71 -77 -107 -20 -36 -50 -80 -65 -97 -16 -18 -33 -52 -40 -75 -12
|
||
-47 -47 -115 -84 -166 -13 -18 -30 -56 -38 -83 -8 -27 -34 -80 -56 -118 -33
|
||
-53 -46 -91 -62 -167 -12 -63 -34 -127 -59 -179 -42 -84 -60 -166 -60 -270 0
|
||
-90 26 -122 125 -154 54 -17 96 -19 430 -20 305 -1 381 2 430 14 82 22 140 51
|
||
153 78 6 12 22 47 37 77 14 30 38 77 54 103 15 27 34 73 40 103 7 30 28 78 48
|
||
107 19 28 44 74 55 101 10 28 34 67 53 87 18 20 49 61 68 90 19 30 44 63 57
|
||
74 13 11 36 40 52 65 59 94 232 270 306 313 20 11 57 37 82 58 25 20 70 52
|
||
100 72 30 19 66 47 79 61 13 14 49 35 80 46 30 12 80 37 111 56 31 19 95 45
|
||
143 58 48 12 110 37 139 55 63 40 127 55 323 76 83 9 208 28 279 41 156 29
|
||
165 29 330 4 453 -71 514 -84 606 -130 31 -16 83 -36 116 -45 32 -9 84 -34
|
||
115 -56 31 -21 82 -48 113 -60 32 -11 72 -33 89 -48 18 -16 59 -45 92 -65 33
|
||
-21 74 -51 90 -66 17 -15 49 -40 73 -54 52 -32 65 -61 50 -113 -8 -31 -61 -90
|
||
-277 -308 -300 -303 -361 -382 -369 -481 -2 -29 0 -66 6 -81 13 -40 88 -138
|
||
115 -151 12 -6 54 -26 92 -44 l70 -33 945 -2 c520 -1 975 2 1012 7 64 8 191
|
||
50 231 76 11 7 33 34 50 60 22 34 42 51 65 58 l32 9 0 1101 0 1102 -32 9 c-21
|
||
7 -44 26 -64 55 -60 84 -77 97 -140 110 -44 9 -76 10 -127 2 -59 -9 -77 -17
|
||
-134 -62 -37 -28 -172 -155 -301 -281 -129 -127 -249 -237 -267 -245 -25 -10
|
||
-41 -11 -71 -2 -58 15 -112 45 -124 69 -6 11 -35 35 -64 54 -28 18 -58 41 -66
|
||
50 -8 9 -41 35 -75 58 -33 22 -77 56 -99 75 -21 18 -64 46 -95 61 -31 14 -73
|
||
39 -93 55 -20 15 -70 40 -110 55 -40 15 -97 44 -127 64 -29 21 -78 44 -107 53
|
||
-30 8 -77 31 -105 51 -42 28 -73 39 -173 60 -68 14 -154 39 -196 58 -95 43
|
||
-131 51 -343 76 -209 24 -242 32 -279 70 l-30 29 -328 0 c-312 0 -330 -1 -339
|
||
-19z"></path>
|
||
<path d="M254 2875 c-89 -16 -107 -26 -145 -78 -32 -44 -62 -66 -91 -67 -17 0
|
||
-18 -61 -18 -1140 l0 -1140 24 0 c16 0 41 -17 72 -50 40 -42 61 -55 117 -72
|
||
l69 -21 82 23 c44 12 96 30 114 39 18 9 148 132 290 272 141 141 267 261 279
|
||
268 51 26 86 14 176 -61 32 -26 62 -48 66 -48 5 0 36 -25 70 -55 34 -30 74
|
||
-61 89 -69 15 -8 37 -28 50 -45 12 -17 50 -45 84 -62 34 -17 78 -44 98 -60 19
|
||
-16 61 -37 93 -48 32 -11 81 -37 107 -56 27 -20 76 -45 109 -56 33 -12 75 -31
|
||
93 -44 62 -45 93 -58 191 -82 54 -12 130 -37 168 -54 68 -29 180 -58 226 -59
|
||
62 0 183 -64 183 -96 0 -12 88 -14 639 -14 l639 0 12 30 c18 44 76 66 233 89
|
||
89 14 160 30 200 47 34 15 106 42 159 60 54 18 112 44 130 57 47 35 85 52 146
|
||
67 29 7 76 28 105 48 29 20 77 48 107 63 30 15 66 39 80 54 14 15 50 40 81 56
|
||
31 15 78 46 104 69 26 22 61 46 79 54 17 7 43 26 56 42 14 16 41 41 60 56 64
|
||
48 380 362 408 405 15 23 40 51 55 63 15 12 36 38 46 58 11 21 37 57 58 82 22
|
||
25 49 62 62 83 13 20 38 56 57 78 19 23 50 74 69 113 19 39 46 86 59 104 14
|
||
18 34 62 46 98 12 36 32 77 45 92 31 38 60 97 80 167 9 33 26 76 37 95 29 50
|
||
47 103 68 206 10 52 32 117 51 155 29 56 33 74 34 140 0 94 -10 108 -101 138
|
||
-61 20 -83 21 -463 21 -226 0 -421 -4 -451 -10 -63 -12 -86 -30 -110 -85 -10
|
||
-22 -33 -63 -52 -92 -21 -31 -42 -80 -53 -123 -11 -44 -32 -93 -56 -128 -20
|
||
-32 -47 -83 -59 -115 -12 -32 -37 -77 -56 -100 -19 -23 -50 -65 -69 -94 -19
|
||
-29 -44 -57 -54 -63 -11 -5 -29 -27 -42 -47 -52 -85 -234 -277 -300 -315 -25
|
||
-15 -53 -38 -62 -51 -9 -14 -42 -39 -74 -57 -32 -18 -75 -48 -95 -66 -21 -18
|
||
-59 -44 -85 -58 -26 -13 -72 -40 -100 -59 -35 -24 -78 -41 -128 -52 -47 -11
|
||
-99 -31 -139 -56 -69 -42 -94 -49 -391 -110 -245 -51 -425 -66 -595 -50 -168
|
||
16 -230 27 -330 61 -47 16 -123 35 -170 44 -98 17 -123 25 -172 58 -20 14 -71
|
||
37 -114 53 -44 15 -95 40 -115 56 -20 16 -70 42 -110 59 -40 16 -88 45 -108
|
||
63 -20 19 -55 46 -78 61 -24 14 -49 35 -55 47 -7 11 -34 33 -60 49 -50 31 -65
|
||
61 -53 102 4 13 130 147 281 298 236 238 277 283 299 335 15 32 35 71 46 86
|
||
12 18 19 44 19 76 0 42 -8 63 -53 138 -92 151 11 139 -1207 141 -798 2 -1030
|
||
0 -1086 -11z"></path>
|
||
</g>
|
||
</svg>
|
||
`;return w_=a,w_}var k_,I3;function NU(){if(I3)return k_;I3=1;var a=`
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 25 25" class="abcjs-play-svg">
|
||
<g>
|
||
<polygon points="4 0 23 12.5 4 25"/>
|
||
</g>
|
||
</svg>
|
||
`;return k_=a,k_}var x_,L3;function OU(){if(L3)return x_;L3=1;var a=`
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 25 25" class="abcjs-pause-svg">
|
||
<g>
|
||
<rect width="8.23" height="25"/>
|
||
<rect width="8.23" height="25" x="17"/>
|
||
</g>
|
||
</svg>
|
||
`;return x_=a,x_}var S_,V3;function DU(){if(V3)return S_;V3=1;var a=`
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" class="abcjs-loading-svg">
|
||
<circle cx="50" cy="50" fill="none" stroke-width="20" r="35" stroke-dasharray="160 55"></circle>
|
||
</svg>
|
||
`;return S_=a,S_}var T_,H3;function IU(){if(H3)return T_;H3=1;var a=`
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 25 25">
|
||
<g>
|
||
<polygon points="5 12.5 24 0 24 25"/>
|
||
<rect width="3" height="25" x="0" y="0"/>
|
||
</g>
|
||
</svg>
|
||
`;return T_=a,T_}var $_,W3;function Q3(){if(W3)return $_;W3=1;var a=Wf(),t=Hf(),i=Qc(),n=jU(),s=NU(),r=OU(),o=DU(),l=IU();function c(p,u){var f=this;if(typeof p=="string"){var _=p;if(p=document.querySelector(_),!p)throw new Error('Cannot find element "'+_+'" in the DOM.')}else if(!(p instanceof HTMLElement))throw new Error("The first parameter must be a valid element or selector in the DOM.");if(f.parent=p,f.options={},u&&(f.options=Object.assign({},u)),f.options.ac&&t(f.options.ac),d(f.parent,f.options),m(f),f.disable=function(y){var S=f.parent.querySelector(".abcjs-inline-audio");y?S.classList.add("abcjs-disabled"):S.classList.remove("abcjs-disabled")},f.setWarp=function(y,S){var q=f.parent.querySelector(".abcjs-midi-tempo");q.value=Math.round(S),f.setTempo(y)},f.setTempo=function(y){var S=f.parent.querySelector(".abcjs-midi-current-tempo");S&&(S.innerHTML=Math.round(y))},f.resetAll=function(){for(var y=f.parent.querySelectorAll(".abcjs-pushed"),S=0;S<y.length;S++){var q=y[S];q.classList.remove("abcjs-pushed")}},f.pushPlay=function(y){var S=f.parent.querySelector(".abcjs-midi-start");S&&(y?S.classList.add("abcjs-pushed"):S.classList.remove("abcjs-pushed"))},f.pushLoop=function(y){var S=f.parent.querySelector(".abcjs-midi-loop");S&&(y?S.classList.add("abcjs-pushed"):S.classList.remove("abcjs-pushed"))},f.setProgress=function(y,S){var q=f.parent.querySelector(".abcjs-midi-progress-background"),M=f.parent.querySelector(".abcjs-midi-progress-indicator");if(!(!q||!M)){var P=q.clientWidth,B=P*y;M.style.left=B+"px";var A=f.parent.querySelector(".abcjs-midi-clock");if(A){var j=S*y/1e3,G=Math.floor(j/60),C=Math.floor(j%60),R=C<10?"0"+C:C;A.innerHTML=G+":"+R}}},f.options.afterResume){var v=!1;f.options.ac?v=f.options.ac.state!=="suspended":i()&&(v=i().state!=="suspended"),v&&f.options.afterResume()}}function d(p,u){var f=!!u.loopHandler,_=!!u.restartHandler,v=!!u.playHandler||!!u.playPromiseHandler,y=!!u.progressHandler,S=!!u.warpHandler,q=u.hasClock!==!1,M=`<div class="abcjs-inline-audio">
|
||
`;if(f){var P=u.repeatTitle?u.repeatTitle:"Click to toggle play once/repeat.",B=u.repeatAria?u.repeatAria:P;M+='<button type="button" class="abcjs-midi-loop abcjs-btn" title="'+P+'" aria-label="'+B+'">'+n+`</button>
|
||
`}if(_){var A=u.restartTitle?u.restartTitle:"Click to go to beginning.",j=u.restartAria?u.restartAria:A;M+='<button type="button" class="abcjs-midi-reset abcjs-btn" title="'+A+'" aria-label="'+j+'">'+l+`</button>
|
||
`}if(v){var G=u.playTitle?u.playTitle:"Click to play/pause.",C=u.playAria?u.playAria:G;M+='<button type="button" class="abcjs-midi-start abcjs-btn" title="'+G+'" aria-label="'+C+'">'+s+r+o+`</button>
|
||
`}if(y){var R=u.randomTitle?u.randomTitle:"Click to change the playback position.",H=u.randomAria?u.randomAria:R;M+='<button type="button" class="abcjs-midi-progress-background" title="'+R+'" aria-label="'+H+`"><span class="abcjs-midi-progress-indicator"></span></button>
|
||
`}if(q&&(M+=`<span class="abcjs-midi-clock"></span>
|
||
`),S){var E=u.warpTitle?u.warpTitle:"Change the playback speed.",U=u.warpAria?u.warpAria:E,N=u.bpm?u.bpm:"BPM";M+='<span class="abcjs-tempo-wrapper"><label><input class="abcjs-midi-tempo" type="number" min="1" max="300" value="100" title="'+E+'" aria-label="'+U+'">%</label><span> (<span class="abcjs-midi-current-tempo"></span> '+N+`)</span></span>
|
||
`}M+='<div class="abcjs-css-warning" style="font-size: 12px;color:red;border: 1px solid red;text-align: center;width: 300px;margin-top: 4px;font-weight: bold;border-radius: 4px;">CSS required: load abcjs-audio.css</div>',M+=`</div>
|
||
`,p.innerHTML=M}function g(p,u,f,_,v){var y=!0;if(i()?y=i().state==="suspended":t(),!a())throw{status:"NotSupported",message:"This browser does not support audio."};(y||v)&&f&&f.classList.add("abcjs-loading"),y?i().resume().then(function(){_?_().then(function(S){h(p,u,f,v)}):h(p,u,f,v)}):h(p,u,f,v)}function h(p,u,f,_){_?p(u).then(function(){f&&f.classList.remove("abcjs-loading")}):(p(u),f&&f.classList.remove("abcjs-loading"))}function m(p){var u=!!p.options.loopHandler,f=!!p.options.restartHandler,_=!!p.options.playHandler||!!p.options.playPromiseHandler,v=!!p.options.progressHandler,y=!!p.options.warpHandler,S=p.parent.querySelector(".abcjs-midi-start");u&&p.parent.querySelector(".abcjs-midi-loop").addEventListener("click",function(q){g(p.options.loopHandler,q,S,p.options.afterResume)}),f&&p.parent.querySelector(".abcjs-midi-reset").addEventListener("click",function(q){g(p.options.restartHandler,q,S,p.options.afterResume)}),_&&S.addEventListener("click",function(q){g(p.options.playPromiseHandler||p.options.playHandler,q,S,p.options.afterResume,!!p.options.playPromiseHandler)}),v&&p.parent.querySelector(".abcjs-midi-progress-background").addEventListener("click",function(q){g(p.options.progressHandler,q,S,p.options.afterResume)}),y&&p.parent.querySelector(".abcjs-midi-tempo").addEventListener("change",function(q){g(p.options.warpHandler,q,S,p.options.afterResume)})}return $_=c,$_}var q_,K3;function LU(){if(K3)return q_;K3=1;var a=O3(),t=b_(),i=Qc();function n(r,o,l,c,d){for(var g=new a,h=0;h<r.length;h++){var m=r[h],p=g.addTrack();if(g.setInstrument(p,m.instrument),h===0&&o)for(var u=0;u<o.length;u++){var f=o[u];g.appendNote(p,f.pitch,1/64,f.volume,f.cents)}g.appendNote(p,m.pitch,m.duration,m.volume,m.cents)}var _=i();return _.state==="suspended"?_.resume().then(function(){return s(g,l,c,d)}):s(g,l,c,d)}function s(r,o,l,c){var d=new t;return d.init({sequence:r,millisecondsPerMeasure:o,options:{soundFontUrl:l},debugCallback:c}).then(function(){return d.prime()}).then(function(){return d.start(),Promise.resolve()})}return q_=n,q_}var A_,Y3;function J3(){if(Y3)return A_;Y3=1;var a=Q3(),t=b_(),i=E0(),n=Qc();function s(){var r=this;r.warp=100,r.cursorControl=null,r.visualObj=null,r.timer=null,r.midiBuffer=null,r.options=null,r.currentTempo=null,r.control=null,r.isLooping=!1,r.isStarted=!1,r.isLoaded=!1,r.isLoading=!1,r.load=function(l,c,d){d||(d={}),d.displayPlay===void 0&&(d.displayPlay=!0),d.displayProgress===void 0&&(d.displayProgress=!0),r.control=new a(l,{loopHandler:d.displayLoop?r.toggleLoop:void 0,restartHandler:d.displayRestart?r.restart:void 0,playPromiseHandler:d.displayPlay?r.play:void 0,progressHandler:d.displayProgress?r.randomAccess:void 0,warpHandler:d.displayWarp?r.onWarp:void 0,afterResume:r.init}),r.cursorControl=c,r.disable(!0)},r.disable=function(l){r.control&&r.control.disable(l)},r.setTune=function(l,c,d){return r.visualObj=l,r.disable(!1),r.options=d||{},r.control&&(r.pause(),r.setProgress(0,1),r.control.resetAll(),r.restart(),r.isStarted=!1),r.isLooping=!1,c?r.go():Promise.resolve({status:"no-audio-context"})},r.go=function(){r.isLoading=!0;var l=r.visualObj.millisecondsPerMeasure()*100/r.warp;r.currentTempo=Math.round(r.visualObj.getBeatsPerMeasure()/l*6e4),r.control&&r.control.setTempo(r.currentTempo),r.percent=0;var c;return r.midiBuffer||(r.midiBuffer=new t),n().resume().then(function(d){return r.midiBuffer.init({visualObj:r.visualObj,options:r.options,millisecondsPerMeasure:l})}).then(function(d){return c=d,r.midiBuffer.prime()}).then(function(){var d=16;return r.cursorControl&&r.cursorControl.beatSubdivisions!==void 0&&parseInt(r.cursorControl.beatSubdivisions,10)>=1&&parseInt(r.cursorControl.beatSubdivisions,10)<=64&&(d=parseInt(r.cursorControl.beatSubdivisions,10)),r.timer=new i(r.visualObj,{beatCallback:r.beatCallback,eventCallback:r.eventCallback,lineEndCallback:r.lineEndCallback,qpm:r.currentTempo,extraMeasuresAtBeginning:r.cursorControl?r.cursorControl.extraMeasuresAtBeginning:void 0,lineEndAnticipation:r.cursorControl?r.cursorControl.lineEndAnticipation:0,beatSubdivisions:d}),r.cursorControl&&r.cursorControl.onReady&&typeof r.cursorControl.onReady=="function"&&r.cursorControl.onReady(r),r.isLoaded=!0,r.isLoading=!1,Promise.resolve({status:"created",notesStatus:c})})},r.destroy=function(){r.timer&&(r.timer.reset(),r.timer.stop(),r.timer=null),r.midiBuffer&&(r.midiBuffer.stop(),r.midiBuffer=null),r.setProgress(0,1),r.control&&r.control.resetAll()},r.play=function(){return r.runWhenReady(r._play,void 0)};function o(l){return new Promise(function(c){setTimeout(c,l)})}r.runWhenReady=function(l,c){return r.visualObj?r.isLoading?o(500).then(function(){return r.isLoading?r.runWhenReady(l,c):l(c)}):r.isLoaded?l(c):r.go().then(function(){return l(c)}):Promise.resolve({status:"loading"})},r._play=function(){return n().resume().then(function(){return r.isStarted=!r.isStarted,r.isStarted?(r.cursorControl&&r.cursorControl.onStart&&typeof r.cursorControl.onStart=="function"&&r.cursorControl.onStart(),r.midiBuffer.start(),r.timer.start(r.percent),r.control&&r.control.pushPlay(!0)):r.pause(),Promise.resolve({status:"ok"})})},r.pause=function(){r.timer&&(r.timer.pause(),r.midiBuffer.pause(),r.control&&r.control.pushPlay(!1))},r.toggleLoop=function(){r.isLooping=!r.isLooping,r.control&&r.control.pushLoop(r.isLooping)},r.restart=function(){r.timer&&(r.timer.setProgress(0),r.midiBuffer.seek(0))},r.randomAccess=function(l){return r.runWhenReady(r._randomAccess,l)},r._randomAccess=function(l){var c=l.target.classList.contains("abcjs-midi-progress-indicator")?l.target.parentNode:l.target,d=(l.x-c.getBoundingClientRect().left)/c.offsetWidth;return d<0&&(d=0),d>1&&(d=1),r.seek(d),Promise.resolve({status:"ok"})},r.seek=function(l,c){r.timer&&r.midiBuffer&&(r.timer.setProgress(l,c),r.midiBuffer.seek(l,c))},r.setWarp=function(l){if(parseInt(l,10)>0){r.warp=parseInt(l,10);var c=r.isStarted,d=r.percent;return r.destroy(),r.isStarted=!1,r.go().then(function(){return r.setProgress(d,r.midiBuffer.duration*1e3),r.control&&r.control.setWarp(r.currentTempo,r.warp),c?r.play().then(function(){return r.seek(d),Promise.resolve()}):(r.seek(d),Promise.resolve())})}return Promise.resolve()},r.onWarp=function(l){var c=l.target.value;return r.setWarp(c)},r.setProgress=function(l,c){r.percent=l,r.control&&r.control.setProgress(l,c)},r.finished=function(){if(r.timer.reset(),r.isLooping)return r.timer.start(0),r.midiBuffer.finished(),r.midiBuffer.start(),"continue";r.timer.stop(),r.isStarted&&(r.control&&r.control.pushPlay(!1),r.isStarted=!1,r.midiBuffer.finished(),r.cursorControl&&r.cursorControl.onFinished&&typeof r.cursorControl.onFinished=="function"&&r.cursorControl.onFinished(),r.setProgress(0,1))},r.beatCallback=function(l,c,d,g){var h=l/c;r.setProgress(h,d),r.cursorControl&&r.cursorControl.onBeat&&typeof r.cursorControl.onBeat=="function"&&r.cursorControl.onBeat(l,c,d,g)},r.eventCallback=function(l){if(l)r.cursorControl&&r.cursorControl.onEvent&&typeof r.cursorControl.onEvent=="function"&&r.cursorControl.onEvent(l);else return r.finished()},r.lineEndCallback=function(l,c){r.cursorControl&&r.cursorControl.onLineEnd&&typeof r.cursorControl.onLineEnd=="function"&&r.cursorControl.onLineEnd(l,c)},r.getUrl=function(){return r.midiBuffer.download()},r.download=function(l){var c=r.getUrl(),d=document.createElement("a");document.body.appendChild(d),d.setAttribute("style","display: none;"),d.href=c,d.download=l||"output.wav",d.click(),window.URL.revokeObjectURL(c),document.body.removeChild(d)}}return A_=s,A_}var C_,X3;function Z3(){if(X3)return C_;X3=1;var a=B3(),t;return(function(){function i(m,p){for(var u in p)p.hasOwnProperty(u)&&m.setAttribute(u,p[u]);return m}function n(){this.trackstrings="",this.trackcount=0,this.noteOnAndChannel="%90",this.noteOffAndChannel="%80"}n.prototype.setTempo=function(m){this.trackcount===0&&(this.startTrack(),this.track+="%00%FF%51%03"+d(Math.round(6e7/m),6),this.endTrack())},n.prototype.setGlobalInfo=function(m,p,u,f){if(this.trackcount===0){this.startTrack();var _=Math.round(6e7/m);this.track+="%00%FF%51%03"+d(_,6),u&&(this.track+=o(u)),f&&(this.track+=l(f)),p&&(this.track+=r(p,"%01")),this.endTrack()}},n.prototype.startTrack=function(){this.noteWarped={},this.track="",this.trackName="",this.trackInstrument="",this.silencelength=0,this.trackcount++,this.instrument&&this.setInstrument(this.instrument)},n.prototype.endTrack=function(){this.track=this.trackName+this.trackInstrument+this.track;var m=d(this.track.length/3+4,8);this.track="MTrk"+m+this.track+"%00%FF%2F%00",this.trackstrings+=this.track},n.prototype.setText=function(m,p){m==="name"&&(this.trackName=r(p,"%03"))},n.prototype.setInstrument=function(m){this.trackInstrument="%00%C0"+d(m,2),this.instrument=m},n.prototype.setChannel=function(m,p){this.channel=m;var u="%00%B"+this.channel.toString(16);this.track+=u+"%79%00",this.track+=u+"%40%00",this.track+=u+"%5B%30",p||(p=0),p=Math.round((p+1)*64),this.track+=u+"%0A"+d(p,2),this.track+=u+"%07%64",this.noteOnAndChannel="%9"+this.channel.toString(16),this.noteOffAndChannel="%8"+this.channel.toString(16)};var s=4096;n.prototype.startNote=function(m,p,u){if(this.track+=h(this.silencelength),this.silencelength=0,u){this.track+="%e"+this.channel.toString(16);var f=Math.round(a(u)*s);this.track+=g(8192+f),this.track+=h(0),this.noteWarped[m]=!0}this.track+=this.noteOnAndChannel,this.track+="%"+m.toString(16)+d(p,2)},n.prototype.endNote=function(m){this.track+=h(this.silencelength),this.silencelength=0,this.noteWarped[m]&&(this.track+="%e"+this.channel.toString(16),this.track+=g(8192),this.track+=h(0),this.noteWarped[m]=!1),this.track+=this.noteOffAndChannel,this.track+="%"+m.toString(16)+"%00"},n.prototype.addRest=function(m){this.silencelength+=m,this.silencelength<0&&(this.silencelength=0)},n.prototype.getData=function(){return"data:audio/midi,MThd%00%00%00%06%00%01"+d(this.trackcount,4)+"%01%e0"+this.trackstrings},n.prototype.embed=function(m,p){var u=this.getData(),f=i(document.createElement("a"),{href:u});if(f.innerHTML="download midi",m.insertBefore(f,m.firstChild),!p){var _=i(document.createElement("embed"),{src:u,type:"video/quicktime",controller:"true",autoplay:"false",loop:"false",enablejavascript:"true",style:"display:block; height: 20px;"});m.insertBefore(_,m.firstChild)}};function r(m,p){for(var u="",f=0;f<m.length;f++)u+=d(m.charCodeAt(f),2);return"%00%FF"+p+d(u.length/3,2)+u}function o(m){if(!m||!m.accidentals)return"";for(var p="%00%FF%59%02",u=0,f=256,_=0;_<m.accidentals.length;_++)m.accidentals[_].acc==="sharp"?u++:m.accidentals[_].acc==="flat"&&f--;var v=d(f!==256?f:u,2),y=m.mode==="m"?"%01":"%00";return p+v+y}function l(m){var p="%00%FF%58%04"+d(m.num,2),u={1:0,2:1,4:2,8:3,16:4,32:5},f=u[m.den];if(!f)return"";p+=d(f,2);var _;switch(m.num+"/"+m.den){case"2/4":case"3/4":case"4/4":case"5/4":_=24;break;case"6/4":_=72;break;case"2/2":case"3/2":case"4/2":_=48;break;case"3/8":case"6/8":case"9/8":case"12/8":_=36;break}return _?(p+=d(_,2),p+"%08"):""}function c(m){for(var p="",u=0;u<m.length;u+=2)p+="%",p+=m.substr(u,2);return p}function d(m,p){var u=m.toString(16);for(u=u.split(".")[0];u.length<p;)u="0"+u;return u.length>p&&(u=u.substring(0,p)),c(u)}function g(m){m=Math.round(m);var p=m%128,u=m-p;return d(u*2+p,4)}function h(m){var p=0,u=[];for(m=Math.round(m);m!==0;)u.push(m&127),m=m>>7;for(var f=u.length-1;f>=0;f--){p=p<<8;var _=u[f];f!==0&&(_=_|128),p=p|_}var v=p.toString(16).length;return v+=v%2,d(p,v)}t=function(){return new n}})(),C_=t,C_}var G_,ex;function VU(){if(ex)return G_;ex=1;var a=Z3(),t;return(function(){var i=1920;t=function(r,o){o===void 0&&(o={});var l=r.setUpAudio(o),c=a(),d=r.metaText?r.metaText.title:void 0;d&&d.length>128&&(d=d.substring(0,124)+"...");var g=r.getKeySignature(),h=r.getMeterFraction(),m=l.tempo,p=m/60;if(h.den===8&&h.num!==5&&h.num!==7){var u=r.millisecondsPerMeasure();m=6e4/(u/h.num)/2,p=m/60}c.setGlobalInfo(m,d,g,h);for(var f=0;f<l.tracks.length;f++){c.startTrack();for(var _={},v=0;v<l.tracks[f].length;v++){var y=l.tracks[f][v];switch(y.cmd){case"text":c.setText(y.type,y.text);break;case"program":var S=0;o.pan&&o.pan.length>f&&(S=o.pan[f]),y.instrument===128?(c.setChannel(9,S),c.setInstrument(0)):(c.setChannel(y.channel,S),c.setInstrument(y.instrument));break;case"note":var q=y.gap*p,M=y.start,P=M+y.duration-q;_[M]||(_[M]=[]),_[M].push({pitch:y.pitch,volume:y.volume,cents:y.cents}),_[P]||(_[P]=[]),_[P].push({pitch:y.pitch,volume:0});break;default:console.log("MIDI create Unknown: "+y.cmd)}}n(c,_,i),c.endTrack()}return c.getData()};function n(s,r,o){for(var l=Object.keys(r),c=0;c<l.length;c++)l[c]=parseFloat(l[c]);l.sort(function(f,_){return f-_});for(var d=0,g=0;g<l.length;g++){var h=r[l[g]];if(l[g]>d){var m=(l[g]-d)*o;s.addRest(m),d=l[g]}for(var p=0;p<h.length;p++){var u=h[p];u.volume?s.startNote(u.pitch,u.volume,u.cents):s.endNote(u.pitch)}}}})(),G_=t,G_}var F_,tx;function HU(){if(tx)return F_;tx=1;var a=Vf(),t=VU(),i=function(r,o){var l={};if(o)for(var c in o)o.hasOwnProperty(c)&&(l[c]=o[c]);l.generateInline=!1;function d(g,h,m){var p=t(h,l);switch(l.midiOutputType){case"encoded":return p;case"binary":var u=p.replace("data:audio/midi,","");u=u.replace(/MThd/g,"%4d%54%68%64"),u=u.replace(/MTrk/g,"%4d%54%72%6b");for(var f=new ArrayBuffer(u.length/3),_=new Uint8Array(f),v=0;v<u.length/3;v++){var y=v*3+1,S=parseInt(u.substring(y,y+2),16);_[v]=S}return _;default:return s(h,l,p,m)}}return typeof r=="string"?a.renderEngine(d,"*",r,l):d(null,r,0)};function n(r){var o={};return r&&o.toString.call(r)==="[object Function]"}var s=function(r,o,l,c){var d=["abcjs-download-midi","abcjs-midi-"+c];o.downloadClass&&d.push(o.downloadClass);var g='<div class="'+d.join(" ")+'">';o.preTextDownload&&(g+=o.preTextDownload);var h=r.metaText&&r.metaText.title?r.metaText.title:"Untitled",m;o.downloadLabel&&n(o.downloadLabel)?m=o.downloadLabel(r,c):o.downloadLabel?m=o.downloadLabel.replace(/%T/,h):m='Download MIDI for "'+h+'"',h=h.toLowerCase().replace(/'/g,"").replace(/\W/g,"_").replace(/__/g,"_");var p=o.fileName?o.fileName:h+".midi";return g+='<a download="'+p+'" href="'+l+'">'+m+"</a>",o.postTextDownload&&(g+=o.postTextDownload),g+"</div>"};return F_=i,F_}var M_,ax;function ix(){if(ax)return M_;ax=1;try{if(typeof window.CustomEvent!="function"){var a=function(i,n){n=n||{bubbles:!1,cancelable:!1,detail:void 0};var s=document.createEvent("CustomEvent");return s.initCustomEvent(i,n.bubbles,n.cancelable,n.detail),s};a.prototype=window.Event.prototype,window.CustomEvent=a}}catch{}var t=function(i){this.isEditArea=!0,typeof i=="string"?(this.textarea=document.getElementById(i),this.textarea||(this.textarea=document.querySelector(i))):this.textarea=i,this.initialText=this.textarea.value,this.isDragging=!1};return t.prototype.addSelectionListener=function(i){this.textarea.onmousemove=function(n){this.isDragging&&i.fireSelectionChanged()}},t.prototype.addChangeListener=function(i){this.changelistener=i,this.textarea.onkeyup=function(){i.fireChanged()},this.textarea.onmousedown=function(){this.isDragging=!0,i.fireSelectionChanged()},this.textarea.onmouseup=function(){this.isDragging=!1,i.fireChanged()},this.textarea.onchange=function(){i.fireChanged()}},t.prototype.getSelection=function(){return{start:this.textarea.selectionStart,end:this.textarea.selectionEnd}},t.prototype.setSelection=function(i,n){if(this.textarea.setSelectionRange)this.textarea.setSelectionRange(i,n);else if(this.textarea.createTextRange){var s=this.textarea.createTextRange();s.collapse(!0),s.moveEnd("character",n),s.moveStart("character",i),s.select()}this.textarea.focus()},t.prototype.getString=function(){return this.textarea.value},t.prototype.setString=function(i){this.textarea.value=i,this.initialText=this.getString(),this.changelistener&&this.changelistener.fireChanged()},t.prototype.getElem=function(){return this.textarea},M_=t,M_}var z_,nx;function WU(){if(nx)return z_;nx=1;var a=Vr(),t=J3(),i=Wf(),n=T3(),s=ix();function r(l){var c={},d;if(l.abcjsParams)for(d in l.abcjsParams)l.abcjsParams.hasOwnProperty(d)&&(c[d]=l.abcjsParams[d]);if(l.midi_options)for(d in l.midi_options)l.midi_options.hasOwnProperty(d)&&(c[d]=l.midi_options[d]);if(l.parser_options)for(d in l.parser_options)l.parser_options.hasOwnProperty(d)&&(c[d]=l.parser_options[d]);if(l.render_options)for(d in l.render_options)l.render_options.hasOwnProperty(d)&&(c[d]=l.render_options[d]);return c.tablature&&l.warnings_id&&(c.tablature.warnings_id=l.warnings_id),c}var o=function(l,c){this.abcjsParams=r(c),c.indicate_changed&&(this.indicate_changed=!0),typeof l=="string"?this.editarea=new s(l):l.isEditArea?this.editarea=l:this.editarea=new s(l),this.editarea.addSelectionListener(this),this.editarea.addChangeListener(this),c.canvas_id?this.div=c.canvas_id:c.paper_id?this.div=c.paper_id:(this.div=document.createElement("DIV"),this.editarea.getElem().parentNode.insertBefore(this.div,this.editarea.getElem())),typeof this.div=="string"&&(this.div=document.getElementById(this.div)),c.selectionChangeCallback&&(this.selectionChangeCallback=c.selectionChangeCallback),this.clientClickListener=this.abcjsParams.clickListener,this.abcjsParams.clickListener=this.highlight.bind(this),c.synth&&i()&&(this.synth={el:c.synth.el,cursorControl:c.synth.cursorControl,options:c.synth.options}),c.generate_midi&&(this.generate_midi=c.generate_midi,this.abcjsParams.generateDownload&&(typeof c.midi_download_id=="string"?this.downloadMidi=document.getElementById(c.midi_download_id):c.midi_download_id&&(this.downloadMidi=c.midi_download_id)),this.abcjsParams.generateInline!==!1&&(typeof c.midi_id=="string"?this.inlineMidi=document.getElementById(c.midi_id):c.midi_id&&(this.inlineMidi=c.midi_id))),c.warnings_id?typeof c.warnings_id=="string"?this.warningsdiv=document.getElementById(c.warnings_id):this.warningsdiv=c.warnings_id:c.generate_warnings&&(this.warningsdiv=document.createElement("div"),this.div.parentNode.insertBefore(this.warningsdiv,this.div)),this.onchangeCallback=c.onchange,this.redrawCallback=c.redrawCallback,this.currentAbc="",this.tunes=[],this.bReentry=!1,this.parseABC(),this.modelChanged(),this.addClassName=function(d,g){var h=function(m,p){var u=m.className;return u.length>0&&(u===p||new RegExp("(^|\\s)"+p+"(\\s|$)").test(u))};return h(d,g)||(d.className+=(d.className?" ":"")+g),d},this.removeClassName=function(d,g){return d.className=a.strip(d.className.replace(new RegExp("(^|\\s+)"+g+"(\\s+|$)")," ")),d},this.setReadOnly=function(d){var g="abc_textarea_readonly",h=this.editarea.getElem();d?(h.setAttribute("readonly","yes"),this.addClassName(h,g)):(h.removeAttribute("readonly"),this.removeClassName(h,g))}};return o.prototype.redrawMidi=function(){if(this.generate_midi&&!this.midiPause){var l=new window.CustomEvent("generateMidi",{detail:{tunes:this.tunes,abcjsParams:this.abcjsParams,downloadMidiEl:this.downloadMidi,inlineMidiEl:this.inlineMidi,engravingEl:this.div}});window.dispatchEvent(l)}if(this.synth){var c=this.synth.synthControl;this.synth.synthControl||(this.synth.synthControl=new t,this.synth.synthControl.load(this.synth.el,this.synth.cursorControl,this.synth.options)),this.synth.synthControl.setTune(this.tunes[0],c,this.synth.options)}},o.prototype.modelChanged=function(){if(!this.bReentry){this.bReentry=!0;try{this.timerId=null,this.redrawCallback&&this.redrawCallback(!0),this.synth&&this.synth.synthControl&&this.synth.synthControl.disable(!0),this.tunes=n(this.div,this.currentAbc,this.abcjsParams),this.tunes.length>0&&(this.warnings=this.tunes[0].warnings),this.redrawMidi(),this.redrawCallback&&this.redrawCallback(!1)}catch(l){console.error("ABCJS error: ",l),this.warnings||(this.warnings=[]),this.warnings.push(l.message)}this.warningsdiv&&(this.warningsdiv.innerHTML=this.warnings?this.warnings.join("<br />"):"No errors"),this.updateSelection(),this.bReentry=!1}},o.prototype.paramChanged=function(l){if(l)for(var c in l)l.hasOwnProperty(c)&&(this.abcjsParams[c]=l[c]);this.currentAbc="",this.fireChanged()},o.prototype.getTunes=function(){return this.tunes},o.prototype.synthParamChanged=function(l){if(this.synth){if(this.synth.options={},l)for(var c in l)l.hasOwnProperty(c)&&(this.synth.options[c]=l[c]);this.currentAbc="",this.fireChanged()}},o.prototype.parseABC=function(){var l=this.editarea.getString();return l===this.currentAbc?(this.updateSelection(),!1):(this.currentAbc=l,!0)},o.prototype.updateSelection=function(){var l=this.editarea.getSelection();try{this.tunes.length>0&&this.tunes[0].engraver&&this.tunes[0].engraver.rangeHighlight(l.start,l.end)}catch{}this.selectionChangeCallback&&this.selectionChangeCallback(l.start,l.end)},o.prototype.fireSelectionChanged=function(){this.updateSelection()},o.prototype.setDirtyStyle=function(l){if(this.indicate_changed!==void 0){var c=function(m,p){var u=function(f,_){var v=f.className;return v.length>0&&(v===_||new RegExp("(^|\\s)"+_+"(\\s|$)").test(v))};return u(m,p)||(m.className+=(m.className?" ":"")+p),m},d=function(m,p){return m.className=a.strip(m.className.replace(new RegExp("(^|\\s+)"+p+"(\\s+|$)")," ")),m},g="abc_textarea_dirty",h=this.editarea.getElem();l?c(h,g):d(h,g)}},o.prototype.fireChanged=function(){if(!this.bIsPaused&&this.parseABC()){var l=this;this.timerId&&clearTimeout(this.timerId),this.timerId=setTimeout(function(){l.modelChanged()},300);var c=this.isDirty();this.wasDirty!==c&&(this.wasDirty=c,this.setDirtyStyle(c)),this.onchangeCallback&&this.onchangeCallback(this)}},o.prototype.setNotDirty=function(){this.editarea.initialText=this.editarea.getString(),this.wasDirty=!1,this.setDirtyStyle(!1)},o.prototype.isDirty=function(){return this.indicate_changed===void 0?!1:this.editarea.initialText!==this.editarea.getString()},o.prototype.highlight=function(l,c,d,g,h,m){this.editarea.setSelection(l.startChar,l.endChar),this.selectionChangeCallback&&this.selectionChangeCallback(l.startChar,l.endChar),this.clientClickListener&&this.clientClickListener(l,c,d,g,h,m)},o.prototype.pause=function(l){this.bIsPaused=l,l||this.fireChanged()},o.prototype.millisecondsPerMeasure=function(){return!this.synth||!this.synth.synthControl||!this.synth.synthControl.visualObj?0:this.synth.synthControl.visualObj.millisecondsPerMeasure()},o.prototype.pauseMidi=function(l){this.midiPause=l,l||this.redrawMidi()},z_=o,z_}var E_,sx;function QU(){if(sx)return E_;sx=1;var a=lE(),t=cE(),i=Vf(),n=mw(),s=AE(),r={};r.signature="abcjs-basic v"+a,Object.keys(t).forEach(function(S){r[S]=t[S]}),Object.keys(i).forEach(function(S){r[S]=i[S]}),r.renderAbc=T3(),r.tuneMetrics=EU(),r.TimingCallbacks=E0();var o=ll();r.setGlyph=o.setSymbol,r.strTranspose=s;var l=b_(),c=l_(),d=m_(),g=O3(),h=Q3(),m=Hf(),p=Qc(),u=Wf(),f=LU(),_=J3(),v=HU(),y=Z3();return r.synth={CreateSynth:l,instrumentIndexToName:c,pitchToNoteName:d,SynthController:_,SynthSequence:g,CreateSynthControl:h,registerAudioContext:m,activeAudioContext:p,supportsAudio:u,playEvent:f,getMidiFile:v,sequence:n,midiRenderer:y},r.Editor=WU(),r.EditArea=ix(),r.test={Parse:og(),EngraverController:t_()},E_=r,E_}var rx=QU();const KU=n6({__proto__:null,default:oE(rx)},[rx]);var YU=ie("<option> </option>"),JU=ie('<label class="voice svelte-16se0y2">Voice<select aria-label="Dub voice" class="svelte-16se0y2"></select></label>'),XU=ie('<button type="button">Clear reference</button>'),ZU=ie('<details class="svelte-16se0y2"><summary class="svelte-16se0y2">Reference voice</summary> <label class="svelte-16se0y2">Reference audio<input type="file" accept="audio/*" class="svelte-16se0y2"/></label> <!> <label class="svelte-16se0y2">Reference transcript<textarea rows="2" class="svelte-16se0y2"></textarea></label> <!></details>'),eR=ie('<button type="button"><!>Cancel</button>'),tR=ie('<p role="alert" class="svelte-16se0y2"> </p>'),aR=ie('<div><dt class="svelte-16se0y2">Generation</dt><dd class="svelte-16se0y2"> </dd></div>'),iR=ie('<div><dt class="svelte-16se0y2">Audio</dt><dd class="svelte-16se0y2"> </dd></div>'),nR=ie('<div><dt class="svelte-16se0y2">RTF</dt><dd class="svelte-16se0y2"> </dd></div>'),sR=ie('<p class="translation svelte-16se0y2"> </p> <audio controls="" class="svelte-16se0y2"></audio> <dl class="svelte-16se0y2"><!> <!> <!> <div><dt class="svelte-16se0y2">Seed</dt><dd class="svelte-16se0y2"> </dd></div></dl> <div class="downloads svelte-16se0y2"><a download="dub.wav" class="svelte-16se0y2"><!>WAV</a> <a download="translation.txt" class="svelte-16se0y2"><!>Translation</a></div>',1),rR=ie('<p class="empty svelte-16se0y2">No dub generated</p>'),oR=ie('<section class="dubbing svelte-16se0y2"><header class="svelte-16se0y2"><h1 class="svelte-16se0y2"><!>Cross-language dubbing</h1> <button type="button" title="Refresh installed models" aria-label="Refresh installed models" class="svelte-16se0y2"><!></button></header> <div class="workspace svelte-16se0y2"><div class="inputs svelte-16se0y2"><section class="source svelte-16se0y2"><h2 class="svelte-16se0y2"><!>Source recording</h2> <label class="svelte-16se0y2">Audio file<input type="file" accept="audio/*" class="svelte-16se0y2"/></label> <!></section> <section class="svelte-16se0y2"><h2 class="svelte-16se0y2"><!>Translation</h2> <!> <div class="language-fields svelte-16se0y2"><label class="svelte-16se0y2">Source language<input aria-label="Source language" placeholder="Model default" class="svelte-16se0y2"/></label> <label class="svelte-16se0y2">Target language<input aria-label="Target language" placeholder="en" required="" class="svelte-16se0y2"/></label></div></section> <section class="svelte-16se0y2"><h2 class="svelte-16se0y2"><!>Speech</h2> <!> <!> <!></section> <div class="actions svelte-16se0y2"><button class="run" type="button"><!>Generate dub</button> <!> <span role="status" class="svelte-16se0y2"> </span></div> <!></div> <section class="result svelte-16se0y2" aria-label="Dub result"><h2 class="svelte-16se0y2"><!>Translation and audio</h2> <!></section></div></section>');function lR(a,t){Ri(t,!1);const i=K(),n=K(),s=K();let r=Se(t,"busy",12,!1),o=Se(t,"active",8,!0),l=K(),c=K([]),d=K(null),g=K(null),h=K(!0),m=K(null),p=K(""),u=K("en"),f=K(null),_=K(""),v=K(""),y=K(""),S=K(null),q=K(""),M=K(""),P=K(""),B=K({}),A=K(null);const j=[...new Set(Oi.filter(Ue=>Ue.task==="asr"&&Ue.request_options?.includes("target_language")).map(Ue=>Ue.family))];async function G(){if(!r()){b(h,!0),b(y,"");try{b(c,await su()),e(d)&&!e(c).some(Ue=>Ue.id===e(d).id)&&b(d,null),e(g)&&!e(c).some(Ue=>Ue.id===e(g).id)&&b(g,null)}catch(Ue){b(y,Ue instanceof Error?Ue.message:String(Ue))}finally{b(h,!1)}}}function C(Ue){Ue==="model"&&(b(f,null),b(_,""))}async function R(){if(r()||e(h))return;if(!e(m)||!e(d)||!e(g)||!e(u).trim()){b(y,"Choose a recording, translation model, speech model, and target language.");return}r(!0),b(y,"");const Ue=new AbortController;b(S,Ue);const Ve=e(m),_t=e(s)?e(f):null,mt=e(_).trim(),ot=e(p).trim(),it=e(u).trim(),nt=structuredClone(e(d)),gt=structuredClone(e(g));try{const dt=Ue.signal;b(v,"Preparing models..."),await new Vc(nt,dt).prepare();const It=new Vc(gt,dt);await It.prepare(),b(v,"Uploading recording...");const Ut=await Os(await mr(Ve),dt);dt.throwIfAborted();const Rt={};for(const[ht,vt]of Object.entries(nt.request.options))Rt[`translator.${ht}`]=vt;for(const[ht,vt]of Object.entries(gt.request.options))Rt[`tts.${ht}`]=vt;const ya=ot||nt.request.language?.trim();ya&&(Rt["translator.language"]=ya),Rt["translator.target_language"]=it,gt.request.language&&(Rt["tts.language"]=gt.request.language),gt.request.max_tokens!==void 0&&(Rt["tts.max_tokens"]=gt.request.max_tokens),Rt["tts.seed"]=It.resolvedSeed;const xa={audio:Ut,options:Rt};_t?(xa.voice_ref=await Os(await mr(_t),dt),mt&&(Rt["tts.reference_text"]=mt)):gt.request.voice&&(xa.voice_id=gt.request.voice),dt.throwIfAborted(),b(v,"Translating and generating speech...");const pa=await yn("/v1/recipes/run",{method:"POST",body:JSON.stringify({recipe:"cross-language-dubbing",models:{translator:nt.model.id,tts:gt.model.id},request:xa})},dt);if(dt.throwIfAborted(),!pa.audio||!pa.text?.trim())throw new Error("The recipe returned no dubbed audio or translation.");const et=vf(pa.audio),pt=URL.createObjectURL(new Blob([pa.text],{type:"text/plain;charset=utf-8"}));e(q)&&URL.revokeObjectURL(e(q)),e(P)&&URL.revokeObjectURL(e(P)),b(q,et),b(P,pt),b(M,pa.text),b(B,pa.timing||{}),b(A,It.resolvedSeed),b(v,"Dub ready")}catch(dt){Ue.signal.aborted?b(v,"Cancelled"):(b(y,dt instanceof Error?dt.message:String(dt)),b(v,""))}finally{r(!1),b(S,null)}}Qn(G),Ns(()=>{e(S)?.abort(),e(q)&&URL.revokeObjectURL(e(q)),e(P)&&URL.revokeObjectURL(e(P))}),Ee(()=>(e(g),Oi),()=>{b(i,e(g)&&(Oi.find(Ue=>Ue.id===e(g).model.id)||Oi.find(Ue=>Ue.family===e(g).model.family&&Ue.task==="tts")))}),Ee(()=>e(i),()=>{b(n,e(i)?.builtin_voices||[])}),Ee(()=>(e(g),Ko),()=>{b(s,!!(e(g)&&Ko[e(g).model.family]?.includes("speaker_reference")))}),Ee(()=>(Y(o()),e(l)),()=>{!o()&&e(l)&&e(l).querySelectorAll("audio").forEach(Ue=>Ue.pause())}),bn(),en();var H=oR(),E=k(H),U=k(E),N=k(U);sb(N,{size:24}),qt(),w(U);var L=$(U,2),I=k(L);JS(I,{size:17}),w(L),w(E);var T=$(E,2),F=k(T),z=k(F),D=k(z),Q=k(D);Pc(Q,{size:17}),qt(),w(D);var X=$(D,2),Z=$(k(X));w(X);var ue=$(X,2);os(ue,{get file(){return e(m)},label:"Original audio"}),w(z);var de=$(z,2),ae=k(de),V=k(ae);sb(V,{size:17}),qt(),w(ae);var pe=$(ae,2);{let Ue=Yt(()=>r()||e(h));lu(pe,{label:"Translation model",get choices(){return e(c)},tasks:["asr"],get families(){return j},get disabled(){return e(Ue)},onchange:()=>{},get value(){return e(d)},set value(Ve){b(d,Ve)},$$legacy:!0})}var Ce=$(pe,2),ce=k(Ce),Te=$(k(ce));Dt(Te),w(ce);var ye=$(ce,2),Ie=$(k(ye));Dt(Ie),w(ye),w(Ce),w(de);var Je=$(de,2),tt=k(Je),De=k(tt);Ud(De,{size:17}),qt(),w(tt);var le=$(tt,2);{let Ue=Yt(()=>r()||e(h));lu(le,{label:"Speech model",get choices(){return e(c)},tasks:["tts"],get disabled(){return e(Ue)},onchange:C,get value(){return e(g)},set value(Ve){b(g,Ve)},$$legacy:!0})}var xe=$(le,2);{var Ke=Ue=>{var Ve=JU(),_t=$(k(Ve));Mt(_t,5,()=>e(n),Qt,(mt,ot)=>{var it=YU(),nt=k(it,!0);w(it);var gt={};ne(()=>{W(nt,e(ot)),gt!==(gt=e(ot))&&(it.value=(it.__value=e(ot))??"")}),J(mt,it)}),w(_t),w(Ve),ne(()=>_t.disabled=r()),rs(_t,()=>e(g).request.voice,mt=>(Ct(g,e(g).request.voice=mt),Zi(()=>{r(),e(n)}))),J(Ue,Ve)};_e(xe,Ue=>{e(g),e(n),x(()=>e(g)&&e(n).length)&&Ue(Ke)})}var fe=$(xe,2);{var we=Ue=>{var Ve=ZU(),_t=$(k(Ve),2),mt=$(k(_t));w(_t);var ot=$(_t,2);os(ot,{get file(){return e(f)},label:"Reference voice"});var it=$(ot,2),nt=$(k(it));nn(nt),w(it);var gt=$(it,2);{var dt=It=>{var Ut=XU();ne(()=>Ut.disabled=r()),re("click",Ut,()=>{b(f,null),b(_,"")}),J(It,Ut)};_e(gt,It=>{e(f)&&It(dt)})}w(Ve),ne(()=>{mt.disabled=r(),nt.disabled=r()}),re("change",mt,It=>b(f,It.currentTarget.files?.[0]||null)),za(nt,()=>e(_),It=>b(_,It)),J(Ue,Ve)};_e(fe,Ue=>{e(s)&&Ue(we)})}w(Je);var me=$(Je,2),be=k(me),ke=k(be);Bc(ke,{size:16}),qt(),w(be);var $e=$(be,2);{var ge=Ue=>{var Ve=eR(),_t=k(Ve);Qo(_t,{size:15}),qt(),w(Ve),re("click",Ve,()=>e(S)?.abort()),J(Ue,Ve)};_e($e,Ue=>{r()&&Ue(ge)})}var Me=$($e,2),Fe=k(Me,!0);w(Me),w(me);var qe=$(me,2);{var rt=Ue=>{var Ve=tR(),_t=k(Ve,!0);w(Ve),ne(()=>W(_t,e(y))),J(Ue,Ve)};_e(qe,Ue=>{e(y)&&Ue(rt)})}w(F);var Xe=$(F,2),Re=k(Xe),Be=k(Re);Wo(Be,{size:17}),qt(),w(Re);var Oe=$(Re,2);{var Ne=Ue=>{var Ve=sR(),_t=xt(Ve),mt=k(_t,!0);w(_t);var ot=$(_t,2),it=$(ot,2),nt=k(it);{var gt=Lt=>{var ma=aR(),na=$(k(ma)),Ta=k(na);w(na),w(ma),ne(Qa=>W(Ta,`${Qa??""} s`),[()=>(e(B),x(()=>(e(B).wall_ms/1e3).toFixed(2)))]),J(Lt,ma)};_e(nt,Lt=>{e(B),x(()=>e(B).wall_ms!==void 0)&&Lt(gt)})}var dt=$(nt,2);{var It=Lt=>{var ma=iR(),na=$(k(ma)),Ta=k(na);w(na),w(ma),ne(Qa=>W(Ta,`${Qa??""} s`),[()=>(e(B),x(()=>(e(B).audio_duration_ms/1e3).toFixed(2)))]),J(Lt,ma)};_e(dt,Lt=>{e(B),x(()=>e(B).audio_duration_ms!==void 0)&&Lt(It)})}var Ut=$(dt,2);{var Rt=Lt=>{var ma=nR(),na=$(k(ma)),Ta=k(na,!0);w(na),w(ma),ne(Qa=>W(Ta,Qa),[()=>(e(B),x(()=>e(B).rtf.toFixed(3)))]),J(Lt,ma)};_e(Ut,Lt=>{e(B),x(()=>e(B).rtf!==void 0)&&Lt(Rt)})}var ya=$(Ut,2),xa=$(k(ya)),pa=k(xa,!0);w(xa),w(ya),w(it);var et=$(it,2),pt=k(et),ht=k(pt);Uc(ht,{size:15}),qt(),w(pt);var vt=$(pt,2),zt=k(vt);Uc(zt,{size:15}),qt(),w(vt),w(et),ne(()=>{W(mt,e(M)),he(ot,"src",e(q)),W(pa,e(A)),he(pt,"href",e(q)),he(vt,"href",e(P))}),J(Ue,Ve)},Ye=Ue=>{var Ve=rR();J(Ue,Ve)};_e(Oe,Ue=>{e(q)?Ue(Ne):Ue(Ye,-1)})}w(Xe),w(T),w(H),qi(H,Ue=>b(l,Ue),()=>e(l)),ne(Ue=>{L.disabled=r()||e(h),Z.disabled=r(),Te.disabled=r(),Ie.disabled=r(),be.disabled=Ue,W(Fe,e(h)?"Loading installed models...":e(v))},[()=>(Y(r()),e(h),e(m),e(d),e(g),e(u),x(()=>r()||e(h)||!e(m)||!e(d)||!e(g)||!e(u).trim()))]),re("click",L,G),re("change",Z,Ue=>b(m,Ue.currentTarget.files?.[0]||null)),za(Te,()=>e(p),Ue=>b(p,Ue)),za(Ie,()=>e(u),Ue=>b(u,Ue)),re("click",be,R),J(a,H),Bi()}const cR=Object.freeze(Object.defineProperty({__proto__:null,default:lR},Symbol.toStringTag,{value:"Module"}));async function dR(a,t,i){if(!a.length)throw new Error("Generate speech before assembling audio.");const n=new AudioContext({sampleRate:t});try{const s=[];for(const d of a){if(i.throwIfAborted(),!Number.isFinite(d.pause)||d.pause<0)throw new Error("Pauses must be zero or positive.");s.push({buffer:await n.decodeAudioData(await d.audio.arrayBuffer()),pause:d.pause})}const r=s[0].buffer.numberOfChannels;if(s.some(d=>d.buffer.numberOfChannels!==r))throw new Error("Chosen takes have different channel counts. Use compatible takes before assembly.");const o=s.reduce((d,g,h)=>d+g.buffer.length+(h<s.length-1?Math.round(g.pause*t):0),0),l=n.createBuffer(r,o,t);let c=0;for(const d of s){i.throwIfAborted();for(let g=0;g<r;g++)l.copyToChannel(d.buffer.getChannelData(g),g,c);c+=d.buffer.length+Math.round(d.pause*t)}return jc(l)}finally{await n.close()}}async function uR(a,t,i,n){if(!Number.isFinite(t.gainDb)||!Number.isFinite(t.peakDb)||t.peakDb>0)throw new Error("Enter a valid gain and a peak target at or below 0 dBFS.");const s=new AudioContext({sampleRate:i});try{const r=await s.decodeAudioData(await a.arrayBuffer());n.throwIfAborted();let o=0;for(let c=0;c<r.numberOfChannels;c++)for(const d of r.getChannelData(c))o=Math.max(o,Math.abs(d));const l=t.normalize&&o>0?Math.pow(10,t.peakDb/20)/o:Math.pow(10,t.gainDb/20);if(o*l>1.000001)throw new Error("This gain would clip the audio. Lower the gain or enable peak normalization.");for(let c=0;c<r.numberOfChannels;c++){const d=r.getChannelData(c);for(let g=0;g<d.length;g++)d[g]*=l}return jc(r)}finally{await s.close()}}async function fR(a,t,i){if(t==="wav")return a;if(!await Qy("opus"))throw new Error("This browser cannot encode Opus. Choose WAV or use a browser with Opus encoding support.");const n=new AudioContext,s=new au,r=new S2({format:new jf,target:s});try{const o=await n.decodeAudioData(await a.arrayBuffer());i.throwIfAborted();const l=new v2({codec:"opus",bitrate:128e3});if(r.addAudioTrack(l),await r.start(),await l.add(o),l.close(),i.throwIfAborted(),await r.finalize(),!s.buffer)throw new Error("The encoder returned no output.");return new Blob([s.buffer],{type:"audio/webm"})}catch(o){throw await r.cancel(),o}finally{await n.close()}}function U_(a,t,i,n=360){const s=Math.round(t*a.sampleRate),r=Math.min(Math.round(i*a.sampleRate),a.length-s),o=Math.min(n,r),l=Array.from({length:a.numberOfChannels},(c,d)=>a.getChannelData(d));return Array.from({length:o},(c,d)=>{let g=0,h=0;for(let m=s+Math.floor(d*r/o);m<s+Math.floor((d+1)*r/o);m++)for(const p of l)g=Math.min(g,p[m]),h=Math.max(h,p[m]);return[g,h]})}function ox(a,t,i,n=[]){const s=new Map;for(const d of i){if(!Number.isFinite(d.at)||d.at<0||d.at>a/t||!Number.isFinite(d.seconds)||d.seconds<=0)throw new Error("Invalid silence insertion.");const g=Math.round(d.at*t);s.set(g,[...s.get(g)||[],d])}const r=n.map(d=>{if(!Number.isFinite(d.start)||!Number.isFinite(d.end)||d.start<0||d.end>a/t||d.end<=d.start)throw new Error("Invalid audio removal.");return{start:Math.round(d.start*t),end:Math.round(d.end*t)}}).sort((d,g)=>d.start-g.start),o=[...new Set([0,a,...s.keys(),...r.flatMap(d=>[d.start,d.end])])].sort((d,g)=>d-g),l=[];let c=0;for(let d=0;d<o.length;d++){const g=o[d];for(const m of s.get(g)||[]){const p=Math.round(m.seconds*t);p&&(l.push({start:c,frames:p,sourceFrame:null,silenceId:m.id}),c+=p)}const h=o[d+1];h!==void 0&&h>g&&!r.some(m=>m.start<=g&&m.end>=h)&&(l.push({start:c,frames:h-g,sourceFrame:g}),c+=h-g)}return l}function lx(a,t,i,n=[]){const s=ox(t.length,t.sampleRate,i,n),r=s.reduce((l,c)=>l+c.frames,0);if(!r)throw new Error("The selection removes the entire recording. Leave some audio or inserted silence.");const o=a.createBuffer(t.numberOfChannels,r,t.sampleRate);for(const l of s)if(l.sourceFrame!==null)for(let c=0;c<t.numberOfChannels;c++)o.copyToChannel(t.getChannelData(c).subarray(l.sourceFrame,l.sourceFrame+l.frames),c,l.start);return o}var pR=ie('<span class="default-note svelte-1utfzu5">Project default</span>'),mR=ie('<article><button class="speaker-card svelte-1utfzu5"><span class="avatar svelte-1utfzu5"> </span><span class="identity svelte-1utfzu5"><strong class="svelte-1utfzu5"> </strong><small class="svelte-1utfzu5"> </small><!></span><!></button> <button class="edit-speaker icon svelte-1utfzu5"><!></button></article>'),gR=ie('<div class="empty-cast svelte-1utfzu5"><!> <h4 class="svelte-1utfzu5">Add your first speaker</h4> <p class="svelte-1utfzu5">Pick a model and a voice once, then use that speaker throughout your script.</p></div>'),hR=ie('<button class="text-button svelte-1utfzu5">Follow project default</button>'),_R=ie('<div class="assignment-summary svelte-1utfzu5"><span class="label svelte-1utfzu5">APPLY THIS SPEAKER</span><!><button class="svelte-1utfzu5"> </button> <p class="svelte-1utfzu5">Earlier recordings stay available for comparison.</p></div>'),vR=ie('<section class="speaker-panel svelte-1utfzu5" aria-label="Speakers"><header class="svelte-1utfzu5"><h3 class="svelte-1utfzu5">Speakers</h3> <button class="icon svelte-1utfzu5" aria-label="Add a speaker"><!></button></header> <p class="context svelte-1utfzu5"> </p> <div class="speaker-cast svelte-1utfzu5"><!> <!></div> <button class="add-speaker svelte-1utfzu5"><!>Add speaker</button> <p class="preset-help svelte-1utfzu5">Manage presets in Lib → Speakers.</p> <!></section> <!>',1);function bR(a,t){Ri(t,!1);const i=K(),n=K();let s=Se(t,"project",12),r=Se(t,"chunk",12),o=Se(t,"choices",8),l=Se(t,"voices",8),c=Se(t,"disabled",8,!1),d=Se(t,"onchange",8),g=Se(t,"onbusy",8),h=Se(t,"onerror",8),m=K([]),p=K(!1),u=K(null);function f(){c()||(b(u,null),b(p,!0))}async function _(z){await E2(z);const D=!s().speakers?.length;b(m,[z,...e(m).filter(Q=>Q.id!==z.id)]),s(s().speakers=s().speakers?.some(Q=>Q.id===z.id)?s().speakers.map(Q=>Q.id===z.id?z:Q):[...s().speakers||[],z],!0),s().defaultSpeakerId||s(s().defaultSpeakerId=z.id,!0),!e(u)&&r()&&!D&&r(r().speakerId=z.id,!0),d()()}function v(z){r()?r(r().speakerId=z.id,!0):s(s().defaultSpeakerId=z.id,!0),d()()}function y(){if(e(i)){s(s().defaultSpeakerId=e(i).id,!0);for(const z of s().chunks)z.speakerId=null;d()()}}Qn(()=>{let z=0;const D=C0.subscribe(async()=>{const Q=++z;try{const X=await G0();Q===z&&b(m,X)}catch(X){Q===z&&h()(`Could not open the speaker library: ${String(X)}`)}});return()=>{z++,D()}}),Ee(()=>(Y(s()),Y(r())),()=>{b(i,yo(s(),r()))}),Ee(()=>(Y(r()),Y(s())),()=>{b(n,r()?s().chunks.indexOf(r())+1:0)}),bn();var S={addSpeaker:f};en();var q=vR(),M=xt(q),P=k(M),B=$(k(P),2),A=k(B);Pr(A,{size:17}),w(B),w(P);var j=$(P,2),G=k(j,!0);w(j);var C=$(j,2),R=k(C);Mt(R,1,()=>(Y(s()),x(()=>s().speakers||[])),z=>z.id,(z,D)=>{var Q=mR();let X;var Z=k(Q),ue=k(Z),de=k(ue,!0);w(ue);var ae=$(ue),V=k(ae),pe=k(V,!0);w(V);var Ce=$(V),ce=k(Ce);w(Ce);var Te=$(Ce);{var ye=le=>{var xe=pR();J(le,xe)};_e(Te,le=>{Y(s()),e(D),x(()=>s().defaultSpeakerId===e(D).id)&&le(ye)})}w(ae);var Ie=$(ae);{var Je=le=>{km(le,{size:14})};_e(Ie,le=>{e(i),e(D),x(()=>e(i)?.id===e(D).id)&&le(Je)})}w(Z);var tt=$(Z,2),De=k(tt);rb(De,{size:14}),w(tt),w(Q),ne((le,xe,Ke)=>{X=ba(Q,1,"svelte-1utfzu5",null,X,{assigned:e(i)?.id===e(D).id}),he(Z,"aria-label",(e(D),x(()=>`Assign ${e(D).name}`))),he(Z,"aria-pressed",(e(i),e(D),x(()=>e(i)?.id===e(D).id))),Z.disabled=c(),W(de,le),W(pe,(e(D),x(()=>e(D).name))),W(ce,`${xe??""} · ${Ke??""}`),he(tt,"aria-label",(e(D),x(()=>`Edit ${e(D).name}`))),tt.disabled=c()},[()=>(e(D),x(()=>e(D).name.slice(0,1).toUpperCase())),()=>(Y(ec),e(D),x(()=>ec(e(D)))),()=>(e(D),x(()=>e(D).configuration.model.display_name.split(" (")[0]))]),re("click",Z,()=>v(e(D))),re("click",tt,()=>{b(u,e(D)),b(p,!0)}),J(z,Q)});var H=$(R,2);{var E=z=>{var D=gR(),Q=k(D);Wl(Q,{size:26}),qt(4),w(D),J(z,D)};_e(H,z=>{Y(s()),x(()=>!s().speakers?.length)&&z(E)})}w(C);var U=$(C,2),N=k(U);Pr(N,{size:14}),qt(),w(U);var L=$(U,4);{var I=z=>{var D=_R(),Q=$(k(D));{var X=de=>{var ae=hR();ne(()=>ae.disabled=c()),re("click",ae,()=>{r(r().speakerId=null,!0),d()()}),J(de,ae)};_e(Q,de=>{Y(r()),x(()=>r().speakerId)&&de(X)})}var Z=$(Q),ue=k(Z);w(Z),qt(2),w(D),ne(()=>{Z.disabled=c(),W(ue,`Use ${e(i),x(()=>e(i).name)??""} for all passages`)}),re("click",Z,y),J(z,D)};_e(L,z=>{e(i)&&r()&&z(I)})}w(M);var T=$(M,2);{var F=z=>{{let D=Yt(()=>(Y(s()),x(()=>(s().speakers?.length||0)+1)));P2(z,{get initial(){return e(u)},get saved(){return e(m)},get choices(){return o()},get voices(){return l()},get number(){return e(D)},onsave:_,onclose:()=>b(p,!1),get onbusy(){return g()}})}};_e(T,z=>{e(p)&&z(F)})}return ne(()=>{B.disabled=c(),W(G,r()?`Assign a speaker to passage ${e(n)}.`:"Choose the default speaker for your narration."),U.disabled=c()}),re("click",B,f),re("click",U,f),J(a,q),Il(t,"addSpeaker",f),Bi(S)}var yR=ie('<button class="icon svelte-zo1321" aria-label="Select multiple passages"><!></button>'),wR=ie('<p class="rail-help svelte-zo1321">Review each passage before continuing.</p>'),kR=ie('<div class="search-controls svelte-zo1321"><input aria-label="Search passages" placeholder="Find a passage…" class="svelte-zo1321"/><select aria-label="Filter passages" class="svelte-zo1321"><option>All passages</option><option>Without audio</option><option>Needs attention</option></select></div>'),xR=ie('<button><span class="number svelte-zo1321"> </span><span class="passage-copy svelte-zo1321"><span class="excerpt svelte-zo1321"> </span><small class="svelte-zo1321">Preview</small></span></button>'),SR=ie('<input class="bulk-checkbox svelte-zo1321" type="checkbox"/>'),TR=ie('<div><!><button class="passage-row svelte-zo1321"><span class="number svelte-zo1321"> </span><span class="passage-copy svelte-zo1321"><span class="excerpt svelte-zo1321"> </span><small class="svelte-zo1321"><span></span> </small></span></button></div>'),$R=ie('<div class="empty-outline svelte-zo1321"><span class="empty-number svelte-zo1321">01</span> <h4 class="svelte-zo1321">Your script, in passages</h4> <p class="svelte-zo1321">Write or import your text, then review how it splits here.</p></div>'),qR=ie('<p class="rail-help svelte-zo1321">No matching passages. Try another search or filter.</p>'),AR=ie("<!> <!>",1),CR=ie('<div class="pagination svelte-zo1321"><button aria-label="Previous passage page" class="svelte-zo1321"><!></button><span> </span><button aria-label="Next passage page" class="svelte-zo1321"><!></button></div>'),GR=ie('<label class="select-all svelte-zo1321"><input type="checkbox" aria-label="Select all matching passages" class="svelte-zo1321"/>Select all matches</label><button class="svelte-zo1321"> </button>',1),FR=ie('<footer class="svelte-zo1321"><!><!><button class="add-passage svelte-zo1321"><!>Add passage</button></footer>'),MR=ie('<section class="passage-navigator svelte-zo1321" aria-label="Passages"><header class="svelte-zo1321"><h3 class="svelte-zo1321">Passages <span class="svelte-zo1321"> </span></h3> <!></header> <!> <div class="passage-list svelte-zo1321" aria-label="Passage list"><!></div> <!></section>');function zR(a,t){Ri(t,!1);const i=K(),n=K(),s=K();let r=Se(t,"project",8),o=Se(t,"selectedId",8),l=Se(t,"disabled",8,!1),c=Se(t,"preview",8,null),d=Se(t,"previewIndex",8,0),g=Se(t,"checked",28,()=>new Set),h=Se(t,"onselect",8),m=Se(t,"onpreview",8),p=Se(t,"onadd",8),u=Se(t,"ongenerate",8),f=K(""),_=K("all"),v=K(0),y=K(!1);const S=40;function q(z,D){const Q=new Set(g());D?Q.add(z):Q.delete(z),g(Q)}Ee(()=>(Y(r()),e(f),e(_),Hn),()=>{b(i,r().chunks.filter(z=>z.text.toLowerCase().includes(e(f).toLowerCase())&&(e(_)==="all"||e(_)==="missing"&&!cs(z)||e(_)==="changed"&&!Hn(r(),z))))}),Ee(()=>e(i),()=>{b(n,Math.max(1,Math.ceil(e(i).length/S)))}),Ee(()=>(e(v),e(n)),()=>{e(v)>=e(n)&&b(v,e(n)-1)}),Ee(()=>(e(i),Y(o())),()=>{b(s,e(i).findIndex(z=>z.id===o()))}),Ee(()=>e(s),()=>{e(s)>=0&&b(v,Math.floor(e(s)/S))}),bn(),en();var M=MR(),P=k(M),B=k(P),A=$(k(B)),j=k(A,!0);w(A),w(B);var G=$(B,2);{var C=z=>{var D=yR(),Q=k(D);RS(Q,{size:15}),w(D),ne(()=>he(D,"aria-pressed",e(y))),re("click",D,()=>b(y,!e(y))),J(z,D)};_e(G,z=>{Y(r()),Y(c()),x(()=>r().chunks.length&&!c())&&z(C)})}w(P);var R=$(P,2);{var H=z=>{var D=wR();J(z,D)},E=z=>{var D=kR(),Q=k(D);Dt(Q);var X=$(Q),Z=k(X);Z.value=Z.__value="all";var ue=$(Z);ue.value=ue.__value="missing";var de=$(ue);de.value=de.__value="changed",w(X),w(D),za(Q,()=>e(f),ae=>b(f,ae)),re("input",Q,()=>b(v,0)),rs(X,()=>e(_),ae=>b(_,ae)),re("change",X,()=>b(v,0)),J(z,D)};_e(R,z=>{c()?z(H):(Y(r()),x(()=>r().chunks.length)&&z(E,1))})}var U=$(R,2),N=k(U);{var L=z=>{var D=bs(),Q=xt(D);Mt(Q,1,c,Qt,(X,Z,ue)=>{var de=xR();let ae;he(de,"aria-label",`Review passage ${ue+1}`);var V=k(de),pe=k(V,!0);w(V);var Ce=$(V),ce=k(Ce),Te=k(ce,!0);w(ce),qt(),w(Ce),w(de),ne(ye=>{ae=ba(de,1,"passage-row svelte-zo1321",null,ae,{current:d()===ue}),he(de,"aria-current",d()===ue?"true":void 0),W(pe,ye),W(Te,e(Z))},[()=>x(()=>String(ue+1).padStart(2,"0"))]),re("click",de,()=>m()(ue)),J(X,de)}),J(z,D)},I=z=>{var D=AR(),Q=xt(D);Mt(Q,1,()=>(e(i),e(v),x(()=>e(i).slice(e(v)*S,(e(v)+1)*S))),de=>de.id,(de,ae)=>{const V=Yt(()=>(Y(r()),e(ae),x(()=>r().chunks.indexOf(e(ae))))),pe=Yt(()=>(Y(Hn),Y(r()),e(ae),x(()=>Hn(r(),e(ae)))));var Ce=TR();let ce;var Te=k(Ce);{var ye=be=>{var ke=SR();Dt(ke),ne($e=>{he(ke,"aria-label",`Select passage ${e(V)+1}`),ke.disabled=l(),Dl(ke,$e)},[()=>(Y(g()),e(ae),x(()=>g().has(e(ae).id)))]),re("change",ke,$e=>q(e(ae).id,$e.currentTarget.checked)),J(be,ke)};_e(Te,be=>{e(y)&&be(ye)})}var Ie=$(Te),Je=k(Ie),tt=k(Je,!0);w(Je);var De=$(Je),le=k(De),xe=k(le,!0);w(le);var Ke=$(le),fe=k(Ke);let we;var me=$(fe);w(Ke),w(De),w(Ie),w(Ce),ne((be,ke,$e)=>{ce=ba(Ce,1,"passage-item svelte-zo1321",null,ce,{current:o()===e(ae).id}),he(Ie,"aria-label",`Edit passage ${e(V)+1}`),he(Ie,"aria-current",(Y(o()),e(ae),x(()=>o()===e(ae).id?"true":void 0))),Ie.disabled=l(),W(tt,be),W(xe,(e(ae),x(()=>e(ae).text||"Empty passage"))),we=ba(fe,1,"readiness svelte-zo1321",null,we,{ready:e(pe)}),W(me,`${ke??""} · ${$e??""}`)},[()=>(Y(e(V)),x(()=>String(e(V)+1).padStart(2,"0"))),()=>(Y(yo),Y(r()),e(ae),x(()=>yo(r(),e(ae))?.name||"No speaker")),()=>(Y(e(pe)),Y(cs),e(ae),x(()=>e(pe)?"Ready":cs(e(ae))?"Needs update":"No audio"))]),re("click",Ie,()=>h()(e(ae).id)),J(de,Ce)});var X=$(Q,2);{var Z=de=>{var ae=$R();J(de,ae)},ue=de=>{var ae=qR();J(de,ae)};_e(X,de=>{Y(r()),x(()=>!r().chunks.length)?de(Z):(e(i),x(()=>!e(i).length)&&de(ue,1))})}J(z,D)};_e(N,z=>{c()?z(L):z(I,-1)})}w(U);var T=$(U,2);{var F=z=>{var D=FR(),Q=k(D);{var X=V=>{var pe=CR(),Ce=k(pe),ce=k(Ce);cf(ce,{size:14}),w(Ce);var Te=$(Ce),ye=k(Te);w(Te);var Ie=$(Te),Je=k(Ie);df(Je,{size:14}),w(Ie),w(pe),ne(()=>{Ce.disabled=e(v)===0,W(ye,`${e(v)+1} / ${e(n)??""}`),Ie.disabled=e(v)===e(n)-1}),re("click",Ce,()=>Ou(v,-1)),re("click",Ie,()=>Ou(v)),J(V,pe)};_e(Q,V=>{e(n)>1&&V(X)})}var Z=$(Q);{var ue=V=>{var pe=GR(),Ce=xt(pe),ce=k(Ce);Dt(ce),qt(),w(Ce);var Te=$(Ce),ye=k(Te);w(Te),ne(Ie=>{Dl(ce,Ie),ce.disabled=l(),Te.disabled=(Y(l()),Y(g()),x(()=>l()||!g().size)),W(ye,`Generate selected (${Y(g()),x(()=>g().size)??""})`)},[()=>(e(i),Y(g()),x(()=>e(i).length>0&&e(i).every(Ie=>g().has(Ie.id))))]),re("change",ce,Ie=>{const Je=new Set(g());for(const tt of e(i))Ie.currentTarget.checked?Je.add(tt.id):Je.delete(tt.id);g(Je)}),re("click",Te,()=>u()([...g()])),J(V,pe)};_e(Z,V=>{e(y)&&V(ue)})}var de=$(Z),ae=k(de);Pr(ae,{size:14}),qt(),w(de),w(D),ne(()=>de.disabled=l()),re("click",de,function(...V){p()?.apply(this,V)}),J(z,D)};_e(T,z=>{Y(c()),Y(r()),x(()=>!c()&&r().chunks.length)&&z(F)})}w(M),ne(()=>W(j,(Y(c()),Y(r()),x(()=>c()?.length??r().chunks.length)))),J(a,M),Bi()}var ER=ie("<!>Stop preview",1),UR=ie("<!> ",1),cx=ie('<small class="svelte-1no116b">Choose up-to-date audio in Voice.</small>'),RR=ie('<div class="svelte-1no116b"><strong class="svelte-1no116b"> </strong> <p class="svelte-1no116b"> </p> <!></div>'),BR=ie('<p role="status">Reading the selected recordings…</p>'),PR=co('<rect y="0" height="160" class="inserted-gap svelte-1no116b"></rect><rect y="0" height="160" class="audio-region next svelte-1no116b"></rect>',1),jR=co('<line class="wave svelte-1no116b"></line>'),NR=co('<line class="wave next svelte-1no116b"></line>'),OR=co('<line y1="0" y2="160" class="edge svelte-1no116b"></line>'),DR=co('<line y1="0" y2="160" class="playhead svelte-1no116b"></line>'),IR=ie('<span class="gap-label svelte-1no116b"> </span><span> </span>',1),LR=ie('<div class="waveform"><svg viewBox="0 0 1000 160" preserveAspectRatio="none" role="img" class="svelte-1no116b"><rect x="0" y="0" height="160" class="audio-region svelte-1no116b"></rect><!><line x1="0" x2="1000" y1="80" y2="80" class="baseline svelte-1no116b"></line><!><!><line y1="0" y2="160" class="edge svelte-1no116b"></line><!><!></svg></div> <div class="wave-labels svelte-1no116b"><span> </span><!></div> <p class="wave-hint svelte-1no116b"> </p>',1),VR=ie('<div class="missing-audio svelte-1no116b"> </div>'),HR=ie('<div class="gap-controls svelte-1no116b"><label class="svelte-1no116b"> <span class="svelte-1no116b"> </span></label> <div class="pause-input svelte-1no116b"><button class="svelte-1no116b"><!></button> <input type="number" min="0" step="0.01" class="svelte-1no116b"/> <span class="svelte-1no116b">seconds</span> <button class="svelte-1no116b"><!></button></div> <button class="reset-pause svelte-1no116b"><!>Use default</button></div> <p class="click-hint svelte-1no116b"> </p>',1),WR=ie('<p role="alert" class="svelte-1no116b"> </p>'),QR=ie('<section class="boundary-editor svelte-1no116b" aria-label="Selected audio boundary"><header class="svelte-1no116b"><div><span class="eyebrow svelte-1no116b"> </span> <h4 class="svelte-1no116b"> </h4></div> <button class="listen svelte-1no116b"><!></button></header> <div class="passages svelte-1no116b"><div class="svelte-1no116b"><strong class="svelte-1no116b"> </strong> <p class="svelte-1no116b"> </p> <!></div> <!></div> <!> <!> <!></section>');function KR(a,t){Ri(t,!1);const i=K(),n=K(),s=K(),r=K(),o=K(),l=K(),c=K(),d=K(),g=K(),h=K();let m=Se(t,"project",8),p=Se(t,"chunk",12),u=Se(t,"next",8),f=Se(t,"index",8),_=Se(t,"increment",8),v=Se(t,"disabled",8,!1),y=Se(t,"active",8,!0),S=Se(t,"onchange",8),q=K(!1),M,P=K(),B=K(),A=K(),j=K(),G=K([]),C=K([]),R=K(!1),H=K(""),E=0,U=[],N=K(!1),L=K(0),I=0,T=0,F=K(0);async function z(Be,Oe){const Ne=++E;b(P,Be),b(B,Oe),Q(),b(A,void 0),b(j,void 0),b(G,[]),b(C,[]),b(R,!0),b(H,"");try{const Ye=Be?await M.decodeAudioData(await Be.arrayBuffer()):void 0,Ue=Oe?await M.decodeAudioData(await Oe.arrayBuffer()):void 0;if(Ne!==E)return;if(b(A,Ye),b(j,Ue),Ye&&b(G,U_(Ye,Math.max(0,Ye.duration-2),Math.min(2,Ye.duration))),Ue&&b(C,U_(Ue,0,Math.min(2,Ue.duration))),Ye&&Ue&&Ye.numberOfChannels!==Ue.numberOfChannels)throw new Error("The selected recordings have different channel counts. Choose compatible takes before joining them.")}catch(Ye){Ne===E&&b(H,`Could not read this boundary: ${String(Ye)}`)}finally{Ne===E&&b(R,!1)}}function D(Be){if(!Number.isFinite(_())||_()<=0){b(H,"Choose a positive pause increment.");return}b(H,""),p(p().pauseAfter=Math.max(0,Math.round((e(s)+Be)*1e6)/1e6),!0),S()()}function Q(){cancelAnimationFrame(I);for(const Be of U)Be.onended=null,Be.stop(),Be.disconnect();U=[],b(N,!1),b(L,0)}async function X(){if(!(!e(A)||u()&&!e(j))){if(!Number.isFinite(e(s))||e(s)<0){b(H,"Gap must be zero or positive.");return}Q(),b(H,"");try{if(document.querySelectorAll(".tts-app audio").forEach(Ue=>Ue.pause()),await M.resume(),!e(q)||!y()||v())return;const Be=M.currentTime+.03,Oe=Math.round(e(s)*m().assembly.sampleRate)/m().assembly.sampleRate,Ne=M.createBufferSource();if(Ne.buffer=e(A),Ne.connect(M.destination),Ne.start(Be,Math.max(0,e(A).duration-2),e(r)),U=[Ne],u()&&e(j)){const Ue=M.createBufferSource();Ue.buffer=e(j),Ue.connect(M.destination),Ue.start(Be+e(r)+Oe,0,e(o)),U.push(Ue)}b(F,e(s)),T=Be,b(N,!0),U[U.length-1].onended=Q;const Ye=()=>{b(L,Math.max(0,Math.min(e(l),M.currentTime-T))),e(N)&&(I=requestAnimationFrame(Ye))};Ye()}catch(Be){Q(),b(H,`Could not play this boundary: ${String(Be)}`)}}}Qn(()=>{M=new AudioContext({sampleRate:m().assembly.sampleRate}),b(q,!0),document.addEventListener("play",Q,!0)}),Ns(()=>{E++,e(q)&&(b(q,!1),Q(),document.removeEventListener("play",Q,!0),M.close())}),Ee(()=>Y(p()),()=>{b(i,cs(p()))}),Ee(()=>(Y(u()),cs),()=>{b(n,u()&&cs(u()))}),Ee(()=>(Y(p()),Y(m())),()=>{b(s,p().pauseAfter??m().assembly.pause)}),Ee(()=>e(A),()=>{b(r,e(A)?Math.min(2,e(A).duration):0)}),Ee(()=>e(j),()=>{b(o,e(j)?Math.min(2,e(j).duration):0)}),Ee(()=>(e(r),Y(u()),e(s),e(o)),()=>{b(l,e(r)+(u()?e(s)+e(o):0))}),Ee(()=>(e(l),e(r)),()=>{b(c,e(l)?e(r)/e(l)*1e3:0)}),Ee(()=>(e(l),Y(u()),e(s)),()=>{b(d,e(l)&&u()?e(s)/e(l)*1e3:0)}),Ee(()=>e(i),()=>{b(g,e(i)?.rendered?.audio||e(i)?.audio)}),Ee(()=>e(n),()=>{b(h,e(n)?.rendered?.audio||e(n)?.audio)}),Ee(()=>(e(q),e(g),e(P),e(h),e(B)),()=>{e(q)&&(e(g)!==e(P)||e(h)!==e(B))&&z(e(g),e(h))}),Ee(()=>(e(N),Y(y()),Y(v()),e(s),e(F)),()=>{e(N)&&(!y()||v()||e(s)!==e(F))&&Q()}),bn(),en();var Z=QR(),ue=k(Z),de=k(ue),ae=k(de),V=k(ae,!0);w(ae);var pe=$(ae,2),Ce=k(pe,!0);w(pe),w(de);var ce=$(de,2),Te=k(ce);{var ye=Be=>{var Oe=ER(),Ne=xt(Oe);Qo(Ne,{size:15}),qt(),J(Be,Oe)},Ie=Be=>{var Oe=UR(),Ne=xt(Oe);Bc(Ne,{size:15});var Ye=$(Ne,1,!0);ne(()=>W(Ye,u()?"Listen across boundary":"Listen to ending")),J(Be,Oe)};_e(Te,Be=>{e(N)?Be(ye):Be(Ie,-1)})}w(ce),w(ue);var Je=$(ue,2),tt=k(Je),De=k(tt),le=k(De);w(De);var xe=$(De,2),Ke=k(xe,!0);w(xe);var fe=$(xe,2);{var we=Be=>{var Oe=cx();J(Be,Oe)},me=oi(()=>(Y(Hn),Y(m()),Y(p()),x(()=>!Hn(m(),p()))));_e(fe,Be=>{e(me)&&Be(we)})}w(tt);var be=$(tt,2);{var ke=Be=>{var Oe=RR(),Ne=k(Oe),Ye=k(Ne);w(Ne);var Ue=$(Ne,2),Ve=k(Ue,!0);w(Ue);var _t=$(Ue,2);{var mt=it=>{var nt=cx();J(it,nt)},ot=oi(()=>(Y(Hn),Y(m()),Y(u()),x(()=>!Hn(m(),u()))));_e(_t,it=>{e(ot)&&it(mt)})}w(Oe),ne(()=>{W(Ye,`Passage ${f()+2} · ${e(n),x(()=>e(n)?.reference?.name||e(n)?.configuration.request.voice||e(n)?.configuration.model.display_name||"No recording")??""}`),W(Ve,(Y(u()),x(()=>u().text)))}),J(Be,Oe)};_e(be,Be=>{u()&&Be(ke)})}w(Je);var $e=$(Je,2);{var ge=Be=>{var Oe=BR();J(Be,Oe)},Me=Be=>{var Oe=LR(),Ne=xt(Oe),Ye=k(Ne),Ue=k(Ye),Ve=$(Ue);{var _t=ht=>{var vt=PR(),zt=xt(vt),Lt=$(zt);ne(()=>{he(zt,"x",e(c)),he(zt,"width",e(d)),he(Lt,"x",e(c)+e(d)),he(Lt,"width",1e3-e(c)-e(d))}),J(ht,vt)};_e(Ve,ht=>{u()&&ht(_t)})}var mt=$(Ve,2);Mt(mt,1,()=>e(G),Qt,(ht,vt,zt)=>{var Lt=jR();ne(()=>{he(Lt,"x1",(e(G),e(c),x(()=>(zt+.5)/e(G).length*e(c)))),he(Lt,"x2",(e(G),e(c),x(()=>(zt+.5)/e(G).length*e(c)))),he(Lt,"y1",(e(vt),x(()=>80-e(vt)[1]*68))),he(Lt,"y2",(e(vt),x(()=>80-e(vt)[0]*68)))}),J(ht,Lt)});var ot=$(mt);Mt(ot,1,()=>e(C),Qt,(ht,vt,zt)=>{var Lt=NR();ne(()=>{he(Lt,"x1",(e(c),e(d),e(C),x(()=>e(c)+e(d)+(zt+.5)/e(C).length*(1e3-e(c)-e(d))))),he(Lt,"x2",(e(c),e(d),e(C),x(()=>e(c)+e(d)+(zt+.5)/e(C).length*(1e3-e(c)-e(d))))),he(Lt,"y1",(e(vt),x(()=>80-e(vt)[1]*68))),he(Lt,"y2",(e(vt),x(()=>80-e(vt)[0]*68)))}),J(ht,Lt)});var it=$(ot),nt=$(it);{var gt=ht=>{var vt=OR();ne(()=>{he(vt,"x1",e(c)+e(d)),he(vt,"x2",e(c)+e(d))}),J(ht,vt)};_e(nt,ht=>{u()&&ht(gt)})}var dt=$(nt);{var It=ht=>{var vt=DR();ne(()=>{he(vt,"x1",e(L)/e(l)*1e3),he(vt,"x2",e(L)/e(l)*1e3)}),J(ht,vt)};_e(dt,ht=>{e(N)&&ht(It)})}w(Ye),w(Ne);var Ut=$(Ne,2),Rt=k(Ut),ya=k(Rt);w(Rt);var xa=$(Rt);{var pa=ht=>{var vt=IR(),zt=xt(vt),Lt=k(zt);w(zt);var ma=$(zt),na=k(ma);w(ma),ne((Ta,Qa)=>{W(Lt,`Inserted gap · ${Ta??""} s`),W(na,`Beginning · ${Qa??""} s`)},[()=>(e(s),x(()=>e(s).toFixed(2))),()=>(e(o),x(()=>e(o).toFixed(2)))]),J(ht,vt)};_e(xa,ht=>{u()&&ht(pa)})}w(Ut);var et=$(Ut,2),pt=k(et);w(et),ne((ht,vt)=>{he(Ne,"data-gap",e(s)),he(Ye,"aria-label",ht),he(Ue,"width",e(c)),he(it,"x1",e(c)),he(it,"x2",e(c)),W(ya,`Ending · ${vt??""} s`),W(pt,`Waveforms include silence already in the recordings. ${u()?"The shaded gap is extra silence you insert.":"The final passage has no trailing gap."}`)},[()=>(e(r),Y(f()),Y(u()),e(s),e(o),x(()=>`Actual audio waveform: last ${e(r).toFixed(2)} seconds of passage ${f()+1}${u()?`, ${e(s)} seconds inserted silence, first ${e(o).toFixed(2)} seconds of passage ${f()+2}`:""}`)),()=>(e(r),x(()=>e(r).toFixed(2)))]),J(Be,Oe)},Fe=Be=>{var Oe=VR(),Ne=k(Oe);w(Oe),ne(()=>W(Ne,`Generate and choose audio for ${u()?"both passages":"this passage"} in Voice to see the waveforms and hear the join.`)),J(Be,Oe)};_e($e,Be=>{e(R)?Be(ge):e(A)&&(!u()||e(j))?Be(Me,1):Be(Fe,-1)})}var qe=$($e,2);{var rt=Be=>{var Oe=HR(),Ne=xt(Oe),Ye=k(Ne),Ue=k(Ye),Ve=$(Ue),_t=k(Ve,!0);w(Ve),w(Ye);var mt=$(Ye,2),ot=k(mt),it=k(ot);LS(it,{size:15}),w(ot);var nt=$(ot,2);Dt(nt);var gt=$(nt,4),dt=k(gt);Pr(dt,{size:15}),w(gt),w(mt);var It=$(mt,2),Ut=k(It);Sm(Ut,{size:14}),qt(),w(It),w(Ne);var Rt=$(Ne,2),ya=k(Rt);w(Rt),ne((xa,pa,et)=>{he(Ye,"for",(Y(p()),x(()=>`gap-${p().id}`))),W(Ue,`Pause after passage ${f()+1}`),W(_t,(Y(p()),x(()=>p().pauseAfter===null?"Project default":"Custom pause"))),he(ot,"aria-label",xa),ot.disabled=v()||e(s)===0,he(nt,"id",(Y(p()),x(()=>`gap-${p().id}`))),he(nt,"aria-label",`Pause after chunk ${f()+1}`),Gi(nt,e(s)),nt.disabled=v(),he(gt,"aria-label",pa),gt.disabled=v(),It.disabled=(Y(v()),Y(p()),x(()=>v()||p().pauseAfter===null)),W(ya,`Use + / − to adjust by ${et??""} s, or enter an exact pause. Set 0 for no pause.`)},[()=>(Y(_()),x(()=>`Shorten pause by ${_().toFixed(2)} seconds`)),()=>(Y(_()),x(()=>`Lengthen pause by ${_().toFixed(2)} seconds`)),()=>(Y(_()),x(()=>_().toFixed(2)))]),re("click",ot,()=>D(-_())),re("change",nt,xa=>{const pa=xa.currentTarget.valueAsNumber;if(!Number.isFinite(pa)||pa<0){b(H,"Enter a zero or positive pause.");return}b(H,""),p(p().pauseAfter=pa,!0),S()()}),re("click",gt,()=>D(_())),re("click",It,()=>{p(p().pauseAfter=null,!0),S()()}),J(Be,Oe)};_e(qe,Be=>{u()&&Be(rt)})}var Xe=$(qe,2);{var Re=Be=>{var Oe=WR(),Ne=k(Oe,!0);w(Oe),ne(()=>W(Ne,e(H))),J(Be,Oe)};_e(Xe,Be=>{e(H)&&Be(Re)})}w(Z),ne(()=>{W(V,u()?"LISTEN TO THE JOIN":"END OF NARRATION"),W(Ce,u()?`Passage ${f()+1} → ${f()+2}`:`Passage ${f()+1} · final passage`),ce.disabled=(Y(v()),e(R),e(A),Y(u()),e(j),x(()=>v()||e(R)||!e(A)||!!u()&&!e(j)||!!e(A)&&!!e(j)&&e(A).numberOfChannels!==e(j).numberOfChannels)),W(le,`Passage ${f()+1} · ${e(i),x(()=>e(i)?.reference?.name||e(i)?.configuration.request.voice||e(i)?.configuration.model.display_name||"No recording")??""}`),W(Ke,(Y(p()),x(()=>p().text)))}),re("click",ce,()=>e(N)?Q():X()),J(a,Z),Bi()}var YR=co('<rect y="0" height="150" role="button" tabindex="0"></rect>'),JR=co('<line class="wave svelte-1dg2w50"></line>'),XR=co('<rect width="1000" height="150" class="wave-bg svelte-1dg2w50"></rect><!><rect class="range-selection svelte-1dg2w50" y="0" height="150"></rect><line class="baseline svelte-1dg2w50" x1="0" x2="1000" y1="75" y2="75"></line><!><line class="playhead svelte-1dg2w50" y1="0" y2="150"></line>',1),ZR=ie('<p role="status">Reading this take…</p>'),eB=ie("<option> </option>"),tB=ie("<button> </button>"),aB=ie('<div class="silence-list svelte-1dg2w50" aria-label="Inserted silences"></div>'),iB=ie('<p role="alert" class="svelte-1dg2w50"> </p>'),nB=ie('<section class="wave-editor svelte-1dg2w50" aria-label="Chunk waveform editor"><header class="svelte-1dg2w50"><div><h4 class="svelte-1dg2w50">Edit this take’s audio</h4><p class="svelte-1dg2w50">Click to place the playhead and add silence. Drag across a gap to select and delete it. Your original recording stays unchanged.</p></div><span class="svelte-1dg2w50"> </span></header> <div class="edit-toolbar svelte-1dg2w50"><button aria-label="Zoom out" class="svelte-1dg2w50"><!></button><span class="zoom svelte-1dg2w50"> </span><button aria-label="Zoom in" class="svelte-1dg2w50"><!></button><button class="svelte-1dg2w50">Fit recording</button> <button class="svelte-1dg2w50"><!>Undo</button><button class="svelte-1dg2w50"><!>Redo</button></div> <div class="viewport svelte-1dg2w50"><div class="wave-content svelte-1dg2w50"><svg viewBox="0 0 1000 150" preserveAspectRatio="none" role="slider" tabindex="0" aria-label="Audio waveform playhead" aria-valuemin="0" class="svelte-1dg2w50"><!></svg></div></div> <div class="ruler svelte-1dg2w50"><span class="svelte-1dg2w50"> </span><span class="svelte-1dg2w50"> </span><span class="svelte-1dg2w50"> </span></div> <!> <div class="insert-toolbar svelte-1dg2w50"><label class="svelte-1dg2w50">Playhead (seconds)<input aria-label="Audio playhead seconds" type="number" min="0" step="0.01" class="svelte-1dg2w50"/></label><label class="svelte-1dg2w50">Add per click<select aria-label="Insert silence increment" class="svelte-1dg2w50"></select></label><button class="insert svelte-1dg2w50"><!> </button><button class="svelte-1dg2w50">Remove selected silence</button></div> <div class="range-toolbar svelte-1dg2w50"><label class="svelte-1dg2w50">Selection start (s)<input aria-label="Selection start seconds" type="number" min="0" step="0.01" class="svelte-1dg2w50"/></label><label class="svelte-1dg2w50">Selection end (s)<input aria-label="Selection end seconds" type="number" min="0" step="0.01" class="svelte-1dg2w50"/></label><button class="svelte-1dg2w50">Delete selected gap / range</button><button class="svelte-1dg2w50">Clear selection</button></div> <p class="selection-hint svelte-1dg2w50">Drag to select, or Shift-click to extend a selection. Delete removes all audio in that range, including any speech. Undo restores it.</p> <audio controls="" aria-label="Edited take playback" class="svelte-1dg2w50"></audio> <button class="play-cursor svelte-1dg2w50"><!>Play from playhead</button> <!> <!></section>');function sB(a,t){Ri(t,!1);const i=K(),n=K(),s=K(),r=K(),o=K(),l=K(),c=K(),d=K(),g=K(),h=K();let m=Se(t,"take",12),p=Se(t,"sampleRate",8),u=Se(t,"increment",8),f=Se(t,"disabled",8,!1),_=Se(t,"active",8,!0),v=Se(t,"onchange",8),y=Se(t,"onincrement",8),S,q=K(),M=K(),P=K(!0),B=!1,A=K(""),j=K(0),G=K(""),C=K(0),R=K(0),H=0,E=0,U="",N=K(!1),L=K(1),I=K(0),T=K(700),F=K(),z=K(),D=K(""),Q=K(),X,Z=K(0);function ue(He){if(!Number.isFinite(He)){b(A,"Enter a valid playhead time.");return}e(M)&&b(A,""),b(j,Math.max(0,Math.min(e(i),He))),e(z)&&Ct(z,e(z).currentTime=e(j))}function de(){b(I,e(i)&&e(F)?e(F).scrollLeft/(e(T)*e(L))*e(i):0)}async function ae(He){b(L,Math.max(1,Math.min(64,He))),await Fs(),Ct(F,e(F).scrollLeft=Math.max(0,e(j)/e(i)*e(T)*e(L)-e(T)/2)),de()}function V(He){const Gt=e(c).find(Pa=>Pa.id===He);b(G,He),ue(Gt.start+Gt.seconds/2),Fs().then(()=>{Ct(F,e(F).scrollLeft=Math.max(0,e(j)/e(i)*e(T)*e(L)-e(T)/2)),de()})}function pe(He,Gt,Pa){e(z).pause();try{const Sa=m().rendered?.audio,ua=[...He.silences].sort((qa,Qe)=>qa.at-Qe.at),Ot=He.removed||[],Ea=ua.length>0||Ot.length>0,wa=Ea?lx(S,e(q),ua,Ot):e(q),$a=Ea?jc(wa):void 0;m(m().editing={silences:ua,removed:Ot,undo:Gt,redo:Pa},!0),m(m().rendered=$a?{audio:$a,duration:wa.duration}:void 0,!0),b(M,wa),b(j,Math.min(e(j),e(M).duration)),b(G,""),b(C,b(R,0)),b(A,""),v()(Sa),Fs().then(()=>{B||(de(),e(z)&&Ct(z,e(z).currentTime=e(j)))})}catch(Sa){b(A,`Could not edit this recording: ${String(Sa)}`)}}function Ce(){if(!Number.isFinite(u())||u()<=0){b(A,"Choose a positive silence increment.");return}const He=structuredClone(e(r)),Gt=Math.round(e(j)*e(q).sampleRate),Pa=e(l).find(Sa=>Gt>=Sa.start&&Gt<Sa.start+Sa.frames)||e(l)[e(l).length-1];if(Pa.sourceFrame===null)He.find(Sa=>Sa.id===Pa.silenceId).seconds+=u();else{const Sa=(Pa.sourceFrame+Math.min(Pa.frames,Math.max(0,Gt-Pa.start)))/e(q).sampleRate;He.push({id:crypto.randomUUID(),at:Sa,seconds:u()})}pe({silences:He,removed:e(o)},[...m().editing?.undo||[],structuredClone({silences:e(r),removed:e(o)})],[])}function ce(){b(j,e(c).find(He=>He.id===e(G)).start),pe({silences:e(r).filter(He=>He.id!==e(G)),removed:e(o)},[...m().editing?.undo||[],structuredClone({silences:e(r),removed:e(o)})],[])}function Te(){if(!Number.isFinite(e(d))||!Number.isFinite(e(g))||e(d)<0||e(g)>e(i)||e(g)<=e(d)){b(A,"Select a valid audio range.");return}const He=e(q).sampleRate,Gt=Math.round(e(d)*He),Pa=Math.round(e(g)*He),Sa=structuredClone(e(r)),ua=structuredClone(e(o));for(const Ot of e(l)){const Ea=Math.max(Gt,Ot.start),wa=Math.min(Pa,Ot.start+Ot.frames);if(!(wa<=Ea))if(Ot.sourceFrame===null){const $a=Sa.find(qa=>qa.id===Ot.silenceId);$a.seconds=Math.max(0,Math.round($a.seconds*He)-(wa-Ea))/He}else ua.push({start:(Ot.sourceFrame+Ea-Ot.start)/He,end:(Ot.sourceFrame+wa-Ot.start)/He})}b(j,e(d)),pe({silences:Sa.filter(Ot=>Ot.seconds>0),removed:ua},[...m().editing?.undo||[],structuredClone({silences:e(r),removed:e(o)})],[])}function ye(){const He=m().editing.undo,Gt=He[He.length-1];pe(structuredClone(Array.isArray(Gt)?{silences:Gt}:Gt),He.slice(0,-1),[...m().editing?.redo||[],structuredClone({silences:e(r),removed:e(o)})])}function Ie(){const He=m().editing.redo,Gt=He[He.length-1];pe(structuredClone(Array.isArray(Gt)?{silences:Gt}:Gt),[...m().editing?.undo||[],structuredClone({silences:e(r),removed:e(o)})],He.slice(0,-1))}function Je(He){return Math.max(0,Math.min(e(i),e(I)+(He.clientX-He.currentTarget.getBoundingClientRect().left)/e(T)*e(n)))}function tt(He){f()||e(P)||!e(M)||(e(z).pause(),H=Je(He),E=He.clientX,U=He.target.getAttribute("data-silence")||"",b(N,!0),He.currentTarget.setPointerCapture(He.pointerId))}function De(He){e(N)&&Math.abs(He.clientX-E)>3&&(b(G,""),b(C,H),b(R,Je(He)))}function le(He){e(N)&&(b(N,!1),Math.abs(He.clientX-E)>3?(b(C,H),b(R,Je(He)),ue(Math.min(e(C),e(R)))):He.shiftKey?(b(C,e(j)),b(R,Je(He))):(b(C,b(R,0)),U?V(U):(b(G,""),ue(Je(He)))))}function xe(){document.querySelectorAll(".tts-app audio").forEach(Gt=>{Gt!==e(z)&&Gt.pause()});const He=()=>{b(j,e(z).currentTime),b(Z,requestAnimationFrame(He))};cancelAnimationFrame(e(Z)),He()}Qn(()=>{S=new AudioContext({sampleRate:p()}),X=new ResizeObserver(He=>{b(T,He[0].contentRect.width),de()}),X.observe(e(F)),(async()=>{try{if(b(q,await S.decodeAudioData(await m().audio.arrayBuffer())),B)return;b(M,e(r).length||e(o).length?lx(S,e(q),e(r),e(o)):e(q))}catch(He){B||b(A,`Could not read this recording: ${String(He)}`)}finally{B||b(P,!1)}})()}),Ns(()=>{B=!0,cancelAnimationFrame(e(Z)),e(z)?.pause(),X?.disconnect(),e(D)&&URL.revokeObjectURL(e(D)),S&&S.close()}),Ee(()=>e(M),()=>{b(i,e(M)?.duration||0)}),Ee(()=>(e(i),e(L)),()=>{b(n,e(i)/e(L))}),Ee(()=>(e(M),e(I),e(n),e(i),e(T)),()=>{b(s,e(M)?U_(e(M),e(I),Math.min(e(n),e(i)-e(I)),Math.min(1e3,Math.round(e(T)))):[])}),Ee(()=>Y(m()),()=>{b(r,m().editing?.silences||[])}),Ee(()=>Y(m()),()=>{b(o,m().editing?.removed||[])}),Ee(()=>(e(q),e(r),e(o)),()=>{b(l,e(q)?ox(e(q).length,e(q).sampleRate,e(r),e(o)):[])}),Ee(()=>(e(l),e(q)),()=>{b(c,e(l).filter(He=>He.silenceId).map(He=>({id:He.silenceId,start:He.start/e(q).sampleRate,seconds:He.frames/e(q).sampleRate})))}),Ee(()=>(e(C),e(R)),()=>{b(d,Math.min(e(C),e(R)))}),Ee(()=>(e(C),e(R)),()=>{b(g,Math.max(e(C),e(R)))}),Ee(()=>Y(m()),()=>{b(h,m().rendered?.audio||m().audio)}),Ee(()=>(e(h),e(Q),e(D)),()=>{e(h)!==e(Q)&&(e(D)&&URL.revokeObjectURL(e(D)),b(Q,e(h)),b(D,URL.createObjectURL(e(h))))}),Ee(()=>(Y(_()),Y(f()),e(z)),()=>{(!_()||f())&&e(z)?.pause()}),bn(),en();var Ke=nB(),fe=k(Ke),we=$(k(fe)),me=k(we);w(we),w(fe);var be=$(fe,2),ke=k(be),$e=k(ke);kT($e,{size:16}),w(ke);var ge=$(ke),Me=k(ge);w(ge);var Fe=$(ge),qe=k(Fe);yT(qe,{size:16}),w(Fe);var rt=$(Fe),Xe=$(rt,2),Re=k(Xe);uT(Re,{size:15}),qt(),w(Xe);var Be=$(Xe),Oe=k(Be);KS(Oe,{size:15}),qt(),w(Be),w(be);var Ne=$(be,2),Ye=k(Ne);let Ue;var Ve=k(Ye),_t=k(Ve);{var mt=He=>{var Gt=XR(),Pa=$(xt(Gt));Mt(Pa,1,()=>e(c),Qt,(Ea,wa)=>{var $a=YR();let qa;ne(Qe=>{qa=ba($a,0,"silence-region svelte-1dg2w50",null,qa,{chosen:e(wa).id===e(G)}),he($a,"x",(e(wa),e(I),e(n),x(()=>(e(wa).start-e(I))/e(n)*1e3))),he($a,"width",(e(wa),e(n),x(()=>e(wa).seconds/e(n)*1e3))),he($a,"data-silence",(e(wa),x(()=>e(wa).id))),he($a,"aria-label",Qe)},[()=>(e(wa),x(()=>`Select inserted silence at ${e(wa).start.toFixed(2)} seconds`))]),re("click",$a,J4(()=>V(e(wa).id))),re("keydown",$a,Qe=>{(Qe.key==="Enter"||Qe.key===" ")&&(Qe.preventDefault(),Qe.stopPropagation(),V(e(wa).id))}),J(Ea,$a)});var Sa=$(Pa),ua=$(Sa,2);Mt(ua,1,()=>e(s),Qt,(Ea,wa,$a)=>{var qa=JR();ne(()=>{he(qa,"x1",(e(s),x(()=>($a+.5)/e(s).length*1e3))),he(qa,"x2",(e(s),x(()=>($a+.5)/e(s).length*1e3))),he(qa,"y1",(e(wa),x(()=>75-e(wa)[1]*65))),he(qa,"y2",(e(wa),x(()=>75-e(wa)[0]*65)))}),J(Ea,qa)});var Ot=$(ua);ne(()=>{he(Sa,"x",(e(d)-e(I))/e(n)*1e3),he(Sa,"width",(e(g)-e(d))/e(n)*1e3),he(Ot,"x1",(e(j)-e(I))/e(n)*1e3),he(Ot,"x2",(e(j)-e(I))/e(n)*1e3)}),J(He,Gt)};_e(_t,He=>{e(M)&&He(mt)})}w(Ve),w(Ye),w(Ne),qi(Ne,He=>b(F,He),()=>e(F));var ot=$(Ne,2),it=k(ot),nt=k(it);w(it);var gt=$(it),dt=k(gt);w(gt);var It=$(gt),Ut=k(It);w(It),w(ot);var Rt=$(ot,2);{var ya=He=>{var Gt=ZR();J(He,Gt)};_e(Rt,He=>{e(P)&&He(ya)})}var xa=$(Rt,2),pa=k(xa),et=$(k(pa));Dt(et),w(pa);var pt=$(pa),ht=$(k(pt));Mt(ht,4,()=>[.05,.1,.25,.5,1],Qt,(He,Gt)=>{var Pa=eB(),Sa=k(Pa);w(Pa);var ua={};ne(Ot=>{W(Sa,`+${Ot??""} s`),ua!==(ua=Gt)&&(Pa.value=(Pa.__value=Gt)??"")},[()=>x(()=>Gt.toFixed(2))]),J(He,Pa)}),w(ht);var vt;Vn(ht),w(pt);var zt=$(pt),Lt=k(zt);Pr(Lt,{size:15});var ma=$(Lt);w(zt);var na=$(zt);w(xa);var Ta=$(xa,2),Qa=k(Ta),li=$(k(Qa));Dt(li),w(Qa);var hi=$(Qa),fa=$(k(hi));Dt(fa),w(hi);var ti=$(hi),Di=$(ti);w(Ta);var Ai=$(Ta,4);qi(Ai,He=>b(z,He),()=>e(z));var ui=$(Ai,2),Ia=k(ui);Bc(Ia,{size:14}),qt(),w(ui);var Yi=$(ui,2);{var hn=He=>{var Gt=aB();Mt(Gt,5,()=>e(c),Qt,(Pa,Sa)=>{var ua=tB();let Ot;var Ea=k(ua);w(ua),ne((wa,$a)=>{Ot=ba(ua,1,"svelte-1dg2w50",null,Ot,{selected:e(Sa).id===e(G)}),W(Ea,`Silence ${wa??""}–${$a??""} s`)},[()=>(e(Sa),x(()=>e(Sa).start.toFixed(2))),()=>(e(Sa),x(()=>(e(Sa).start+e(Sa).seconds).toFixed(2)))]),re("click",ua,()=>V(e(Sa).id)),J(Pa,ua)}),w(Gt),J(He,Gt)};_e(Yi,He=>{e(c),x(()=>e(c).length)&&He(hn)})}var un=$(Yi,2);{var rn=He=>{var Gt=iB(),Pa=k(Gt,!0);w(Gt),ne(()=>W(Pa,e(A))),J(He,Gt)};_e(un,He=>{e(A)&&He(rn)})}w(Ke),ne((He,Gt,Pa,Sa,ua,Ot,Ea)=>{W(me,`${He??""} s ${e(r),e(o),x(()=>e(r).length||e(o).length?"· Edited":"· Original")??""}`),ke.disabled=e(P)||!e(M)||e(L)===1,W(Me,`${e(L)??""}×`),Fe.disabled=e(P)||!e(M)||e(L)===64,rt.disabled=e(P)||!e(M),Xe.disabled=(Y(f()),e(P),Y(m()),x(()=>f()||e(P)||!m().editing?.undo.length)),Be.disabled=(Y(f()),e(P),Y(m()),x(()=>f()||e(P)||!m().editing?.redo.length)),Ue=Hp(Ye,"",Ue,{width:`${e(L)*100}%`}),he(Ve,"width",e(T)),he(Ve,"aria-valuemax",e(i)),he(Ve,"aria-valuenow",e(j)),he(Ve,"aria-valuetext",Gt),W(nt,`${Pa??""} s`),W(dt,`Visible ${Sa??""} s · scroll horizontally to pan`),W(Ut,`${ua??""} s`),he(et,"max",e(i)),Gi(et,Ot),et.disabled=e(P),ht.disabled=f(),vt!==(vt=u())&&(ht.value=(ht.__value=u())??"",An(ht,u())),zt.disabled=f()||e(P)||!e(M),W(ma,`Insert ${Ea??""} s at playhead`),na.disabled=f()||e(P)||!e(G),he(li,"max",e(i)),li.disabled=e(P)||f(),he(fa,"max",e(i)),fa.disabled=e(P)||f(),ti.disabled=f()||e(P)||!e(M)||e(g)<=e(d),Di.disabled=e(g)<=e(d),he(Ai,"src",e(D)),ui.disabled=e(P)||f()||!e(M)},[()=>(e(i),x(()=>e(i).toFixed(2))),()=>(e(j),x(()=>`${e(j).toFixed(3)} seconds`)),()=>(e(I),x(()=>e(I).toFixed(2))),()=>(e(n),x(()=>e(n).toFixed(2))),()=>(e(i),e(I),e(n),x(()=>Math.min(e(i),e(I)+e(n)).toFixed(2))),()=>(e(j),x(()=>e(j).toFixed(3))),()=>(Y(u()),x(()=>u().toFixed(2)))]),re("click",ke,()=>ae(e(L)/2)),re("click",Fe,()=>ae(e(L)*2)),re("click",rt,()=>ae(1)),re("click",Xe,ye),re("click",Be,Ie),re("pointerdown",Ve,tt),re("pointermove",Ve,De),re("pointerup",Ve,le),re("pointercancel",Ve,()=>b(N,!1)),re("keydown",Ve,He=>{(He.key==="ArrowLeft"||He.key==="ArrowRight")&&(He.preventDefault(),He.shiftKey?(e(g)===e(d)&&b(C,e(j)),b(R,Math.max(0,Math.min(e(i),e(j)+(He.key==="ArrowRight"?.1:-.1))))):b(C,b(R,0)),ue(e(j)+(He.key==="ArrowRight"?1:-1)*(He.shiftKey?.1:.01))),(He.key==="Delete"||He.key==="Backspace")&&e(g)>e(d)&&!f()&&(He.preventDefault(),Te()),He.key==="Home"&&(He.preventDefault(),ue(0)),He.key==="End"&&(He.preventDefault(),ue(e(i)))}),re("scroll",Ne,de),re("change",et,He=>ue(He.currentTarget.valueAsNumber)),re("change",ht,He=>y()(Number(He.currentTarget.value))),re("click",zt,Ce),re("click",na,ce),za(li,()=>e(C),He=>b(C,He)),za(fa,()=>e(R),He=>b(R,He)),re("click",ti,Te),re("click",Di,()=>b(C,b(R,0))),re("play",Ai,xe),re("pause",Ai,()=>cancelAnimationFrame(e(Z))),re("ended",Ai,()=>cancelAnimationFrame(e(Z))),re("click",ui,()=>{Ct(z,e(z).currentTime=e(j)),e(z).play().catch(He=>b(A,String(He)))}),J(a,Ke),Bi()}var rB=ie('<input class="project-title svelte-1szouna" aria-label="Project title"/>'),oB=ie('<h2 class="svelte-1szouna">Narration</h2>'),lB=ie('<button><span class="step-number svelte-1szouna"><!></span> </button>'),cB=ie('<nav class="pipeline svelte-1szouna" aria-label="Narration steps"></nav>'),Qf=ie("<option> </option>"),dB=ie('<p class="notice svelte-1szouna" role="status">Opening your projects…</p>'),uB=ie('<div class="error svelte-1szouna" role="alert"><span class="svelte-1szouna"> </span><button aria-label="Dismiss error" class="svelte-1szouna">×</button></div>'),fB=ie('<span class="project-progress svelte-1szouna"> </span>'),pB=ie('<button class="archive-trigger svelte-1szouna"> </button>'),mB=ie('<button class="text-button svelte-1szouna">Edit full script</button>'),gB=ie('<label class="import-button svelte-1szouna"><!>Import text<input aria-label="Import text file" type="file" accept=".txt,.md,.markdown,text/plain,text/markdown" class="svelte-1szouna"/></label>'),hB=ie('<textarea class="writing-surface svelte-1szouna" readonly=""></textarea> <div class="editor-meta svelte-1szouna"><span class="svelte-1szouna"> </span><span class="svelte-1szouna">Preview</span></div>',1),_B=ie('<textarea class="writing-surface svelte-1szouna" aria-label="Script text"></textarea> <div class="editor-meta svelte-1szouna"><span class="svelte-1szouna"> </span><span class="svelte-1szouna">TXT & Markdown</span></div>',1),vB=ie('<div class="editor-heading svelte-1szouna"><h3 class="svelte-1szouna"> </h3> <!></div> <!>',1),bB=ie('<span class="attention svelte-1szouna"> </span>'),yB=ie('<audio controls="" aria-label="Selected take playback" class="svelte-1szouna"></audio>'),wB=ie('<button class="svelte-1szouna"> </button><button class="svelte-1szouna"><!>Edit audio</button>',1),kB=ie('<div class="editor-heading svelte-1szouna"><div class="passage-heading svelte-1szouna"><span class="eyebrow svelte-1szouna"> </span> <h3 class="svelte-1szouna"> </h3></div> <div class="passage-traverse svelte-1szouna"><button aria-label="Previous passage" class="svelte-1szouna"><!></button><button aria-label="Next passage" class="svelte-1szouna"><!></button></div></div> <label class="sr-only svelte-1szouna">Text to read</label><textarea class="writing-surface passage-text svelte-1szouna"></textarea> <div class="editor-meta svelte-1szouna"><span> </span><span class="svelte-1szouna"> </span> <details class="passage-actions svelte-1szouna"><summary class="svelte-1szouna">Edit passage<!></summary> <div class="svelte-1szouna"><button class="svelte-1szouna"><!>Split at cursor</button><button class="svelte-1szouna"><!>Join with next</button><button class="danger svelte-1szouna"><!>Remove passage</button></div></details></div> <section class="audio-dock svelte-1szouna" aria-label="Passage audio"><div class="audio-dock-heading svelte-1szouna"><h4 class="svelte-1szouna"> </h4> <span class="svelte-1szouna"> </span><!></div> <!> <div class="local-actions svelte-1szouna"><button class="svelte-1szouna"><!> </button><!></div></section>',1),xB=ie('<div class="empty-state svelte-1szouna"><!> <h3 class="svelte-1szouna">Add your script first</h3> <button class="svelte-1szouna">Go to script</button></div>'),SB=ie('<div class="notice svelte-1szouna"> <button class="svelte-1szouna">Review recordings</button></div>'),TB=ie('<div class="assembly-dock svelte-1szouna"><h4 class="svelte-1szouna"> </h4> <audio controls="" aria-label="Combined narration playback" class="svelte-1szouna"></audio></div>'),$B=ie('<div class="editor-heading svelte-1szouna"><h3 class="svelte-1szouna">Listen to the join</h3> <div class="passage-traverse svelte-1szouna"><button aria-label="Previous passage" class="svelte-1szouna"><!></button><button aria-label="Next passage" class="svelte-1szouna"><!></button></div></div> <div class="arrange-content svelte-1szouna"><!><!></div> <div class="local-actions order-actions svelte-1szouna"><button class="svelte-1szouna"><!>Move earlier</button><button class="svelte-1szouna"><!>Move later</button><button class="svelte-1szouna">Edit passage</button></div> <!>',1),qB=ie('<audio controls="" aria-label="Full narration playback" class="svelte-1szouna"></audio>'),AB=ie('<div class="processed-preview svelte-1szouna"><h4 class="svelte-1szouna"> </h4> <audio controls="" aria-label="Processed narration playback" class="svelte-1szouna"></audio></div>'),CB=ie('<div class="editor-heading svelte-1szouna"><h3 class="svelte-1szouna">One final listen</h3> <span class="eyebrow svelte-1szouna"> </span></div> <div class="final-preview svelte-1szouna"><!> <h3 class="svelte-1szouna"> </h3> <p class="svelte-1szouna"> </p> <!><!></div>',1),GB=ie('<div class="settings-content svelte-1szouna"><h3 class="svelte-1szouna">Script preparation</h3> <p class="svelte-1szouna">Each passage gets its own recording. Paragraphs are a good place to start.</p> <label class="svelte-1szouna">Split by<select aria-label="Split method" class="svelte-1szouna"><option>Paragraphs</option><option>Sentences</option><option>Text length</option></select></label><label class="svelte-1szouna">Maximum characters per passage<input aria-label="Chunk size" type="number" min="40" step="10" class="svelte-1szouna"/></label> <div class="rail-note svelte-1szouna"><h4 class="svelte-1szouna">Next: speakers</h4> <p class="svelte-1szouna">Create a named speaker by choosing a model and voice. Reuse that speaker across your passages.</p></div></div>'),FB=ie('<div class="settings-content svelte-1szouna"><h3 class="svelte-1szouna">Pauses & audio</h3> <label class="svelte-1szouna">Default pause (seconds)<input aria-label="Default pause" type="number" min="0" step="0.05" class="svelte-1szouna"/></label> <p class="svelte-1szouna">Applies between passages. The center preview lets you override one join.</p> <label class="svelte-1szouna">Pause adjustment step<select aria-label="Pause increment" class="svelte-1szouna"></select></label><label class="svelte-1szouna">Output sample rate<select aria-label="Output sample rate" class="svelte-1szouna"></select></label></div>'),MB=ie('<label class="svelte-1szouna">Maximum peak (dBFS)<input aria-label="Target peak" type="number" min="-60" max="0" step="0.5" class="svelte-1szouna"/></label>'),zB=ie('<label class="svelte-1szouna">Volume adjustment (dB)<input aria-label="Audio gain" type="number" min="-60" max="24" step="0.5" class="svelte-1szouna"/></label>'),EB=ie('<a class="svelte-1szouna">Download again</a>'),UB=ie('<div class="settings-content svelte-1szouna"><h3 class="svelte-1szouna">Download settings</h3> <label class="svelte-1szouna">Audio format<select aria-label="Export format" class="svelte-1szouna"><option>WAV · uncompressed</option><option>WebM · Opus</option></select></label> <p class="svelte-1szouna"> </p> <details class="processing svelte-1szouna"><summary class="svelte-1szouna">Polish audio <span class="svelte-1szouna">Optional</span></summary><!><label class="check-label svelte-1szouna"><input aria-label="Peak normalization" type="checkbox" class="svelte-1szouna"/>Normalize peak volume</label><!><button class="svelte-1szouna">Preview processing</button></details> <div class="rail-note svelte-1szouna"><!> <p class="svelte-1szouna">Projects save in this browser. Download a copy to keep.</p></div> <!></div>'),RB=ie('<button class="back-button svelte-1szouna"><!>Back</button>'),BB=ie('<button class="svelte-1szouna"><!>Cancel</button>'),PB=ie('<button class="primary svelte-1szouna"> <!></button>'),jB=ie('<button><strong class="svelte-1szouna"></strong><small class="svelte-1szouna"> </small><span class="svelte-1szouna"> </span></button>'),NB=ie('<audio controls="" aria-label="Compare take playback" class="svelte-1szouna"></audio>'),OB=ie('<dialog class="tool-dialog compare-dialog svelte-1szouna" aria-labelledby="compare-title"><header class="svelte-1szouna"><div><h2 id="compare-title" class="svelte-1szouna">Choose a take</h2> <p class="svelte-1szouna"> </p></div> <button class="svelte-1szouna">Close</button></header> <div class="comparison-body svelte-1szouna"><div class="take-list svelte-1szouna" aria-label="Take choices"></div> <div class="take-listen svelte-1szouna"><h3 class="svelte-1szouna"> </h3> <p class="svelte-1szouna"> </p> <!></div></div> <footer class="svelte-1szouna"><span class="svelte-1szouna">Trying another take keeps your current choice.</span><button class="svelte-1szouna"> </button></footer></dialog>'),DB=ie('<dialog class="tool-dialog audio-dialog svelte-1szouna" aria-labelledby="audio-editor-title"><header class="svelte-1szouna"><div><h2 id="audio-editor-title" class="svelte-1szouna">Edit passage audio</h2> <p class="svelte-1szouna"> </p></div> <button class="svelte-1szouna">Done</button></header> <div class="audio-editor-body svelte-1szouna"><!></div></dialog>'),IB=ie('<div class="archive-row svelte-1szouna"><p class="svelte-1szouna"> <small class="svelte-1szouna"> </small></p> <button class="svelte-1szouna">Restore</button></div>'),LB=ie('<div class="local-actions svelte-1szouna"><button class="svelte-1szouna">Previous</button><span> </span><button class="svelte-1szouna">Next</button></div>'),VB=ie('<dialog class="tool-dialog archive-dialog svelte-1szouna" aria-labelledby="archive-title"><header class="svelte-1szouna"><h2 id="archive-title" class="svelte-1szouna">Passage archive</h2> <button class="svelte-1szouna">Close</button></header> <div class="archive-body svelte-1szouna"><!><!></div></dialog>'),HB=ie('<div class="stage-toolbar svelte-1szouna"><div><h2 class="stage-title svelte-1szouna" tabindex="-1"> </h2> <p class="svelte-1szouna"> </p></div> <!></div> <nav class="pane-tabs svelte-1szouna" aria-label="Workspace panes"><button class="svelte-1szouna"><!>Passages</button><button class="svelte-1szouna"><!>Editor</button><button class="svelte-1szouna"><!> </button></nav> <div class="tts-workbench svelte-1szouna"><aside aria-label="Passage navigation"><!><!></aside> <section aria-label="Passage editor"><!></section> <aside><!></aside></div> <footer class="workflow-footer svelte-1szouna" aria-label="Next action"><!> <div class="next-guidance svelte-1szouna" role="status" aria-live="polite"><strong class="svelte-1szouna"> </strong><span class="svelte-1szouna"> </span></div> <!></footer> <!> <!> <!>',1),WB=ie('<section class="tts-app svelte-1szouna" aria-label="Narration workspace"><header class="project-bar svelte-1szouna"><div class="project-heading svelte-1szouna"><span class="eyebrow svelte-1szouna">TEXT TO SPEECH</span><!></div> <!> <span class="save-status svelte-1szouna"> </span> <details class="project-menu svelte-1szouna"><summary aria-label="Projects" class="svelte-1szouna"><!><!></summary> <div class="project-menu-content svelte-1szouna"><label class="svelte-1szouna">Open project<select aria-label="Open project" class="svelte-1szouna"><!><!></select></label><button class="svelte-1szouna"><!>New project</button><button class="danger svelte-1szouna"><!>Delete this project</button><small class="svelte-1szouna">Projects save automatically in this browser.</small></div></details></header> <!> <!> <!></section>');function QB(a,t){Ri(t,!1);const i=K(),n=K(),s=K(),r=K(),o=K(),l=K(),c=K(),d=K(),g=K(),h=K(),m=K(),p=K(),u=K(),f=K(),_=K(),v=K(),y=K(),S=K(),q=K(),M=K(),P=K(),B=K();let A=Se(t,"busy",12,!1),j=Se(t,"active",8,!0),G=K(null),C=K([]),R=K([]),H=K([]),E=K("script"),U=K(""),N=K(0);const L=40;let I=K(1),T=K(0),F=K(""),z=K(!1),D=K(!1),Q=K(0),X=K(new Set),Z=K("all"),ue=K(""),de=K(null),ae=K(""),V=K(!1),pe=K(!1),Ce=K(""),ce=K(0),Te=K("editor"),ye=K(120),Ie=K();function Je(ve){return ve.showModal(),{destroy(){ve.close()}}}function tt(ve){const Le=()=>{b(ye,Math.max(0,Math.round(ve.getBoundingClientRect().top+window.scrollY)))},kt=new ResizeObserver(Le),jt=document.querySelector(".topbar");return jt&&kt.observe(jt),window.addEventListener("resize",Le),Le(),{destroy(){kt.disconnect(),window.removeEventListener("resize",Le)}}}function De(){if(!e(G)||A())return;const ve=ru("");Ct(G,e(G).chunks=[...e(G).chunks,ve]),Zi(()=>{A(),e(de),e(qe)}),Ne(ve.id),dt(),mt("speech")}function le(){b(Te,"settings"),Fs().then(()=>e(Ie)?.addSpeaker())}function xe(){!e(d)||!e(G)||(b(Ce,[...e(d).takes].reverse().find(ve=>ve.signature===Hs(e(G),e(d)))?.id||e(d).takes.at(-1)?.id||""),b(pe,!0))}let Ke=K(""),fe=K(""),we=K(""),me=K(!0),be=K(j()),ke=K(!1),$e=K(!1),ge,Me=null,Fe=K(null),qe=K(""),rt=K(""),Xe=K(""),Re=K({}),Be=new Map,Oe=K();function Ne(ve){if(!e(G))return;document.querySelectorAll(".tts-app audio").forEach(kt=>kt.pause()),b(U,ve),b(ae,""),b(V,!1),b(pe,!1),b(Te,"editor"),localStorage.setItem(`audiocpp.tts.chunk:${e(G).id}`,ve);const Le=(e(ue)||e(Z)!=="all"?e(c):e(G).chunks).findIndex(kt=>kt.id===ve);Le>=0&&b(N,Math.floor(Le/L)),b(fe,"")}function Ye(ve){e(G)?.chunks[ve]&&Ne(e(G).chunks[ve].id)}const Ue=[{id:"script",label:"Script"},{id:"speech",label:"Speakers"},{id:"assemble",label:"Arrange"},{id:"finish",label:"Export"}];function Ve(ve){const Le=localStorage.getItem(`audiocpp.tts.stage:${ve.id}`);return Le==="finish"&&ou(ve)||Le==="assemble"&&ve.chunks.length&&ve.chunks.every(kt=>Hn(ve,kt))||Le==="script"||Le==="speech"&&ve.chunks.length?Le:ve.chunks.length?"speech":"script"}function _t(){b(Te,"editor"),Fs().then(()=>{document.querySelector(".stage-title")?.focus({preventScroll:!0}),window.scrollTo({top:0})})}function mt(ve){A()||(b(E,ve),b(fe,""),ve==="assemble"&&e(g)>=0&&Ye(e(g)),_t())}function ot(){e(S)||!e(G)||(e(E)==="script"?e(de)?.length?pt():et():e(E)==="speech"?e(o).length&&!e(y)?le():e(o).length?Ta(e(o).map(ve=>ve.id)):e(l).length?(Ne(e(l)[0].id),xe()):mt("assemble"):e(E)==="assemble"?e(v)?mt("finish"):Qa():fa())}function it(ve){let Le=Be.get(ve);return Le||(Le=URL.createObjectURL(ve),Be.set(ve,Le)),Le}function nt(ve){if(!ve)return;const Le=Be.get(ve);Le&&(URL.revokeObjectURL(Le),Be.delete(ve))}function gt(){for(const ve of Be.values())URL.revokeObjectURL(ve);Be.clear()}function dt(){e(G)&&(b(G,{...e(G),updatedAt:Math.max(Date.now(),e(G).updatedAt+1)}),b(ke,!0),clearTimeout(ge),ge=setTimeout(()=>{Ut().catch(ve=>b(we,`Could not save project: ${String(ve)}`))},450))}async function It(){await Ut()}async function Ut(){if(clearTimeout(ge),Me&&await Me,!e(G)||!e(ke))return;const ve=structuredClone(e(G));b($e,!0),Me=K9({id:ve.id,appId:"tts",title:ve.title,updatedAt:ve.updatedAt,data:ve}).then(()=>{e(G)?.id===ve.id&&e(G).updatedAt===ve.updatedAt&&b(ke,!1),b(C,[{id:ve.id,title:ve.title,updatedAt:ve.updatedAt},...e(C).filter(Le=>Le.id!==ve.id)].sort((Le,kt)=>kt.updatedAt-Le.updatedAt))}).finally(()=>{b($e,!1),Me=null}),await Me,e(ke)&&await Ut()}async function Rt(ve){if(!A())try{await Ut();const Le=await J9(ve);if(!Le||![1,2].includes(Le.data.version))throw new Error("Unsupported or missing TTS project.");gt(),b(G,Le.data),B2(e(G))&&dt(),localStorage.setItem("audiocpp.tts.project",e(G).id),b(E,Ve(e(G))),b(U,e(G).chunks.find(jt=>jt.id===localStorage.getItem(`audiocpp.tts.chunk:${e(G).id}`))?.id||e(G).chunks[0]?.id||""),b(ue,""),b(Z,"all"),b(N,Math.max(0,Math.floor(e(G).chunks.findIndex(jt=>jt.id===e(U))/L))),b(T,0),b(F,""),b(z,!1),b(Q,0),b(de,null),b(X,new Set),b(we,""),b(fe,""),b(qe,""),document.querySelector(".project-menu")?.removeAttribute("open"),_t()}catch(Le){b(we,String(Le))}}async function ya(){if(!A())try{await Ut(),gt(),b(G,U2()),localStorage.setItem("audiocpp.tts.project",e(G).id),b(E,"script"),b(U,""),b(ue,""),b(Z,"all"),b(N,0),b(T,0),b(F,""),b(z,!1),b(Q,0),b(X,new Set),b(de,null),b(we,""),b(fe,""),b(qe,""),dt(),document.querySelector(".project-menu")?.removeAttribute("open"),_t()}catch(ve){b(we,String(ve))}}async function xa(){if(!(!e(G)||A()||!confirm(`Delete project "${e(G).title}" and its audio?`)))try{await Ut();const ve=e(G).id;await Y9(ve),b(C,e(C).filter(Le=>Le.id!==ve)),gt(),b(G,null),b(ke,!1),e(C).length?await Rt(e(C)[0].id):await ya()}catch(ve){b(we,String(ve))}}async function pa(){try{await(async ve=>{var Le=od(ve,2);b(R,Le[0]),b(H,Le[1])})(await Promise.all([su(),Ic()])),b(we,"")}catch(ve){b(we,`Could not refresh model choices: ${String(ve)}`)}}function et(){if(!e(G))return;if(b(we,""),!e(G).source.trim()){b(we,"Paste text or import a TXT/Markdown file first.");return}if(!Number.isInteger(e(G).split.characters)||e(G).split.characters<40){b(we,"Chunk size must be at least 40 characters.");return}b(ce,0);const ve=e(G).source.trim();b(de,e(G).split.method==="sentence"?Array.from(new Intl.Segmenter(void 0,{granularity:"sentence"}).segment(ve),Le=>Le.segment.trim()).filter(Boolean).flatMap(Le=>wf(Le,e(G).split.characters)):e(G).split.method==="paragraph"?ve.split(/\n\s*\n/).filter(Le=>Le.trim()).flatMap(Le=>wf(Le,e(G).split.characters)):wf(ve,e(G).split.characters))}function pt(){!e(G)||!e(de)?.length||e(G).chunks.length&&!confirm("Replace the current chunks? Existing chunks and takes will remain in the project archive.")||(e(G).archivedChunks.push(...e(G).chunks),Ct(G,e(G).chunks=e(de).map(ve=>ru(ve))),Zi(()=>{A(),e(de),e(qe)}),b(U,e(G).chunks[0].id),b(de,null),b(X,new Set),b(ue,""),b(Z,"all"),b(N,0),b(T,0),b(F,""),b(z,!1),b(Q,0),dt(),mt("speech"))}async function ht(ve){if(!(!ve||!e(G))){if(b(we,""),!/\.(txt|md|markdown)$/i.test(ve.name)){b(we,"Choose a TXT or Markdown file.");return}try{Ct(G,e(G).source=await ve.text()),Zi(()=>{A(),e(de),e(qe)}),e(G).title==="Untitled narration"&&(Ct(G,e(G).title=ve.name.replace(/\.[^.]+$/,"")),Zi(()=>{A(),e(de),e(qe)})),b(de,null),dt()}catch(Le){b(we,String(Le))}}}function vt(ve){if(!e(G)||A())return;const Le=e(Re)[ve.id]?.selectionStart;if(Le===void 0||!ve.text.slice(0,Le).trim()||!ve.text.slice(Le).trim()){b(we,"Place the text cursor where you want to split this chunk.");return}const kt=e(G).chunks.indexOf(ve);e(G).archivedChunks.push(structuredClone(ve));const jt=[ru(ve.text.slice(0,Le).trim(),ve.override),ru(ve.text.slice(Le).trim(),ve.override)];for(const ja of jt)ja.voice=structuredClone(ve.voice),ja.speakerId=ve.speakerId;e(G).chunks.splice(kt,1,...jt),Ne(jt[0].id),b(we,""),dt()}function zt(ve){if(!e(G)||A())return;const Le=e(G).chunks.indexOf(ve),kt=e(G).chunks[Le+1];if(!kt||JSON.stringify([ol(e(G),ve),If(e(G),ve)?.id])!==JSON.stringify([ol(e(G),kt),If(e(G),kt)?.id])&&!confirm("These passages use different speakers. Joining them uses the first passage’s speaker. Continue?"))return;e(G).archivedChunks.push(structuredClone(ve),structuredClone(kt));const jt=ru(`${ve.text}
|
||
${kt.text}`,ve.override);jt.voice=structuredClone(ve.voice),jt.speakerId=ve.speakerId,e(G).chunks.splice(Le,2,jt),Ne(jt.id),dt()}function Lt(ve,Le){if(!e(G)||A())return;const kt=e(G).chunks.indexOf(ve),jt=kt+Le;jt<0||jt>=e(G).chunks.length||((ja=>{var ee=od(ja,2);Ct(G,e(G).chunks[kt]=ee[0]),Zi(()=>{A(),e(de),e(qe)}),Ct(G,e(G).chunks[jt]=ee[1]),Zi(()=>{A(),e(de),e(qe)})})([e(G).chunks[jt],e(G).chunks[kt]]),dt())}function ma(ve){if(!e(G)||A())return;e(G).archivedChunks.push(ve);const Le=e(G).chunks.indexOf(ve);Ct(G,e(G).chunks=e(G).chunks.filter(kt=>kt.id!==ve.id)),Zi(()=>{A(),e(de),e(qe)}),b(X,new Set([...e(X)].filter(kt=>kt!==ve.id))),e(U)===ve.id&&Ne(e(G).chunks[Math.min(Le,e(G).chunks.length-1)]?.id||""),dt()}function na(ve,Le){ve.takeId=Le.id,dt()}async function Ta(ve){if(!e(G)||A()||!ve.length)return;const Le=e(G).chunks.filter(Ua=>ve.includes(Ua.id)).map(Ua=>({id:Ua.id,text:Ua.text,configuration:structuredClone(ol(e(G),Ua)),reference:structuredClone(If(e(G),Ua)),signature:Hs(e(G),Ua),sequence:e(G).chunks.indexOf(Ua)+Ua.takes.length}));if(Le.some(Ua=>!Ua.configuration)){b(we,"Add a speaker and assign it to these passages.");return}if(Le.some(Ua=>!Ua.text.trim())){b(we,"Remove empty chunks or enter text before generation.");return}if(Le.some(Ua=>Ua.reference&&Ua.configuration.model.task!=="clon"&&!Ko[Ua.configuration.model.family]?.includes("speaker_reference"))){b(we,"A selected speech model does not support a reference recording. Remove the reference or choose a voice-cloning model.");return}A(!0),b(we,""),b(Fe,new AbortController);const kt=e(Fe).signal;let jt,ja="";const ee=new Map;try{for(let Ua=0;Ua<Le.length;Ua++){kt.throwIfAborted();const Ii=Le[Ua];b(Ke,Ii.id),b(fe,`Generating passage ${Ua+1} of ${Le.length}…`);const zi=JSON.stringify([Ii.configuration.model,Ii.configuration.request]);(!jt||ja!==zi)&&(jt=new Vc(Ii.configuration,kt),ja=zi);const xi=Ii.reference;xi&&!ee.has(xi.id)&&ee.set(xi.id,await Os(xi.audio,kt));const xn=xi?ee.get(xi.id):void 0,is=await jt.run({text:Ii.text,voice_ref:xn,reference_text:xi?.transcript},Ii.sequence);if(is.kind!=="audio")throw new Error("The speech model did not return audio.");kt.throwIfAborted();const Mr=new AudioContext;let jn;try{jn=(await Mr.decodeAudioData(await is.blob.arrayBuffer())).duration}finally{await Mr.close()}const Cn=e(G).chunks.find(Qr=>Qr.id===Ii.id),ws={id:crypto.randomUUID(),text:Ii.text,configuration:Ii.configuration,reference:xi||void 0,signature:Ii.signature,seed:(jt.resolvedSeed+Ii.sequence)%4294967296,audio:is.blob,duration:jn,createdAt:Date.now()};Cn.takes=[...Cn.takes,ws],Cn.takeId||(Cn.takeId=ws.id),Cn.id===e(U)&&Cn.takes.length>1&&b(ae,Cn.id),dt()}b(fe,"Audio generated. The first take is selected automatically; use Compare takes to choose a replacement.")}catch(Ua){b(fe,kt.aborted?"Cancelled. Completed takes are saved.":"Generation stopped. Completed takes are saved."),kt.aborted||b(we,String(Ua))}finally{A(!1),b(Ke,""),b(Fe,null),await Ut().catch(Ua=>b(we,`Could not save takes: ${String(Ua)}`))}}async function Qa(){if(!(!e(G)||A())){if(!e(G).chunks.length||e(G).chunks.some(ve=>!Hn(e(G),ve))){b(we,"Choose an up-to-date take for every passage before assembly.");return}A(!0),b(we,""),b(Fe,new AbortController),b(fe,"Assembling chosen takes…");try{const ve=await dR(e(G).chunks.map(Le=>({audio:cs(Le).rendered?.audio||cs(Le).audio,pause:Le.pauseAfter??e(G).assembly.pause})),e(G).assembly.sampleRate,e(Fe).signal);e(Fe).signal.throwIfAborted(),nt(e(G).assembled?.audio),Ct(G,e(G).assembled={audio:ve,signature:R2(e(G))}),Zi(()=>{A(),e(de),e(qe)}),dt(),b(fe,"Narration assembled. Listen across chunk boundaries before finishing.")}catch(ve){b(we,e(Fe).signal.aborted?"Cancelled.":String(ve))}finally{A(!1),b(Fe,null)}}}async function li(){if(!e(G)||!ou(e(G))||!e(G).assembled||A())return b(we,"Combine the chosen chunk audio in step 3 first."),!1;A(!0),b(we,""),b(Fe,new AbortController),b(fe,"Processing final audio…");const ve=e(Fe).signal;try{let Le=e(G).assembled.audio;if(e(G).enhancement){b(fe,`Processing with ${e(G).enhancement.name}…`);const kt=new Vc(e(G).enhancement,ve);await kt.prepare();const jt=await Os(Le,ve),ja=await kt.run({audio:jt});if(ja.kind!=="audio")throw new Error("The processing model returned no audio.");Le=ja.blob}return Le=await uR(Le,e(G).finish,e(G).assembly.sampleRate,ve),ve.throwIfAborted(),nt(e(G).finished?.audio),Ct(G,e(G).finished={audio:Le,signature:Lc(e(G))}),Zi(()=>{A(),e(de),e(qe)}),b(qe,""),dt(),b(fe,"Processing preview ready. Listen before and after, or download your narration."),!0}catch(Le){return ve.aborted?b(fe,"Processing cancelled."):b(we,String(Le)),!1}finally{A(!1),b(Fe,null)}}async function hi(){if(!e(G)?.finished||!e(_)||A())return!1;A(!0),b(we,""),b(Fe,new AbortController),b(fe,"Preparing download…");try{const ve=await fR(e(G).finished.audio,e(G).finish.format,e(Fe).signal);return e(Fe).signal.throwIfAborted(),b(qe,it(ve)),b(rt,`${e(G).title.replace(/[\\/:*?"<>|]/g,"_")||"narration"}.${e(G).finish.format}`),b(Xe,Lc(e(G))+e(G).finish.format),b(fe,"Download ready."),!0}catch(ve){return e(Fe).signal.aborted?b(fe,"Export cancelled."):b(we,String(ve)),!1}finally{A(!1),b(Fe,null)}}async function fa(){if(!e(G)||A()||!e(_)&&!await li()||!await hi())return;const ve=document.createElement("a");ve.href=e(qe),ve.download=e(rt),document.body.append(ve),ve.click(),ve.remove()}function ti(ve){const Le=ve.currentTarget;document.querySelectorAll(".tts-app audio").forEach(kt=>{kt!==Le&&kt.pause()})}Qn(async()=>{try{const[ve,Le,kt]=await Promise.all([Q9("tts"),su().catch(jt=>(b(we,`Models are unavailable. You can still prepare your script. ${String(jt)}`),[])),Ic()]);if(b(R,Le),b(H,kt),b(C,ve.map(({id:jt,title:ja,updatedAt:ee})=>({id:jt,title:ja,updatedAt:ee}))),ve.length){const ja=(ve.find(ee=>ee.id===localStorage.getItem("audiocpp.tts.project"))||ve[0]).data;if(![1,2].includes(ja.version))throw new Error("Unsupported TTS project version.");b(G,ja),B2(e(G))&&dt(),b(E,Ve(e(G))),b(U,e(G).chunks.find(ee=>ee.id===localStorage.getItem(`audiocpp.tts.chunk:${e(G).id}`))?.id||e(G).chunks[0]?.id||""),b(ue,""),b(Z,"all"),b(N,Math.max(0,Math.floor(e(G).chunks.findIndex(ee=>ee.id===e(U))/L))),b(T,0),b(F,""),b(z,!1),b(Q,0)}else b(G,U2()),localStorage.setItem("audiocpp.tts.project",e(G).id),dt()}catch(ve){b(we,String(ve))}finally{b(me,!1)}}),Ns(()=>{e(Fe)?.abort(),clearTimeout(ge),gt()}),Ee(()=>e(G),()=>{b(i,Math.max(1,Math.ceil((e(G)?.archivedChunks.length||0)/L)))}),Ee(()=>(e(Q),e(i)),()=>{e(Q)>=e(i)&&b(Q,e(i)-1)}),Ee(()=>(e(G),e(U)),()=>{b(d,e(G)?.chunks.find(ve=>ve.id===e(U)))}),Ee(()=>(e(d),cs),()=>{b(n,e(d)&&cs(e(d)))}),Ee(()=>(e(ae),e(d),Y(A())),()=>{e(ae)&&e(d)?.id===e(ae)&&!A()&&(b(Ce,e(d).takes.at(-1)?.id||""),b(pe,!0),b(ae,""))}),Ee(()=>(e(d),e(Ce)),()=>{b(s,e(d)?.takes.find(ve=>ve.id===e(Ce))||e(d)?.takes.at(-1))}),Ee(()=>(Y(j()),e(be),e(me)),()=>{j()!==e(be)&&(b(be,j()),j()&&!e(me)&&pa())}),Ee(()=>(Y(j()),e(Oe)),()=>{j()||(e(Oe)?.pause(),typeof document<"u"&&document.querySelectorAll(".tts-app audio").forEach(ve=>ve.pause()))}),Ee(()=>(e(G),Hn),()=>{b(r,e(G)?e(G).chunks.filter(ve=>Hn(e(G),ve)).length:0)}),Ee(()=>(e(G),Hs),()=>{b(o,e(G)?.chunks.filter(ve=>!ve.takes.some(Le=>Le.signature===Hs(e(G),ve)))||[])}),Ee(()=>(e(G),Hs),()=>{b(l,e(G)?.chunks.filter(ve=>!Hn(e(G),ve)&&ve.takes.some(Le=>Le.signature===Hs(e(G),ve)))||[])}),Ee(()=>(e(G),e(ue),e(Z),Hn),()=>{b(c,e(G)?.chunks.filter(ve=>ve.text.toLowerCase().includes(e(ue).toLowerCase())&&(e(Z)==="all"||e(Z)==="missing"&&!cs(ve)||e(Z)==="changed"&&!!cs(ve)&&!Hn(e(G),ve)))||[])}),Ee(()=>(e(G),e(U)),()=>{b(g,e(G)?.chunks.findIndex(ve=>ve.id===e(U))??-1)}),Ee(()=>e(g),()=>{e(g)>=0&&b(I,e(g)+1)}),Ee(()=>e(c),()=>{b(h,Math.max(1,Math.ceil(e(c).length/L)))}),Ee(()=>(e(N),e(h)),()=>{e(N)>=e(h)&&b(N,e(h)-1)}),Ee(()=>(e(c),e(N)),()=>{b(m,e(c).slice(e(N)*L,(e(N)+1)*L))}),Ee(()=>(e(G),e(F),e(z),Hn),()=>{b(p,e(G)?.chunks.filter(ve=>ve.text.toLowerCase().includes(e(F).toLowerCase())&&(!e(z)||!Hn(e(G),ve)))||[])}),Ee(()=>e(p),()=>{b(u,Math.max(1,Math.ceil(e(p).length/L)))}),Ee(()=>(e(T),e(u)),()=>{e(T)>=e(u)&&b(T,e(u)-1)}),Ee(()=>(e(p),e(T)),()=>{b(f,e(p).slice(e(T)*L,(e(T)+1)*L))}),Ee(()=>(e(G),Lc),()=>{b(_,!!e(G)?.finished&&ou(e(G))&&e(G).finished.signature===Lc(e(G)))}),Ee(()=>(e(G),ou),()=>{b(v,e(G)?ou(e(G)):!1)}),Ee(()=>(e(G),e(E)),()=>{e(G)&&localStorage.setItem(`audiocpp.tts.stage:${e(G).id}`,e(E))}),Ee(()=>(e(G),e(o),ol),()=>{b(y,!!e(G)&&e(o).every(ve=>!!ol(e(G),ve)&&!!ve.text.trim()))}),Ee(()=>(Y(A()),e(E),e(G),e(o),e(r),e(v)),()=>{b(S,A()||(e(E)==="script"?!e(G)?.source.trim():e(E)==="speech"?!e(G)?.chunks.length||e(o).some(ve=>!ve.text.trim()):e(E)==="assemble"?!e(G)?.chunks.length||e(r)!==e(G).chunks.length:!e(v)))}),Ee(()=>(e(E),e(de),e(o),e(y),e(l),e(v)),()=>{b(q,e(E)==="script"?e(de)?.length?"Continue to speakers":"Review passages":e(E)==="speech"?e(o).length?!e(y)&&!e(o).some(ve=>!ve.text.trim())?"Add speaker":`Generate narration${e(o).length>1?` (${e(o).length})`:""}`:e(l).length?"Review updated takes":"Continue to arrange":e(E)==="assemble"?e(v)?"Continue to export":"Combine narration":"Download")}),Ee(()=>(e(E),e(de),e(o),e(y),e(l),e(r),e(G),e(v)),()=>{b(M,e(E)==="script"?e(de)?.length?`${e(de).length} passages ready to voice`:"Your words come first":e(E)==="speech"?e(o).some(ve=>!ve.text.trim())?"Add text to your empty passages":!e(y)&&e(o).length?"Create a speaker to continue":e(o).length?`${e(o).length} passages need audio`:e(l).length?`${e(l).length} updated takes need your choice`:"Every passage is ready":e(E)==="assemble"?e(r)!==e(G)?.chunks.length?"Review the passages needing audio":e(v)?"Your narration is combined":"Bring your passages together":"Save your finished narration")}),Ee(()=>(e(E),e(de),e(o),e(y),e(l),e(v)),()=>{b(P,e(E)==="script"?e(de)?.length?"Next, create a speaker for these passages.":"Paste text or import a TXT or Markdown file.":e(E)==="speech"?e(o).some(ve=>!ve.text.trim())?"Write a passage or remove it using Edit passage.":!e(y)&&e(o).length?"A speaker keeps the model and voice together.":e(o).length?"Generate the missing audio, then listen and refine.":e(l).length?"Compare the recordings and choose the take to keep.":"Next, adjust pauses and combine the audio.":e(E)==="assemble"?e(v)?"Continue to choose a format and download.":"Chosen takes will be combined in the order above.":"Your processing choices are applied automatically.")}),Ee(()=>Ko,()=>{b(B,Object.keys(Ko).filter(ve=>Ko[ve].includes("audio_enhancement")))}),bn();var Di={saveBeforeClose:It};en();var Ai=WB();re("beforeunload",Tc,ve=>{(e(ke)||e($e)||A())&&(ve.preventDefault(),ve.returnValue="")});let ui;var Ia=k(Ai),Yi=k(Ia),hn=$(k(Yi));{var un=ve=>{var Le=rB();Dt(Le),ne(()=>Le.disabled=A()),za(Le,()=>e(G).title,kt=>(Ct(G,e(G).title=kt),Zi(()=>{A(),e(de),e(qe)}))),re("input",Le,dt),J(ve,Le)},rn=ve=>{var Le=oB();J(ve,Le)};_e(hn,ve=>{e(G)?ve(un):ve(rn,-1)})}w(Yi);var He=$(Yi,2);{var Gt=ve=>{var Le=cB();Mt(Le,5,()=>Ue,Qt,(kt,jt,ja)=>{const ee=Yt(()=>(e(G),e(r),e(v),e(qe),e(_),x(()=>ja===0?e(G).chunks.length>0:ja===1?e(r)>0&&e(r)===e(G).chunks.length:ja===2?e(v):!!e(qe)&&e(_))));var Ua=lB();let Ii;var zi=k(Ua),xi=k(zi);{var xn=jn=>{km(jn,{size:12})},is=jn=>{var Cn=Op();Cn.nodeValue=ja+1,J(jn,Cn)};_e(xi,jn=>{Y(e(ee)),e(E),e(jt),x(()=>e(ee)&&e(E)!==e(jt).id)?jn(xn):jn(is,-1)})}w(zi);var Mr=$(zi,1,!0);w(Ua),ne(()=>{he(Ua,"aria-current",(e(E),e(jt),x(()=>e(E)===e(jt).id?"step":void 0))),Ua.disabled=(Y(A()),e(G),e(r),e(v),x(()=>A()||ja>0&&!e(G).chunks.length||ja>1&&e(r)!==e(G).chunks.length||ja>2&&!e(v))),Ii=ba(Ua,1,"svelte-1szouna",null,Ii,{active:e(E)===e(jt).id}),W(Mr,(e(jt),x(()=>e(jt).label)))}),re("click",Ua,()=>mt(e(jt).id)),J(kt,Ua)}),w(Le),J(ve,Le)};_e(He,ve=>{e(G)&&ve(Gt)})}var Pa=$(He,2),Sa=k(Pa,!0);w(Pa);var ua=$(Pa,2),Ot=k(ua),Ea=k(Ot);Rc(Ea,{size:16});var wa=$(Ea);xm(wa,{size:12}),w(Ot);var $a=$(Ot,2),qa=k($a),Qe=$(k(qa)),Ge=k(Qe);{var bt=ve=>{var Le=Qf(),kt=k(Le,!0);w(Le);var jt={};ne(()=>{W(kt,(e(G),x(()=>e(G).title))),jt!==(jt=(e(G),x(()=>e(G).id)))&&(Le.value=(Le.__value=(e(G),x(()=>e(G).id)))??"")}),J(ve,Le)},Vt=oi(()=>(e(G),e(C),x(()=>e(G)&&!e(C).some(ve=>ve.id===e(G).id))));_e(Ge,ve=>{e(Vt)&&ve(bt)})}var ea=$(Ge);Mt(ea,1,()=>e(C),Qt,(ve,Le)=>{var kt=Qf(),jt=k(kt,!0);w(kt);var ja={};ne(()=>{W(jt,(e(Le),x(()=>e(Le).title))),ja!==(ja=(e(Le),x(()=>e(Le).id)))&&(kt.value=(kt.__value=(e(Le),x(()=>e(Le).id)))??"")}),J(ve,kt)}),w(Qe);var Ba;Vn(Qe),w(qa);var ai=$(qa),Ti=k(ai);Pr(Ti,{size:14}),qt(),w(ai);var Ht=$(ai),Ga=k(Ht);po(Ga,{size:14}),qt(),w(Ht),qt(),w($a),w(ua),w(Ia);var Jt=$(Ia,2);{var ci=ve=>{var Le=dB();J(ve,Le)};_e(Jt,ve=>{e(me)&&ve(ci)})}var Hi=$(Jt,2);{var Ka=ve=>{var Le=uB(),kt=k(Le),jt=k(kt,!0);w(kt);var ja=$(kt);w(Le),ne(()=>W(jt,e(we))),re("click",ja,()=>b(we,"")),J(ve,Le)};_e(Hi,ve=>{e(we)&&ve(Ka)})}var ca=$(Hi,2);{var Bt=ve=>{var Le=HB(),kt=xt(Le),jt=k(kt),ja=k(jt),ee=k(ja,!0);w(ja);var Ua=$(ja,2),Ii=k(Ua,!0);w(Ua),w(jt);var zi=$(jt,2);{var xi=Wt=>{var St=fB(),ka=k(St);w(St),ne(()=>W(ka,`${e(r)??""}/${e(G),x(()=>e(G).chunks.length)??""} ready`)),J(Wt,St)};_e(zi,Wt=>{e(E)!=="script"&&Wt(xi)})}w(kt);var xn=$(kt,2),is=k(xn),Mr=k(is);PS(Mr,{size:14}),qt(),w(is);var jn=$(is),Cn=k(jn);Wo(Cn,{size:14}),qt(),w(jn);var ws=$(jn),Qr=k(ws);cb(Qr,{size:14});var dl=$(Qr,1,!0);w(ws),w(xn);var wo=$(xn,2),ks=k(wo);let ko;var ul=k(ks);{let Wt=Yt(()=>e(E)==="script"?e(de):null);zR(ul,{get project(){return e(G)},get selectedId(){return e(U)},get disabled(){return A()},get preview(){return e(Wt)},get previewIndex(){return e(ce)},onselect:St=>{Ne(St),e(E)==="script"&&mt("speech")},onpreview:St=>{b(ce,St),b(Te,"editor")},onadd:De,ongenerate:Ta,get checked(){return e(X)},set checked(St){b(X,St)},$$legacy:!0})}var vr=$(ul);{var Kc=Wt=>{var St=pB(),ka=k(St);w(St),ne(()=>W(ka,`Archive · ${e(G),x(()=>e(G).archivedChunks.length)??""}`)),re("click",St,()=>b(D,!0)),J(Wt,St)};_e(vr,Wt=>{e(G),x(()=>e(G).archivedChunks.length)&&Wt(Kc)})}w(ks);var Qs=$(ks,2);let Kr;var fu=k(Qs);{var br=Wt=>{var St=vB(),ka=xt(St),Fa=k(ka),ii=k(Fa,!0);w(Fa);var La=$(Fa,2);{var oe=ct=>{var Ze=mB();ne(()=>Ze.disabled=A()),re("click",Ze,()=>b(de,null)),J(ct,Ze)},ze=ct=>{var Ze=gB(),lt=k(Ze);Wo(lt,{size:14});var sa=$(lt,2);w(Ze),ne(()=>sa.disabled=A()),re("change",sa,Xt=>{ht(Xt.currentTarget.files?.[0]),Xt.currentTarget.value=""}),J(ct,Ze)};_e(La,ct=>{e(de)?ct(oe):ct(ze,-1)})}w(ka);var Pe=$(ka,2);{var st=ct=>{var Ze=hB(),lt=xt(Ze);nn(lt);var sa=$(lt,2),Xt=k(sa),ra=k(Xt);w(Xt),qt(),w(sa),ne(()=>{he(lt,"aria-label",`Preview passage ${e(ce)+1}`),Gi(lt,(e(de),e(ce),x(()=>e(de)[e(ce)]||""))),W(ra,`${e(de),x(()=>e(de).length)??""} passages · ready to assign speakers`)}),J(ct,Ze)},yt=ct=>{var Ze=_B(),lt=xt(Ze);nn(lt),he(lt,"placeholder",`Every narration starts with a few words.
|
||
|
||
Paste your story, script, or article here…`);var sa=$(lt,2),Xt=k(sa),ra=k(Xt);w(Xt),qt(),w(sa),ne(_i=>{lt.disabled=A(),W(ra,`${_i??""} characters`)},[()=>(e(G),x(()=>e(G).source.length.toLocaleString()))]),za(lt,()=>e(G).source,_i=>(Ct(G,e(G).source=_i),Zi(()=>{A(),e(de),e(qe)}))),re("input",lt,()=>{b(de,null),dt()}),J(ct,Ze)};_e(Pe,ct=>{e(de)?ct(st):ct(yt,-1)})}ne(()=>W(ii,(e(de),e(ce),x(()=>e(de)?`Passage ${e(ce)+1} of ${e(de).length}`:"Your script")))),J(Wt,St)},xo=Wt=>{var St=bs(),ka=xt(St);{var Fa=La=>{const oe=Yt(()=>e(d)),ze=Yt(()=>e(g)),Pe=Yt(()=>(Y(cs),Y(e(oe)),x(()=>cs(e(oe))))),st=Yt(()=>(Y(Hn),e(G),Y(e(oe)),x(()=>Hn(e(G),e(oe)))));var yt=kB(),ct=xt(yt),Ze=k(ct),lt=k(Ze),sa=k(lt);w(lt);var Xt=$(lt,2),ra=k(Xt,!0);w(Xt),w(Ze);var _i=$(Ze,2),Va=k(_i),ga=k(Va);cf(ga,{size:16}),w(Va);var Ya=$(Va),Kt=k(Ya);df(Kt,{size:16}),w(Ya),w(_i),w(ct);var ta=$(ct,2),Aa=$(ta);nn(Aa),qi(Aa,Sn=>Ct(Re,e(Re)[e(oe).id]=Sn),()=>e(Re)?.[e(oe).id]);var Ha=$(Aa,2),on=k(Ha);let Fn;var Ys=k(on,!0);w(on);var Xr=$(on),nc=k(Xr);w(Xr);var sc=$(Xr,2),_l=k(sc),Co=$(k(_l));xm(Co,{size:12}),w(_l);var Go=$(_l,2),Fo=k(Go),Er=k(Fo);ob(Er,{size:13}),qt(),w(Fo);var Xi=$(Fo),Wi=k(Xi);NS(Wi,{size:13}),qt(),w(Xi);var Kn=$(Xi),vl=k(Kn);po(vl,{size:13}),qt(),w(Kn),w(Go),w(sc),w(Ha);var Zc=$(Ha,2),Mn=k(Zc),Ts=k(Mn),Zr=k(Ts,!0);w(Ts);var eo=$(Ts,2),Mo=k(eo,!0);w(eo);var rc=$(eo);{var pu=Sn=>{var Rs=bB(),Bs=k(Rs,!0);w(Rs),ne(yr=>W(Bs,yr),[()=>(Y(e(oe)),Y(Hs),e(G),x(()=>e(oe).takes.some(yr=>yr.signature===Hs(e(G),e(oe)))?"Choose an updated take.":"Text or speaker changed."))]),J(Sn,Rs)};_e(rc,Sn=>{e(Pe)&&!e(st)&&Sn(pu)})}w(Mn);var ed=$(Mn,2);{var bl=Sn=>{var Rs=yB();ne(Bs=>he(Rs,"src",Bs),[()=>(Y(e(Pe)),x(()=>it(e(Pe).rendered?.audio||e(Pe).audio)))]),re("play",Rs,ti),J(Sn,Rs)};_e(ed,Sn=>{e(Pe)&&Sn(bl)})}var to=$(ed,2),ds=k(to),yl=k(ds);Sm(yl,{size:14});var Js=$(yl,1,!0);w(ds);var zo=$(ds);{var wl=Sn=>{var Rs=wB(),Bs=xt(Rs),yr=k(Bs);w(Bs);var kl=$(Bs),Yf=k(kl);ob(Yf,{size:14}),qt(),w(kl),ne(()=>{Bs.disabled=A(),W(yr,`Compare takes (${Y(e(oe)),x(()=>e(oe).takes.length)??""})`),kl.disabled=A()}),re("click",Bs,xe),re("click",kl,()=>b(V,!0)),J(Sn,Rs)};_e(zo,Sn=>{Y(e(oe)),x(()=>e(oe).takes.length)&&Sn(wl)})}w(to),w(Zc),ne((Sn,Rs,Bs,yr,kl)=>{W(sa,`PASSAGE ${e(ze)+1} OF ${e(G),x(()=>e(G).chunks.length)??""}`),W(ra,Sn),Va.disabled=A()||e(ze)===0,Ya.disabled=(Y(A()),Y(e(ze)),e(G),x(()=>A()||e(ze)===e(G).chunks.length-1)),he(ta,"for",(Y(e(oe)),x(()=>`text-${e(oe).id}`))),he(Aa,"id",(Y(e(oe)),x(()=>`text-${e(oe).id}`))),he(Aa,"aria-label",`Chunk ${e(ze)+1} text`),Aa.disabled=A(),Fn=ba(on,1,"chunk-badge svelte-1szouna",null,Fn,{ready:e(st)}),W(Ys,Rs),W(nc,`${Y(e(oe)),x(()=>e(oe).text.length)??""} characters`),Fo.disabled=A(),Xi.disabled=(Y(A()),Y(e(ze)),e(G),x(()=>A()||e(ze)===e(G).chunks.length-1)),Kn.disabled=A(),W(Zr,Bs),W(Mo,yr),ds.disabled=kl,W(Js,e(Pe)?"Try another take":"Generate this passage")},[()=>(Y(yo),e(G),Y(e(oe)),x(()=>yo(e(G),e(oe))?.name||"Choose a speaker")),()=>(e(Ke),Y(e(oe)),Y(e(Pe)),Y(e(st)),Y(Hs),e(G),x(()=>e(Ke)===e(oe).id?"Generating…":e(Pe)?e(st)?"Ready":e(oe).takes.some(Sn=>Sn.signature===Hs(e(G),e(oe)))?"Choose an updated take":"Audio needs updating":"No audio yet")),()=>(Y(e(Pe)),Y(e(oe)),x(()=>e(Pe)?`Take ${e(oe).takes.indexOf(e(Pe))+1}`:"Ready when you are")),()=>(Y(e(Pe)),x(()=>e(Pe)?`${(e(Pe).rendered?.duration??e(Pe).duration).toFixed(1)} seconds`:"Generate this passage to hear it.")),()=>(Y(A()),Y(ol),e(G),Y(e(oe)),x(()=>A()||!ol(e(G),e(oe))||!e(oe).text.trim()))]),re("click",Va,()=>Ne(e(G).chunks[e(ze)-1].id)),re("click",Ya,()=>Ne(e(G).chunks[e(ze)+1].id)),za(Aa,()=>e(oe).text,Sn=>e(oe).text=Sn),re("input",Aa,dt),re("click",Fo,()=>vt(e(oe))),re("click",Xi,()=>zt(e(oe))),re("click",Kn,()=>ma(e(oe))),re("click",ds,()=>Ta([e(oe).id])),J(La,yt)},ii=La=>{var oe=xB(),ze=k(oe);Wo(ze,{size:30});var Pe=$(ze,4);w(oe),re("click",Pe,()=>mt("script")),J(La,oe)};_e(ka,La=>{e(d)?La(Fa):La(ii,-1)})}J(Wt,St)},ac=Wt=>{var St=$B(),ka=xt(St),Fa=$(k(ka),2),ii=k(Fa),La=k(ii);cf(La,{size:16}),w(ii);var oe=$(ii),ze=k(oe);df(ze,{size:16}),w(oe),w(Fa),w(ka);var Pe=$(ka,2),st=k(Pe);{var yt=Kt=>{var ta=SB(),Aa=k(ta),Ha=$(Aa);w(ta),ne(()=>{W(Aa,`${e(G),e(r),x(()=>e(G).chunks.length-e(r))??""} passages need current audio.`),Ha.disabled=A()}),re("click",Ha,()=>mt("speech")),J(Kt,ta)};_e(st,Kt=>{e(r),e(G),x(()=>e(r)!==e(G).chunks.length)&&Kt(yt)})}var ct=$(st);{var Ze=Kt=>{{let ta=Yt(()=>(e(G),x(()=>e(G).pauseIncrement??.1))),Aa=Yt(()=>j()&&!A());KR(Kt,{get project(){return e(G)},get chunk(){return e(d)},get next(){return e(G),e(g),x(()=>e(G).chunks[e(g)+1])},get index(){return e(g)},get increment(){return e(ta)},get disabled(){return A()},get active(){return e(Aa)},onchange:dt})}};_e(ct,Kt=>{e(d)&&Kt(Ze)})}w(Pe);var lt=$(Pe,2),sa=k(lt),Xt=k(sa);ib(Xt,{size:14}),qt(),w(sa);var ra=$(sa),_i=k(ra);ab(_i,{size:14}),qt(),w(ra);var Va=$(ra);w(lt);var ga=$(lt,2);{var Ya=Kt=>{var ta=TB(),Aa=k(ta),Ha=k(Aa,!0);w(Aa);var on=$(Aa,2);qi(on,Fn=>b(Oe,Fn),()=>e(Oe)),w(ta),ne(Fn=>{W(Ha,e(v)?"Full narration":"Previous narration · needs updating"),he(on,"src",Fn)},[()=>(e(G),x(()=>it(e(G).assembled.audio)))]),re("play",on,ti),J(Kt,ta)};_e(ga,Kt=>{e(G),x(()=>e(G).assembled)&&Kt(Ya)})}ne(()=>{ii.disabled=A()||e(g)<=0,oe.disabled=(Y(A()),e(g),e(G),x(()=>A()||e(g)===e(G).chunks.length-1)),sa.disabled=A()||e(g)<=0,ra.disabled=(Y(A()),e(g),e(G),x(()=>A()||e(g)===e(G).chunks.length-1)),Va.disabled=A()}),re("click",ii,()=>Ye(e(g)-1)),re("click",oe,()=>Ye(e(g)+1)),re("click",sa,()=>{const Kt=e(g)-1;Lt(e(d),-1),Ye(Kt)}),re("click",ra,()=>{const Kt=e(g)+1;Lt(e(d),1),Ye(Kt)}),re("click",Va,()=>mt("speech")),J(Wt,St)},Yc=Wt=>{var St=CB(),ka=xt(St),Fa=$(k(ka),2),ii=k(Fa);w(Fa),w(ka);var La=$(ka,2),oe=k(La);Ud(oe,{size:38});var ze=$(oe,2),Pe=k(ze,!0);w(ze);var st=$(ze,2),yt=k(st);w(st);var ct=$(st,2);{var Ze=Xt=>{var ra=qB();ne(_i=>he(ra,"src",_i),[()=>(e(G),x(()=>it(e(G).assembled.audio)))]),re("play",ra,ti),J(Xt,ra)};_e(ct,Xt=>{e(G),x(()=>e(G).assembled)&&Xt(Ze)})}var lt=$(ct);{var sa=Xt=>{var ra=AB(),_i=k(ra),Va=k(_i,!0);w(_i);var ga=$(_i,2);w(ra),ne(Ya=>{W(Va,e(_)?"Processed preview":"Previous processing · needs updating"),he(ga,"src",Ya)},[()=>(e(G),x(()=>it(e(G).finished.audio)))]),re("play",ga,ti),J(Xt,ra)};_e(lt,Xt=>{e(G),x(()=>e(G).finished)&&Xt(sa)})}w(La),ne((Xt,ra)=>{W(ii,`${e(G),x(()=>e(G).chunks.length)??""} PASSAGES`),W(Pe,(e(G),x(()=>e(G).title))),W(yt,`${Xt??""} Hz · ${ra??""}`)},[()=>(e(G),x(()=>e(G).assembly.sampleRate.toLocaleString())),()=>(e(G),x(()=>e(G).finish.format.toUpperCase()))]),J(Wt,St)};_e(fu,Wt=>{e(E)==="script"?Wt(br):e(E)==="speech"?Wt(xo,1):e(E)==="assemble"?Wt(ac,2):Wt(Yc,-1)})}w(Qs);var fl=$(Qs,2);let pl;var ic=k(fl);{var Ji=Wt=>{var St=GB(),ka=$(k(St),4),Fa=$(k(ka)),ii=k(Fa);ii.value=ii.__value="paragraph";var La=$(ii);La.value=La.__value="sentence";var oe=$(La);oe.value=oe.__value="size",w(Fa),w(ka);var ze=$(ka),Pe=$(k(ze));Dt(Pe),w(ze),qt(2),w(St),ne(()=>{Fa.disabled=A(),Pe.disabled=A()}),rs(Fa,()=>e(G).split.method,st=>(Ct(G,e(G).split.method=st),Zi(()=>{A(),e(de),e(qe)}))),re("change",Fa,()=>{b(de,null),dt()}),za(Pe,()=>e(G).split.characters,st=>(Ct(G,e(G).split.characters=st),Zi(()=>{A(),e(de),e(qe)}))),re("input",Pe,()=>{b(de,null),dt()}),J(Wt,St)},ml=Wt=>{qi(bR(Wt,{get project(){return e(G)},get chunk(){return e(d)},get choices(){return e(R)},get voices(){return e(H)},get disabled(){return A()},onchange:()=>{dt(),b(Te,"editor")},onbusy:St=>A(St),onerror:St=>b(we,St),$$legacy:!0}),St=>b(Ie,St),()=>e(Ie))},Gn=Wt=>{var St=FB(),ka=$(k(St),2),Fa=$(k(ka));Dt(Fa),w(ka);var ii=$(ka,4),La=$(k(ii));Mt(La,4,()=>[.05,.1,.25,.5,1],Qt,(st,yt)=>{var ct=Qf(),Ze=k(ct);w(ct);var lt={};ne(sa=>{W(Ze,`${sa??""} seconds`),lt!==(lt=yt)&&(ct.value=(ct.__value=yt)??"")},[()=>x(()=>yt.toFixed(2))]),J(st,ct)}),w(La);var oe;Vn(La),w(ii);var ze=$(ii),Pe=$(k(ze));Mt(Pe,4,()=>[16e3,22050,24e3,44100,48e3],Qt,(st,yt)=>{var ct=Qf(),Ze=k(ct);w(ct);var lt={};ne(sa=>{W(Ze,`${sa??""} Hz`),lt!==(lt=yt)&&(ct.value=(ct.__value=yt)??"")},[()=>x(()=>yt.toLocaleString())]),J(st,ct)}),w(Pe),w(ze),w(St),ne(()=>{Fa.disabled=A(),La.disabled=A(),oe!==(oe=(e(G),x(()=>e(G).pauseIncrement??.1)))&&(La.value=(La.__value=(e(G),x(()=>e(G).pauseIncrement??.1)))??"",An(La,(e(G),x(()=>e(G).pauseIncrement??.1)))),Pe.disabled=A()}),za(Fa,()=>e(G).assembly.pause,st=>(Ct(G,e(G).assembly.pause=st),Zi(()=>{A(),e(de),e(qe)}))),re("input",Fa,dt),re("change",La,st=>{Ct(G,e(G).pauseIncrement=Number(st.currentTarget.value)),Zi(()=>{A(),e(de),e(qe)}),dt()}),rs(Pe,()=>e(G).assembly.sampleRate,st=>(Ct(G,e(G).assembly.sampleRate=st),Zi(()=>{A(),e(de),e(qe)}))),re("change",Pe,dt),J(Wt,St)},Ks=Wt=>{var St=UB(),ka=$(k(St),2),Fa=$(k(ka)),ii=k(Fa);ii.value=ii.__value="wav";var La=$(ii);La.value=La.__value="webm",w(Fa),w(ka);var oe=$(ka,2),ze=k(oe,!0);w(oe);var Pe=$(oe,2),st=$(k(Pe));lu(st,{label:"Enhancement model",emptyLabel:"Keep original audio",get choices(){return e(R)},tasks:["s2s","gen"],get families(){return e(B)},get disabled(){return A()},onchange:dt,get value(){return e(G).enhancement},set value(Kt){Ct(G,e(G).enhancement=Kt),Zi(()=>{A(),e(de),e(qe)})},$$legacy:!0});var yt=$(st),ct=k(yt);Dt(ct),qt(),w(yt);var Ze=$(yt);{var lt=Kt=>{var ta=MB(),Aa=$(k(ta));Dt(Aa),w(ta),ne(()=>Aa.disabled=A()),za(Aa,()=>e(G).finish.peakDb,Ha=>(Ct(G,e(G).finish.peakDb=Ha),Zi(()=>{A(),e(de),e(qe)}))),re("input",Aa,dt),J(Kt,ta)},sa=Kt=>{var ta=zB(),Aa=$(k(ta));Dt(Aa),w(ta),ne(()=>Aa.disabled=A()),za(Aa,()=>e(G).finish.gainDb,Ha=>(Ct(G,e(G).finish.gainDb=Ha),Zi(()=>{A(),e(de),e(qe)}))),re("input",Aa,dt),J(Kt,ta)};_e(Ze,Kt=>{e(G),x(()=>e(G).finish.normalize)?Kt(lt):Kt(sa,-1)})}var Xt=$(Ze);w(Pe);var ra=$(Pe,2),_i=k(ra);Uc(_i,{size:16}),qt(2),w(ra);var Va=$(ra,2);{var ga=Kt=>{var ta=EB();ne(()=>{he(ta,"href",e(qe)),he(ta,"download",e(rt))}),J(Kt,ta)},Ya=oi(()=>(e(qe),e(_),e(Xe),Y(Lc),e(G),x(()=>e(qe)&&e(_)&&e(Xe)===Lc(e(G))+e(G).finish.format)));_e(Va,Kt=>{e(Ya)&&Kt(ga)})}w(St),ne(()=>{Fa.disabled=A(),W(ze,(e(G),x(()=>e(G).finish.format==="wav"?"Full-quality PCM 16-bit audio, ready for your editor.":"A smaller audio file, encoded using your browser."))),ct.disabled=A(),Xt.disabled=A()||!e(v)}),rs(Fa,()=>e(G).finish.format,Kt=>(Ct(G,e(G).finish.format=Kt),Zi(()=>{A(),e(de),e(qe)}))),re("change",Fa,()=>{b(qe,""),dt()}),Wp(ct,()=>e(G).finish.normalize,Kt=>(Ct(G,e(G).finish.normalize=Kt),Zi(()=>{A(),e(de),e(qe)}))),re("change",ct,dt),re("click",Xt,li),J(Wt,St)};_e(ic,Wt=>{e(E)==="script"?Wt(Ji):e(E)==="speech"?Wt(ml,1):e(E)==="assemble"?Wt(Gn,2):Wt(Ks,-1)})}w(fl),w(wo);var fn=$(wo,2),gl=k(fn);{var ns=Wt=>{var St=RB(),ka=k(St);cf(ka,{size:15}),qt(),w(St),ne(()=>St.disabled=A()),re("click",St,()=>mt(Ue[Ue.findIndex(Fa=>Fa.id===e(E))-1].id)),J(Wt,St)};_e(gl,Wt=>{e(E)!=="script"&&Wt(ns)})}var yi=$(gl,2),zr=k(yi),Jc=k(zr,!0);w(zr);var xs=$(zr),Xc=k(xs,!0);w(xs),w(yi);var Ss=$(yi,2);{var So=Wt=>{var St=bs(),ka=xt(St);{var Fa=ii=>{var La=BB(),oe=k(La);Qo(oe,{size:14}),qt(),w(La),re("click",La,()=>e(Fe)?.abort()),J(ii,La)};_e(ka,ii=>{e(Fe)&&ii(Fa)})}J(Wt,St)},To=Wt=>{var St=PB(),ka=k(St,!0),Fa=$(ka);{var ii=ze=>{Uc(ze,{size:16})},La=ze=>{Bc(ze,{size:15})},oe=ze=>{df(ze,{size:16})};_e(Fa,ze=>{e(E)==="finish"?ze(ii):(e(E),e(o),e(y),x(()=>e(E)==="speech"&&e(o).length&&e(y))?ze(La,1):ze(oe,-1))})}w(St),ne(ze=>{St.disabled=e(S),W(ka,ze)},[()=>(e(E),e(G),e(q),x(()=>e(E)==="finish"?"Download "+e(G).finish.format.toUpperCase():e(q)))]),re("click",St,ot),J(Wt,St)};_e(Ss,Wt=>{A()?Wt(So):Wt(To,-1)})}w(fn);var hl=$(fn,2);{var $o=Wt=>{var St=OB(),ka=k(St),Fa=k(ka),ii=$(k(Fa),2),La=k(ii);w(ii),w(Fa);var oe=$(Fa,2);w(ka);var ze=$(ka,2),Pe=k(ze);Mt(Pe,5,()=>(e(d),x(()=>e(d).takes)),Qt,(Va,ga,Ya)=>{var Kt=jB();let ta;var Aa=k(Kt);Aa.textContent=`Take ${Ya+1}`;var Ha=$(Aa),on=k(Ha,!0);w(Ha);var Fn=$(Ha),Ys=k(Fn);w(Fn),w(Kt),ne((Xr,nc)=>{he(Kt,"aria-pressed",(e(ga),e(s),x(()=>e(ga).id===e(s).id))),ta=ba(Kt,1,"svelte-1szouna",null,ta,{chosen:e(ga).id===e(s).id}),W(on,Xr),W(Ys,`${nc??""} s`)},[()=>(e(ga),e(d),Y(Hs),e(G),x(()=>e(ga).id===e(d).takeId?"Used in narration":e(ga).signature===Hs(e(G),e(d))?"Matches current settings":"Earlier text or speaker")),()=>(e(ga),x(()=>(e(ga).rendered?.duration??e(ga).duration).toFixed(1)))]),re("click",Kt,()=>b(Ce,e(ga).id)),J(Va,Kt)}),w(Pe);var st=$(Pe,2),yt=k(st),ct=k(yt);w(yt);var Ze=$(yt,2),lt=k(Ze,!0);w(Ze);var sa=$(Ze,2);cv(sa,()=>(e(s),x(()=>e(s).id)),Va=>{var ga=NB();ne(Ya=>he(ga,"src",Ya),[()=>(e(s),x(()=>it(e(s).rendered?.audio||e(s).audio)))]),re("play",ga,ti),J(Va,ga)}),w(st),w(ze);var Xt=$(ze,2),ra=$(k(Xt)),_i=k(ra,!0);w(ra),w(Xt),w(St),Wu(St,Va=>Je?.(Va)),No(()=>re("cancel",St,()=>b(pe,!1))),ne((Va,ga)=>{W(La,`Passage ${e(g)+1} · ${Va??""}`),W(ct,`Take ${ga??""}`),W(lt,(e(s),x(()=>e(s).text))),ra.disabled=(Y(A()),e(s),e(d),x(()=>A()||e(s).id===e(d).takeId)),W(_i,(e(s),e(d),x(()=>e(s).id===e(d).takeId?"Selected":"Use this take")))},[()=>(Y(yo),e(G),e(d),x(()=>yo(e(G),e(d))?.name||"Speaker")),()=>(e(d),e(s),x(()=>e(d).takes.indexOf(e(s))+1))]),re("click",oe,()=>b(pe,!1)),re("click",ra,()=>{na(e(d),e(s)),b(pe,!1)}),J(Wt,St)};_e(hl,Wt=>{e(pe)&&e(d)&&e(s)&&Wt($o)})}var Yr=$(hl,2);{var Jr=Wt=>{var St=DB(),ka=k(St),Fa=k(ka),ii=$(k(Fa),2),La=k(ii);w(ii),w(Fa);var oe=$(Fa,2);w(ka);var ze=$(ka,2),Pe=k(ze);{let st=Yt(()=>(e(G),x(()=>e(G).pauseIncrement??.1)));sB(Pe,{get take(){return e(n)},get sampleRate(){return e(G),x(()=>e(G).assembly.sampleRate)},get increment(){return e(st)},get disabled(){return A()},get active(){return j()},onchange:yt=>{nt(yt),dt()},onincrement:yt=>{Ct(G,e(G).pauseIncrement=yt),Zi(()=>{A(),e(de),e(qe)}),dt()}})}w(ze),w(St),Wu(St,st=>Je?.(st)),No(()=>re("cancel",St,()=>b(V,!1))),ne(()=>W(La,`Passage ${e(g)+1} · original audio is preserved`)),re("click",oe,()=>b(V,!1)),J(Wt,St)};_e(Yr,Wt=>{e(V)&&e(n)&&Wt(Jr)})}var qo=$(Yr,2);{var Ao=Wt=>{var St=VB(),ka=k(St),Fa=$(k(ka),2);w(ka);var ii=$(ka,2),La=k(ii);Mt(La,1,()=>(e(G),e(Q),x(()=>e(G).archivedChunks.slice(e(Q)*L,(e(Q)+1)*L))),Qt,(Pe,st,yt)=>{var ct=IB(),Ze=k(ct),lt=k(Ze,!0),sa=$(lt),Xt=k(sa);w(sa),w(Ze);var ra=$(Ze,2);w(ct),ne(()=>{W(lt,(e(st),x(()=>e(st).text))),W(Xt,`${e(st),x(()=>e(st).takes.length)??""} recordings`),ra.disabled=A()}),re("click",ra,()=>{Ct(G,e(G).chunks=[...e(G).chunks,e(st)]),Zi(()=>{A(),e(de),e(qe)}),e(G).archivedChunks.splice(e(Q)*L+yt,1),dt()}),J(Pe,ct)});var oe=$(La);{var ze=Pe=>{var st=LB(),yt=k(st),ct=$(yt),Ze=k(ct);w(ct);var lt=$(ct);w(st),ne(()=>{yt.disabled=e(Q)===0,W(Ze,`${e(Q)+1} / ${e(i)??""}`),lt.disabled=e(Q)===e(i)-1}),re("click",yt,()=>Ou(Q,-1)),re("click",lt,()=>Ou(Q)),J(Pe,st)};_e(oe,Pe=>{e(i)>1&&Pe(ze)})}w(ii),w(St),Wu(St,Pe=>Je?.(Pe)),No(()=>re("cancel",St,()=>b(D,!1))),re("click",Fa,()=>b(D,!1)),J(Wt,St)};_e(qo,Wt=>{e(D)&&Wt(Ao)})}ne(()=>{W(ee,e(E)==="script"?e(de)?"Review your passages":"Write your script":e(E)==="speech"?"Speakers & recordings":e(E)==="assemble"?"Arrange your narration":"Export your narration"),W(Ii,e(E)==="script"?e(de)?"Choose a passage on the left to check the split.":"Start with your words. Review the passages when you’re ready.":e(E)==="speech"?"Choose a passage on the left. Assign its speaker on the right.":e(E)==="assemble"?"Choose a join on the left, then listen and adjust the pause.":"Listen once more and download your finished audio."),he(is,"aria-pressed",e(Te)==="passages"),he(jn,"aria-pressed",e(Te)==="editor"),he(ws,"aria-pressed",e(Te)==="settings"),W(dl,e(E)==="speech"?"Speakers":"Settings"),ko=ba(ks,1,"passage-rail svelte-1szouna",null,ko,{"mobile-visible":e(Te)==="passages"}),Kr=ba(Qs,1,"editor-pane svelte-1szouna",null,Kr,{"mobile-visible":e(Te)==="editor"}),pl=ba(fl,1,"settings-rail svelte-1szouna",null,pl,{"mobile-visible":e(Te)==="settings"}),he(fl,"aria-label",e(E)==="speech"?"Speaker controls":"Project settings"),W(Jc,A()?e(fe):e(fe)||e(M)),W(Xc,A()?"Completed work is saved as you go.":e(P))}),re("click",is,()=>b(Te,"passages")),re("click",jn,()=>b(Te,"editor")),re("click",ws,()=>b(Te,"settings")),J(ve,Le)};_e(ca,ve=>{e(G)&&ve(Bt)})}return w(Ai),Wu(Ai,ve=>tt?.(ve)),ne(()=>{he(Ai,"data-active",j()),ui=Hp(Ai,"",ui,{"--tts-top":`${e(ye)}px`}),W(Sa,e(me)?"Opening…":e($e)||e(ke)?"Saving…":"Saved"),Qe.disabled=A()||e(me),Ba!==(Ba=(e(G),x(()=>e(G)?.id||"")))&&(Qe.value=(Qe.__value=(e(G),x(()=>e(G)?.id||"")))??"",An(Qe,(e(G),x(()=>e(G)?.id||"")))),ai.disabled=A()||e(me),Ht.disabled=A()||e(me)||!e(G)}),re("change",Qe,ve=>Rt(ve.currentTarget.value)),re("click",ai,ya),re("click",Ht,xa),J(a,Ai),Il(t,"saveBeforeClose",It),Bi(Di)}const KB=Object.freeze(Object.defineProperty({__proto__:null,default:QB},Symbol.toStringTag,{value:"Module"}));class YB{runtimes=new Map;clear(){this.runtimes.clear()}async prepare(t,i){const n=JSON.stringify(t);let s=this.runtimes.get(t.model.id);s?.key!==n&&(s={key:n,runtime:new Vc(t,i)},this.runtimes.set(t.model.id,s)),await s.runtime.prepare(),i.throwIfAborted()}async execute(t,i,n,s=()=>{}){try{await this.prepare(t,n);const r={model:t.model.id,request:i,include_artifacts:!0};if(t.model.mode==="offline")return await yn("/v1/tasks/run",{method:"POST",body:JSON.stringify(r)},n);let o=null;for await(const l of Am(r,n))n.throwIfAborted(),l.type==="task.stream.event"?await s(l.event):o=l.result;if(!o)throw new Error("The model stream ended without a result.");return o}catch(r){throw this.runtimes.delete(t.model.id),r}}async speak(t,i,n,s,r,o){if([t,i,n].some(c=>c.model.mode!=="streaming"))throw new Error("Real-time avatar playback requires streaming conversation, TTS and avatar model entries.");await this.prepare(t,r),await this.prepare(i,r),await this.prepare(n,r);let l=null;for await(const c of Am({recipe:"voice-chat-avatar",stream:!0,include_artifacts:!0,models:{conversation:t.model.id,tts:i.model.id,avatar:n.model.id},request:s},r,"/v1/recipes/run"))r.throwIfAborted(),c.type==="task.stream.event"?await o(c.event):l=c.result;if(!l)throw new Error("The speaking-avatar stream ended without a result.");return l}}function Kf(a,t){const i=structuredClone(a);return a.id.endsWith(":configured")||(i.model.id=`voice-chat-${t}`,["lfm3_audio","soulx_flashhead"].includes(i.model.family)&&(i.model.mode="streaming")),i}class JB{constructor(t,i,n){this.context=t,this.canvas=i,this.speaking=n;const s=i.getContext("2d",{alpha:!1});if(!s)throw new Error("Canvas rendering is unavailable.");this.drawing=s}context;canvas;speaking;queue=[];videos=[];audio=[];sources=new Set;rate=0;buffered=0;received=0;scheduled=0;nextStart=0;animation=0;lastFrame="";stopped=!1;finish=null;complete=!1;drawing;done=new Promise(t=>{this.finish=t});get duration(){return this.rate?this.received/this.rate:0}addAudio(t,i){if(!this.stopped){if(this.rate&&this.rate!==i)throw new Error("Reply audio changed sample rate.");this.rate=i,this.received+=t.length,this.buffered+=t.length,t.length&&this.audio.push({samples:t,offset:0}),this.schedule()}}add(t){if(this.stopped)return;const{meta:i}=t,n=Number(i.width),s=Number(i.height),r=Number(i.frames),o=Number(i.fps);if(i.format!=="rgb24"||![n,s,r].every(l=>Number.isSafeInteger(l)&&l>0)||!(o>0))throw new Error("The avatar returned invalid video metadata.");if(t.payload.length!==Math.ceil(n*s*3*r/3)*4)throw new Error("The avatar returned an incomplete video chunk.");this.videos.push({video:t,width:n,height:s,frames:r,fps:o}),this.schedule()}schedule(){if(this.rate){for(;this.videos.length;){const t=this.videos[0],i=Math.round(t.frames/t.fps*this.rate);if(!this.complete&&this.buffered<i)break;const n=Math.min(i,this.buffered);if(this.videos.shift(),!n)continue;const s=this.context.createBuffer(1,n,this.rate),r=s.getChannelData(0);for(let d=0;d<n;){const g=this.audio[0],h=Math.min(n-d,g.samples.length-g.offset);r.set(g.samples.subarray(g.offset,g.offset+h),d),d+=h,g.offset+=h,g.offset===g.samples.length&&this.audio.shift()}this.buffered-=n,this.scheduled+=n;const o=Math.max(this.context.currentTime+.06,this.nextStart),l=o+n/this.rate,c=this.context.createBufferSource();c.buffer=s,c.connect(this.context.destination),c.onended=()=>{c.disconnect(),this.sources.delete(c)},c.start(o),this.sources.add(c),this.queue.push({...t,start:o,end:l}),this.nextStart=l}!this.animation&&this.queue.length&&this.draw()}}end(){if(this.complete=!0,this.schedule(),!this.scheduled)throw new Error("The avatar returned no synchronized audio/video.");if(this.buffered>this.rate*.04)throw new Error("The avatar video ended before the reply audio.")}stop(){if(!this.stopped){this.stopped=!0,cancelAnimationFrame(this.animation),this.animation=0;for(const t of this.sources)t.onended=null,t.stop(),t.disconnect();this.sources.clear(),this.queue=[],this.videos=[],this.audio=[],this.speaking(!1),this.finish?.()}}draw=()=>{if(this.stopped)return;const t=this.context.currentTime;for(;this.queue.length&&this.queue[0].end<=t;)this.queue.shift();const i=this.queue[0];if(this.speaking(!!(i&&t>=i.start)),i&&t>=i.start){const n=Math.min(i.frames-1,Math.floor((t-i.start)*i.fps)),s=`${i.start}:${n}`;if(s!==this.lastFrame){(this.canvas.width!==i.width||this.canvas.height!==i.height)&&(this.canvas.width=i.width,this.canvas.height=i.height);const r=i.width*i.height*4,o=T2(i.video.payload,n*r,r);this.drawing.putImageData(new ImageData($2(o),i.width,i.height),0,0),this.lastFrame=s}}if(this.complete&&!this.queue.length){this.stop();return}this.animation=requestAnimationFrame(this.draw)}}var dx=ie("<option> </option>"),XB=ie('<figure class="crop-preview svelte-1bq46gw"><img alt="Avatar center-crop preview" class="svelte-1bq46gw"/> <figcaption class="svelte-1bq46gw">512 × 512<br/>Center crop</figcaption></figure>'),ZB=ie('<p class="setup-note svelte-1bq46gw">Install or register ASR, LFM3-Audio (S2S and TTS), and SoulX-FlashHead models first.</p>'),eP=ie('<div class="setup svelte-1bq46gw"><label class="svelte-1bq46gw">Recognition<select aria-label="Recognition" class="svelte-1bq46gw"><option>Choose an ASR model</option><!></select></label> <label class="svelte-1bq46gw">Voice<select aria-label="Voice" class="svelte-1bq46gw"></select></label> <label class="svelte-1bq46gw">Speaking speed<select aria-label="Speaking speed" class="svelte-1bq46gw"><option>1× · Normal</option><option>1.15× · Faster</option><option>1.3× · Brisk</option><option>1.5× · Fast</option></select></label> <div class="portrait-pick svelte-1bq46gw"><label class="svelte-1bq46gw">Portrait <span class="portrait-control svelte-1bq46gw"><span class="portrait-filename svelte-1bq46gw"> </span> <!> <input aria-label="Portrait" type="file" accept="image/*" class="svelte-1bq46gw"/></span></label> <!></div> <label class="personality svelte-1bq46gw">Personality (optional) <textarea aria-label="Personality" rows="2" placeholder="Describe how the avatar should respond, such as warm, concise and a little witty." class="svelte-1bq46gw"></textarea></label> <!></div>'),tP=ie('<img alt="Your conversation portrait" class="svelte-1bq46gw"/>'),aP=ie('<div class="portrait-empty svelte-1bq46gw"><!><span class="svelte-1bq46gw">Give your conversation a face</span><small class="svelte-1bq46gw">Choose a portrait in Setup</small></div>'),iP=ie('<div class="welcome svelte-1bq46gw"><span class="greeting svelte-1bq46gw">Hello, you.</span><p class="svelte-1bq46gw">Ask a question, tell a story, or see where the conversation takes you.</p><div class="suggestion svelte-1bq46gw">“What’s something worth learning today?”</div></div>'),nP=ie('<audio controls="" preload="metadata" class="svelte-1bq46gw"></audio>'),sP=ie('<small class="svelte-1bq46gw">Reply interrupted. You can try again.</small>'),rP=ie('<article><span class="speaker-name svelte-1bq46gw"> </span><p class="svelte-1bq46gw"> </p><!><!></article>'),oP=ie('<div class="timing svelte-1bq46gw"> </div>'),lP=ie('<p class="error svelte-1bq46gw" role="alert"> </p>'),cP=ie('<button class="talk stop svelte-1bq46gw"><!> Stop</button>'),dP=ie("<!> Finish",1),uP=ie("<!> Talk",1),fP=ie("<button><!></button>"),pP=ie('<section class="voice-chat svelte-1bq46gw"><header class="svelte-1bq46gw"><div><span class="eyebrow svelte-1bq46gw">LFM3 · SOULX</span><h1 class="svelte-1bq46gw">Voice chat</h1><p class="svelte-1bq46gw">Talk naturally, with a voice and avatar you choose.</p></div> <div class="tools svelte-1bq46gw"><button aria-label="New conversation" class="svelte-1bq46gw"><!> New chat</button><button class="svelte-1bq46gw"><!> Setup</button></div></header> <!> <div class="conversation svelte-1bq46gw"><div><!> <canvas aria-label="Animated speaking portrait"></canvas> <div class="stage-caption svelte-1bq46gw"><span></span> <span class="private svelte-1bq46gw">ON YOUR SERVER</span></div></div> <div class="chat-panel svelte-1bq46gw"><div class="chat-heading svelte-1bq46gw"><span>Conversation</span><span class="session-tag svelte-1bq46gw"> </span></div> <div class="messages svelte-1bq46gw" aria-live="polite" aria-relevant="additions text"><!> <!></div> <!> <!> <div class="composer svelte-1bq46gw"><div class="status svelte-1bq46gw" role="status"> </div><div class="actions svelte-1bq46gw"><label class="upload svelte-1bq46gw" title="Upload an audio recording of your question"><!><span>Upload recording</span><input aria-label="Send a recording" type="file" accept="audio/*" class="svelte-1bq46gw"/></label><!></div></div> <p class="footnote svelte-1bq46gw">Record with Talk, then press Finish to send. Or upload a recording of your question. New chat clears conversation context.</p></div></div></section>');function mP(a,t){Ri(t,!1);const i=K(),n=K(),s=K(),r=K(),o=K();let l=Se(t,"busy",12,!1),c=Se(t,"active",8,!0),d=K([]),g=K(""),h=K(""),m=K(""),p=K("american_english_female"),u=K(""),f=K(1),_=K(!0),v=K(null),y=K(""),S=K(),q=K(),M=K(!1),P=K(),B=K("Choose your models and a portrait to begin."),A=K(""),j=K(!0),G=K(!1),C=K(!1),R=K(!1),H=0,E=null,U=null,N=null,L=null,I=null,T=[],F=K([]),z=K(null),D="";const Q=new YB,X=et=>et.replaceAll("_"," ").replace(/\b\w/g,pt=>pt.toUpperCase());async function Z(){b(j,!0),b(A,"");try{b(d,await su()),b(g,e(d).find(et=>et.model.task==="asr"&&et.model.family==="owsm"&&/base[ -_]102m/i.test(`${et.model.path} ${et.name}`))?.id||e(d).find(et=>et.model.task==="asr"&&et.model.family==="owsm_ctc")?.id||e(d).find(et=>et.model.task==="asr"&&et.model.family==="lfm3_audio")?.id||e(d).find(et=>et.model.task==="asr"&&et.model.family==="crisperwhisper")?.id||""),b(h,e(d).find(et=>et.model.family==="lfm3_audio"&&et.model.task==="s2s")?.id||""),b(m,e(d).find(et=>et.model.family==="soulx_flashhead")?.id||"")}catch(et){b(A,String(et))}finally{b(j,!1)}}function ue(et){et&&(e(y)&&URL.revokeObjectURL(e(y)),b(M,!1),b(v,et),b(y,URL.createObjectURL(et)))}function de(){T=[],b(z,null),D="";for(const et of e(F))et.audio&&URL.revokeObjectURL(et.audio);b(F,[]),b(A,""),b(B,"Ready when you are.")}function ae(){++H,N?.abort(),Q.clear(),I?.stop(),e(S)?.querySelectorAll("audio").forEach(et=>et.pause()),I=null,E&&E.state!=="inactive"&&(E.onstop=null,E.stop()),U?.getTracks().forEach(et=>et.stop()),U=null,E=null,b(C,!1),b(B,"Stopped")}async function V(){if(e(C)){E?.stop();return}if(!e(o)||l()||e(R))return;e(S)?.querySelectorAll("audio").forEach(pt=>pt.pause()),b(R,!0);const et=++H;b(A,"");try{if(L||=new AudioContext({sampleRate:24e3,latencyHint:"interactive"}),await L.resume(),U=await navigator.mediaDevices.getUserMedia({audio:{echoCancellation:!0,noiseSuppression:!0}}),et!==H||!c()){U.getTracks().forEach(ht=>ht.stop()),U=null;return}const pt=[];E=new MediaRecorder(U),E.ondataavailable=ht=>{ht.data.size&&pt.push(ht.data)},E.onstop=()=>{const ht=E.mimeType;U?.getTracks().forEach(vt=>vt.stop()),U=null,E=null,b(C,!1),pe(new File(pt,"question.webm",{type:ht}))},E.start(),b(C,!0),b(B,"Listening — press again when you finish.")}catch(pt){U?.getTracks().forEach(ht=>ht.stop()),U=null,b(A,`Microphone: ${String(pt)}`)}finally{b(R,!1)}}async function pe(et){if(!et||!e(o)||l())return;e(S)?.querySelectorAll("audio").forEach(fa=>fa.pause()),b(M,!1),l(!0),b(A,""),b(G,!1),b(z,null);const pt=new AbortController;N=pt;const ht=pt.signal,vt=performance.now(),zt=e(d).find(fa=>fa.id===e(h)),Lt=Kf(zt,"conversation"),ma=Kf(e(d).find(fa=>fa.id===e(g)),"recognition"),na=Kf(e(d).find(fa=>fa.id===e(m)),"avatar"),Ta=e(d).find(fa=>fa.model.family==="lfm3_audio"&&fa.model.task==="tts"&&fa.model.path===Lt.model.path);if(!Ta){b(A,"Register an LFM3 TTS model using the same checkpoint as the conversation model."),l(!1);return}const Qa=Kf(Ta,"voice"),li=JSON.stringify([Lt.model,e(u).trim()]);D&&li!==D&&de(),D=li;const hi=e(F).length;b(F,[...e(F),{role:"user",text:"Transcribing…"},{role:"assistant",text:""}]),await Fs(),e(P)?.scrollTo({top:e(P).scrollHeight,behavior:"smooth"});try{L||=new AudioContext({sampleRate:24e3,latencyHint:"interactive"}),await L.resume(),b(B,"Listening to your message…");const fa=await mr(et,16e3),ti=await Os(fa,ht);ht.throwIfAborted();const Di=await Oc(e(v),ht);let Ai="";const ui={...ma.request.options};["owsm","owsm_ctc"].includes(ma.model.family)&&(ui.language="auto");const Ia=Q.execute(ma,{audio:ti,options:ui},ht).then(Gt=>{if(Ai=String(Gt.text||"").trim(),!Ai)throw new Error("The recognition model returned no transcript.");Ct(F,e(F)[hi]={...e(F)[hi],text:Ai}),b(F,[...e(F)])});b(B,"Thinking…"),I=new JB(L,e(q),Gt=>{e(G)!==Gt&&b(G,Gt),Gt&&b(M,!0)});let Yi=0;const hn=Q.speak(Lt,Qa,na,{audio:ti,artifacts:T,text:e(u).trim()?`Respond with interleaved text and audio. ${e(u).trim()}`:void 0,voice_id:e(p),options:{speaking_speed:e(f),"conversation.return_codes":!0,"avatar.reference_image_file":Di}},ht,Gt=>{const Pa=Gt.partial_text;if(Pa?.text&&(Ct(F,e(F)[hi+1].text+=Pa.text),b(F,[...e(F)]),e(G)||b(B,"Streaming your chosen voice…")),typeof Gt.audio=="string"){const Sa=Eb(Rm(Gt.audio));I.addAudio(Sa.samples,Sa.sampleRate)}for(const Sa of Gt.artifacts||[])Sa.meta?.format==="rgb24"&&(Yi||(Yi=performance.now()-vt),I.add(Sa))}),[,un]=await Promise.all([Ia,hn]),rn=String(un.text||"").trim(),He=un.artifacts?.find(Gt=>Gt.id==="lfm3_audio.reply");if(!rn||!He)throw new Error("LFM3 returned no complete conversation reply.");if(Ct(F,e(F)[hi+1].text=rn),b(F,[...e(F)]),ht.throwIfAborted(),I.end(),typeof un.audio!="string")throw new Error("The streaming recipe returned no replay audio.");Ct(F,e(F)[hi+1].audio=URL.createObjectURL(hb(un.audio))),b(F,[...e(F)]),b(z,{wall:performance.now()-vt,duration:I.duration*1e3,firstVideo:Yi}),T=[...T,{id:"lfm3_audio.question",kind:"custom",path:ti},He],b(B,"Reply ready"),await I.done,ht.aborted||b(B,"Your turn")}catch(fa){pt.abort(),Q.clear(),I?.stop(),Ct(F,e(F)[hi+1].failed=!0),b(F,[...e(F)]),b(B,ht.aborted&&fa?.name==="AbortError"?"Stopped":"Could not finish this reply"),fa?.name!=="AbortError"&&b(A,fa instanceof Error?fa.message:String(fa))}finally{l(!1),N=null,b(G,!1)}}i5(()=>{l()&&e(P)&&e(P).scrollHeight-e(P).scrollTop-e(P).clientHeight<120&&Ct(P,e(P).scrollTop=e(P).scrollHeight)}),Qn(Z),Ns(()=>{ae();for(const et of e(F))et.audio&&URL.revokeObjectURL(et.audio);e(y)&&URL.revokeObjectURL(e(y)),L?.close()}),Ee(()=>e(d),()=>{b(i,e(d).filter(et=>et.model.task==="asr"))}),Ee(()=>e(d),()=>{b(n,e(d).filter(et=>et.model.family==="lfm3_audio"&&et.model.task==="s2s"))}),Ee(()=>e(d),()=>{b(s,e(d).filter(et=>et.model.family==="soulx_flashhead"))}),Ee(()=>Oi,()=>{b(r,Oi.find(et=>et.family==="lfm3_audio"&&et.task==="tts")?.builtin_voices||[])}),Ee(()=>(e(g),e(h),e(m),e(v)),()=>{b(o,!!(e(g)&&e(h)&&e(m)&&e(v)))}),Ee(()=>(e(o),e(B)),()=>{e(o)&&e(B)==="Choose your models and a portrait to begin."&&b(B,"Ready when you are.")}),Ee(()=>(Y(c()),Y(l()),e(C)),()=>{!c()&&(l()||e(C))&&ae()}),bn(),en();var Ce=pP(),ce=k(Ce),Te=$(k(ce),2),ye=k(Te),Ie=k(ye);Sm(Ie,{size:16}),qt(),w(ye);var Je=$(ye),tt=k(Je);rT(tt,{size:16}),qt(),w(Je),w(Te),w(ce);var De=$(ce,2);{var le=et=>{var pt=eP(),ht=k(pt),vt=$(k(ht)),zt=k(vt);zt.value=zt.__value="";var Lt=$(zt);Mt(Lt,1,()=>e(i),Qt,(Ot,Ea)=>{var wa=dx(),$a=k(wa,!0);w(wa);var qa={};ne(()=>{W($a,(e(Ea),x(()=>e(Ea).name))),qa!==(qa=(e(Ea),x(()=>e(Ea).id)))&&(wa.value=(wa.__value=(e(Ea),x(()=>e(Ea).id)))??"")}),J(Ot,wa)}),w(vt),w(ht);var ma=$(ht,2),na=$(k(ma));Mt(na,5,()=>e(r),Qt,(Ot,Ea)=>{var wa=dx(),$a=k(wa,!0);w(wa);var qa={};ne(Qe=>{W($a,Qe),qa!==(qa=e(Ea))&&(wa.value=(wa.__value=e(Ea))??"")},[()=>(e(Ea),x(()=>X(e(Ea))))]),J(Ot,wa)}),w(na),w(ma);var Ta=$(ma,2),Qa=$(k(Ta)),li=k(Qa);li.value=li.__value=1;var hi=$(li);hi.value=hi.__value=1.15;var fa=$(hi);fa.value=fa.__value=1.3;var ti=$(fa);ti.value=ti.__value=1.5,w(Qa),w(Ta);var Di=$(Ta,2),Ai=k(Di),ui=$(k(Ai)),Ia=k(ui),Yi=k(Ia,!0);w(Ia);var hn=$(Ia,2);Pc(hn,{size:16});var un=$(hn,2);w(ui),w(Ai);var rn=$(Ai,2);{var He=Ot=>{var Ea=XB(),wa=k(Ea);qt(2),w(Ea),ne(()=>he(wa,"src",e(y))),J(Ot,Ea)};_e(rn,Ot=>{e(y)&&Ot(He)})}w(Di);var Gt=$(Di,2),Pa=$(k(Gt));nn(Pa),w(Gt);var Sa=$(Gt,2);{var ua=Ot=>{var Ea=ZB();J(Ot,Ea)};_e(Sa,Ot=>{e(j),e(i),e(n),e(s),x(()=>!e(j)&&(!e(i).length||!e(n).length||!e(s).length))&&Ot(ua)})}w(pt),ne(()=>{vt.disabled=l()||e(C),na.disabled=l()||e(C),Qa.disabled=l()||e(C),W(Yi,(e(v),x(()=>e(v)?.name||"Choose an image…"))),un.disabled=l()||e(C),Pa.disabled=l()||e(C)}),rs(vt,()=>e(g),Ot=>b(g,Ot)),rs(na,()=>e(p),Ot=>b(p,Ot)),rs(Qa,()=>e(f),Ot=>b(f,Ot)),re("change",un,Ot=>ue(Ot.currentTarget.files?.[0])),za(Pa,()=>e(u),Ot=>b(u,Ot)),J(et,pt)};_e(De,et=>{e(_)&&et(le)})}var xe=$(De,2),Ke=k(xe);let fe;var we=k(Ke);{var me=et=>{var pt=tP();ne(()=>he(pt,"src",e(y))),J(et,pt)},be=et=>{var pt=aP(),ht=k(pt);Ud(ht,{size:48}),qt(2),w(pt),J(et,pt)};_e(we,et=>{e(y)?et(me):et(be,-1)})}var ke=$(we,2);let $e;qi(ke,et=>b(q,et),()=>e(q));var ge=$(ke,2),Me=k(ge);let Fe;var qe=$(Me,1,!0);qt(),w(ge),w(Ke);var rt=$(Ke,2),Xe=k(rt),Re=$(k(Xe)),Be=k(Re,!0);w(Re),w(Xe);var Oe=$(Xe,2),Ne=k(Oe);{var Ye=et=>{var pt=iP();J(et,pt)};_e(Ne,et=>{e(F),x(()=>!e(F).length)&&et(Ye)})}var Ue=$(Ne,2);Mt(Ue,1,()=>e(F),Qt,(et,pt)=>{var ht=rP();let vt;var zt=k(ht),Lt=k(zt,!0);w(zt);var ma=$(zt),na=k(ma,!0);w(ma);var Ta=$(ma);{var Qa=fa=>{var ti=nP();ne(()=>he(ti,"src",(e(pt),x(()=>e(pt).audio)))),J(fa,ti)};_e(Ta,fa=>{e(pt),Y(l()),x(()=>e(pt).audio&&!l())&&fa(Qa)})}var li=$(Ta);{var hi=fa=>{var ti=sP();J(fa,ti)};_e(li,fa=>{e(pt),x(()=>e(pt).failed)&&fa(hi)})}w(ht),ne(()=>{vt=ba(ht,1,"svelte-1bq46gw",null,vt,{user:e(pt).role==="user",failed:e(pt).failed}),W(Lt,(e(pt),x(()=>e(pt).role==="user"?"YOU":"LFM3"))),W(na,(e(pt),x(()=>e(pt).text||"Thinking…")))}),J(et,ht)}),w(Oe),qi(Oe,et=>b(P,et),()=>e(P));var Ve=$(Oe,2);{var _t=et=>{var pt=oP(),ht=k(pt);w(pt),ne((vt,zt,Lt)=>{he(pt,"data-session-wall-ms",(e(z),x(()=>e(z).wall))),he(pt,"data-audio-duration-ms",(e(z),x(()=>e(z).duration))),he(pt,"data-first-video-ms",(e(z),x(()=>e(z).firstVideo))),W(ht,`${vt??""} s to generate · ${zt??""} s of speech · RTF ${Lt??""}`)},[()=>(e(z),x(()=>(e(z).wall/1e3).toFixed(1))),()=>(e(z),x(()=>(e(z).duration/1e3).toFixed(1))),()=>(e(z),x(()=>(e(z).wall/e(z).duration).toFixed(2)))]),J(et,pt)};_e(Ve,et=>{e(z)&&et(_t)})}var mt=$(Ve,2);{var ot=et=>{var pt=lP(),ht=k(pt,!0);w(pt),ne(()=>W(ht,e(A))),J(et,pt)};_e(mt,et=>{e(A)&&et(ot)})}var it=$(mt,2),nt=k(it),gt=k(nt,!0);w(nt);var dt=$(nt),It=k(dt),Ut=k(It);Pc(Ut,{size:18});var Rt=$(Ut,2);w(It);var ya=$(It);{var xa=et=>{var pt=cP(),ht=k(pt);Qo(ht,{size:18}),qt(),w(pt),re("click",pt,ae),J(et,pt)},pa=et=>{var pt=fP();let ht;var vt=k(pt);{var zt=ma=>{var na=dP(),Ta=xt(na);Qo(Ta,{size:18}),qt(),J(ma,na)},Lt=ma=>{var na=uP(),Ta=xt(na);uf(Ta,{size:18}),qt(),J(ma,na)};_e(vt,ma=>{e(C)?ma(zt):ma(Lt,-1)})}w(pt),ne(()=>{ht=ba(pt,1,"talk svelte-1bq46gw",null,ht,{recording:e(C)}),pt.disabled=!e(o)||e(j)||e(R)}),re("click",pt,V),J(et,pt)};_e(ya,et=>{l()?et(xa):et(pa,-1)})}w(dt),w(it),qt(2),w(rt),w(xe),w(Ce),qi(Ce,et=>b(S,et),()=>e(S)),ne(et=>{ye.disabled=l()||e(C),he(Je,"aria-expanded",e(_)),fe=ba(Ke,1,"portrait-stage svelte-1bq46gw",null,fe,{speaking:e(G)}),$e=ba(ke,1,"svelte-1bq46gw",null,$e,{visible:e(M)}),Fe=ba(Me,1,"live-dot svelte-1bq46gw",null,Fe,{pulse:e(G)||e(C)}),W(qe,e(G)?"Speaking":e(C)?"Listening":"LFM3-Audio"),W(Be,et),W(gt,e(G)?"Speaking…":e(B)),Rt.disabled=!e(o)||l()||e(C)},[()=>(e(p),x(()=>X(e(p))))]),re("click",ye,de),re("click",Je,()=>b(_,!e(_))),re("change",Rt,et=>{pe(et.currentTarget.files?.[0]),et.currentTarget.value=""}),J(a,Ce),Bi()}const gP=Object.freeze(Object.defineProperty({__proto__:null,default:mP},Symbol.toStringTag,{value:"Module"}));return Au.app=eb,Au.start=nS,Object.defineProperty(Au,Symbol.toStringTag,{value:"Module"}),Au})({});
|
||
|
||
|
||
__sveltekit_1xyyov.app.start(element);
|
||
}
|
||
</script>
|
||
</div>
|
||
</body>
|
||
</html>
|