diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..188a854 --- /dev/null +++ b/.gitignore @@ -0,0 +1,27 @@ +.DS_Store +.idea +.pnpm-store +*.cpuprofile +*.local +*.log +/.vscode/ +/docs/.vitepress/cache +/docs/.vitepress/.temp +/packages/vite/LICENSE +dist +dist-ssr +explorations +node_modules +!**/glob-import/root/dir/node_modules +!**/fixtures/glob-exports/node_modules +!**/fixtures/glob-exports/node_modules/my-pkg/dist +!**/fixtures/config/native-compat/json-named-import-bare/node_modules +!**/fixtures/config/native-compat/json-named-import-ok/node_modules +playground-temp +temp +TODOs.md +.eslintcache + +# runtime-created symlink for glob-import playground tests +playground/glob-import/root/follow-symlinks/linked/my-lib +jwl.tar.gz \ No newline at end of file diff --git a/dist/index.html b/dist/index.html deleted file mode 100644 index df7c5fa..0000000 --- a/dist/index.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - JapLearn — интервальные повторения - - - - -
-
- -
-

JapLearn

-

Главная

-
-
-
- - - - -
- -
-
- - diff --git a/index.html b/index.html index e966fbd..5df1621 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,46 @@ + + + + + + + + + + + + + + + + + + + + + + JapLearn — интервальные повторения @@ -37,6 +76,8 @@ + + diff --git a/dist/assets/db-worker-DFFhVJkA.js b/jwl/assets/db-worker-DFFhVJkA.js similarity index 100% rename from dist/assets/db-worker-DFFhVJkA.js rename to jwl/assets/db-worker-DFFhVJkA.js diff --git a/dist/assets/index-CE-H_FG6.css b/jwl/assets/index-BQ2pEdzg.css similarity index 53% rename from dist/assets/index-CE-H_FG6.css rename to jwl/assets/index-BQ2pEdzg.css index 04c3983..a623168 100644 --- a/dist/assets/index-CE-H_FG6.css +++ b/jwl/assets/index-BQ2pEdzg.css @@ -1 +1 @@ -@font-face{font-family:Noto Sans JP;src:url(/fonts/NotoSansJP-VariableFont_wght.ttf) format("truetype");font-weight:100 900;font-style:normal;font-display:swap}:root{color-scheme:dark;--bg: #282828;--fg: #fbf1c7;--bg-weakest: #2f2f2f;--bg-weak: #414141;--bg-strong: #4f4f4f;--muted: #908c7c;--secondary: #908c7c;--secondary-strong: #9f9b8d;--on-secondary: #1f1e1a;--primary: #458588;--primary-weak: #3b6c6e;--primary-strong: #49a8ac;--on-primary: #0a1c1d;--success: #98971a;--success-strong: #7c7900;--on-success: #222102;--warning: #d79921;--warning-strong: #b67a00;--on-warning: #342203;--danger: #cc241d;--danger-strong: #ff0000;--on-danger: #fdf9f9;--danger-text: #fb4934;--fg-soft: rgb(251 241 199 / .85);--fg-faint: rgb(251 241 199 / .3);--surface-press: rgb(255 255 255 / .1);--surface-press-soft: rgb(255 255 255 / .08);--space: 16px;--space-half: 8px;--space-quarter: 4px;--radius: 8px;--radius-sm: 12px;--radius-xs: 2px;font-family:Noto Sans JP,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:17px;line-height:1.5;color:var(--fg);background:var(--bg)}*{box-sizing:border-box}body{margin:0;min-height:100dvh;display:flex;justify-content:center;background:var(--bg);color:var(--fg);padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}::selection{background:var(--primary-weak);color:var(--fg)}#app{width:100%;max-width:480px;padding:var(--space) var(--space) calc(var(--space) * 2);display:flex;flex-direction:column;gap:var(--space)}.top-bar{display:flex;align-items:center;gap:12px}.burger-btn{width:44px;height:44px;border:none;border-radius:var(--radius);background:transparent;color:var(--fg);cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;touch-action:manipulation;flex:none}.burger-btn span{display:block;width:20px;height:2px;border-radius:1px;background:currentColor}.burger-btn:active,.burger-btn[aria-expanded=true]{background:var(--surface-press)}.burger-btn[aria-expanded=true] span{background:var(--primary-strong)}.top-bar-title h1{margin:0;font-size:22px;font-weight:700;line-height:1.2}.top-bar-title p{margin:0;font-size:.9rem;color:var(--muted)}.top-bar-spacer{flex:1}.app-content{display:flex;flex-direction:column;gap:var(--space)}.drawer-overlay{position:fixed;inset:0;background:#282828b8;z-index:40}.drawer-overlay[hidden]{display:none}.drawer{position:fixed;top:0;left:0;bottom:0;width:min(300px,85vw);background:var(--bg-weakest);border-right:1px solid var(--bg-weak);z-index:50;transform:translate(-105%);visibility:hidden;transition:transform .22s ease,visibility 0s linear .22s;display:flex;flex-direction:column;gap:var(--space-quarter);padding:var(--space) var(--space-half)}.drawer.open{transform:translate(0);visibility:visible;transition:transform .22s ease,visibility 0s}.drawer-header{padding:var(--space-quarter) var(--space-half) 14px;border-bottom:1px solid var(--bg-strong);margin-bottom:var(--space-half)}.drawer-logo{font-size:22px;font-weight:800;color:var(--primary-strong)}.drawer-subtitle{font-size:.9rem;color:var(--muted)}.drawer-btn{border:none;background:transparent;text-align:left;font:inherit;font-size:1.05rem;font-weight:600;color:var(--fg);padding:13px 12px;border-radius:var(--radius);cursor:pointer;touch-action:manipulation}.drawer-btn:hover,.drawer-btn:active{background:var(--surface-press)}.drawer-btn.active{background:var(--surface-press);color:var(--primary-strong)}body.drawer-open{overflow:hidden}.card{background:var(--bg-weakest);border:1px solid var(--bg-weak);border-radius:var(--radius-sm);padding:var(--space);display:flex;flex-direction:column;gap:12px}.card-title{margin:0;font-size:1.25rem;font-weight:700}.card-hint{margin:0;color:var(--muted);font-size:.95rem}.field-label{font-weight:600;font-size:.95rem}.token-input,.words-search,.words-group{padding:12px;font:inherit;font-size:1rem;color:var(--fg);background:var(--bg);border:1px solid var(--bg-strong);border-radius:var(--radius);outline:none;appearance:none}.token-input::placeholder,.words-search::placeholder{color:var(--muted)}.token-input:focus,.words-search:focus,.words-group:focus{border-color:var(--primary-strong)}.token-input:disabled{background:var(--bg-weak);color:var(--muted)}.token-input{width:100%;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.04em}.token-input.invalid{border-color:var(--danger-text)}.token-meta{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-half);min-height:1.4em}.token-error{color:var(--danger-text);font-size:.9rem}.token-counter{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}.btn-row{display:flex;gap:12px}.btn{flex:1;padding:12px 14px;font:inherit;font-size:1rem;font-weight:600;border:1px solid transparent;border-radius:var(--radius);background:var(--secondary);color:var(--on-secondary);cursor:pointer;touch-action:manipulation}.btn:not(:disabled):active{background:var(--secondary-strong)}.btn-primary{background:var(--primary);color:var(--on-primary)}.btn-primary:not(:disabled):active{background:var(--primary-strong)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-ghost{align-self:flex-start;flex:none;padding:10px 12px;border-color:transparent;background:transparent;color:var(--fg)}.btn-ghost:not(:disabled):active{background:var(--surface-press)}.status-bar{margin:0;padding:10px 12px;border-radius:var(--radius);background:#908c7c2e;border:1px solid rgb(144 140 124 / .45);color:var(--fg);font-size:.95rem;word-break:break-word}.status-bar[hidden]{display:none}.db-banner{display:flex;align-items:center;gap:var(--space-half);padding:10px 12px;border-radius:var(--radius);background:#d799214d;border:1px solid var(--warning);color:var(--fg);font-size:.9rem}.db-banner[hidden]{display:none}.db-banner-text{flex:1;min-width:0}.db-banner-link{flex:none;border:none;border-radius:var(--radius);background:transparent;padding:4px 6px;font:inherit;font-weight:700;color:var(--fg);cursor:pointer;touch-action:manipulation}.db-banner-link:active{background:var(--surface-press)}.db-banner-link[hidden]{display:none}.words-toolbar{display:flex;gap:var(--space-half)}.words-search{flex:1;min-width:0}.words-group{flex:none;max-width:42%;padding:12px 8px;font-size:.95rem;font-weight:600}.words-list{display:flex;flex-direction:column}.word-row-wrap{border-bottom:1px solid var(--bg-strong)}.word-row-wrap:last-child{border-bottom:none}.word-row{display:flex;align-items:baseline;gap:var(--space-half);width:100%;padding:11px 6px;border:none;background:transparent;font:inherit;color:inherit;text-align:left;cursor:pointer;touch-action:manipulation;border-radius:var(--radius)}.word-row:disabled{cursor:default}.word-row:not(:disabled):active,.word-row.open{background:var(--surface-press-soft)}.word-main{flex:1;min-width:0;overflow-wrap:break-word}.word-key{font-weight:700}.word-sep{color:var(--muted)}.word-value{color:var(--fg-soft)}.word-tag{flex:none;max-width:38%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.8rem;color:var(--muted);text-align:right}.word-dot{flex:none;width:6px;height:6px;border-radius:50%;background:var(--primary-strong);align-self:center}.word-extra[hidden]{display:none}.word-extra-list{margin:0 0 10px;padding:10px 12px;background:var(--bg-weak);border-radius:var(--radius-xs);display:flex;flex-direction:column;gap:var(--space-half)}.word-extra-row dt{font-size:.8rem;font-weight:700;color:var(--muted)}.word-extra-row dd{margin:2px 0 0;word-break:break-word}.empty-val{color:var(--fg-faint)}button.word-row-wrap{border:none;border-bottom:1px solid var(--bg-strong)}button.word-row-wrap:last-child{border-bottom:none}button.word-row-wrap:not(:disabled):hover{background:var(--surface-press-soft)}.deck-form{display:flex;flex-direction:column;gap:var(--space-half);margin-top:12px}.deck-form .field-label{margin-top:var(--space-quarter)}.deck-form .btn-row{margin-top:var(--space-half)}.deck-form .card-hint:empty{display:none}.deck-sub{margin:var(--space) 0 var(--space-half);padding-bottom:var(--space-half);border-bottom:1px solid var(--bg-strong);font-size:1rem;color:var(--fg)}.deck-row{display:flex;align-items:stretch;gap:var(--space-quarter)}.deck-name{flex:1;min-width:0}.deck-play{flex:none;align-self:center;width:44px;height:44px;border:none;border-radius:var(--radius);background:var(--primary);color:var(--on-primary);font-size:1rem;cursor:pointer;touch-action:manipulation}.deck-play:active{background:var(--primary-strong)}.hist-row-wrap{padding:9px 6px;border-bottom:1px solid var(--bg-strong)}.hist-row-wrap:last-child{border-bottom:none}.hist-main{overflow-wrap:break-word}.hist-meta{display:flex;align-items:baseline;gap:var(--space-half);margin-top:var(--space-quarter)}.hist-grade{flex:none;padding:2px 10px;border:1px solid transparent;border-radius:999px;font-size:.8rem;font-weight:700;color:var(--fg)}.hist-grade.grade-fail{background:#cc241d4d;border-color:var(--danger)}.hist-grade.grade-hard{background:#d799214d;border-color:var(--warning)}.hist-grade.grade-good{background:#98971a4d;border-color:var(--success)}.hist-grade.grade-easy{background:#4585884d;border-color:var(--primary)}#review-body{display:flex;flex-direction:column;gap:12px;margin-top:12px}.review-card{display:block;width:100%;border:1px solid var(--bg-weak);border-radius:var(--radius);background:var(--bg-weakest);padding:var(--space) 12px;font:inherit;color:inherit;text-align:center;cursor:pointer;touch-action:manipulation}.review-card:active{border-color:var(--primary-strong)}.review-side{display:flex;flex-direction:column;gap:var(--space-half)}.review-line{margin:0;overflow-wrap:break-word;font-size:1.15rem}.review-front .review-line:first-child{font-size:36px;font-weight:600;line-height:1.25}.review-hr{border:none;border-top:2px solid var(--bg-strong);margin:14px 0}.review-tap{margin:12px 0 0;font-size:.85rem;color:var(--fg-faint)}.review-grades{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-half)}.review-grade{margin:0}.review-grade.grade-fail{background:var(--danger);color:var(--on-danger)}.review-grade.grade-fail:not(:disabled):active{background:var(--danger-strong)}.review-grade.grade-hard{background:var(--warning);color:var(--on-warning)}.review-grade.grade-hard:not(:disabled):active{background:var(--warning-strong)}.review-grade.grade-good{background:var(--success);color:var(--on-success)}.review-grade.grade-good:not(:disabled):active{background:var(--success-strong)}.review-grade.grade-easy{background:var(--primary);color:var(--on-primary)}.review-grade.grade-easy:not(:disabled):active{background:var(--primary-strong)}@media(prefers-reduced-motion:reduce){.drawer{transition:none}} +@font-face{font-family:Noto Sans JP;src:url(/fonts/NotoSansJP-VariableFont_wght.ttf) format("truetype");font-weight:100 900;font-style:normal;font-display:swap}:root{color-scheme:dark;--bg: #282828;--fg: #fbf1c7;--bg-weakest: #2f2f2f;--bg-weak: #414141;--bg-strong: #4f4f4f;--muted: #908c7c;--secondary: #908c7c;--secondary-strong: #9f9b8d;--on-secondary: #1f1e1a;--primary: #458588;--primary-weak: #3b6c6e;--primary-strong: #49a8ac;--on-primary: #0a1c1d;--success: #98971a;--success-strong: #7c7900;--on-success: #222102;--warning: #d79921;--warning-strong: #b67a00;--on-warning: #342203;--danger: #cc241d;--danger-strong: #ff0000;--on-danger: #fdf9f9;--danger-text: #fb4934;--fg-soft: rgb(251 241 199 / .85);--fg-faint: rgb(251 241 199 / .3);--surface-press: rgb(255 255 255 / .1);--surface-press-soft: rgb(255 255 255 / .08);--space: 16px;--space-half: 8px;--space-quarter: 4px;--radius: 8px;--radius-sm: 12px;--radius-xs: 2px;font-family:Noto Sans JP,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:17px;line-height:1.5;color:var(--fg);background:var(--bg)}*{box-sizing:border-box}body{margin:0;min-height:100dvh;display:flex;justify-content:center;background:var(--bg);color:var(--fg);padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}::selection{background:var(--primary-weak);color:var(--fg)}#app{width:100%;max-width:480px;padding:var(--space) var(--space) calc(var(--space) * 2);display:flex;flex-direction:column;gap:var(--space)}.top-bar{display:flex;align-items:center;gap:12px}.burger-btn{width:44px;height:44px;border:none;border-radius:var(--radius);background:transparent;color:var(--fg);cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;touch-action:manipulation;flex:none}.burger-btn span{display:block;width:20px;height:2px;border-radius:1px;background:currentColor}.burger-btn:active,.burger-btn[aria-expanded=true]{background:var(--surface-press)}.burger-btn[aria-expanded=true] span{background:var(--primary-strong)}.top-bar-title h1{margin:0;font-size:22px;font-weight:700;line-height:1.2}.top-bar-title p{margin:0;font-size:.9rem;color:var(--muted)}.top-bar-spacer{flex:1}.app-content{display:flex;flex-direction:column;gap:var(--space)}.drawer-overlay{position:fixed;inset:0;background:#282828b8;z-index:40}.drawer-overlay[hidden]{display:none}.drawer{position:fixed;top:0;left:0;bottom:0;width:min(300px,85vw);background:var(--bg-weakest);border-right:1px solid var(--bg-weak);z-index:50;transform:translate(-105%);visibility:hidden;transition:transform .22s ease,visibility 0s linear .22s;display:flex;flex-direction:column;gap:var(--space-quarter);padding:var(--space) var(--space-half)}.drawer.open{transform:translate(0);visibility:visible;transition:transform .22s ease,visibility 0s}.drawer-header{padding:var(--space-quarter) var(--space-half) 14px;border-bottom:1px solid var(--bg-strong);margin-bottom:var(--space-half)}.drawer-logo{font-size:22px;font-weight:800;color:var(--primary-strong)}.drawer-subtitle{font-size:.9rem;color:var(--muted)}.drawer-btn{border:none;background:transparent;text-align:left;font:inherit;font-size:1.05rem;font-weight:600;color:var(--fg);padding:13px 12px;border-radius:var(--radius);cursor:pointer;touch-action:manipulation}.drawer-btn:hover,.drawer-btn:active{background:var(--surface-press)}.drawer-btn.active{background:var(--surface-press);color:var(--primary-strong)}body.drawer-open{overflow:hidden}.card{background:var(--bg-weakest);border:1px solid var(--bg-weak);border-radius:var(--radius-sm);padding:var(--space);display:flex;flex-direction:column;gap:12px}.card-title{margin:0;font-size:1.25rem;font-weight:700}.card-hint{margin:0;color:var(--muted);font-size:.95rem}.field-label{font-weight:600;font-size:.95rem}.token-input,.words-search,.words-group{padding:12px;font:inherit;font-size:1rem;color:var(--fg);background:var(--bg);border:1px solid var(--bg-strong);border-radius:var(--radius);outline:none;appearance:none}.token-input::placeholder,.words-search::placeholder{color:var(--muted)}.token-input:focus,.words-search:focus,.words-group:focus{border-color:var(--primary-strong)}.token-input:disabled{background:var(--bg-weak);color:var(--muted)}.token-input{width:100%;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.04em}.token-input.invalid{border-color:var(--danger-text)}.token-meta{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-half);min-height:1.4em}.token-error{color:var(--danger-text);font-size:.9rem}.token-counter{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}.btn-row{display:flex;gap:12px}.btn{flex:1;padding:12px 14px;font:inherit;font-size:1rem;font-weight:600;border:1px solid transparent;border-radius:var(--radius);background:var(--secondary);color:var(--on-secondary);cursor:pointer;touch-action:manipulation}.btn:not(:disabled):active{background:var(--secondary-strong)}.btn-primary{background:var(--primary);color:var(--on-primary)}.btn-primary:not(:disabled):active{background:var(--primary-strong)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-ghost{align-self:flex-start;flex:none;padding:10px 12px;border-color:transparent;background:transparent;color:var(--fg)}.btn-ghost:not(:disabled):active{background:var(--surface-press)}.status-bar{margin:0;padding:10px 12px;border-radius:var(--radius);background:#908c7c2e;border:1px solid rgb(144 140 124 / .45);color:var(--fg);font-size:.95rem;word-break:break-word}.status-bar[hidden]{display:none}.db-banner{display:flex;align-items:center;gap:var(--space-half);padding:10px 12px;border-radius:var(--radius);background:#d799214d;border:1px solid var(--warning);color:var(--fg);font-size:.9rem}.db-banner[hidden]{display:none}.db-banner-text{flex:1;min-width:0}.db-banner-link{flex:none;border:none;border-radius:var(--radius);background:transparent;padding:4px 6px;font:inherit;font-weight:700;color:var(--fg);cursor:pointer;touch-action:manipulation}.db-banner-link:active{background:var(--surface-press)}.db-banner-link[hidden]{display:none}.pwa-banner{position:fixed;left:50%;bottom:calc(var(--space-half) + env(safe-area-inset-bottom));transform:translate(-50%);width:min(480px,calc(100vw - var(--space) * 2));z-index:30;display:flex;flex-direction:column;gap:var(--space-half);padding:12px;border-radius:var(--radius-sm);background:var(--bg-weakest);border:1px solid var(--bg-weak);box-shadow:0 8px 24px #00000059;font-size:.95rem}.pwa-banner[hidden]{display:none}.pwa-actions{display:flex;gap:var(--space-half)}.pwa-btn{flex:1;padding:10px 12px;font-size:.95rem}@media(prefers-reduced-motion:no-preference){.pwa-banner{animation:pwa-rise .18s ease-out}}@keyframes pwa-rise{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}.words-toolbar{display:flex;gap:var(--space-half)}.words-search{flex:1;min-width:0}.words-group{flex:none;max-width:42%;padding:12px 8px;font-size:.95rem;font-weight:600}.words-list{display:flex;flex-direction:column}.word-row-wrap{border-bottom:1px solid var(--bg-strong)}.word-row-wrap:last-child{border-bottom:none}.word-row{display:flex;align-items:baseline;gap:var(--space-half);width:100%;padding:11px 6px;border:none;background:transparent;font:inherit;color:inherit;text-align:left;cursor:pointer;touch-action:manipulation;border-radius:var(--radius)}.word-row:disabled{cursor:default}.word-row:not(:disabled):active,.word-row.open{background:var(--surface-press-soft)}.word-main{flex:1;min-width:0;overflow-wrap:break-word}.word-key{font-weight:700}.word-sep{color:var(--muted)}.word-value{color:var(--fg-soft)}.word-tag{flex:none;max-width:38%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.8rem;color:var(--muted);text-align:right}.word-dot{flex:none;width:6px;height:6px;border-radius:50%;background:var(--primary-strong);align-self:center}.word-extra[hidden]{display:none}.word-extra-list{margin:0 0 10px;padding:10px 12px;background:var(--bg-weak);border-radius:var(--radius-xs);display:flex;flex-direction:column;gap:var(--space-half)}.word-extra-row dt{font-size:.8rem;font-weight:700;color:var(--muted)}.word-extra-row dd{margin:2px 0 0;word-break:break-word}.empty-val{color:var(--fg-faint)}button.word-row-wrap{border:none;border-bottom:1px solid var(--bg-strong)}button.word-row-wrap:last-child{border-bottom:none}button.word-row-wrap:not(:disabled):hover{background:var(--surface-press-soft)}.deck-form{display:flex;flex-direction:column;gap:var(--space-half);margin-top:12px}.deck-form .field-label{margin-top:var(--space-quarter)}.deck-form .btn-row{margin-top:var(--space-half)}.deck-form .card-hint:empty{display:none}.deck-sub{margin:var(--space) 0 var(--space-half);padding-bottom:var(--space-half);border-bottom:1px solid var(--bg-strong);font-size:1rem;color:var(--fg)}.deck-row{display:flex;align-items:stretch;gap:var(--space-quarter)}.deck-name{flex:1;min-width:0}.deck-play{flex:none;align-self:center;width:44px;height:44px;border:none;border-radius:var(--radius);background:var(--primary);color:var(--on-primary);font-size:1rem;cursor:pointer;touch-action:manipulation}.deck-play:active{background:var(--primary-strong)}.hist-row-wrap{padding:9px 6px;border-bottom:1px solid var(--bg-strong)}.hist-row-wrap:last-child{border-bottom:none}.hist-main{overflow-wrap:break-word}.hist-meta{display:flex;align-items:baseline;gap:var(--space-half);margin-top:var(--space-quarter)}.hist-grade{flex:none;padding:2px 10px;border:1px solid transparent;border-radius:999px;font-size:.8rem;font-weight:700;color:var(--fg)}.hist-grade.grade-fail{background:#cc241d4d;border-color:var(--danger)}.hist-grade.grade-hard{background:#d799214d;border-color:var(--warning)}.hist-grade.grade-good{background:#98971a4d;border-color:var(--success)}.hist-grade.grade-easy{background:#4585884d;border-color:var(--primary)}#review-body{display:flex;flex-direction:column;gap:12px;margin-top:12px}.review-card{display:block;width:100%;border:1px solid var(--bg-weak);border-radius:var(--radius);background:var(--bg-weakest);padding:var(--space) 12px;font:inherit;color:inherit;text-align:center;cursor:pointer;touch-action:manipulation}.review-card:active{border-color:var(--primary-strong)}.review-side{display:flex;flex-direction:column;gap:var(--space-half)}.review-line{margin:0;overflow-wrap:break-word;font-size:1.15rem}.review-front .review-line:first-child{font-size:36px;font-weight:600;line-height:1.25}.review-hr{border:none;border-top:2px solid var(--bg-strong);margin:14px 0}.review-tap{margin:12px 0 0;font-size:.85rem;color:var(--fg-faint)}.review-grades{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-half)}.review-grade{margin:0}.review-grade.grade-fail{background:var(--danger);color:var(--on-danger)}.review-grade.grade-fail:not(:disabled):active{background:var(--danger-strong)}.review-grade.grade-hard{background:var(--warning);color:var(--on-warning)}.review-grade.grade-hard:not(:disabled):active{background:var(--warning-strong)}.review-grade.grade-good{background:var(--success);color:var(--on-success)}.review-grade.grade-good:not(:disabled):active{background:var(--success-strong)}.review-grade.grade-easy{background:var(--primary);color:var(--on-primary)}.review-grade.grade-easy:not(:disabled):active{background:var(--primary-strong)}@media(prefers-reduced-motion:reduce){.drawer{transition:none}} diff --git a/dist/assets/index-CYVTnbnz.js b/jwl/assets/index-CFPL1rcQ.js similarity index 84% rename from dist/assets/index-CYVTnbnz.js rename to jwl/assets/index-CFPL1rcQ.js index 13a930a..fb86487 100644 --- a/dist/assets/index-CYVTnbnz.js +++ b/jwl/assets/index-CFPL1rcQ.js @@ -1,7 +1,7 @@ -(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))o(s);new MutationObserver(s=>{for(const c of s)if(c.type==="childList")for(const u of c.addedNodes)u.tagName==="LINK"&&u.rel==="modulepreload"&&o(u)}).observe(document,{childList:!0,subtree:!0});function a(s){const c={};return s.integrity&&(c.integrity=s.integrity),s.referrerPolicy&&(c.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?c.credentials="include":s.crossOrigin==="anonymous"?c.credentials="omit":c.credentials="same-origin",c}function o(s){if(s.ep)return;s.ep=!0;const c=a(s);fetch(s.href,c)}})();const Re=new Worker(new URL("/assets/db-worker-DFFhVJkA.js",import.meta.url),{type:"module"});let fr=0,Ae=null;const et=new Map;function Rn(){return Ae||(Ae=new Promise((e,r)=>{Re.onmessage=o=>{const s=o.data;if(s.type==="ready")return;const c=et.get(s.id);c&&(et.delete(s.id),s.type=="success"?c.resolve(s.data):c.reject(new Error(s.error??s.message??"Неизвестная ошибка Worker")))},Re.onerror=o=>{console.error("[SQLite Worker] Ошибка:",o),r(new Error("Ошибка Worker"))};const a=++fr;et.set(a,{resolve:e,reject:r}),Re.postMessage({type:"start",id:a})}),Ae)}function pr(e,r){return new Promise((a,o)=>{if(!Re){o(new Error("Worker не создан"));return}const s=++fr;et.set(s,{resolve:a,reject:o}),Re.postMessage({type:e,id:s,...r})})}async function ie(e,r){return await pr("query",{sql:e,params:r??[]})}async function hr(e,r){await pr("command",{sql:e,params:r??[]})}function wr(e){return new Date(e*1e3)}function In(){return Math.floor(Date.now()/1e3)}function Jn(e){const r=wr(e),a=String(r.getDate()).padStart(2,"0"),o=String(r.getMonth()+1).padStart(2,"0");return`${a}.${o}.${r.getFullYear()}`}function On(e){const r=wr(e),a=String(r.getHours()).padStart(2,"0"),o=String(r.getMinutes()).padStart(2,"0");return`${Jn(e)} ${a}:${o}`}function Kn(e){if(e==null)return[];const r=String(e).trim();return r?r.split(/[,\s;]+/).map(a=>a.trim()).filter(a=>a.length>0):[]}function Dn(e){const r=new Map;if(e==null)return r;const a=String(e);if(!a)return r;const o=a.split("");for(let s=0;s+10?`WHERE ${r.join(" AND ")}`:"",params:a}}async function Xn(e={}){const{clause:r,params:a}=mr(e),s=(await ie(`SELECT COUNT(*) as cnt FROM words ${r}`,a))[0]?.cnt;return typeof s=="number"?s:Number(s??0)}async function tr(e={}){const{clause:r,params:a}=mr(e),o=Math.max(1,Math.min(e.limit??50,500)),s=Math.max(0,e.offset??0);return(await ie(`SELECT id, key, value, tags, more, group_id FROM words ${r} ORDER BY id LIMIT ? OFFSET ?`,[...a,o,s])).map(gr)}async function zn(){return(await ie("SELECT id, name FROM word_groups ORDER BY id")).map(r=>({id:Number(r.id),name:String(r.name??"")}))}async function Bn(){return(await ie("SELECT id, name, forward, backward, filter FROM decks ORDER BY id")).map(r=>({id:Number(r.id),name:String(r.name??""),forward:String(r.forward??""),backward:String(r.backward??""),filter:String(r.filter??"")}))}async function Vn(e,r){return await hr("UPDATE decks SET forward = ?, backward = ?, filter = ? WHERE id = ?",[r.forward,r.backward,r.filter,e]),nt(e)}async function nt(e){const a=(await ie("SELECT id, name, forward, backward, filter FROM decks WHERE id = ? LIMIT 1",[e]))[0];return a?{id:Number(a.id),name:String(a.name??""),forward:String(a.forward??""),backward:String(a.backward??""),filter:String(a.filter??"")}:null}async function Yn(){const e=await ie("SELECT deck_id, COUNT(*) as cnt FROM states WHERE deck_id IS NOT NULL GROUP BY deck_id"),r=new Map;for(const a of e){if(a.deck_id==null)continue;const o=a.cnt;r.set(Number(a.deck_id),typeof o=="number"?o:Number(o??0))}return r}async function Zn(e){const a=(await ie("SELECT COUNT(DISTINCT word_id) as cnt FROM states WHERE deck_id = ?",[e]))[0]?.cnt;return typeof a=="number"?a:Number(a??0)}async function rr(e){const r=new Map,a=[...new Set(e.filter(s=>Number.isFinite(s)))];if(a.length===0)return r;const o=400;for(let s=0;s"?").join(","),g=await ie(`SELECT id, key, value, tags, more, group_id FROM words WHERE id IN (${u})`,c);for(const y of g.map(gr))r.set(y.id,y)}return r}function Gn(e,r){const a=new Map;a.set("key",e.key),a.set("value",e.value),a.set("tags",e.tagsList.join(", "));for(const o of r){const s=e.more.get(o.id)??"";if(s)for(const c of[o.identifier,o.name]){const u=c.trim().toLowerCase();!u||a.has(u)||a.set(u,s)}}return a}function nr(e,r){const a=[];for(const o of e.split(/\s+/)){const s=o.trim().toLowerCase();if(!s)continue;const c=(r.get(s)??"").trim();c&&a.push(c)}return a}async function ar(e,r){const o=(await ie("SELECT DISTINCT word_id as word_id FROM states WHERE deck_id = ?",[e])).map(s=>Number(s.word_id)).filter(s=>Number.isFinite(s));for(let s=o.length-1;s>0;s--){const c=Math.floor(Math.random()*(s+1));[o[s],o[c]]=[o[c],o[s]]}return o}async function vr(){return(await ie("SELECT id, name, identifier FROM custom_fields ORDER BY id")).map(r=>({id:Number(r.id),name:String(r.name??""),identifier:String(r.identifier??"")}))}async function jn(e,r){const o=(await ie("SELECT score FROM states WHERE deck_id = ? AND word_id = ? ORDER BY id DESC LIMIT 1",[e,r]))[0];if(!o||o.score==null)return null;const s=Number(o.score);return Number.isFinite(s)?s:null}async function Wn(e){await hr("INSERT INTO history (deck_id, word_id, timestamp, answer, before, after, fsrs) VALUES (?, ?, ?, ?, ?, ?, 0)",[e.deckId,e.wordId,In(),e.answer,e.before,e.after])}async function An(e){const a=(await ie("SELECT COUNT(*) as cnt FROM history WHERE deck_id = ?",[e]))[0]?.cnt;return typeof a=="number"?a:Number(a??0)}async function ea(e,r={}){const a=Math.max(1,Math.min(r.limit??50,500)),o=Math.max(0,r.offset??0);return(await ie(`SELECT h.id, h.deck_id, h.word_id, h.timestamp, h.answer, h.before, h.after, h.fsrs, +(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))o(s);new MutationObserver(s=>{for(const c of s)if(c.type==="childList")for(const u of c.addedNodes)u.tagName==="LINK"&&u.rel==="modulepreload"&&o(u)}).observe(document,{childList:!0,subtree:!0});function a(s){const c={};return s.integrity&&(c.integrity=s.integrity),s.referrerPolicy&&(c.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?c.credentials="include":s.crossOrigin==="anonymous"?c.credentials="omit":c.credentials="same-origin",c}function o(s){if(s.ep)return;s.ep=!0;const c=a(s);fetch(s.href,c)}})();const Qe=new Worker(new URL("/assets/db-worker-DFFhVJkA.js",import.meta.url),{type:"module"});let pr=0,Ae=null;const et=new Map;function On(){return Ae||(Ae=new Promise((e,r)=>{Qe.onmessage=o=>{const s=o.data;if(s.type==="ready")return;const c=et.get(s.id);c&&(et.delete(s.id),s.type=="success"?c.resolve(s.data):c.reject(new Error(s.error??s.message??"Неизвестная ошибка Worker")))},Qe.onerror=o=>{console.error("[SQLite Worker] Ошибка:",o),r(new Error("Ошибка Worker"))};const a=++pr;et.set(a,{resolve:e,reject:r}),Qe.postMessage({type:"start",id:a})}),Ae)}function hr(e,r){return new Promise((a,o)=>{if(!Qe){o(new Error("Worker не создан"));return}const s=++pr;et.set(s,{resolve:a,reject:o}),Qe.postMessage({type:e,id:s,...r})})}async function ie(e,r){return await hr("query",{sql:e,params:r??[]})}async function wr(e,r){await hr("command",{sql:e,params:r??[]})}function gr(e){return new Date(e*1e3)}function Jn(){return Math.floor(Date.now()/1e3)}function Kn(e){const r=gr(e),a=String(r.getDate()).padStart(2,"0"),o=String(r.getMonth()+1).padStart(2,"0");return`${a}.${o}.${r.getFullYear()}`}function Dn(e){const r=gr(e),a=String(r.getHours()).padStart(2,"0"),o=String(r.getMinutes()).padStart(2,"0");return`${Kn(e)} ${a}:${o}`}function Xn(e){if(e==null)return[];const r=String(e).trim();return r?r.split(/[,\s;]+/).map(a=>a.trim()).filter(a=>a.length>0):[]}function zn(e){const r=new Map;if(e==null)return r;const a=String(e);if(!a)return r;const o=a.split("");for(let s=0;s+10?`WHERE ${r.join(" AND ")}`:"",params:a}}async function Bn(e={}){const{clause:r,params:a}=vr(e),s=(await ie(`SELECT COUNT(*) as cnt FROM words ${r}`,a))[0]?.cnt;return typeof s=="number"?s:Number(s??0)}async function tr(e={}){const{clause:r,params:a}=vr(e),o=Math.max(1,Math.min(e.limit??50,500)),s=Math.max(0,e.offset??0);return(await ie(`SELECT id, key, value, tags, more, group_id FROM words ${r} ORDER BY id LIMIT ? OFFSET ?`,[...a,o,s])).map(mr)}async function Vn(){return(await ie("SELECT id, name FROM word_groups ORDER BY id")).map(r=>({id:Number(r.id),name:String(r.name??"")}))}async function Yn(){return(await ie("SELECT id, name, forward, backward, filter FROM decks ORDER BY id")).map(r=>({id:Number(r.id),name:String(r.name??""),forward:String(r.forward??""),backward:String(r.backward??""),filter:String(r.filter??"")}))}async function Zn(e,r){return await wr("UPDATE decks SET forward = ?, backward = ?, filter = ? WHERE id = ?",[r.forward,r.backward,r.filter,e]),nt(e)}async function nt(e){const a=(await ie("SELECT id, name, forward, backward, filter FROM decks WHERE id = ? LIMIT 1",[e]))[0];return a?{id:Number(a.id),name:String(a.name??""),forward:String(a.forward??""),backward:String(a.backward??""),filter:String(a.filter??"")}:null}async function Gn(){const e=await ie("SELECT deck_id, COUNT(*) as cnt FROM states WHERE deck_id IS NOT NULL GROUP BY deck_id"),r=new Map;for(const a of e){if(a.deck_id==null)continue;const o=a.cnt;r.set(Number(a.deck_id),typeof o=="number"?o:Number(o??0))}return r}async function jn(e){const a=(await ie("SELECT COUNT(DISTINCT word_id) as cnt FROM states WHERE deck_id = ?",[e]))[0]?.cnt;return typeof a=="number"?a:Number(a??0)}async function rr(e){const r=new Map,a=[...new Set(e.filter(s=>Number.isFinite(s)))];if(a.length===0)return r;const o=400;for(let s=0;s"?").join(","),h=await ie(`SELECT id, key, value, tags, more, group_id FROM words WHERE id IN (${u})`,c);for(const v of h.map(mr))r.set(v.id,v)}return r}function Wn(e,r){const a=new Map;a.set("key",e.key),a.set("value",e.value),a.set("tags",e.tagsList.join(", "));for(const o of r){const s=e.more.get(o.id)??"";if(s)for(const c of[o.identifier,o.name]){const u=c.trim().toLowerCase();!u||a.has(u)||a.set(u,s)}}return a}function nr(e,r){const a=[];for(const o of e.split(/\s+/)){const s=o.trim().toLowerCase();if(!s)continue;const c=(r.get(s)??"").trim();c&&a.push(c)}return a}async function ar(e,r){const o=(await ie("SELECT DISTINCT word_id as word_id FROM states WHERE deck_id = ?",[e])).map(s=>Number(s.word_id)).filter(s=>Number.isFinite(s));for(let s=o.length-1;s>0;s--){const c=Math.floor(Math.random()*(s+1));[o[s],o[c]]=[o[c],o[s]]}return o}async function yr(){return(await ie("SELECT id, name, identifier FROM custom_fields ORDER BY id")).map(r=>({id:Number(r.id),name:String(r.name??""),identifier:String(r.identifier??"")}))}async function An(e,r){const o=(await ie("SELECT score FROM states WHERE deck_id = ? AND word_id = ? ORDER BY id DESC LIMIT 1",[e,r]))[0];if(!o||o.score==null)return null;const s=Number(o.score);return Number.isFinite(s)?s:null}async function ea(e){await wr("INSERT INTO history (deck_id, word_id, timestamp, answer, before, after, fsrs) VALUES (?, ?, ?, ?, ?, ?, 0)",[e.deckId,e.wordId,Jn(),e.answer,e.before,e.after])}async function ta(e){const a=(await ie("SELECT COUNT(*) as cnt FROM history WHERE deck_id = ?",[e]))[0]?.cnt;return typeof a=="number"?a:Number(a??0)}async function ra(e,r={}){const a=Math.max(1,Math.min(r.limit??50,500)),o=Math.max(0,r.offset??0);return(await ie(`SELECT h.id, h.deck_id, h.word_id, h.timestamp, h.answer, h.before, h.after, h.fsrs, w.key as wkey, w.value as wvalue FROM history h LEFT JOIN words w ON w.id = h.word_id - WHERE h.deck_id = ? ORDER BY h.timestamp DESC, h.id DESC LIMIT ? OFFSET ?`,[e,a,o])).map(c=>({id:Number(c.id),deck_id:Number(c.deck_id),word_id:Number(c.word_id),timestamp:Number(c.timestamp??0),answer:Number(c.answer??0),before:Number(c.before??0),after:Number(c.after??0),fsrs:Number(c.fsrs??0),wordKey:c.wkey==null?"":String(c.wkey),wordValue:c.wvalue==null?"":String(c.wvalue)}))}const Ut="japanese_app.db";async function xt(){return navigator.storage.getDirectory()}async function ta(e){e[18]=1,e[19]=1;const a=await(await xt()).getFileHandle(Ut,{create:!0}),o=a.createSyncAccessHandle;if(typeof o=="function")try{const c=await o.call(a);try{c.truncate(0),c.write(e,{at:0}),c.flush()}finally{c.close()}return}catch{}const s=await a.createWritable();try{await s.truncate(0);const c=new Uint8Array(e.length);c.set(e),await s.write(c)}finally{await s.close()}}async function ra(){const e=await xt();let r;try{r=await e.getFileHandle(Ut)}catch{throw new Error("Локальная база не найдена — сначала скачай сохранение")}const a=await r.getFile();if(a.size===0)throw new Error("Локальная база пуста");return new Uint8Array(await a.arrayBuffer())}async function Je(){try{return(await(await(await xt()).getFileHandle(Ut)).getFile()).size>0}catch{return!1}}var na=ArrayBuffer,G=Uint8Array,tt=Uint16Array,aa=Int16Array,at=Int32Array,mt=function(e,r,a){if(G.prototype.slice)return G.prototype.slice.call(e,r,a);(r==null||r<0)&&(r=0),(a==null||a>e.length)&&(a=e.length);var o=new G(a-r);return o.set(e.subarray(r,a)),o},Ie=function(e,r,a,o){if(G.prototype.fill)return G.prototype.fill.call(e,r,a,o);for((a==null||a<0)&&(a=0),(o==null||o>e.length)&&(o=e.length);ae.length)&&(o=e.length);a2046MB)","invalid block type","FSE accuracy too high","match distance too far back","unexpected EOF"],A=function(e,r,a){var o=new Error(r||ia[e]);if(o.code=e,Error.captureStackTrace&&Error.captureStackTrace(o,A),!a)throw o;return o},sr=function(e,r,a){for(var o=0,s=0;o>>0},ca=function(e,r){var a=e[0]|e[1]<<8|e[2]<<16;if(a==3126568&&e[3]==253){var o=e[4],s=o>>5&1,c=o>>2&1,u=o&3,g=o>>6;o&8&&A(0);var y=6-s,m=u==3?4:u,b=sr(e,y,m);y+=m;var T=g?1<>3);U=N+(N>>3)*(e[5]&7)}U>2145386496&&A(1);var w=new G((r==1?k||U:r?0:U)+12);return w[0]=1,w[4]=4,w[8]=8,{b:y+T,y:0,l:0,d:b,w:r&&r!=1?r:w.subarray(12),e:U,o:new at(w.buffer,0,3),u:k,c,m:Math.min(131072,U)}}else if((a>>4|e[3]<<20)==25481893)return oa(e,4)+8;A(0)},Ce=function(e){for(var r=0;1<a&&A(3);for(var c=1<0;){var J=Ce(u+1),L=o>>3,z=(1<>(o&7)&z,C=(1<C&&(P-=_)),k[++g]=--P,P==-1?(u+=P,E[--b]=g):u-=P,!P)do{var F=o>>3;y=(e[F]|e[F+1]<<8)>>(o&7)&3,o+=2,g+=y}while(y==3)}(g>255||u)&&A(0);for(var X=0,j=(c>>1)+(c>>3)+3,V=c-1,B=0;B<=g;++B){var H=k[B];if(H<1){U[B]=-H;continue}for(m=0;m=b)}}for(X&&A(0),m=0;m>3,{b:s,s:E,n:I,t:N}]},la=function(e,r){var a=0,o=-1,s=new G(292),c=e[r],u=s.subarray(0,256),g=s.subarray(256,268),y=new tt(s.buffer,268);if(c<128){var m=Oe(e,r+1,6),b=m[0],T=m[1];r+=c;var k=b<<3,U=e[r];U||A(0);for(var N=0,w=0,E=T.b,I=E,J=(++r<<3)-8+Ce(U);J-=E,!(J>3;if(N+=(e[L]|e[L+1]<<8)>>(J&7)&(1<>3,w+=(e[L]|e[L+1]<<8)>>(J&7)&(1<255&&A(0)}else{for(o=c-127;a>4,u[a+1]=z&15}++r}var P=0;for(a=0;a11&&A(0),P+=C&&1<0;--a){var B=y[a];Ie(V,a,B,y[a-1]=B+g[a]*(1<<_-a))}for(y[0]!=R&&A(0),a=0;ag&&T>3,U=(e[k]|e[k+1]<<8|e[k+2]<<16)>>(b&7);y=(y<>2,u=c<<1,g=c+u;Pe(e.subarray(o,o+=e[0]|e[1]<<8),r.subarray(0,c),a),Pe(e.subarray(o,o+=e[2]|e[3]<<8),r.subarray(c,u),a),Pe(e.subarray(o,o+=e[4]|e[5]<<8),r.subarray(u,g),a),Pe(e.subarray(o),r.subarray(g),a)},ga=function(e,r,a){var o,s=r.b,c=e[s],u=c>>1&3;r.l=c&1;var g=c>>3|e[s+1]<<5|e[s+2]<<13,y=(s+=3)+g;if(u==1)return s>=e.length?void 0:(r.b=s+1,a?(Ie(a,e[s],r.y,r.y+=g),a):Ie(new G(g),e[s]));if(!(y>e.length)){if(u==0)return r.b=y,a?(a.set(e.subarray(s,y),r.y),r.y+=g,a):mt(e,s,y);if(u==2){var m=e[s],b=m&3,T=m>>2&3,k=m>>4,U=0,N=0;b<2?T&1?k|=e[++s]<<4|(T&2&&e[++s]<<12):k=m>>3:(N=T,T<2?(k|=(e[++s]&63)<<4,U=e[s]>>6|e[++s]<<2):T==2?(k|=e[++s]<<4|(e[++s]&3)<<12,U=e[s]>>2|e[++s]<<6):(k|=e[++s]<<4|(e[++s]&63)<<12,U=e[s]>>6|e[++s]<<2|e[++s]<<10)),++s;var w=a?a.subarray(r.y,r.y+r.m):new G(r.m),E=w.length-k;if(b==0)w.set(e.subarray(s,s+=k),E);else if(b==1)Ie(w,e[s++],E);else{var I=r.h;if(b==2){var J=la(e,s);U+=s-(s=J[0]),r.h=I=J[1]}else I||A(0);(N?wa:Pe)(e.subarray(s,s+=U),w.subarray(E),I)}var L=e[s++];if(L){L==255?L=(e[s++]|e[s++]<<8)+32512:L>127&&(L=L-128<<8|e[s++]);var z=e[s++];z&3&&A(0);for(var P=[da,fa,ua],C=2;C>-1;--C){var _=z>>(C<<1)+2&3;if(_==1){var R=new G([0,0,e[s++]]);P[C]={s:R.subarray(2,3),n:R.subarray(0,1),t:new tt(R.buffer,0,1),b:0}}else _==2?(o=Oe(e,s,9-(C&1)),s=o[0],P[C]=o[1]):_==3&&(r.t||A(0),P[C]=r.t[C])}var F=r.t=P,X=F[0],j=F[1],V=F[2],B=e[y-1];B||A(0);var H=(y<<3)-8+Ce(B)-V.b,v=H>>3,x=0,M=(e[v]|e[v+1]<<8)>>(H&7)&(1<>3;var Q=(e[v]|e[v+1]<<8)>>(H&7)&(1<>3;var O=(e[v]|e[v+1]<<8)>>(H&7)&(1<>3;var ve=1<>>(H&7)&ve-1);v=(H-=Et[xe])>>3;var oe=ha[xe]+((e[v]|e[v+1]<<8|e[v+2]<<16)>>(H&7)&(1<>3;var we=pa[he]+((e[v]|e[v+1]<<8|e[v+2]<<16)>>(H&7)&(1<>3,M=V.t[M]+((e[v]|e[v+1]<<8)>>(H&7)&(1<>3,O=X.t[O]+((e[v]|e[v+1]<<8)>>(H&7)&(1<>3,Q=j.t[Q]+((e[v]|e[v+1]<<8)>>(H&7)&(1<3)r.o[2]=r.o[1],r.o[1]=r.o[0],r.o[0]=ne-=3;else{var $e=ne-(we!=0);$e?(ne=$e==3?r.o[0]-1:r.o[$e],$e>1&&(r.o[2]=r.o[1]),r.o[1]=r.o[0],r.o[0]=ne):ne=r.o[0]}for(var C=0;Coe&&(ae=oe);for(var C=0;C{throw t},o,s=console.log.bind(console),c=console.error.bind(console),u,g=!1,y,m=n=>n.startsWith("file://"),b=!1;function T(){return je.buffer}function k(){if(!R?.buffer?.resizable){var n=T();R=new Int8Array(n),ze=new Int16Array(n),r.HEAPU8=M=new Uint8Array(n),Ne=new Uint16Array(n),Be=new Int32Array(n),O=new Uint32Array(n),It=new Float32Array(n),Jt=new Float64Array(n),Tt=new BigInt64Array(n),Nt=new BigUint64Array(n)}}function U(){b=!0,qe.A()}function N(n){n=`Aborted(${n})`,c(n),g=!0,n+=". Build with -sASSERTIONS for more info.",b&&Bt();var t=new WebAssembly.RuntimeError(n);throw t}var w;let E=()=>"";function I(n){if(n==w&&u)return new Uint8Array(u);throw"both async and sync fetching of the wasm failed"}async function J(n){if(!u)try{var t=await o(n);return new Uint8Array(t)}catch{}return I(n)}async function L(n,t){try{var i=await J(n),l=await WebAssembly.instantiate(i,t);return l}catch(d){c(`failed to asynchronously prepare wasm: ${d}`),N(d)}}async function z(n,t,i){if(!n&&!m(t))try{var l=fetch(t,{credentials:"same-origin"}),d=await WebAssembly.instantiateStreaming(l,i);return d}catch(f){c(`wasm streaming compile failed: ${f}`),c("falling back to ArrayBuffer instantiation")}return L(t,i)}function P(){var n={a:Qn};return n}async function C(){function n(f){return qe=f.exports,_n(qe),k(),qe}function t(f){return n(f.instance)}var i=P();w??=E();var l=await z(u,w,i),d=t(l);return d}class _{name="ExitStatus";constructor(t){this.message=`Program terminated with exit(${t})`,this.status=t}}var R,F=()=>Wt,X=n=>{var t=n.getArg(F(),0);return Gt(t)},j=()=>Zt(),V=n=>Vt(n),B=n=>Yt(n),H=globalThis.TextDecoder&&new TextDecoder,v=(n,t,i,l)=>{var d=t+i;if(l)return d;for(;n[t]&&!(t>=d);)++t;return t},x=(n,t=0,i,l)=>{var d=v(n,t,i,l);if(d-t>16&&n.buffer&&H)return H.decode(n.subarray(t,d));for(var f="";t>10,56320|S&1023)}}return f},M,Q=(n,t,i)=>n?x(M,n,t,i):"",O,he=n=>{var t=j(),i=B(4),l=B(4);jt(n,i,l);var d=O[i>>2],f=O[l>>2],p=Q(d);pe(d);var h;return f&&(h=Q(f),pe(f)),V(t),[p,h]},ue=n=>{var t=X(n);return he(t)},xe=n=>{var t=new WebAssembly.Exception(F(),[n],{traceStack:!0});throw t.message=ue(t),t},Xe=()=>N(""),be={},Me=n=>{for(;n.length;){var t=n.pop(),i=n.pop();i(t)}};function ve(n){return this.fromWireType(O[n>>2])}var ne={},oe={},we={};class $e extends Error{constructor(t){super(t),this.name="InternalError"}}var de=n=>{throw new $e(n)},ae=(n,t,i)=>{n.forEach(h=>we[h]=t);function l(h){var $=i(h);$.length!==n.length&&de("Mismatched type converter count");for(var S=0;S{d[h]=oe[$],++p,p===f.length&&l(d)}));f.length===0&&l(d)},st=n=>{var t=be[n];delete be[n];var i=t.rawConstructor,l=t.rawDestructor,d=t.fields,f=d.map(p=>p.getterReturnType).concat(d.map(p=>p.setterArgumentType));ae([n],f,p=>{var h={};for(var[$,S]of d.entries()){let q=p[$],Y=S.getter,D=S.getterContext,Z=p[$+d.length],ee=S.setter,se=S.setterContext;h[S.fieldName]={read:te=>q.fromWireType(Y(D,te)),write:(te,W)=>{var ye=[];ee(se,te,Z.toWireType(ye,W)),Me(ye)},optional:q.optional}}return[{name:t.name,fromWireType:q=>{var Y={};for(var D in h)Y[D]=h[D].read(q);return l(q),Y},toWireType:(q,Y)=>{for(var D in h)if(!(D in Y)&&!h[D].optional)throw new TypeError(`Missing field: "${D}"`);var Z=i();for(D in h)h[D].write(Z,Y[D]);return q!==null&&q.push(l,Z),Z},readValueFromPointer:ve,destructorFunction:l}]})},re=n=>{for(var t="";;){var i=M[n++];if(!i)return t;t+=String.fromCharCode(i)}};class Te extends Error{constructor(t){super(t),this.name="BindingError"}}var K=n=>{throw new Te(n)};function xr(n,t,i={}){var l=t.name;if(n||K(`type "${l}" must have a positive integer typeid pointer`),oe.hasOwnProperty(n)){if(i.ignoreDuplicateRegistrations)return;K(`Cannot register type '${l}' twice`)}if(oe[n]=t,delete we[n],ne.hasOwnProperty(n)){var d=ne[n];delete ne[n],d.forEach(f=>f())}}function fe(n,t,i={}){return xr(n,t,i)}var ze,Ne,Be,Tt,Nt,St=(n,t,i)=>{switch(t){case 1:return i?l=>R[l]:l=>M[l];case 2:return i?l=>ze[l>>1]:l=>Ne[l>>1];case 4:return i?l=>Be[l>>2]:l=>O[l>>2];case 8:return i?l=>Tt[l>>3]:l=>Nt[l>>3];default:throw new TypeError(`invalid integer width (${t}): ${n}`)}},Mr=(n,t,i,l,d)=>{t=re(t);let f=l===0n,p=h=>h;if(f){let h=i*8;p=$=>BigInt.asUintN(h,$),d=p(d)}fe(n,{name:t,fromWireType:p,toWireType:(h,$)=>(typeof $=="number"&&($=BigInt($)),$),readValueFromPointer:St(t,i,!f),destructorFunction:null})},Tr=(n,t,i,l)=>{t=re(t),fe(n,{name:t,fromWireType:function(d){return!!d},toWireType:function(d,f){return f?i:l},readValueFromPointer:function(d){return this.fromWireType(M[d])},destructorFunction:null})},Nr=n=>({count:n.count,deleteScheduled:n.deleteScheduled,preservePointerOnDelete:n.preservePointerOnDelete,ptr:n.ptr,ptrType:n.ptrType,smartPtr:n.smartPtr,smartPtrType:n.smartPtrType}),it=n=>{function t(i){return i.$$.ptrType.registeredClass.name}K(t(n)+" instance already deleted")},ot=!1,Ht=n=>{},Sr=n=>{n.smartPtr?n.smartPtrType.rawDestructor(n.smartPtr):n.ptrType.registeredClass.rawDestructor(n.ptr)},qt=n=>{n.count.value-=1;var t=n.count.value===0;t&&Sr(n)},Se=n=>globalThis.FinalizationRegistry?(ot=new FinalizationRegistry(t=>{qt(t.$$)}),Se=t=>{var i=t.$$,l=!!i.smartPtr;if(l){var d={$$:i};ot.register(t,d,t)}return t},Ht=t=>ot.unregister(t),Se(n)):(Se=t=>t,n),Hr=()=>{let n=Ve.prototype;Object.assign(n,{isAliasOf(i){if(!(this instanceof Ve)||!(i instanceof Ve))return!1;var l=this.$$.ptrType.registeredClass,d=this.$$.ptr;i.$$=i.$$;for(var f=i.$$.ptrType.registeredClass,p=i.$$.ptr;l.baseClass;)d=l.upcast(d),l=l.baseClass;for(;f.baseClass;)p=f.upcast(p),f=f.baseClass;return l===f&&d===p},clone(){if(this.$$.ptr||it(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var i=Se(Object.create(Object.getPrototypeOf(this),{$$:{value:Nr(this.$$)}}));return i.$$.count.value+=1,i.$$.deleteScheduled=!1,i},delete(){this.$$.ptr||it(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&K("Object already scheduled for deletion"),Ht(this),qt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||it(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&K("Object already scheduled for deletion"),this.$$.deleteScheduled=!0,this}});let t=Symbol.dispose;t&&(n[t]=n.delete)};function Ve(){}var Lt=(n,t)=>Object.defineProperty(t,"name",{value:n}),Ft={},ct=(n,t,i)=>{if(n[t].overloadTable===void 0){var l=n[t];n[t]=function(...d){return n[t].overloadTable.hasOwnProperty(d.length)||K(`Function '${i}' called with an invalid number of arguments (${d.length}) - expects one of (${n[t].overloadTable})!`),n[t].overloadTable[d.length].apply(this,d)},n[t].overloadTable=[],n[t].overloadTable[l.argCount]=l}},qr=(n,t,i)=>{r.hasOwnProperty(n)?(K(`Cannot register public name '${n}' twice`),ct(r,n,n),r[n].overloadTable.hasOwnProperty(i)&&K(`Cannot register multiple overloads of a function with the same number of arguments (${i})!`),r[n].overloadTable[i]=t):(r[n]=t,r[n].argCount=i)},Lr=48,Fr=57,_r=n=>{n=n.replace(/[^a-zA-Z0-9_]/g,"$");var t=n.charCodeAt(0);return t>=Lr&&t<=Fr?`_${n}`:n};function Qr(n,t,i,l,d,f,p,h){this.name=n,this.constructor=t,this.instancePrototype=i,this.rawDestructor=l,this.baseClass=d,this.getActualType=f,this.upcast=p,this.downcast=h,this.pureVirtualFunctions=[]}var lt=(n,t,i)=>{for(;t!==i;)t.upcast||K(`Expected null or instance of ${i.name}, got an instance of ${t.name}`),n=t.upcast(n),t=t.baseClass;return n},ut=n=>{if(n===null)return"null";var t=typeof n;return t==="object"||t==="array"||t==="function"?n.toString():""+n};function Pr(n,t){if(t===null)return this.isReference&&K(`null is not a valid ${this.name}`),0;t.$$||K(`Cannot pass "${ut(t)}" as a ${this.name}`),t.$$.ptr||K(`Cannot pass deleted object as a pointer of type ${this.name}`);var i=t.$$.ptrType.registeredClass,l=lt(t.$$.ptr,i,this.registeredClass);return l}function Rr(n,t){var i;if(t===null)return this.isReference&&K(`null is not a valid ${this.name}`),this.isSmartPointer?(i=this.rawConstructor(),n!==null&&n.push(this.rawDestructor,i),i):0;(!t||!t.$$)&&K(`Cannot pass "${ut(t)}" as a ${this.name}`),t.$$.ptr||K(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&K(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);var l=t.$$.ptrType.registeredClass;if(i=lt(t.$$.ptr,l,this.registeredClass),this.isSmartPointer)switch(t.$$.smartPtr===void 0&&K("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?i=t.$$.smartPtr:K(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:i=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)i=t.$$.smartPtr;else{var d=t.clone();i=this.rawShare(i,pt.toHandle(()=>d.delete())),n!==null&&n.push(this.rawDestructor,i)}break;default:K("Unsupported sharing policy")}return i}function Ir(n,t){if(t===null)return this.isReference&&K(`null is not a valid ${this.name}`),0;t.$$||K(`Cannot pass "${ut(t)}" as a ${this.name}`),t.$$.ptr||K(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&K(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var i=t.$$.ptrType.registeredClass,l=lt(t.$$.ptr,i,this.registeredClass);return l}var _t=(n,t,i)=>{if(t===i)return n;if(i.baseClass===void 0)return null;var l=_t(n,t,i.baseClass);return l===null?null:i.downcast(l)},Jr={},Or=(n,t)=>{for(t===void 0&&K("ptr should not be undefined");n.baseClass;)t=n.upcast(t),n=n.baseClass;return t},Kr=(n,t)=>(t=Or(n,t),Jr[t]),Ye=(n,t)=>{(!t.ptrType||!t.ptr)&&de("makeClassHandle requires ptr and ptrType");var i=!!t.smartPtrType,l=!!t.smartPtr;return i!==l&&de("Both smartPtrType and smartPtr must be specified"),t.count={value:1},Se(Object.create(n,{$$:{value:t,writable:!0}}))};function Dr(n){var t=this.getPointee(n);if(!t)return this.destructor(n),null;var i=Kr(this.registeredClass,t);if(i!==void 0){if(i.$$.count.value===0)return i.$$.ptr=t,i.$$.smartPtr=n,i.clone();var l=i.clone();return this.destructor(n),l}function d(){return this.isSmartPointer?Ye(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:n}):Ye(this.registeredClass.instancePrototype,{ptrType:this,ptr:n})}var f=this.registeredClass.getActualType(t),p=Ft[f];if(!p)return d.call(this);var h;this.isConst?h=p.constPointerType:h=p.pointerType;var $=_t(t,this.registeredClass,h.registeredClass);return $===null?d.call(this):this.isSmartPointer?Ye(h.registeredClass.instancePrototype,{ptrType:h,ptr:$,smartPtrType:this,smartPtr:n}):Ye(h.registeredClass.instancePrototype,{ptrType:h,ptr:$})}var Xr=()=>{Object.assign(Ze.prototype,{getPointee(n){return this.rawGetPointee&&(n=this.rawGetPointee(n)),n},destructor(n){this.rawDestructor?.(n)},readValueFromPointer:ve,fromWireType:Dr})};function Ze(n,t,i,l,d,f,p,h,$,S,q){this.name=n,this.registeredClass=t,this.isReference=i,this.isConst=l,this.isSmartPointer=d,this.pointeeType=f,this.sharingPolicy=p,this.rawGetPointee=h,this.rawConstructor=$,this.rawShare=S,this.rawDestructor=q,!d&&t.baseClass===void 0?l?(this.toWireType=Pr,this.destructorFunction=null):(this.toWireType=Ir,this.destructorFunction=null):this.toWireType=Rr}var zr=(n,t,i)=>{r.hasOwnProperty(n)||de("Replacing nonexistent public symbol"),r[n].overloadTable!==void 0&&i!==void 0?r[n].overloadTable[i]=t:(r[n]=t,r[n].argCount=i)},Br=n=>At.get(n),le=(n,t,i=!1)=>{n=re(n);function l(){var f=Br(t);return f}var d=l();return typeof d!="function"&&K(`unknown function pointer with signature ${n}: ${t}`),d};class Vr extends Error{}var Yr=n=>{var t=Xt(n),i=re(t);return pe(t),i},Ge=(n,t)=>{var i=[],l={};function d(f){if(!l[f]&&!oe[f]){if(we[f]){we[f].forEach(d);return}i.push(f),l[f]=!0}}throw t.forEach(d),new Vr(`${n}: `+i.map(Yr).join([", "]))},Zr=(n,t,i,l,d,f,p,h,$,S,q,Y,D)=>{q=re(q),f=le(d,f),h&&=le(p,h),S&&=le($,S),D=le(Y,D);var Z=_r(q);qr(Z,function(){Ge(`Cannot construct ${q} due to unbound types`,[l])}),ae([n,t,i],l?[l]:[],ee=>{ee=ee[0];var se,te;l?(se=ee.registeredClass,te=se.instancePrototype):te=Ve.prototype;var W=Lt(q,function(...gt){if(Object.getPrototypeOf(this)!==ye)throw new Te(`Use 'new' to construct ${q}`);if(ce.constructor_body===void 0)throw new Te(`${q} has no accessible constructor`);var er=ce.constructor_body[gt.length];if(er===void 0)throw new Te(`Tried to invoke ctor of ${q} with invalid number of parameters (${gt.length}) - expected (${Object.keys(ce.constructor_body).toString()}) parameters instead!`);return er.apply(this,gt)}),ye=Object.create(te,{constructor:{value:W}});W.prototype=ye;var ce=new Qr(q,W,ye,D,se,f,h,S);ce.baseClass&&(ce.baseClass.__derivedClasses??=[],ce.baseClass.__derivedClasses.push(ce));var wt=new Ze(q,ce,!0,!1,!1),ge=new Ze(q+"*",ce,!1,!1,!1),We=new Ze(q+" const*",ce,!1,!0,!1);return Ft[n]={pointerType:ge,constPointerType:We},zr(Z,W),[wt,ge,We]})};function Gr(n){for(var t=1;t{for(var i=[],l=0;l>2]);return i},Qt=n=>{n=n.trim();let t=n.indexOf("(");return t===-1?n:n.slice(0,t)},jr=(n,t,i,l,d,f,p,h,$)=>{var S=ft(i,l);t=re(t),t=Qt(t),f=le(d,f,h),ae([],[n],q=>{q=q[0];var Y=`${q.name}.${t}`;function D(){Ge(`Cannot call ${Y} due to unbound types`,S)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]);var Z=q.registeredClass.constructor;return Z[t]===void 0?(D.argCount=i-1,Z[t]=D):(ct(Z,t,Y),Z[t].overloadTable[i-1]=D),ae([],S,ee=>{var se=[ee[0],null].concat(ee.slice(1)),te=dt(Y,se,null,f,p);if(Z[t].overloadTable===void 0?(te.argCount=i-1,Z[t]=te):Z[t].overloadTable[i-1]=te,q.registeredClass.__derivedClasses)for(let W of q.registeredClass.__derivedClasses)W.constructor.hasOwnProperty(t)||(W.constructor[t]=te);return[]}),[]})},Wr=(n,t,i,l,d,f)=>{var p=ft(t,i);d=le(l,d),ae([],[n],h=>{h=h[0];var $=`constructor ${h.name}`;if(h.registeredClass.constructor_body===void 0&&(h.registeredClass.constructor_body=[]),h.registeredClass.constructor_body[t-1]!==void 0)throw new Te(`Cannot register multiple constructors with identical number of parameters (${t-1}) for class '${h.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return h.registeredClass.constructor_body[t-1]=()=>{Ge(`Cannot construct ${h.name} due to unbound types`,p)},ae([],p,S=>(S.splice(1,0,null),h.registeredClass.constructor_body[t-1]=dt($,S,null,d,f),[])),[]})},Ar=(n,t,i,l,d,f,p,h,$,S)=>{var q=ft(i,l);t=re(t),t=Qt(t),f=le(d,f,$),ae([],[n],Y=>{Y=Y[0];var D=`${Y.name}.${t}`;t.startsWith("@@")&&(t=Symbol[t.substring(2)]),h&&Y.registeredClass.pureVirtualFunctions.push(t);function Z(){Ge(`Cannot call ${D} due to unbound types`,q)}var ee=Y.registeredClass.instancePrototype,se=ee[t];return se===void 0||se.overloadTable===void 0&&se.className!==Y.name&&se.argCount===i-2?(Z.argCount=i-2,Z.className=Y.name,ee[t]=Z):(ct(ee,t,D),ee[t].overloadTable[i-2]=Z),ae([],q,te=>{var W=dt(D,te,Y,f,p);return ee[t].overloadTable===void 0?(W.argCount=i-2,ee[t]=W):ee[t].overloadTable[i-2]=W,[]}),[]})},Pt=[],ke=[0,1,,1,null,1,!0,1,!1,1],Rt=[],en=n=>{if(n>9&&--ke[n+1]===0){var t=ke[n];ke[n]=void 0;var i=Rt[n];i&&(Rt[n]=void 0,i(t)),Pt.push(n)}},pt={toValue:n=>(n||K(`Cannot use deleted val. handle = ${n}`),ke[n]),toHandle:n=>{switch(n){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:{let t=Pt.pop()||ke.length;return ke[t]=n,ke[t+1]=1,t}}}},tn={name:"emscripten::val",fromWireType:n=>{var t=pt.toValue(n);return en(n),t},toWireType:(n,t)=>pt.toHandle(t),readValueFromPointer:ve,destructorFunction:null},rn=n=>fe(n,tn),It,Jt,nn=(n,t)=>{switch(t){case 4:return function(i){return this.fromWireType(It[i>>2])};case 8:return function(i){return this.fromWireType(Jt[i>>3])};default:throw new TypeError(`invalid float width (${t}): ${n}`)}},an=(n,t,i)=>{t=re(t),fe(n,{name:t,fromWireType:l=>l,toWireType:(l,d)=>d,readValueFromPointer:nn(t,i),destructorFunction:null})},sn=(n,t,i,l,d)=>{t=re(t);let f=l===0,p=$=>$;if(f){var h=32-8*i;p=$=>$<>>h,d=p(d)}fe(n,{name:t,fromWireType:p,toWireType:($,S)=>S,readValueFromPointer:St(t,i,l!==0),destructorFunction:null})},on=(n,t,i)=>{var l=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array],d=l[t];function f(p){var h=O[p>>2],$=O[p+4>>2];return new d(R.buffer,$,h)}i=re(i),fe(n,{name:i,fromWireType:f,readValueFromPointer:f},{ignoreDuplicateRegistrations:!0})},cn=(n,t,i,l)=>{if(!(l>0))return 0;for(var d=i,f=i+l-1,p=0;p=f)break;t[i++]=h}else if(h<=2047){if(i+1>=f)break;t[i++]=192|h>>6,t[i++]=128|h&63}else if(h<=65535){if(i+2>=f)break;t[i++]=224|h>>12,t[i++]=128|h>>6&63,t[i++]=128|h&63}else{if(i+3>=f)break;t[i++]=240|h>>18,t[i++]=128|h>>12&63,t[i++]=128|h>>6&63,t[i++]=128|h&63,p++}}return t[i]=0,i-d},Ot=(n,t,i)=>cn(n,M,t,i),Kt=n=>{for(var t=0,i=0;i=55296&&l<=57343?(t+=4,++i):t+=3}return t},ln=(n,t)=>{t=re(t),fe(n,{name:t,fromWireType(i){var l=O[i>>2],d=i+4,f;return f=Q(d,l,!0),pe(i),f},toWireType(i,l){l instanceof ArrayBuffer&&(l=new Uint8Array(l));var d,f=typeof l=="string";f||ArrayBuffer.isView(l)&&l.BYTES_PER_ELEMENT==1||K("Cannot pass non-string to std::string"),f?d=Kt(l):d=l.length;var p=ht(4+d+1),h=p+4;return O[p>>2]=d,f?Ot(l,h,d+1):M.set(l,h),i!==null&&i.push(pe,p),p},readValueFromPointer:ve,destructorFunction(i){pe(i)}})},Dt=globalThis.TextDecoder?new TextDecoder("utf-16le"):void 0,un=(n,t,i)=>{var l=n>>1,d=v(Ne,l,t/2,i);if(d-l>16&&Dt)return Dt.decode(Ne.subarray(l,d));for(var f="",p=l;p{if(i<2)return 0;i-=2;for(var l=t,d=i>1]=p,t+=2}return ze[t>>1]=0,t-l},fn=n=>n.length*2,pn=(n,t,i)=>{for(var l="",d=n>>2,f=0;!(f>=t/4);f++){var p=O[d+f];if(!p&&!i)break;l+=String.fromCodePoint(p)}return l},hn=(n,t,i=2147483647)=>{if(i<4)return 0;for(var l=t,d=l+i-4,f=0;f65535&&f++,Be[t>>2]=p,t+=4,t+4>d)break}return Be[t>>2]=0,t-l},wn=n=>{for(var t=0,i=0;i65535&&i++,t+=4}return t},gn=(n,t,i)=>{i=re(i);var l,d,f;t===2?(l=un,d=dn,f=fn):(l=pn,d=hn,f=wn),fe(n,{name:i,fromWireType:p=>{var h=O[p>>2],$=l(p+4,h*t,!0);return pe(p),$},toWireType:(p,h)=>{typeof h!="string"&&K(`Cannot pass non-string to C++ string type ${i}`);var $=f(h),S=ht(4+$+t);return O[S>>2]=$/t,d(h,S+4,$+t),p!==null&&p.push(pe,S),S},readValueFromPointer:ve,destructorFunction(p){pe(p)}})},mn=(n,t,i,l,d,f)=>{be[n]={name:re(t),rawConstructor:le(i,l),rawDestructor:le(d,f),fields:[]}},vn=(n,t,i,l,d,f,p,h,$,S)=>{be[n].fields.push({fieldName:re(t),getterReturnType:i,getter:le(l,d),getterContext:f,setterArgumentType:p,setter:le(h,$),setterContext:S})},yn=(n,t)=>{t=re(t),fe(n,{isVoid:!0,name:t,fromWireType:()=>{},toWireType:(i,l)=>{}})},bn=()=>{},He={},kn=n=>{if(n instanceof _||n=="unwind")return y;a(1,n)},En=n=>{y=n,a(n,new _(n))},Cn=n=>{if(!g)try{return n()}catch(t){kn(t)}},$n=()=>performance.now(),Un=(n,t)=>{if(He[n]&&(clearTimeout(He[n].id),delete He[n]),!t)return 0;var i=setTimeout(()=>{delete He[n],Cn(()=>zt(n,$n()))},t);return He[n]={id:i,timeout_ms:t},0},xn=()=>2147483648,Mn=(n,t)=>Math.ceil(n/t)*t,Tn=n=>{var t=je.buffer.byteLength,i=(n-t+65535)/65536|0;try{return je.grow(i),k(),1}catch{}},Nn=n=>{var t=M.length;n>>>=0;var i=xn();if(n>i)return!1;for(var l=1;l<=4;l*=2){var d=t*(1+.2/l);d=Math.min(d,n+100663296);var f=Math.min(i,Mn(Math.max(n,d),65536)),p=Tn(f);if(p)return!0}return!1},Sn=n=>52;function Hn(n,t,i,l){return 70}var qn=[null,[],[]],Ln=(n,t)=>{var i=qn[n];!t||t===10?((n===1?s:c)(x(i)),i.length=0):i.push(t)},Fn=(n,t,i,l)=>{for(var d=0,f=0;f>2],h=O[t+4>>2];t+=8;for(var $=0;$>2]=d,0};Hr(),Xr(),r.wasmBinary&&(u=r.wasmBinary),r.UTF8ToString=Q,r.stringToUTF8=Ot,r.lengthBytesUTF8=Kt;var Xt,ht,pe,zt,Bt,Vt,Yt,Zt,Gt,jt,Wt,je,At;function _n(n){Xt=n.B,ht=r._malloc=n.C,pe=r._free=n.D,zt=n.F,Bt=n.G,Vt=n.H,Yt=n.I,Zt=n.J,Gt=n.K,jt=n.L,je=n.z,At=n.E,Wt=n.M}var Qn={t:xe,x:Xe,f:st,i:Mr,l:Tr,o:Zr,b:jr,n:Wr,d:Ar,y:rn,h:an,c:sn,a:on,k:ln,g:gn,j:mn,e:vn,m:yn,w:bn,p:Un,u:Nn,s:Sn,q:Hn,r:Fn,v:En};async function Pn(){!g&&U()}var qe;return qe=await C(),await Pn(),r}var ba=ya,ka=new Int8Array([-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,90,63,64,65,66,-1,67,68,69,70,71,-1,72,73,52,53,54,55,56,57,58,59,60,61,74,75,76,77,78,79,80,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,81,-1,82,83,84,85,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,86,87,88,89,-1]);function Ea(e){let r=new Uint8Array(170930),a=0,o=0,s=0,c=-1;for(let u=0,g=e.length;u127)continue;let m=ka[y];if(!(m<0))if(c<0)c=m;else{c+=m*91,o|=c<88?13:14;do r[a++]=o,o>>>=8,s-=8;while(s>7);c=-1}}return c>=0&&(r[a++]=(o|c<""})}function Ua(){Ct=void 0}var xa=class{_module;constructor(e){this._module=e}malloc(e){let r=this._module._malloc(e);return{ptr:r,size:e,dispose:()=>this.free({ptr:r,size:e,dispose:()=>{}})}}free(e){this._module._free(e.ptr)}dataToHeap(e){let r=this.malloc(e.byteLength);return this._module.HEAPU8.set(e,r.ptr),r}heapView(e){return this._module.HEAPU8.subarray(e.ptr,e.ptr+e.size)}heapToUint8Array(e){return new Uint8Array([...this.heapView(e)])}lengthBytes(e){return this._module.lengthBytesUTF8(e)}stringToHeap(e){let r=this.lengthBytes(e)+1,a=this._module._malloc(r);return this._module.stringToUTF8(e,a,r),{ptr:a,size:r,dispose:()=>this.free({ptr:a,size:r,dispose:()=>{}})}}heapToString(e){return this._module.UTF8ToString(e.ptr,e.size)}hasFilesystem(){let e=this._module;return e.FS_createPath!==void 0&&e.FS_createDataFile!==void 0&&e.FS_preloadFile!==void 0&&e.FS_unlink!==void 0}createPath(e,r=!0,a=!0){return this._module.FS_createPath("/",e,r,a)}createDataFile(e,r,a=!0,o=!0,s=!0){return this._module.FS_createDataFile("/",e,r,a,o,s)}preloadFile(e,r,a=!0,o=!0,s=!1,c=!0,u=!1){return this._module.FS_preloadFile("/",e,r,a,o,s,c,u)}unlink(e){return this._module.FS_unlink(e)}},Le,Ma=4294967295;function Fe(e,r){if(!Number.isInteger(e)||e<0||e>Ma)throw new Error(`${r} length ${e} is outside the WASM32-safe range`)}function vt(e){if(e.length===0)return new Uint8Array(0);if(e.length===1)return e[0];let r=0;for(let s of e)r+=s.length;let a=new Uint8Array(r),o=0;for(let s of e)a.set(s,o),o+=s.length;return a}var Ta=class br{_mainModule;_zstdClass;_zstd;_compressionLevel;_decompressFrameCompleted=!1;_decompressRemaining=0;_decompressSawInput=!1;constructor(r){this._mainModule=new xa(r),this._zstdClass=r.zstd,this._zstd=new this._zstdClass,this._compressionLevel=this._zstdClass.defaultCLevel()}static load(){return Le||(Le=$a().then(r=>new br(r))),Le}static unload(){Ua(),Le?.then(r=>{r?._zstd?.delete()}),Le=void 0}copyHeap(r){return this._mainModule.heapView(r).slice()}mallocChecked(r,a){Fe(r,a);let o=this._mainModule.malloc(r);if(!o.ptr)throw this._mainModule.free(o),new Error(`Failed to allocate ${r} bytes for ${a}`);return o}throwStreamError(r,a){throw new Error(`${r} failed: ${a.errorName||"unknown error"}`)}ensureStreamOk(r,a){a.error&&this.throwStreamError(r,a)}version(){return this._zstdClass.version()}reset(){let r=this._zstd.reset();this.ensureStreamOk("reset",r),this._decompressFrameCompleted=!1,this._decompressRemaining=0,this._decompressSawInput=!1}resetCompression(r){r!==void 0&&(this._compressionLevel=r);let a=this._zstd.resetCompression(this._compressionLevel);this.ensureStreamOk("resetCompression",a)}resetDecompression(){let r=this._zstd.resetDecompression();this.ensureStreamOk("resetDecompression",r),this._decompressFrameCompleted=!1,this._decompressRemaining=0,this._decompressSawInput=!1}setCompressionLevel(r){let a=this._zstd.setCompressionLevel(r);this.ensureStreamOk("setCompressionLevel",a),this._compressionLevel=r}compress(r,a=this.defaultCLevel()){Fe(r.length,"compress input");let o=this._mainModule.dataToHeap(r);try{if(!o.ptr&&r.length>0)throw new Error("Failed to allocate compress input buffer");let s=this._zstdClass.compressBound(r.length),c=this.mallocChecked(s,"compress output");try{if(c.size=this._zstdClass.compress(c.ptr,s,o.ptr,o.size,a),this._zstdClass.isError(c.size))throw new Error(`compress failed: ${this._zstdClass.getErrorName(c.size)}`);return this.copyHeap(c)}finally{this._mainModule.free(c)}}finally{this._mainModule.free(o)}}compressChunk(r){if(Fe(r.length,"compressChunk input"),r.length===0)return new Uint8Array(0);let a=this._mainModule.dataToHeap(r);try{if(!a.ptr)throw new Error("Failed to allocate compressChunk input buffer");let o=this._zstdClass.CStreamOutSize(),s=[],c=0;for(;c0&&(u.size=g.produced,s.push(this.copyHeap(u)))}finally{this._mainModule.free(u)}}return vt(s)}finally{this._mainModule.free(a)}}compressEnd(){let r=this._zstdClass.CStreamOutSize(),a=[],o=1;for(;o!==0;){let s=this.mallocChecked(r,"compressEnd output");try{let c=this._zstd.compressEnd(s.ptr,r);if(this.ensureStreamOk("compressEnd",c),c.produced===0&&c.remaining!==0)throw new Error("compressEnd failed: no progress while finishing stream");o=c.remaining,c.produced>0&&(s.size=c.produced,a.push(this.copyHeap(s)))}finally{this._mainModule.free(s)}}return vt(a)}frameContentSize(r){return this._zstdClass.getFrameContentSize(r.ptr,r.size)}decompress(r){Fe(r.length,"decompress input");let a=this._mainModule.dataToHeap(r);try{if(!a.ptr&&r.length>0)throw new Error("Failed to allocate decompress input buffer");let o=this.frameContentSize(a);if(o.error)throw new Error(`Failed to get frame content size: ${o.errorName}`);let s=o.known;if(s){let c=this._zstdClass.findFrameCompressedSize(a.ptr,a.size);if(this._zstdClass.isError(c))throw new Error(`Failed to find frame compressed size: ${this._zstdClass.getErrorName(c)}`);c0?a.ptr+c:0,b=this._zstd.decompressChunk(g.ptr,o,m,y);if(this.ensureStreamOk("decompressChunk",b),b.consumed===0&&b.produced===0){if(y===0){b.remaining>0&&(this._decompressRemaining=b.remaining);break}throw new Error("decompressChunk failed: no progress while consuming input")}c+=b.consumed,u=b.produced===o&&b.remaining!==0,b.produced>0&&(g.size=b.produced,s.push(this.copyHeap(g))),b.remaining===0?(this._decompressFrameCompleted=!0,this._decompressRemaining=0):this._decompressRemaining=b.remaining}finally{this._mainModule.free(g)}}return vt(s)}finally{this._mainModule.free(a)}}decompressEnd(){if(!this._decompressSawInput)throw new Error("decompressEnd failed: empty compressed input is not a completed frame");if(!this._decompressFrameCompleted||this._decompressRemaining!==0)throw new Error("decompressEnd failed: truncated Zstandard input")}defaultCLevel(){return this._zstdClass.defaultCLevel()}minCLevel(){return this._zstdClass.minCLevel()}maxCLevel(){return this._zstdClass.maxCLevel()}};let yt=null;function Na(){return yt||(yt=Ta.load()),yt}function Sa(e){return e.length>=4&&e[0]===40&&e[1]===181&&e[2]===47&&e[3]===253}function $t(e){const r="SQLite format 3\0";if(e.length/g,">").replace(/"/g,""").replace(/'/g,"'")}function or(e,r,a){const o=e.tagsList[0]??"",s=e.tagsList.length>1?` +${e.tagsList.length-1}`:"",c=Ee(e.tagsList.join(", ")),u=o?`${Ee(o)}${s}`:"",g=e.more.size>0?'':"";return`
`+(a?kr(e,r):"")+"
"}function kr(e,r){const a=[...e.more.entries()].map(([o,s])=>{const c=r.get(o);return`
${c?Ee(c.name):`Поле #${o}`}
${Ee(s)}
`}).join("");return a?`
${a}
`:""}function qa(e,r){e.innerHTML=` + WHERE h.deck_id = ? ORDER BY h.timestamp DESC, h.id DESC LIMIT ? OFFSET ?`,[e,a,o])).map(c=>({id:Number(c.id),deck_id:Number(c.deck_id),word_id:Number(c.word_id),timestamp:Number(c.timestamp??0),answer:Number(c.answer??0),before:Number(c.before??0),after:Number(c.after??0),fsrs:Number(c.fsrs??0),wordKey:c.wkey==null?"":String(c.wkey),wordValue:c.wvalue==null?"":String(c.wvalue)}))}const Ut="japanese_app.db";async function xt(){return navigator.storage.getDirectory()}async function na(e){e[18]=1,e[19]=1;const a=await(await xt()).getFileHandle(Ut,{create:!0}),o=a.createSyncAccessHandle;if(typeof o=="function")try{const c=await o.call(a);try{c.truncate(0),c.write(e,{at:0}),c.flush()}finally{c.close()}return}catch{}const s=await a.createWritable();try{await s.truncate(0);const c=new Uint8Array(e.length);c.set(e),await s.write(c)}finally{await s.close()}}async function aa(){const e=await xt();let r;try{r=await e.getFileHandle(Ut)}catch{throw new Error("Локальная база не найдена — сначала скачай сохранение")}const a=await r.getFile();if(a.size===0)throw new Error("Локальная база пуста");return new Uint8Array(await a.arrayBuffer())}async function Oe(){try{return(await(await(await xt()).getFileHandle(Ut)).getFile()).size>0}catch{return!1}}var sa=ArrayBuffer,G=Uint8Array,tt=Uint16Array,ia=Int16Array,at=Int32Array,mt=function(e,r,a){if(G.prototype.slice)return G.prototype.slice.call(e,r,a);(r==null||r<0)&&(r=0),(a==null||a>e.length)&&(a=e.length);var o=new G(a-r);return o.set(e.subarray(r,a)),o},Ie=function(e,r,a,o){if(G.prototype.fill)return G.prototype.fill.call(e,r,a,o);for((a==null||a<0)&&(a=0),(o==null||o>e.length)&&(o=e.length);ae.length)&&(o=e.length);a2046MB)","invalid block type","FSE accuracy too high","match distance too far back","unexpected EOF"],A=function(e,r,a){var o=new Error(r||ca[e]);if(o.code=e,Error.captureStackTrace&&Error.captureStackTrace(o,A),!a)throw o;return o},sr=function(e,r,a){for(var o=0,s=0;o>>0},ua=function(e,r){var a=e[0]|e[1]<<8|e[2]<<16;if(a==3126568&&e[3]==253){var o=e[4],s=o>>5&1,c=o>>2&1,u=o&3,h=o>>6;o&8&&A(0);var v=6-s,p=u==3?4:u,y=sr(e,v,p);v+=p;var C=h?1<>3);E=$+($>>3)*(e[5]&7)}E>2145386496&&A(1);var w=new G((r==1?k||E:r?0:E)+12);return w[0]=1,w[4]=4,w[8]=8,{b:v+C,y:0,l:0,d:y,w:r&&r!=1?r:w.subarray(12),e:E,o:new at(w.buffer,0,3),u:k,c,m:Math.min(131072,E)}}else if((a>>4|e[3]<<20)==25481893)return la(e,4)+8;A(0)},Ce=function(e){for(var r=0;1<a&&A(3);for(var c=1<0;){var O=Ce(u+1),H=o>>3,z=(1<>(o&7)&z,x=(1<x&&(R-=F)),k[++h]=--R,R==-1?(u+=R,U[--y]=h):u-=R,!R)do{var q=o>>3;v=(e[q]|e[q+1]<<8)>>(o&7)&3,o+=2,h+=v}while(v==3)}(h>255||u)&&A(0);for(var X=0,j=(c>>1)+(c>>3)+3,V=c-1,B=0;B<=h;++B){var L=k[B];if(L<1){E[B]=-L;continue}for(p=0;p=y)}}for(X&&A(0),p=0;p>3,{b:s,s:U,n:I,t:$}]},da=function(e,r){var a=0,o=-1,s=new G(292),c=e[r],u=s.subarray(0,256),h=s.subarray(256,268),v=new tt(s.buffer,268);if(c<128){var p=Je(e,r+1,6),y=p[0],C=p[1];r+=c;var k=y<<3,E=e[r];E||A(0);for(var $=0,w=0,U=C.b,I=U,O=(++r<<3)-8+Ce(E);O-=U,!(O>3;if($+=(e[H]|e[H+1]<<8)>>(O&7)&(1<>3,w+=(e[H]|e[H+1]<<8)>>(O&7)&(1<255&&A(0)}else{for(o=c-127;a>4,u[a+1]=z&15}++r}var R=0;for(a=0;a11&&A(0),R+=x&&1<0;--a){var B=v[a];Ie(V,a,B,v[a-1]=B+h[a]*(1<h&&C>3,E=(e[k]|e[k+1]<<8|e[k+2]<<16)>>(y&7);v=(v<>2,u=c<<1,h=c+u;Re(e.subarray(o,o+=e[0]|e[1]<<8),r.subarray(0,c),a),Re(e.subarray(o,o+=e[2]|e[3]<<8),r.subarray(c,u),a),Re(e.subarray(o,o+=e[4]|e[5]<<8),r.subarray(u,h),a),Re(e.subarray(o),r.subarray(h),a)},va=function(e,r,a){var o,s=r.b,c=e[s],u=c>>1&3;r.l=c&1;var h=c>>3|e[s+1]<<5|e[s+2]<<13,v=(s+=3)+h;if(u==1)return s>=e.length?void 0:(r.b=s+1,a?(Ie(a,e[s],r.y,r.y+=h),a):Ie(new G(h),e[s]));if(!(v>e.length)){if(u==0)return r.b=v,a?(a.set(e.subarray(s,v),r.y),r.y+=h,a):mt(e,s,v);if(u==2){var p=e[s],y=p&3,C=p>>2&3,k=p>>4,E=0,$=0;y<2?C&1?k|=e[++s]<<4|(C&2&&e[++s]<<12):k=p>>3:($=C,C<2?(k|=(e[++s]&63)<<4,E=e[s]>>6|e[++s]<<2):C==2?(k|=e[++s]<<4|(e[++s]&3)<<12,E=e[s]>>2|e[++s]<<6):(k|=e[++s]<<4|(e[++s]&63)<<12,E=e[s]>>6|e[++s]<<2|e[++s]<<10)),++s;var w=a?a.subarray(r.y,r.y+r.m):new G(r.m),U=w.length-k;if(y==0)w.set(e.subarray(s,s+=k),U);else if(y==1)Ie(w,e[s++],U);else{var I=r.h;if(y==2){var O=da(e,s);E+=s-(s=O[0]),r.h=I=O[1]}else I||A(0);($?ma:Re)(e.subarray(s,s+=E),w.subarray(U),I)}var H=e[s++];if(H){H==255?H=(e[s++]|e[s++]<<8)+32512:H>127&&(H=H-128<<8|e[s++]);var z=e[s++];z&3&&A(0);for(var R=[pa,ha,fa],x=2;x>-1;--x){var F=z>>(x<<1)+2&3;if(F==1){var Q=new G([0,0,e[s++]]);R[x]={s:Q.subarray(2,3),n:Q.subarray(0,1),t:new tt(Q.buffer,0,1),b:0}}else F==2?(o=Je(e,s,9-(x&1)),s=o[0],R[x]=o[1]):F==3&&(r.t||A(0),R[x]=r.t[x])}var q=r.t=R,X=q[0],j=q[1],V=q[2],B=e[v-1];B||A(0);var L=(v<<3)-8+Ce(B)-V.b,b=L>>3,S=0,T=(e[b]|e[b+1]<<8)>>(L&7)&(1<>3;var P=(e[b]|e[b+1]<<8)>>(L&7)&(1<>3;var J=(e[b]|e[b+1]<<8)>>(L&7)&(1<>3;var ve=1<>>(L&7)&ve-1);b=(L-=Et[xe])>>3;var oe=ga[xe]+((e[b]|e[b+1]<<8|e[b+2]<<16)>>(L&7)&(1<>3;var we=wa[he]+((e[b]|e[b+1]<<8|e[b+2]<<16)>>(L&7)&(1<>3,T=V.t[T]+((e[b]|e[b+1]<<8)>>(L&7)&(1<>3,J=X.t[J]+((e[b]|e[b+1]<<8)>>(L&7)&(1<>3,P=j.t[P]+((e[b]|e[b+1]<<8)>>(L&7)&(1<3)r.o[2]=r.o[1],r.o[1]=r.o[0],r.o[0]=ne-=3;else{var $e=ne-(we!=0);$e?(ne=$e==3?r.o[0]-1:r.o[$e],$e>1&&(r.o[2]=r.o[1]),r.o[1]=r.o[0],r.o[0]=ne):ne=r.o[0]}for(var x=0;xoe&&(ae=oe);for(var x=0;x{throw t},o,s=console.log.bind(console),c=console.error.bind(console),u,h=!1,v,p=n=>n.startsWith("file://"),y=!1;function C(){return je.buffer}function k(){if(!Q?.buffer?.resizable){var n=C();Q=new Int8Array(n),ze=new Int16Array(n),r.HEAPU8=T=new Uint8Array(n),Te=new Uint16Array(n),Be=new Int32Array(n),J=new Uint32Array(n),It=new Float32Array(n),Ot=new Float64Array(n),St=new BigInt64Array(n),Tt=new BigUint64Array(n)}}function E(){y=!0,_e.A()}function $(n){n=`Aborted(${n})`,c(n),h=!0,n+=". Build with -sASSERTIONS for more info.",y&&Bt();var t=new WebAssembly.RuntimeError(n);throw t}var w;let U=()=>"";function I(n){if(n==w&&u)return new Uint8Array(u);throw"both async and sync fetching of the wasm failed"}async function O(n){if(!u)try{var t=await o(n);return new Uint8Array(t)}catch{}return I(n)}async function H(n,t){try{var i=await O(n),l=await WebAssembly.instantiate(i,t);return l}catch(d){c(`failed to asynchronously prepare wasm: ${d}`),$(d)}}async function z(n,t,i){if(!n&&!p(t))try{var l=fetch(t,{credentials:"same-origin"}),d=await WebAssembly.instantiateStreaming(l,i);return d}catch(f){c(`wasm streaming compile failed: ${f}`),c("falling back to ArrayBuffer instantiation")}return H(t,i)}function R(){var n={a:Qn};return n}async function x(){function n(f){return _e=f.exports,Rn(_e),k(),_e}function t(f){return n(f.instance)}var i=R();w??=U();var l=await z(u,w,i),d=t(l);return d}class F{name="ExitStatus";constructor(t){this.message=`Program terminated with exit(${t})`,this.status=t}}var Q,q=()=>Wt,X=n=>{var t=n.getArg(q(),0);return Gt(t)},j=()=>Zt(),V=n=>Vt(n),B=n=>Yt(n),L=globalThis.TextDecoder&&new TextDecoder,b=(n,t,i,l)=>{var d=t+i;if(l)return d;for(;n[t]&&!(t>=d);)++t;return t},S=(n,t=0,i,l)=>{var d=b(n,t,i,l);if(d-t>16&&n.buffer&&L)return L.decode(n.subarray(t,d));for(var f="";t>10,56320|N&1023)}}return f},T,P=(n,t,i)=>n?S(T,n,t,i):"",J,he=n=>{var t=j(),i=B(4),l=B(4);jt(n,i,l);var d=J[i>>2],f=J[l>>2],g=P(d);pe(d);var m;return f&&(m=P(f),pe(f)),V(t),[g,m]},ue=n=>{var t=X(n);return he(t)},xe=n=>{var t=new WebAssembly.Exception(q(),[n],{traceStack:!0});throw t.message=ue(t),t},Xe=()=>$(""),be={},Me=n=>{for(;n.length;){var t=n.pop(),i=n.pop();i(t)}};function ve(n){return this.fromWireType(J[n>>2])}var ne={},oe={},we={};class $e extends Error{constructor(t){super(t),this.name="InternalError"}}var de=n=>{throw new $e(n)},ae=(n,t,i)=>{n.forEach(m=>we[m]=t);function l(m){var M=i(m);M.length!==n.length&&de("Mismatched type converter count");for(var N=0;N{d[m]=oe[M],++g,g===f.length&&l(d)}));f.length===0&&l(d)},st=n=>{var t=be[n];delete be[n];var i=t.rawConstructor,l=t.rawDestructor,d=t.fields,f=d.map(g=>g.getterReturnType).concat(d.map(g=>g.setterArgumentType));ae([n],f,g=>{var m={};for(var[M,N]of d.entries()){let _=g[M],Y=N.getter,D=N.getterContext,Z=g[M+d.length],ee=N.setter,se=N.setterContext;m[N.fieldName]={read:te=>_.fromWireType(Y(D,te)),write:(te,W)=>{var ye=[];ee(se,te,Z.toWireType(ye,W)),Me(ye)},optional:_.optional}}return[{name:t.name,fromWireType:_=>{var Y={};for(var D in m)Y[D]=m[D].read(_);return l(_),Y},toWireType:(_,Y)=>{for(var D in m)if(!(D in Y)&&!m[D].optional)throw new TypeError(`Missing field: "${D}"`);var Z=i();for(D in m)m[D].write(Z,Y[D]);return _!==null&&_.push(l,Z),Z},readValueFromPointer:ve,destructorFunction:l}]})},re=n=>{for(var t="";;){var i=T[n++];if(!i)return t;t+=String.fromCharCode(i)}};class Se extends Error{constructor(t){super(t),this.name="BindingError"}}var K=n=>{throw new Se(n)};function Sr(n,t,i={}){var l=t.name;if(n||K(`type "${l}" must have a positive integer typeid pointer`),oe.hasOwnProperty(n)){if(i.ignoreDuplicateRegistrations)return;K(`Cannot register type '${l}' twice`)}if(oe[n]=t,delete we[n],ne.hasOwnProperty(n)){var d=ne[n];delete ne[n],d.forEach(f=>f())}}function fe(n,t,i={}){return Sr(n,t,i)}var ze,Te,Be,St,Tt,Nt=(n,t,i)=>{switch(t){case 1:return i?l=>Q[l]:l=>T[l];case 2:return i?l=>ze[l>>1]:l=>Te[l>>1];case 4:return i?l=>Be[l>>2]:l=>J[l>>2];case 8:return i?l=>St[l>>3]:l=>Tt[l>>3];default:throw new TypeError(`invalid integer width (${t}): ${n}`)}},Tr=(n,t,i,l,d)=>{t=re(t);let f=l===0n,g=m=>m;if(f){let m=i*8;g=M=>BigInt.asUintN(m,M),d=g(d)}fe(n,{name:t,fromWireType:g,toWireType:(m,M)=>(typeof M=="number"&&(M=BigInt(M)),M),readValueFromPointer:Nt(t,i,!f),destructorFunction:null})},Nr=(n,t,i,l)=>{t=re(t),fe(n,{name:t,fromWireType:function(d){return!!d},toWireType:function(d,f){return f?i:l},readValueFromPointer:function(d){return this.fromWireType(T[d])},destructorFunction:null})},Lr=n=>({count:n.count,deleteScheduled:n.deleteScheduled,preservePointerOnDelete:n.preservePointerOnDelete,ptr:n.ptr,ptrType:n.ptrType,smartPtr:n.smartPtr,smartPtrType:n.smartPtrType}),it=n=>{function t(i){return i.$$.ptrType.registeredClass.name}K(t(n)+" instance already deleted")},ot=!1,Lt=n=>{},_r=n=>{n.smartPtr?n.smartPtrType.rawDestructor(n.smartPtr):n.ptrType.registeredClass.rawDestructor(n.ptr)},_t=n=>{n.count.value-=1;var t=n.count.value===0;t&&_r(n)},Ne=n=>globalThis.FinalizationRegistry?(ot=new FinalizationRegistry(t=>{_t(t.$$)}),Ne=t=>{var i=t.$$,l=!!i.smartPtr;if(l){var d={$$:i};ot.register(t,d,t)}return t},Lt=t=>ot.unregister(t),Ne(n)):(Ne=t=>t,n),Hr=()=>{let n=Ve.prototype;Object.assign(n,{isAliasOf(i){if(!(this instanceof Ve)||!(i instanceof Ve))return!1;var l=this.$$.ptrType.registeredClass,d=this.$$.ptr;i.$$=i.$$;for(var f=i.$$.ptrType.registeredClass,g=i.$$.ptr;l.baseClass;)d=l.upcast(d),l=l.baseClass;for(;f.baseClass;)g=f.upcast(g),f=f.baseClass;return l===f&&d===g},clone(){if(this.$$.ptr||it(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var i=Ne(Object.create(Object.getPrototypeOf(this),{$$:{value:Lr(this.$$)}}));return i.$$.count.value+=1,i.$$.deleteScheduled=!1,i},delete(){this.$$.ptr||it(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&K("Object already scheduled for deletion"),Lt(this),_t(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||it(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&K("Object already scheduled for deletion"),this.$$.deleteScheduled=!0,this}});let t=Symbol.dispose;t&&(n[t]=n.delete)};function Ve(){}var Ht=(n,t)=>Object.defineProperty(t,"name",{value:n}),qt={},ct=(n,t,i)=>{if(n[t].overloadTable===void 0){var l=n[t];n[t]=function(...d){return n[t].overloadTable.hasOwnProperty(d.length)||K(`Function '${i}' called with an invalid number of arguments (${d.length}) - expects one of (${n[t].overloadTable})!`),n[t].overloadTable[d.length].apply(this,d)},n[t].overloadTable=[],n[t].overloadTable[l.argCount]=l}},qr=(n,t,i)=>{r.hasOwnProperty(n)?(K(`Cannot register public name '${n}' twice`),ct(r,n,n),r[n].overloadTable.hasOwnProperty(i)&&K(`Cannot register multiple overloads of a function with the same number of arguments (${i})!`),r[n].overloadTable[i]=t):(r[n]=t,r[n].argCount=i)},Fr=48,Pr=57,Rr=n=>{n=n.replace(/[^a-zA-Z0-9_]/g,"$");var t=n.charCodeAt(0);return t>=Fr&&t<=Pr?`_${n}`:n};function Qr(n,t,i,l,d,f,g,m){this.name=n,this.constructor=t,this.instancePrototype=i,this.rawDestructor=l,this.baseClass=d,this.getActualType=f,this.upcast=g,this.downcast=m,this.pureVirtualFunctions=[]}var lt=(n,t,i)=>{for(;t!==i;)t.upcast||K(`Expected null or instance of ${i.name}, got an instance of ${t.name}`),n=t.upcast(n),t=t.baseClass;return n},ut=n=>{if(n===null)return"null";var t=typeof n;return t==="object"||t==="array"||t==="function"?n.toString():""+n};function Ir(n,t){if(t===null)return this.isReference&&K(`null is not a valid ${this.name}`),0;t.$$||K(`Cannot pass "${ut(t)}" as a ${this.name}`),t.$$.ptr||K(`Cannot pass deleted object as a pointer of type ${this.name}`);var i=t.$$.ptrType.registeredClass,l=lt(t.$$.ptr,i,this.registeredClass);return l}function Or(n,t){var i;if(t===null)return this.isReference&&K(`null is not a valid ${this.name}`),this.isSmartPointer?(i=this.rawConstructor(),n!==null&&n.push(this.rawDestructor,i),i):0;(!t||!t.$$)&&K(`Cannot pass "${ut(t)}" as a ${this.name}`),t.$$.ptr||K(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&K(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);var l=t.$$.ptrType.registeredClass;if(i=lt(t.$$.ptr,l,this.registeredClass),this.isSmartPointer)switch(t.$$.smartPtr===void 0&&K("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?i=t.$$.smartPtr:K(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:i=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)i=t.$$.smartPtr;else{var d=t.clone();i=this.rawShare(i,pt.toHandle(()=>d.delete())),n!==null&&n.push(this.rawDestructor,i)}break;default:K("Unsupported sharing policy")}return i}function Jr(n,t){if(t===null)return this.isReference&&K(`null is not a valid ${this.name}`),0;t.$$||K(`Cannot pass "${ut(t)}" as a ${this.name}`),t.$$.ptr||K(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&K(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var i=t.$$.ptrType.registeredClass,l=lt(t.$$.ptr,i,this.registeredClass);return l}var Ft=(n,t,i)=>{if(t===i)return n;if(i.baseClass===void 0)return null;var l=Ft(n,t,i.baseClass);return l===null?null:i.downcast(l)},Kr={},Dr=(n,t)=>{for(t===void 0&&K("ptr should not be undefined");n.baseClass;)t=n.upcast(t),n=n.baseClass;return t},Xr=(n,t)=>(t=Dr(n,t),Kr[t]),Ye=(n,t)=>{(!t.ptrType||!t.ptr)&&de("makeClassHandle requires ptr and ptrType");var i=!!t.smartPtrType,l=!!t.smartPtr;return i!==l&&de("Both smartPtrType and smartPtr must be specified"),t.count={value:1},Ne(Object.create(n,{$$:{value:t,writable:!0}}))};function zr(n){var t=this.getPointee(n);if(!t)return this.destructor(n),null;var i=Xr(this.registeredClass,t);if(i!==void 0){if(i.$$.count.value===0)return i.$$.ptr=t,i.$$.smartPtr=n,i.clone();var l=i.clone();return this.destructor(n),l}function d(){return this.isSmartPointer?Ye(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:n}):Ye(this.registeredClass.instancePrototype,{ptrType:this,ptr:n})}var f=this.registeredClass.getActualType(t),g=qt[f];if(!g)return d.call(this);var m;this.isConst?m=g.constPointerType:m=g.pointerType;var M=Ft(t,this.registeredClass,m.registeredClass);return M===null?d.call(this):this.isSmartPointer?Ye(m.registeredClass.instancePrototype,{ptrType:m,ptr:M,smartPtrType:this,smartPtr:n}):Ye(m.registeredClass.instancePrototype,{ptrType:m,ptr:M})}var Br=()=>{Object.assign(Ze.prototype,{getPointee(n){return this.rawGetPointee&&(n=this.rawGetPointee(n)),n},destructor(n){this.rawDestructor?.(n)},readValueFromPointer:ve,fromWireType:zr})};function Ze(n,t,i,l,d,f,g,m,M,N,_){this.name=n,this.registeredClass=t,this.isReference=i,this.isConst=l,this.isSmartPointer=d,this.pointeeType=f,this.sharingPolicy=g,this.rawGetPointee=m,this.rawConstructor=M,this.rawShare=N,this.rawDestructor=_,!d&&t.baseClass===void 0?l?(this.toWireType=Ir,this.destructorFunction=null):(this.toWireType=Jr,this.destructorFunction=null):this.toWireType=Or}var Vr=(n,t,i)=>{r.hasOwnProperty(n)||de("Replacing nonexistent public symbol"),r[n].overloadTable!==void 0&&i!==void 0?r[n].overloadTable[i]=t:(r[n]=t,r[n].argCount=i)},Yr=n=>At.get(n),le=(n,t,i=!1)=>{n=re(n);function l(){var f=Yr(t);return f}var d=l();return typeof d!="function"&&K(`unknown function pointer with signature ${n}: ${t}`),d};class Zr extends Error{}var Gr=n=>{var t=Xt(n),i=re(t);return pe(t),i},Ge=(n,t)=>{var i=[],l={};function d(f){if(!l[f]&&!oe[f]){if(we[f]){we[f].forEach(d);return}i.push(f),l[f]=!0}}throw t.forEach(d),new Zr(`${n}: `+i.map(Gr).join([", "]))},jr=(n,t,i,l,d,f,g,m,M,N,_,Y,D)=>{_=re(_),f=le(d,f),m&&=le(g,m),N&&=le(M,N),D=le(Y,D);var Z=Rr(_);qr(Z,function(){Ge(`Cannot construct ${_} due to unbound types`,[l])}),ae([n,t,i],l?[l]:[],ee=>{ee=ee[0];var se,te;l?(se=ee.registeredClass,te=se.instancePrototype):te=Ve.prototype;var W=Ht(_,function(...gt){if(Object.getPrototypeOf(this)!==ye)throw new Se(`Use 'new' to construct ${_}`);if(ce.constructor_body===void 0)throw new Se(`${_} has no accessible constructor`);var er=ce.constructor_body[gt.length];if(er===void 0)throw new Se(`Tried to invoke ctor of ${_} with invalid number of parameters (${gt.length}) - expected (${Object.keys(ce.constructor_body).toString()}) parameters instead!`);return er.apply(this,gt)}),ye=Object.create(te,{constructor:{value:W}});W.prototype=ye;var ce=new Qr(_,W,ye,D,se,f,m,N);ce.baseClass&&(ce.baseClass.__derivedClasses??=[],ce.baseClass.__derivedClasses.push(ce));var wt=new Ze(_,ce,!0,!1,!1),ge=new Ze(_+"*",ce,!1,!1,!1),We=new Ze(_+" const*",ce,!1,!0,!1);return qt[n]={pointerType:ge,constPointerType:We},Vr(Z,W),[wt,ge,We]})};function Wr(n){for(var t=1;t{for(var i=[],l=0;l>2]);return i},Pt=n=>{n=n.trim();let t=n.indexOf("(");return t===-1?n:n.slice(0,t)},Ar=(n,t,i,l,d,f,g,m,M)=>{var N=ft(i,l);t=re(t),t=Pt(t),f=le(d,f,m),ae([],[n],_=>{_=_[0];var Y=`${_.name}.${t}`;function D(){Ge(`Cannot call ${Y} due to unbound types`,N)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]);var Z=_.registeredClass.constructor;return Z[t]===void 0?(D.argCount=i-1,Z[t]=D):(ct(Z,t,Y),Z[t].overloadTable[i-1]=D),ae([],N,ee=>{var se=[ee[0],null].concat(ee.slice(1)),te=dt(Y,se,null,f,g);if(Z[t].overloadTable===void 0?(te.argCount=i-1,Z[t]=te):Z[t].overloadTable[i-1]=te,_.registeredClass.__derivedClasses)for(let W of _.registeredClass.__derivedClasses)W.constructor.hasOwnProperty(t)||(W.constructor[t]=te);return[]}),[]})},en=(n,t,i,l,d,f)=>{var g=ft(t,i);d=le(l,d),ae([],[n],m=>{m=m[0];var M=`constructor ${m.name}`;if(m.registeredClass.constructor_body===void 0&&(m.registeredClass.constructor_body=[]),m.registeredClass.constructor_body[t-1]!==void 0)throw new Se(`Cannot register multiple constructors with identical number of parameters (${t-1}) for class '${m.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return m.registeredClass.constructor_body[t-1]=()=>{Ge(`Cannot construct ${m.name} due to unbound types`,g)},ae([],g,N=>(N.splice(1,0,null),m.registeredClass.constructor_body[t-1]=dt(M,N,null,d,f),[])),[]})},tn=(n,t,i,l,d,f,g,m,M,N)=>{var _=ft(i,l);t=re(t),t=Pt(t),f=le(d,f,M),ae([],[n],Y=>{Y=Y[0];var D=`${Y.name}.${t}`;t.startsWith("@@")&&(t=Symbol[t.substring(2)]),m&&Y.registeredClass.pureVirtualFunctions.push(t);function Z(){Ge(`Cannot call ${D} due to unbound types`,_)}var ee=Y.registeredClass.instancePrototype,se=ee[t];return se===void 0||se.overloadTable===void 0&&se.className!==Y.name&&se.argCount===i-2?(Z.argCount=i-2,Z.className=Y.name,ee[t]=Z):(ct(ee,t,D),ee[t].overloadTable[i-2]=Z),ae([],_,te=>{var W=dt(D,te,Y,f,g);return ee[t].overloadTable===void 0?(W.argCount=i-2,ee[t]=W):ee[t].overloadTable[i-2]=W,[]}),[]})},Rt=[],ke=[0,1,,1,null,1,!0,1,!1,1],Qt=[],rn=n=>{if(n>9&&--ke[n+1]===0){var t=ke[n];ke[n]=void 0;var i=Qt[n];i&&(Qt[n]=void 0,i(t)),Rt.push(n)}},pt={toValue:n=>(n||K(`Cannot use deleted val. handle = ${n}`),ke[n]),toHandle:n=>{switch(n){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:{let t=Rt.pop()||ke.length;return ke[t]=n,ke[t+1]=1,t}}}},nn={name:"emscripten::val",fromWireType:n=>{var t=pt.toValue(n);return rn(n),t},toWireType:(n,t)=>pt.toHandle(t),readValueFromPointer:ve,destructorFunction:null},an=n=>fe(n,nn),It,Ot,sn=(n,t)=>{switch(t){case 4:return function(i){return this.fromWireType(It[i>>2])};case 8:return function(i){return this.fromWireType(Ot[i>>3])};default:throw new TypeError(`invalid float width (${t}): ${n}`)}},on=(n,t,i)=>{t=re(t),fe(n,{name:t,fromWireType:l=>l,toWireType:(l,d)=>d,readValueFromPointer:sn(t,i),destructorFunction:null})},cn=(n,t,i,l,d)=>{t=re(t);let f=l===0,g=M=>M;if(f){var m=32-8*i;g=M=>M<>>m,d=g(d)}fe(n,{name:t,fromWireType:g,toWireType:(M,N)=>N,readValueFromPointer:Nt(t,i,l!==0),destructorFunction:null})},ln=(n,t,i)=>{var l=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array],d=l[t];function f(g){var m=J[g>>2],M=J[g+4>>2];return new d(Q.buffer,M,m)}i=re(i),fe(n,{name:i,fromWireType:f,readValueFromPointer:f},{ignoreDuplicateRegistrations:!0})},un=(n,t,i,l)=>{if(!(l>0))return 0;for(var d=i,f=i+l-1,g=0;g=f)break;t[i++]=m}else if(m<=2047){if(i+1>=f)break;t[i++]=192|m>>6,t[i++]=128|m&63}else if(m<=65535){if(i+2>=f)break;t[i++]=224|m>>12,t[i++]=128|m>>6&63,t[i++]=128|m&63}else{if(i+3>=f)break;t[i++]=240|m>>18,t[i++]=128|m>>12&63,t[i++]=128|m>>6&63,t[i++]=128|m&63,g++}}return t[i]=0,i-d},Jt=(n,t,i)=>un(n,T,t,i),Kt=n=>{for(var t=0,i=0;i=55296&&l<=57343?(t+=4,++i):t+=3}return t},dn=(n,t)=>{t=re(t),fe(n,{name:t,fromWireType(i){var l=J[i>>2],d=i+4,f;return f=P(d,l,!0),pe(i),f},toWireType(i,l){l instanceof ArrayBuffer&&(l=new Uint8Array(l));var d,f=typeof l=="string";f||ArrayBuffer.isView(l)&&l.BYTES_PER_ELEMENT==1||K("Cannot pass non-string to std::string"),f?d=Kt(l):d=l.length;var g=ht(4+d+1),m=g+4;return J[g>>2]=d,f?Jt(l,m,d+1):T.set(l,m),i!==null&&i.push(pe,g),g},readValueFromPointer:ve,destructorFunction(i){pe(i)}})},Dt=globalThis.TextDecoder?new TextDecoder("utf-16le"):void 0,fn=(n,t,i)=>{var l=n>>1,d=b(Te,l,t/2,i);if(d-l>16&&Dt)return Dt.decode(Te.subarray(l,d));for(var f="",g=l;g{if(i<2)return 0;i-=2;for(var l=t,d=i>1]=g,t+=2}return ze[t>>1]=0,t-l},hn=n=>n.length*2,wn=(n,t,i)=>{for(var l="",d=n>>2,f=0;!(f>=t/4);f++){var g=J[d+f];if(!g&&!i)break;l+=String.fromCodePoint(g)}return l},gn=(n,t,i=2147483647)=>{if(i<4)return 0;for(var l=t,d=l+i-4,f=0;f65535&&f++,Be[t>>2]=g,t+=4,t+4>d)break}return Be[t>>2]=0,t-l},mn=n=>{for(var t=0,i=0;i65535&&i++,t+=4}return t},vn=(n,t,i)=>{i=re(i);var l,d,f;t===2?(l=fn,d=pn,f=hn):(l=wn,d=gn,f=mn),fe(n,{name:i,fromWireType:g=>{var m=J[g>>2],M=l(g+4,m*t,!0);return pe(g),M},toWireType:(g,m)=>{typeof m!="string"&&K(`Cannot pass non-string to C++ string type ${i}`);var M=f(m),N=ht(4+M+t);return J[N>>2]=M/t,d(m,N+4,M+t),g!==null&&g.push(pe,N),N},readValueFromPointer:ve,destructorFunction(g){pe(g)}})},yn=(n,t,i,l,d,f)=>{be[n]={name:re(t),rawConstructor:le(i,l),rawDestructor:le(d,f),fields:[]}},bn=(n,t,i,l,d,f,g,m,M,N)=>{be[n].fields.push({fieldName:re(t),getterReturnType:i,getter:le(l,d),getterContext:f,setterArgumentType:g,setter:le(m,M),setterContext:N})},kn=(n,t)=>{t=re(t),fe(n,{isVoid:!0,name:t,fromWireType:()=>{},toWireType:(i,l)=>{}})},En=()=>{},Le={},Cn=n=>{if(n instanceof F||n=="unwind")return v;a(1,n)},$n=n=>{v=n,a(n,new F(n))},Un=n=>{if(!h)try{return n()}catch(t){Cn(t)}},xn=()=>performance.now(),Mn=(n,t)=>{if(Le[n]&&(clearTimeout(Le[n].id),delete Le[n]),!t)return 0;var i=setTimeout(()=>{delete Le[n],Un(()=>zt(n,xn()))},t);return Le[n]={id:i,timeout_ms:t},0},Sn=()=>2147483648,Tn=(n,t)=>Math.ceil(n/t)*t,Nn=n=>{var t=je.buffer.byteLength,i=(n-t+65535)/65536|0;try{return je.grow(i),k(),1}catch{}},Ln=n=>{var t=T.length;n>>>=0;var i=Sn();if(n>i)return!1;for(var l=1;l<=4;l*=2){var d=t*(1+.2/l);d=Math.min(d,n+100663296);var f=Math.min(i,Tn(Math.max(n,d),65536)),g=Nn(f);if(g)return!0}return!1},_n=n=>52;function Hn(n,t,i,l){return 70}var qn=[null,[],[]],Fn=(n,t)=>{var i=qn[n];!t||t===10?((n===1?s:c)(S(i)),i.length=0):i.push(t)},Pn=(n,t,i,l)=>{for(var d=0,f=0;f>2],m=J[t+4>>2];t+=8;for(var M=0;M>2]=d,0};Hr(),Br(),r.wasmBinary&&(u=r.wasmBinary),r.UTF8ToString=P,r.stringToUTF8=Jt,r.lengthBytesUTF8=Kt;var Xt,ht,pe,zt,Bt,Vt,Yt,Zt,Gt,jt,Wt,je,At;function Rn(n){Xt=n.B,ht=r._malloc=n.C,pe=r._free=n.D,zt=n.F,Bt=n.G,Vt=n.H,Yt=n.I,Zt=n.J,Gt=n.K,jt=n.L,je=n.z,At=n.E,Wt=n.M}var Qn={t:xe,x:Xe,f:st,i:Tr,l:Nr,o:jr,b:Ar,n:en,d:tn,y:an,h:on,c:cn,a:ln,k:dn,g:vn,j:yn,e:bn,m:kn,w:En,p:Mn,u:Ln,s:_n,q:Hn,r:Pn,v:$n};async function In(){!h&&E()}var _e;return _e=await x(),await In(),r}var Ea=ka,Ca=new Int8Array([-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,90,63,64,65,66,-1,67,68,69,70,71,-1,72,73,52,53,54,55,56,57,58,59,60,61,74,75,76,77,78,79,80,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,81,-1,82,83,84,85,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,86,87,88,89,-1]);function $a(e){let r=new Uint8Array(170930),a=0,o=0,s=0,c=-1;for(let u=0,h=e.length;u127)continue;let p=Ca[v];if(!(p<0))if(c<0)c=p;else{c+=p*91,o|=c<88?13:14;do r[a++]=o,o>>>=8,s-=8;while(s>7);c=-1}}return c>=0&&(r[a++]=(o|c<""})}function Ma(){Ct=void 0}var Sa=class{_module;constructor(e){this._module=e}malloc(e){let r=this._module._malloc(e);return{ptr:r,size:e,dispose:()=>this.free({ptr:r,size:e,dispose:()=>{}})}}free(e){this._module._free(e.ptr)}dataToHeap(e){let r=this.malloc(e.byteLength);return this._module.HEAPU8.set(e,r.ptr),r}heapView(e){return this._module.HEAPU8.subarray(e.ptr,e.ptr+e.size)}heapToUint8Array(e){return new Uint8Array([...this.heapView(e)])}lengthBytes(e){return this._module.lengthBytesUTF8(e)}stringToHeap(e){let r=this.lengthBytes(e)+1,a=this._module._malloc(r);return this._module.stringToUTF8(e,a,r),{ptr:a,size:r,dispose:()=>this.free({ptr:a,size:r,dispose:()=>{}})}}heapToString(e){return this._module.UTF8ToString(e.ptr,e.size)}hasFilesystem(){let e=this._module;return e.FS_createPath!==void 0&&e.FS_createDataFile!==void 0&&e.FS_preloadFile!==void 0&&e.FS_unlink!==void 0}createPath(e,r=!0,a=!0){return this._module.FS_createPath("/",e,r,a)}createDataFile(e,r,a=!0,o=!0,s=!0){return this._module.FS_createDataFile("/",e,r,a,o,s)}preloadFile(e,r,a=!0,o=!0,s=!1,c=!0,u=!1){return this._module.FS_preloadFile("/",e,r,a,o,s,c,u)}unlink(e){return this._module.FS_unlink(e)}},He,Ta=4294967295;function qe(e,r){if(!Number.isInteger(e)||e<0||e>Ta)throw new Error(`${r} length ${e} is outside the WASM32-safe range`)}function vt(e){if(e.length===0)return new Uint8Array(0);if(e.length===1)return e[0];let r=0;for(let s of e)r+=s.length;let a=new Uint8Array(r),o=0;for(let s of e)a.set(s,o),o+=s.length;return a}var Na=class kr{_mainModule;_zstdClass;_zstd;_compressionLevel;_decompressFrameCompleted=!1;_decompressRemaining=0;_decompressSawInput=!1;constructor(r){this._mainModule=new Sa(r),this._zstdClass=r.zstd,this._zstd=new this._zstdClass,this._compressionLevel=this._zstdClass.defaultCLevel()}static load(){return He||(He=xa().then(r=>new kr(r))),He}static unload(){Ma(),He?.then(r=>{r?._zstd?.delete()}),He=void 0}copyHeap(r){return this._mainModule.heapView(r).slice()}mallocChecked(r,a){qe(r,a);let o=this._mainModule.malloc(r);if(!o.ptr)throw this._mainModule.free(o),new Error(`Failed to allocate ${r} bytes for ${a}`);return o}throwStreamError(r,a){throw new Error(`${r} failed: ${a.errorName||"unknown error"}`)}ensureStreamOk(r,a){a.error&&this.throwStreamError(r,a)}version(){return this._zstdClass.version()}reset(){let r=this._zstd.reset();this.ensureStreamOk("reset",r),this._decompressFrameCompleted=!1,this._decompressRemaining=0,this._decompressSawInput=!1}resetCompression(r){r!==void 0&&(this._compressionLevel=r);let a=this._zstd.resetCompression(this._compressionLevel);this.ensureStreamOk("resetCompression",a)}resetDecompression(){let r=this._zstd.resetDecompression();this.ensureStreamOk("resetDecompression",r),this._decompressFrameCompleted=!1,this._decompressRemaining=0,this._decompressSawInput=!1}setCompressionLevel(r){let a=this._zstd.setCompressionLevel(r);this.ensureStreamOk("setCompressionLevel",a),this._compressionLevel=r}compress(r,a=this.defaultCLevel()){qe(r.length,"compress input");let o=this._mainModule.dataToHeap(r);try{if(!o.ptr&&r.length>0)throw new Error("Failed to allocate compress input buffer");let s=this._zstdClass.compressBound(r.length),c=this.mallocChecked(s,"compress output");try{if(c.size=this._zstdClass.compress(c.ptr,s,o.ptr,o.size,a),this._zstdClass.isError(c.size))throw new Error(`compress failed: ${this._zstdClass.getErrorName(c.size)}`);return this.copyHeap(c)}finally{this._mainModule.free(c)}}finally{this._mainModule.free(o)}}compressChunk(r){if(qe(r.length,"compressChunk input"),r.length===0)return new Uint8Array(0);let a=this._mainModule.dataToHeap(r);try{if(!a.ptr)throw new Error("Failed to allocate compressChunk input buffer");let o=this._zstdClass.CStreamOutSize(),s=[],c=0;for(;c0&&(u.size=h.produced,s.push(this.copyHeap(u)))}finally{this._mainModule.free(u)}}return vt(s)}finally{this._mainModule.free(a)}}compressEnd(){let r=this._zstdClass.CStreamOutSize(),a=[],o=1;for(;o!==0;){let s=this.mallocChecked(r,"compressEnd output");try{let c=this._zstd.compressEnd(s.ptr,r);if(this.ensureStreamOk("compressEnd",c),c.produced===0&&c.remaining!==0)throw new Error("compressEnd failed: no progress while finishing stream");o=c.remaining,c.produced>0&&(s.size=c.produced,a.push(this.copyHeap(s)))}finally{this._mainModule.free(s)}}return vt(a)}frameContentSize(r){return this._zstdClass.getFrameContentSize(r.ptr,r.size)}decompress(r){qe(r.length,"decompress input");let a=this._mainModule.dataToHeap(r);try{if(!a.ptr&&r.length>0)throw new Error("Failed to allocate decompress input buffer");let o=this.frameContentSize(a);if(o.error)throw new Error(`Failed to get frame content size: ${o.errorName}`);let s=o.known;if(s){let c=this._zstdClass.findFrameCompressedSize(a.ptr,a.size);if(this._zstdClass.isError(c))throw new Error(`Failed to find frame compressed size: ${this._zstdClass.getErrorName(c)}`);c0?a.ptr+c:0,y=this._zstd.decompressChunk(h.ptr,o,p,v);if(this.ensureStreamOk("decompressChunk",y),y.consumed===0&&y.produced===0){if(v===0){y.remaining>0&&(this._decompressRemaining=y.remaining);break}throw new Error("decompressChunk failed: no progress while consuming input")}c+=y.consumed,u=y.produced===o&&y.remaining!==0,y.produced>0&&(h.size=y.produced,s.push(this.copyHeap(h))),y.remaining===0?(this._decompressFrameCompleted=!0,this._decompressRemaining=0):this._decompressRemaining=y.remaining}finally{this._mainModule.free(h)}}return vt(s)}finally{this._mainModule.free(a)}}decompressEnd(){if(!this._decompressSawInput)throw new Error("decompressEnd failed: empty compressed input is not a completed frame");if(!this._decompressFrameCompleted||this._decompressRemaining!==0)throw new Error("decompressEnd failed: truncated Zstandard input")}defaultCLevel(){return this._zstdClass.defaultCLevel()}minCLevel(){return this._zstdClass.minCLevel()}maxCLevel(){return this._zstdClass.maxCLevel()}};let yt=null;function La(){return yt||(yt=Na.load()),yt}function _a(e){return e.length>=4&&e[0]===40&&e[1]===181&&e[2]===47&&e[3]===253}function $t(e){const r="SQLite format 3\0";if(e.length/g,">").replace(/"/g,""").replace(/'/g,"'")}function or(e,r,a){const o=e.tagsList[0]??"",s=e.tagsList.length>1?` +${e.tagsList.length-1}`:"",c=Ee(e.tagsList.join(", ")),u=o?`${Ee(o)}${s}`:"",h=e.more.size>0?'':"";return`
`+(a?Er(e,r):"")+"
"}function Er(e,r){const a=[...e.more.entries()].map(([o,s])=>{const c=r.get(o);return`
${c?Ee(c.name):`Поле #${o}`}
${Ee(s)}
`}).join("");return a?`
${a}
`:""}function qa(e,r){e.innerHTML=`