gitextract_glkkya1o/ ├── .editorconfig ├── .gitattributes ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── config.yml │ │ ├── report_issue.yml │ │ └── request_feature.yml │ ├── pull_request_template.md │ ├── renovate.json5 │ └── workflows/ │ ├── build_pull_request.yml │ └── build_push.yml ├── .gitignore ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── app/ │ ├── .idea/ │ │ ├── .gitignore │ │ ├── .name │ │ ├── discord.xml │ │ ├── gradle.xml │ │ ├── misc.xml │ │ └── vcs.xml │ ├── build.gradle.kts │ ├── proguard-android-optimize.txt │ ├── proguard-rules.pro │ ├── shortcuts.xml │ └── src/ │ ├── debug/ │ │ └── res/ │ │ ├── drawable/ │ │ │ └── ic_launcher_foreground.xml │ │ └── mipmap/ │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ ├── main/ │ │ ├── AndroidManifest.xml │ │ ├── assets/ │ │ │ └── aniyomi.lua │ │ ├── baseline-prof.txt │ │ ├── java/ │ │ │ ├── aniyomi/ │ │ │ │ └── util/ │ │ │ │ └── DataSaver.kt │ │ │ ├── eu/ │ │ │ │ └── kanade/ │ │ │ │ ├── core/ │ │ │ │ │ ├── preference/ │ │ │ │ │ │ ├── CheckboxState.kt │ │ │ │ │ │ └── PreferenceMutableState.kt │ │ │ │ │ └── util/ │ │ │ │ │ ├── AnimeSourceUtil.kt │ │ │ │ │ ├── CollectionUtils.kt │ │ │ │ │ ├── MangaSourceUtil.kt │ │ │ │ │ └── RxJavaExtensions.kt │ │ │ │ ├── domain/ │ │ │ │ │ ├── DomainModule.kt │ │ │ │ │ ├── SYDomainModule.kt │ │ │ │ │ ├── base/ │ │ │ │ │ │ ├── BasePreferences.kt │ │ │ │ │ │ └── ExtensionInstallerPreference.kt │ │ │ │ │ ├── download/ │ │ │ │ │ │ ├── anime/ │ │ │ │ │ │ │ └── interactor/ │ │ │ │ │ │ │ └── DeleteEpisodeDownload.kt │ │ │ │ │ │ └── manga/ │ │ │ │ │ │ └── interactor/ │ │ │ │ │ │ └── DeleteChapterDownload.kt │ │ │ │ │ ├── entries/ │ │ │ │ │ │ ├── anime/ │ │ │ │ │ │ │ ├── interactor/ │ │ │ │ │ │ │ │ ├── SetAnimeViewerFlags.kt │ │ │ │ │ │ │ │ ├── SyncSeasonsWithSource.kt │ │ │ │ │ │ │ │ └── UpdateAnime.kt │ │ │ │ │ │ │ └── model/ │ │ │ │ │ │ │ └── Anime.kt │ │ │ │ │ │ └── manga/ │ │ │ │ │ │ ├── interactor/ │ │ │ │ │ │ │ ├── GetExcludedScanlators.kt │ │ │ │ │ │ │ ├── SetExcludedScanlators.kt │ │ │ │ │ │ │ ├── SetMangaViewerFlags.kt │ │ │ │ │ │ │ └── UpdateManga.kt │ │ │ │ │ │ └── model/ │ │ │ │ │ │ └── Manga.kt │ │ │ │ │ ├── extension/ │ │ │ │ │ │ ├── anime/ │ │ │ │ │ │ │ ├── interactor/ │ │ │ │ │ │ │ │ ├── GetAnimeExtensionLanguages.kt │ │ │ │ │ │ │ │ ├── GetAnimeExtensionSources.kt │ │ │ │ │ │ │ │ ├── GetAnimeExtensionsByType.kt │ │ │ │ │ │ │ │ └── TrustAnimeExtension.kt │ │ │ │ │ │ │ └── model/ │ │ │ │ │ │ │ └── AnimeExtensions.kt │ │ │ │ │ │ └── manga/ │ │ │ │ │ │ ├── interactor/ │ │ │ │ │ │ │ ├── GetMangaExtensionLanguages.kt │ │ │ │ │ │ │ ├── GetMangaExtensionSources.kt │ │ │ │ │ │ │ ├── GetMangaExtensionsByType.kt │ │ │ │ │ │ │ └── TrustMangaExtension.kt │ │ │ │ │ │ └── model/ │ │ │ │ │ │ └── MangaExtensions.kt │ │ │ │ │ ├── items/ │ │ │ │ │ │ ├── chapter/ │ │ │ │ │ │ │ ├── interactor/ │ │ │ │ │ │ │ │ ├── GetAvailableScanlators.kt │ │ │ │ │ │ │ │ ├── SetReadStatus.kt │ │ │ │ │ │ │ │ └── SyncChaptersWithSource.kt │ │ │ │ │ │ │ └── model/ │ │ │ │ │ │ │ ├── Chapter.kt │ │ │ │ │ │ │ └── ChapterFilter.kt │ │ │ │ │ │ └── episode/ │ │ │ │ │ │ ├── interactor/ │ │ │ │ │ │ │ ├── SetSeenStatus.kt │ │ │ │ │ │ │ └── SyncEpisodesWithSource.kt │ │ │ │ │ │ └── model/ │ │ │ │ │ │ ├── Episode.kt │ │ │ │ │ │ └── EpisodeFilter.kt │ │ │ │ │ ├── source/ │ │ │ │ │ │ ├── anime/ │ │ │ │ │ │ │ ├── interactor/ │ │ │ │ │ │ │ │ ├── GetAnimeIncognitoState.kt │ │ │ │ │ │ │ │ ├── GetAnimeSourcesWithFavoriteCount.kt │ │ │ │ │ │ │ │ ├── GetEnabledAnimeSources.kt │ │ │ │ │ │ │ │ ├── GetLanguagesWithAnimeSources.kt │ │ │ │ │ │ │ │ ├── ToggleAnimeIncognito.kt │ │ │ │ │ │ │ │ ├── ToggleAnimeSource.kt │ │ │ │ │ │ │ │ └── ToggleAnimeSourcePin.kt │ │ │ │ │ │ │ └── model/ │ │ │ │ │ │ │ └── AnimeSource.kt │ │ │ │ │ │ ├── interactor/ │ │ │ │ │ │ │ ├── SetMigrateSorting.kt │ │ │ │ │ │ │ └── ToggleLanguage.kt │ │ │ │ │ │ ├── manga/ │ │ │ │ │ │ │ ├── interactor/ │ │ │ │ │ │ │ │ ├── GetEnabledMangaSources.kt │ │ │ │ │ │ │ │ ├── GetLanguagesWithMangaSources.kt │ │ │ │ │ │ │ │ ├── GetMangaIncognitoState.kt │ │ │ │ │ │ │ │ ├── GetMangaSourcesWithFavoriteCount.kt │ │ │ │ │ │ │ │ ├── ToggleExcludeFromMangaDataSaver.kt │ │ │ │ │ │ │ │ ├── ToggleMangaIncognito.kt │ │ │ │ │ │ │ │ ├── ToggleMangaSource.kt │ │ │ │ │ │ │ │ └── ToggleMangaSourcePin.kt │ │ │ │ │ │ │ └── model/ │ │ │ │ │ │ │ └── MangaSource.kt │ │ │ │ │ │ └── service/ │ │ │ │ │ │ └── SourcePreferences.kt │ │ │ │ │ ├── track/ │ │ │ │ │ │ ├── anime/ │ │ │ │ │ │ │ ├── interactor/ │ │ │ │ │ │ │ │ ├── AddAnimeTracks.kt │ │ │ │ │ │ │ │ ├── RefreshAnimeTracks.kt │ │ │ │ │ │ │ │ ├── SyncEpisodeProgressWithTrack.kt │ │ │ │ │ │ │ │ └── TrackEpisode.kt │ │ │ │ │ │ │ ├── model/ │ │ │ │ │ │ │ │ └── AnimeTrack.kt │ │ │ │ │ │ │ ├── service/ │ │ │ │ │ │ │ │ └── DelayedAnimeTrackingUpdateJob.kt │ │ │ │ │ │ │ └── store/ │ │ │ │ │ │ │ └── DelayedAnimeTrackingStore.kt │ │ │ │ │ │ ├── manga/ │ │ │ │ │ │ │ ├── interactor/ │ │ │ │ │ │ │ │ ├── AddMangaTracks.kt │ │ │ │ │ │ │ │ ├── RefreshMangaTracks.kt │ │ │ │ │ │ │ │ ├── SyncChapterProgressWithTrack.kt │ │ │ │ │ │ │ │ └── TrackChapter.kt │ │ │ │ │ │ │ ├── model/ │ │ │ │ │ │ │ │ └── MangaTrack.kt │ │ │ │ │ │ │ ├── service/ │ │ │ │ │ │ │ │ └── DelayedMangaTrackingUpdateJob.kt │ │ │ │ │ │ │ └── store/ │ │ │ │ │ │ │ └── DelayedMangaTrackingStore.kt │ │ │ │ │ │ ├── model/ │ │ │ │ │ │ │ └── AutoTrackState.kt │ │ │ │ │ │ └── service/ │ │ │ │ │ │ └── TrackPreferences.kt │ │ │ │ │ └── ui/ │ │ │ │ │ ├── UiPreferences.kt │ │ │ │ │ └── model/ │ │ │ │ │ ├── AppTheme.kt │ │ │ │ │ ├── NavStyle.kt │ │ │ │ │ ├── StartScreen.kt │ │ │ │ │ ├── TabletUiMode.kt │ │ │ │ │ └── ThemeMode.kt │ │ │ │ ├── presentation/ │ │ │ │ │ ├── browse/ │ │ │ │ │ │ ├── BaseBrowseItem.kt │ │ │ │ │ │ ├── BrowseBadges.kt │ │ │ │ │ │ ├── BrowseSourceDialogs.kt │ │ │ │ │ │ ├── BrowseSourceLoadingItem.kt │ │ │ │ │ │ ├── GlobalSearchResultItems.kt │ │ │ │ │ │ ├── GlobalSerachCard.kt │ │ │ │ │ │ ├── anime/ │ │ │ │ │ │ │ ├── AnimeExtensionDetailsScreen.kt │ │ │ │ │ │ │ ├── AnimeExtensionFilterScreen.kt │ │ │ │ │ │ │ ├── AnimeExtensionsScreen.kt │ │ │ │ │ │ │ ├── AnimeSourcesFilterScreen.kt │ │ │ │ │ │ │ ├── AnimeSourcesScreen.kt │ │ │ │ │ │ │ ├── BrowseAnimeSourceScreen.kt │ │ │ │ │ │ │ ├── GlobalAnimeSearchScreen.kt │ │ │ │ │ │ │ ├── MigrateAnimeScreen.kt │ │ │ │ │ │ │ ├── MigrateAnimeSearchScreen.kt │ │ │ │ │ │ │ ├── MigrateAnimeSourceScreen.kt │ │ │ │ │ │ │ └── components/ │ │ │ │ │ │ │ ├── BaseAnimeSourceItem.kt │ │ │ │ │ │ │ ├── BrowseAnimeIcons.kt │ │ │ │ │ │ │ ├── BrowseAnimeSourceComfortableGrid.kt │ │ │ │ │ │ │ ├── BrowseAnimeSourceCompactGrid.kt │ │ │ │ │ │ │ ├── BrowseAnimeSourceList.kt │ │ │ │ │ │ │ ├── BrowseAnimeSourceToolbar.kt │ │ │ │ │ │ │ ├── GlobalAnimeSearchCardRow.kt │ │ │ │ │ │ │ └── GlobalAnimeSearchToolbar.kt │ │ │ │ │ │ └── manga/ │ │ │ │ │ │ ├── BrowseMangaSourceScreen.kt │ │ │ │ │ │ ├── GlobalMangaSearchScreen.kt │ │ │ │ │ │ ├── MangaExtensionDetailsScreen.kt │ │ │ │ │ │ ├── MangaExtensionFilterScreen.kt │ │ │ │ │ │ ├── MangaExtensionsScreen.kt │ │ │ │ │ │ ├── MangaSourcesFilterScreen.kt │ │ │ │ │ │ ├── MangaSourcesScreen.kt │ │ │ │ │ │ ├── MigrateMangaScreen.kt │ │ │ │ │ │ ├── MigrateMangaSearchScreen.kt │ │ │ │ │ │ ├── MigrateMangaSourceScreen.kt │ │ │ │ │ │ └── components/ │ │ │ │ │ │ ├── BaseMangaSourceItem.kt │ │ │ │ │ │ ├── BrowseMangaIcons.kt │ │ │ │ │ │ ├── BrowseMangaSourceComfortableGrid.kt │ │ │ │ │ │ ├── BrowseMangaSourceCompactGrid.kt │ │ │ │ │ │ ├── BrowseMangaSourceList.kt │ │ │ │ │ │ ├── BrowseMangaSourceToolbar.kt │ │ │ │ │ │ ├── GlobalMangaSearchCardRow.kt │ │ │ │ │ │ └── GlobalMangaSearchToolbar.kt │ │ │ │ │ ├── category/ │ │ │ │ │ │ ├── AnimeCategoryScreen.kt │ │ │ │ │ │ ├── CategoryExtensions.kt │ │ │ │ │ │ ├── MangaCategoryScreen.kt │ │ │ │ │ │ └── components/ │ │ │ │ │ │ ├── CategoryDialogs.kt │ │ │ │ │ │ ├── CategoryFloatingActionButton.kt │ │ │ │ │ │ └── CategoryListItem.kt │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── AdaptiveSheet.kt │ │ │ │ │ │ ├── AppBar.kt │ │ │ │ │ │ ├── Banners.kt │ │ │ │ │ │ ├── DateText.kt │ │ │ │ │ │ ├── DropdownMenu.kt │ │ │ │ │ │ ├── EmptyScreen.kt │ │ │ │ │ │ ├── EntryDownloadDropdownMenu.kt │ │ │ │ │ │ ├── FloatingActionAddButton.kt │ │ │ │ │ │ ├── ItemDownloadIndicator.kt │ │ │ │ │ │ ├── TabbedDialog.kt │ │ │ │ │ │ └── TabbedScreen.kt │ │ │ │ │ ├── crash/ │ │ │ │ │ │ └── CrashScreen.kt │ │ │ │ │ ├── entries/ │ │ │ │ │ │ ├── EntryScreenConstants.kt │ │ │ │ │ │ ├── anime/ │ │ │ │ │ │ │ ├── AnimeScreen.kt │ │ │ │ │ │ │ ├── DuplicateAnimeDialog.kt │ │ │ │ │ │ │ ├── EpisodeOptionsDialogScreen.kt │ │ │ │ │ │ │ ├── EpisodeSettingsDialog.kt │ │ │ │ │ │ │ ├── SeasonSettingsDialog.kt │ │ │ │ │ │ │ └── components/ │ │ │ │ │ │ │ ├── AnimeEpisodeListItem.kt │ │ │ │ │ │ │ ├── AnimeImagesDialog.kt │ │ │ │ │ │ │ ├── AnimeInfoHeader.kt │ │ │ │ │ │ │ ├── AnimeSeasonListItem.kt │ │ │ │ │ │ │ ├── BaseAnimeListItem.kt │ │ │ │ │ │ │ └── EpisodeDownloadIndicator.kt │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── DotSeparatorText.kt │ │ │ │ │ │ │ ├── EntryBottomActionMenu.kt │ │ │ │ │ │ │ ├── EntryToolbar.kt │ │ │ │ │ │ │ ├── ItemCover.kt │ │ │ │ │ │ │ ├── ItemHeader.kt │ │ │ │ │ │ │ ├── ItemsDialogs.kt │ │ │ │ │ │ │ └── MissingItemCountListItem.kt │ │ │ │ │ │ └── manga/ │ │ │ │ │ │ ├── ChapterSettingsDialog.kt │ │ │ │ │ │ ├── DuplicateMangaDialog.kt │ │ │ │ │ │ ├── MangaScreen.kt │ │ │ │ │ │ └── components/ │ │ │ │ │ │ ├── BaseMangaListItem.kt │ │ │ │ │ │ ├── ChapterDownloadIndicator.kt │ │ │ │ │ │ ├── MangaChapterListItem.kt │ │ │ │ │ │ ├── MangaCoverDialog.kt │ │ │ │ │ │ ├── MangaInfoHeader.kt │ │ │ │ │ │ └── ScanlatorFilterDialog.kt │ │ │ │ │ ├── history/ │ │ │ │ │ │ ├── HistoryDialogs.kt │ │ │ │ │ │ ├── anime/ │ │ │ │ │ │ │ ├── AnimeHistoryScreen.kt │ │ │ │ │ │ │ ├── AnimeHistoryScreenModelStateProvider.kt │ │ │ │ │ │ │ └── components/ │ │ │ │ │ │ │ ├── AnimeHistoryItem.kt │ │ │ │ │ │ │ └── AnimeHistoryWithRelationsProvider.kt │ │ │ │ │ │ └── manga/ │ │ │ │ │ │ ├── MangaHistoryScreen.kt │ │ │ │ │ │ ├── MangaHistoryScreenModelStateProvider.kt │ │ │ │ │ │ └── components/ │ │ │ │ │ │ ├── MangaHistoryItem.kt │ │ │ │ │ │ └── MangaHistoryWithRelationsProvider.kt │ │ │ │ │ ├── library/ │ │ │ │ │ │ ├── DeleteLibraryEntryDialog.kt │ │ │ │ │ │ ├── anime/ │ │ │ │ │ │ │ ├── AnimeLibraryComfortableGrid.kt │ │ │ │ │ │ │ ├── AnimeLibraryCompactGrid.kt │ │ │ │ │ │ │ ├── AnimeLibraryContent.kt │ │ │ │ │ │ │ ├── AnimeLibraryList.kt │ │ │ │ │ │ │ ├── AnimeLibraryPager.kt │ │ │ │ │ │ │ └── AnimeLibrarySettingsDialog.kt │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── CommonEntryItem.kt │ │ │ │ │ │ │ ├── GlobalSearchItem.kt │ │ │ │ │ │ │ ├── LazyLibraryGrid.kt │ │ │ │ │ │ │ ├── LibraryBadges.kt │ │ │ │ │ │ │ ├── LibraryTabs.kt │ │ │ │ │ │ │ └── LibraryToolbar.kt │ │ │ │ │ │ └── manga/ │ │ │ │ │ │ ├── MangaLibraryComfortableGrid.kt │ │ │ │ │ │ ├── MangaLibraryCompactGrid.kt │ │ │ │ │ │ ├── MangaLibraryContent.kt │ │ │ │ │ │ ├── MangaLibraryList.kt │ │ │ │ │ │ ├── MangaLibraryPager.kt │ │ │ │ │ │ └── MangaLibrarySettingsDialog.kt │ │ │ │ │ ├── more/ │ │ │ │ │ │ ├── LogoHeader.kt │ │ │ │ │ │ ├── MoreScreen.kt │ │ │ │ │ │ ├── NewUpdateScreen.kt │ │ │ │ │ │ ├── onboarding/ │ │ │ │ │ │ │ ├── GuidesStep.kt │ │ │ │ │ │ │ ├── OnboardingScreen.kt │ │ │ │ │ │ │ ├── OnboardingStep.kt │ │ │ │ │ │ │ ├── PermissionStep.kt │ │ │ │ │ │ │ ├── StorageStep.kt │ │ │ │ │ │ │ └── ThemeStep.kt │ │ │ │ │ │ ├── settings/ │ │ │ │ │ │ │ ├── Preference.kt │ │ │ │ │ │ │ ├── PreferenceItem.kt │ │ │ │ │ │ │ ├── PreferenceScaffold.kt │ │ │ │ │ │ │ ├── PreferenceScreen.kt │ │ │ │ │ │ │ ├── screen/ │ │ │ │ │ │ │ │ ├── Commons.kt │ │ │ │ │ │ │ │ ├── SearchableSettings.kt │ │ │ │ │ │ │ │ ├── SettingsAdvancedScreen.kt │ │ │ │ │ │ │ │ ├── SettingsAppearanceScreen.kt │ │ │ │ │ │ │ │ ├── SettingsBrowseScreen.kt │ │ │ │ │ │ │ │ ├── SettingsDataScreen.kt │ │ │ │ │ │ │ │ ├── SettingsDownloadScreen.kt │ │ │ │ │ │ │ │ ├── SettingsLibraryScreen.kt │ │ │ │ │ │ │ │ ├── SettingsMainScreen.kt │ │ │ │ │ │ │ │ ├── SettingsReaderScreen.kt │ │ │ │ │ │ │ │ ├── SettingsSearchScreen.kt │ │ │ │ │ │ │ │ ├── SettingsSecurityScreen.kt │ │ │ │ │ │ │ │ ├── SettingsTrackingScreen.kt │ │ │ │ │ │ │ │ ├── about/ │ │ │ │ │ │ │ │ │ ├── AboutScreen.kt │ │ │ │ │ │ │ │ │ ├── OpenSourceLibraryLicenseScreen.kt │ │ │ │ │ │ │ │ │ └── OpenSourceLicensesScreen.kt │ │ │ │ │ │ │ │ ├── advanced/ │ │ │ │ │ │ │ │ │ ├── ClearAnimeDatabaseScreen.kt │ │ │ │ │ │ │ │ │ └── ClearDatabaseScreen.kt │ │ │ │ │ │ │ │ ├── appearance/ │ │ │ │ │ │ │ │ │ └── AppLanguageScreen.kt │ │ │ │ │ │ │ │ ├── browse/ │ │ │ │ │ │ │ │ │ ├── AnimeExtensionReposScreen.kt │ │ │ │ │ │ │ │ │ ├── AnimeExtensionReposScreenModel.kt │ │ │ │ │ │ │ │ │ ├── MangaExtensionReposScreen.kt │ │ │ │ │ │ │ │ │ ├── MangaExtensionReposScreenModel.kt │ │ │ │ │ │ │ │ │ └── components/ │ │ │ │ │ │ │ │ │ ├── ExtensionReposContent.kt │ │ │ │ │ │ │ │ │ ├── ExtensionReposDialogs.kt │ │ │ │ │ │ │ │ │ └── ExtensionReposScreen.kt │ │ │ │ │ │ │ │ ├── data/ │ │ │ │ │ │ │ │ │ ├── CreateBackupScreen.kt │ │ │ │ │ │ │ │ │ ├── RestoreBackupScreen.kt │ │ │ │ │ │ │ │ │ └── StorageInfo.kt │ │ │ │ │ │ │ │ ├── debug/ │ │ │ │ │ │ │ │ │ ├── BackupSchemaScreen.kt │ │ │ │ │ │ │ │ │ ├── DebugInfoScreen.kt │ │ │ │ │ │ │ │ │ └── WorkerInfoScreen.kt │ │ │ │ │ │ │ │ └── player/ │ │ │ │ │ │ │ │ ├── PlayerSettingsAdvancedScreen.kt │ │ │ │ │ │ │ │ ├── PlayerSettingsAudioScreen.kt │ │ │ │ │ │ │ │ ├── PlayerSettingsDecoderScreen.kt │ │ │ │ │ │ │ │ ├── PlayerSettingsGesturesScreen.kt │ │ │ │ │ │ │ │ ├── PlayerSettingsMainScreen.kt │ │ │ │ │ │ │ │ ├── PlayerSettingsPlayerScreen.kt │ │ │ │ │ │ │ │ ├── PlayerSettingsSubtitleScreen.kt │ │ │ │ │ │ │ │ ├── custombutton/ │ │ │ │ │ │ │ │ │ ├── PlayerSettingsCustomButtonScreen.kt │ │ │ │ │ │ │ │ │ ├── PlayerSettingsCustomButtonScreenModel.kt │ │ │ │ │ │ │ │ │ └── components/ │ │ │ │ │ │ │ │ │ ├── CustomButtonDialogs.kt │ │ │ │ │ │ │ │ │ ├── CustomButtonListItem.kt │ │ │ │ │ │ │ │ │ └── CustomButtonScreen.kt │ │ │ │ │ │ │ │ └── editor/ │ │ │ │ │ │ │ │ ├── PlayerSettingsEditorScreen.kt │ │ │ │ │ │ │ │ ├── PlayerSettingsEditorScreenModel.kt │ │ │ │ │ │ │ │ ├── codeeditor/ │ │ │ │ │ │ │ │ │ ├── CodeEditScreen.kt │ │ │ │ │ │ │ │ │ ├── CodeEditScreenModel.kt │ │ │ │ │ │ │ │ │ ├── Highlight.kt │ │ │ │ │ │ │ │ │ └── SyntaxHighlight.kt │ │ │ │ │ │ │ │ └── components/ │ │ │ │ │ │ │ │ ├── EditorDialogs.kt │ │ │ │ │ │ │ │ ├── EditorScreen.kt │ │ │ │ │ │ │ │ └── EditorTypeDropdown.kt │ │ │ │ │ │ │ └── widget/ │ │ │ │ │ │ │ ├── AppThemeModePreferenceWidget.kt │ │ │ │ │ │ │ ├── AppThemePreferenceWidget.kt │ │ │ │ │ │ │ ├── BasePreferenceWidget.kt │ │ │ │ │ │ │ ├── EditTextPreferenceWidget.kt │ │ │ │ │ │ │ ├── InfoWidget.kt │ │ │ │ │ │ │ ├── ListPreferenceWidget.kt │ │ │ │ │ │ │ ├── MultiSelectListPreferenceWidget.kt │ │ │ │ │ │ │ ├── PreferenceGroupHeader.kt │ │ │ │ │ │ │ ├── SwitchPreferenceWidget.kt │ │ │ │ │ │ │ ├── TextPreferenceWidget.kt │ │ │ │ │ │ │ ├── TrackingPreferenceWidget.kt │ │ │ │ │ │ │ └── TriStateListDialog.kt │ │ │ │ │ │ ├── stats/ │ │ │ │ │ │ │ ├── AnimeStatsScreenContent.kt │ │ │ │ │ │ │ ├── MangaStatsScreenContent.kt │ │ │ │ │ │ │ ├── StatsScreenState.kt │ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ │ └── StatsItem.kt │ │ │ │ │ │ │ └── data/ │ │ │ │ │ │ │ └── StatsData.kt │ │ │ │ │ │ └── storage/ │ │ │ │ │ │ ├── CumulativeStorage.kt │ │ │ │ │ │ ├── SelectStorageCategory.kt │ │ │ │ │ │ ├── StorageItem.kt │ │ │ │ │ │ ├── StorageScreenContent.kt │ │ │ │ │ │ └── StorageScreenState.kt │ │ │ │ │ ├── player/ │ │ │ │ │ │ └── components/ │ │ │ │ │ │ ├── ExpandableCard.kt │ │ │ │ │ │ ├── ExposedTextDropDownMenu.kt │ │ │ │ │ │ ├── OutlinedNumericChooser.kt │ │ │ │ │ │ ├── OvalBox.kt │ │ │ │ │ │ ├── PlayerSheet.kt │ │ │ │ │ │ ├── RepeatingIconButton.kt │ │ │ │ │ │ ├── SliderItem.kt │ │ │ │ │ │ ├── SwitchPreference.kt │ │ │ │ │ │ └── TintedSliderItem.kt │ │ │ │ │ ├── reader/ │ │ │ │ │ │ ├── ChapterTransition.kt │ │ │ │ │ │ ├── DisplayRefreshHost.kt │ │ │ │ │ │ ├── OrientationSelectDialog.kt │ │ │ │ │ │ ├── PageIndicatorText.kt │ │ │ │ │ │ ├── ReaderContentOverlay.kt │ │ │ │ │ │ ├── ReaderPageActionsDialog.kt │ │ │ │ │ │ ├── ReadingModeSelectDialog.kt │ │ │ │ │ │ ├── appbars/ │ │ │ │ │ │ │ ├── BottomReaderBar.kt │ │ │ │ │ │ │ └── ReaderAppBars.kt │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── ChapterNavigator.kt │ │ │ │ │ │ │ └── ModeSelectionDialog.kt │ │ │ │ │ │ └── settings/ │ │ │ │ │ │ ├── ColorFilterPage.kt │ │ │ │ │ │ ├── GeneralSettingsPage.kt │ │ │ │ │ │ ├── ReaderSettingsDialog.kt │ │ │ │ │ │ └── ReadingModePage.kt │ │ │ │ │ ├── theme/ │ │ │ │ │ │ ├── TachiyomiTheme.kt │ │ │ │ │ │ └── colorscheme/ │ │ │ │ │ │ ├── BaseColorScheme.kt │ │ │ │ │ │ ├── CloudflareColorScheme.kt │ │ │ │ │ │ ├── CottoncandyColorScheme.kt │ │ │ │ │ │ ├── DoomColorScheme.kt │ │ │ │ │ │ ├── GreenAppleColorScheme.kt │ │ │ │ │ │ ├── LavenderColorScheme.kt │ │ │ │ │ │ ├── MatrixColorScheme.kt │ │ │ │ │ │ ├── MidnightDuskColorScheme.kt │ │ │ │ │ │ ├── MochaColorScheme.kt │ │ │ │ │ │ ├── MonetColorScheme.kt │ │ │ │ │ │ ├── MonochromeColorScheme.kt │ │ │ │ │ │ ├── NordColorScheme.kt │ │ │ │ │ │ ├── SapphireColorScheme.kt │ │ │ │ │ │ ├── StrawberryColorScheme.kt │ │ │ │ │ │ ├── TachiyomiColorScheme.kt │ │ │ │ │ │ ├── TakoColorScheme.kt │ │ │ │ │ │ ├── TealTurqoiseColorScheme.kt │ │ │ │ │ │ ├── TidalWaveColorScheme.kt │ │ │ │ │ │ ├── YinYangColorScheme.kt │ │ │ │ │ │ └── YotsubaColorScheme.kt │ │ │ │ │ ├── track/ │ │ │ │ │ │ ├── TrackInfoDialogSelector.kt │ │ │ │ │ │ ├── anime/ │ │ │ │ │ │ │ ├── AnimeTrackInfoDialogHome.kt │ │ │ │ │ │ │ ├── AnimeTrackInfoDialogHomePreviewProvider.kt │ │ │ │ │ │ │ ├── AnimeTrackerSearch.kt │ │ │ │ │ │ │ └── AnimeTrackerSearchPreviewProvider.kt │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── TrackLogoIcon.kt │ │ │ │ │ │ │ └── TrackLogoIconPreviewProvider.kt │ │ │ │ │ │ └── manga/ │ │ │ │ │ │ ├── MangaTrackInfoDialogHome.kt │ │ │ │ │ │ ├── MangaTrackInfoDialogHomePreviewProvider.kt │ │ │ │ │ │ ├── MangaTrackerSearch.kt │ │ │ │ │ │ └── MangaTrackerSearchPreviewProvider.kt │ │ │ │ │ ├── updates/ │ │ │ │ │ │ ├── UpdatesDialog.kt │ │ │ │ │ │ ├── anime/ │ │ │ │ │ │ │ ├── AnimeUpdatesScreen.kt │ │ │ │ │ │ │ └── AnimeUpdatesUiItem.kt │ │ │ │ │ │ └── manga/ │ │ │ │ │ │ ├── MangaUpdatesScreen.kt │ │ │ │ │ │ └── MangaUpdatesUiItem.kt │ │ │ │ │ ├── util/ │ │ │ │ │ │ ├── ExceptionFormatter.kt │ │ │ │ │ │ ├── FastScrollAnimateItem.kt │ │ │ │ │ │ ├── ItemNumberFormatter.kt │ │ │ │ │ │ ├── Navigator.kt │ │ │ │ │ │ ├── Permissions.kt │ │ │ │ │ │ ├── Resources.kt │ │ │ │ │ │ ├── TimeUtils.kt │ │ │ │ │ │ └── WindowSize.kt │ │ │ │ │ └── webview/ │ │ │ │ │ └── WebViewScreenContent.kt │ │ │ │ ├── tachiyomi/ │ │ │ │ │ ├── App.kt │ │ │ │ │ ├── AppInfo.kt │ │ │ │ │ ├── crash/ │ │ │ │ │ │ ├── CrashActivity.kt │ │ │ │ │ │ └── GlobalExceptionHandler.kt │ │ │ │ │ ├── data/ │ │ │ │ │ │ ├── backup/ │ │ │ │ │ │ │ ├── BackupDecoder.kt │ │ │ │ │ │ │ ├── BackupDetector.kt │ │ │ │ │ │ │ ├── BackupFileValidator.kt │ │ │ │ │ │ │ ├── BackupNotifier.kt │ │ │ │ │ │ │ ├── create/ │ │ │ │ │ │ │ │ ├── BackupCreateJob.kt │ │ │ │ │ │ │ │ ├── BackupCreator.kt │ │ │ │ │ │ │ │ ├── BackupOptions.kt │ │ │ │ │ │ │ │ └── creators/ │ │ │ │ │ │ │ │ ├── AnimeBackupCreator.kt │ │ │ │ │ │ │ │ ├── AnimeCategoriesBackupCreator.kt │ │ │ │ │ │ │ │ ├── AnimeExtensionRepoBackupCreator.kt │ │ │ │ │ │ │ │ ├── AnimeSourcesBackupCreator.kt │ │ │ │ │ │ │ │ ├── CustomButtonBackupCreator.kt │ │ │ │ │ │ │ │ ├── ExtensionsBackupCreator.kt │ │ │ │ │ │ │ │ ├── MangaBackupCreator.kt │ │ │ │ │ │ │ │ ├── MangaCategoriesBackupCreator.kt │ │ │ │ │ │ │ │ ├── MangaExtensionRepoBackupCreator.kt │ │ │ │ │ │ │ │ ├── MangaSourcesBackupCreator.kt │ │ │ │ │ │ │ │ └── PreferenceBackupCreator.kt │ │ │ │ │ │ │ ├── full/ │ │ │ │ │ │ │ │ └── models/ │ │ │ │ │ │ │ │ ├── Backup.kt │ │ │ │ │ │ │ │ └── BackupPreference.kt │ │ │ │ │ │ │ ├── models/ │ │ │ │ │ │ │ │ ├── Backup.kt │ │ │ │ │ │ │ │ ├── BackupAnime.kt │ │ │ │ │ │ │ │ ├── BackupAnimeHistory.kt │ │ │ │ │ │ │ │ ├── BackupAnimeSource.kt │ │ │ │ │ │ │ │ ├── BackupAnimeTracking.kt │ │ │ │ │ │ │ │ ├── BackupCategory.kt │ │ │ │ │ │ │ │ ├── BackupChapter.kt │ │ │ │ │ │ │ │ ├── BackupCustomButtons.kt │ │ │ │ │ │ │ │ ├── BackupEpisode.kt │ │ │ │ │ │ │ │ ├── BackupExtension.kt │ │ │ │ │ │ │ │ ├── BackupExtensionPreferences.kt │ │ │ │ │ │ │ │ ├── BackupExtensionRepos.kt │ │ │ │ │ │ │ │ ├── BackupHistory.kt │ │ │ │ │ │ │ │ ├── BackupManga.kt │ │ │ │ │ │ │ │ ├── BackupPreference.kt │ │ │ │ │ │ │ │ ├── BackupSource.kt │ │ │ │ │ │ │ │ └── BackupTracking.kt │ │ │ │ │ │ │ └── restore/ │ │ │ │ │ │ │ ├── BackupRestoreJob.kt │ │ │ │ │ │ │ ├── BackupRestorer.kt │ │ │ │ │ │ │ ├── RestoreOptions.kt │ │ │ │ │ │ │ └── restorers/ │ │ │ │ │ │ │ ├── AnimeCategoriesRestorer.kt │ │ │ │ │ │ │ ├── AnimeExtensionRepoRestorer.kt │ │ │ │ │ │ │ ├── AnimeRestorer.kt │ │ │ │ │ │ │ ├── CustomButtonRestorer.kt │ │ │ │ │ │ │ ├── ExtensionsRestorer.kt │ │ │ │ │ │ │ ├── MangaCategoriesRestorer.kt │ │ │ │ │ │ │ ├── MangaExtensionRepoRestorer.kt │ │ │ │ │ │ │ ├── MangaRestorer.kt │ │ │ │ │ │ │ └── PreferenceRestorer.kt │ │ │ │ │ │ ├── cache/ │ │ │ │ │ │ │ ├── AnimeBackgroundCache.kt │ │ │ │ │ │ │ ├── AnimeCoverCache.kt │ │ │ │ │ │ │ ├── ChapterCache.kt │ │ │ │ │ │ │ └── MangaCoverCache.kt │ │ │ │ │ │ ├── coil/ │ │ │ │ │ │ │ ├── AnimeCoverKeyer.kt │ │ │ │ │ │ │ ├── AnimeImageFetcher.kt │ │ │ │ │ │ │ ├── BufferedSourceFetcher.kt │ │ │ │ │ │ │ ├── MangaCoverFetcher.kt │ │ │ │ │ │ │ ├── MangaCoverKeyer.kt │ │ │ │ │ │ │ ├── TachiyomiImageDecoder.kt │ │ │ │ │ │ │ └── Utils.kt │ │ │ │ │ │ ├── database/ │ │ │ │ │ │ │ └── models/ │ │ │ │ │ │ │ ├── anime/ │ │ │ │ │ │ │ │ ├── AnimeTrack.kt │ │ │ │ │ │ │ │ ├── AnimeTrackImpl.kt │ │ │ │ │ │ │ │ ├── Episode.kt │ │ │ │ │ │ │ │ └── EpisodeImpl.kt │ │ │ │ │ │ │ └── manga/ │ │ │ │ │ │ │ ├── Chapter.kt │ │ │ │ │ │ │ ├── ChapterImpl.kt │ │ │ │ │ │ │ ├── MangaTrack.kt │ │ │ │ │ │ │ └── MangaTrackImpl.kt │ │ │ │ │ │ ├── download/ │ │ │ │ │ │ │ ├── anime/ │ │ │ │ │ │ │ │ ├── AnimeDownloadCache.kt │ │ │ │ │ │ │ │ ├── AnimeDownloadJob.kt │ │ │ │ │ │ │ │ ├── AnimeDownloadManager.kt │ │ │ │ │ │ │ │ ├── AnimeDownloadNotifier.kt │ │ │ │ │ │ │ │ ├── AnimeDownloadPendingDeleter.kt │ │ │ │ │ │ │ │ ├── AnimeDownloadProvider.kt │ │ │ │ │ │ │ │ ├── AnimeDownloadStore.kt │ │ │ │ │ │ │ │ ├── AnimeDownloader.kt │ │ │ │ │ │ │ │ └── model/ │ │ │ │ │ │ │ │ ├── AnimeDownload.kt │ │ │ │ │ │ │ │ └── AnimeDownloadPart.kt │ │ │ │ │ │ │ └── manga/ │ │ │ │ │ │ │ ├── MangaDownloadCache.kt │ │ │ │ │ │ │ ├── MangaDownloadJob.kt │ │ │ │ │ │ │ ├── MangaDownloadManager.kt │ │ │ │ │ │ │ ├── MangaDownloadNotifier.kt │ │ │ │ │ │ │ ├── MangaDownloadPendingDeleter.kt │ │ │ │ │ │ │ ├── MangaDownloadProvider.kt │ │ │ │ │ │ │ ├── MangaDownloadStore.kt │ │ │ │ │ │ │ ├── MangaDownloader.kt │ │ │ │ │ │ │ └── model/ │ │ │ │ │ │ │ └── MangaDownload.kt │ │ │ │ │ │ ├── export/ │ │ │ │ │ │ │ └── LibraryExporter.kt │ │ │ │ │ │ ├── library/ │ │ │ │ │ │ │ ├── anime/ │ │ │ │ │ │ │ │ ├── AnimeLibraryUpdateJob.kt │ │ │ │ │ │ │ │ ├── AnimeLibraryUpdateNotifier.kt │ │ │ │ │ │ │ │ └── AnimeMetadataUpdateJob.kt │ │ │ │ │ │ │ └── manga/ │ │ │ │ │ │ │ ├── MangaLibraryUpdateJob.kt │ │ │ │ │ │ │ ├── MangaLibraryUpdateNotifier.kt │ │ │ │ │ │ │ └── MangaMetadataUpdateJob.kt │ │ │ │ │ │ ├── notification/ │ │ │ │ │ │ │ ├── NotificationHandler.kt │ │ │ │ │ │ │ ├── NotificationReceiver.kt │ │ │ │ │ │ │ └── Notifications.kt │ │ │ │ │ │ ├── preference/ │ │ │ │ │ │ │ └── SharedPreferencesDataStore.kt │ │ │ │ │ │ ├── saver/ │ │ │ │ │ │ │ └── ImageSaver.kt │ │ │ │ │ │ ├── track/ │ │ │ │ │ │ │ ├── AnimeTracker.kt │ │ │ │ │ │ │ ├── BaseTracker.kt │ │ │ │ │ │ │ ├── DeletableAnimeTracker.kt │ │ │ │ │ │ │ ├── DeletableMangaTracker.kt │ │ │ │ │ │ │ ├── EnhancedAnimeTracker.kt │ │ │ │ │ │ │ ├── EnhancedMangaTracker.kt │ │ │ │ │ │ │ ├── MangaTracker.kt │ │ │ │ │ │ │ ├── Tracker.kt │ │ │ │ │ │ │ ├── TrackerManager.kt │ │ │ │ │ │ │ ├── anilist/ │ │ │ │ │ │ │ │ ├── Anilist.kt │ │ │ │ │ │ │ │ ├── AnilistApi.kt │ │ │ │ │ │ │ │ ├── AnilistInterceptor.kt │ │ │ │ │ │ │ │ ├── AnilistUtils.kt │ │ │ │ │ │ │ │ └── dto/ │ │ │ │ │ │ │ │ ├── ALAddEntry.kt │ │ │ │ │ │ │ │ ├── ALAnime.kt │ │ │ │ │ │ │ │ ├── ALFuzzyDate.kt │ │ │ │ │ │ │ │ ├── ALManga.kt │ │ │ │ │ │ │ │ ├── ALOAuth.kt │ │ │ │ │ │ │ │ ├── ALSearch.kt │ │ │ │ │ │ │ │ ├── ALSearchItem.kt │ │ │ │ │ │ │ │ ├── ALUser.kt │ │ │ │ │ │ │ │ └── ALUserList.kt │ │ │ │ │ │ │ ├── bangumi/ │ │ │ │ │ │ │ │ ├── Bangumi.kt │ │ │ │ │ │ │ │ ├── BangumiApi.kt │ │ │ │ │ │ │ │ ├── BangumiInterceptor.kt │ │ │ │ │ │ │ │ ├── BangumiUtils.kt │ │ │ │ │ │ │ │ └── dto/ │ │ │ │ │ │ │ │ ├── BGMCollectionResponse.kt │ │ │ │ │ │ │ │ ├── BGMOAuth.kt │ │ │ │ │ │ │ │ ├── BGMSearch.kt │ │ │ │ │ │ │ │ └── BGMUser.kt │ │ │ │ │ │ │ ├── jellyfin/ │ │ │ │ │ │ │ │ ├── Jellyfin.kt │ │ │ │ │ │ │ │ ├── JellyfinApi.kt │ │ │ │ │ │ │ │ ├── JellyfinInterceptor.kt │ │ │ │ │ │ │ │ └── dto/ │ │ │ │ │ │ │ │ └── JFItem.kt │ │ │ │ │ │ │ ├── kavita/ │ │ │ │ │ │ │ │ ├── Kavita.kt │ │ │ │ │ │ │ │ ├── KavitaApi.kt │ │ │ │ │ │ │ │ ├── KavitaInterceptor.kt │ │ │ │ │ │ │ │ └── KavitaModels.kt │ │ │ │ │ │ │ ├── kitsu/ │ │ │ │ │ │ │ │ ├── Kitsu.kt │ │ │ │ │ │ │ │ ├── KitsuApi.kt │ │ │ │ │ │ │ │ ├── KitsuDateHelper.kt │ │ │ │ │ │ │ │ ├── KitsuInterceptor.kt │ │ │ │ │ │ │ │ ├── KitsuUtils.kt │ │ │ │ │ │ │ │ └── dto/ │ │ │ │ │ │ │ │ ├── KitsuAddEntry.kt │ │ │ │ │ │ │ │ ├── KitsuListSearch.kt │ │ │ │ │ │ │ │ ├── KitsuOAuth.kt │ │ │ │ │ │ │ │ ├── KitsuSearch.kt │ │ │ │ │ │ │ │ ├── KitsuSearchItemCover.kt │ │ │ │ │ │ │ │ └── KitsuUser.kt │ │ │ │ │ │ │ ├── komga/ │ │ │ │ │ │ │ │ ├── Komga.kt │ │ │ │ │ │ │ │ ├── KomgaApi.kt │ │ │ │ │ │ │ │ └── KomgaModels.kt │ │ │ │ │ │ │ ├── mangaupdates/ │ │ │ │ │ │ │ │ ├── MangaUpdates.kt │ │ │ │ │ │ │ │ ├── MangaUpdatesApi.kt │ │ │ │ │ │ │ │ ├── MangaUpdatesInterceptor.kt │ │ │ │ │ │ │ │ └── dto/ │ │ │ │ │ │ │ │ ├── MUContext.kt │ │ │ │ │ │ │ │ ├── MUImage.kt │ │ │ │ │ │ │ │ ├── MUListItem.kt │ │ │ │ │ │ │ │ ├── MULoginResponse.kt │ │ │ │ │ │ │ │ ├── MURating.kt │ │ │ │ │ │ │ │ ├── MURecord.kt │ │ │ │ │ │ │ │ ├── MUSearch.kt │ │ │ │ │ │ │ │ ├── MUSeries.kt │ │ │ │ │ │ │ │ ├── MUStatus.kt │ │ │ │ │ │ │ │ └── MUUrl.kt │ │ │ │ │ │ │ ├── model/ │ │ │ │ │ │ │ │ ├── AnimeTrackSearch.kt │ │ │ │ │ │ │ │ └── MangaTrackSearch.kt │ │ │ │ │ │ │ ├── myanimelist/ │ │ │ │ │ │ │ │ ├── MyAnimeList.kt │ │ │ │ │ │ │ │ ├── MyAnimeListApi.kt │ │ │ │ │ │ │ │ ├── MyAnimeListInterceptor.kt │ │ │ │ │ │ │ │ ├── MyAnimeListUtils.kt │ │ │ │ │ │ │ │ └── dto/ │ │ │ │ │ │ │ │ ├── MALAnime.kt │ │ │ │ │ │ │ │ ├── MALList.kt │ │ │ │ │ │ │ │ ├── MALManga.kt │ │ │ │ │ │ │ │ ├── MALOAuth.kt │ │ │ │ │ │ │ │ ├── MALSearch.kt │ │ │ │ │ │ │ │ ├── MALUser.kt │ │ │ │ │ │ │ │ └── MALUserListSearch.kt │ │ │ │ │ │ │ ├── shikimori/ │ │ │ │ │ │ │ │ ├── Shikimori.kt │ │ │ │ │ │ │ │ ├── ShikimoriApi.kt │ │ │ │ │ │ │ │ ├── ShikimoriInterceptor.kt │ │ │ │ │ │ │ │ ├── ShikimoriUtils.kt │ │ │ │ │ │ │ │ └── dto/ │ │ │ │ │ │ │ │ ├── SMAddEntryResponse.kt │ │ │ │ │ │ │ │ ├── SMEntry.kt │ │ │ │ │ │ │ │ ├── SMOAuth.kt │ │ │ │ │ │ │ │ ├── SMUser.kt │ │ │ │ │ │ │ │ └── SMUserListEntry.kt │ │ │ │ │ │ │ ├── simkl/ │ │ │ │ │ │ │ │ ├── Simkl.kt │ │ │ │ │ │ │ │ ├── SimklApi.kt │ │ │ │ │ │ │ │ ├── SimklInterceptor.kt │ │ │ │ │ │ │ │ ├── SimklUtils.kt │ │ │ │ │ │ │ │ └── dto/ │ │ │ │ │ │ │ │ ├── SimklOAuth.kt │ │ │ │ │ │ │ │ ├── SimklSearch.kt │ │ │ │ │ │ │ │ ├── SimklSyncItem.kt │ │ │ │ │ │ │ │ ├── SimklSyncWatched.kt │ │ │ │ │ │ │ │ └── SimklUser.kt │ │ │ │ │ │ │ └── suwayomi/ │ │ │ │ │ │ │ ├── Suwayomi.kt │ │ │ │ │ │ │ ├── SuwayomiApi.kt │ │ │ │ │ │ │ └── SuwayomiModels.kt │ │ │ │ │ │ └── updater/ │ │ │ │ │ │ ├── AppUpdateChecker.kt │ │ │ │ │ │ ├── AppUpdateDownloadJob.kt │ │ │ │ │ │ └── AppUpdateNotifier.kt │ │ │ │ │ ├── di/ │ │ │ │ │ │ ├── AppModule.kt │ │ │ │ │ │ └── PreferenceModule.kt │ │ │ │ │ ├── extension/ │ │ │ │ │ │ ├── ExtensionUpdateNotifier.kt │ │ │ │ │ │ ├── InstallStep.kt │ │ │ │ │ │ ├── anime/ │ │ │ │ │ │ │ ├── AnimeExtensionManager.kt │ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ │ └── AnimeExtensionApi.kt │ │ │ │ │ │ │ ├── installer/ │ │ │ │ │ │ │ │ ├── InstallerAnime.kt │ │ │ │ │ │ │ │ ├── PackageInstallerInstallerAnime.kt │ │ │ │ │ │ │ │ └── ShizukuInstallerAnime.kt │ │ │ │ │ │ │ ├── model/ │ │ │ │ │ │ │ │ ├── AnimeExtension.kt │ │ │ │ │ │ │ │ └── AnimeLoadResult.kt │ │ │ │ │ │ │ └── util/ │ │ │ │ │ │ │ ├── AnimeExtensionInstallActivity.kt │ │ │ │ │ │ │ ├── AnimeExtensionInstallReceiver.kt │ │ │ │ │ │ │ ├── AnimeExtensionInstallService.kt │ │ │ │ │ │ │ ├── AnimeExtensionInstaller.kt │ │ │ │ │ │ │ └── AnimeExtensionLoader.kt │ │ │ │ │ │ └── manga/ │ │ │ │ │ │ ├── MangaExtensionManager.kt │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ └── MangaExtensionApi.kt │ │ │ │ │ │ ├── installer/ │ │ │ │ │ │ │ ├── InstallerManga.kt │ │ │ │ │ │ │ ├── PackageInstallerInstallerManga.kt │ │ │ │ │ │ │ └── ShizukuInstallerManga.kt │ │ │ │ │ │ ├── model/ │ │ │ │ │ │ │ ├── MangaExtension.kt │ │ │ │ │ │ │ └── MangaLoadResult.kt │ │ │ │ │ │ └── util/ │ │ │ │ │ │ ├── MangaExtensionInstallActivity.kt │ │ │ │ │ │ ├── MangaExtensionInstallReceiver.kt │ │ │ │ │ │ ├── MangaExtensionInstallService.kt │ │ │ │ │ │ ├── MangaExtensionInstaller.kt │ │ │ │ │ │ └── MangaExtensionLoader.kt │ │ │ │ │ ├── source/ │ │ │ │ │ │ ├── anime/ │ │ │ │ │ │ │ ├── AndroidAnimeSourceManager.kt │ │ │ │ │ │ │ └── AnimeSourceExtensions.kt │ │ │ │ │ │ └── manga/ │ │ │ │ │ │ ├── AndroidMangaSourceManager.kt │ │ │ │ │ │ └── MangaSourceExtensions.kt │ │ │ │ │ ├── ui/ │ │ │ │ │ │ ├── base/ │ │ │ │ │ │ │ ├── activity/ │ │ │ │ │ │ │ │ └── BaseActivity.kt │ │ │ │ │ │ │ └── delegate/ │ │ │ │ │ │ │ ├── SecureActivityDelegate.kt │ │ │ │ │ │ │ └── ThemingDelegate.kt │ │ │ │ │ │ ├── browse/ │ │ │ │ │ │ │ ├── BrowseTab.kt │ │ │ │ │ │ │ ├── anime/ │ │ │ │ │ │ │ │ ├── extension/ │ │ │ │ │ │ │ │ │ ├── AnimeExtensionFilterScreen.kt │ │ │ │ │ │ │ │ │ ├── AnimeExtensionFilterScreenModel.kt │ │ │ │ │ │ │ │ │ ├── AnimeExtensionsScreenModel.kt │ │ │ │ │ │ │ │ │ ├── AnimeExtensionsTab.kt │ │ │ │ │ │ │ │ │ └── details/ │ │ │ │ │ │ │ │ │ ├── AnimeExtensionDetailsScreen.kt │ │ │ │ │ │ │ │ │ ├── AnimeExtensionDetailsScreenModel.kt │ │ │ │ │ │ │ │ │ └── AnimeSourcePreferencesScreen.kt │ │ │ │ │ │ │ │ ├── migration/ │ │ │ │ │ │ │ │ │ ├── AnimeMigrationFlags.kt │ │ │ │ │ │ │ │ │ ├── anime/ │ │ │ │ │ │ │ │ │ │ ├── MigrateAnimeScreen.kt │ │ │ │ │ │ │ │ │ │ ├── MigrateAnimeScreenModel.kt │ │ │ │ │ │ │ │ │ │ └── season/ │ │ │ │ │ │ │ │ │ │ ├── MigrateSeasonSelectScreen.kt │ │ │ │ │ │ │ │ │ │ └── MigrateSeasonSelectScreenModel.kt │ │ │ │ │ │ │ │ │ ├── search/ │ │ │ │ │ │ │ │ │ │ ├── AnimeMigrateSearchScreenDialogScreenModel.kt │ │ │ │ │ │ │ │ │ │ ├── AnimeSourceSearchScreen.kt │ │ │ │ │ │ │ │ │ │ ├── MigrateAnimeDialog.kt │ │ │ │ │ │ │ │ │ │ ├── MigrateAnimeSearchScreen.kt │ │ │ │ │ │ │ │ │ │ └── MigrateAnimeSearchScreenModel.kt │ │ │ │ │ │ │ │ │ └── sources/ │ │ │ │ │ │ │ │ │ ├── MigrateAnimeSourceScreenModel.kt │ │ │ │ │ │ │ │ │ └── MigrateAnimeSourceTab.kt │ │ │ │ │ │ │ │ └── source/ │ │ │ │ │ │ │ │ ├── AnimeSourcesFilterScreen.kt │ │ │ │ │ │ │ │ ├── AnimeSourcesFilterScreenModel.kt │ │ │ │ │ │ │ │ ├── AnimeSourcesScreenModel.kt │ │ │ │ │ │ │ │ ├── AnimeSourcesTab.kt │ │ │ │ │ │ │ │ ├── browse/ │ │ │ │ │ │ │ │ │ ├── BrowseAnimeSourceScreen.kt │ │ │ │ │ │ │ │ │ ├── BrowseAnimeSourceScreenModel.kt │ │ │ │ │ │ │ │ │ └── SourceFilterAnimeDialog.kt │ │ │ │ │ │ │ │ └── globalsearch/ │ │ │ │ │ │ │ │ ├── AnimeSearchScreenModel.kt │ │ │ │ │ │ │ │ ├── GlobalAnimeSearchScreen.kt │ │ │ │ │ │ │ │ └── GlobalAnimeSearchScreenModel.kt │ │ │ │ │ │ │ └── manga/ │ │ │ │ │ │ │ ├── extension/ │ │ │ │ │ │ │ │ ├── MangaExtensionFilterScreen.kt │ │ │ │ │ │ │ │ ├── MangaExtensionFilterScreenModel.kt │ │ │ │ │ │ │ │ ├── MangaExtensionsScreenModel.kt │ │ │ │ │ │ │ │ ├── MangaExtensionsTab.kt │ │ │ │ │ │ │ │ └── details/ │ │ │ │ │ │ │ │ ├── MangaExtensionDetailsScreen.kt │ │ │ │ │ │ │ │ ├── MangaExtensionDetailsScreenModel.kt │ │ │ │ │ │ │ │ └── MangaSourcePreferencesScreen.kt │ │ │ │ │ │ │ ├── migration/ │ │ │ │ │ │ │ │ ├── MangaMigrationFlags.kt │ │ │ │ │ │ │ │ ├── manga/ │ │ │ │ │ │ │ │ │ ├── MigrateMangaScreen.kt │ │ │ │ │ │ │ │ │ └── MigrateMangaScreenModel.kt │ │ │ │ │ │ │ │ ├── search/ │ │ │ │ │ │ │ │ │ ├── MangaMigrateSearchScreenDialogScreenModel.kt │ │ │ │ │ │ │ │ │ ├── MangaSourceSearchScreen.kt │ │ │ │ │ │ │ │ │ ├── MigrateMangaDialog.kt │ │ │ │ │ │ │ │ │ ├── MigrateMangaSearchScreen.kt │ │ │ │ │ │ │ │ │ └── MigrateMangaSearchScreenModel.kt │ │ │ │ │ │ │ │ └── sources/ │ │ │ │ │ │ │ │ ├── MigrateMangaSourceScreenModel.kt │ │ │ │ │ │ │ │ └── MigrateMangaSourceTab.kt │ │ │ │ │ │ │ └── source/ │ │ │ │ │ │ │ ├── MangaSourcesFilterScreen.kt │ │ │ │ │ │ │ ├── MangaSourcesFilterScreenModel.kt │ │ │ │ │ │ │ ├── MangaSourcesScreenModel.kt │ │ │ │ │ │ │ ├── MangaSourcesTab.kt │ │ │ │ │ │ │ ├── browse/ │ │ │ │ │ │ │ │ ├── BrowseMangaSourceScreen.kt │ │ │ │ │ │ │ │ ├── BrowseMangaSourceScreenModel.kt │ │ │ │ │ │ │ │ └── SourceFilterMangaDialog.kt │ │ │ │ │ │ │ └── globalsearch/ │ │ │ │ │ │ │ ├── GlobalMangaSearchScreen.kt │ │ │ │ │ │ │ ├── GlobalMangaSearchScreenModel.kt │ │ │ │ │ │ │ └── MangaSearchScreenModel.kt │ │ │ │ │ │ ├── category/ │ │ │ │ │ │ │ ├── CategoriesTab.kt │ │ │ │ │ │ │ ├── anime/ │ │ │ │ │ │ │ │ ├── AnimeCategoryScreenModel.kt │ │ │ │ │ │ │ │ └── AnimeCategoryTab.kt │ │ │ │ │ │ │ └── manga/ │ │ │ │ │ │ │ ├── MangaCategoryScreenModel.kt │ │ │ │ │ │ │ └── MangaCategoryTab.kt │ │ │ │ │ │ ├── deeplink/ │ │ │ │ │ │ │ ├── DeepLinkScreenType.kt │ │ │ │ │ │ │ ├── anime/ │ │ │ │ │ │ │ │ ├── DeepLinkAnimeActivity.kt │ │ │ │ │ │ │ │ ├── DeepLinkAnimeScreen.kt │ │ │ │ │ │ │ │ └── DeepLinkAnimeScreenModel.kt │ │ │ │ │ │ │ └── manga/ │ │ │ │ │ │ │ ├── DeepLinkMangaActivity.kt │ │ │ │ │ │ │ ├── DeepLinkMangaScreen.kt │ │ │ │ │ │ │ └── DeepLinkMangaScreenModel.kt │ │ │ │ │ │ ├── download/ │ │ │ │ │ │ │ ├── DownloadsTab.kt │ │ │ │ │ │ │ ├── anime/ │ │ │ │ │ │ │ │ ├── AnimeDownloadAdapter.kt │ │ │ │ │ │ │ │ ├── AnimeDownloadHeaderHolder.kt │ │ │ │ │ │ │ │ ├── AnimeDownloadHeaderItem.kt │ │ │ │ │ │ │ │ ├── AnimeDownloadHolder.kt │ │ │ │ │ │ │ │ ├── AnimeDownloadItem.kt │ │ │ │ │ │ │ │ ├── AnimeDownloadQueueScreen.kt │ │ │ │ │ │ │ │ ├── AnimeDownloadQueueScreenModel.kt │ │ │ │ │ │ │ │ └── AnimeDownloadQueueTab.kt │ │ │ │ │ │ │ └── manga/ │ │ │ │ │ │ │ ├── MangaDownloadAdapter.kt │ │ │ │ │ │ │ ├── MangaDownloadHeaderHolder.kt │ │ │ │ │ │ │ ├── MangaDownloadHeaderItem.kt │ │ │ │ │ │ │ ├── MangaDownloadHolder.kt │ │ │ │ │ │ │ ├── MangaDownloadItem.kt │ │ │ │ │ │ │ ├── MangaDownloadQueueScreen.kt │ │ │ │ │ │ │ ├── MangaDownloadQueueScreenModel.kt │ │ │ │ │ │ │ └── MangaDownloadQueueTab.kt │ │ │ │ │ │ ├── entries/ │ │ │ │ │ │ │ ├── anime/ │ │ │ │ │ │ │ │ ├── AnimeImageScreenModel.kt │ │ │ │ │ │ │ │ ├── AnimeScreen.kt │ │ │ │ │ │ │ │ ├── AnimeScreenModel.kt │ │ │ │ │ │ │ │ ├── AnimeSeasonItem.kt │ │ │ │ │ │ │ │ └── track/ │ │ │ │ │ │ │ │ ├── AnimeTrackInfoDialog.kt │ │ │ │ │ │ │ │ └── AnimeTrackItem.kt │ │ │ │ │ │ │ └── manga/ │ │ │ │ │ │ │ ├── MangaCoverScreenModel.kt │ │ │ │ │ │ │ ├── MangaScreen.kt │ │ │ │ │ │ │ ├── MangaScreenModel.kt │ │ │ │ │ │ │ └── track/ │ │ │ │ │ │ │ ├── MangaTrackInfoDialog.kt │ │ │ │ │ │ │ └── MangaTrackItem.kt │ │ │ │ │ │ ├── history/ │ │ │ │ │ │ │ ├── HistoriesTab.kt │ │ │ │ │ │ │ ├── anime/ │ │ │ │ │ │ │ │ ├── AnimeHistoryScreenModel.kt │ │ │ │ │ │ │ │ └── AnimeHistoryTab.kt │ │ │ │ │ │ │ └── manga/ │ │ │ │ │ │ │ ├── MangaHistoryScreenModel.kt │ │ │ │ │ │ │ └── MangaHistoryTab.kt │ │ │ │ │ │ ├── home/ │ │ │ │ │ │ │ └── HomeScreen.kt │ │ │ │ │ │ ├── library/ │ │ │ │ │ │ │ ├── anime/ │ │ │ │ │ │ │ │ ├── AnimeLibraryItem.kt │ │ │ │ │ │ │ │ ├── AnimeLibraryScreenModel.kt │ │ │ │ │ │ │ │ ├── AnimeLibrarySettingsScreenModel.kt │ │ │ │ │ │ │ │ └── AnimeLibraryTab.kt │ │ │ │ │ │ │ └── manga/ │ │ │ │ │ │ │ ├── MangaLibraryItem.kt │ │ │ │ │ │ │ ├── MangaLibraryScreenModel.kt │ │ │ │ │ │ │ ├── MangaLibrarySettingsScreenModel.kt │ │ │ │ │ │ │ └── MangaLibraryTab.kt │ │ │ │ │ │ ├── main/ │ │ │ │ │ │ │ └── MainActivity.kt │ │ │ │ │ │ ├── more/ │ │ │ │ │ │ │ ├── MoreTab.kt │ │ │ │ │ │ │ ├── NewUpdateScreen.kt │ │ │ │ │ │ │ └── OnboardingScreen.kt │ │ │ │ │ │ ├── player/ │ │ │ │ │ │ │ ├── AniyomiMPVView.kt │ │ │ │ │ │ │ ├── ExternalIntents.kt │ │ │ │ │ │ │ ├── PipActions.kt │ │ │ │ │ │ │ ├── PlayerActivity.kt │ │ │ │ │ │ │ ├── PlayerEnums.kt │ │ │ │ │ │ │ ├── PlayerObserver.kt │ │ │ │ │ │ │ ├── PlayerUtils.kt │ │ │ │ │ │ │ ├── PlayerViewModel.kt │ │ │ │ │ │ │ ├── controls/ │ │ │ │ │ │ │ │ ├── BottomLeftPlayerControls.kt │ │ │ │ │ │ │ │ ├── BottomRightPlayerControls.kt │ │ │ │ │ │ │ │ ├── GestureHandler.kt │ │ │ │ │ │ │ │ ├── MiddlePlayerControls.kt │ │ │ │ │ │ │ │ ├── PlayerControls.kt │ │ │ │ │ │ │ │ ├── PlayerDialogs.kt │ │ │ │ │ │ │ │ ├── PlayerPanels.kt │ │ │ │ │ │ │ │ ├── PlayerSheets.kt │ │ │ │ │ │ │ │ ├── TopLeftPlayerControls.kt │ │ │ │ │ │ │ │ ├── TopRightPlayerControls.kt │ │ │ │ │ │ │ │ └── components/ │ │ │ │ │ │ │ │ ├── AutoPlaySwitch.kt │ │ │ │ │ │ │ │ ├── BrightnessOverlay.kt │ │ │ │ │ │ │ │ ├── ControlsButton.kt │ │ │ │ │ │ │ │ ├── CurrentChapter.kt │ │ │ │ │ │ │ │ ├── DoubleTapSeekTriangles.kt │ │ │ │ │ │ │ │ ├── PlayerUpdates.kt │ │ │ │ │ │ │ │ ├── SeekBar.kt │ │ │ │ │ │ │ │ ├── VerticalSliders.kt │ │ │ │ │ │ │ │ ├── dialogs/ │ │ │ │ │ │ │ │ │ ├── EpisodeListDialog.kt │ │ │ │ │ │ │ │ │ ├── IntegerPickerDialog.kt │ │ │ │ │ │ │ │ │ └── PlayerDialog.kt │ │ │ │ │ │ │ │ ├── panels/ │ │ │ │ │ │ │ │ │ ├── AudioDelayPanel.kt │ │ │ │ │ │ │ │ │ ├── SubtitleDelayPanel.kt │ │ │ │ │ │ │ │ │ ├── SubtitleSettingsColorsCard.kt │ │ │ │ │ │ │ │ │ ├── SubtitleSettingsMiscellaneousCard.kt │ │ │ │ │ │ │ │ │ ├── SubtitleSettingsPanel.kt │ │ │ │ │ │ │ │ │ ├── SubtitleSettingsTypographyCard.kt │ │ │ │ │ │ │ │ │ └── VideoFiltersPanel.kt │ │ │ │ │ │ │ │ └── sheets/ │ │ │ │ │ │ │ │ ├── AudioTracksSheet.kt │ │ │ │ │ │ │ │ ├── ChaptersSheet.kt │ │ │ │ │ │ │ │ ├── GenericTracksSheet.kt │ │ │ │ │ │ │ │ ├── MoreSheet.kt │ │ │ │ │ │ │ │ ├── PlaybackSpeedSheet.kt │ │ │ │ │ │ │ │ ├── QualitySheet.kt │ │ │ │ │ │ │ │ ├── ScreenshotSheet.kt │ │ │ │ │ │ │ │ └── SubtitleTracksSheet.kt │ │ │ │ │ │ │ ├── loader/ │ │ │ │ │ │ │ │ ├── EpisodeLoader.kt │ │ │ │ │ │ │ │ └── HosterLoader.kt │ │ │ │ │ │ │ ├── settings/ │ │ │ │ │ │ │ │ ├── AdvancedPlayerPreferences.kt │ │ │ │ │ │ │ │ ├── AudioPreferences.kt │ │ │ │ │ │ │ │ ├── DecoderPreferences.kt │ │ │ │ │ │ │ │ ├── GesturePreferences.kt │ │ │ │ │ │ │ │ ├── PlayerPreferences.kt │ │ │ │ │ │ │ │ └── SubtitlePreferences.kt │ │ │ │ │ │ │ └── utils/ │ │ │ │ │ │ │ ├── AniSkipApi.kt │ │ │ │ │ │ │ ├── ChapterUtils.kt │ │ │ │ │ │ │ └── TrackSelect.kt │ │ │ │ │ │ ├── reader/ │ │ │ │ │ │ │ ├── ReaderActivity.kt │ │ │ │ │ │ │ ├── ReaderNavigationOverlayView.kt │ │ │ │ │ │ │ ├── ReaderViewModel.kt │ │ │ │ │ │ │ ├── SaveImageNotifier.kt │ │ │ │ │ │ │ ├── loader/ │ │ │ │ │ │ │ │ ├── ArchivePageLoader.kt │ │ │ │ │ │ │ │ ├── ChapterLoader.kt │ │ │ │ │ │ │ │ ├── DirectoryPageLoader.kt │ │ │ │ │ │ │ │ ├── DownloadPageLoader.kt │ │ │ │ │ │ │ │ ├── EpubPageLoader.kt │ │ │ │ │ │ │ │ ├── HttpPageLoader.kt │ │ │ │ │ │ │ │ └── PageLoader.kt │ │ │ │ │ │ │ ├── model/ │ │ │ │ │ │ │ │ ├── ChapterTransition.kt │ │ │ │ │ │ │ │ ├── InsertPage.kt │ │ │ │ │ │ │ │ ├── ReaderChapter.kt │ │ │ │ │ │ │ │ ├── ReaderPage.kt │ │ │ │ │ │ │ │ └── ViewerChapters.kt │ │ │ │ │ │ │ ├── setting/ │ │ │ │ │ │ │ │ ├── ReaderOrientation.kt │ │ │ │ │ │ │ │ ├── ReaderPreferences.kt │ │ │ │ │ │ │ │ ├── ReaderSettingsScreenModel.kt │ │ │ │ │ │ │ │ └── ReadingMode.kt │ │ │ │ │ │ │ └── viewer/ │ │ │ │ │ │ │ ├── GestureDetectorWithLongTap.kt │ │ │ │ │ │ │ ├── MissingChapters.kt │ │ │ │ │ │ │ ├── ReaderButton.kt │ │ │ │ │ │ │ ├── ReaderPageImageView.kt │ │ │ │ │ │ │ ├── ReaderProgressIndicator.kt │ │ │ │ │ │ │ ├── ReaderTransitionView.kt │ │ │ │ │ │ │ ├── Viewer.kt │ │ │ │ │ │ │ ├── ViewerConfig.kt │ │ │ │ │ │ │ ├── ViewerNavigation.kt │ │ │ │ │ │ │ ├── navigation/ │ │ │ │ │ │ │ │ ├── DisabledNavigation.kt │ │ │ │ │ │ │ │ ├── EdgeNavigation.kt │ │ │ │ │ │ │ │ ├── KindlishNavigation.kt │ │ │ │ │ │ │ │ ├── LNavigation.kt │ │ │ │ │ │ │ │ └── RightAndLeftNavigation.kt │ │ │ │ │ │ │ ├── pager/ │ │ │ │ │ │ │ │ ├── Pager.kt │ │ │ │ │ │ │ │ ├── PagerConfig.kt │ │ │ │ │ │ │ │ ├── PagerPageHolder.kt │ │ │ │ │ │ │ │ ├── PagerTransitionHolder.kt │ │ │ │ │ │ │ │ ├── PagerViewer.kt │ │ │ │ │ │ │ │ ├── PagerViewerAdapter.kt │ │ │ │ │ │ │ │ └── PagerViewers.kt │ │ │ │ │ │ │ └── webtoon/ │ │ │ │ │ │ │ ├── WebtoonAdapter.kt │ │ │ │ │ │ │ ├── WebtoonBaseHolder.kt │ │ │ │ │ │ │ ├── WebtoonConfig.kt │ │ │ │ │ │ │ ├── WebtoonFrame.kt │ │ │ │ │ │ │ ├── WebtoonLayoutManager.kt │ │ │ │ │ │ │ ├── WebtoonPageHolder.kt │ │ │ │ │ │ │ ├── WebtoonRecyclerView.kt │ │ │ │ │ │ │ ├── WebtoonSubsamplingImageView.kt │ │ │ │ │ │ │ ├── WebtoonTransitionHolder.kt │ │ │ │ │ │ │ └── WebtoonViewer.kt │ │ │ │ │ │ ├── security/ │ │ │ │ │ │ │ └── UnlockActivity.kt │ │ │ │ │ │ ├── setting/ │ │ │ │ │ │ │ ├── PlayerSettingsScreen.kt │ │ │ │ │ │ │ ├── SettingsScreen.kt │ │ │ │ │ │ │ └── track/ │ │ │ │ │ │ │ ├── BaseOAuthLoginActivity.kt │ │ │ │ │ │ │ └── TrackLoginActivity.kt │ │ │ │ │ │ ├── stats/ │ │ │ │ │ │ │ ├── StatsTab.kt │ │ │ │ │ │ │ ├── anime/ │ │ │ │ │ │ │ │ ├── AnimeStatsScreenModel.kt │ │ │ │ │ │ │ │ └── AnimeStatsTab.kt │ │ │ │ │ │ │ └── manga/ │ │ │ │ │ │ │ ├── MangaStatsScreenModel.kt │ │ │ │ │ │ │ └── MangaStatsTab.kt │ │ │ │ │ │ ├── storage/ │ │ │ │ │ │ │ ├── CommonStorageScreenModel.kt │ │ │ │ │ │ │ ├── StorageTab.kt │ │ │ │ │ │ │ ├── anime/ │ │ │ │ │ │ │ │ ├── AnimeStorageScreenModel.kt │ │ │ │ │ │ │ │ └── AnimeStorageTab.kt │ │ │ │ │ │ │ └── manga/ │ │ │ │ │ │ │ ├── MangaStorageScreenModel.kt │ │ │ │ │ │ │ └── MangaStorageTab.kt │ │ │ │ │ │ ├── updates/ │ │ │ │ │ │ │ ├── UpdatesTab.kt │ │ │ │ │ │ │ ├── anime/ │ │ │ │ │ │ │ │ ├── AnimeUpdatesScreenModel.kt │ │ │ │ │ │ │ │ └── AnimeUpdatesTab.kt │ │ │ │ │ │ │ └── manga/ │ │ │ │ │ │ │ ├── MangaUpdatesScreenModel.kt │ │ │ │ │ │ │ └── MangaUpdatesTab.kt │ │ │ │ │ │ └── webview/ │ │ │ │ │ │ ├── WebViewActivity.kt │ │ │ │ │ │ ├── WebViewScreen.kt │ │ │ │ │ │ └── WebViewScreenModel.kt │ │ │ │ │ ├── util/ │ │ │ │ │ │ ├── AniChartApi.kt │ │ │ │ │ │ ├── AnimeExtensions.kt │ │ │ │ │ │ ├── CrashLogUtil.kt │ │ │ │ │ │ ├── MangaExtensions.kt │ │ │ │ │ │ ├── PkceUtil.kt │ │ │ │ │ │ ├── StorageUtil.kt │ │ │ │ │ │ ├── chapter/ │ │ │ │ │ │ │ ├── ChapterFilterDownloaded.kt │ │ │ │ │ │ │ ├── ChapterGetNextUnread.kt │ │ │ │ │ │ │ └── ChapterRemoveDuplicates.kt │ │ │ │ │ │ ├── episode/ │ │ │ │ │ │ │ ├── EpisodeFilterDownloaded.kt │ │ │ │ │ │ │ └── EpsiodeGetNextUnseen.kt │ │ │ │ │ │ ├── lang/ │ │ │ │ │ │ │ ├── CloseableExtensions.kt │ │ │ │ │ │ │ ├── DateExtensions.kt │ │ │ │ │ │ │ └── RectFExtensions.kt │ │ │ │ │ │ ├── storage/ │ │ │ │ │ │ │ └── OkioExtensions.kt │ │ │ │ │ │ ├── system/ │ │ │ │ │ │ │ ├── AnimationExtensions.kt │ │ │ │ │ │ │ ├── AuthenticatorUtil.kt │ │ │ │ │ │ │ ├── BuildConfig.kt │ │ │ │ │ │ │ ├── ChildFirstPathClassLoader.kt │ │ │ │ │ │ │ ├── ContextExtensions.kt │ │ │ │ │ │ │ ├── DeviceUtilExtensions.kt │ │ │ │ │ │ │ ├── DisplayExtensions.kt │ │ │ │ │ │ │ ├── DrawableExtensions.kt │ │ │ │ │ │ │ ├── IntentExtensions.kt │ │ │ │ │ │ │ ├── InternalResourceHelper.kt │ │ │ │ │ │ │ ├── LocaleHelper.kt │ │ │ │ │ │ │ ├── NetworkExtensions.kt │ │ │ │ │ │ │ ├── NetworkStateTracker.kt │ │ │ │ │ │ │ ├── NotificationExtensions.kt │ │ │ │ │ │ │ ├── TvUtils.kt │ │ │ │ │ │ │ └── WorkManagerExtensions.kt │ │ │ │ │ │ └── view/ │ │ │ │ │ │ ├── EditTextPreferenceExtensions.kt │ │ │ │ │ │ ├── ViewExtensions.kt │ │ │ │ │ │ └── WindowExtensions.kt │ │ │ │ │ └── widget/ │ │ │ │ │ ├── MinMaxNumberPicker.kt │ │ │ │ │ ├── RevealAnimationView.kt │ │ │ │ │ ├── TachiyomiTextInputEditText.kt │ │ │ │ │ ├── ViewPagerAdapter.kt │ │ │ │ │ └── listener/ │ │ │ │ │ ├── IgnoreFirstSpinnerListener.kt │ │ │ │ │ └── SimpleSeekBarListener.kt │ │ │ │ └── test/ │ │ │ │ └── DummyTracker.kt │ │ │ └── mihon/ │ │ │ ├── core/ │ │ │ │ ├── designsystem/ │ │ │ │ │ └── utils/ │ │ │ │ │ └── WindowSize.kt │ │ │ │ └── migration/ │ │ │ │ ├── Migration.kt │ │ │ │ ├── MigrationCompletedListener.kt │ │ │ │ ├── MigrationContext.kt │ │ │ │ ├── MigrationJobFactory.kt │ │ │ │ ├── MigrationStrategy.kt │ │ │ │ ├── MigrationStrategyFactory.kt │ │ │ │ ├── Migrator.kt │ │ │ │ └── migrations/ │ │ │ │ ├── AddAllLangMigration.kt │ │ │ │ ├── CategoryPreferencesCleanupMigration.kt │ │ │ │ ├── CombineUpdateRestrictionMigration.kt │ │ │ │ ├── CoverToExternalFileMigration.kt │ │ │ │ ├── DOHMigration.kt │ │ │ │ ├── DeleteExternalChapterCacheDirMigration.kt │ │ │ │ ├── DontRunJobsMigration.kt │ │ │ │ ├── EnableAutoBackupMigration.kt │ │ │ │ ├── EnumsMigration.kt │ │ │ │ ├── ExternalRepoMigration.kt │ │ │ │ ├── ForceMALLogOutMigration.kt │ │ │ │ ├── InternalChapterCacheDirMigration.kt │ │ │ │ ├── LogOutMALMigration.kt │ │ │ │ ├── MergeSortTypeDirectionMigration.kt │ │ │ │ ├── MigrateRotationViewerValuesMigration.kt │ │ │ │ ├── MigrateSecureScreenMigration.kt │ │ │ │ ├── MigrateSortingModeMigration.kt │ │ │ │ ├── MigrateToTriStateMigration.kt │ │ │ │ ├── MigrateTriStateMigration.kt │ │ │ │ ├── MigrationUtils.kt │ │ │ │ ├── Migrations.kt │ │ │ │ ├── MoveChapterPreferencesMigration.kt │ │ │ │ ├── MovePlayerPreferencesMigration.kt │ │ │ │ ├── NavigationOptionsMigration.kt │ │ │ │ ├── NoAppStateMigration.kt │ │ │ │ ├── PermaTrustExtensionsMigration.kt │ │ │ │ ├── PlayerPreferenceMigration.kt │ │ │ │ ├── PrefLangMigration.kt │ │ │ │ ├── PrivatePreferenceMigration.kt │ │ │ │ ├── RelativeTimestampMigration.kt │ │ │ │ ├── RemoveBackgroundJobsMigration.kt │ │ │ │ ├── RemoveOneTwoHourUpdateMigration.kt │ │ │ │ ├── RemoveQuickUpdateMigration.kt │ │ │ │ ├── RemoveReaderTapMigration.kt │ │ │ │ ├── RenameEnumMigration.kt │ │ │ │ ├── ResetRotationMigration.kt │ │ │ │ ├── ResetSortPreferenceRemovedMigration.kt │ │ │ │ ├── SetupAnimeLibraryUpdateMigration.kt │ │ │ │ ├── SetupBackgroundTasksMigration.kt │ │ │ │ ├── SetupBackupCreateMigration.kt │ │ │ │ ├── SetupMangaLibraryUpdateMigration.kt │ │ │ │ ├── SplitPreferencesMigration.kt │ │ │ │ ├── TrustExtensionRepositoryMigration.kt │ │ │ │ ├── UseWorkManagerMigration.kt │ │ │ │ ├── VideoOrientationMigration.kt │ │ │ │ └── VideoPlayerPreferenceMigration.kt │ │ │ └── feature/ │ │ │ └── upcoming/ │ │ │ ├── anime/ │ │ │ │ ├── UpcomingAnimeScreen.kt │ │ │ │ ├── UpcomingAnimeScreenContent.kt │ │ │ │ ├── UpcomingAnimeScreenModel.kt │ │ │ │ ├── UpcomingAnimeUIModel.kt │ │ │ │ └── components/ │ │ │ │ └── UpcomingItem.kt │ │ │ ├── components/ │ │ │ │ └── calendar/ │ │ │ │ ├── Calendar.kt │ │ │ │ ├── CalendarDay.kt │ │ │ │ ├── CalendarHeader.kt │ │ │ │ └── CalendarIndicator.kt │ │ │ └── manga/ │ │ │ ├── UpcomingMangaScreen.kt │ │ │ ├── UpcomingMangaScreenContent.kt │ │ │ ├── UpcomingMangaScreenModel.kt │ │ │ ├── UpcomingMangaUIModel.kt │ │ │ └── components/ │ │ │ └── UpcomingItem.kt │ │ └── res/ │ │ ├── anim/ │ │ │ ├── player_enter_bottom.xml │ │ │ ├── player_enter_left.xml │ │ │ ├── player_enter_right.xml │ │ │ ├── player_enter_top.xml │ │ │ ├── player_exit_bottom.xml │ │ │ ├── player_exit_left.xml │ │ │ ├── player_exit_right.xml │ │ │ ├── player_exit_top.xml │ │ │ ├── player_fade_in.xml │ │ │ ├── player_fade_out.xml │ │ │ ├── shared_axis_x_pop_enter.xml │ │ │ ├── shared_axis_x_pop_exit.xml │ │ │ ├── shared_axis_x_push_enter.xml │ │ │ └── shared_axis_x_push_exit.xml │ │ ├── anim-v33/ │ │ │ ├── shared_axis_x_pop_enter.xml │ │ │ ├── shared_axis_x_pop_exit.xml │ │ │ ├── shared_axis_x_push_enter.xml │ │ │ └── shared_axis_x_push_exit.xml │ │ ├── color/ │ │ │ └── draggable_card_foreground.xml │ │ ├── drawable/ │ │ │ ├── anim_animelibrary_enter.xml │ │ │ ├── anim_animelibrary_leave.xml │ │ │ ├── anim_browse_enter.xml │ │ │ ├── anim_caret_down.xml │ │ │ ├── anim_history_enter.xml │ │ │ ├── anim_library_enter.xml │ │ │ ├── anim_more_enter.xml │ │ │ ├── anim_play_to_pause.xml │ │ │ ├── anim_updates_enter.xml │ │ │ ├── cover_error.xml │ │ │ ├── ic_ani.xml │ │ │ ├── ic_ani_monochrome_launcher.xml │ │ │ ├── ic_animelibrary_filled_24dp.xml │ │ │ ├── ic_animelibrary_outline_24dp.xml │ │ │ ├── ic_animelibrary_selector_24dp.xml │ │ │ ├── ic_arrow_back_24dp.xml │ │ │ ├── ic_baseline_collections_24.xml │ │ │ ├── ic_baseline_input_24.xml │ │ │ ├── ic_baseline_open_in_new_24.xml │ │ │ ├── ic_book_24dp.xml │ │ │ ├── ic_brightness_negative_20dp.xml │ │ │ ├── ic_chrome_player_mode_24dp.xml │ │ │ ├── ic_circle_200dp.xml │ │ │ ├── ic_circle_right_200dp.xml │ │ │ ├── ic_close_24dp.xml │ │ │ ├── ic_collections_baseline_state.xml │ │ │ ├── ic_crop_24dp.xml │ │ │ ├── ic_crop_off_24dp.xml │ │ │ ├── ic_done_24dp.xml │ │ │ ├── ic_done_prev_24dp.xml │ │ │ ├── ic_download_item_24dp.xml │ │ │ ├── ic_drag_handle_24dp.xml │ │ │ ├── ic_extension_24dp.xml │ │ │ ├── ic_folder_24dp.xml │ │ │ ├── ic_forward_10_24dp.xml │ │ │ ├── ic_glasses_24dp.xml │ │ │ ├── ic_info_24dp.xml │ │ │ ├── ic_launcher_background.xml │ │ │ ├── ic_launcher_foreground.xml │ │ │ ├── ic_overflow_24dp.xml │ │ │ ├── ic_pause_24dp.xml │ │ │ ├── ic_pause_circle_filled_24.xml │ │ │ ├── ic_photo_24dp.xml │ │ │ ├── ic_play_arrow_24dp.xml │ │ │ ├── ic_play_circle_filled_24.xml │ │ │ ├── ic_play_seek_triangle.xml │ │ │ ├── ic_reader_continuous_vertical_24dp.xml │ │ │ ├── ic_reader_default_24dp.xml │ │ │ ├── ic_reader_ltr_24dp.xml │ │ │ ├── ic_reader_rtl_24dp.xml │ │ │ ├── ic_reader_vertical_24dp.xml │ │ │ ├── ic_reader_webtoon_24dp.xml │ │ │ ├── ic_refresh_24dp.xml │ │ │ ├── ic_share_24dp.xml │ │ │ ├── ic_skip_next_24dp.xml │ │ │ ├── ic_skip_previous_24dp.xml │ │ │ ├── ic_system_update_alt_white_24dp.xml │ │ │ ├── ic_tachi_splash.xml │ │ │ ├── ic_updates_outline_24dp.xml │ │ │ ├── ic_video_chapter_20dp.xml │ │ │ ├── ic_volume_off_24dp.xml │ │ │ ├── ic_warning_white_24dp.xml │ │ │ ├── line_divider.xml │ │ │ ├── material_popup_background.xml │ │ │ ├── outline_brand_family_24.xml │ │ │ ├── sc_collections_baseline_48dp.xml │ │ │ ├── sc_collections_bookmark_48dp.xml │ │ │ ├── sc_explore_48dp.xml │ │ │ ├── sc_history_48dp.xml │ │ │ ├── sc_new_releases_48dp.xml │ │ │ └── sharp_shadow_24.xml │ │ ├── layout/ │ │ │ ├── download_header.xml │ │ │ ├── download_item.xml │ │ │ ├── download_list.xml │ │ │ ├── player_layout.xml │ │ │ ├── pref_widget_switch_material.xml │ │ │ ├── reader_activity.xml │ │ │ └── reader_error.xml │ │ ├── menu/ │ │ │ ├── chapter_download.xml │ │ │ ├── download_single.xml │ │ │ └── main_nav.xml │ │ ├── mipmap/ │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ ├── raw/ │ │ │ └── keep.xml │ │ ├── values/ │ │ │ ├── attrs.xml │ │ │ ├── bools.xml │ │ │ ├── colors_cottoncandy.xml │ │ │ ├── colors_mocha.xml │ │ │ ├── dimens.xml │ │ │ ├── ids.xml │ │ │ ├── integers.xml │ │ │ ├── styles.xml │ │ │ └── themes.xml │ │ ├── values-night/ │ │ │ ├── bools.xml │ │ │ ├── colors_cottoncandy.xml │ │ │ ├── colors_mocha.xml │ │ │ └── themes.xml │ │ ├── values-night-v31/ │ │ │ └── themes.xml │ │ ├── values-sw720dp/ │ │ │ └── dimens.xml │ │ ├── values-v27/ │ │ │ ├── bools.xml │ │ │ └── themes.xml │ │ ├── values-v31/ │ │ │ └── themes.xml │ │ └── xml/ │ │ ├── network_security_config.xml │ │ ├── provider_paths.xml │ │ ├── s_pen_actions.xml │ │ └── searchable.xml │ └── test/ │ └── java/ │ └── mihon/ │ └── core/ │ └── migration/ │ └── MigratorTest.kt ├── build.gradle.kts ├── buildSrc/ │ ├── build.gradle.kts │ ├── settings.gradle.kts │ └── src/ │ └── main/ │ └── kotlin/ │ ├── mihon/ │ │ └── buildlogic/ │ │ ├── AndroidConfig.kt │ │ ├── BuildConfig.kt │ │ ├── Commands.kt │ │ ├── ProjectExtensions.kt │ │ └── tasks/ │ │ └── LocalesConfigTask.kt │ ├── mihon.android.application.compose.gradle.kts │ ├── mihon.android.application.gradle.kts │ ├── mihon.benchmark.gradle.kts │ ├── mihon.code.lint.gradle.kts │ ├── mihon.library.compose.gradle.kts │ └── mihon.library.gradle.kts ├── core/ │ ├── archive/ │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── kotlin/ │ │ └── mihon/ │ │ └── core/ │ │ └── archive/ │ │ ├── ArchiveEntry.kt │ │ ├── ArchiveInputStream.kt │ │ ├── ArchiveReader.kt │ │ ├── EpubReader.kt │ │ ├── UniFileExtensions.kt │ │ └── ZipWriter.kt │ └── common/ │ ├── build.gradle.kts │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ └── java/ │ ├── eu/ │ │ └── kanade/ │ │ └── tachiyomi/ │ │ ├── core/ │ │ │ ├── Constants.kt │ │ │ └── security/ │ │ │ └── SecurityPreferences.kt │ │ ├── network/ │ │ │ ├── AndroidCookieJar.kt │ │ │ ├── DohProviders.kt │ │ │ ├── JavaScriptEngine.kt │ │ │ ├── NetworkHelper.kt │ │ │ ├── NetworkPreferences.kt │ │ │ ├── OkHttpExtensions.kt │ │ │ ├── ProgressListener.kt │ │ │ ├── ProgressResponseBody.kt │ │ │ ├── Requests.kt │ │ │ └── interceptor/ │ │ │ ├── CloudflareInterceptor.kt │ │ │ ├── IgnoreGzipInterceptor.kt │ │ │ ├── RateLimitInterceptor.kt │ │ │ ├── SpecificHostRateLimitInterceptor.kt │ │ │ ├── UncaughtExceptionInterceptor.kt │ │ │ ├── UserAgentInterceptor.kt │ │ │ └── WebViewInterceptor.kt │ │ └── util/ │ │ ├── lang/ │ │ │ ├── Hash.kt │ │ │ └── StringExtensions.kt │ │ ├── storage/ │ │ │ ├── DiskUtil.kt │ │ │ ├── FFmpegUtils.kt │ │ │ └── FileExtensions.kt │ │ └── system/ │ │ ├── DensityExtensions.kt │ │ ├── DeviceUtil.kt │ │ ├── GLUtil.kt │ │ ├── ToastExtensions.kt │ │ └── WebViewUtil.kt │ └── tachiyomi/ │ └── core/ │ └── common/ │ ├── i18n/ │ │ └── Localize.kt │ ├── preference/ │ │ ├── AndroidPreference.kt │ │ ├── AndroidPreferenceStore.kt │ │ ├── CheckboxState.kt │ │ ├── InMemoryPreferenceStore.kt │ │ ├── Preference.kt │ │ ├── PreferenceStore.kt │ │ └── TriState.kt │ ├── storage/ │ │ ├── AndroidStorageFolderProvider.kt │ │ ├── FolderProvider.kt │ │ ├── UniFileExtensions.kt │ │ └── UniFileTempFileManager.kt │ └── util/ │ ├── lang/ │ │ ├── BooleanExtensions.kt │ │ ├── CoroutinesExtensions.kt │ │ ├── RxCoroutineBridge.kt │ │ └── SortUtil.kt │ └── system/ │ ├── ImageUtil.kt │ └── LogcatExtensions.kt ├── core-metadata/ │ ├── build.gradle.kts │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ └── java/ │ └── tachiyomi/ │ └── core/ │ └── metadata/ │ ├── comicinfo/ │ │ └── ComicInfo.kt │ └── tachiyomi/ │ ├── AnimeDetails.kt │ ├── ChapterDetails.kt │ ├── EpisodeDetails.kt │ └── MangaDetails.kt ├── data/ │ ├── build.gradle.kts │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ ├── java/ │ │ ├── mihon/ │ │ │ └── data/ │ │ │ └── repository/ │ │ │ ├── anime/ │ │ │ │ └── AnimeExtensionRepoRepositoryImpl.kt │ │ │ └── manga/ │ │ │ └── MangaExtensionRepoRepositoryImpl.kt │ │ └── tachiyomi/ │ │ └── data/ │ │ ├── DatabaseAdapter.kt │ │ ├── category/ │ │ │ ├── anime/ │ │ │ │ └── AnimeCategoryRepositoryImpl.kt │ │ │ └── manga/ │ │ │ └── MangaCategoryRepositoryImpl.kt │ │ ├── custombutton/ │ │ │ └── CustomButtonRepositoryImpl.kt │ │ ├── entries/ │ │ │ ├── anime/ │ │ │ │ ├── AnimeMapper.kt │ │ │ │ └── AnimeRepositoryImpl.kt │ │ │ └── manga/ │ │ │ ├── MangaMapper.kt │ │ │ └── MangaRepositoryImpl.kt │ │ ├── handlers/ │ │ │ ├── anime/ │ │ │ │ ├── AndroidAnimeDatabaseHandler.kt │ │ │ │ ├── AnimeDatabaseHandler.kt │ │ │ │ ├── AnimeTransactionContext.kt │ │ │ │ └── QueryPagingAnimeSource.kt │ │ │ └── manga/ │ │ │ ├── AndroidMangaDatabaseHandler.kt │ │ │ ├── MangaDatabaseHandler.kt │ │ │ ├── MangaTransactionContext.kt │ │ │ └── QueryPagingMangaSource.kt │ │ ├── history/ │ │ │ ├── anime/ │ │ │ │ ├── AnimeHistoryMapper.kt │ │ │ │ └── AnimeHistoryRepositoryImpl.kt │ │ │ └── manga/ │ │ │ ├── MangaHistoryMapper.kt │ │ │ └── MangaHistoryRepositoryImpl.kt │ │ ├── items/ │ │ │ ├── chapter/ │ │ │ │ ├── ChapterRepositoryImpl.kt │ │ │ │ └── ChapterSanitizer.kt │ │ │ └── episode/ │ │ │ ├── EpisodeRepositoryImpl.kt │ │ │ └── EpisodeSanitizer.kt │ │ ├── release/ │ │ │ ├── GithubRelease.kt │ │ │ └── ReleaseServiceImpl.kt │ │ ├── source/ │ │ │ ├── anime/ │ │ │ │ ├── AnimeSourcePagingSource.kt │ │ │ │ ├── AnimeSourceRepositoryImpl.kt │ │ │ │ └── AnimeStubSourceRepositoryImpl.kt │ │ │ └── manga/ │ │ │ ├── MangaSourcePagingSource.kt │ │ │ ├── MangaSourceRepositoryImpl.kt │ │ │ └── MangaStubSourceRepositoryImpl.kt │ │ ├── track/ │ │ │ ├── anime/ │ │ │ │ ├── AnimeTrackMapper.kt │ │ │ │ └── AnimeTrackRepositoryImpl.kt │ │ │ └── manga/ │ │ │ ├── MangaTrackMapper.kt │ │ │ └── MangaTrackRepositoryImpl.kt │ │ └── updates/ │ │ ├── anime/ │ │ │ └── AnimeUpdatesRepositoryImpl.kt │ │ └── manga/ │ │ └── MangaUpdatesRepositoryImpl.kt │ ├── sqldelight/ │ │ ├── data/ │ │ │ ├── categories.sq │ │ │ ├── chapters.sq │ │ │ ├── excluded_scanlators.sq │ │ │ ├── extension_repos.sq │ │ │ ├── history.sq │ │ │ ├── manga_sync.sq │ │ │ ├── mangas.sq │ │ │ ├── mangas_categories.sq │ │ │ └── sources.sq │ │ ├── migrations/ │ │ │ ├── 1.sqm │ │ │ ├── 10.sqm │ │ │ ├── 11.sqm │ │ │ ├── 12.sqm │ │ │ ├── 13.sqm │ │ │ ├── 14.sqm │ │ │ ├── 15.sqm │ │ │ ├── 16.sqm │ │ │ ├── 17.sqm │ │ │ ├── 18.sqm │ │ │ ├── 19.sqm │ │ │ ├── 2.sqm │ │ │ ├── 20.sqm │ │ │ ├── 21.sqm │ │ │ ├── 22.sqm │ │ │ ├── 23.sqm │ │ │ ├── 24.sqm │ │ │ ├── 25.sqm │ │ │ ├── 26.sqm │ │ │ ├── 27.sqm │ │ │ ├── 28.sqm │ │ │ ├── 29.sqm │ │ │ ├── 3.sqm │ │ │ ├── 30.sqm │ │ │ ├── 31.sqm │ │ │ ├── 32.sqm │ │ │ ├── 4.sqm │ │ │ ├── 5.sqm │ │ │ ├── 6.sqm │ │ │ ├── 7.sqm │ │ │ ├── 8.sqm │ │ │ └── 9.sqm │ │ └── view/ │ │ ├── historyView.sq │ │ ├── libraryView.sq │ │ └── updatesView.sq │ └── sqldelightanime/ │ ├── dataanime/ │ │ ├── anime_sync.sq │ │ ├── animehistory.sq │ │ ├── animes.sq │ │ ├── animes_categories.sq │ │ ├── animesources.sq │ │ ├── categories.sq │ │ ├── custom_buttons.sq │ │ ├── episodes.sq │ │ └── extension_repos.sq │ ├── migrations/ │ │ ├── 113.sqm │ │ ├── 114.sqm │ │ ├── 115.sqm │ │ ├── 116.sqm │ │ ├── 117.sqm │ │ ├── 118.sqm │ │ ├── 119.sqm │ │ ├── 120.sqm │ │ ├── 121.sqm │ │ ├── 122.sqm │ │ ├── 123.sqm │ │ ├── 124.sqm │ │ ├── 125.sqm │ │ ├── 126.sqm │ │ ├── 127.sqm │ │ ├── 128.sqm │ │ ├── 129.sqm │ │ ├── 130.sqm │ │ ├── 131.sqm │ │ ├── 132.sqm │ │ ├── 133.sqm │ │ ├── 134.sqm │ │ └── 135.sqm │ └── view/ │ ├── animedeletableView.sq │ ├── animehistoryView.sq │ ├── animehistorystatsView.sq │ ├── animelibView.sq │ ├── animeseasonsView.sq │ ├── animeseasonstatsView.sq │ ├── animeupdatesView.sq │ └── episodestatsView.sq ├── domain/ │ ├── build.gradle.kts │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src/ │ ├── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ ├── aniyomi/ │ │ │ └── domain/ │ │ │ └── anime/ │ │ │ ├── SeasonAnime.kt │ │ │ └── SeasonDisplayMode.kt │ │ ├── mihon/ │ │ │ └── domain/ │ │ │ ├── extensionrepo/ │ │ │ │ ├── anime/ │ │ │ │ │ ├── interactor/ │ │ │ │ │ │ ├── CreateAnimeExtensionRepo.kt │ │ │ │ │ │ ├── DeleteAnimeExtensionRepo.kt │ │ │ │ │ │ ├── GetAnimeExtensionRepo.kt │ │ │ │ │ │ ├── GetAnimeExtensionRepoCount.kt │ │ │ │ │ │ ├── ReplaceAnimeExtensionRepo.kt │ │ │ │ │ │ └── UpdateAnimeExtensionRepo.kt │ │ │ │ │ └── repository/ │ │ │ │ │ └── AnimeExtensionRepoRepository.kt │ │ │ │ ├── exception/ │ │ │ │ │ └── SaveExtensionRepoException.kt │ │ │ │ ├── manga/ │ │ │ │ │ ├── interactor/ │ │ │ │ │ │ ├── CreateMangaExtensionRepo.kt │ │ │ │ │ │ ├── DeleteMangaExtensionRepo.kt │ │ │ │ │ │ ├── GetMangaExtensionRepo.kt │ │ │ │ │ │ ├── GetMangaExtensionRepoCount.kt │ │ │ │ │ │ ├── ReplaceMangaExtensionRepo.kt │ │ │ │ │ │ └── UpdateMangaExtensionRepo.kt │ │ │ │ │ └── repository/ │ │ │ │ │ └── MangaExtensionRepoRepository.kt │ │ │ │ ├── model/ │ │ │ │ │ └── ExtensionRepo.kt │ │ │ │ └── service/ │ │ │ │ ├── ExtensionRepoDto.kt │ │ │ │ └── ExtensionRepoService.kt │ │ │ ├── items/ │ │ │ │ ├── chapter/ │ │ │ │ │ └── interactor/ │ │ │ │ │ └── FilterChaptersForDownload.kt │ │ │ │ └── episode/ │ │ │ │ └── interactor/ │ │ │ │ └── FilterEpisodesForDownload.kt │ │ │ └── upcoming/ │ │ │ ├── anime/ │ │ │ │ └── interactor/ │ │ │ │ └── GetUpcomingAnime.kt │ │ │ └── manga/ │ │ │ └── interactor/ │ │ │ └── GetUpcomingManga.kt │ │ └── tachiyomi/ │ │ └── domain/ │ │ ├── backup/ │ │ │ └── service/ │ │ │ ├── BackupPreferences.kt │ │ │ └── PreferenceValues.kt │ │ ├── category/ │ │ │ ├── anime/ │ │ │ │ ├── interactor/ │ │ │ │ │ ├── CreateAnimeCategoryWithName.kt │ │ │ │ │ ├── DeleteAnimeCategory.kt │ │ │ │ │ ├── GetAnimeCategories.kt │ │ │ │ │ ├── GetVisibleAnimeCategories.kt │ │ │ │ │ ├── HideAnimeCategory.kt │ │ │ │ │ ├── RenameAnimeCategory.kt │ │ │ │ │ ├── ReorderAnimeCategory.kt │ │ │ │ │ ├── ResetAnimeCategoryFlags.kt │ │ │ │ │ ├── SetAnimeCategories.kt │ │ │ │ │ ├── SetAnimeDisplayMode.kt │ │ │ │ │ ├── SetSortModeForAnimeCategory.kt │ │ │ │ │ └── UpdateAnimeCategory.kt │ │ │ │ └── repository/ │ │ │ │ └── AnimeCategoryRepository.kt │ │ │ ├── manga/ │ │ │ │ ├── interactor/ │ │ │ │ │ ├── CreateMangaCategoryWithName.kt │ │ │ │ │ ├── DeleteMangaCategory.kt │ │ │ │ │ ├── GetMangaCategories.kt │ │ │ │ │ ├── GetVisibleMangaCategories.kt │ │ │ │ │ ├── HideMangaCategory.kt │ │ │ │ │ ├── RenameMangaCategory.kt │ │ │ │ │ ├── ReorderMangaCategory.kt │ │ │ │ │ ├── ResetMangaCategoryFlags.kt │ │ │ │ │ ├── SetMangaCategories.kt │ │ │ │ │ ├── SetMangaDisplayMode.kt │ │ │ │ │ ├── SetSortModeForMangaCategory.kt │ │ │ │ │ └── UpdateMangaCategory.kt │ │ │ │ └── repository/ │ │ │ │ └── MangaCategoryRepository.kt │ │ │ └── model/ │ │ │ ├── Category.kt │ │ │ └── CategoryUpdate.kt │ │ ├── custombuttons/ │ │ │ ├── exception/ │ │ │ │ └── SaveCustomButtonException.kt │ │ │ ├── interactor/ │ │ │ │ ├── CreateCustomButton.kt │ │ │ │ ├── DeleteCustomButton.kt │ │ │ │ ├── GetCustomButtons.kt │ │ │ │ ├── ReorderCustomButton.kt │ │ │ │ ├── ToggleFavoriteCustomButton.kt │ │ │ │ └── UpdateCustomButton.kt │ │ │ ├── model/ │ │ │ │ ├── CustomButton.kt │ │ │ │ └── CustomButtonUpdate.kt │ │ │ └── repository/ │ │ │ └── CustomButtonRepository.kt │ │ ├── download/ │ │ │ └── service/ │ │ │ └── DownloadPreferences.kt │ │ ├── entries/ │ │ │ ├── EntryCover.kt │ │ │ ├── TriState.kt │ │ │ ├── anime/ │ │ │ │ ├── interactor/ │ │ │ │ │ ├── AnimeFetchInterval.kt │ │ │ │ │ ├── GetAnime.kt │ │ │ │ │ ├── GetAnimeByUrlAndSourceId.kt │ │ │ │ │ ├── GetAnimeFavorites.kt │ │ │ │ │ ├── GetAnimeWithEpisodesAndSeasons.kt │ │ │ │ │ ├── GetDuplicateLibraryAnime.kt │ │ │ │ │ ├── GetLibraryAnime.kt │ │ │ │ │ ├── NetworkToLocalAnime.kt │ │ │ │ │ ├── ResetAnimeViewerFlags.kt │ │ │ │ │ ├── SetAnimeEpisodeFlags.kt │ │ │ │ │ └── SetAnimeSeasonFlags.kt │ │ │ │ ├── model/ │ │ │ │ │ ├── Anime.kt │ │ │ │ │ ├── AnimeCover.kt │ │ │ │ │ ├── AnimeUpdate.kt │ │ │ │ │ └── NoSeasonsException.kt │ │ │ │ └── repository/ │ │ │ │ └── AnimeRepository.kt │ │ │ └── manga/ │ │ │ ├── interactor/ │ │ │ │ ├── GetDuplicateLibraryManga.kt │ │ │ │ ├── GetLibraryManga.kt │ │ │ │ ├── GetManga.kt │ │ │ │ ├── GetMangaByUrlAndSourceId.kt │ │ │ │ ├── GetMangaFavorites.kt │ │ │ │ ├── GetMangaWithChapters.kt │ │ │ │ ├── MangaFetchInterval.kt │ │ │ │ ├── NetworkToLocalManga.kt │ │ │ │ ├── ResetMangaViewerFlags.kt │ │ │ │ └── SetMangaChapterFlags.kt │ │ │ ├── model/ │ │ │ │ ├── Manga.kt │ │ │ │ ├── MangaCover.kt │ │ │ │ └── MangaUpdate.kt │ │ │ └── repository/ │ │ │ └── MangaRepository.kt │ │ ├── history/ │ │ │ ├── anime/ │ │ │ │ ├── interactor/ │ │ │ │ │ ├── GetAnimeHistory.kt │ │ │ │ │ ├── GetNextEpisodes.kt │ │ │ │ │ ├── RemoveAnimeHistory.kt │ │ │ │ │ └── UpsertAnimeHistory.kt │ │ │ │ ├── model/ │ │ │ │ │ ├── AnimeHistory.kt │ │ │ │ │ ├── AnimeHistoryUpdate.kt │ │ │ │ │ └── AnimeHistoryWithRelations.kt │ │ │ │ └── repository/ │ │ │ │ └── AnimeHistoryRepository.kt │ │ │ └── manga/ │ │ │ ├── interactor/ │ │ │ │ ├── GetMangaHistory.kt │ │ │ │ ├── GetNextChapters.kt │ │ │ │ ├── GetTotalReadDuration.kt │ │ │ │ ├── RemoveMangaHistory.kt │ │ │ │ └── UpsertMangaHistory.kt │ │ │ ├── model/ │ │ │ │ ├── MangaHistory.kt │ │ │ │ ├── MangaHistoryUpdate.kt │ │ │ │ └── MangaHistoryWithRelations.kt │ │ │ └── repository/ │ │ │ └── MangaHistoryRepository.kt │ │ ├── items/ │ │ │ ├── chapter/ │ │ │ │ ├── interactor/ │ │ │ │ │ ├── GetChapter.kt │ │ │ │ │ ├── GetChapterByUrlAndMangaId.kt │ │ │ │ │ ├── GetChaptersByMangaId.kt │ │ │ │ │ ├── SetMangaDefaultChapterFlags.kt │ │ │ │ │ ├── ShouldUpdateDbChapter.kt │ │ │ │ │ └── UpdateChapter.kt │ │ │ │ ├── model/ │ │ │ │ │ ├── Chapter.kt │ │ │ │ │ ├── ChapterUpdate.kt │ │ │ │ │ └── NoChaptersException.kt │ │ │ │ ├── repository/ │ │ │ │ │ └── ChapterRepository.kt │ │ │ │ └── service/ │ │ │ │ ├── ChapterRecognition.kt │ │ │ │ ├── ChapterSorter.kt │ │ │ │ └── MissingChapters.kt │ │ │ ├── episode/ │ │ │ │ ├── interactor/ │ │ │ │ │ ├── GetEpisode.kt │ │ │ │ │ ├── GetEpisodeByUrlAndAnimeId.kt │ │ │ │ │ ├── GetEpisodesByAnimeId.kt │ │ │ │ │ ├── SetAnimeDefaultEpisodeFlags.kt │ │ │ │ │ ├── ShouldUpdateDbEpisode.kt │ │ │ │ │ └── UpdateEpisode.kt │ │ │ │ ├── model/ │ │ │ │ │ ├── Episode.kt │ │ │ │ │ ├── EpisodeUpdate.kt │ │ │ │ │ └── NoEpisodesException.kt │ │ │ │ ├── repository/ │ │ │ │ │ └── EpisodeRepository.kt │ │ │ │ └── service/ │ │ │ │ ├── EpisodeRecognition.kt │ │ │ │ ├── EpisodeSorter.kt │ │ │ │ └── MissingEpisodes.kt │ │ │ └── season/ │ │ │ ├── interactor/ │ │ │ │ ├── GetAnimeSeasonsByParentId.kt │ │ │ │ ├── SetAnimeDefaultSeasonFlags.kt │ │ │ │ └── ShouldUpdateDbSeason.kt │ │ │ └── service/ │ │ │ ├── SeasonRecognition.kt │ │ │ └── SeasonSorter.kt │ │ ├── library/ │ │ │ ├── anime/ │ │ │ │ ├── LibraryAnime.kt │ │ │ │ └── model/ │ │ │ │ └── AnimeLibrarySortMode.kt │ │ │ ├── manga/ │ │ │ │ ├── LibraryManga.kt │ │ │ │ └── model/ │ │ │ │ └── MangaLibrarySortMode.kt │ │ │ ├── model/ │ │ │ │ ├── Flag.kt │ │ │ │ └── LibraryDisplayMode.kt │ │ │ └── service/ │ │ │ └── LibraryPreferences.kt │ │ ├── release/ │ │ │ ├── interactor/ │ │ │ │ └── GetApplicationRelease.kt │ │ │ ├── model/ │ │ │ │ └── Release.kt │ │ │ └── service/ │ │ │ └── ReleaseService.kt │ │ ├── source/ │ │ │ ├── anime/ │ │ │ │ ├── interactor/ │ │ │ │ │ ├── GetAnimeSourcesWithNonLibraryAnime.kt │ │ │ │ │ └── GetRemoteAnime.kt │ │ │ │ ├── model/ │ │ │ │ │ ├── AnimeSource.kt │ │ │ │ │ ├── AnimeSourceWithIds.kt │ │ │ │ │ ├── DeletableAnime.kt │ │ │ │ │ ├── Pin.kt │ │ │ │ │ └── StubAnimeSource.kt │ │ │ │ ├── repository/ │ │ │ │ │ ├── AnimeSourceRepository.kt │ │ │ │ │ └── AnimeStubSourceRepository.kt │ │ │ │ └── service/ │ │ │ │ └── AnimeSourceManager.kt │ │ │ └── manga/ │ │ │ ├── interactor/ │ │ │ │ ├── GetMangaSourcesWithNonLibraryManga.kt │ │ │ │ └── GetRemoteManga.kt │ │ │ ├── model/ │ │ │ │ ├── MangaSourceWithCount.kt │ │ │ │ ├── Pin.kt │ │ │ │ ├── Source.kt │ │ │ │ └── StubMangaSource.kt │ │ │ ├── repository/ │ │ │ │ ├── MangaSourceRepository.kt │ │ │ │ └── MangaStubSourceRepository.kt │ │ │ └── service/ │ │ │ └── MangaSourceManager.kt │ │ ├── storage/ │ │ │ └── service/ │ │ │ ├── StorageManager.kt │ │ │ └── StoragePreferences.kt │ │ ├── track/ │ │ │ ├── anime/ │ │ │ │ ├── interactor/ │ │ │ │ │ ├── DeleteAnimeTrack.kt │ │ │ │ │ ├── GetAnimeTracks.kt │ │ │ │ │ ├── GetTracksPerAnime.kt │ │ │ │ │ └── InsertAnimeTrack.kt │ │ │ │ ├── model/ │ │ │ │ │ └── AnimeTrack.kt │ │ │ │ └── repository/ │ │ │ │ └── AnimeTrackRepository.kt │ │ │ └── manga/ │ │ │ ├── interactor/ │ │ │ │ ├── DeleteMangaTrack.kt │ │ │ │ ├── GetMangaTracks.kt │ │ │ │ ├── GetTracksPerManga.kt │ │ │ │ └── InsertMangaTrack.kt │ │ │ ├── model/ │ │ │ │ └── MangaTrack.kt │ │ │ └── repository/ │ │ │ └── MangaTrackRepository.kt │ │ └── updates/ │ │ ├── anime/ │ │ │ ├── interactor/ │ │ │ │ └── GetAnimeUpdates.kt │ │ │ ├── model/ │ │ │ │ └── AnimeUpdatesWithRelations.kt │ │ │ └── repository/ │ │ │ └── AnimeUpdatesRepository.kt │ │ └── manga/ │ │ ├── interactor/ │ │ │ └── GetMangaUpdates.kt │ │ ├── model/ │ │ │ └── MangaUpdatesWithRelations.kt │ │ └── repository/ │ │ └── MangaUpdatesRepository.kt │ └── test/ │ └── java/ │ └── tachiyomi/ │ └── domain/ │ ├── entries/ │ │ ├── anime/ │ │ │ └── interactor/ │ │ │ └── AnimeFetchIntervalTest.kt │ │ └── manga/ │ │ └── interactor/ │ │ └── MangaFetchIntervalTest.kt │ ├── items/ │ │ ├── chapter/ │ │ │ └── service/ │ │ │ └── ChapterRecognitionTest.kt │ │ └── service/ │ │ └── MissingItemsTest.kt │ ├── library/ │ │ └── model/ │ │ └── LibraryFlagsTest.kt │ └── release/ │ └── interactor/ │ └── GetApplicationReleaseTest.kt ├── fastlane/ │ └── metadata/ │ └── android/ │ └── en-US/ │ ├── full_description.txt │ └── short_description.txt ├── gradle/ │ ├── androidx.versions.toml │ ├── aniyomi.versions.toml │ ├── compose.versions.toml │ ├── gradle-daemon-jvm.properties │ ├── kotlinx.versions.toml │ ├── libs.versions.toml │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── i18n/ │ ├── README.md │ ├── build.gradle.kts │ └── src/ │ ├── commonMain/ │ │ └── moko-resources/ │ │ ├── am/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── ar/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── as/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── base/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── be/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── bg/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── bn/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── ca/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── ceb/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── cs/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── cv/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── da/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── de/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── el/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── eo/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── es/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── eu/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── fa/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── fi/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── fil/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── fr/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── gl/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── he/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── hi/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── hr/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── hu/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── in/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── it/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── ja/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── jv/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── ka-rGE/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── kk/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── km/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── kn/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── ko/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── lt/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── lv/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── ml/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── mr/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── ms/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── my/ │ │ │ └── strings.xml │ │ ├── nb-rNO/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── ne/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── nl/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── nn/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── pl/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── pt/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── pt-rBR/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── ro/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── ru/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── sa/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── sah/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── sc/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── sdh/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── sk/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── sq/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── sr/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── sv/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── ta/ │ │ │ └── strings.xml │ │ ├── te/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── th/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── tr/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── uk/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── uz/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── vi/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ ├── zh-rCN/ │ │ │ ├── plurals.xml │ │ │ └── strings.xml │ │ └── zh-rTW/ │ │ ├── plurals.xml │ │ └── strings.xml │ └── main/ │ └── AndroidManifest.xml ├── i18n-aniyomi/ │ ├── build.gradle.kts │ └── src/ │ └── commonMain/ │ └── moko-resources/ │ ├── am/ │ │ └── strings.xml │ ├── ar/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── as/ │ │ └── strings.xml │ ├── base/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── be/ │ │ └── strings.xml │ ├── bg/ │ │ └── strings.xml │ ├── bn/ │ │ └── strings.xml │ ├── ca/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── ceb/ │ │ └── strings.xml │ ├── cs/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── cv/ │ │ └── strings.xml │ ├── da/ │ │ └── strings.xml │ ├── de/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── el/ │ │ └── strings.xml │ ├── eo/ │ │ └── strings.xml │ ├── es/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── eu/ │ │ └── strings.xml │ ├── fa/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── fi/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── fil/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── fr/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── gl/ │ │ └── strings.xml │ ├── he/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── hi/ │ │ └── strings.xml │ ├── hr/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── hu/ │ │ └── strings.xml │ ├── in/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── it/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── ja/ │ │ └── strings.xml │ ├── jv/ │ │ └── strings.xml │ ├── ka-rGE/ │ │ └── strings.xml │ ├── kk/ │ │ └── strings.xml │ ├── km/ │ │ └── strings.xml │ ├── kn/ │ │ └── strings.xml │ ├── ko/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── lt/ │ │ └── strings.xml │ ├── lv/ │ │ └── strings.xml │ ├── ml/ │ │ └── strings.xml │ ├── mr/ │ │ └── strings.xml │ ├── ms/ │ │ └── strings.xml │ ├── my/ │ │ └── strings.xml │ ├── nb-rNO/ │ │ └── strings.xml │ ├── ne/ │ │ └── strings.xml │ ├── nl/ │ │ └── strings.xml │ ├── nn/ │ │ └── strings.xml │ ├── pl/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── pt/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── pt-rBR/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── ro/ │ │ └── strings.xml │ ├── ru/ │ │ └── strings.xml │ ├── sa/ │ │ └── strings.xml │ ├── sah/ │ │ └── strings.xml │ ├── sc/ │ │ └── strings.xml │ ├── sdh/ │ │ └── strings.xml │ ├── sk/ │ │ └── strings.xml │ ├── sq/ │ │ └── strings.xml │ ├── sr/ │ │ └── strings.xml │ ├── sv/ │ │ └── strings.xml │ ├── ta/ │ │ └── strings.xml │ ├── te/ │ │ └── strings.xml │ ├── th/ │ │ └── strings.xml │ ├── tr/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── uk/ │ │ ├── plurals.xml │ │ └── strings.xml │ ├── ur/ │ │ └── strings.xml │ ├── uz/ │ │ └── strings.xml │ ├── vi/ │ │ └── strings.xml │ ├── zh-rCN/ │ │ ├── plurals.xml │ │ └── strings.xml │ └── zh-rTW/ │ └── strings.xml ├── macrobenchmark/ │ ├── README.md │ ├── build.gradle.kts │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ └── java/ │ └── tachiyomi/ │ └── macrobenchmark/ │ ├── BaselineProfileGenerator.kt │ └── StartupBenchmark.kt ├── presentation-core/ │ ├── build.gradle.kts │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ ├── java/ │ │ ├── mihon/ │ │ │ └── presentation/ │ │ │ └── core/ │ │ │ └── util/ │ │ │ └── PagingDataUtil.kt │ │ └── tachiyomi/ │ │ └── presentation/ │ │ └── core/ │ │ ├── components/ │ │ │ ├── ActionButton.kt │ │ │ ├── AdaptiveSheet.kt │ │ │ ├── Badges.kt │ │ │ ├── CircularProgressIndicator.kt │ │ │ ├── CollapsibleBox.kt │ │ │ ├── LabeledCheckbox.kt │ │ │ ├── LazyColumnWithAction.kt │ │ │ ├── LazyGrid.kt │ │ │ ├── LazyList.kt │ │ │ ├── LinkIcon.kt │ │ │ ├── ListGroupHeader.kt │ │ │ ├── Pill.kt │ │ │ ├── SectionCard.kt │ │ │ ├── SettingsItems.kt │ │ │ ├── TwoPanelBox.kt │ │ │ ├── VerticalFastScroller.kt │ │ │ ├── WheelPicker.kt │ │ │ └── material/ │ │ │ ├── AlertDialog.kt │ │ │ ├── Button.kt │ │ │ ├── Constants.kt │ │ │ ├── FloatingActionButton.kt │ │ │ ├── IconButtonTokens.kt │ │ │ ├── IconToggleButton.kt │ │ │ ├── NavigationBar.kt │ │ │ ├── NavigationRail.kt │ │ │ ├── PullRefresh.kt │ │ │ ├── Scaffold.kt │ │ │ ├── Slider.kt │ │ │ ├── Surface.kt │ │ │ └── Tabs.kt │ │ ├── i18n/ │ │ │ └── Localize.kt │ │ ├── icons/ │ │ │ ├── CustomIcons.kt │ │ │ ├── Discord.kt │ │ │ └── Github.kt │ │ ├── screens/ │ │ │ ├── EmptyScreen.kt │ │ │ ├── InfoScreen.kt │ │ │ └── LoadingScreen.kt │ │ ├── theme/ │ │ │ ├── Color.kt │ │ │ └── Typography.kt │ │ └── util/ │ │ ├── Elevation.kt │ │ ├── LazyListState.kt │ │ ├── Modifier.kt │ │ ├── PaddingValues.kt │ │ ├── Preference.kt │ │ ├── Scrollbar.kt │ │ └── ThemePreviews.kt │ └── res/ │ ├── values/ │ │ ├── color_cloudflare.xml │ │ ├── color_doom.xml │ │ ├── color_lavender.xml │ │ ├── color_matrix.xml │ │ ├── color_sapphire.xml │ │ ├── colors.xml │ │ ├── colors_greenapple.xml │ │ ├── colors_midnightdusk.xml │ │ ├── colors_monochrome.xml │ │ ├── colors_nord.xml │ │ ├── colors_strawberry.xml │ │ ├── colors_tachiyomi.xml │ │ ├── colors_tako.xml │ │ ├── colors_tealturqoise.xml │ │ ├── colors_tidalwave.xml │ │ ├── colors_yinyang.xml │ │ └── colors_yotsuba.xml │ └── values-night/ │ ├── color_cloudflare.xml │ ├── color_doom.xml │ ├── color_lavender.xml │ ├── color_matrix.xml │ ├── color_sapphire.xml │ ├── colors.xml │ ├── colors_greenapple.xml │ ├── colors_midnightdusk.xml │ ├── colors_monochrome.xml │ ├── colors_nord.xml │ ├── colors_strawberry.xml │ ├── colors_tachiyomi.xml │ ├── colors_tako.xml │ ├── colors_tealturqoise.xml │ ├── colors_tidalwave.xml │ ├── colors_yinyang.xml │ └── colors_yotsuba.xml ├── presentation-widget/ │ ├── build.gradle.kts │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ ├── java/ │ │ └── tachiyomi/ │ │ └── presentation/ │ │ └── widget/ │ │ ├── components/ │ │ │ ├── anime/ │ │ │ │ ├── LockedAnimeWidget.kt │ │ │ │ ├── UpdatesAnimeCover.kt │ │ │ │ └── UpdatesAnimeWidget.kt │ │ │ └── manga/ │ │ │ ├── LockedMangaWidget.kt │ │ │ ├── UpdatesMangaCover.kt │ │ │ └── UpdatesMangaWidget.kt │ │ ├── entries/ │ │ │ ├── anime/ │ │ │ │ ├── AnimeUpdatesGridCoverScreenGlanceReceiver.kt │ │ │ │ ├── AnimeUpdatesGridCoverScreenGlanceWidget.kt │ │ │ │ ├── AnimeUpdatesGridGlanceReceiver.kt │ │ │ │ ├── AnimeUpdatesGridGlanceWidget.kt │ │ │ │ ├── AnimeWidgetManager.kt │ │ │ │ └── BaseAnimeUpdatesGridGlanceWidget.kt │ │ │ └── manga/ │ │ │ ├── BaseMangaUpdatesGridGlanceWidget.kt │ │ │ ├── MangaUpdatesGridCoverScreenGlanceReceiver.kt │ │ │ ├── MangaUpdatesGridCoverScreenGlanceWidget.kt │ │ │ ├── MangaUpdatesGridGlanceReceiver.kt │ │ │ ├── MangaUpdatesGridGlanceWidget.kt │ │ │ └── MangaWidgetManager.kt │ │ └── util/ │ │ └── GlanceUtils.kt │ └── res/ │ ├── drawable/ │ │ ├── appwidget_background.xml │ │ ├── appwidget_cover_error.xml │ │ └── appwidget_coverscreen_background.xml │ ├── layout/ │ │ ├── appwidget_coverscreen_loading.xml │ │ └── appwidget_loading.xml │ ├── values/ │ │ ├── colors_appwidget.xml │ │ └── dimens.xml │ ├── values-night-v31/ │ │ └── colors_appwidget.xml │ ├── values-v31/ │ │ ├── colors_appwidget.xml │ │ └── dimens.xml │ └── xml/ │ ├── updates_grid_homescreen_widget_info.xml │ ├── updates_grid_lockscreen_widget_info.xml │ └── updates_grid_samsung_cover_widget_info.xml ├── settings.gradle.kts ├── source-api/ │ ├── build.gradle.kts │ ├── consumer-proguard.pro │ └── src/ │ ├── androidMain/ │ │ ├── AndroidManifest.xml │ │ └── kotlin/ │ │ └── eu/ │ │ └── kanade/ │ │ └── tachiyomi/ │ │ ├── animesource/ │ │ │ └── PreferenceScreen.kt │ │ ├── source/ │ │ │ └── PreferenceScreen.kt │ │ └── util/ │ │ └── RxExtension.kt │ └── commonMain/ │ └── kotlin/ │ └── eu/ │ └── kanade/ │ └── tachiyomi/ │ ├── animesource/ │ │ ├── AnimeCatalogueSource.kt │ │ ├── AnimeSource.kt │ │ ├── AnimeSourceFactory.kt │ │ ├── ConfigurableAnimeSource.kt │ │ ├── PreferenceScreen.kt │ │ ├── UnmeteredSource.kt │ │ ├── model/ │ │ │ ├── AnimeFilter.kt │ │ │ ├── AnimeFilterList.kt │ │ │ ├── AnimeUpdateStrategy.kt │ │ │ ├── AnimesPage.kt │ │ │ ├── FetchType.kt │ │ │ ├── Hoster.kt │ │ │ ├── SAnime.kt │ │ │ ├── SAnimeImpl.kt │ │ │ ├── SEpisode.kt │ │ │ ├── SEpisodeImpl.kt │ │ │ └── Video.kt │ │ ├── online/ │ │ │ ├── AnimeHttpSource.kt │ │ │ ├── ParsedAnimeHttpSource.kt │ │ │ └── ResolvableAnimeSource.kt │ │ └── utils/ │ │ └── Preferences.kt │ ├── source/ │ │ ├── CatalogueSource.kt │ │ ├── ConfigurableSource.kt │ │ ├── MangaSource.kt │ │ ├── PreferenceScreen.kt │ │ ├── SourceFactory.kt │ │ ├── UnmeteredSource.kt │ │ ├── model/ │ │ │ ├── Filter.kt │ │ │ ├── FilterList.kt │ │ │ ├── MangasPage.kt │ │ │ ├── Page.kt │ │ │ ├── SChapter.kt │ │ │ ├── SChapterImpl.kt │ │ │ ├── SManga.kt │ │ │ ├── SMangaImpl.kt │ │ │ └── UpdateStrategy.kt │ │ └── online/ │ │ ├── HttpSource.kt │ │ ├── ParsedHttpSource.kt │ │ └── ResolvableSource.kt │ └── util/ │ ├── JsonExtensions.kt │ ├── JsoupExtensions.kt │ ├── RxExtension.kt │ └── VideoInfo.kt └── source-local/ ├── build.gradle.kts ├── consumer-rules.pro ├── proguard-rules.pro └── src/ ├── androidMain/ │ ├── AndroidManifest.xml │ └── kotlin/ │ └── tachiyomi/ │ └── source/ │ └── local/ │ ├── entries/ │ │ ├── anime/ │ │ │ ├── LocalAnimeFetchTypeManager.kt │ │ │ └── LocalAnimeSource.kt │ │ └── manga/ │ │ └── LocalMangaSource.kt │ ├── filter/ │ │ ├── anime/ │ │ │ └── AnimeOrderBy.kt │ │ └── manga/ │ │ └── MangaOrderBy.kt │ ├── image/ │ │ ├── anime/ │ │ │ ├── LocalAnimeBackgroundManager.kt │ │ │ ├── LocalAnimeCoverManager.kt │ │ │ └── LocalEpisodeThumbnailManager.kt │ │ └── manga/ │ │ └── LocalMangaCoverManager.kt │ ├── io/ │ │ ├── anime/ │ │ │ └── LocalAnimeSourceFileSystem.kt │ │ └── manga/ │ │ └── LocalMangaSourceFileSystem.kt │ └── metadata/ │ └── EpubReaderExtensions.kt └── commonMain/ └── kotlin/ └── tachiyomi/ └── source/ └── local/ ├── entries/ │ ├── anime/ │ │ ├── LocalAnimeFetchTypeManager.kt │ │ └── LocalAnimeSource.kt │ └── manga/ │ └── LocalMangaSource.kt ├── image/ │ ├── anime/ │ │ ├── LocalAnimeBackgroundManager.kt │ │ ├── LocalAnimeCoverManager.kt │ │ └── LocalEpisodeThumbnailManager.kt │ └── manga/ │ └── LocalMangaCoverManager.kt └── io/ ├── Archive.kt ├── Format.kt ├── anime/ │ └── LocalAnimeSourceFileSystem.kt └── manga/ └── LocalMangaSourceFileSystem.kt