gitextract_gx96pb7w/ ├── .buildkite/ │ ├── linux/ │ │ ├── docker/ │ │ │ ├── Dockerfile │ │ │ ├── build.sh │ │ │ ├── buildkite.cfg │ │ │ ├── common.inc │ │ │ ├── environment │ │ │ └── run.sh │ │ ├── entrypoint │ │ └── release-entrypoint │ ├── mac/ │ │ └── entrypoint │ └── windows/ │ └── entrypoint.bat ├── .cargo/ │ └── config.toml ├── .config/ │ └── nextest.toml ├── .cursor/ │ └── rules/ │ ├── building.md │ └── i18n.md ├── .deny.toml ├── .dockerignore ├── .dprint.json ├── .eslintrc.cjs ├── .gitattributes ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug-report.md │ │ └── config.yml │ ├── actions/ │ │ └── setup-anki/ │ │ └── action.yml │ └── workflows/ │ └── ci.yml ├── .gitignore ├── .gitmodules ├── .idea.dist/ │ └── repo.iml ├── .mypy.ini ├── .prettierrc ├── .python-version ├── .ruff.toml ├── .rustfmt-empty.toml ├── .rustfmt.toml ├── .version ├── .vscode.dist/ │ ├── extensions.json │ ├── launch.json │ ├── settings.json │ └── tasks.json ├── .yarnrc.yml ├── CLAUDE.md ├── CONTRIBUTORS ├── Cargo.toml ├── LICENSE ├── README.md ├── SECURITY.md ├── build/ │ ├── configure/ │ │ ├── Cargo.toml │ │ └── src/ │ │ ├── aqt.rs │ │ ├── launcher.rs │ │ ├── main.rs │ │ ├── platform.rs │ │ ├── pylib.rs │ │ ├── python.rs │ │ ├── rust.rs │ │ └── web.rs │ ├── ninja_gen/ │ │ ├── Cargo.toml │ │ └── src/ │ │ ├── action.rs │ │ ├── archives.rs │ │ ├── bin/ │ │ │ ├── update_node.rs │ │ │ ├── update_protoc.rs │ │ │ └── update_uv.rs │ │ ├── build.rs │ │ ├── cargo.rs │ │ ├── command.rs │ │ ├── configure.rs │ │ ├── copy.rs │ │ ├── git.rs │ │ ├── hash.rs │ │ ├── input.rs │ │ ├── lib.rs │ │ ├── node.rs │ │ ├── protobuf.rs │ │ ├── python.rs │ │ ├── render.rs │ │ ├── rsync.rs │ │ └── sass.rs │ └── runner/ │ ├── Cargo.toml │ ├── build.rs │ └── src/ │ ├── archive.rs │ ├── build.rs │ ├── main.rs │ ├── paths.rs │ ├── pyenv.rs │ ├── rsync.rs │ ├── run.rs │ └── yarn.rs ├── cargo/ │ ├── README.md │ ├── format/ │ │ └── rust-toolchain.toml │ └── licenses.json ├── check ├── docs/ │ ├── architecture.md │ ├── build.md │ ├── contributing.md │ ├── development.md │ ├── docker/ │ │ ├── Dockerfile │ │ └── README.md │ ├── editing.md │ ├── language_bridge.md │ ├── linux.md │ ├── mac.md │ ├── ninja.md │ ├── protobuf.md │ ├── syncserver/ │ │ ├── Dockerfile │ │ ├── Dockerfile.distroless │ │ ├── README.md │ │ └── entrypoint.sh │ └── windows.md ├── ftl/ │ ├── .gitignore │ ├── Cargo.toml │ ├── README.md │ ├── copy-core-string.sh │ ├── core/ │ │ ├── actions.ftl │ │ ├── adding.ftl │ │ ├── browsing.ftl │ │ ├── card-stats.ftl │ │ ├── card-template-rendering.ftl │ │ ├── card-templates.ftl │ │ ├── change-notetype.ftl │ │ ├── custom-study.ftl │ │ ├── database-check.ftl │ │ ├── deck-config.ftl │ │ ├── decks.ftl │ │ ├── editing.ftl │ │ ├── empty-cards.ftl │ │ ├── errors.ftl │ │ ├── exporting.ftl │ │ ├── fields.ftl │ │ ├── findreplace.ftl │ │ ├── help.ftl │ │ ├── importing.ftl │ │ ├── keyboard.ftl │ │ ├── launcher.ftl │ │ ├── media-check.ftl │ │ ├── media.ftl │ │ ├── network.ftl │ │ ├── notetypes.ftl │ │ ├── preferences.ftl │ │ ├── profiles.ftl │ │ ├── scheduling.ftl │ │ ├── search.ftl │ │ ├── statistics.ftl │ │ ├── studying.ftl │ │ ├── sync.ftl │ │ └── undo.ftl │ ├── ftl │ ├── move-from-ankimobile │ ├── qt/ │ │ ├── about.ftl │ │ ├── addons.ftl │ │ ├── errors.ftl │ │ ├── preferences.ftl │ │ ├── profiles.ftl │ │ ├── qt-accel.ftl │ │ └── qt-misc.ftl │ ├── remove-unused.sh │ ├── src/ │ │ ├── garbage_collection.rs │ │ ├── main.rs │ │ ├── serialize.rs │ │ ├── string/ │ │ │ ├── copy.rs │ │ │ ├── mod.rs │ │ │ └── transform.rs │ │ └── sync.rs │ ├── update-ankidroid-usage.sh │ ├── update-ankimobile-usage.sh │ └── usage/ │ └── no-deprecate.json ├── justfile ├── ninja ├── package.json ├── pkgkey.asc ├── proto/ │ ├── .clang-format │ ├── .top_level │ ├── README.md │ └── anki/ │ ├── ankidroid.proto │ ├── ankihub.proto │ ├── ankiweb.proto │ ├── backend.proto │ ├── card_rendering.proto │ ├── cards.proto │ ├── collection.proto │ ├── config.proto │ ├── deck_config.proto │ ├── decks.proto │ ├── frontend.proto │ ├── generic.proto │ ├── i18n.proto │ ├── image_occlusion.proto │ ├── import_export.proto │ ├── links.proto │ ├── media.proto │ ├── notes.proto │ ├── notetypes.proto │ ├── scheduler.proto │ ├── search.proto │ ├── stats.proto │ ├── sync.proto │ └── tags.proto ├── pylib/ │ ├── .gitignore │ ├── README.md │ ├── anki/ │ │ ├── _backend.py │ │ ├── _legacy.py │ │ ├── _rsbridge.pyi │ │ ├── _vendor/ │ │ │ └── stringcase.py │ │ ├── browser.py │ │ ├── cards.py │ │ ├── collection.py │ │ ├── config.py │ │ ├── consts.py │ │ ├── db.py │ │ ├── dbproxy.py │ │ ├── decks.py │ │ ├── errors.py │ │ ├── exporting.py │ │ ├── find.py │ │ ├── foreign_data/ │ │ │ ├── __init__.py │ │ │ └── mnemosyne.py │ │ ├── hooks.py │ │ ├── httpclient.py │ │ ├── importing/ │ │ │ ├── __init__.py │ │ │ ├── anki2.py │ │ │ ├── apkg.py │ │ │ ├── base.py │ │ │ ├── csvfile.py │ │ │ ├── mnemo.py │ │ │ └── noteimp.py │ │ ├── lang.py │ │ ├── latex.py │ │ ├── media.py │ │ ├── models.py │ │ ├── notes.py │ │ ├── py.typed │ │ ├── rsbackend.py │ │ ├── scheduler/ │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ ├── dummy.py │ │ │ ├── legacy.py │ │ │ └── v3.py │ │ ├── sound.py │ │ ├── stats.py │ │ ├── statsbg.py │ │ ├── stdmodels.py │ │ ├── storage.py │ │ ├── sync.py │ │ ├── syncserver.py │ │ ├── tags.py │ │ ├── template.py │ │ ├── types.py │ │ └── utils.py │ ├── hatch_build.py │ ├── pyproject.toml │ ├── rsbridge/ │ │ ├── .gitignore │ │ ├── Cargo.toml │ │ ├── build.rs │ │ └── lib.rs │ ├── tests/ │ │ ├── __init__.py │ │ ├── shared.py │ │ ├── support/ │ │ │ ├── anki12-broken.anki │ │ │ ├── anki12-due.anki │ │ │ ├── anki12.anki │ │ │ ├── anki2-alpha.anki2 │ │ │ ├── diffmodels1.anki │ │ │ ├── diffmodels2-1.apkg │ │ │ ├── diffmodels2-2.apkg │ │ │ ├── diffmodels2.anki │ │ │ ├── diffmodeltemplates-1.apkg │ │ │ ├── diffmodeltemplates-2.apkg │ │ │ ├── invalid-ords.anki │ │ │ ├── media.apkg │ │ │ ├── supermemo1.xml │ │ │ ├── suspended12.anki │ │ │ ├── text-2fields.txt │ │ │ ├── text-tags.txt │ │ │ ├── text-update.txt │ │ │ ├── update1.apkg │ │ │ └── update2.apkg │ │ ├── test_cards.py │ │ ├── test_collection.py │ │ ├── test_decks.py │ │ ├── test_exporting.py │ │ ├── test_find.py │ │ ├── test_flags.py │ │ ├── test_importing.py │ │ ├── test_latex.py │ │ ├── test_media.py │ │ ├── test_models.py │ │ ├── test_schedv3.py │ │ ├── test_stats.py │ │ ├── test_template.py │ │ └── test_utils.py │ └── tools/ │ ├── genbuildinfo.py │ ├── genhooks.py │ └── hookslib.py ├── pyproject.toml ├── python/ │ ├── mkempty.py │ ├── sphinx/ │ │ ├── build.py │ │ ├── conf.py │ │ └── index.rst │ └── version.py ├── qt/ │ ├── README.md │ ├── aqt/ │ │ ├── __init__.py │ │ ├── _macos_helper.py │ │ ├── about.py │ │ ├── addcards.py │ │ ├── addons.py │ │ ├── ankihub.py │ │ ├── browser/ │ │ │ ├── __init__.py │ │ │ ├── browser.py │ │ │ ├── card_info.py │ │ │ ├── find_and_replace.py │ │ │ ├── find_duplicates.py │ │ │ ├── layout.py │ │ │ ├── previewer.py │ │ │ ├── sidebar/ │ │ │ │ ├── __init__.py │ │ │ │ ├── item.py │ │ │ │ ├── model.py │ │ │ │ ├── searchbar.py │ │ │ │ ├── toolbar.py │ │ │ │ └── tree.py │ │ │ └── table/ │ │ │ ├── __init__.py │ │ │ ├── model.py │ │ │ ├── state.py │ │ │ └── table.py │ │ ├── changenotetype.py │ │ ├── clayout.py │ │ ├── colors.py │ │ ├── customstudy.py │ │ ├── data/ │ │ │ └── web/ │ │ │ ├── css/ │ │ │ │ ├── addonconf.scss │ │ │ │ ├── deckbrowser.scss │ │ │ │ ├── overview.scss │ │ │ │ ├── reviewer-bottom.scss │ │ │ │ ├── toolbar-bottom.scss │ │ │ │ ├── toolbar.scss │ │ │ │ └── webview.scss │ │ │ └── js/ │ │ │ ├── deckbrowser.ts │ │ │ ├── pycmd.d.ts │ │ │ ├── reviewer-bottom.ts │ │ │ ├── toolbar.ts │ │ │ ├── tsconfig.json │ │ │ ├── vendor/ │ │ │ │ └── plot.js │ │ │ └── webview.ts │ │ ├── dbcheck.py │ │ ├── debug_console.py │ │ ├── deckbrowser.py │ │ ├── deckchooser.py │ │ ├── deckconf.py │ │ ├── deckdescription.py │ │ ├── deckoptions.py │ │ ├── editcurrent.py │ │ ├── editor.py │ │ ├── emptycards.py │ │ ├── errors.py │ │ ├── exporting.py │ │ ├── fields.py │ │ ├── filtered_deck.py │ │ ├── flags.py │ │ ├── forms/ │ │ │ ├── __init__.py │ │ │ ├── about.py │ │ │ ├── about.ui │ │ │ ├── addcards.py │ │ │ ├── addcards.ui │ │ │ ├── addfield.py │ │ │ ├── addfield.ui │ │ │ ├── addmodel.py │ │ │ ├── addmodel.ui │ │ │ ├── addonconf.py │ │ │ ├── addonconf.ui │ │ │ ├── addons.py │ │ │ ├── addons.ui │ │ │ ├── browser.py │ │ │ ├── browser.ui │ │ │ ├── browserdisp.py │ │ │ ├── browserdisp.ui │ │ │ ├── browseropts.py │ │ │ ├── browseropts.ui │ │ │ ├── changemap.py │ │ │ ├── changemap.ui │ │ │ ├── changemodel.py │ │ │ ├── changemodel.ui │ │ │ ├── clayout_top.py │ │ │ ├── clayout_top.ui │ │ │ ├── customstudy.py │ │ │ ├── customstudy.ui │ │ │ ├── dconf.py │ │ │ ├── dconf.ui │ │ │ ├── debug.py │ │ │ ├── debug.ui │ │ │ ├── editcurrent.py │ │ │ ├── editcurrent.ui │ │ │ ├── edithtml.py │ │ │ ├── edithtml.ui │ │ │ ├── emptycards.py │ │ │ ├── emptycards.ui │ │ │ ├── exporting.py │ │ │ ├── exporting.ui │ │ │ ├── fields.py │ │ │ ├── fields.ui │ │ │ ├── filtered_deck.py │ │ │ ├── filtered_deck.ui │ │ │ ├── finddupes.py │ │ │ ├── finddupes.ui │ │ │ ├── findreplace.py │ │ │ ├── findreplace.ui │ │ │ ├── forget.py │ │ │ ├── forget.ui │ │ │ ├── getaddons.py │ │ │ ├── getaddons.ui │ │ │ ├── importing.py │ │ │ ├── importing.ui │ │ │ ├── main.py │ │ │ ├── main.ui │ │ │ ├── modelopts.py │ │ │ ├── modelopts.ui │ │ │ ├── models.py │ │ │ ├── models.ui │ │ │ ├── preferences.py │ │ │ ├── preferences.ui │ │ │ ├── preview.py │ │ │ ├── preview.ui │ │ │ ├── profiles.py │ │ │ ├── profiles.ui │ │ │ ├── progress.py │ │ │ ├── progress.ui │ │ │ ├── reposition.py │ │ │ ├── reposition.ui │ │ │ ├── setgroup.py │ │ │ ├── setgroup.ui │ │ │ ├── setlang.py │ │ │ ├── setlang.ui │ │ │ ├── stats.py │ │ │ ├── stats.ui │ │ │ ├── studydeck.py │ │ │ ├── studydeck.ui │ │ │ ├── synclog.py │ │ │ ├── synclog.ui │ │ │ ├── taglimit.py │ │ │ ├── taglimit.ui │ │ │ ├── template.py │ │ │ ├── template.ui │ │ │ ├── widgets.py │ │ │ └── widgets.ui │ │ ├── gui_hooks.py │ │ ├── import_export/ │ │ │ ├── __init__.py │ │ │ ├── exporting.py │ │ │ ├── import_dialog.py │ │ │ └── importing.py │ │ ├── importing.py │ │ ├── legacy.py │ │ ├── log.py │ │ ├── main.py │ │ ├── mediacheck.py │ │ ├── mediasrv.py │ │ ├── mediasync.py │ │ ├── modelchooser.py │ │ ├── models.py │ │ ├── mpv.py │ │ ├── notetypechooser.py │ │ ├── operations/ │ │ │ ├── __init__.py │ │ │ ├── card.py │ │ │ ├── collection.py │ │ │ ├── deck.py │ │ │ ├── note.py │ │ │ ├── notetype.py │ │ │ ├── scheduling.py │ │ │ └── tag.py │ │ ├── overview.py │ │ ├── package.py │ │ ├── preferences.py │ │ ├── profiles.py │ │ ├── progress.py │ │ ├── props.py │ │ ├── py.typed │ │ ├── qt/ │ │ │ ├── __init__.py │ │ │ └── qt6.py │ │ ├── reviewer.py │ │ ├── schema_change_tracker.py │ │ ├── sound.py │ │ ├── stats.py │ │ ├── studydeck.py │ │ ├── stylesheets.py │ │ ├── switch.py │ │ ├── sync.py │ │ ├── tagedit.py │ │ ├── taglimit.py │ │ ├── taskman.py │ │ ├── theme.py │ │ ├── toolbar.py │ │ ├── tts.py │ │ ├── undo.py │ │ ├── update.py │ │ ├── url_schemes.py │ │ ├── utils.py │ │ ├── webview.py │ │ ├── widgetgallery.py │ │ └── winpaths.py │ ├── hatch_build.py │ ├── icons/ │ │ ├── README.md │ │ └── sidebar.afdesign │ ├── launcher/ │ │ ├── Cargo.toml │ │ ├── addon/ │ │ │ ├── __init__.py │ │ │ └── manifest.json │ │ ├── build.rs │ │ ├── lin/ │ │ │ ├── README.md │ │ │ ├── anki │ │ │ ├── anki.1 │ │ │ ├── anki.desktop │ │ │ ├── anki.xml │ │ │ ├── anki.xpm │ │ │ ├── build.sh │ │ │ ├── install.sh │ │ │ └── uninstall.sh │ │ ├── mac/ │ │ │ ├── Info.plist │ │ │ ├── build.sh │ │ │ ├── dmg/ │ │ │ │ ├── build.sh │ │ │ │ ├── dmg_ds_store │ │ │ │ ├── set-dmg-settings.app/ │ │ │ │ │ └── Contents/ │ │ │ │ │ ├── Info.plist │ │ │ │ │ ├── MacOS/ │ │ │ │ │ │ └── applet │ │ │ │ │ ├── PkgInfo │ │ │ │ │ ├── Resources/ │ │ │ │ │ │ ├── Scripts/ │ │ │ │ │ │ │ └── main.scpt │ │ │ │ │ │ ├── applet.icns │ │ │ │ │ │ ├── applet.rsrc │ │ │ │ │ │ └── description.rtfd/ │ │ │ │ │ │ └── TXT.rtf │ │ │ │ │ └── _CodeSignature/ │ │ │ │ │ └── CodeResources │ │ │ │ └── set-dmg-settings.scpt │ │ │ ├── entitlements.python.xml │ │ │ ├── icon/ │ │ │ │ ├── Assets.car │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ └── Contents.json │ │ │ │ └── build.sh │ │ │ ├── notarize.sh │ │ │ └── stub.c │ │ ├── pyproject.toml │ │ ├── src/ │ │ │ ├── bin/ │ │ │ │ ├── anki_console.rs │ │ │ │ └── build_win.rs │ │ │ ├── main.rs │ │ │ └── platform/ │ │ │ ├── mac.rs │ │ │ ├── mod.rs │ │ │ ├── unix.rs │ │ │ └── windows.rs │ │ ├── versions.py │ │ └── win/ │ │ ├── anki-manifest.rc │ │ ├── anki.exe.manifest │ │ ├── anki.template.nsi │ │ ├── build.bat │ │ └── fileassoc.nsh │ ├── mac/ │ │ ├── README.md │ │ ├── anki_mac_helper/ │ │ │ ├── __init__.py │ │ │ └── py.typed │ │ ├── ankihelper.xcodeproj/ │ │ │ ├── project.pbxproj │ │ │ ├── project.xcworkspace/ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ ├── xcshareddata/ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ └── xcuserdata/ │ │ │ │ └── dae.xcuserdatad/ │ │ │ │ ├── UserInterfaceState.xcuserstate │ │ │ │ └── xcschemes/ │ │ │ │ └── xcschememanagement.plist │ │ │ └── xcuserdata/ │ │ │ └── dae.xcuserdatad/ │ │ │ └── xcschemes/ │ │ │ ├── ankihelper.xcscheme │ │ │ └── xcschememanagement.plist │ │ ├── appnap.swift │ │ ├── build.sh │ │ ├── helper_build.py │ │ ├── pyproject.toml │ │ ├── record.swift │ │ ├── theme.swift │ │ └── update-launcher-env │ ├── pyproject.toml │ ├── release/ │ │ ├── .gitignore │ │ └── build.sh │ ├── runanki.py │ ├── tests/ │ │ ├── __init__.py │ │ ├── test_addons.py │ │ └── test_i18n.py │ └── tools/ │ ├── build_qrc.py │ ├── build_ui.py │ ├── color_svg.py │ ├── extract_sass_vars.py │ ├── genhooks_gui.py │ └── runanki.system.in ├── rslib/ │ ├── .gitignore │ ├── Cargo.toml │ ├── README.md │ ├── bench.sh │ ├── benches/ │ │ └── benchmark.rs │ ├── build.rs │ ├── i18n/ │ │ ├── Cargo.toml │ │ ├── build.rs │ │ ├── check.rs │ │ ├── extract.rs │ │ ├── gather.rs │ │ ├── python.rs │ │ ├── src/ │ │ │ ├── generated.rs │ │ │ ├── generated_launcher.rs │ │ │ └── lib.rs │ │ ├── typescript.rs │ │ └── write_strings.rs │ ├── io/ │ │ ├── Cargo.toml │ │ └── src/ │ │ ├── error.rs │ │ └── lib.rs │ ├── linkchecker/ │ │ ├── Cargo.toml │ │ ├── src/ │ │ │ └── lib.rs │ │ └── tests/ │ │ └── links.rs │ ├── process/ │ │ ├── Cargo.toml │ │ └── src/ │ │ └── lib.rs │ ├── proto/ │ │ ├── Cargo.toml │ │ ├── build.rs │ │ ├── python.rs │ │ ├── rust.rs │ │ ├── src/ │ │ │ ├── generic_helpers.rs │ │ │ └── lib.rs │ │ └── typescript.rs │ ├── proto_gen/ │ │ ├── Cargo.toml │ │ └── src/ │ │ └── lib.rs │ ├── rust_interface.rs │ ├── src/ │ │ ├── adding.rs │ │ ├── ankidroid/ │ │ │ ├── db.rs │ │ │ ├── error.rs │ │ │ ├── mod.rs │ │ │ └── service.rs │ │ ├── ankihub/ │ │ │ ├── http_client/ │ │ │ │ └── mod.rs │ │ │ ├── login.rs │ │ │ └── mod.rs │ │ ├── backend/ │ │ │ ├── adding.rs │ │ │ ├── ankidroid.rs │ │ │ ├── ankihub.rs │ │ │ ├── ankiweb.rs │ │ │ ├── card_rendering.rs │ │ │ ├── collection.rs │ │ │ ├── config.rs │ │ │ ├── dbproxy.rs │ │ │ ├── error.rs │ │ │ ├── i18n.rs │ │ │ ├── import_export.rs │ │ │ ├── mod.rs │ │ │ ├── ops.rs │ │ │ └── sync.rs │ │ ├── browser_table.rs │ │ ├── card/ │ │ │ ├── mod.rs │ │ │ ├── service.rs │ │ │ └── undo.rs │ │ ├── card_rendering/ │ │ │ ├── mod.rs │ │ │ ├── parser.rs │ │ │ ├── service.rs │ │ │ ├── tts/ │ │ │ │ ├── mod.rs │ │ │ │ ├── other.rs │ │ │ │ └── windows.rs │ │ │ └── writer.rs │ │ ├── cloze.rs │ │ ├── collection/ │ │ │ ├── backup.rs │ │ │ ├── mod.rs │ │ │ ├── service.rs │ │ │ ├── timestamps.rs │ │ │ ├── transact.rs │ │ │ └── undo.rs │ │ ├── config/ │ │ │ ├── bool.rs │ │ │ ├── deck.rs │ │ │ ├── mod.rs │ │ │ ├── notetype.rs │ │ │ ├── number.rs │ │ │ ├── schema11.rs │ │ │ ├── string.rs │ │ │ └── undo.rs │ │ ├── dbcheck.rs │ │ ├── deckconfig/ │ │ │ ├── mod.rs │ │ │ ├── schema11.rs │ │ │ ├── service.rs │ │ │ ├── undo.rs │ │ │ └── update.rs │ │ ├── decks/ │ │ │ ├── addupdate.rs │ │ │ ├── counts.rs │ │ │ ├── current.rs │ │ │ ├── filtered.rs │ │ │ ├── limits.rs │ │ │ ├── mod.rs │ │ │ ├── name.rs │ │ │ ├── remove.rs │ │ │ ├── reparent.rs │ │ │ ├── schema11.rs │ │ │ ├── service.rs │ │ │ ├── stats.rs │ │ │ ├── tree.rs │ │ │ └── undo.rs │ │ ├── error/ │ │ │ ├── db.rs │ │ │ ├── filtered.rs │ │ │ ├── invalid_input.rs │ │ │ ├── mod.rs │ │ │ ├── network.rs │ │ │ ├── not_found.rs │ │ │ ├── search.rs │ │ │ └── windows.rs │ │ ├── findreplace.rs │ │ ├── i18n/ │ │ │ ├── mod.rs │ │ │ └── service.rs │ │ ├── image_occlusion/ │ │ │ ├── imagedata.rs │ │ │ ├── imageocclusion.rs │ │ │ ├── mod.rs │ │ │ ├── notetype.css │ │ │ ├── notetype.rs │ │ │ └── service.rs │ │ ├── import_export/ │ │ │ ├── gather.rs │ │ │ ├── insert.rs │ │ │ ├── mod.rs │ │ │ ├── package/ │ │ │ │ ├── apkg/ │ │ │ │ │ ├── export.rs │ │ │ │ │ ├── import/ │ │ │ │ │ │ ├── cards.rs │ │ │ │ │ │ ├── decks.rs │ │ │ │ │ │ ├── media.rs │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ └── notes.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ └── tests.rs │ │ │ │ ├── colpkg/ │ │ │ │ │ ├── export.rs │ │ │ │ │ ├── import.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ └── tests.rs │ │ │ │ ├── media.rs │ │ │ │ ├── meta.rs │ │ │ │ └── mod.rs │ │ │ ├── service.rs │ │ │ └── text/ │ │ │ ├── csv/ │ │ │ │ ├── export.rs │ │ │ │ ├── import.rs │ │ │ │ ├── metadata.rs │ │ │ │ └── mod.rs │ │ │ ├── import.rs │ │ │ ├── json.rs │ │ │ └── mod.rs │ │ ├── latex.rs │ │ ├── lib.rs │ │ ├── links.rs │ │ ├── log.rs │ │ ├── markdown.rs │ │ ├── media/ │ │ │ ├── check.rs │ │ │ ├── files.rs │ │ │ ├── mod.rs │ │ │ └── service.rs │ │ ├── notes/ │ │ │ ├── mod.rs │ │ │ ├── service.rs │ │ │ └── undo.rs │ │ ├── notetype/ │ │ │ ├── cardgen.rs │ │ │ ├── checks.rs │ │ │ ├── cloze_styling.css │ │ │ ├── emptycards.rs │ │ │ ├── fields.rs │ │ │ ├── header.tex │ │ │ ├── merge.rs │ │ │ ├── mod.rs │ │ │ ├── notetypechange.rs │ │ │ ├── render.rs │ │ │ ├── restore.rs │ │ │ ├── schema11.rs │ │ │ ├── schemachange.rs │ │ │ ├── service.rs │ │ │ ├── stock.rs │ │ │ ├── styling.css │ │ │ ├── templates.rs │ │ │ └── undo.rs │ │ ├── ops.rs │ │ ├── preferences.rs │ │ ├── prelude.rs │ │ ├── progress.rs │ │ ├── revlog/ │ │ │ ├── mod.rs │ │ │ └── undo.rs │ │ ├── scheduler/ │ │ │ ├── answering/ │ │ │ │ ├── current.rs │ │ │ │ ├── learning.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── preview.rs │ │ │ │ ├── relearning.rs │ │ │ │ ├── review.rs │ │ │ │ └── revlog.rs │ │ │ ├── bury_and_suspend.rs │ │ │ ├── congrats.rs │ │ │ ├── filtered/ │ │ │ │ ├── card.rs │ │ │ │ ├── custom_study.rs │ │ │ │ └── mod.rs │ │ │ ├── fsrs/ │ │ │ │ ├── error.rs │ │ │ │ ├── memory_state.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── params.rs │ │ │ │ ├── rescheduler.rs │ │ │ │ ├── retention.rs │ │ │ │ ├── simulator.rs │ │ │ │ └── try_collect.rs │ │ │ ├── mod.rs │ │ │ ├── new.rs │ │ │ ├── queue/ │ │ │ │ ├── builder/ │ │ │ │ │ ├── burying.rs │ │ │ │ │ ├── gathering.rs │ │ │ │ │ ├── intersperser.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── sized_chain.rs │ │ │ │ │ └── sorting.rs │ │ │ │ ├── entry.rs │ │ │ │ ├── learning.rs │ │ │ │ ├── main.rs │ │ │ │ ├── mod.rs │ │ │ │ └── undo.rs │ │ │ ├── reviews.rs │ │ │ ├── service/ │ │ │ │ ├── answering.rs │ │ │ │ ├── mod.rs │ │ │ │ └── states/ │ │ │ │ ├── filtered.rs │ │ │ │ ├── learning.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── new.rs │ │ │ │ ├── normal.rs │ │ │ │ ├── preview.rs │ │ │ │ ├── relearning.rs │ │ │ │ ├── rescheduling.rs │ │ │ │ └── review.rs │ │ │ ├── states/ │ │ │ │ ├── filtered.rs │ │ │ │ ├── fuzz.rs │ │ │ │ ├── interval_kind.rs │ │ │ │ ├── learning.rs │ │ │ │ ├── load_balancer.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── new.rs │ │ │ │ ├── normal.rs │ │ │ │ ├── preview_filter.rs │ │ │ │ ├── relearning.rs │ │ │ │ ├── rescheduling_filter.rs │ │ │ │ ├── review.rs │ │ │ │ └── steps.rs │ │ │ ├── timespan.rs │ │ │ ├── timing.rs │ │ │ └── upgrade.rs │ │ ├── search/ │ │ │ ├── builder.rs │ │ │ ├── card_mod_order.sql │ │ │ ├── deck_order.sql │ │ │ ├── mod.rs │ │ │ ├── note_cards_order.sql │ │ │ ├── note_decks_order.sql │ │ │ ├── note_due_order.sql │ │ │ ├── note_ease_order.sql │ │ │ ├── note_interval_order.sql │ │ │ ├── note_lapses_order.sql │ │ │ ├── note_original_position_order.sql │ │ │ ├── note_reps_order.sql │ │ │ ├── notetype_order.sql │ │ │ ├── parser.rs │ │ │ ├── service/ │ │ │ │ ├── browser_table.rs │ │ │ │ ├── mod.rs │ │ │ │ └── search_node.rs │ │ │ ├── sqlwriter.rs │ │ │ ├── template_order.sql │ │ │ └── writer.rs │ │ ├── serde.rs │ │ ├── services.rs │ │ ├── stats/ │ │ │ ├── card.rs │ │ │ ├── graphs/ │ │ │ │ ├── added.rs │ │ │ │ ├── buttons.rs │ │ │ │ ├── card_counts.rs │ │ │ │ ├── eases.rs │ │ │ │ ├── future_due.rs │ │ │ │ ├── hours.rs │ │ │ │ ├── intervals.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── retention.rs │ │ │ │ ├── retrievability.rs │ │ │ │ ├── reviews.rs │ │ │ │ └── today.rs │ │ │ ├── mod.rs │ │ │ ├── service.rs │ │ │ └── today.rs │ │ ├── storage/ │ │ │ ├── card/ │ │ │ │ ├── active_new_cards.sql │ │ │ │ ├── add_card.sql │ │ │ │ ├── add_card_if_unique.sql │ │ │ │ ├── add_or_update.sql │ │ │ │ ├── at_or_above_position.sql │ │ │ │ ├── congrats.sql │ │ │ │ ├── data.rs │ │ │ │ ├── deck_due_counts.sql │ │ │ │ ├── due_cards.sql │ │ │ │ ├── filtered.rs │ │ │ │ ├── fix_due_new.sql │ │ │ │ ├── fix_due_other.sql │ │ │ │ ├── fix_ivl.sql │ │ │ │ ├── fix_low_ease.sql │ │ │ │ ├── fix_mod.sql │ │ │ │ ├── fix_odue.sql │ │ │ │ ├── fix_ordinal.sql │ │ │ │ ├── get_card.sql │ │ │ │ ├── get_card_entry.sql │ │ │ │ ├── get_ignored_before_count.sql │ │ │ │ ├── intraday_due.sql │ │ │ │ ├── mod.rs │ │ │ │ ├── new_cards.sql │ │ │ │ ├── search_cards_of_notes_into_table.sql │ │ │ │ ├── search_cids_setup.sql │ │ │ │ ├── search_cids_setup_ordered.sql │ │ │ │ ├── siblings_for_bury.sql │ │ │ │ └── update_card.sql │ │ │ ├── collection_timestamps.rs │ │ │ ├── config/ │ │ │ │ ├── add.sql │ │ │ │ ├── get.sql │ │ │ │ ├── get_entry.sql │ │ │ │ └── mod.rs │ │ │ ├── dbcheck/ │ │ │ │ ├── invalid_ids_count.sql │ │ │ │ ├── invalid_ids_create.sql │ │ │ │ ├── invalid_ids_drop.sql │ │ │ │ ├── invalid_ids_update.sql │ │ │ │ └── mod.rs │ │ │ ├── deck/ │ │ │ │ ├── active_deck_ids_sorted.sql │ │ │ │ ├── add_or_update_deck.sql │ │ │ │ ├── all_decks_and_original_of_search_cards.sql │ │ │ │ ├── all_decks_of_search_notes.sql │ │ │ │ ├── alloc_id.sql │ │ │ │ ├── cards_for_deck.sql │ │ │ │ ├── due_counts.sql │ │ │ │ ├── get_deck.sql │ │ │ │ ├── missing-decks.sql │ │ │ │ ├── mod.rs │ │ │ │ ├── update_active.sql │ │ │ │ └── update_deck.sql │ │ │ ├── deckconfig/ │ │ │ │ ├── add.sql │ │ │ │ ├── add_if_unique.sql │ │ │ │ ├── add_or_update.sql │ │ │ │ ├── get.sql │ │ │ │ ├── mod.rs │ │ │ │ └── update.sql │ │ │ ├── graves/ │ │ │ │ ├── add.sql │ │ │ │ ├── mod.rs │ │ │ │ └── remove.sql │ │ │ ├── mod.rs │ │ │ ├── note/ │ │ │ │ ├── add.sql │ │ │ │ ├── add_if_unique.sql │ │ │ │ ├── add_or_update.sql │ │ │ │ ├── get.sql │ │ │ │ ├── get_tags.sql │ │ │ │ ├── get_without_fields.sql │ │ │ │ ├── is_orphaned.sql │ │ │ │ ├── mod.rs │ │ │ │ ├── notes_types_checksums_decks.sql │ │ │ │ ├── search_nids_setup.sql │ │ │ │ ├── update.sql │ │ │ │ └── update_tags.sql │ │ │ ├── notetype/ │ │ │ │ ├── add_notetype.sql │ │ │ │ ├── add_or_update.sql │ │ │ │ ├── existing_cards.sql │ │ │ │ ├── field_names_for_notes.sql │ │ │ │ ├── get_fields.sql │ │ │ │ ├── get_notetype.sql │ │ │ │ ├── get_notetype_names.sql │ │ │ │ ├── get_templates.sql │ │ │ │ ├── get_use_counts.sql │ │ │ │ ├── highest_card_ord.sql │ │ │ │ ├── mod.rs │ │ │ │ ├── update_fields.sql │ │ │ │ ├── update_notetype_config.sql │ │ │ │ └── update_templates.sql │ │ │ ├── revlog/ │ │ │ │ ├── add.sql │ │ │ │ ├── fix_props.sql │ │ │ │ ├── get.sql │ │ │ │ ├── mod.rs │ │ │ │ ├── studied_today.sql │ │ │ │ ├── studied_today_by_deck.sql │ │ │ │ ├── time_of_last_review.sql │ │ │ │ └── v2_upgrade.sql │ │ │ ├── schema11.sql │ │ │ ├── sqlite.rs │ │ │ ├── sync.rs │ │ │ ├── sync_check.rs │ │ │ ├── tag/ │ │ │ │ ├── add.sql │ │ │ │ ├── alloc_id.sql │ │ │ │ ├── get.sql │ │ │ │ ├── mod.rs │ │ │ │ └── update.sql │ │ │ └── upgrades/ │ │ │ ├── mod.rs │ │ │ ├── schema11_downgrade.sql │ │ │ ├── schema14_upgrade.sql │ │ │ ├── schema15_upgrade.sql │ │ │ ├── schema17_upgrade.sql │ │ │ ├── schema18_downgrade.sql │ │ │ └── schema18_upgrade.sql │ │ ├── sync/ │ │ │ ├── collection/ │ │ │ │ ├── changes.rs │ │ │ │ ├── chunks.rs │ │ │ │ ├── download.rs │ │ │ │ ├── finish.rs │ │ │ │ ├── graves.rs │ │ │ │ ├── meta.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── normal.rs │ │ │ │ ├── progress.rs │ │ │ │ ├── protocol.rs │ │ │ │ ├── sanity.rs │ │ │ │ ├── start.rs │ │ │ │ ├── status.rs │ │ │ │ ├── tests.rs │ │ │ │ └── upload.rs │ │ │ ├── error.rs │ │ │ ├── http_client/ │ │ │ │ ├── full_sync.rs │ │ │ │ ├── io_monitor.rs │ │ │ │ ├── mod.rs │ │ │ │ └── protocol.rs │ │ │ ├── http_server/ │ │ │ │ ├── handlers.rs │ │ │ │ ├── logging.rs │ │ │ │ ├── media_manager/ │ │ │ │ │ ├── download.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ └── upload.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── routes.rs │ │ │ │ └── user.rs │ │ │ ├── login.rs │ │ │ ├── media/ │ │ │ │ ├── begin.rs │ │ │ │ ├── changes.rs │ │ │ │ ├── database/ │ │ │ │ │ ├── client/ │ │ │ │ │ │ ├── changetracker.rs │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ └── schema.sql │ │ │ │ │ ├── mod.rs │ │ │ │ │ └── server/ │ │ │ │ │ ├── entry/ │ │ │ │ │ │ ├── changes.rs │ │ │ │ │ │ ├── changes.sql │ │ │ │ │ │ ├── download.rs │ │ │ │ │ │ ├── get_entry.sql │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ ├── set_entry.sql │ │ │ │ │ │ └── upload.rs │ │ │ │ │ ├── meta/ │ │ │ │ │ │ ├── get_meta.sql │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ └── set_meta.sql │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── schema_v3.sql │ │ │ │ │ └── schema_v4.sql │ │ │ │ ├── download.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── progress.rs │ │ │ │ ├── protocol.rs │ │ │ │ ├── sanity.rs │ │ │ │ ├── syncer.rs │ │ │ │ ├── tests.rs │ │ │ │ ├── upload.rs │ │ │ │ └── zip.rs │ │ │ ├── mod.rs │ │ │ ├── request/ │ │ │ │ ├── header_and_stream.rs │ │ │ │ ├── mod.rs │ │ │ │ └── multipart.rs │ │ │ ├── response.rs │ │ │ └── version.rs │ │ ├── tags/ │ │ │ ├── bulkadd.rs │ │ │ ├── complete.rs │ │ │ ├── findreplace.rs │ │ │ ├── matcher.rs │ │ │ ├── mod.rs │ │ │ ├── notes.rs │ │ │ ├── register.rs │ │ │ ├── remove.rs │ │ │ ├── rename.rs │ │ │ ├── reparent.rs │ │ │ ├── service.rs │ │ │ ├── tree.rs │ │ │ └── undo.rs │ │ ├── template.rs │ │ ├── template_filters.rs │ │ ├── tests.rs │ │ ├── text.rs │ │ ├── timestamp.rs │ │ ├── typeanswer.rs │ │ ├── types.rs │ │ ├── undo/ │ │ │ ├── changes.rs │ │ │ └── mod.rs │ │ └── version.rs │ ├── sync/ │ │ ├── Cargo.toml │ │ └── main.rs │ └── tests/ │ └── support/ │ └── mediacheck.anki2 ├── run ├── run.bat ├── rust-toolchain.toml ├── tools/ │ ├── build │ ├── build-arm-lin │ ├── build-x64-mac │ ├── build.bat │ ├── clean │ ├── dmypy │ ├── install-n2 │ ├── minilints/ │ │ ├── Cargo.toml │ │ └── src/ │ │ └── main.rs │ ├── ninja.bat │ ├── profile │ ├── publish │ ├── rebuild-web │ ├── reload_webviews.py │ ├── run-qt6.6 │ ├── run-qt6.7 │ ├── run-qt6.8 │ ├── run.py │ ├── runopt │ ├── unused-rust-deps │ ├── update-launcher-env │ ├── update-launcher-env.bat │ └── web-watch ├── ts/ │ ├── .gitignore │ ├── README.md │ ├── bundle_svelte.mjs │ ├── bundle_ts.mjs │ ├── editable/ │ │ ├── ContentEditable.svelte │ │ ├── Mathjax.svelte │ │ ├── change-timer.ts │ │ ├── content-editable.ts │ │ ├── cooldown-timer.ts │ │ ├── decorated.ts │ │ ├── editable-base.scss │ │ ├── frame-element.ts │ │ ├── frame-handle.ts │ │ ├── index.ts │ │ ├── mathjax-element.svelte.ts │ │ └── mathjax.ts │ ├── editor/ │ │ ├── BrowserEditor.svelte │ │ ├── ClozeButtons.svelte │ │ ├── CodeMirror.svelte │ │ ├── CollapseBadge.svelte │ │ ├── CollapseLabel.svelte │ │ ├── DuplicateLink.svelte │ │ ├── EditingArea.svelte │ │ ├── EditorField.svelte │ │ ├── FieldDescription.svelte │ │ ├── FieldState.svelte │ │ ├── Fields.svelte │ │ ├── HandleBackground.svelte │ │ ├── HandleControl.svelte │ │ ├── HandleLabel.svelte │ │ ├── LabelContainer.svelte │ │ ├── LabelName.svelte │ │ ├── NoteCreator.svelte │ │ ├── NoteEditor.svelte │ │ ├── Notification.svelte │ │ ├── PlainTextBadge.svelte │ │ ├── PreviewButton.svelte │ │ ├── ReviewerEditor.svelte │ │ ├── RichTextBadge.svelte │ │ ├── StickyBadge.svelte │ │ ├── base.ts │ │ ├── code-mirror.ts │ │ ├── decorated-elements.ts │ │ ├── destroyable.ts │ │ ├── editor-base.scss │ │ ├── editor-toolbar/ │ │ │ ├── AddonButtons.svelte │ │ │ ├── BlockButtons.svelte │ │ │ ├── BoldButton.svelte │ │ │ ├── ColorPicker.svelte │ │ │ ├── CommandIconButton.svelte │ │ │ ├── EditorToolbar.svelte │ │ │ ├── HighlightColorButton.svelte │ │ │ ├── ImageOcclusionButton.svelte │ │ │ ├── InlineButtons.svelte │ │ │ ├── ItalicButton.svelte │ │ │ ├── LatexButton.svelte │ │ │ ├── NotetypeButtons.svelte │ │ │ ├── OptionsButton.svelte │ │ │ ├── OptionsButtons.svelte │ │ │ ├── RemoveFormatButton.svelte │ │ │ ├── RichTextClozeButtons.svelte │ │ │ ├── SubscriptButton.svelte │ │ │ ├── SuperscriptButton.svelte │ │ │ ├── TemplateButtons.svelte │ │ │ ├── TextAttributeButton.svelte │ │ │ ├── TextColorButton.svelte │ │ │ ├── UnderlineButton.svelte │ │ │ ├── WithColorHelper.svelte │ │ │ └── index.ts │ │ ├── helpers.ts │ │ ├── image-overlay/ │ │ │ ├── FloatButtons.svelte │ │ │ ├── ImageOverlay.svelte │ │ │ ├── SizeSelect.svelte │ │ │ └── index.ts │ │ ├── index.ts │ │ ├── legacy.scss │ │ ├── mathjax-overlay/ │ │ │ ├── MathjaxButtons.svelte │ │ │ ├── MathjaxEditor.svelte │ │ │ ├── MathjaxOverlay.svelte │ │ │ └── index.ts │ │ ├── old-editor-adapter.ts │ │ ├── plain-text-input/ │ │ │ ├── PlainTextInput.svelte │ │ │ ├── index.ts │ │ │ ├── remove-prohibited.ts │ │ │ └── transform.ts │ │ ├── rich-text-input/ │ │ │ ├── CustomStyles.svelte │ │ │ ├── RichTextInput.svelte │ │ │ ├── RichTextStyles.svelte │ │ │ ├── StyleLink.svelte │ │ │ ├── StyleTag.svelte │ │ │ ├── index.ts │ │ │ ├── normalizing-node-store.ts │ │ │ ├── rich-text-resolve.ts │ │ │ └── transform.ts │ │ ├── surround.ts │ │ └── types.ts │ ├── html-filter/ │ │ ├── element.ts │ │ ├── helpers.ts │ │ ├── index.test.ts │ │ ├── index.ts │ │ ├── node.ts │ │ └── styling.ts │ ├── lib/ │ │ ├── components/ │ │ │ ├── Absolute.svelte │ │ │ ├── BackendProgressIndicator.svelte │ │ │ ├── Badge.svelte │ │ │ ├── ButtonGroup.svelte │ │ │ ├── ButtonGroupItem.svelte │ │ │ ├── ButtonToolbar.svelte │ │ │ ├── CheckBox.svelte │ │ │ ├── Col.svelte │ │ │ ├── Collapsible.svelte │ │ │ ├── ConfigInput.svelte │ │ │ ├── Container.svelte │ │ │ ├── DropdownDivider.svelte │ │ │ ├── DropdownItem.svelte │ │ │ ├── DynamicallySlottable.svelte │ │ │ ├── EnumSelector.svelte │ │ │ ├── EnumSelectorRow.svelte │ │ │ ├── ErrorPage.svelte │ │ │ ├── FloatingArrow.svelte │ │ │ ├── HelpModal.svelte │ │ │ ├── HelpSection.svelte │ │ │ ├── Icon.svelte │ │ │ ├── IconButton.svelte │ │ │ ├── IconConstrain.svelte │ │ │ ├── Item.svelte │ │ │ ├── Label.svelte │ │ │ ├── LabelButton.svelte │ │ │ ├── Popover.svelte │ │ │ ├── Portal.svelte │ │ │ ├── RenderChildren.svelte │ │ │ ├── RevertButton.svelte │ │ │ ├── Row.svelte │ │ │ ├── ScrollArea.svelte │ │ │ ├── Select.svelte │ │ │ ├── SelectOption.svelte │ │ │ ├── SettingTitle.svelte │ │ │ ├── Shortcut.svelte │ │ │ ├── Spacer.svelte │ │ │ ├── SpinBox.svelte │ │ │ ├── StickyContainer.svelte │ │ │ ├── Switch.svelte │ │ │ ├── SwitchRow.svelte │ │ │ ├── TitledContainer.svelte │ │ │ ├── VirtualTable.svelte │ │ │ ├── WithContext.svelte │ │ │ ├── WithFloating.svelte │ │ │ ├── WithOverlay.svelte │ │ │ ├── WithState.svelte │ │ │ ├── WithTooltip.svelte │ │ │ ├── context-keys.ts │ │ │ ├── helpers.ts │ │ │ ├── icons.ts │ │ │ ├── resizable.ts │ │ │ └── types.ts │ │ ├── domlib/ │ │ │ ├── content-editable.ts │ │ │ ├── find-above.ts │ │ │ ├── index.ts │ │ │ ├── location/ │ │ │ │ ├── document.ts │ │ │ │ ├── index.ts │ │ │ │ ├── location.ts │ │ │ │ ├── node.ts │ │ │ │ ├── range.ts │ │ │ │ └── selection.ts │ │ │ ├── move-nodes.ts │ │ │ ├── place-caret.ts │ │ │ └── surround/ │ │ │ ├── apply/ │ │ │ │ ├── format.ts │ │ │ │ └── index.ts │ │ │ ├── build/ │ │ │ │ ├── add-merge.ts │ │ │ │ ├── build-tree.ts │ │ │ │ ├── extend-merge.ts │ │ │ │ ├── format.ts │ │ │ │ └── index.ts │ │ │ ├── flat-range.ts │ │ │ ├── index.ts │ │ │ ├── match-type.ts │ │ │ ├── split-text.ts │ │ │ ├── surround-format.ts │ │ │ ├── surround.test.ts │ │ │ ├── surround.ts │ │ │ ├── test-utils.ts │ │ │ ├── tree/ │ │ │ │ ├── block-node.ts │ │ │ │ ├── element-node.ts │ │ │ │ ├── formatting-node.ts │ │ │ │ ├── index.ts │ │ │ │ └── tree-node.ts │ │ │ └── unsurround.test.ts │ │ ├── generated/ │ │ │ ├── README.md │ │ │ ├── ftl-helpers.ts │ │ │ └── post.ts │ │ ├── sass/ │ │ │ ├── _button-mixins.scss │ │ │ ├── _color-palette.scss │ │ │ ├── _functions.scss │ │ │ ├── _root-vars.scss │ │ │ ├── _vars.scss │ │ │ ├── base.scss │ │ │ ├── bootstrap-dark.scss │ │ │ ├── bootstrap-forms.scss │ │ │ ├── bootstrap-tooltip.scss │ │ │ ├── breakpoints.scss │ │ │ ├── buttons.scss │ │ │ ├── card-counts.scss │ │ │ ├── core.scss │ │ │ ├── elevation.scss │ │ │ ├── night-mode.scss │ │ │ ├── panes.scss │ │ │ └── scrollbar.scss │ │ ├── sveltelib/ │ │ │ ├── action-list.ts │ │ │ ├── closing-click.ts │ │ │ ├── closing-keyup.ts │ │ │ ├── composition.ts │ │ │ ├── context-property.ts │ │ │ ├── dom-mirror.ts │ │ │ ├── dynamic-slotting.ts │ │ │ ├── dynamicComponent.ts │ │ │ ├── event-predicate.d.ts │ │ │ ├── event-store.ts │ │ │ ├── export-runtime.ts │ │ │ ├── handler-list.ts │ │ │ ├── input-handler.ts │ │ │ ├── lifecycle-hooks.ts │ │ │ ├── modal-closing.ts │ │ │ ├── node-store.ts │ │ │ ├── position/ │ │ │ │ ├── auto-update.ts │ │ │ │ ├── position-algorithm.d.ts │ │ │ │ ├── position-floating.ts │ │ │ │ └── position-overlay.ts │ │ │ ├── preferences.ts │ │ │ ├── resize-store.ts │ │ │ ├── shortcut.ts │ │ │ ├── store-subscribe.ts │ │ │ ├── subscribe-updates.ts │ │ │ ├── theme.ts │ │ │ └── toggleable.ts │ │ ├── tag-editor/ │ │ │ ├── AutocompleteItem.svelte │ │ │ ├── Tag.svelte │ │ │ ├── TagDeleteBadge.svelte │ │ │ ├── TagEditMode.svelte │ │ │ ├── TagEditor.svelte │ │ │ ├── TagInput.svelte │ │ │ ├── TagSpacer.svelte │ │ │ ├── TagWithTooltip.svelte │ │ │ ├── TagsRow.svelte │ │ │ ├── WithAutocomplete.svelte │ │ │ ├── index.ts │ │ │ ├── tag-options-button/ │ │ │ │ ├── TagAddButton.svelte │ │ │ │ ├── TagOptionsButton.svelte │ │ │ │ ├── TagsSelectedButton.svelte │ │ │ │ └── index.ts │ │ │ └── tags.ts │ │ └── tslib/ │ │ ├── bridgecommand.ts │ │ ├── cards.ts │ │ ├── children-access.ts │ │ ├── context-keys.ts │ │ ├── cross-browser.ts │ │ ├── dom.ts │ │ ├── events.ts │ │ ├── functional.ts │ │ ├── globals.ts │ │ ├── help-page.ts │ │ ├── helpers.ts │ │ ├── i18n/ │ │ │ ├── index.ts │ │ │ └── utils.ts │ │ ├── image-import.d.ts │ │ ├── keys.ts │ │ ├── nightmode.ts │ │ ├── node.ts │ │ ├── parsing.ts │ │ ├── platform.ts │ │ ├── progress.ts │ │ ├── promise.ts │ │ ├── runtime-require.ts │ │ ├── shadow-dom.d.ts │ │ ├── shortcuts.ts │ │ ├── styling.ts │ │ ├── time.test.ts │ │ ├── time.ts │ │ ├── typing.ts │ │ ├── ui.ts │ │ └── wrap.ts │ ├── licenses.json │ ├── mathjax/ │ │ ├── index.ts │ │ └── mathjax-types.d.ts │ ├── page.html │ ├── reviewer/ │ │ ├── answering.ts │ │ ├── browser_selector.ts │ │ ├── images.ts │ │ ├── index.ts │ │ ├── index_wrapper.ts │ │ ├── lib.test.ts │ │ ├── preload.ts │ │ ├── reviewer.scss │ │ ├── reviewer_extras.scss │ │ └── reviewer_extras.ts │ ├── routes/ │ │ ├── +error.svelte │ │ ├── +layout.svelte │ │ ├── +layout.ts │ │ ├── base.scss │ │ ├── card-info/ │ │ │ ├── CardInfo.svelte │ │ │ ├── CardInfoPlaceholder.svelte │ │ │ ├── CardStats.svelte │ │ │ ├── ForgettingCurve.svelte │ │ │ ├── Revlog.svelte │ │ │ ├── [cardId]/ │ │ │ │ ├── +page.svelte │ │ │ │ ├── +page.ts │ │ │ │ └── [previousId]/ │ │ │ │ ├── +page.svelte │ │ │ │ └── +page.ts │ │ │ └── forgetting-curve.ts │ │ ├── change-notetype/ │ │ │ ├── Alert.svelte │ │ │ ├── ChangeNotetypePage.svelte │ │ │ ├── Mapper.svelte │ │ │ ├── MapperRow.svelte │ │ │ ├── NotetypeSelector.svelte │ │ │ ├── SaveButton.svelte │ │ │ ├── StickyHeader.svelte │ │ │ ├── [...notetypeIds]/ │ │ │ │ ├── +page.svelte │ │ │ │ └── +page.ts │ │ │ ├── change-notetype-base.scss │ │ │ ├── index.ts │ │ │ ├── lib.test.ts │ │ │ └── lib.ts │ │ ├── congrats/ │ │ │ ├── +page.svelte │ │ │ ├── +page.ts │ │ │ ├── CongratsPage.svelte │ │ │ ├── congrats-base.scss │ │ │ ├── index.ts │ │ │ └── lib.ts │ │ ├── deck-options/ │ │ │ ├── Addons.svelte │ │ │ ├── AdvancedOptions.svelte │ │ │ ├── AudioOptions.svelte │ │ │ ├── AutoAdvance.svelte │ │ │ ├── BuryOptions.svelte │ │ │ ├── CardStateCustomizer.svelte │ │ │ ├── ConfigSelector.svelte │ │ │ ├── DailyLimits.svelte │ │ │ ├── DateInput.svelte │ │ │ ├── DeckOptionsPage.svelte │ │ │ ├── DisplayOrder.svelte │ │ │ ├── EasyDays.svelte │ │ │ ├── EasyDaysInput.svelte │ │ │ ├── FsrsOptions.svelte │ │ │ ├── FsrsOptionsOuter.svelte │ │ │ ├── GlobalLabel.svelte │ │ │ ├── HtmlAddon.svelte │ │ │ ├── LapseOptions.svelte │ │ │ ├── NewOptions.svelte │ │ │ ├── ParamsInput.svelte │ │ │ ├── ParamsInputRow.svelte │ │ │ ├── ParamsSearchRow.svelte │ │ │ ├── SaveButton.svelte │ │ │ ├── SimulatorModal.svelte │ │ │ ├── SpinBoxFloatRow.svelte │ │ │ ├── SpinBoxRow.svelte │ │ │ ├── StepsInput.svelte │ │ │ ├── StepsInputRow.svelte │ │ │ ├── TabbedValue.svelte │ │ │ ├── TextInputModal.svelte │ │ │ ├── TimerOptions.svelte │ │ │ ├── Warning.svelte │ │ │ ├── [deckId]/ │ │ │ │ ├── +page.svelte │ │ │ │ └── +page.ts │ │ │ ├── choices.ts │ │ │ ├── deck-options-base.scss │ │ │ ├── index.ts │ │ │ ├── lib.test.ts │ │ │ ├── lib.ts │ │ │ ├── steps.test.ts │ │ │ └── steps.ts │ │ ├── graphs/ │ │ │ ├── +page.svelte │ │ │ ├── AddedGraph.svelte │ │ │ ├── AxisTicks.svelte │ │ │ ├── ButtonsGraph.svelte │ │ │ ├── CalendarGraph.svelte │ │ │ ├── CardCounts.svelte │ │ │ ├── CumulativeOverlay.svelte │ │ │ ├── DifficultyGraph.svelte │ │ │ ├── EaseGraph.svelte │ │ │ ├── FutureDue.svelte │ │ │ ├── Graph.svelte │ │ │ ├── GraphRangeRadios.svelte │ │ │ ├── GraphsPage.svelte │ │ │ ├── HistogramGraph.svelte │ │ │ ├── HourGraph.svelte │ │ │ ├── HoverColumns.svelte │ │ │ ├── InputBox.svelte │ │ │ ├── IntervalsGraph.svelte │ │ │ ├── NoDataOverlay.svelte │ │ │ ├── PercentageRange.svelte │ │ │ ├── RangeBox.svelte │ │ │ ├── RetrievabilityGraph.svelte │ │ │ ├── ReviewsGraph.svelte │ │ │ ├── StabilityGraph.svelte │ │ │ ├── TableData.svelte │ │ │ ├── TodayStats.svelte │ │ │ ├── Tooltip.svelte │ │ │ ├── TrueRetention.svelte │ │ │ ├── TrueRetentionCombined.svelte │ │ │ ├── TrueRetentionSingle.svelte │ │ │ ├── WithGraphData.svelte │ │ │ ├── _true-retention-base.scss │ │ │ ├── added.ts │ │ │ ├── buttons.ts │ │ │ ├── calendar.ts │ │ │ ├── card-counts.ts │ │ │ ├── difficulty.ts │ │ │ ├── ease.ts │ │ │ ├── future-due.ts │ │ │ ├── graph-helpers.ts │ │ │ ├── graph-styles.ts │ │ │ ├── graphs-base.scss │ │ │ ├── histogram-graph.ts │ │ │ ├── hours.ts │ │ │ ├── index.ts │ │ │ ├── intervals.ts │ │ │ ├── percentageRange.ts │ │ │ ├── retrievability.ts │ │ │ ├── reviews.ts │ │ │ ├── simulator.ts │ │ │ ├── today.ts │ │ │ ├── tooltip-utils.svelte.ts │ │ │ └── true-retention.ts │ │ ├── image-occlusion/ │ │ │ ├── ImageOcclusionPage.svelte │ │ │ ├── ImageOcclusionPicker.svelte │ │ │ ├── MaskEditor.svelte │ │ │ ├── Notes.svelte │ │ │ ├── StickyFooter.svelte │ │ │ ├── Tags.svelte │ │ │ ├── Toast.svelte │ │ │ ├── Toolbar.svelte │ │ │ ├── [...imagePathOrNoteId]/ │ │ │ │ ├── +page.svelte │ │ │ │ └── +page.ts │ │ │ ├── add-or-update-note.svelte.ts │ │ │ ├── canvas-scale.ts │ │ │ ├── fabric.d.ts │ │ │ ├── image-occlusion-base.scss │ │ │ ├── index.ts │ │ │ ├── lib.ts │ │ │ ├── mask-editor.ts │ │ │ ├── notes-toolbar/ │ │ │ │ ├── MoreTools.svelte │ │ │ │ ├── NotesToolbar.svelte │ │ │ │ ├── TextFormatting.svelte │ │ │ │ ├── index.ts │ │ │ │ └── lib.ts │ │ │ ├── review.scss │ │ │ ├── review.ts │ │ │ ├── shapes/ │ │ │ │ ├── base.ts │ │ │ │ ├── ellipse.ts │ │ │ │ ├── from-cloze.ts │ │ │ │ ├── index.ts │ │ │ │ ├── lib.ts │ │ │ │ ├── polygon.ts │ │ │ │ ├── position.ts │ │ │ │ ├── rectangle.ts │ │ │ │ ├── text.ts │ │ │ │ └── to-cloze.ts │ │ │ ├── store.ts │ │ │ ├── tools/ │ │ │ │ ├── add-from-cloze.ts │ │ │ │ ├── api.ts │ │ │ │ ├── from-shapes.ts │ │ │ │ ├── index.ts │ │ │ │ ├── lib.ts │ │ │ │ ├── more-tools.ts │ │ │ │ ├── shortcuts.ts │ │ │ │ ├── tool-aligns.ts │ │ │ │ ├── tool-buttons.ts │ │ │ │ ├── tool-cursor.ts │ │ │ │ ├── tool-ellipse.ts │ │ │ │ ├── tool-fill.ts │ │ │ │ ├── tool-polygon.ts │ │ │ │ ├── tool-rect.ts │ │ │ │ ├── tool-text.ts │ │ │ │ ├── tool-undo-redo.ts │ │ │ │ └── tool-zoom.ts │ │ │ └── types.ts │ │ ├── import-anki-package/ │ │ │ ├── Header.svelte │ │ │ ├── ImportAnkiPackagePage.svelte │ │ │ ├── [...path]/ │ │ │ │ ├── +page.svelte │ │ │ │ └── +page.ts │ │ │ ├── choices.ts │ │ │ ├── import-anki-package-base.scss │ │ │ └── index.ts │ │ ├── import-csv/ │ │ │ ├── FieldMapper.svelte │ │ │ ├── FileOptions.svelte │ │ │ ├── ImportCsvPage.svelte │ │ │ ├── ImportOptions.svelte │ │ │ ├── MapperRow.svelte │ │ │ ├── Preview.svelte │ │ │ ├── [...path]/ │ │ │ │ ├── +page.svelte │ │ │ │ └── +page.ts │ │ │ ├── choices.ts │ │ │ ├── import-csv-base.scss │ │ │ ├── index.ts │ │ │ └── lib.ts │ │ ├── import-page/ │ │ │ ├── DetailsTable.svelte │ │ │ ├── ImportLogPage.svelte │ │ │ ├── ImportPage.svelte │ │ │ ├── QueueSummary.svelte │ │ │ ├── StickyHeader.svelte │ │ │ ├── TableCell.svelte │ │ │ ├── TableCellWithTooltip.svelte │ │ │ ├── [...path]/ │ │ │ │ ├── +page.svelte │ │ │ │ └── +page.ts │ │ │ ├── import-page-base.scss │ │ │ ├── index.ts │ │ │ ├── lib.ts │ │ │ └── types.ts │ │ └── tmp/ │ │ └── _page.ts │ ├── src/ │ │ ├── app.d.ts │ │ ├── app.html │ │ └── hooks.client.js │ ├── svelte.config.js │ ├── tools/ │ │ ├── markpure.ts │ │ └── sql_format.ts │ ├── transform_ts.mjs │ ├── tsconfig.json │ ├── tsconfig_legacy.json │ └── vite.config.ts ├── yarn └── yarn.bat