Full Code of chrisbanes/tivi for AI

main a0c62c2c763c cached
902 files
12.0 MB
3.2M tokens
1 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (12,834K chars total). Download the full file to get everything.
Repository: chrisbanes/tivi
Branch: main
Commit: a0c62c2c763c
Files: 902
Total size: 12.0 MB

Directory structure:
gitextract_kj3p27ku/

├── .editorconfig
├── .gitattributes
├── .github/
│   ├── scripts/
│   │   └── mac-disk-cleanup.sh
│   └── workflows/
│       ├── baseline-profile.yml
│       ├── build.yml
│       ├── gradle-wrapper.yaml
│       └── todo.yml
├── .gitignore
├── .idea/
│   ├── checkstyle-idea.xml
│   ├── codeStyles/
│   │   ├── Project.xml
│   │   └── codeStyleConfig.xml
│   ├── copyright/
│   │   ├── Chris_Banes_Apache_v2.xml
│   │   ├── Google_Apache_v2_0.xml
│   │   └── profiles_settings.xml
│   ├── dictionaries/
│   │   ├── chris.xml
│   │   └── chrisbanes.xml
│   ├── encodings.xml
│   ├── inspectionProfiles/
│   │   ├── ktlint.xml
│   │   └── profiles_settings.xml
│   ├── kotlinc.xml
│   └── vcs.xml
├── .ruby-version
├── .swiftlint.yml
├── .xcode-version
├── Gemfile
├── LICENSE
├── README.md
├── android-app/
│   ├── app/
│   │   ├── benchmark-rules.pro
│   │   ├── build.gradle.kts
│   │   ├── proguard-rules-chucker.pro
│   │   ├── proguard-rules.pro
│   │   └── src/
│   │       ├── androidTest/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               ├── screenshots/
│   │       │               │   └── Screenshots.kt
│   │       │               └── test/
│   │       │                   └── smoke/
│   │       │                       └── SmokeTest.kt
│   │       ├── debug/
│   │       │   ├── AndroidManifest.xml
│   │       │   └── res/
│   │       │       └── values/
│   │       │           ├── colors.xml
│   │       │           └── strings.xml
│   │       ├── main/
│   │       │   ├── AndroidManifest.xml
│   │       │   ├── generated/
│   │       │   │   └── baselineProfiles/
│   │       │   │       ├── baseline-prof.txt
│   │       │   │       └── startup-prof.txt
│   │       │   ├── kotlin/
│   │       │   │   └── app/
│   │       │   │       └── tivi/
│   │       │   │           ├── TiviActivity.kt
│   │       │   │           ├── TiviApplication.kt
│   │       │   │           └── home/
│   │       │   │               └── MainActivity.kt
│   │       │   └── res/
│   │       │       ├── drawable-anydpi-v26/
│   │       │       │   ├── ic_launcher_background.xml
│   │       │       │   └── ic_launcher_foreground.xml
│   │       │       ├── mipmap-anydpi-v26/
│   │       │       │   └── ic_launcher.xml
│   │       │       ├── values/
│   │       │       │   ├── colors.xml
│   │       │       │   ├── strings.xml
│   │       │       │   ├── sys_ui.xml
│   │       │       │   └── themes.xml
│   │       │       ├── values-night/
│   │       │       │   ├── colors.xml
│   │       │       │   ├── sys_ui.xml
│   │       │       │   └── themes.xml
│   │       │       ├── values-notnight-v27/
│   │       │       │   └── sys_ui.xml
│   │       │       ├── values-v29/
│   │       │       │   └── themes.xml
│   │       │       └── xml/
│   │       │           ├── backup_rules.xml
│   │       │           └── data_extraction_rules.xml
│   │       └── qa/
│   │           └── res/
│   │               └── values/
│   │                   └── leak_canary.xml
│   ├── benchmark/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       └── main/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── benchmark/
│   │                           ├── BaselineProfileGenerator.kt
│   │                           ├── StartupBenchmark.kt
│   │                           └── Utils.kt
│   └── common-test/
│       ├── build.gradle.kts
│       └── src/
│           └── main/
│               └── kotlin/
│                   └── app/
│                       └── tivi/
│                           └── app/
│                               └── test/
│                                   └── AppScenarios.kt
├── api/
│   ├── tmdb/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       ├── commonMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── tmdb/
│   │       │                   ├── TmdbComponent.kt
│   │       │                   ├── TmdbImageSizes.kt
│   │       │                   ├── TmdbImageUrlProvider.kt
│   │       │                   ├── TmdbInitializer.kt
│   │       │                   ├── TmdbManager.kt
│   │       │                   └── TmdbOAuthInfo.kt
│   │       ├── iosMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── tmdb/
│   │       │                   └── TmdbPlatformComponent.kt
│   │       └── jvmMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── tmdb/
│   │                           └── TmdbPlatformComponent.kt
│   └── trakt/
│       ├── build.gradle.kts
│       └── src/
│           ├── commonMain/
│           │   └── kotlin/
│           │       └── app/
│           │           └── tivi/
│           │               └── trakt/
│           │                   ├── Anticipated.kt
│           │                   ├── TiviTrakt.kt
│           │                   └── TraktComponent.kt
│           ├── iosMain/
│           │   └── kotlin/
│           │       └── app/
│           │           └── tivi/
│           │               └── trakt/
│           │                   └── TraktPlatformComponent.kt
│           └── jvmMain/
│               └── kotlin/
│                   └── app/
│                       └── tivi/
│                           └── trakt/
│                               └── TraktPlatformComponent.kt
├── art/
│   ├── theme-baseline.sketch
│   └── tivi-art.sketch
├── build.gradle.kts
├── common/
│   ├── imageloading/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       ├── androidMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── common/
│   │       │                   └── imageloading/
│   │       │                       └── ImageLoadingPlatformComponent.kt
│   │       ├── commonMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── common/
│   │       │                   └── imageloading/
│   │       │                       ├── EpisodeImageModelInterceptor.kt
│   │       │                       ├── HideArtworkInterceptor.kt
│   │       │                       ├── ImageLoader.kt
│   │       │                       ├── ImageLoaderCleanupInitializer.kt
│   │       │                       ├── ImageLoadingComponent.kt
│   │       │                       ├── SeasonImageModelInterceptor.kt
│   │       │                       ├── ShowImageModelInterceptor.kt
│   │       │                       └── TmdbImageEntityCoilInterceptor.kt
│   │       ├── iosMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── common/
│   │       │                   └── imageloading/
│   │       │                       └── ImageLoadingPlatformComponent.kt
│   │       └── jvmMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── common/
│   │                           └── imageloading/
│   │                               └── ImageLoadingPlatformComponent.kt
│   └── ui/
│       ├── circuit/
│       │   ├── build.gradle.kts
│       │   ├── lint-baseline.xml
│       │   └── src/
│       │       └── commonMain/
│       │           └── kotlin/
│       │               └── app/
│       │                   └── tivi/
│       │                       ├── EventSink.kt
│       │                       ├── navigation/
│       │                       │   ├── DeepLinker.kt
│       │                       │   └── LocalNavigator.kt
│       │                       └── overlays/
│       │                           ├── BottomSheetOverlay.kt
│       │                           └── DialogOverlay.kt
│       ├── compose/
│       │   ├── build.gradle.kts
│       │   ├── lint-baseline.xml
│       │   └── src/
│       │       ├── androidMain/
│       │       │   └── kotlin/
│       │       │       └── app/
│       │       │           └── tivi/
│       │       │               └── common/
│       │       │                   └── compose/
│       │       │                       ├── Coil.kt
│       │       │                       ├── ColorExtractor.android.kt
│       │       │                       ├── ReportDrawnWhen.kt
│       │       │                       ├── theme/
│       │       │                       │   └── Platform.kt
│       │       │                       └── ui/
│       │       │                           └── Icon.android.kt
│       │       ├── commonMain/
│       │       │   └── kotlin/
│       │       │       └── app/
│       │       │           └── tivi/
│       │       │               └── common/
│       │       │                   └── compose/
│       │       │                       ├── ColorExtractor.kt
│       │       │                       ├── EntryGrid.kt
│       │       │                       ├── HazeScaffold.kt
│       │       │                       ├── Layout.kt
│       │       │                       ├── LazyList.kt
│       │       │                       ├── LazyPagingExtensions.kt
│       │       │                       ├── LogCompositions.kt
│       │       │                       ├── Modifier.kt
│       │       │                       ├── NestedScaffold.kt
│       │       │                       ├── ReportDrawnWhen.kt
│       │       │                       ├── RetainedCoroutineScope.kt
│       │       │                       ├── TiviCompositionLocals.kt
│       │       │                       ├── TiviPreferenceExtensions.kt
│       │       │                       ├── UiMessage.kt
│       │       │                       ├── WindowSizeClass.kt
│       │       │                       ├── theme/
│       │       │                       │   ├── Color.kt
│       │       │                       │   ├── Platform.kt
│       │       │                       │   ├── Shape.kt
│       │       │                       │   ├── Theme.kt
│       │       │                       │   └── Type.kt
│       │       │                       └── ui/
│       │       │                           ├── AppBar.kt
│       │       │                           ├── AutoSizedCircularProgressIndicator.kt
│       │       │                           ├── Backdrop.kt
│       │       │                           ├── BackdropCard.kt
│       │       │                           ├── Clickable.kt
│       │       │                           ├── DateTimeDialogs.kt
│       │       │                           ├── DateTimeTextFields.kt
│       │       │                           ├── Empty.kt
│       │       │                           ├── ExpandingSummary.kt
│       │       │                           ├── GradientScrim.kt
│       │       │                           ├── Icon.kt
│       │       │                           ├── IconButtonScrim.kt
│       │       │                           ├── Image.kt
│       │       │                           ├── LoadingButton.kt
│       │       │                           ├── PaddingValues.kt
│       │       │                           ├── Position.kt
│       │       │                           ├── PosterCard.kt
│       │       │                           ├── Preference.kt
│       │       │                           ├── RefreshButton.kt
│       │       │                           ├── SearchTextField.kt
│       │       │                           ├── SortChip.kt
│       │       │                           ├── SortMenuPopup.kt
│       │       │                           ├── Surface.kt
│       │       │                           ├── UserProfileButton.kt
│       │       │                           └── WindowInsets.kt
│       │       ├── iosMain/
│       │       │   └── kotlin/
│       │       │       └── app/
│       │       │           └── tivi/
│       │       │               └── common/
│       │       │                   └── compose/
│       │       │                       ├── Coil.kt
│       │       │                       ├── ColorExtractor.ios.kt
│       │       │                       ├── ReportDrawnWhen.kt
│       │       │                       ├── theme/
│       │       │                       │   └── Platform.kt
│       │       │                       └── ui/
│       │       │                           ├── DateTimeDialogs.kt
│       │       │                           ├── Icon.ios.kt
│       │       │                           └── Sheets.kt
│       │       ├── jvmCommon/
│       │       │   └── kotlin/
│       │       │       └── app/
│       │       │           └── tivi/
│       │       │               └── common/
│       │       │                   └── compose/
│       │       │                       └── ui/
│       │       │                           └── DateTimeDialogs.kt
│       │       └── jvmMain/
│       │           └── kotlin/
│       │               └── app/
│       │                   └── tivi/
│       │                       └── common/
│       │                           └── compose/
│       │                               ├── Coil.kt
│       │                               ├── ColorExtractor.jvm.kt
│       │                               ├── ReportDrawnWhen.kt
│       │                               ├── theme/
│       │                               │   └── Platform.kt
│       │                               └── ui/
│       │                                   └── Icon.jvm.kt
│       ├── resources/
│       │   ├── build.gradle.kts
│       │   └── src/
│       │       ├── androidMain/
│       │       │   └── kotlin/
│       │       │       └── app/
│       │       │           └── tivi/
│       │       │               └── util/
│       │       │                   ├── String.kt
│       │       │                   ├── TiviDateFormatter.kt
│       │       │                   └── TiviTextCreator.kt
│       │       ├── commonMain/
│       │       │   ├── composeResources/
│       │       │   │   └── values/
│       │       │   │       └── strings.xml
│       │       │   └── kotlin/
│       │       │       └── app/
│       │       │           └── tivi/
│       │       │               ├── common/
│       │       │               │   └── ui/
│       │       │               │       └── resources/
│       │       │               │           ├── Fonts.kt
│       │       │               │           └── Resources.kt
│       │       │               └── util/
│       │       │                   ├── GenreStringer.kt
│       │       │                   ├── String.kt
│       │       │                   ├── TiviDateFormatter.kt
│       │       │                   └── TiviTextCreator.kt
│       │       ├── iosMain/
│       │       │   └── kotlin/
│       │       │       └── app/
│       │       │           └── tivi/
│       │       │               └── util/
│       │       │                   ├── String.kt
│       │       │                   ├── TiviDateFormatter.kt
│       │       │                   └── TiviTextCreator.kt
│       │       └── jvmMain/
│       │           └── kotlin/
│       │               └── app/
│       │                   └── tivi/
│       │                       └── util/
│       │                           ├── String.kt
│       │                           ├── TiviDateFormatter.kt
│       │                           └── TiviTextCreator.kt
│       └── screens/
│           ├── build.gradle.kts
│           └── src/
│               └── commonMain/
│                   └── kotlin/
│                       └── app/
│                           └── tivi/
│                               └── screens/
│                                   ├── Parcelize.kt
│                                   └── Screens.kt
├── compose-stability.conf
├── core/
│   ├── analytics/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       ├── androidMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── core/
│   │       │                   └── analytics/
│   │       │                       ├── AnalyticsPlatformComponent.kt
│   │       │                       └── TiviFirebaseAnalytics.kt
│   │       ├── commonMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── core/
│   │       │                   └── analytics/
│   │       │                       ├── Analytics.kt
│   │       │                       ├── AnalyticsComponent.kt
│   │       │                       └── AnalyticsInitializer.kt
│   │       ├── iosMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── core/
│   │       │                   └── analytics/
│   │       │                       └── AnalyticsPlatformComponent.kt
│   │       └── jvmMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── core/
│   │                           └── analytics/
│   │                               └── AnalyticsPlatformComponent.kt
│   ├── base/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       └── commonMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       ├── animations/
│   │                       │   └── Lerp.kt
│   │                       ├── app/
│   │                       │   └── ApplicationInfo.kt
│   │                       ├── appinitializers/
│   │                       │   └── AppInitializer.kt
│   │                       ├── base/
│   │                       │   └── InvokeStatus.kt
│   │                       ├── extensions/
│   │                       │   └── Lazy.kt
│   │                       ├── inject/
│   │                       │   └── Scopes.kt
│   │                       └── util/
│   │                           ├── AppCoroutineDispatchers.kt
│   │                           ├── Collections.kt
│   │                           ├── CoroutineContext.kt
│   │                           └── Result.kt
│   ├── logging/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       ├── androidMain/
│   │       │   ├── AndroidManifest.xml
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── util/
│   │       │                   ├── AndroidSetCrashReportingEnabledAction.kt
│   │       │                   ├── CrashlyticsAndroidInitializer.kt
│   │       │                   └── LoggerPlatformComponent.kt
│   │       ├── commonMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── util/
│   │       │                   ├── CrashReportingInitializer.kt
│   │       │                   ├── KermitInitializer.kt
│   │       │                   ├── LoggerComponent.kt
│   │       │                   ├── RecordingLoggerWriter.kt
│   │       │                   └── SetCrashReportingEnabledAction.kt
│   │       ├── iosMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── util/
│   │       │                   ├── CrashlyticsIosInitializer.kt
│   │       │                   └── LoggerPlatformComponent.kt
│   │       ├── jvmMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── util/
│   │       │                   └── LoggerPlatformComponent.kt
│   │       └── mobileMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── util/
│   │                           └── CrashlyticsLoggerWriter.kt
│   ├── notifications/
│   │   ├── core/
│   │   │   ├── build.gradle.kts
│   │   │   └── src/
│   │   │       ├── androidMain/
│   │   │       │   ├── AndroidManifest.xml
│   │   │       │   ├── kotlin/
│   │   │       │   │   └── app/
│   │   │       │   │       └── tivi/
│   │   │       │   │           └── core/
│   │   │       │   │               └── notifications/
│   │   │       │   │                   ├── AndroidNotificationManager.kt
│   │   │       │   │                   ├── NotificationPlatformComponent.kt
│   │   │       │   │                   ├── PendingNotificationStore.kt
│   │   │       │   │                   └── PostNotificationBroadcastReceiver.kt
│   │   │       │   └── res/
│   │   │       │       └── drawable/
│   │   │       │           └── outline_tv_gen_24.xml
│   │   │       ├── commonMain/
│   │   │       │   └── kotlin/
│   │   │       │       └── app/
│   │   │       │           └── tivi/
│   │   │       │               └── core/
│   │   │       │                   └── notifications/
│   │   │       │                       ├── NotificationManager.kt
│   │   │       │                       └── NotificationsComponent.kt
│   │   │       ├── iosMain/
│   │   │       │   └── kotlin/
│   │   │       │       └── app/
│   │   │       │           └── tivi/
│   │   │       │               └── core/
│   │   │       │                   └── notifications/
│   │   │       │                       ├── IosNotificationManager.kt
│   │   │       │                       └── NotificationPlatformComponent.kt
│   │   │       └── jvmMain/
│   │   │           └── kotlin/
│   │   │               └── app/
│   │   │                   └── tivi/
│   │   │                       └── core/
│   │   │                           └── notifications/
│   │   │                               ├── EmptyNotificationManager.kt
│   │   │                               └── NotificationPlatformComponent.kt
│   │   └── protos/
│   │       ├── build.gradle.kts
│   │       └── src/
│   │           └── commonMain/
│   │               └── proto/
│   │                   └── pending.proto
│   ├── performance/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       ├── androidMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── core/
│   │       │                   └── perf/
│   │       │                       ├── AndroidTracer.kt
│   │       │                       └── PerformanceComponent.kt
│   │       ├── commonMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── core/
│   │       │                   └── perf/
│   │       │                       ├── PerformanceComponent.kt
│   │       │                       └── Tracer.kt
│   │       ├── iosMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── core/
│   │       │                   └── perf/
│   │       │                       └── PerformanceComponent.kt
│   │       └── jvmMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── core/
│   │                           └── perf/
│   │                               └── PerformanceComponent.kt
│   ├── permissions/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       ├── androidMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── core/
│   │       │                   └── permissions/
│   │       │                       ├── PermissionsController.android.kt
│   │       │                       └── PermissionsPlatformComponent.kt
│   │       ├── commonMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── core/
│   │       │                   └── permissions/
│   │       │                       ├── PermissionsComponent.kt
│   │       │                       └── PermissionsController.common.kt
│   │       ├── iosMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── core/
│   │       │                   └── permissions/
│   │       │                       └── PermissionsPlatformComponent.kt
│   │       ├── jvmMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── core/
│   │       │                   └── permissions/
│   │       │                       └── PermissionsPlatformComponent.kt
│   │       └── mokoImplMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── core/
│   │                           └── permissions/
│   │                               └── PermissionsController.ios.kt
│   ├── powercontroller/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       ├── androidMain/
│   │       │   ├── AndroidManifest.xml
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── util/
│   │       │                   ├── AndroidPowerController.kt
│   │       │                   └── PowerControllerComponent.kt
│   │       ├── commonMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── util/
│   │       │                   ├── PowerController.kt
│   │       │                   └── PowerControllerComponent.kt
│   │       ├── iosMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── util/
│   │       │                   └── PowerControllerComponent.kt
│   │       └── jvmMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── util/
│   │                           └── PowerControllerComponent.kt
│   └── preferences/
│       ├── build.gradle.kts
│       └── src/
│           ├── androidMain/
│           │   └── kotlin/
│           │       └── app/
│           │           └── tivi/
│           │               └── settings/
│           │                   └── PreferencesComponent.kt
│           ├── commonMain/
│           │   └── kotlin/
│           │       └── app/
│           │           └── tivi/
│           │               └── settings/
│           │                   ├── Preference.kt
│           │                   ├── PreferencesComponent.kt
│           │                   ├── TiviPreferences.kt
│           │                   └── TiviPreferencesImpl.kt
│           ├── iosMain/
│           │   └── kotlin/
│           │       └── app/
│           │           └── tivi/
│           │               └── settings/
│           │                   └── PreferencesPlatformComponent.kt
│           └── jvmMain/
│               └── kotlin/
│                   └── app/
│                       └── tivi/
│                           └── settings/
│                               └── PreferencesPlatformComponent.kt
├── data/
│   ├── anticipatedshows/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       └── commonMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── data/
│   │                           └── anticipatedshows/
│   │                               ├── AnticipatedShowsBinds.kt
│   │                               ├── AnticipatedShowsDataSource.kt
│   │                               ├── AnticipatedShowsLastRequestStore.kt
│   │                               ├── AnticipatedShowsStore.kt
│   │                               └── TraktAnticipatedShowsDataSource.kt
│   ├── db/
│   │   ├── build.gradle.kts
│   │   ├── room-schemas/
│   │   │   ├── 1.json
│   │   │   ├── 10.json
│   │   │   ├── 11.json
│   │   │   ├── 12.json
│   │   │   ├── 13.json
│   │   │   ├── 14.json
│   │   │   ├── 15.json
│   │   │   ├── 16.json
│   │   │   ├── 17.json
│   │   │   ├── 18.json
│   │   │   ├── 19.json
│   │   │   ├── 2.json
│   │   │   ├── 20.json
│   │   │   ├── 21.json
│   │   │   ├── 22.json
│   │   │   ├── 23.json
│   │   │   ├── 24.json
│   │   │   ├── 25.json
│   │   │   ├── 26.json
│   │   │   ├── 27.json
│   │   │   ├── 28.json
│   │   │   ├── 29.json
│   │   │   ├── 3.json
│   │   │   ├── 30.json
│   │   │   ├── 31.json
│   │   │   ├── 32.json
│   │   │   ├── 4.json
│   │   │   ├── 5.json
│   │   │   ├── 6.json
│   │   │   ├── 7.json
│   │   │   ├── 8.json
│   │   │   └── 9.json
│   │   └── src/
│   │       └── commonMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── data/
│   │                           ├── daos/
│   │                           │   ├── AnticipatedShowsDao.kt
│   │                           │   ├── EntityDao.kt
│   │                           │   ├── EntryDao.kt
│   │                           │   ├── EpisodeWatchEntryDao.kt
│   │                           │   ├── EpisodesDao.kt
│   │                           │   ├── FollowedShowsDao.kt
│   │                           │   ├── LastRequestDao.kt
│   │                           │   ├── LibraryShowsDao.kt
│   │                           │   ├── PaginatedEntryDao.kt
│   │                           │   ├── PairEntryDao.kt
│   │                           │   ├── PopularDao.kt
│   │                           │   ├── RecommendedDao.kt
│   │                           │   ├── RelatedShowsDao.kt
│   │                           │   ├── SeasonsDao.kt
│   │                           │   ├── ShowFtsDao.kt
│   │                           │   ├── ShowTmdbImagesDao.kt
│   │                           │   ├── TiviShowDao.kt
│   │                           │   ├── TrendingDao.kt
│   │                           │   ├── UserDao.kt
│   │                           │   └── WatchedShowDao.kt
│   │                           └── db/
│   │                               └── DatabaseTransactionRunner.kt
│   ├── db-sqldelight/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       ├── androidMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── data/
│   │       │                   └── SqlDelightDatabasePlatformComponent.kt
│   │       ├── commonMain/
│   │       │   ├── kotlin/
│   │       │   │   └── app/
│   │       │   │       └── tivi/
│   │       │   │           └── data/
│   │       │   │               ├── DatabaseFactory.kt
│   │       │   │               ├── SqlDelightDatabaseComponent.kt
│   │       │   │               ├── SqlDelightTransactionRunner.kt
│   │       │   │               ├── Utils.kt
│   │       │   │               ├── columnadaptors/
│   │       │   │               │   ├── DayOfWeekColumnAdapter.kt
│   │       │   │               │   ├── ImageTypeColumnAdapter.kt
│   │       │   │               │   ├── InstantLongColumnAdapter.kt
│   │       │   │               │   ├── InstantStringColumnAdapter.kt
│   │       │   │               │   ├── LocalDateColumnAdapter.kt
│   │       │   │               │   ├── LocalDateTimeColumnAdapter.kt
│   │       │   │               │   ├── LocalTimeColumnAdapter.kt
│   │       │   │               │   ├── PendingActionColumnAdapter.kt
│   │       │   │               │   ├── RequestColumnAdapter.kt
│   │       │   │               │   ├── ShowStatusColumnAdapter.kt
│   │       │   │               │   └── TimeZoneColumnAdapter.kt
│   │       │   │               ├── daos/
│   │       │   │               │   ├── SqlDelightAnticipatedShowsDao.kt
│   │       │   │               │   ├── SqlDelightEntityDao.kt
│   │       │   │               │   ├── SqlDelightEpisodeWatchEntryDao.kt
│   │       │   │               │   ├── SqlDelightEpisodesDao.kt
│   │       │   │               │   ├── SqlDelightFollowedShowsDao.kt
│   │       │   │               │   ├── SqlDelightLastRequestDao.kt
│   │       │   │               │   ├── SqlDelightLibraryShowsDao.kt
│   │       │   │               │   ├── SqlDelightPopularShowsDao.kt
│   │       │   │               │   ├── SqlDelightRecommendedShowsDao.kt
│   │       │   │               │   ├── SqlDelightRelatedShowsDao.kt
│   │       │   │               │   ├── SqlDelightSeasonsDao.kt
│   │       │   │               │   ├── SqlDelightShowImagesDao.kt
│   │       │   │               │   ├── SqlDelightTiviShowDao.kt
│   │       │   │               │   ├── SqlDelightTrendingShowsDao.kt
│   │       │   │               │   ├── SqlDelightUserDao.kt
│   │       │   │               │   └── SqlDelightWatchedShowsDao.kt
│   │       │   │               └── paging/
│   │       │   │                   ├── KeyedQueryPagingSource.kt
│   │       │   │                   ├── OffsetQueryPagingSource.kt
│   │       │   │                   └── QueryPagingSource.kt
│   │       │   └── sqldelight/
│   │       │       ├── app/
│   │       │       │   └── tivi/
│   │       │       │       └── data/
│   │       │       │           ├── anticipated_shows.sq
│   │       │       │           ├── episode_watch_entries.sq
│   │       │       │           ├── episodes.sq
│   │       │       │           ├── last_requests.sq
│   │       │       │           ├── library_shows.sq
│   │       │       │           ├── myshows_entries.sq
│   │       │       │           ├── popular_shows.sq
│   │       │       │           ├── recommended_entries.sq
│   │       │       │           ├── related_shows.sq
│   │       │       │           ├── seasons.sq
│   │       │       │           ├── show.sq
│   │       │       │           ├── show_images.sq
│   │       │       │           ├── shows_last_watched.sq
│   │       │       │           ├── shows_next_to_watch.sq
│   │       │       │           ├── shows_view_watch_stats.sq
│   │       │       │           ├── trending_shows.sq
│   │       │       │           ├── upnext_shows.sq
│   │       │       │           ├── users.sq
│   │       │       │           └── watched_entries.sq
│   │       │       └── migrations/
│   │       │           ├── 29.sqm
│   │       │           ├── 30.sqm
│   │       │           ├── 31.sqm
│   │       │           ├── 32.sqm
│   │       │           ├── 33.sqm
│   │       │           └── 34.sqm
│   │       ├── iosMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── data/
│   │       │                   └── SqlDelightDatabasePlatformComponent.kt
│   │       └── jvmMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── data/
│   │                           └── SqlDelightDatabasePlatformComponent.kt
│   ├── episodes/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       └── commonMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── data/
│   │                           └── episodes/
│   │                               ├── EpisodeBinds.kt
│   │                               ├── EpisodeLastRequestStore.kt
│   │                               ├── EpisodeWatchLastRequestStore.kt
│   │                               ├── EpisodeWatchStore.kt
│   │                               ├── SeasonLastRequestStore.kt
│   │                               ├── SeasonsEpisodesRepository.kt
│   │                               ├── ShowSeasonsLastRequestStore.kt
│   │                               └── datasource/
│   │                                   ├── EpisodeDataSource.kt
│   │                                   ├── EpisodeWatchesDataSource.kt
│   │                                   └── SeasonsEpisodesDataSource.kt
│   ├── followedshows/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       └── commonMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── data/
│   │                           └── followedshows/
│   │                               ├── FollowedShowsBinds.kt
│   │                               ├── FollowedShowsDataSource.kt
│   │                               ├── FollowedShowsLastRequestStore.kt
│   │                               ├── FollowedShowsRepository.kt
│   │                               └── TraktFollowedShowsDataSource.kt
│   ├── legacy/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       └── commonMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── data/
│   │                           ├── lastrequests/
│   │                           │   ├── EntityLastRequestStore.kt
│   │                           │   └── GroupLastRequestStore.kt
│   │                           ├── mappers/
│   │                           │   ├── EpisodeIdToTraktIdMapper.kt
│   │                           │   ├── Mapper.kt
│   │                           │   ├── Mappers.kt
│   │                           │   ├── SeasonIdToTraktIdMapper.kt
│   │                           │   ├── ShowIdToTmdbIdMapper.kt
│   │                           │   ├── ShowIdToTraktIdMapper.kt
│   │                           │   ├── ShowIdToTraktOrImdbIdMapper.kt
│   │                           │   ├── TmdbEpisodeDetailToEpisode.kt
│   │                           │   ├── TmdbEpisodeToEpisode.kt
│   │                           │   ├── TmdbSeasonDetailToSeason.kt
│   │                           │   ├── TmdbSeasonToSeason.kt
│   │                           │   ├── TmdbSeasonToSeasonWithEpisodes.kt
│   │                           │   ├── TmdbShowDetailToShowImages.kt
│   │                           │   ├── TmdbShowDetailToTiviShow.kt
│   │                           │   ├── TmdbShowPageResultToTiviShows.kt
│   │                           │   ├── TmdbShowToTiviShow.kt
│   │                           │   ├── TraktBaseShowToWatchedShowEntry.kt
│   │                           │   ├── TraktEpisodeToEpisode.kt
│   │                           │   ├── TraktHistoryEntryToEpisode.kt
│   │                           │   ├── TraktHistoryItemToEpisodeWatchEntry.kt
│   │                           │   ├── TraktListItemToFollowedShowEntry.kt
│   │                           │   ├── TraktListItemToTiviShow.kt
│   │                           │   ├── TraktSeasonToSeason.kt
│   │                           │   ├── TraktSeasonToSeasonWithEpisodes.kt
│   │                           │   ├── TraktShowToTiviShow.kt
│   │                           │   ├── TraktStatusToShowStatus.kt
│   │                           │   ├── TraktTrendingShowToTiviShow.kt
│   │                           │   ├── TraktTrendingShowToTrendingShowEntry.kt
│   │                           │   └── UserToTraktUser.kt
│   │                           └── util/
│   │                               ├── ItemSyncer.kt
│   │                               └── StoreExtensions.kt
│   ├── licenses/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       ├── androidMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── data/
│   │       │                   └── licenses/
│   │       │                       ├── LicenseDataPlatformComponent.kt
│   │       │                       └── fetcher/
│   │       │                           └── AndroidLicensesFetcherImpl.kt
│   │       ├── commonMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── data/
│   │       │                   └── licenses/
│   │       │                       ├── LicenseDataComponent.kt
│   │       │                       ├── LicensesState.kt
│   │       │                       ├── fetcher/
│   │       │                       │   └── LicensesFetcher.kt
│   │       │                       └── store/
│   │       │                           ├── LicensesStore.kt
│   │       │                           └── LicensesStoreImpl.kt
│   │       ├── iosMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── data/
│   │       │                   └── licenses/
│   │       │                       ├── LicenseDataPlatformComponent.kt
│   │       │                       └── fetcher/
│   │       │                           └── IosLicensesFetcherImpl.kt
│   │       └── jvmMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── data/
│   │                           └── licenses/
│   │                               ├── LicenseDataPlatformComponent.kt
│   │                               └── fetcher/
│   │                                   └── JvmLicensesFetcherImpl.kt
│   ├── models/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       └── commonMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── data/
│   │                           ├── compoundmodels/
│   │                           │   ├── EntryWithShow.kt
│   │                           │   ├── EpisodeWithSeason.kt
│   │                           │   ├── EpisodeWithWatches.kt
│   │                           │   ├── LibraryShow.kt
│   │                           │   ├── SeasonWithEpisodes.kt
│   │                           │   ├── SeasonWithEpisodesAndWatches.kt
│   │                           │   ├── SeasonWithShow.kt
│   │                           │   ├── ShowSeasonEpisode.kt
│   │                           │   └── UpNextEntry.kt
│   │                           ├── imagemodels/
│   │                           │   ├── EpisodeImageModel.kt
│   │                           │   ├── ImageModel.kt
│   │                           │   ├── SeasonImageModel.kt
│   │                           │   └── ShowImageModel.kt
│   │                           ├── models/
│   │                           │   ├── ActionDate.kt
│   │                           │   ├── AnticipatedShowEntry.kt
│   │                           │   ├── Entry.kt
│   │                           │   ├── Episode.kt
│   │                           │   ├── EpisodeWatchEntry.kt
│   │                           │   ├── FollowedShowEntry.kt
│   │                           │   ├── Genre.kt
│   │                           │   ├── LastRequest.kt
│   │                           │   ├── Notification.kt
│   │                           │   ├── PendingAction.kt
│   │                           │   ├── PopularShowEntry.kt
│   │                           │   ├── RecommendedShowEntry.kt
│   │                           │   ├── RelatedShowEntry.kt
│   │                           │   ├── Request.kt
│   │                           │   ├── Season.kt
│   │                           │   ├── ShowImages.kt
│   │                           │   ├── ShowStatus.kt
│   │                           │   ├── ShowTmdbImage.kt
│   │                           │   ├── SortOption.kt
│   │                           │   ├── TiviEntity.kt
│   │                           │   ├── TiviShow.kt
│   │                           │   ├── TraktUser.kt
│   │                           │   ├── TrendingShowEntry.kt
│   │                           │   └── WatchedShowEntry.kt
│   │                           ├── util/
│   │                           │   ├── DateTimeUtils.kt
│   │                           │   ├── ImageEntityUtils.kt
│   │                           │   └── MergeShowUtils.kt
│   │                           └── views/
│   │                               ├── ShowsNextToWatch.kt
│   │                               └── ShowsWatchStats.kt
│   ├── popularshows/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       └── commonMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── data/
│   │                           └── popularshows/
│   │                               ├── PopularShowsBinds.kt
│   │                               ├── PopularShowsDataSource.kt
│   │                               ├── PopularShowsLastRequestStore.kt
│   │                               ├── PopularShowsStore.kt
│   │                               └── TraktPopularShowsDataSource.kt
│   ├── recommendedshows/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       └── commonMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── data/
│   │                           └── recommendedshows/
│   │                               ├── RecommendedShowsBinds.kt
│   │                               ├── RecommendedShowsDataSource.kt
│   │                               ├── RecommendedShowsLastRequestStore.kt
│   │                               ├── RecommendedShowsStore.kt
│   │                               └── TraktRecommendedShowsDataSource.kt
│   ├── relatedshows/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       └── commonMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── data/
│   │                           └── relatedshows/
│   │                               ├── RelatedShowsBinds.kt
│   │                               ├── RelatedShowsDataSource.kt
│   │                               ├── RelatedShowsLastRequestStore.kt
│   │                               ├── RelatedShowsStore.kt
│   │                               ├── TmdbRelatedShowsDataSourceImpl.kt
│   │                               └── TraktRelatedShowsDataSourceImpl.kt
│   ├── search/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       └── commonMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── data/
│   │                           └── search/
│   │                               ├── SearchBinds.kt
│   │                               ├── SearchDataSource.kt
│   │                               ├── SearchRepository.kt
│   │                               └── TmdbSearchDataSource.kt
│   ├── showimages/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       └── commonMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── data/
│   │                           └── showimages/
│   │                               ├── ShowImagesBinds.kt
│   │                               ├── ShowImagesDataSource.kt
│   │                               ├── ShowImagesLastRequestStore.kt
│   │                               ├── ShowImagesStore.kt
│   │                               └── TmdbShowImagesDataSource.kt
│   ├── shows/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       └── commonMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── data/
│   │                           └── shows/
│   │                               ├── ShowDataSource.kt
│   │                               ├── ShowLastRequestStore.kt
│   │                               ├── ShowStore.kt
│   │                               ├── ShowsBinds.kt
│   │                               ├── TmdbShowDataSourceImpl.kt
│   │                               └── TraktShowDataSourceImpl.kt
│   ├── test/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       ├── androidUnitTest/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── data/
│   │       │                   └── DatabaseTest.kt
│   │       ├── commonTest/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               ├── data/
│   │       │               │   ├── DatabaseTest.kt
│   │       │               │   ├── dao/
│   │       │               │   │   ├── EpisodeWatchEntryTest.kt
│   │       │               │   │   ├── EpisodesTest.kt
│   │       │               │   │   └── SeasonsTest.kt
│   │       │               │   └── repositories/
│   │       │               │       ├── FollowedShowRepositoryTest.kt
│   │       │               │       └── SeasonsEpisodesRepositoryTest.kt
│   │       │               └── utils/
│   │       │                   ├── AuthorizedAuthStore.kt
│   │       │                   ├── Dispatchers.kt
│   │       │                   ├── FakeEpisodeDataSource.kt
│   │       │                   ├── FakeEpisodeWatchesDataSource.kt
│   │       │                   ├── FakeFollowedShowsDataSource.kt
│   │       │                   ├── FakeSeasonsEpisodesDataSource.kt
│   │       │                   ├── Fakes.kt
│   │       │                   ├── ObjectGraph.kt
│   │       │                   ├── SampleData.kt
│   │       │                   └── TestTransactionRunner.kt
│   │       ├── jvmTest/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── data/
│   │       │                   └── DatabaseTest.kt
│   │       └── nativeTest/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── data/
│   │                           └── DatabaseTest.kt
│   ├── traktauth/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       ├── androidMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── data/
│   │       │                   └── traktauth/
│   │       │                       ├── AndroidTraktLoginAction.kt
│   │       │                       ├── AndroidTraktRefreshTokenAction.kt
│   │       │                       ├── AppAuthAuthStateWrapper.kt
│   │       │                       ├── LoginTraktActivityResultContract.kt
│   │       │                       ├── TraktAuthComponent.kt
│   │       │                       ├── TraktAuthInitializer.kt
│   │       │                       └── store/
│   │       │                           ├── BlockStoreAuthStore.kt
│   │       │                           ├── PreferencesAuthStore.kt
│   │       │                           └── TiviAuthStore.kt
│   │       ├── commonMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── data/
│   │       │                   └── traktauth/
│   │       │                       ├── AuthState.kt
│   │       │                       ├── TraktAuthComponent.kt
│   │       │                       ├── TraktAuthRepository.kt
│   │       │                       ├── TraktAuthState.kt
│   │       │                       ├── TraktLoginAction.kt
│   │       │                       ├── TraktOAuthInfo.kt
│   │       │                       ├── TraktRefreshTokenAction.kt
│   │       │                       └── store/
│   │       │                           └── AuthStore.kt
│   │       ├── iosMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── data/
│   │       │                   └── traktauth/
│   │       │                       ├── IosAuthStore.kt
│   │       │                       └── TraktAuthComponent.kt
│   │       └── jvmMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── data/
│   │                           └── traktauth/
│   │                               ├── DesktopAuthStore.kt
│   │                               ├── DesktopTraktLoginAction.kt
│   │                               ├── DesktopTraktRefreshTokenAction.kt
│   │                               └── TraktAuthComponent.kt
│   ├── traktusers/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       └── commonMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── data/
│   │                           └── traktusers/
│   │                               ├── TraktUsersBinds.kt
│   │                               ├── TraktUsersDataSource.kt
│   │                               ├── TraktUsersLastRequestStore.kt
│   │                               ├── TraktUsersRepository.kt
│   │                               └── UsersDataSource.kt
│   ├── trendingshows/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       └── commonMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── data/
│   │                           └── trendingshows/
│   │                               ├── TraktTrendingShowsDataSource.kt
│   │                               ├── TrendingShowsBinds.kt
│   │                               ├── TrendingShowsDataSource.kt
│   │                               ├── TrendingShowsLastRequestStore.kt
│   │                               └── TrendingShowsStore.kt
│   └── watchedshows/
│       ├── build.gradle.kts
│       └── src/
│           └── commonMain/
│               └── kotlin/
│                   └── app/
│                       └── tivi/
│                           └── data/
│                               └── watchedshows/
│                                   ├── TraktWatchedShowsDataSource.kt
│                                   ├── WatchedShowsBinds.kt
│                                   ├── WatchedShowsDataSource.kt
│                                   ├── WatchedShowsLastRequestStore.kt
│                                   └── WatchedShowsStore.kt
├── desktop-app/
│   ├── build.gradle.kts
│   └── src/
│       └── jvmMain/
│           └── kotlin/
│               └── app/
│                   └── tivi/
│                       └── Main.kt
├── docs/
│   ├── _config.yml
│   └── privacypolicy.md
├── domain/
│   ├── build.gradle.kts
│   └── src/
│       └── commonMain/
│           └── kotlin/
│               └── app/
│                   └── tivi/
│                       └── domain/
│                           ├── Interactor.kt
│                           ├── PaginatedEntryRemoteMediator.kt
│                           ├── RefreshOnlyRemoteMediator.kt
│                           ├── interactors/
│                           │   ├── AddEpisodeWatch.kt
│                           │   ├── ChangeSeasonFollowStatus.kt
│                           │   ├── ChangeSeasonWatchedStatus.kt
│                           │   ├── ChangeShowFollowStatus.kt
│                           │   ├── ClearUserDetails.kt
│                           │   ├── FetchLicensesList.kt
│                           │   ├── GetTraktAuthState.kt
│                           │   ├── LoginTrakt.kt
│                           │   ├── LogoutTrakt.kt
│                           │   ├── RefreshTraktTokens.kt
│                           │   ├── RemoveEpisodeWatch.kt
│                           │   ├── RemoveEpisodeWatches.kt
│                           │   ├── ScheduleDebugEpisodeNotification.kt
│                           │   ├── ScheduleEpisodeNotifications.kt
│                           │   ├── SearchShows.kt
│                           │   ├── UpdateAnticipatedShows.kt
│                           │   ├── UpdateEpisodeDetails.kt
│                           │   ├── UpdateLibraryShows.kt
│                           │   ├── UpdatePopularShows.kt
│                           │   ├── UpdateRecommendedShows.kt
│                           │   ├── UpdateRelatedShows.kt
│                           │   ├── UpdateShowDetails.kt
│                           │   ├── UpdateShowImages.kt
│                           │   ├── UpdateShowSeasons.kt
│                           │   ├── UpdateTmdbConfig.kt
│                           │   ├── UpdateTrendingShows.kt
│                           │   ├── UpdateUpNextEpisodes.kt
│                           │   └── UpdateUserDetails.kt
│                           └── observers/
│                               ├── ObserveAnticipatedShows.kt
│                               ├── ObserveEpisodeDetails.kt
│                               ├── ObserveEpisodeWatches.kt
│                               ├── ObserveNextShowEpisodesToWatch.kt
│                               ├── ObservePagedAnticipatedShows.kt
│                               ├── ObservePagedLibraryShows.kt
│                               ├── ObservePagedPopularShows.kt
│                               ├── ObservePagedRecommendedShows.kt
│                               ├── ObservePagedTrendingShows.kt
│                               ├── ObservePagedUpNextShows.kt
│                               ├── ObservePopularShows.kt
│                               ├── ObserveRecommendedShows.kt
│                               ├── ObserveRelatedShows.kt
│                               ├── ObserveShowDetails.kt
│                               ├── ObserveShowDetailsForEpisodeId.kt
│                               ├── ObserveShowFollowStatus.kt
│                               ├── ObserveShowImages.kt
│                               ├── ObserveShowNextEpisodeToWatch.kt
│                               ├── ObserveShowSeasonsEpisodesWatches.kt
│                               ├── ObserveShowViewStats.kt
│                               ├── ObserveTraktAuthState.kt
│                               ├── ObserveTrendingShows.kt
│                               └── ObserveUserDetails.kt
├── fastlane/
│   ├── Fastfile
│   ├── Matchfile
│   ├── metadata/
│   │   └── android/
│   │       └── en_US/
│   │           ├── full_description.txt
│   │           ├── short_description.txt
│   │           ├── title.txt
│   │           └── video.txt
│   └── screenshots/
│       └── screenshots.html
├── gradle/
│   ├── build-logic/
│   │   ├── convention/
│   │   │   ├── build.gradle.kts
│   │   │   └── src/
│   │   │       └── main/
│   │   │           └── kotlin/
│   │   │               └── app/
│   │   │                   └── tivi/
│   │   │                       └── gradle/
│   │   │                           ├── Android.kt
│   │   │                           ├── AndroidApplicationConventionPlugin.kt
│   │   │                           ├── AndroidApplicationLicensesHandler.kt
│   │   │                           ├── AndroidLibraryConventionPlugin.kt
│   │   │                           ├── AndroidTestConventionPlugin.kt
│   │   │                           ├── AssetCopyTask.kt
│   │   │                           ├── ComposeMultiplatformConventionPlugin.kt
│   │   │                           ├── IosLicensesHandler.kt
│   │   │                           ├── Java.kt
│   │   │                           ├── Kotlin.kt
│   │   │                           ├── KotlinAndroidConventionPlugin.kt
│   │   │                           ├── KotlinMultiplatformConventionPlugin.kt
│   │   │                           ├── Licensee.kt
│   │   │                           ├── RootConventionPlugin.kt
│   │   │                           ├── Spotless.kt
│   │   │                           ├── VersionCatalog.kt
│   │   │                           └── Versions.kt
│   │   ├── gradle.properties
│   │   └── settings.gradle.kts
│   ├── dependencyGraph.gradle
│   ├── libs.versions.toml
│   └── wrapper/
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── ios-app/
│   └── Tivi/
│       ├── Podfile
│       ├── Settings.bundle/
│       │   └── Root.plist
│       ├── Tivi/
│       │   ├── Assets.xcassets/
│       │   │   ├── AppIcon-QA.appiconset/
│       │   │   │   └── Contents.json
│       │   │   ├── AppIcon.appiconset/
│       │   │   │   └── Contents.json
│       │   │   └── Contents.json
│       │   ├── Auth.swift
│       │   ├── ContentView.swift
│       │   ├── GoogleService-Info.plist
│       │   ├── Info.plist
│       │   ├── Preview Content/
│       │   │   └── Preview Assets.xcassets/
│       │   │       └── Contents.json
│       │   └── TiviApp.swift
│       ├── Tivi.xcodeproj/
│       │   ├── project.pbxproj
│       │   ├── project.xcworkspace/
│       │   │   ├── contents.xcworkspacedata
│       │   │   └── xcshareddata/
│       │   │       ├── IDEWorkspaceChecks.plist
│       │   │       └── swiftpm/
│       │   │           └── Package.resolved
│       │   └── xcshareddata/
│       │       └── xcschemes/
│       │           ├── Tivi Prod (StoreKit).xcscheme
│       │           ├── Tivi Prod.xcscheme
│       │           ├── Tivi QA.xcscheme
│       │           └── UITests.xcscheme
│       ├── Tivi.xcworkspace/
│       │   ├── contents.xcworkspacedata
│       │   └── xcshareddata/
│       │       └── IDEWorkspaceChecks.plist
│       ├── UITests/
│       │   ├── Extensions.swift
│       │   ├── Screenshots.swift
│       │   └── SnapshotHelper.swift
│       └── xcconfig/
│           ├── Project.xcconfig
│           ├── Tivi-Prod-Debug.xcconfig
│           ├── Tivi-Prod-Release.xcconfig
│           ├── Tivi-QA-Debug.xcconfig
│           ├── Tivi-QA-Release.xcconfig
│           ├── UITests.xcconfig
│           └── common/
│               ├── Debug.xcconfig
│               ├── Prod.xcconfig
│               ├── QA.xcconfig
│               └── Release.xcconfig
├── release/
│   ├── GoogleService-Info.plist.gpg
│   ├── app-debug.jks
│   ├── app-release.gpg
│   ├── clean-secrets.sh
│   ├── decrypt-secrets.sh
│   ├── encrypt-secrets.sh
│   ├── google-services.gpg
│   └── play-account.gpg
├── renovate.json
├── room2sqld.py
├── settings.gradle.kts
├── shared/
│   ├── common/
│   │   ├── build.gradle.kts
│   │   ├── lint-baseline.xml
│   │   └── src/
│   │       ├── androidMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── inject/
│   │       │                   ├── SharedActivityComponent.kt
│   │       │                   └── SharedPlatformApplicationComponent.kt
│   │       ├── commonMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               ├── appinitializers/
│   │       │               │   └── AppInitializers.kt
│   │       │               └── inject/
│   │       │                   ├── SharedApplicationComponent.kt
│   │       │                   └── SharedUiComponent.kt
│   │       ├── iosMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── inject/
│   │       │                   └── SharedPlatformApplicationComponent.kt
│   │       └── jvmMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── inject/
│   │                           └── SharedPlatformApplicationComponent.kt
│   ├── prod/
│   │   ├── build.gradle.kts
│   │   ├── lint-baseline.xml
│   │   └── src/
│   │       ├── androidMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── inject/
│   │       │                   ├── AndroidActivityComponent.kt
│   │       │                   └── AndroidApplicationComponent.kt
│   │       ├── commonMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── inject/
│   │       │                   ├── ProdApplicationComponent.kt
│   │       │                   └── ProdUiComponent.kt
│   │       ├── iosMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── inject/
│   │       │                   ├── HomeUiControllerComponent.kt
│   │       │                   └── IosApplicationComponent.kt
│   │       └── jvmMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── inject/
│   │                           ├── DesktopApplicationComponent.kt
│   │                           └── WindowComponent.kt
│   └── qa/
│       ├── build.gradle.kts
│       ├── lint-baseline.xml
│       └── src/
│           ├── androidMain/
│           │   └── kotlin/
│           │       └── app/
│           │           └── tivi/
│           │               └── inject/
│           │                   ├── AndroidActivityComponent.kt
│           │                   └── AndroidApplicationComponent.kt
│           ├── commonMain/
│           │   └── kotlin/
│           │       └── app/
│           │           └── tivi/
│           │               └── inject/
│           │                   ├── QaApplicationComponent.kt
│           │                   └── QaUiComponent.kt
│           ├── iosMain/
│           │   └── kotlin/
│           │       └── app/
│           │           └── tivi/
│           │               └── inject/
│           │                   ├── HomeUiControllerComponent.kt
│           │                   └── IosApplicationComponent.kt
│           └── jvmMain/
│               └── kotlin/
│                   └── app/
│                       └── tivi/
│                           └── inject/
│                               ├── DesktopApplicationComponent.kt
│                               └── WindowComponent.kt
├── spotless/
│   ├── cb-copyright.txt
│   └── google-copyright.txt
├── tasks/
│   ├── build.gradle.kts
│   └── src/
│       ├── androidMain/
│       │   ├── AndroidManifest.xml
│       │   └── kotlin/
│       │       └── app/
│       │           └── tivi/
│       │               └── tasks/
│       │                   ├── AndroidTasks.kt
│       │                   ├── BootBroadcastReceiver.kt
│       │                   ├── ScheduleEpisodeNotificationsWorker.kt
│       │                   ├── SyncLibraryShowsWorker.kt
│       │                   ├── TasksPlatformComponent.kt
│       │                   └── TiviWorkerFactory.kt
│       ├── commonMain/
│       │   └── kotlin/
│       │       └── app/
│       │           └── tivi/
│       │               └── tasks/
│       │                   ├── Tasks.kt
│       │                   ├── TasksComponent.kt
│       │                   └── TasksInitializer.kt
│       ├── iosMain/
│       │   └── kotlin/
│       │       └── app/
│       │           └── tivi/
│       │               └── tasks/
│       │                   ├── IosTasks.kt
│       │                   └── TasksPlatformComponent.kt
│       └── jvmMain/
│           └── kotlin/
│               └── app/
│                   └── tivi/
│                       └── tasks/
│                           └── TasksPlatformComponent.kt
├── thirdparty/
│   └── androidx/
│       └── paging/
│           └── compose/
│               ├── build.gradle.kts
│               └── src/
│                   ├── androidMain/
│                   │   └── kotlin/
│                   │       └── PagingPlaceholders.android.kt
│                   ├── commonMain/
│                   │   └── kotlin/
│                   │       ├── LazyFoundationExtensions.kt
│                   │       ├── LazyPagingItems.kt
│                   │       └── PagingPlaceholders.kt
│                   ├── iosMain/
│                   │   └── kotlin/
│                   │       └── PagingPlaceholders.ios.kt
│                   └── jvmMain/
│                       └── kotlin/
│                           └── PagingPlaceholders.jvm.kt
└── ui/
    ├── account/
    │   ├── build.gradle.kts
    │   ├── lint-baseline.xml
    │   └── src/
    │       └── commonMain/
    │           └── kotlin/
    │               └── app/
    │                   └── tivi/
    │                       └── account/
    │                           ├── AccountComponent.kt
    │                           ├── AccountPresenter.kt
    │                           ├── AccountUi.kt
    │                           └── AccountUiState.kt
    ├── anticipated/
    │   ├── build.gradle.kts
    │   ├── lint-baseline.xml
    │   └── src/
    │       └── commonMain/
    │           └── kotlin/
    │               └── app/
    │                   └── tivi/
    │                       └── home/
    │                           └── anticipated/
    │                               ├── AnticipatedShows.kt
    │                               ├── AnticipatedShowsComponent.kt
    │                               ├── AnticipatedShowsPresenter.kt
    │                               └── AnticipatedShowsUiState.kt
    ├── developer/
    │   ├── log/
    │   │   ├── build.gradle.kts
    │   │   ├── lint-baseline.xml
    │   │   └── src/
    │   │       └── commonMain/
    │   │           └── kotlin/
    │   │               └── app/
    │   │                   └── tivi/
    │   │                       └── developer/
    │   │                           └── log/
    │   │                               ├── DevLog.kt
    │   │                               ├── DevLogComponent.kt
    │   │                               ├── DevLogPresenter.kt
    │   │                               └── DevLogUiState.kt
    │   ├── notifications/
    │   │   ├── build.gradle.kts
    │   │   ├── lint-baseline.xml
    │   │   └── src/
    │   │       └── commonMain/
    │   │           └── kotlin/
    │   │               └── app/
    │   │                   └── tivi/
    │   │                       └── developer/
    │   │                           └── notifications/
    │   │                               ├── DevNotifications.kt
    │   │                               ├── DevNotificationsComponent.kt
    │   │                               ├── DevNotificationsPresenter.kt
    │   │                               └── DevNotificationsUiState.kt
    │   └── settings/
    │       ├── build.gradle.kts
    │       ├── lint-baseline.xml
    │       └── src/
    │           └── commonMain/
    │               └── kotlin/
    │                   └── app/
    │                       └── tivi/
    │                           └── settings/
    │                               └── developer/
    │                                   ├── DevSettings.kt
    │                                   ├── DevSettingsComponent.kt
    │                                   ├── DevSettingsPresenter.kt
    │                                   └── DevSettingsUiState.kt
    ├── discover/
    │   ├── build.gradle.kts
    │   ├── lint-baseline.xml
    │   └── src/
    │       └── commonMain/
    │           └── kotlin/
    │               └── app/
    │                   └── tivi/
    │                       └── home/
    │                           └── discover/
    │                               ├── Discover.kt
    │                               ├── DiscoverComponent.kt
    │                               ├── DiscoverPresenter.kt
    │                               └── DiscoverUiState.kt
    ├── episode/
    │   ├── details/
    │   │   ├── build.gradle.kts
    │   │   ├── lint-baseline.xml
    │   │   └── src/
    │   │       └── commonMain/
    │   │           └── kotlin/
    │   │               └── app/
    │   │                   └── tivi/
    │   │                       └── episodedetails/
    │   │                           ├── EpisodeDetails.kt
    │   │                           ├── EpisodeDetailsComponent.kt
    │   │                           ├── EpisodeDetailsPresenter.kt
    │   │                           └── EpisodeDetailsUiState.kt
    │   └── track/
    │       ├── build.gradle.kts
    │       ├── lint-baseline.xml
    │       └── src/
    │           └── commonMain/
    │               └── kotlin/
    │                   └── app/
    │                       └── tivi/
    │                           └── episode/
    │                               └── track/
    │                                   ├── EpisodeTrack.kt
    │                                   ├── EpisodeTrackComponent.kt
    │                                   ├── EpisodeTrackPresenter.kt
    │                                   └── EpisodeTrackUiState.kt
    ├── library/
    │   ├── build.gradle.kts
    │   ├── lint-baseline.xml
    │   └── src/
    │       └── commonMain/
    │           └── kotlin/
    │               └── app/
    │                   └── tivi/
    │                       └── home/
    │                           └── library/
    │                               ├── Library.kt
    │                               ├── LibraryComponent.kt
    │                               ├── LibraryPresenter.kt
    │                               └── LibraryUiState.kt
    ├── licenses/
    │   ├── build.gradle.kts
    │   ├── lint-baseline.xml
    │   └── src/
    │       └── commonMain/
    │           └── kotlin/
    │               └── app/
    │                   └── tivi/
    │                       └── settings/
    │                           └── licenses/
    │                               ├── Licenses.kt
    │                               ├── LicensesComponent.kt
    │                               ├── LicensesPresenter.kt
    │                               └── LicensesUiState.kt
    ├── popular/
    │   ├── build.gradle.kts
    │   ├── lint-baseline.xml
    │   └── src/
    │       └── commonMain/
    │           └── kotlin/
    │               └── app/
    │                   └── tivi/
    │                       └── home/
    │                           └── popular/
    │                               ├── PopularShows.kt
    │                               ├── PopularShowsComponent.kt
    │                               ├── PopularShowsPresenter.kt
    │                               └── PopularShowsUiState.kt
    ├── recommended/
    │   ├── build.gradle.kts
    │   ├── lint-baseline.xml
    │   └── src/
    │       └── commonMain/
    │           └── kotlin/
    │               └── app/
    │                   └── tivi/
    │                       └── home/
    │                           └── recommended/
    │                               ├── Recommended.kt
    │                               ├── RecommendedShowsComponent.kt
    │                               ├── RecommendedShowsPresenter.kt
    │                               └── RecommendedShowsUiState.kt
    ├── root/
    │   ├── build.gradle.kts
    │   ├── lint-baseline.xml
    │   └── src/
    │       ├── commonMain/
    │       │   └── kotlin/
    │       │       └── app/
    │       │           └── tivi/
    │       │               └── home/
    │       │                   ├── Home.kt
    │       │                   ├── RootUiComponent.kt
    │       │                   ├── RootViewModel.kt
    │       │                   └── TiviContent.kt
    │       └── iosMain/
    │           └── kotlin/
    │               └── app/
    │                   └── tivi/
    │                       └── home/
    │                           └── TiviUiViewController.kt
    ├── search/
    │   ├── build.gradle.kts
    │   ├── lint-baseline.xml
    │   └── src/
    │       └── commonMain/
    │           └── kotlin/
    │               └── app/
    │                   └── tivi/
    │                       └── home/
    │                           └── search/
    │                               ├── Search.kt
    │                               ├── SearchComponent.kt
    │                               ├── SearchPresenter.kt
    │                               └── SearchUiState.kt
    ├── settings/
    │   ├── build.gradle.kts
    │   ├── lint-baseline.xml
    │   └── src/
    │       ├── androidMain/
    │       │   └── kotlin/
    │       │       └── app/
    │       │           └── tivi/
    │       │               └── settings/
    │       │                   └── Platform.kt
    │       ├── commonMain/
    │       │   └── kotlin/
    │       │       └── app/
    │       │           └── tivi/
    │       │               └── settings/
    │       │                   ├── Platform.kt
    │       │                   ├── Settings.kt
    │       │                   ├── SettingsComponent.kt
    │       │                   ├── SettingsPresenter.kt
    │       │                   └── SettingsUiState.kt
    │       ├── iosMain/
    │       │   └── kotlin/
    │       │       └── app/
    │       │           └── tivi/
    │       │               └── settings/
    │       │                   └── Platform.kt
    │       └── jvmMain/
    │           └── kotlin/
    │               └── app/
    │                   └── tivi/
    │                       └── settings/
    │                           └── Platform.kt
    ├── show/
    │   ├── details/
    │   │   ├── build.gradle.kts
    │   │   ├── lint-baseline.xml
    │   │   └── src/
    │   │       └── commonMain/
    │   │           └── kotlin/
    │   │               └── app/
    │   │                   └── tivi/
    │   │                       └── showdetails/
    │   │                           └── details/
    │   │                               ├── ShowDetails.kt
    │   │                               ├── ShowDetailsComponent.kt
    │   │                               ├── ShowDetailsPresenter.kt
    │   │                               └── ShowDetailsUiState.kt
    │   └── seasons/
    │       ├── build.gradle.kts
    │       ├── lint-baseline.xml
    │       └── src/
    │           └── commonMain/
    │               └── kotlin/
    │                   └── app/
    │                       └── tivi/
    │                           └── showdetails/
    │                               └── seasons/
    │                                   ├── ShowSeasons.kt
    │                                   ├── ShowSeasonsComponent.kt
    │                                   ├── ShowSeasonsPresenter.kt
    │                                   └── ShowSeasonsUiState.kt
    ├── trending/
    │   ├── build.gradle.kts
    │   ├── lint-baseline.xml
    │   └── src/
    │       └── commonMain/
    │           └── kotlin/
    │               └── app/
    │                   └── tivi/
    │                       └── home/
    │                           └── trending/
    │                               ├── Trending.kt
    │                               ├── TrendingShowsComponent.kt
    │                               ├── TrendingShowsPresenter.kt
    │                               └── TrendingShowsUiState.kt
    └── upnext/
        ├── build.gradle.kts
        ├── lint-baseline.xml
        └── src/
            └── commonMain/
                └── kotlin/
                    └── app/
                        └── tivi/
                            └── home/
                                └── upnext/
                                    ├── UpNext.kt
                                    ├── UpNextComponent.kt
                                    ├── UpNextPresenter.kt
                                    └── UpNextUiState.kt

================================================
FILE CONTENTS
================================================

================================================
FILE: .editorconfig
================================================
root = true

[*]
charset = utf-8
indent_size = 2
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true

[*.{kt,kts}]
ij_kotlin_imports_layout = *
ktlint_code_style = intellij_idea
ktlint_standard_discouraged-comment-location = disabled
ktlint_standard_function-expression-body = disabled
ktlint_function_naming_ignore_when_annotated_with = Composable


================================================
FILE: .gitattributes
================================================
* text=auto eol=lf

*.bat text eol=crlf
*.jar binary


================================================
FILE: .github/scripts/mac-disk-cleanup.sh
================================================
#!/bin/bash

echo "Disk space before cleanup..."
df -h /

echo "Removing unnecessary files to free up disk space..."
# https://github.com/actions/runner-images/issues/2840
sudo rm -rf \
  /opt/hostedtoolcache \
  /opt/google/chrome \
  /opt/microsoft/msedge \
  /opt/microsoft/powershell \
  /opt/pipx \
  /usr/lib/mono \
  /usr/local/julia* \
  /usr/local/lib/node_modules \
  /usr/local/share/chromium \
  /usr/local/share/powershell \
  /usr/share/dotnet \
  /usr/share/swift

echo "Searching for Xcode versions:"
find /Applications -name "Xcode_*" -maxdepth 1 -mindepth 1
echo "Removing old Xcode versions..."
find /Applications -name "Xcode_*" -maxdepth 1 -mindepth 1 | grep -v `cat .xcode-version` | xargs rm -rf
echo "Available Xcode versions after removal:"
find /Applications -name "Xcode_*" -maxdepth 1 -mindepth 1

echo "Disk space after cleanup..."
df -h /


================================================
FILE: .github/workflows/baseline-profile.yml
================================================
name: Baseline profile generation

on:
  # Every Sunday at 00:43
  schedule:
    - cron: '43 0 * * 0'
  workflow_dispatch:
  pull_request:
    paths:
      - 'benchmark/**'
      - '.github/workflows/baseline-profile.yml'

jobs:
  baseline-profile:
    runs-on: ubuntu-latest
    timeout-minutes: 45
    env:
      TERM: dumb
      ORG_GRADLE_PROJECT_TIVI_TMDB_API_KEY: ${{ secrets.ORG_GRADLE_PROJECT_TIVI_TMDB_API_KEY }}
      ORG_GRADLE_PROJECT_TIVI_TVDB_API_KEY: ${{ secrets.ORG_GRADLE_PROJECT_TIVI_TVDB_API_KEY }}
      ORG_GRADLE_PROJECT_TIVI_TRAKT_CLIENT_ID: ${{ secrets.ORG_GRADLE_PROJECT_TIVI_TRAKT_CLIENT_ID }}
      ORG_GRADLE_PROJECT_TIVI_TRAKT_CLIENT_SECRET: ${{ secrets.ORG_GRADLE_PROJECT_TIVI_TRAKT_CLIENT_SECRET }}
      ORG_GRADLE_PROJECT_REMOTE_BUILD_CACHE_URL: ${{ secrets.ORG_GRADLE_PROJECT_REMOTE_BUILD_CACHE_URL }}
      ORG_GRADLE_PROJECT_REMOTE_BUILD_CACHE_USERNAME: ${{ secrets.ORG_GRADLE_PROJECT_REMOTE_BUILD_CACHE_USERNAME }}
      ORG_GRADLE_PROJECT_REMOTE_BUILD_CACHE_PASSWORD: ${{ secrets.ORG_GRADLE_PROJECT_REMOTE_BUILD_CACHE_PASSWORD }}

    steps:
      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
        with:
          # We need to use a Personal Access Token from an admin to be able to commit to main,
          # as it is a protected branch.
          # https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token#creating-a-fine-grained-personal-access-token
          token: ${{ secrets.TIVI_OWNER_PAT }}

      - name: Enable KVM
        run: |
          echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
          sudo udevadm control --reload-rules
          sudo udevadm trigger --name-match=kvm

      - name: Setup JDK for build
        uses: actions/setup-java@v4
        with:
          distribution: 'temurin'
          java-version: 21

      - name: Accept Android SDK licenses
        run: yes | $ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager --licenses

      - name: Decrypt secrets
        run: ./release/decrypt-secrets.sh
        env:
          ENCRYPT_KEY: ${{ secrets.ENCRYPT_KEY }}

      - uses: gradle/actions/setup-gradle@v4
        with:
          cache-disabled: true

      # This allows us to build most of what we need without the emulator running
      # and using resources
      - name: Build app and benchmark
        run: ./gradlew assembleNonMinifiedRelease

      - name: Clear Gradle Managed Devices
        run: ./gradlew cleanManagedDevices

      - name: Run benchmark on Gradle Managed Device
        run: |
          ./gradlew generateBaselineProfile \
            -Pandroid.testoptions.manageddevices.emulator.gpu="swiftshader_indirect" \
            -Pandroid.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile \
            -Pandroid.experimental.testOptions.managedDevices.setupTimeoutMinutes=10 \
            --no-configuration-cache

      # If we're on main branch, copy over the baseline profile and
      # commit it to the repository (if changed)
      - name: Commit baseline profile into main
        if: github.ref == 'refs/heads/main'
        run: |
          # If the baseline profile has changed, commit it
          if [[ $(git diff --stat android-app/app/src) != '' ]]; then
            git config user.name github-actions
            git config user.email github-actions@github.com
            git add android-app/app/src
            git commit -m "Update app baseline profile"
            git pull --rebase
            git push
          fi

      - name: Upload reports
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: reports
          path: |
            **/build/reports/*

      - name: Clean secrets
        if: always()
        run: ./release/clean-secrets.sh


================================================
FILE: .github/workflows/build.yml
================================================
name: CI

on:
  push:
    branches:
      - main
    tags:
      - v*
  pull_request:
  workflow_dispatch:

env:
  ORG_GRADLE_PROJECT_TIVI_REVENUECAT_ANDROID_API_KEY: ${{ secrets.REVENUECAT_ANDROID_API_KEY }}
  ORG_GRADLE_PROJECT_TIVI_REVENUECAT_IOS_API_KEY: ${{ secrets.REVENUECAT_IOS_API_KEY }}
  ORG_GRADLE_PROJECT_TIVI_TMDB_API_KEY: ${{ secrets.TMDB_API_KEY }}
  ORG_GRADLE_PROJECT_TIVI_TRAKT_CLIENT_ID: ${{ secrets.TRAKT_CLIENT_ID }}
  ORG_GRADLE_PROJECT_TIVI_TRAKT_CLIENT_SECRET: ${{ secrets.TRAKT_CLIENT_SECRET }}
  ORG_GRADLE_PROJECT_TIVI_RELEASE_KEYSTORE_PWD: ${{ secrets.ORG_GRADLE_PROJECT_TIVI_RELEASE_KEYSTORE_PWD }}
  ORG_GRADLE_PROJECT_TIVI_RELEASE_KEY_PWD: ${{ secrets.ORG_GRADLE_PROJECT_TIVI_RELEASE_KEY_PWD }}
  ORG_GRADLE_PROJECT_REMOTE_BUILD_CACHE_URL: ${{ secrets.REMOTE_BUILD_CACHE_URL }}
  ORG_GRADLE_PROJECT_REMOTE_BUILD_CACHE_USERNAME: ${{ secrets.REMOTE_BUILD_CACHE_USERNAME }}
  ORG_GRADLE_PROJECT_REMOTE_BUILD_CACHE_PASSWORD: ${{ secrets.REMOTE_BUILD_CACHE_PASSWORD }}
  APP_STORE_CONNECT_API_KEY_KEY_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_ID }}
  APP_STORE_CONNECT_API_KEY_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_API_ISSUER_ID }}
  APP_STORE_CONNECT_API_KEY_KEY: ${{ secrets.APP_STORE_CONNECT_API_KEY_CONTENTS }}
  APP_STORE_CONNECT_API_KEY_IS_KEY_CONTENT_BASE64: true
  MATCH_GIT_BASIC_AUTHORIZATION: ${{ secrets.FASTLANE_MATCH_GH_PAT }}
  MATCH_PASSWORD: ${{ secrets.FASTLANE_MATCH_PASSWORD }}
  TIVI_BUILD_NUMBER: ${{ github.run_number }}
  FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT: 60

jobs:
  android:
    runs-on: ubuntu-latest
    timeout-minutes: 60

    steps:
      - name: Generate build number
        shell: bash
        run: echo "ORG_GRADLE_PROJECT_TIVI_VERSIONCODE=$(( (GITHUB_RUN_NUMBER * 2) + 10000 ))" >> $GITHUB_ENV

      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4

      - name: set up JDK
        uses: actions/setup-java@v4
        with:
          distribution: 'temurin'
          java-version: 21

      - uses: gradle/actions/setup-gradle@v4
        with:
          cache-disabled: true

      - name: Decrypt secrets
        run: ./release/decrypt-secrets.sh
        env:
          ENCRYPT_KEY: ${{ secrets.ENCRYPT_KEY }}

      - name: Build Android App (skipping benchmark variant)
        run: |
          ./gradlew check \
            :android-app:app:assemble \
            :android-app:app:bundle \
            -x assembleNonMinifiedRelease \
            -x bundleNonMinifiedRelease \
            -Pandroidx.baselineprofile.skipgeneration=true

      - name: Clean secrets
        if: always()
        run: ./release/clean-secrets.sh

      - name: Upload build outputs
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: android-build-outputs
          path: android-app/app/build/outputs

      - name: Upload reports
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: android-reports
          path: |
            **/build/reports/*

      - name: Upload test results
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: android-test-results
          path: |
            **/build/test-results/*

  desktop:
    runs-on: ubuntu-latest
    timeout-minutes: 60

    steps:
      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4

      - name: Validate Gradle Wrapper
        uses: gradle/wrapper-validation-action@v3

      - name: set up JDK
        uses: actions/setup-java@v4
        with:
          distribution: 'temurin'
          java-version: 21

      - uses: gradle/actions/setup-gradle@v4
        with:
          cache-disabled: true

      - name: Build Desktop App
        run: ./gradlew jvmTest :desktop-app:packageDistributionForCurrentOS

      - name: Upload build outputs
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: desktop-build-binaries
          path: desktop-app/build/compose/binaries

      - name: Upload reports
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: desktop-reports
          path: |
            **/build/reports/*

      - name: Upload test results
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: desktop-test-results
          path: |
            **/build/test-results/*

  ios-qa-app:
    runs-on: macos-14
    timeout-minutes: 60

    steps:
      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4

      - name: Cleanup Disk space in runner
        run: .github/scripts/mac-disk-cleanup.sh

      - name: set up JDK
        uses: actions/setup-java@v4
        with:
          distribution: 'temurin'
          java-version: 21

      - uses: ruby/setup-ruby@v1
        with:
          bundler-cache: true

      - run: brew install swiftlint

      - uses: gradle/actions/setup-gradle@v4
        with:
          cache-disabled: true

      - uses: actions/cache@v4
        with:
          path: ios-app/Tivi/Pods
          key: ${{ runner.os }}-pods-${{ hashFiles('**/Podfile.lock') }}
          restore-keys: |
            ${{ runner.os }}-pods-

      - name: Decrypt secrets
        run: ./release/decrypt-secrets.sh
        env:
          ENCRYPT_KEY: ${{ secrets.ENCRYPT_KEY }}

      - name: Run Fastlane Lint lane
        run: bundle exec fastlane ios lint

      - name: Build iOS application
        run: bundle exec fastlane ios build_qa

      - name: Upload build outputs
        if: always()
        continue-on-error: true
        uses: actions/upload-artifact@v4
        with:
          name: ios-qa-build-outputs
          path: |
            *.ipa
            *.dSYM.zip

      - name: Upload build logs
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: ios-qa-logs
          path: |
            **/fastlane-buildlog

  ios-prod-app:
    runs-on: macos-14
    timeout-minutes: 60

    steps:
      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4

      - name: Cleanup Disk space in runner
        run: .github/scripts/mac-disk-cleanup.sh

      - name: set up JDK
        uses: actions/setup-java@v4
        with:
          distribution: 'temurin'
          java-version: 21

      - uses: ruby/setup-ruby@v1
        with:
          bundler-cache: true

      - run: brew install swiftlint

      - uses: gradle/actions/setup-gradle@v4
        with:
          cache-disabled: true

      - uses: actions/cache@v4
        with:
          path: ios-app/Tivi/Pods
          key: ${{ runner.os }}-pods-${{ hashFiles('**/Podfile.lock') }}
          restore-keys: |
            ${{ runner.os }}-pods-

      - name: Decrypt secrets
        run: ./release/decrypt-secrets.sh
        env:
          ENCRYPT_KEY: ${{ secrets.ENCRYPT_KEY }}

      - name: Build iOS application
        run: bundle exec fastlane ios build_prod

      - name: Upload build outputs
        if: always()
        continue-on-error: true
        uses: actions/upload-artifact@v4
        with:
          name: ios-prod-build-outputs
          path: |
            *.ipa
            *.dSYM.zip

      - name: Upload build logs
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: ios-prod-logs
          path: |
            **/fastlane-buildlog

  ios-test:
    runs-on: macos-14
    timeout-minutes: 60

    steps:
      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4

      - name: Cleanup Disk space in runner
        run: .github/scripts/mac-disk-cleanup.sh

      - name: set up JDK
        uses: actions/setup-java@v4
        with:
          distribution: 'temurin'
          java-version: 21

      - uses: gradle/actions/setup-gradle@v4
        with:
          cache-disabled: true

      # Set Xcode version
      - run: sudo xcodes select

      - name: iOS tests
        # Disable CC due to https://github.com/google/ksp/issues/1463
        run: ./gradlew iosSimulatorArm64Test --no-configuration-cache

      - name: Upload reports
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: ios-reports
          path: |
            **/build/reports/*

      - name: Upload test results
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: ios-test-results
          path: |
            **/build/test-results/*

  publish-testflight:
    if: github.ref == 'refs/heads/main'
    needs: [ios-qa-app, ios-prod-app, ios-test]
    runs-on: macos-latest
    timeout-minutes: 20

    steps:
      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4

      - name: Cleanup Disk space in runner
        run: .github/scripts/mac-disk-cleanup.sh

      - uses: ruby/setup-ruby@v1
        with:
          bundler-cache: true

      - name: Decrypt secrets
        run: ./release/decrypt-secrets.sh
        env:
          ENCRYPT_KEY: ${{ secrets.ENCRYPT_KEY }}

      - uses: actions/download-artifact@v4
        with:
          name: ios-qa-build-outputs

      - name: Publish QA to TestFlight
        run: bundle exec fastlane ios publish_qa

      - name: Delete QA IPA
        run: |
          rm *.ipa
          rm *.dSYM.zip

      - uses: actions/download-artifact@v4
        with:
          name: ios-prod-build-outputs

      - name: Publish prod to TestFlight
        run: bundle exec fastlane ios publish_prod

  publish-playstore:
    if: github.ref == 'refs/heads/main'
    needs: [android]
    runs-on: ubuntu-latest
    timeout-minutes: 20

    steps:
      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4

      - uses: ruby/setup-ruby@v1
        with:
          bundler-cache: true

      - name: Decrypt secrets
        run: ./release/decrypt-secrets.sh
        env:
          ENCRYPT_KEY: ${{ secrets.ENCRYPT_KEY }}

      - uses: actions/download-artifact@v4
        with:
          name: android-build-outputs
          path: android-app/app/build/outputs

      - name: Publish QA to Google Play
        run: bundle exec fastlane android publish_qa

      - name: Publish prod to Google Play
        run: bundle exec fastlane android publish_prod


================================================
FILE: .github/workflows/gradle-wrapper.yaml
================================================
name: gradle-wrapper

on:
  pull_request:
    paths:
      - 'gradlew'
      - 'gradlew.bat'
      - 'gradle/wrapper/'

jobs:
  validate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: gradle/wrapper-validation-action@v3


================================================
FILE: .github/workflows/todo.yml
================================================
name: TODO <> Issues

on:
  push:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
      - uses: alstr/todo-to-issue-action@v5


================================================
FILE: .gitignore
================================================
# Gradle
.gradle
build/

# Kotlin
.kotlin/

captures

/local.properties

# IntelliJ .idea folder
.idea/workspace.xml
.idea/misc.xml
.idea/libraries
.idea/caches
.idea/navEditor.xml
.idea/tasks.xml
.idea/modules.xml
.idea/other.xml
.idea/compiler.xml
.idea/jarRepositories.xml
.idea/deploymentTargetDropDown.xml
.idea/deploymentTargetSelector.xml
.idea/androidTestResultsUserPreferences.xml
.idea/appInsightsSettings.xml
.idea/artifacts
.idea/shelf
gradle.xml
*.iml
ios-app/Tivi/.idea/*
.fleet

# General
.DS_Store
.externalNativeBuild

# Do not commit plain-text release keys
app-release.jks
play-account.p12
play-account.json

# Do not commit firebase config
google-services.json

# VS Code config
org.eclipse.buildship.core.prefs
.classpath
.project
bin/


##########################################################################################
# Imported from https://github.com/github/gitignore/blob/main/Swift.gitignore
##########################################################################################

# Xcode
#
# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore

## User settings
xcuserdata/

## Obj-C/Swift specific
*.hmap

## App packaging
*.ipa
*.dSYM.zip
*.dSYM

## Playgrounds
timeline.xctimeline
playground.xcworkspace

# Swift Package Manager
#
# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
# Packages/
# Package.pins
# Package.resolved
# *.xcodeproj
#
# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata
# hence it is not needed unless you have added a package configuration file to your project
# .swiftpm

# CocoaPods
#
# We recommend against adding the Pods directory to your .gitignore. However
# you should judge for yourself, the pros and cons are mentioned at:
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
#
Pods/

.build/

# fastlane
#
# It is recommended to not store the screenshots in the git repo.
# Instead, use fastlane to re-generate the screenshots whenever they are needed.
# For more information about the recommended setup visit:
# https://docs.fastlane.tools/best-practices/source-control/#source-control

report.xml
Preview.html
screenshots/**/*.png
test_output

*.env*


================================================
FILE: .idea/checkstyle-idea.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="CheckStyle-IDEA">
    <option name="configuration">
      <map>
        <entry key="checkstyle-version" value="10.1" />
        <entry key="copy-libs" value="false" />
        <entry key="location-0" value="BUNDLED:(bundled):Sun Checks" />
        <entry key="location-1" value="BUNDLED:(bundled):Google Checks" />
        <entry key="scan-before-checkin" value="false" />
        <entry key="scanscope" value="JavaOnly" />
        <entry key="suppress-errors" value="false" />
      </map>
    </option>
  </component>
</project>

================================================
FILE: .idea/codeStyles/Project.xml
================================================
<component name="ProjectCodeStyleConfiguration">
  <code_scheme name="Project" version="173">
    <JetCodeStyleSettings>
      <option name="PACKAGES_TO_USE_STAR_IMPORTS">
        <value>
          <package name="kotlinx.android.synthetic" alias="false" withSubpackages="true" />
        </value>
      </option>
      <option name="ALLOW_TRAILING_COMMA" value="true" />
    </JetCodeStyleSettings>
    <codeStyleSettings language="Groovy">
      <indentOptions>
        <option name="CONTINUATION_INDENT_SIZE" value="4" />
      </indentOptions>
    </codeStyleSettings>
    <codeStyleSettings language="XML">
      <indentOptions>
        <option name="CONTINUATION_INDENT_SIZE" value="4" />
      </indentOptions>
      <arrangement>
        <rules>
          <section>
            <rule>
              <match>
                <AND>
                  <NAME>xmlns:android</NAME>
                  <XML_ATTRIBUTE />
                  <XML_NAMESPACE>^$</XML_NAMESPACE>
                </AND>
              </match>
            </rule>
          </section>
          <section>
            <rule>
              <match>
                <AND>
                  <NAME>xmlns:.*</NAME>
                  <XML_ATTRIBUTE />
                  <XML_NAMESPACE>^$</XML_NAMESPACE>
                </AND>
              </match>
              <order>BY_NAME</order>
            </rule>
          </section>
          <section>
            <rule>
              <match>
                <AND>
                  <NAME>.*:id</NAME>
                  <XML_ATTRIBUTE />
                  <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
                </AND>
              </match>
            </rule>
          </section>
          <section>
            <rule>
              <match>
                <AND>
                  <NAME>.*:name</NAME>
                  <XML_ATTRIBUTE />
                  <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
                </AND>
              </match>
            </rule>
          </section>
          <section>
            <rule>
              <match>
                <AND>
                  <NAME>name</NAME>
                  <XML_ATTRIBUTE />
                  <XML_NAMESPACE>^$</XML_NAMESPACE>
                </AND>
              </match>
            </rule>
          </section>
          <section>
            <rule>
              <match>
                <AND>
                  <NAME>style</NAME>
                  <XML_ATTRIBUTE />
                  <XML_NAMESPACE>^$</XML_NAMESPACE>
                </AND>
              </match>
            </rule>
          </section>
          <section>
            <rule>
              <match>
                <AND>
                  <NAME>.*</NAME>
                  <XML_ATTRIBUTE />
                  <XML_NAMESPACE>^$</XML_NAMESPACE>
                </AND>
              </match>
              <order>BY_NAME</order>
            </rule>
          </section>
          <section>
            <rule>
              <match>
                <AND>
                  <NAME>.*</NAME>
                  <XML_ATTRIBUTE />
                  <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
                </AND>
              </match>
              <order>ANDROID_ATTRIBUTE_ORDER</order>
            </rule>
          </section>
          <section>
            <rule>
              <match>
                <AND>
                  <NAME>.*</NAME>
                  <XML_ATTRIBUTE />
                  <XML_NAMESPACE>.*</XML_NAMESPACE>
                </AND>
              </match>
              <order>BY_NAME</order>
            </rule>
          </section>
        </rules>
      </arrangement>
    </codeStyleSettings>
    <codeStyleSettings language="kotlin">
      <option name="KEEP_BLANK_LINES_IN_DECLARATIONS" value="1" />
      <option name="KEEP_BLANK_LINES_IN_CODE" value="1" />
      <option name="KEEP_BLANK_LINES_BEFORE_RBRACE" value="0" />
      <option name="ALIGN_MULTILINE_PARAMETERS" value="false" />
      <option name="FIELD_ANNOTATION_WRAP" value="1" />
      <option name="VARIABLE_ANNOTATION_WRAP" value="1" />
      <indentOptions>
        <option name="CONTINUATION_INDENT_SIZE" value="4" />
      </indentOptions>
    </codeStyleSettings>
  </code_scheme>
</component>


================================================
FILE: .idea/codeStyles/codeStyleConfig.xml
================================================
<component name="ProjectCodeStyleConfiguration">
  <state>
    <option name="USE_PER_PROJECT_SETTINGS" value="true" />
  </state>
</component>

================================================
FILE: .idea/copyright/Chris_Banes_Apache_v2.xml
================================================
<component name="CopyrightManager">
  <copyright>
    <option name="allowReplaceRegexp" value="Copyright \d+, Christopher" />
    <option name="notice" value="Copyright &amp;#36;today.year, Christopher Banes and the Tivi project contributors&#10;SPDX-License-Identifier: Apache-2.0" />
    <option name="myName" value="Chris Banes Apache v2" />
  </copyright>
</component>

================================================
FILE: .idea/copyright/Google_Apache_v2_0.xml
================================================
<component name="CopyrightManager">
  <copyright>
    <option name="allowReplaceRegexp" value="Google" />
    <option name="notice" value="Copyright &amp;#36;today.year, Google LLC, Christopher Banes and the Tivi project contributors&#10;SPDX-License-Identifier: Apache-2.0" />
    <option name="myName" value="Google Apache v2.0" />
  </copyright>
</component>

================================================
FILE: .idea/copyright/profiles_settings.xml
================================================
<component name="CopyrightManager">
  <settings default="Chris Banes Apache v2">
    <LanguageOptions name="__TEMPLATE__">
      <option name="block" value="false" />
    </LanguageOptions>
  </settings>
</component>

================================================
FILE: .idea/dictionaries/chris.xml
================================================
<component name="ProjectDictionaryState">
  <dictionary name="chris">
    <words>
      <w>spdx</w>
    </words>
  </dictionary>
</component>

================================================
FILE: .idea/dictionaries/chrisbanes.xml
================================================
<component name="ProjectDictionaryState">
  <dictionary name="chrisbanes">
    <words>
      <w>tmdb</w>
      <w>trakt</w>
    </words>
  </dictionary>
</component>

================================================
FILE: .idea/encodings.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="Encoding">
    <file url="PROJECT" charset="UTF-8" />
  </component>
</project>

================================================
FILE: .idea/inspectionProfiles/ktlint.xml
================================================
<component name="InspectionProjectProfileManager">
  <profile version="1.0">
    <option name="myName" value="ktlint" />
  </profile>
</component>

================================================
FILE: .idea/inspectionProfiles/profiles_settings.xml
================================================
<component name="InspectionProjectProfileManager">
  <settings>
    <option name="PROJECT_PROFILE" value="ktlint" />
    <version value="1.0" />
  </settings>
</component>

================================================
FILE: .idea/kotlinc.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="KotlinJpsPluginSettings">
    <option name="version" value="2.0.21" />
  </component>
</project>

================================================
FILE: .idea/vcs.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="VcsDirectoryMappings">
    <mapping directory="$PROJECT_DIR$" vcs="Git" />
  </component>
</project>

================================================
FILE: .ruby-version
================================================
3.3.4


================================================
FILE: .swiftlint.yml
================================================
included:
  - ios-app/Tivi

excluded:
  - ios-app/Tivi/UITests/SnapshotHelper.swift
  - ios-app/Tivi/Pods

strict: true

disabled_rules:
  - todo


================================================
FILE: .xcode-version
================================================
15.3


================================================
FILE: Gemfile
================================================
source "https://rubygems.org"

gem 'cocoapods', '~> 1.15'
gem 'fastlane'
gem 'screengrab'


================================================
FILE: LICENSE
================================================
                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright [yyyy] [name of copyright owner]

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.


================================================
FILE: README.md
================================================
# Tivi has now deprecated

After roughly 9 years of development, I've decided that now (12th November 2024) is the time for Tivi to be 'complete'. After releasing 1.0.0 recently, I unfortunately just don't have the time or inclination to keep developing the app.

Another reason which has prompted this change is that I have no intention of allowing Google Play to publish my home address (through it's '[verification](https://support.google.com/googleplay/android-developer/answer/14177239?hl=en)' process), therefore my developer account has been restricted and locked. C'est la vie. 

I've also delisted the app on the iOS App Store.

Thanks to everyone who has used and tested the app. I hope that it's been useful to learn from.

🫡

---

![Tivi](art/banner.png)


Tivi is a TV show tracking application which connects to [Trakt.tv](https://www.trakt.tv). It has been updated over the years to target a number of platforms, built upon Kotlin Multiplatform and Compose Multiplatform.

## Download

<a href="https://play.google.com/store/apps/details?id=app.tivi" target="_blank">
<img src="https://play.google.com/intl/en_gb/badges/static/images/badges/en_badge_web_generic.png" width=240 />
</a>

## Platforms

### Android

Tivi started out as an open source Android app, showcasing cutting technologies through its development. The codebase was transformed in late-2022 to be built upon [Kotlin Multiplatform](https://kotlinlang.org/docs/multiplatform.html), allowing us to re-use a large proportion of the code across different platforms.

### iOS

The iOS app is well maintained (the main developers uses it daily). To aid development time, most of the UIs are shared with the Android app, enabled through [Compose Multiplatform](https://www.jetbrains.com/lp/compose-multiplatform/).

### Desktop JVM

Tivi is built for Desktop running as a Java app. Unfortunately we don’t have feature parity on the desktop target due to either missing APIs, or lack of priority by the maintainer to implement them. However the basics of the app do work.

## Development Setup

### Android and Desktop

Tivi is a standard Gradle project which can be opened in recent versions of Android Studio or IntelliJ.

- The Android application module is located at [android-app/app/](android-app/app) (`:android-app:app`).
- The Desktop application module is located at [desktop-app/](desktop-app) (`:desktop-app`).

### iOS

The iOS project is setup as a typical Xcode project. It currently uses [CocoaPods](https://cocoapods.org/) to manage dependencies, and therefore you’ll need to install this before opening the Xcode project.

Let's step through it:

#### Setup Ruby

We need Ruby for various dependencies, therefore we need a Ruby environment. I recommend using [rbenv](https://github.com/rbenv/rbenv), but that's just a suggestion:

```shell
brew install rbenv

rbenv init

# Download Ruby 3.3.4 and set it as the global version
rbenv install 3.3.4
rbenv global 3.3.4

# Install bundler
gem install bundler
```

#### Xcode

We use the latest version of Xcode supported by Kotlin Multiplatform, which is defined in the [.xcode-version](.xcode-version) file.

We enforce the Xcode version on CI, but locally you can use whatever version you want. The [Xcodes.app](https://www.xcodes.app/) application is a great way to install different versions.

#### Nearly there

After you have installed the dependencies, you can now pull down the dependencies:

``` shell
cd /path/to/tivi/checkout

# Install all of the Ruby dependencies
bundle install

# Install pods
pod install --project-directory=ios-app/Tivi
```

#### Open the project in Xcode

Finally, we can open the project in Xcode. Open Xcode and then point it to the workspace file at: [`ios-app/Tivi/Tivi.xcworkspace`](ios-app/Tivi/Tivi.xcworkspace).

Press Run and it should build!

### Code style

This project uses [ktlint](https://github.com/pinterest/ktlint), provided via
the [spotless](https://github.com/diffplug/spotless) gradle plugin, and the bundled project IntelliJ codestyle.

If you find that one of your pull reviews does not pass the CI server check due to a code style conflict, you can fix it by running: `./gradlew spotlessApply`.

### API keys

You need to supply API / client keys for the various services the
app uses:

- [Trakt.tv](https://trakt.docs.apiary.io)
- [TMDb](https://developers.themoviedb.org)

You can find information about how to gain access via the relevant links.

When creating a Trakt API project, you need to set the OAuth redirect uri to `app.tivi.debug://auth/oauth2callback` for debug build types, or `app.tivi://auth/oauth2callback` for release build types.

Once you obtain the keys, you can set them in your `~/.gradle/gradle.properties`:

```
# Get these from Trakt.tv
TIVI_TRAKT_CLIENT_ID=<insert>
TIVI_TRAKT_CLIENT_SECRET=<insert>

# Get this from TMDb
TIVI_TMDB_API_KEY=<insert>
```

## Contributions

If you've found an error in this sample, please file an issue.

Patches are encouraged and may be submitted by forking this project and
submitting a pull request. Since this project is still in its very early stages,
if your change is substantial, please raise an issue first to discuss it.

## License

```
Copyright 2016-2021 Google LLC
Copyright 2023 Christopher Banes

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
```


================================================
FILE: android-app/app/benchmark-rules.pro
================================================
-dontobfuscate
-dontwarn com.google.errorprone.annotations.InlineMe


================================================
FILE: android-app/app/build.gradle.kts
================================================
// Copyright 2023, Google LLC, Christopher Banes and the Tivi project contributors
// SPDX-License-Identifier: Apache-2.0


import com.android.build.api.dsl.ManagedVirtualDevice

plugins {
  id("app.tivi.android.application")
  id("app.tivi.kotlin.android")
  id("app.tivi.compose")
  id("androidx.baselineprofile")
}

android {
  namespace = "app.tivi"

  defaultConfig {
    applicationId = "app.tivi"
    versionCode = properties["TIVI_VERSIONCODE"]?.toString()?.toInt() ?: 19000
    versionName = "1.0"

    testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
  }

  signingConfigs {
    getByName("debug") {
      storeFile = rootProject.file("release/app-debug.jks")
      storePassword = "android"
      keyAlias = "androiddebugkey"
      keyPassword = "android"
    }

    if (rootProject.file("release/app-release.jks").exists()) {
      create("release") {
        storeFile = rootProject.file("release/app-release.jks")
        storePassword = properties["TIVI_RELEASE_KEYSTORE_PWD"]?.toString().orEmpty()
        keyAlias = "tivi"
        keyPassword = properties["TIVI_RELEASE_KEY_PWD"]?.toString().orEmpty()
      }
    }
  }

  buildFeatures {
    buildConfig = true
  }

  buildTypes {
    debug {
      signingConfig = signingConfigs["debug"]
      versionNameSuffix = "-dev"
    }

    release {
      signingConfig = signingConfigs.findByName("release") ?: signingConfigs["debug"]
      isShrinkResources = true
      isMinifyEnabled = true
      proguardFiles("proguard-rules.pro")
    }
  }

  flavorDimensions += "mode"
  productFlavors {
    create("qa") {
      dimension = "mode"
      // This is a build with Chucker enabled
      proguardFiles("proguard-rules-chucker.pro")
      versionNameSuffix = "-qa"
    }

    create("standard") {
      dimension = "mode"
      // Standard build is always ahead of the QA builds as it goes straight to
      // the alpha channel. This is the 'release' flavour
      versionCode = (android.defaultConfig.versionCode ?: 0) + 1
    }
  }

  @Suppress("UnstableApiUsage")
  testOptions {
    managedDevices {
      devices {
        create<ManagedVirtualDevice>("api34") {
          device = "Pixel 6"
          apiLevel = 34
          systemImageSource = "aosp"
        }
      }
    }
  }
}

androidComponents {
  // Ignore the standardDebug variant
  beforeVariants(
    selector()
      .withBuildType("debug")
      .withFlavor("mode" to "standard"),
  ) { variant ->
    variant.enable = false
  }

  onVariants(selector().withBuildType("release")) { variant ->
    variant.packaging.resources.run {
      // Exclude AndroidX version files. We only do this in the release build so that
      // Layout Inspector continues to work for debug
      excludes.add("META-INF/*.version")
      // Exclude the Firebase/Fabric/other random properties files
      excludes.addAll("/*.properties", "META-INF/*.properties")
    }
  }
}

dependencies {
  qaImplementation(projects.shared.qa)
  standardImplementation(projects.shared.prod)

  implementation(libs.androidx.activity.activity)
  implementation(libs.androidx.activity.compose)
  implementation(libs.androidx.browser)
  implementation(libs.androidx.profileinstaller)
  implementation(libs.androidx.splashscreen)

  qaImplementation(libs.leakCanary)

  implementation(libs.kotlin.coroutines.android)

  implementation(libs.google.firebase.crashlytics)

  "baselineProfile"(projects.androidApp.benchmark)

  androidTestImplementation(projects.androidApp.commonTest)
  androidTestImplementation(libs.androidx.uiautomator)
  androidTestImplementation(libs.screengrab)
  androidTestImplementation(libs.junit)
  androidTestImplementation(libs.androidx.test.core)
  androidTestImplementation(libs.androidx.test.rules)
}

baselineProfile {
  mergeIntoMain = true
  saveInSrc = true
}

if (file("google-services.json").exists()) {
  apply(plugin = libs.plugins.gms.googleServices.get().pluginId)
  apply(plugin = libs.plugins.firebase.crashlytics.get().pluginId)
}

fun DependencyHandler.qaImplementation(dependencyNotation: Any) =
  add("qaImplementation", dependencyNotation)

fun DependencyHandler.standardImplementation(dependencyNotation: Any) =
  add("standardImplementation", dependencyNotation)


================================================
FILE: android-app/app/proguard-rules-chucker.pro
================================================
# Chucker uses GSON and TypeToken:
# https://r8.googlesource.com/r8/+/refs/heads/main/compatibility-faq.md#gson-with-full-mode
-keepattributes Signature
-keep class com.google.gson.reflect.TypeToken { *; }
-keep class * extends com.google.gson.reflect.TypeToken

================================================
FILE: android-app/app/proguard-rules.pro
================================================
# This is a configuration file for R8

-verbose
-allowaccessmodification
-repackageclasses

# Note that you cannot just include these flags in your own
# configuration file; if you are including this file, optimization
# will be turned off. You'll need to either edit this file, or
# duplicate the contents of this file and remove the include of this
# file from your project's proguard.config path property.

# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native
-keepclasseswithmembernames class * {
    native <methods>;
}

# For enumeration classes
-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

-keep class * implements android.os.Parcelable {
  public static final android.os.Parcelable$Creator *;
}

# AndroidX + support library contains references to newer platform versions.
# Don't warn about those in case this app is linking against an older
# platform version.  We know about them, and they are safe.
-dontwarn android.support.**
-dontwarn androidx.**

-keepattributes SourceFile,
                LineNumberTable,
                RuntimeVisibleAnnotations,
                RuntimeVisibleParameterAnnotations,
                RuntimeVisibleTypeAnnotations,
                AnnotationDefault

-renamesourcefileattribute SourceFile

# Using ktor client in Android has missing proguard rule
# See https://youtrack.jetbrains.com/issue/KTOR-5528
-dontwarn org.slf4j.**

# Remove Amazon call from Purchases
-assumenosideeffects class com.revenuecat.purchases.kmp.Purchases {
  syncAmazonPurchase(...);
}


================================================
FILE: android-app/app/src/androidTest/kotlin/app/tivi/screenshots/Screenshots.kt
================================================
// Copyright 2024, Christopher Banes and the Tivi project contributors
// SPDX-License-Identifier: Apache-2.0

package app.tivi.screenshots

import android.os.SystemClock
import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.uiautomator.UiDevice
import app.tivi.app.test.navigateFromDiscoverToShowDetails
import app.tivi.app.test.navigateToLibrary
import app.tivi.app.test.navigateToSearch
import app.tivi.app.test.navigateToUpNext
import app.tivi.test.smoke.startAppAndWait
import org.junit.Rule
import org.junit.Test
import tools.fastlane.screengrab.Screengrab
import tools.fastlane.screengrab.locale.LocaleTestRule

class Screenshots {
  @Rule
  @JvmField
  val localeTestRule = LocaleTestRule()

  @Test
  fun screenshots() {
    val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
    startAppAndWait(device)

    SystemClock.sleep(3_000)
    Screengrab.screenshot("0_home")

    device.navigateFromDiscoverToShowDetails()
    SystemClock.sleep(1_000)
    Screengrab.screenshot("1_show_details")

    device.navigateToUpNext()
    SystemClock.sleep(1_000)
    Screengrab.screenshot("2_upnext")

    device.navigateToLibrary()
    SystemClock.sleep(1_000)
    Screengrab.screenshot("3_library")

    device.navigateToSearch()
    SystemClock.sleep(1_000)
    Screengrab.screenshot("4_search")
  }
}


================================================
FILE: android-app/app/src/androidTest/kotlin/app/tivi/test/smoke/SmokeTest.kt
================================================
// Copyright 2023, Google LLC, Christopher Banes and the Tivi project contributors
// SPDX-License-Identifier: Apache-2.0

package app.tivi.test.smoke

import android.content.Intent
import androidx.test.core.app.ApplicationProvider
import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.uiautomator.By
import androidx.test.uiautomator.UiDevice
import androidx.test.uiautomator.Until
import app.tivi.TiviApplication
import app.tivi.app.test.AppScenarios
import org.junit.Assert.assertNotNull
import org.junit.Test

class SmokeTest {

  @Test
  fun openApp() {
    val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())

    startAppAndWait(device)

    // Run through the main navigation items
    AppScenarios.mainNavigationItems(device)
  }
}

internal fun startAppAndWait(device: UiDevice) {
  device.pressHome()

  // Wait for launcher
  val launcherPackage = device.launcherPackageName
  assertNotNull(launcherPackage)
  device.wait(Until.hasObject(By.pkg(launcherPackage).depth(0)), 5_000)

  // Launch the app
  val context = ApplicationProvider.getApplicationContext<TiviApplication>()
  val packageName = context.packageName
  val intent = context.packageManager.getLaunchIntentForPackage(packageName)!!.apply {
    // Clear out any previous instances
    addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
  }
  context.startActivity(intent)

  // Wait for the app to appear
  device.wait(Until.hasObject(By.pkg(packageName).depth(0)), 5_000)
}


================================================
FILE: android-app/app/src/debug/AndroidManifest.xml
================================================
<!-- Copyright 2024, Christopher Banes and the Tivi project contributors -->
<!-- SPDX-License-Identifier: Apache-2.0 -->

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools">

  <!-- Allows storing screenshots on external storage, where it can be accessed by ADB -->
  <uses-permission
    android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

  <!-- Allows changing locales -->
  <uses-permission
    android:name="android.permission.CHANGE_CONFIGURATION"
    tools:ignore="ProtectedPermissions" />

  <!-- Allows changing SystemUI demo mode -->
  <uses-permission
    android:name="android.permission.DUMP"
    tools:ignore="ProtectedPermissions" />

</manifest>


================================================
FILE: android-app/app/src/debug/res/values/colors.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<!--
  ~ Copyright 2019 Google LLC
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
  ~ You may obtain a copy of the License at
  ~
  ~     http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->

<resources>
    <color name="launcher_icon_background">#00695C</color>
</resources>


================================================
FILE: android-app/app/src/debug/res/values/strings.xml
================================================
<!--
  ~ Copyright 2018 Google, Inc.
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
  ~ You may obtain a copy of the License at
  ~
  ~     http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  ~
  -->

<resources>
    <string name="app_name">Tivi debug</string>
</resources>


================================================
FILE: android-app/app/src/main/AndroidManifest.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<!--
  ~ Copyright 2017 Google LLC.
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
  ~ You may obtain a copy of the License at
  ~
  ~     http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  ~
  -->

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools">

  <uses-permission android:name="android.permission.INTERNET" />

  <application
    android:name=".TiviApplication"
    android:allowBackup="true"
    android:dataExtractionRules="@xml/data_extraction_rules"
    android:enableOnBackInvokedCallback="true"
    android:fullBackupContent="@xml/backup_rules"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/Theme.Tivi">

    <profileable
      android:shell="true"
      tools:targetApi="29" />

    <activity
      android:name=".home.MainActivity"
      android:configChanges="colorMode|density|fontScale|keyboard|keyboardHidden|layoutDirection|locale|mcc|mnc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|touchscreen|uiMode"
      android:exported="true"
      android:launchMode="singleTask"
      android:resizeableActivity="true"
      android:theme="@style/Theme.Tivi.Starting"
      tools:targetApi="n">

      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>

      <intent-filter>
        <action android:name="android.intent.action.VIEW" />

        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />

        <data
          android:host="tivi"
          android:scheme="${applicationId}" />

      </intent-filter>
    </activity>

    <activity
      android:name="net.openid.appauth.RedirectUriReceiverActivity"
      android:exported="true"
      tools:node="replace">
      <intent-filter>
        <action android:name="android.intent.action.VIEW" />

        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />

        <data
          android:host="auth"
          android:path="/oauth2callback"
          android:scheme="${applicationId}" />

      </intent-filter>
    </activity>

    <provider
      android:name="androidx.startup.InitializationProvider"
      android:authorities="${applicationId}.androidx-startup"
      android:exported="false"
      tools:node="merge">
      <!-- Disable the WorkManager default initializer since
           we are providing our own configuration. -->
      <meta-data
        android:name="androidx.work.WorkManagerInitializer"
        android:value="androidx.startup"
        tools:node="remove" />
    </provider>

    <meta-data
      android:name="google_analytics_adid_collection_enabled"
      android:value="false" />

    <meta-data
      android:name="firebase_crashlytics_collection_enabled"
      android:value="false" />

  </application>

  <queries>
    <intent>
      <action android:name="android.intent.action.VIEW" />
      <category android:name="android.intent.category.BROWSABLE" />
      <data android:scheme="https" />
    </intent>

    <intent>
      <action android:name="android.support.customtabs.action.CustomTabsService" />
    </intent>
  </queries>

</manifest>


================================================
FILE: android-app/app/src/main/generated/baselineProfiles/baseline-prof.txt
================================================
PL_COROUTINE/ArtificialStackFrames;-><init>()V
PL_COROUTINE/ArtificialStackFrames;->coroutineBoundary()Ljava/lang/StackTraceElement;
PL_COROUTINE/CoroutineDebuggingKt;-><clinit>()V
PL_COROUTINE/CoroutineDebuggingKt;->access$artificialFrame(Ljava/lang/Throwable;Ljava/lang/String;)Ljava/lang/StackTraceElement;
PL_COROUTINE/CoroutineDebuggingKt;->artificialFrame(Ljava/lang/Throwable;Ljava/lang/String;)Ljava/lang/StackTraceElement;
Landroidx/activity/Cancellable;
Landroidx/activity/ComponentActivity;
HSPLandroidx/activity/ComponentActivity;->$r8$lambda$4IRRzyoWeWaykEOcgWGjbNoGAkw(Landroidx/activity/OnBackPressedDispatcher;Landroidx/activity/ComponentActivity;Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V
HSPLandroidx/activity/ComponentActivity;->$r8$lambda$KUbBm7ckfqTc9QC-gukC86fguu4(Landroidx/activity/ComponentActivity;Landroid/content/Context;)V
HSPLandroidx/activity/ComponentActivity;->$r8$lambda$h6vvr6zUWA2U1fE-0KsKpOgpr28(Landroidx/activity/ComponentActivity;Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V
HSPLandroidx/activity/ComponentActivity;->$r8$lambda$ibk6u1HK7J3AWKL_Wn934v2UVI8(Landroidx/activity/ComponentActivity;Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V
HSPLandroidx/activity/ComponentActivity;-><clinit>()V
HSPLandroidx/activity/ComponentActivity;-><init>()V
HSPLandroidx/activity/ComponentActivity;->_init_$lambda$2(Landroidx/activity/ComponentActivity;Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V
HSPLandroidx/activity/ComponentActivity;->_init_$lambda$3(Landroidx/activity/ComponentActivity;Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V
HSPLandroidx/activity/ComponentActivity;->_init_$lambda$5(Landroidx/activity/ComponentActivity;Landroid/content/Context;)V
HSPLandroidx/activity/ComponentActivity;->access$addObserverForBackInvoker(Landroidx/activity/ComponentActivity;Landroidx/activity/OnBackPressedDispatcher;)V
HSPLandroidx/activity/ComponentActivity;->access$ensureViewModelStore(Landroidx/activity/ComponentActivity;)V
HSPLandroidx/activity/ComponentActivity;->access$getReportFullyDrawnExecutor$p(Landroidx/activity/ComponentActivity;)Landroidx/activity/ComponentActivity$ReportFullyDrawnExecutor;
HSPLandroidx/activity/ComponentActivity;->addObserverForBackInvoker$lambda$7(Landroidx/activity/OnBackPressedDispatcher;Landroidx/activity/ComponentActivity;Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V
HSPLandroidx/activity/ComponentActivity;->addObserverForBackInvoker(Landroidx/activity/OnBackPressedDispatcher;)V
HSPLandroidx/activity/ComponentActivity;->addOnContextAvailableListener(Landroidx/activity/contextaware/OnContextAvailableListener;)V
HSPLandroidx/activity/ComponentActivity;->createFullyDrawnExecutor()Landroidx/activity/ComponentActivity$ReportFullyDrawnExecutor;
HSPLandroidx/activity/ComponentActivity;->ensureViewModelStore()V
HSPLandroidx/activity/ComponentActivity;->getActivityResultRegistry()Landroidx/activity/result/ActivityResultRegistry;
HSPLandroidx/activity/ComponentActivity;->getDefaultViewModelCreationExtras()Landroidx/lifecycle/viewmodel/CreationExtras;
HSPLandroidx/activity/ComponentActivity;->getFullyDrawnReporter()Landroidx/activity/FullyDrawnReporter;
HPLandroidx/activity/ComponentActivity;->getLifecycle()Landroidx/lifecycle/Lifecycle;
HSPLandroidx/activity/ComponentActivity;->getOnBackPressedDispatcher()Landroidx/activity/OnBackPressedDispatcher;
HSPLandroidx/activity/ComponentActivity;->getSavedStateRegistry()Landroidx/savedstate/SavedStateRegistry;
HSPLandroidx/activity/ComponentActivity;->getViewModelStore()Landroidx/lifecycle/ViewModelStore;
HSPLandroidx/activity/ComponentActivity;->initializeViewTreeOwners()V
HSPLandroidx/activity/ComponentActivity;->onCreate(Landroid/os/Bundle;)V
HSPLandroidx/activity/ComponentActivity;->registerForActivityResult(Landroidx/activity/result/contract/ActivityResultContract;Landroidx/activity/result/ActivityResultCallback;)Landroidx/activity/result/ActivityResultLauncher;
HSPLandroidx/activity/ComponentActivity;->registerForActivityResult(Landroidx/activity/result/contract/ActivityResultContract;Landroidx/activity/result/ActivityResultRegistry;Landroidx/activity/result/ActivityResultCallback;)Landroidx/activity/result/ActivityResultLauncher;
HSPLandroidx/activity/ComponentActivity;->reportFullyDrawn()V
HSPLandroidx/activity/ComponentActivity;->setContentView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V
Landroidx/activity/ComponentActivity$$ExternalSyntheticLambda0;
HSPLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda0;-><init>(Landroidx/activity/ComponentActivity;)V
Landroidx/activity/ComponentActivity$$ExternalSyntheticLambda1;
HSPLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda1;-><init>(Landroidx/activity/ComponentActivity;)V
HSPLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda1;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V
Landroidx/activity/ComponentActivity$$ExternalSyntheticLambda2;
HSPLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda2;-><init>(Landroidx/activity/ComponentActivity;)V
HSPLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda2;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V
Landroidx/activity/ComponentActivity$$ExternalSyntheticLambda3;
HSPLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda3;-><init>(Landroidx/activity/ComponentActivity;)V
Landroidx/activity/ComponentActivity$$ExternalSyntheticLambda4;
HSPLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda4;-><init>(Landroidx/activity/ComponentActivity;)V
HSPLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda4;->onContextAvailable(Landroid/content/Context;)V
Landroidx/activity/ComponentActivity$$ExternalSyntheticLambda5;
HSPLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda5;-><init>(Landroidx/activity/OnBackPressedDispatcher;Landroidx/activity/ComponentActivity;)V
HSPLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda5;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V
Landroidx/activity/ComponentActivity$4;
HSPLandroidx/activity/ComponentActivity$4;-><init>(Landroidx/activity/ComponentActivity;)V
HSPLandroidx/activity/ComponentActivity$4;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V
Landroidx/activity/ComponentActivity$Api33Impl;
HSPLandroidx/activity/ComponentActivity$Api33Impl;-><clinit>()V
HSPLandroidx/activity/ComponentActivity$Api33Impl;-><init>()V
HSPLandroidx/activity/ComponentActivity$Api33Impl;->getOnBackInvokedDispatcher(Landroid/app/Activity;)Landroid/window/OnBackInvokedDispatcher;
Landroidx/activity/ComponentActivity$Companion;
HSPLandroidx/activity/ComponentActivity$Companion;-><init>()V
HSPLandroidx/activity/ComponentActivity$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
Landroidx/activity/ComponentActivity$NonConfigurationInstances;
Landroidx/activity/ComponentActivity$ReportFullyDrawnExecutor;
Landroidx/activity/ComponentActivity$ReportFullyDrawnExecutorImpl;
HSPLandroidx/activity/ComponentActivity$ReportFullyDrawnExecutorImpl;-><init>(Landroidx/activity/ComponentActivity;)V
PLandroidx/activity/ComponentActivity$ReportFullyDrawnExecutorImpl;->activityDestroyed()V
HSPLandroidx/activity/ComponentActivity$ReportFullyDrawnExecutorImpl;->execute(Ljava/lang/Runnable;)V
HSPLandroidx/activity/ComponentActivity$ReportFullyDrawnExecutorImpl;->onDraw()V
HSPLandroidx/activity/ComponentActivity$ReportFullyDrawnExecutorImpl;->run()V
HSPLandroidx/activity/ComponentActivity$ReportFullyDrawnExecutorImpl;->viewCreated(Landroid/view/View;)V
Landroidx/activity/ComponentActivity$activityResultRegistry$1;
HSPLandroidx/activity/ComponentActivity$activityResultRegistry$1;-><init>(Landroidx/activity/ComponentActivity;)V
Landroidx/activity/ComponentActivity$defaultViewModelProviderFactory$2;
HSPLandroidx/activity/ComponentActivity$defaultViewModelProviderFactory$2;-><init>(Landroidx/activity/ComponentActivity;)V
Landroidx/activity/ComponentActivity$fullyDrawnReporter$2;
HSPLandroidx/activity/ComponentActivity$fullyDrawnReporter$2;-><init>(Landroidx/activity/ComponentActivity;)V
HSPLandroidx/activity/ComponentActivity$fullyDrawnReporter$2;->invoke()Landroidx/activity/FullyDrawnReporter;
HSPLandroidx/activity/ComponentActivity$fullyDrawnReporter$2;->invoke()Ljava/lang/Object;
Landroidx/activity/ComponentActivity$fullyDrawnReporter$2$1;
HSPLandroidx/activity/ComponentActivity$fullyDrawnReporter$2$1;-><init>(Landroidx/activity/ComponentActivity;)V
HSPLandroidx/activity/ComponentActivity$fullyDrawnReporter$2$1;->invoke()Ljava/lang/Object;
HSPLandroidx/activity/ComponentActivity$fullyDrawnReporter$2$1;->invoke()V
Landroidx/activity/ComponentActivity$onBackPressedDispatcher$2;
HSPLandroidx/activity/ComponentActivity$onBackPressedDispatcher$2;-><init>(Landroidx/activity/ComponentActivity;)V
HSPLandroidx/activity/ComponentActivity$onBackPressedDispatcher$2;->invoke()Landroidx/activity/OnBackPressedDispatcher;
HSPLandroidx/activity/ComponentActivity$onBackPressedDispatcher$2;->invoke()Ljava/lang/Object;
Landroidx/activity/ComponentActivity$onBackPressedDispatcher$2$$ExternalSyntheticLambda0;
HSPLandroidx/activity/ComponentActivity$onBackPressedDispatcher$2$$ExternalSyntheticLambda0;-><init>(Landroidx/activity/ComponentActivity;)V
Landroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;
HSPLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m$1()Landroid/graphics/BlendMode;
HSPLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m$1(Landroid/graphics/Insets;)I
HSPLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m$1(Landroid/view/Window;Z)V
HSPLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m$1(Landroid/view/autofill/AutofillManager;Landroid/view/autofill/AutofillManager$AutofillCallback;)V
HSPLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m$2(Landroid/graphics/Insets;)I
HSPLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m$3(Landroid/graphics/Insets;)I
HSPLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m$4()Landroid/graphics/BlendMode;
HSPLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m$7()Landroid/graphics/BlendMode;
HSPLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m()Ljava/lang/Class;
HSPLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m(I)I
PLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m(Landroid/app/Notification$Builder;Ljava/lang/String;)Landroid/app/Notification$Builder;
PLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m(Landroid/app/NotificationManager;Landroid/app/NotificationChannel;)V
PLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m(Landroid/app/NotificationManager;Ljava/lang/String;)Landroid/app/NotificationChannel;
HSPLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m(Landroid/graphics/Insets;)I
HSPLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/View;I)V
HSPLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/Window;Z)V
HSPLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/WindowManager$LayoutParams;I)V
PLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/autofill/AutofillManager;Landroid/view/autofill/AutofillManager$AutofillCallback;)V
HSPLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m(Ljava/lang/Object;)Landroid/view/autofill/AutofillManager$AutofillCallback;
HSPLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m(Ljava/lang/Object;)Landroid/view/autofill/AutofillManager;
HSPLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m(Ljava/lang/String;Ljava/lang/CharSequence;I)Landroid/app/NotificationChannel;
Landroidx/activity/EdgeToEdge;
HSPLandroidx/activity/EdgeToEdge;-><clinit>()V
HSPLandroidx/activity/EdgeToEdge;->enable(Landroidx/activity/ComponentActivity;Landroidx/activity/SystemBarStyle;Landroidx/activity/SystemBarStyle;)V
Landroidx/activity/EdgeToEdgeApi26;
HSPLandroidx/activity/EdgeToEdgeApi26;-><init>()V
Landroidx/activity/EdgeToEdgeApi28;
HSPLandroidx/activity/EdgeToEdgeApi28;-><init>()V
Landroidx/activity/EdgeToEdgeApi29;
HSPLandroidx/activity/EdgeToEdgeApi29;-><init>()V
HSPLandroidx/activity/EdgeToEdgeApi29;->setUp(Landroidx/activity/SystemBarStyle;Landroidx/activity/SystemBarStyle;Landroid/view/Window;Landroid/view/View;ZZ)V
Landroidx/activity/EdgeToEdgeApi30;
HSPLandroidx/activity/EdgeToEdgeApi30;-><init>()V
HSPLandroidx/activity/EdgeToEdgeApi30;->adjustLayoutInDisplayCutoutMode(Landroid/view/Window;)V
Landroidx/activity/EdgeToEdgeBase;
HSPLandroidx/activity/EdgeToEdgeBase;-><init>()V
Landroidx/activity/EdgeToEdgeImpl;
Landroidx/activity/FullyDrawnReporter;
HSPLandroidx/activity/FullyDrawnReporter;->$r8$lambda$A0RwxxT-QIMFOsDA3Nv48auR1K4(Landroidx/activity/FullyDrawnReporter;)V
HSPLandroidx/activity/FullyDrawnReporter;-><init>(Ljava/util/concurrent/Executor;Lkotlin/jvm/functions/Function0;)V
HSPLandroidx/activity/FullyDrawnReporter;->addOnReportDrawnListener(Lkotlin/jvm/functions/Function0;)V
HSPLandroidx/activity/FullyDrawnReporter;->addReporter()V
HSPLandroidx/activity/FullyDrawnReporter;->fullyDrawnReported()V
HSPLandroidx/activity/FullyDrawnReporter;->isFullyDrawnReported()Z
HSPLandroidx/activity/FullyDrawnReporter;->postWhenReportersAreDone()V
HSPLandroidx/activity/FullyDrawnReporter;->removeReporter()V
HSPLandroidx/activity/FullyDrawnReporter;->reportRunnable$lambda$2(Landroidx/activity/FullyDrawnReporter;)V
Landroidx/activity/FullyDrawnReporter$$ExternalSyntheticLambda0;
HSPLandroidx/activity/FullyDrawnReporter$$ExternalSyntheticLambda0;-><init>(Landroidx/activity/FullyDrawnReporter;)V
HSPLandroidx/activity/FullyDrawnReporter$$ExternalSyntheticLambda0;->run()V
Landroidx/activity/FullyDrawnReporterOwner;
Landroidx/activity/OnBackPressedCallback;
HSPLandroidx/activity/OnBackPressedCallback;-><init>(Z)V
HSPLandroidx/activity/OnBackPressedCallback;->addCancellable(Landroidx/activity/Cancellable;)V
PLandroidx/activity/OnBackPressedCallback;->getEnabledChangedCallback$activity_release()Lkotlin/jvm/functions/Function0;
HSPLandroidx/activity/OnBackPressedCallback;->isEnabled()Z
PLandroidx/activity/OnBackPressedCallback;->remove()V
PLandroidx/activity/OnBackPressedCallback;->removeCancellable(Landroidx/activity/Cancellable;)V
HSPLandroidx/activity/OnBackPressedCallback;->setEnabled(Z)V
HSPLandroidx/activity/OnBackPressedCallback;->setEnabledChangedCallback$activity_release(Lkotlin/jvm/functions/Function0;)V
Landroidx/activity/OnBackPressedDispatcher;
HSPLandroidx/activity/OnBackPressedDispatcher;-><init>(Ljava/lang/Runnable;)V
HSPLandroidx/activity/OnBackPressedDispatcher;-><init>(Ljava/lang/Runnable;Landroidx/core/util/Consumer;)V
PLandroidx/activity/OnBackPressedDispatcher;->access$getInProgressCallback$p(Landroidx/activity/OnBackPressedDispatcher;)Landroidx/activity/OnBackPressedCallback;
PLandroidx/activity/OnBackPressedDispatcher;->access$getOnBackPressedCallbacks$p(Landroidx/activity/OnBackPressedDispatcher;)Lkotlin/collections/ArrayDeque;
HSPLandroidx/activity/OnBackPressedDispatcher;->access$updateEnabledCallbacks(Landroidx/activity/OnBackPressedDispatcher;)V
PLandroidx/activity/OnBackPressedDispatcher;->addCallback(Landroidx/activity/OnBackPressedCallback;)V
HSPLandroidx/activity/OnBackPressedDispatcher;->addCallback(Landroidx/lifecycle/LifecycleOwner;Landroidx/activity/OnBackPressedCallback;)V
HSPLandroidx/activity/OnBackPressedDispatcher;->addCancellableCallback$activity_release(Landroidx/activity/OnBackPressedCallback;)Landroidx/activity/Cancellable;
HSPLandroidx/activity/OnBackPressedDispatcher;->setOnBackInvokedDispatcher(Landroid/window/OnBackInvokedDispatcher;)V
HSPLandroidx/activity/OnBackPressedDispatcher;->updateBackInvokedCallbackState(Z)V
HSPLandroidx/activity/OnBackPressedDispatcher;->updateEnabledCallbacks()V
Landroidx/activity/OnBackPressedDispatcher$1;
HSPLandroidx/activity/OnBackPressedDispatcher$1;-><init>(Landroidx/activity/OnBackPressedDispatcher;)V
Landroidx/activity/OnBackPressedDispatcher$2;
HSPLandroidx/activity/OnBackPressedDispatcher$2;-><init>(Landroidx/activity/OnBackPressedDispatcher;)V
Landroidx/activity/OnBackPressedDispatcher$3;
HSPLandroidx/activity/OnBackPressedDispatcher$3;-><init>(Landroidx/activity/OnBackPressedDispatcher;)V
Landroidx/activity/OnBackPressedDispatcher$4;
HSPLandroidx/activity/OnBackPressedDispatcher$4;-><init>(Landroidx/activity/OnBackPressedDispatcher;)V
PLandroidx/activity/OnBackPressedDispatcher$Api33Impl;-><clinit>()V
PLandroidx/activity/OnBackPressedDispatcher$Api33Impl;-><init>()V
PLandroidx/activity/OnBackPressedDispatcher$Api33Impl;->registerOnBackInvokedCallback(Ljava/lang/Object;ILjava/lang/Object;)V
PLandroidx/activity/OnBackPressedDispatcher$Api33Impl;->unregisterOnBackInvokedCallback(Ljava/lang/Object;Ljava/lang/Object;)V
Landroidx/activity/OnBackPressedDispatcher$Api34Impl;
HSPLandroidx/activity/OnBackPressedDispatcher$Api34Impl;-><clinit>()V
HSPLandroidx/activity/OnBackPressedDispatcher$Api34Impl;-><init>()V
HSPLandroidx/activity/OnBackPressedDispatcher$Api34Impl;->createOnBackAnimationCallback(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;)Landroid/window/OnBackInvokedCallback;
Landroidx/activity/OnBackPressedDispatcher$Api34Impl$createOnBackAnimationCallback$1;
HSPLandroidx/activity/OnBackPressedDispatcher$Api34Impl$createOnBackAnimationCallback$1;-><init>(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;)V
Landroidx/activity/OnBackPressedDispatcher$LifecycleOnBackPressedCancellable;
HSPLandroidx/activity/OnBackPressedDispatcher$LifecycleOnBackPressedCancellable;-><init>(Landroidx/activity/OnBackPressedDispatcher;Landroidx/lifecycle/Lifecycle;Landroidx/activity/OnBackPressedCallback;)V
PLandroidx/activity/OnBackPressedDispatcher$LifecycleOnBackPressedCancellable;->cancel()V
HSPLandroidx/activity/OnBackPressedDispatcher$LifecycleOnBackPressedCancellable;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V
Landroidx/activity/OnBackPressedDispatcher$OnBackPressedCancellable;
HSPLandroidx/activity/OnBackPressedDispatcher$OnBackPressedCancellable;-><init>(Landroidx/activity/OnBackPressedDispatcher;Landroidx/activity/OnBackPressedCallback;)V
PLandroidx/activity/OnBackPressedDispatcher$OnBackPressedCancellable;->cancel()V
Landroidx/activity/OnBackPressedDispatcher$addCallback$1;
HSPLandroidx/activity/OnBackPressedDispatcher$addCallback$1;-><init>(Ljava/lang/Object;)V
HSPLandroidx/activity/OnBackPressedDispatcher$addCallback$1;->invoke()Ljava/lang/Object;
HSPLandroidx/activity/OnBackPressedDispatcher$addCallback$1;->invoke()V
Landroidx/activity/OnBackPressedDispatcher$addCancellableCallback$1;
HSPLandroidx/activity/OnBackPressedDispatcher$addCancellableCallback$1;-><init>(Ljava/lang/Object;)V
PLandroidx/activity/OnBackPressedDispatcher$addCancellableCallback$1;->invoke()Ljava/lang/Object;
PLandroidx/activity/OnBackPressedDispatcher$addCancellableCallback$1;->invoke()V
Landroidx/activity/OnBackPressedDispatcherOwner;
Landroidx/activity/R$id;
Landroidx/activity/SystemBarStyle;
HSPLandroidx/activity/SystemBarStyle;-><clinit>()V
HSPLandroidx/activity/SystemBarStyle;-><init>(IIILkotlin/jvm/functions/Function1;)V
HSPLandroidx/activity/SystemBarStyle;-><init>(IIILkotlin/jvm/functions/Function1;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
HSPLandroidx/activity/SystemBarStyle;->getDetectDarkMode$activity_release()Lkotlin/jvm/functions/Function1;
HSPLandroidx/activity/SystemBarStyle;->getNightMode$activity_release()I
HSPLandroidx/activity/SystemBarStyle;->getScrimWithEnforcedContrast$activity_release(Z)I
Landroidx/activity/SystemBarStyle$Companion;
HSPLandroidx/activity/SystemBarStyle$Companion;-><init>()V
HSPLandroidx/activity/SystemBarStyle$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
HSPLandroidx/activity/SystemBarStyle$Companion;->auto$default(Landroidx/activity/SystemBarStyle$Companion;IILkotlin/jvm/functions/Function1;ILjava/lang/Object;)Landroidx/activity/SystemBarStyle;
HSPLandroidx/activity/SystemBarStyle$Companion;->auto(IILkotlin/jvm/functions/Function1;)Landroidx/activity/SystemBarStyle;
Landroidx/activity/SystemBarStyle$Companion$auto$1;
HSPLandroidx/activity/SystemBarStyle$Companion$auto$1;-><clinit>()V
HSPLandroidx/activity/SystemBarStyle$Companion$auto$1;-><init>()V
HSPLandroidx/activity/SystemBarStyle$Companion$auto$1;->invoke(Landroid/content/res/Resources;)Ljava/lang/Boolean;
HSPLandroidx/activity/SystemBarStyle$Companion$auto$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/activity/ViewTreeFullyDrawnReporterOwner;
HSPLandroidx/activity/ViewTreeFullyDrawnReporterOwner;->get(Landroid/view/View;)Landroidx/activity/FullyDrawnReporterOwner;
HSPLandroidx/activity/ViewTreeFullyDrawnReporterOwner;->set(Landroid/view/View;Landroidx/activity/FullyDrawnReporterOwner;)V
Landroidx/activity/ViewTreeFullyDrawnReporterOwner$findViewTreeFullyDrawnReporterOwner$1;
HSPLandroidx/activity/ViewTreeFullyDrawnReporterOwner$findViewTreeFullyDrawnReporterOwner$1;-><clinit>()V
HSPLandroidx/activity/ViewTreeFullyDrawnReporterOwner$findViewTreeFullyDrawnReporterOwner$1;-><init>()V
HSPLandroidx/activity/ViewTreeFullyDrawnReporterOwner$findViewTreeFullyDrawnReporterOwner$1;->invoke(Landroid/view/View;)Landroid/view/View;
HSPLandroidx/activity/ViewTreeFullyDrawnReporterOwner$findViewTreeFullyDrawnReporterOwner$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/activity/ViewTreeFullyDrawnReporterOwner$findViewTreeFullyDrawnReporterOwner$2;
HSPLandroidx/activity/ViewTreeFullyDrawnReporterOwner$findViewTreeFullyDrawnReporterOwner$2;-><clinit>()V
HSPLandroidx/activity/ViewTreeFullyDrawnReporterOwner$findViewTreeFullyDrawnReporterOwner$2;-><init>()V
HSPLandroidx/activity/ViewTreeFullyDrawnReporterOwner$findViewTreeFullyDrawnReporterOwner$2;->invoke(Landroid/view/View;)Landroidx/activity/FullyDrawnReporterOwner;
HSPLandroidx/activity/ViewTreeFullyDrawnReporterOwner$findViewTreeFullyDrawnReporterOwner$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/activity/ViewTreeOnBackPressedDispatcherOwner;
HSPLandroidx/activity/ViewTreeOnBackPressedDispatcherOwner;->get(Landroid/view/View;)Landroidx/activity/OnBackPressedDispatcherOwner;
HSPLandroidx/activity/ViewTreeOnBackPressedDispatcherOwner;->set(Landroid/view/View;Landroidx/activity/OnBackPressedDispatcherOwner;)V
Landroidx/activity/ViewTreeOnBackPressedDispatcherOwner$findViewTreeOnBackPressedDispatcherOwner$1;
HSPLandroidx/activity/ViewTreeOnBackPressedDispatcherOwner$findViewTreeOnBackPressedDispatcherOwner$1;-><clinit>()V
HSPLandroidx/activity/ViewTreeOnBackPressedDispatcherOwner$findViewTreeOnBackPressedDispatcherOwner$1;-><init>()V
HSPLandroidx/activity/ViewTreeOnBackPressedDispatcherOwner$findViewTreeOnBackPressedDispatcherOwner$1;->invoke(Landroid/view/View;)Landroid/view/View;
HSPLandroidx/activity/ViewTreeOnBackPressedDispatcherOwner$findViewTreeOnBackPressedDispatcherOwner$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/activity/ViewTreeOnBackPressedDispatcherOwner$findViewTreeOnBackPressedDispatcherOwner$2;
HSPLandroidx/activity/ViewTreeOnBackPressedDispatcherOwner$findViewTreeOnBackPressedDispatcherOwner$2;-><clinit>()V
HSPLandroidx/activity/ViewTreeOnBackPressedDispatcherOwner$findViewTreeOnBackPressedDispatcherOwner$2;-><init>()V
HSPLandroidx/activity/ViewTreeOnBackPressedDispatcherOwner$findViewTreeOnBackPressedDispatcherOwner$2;->invoke(Landroid/view/View;)Landroidx/activity/OnBackPressedDispatcherOwner;
HSPLandroidx/activity/ViewTreeOnBackPressedDispatcherOwner$findViewTreeOnBackPressedDispatcherOwner$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/activity/compose/BackHandlerKt;
HSPLandroidx/activity/compose/BackHandlerKt;->BackHandler(ZLkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;II)V
Landroidx/activity/compose/BackHandlerKt$BackHandler$1$1;
HSPLandroidx/activity/compose/BackHandlerKt$BackHandler$1$1;-><init>(Landroidx/activity/compose/BackHandlerKt$BackHandler$backCallback$1$1;Z)V
HSPLandroidx/activity/compose/BackHandlerKt$BackHandler$1$1;->invoke()Ljava/lang/Object;
HSPLandroidx/activity/compose/BackHandlerKt$BackHandler$1$1;->invoke()V
Landroidx/activity/compose/BackHandlerKt$BackHandler$2$1;
HSPLandroidx/activity/compose/BackHandlerKt$BackHandler$2$1;-><init>(Landroidx/activity/OnBackPressedDispatcher;Landroidx/lifecycle/LifecycleOwner;Landroidx/activity/compose/BackHandlerKt$BackHandler$backCallback$1$1;)V
HSPLandroidx/activity/compose/BackHandlerKt$BackHandler$2$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult;
HSPLandroidx/activity/compose/BackHandlerKt$BackHandler$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/activity/compose/BackHandlerKt$BackHandler$2$1$invoke$$inlined$onDispose$1;
HSPLandroidx/activity/compose/BackHandlerKt$BackHandler$2$1$invoke$$inlined$onDispose$1;-><init>(Landroidx/activity/compose/BackHandlerKt$BackHandler$backCallback$1$1;)V
PLandroidx/activity/compose/BackHandlerKt$BackHandler$2$1$invoke$$inlined$onDispose$1;->dispose()V
Landroidx/activity/compose/BackHandlerKt$BackHandler$backCallback$1$1;
HSPLandroidx/activity/compose/BackHandlerKt$BackHandler$backCallback$1$1;-><init>(ZLandroidx/compose/runtime/State;)V
Landroidx/activity/compose/ComponentActivityKt;
HSPLandroidx/activity/compose/ComponentActivityKt;-><clinit>()V
HSPLandroidx/activity/compose/ComponentActivityKt;->setContent$default(Landroidx/activity/ComponentActivity;Landroidx/compose/runtime/CompositionContext;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)V
HSPLandroidx/activity/compose/ComponentActivityKt;->setContent(Landroidx/activity/ComponentActivity;Landroidx/compose/runtime/CompositionContext;Lkotlin/jvm/functions/Function2;)V
HSPLandroidx/activity/compose/ComponentActivityKt;->setOwners(Landroidx/activity/ComponentActivity;)V
Landroidx/activity/compose/LocalFullyDrawnReporterOwner;
HSPLandroidx/activity/compose/LocalFullyDrawnReporterOwner;-><clinit>()V
HSPLandroidx/activity/compose/LocalFullyDrawnReporterOwner;-><init>()V
HSPLandroidx/activity/compose/LocalFullyDrawnReporterOwner;->getCurrent(Landroidx/compose/runtime/Composer;I)Landroidx/activity/FullyDrawnReporterOwner;
Landroidx/activity/compose/LocalFullyDrawnReporterOwner$LocalFullyDrawnReporterOwner$1;
HSPLandroidx/activity/compose/LocalFullyDrawnReporterOwner$LocalFullyDrawnReporterOwner$1;-><clinit>()V
HSPLandroidx/activity/compose/LocalFullyDrawnReporterOwner$LocalFullyDrawnReporterOwner$1;-><init>()V
HSPLandroidx/activity/compose/LocalFullyDrawnReporterOwner$LocalFullyDrawnReporterOwner$1;->invoke()Landroidx/activity/FullyDrawnReporterOwner;
HSPLandroidx/activity/compose/LocalFullyDrawnReporterOwner$LocalFullyDrawnReporterOwner$1;->invoke()Ljava/lang/Object;
Landroidx/activity/compose/LocalOnBackPressedDispatcherOwner;
HSPLandroidx/activity/compose/LocalOnBackPressedDispatcherOwner;-><clinit>()V
HSPLandroidx/activity/compose/LocalOnBackPressedDispatcherOwner;-><init>()V
HSPLandroidx/activity/compose/LocalOnBackPressedDispatcherOwner;->getCurrent(Landroidx/compose/runtime/Composer;I)Landroidx/activity/OnBackPressedDispatcherOwner;
Landroidx/activity/compose/LocalOnBackPressedDispatcherOwner$LocalOnBackPressedDispatcherOwner$1;
HSPLandroidx/activity/compose/LocalOnBackPressedDispatcherOwner$LocalOnBackPressedDispatcherOwner$1;-><clinit>()V
HSPLandroidx/activity/compose/LocalOnBackPressedDispatcherOwner$LocalOnBackPressedDispatcherOwner$1;-><init>()V
HSPLandroidx/activity/compose/LocalOnBackPressedDispatcherOwner$LocalOnBackPressedDispatcherOwner$1;->invoke()Landroidx/activity/OnBackPressedDispatcherOwner;
HSPLandroidx/activity/compose/LocalOnBackPressedDispatcherOwner$LocalOnBackPressedDispatcherOwner$1;->invoke()Ljava/lang/Object;
Landroidx/activity/compose/ReportDrawnComposition;
HSPLandroidx/activity/compose/ReportDrawnComposition;-><init>(Landroidx/activity/FullyDrawnReporter;Lkotlin/jvm/functions/Function0;)V
HSPLandroidx/activity/compose/ReportDrawnComposition;->invoke()Ljava/lang/Object;
HSPLandroidx/activity/compose/ReportDrawnComposition;->invoke()V
HSPLandroidx/activity/compose/ReportDrawnComposition;->observeReporter(Lkotlin/jvm/functions/Function0;)V
HSPLandroidx/activity/compose/ReportDrawnComposition;->removeReporter()V
Landroidx/activity/compose/ReportDrawnComposition$checkReporter$1;
HSPLandroidx/activity/compose/ReportDrawnComposition$checkReporter$1;-><init>(Ljava/lang/Object;)V
Landroidx/activity/compose/ReportDrawnComposition$observeReporter$1;
HSPLandroidx/activity/compose/ReportDrawnComposition$observeReporter$1;-><init>(Lkotlin/jvm/internal/Ref$BooleanRef;Lkotlin/jvm/functions/Function0;)V
HSPLandroidx/activity/compose/ReportDrawnComposition$observeReporter$1;->invoke()Ljava/lang/Object;
HSPLandroidx/activity/compose/ReportDrawnComposition$observeReporter$1;->invoke()V
Landroidx/activity/compose/ReportDrawnComposition$snapshotStateObserver$1;
HSPLandroidx/activity/compose/ReportDrawnComposition$snapshotStateObserver$1;-><clinit>()V
HSPLandroidx/activity/compose/ReportDrawnComposition$snapshotStateObserver$1;-><init>()V
Landroidx/activity/compose/ReportDrawnKt;
HSPLandroidx/activity/compose/ReportDrawnKt;->ReportDrawnWhen(Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V
Landroidx/activity/compose/ReportDrawnKt$ReportDrawnWhen$1$1;
HSPLandroidx/activity/compose/ReportDrawnKt$ReportDrawnWhen$1$1;-><init>(Landroidx/activity/FullyDrawnReporter;Lkotlin/jvm/functions/Function0;)V
HSPLandroidx/activity/compose/ReportDrawnKt$ReportDrawnWhen$1$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult;
HSPLandroidx/activity/compose/ReportDrawnKt$ReportDrawnWhen$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
PLandroidx/activity/compose/ReportDrawnKt$ReportDrawnWhen$1$1$invoke$$inlined$onDispose$1;-><init>()V
PLandroidx/activity/compose/ReportDrawnKt$ReportDrawnWhen$1$1$invoke$$inlined$onDispose$1;->dispose()V
Landroidx/activity/compose/ReportDrawnKt$ReportDrawnWhen$1$1$invoke$$inlined$onDispose$2;
HSPLandroidx/activity/compose/ReportDrawnKt$ReportDrawnWhen$1$1$invoke$$inlined$onDispose$2;-><init>(Landroidx/activity/compose/ReportDrawnComposition;)V
HSPLandroidx/activity/compose/ReportDrawnKt$ReportDrawnWhen$1$1$invoke$$inlined$onDispose$2;->dispose()V
Landroidx/activity/contextaware/ContextAware;
Landroidx/activity/contextaware/ContextAwareHelper;
HSPLandroidx/activity/contextaware/ContextAwareHelper;-><init>()V
HSPLandroidx/activity/contextaware/ContextAwareHelper;->addOnContextAvailableListener(Landroidx/activity/contextaware/OnContextAvailableListener;)V
PLandroidx/activity/contextaware/ContextAwareHelper;->clearAvailableContext()V
HSPLandroidx/activity/contextaware/ContextAwareHelper;->dispatchOnContextAvailable(Landroid/content/Context;)V
Landroidx/activity/contextaware/OnContextAvailableListener;
Landroidx/activity/result/ActivityResult;
Landroidx/activity/result/ActivityResultCallback;
Landroidx/activity/result/ActivityResultCaller;
Landroidx/activity/result/ActivityResultLauncher;
HSPLandroidx/activity/result/ActivityResultLauncher;-><init>()V
Landroidx/activity/result/ActivityResultRegistry;
HSPLandroidx/activity/result/ActivityResultRegistry;->$r8$lambda$TWvtyPFk-iHdx0R-btWVLevVLT0(Landroidx/activity/result/ActivityResultRegistry;Ljava/lang/String;Landroidx/activity/result/ActivityResultCallback;Landroidx/activity/result/contract/ActivityResultContract;Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V
HSPLandroidx/activity/result/ActivityResultRegistry;-><clinit>()V
HSPLandroidx/activity/result/ActivityResultRegistry;-><init>()V
HSPLandroidx/activity/result/ActivityResultRegistry;->bindRcKey(ILjava/lang/String;)V
HSPLandroidx/activity/result/ActivityResultRegistry;->generateRandomNumber()I
HSPLandroidx/activity/result/ActivityResultRegistry;->register$lambda$1(Landroidx/activity/result/ActivityResultRegistry;Ljava/lang/String;Landroidx/activity/result/ActivityResultCallback;Landroidx/activity/result/contract/ActivityResultContract;Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V
HSPLandroidx/activity/result/ActivityResultRegistry;->register(Ljava/lang/String;Landroidx/activity/result/contract/ActivityResultContract;Landroidx/activity/result/ActivityResultCallback;)Landroidx/activity/result/ActivityResultLauncher;
HSPLandroidx/activity/result/ActivityResultRegistry;->register(Ljava/lang/String;Landroidx/lifecycle/LifecycleOwner;Landroidx/activity/result/contract/ActivityResultContract;Landroidx/activity/result/ActivityResultCallback;)Landroidx/activity/result/ActivityResultLauncher;
HSPLandroidx/activity/result/ActivityResultRegistry;->registerKey(Ljava/lang/String;)V
PLandroidx/activity/result/ActivityResultRegistry;->unregister$activity_release(Ljava/lang/String;)V
Landroidx/activity/result/ActivityResultRegistry$$ExternalSyntheticLambda0;
HSPLandroidx/activity/result/ActivityResultRegistry$$ExternalSyntheticLambda0;-><init>(Landroidx/activity/result/ActivityResultRegistry;Ljava/lang/String;Landroidx/activity/result/ActivityResultCallback;Landroidx/activity/result/contract/ActivityResultContract;)V
HSPLandroidx/activity/result/ActivityResultRegistry$$ExternalSyntheticLambda0;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V
Landroidx/activity/result/ActivityResultRegistry$CallbackAndContract;
HSPLandroidx/activity/result/ActivityResultRegistry$CallbackAndContract;-><init>(Landroidx/activity/result/ActivityResultCallback;Landroidx/activity/result/contract/ActivityResultContract;)V
Landroidx/activity/result/ActivityResultRegistry$Companion;
HSPLandroidx/activity/result/ActivityResultRegistry$Companion;-><init>()V
HSPLandroidx/activity/result/ActivityResultRegistry$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
Landroidx/activity/result/ActivityResultRegistry$LifecycleContainer;
HSPLandroidx/activity/result/ActivityResultRegistry$LifecycleContainer;-><init>(Landroidx/lifecycle/Lifecycle;)V
HSPLandroidx/activity/result/ActivityResultRegistry$LifecycleContainer;->addObserver(Landroidx/lifecycle/LifecycleEventObserver;)V
PLandroidx/activity/result/ActivityResultRegistry$LifecycleContainer;->clearObservers()V
Landroidx/activity/result/ActivityResultRegistry$generateRandomNumber$1;
HSPLandroidx/activity/result/ActivityResultRegistry$generateRandomNumber$1;-><clinit>()V
HSPLandroidx/activity/result/ActivityResultRegistry$generateRandomNumber$1;-><init>()V
HSPLandroidx/activity/result/ActivityResultRegistry$generateRandomNumber$1;->invoke()Ljava/lang/Integer;
HSPLandroidx/activity/result/ActivityResultRegistry$generateRandomNumber$1;->invoke()Ljava/lang/Object;
Landroidx/activity/result/ActivityResultRegistry$register$2;
HSPLandroidx/activity/result/ActivityResultRegistry$register$2;-><init>(Landroidx/activity/result/ActivityResultRegistry;Ljava/lang/String;Landroidx/activity/result/contract/ActivityResultContract;)V
Landroidx/activity/result/ActivityResultRegistry$register$3;
HSPLandroidx/activity/result/ActivityResultRegistry$register$3;-><init>(Landroidx/activity/result/ActivityResultRegistry;Ljava/lang/String;Landroidx/activity/result/contract/ActivityResultContract;)V
Landroidx/activity/result/ActivityResultRegistryOwner;
Landroidx/activity/result/contract/ActivityResultContract;
HSPLandroidx/activity/result/contract/ActivityResultContract;-><init>()V
Landroidx/activity/result/contract/ActivityResultContracts$RequestMultiplePermissions;
HSPLandroidx/activity/result/contract/ActivityResultContracts$RequestMultiplePermissions;-><clinit>()V
HSPLandroidx/activity/result/contract/ActivityResultContracts$RequestMultiplePermissions;-><init>()V
Landroidx/activity/result/contract/ActivityResultContracts$RequestMultiplePermissions$Companion;
HSPLandroidx/activity/result/contract/ActivityResultContracts$RequestMultiplePermissions$Companion;-><init>()V
HSPLandroidx/activity/result/contract/ActivityResultContracts$RequestMultiplePermissions$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
Landroidx/appcompat/app/ActionBarDrawerToggle$DelegateProvider;
Landroidx/appcompat/app/AppCompatActivity;
Landroidx/appcompat/app/AppCompatCallback;
Landroidx/appcompat/view/WindowCallbackWrapper;
Landroidx/appcompat/widget/SearchView$OnQueryTextListener;
Landroidx/arch/core/executor/ArchTaskExecutor;
HSPLandroidx/arch/core/executor/ArchTaskExecutor;-><clinit>()V
HSPLandroidx/arch/core/executor/ArchTaskExecutor;-><init>()V
HSPLandroidx/arch/core/executor/ArchTaskExecutor;->executeOnDiskIO(Ljava/lang/Runnable;)V
HSPLandroidx/arch/core/executor/ArchTaskExecutor;->getIOThreadExecutor()Ljava/util/concurrent/Executor;
HSPLandroidx/arch/core/executor/ArchTaskExecutor;->getInstance()Landroidx/arch/core/executor/ArchTaskExecutor;
HSPLandroidx/arch/core/executor/ArchTaskExecutor;->isMainThread()Z
HSPLandroidx/arch/core/executor/ArchTaskExecutor;->lambda$static$1(Ljava/lang/Runnable;)V
HSPLandroidx/arch/core/executor/ArchTaskExecutor;->postToMainThread(Ljava/lang/Runnable;)V
Landroidx/arch/core/executor/ArchTaskExecutor$$ExternalSyntheticLambda0;
HSPLandroidx/arch/core/executor/ArchTaskExecutor$$ExternalSyntheticLambda0;-><init>()V
Landroidx/arch/core/executor/ArchTaskExecutor$$ExternalSyntheticLambda1;
HSPLandroidx/arch/core/executor/ArchTaskExecutor$$ExternalSyntheticLambda1;-><init>()V
HSPLandroidx/arch/core/executor/ArchTaskExecutor$$ExternalSyntheticLambda1;->execute(Ljava/lang/Runnable;)V
Landroidx/arch/core/executor/DefaultTaskExecutor;
HSPLandroidx/arch/core/executor/DefaultTaskExecutor;-><init>()V
HSPLandroidx/arch/core/executor/DefaultTaskExecutor;->createAsync(Landroid/os/Looper;)Landroid/os/Handler;
HSPLandroidx/arch/core/executor/DefaultTaskExecutor;->executeOnDiskIO(Ljava/lang/Runnable;)V
HSPLandroidx/arch/core/executor/DefaultTaskExecutor;->isMainThread()Z
HSPLandroidx/arch/core/executor/DefaultTaskExecutor;->postToMainThread(Ljava/lang/Runnable;)V
Landroidx/arch/core/executor/DefaultTaskExecutor$1;
HSPLandroidx/arch/core/executor/DefaultTaskExecutor$1;-><init>(Landroidx/arch/core/executor/DefaultTaskExecutor;)V
HSPLandroidx/arch/core/executor/DefaultTaskExecutor$1;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread;
Landroidx/arch/core/executor/DefaultTaskExecutor$Api28Impl;
HSPLandroidx/arch/core/executor/DefaultTaskExecutor$Api28Impl;->createAsync(Landroid/os/Looper;)Landroid/os/Handler;
Landroidx/arch/core/executor/TaskExecutor;
HSPLandroidx/arch/core/executor/TaskExecutor;-><init>()V
Landroidx/arch/core/internal/FastSafeIterableMap;
HSPLandroidx/arch/core/internal/FastSafeIterableMap;-><init>()V
HSPLandroidx/arch/core/internal/FastSafeIterableMap;->ceil(Ljava/lang/Object;)Ljava/util/Map$Entry;
HSPLandroidx/arch/core/internal/FastSafeIterableMap;->contains(Ljava/lang/Object;)Z
HSPLandroidx/arch/core/internal/FastSafeIterableMap;->get(Ljava/lang/Object;)Landroidx/arch/core/internal/SafeIterableMap$Entry;
HSPLandroidx/arch/core/internal/FastSafeIterableMap;->putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroidx/arch/core/internal/FastSafeIterableMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/arch/core/internal/SafeIterableMap;
HSPLandroidx/arch/core/internal/SafeIterableMap;-><init>()V
PLandroidx/arch/core/internal/SafeIterableMap;->descendingIterator()Ljava/util/Iterator;
HSPLandroidx/arch/core/internal/SafeIterableMap;->eldest()Ljava/util/Map$Entry;
HSPLandroidx/arch/core/internal/SafeIterableMap;->get(Ljava/lang/Object;)Landroidx/arch/core/internal/SafeIterableMap$Entry;
HSPLandroidx/arch/core/internal/SafeIterableMap;->iterator()Ljava/util/Iterator;
HSPLandroidx/arch/core/internal/SafeIterableMap;->iteratorWithAdditions()Landroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions;
HSPLandroidx/arch/core/internal/SafeIterableMap;->newest()Ljava/util/Map$Entry;
HSPLandroidx/arch/core/internal/SafeIterableMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Landroidx/arch/core/internal/SafeIterableMap$Entry;
HSPLandroidx/arch/core/internal/SafeIterableMap;->putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroidx/arch/core/internal/SafeIterableMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroidx/arch/core/internal/SafeIterableMap;->size()I
Landroidx/arch/core/internal/SafeIterableMap$AscendingIterator;
HSPLandroidx/arch/core/internal/SafeIterableMap$AscendingIterator;-><init>(Landroidx/arch/core/internal/SafeIterableMap$Entry;Landroidx/arch/core/internal/SafeIterableMap$Entry;)V
PLandroidx/arch/core/internal/SafeIterableMap$DescendingIterator;-><init>(Landroidx/arch/core/internal/SafeIterableMap$Entry;Landroidx/arch/core/internal/SafeIterableMap$Entry;)V
PLandroidx/arch/core/internal/SafeIterableMap$DescendingIterator;->forward(Landroidx/arch/core/internal/SafeIterableMap$Entry;)Landroidx/arch/core/internal/SafeIterableMap$Entry;
Landroidx/arch/core/internal/SafeIterableMap$Entry;
HSPLandroidx/arch/core/internal/SafeIterableMap$Entry;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V
HSPLandroidx/arch/core/internal/SafeIterableMap$Entry;->getKey()Ljava/lang/Object;
HSPLandroidx/arch/core/internal/SafeIterableMap$Entry;->getValue()Ljava/lang/Object;
Landroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions;
HSPLandroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions;-><init>(Landroidx/arch/core/internal/SafeIterableMap;)V
HSPLandroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions;->hasNext()Z
HSPLandroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions;->next()Ljava/lang/Object;
HSPLandroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions;->next()Ljava/util/Map$Entry;
HSPLandroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions;->supportRemove(Landroidx/arch/core/internal/SafeIterableMap$Entry;)V
Landroidx/arch/core/internal/SafeIterableMap$ListIterator;
HSPLandroidx/arch/core/internal/SafeIterableMap$ListIterator;-><init>(Landroidx/arch/core/internal/SafeIterableMap$Entry;Landroidx/arch/core/internal/SafeIterableMap$Entry;)V
HSPLandroidx/arch/core/internal/SafeIterableMap$ListIterator;->hasNext()Z
PLandroidx/arch/core/internal/SafeIterableMap$ListIterator;->next()Ljava/lang/Object;
PLandroidx/arch/core/internal/SafeIterableMap$ListIterator;->next()Ljava/util/Map$Entry;
PLandroidx/arch/core/internal/SafeIterableMap$ListIterator;->nextNode()Landroidx/arch/core/internal/SafeIterableMap$Entry;
PLandroidx/arch/core/internal/SafeIterableMap$ListIterator;->supportRemove(Landroidx/arch/core/internal/SafeIterableMap$Entry;)V
Landroidx/arch/core/internal/SafeIterableMap$SupportRemove;
HSPLandroidx/arch/core/internal/SafeIterableMap$SupportRemove;-><init>()V
Landroidx/arch/core/util/Function;
Landroidx/collection/ArrayMap;
HSPLandroidx/collection/ArrayMap;-><init>()V
HSPLandroidx/collection/ArrayMap;->containsKey(Ljava/lang/Object;)Z
HSPLandroidx/collection/ArrayMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroidx/collection/ArrayMap;->keySet()Ljava/util/Set;
PLandroidx/collection/ArrayMap;->removeAll(Ljava/util/Collection;)Z
Landroidx/collection/ArrayMap$KeyIterator;
HSPLandroidx/collection/ArrayMap$KeyIterator;-><init>(Landroidx/collection/ArrayMap;)V
Landroidx/collection/ArrayMap$KeySet;
HSPLandroidx/collection/ArrayMap$KeySet;-><init>(Landroidx/collection/ArrayMap;)V
HSPLandroidx/collection/ArrayMap$KeySet;->iterator()Ljava/util/Iterator;
PLandroidx/collection/ArrayMap$KeySet;->removeAll(Ljava/util/Collection;)Z
Landroidx/collection/ArraySet;
HSPLandroidx/collection/ArraySet;-><init>()V
HSPLandroidx/collection/ArraySet;-><init>(I)V
HSPLandroidx/collection/ArraySet;-><init>(IILkotlin/jvm/internal/DefaultConstructorMarker;)V
HSPLandroidx/collection/ArraySet;->add(Ljava/lang/Object;)Z
HSPLandroidx/collection/ArraySet;->clear()V
HSPLandroidx/collection/ArraySet;->getArray$collection()[Ljava/lang/Object;
HSPLandroidx/collection/ArraySet;->getHashes$collection()[I
HSPLandroidx/collection/ArraySet;->get_size$collection()I
HSPLandroidx/collection/ArraySet;->setArray$collection([Ljava/lang/Object;)V
HSPLandroidx/collection/ArraySet;->setHashes$collection([I)V
HSPLandroidx/collection/ArraySet;->set_size$collection(I)V
HSPLandroidx/collection/ArraySet;->toArray()[Ljava/lang/Object;
Landroidx/collection/ArraySetKt;
HSPLandroidx/collection/ArraySetKt;->allocArrays(Landroidx/collection/ArraySet;I)V
HSPLandroidx/collection/ArraySetKt;->indexOf(Landroidx/collection/ArraySet;Ljava/lang/Object;I)I
Landroidx/collection/IndexBasedArrayIterator;
HSPLandroidx/collection/IndexBasedArrayIterator;-><init>(I)V
HSPLandroidx/collection/IndexBasedArrayIterator;->hasNext()Z
Landroidx/collection/IntIntMap;
HSPLandroidx/collection/IntIntMap;-><init>()V
HSPLandroidx/collection/IntIntMap;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
HSPLandroidx/collection/IntIntMap;->contains(I)Z
HSPLandroidx/collection/IntIntMap;->findKeyIndex(I)I
HSPLandroidx/collection/IntIntMap;->getCapacity()I
PLandroidx/collection/IntObjectMap;-><init>()V
PLandroidx/collection/IntObjectMap;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
PLandroidx/collection/IntObjectMap;->getCapacity()I
PLandroidx/collection/IntObjectMapKt;-><clinit>()V
PLandroidx/collection/IntObjectMapKt;->mutableIntObjectMapOf()Landroidx/collection/MutableIntObjectMap;
Landroidx/collection/IntSet;
HSPLandroidx/collection/IntSet;-><init>()V
HSPLandroidx/collection/IntSet;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
HSPLandroidx/collection/IntSet;->getCapacity()I
Landroidx/collection/IntSetKt;
HSPLandroidx/collection/IntSetKt;-><clinit>()V
HPLandroidx/collection/IntSetKt;->getEmptyIntArray()[I
Landroidx/collection/LongSparseArray;
HPLandroidx/collection/LongSparseArray;-><init>(I)V
HSPLandroidx/collection/LongSparseArray;-><init>(IILkotlin/jvm/internal/DefaultConstructorMarker;)V
HPLandroidx/collection/LongSparseArray;->clear()V
PLandroidx/collection/LongSparseArray;->containsKey(J)Z
HPLandroidx/collection/LongSparseArray;->get(J)Ljava/lang/Object;
HPLandroidx/collection/LongSparseArray;->indexOfKey(J)I
HPLandroidx/collection/LongSparseArray;->isEmpty()Z
HPLandroidx/collection/LongSparseArray;->keyAt(I)J
HPLandroidx/collection/LongSparseArray;->put(JLjava/lang/Object;)V
PLandroidx/collection/LongSparseArray;->remove(J)V
HPLandroidx/collection/LongSparseArray;->size()I
HPLandroidx/collection/LongSparseArray;->valueAt(I)Ljava/lang/Object;
PLandroidx/collection/LongSparseArrayKt;-><clinit>()V
PLandroidx/collection/LongSparseArrayKt;->access$getDELETED$p()Ljava/lang/Object;
Landroidx/collection/LruCache;
HSPLandroidx/collection/LruCache;-><init>(I)V
HSPLandroidx/collection/LruCache;->create(Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroidx/collection/LruCache;->get(Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroidx/collection/LruCache;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
PLandroidx/collection/LruCache;->remove(Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroidx/collection/LruCache;->safeSizeOf(Ljava/lang/Object;Ljava/lang/Object;)I
HSPLandroidx/collection/LruCache;->sizeOf(Ljava/lang/Object;Ljava/lang/Object;)I
HSPLandroidx/collection/LruCache;->trimToSize(I)V
Landroidx/collection/MutableIntIntMap;
HSPLandroidx/collection/MutableIntIntMap;-><init>(I)V
HSPLandroidx/collection/MutableIntIntMap;-><init>(IILkotlin/jvm/internal/DefaultConstructorMarker;)V
HSPLandroidx/collection/MutableIntIntMap;->findFirstAvailableSlot(I)I
HPLandroidx/collection/MutableIntIntMap;->findInsertIndex(I)I
HSPLandroidx/collection/MutableIntIntMap;->initializeGrowth()V
HSPLandroidx/collection/MutableIntIntMap;->initializeMetadata(I)V
HSPLandroidx/collection/MutableIntIntMap;->initializeStorage(I)V
HSPLandroidx/collection/MutableIntIntMap;->set(II)V
PLandroidx/collection/MutableIntObjectMap;-><init>(I)V
PLandroidx/collection/MutableIntObjectMap;-><init>(IILkotlin/jvm/internal/DefaultConstructorMarker;)V
PLandroidx/collection/MutableIntObjectMap;->findAbsoluteInsertIndex(I)I
PLandroidx/collection/MutableIntObjectMap;->findFirstAvailableSlot(I)I
PLandroidx/collection/MutableIntObjectMap;->initializeGrowth()V
PLandroidx/collection/MutableIntObjectMap;->initializeMetadata(I)V
PLandroidx/collection/MutableIntObjectMap;->initializeStorage(I)V
PLandroidx/collection/MutableIntObjectMap;->set(ILjava/lang/Object;)V
Landroidx/collection/MutableIntSet;
HSPLandroidx/collection/MutableIntSet;-><init>(I)V
HSPLandroidx/collection/MutableIntSet;->initializeGrowth()V
HSPLandroidx/collection/MutableIntSet;->initializeMetadata(I)V
HSPLandroidx/collection/MutableIntSet;->initializeStorage(I)V
Landroidx/collection/MutableObjectIntMap;
HPLandroidx/collection/MutableObjectIntMap;-><init>(I)V
HPLandroidx/collection/MutableObjectIntMap;-><init>(IILkotlin/jvm/internal/DefaultConstructorMarker;)V
HPLandroidx/collection/MutableObjectIntMap;->adjustStorage()V
HPLandroidx/collection/MutableObjectIntMap;->findFirstAvailableSlot(I)I
HSPLandroidx/collection/MutableObjectIntMap;->findIndex(Ljava/lang/Object;)I
HPLandroidx/collection/MutableObjectIntMap;->initializeGrowth()V
HPLandroidx/collection/MutableObjectIntMap;->initializeMetadata(I)V
HPLandroidx/collection/MutableObjectIntMap;->initializeStorage(I)V
HPLandroidx/collection/MutableObjectIntMap;->put(Ljava/lang/Object;II)I
PLandroidx/collection/MutableObjectIntMap;->removeDeletedMarkers()V
HPLandroidx/collection/MutableObjectIntMap;->removeValueAt(I)V
HPLandroidx/collection/MutableObjectIntMap;->resizeStorage(I)V
HSPLandroidx/collection/MutableObjectIntMap;->set(Ljava/lang/Object;I)V
Landroidx/collection/MutableScatterMap;
HPLandroidx/collection/MutableScatterMap;-><init>(I)V
HSPLandroidx/collection/MutableScatterMap;-><init>(IILkotlin/jvm/internal/DefaultConstructorMarker;)V
HPLandroidx/collection/MutableScatterMap;->adjustStorage()V
PLandroidx/collection/MutableScatterMap;->clear()V
HPLandroidx/collection/MutableScatterMap;->findFirstAvailableSlot(I)I
HPLandroidx/collection/MutableScatterMap;->findInsertIndex(Ljava/lang/Object;)I
HPLandroidx/collection/MutableScatterMap;->initializeGrowth()V
HPLandroidx/collection/MutableScatterMap;->initializeMetadata(I)V
HPLandroidx/collection/MutableScatterMap;->initializeStorage(I)V
HPLandroidx/collection/MutableScatterMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
HPLandroidx/collection/MutableScatterMap;->removeValueAt(I)Ljava/lang/Object;
HPLandroidx/collection/MutableScatterMap;->resizeStorage(I)V
HPLandroidx/collection/MutableScatterMap;->set(Ljava/lang/Object;Ljava/lang/Object;)V
Landroidx/collection/MutableScatterSet;
HPLandroidx/collection/MutableScatterSet;-><init>(I)V
HPLandroidx/collection/MutableScatterSet;-><init>(IILkotlin/jvm/internal/DefaultConstructorMarker;)V
HPLandroidx/collection/MutableScatterSet;->add(Ljava/lang/Object;)Z
HSPLandroidx/collection/MutableScatterSet;->adjustStorage()V
HPLandroidx/collection/MutableScatterSet;->clear()V
HPLandroidx/collection/MutableScatterSet;->findAbsoluteInsertIndex(Ljava/lang/Object;)I
HPLandroidx/collection/MutableScatterSet;->findFirstAvailableSlot(I)I
HPLandroidx/collection/MutableScatterSet;->initializeGrowth()V
HPLandroidx/collection/MutableScatterSet;->initializeMetadata(I)V
HPLandroidx/collection/MutableScatterSet;->initializeStorage(I)V
PLandroidx/collection/MutableScatterSet;->plusAssign(Ljava/lang/Object;)V
HSPLandroidx/collection/MutableScatterSet;->remove(Ljava/lang/Object;)Z
HPLandroidx/collection/MutableScatterSet;->removeElementAt(I)V
HSPLandroidx/collection/MutableScatterSet;->resizeStorage(I)V
Landroidx/collection/ObjectIntMap;
HPLandroidx/collection/ObjectIntMap;-><init>()V
HPLandroidx/collection/ObjectIntMap;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
HSPLandroidx/collection/ObjectIntMap;->equals(Ljava/lang/Object;)Z
HSPLandroidx/collection/ObjectIntMap;->findKeyIndex(Ljava/lang/Object;)I
HPLandroidx/collection/ObjectIntMap;->getCapacity()I
HSPLandroidx/collection/ObjectIntMap;->getOrDefault(Ljava/lang/Object;I)I
HSPLandroidx/collection/ObjectIntMap;->getSize()I
HSPLandroidx/collection/ObjectIntMap;->isNotEmpty()Z
Landroidx/collection/ObjectIntMapKt;
HSPLandroidx/collection/ObjectIntMapKt;-><clinit>()V
HPLandroidx/collection/ObjectIntMapKt;->emptyObjectIntMap()Landroidx/collection/ObjectIntMap;
Landroidx/collection/ScatterMap;
HPLandroidx/collection/ScatterMap;-><init>()V
HSPLandroidx/collection/ScatterMap;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
HSPLandroidx/collection/ScatterMap;->containsKey(Ljava/lang/Object;)Z
HSPLandroidx/collection/ScatterMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroidx/collection/ScatterMap;->getCapacity()I
HSPLandroidx/collection/ScatterMap;->isNotEmpty()Z
Landroidx/collection/ScatterMapKt;
HSPLandroidx/collection/ScatterMapKt;-><clinit>()V
HPLandroidx/collection/ScatterMapKt;->loadedCapacity(I)I
HSPLandroidx/collection/ScatterMapKt;->mutableScatterMapOf()Landroidx/collection/MutableScatterMap;
HSPLandroidx/collection/ScatterMapKt;->nextCapacity(I)I
HPLandroidx/collection/ScatterMapKt;->normalizeCapacity(I)I
HSPLandroidx/collection/ScatterMapKt;->unloadedCapacity(I)I
Landroidx/collection/ScatterSet;
HPLandroidx/collection/ScatterSet;-><init>()V
HSPLandroidx/collection/ScatterSet;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
HPLandroidx/collection/ScatterSet;->contains(Ljava/lang/Object;)Z
HPLandroidx/collection/ScatterSet;->getCapacity()I
HPLandroidx/collection/ScatterSet;->getSize()I
HSPLandroidx/collection/ScatterSet;->isEmpty()Z
PLandroidx/collection/ScatterSetKt;-><clinit>()V
PLandroidx/collection/ScatterSetKt;->mutableScatterSetOf()Landroidx/collection/MutableScatterSet;
Landroidx/collection/SimpleArrayMap;
HSPLandroidx/collection/SimpleArrayMap;-><init>()V
HSPLandroidx/collection/SimpleArrayMap;-><init>(I)V
HSPLandroidx/collection/SimpleArrayMap;-><init>(IILkotlin/jvm/internal/DefaultConstructorMarker;)V
HSPLandroidx/collection/SimpleArrayMap;->containsKey(Ljava/lang/Object;)Z
HSPLandroidx/collection/SimpleArrayMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
HPLandroidx/collection/SimpleArrayMap;->indexOf(Ljava/lang/Object;I)I
HSPLandroidx/collection/SimpleArrayMap;->indexOfKey(Ljava/lang/Object;)I
HSPLandroidx/collection/SimpleArrayMap;->isEmpty()Z
HSPLandroidx/collection/SimpleArrayMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroidx/collection/SimpleArrayMap;->size()I
Landroidx/collection/SparseArrayCompat;
HSPLandroidx/collection/SparseArrayCompat;-><init>(I)V
HSPLandroidx/collection/SparseArrayCompat;-><init>(IILkotlin/jvm/internal/DefaultConstructorMarker;)V
HSPLandroidx/collection/SparseArrayCompat;->keyAt(I)I
HSPLandroidx/collection/SparseArrayCompat;->put(ILjava/lang/Object;)V
Landroidx/collection/internal/ContainerHelpersKt;
HSPLandroidx/collection/internal/ContainerHelpersKt;-><clinit>()V
HSPLandroidx/collection/internal/ContainerHelpersKt;->binarySearch([III)I
HPLandroidx/collection/internal/ContainerHelpersKt;->binarySearch([JIJ)I
HSPLandroidx/collection/internal/ContainerHelpersKt;->idealByteArraySize(I)I
HSPLandroidx/collection/internal/ContainerHelpersKt;->idealIntArraySize(I)I
HSPLandroidx/collection/internal/ContainerHelpersKt;->idealLongArraySize(I)I
Landroidx/collection/internal/Lock;
HSPLandroidx/collection/internal/Lock;-><init>()V
Landroidx/collection/internal/LruHashMap;
HSPLandroidx/collection/internal/LruHashMap;-><init>(IF)V
HSPLandroidx/collection/internal/LruHashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroidx/collection/internal/LruHashMap;->isEmpty()Z
HSPLandroidx/collection/internal/LruHashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
PLandroidx/collection/internal/LruHashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
PLandroidx/compose/animation/AndroidFlingSpline;-><clinit>()V
PLandroidx/compose/animation/AndroidFlingSpline;-><init>()V
PLandroidx/compose/animation/AndroidFlingSpline;->deceleration(FF)D
Landroidx/compose/animation/AnimatedContentKt;
HPLandroidx/compose/animation/AnimatedContentKt;->AnimatedContent(Landroidx/compose/animation/core/Transition;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Alignment;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function4;Landroidx/compose/runtime/Composer;II)V
HSPLandroidx/compose/animation/AnimatedContentKt;->AnimatedContent(Ljava/lang/Object;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Alignment;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function4;Landroidx/compose/runtime/Composer;II)V
HSPLandroidx/compose/animation/AnimatedContentKt;->SizeTransform$default(ZLkotlin/jvm/functions/Function2;ILjava/lang/Object;)Landroidx/compose/animation/SizeTransform;
HSPLandroidx/compose/animation/AnimatedContentKt;->SizeTransform(ZLkotlin/jvm/functions/Function2;)Landroidx/compose/animation/SizeTransform;
HSPLandroidx/compose/animation/AnimatedContentKt;->togetherWith(Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;)Landroidx/compose/animation/ContentTransform;
Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$2;
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$2;-><clinit>()V
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$2;-><init>()V
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$3;
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$3;-><init>(Ljava/lang/Object;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Alignment;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function4;II)V
Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$5;
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$5;-><clinit>()V
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$5;-><init>()V
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$5;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1;
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1;-><init>(Landroidx/compose/animation/core/Transition;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Landroidx/compose/animation/AnimatedContentTransitionScopeImpl;Landroidx/compose/runtime/snapshots/SnapshotStateList;Lkotlin/jvm/functions/Function4;)V
HPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1;->invoke(Landroidx/compose/runtime/Composer;I)V
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$1;
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$1;-><init>(Landroidx/compose/animation/ContentTransform;)V
HPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
HPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$1;->invoke-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult;
Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$1$1;
HPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$1$1;-><init>(Landroidx/compose/ui/layout/Placeable;Landroidx/compose/animation/ContentTransform;)V
HPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$1$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V
HPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$3;
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$3;-><init>(Ljava/lang/Object;)V
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$3;->invoke(Ljava/lang/Object;)Ljava/lang/Boolean;
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$4$1;
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$4$1;-><init>(Landroidx/compose/animation/ExitTransition;)V
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$4$1;->invoke(Landroidx/compose/animation/EnterExitState;Landroidx/compose/animation/EnterExitState;)Ljava/lang/Boolean;
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$4$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$5;
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$5;-><init>(Landroidx/compose/animation/AnimatedContentTransitionScopeImpl;Ljava/lang/Object;Landroidx/compose/runtime/snapshots/SnapshotStateList;Lkotlin/jvm/functions/Function4;)V
HPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$5;->invoke(Landroidx/compose/animation/AnimatedVisibilityScope;Landroidx/compose/runtime/Composer;I)V
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$5;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$5$1;
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$5$1;-><init>(Landroidx/compose/runtime/snapshots/SnapshotStateList;Ljava/lang/Object;Landroidx/compose/animation/AnimatedContentTransitionScopeImpl;)V
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$5$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult;
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$5$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$5$1$invoke$$inlined$onDispose$1;
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$5$1$invoke$$inlined$onDispose$1;-><init>(Landroidx/compose/runtime/snapshots/SnapshotStateList;Ljava/lang/Object;Landroidx/compose/animation/AnimatedContentTransitionScopeImpl;)V
PLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$5$1$invoke$$inlined$onDispose$1;->dispose()V
Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$9;
HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$9;-><init>(Landroidx/compose/animation/core/Transition;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Alignment;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function4;II)V
PLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$9;->invoke(Landroidx/compose/runtime/Composer;I)V
PLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$9;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/AnimatedContentKt$SizeTransform$1;
HSPLandroidx/compose/animation/AnimatedContentKt$SizeTransform$1;-><clinit>()V
HSPLandroidx/compose/animation/AnimatedContentKt$SizeTransform$1;-><init>()V
HPLandroidx/compose/animation/AnimatedContentKt$SizeTransform$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
PLandroidx/compose/animation/AnimatedContentKt$SizeTransform$1;->invoke-TemP2vQ(JJ)Landroidx/compose/animation/core/SpringSpec;
Landroidx/compose/animation/AnimatedContentMeasurePolicy;
HSPLandroidx/compose/animation/AnimatedContentMeasurePolicy;-><init>(Landroidx/compose/animation/AnimatedContentTransitionScopeImpl;)V
HSPLandroidx/compose/animation/AnimatedContentMeasurePolicy;->getRootScope()Landroidx/compose/animation/AnimatedContentTransitionScopeImpl;
HPLandroidx/compose/animation/AnimatedContentMeasurePolicy;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Ljava/util/List;J)Landroidx/compose/ui/layout/MeasureResult;
Landroidx/compose/animation/AnimatedContentMeasurePolicy$measure$3;
HPLandroidx/compose/animation/AnimatedContentMeasurePolicy$measure$3;-><init>([Landroidx/compose/ui/layout/Placeable;Landroidx/compose/animation/AnimatedContentMeasurePolicy;II)V
HPLandroidx/compose/animation/AnimatedContentMeasurePolicy$measure$3;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V
HSPLandroidx/compose/animation/AnimatedContentMeasurePolicy$measure$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/AnimatedContentScope;
Landroidx/compose/animation/AnimatedContentScopeImpl;
HSPLandroidx/compose/animation/AnimatedContentScopeImpl;-><init>(Landroidx/compose/animation/AnimatedVisibilityScope;)V
Landroidx/compose/animation/AnimatedContentTransitionScope;
Landroidx/compose/animation/AnimatedContentTransitionScopeImpl;
HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;-><clinit>()V
HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;-><init>(Landroidx/compose/animation/core/Transition;Landroidx/compose/ui/Alignment;Landroidx/compose/ui/unit/LayoutDirection;)V
HPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->createSizeAnimationModifier$animation_release(Landroidx/compose/animation/ContentTransform;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier;
HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->createSizeAnimationModifier$lambda$2(Landroidx/compose/runtime/MutableState;)Z
HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->createSizeAnimationModifier$lambda$3(Landroidx/compose/runtime/MutableState;Z)V
HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->getContentAlignment()Landroidx/compose/ui/Alignment;
HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->getInitialState()Ljava/lang/Object;
HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->getTargetSizeMap$animation_release()Ljava/util/Map;
HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->getTargetState()Ljava/lang/Object;
PLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->setAnimatedSize$animation_release(Landroidx/compose/runtime/State;)V
HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->setContentAlignment(Landroidx/compose/ui/Alignment;)V
HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->setLayoutDirection$animation_release(Landroidx/compose/ui/unit/LayoutDirection;)V
HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->setMeasuredSize-ozmzZPI$animation_release(J)V
HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->using(Landroidx/compose/animation/ContentTransform;Landroidx/compose/animation/SizeTransform;)Landroidx/compose/animation/ContentTransform;
Landroidx/compose/animation/AnimatedContentTransitionScopeImpl$ChildData;
HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$ChildData;-><clinit>()V
HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$ChildData;-><init>(Z)V
PLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$ChildData;->equals(Ljava/lang/Object;)Z
HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$ChildData;->isTarget()Z
HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$ChildData;->modifyParentData(Landroidx/compose/ui/unit/Density;Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$ChildData;->setTarget(Z)V
PLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$SizeModifier;-><init>(Landroidx/compose/animation/AnimatedContentTransitionScopeImpl;Landroidx/compose/animation/core/Transition$DeferredAnimation;Landroidx/compose/runtime/State;)V
PLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$SizeModifier;->getSizeTransform()Landroidx/compose/runtime/State;
HPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$SizeModifier;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult;
PLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$SizeModifier$measure$1;-><init>(Landroidx/compose/ui/layout/Placeable;J)V
PLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$SizeModifier$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V
PLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$SizeModifier$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
PLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$SizeModifier$measure$size$1;-><init>(Landroidx/compose/animation/AnimatedContentTransitionScopeImpl;Landroidx/compose/animation/AnimatedContentTransitionScopeImpl$SizeModifier;)V
HPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$SizeModifier$measure$size$1;->invoke(Landroidx/compose/animation/core/Transition$Segment;)Landroidx/compose/animation/core/FiniteAnimationSpec;
PLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$SizeModifier$measure$size$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
PLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$SizeModifier$measure$size$2;-><init>(Landroidx/compose/animation/AnimatedContentTransitionScopeImpl;)V
PLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$SizeModifier$measure$size$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
HPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$SizeModifier$measure$size$2;->invoke-YEO4UFw(Ljava/lang/Object;)J
Landroidx/compose/animation/AnimatedEnterExitMeasurePolicy;
HSPLandroidx/compose/animation/AnimatedEnterExitMeasurePolicy;-><init>(Landroidx/compose/animation/AnimatedVisibilityScopeImpl;)V
HPLandroidx/compose/animation/AnimatedEnterExitMeasurePolicy;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Ljava/util/List;J)Landroidx/compose/ui/layout/MeasureResult;
Landroidx/compose/animation/AnimatedEnterExitMeasurePolicy$measure$1;
HPLandroidx/compose/animation/AnimatedEnterExitMeasurePolicy$measure$1;-><init>(Ljava/util/List;)V
HPLandroidx/compose/animation/AnimatedEnterExitMeasurePolicy$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V
HPLandroidx/compose/animation/AnimatedEnterExitMeasurePolicy$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/AnimatedVisibilityKt;
HPLandroidx/compose/animation/AnimatedVisibilityKt;->AnimatedEnterExitImpl(Landroidx/compose/animation/core/Transition;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;Lkotlin/jvm/functions/Function2;Landroidx/compose/animation/OnLookaheadMeasured;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V
HSPLandroidx/compose/animation/AnimatedVisibilityKt;->AnimatedVisibility(Landroidx/compose/foundation/layout/RowScope;ZLandroidx/compose/ui/Modifier;Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;Ljava/lang/String;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V
HSPLandroidx/compose/animation/AnimatedVisibilityKt;->AnimatedVisibilityImpl(Landroidx/compose/animation/core/Transition;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;I)V
HSPLandroidx/compose/animation/AnimatedVisibilityKt;->access$getExitFinished(Landroidx/compose/animation/core/Transition;)Z
HSPLandroidx/compose/animation/AnimatedVisibilityKt;->getExitFinished(Landroidx/compose/animation/core/Transition;)Z
HPLandroidx/compose/animation/AnimatedVisibilityKt;->targetEnterExit(Landroidx/compose/animation/core/Transition;Lkotlin/jvm/functions/Function1;Ljava/lang/Object;Landroidx/compose/runtime/Composer;I)Landroidx/compose/animation/EnterExitState;
Landroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$4;
HPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$4;-><init>(Landroidx/compose/animation/core/Transition;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;Lkotlin/jvm/functions/Function2;Landroidx/compose/animation/OnLookaheadMeasured;Lkotlin/jvm/functions/Function3;II)V
PLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$4;->invoke(Landroidx/compose/runtime/Composer;I)V
PLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$4;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$shouldDisposeAfterExit$2$1;
HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$shouldDisposeAfterExit$2$1;-><init>(Landroidx/compose/animation/core/Transition;Landroidx/compose/runtime/State;Lkotlin/coroutines/Continuation;)V
HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$shouldDisposeAfterExit$2$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$shouldDisposeAfterExit$2$1;->invoke(Landroidx/compose/runtime/ProduceStateScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$shouldDisposeAfterExit$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$shouldDisposeAfterExit$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$shouldDisposeAfterExit$2$1$1;
HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$shouldDisposeAfterExit$2$1$1;-><init>(Landroidx/compose/animation/core/Transition;)V
HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$shouldDisposeAfterExit$2$1$1;->invoke()Ljava/lang/Boolean;
HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$shouldDisposeAfterExit$2$1$1;->invoke()Ljava/lang/Object;
Landroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$shouldDisposeAfterExit$2$1$2;
HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$shouldDisposeAfterExit$2$1$2;-><init>(Landroidx/compose/runtime/ProduceStateScope;Landroidx/compose/animation/core/Transition;Landroidx/compose/runtime/State;)V
HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$shouldDisposeAfterExit$2$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$shouldDisposeAfterExit$2$1$2;->emit(ZLkotlin/coroutines/Continuation;)Ljava/lang/Object;
Landroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$3;
HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$3;-><clinit>()V
HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$3;-><init>()V
HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$3;->invoke(Z)Ljava/lang/Boolean;
Landroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$4;
HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$4;-><init>(Landroidx/compose/foundation/layout/RowScope;ZLandroidx/compose/ui/Modifier;Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;Ljava/lang/String;Lkotlin/jvm/functions/Function3;II)V
Landroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibilityImpl$1$1;
HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibilityImpl$1$1;-><init>(Lkotlin/jvm/functions/Function1;Landroidx/compose/animation/core/Transition;)V
PLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibilityImpl$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
HPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibilityImpl$1$1;->invoke-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult;
PLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibilityImpl$1$1$1;-><init>(Landroidx/compose/ui/layout/Placeable;)V
PLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibilityImpl$1$1$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V
PLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibilityImpl$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibilityImpl$2;
HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibilityImpl$2;-><clinit>()V
HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibilityImpl$2;-><init>()V
PLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibilityImpl$2;->invoke(Landroidx/compose/animation/EnterExitState;Landroidx/compose/animation/EnterExitState;)Ljava/lang/Boolean;
PLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibilityImpl$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/AnimatedVisibilityScope;
Landroidx/compose/animation/AnimatedVisibilityScopeImpl;
HSPLandroidx/compose/animation/AnimatedVisibilityScopeImpl;-><clinit>()V
HSPLandroidx/compose/animation/AnimatedVisibilityScopeImpl;-><init>(Landroidx/compose/animation/core/Transition;)V
HSPLandroidx/compose/animation/AnimatedVisibilityScopeImpl;->getTargetSize$animation_release()Landroidx/compose/runtime/MutableState;
Landroidx/compose/animation/AnimationModifierKt;
HSPLandroidx/compose/animation/AnimationModifierKt;-><clinit>()V
PLandroidx/compose/animation/AnimationModifierKt;->animateContentSize$default(Landroidx/compose/ui/Modifier;Landroidx/compose/animation/core/FiniteAnimationSpec;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Landroidx/compose/ui/Modifier;
PLandroidx/compose/animation/AnimationModifierKt;->animateContentSize(Landroidx/compose/ui/Modifier;Landroidx/compose/animation/core/FiniteAnimationSpec;Lkotlin/jvm/functions/Function2;)Landroidx/compose/ui/Modifier;
HSPLandroidx/compose/animation/AnimationModifierKt;->getInvalidSize()J
HPLandroidx/compose/animation/AnimationModifierKt;->isValid-ozmzZPI(J)Z
Landroidx/compose/animation/ChangeSize;
HSPLandroidx/compose/animation/ChangeSize;-><clinit>()V
HSPLandroidx/compose/animation/ChangeSize;-><init>(Landroidx/compose/ui/Alignment;Lkotlin/jvm/functions/Function1;Landroidx/compose/animation/core/FiniteAnimationSpec;Z)V
PLandroidx/compose/animation/ChangeSize;->equals(Ljava/lang/Object;)Z
PLandroidx/compose/animation/ChangeSize;->getAlignment()Landroidx/compose/ui/Alignment;
PLandroidx/compose/animation/ChangeSize;->getAnimationSpec()Landroidx/compose/animation/core/FiniteAnimationSpec;
PLandroidx/compose/animation/ChangeSize;->getClip()Z
PLandroidx/compose/animation/ChangeSize;->getSize()Lkotlin/jvm/functions/Function1;
Landroidx/compose/animation/ColorVectorConverterKt;
HSPLandroidx/compose/animation/ColorVectorConverterKt;-><clinit>()V
HSPLandroidx/compose/animation/ColorVectorConverterKt;->getVectorConverter(Landroidx/compose/ui/graphics/Color$Companion;)Lkotlin/jvm/functions/Function1;
Landroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1;
HSPLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1;-><clinit>()V
HSPLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1;-><init>()V
HSPLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1;->invoke(Landroidx/compose/ui/graphics/colorspace/ColorSpace;)Landroidx/compose/animation/core/TwoWayConverter;
HSPLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1$1;
HSPLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1$1;-><clinit>()V
HSPLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1$1;-><init>()V
HSPLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1$1;->invoke-8_81llA(J)Landroidx/compose/animation/core/AnimationVector4D;
Landroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1$2;
HSPLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1$2;-><init>(Landroidx/compose/ui/graphics/colorspace/ColorSpace;)V
PLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
PLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1$2;->invoke-vNxB06k(Landroidx/compose/animation/core/AnimationVector4D;)J
Landroidx/compose/animation/ContentTransform;
HSPLandroidx/compose/animation/ContentTransform;-><clinit>()V
HSPLandroidx/compose/animation/ContentTransform;-><init>(Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;FLandroidx/compose/animation/SizeTransform;)V
HSPLandroidx/compose/animation/ContentTransform;-><init>(Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;FLandroidx/compose/animation/SizeTransform;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
PLandroidx/compose/animation/ContentTransform;->getInitialContentExit()Landroidx/compose/animation/ExitTransition;
HSPLandroidx/compose/animation/ContentTransform;->getSizeTransform()Landroidx/compose/animation/SizeTransform;
HSPLandroidx/compose/animation/ContentTransform;->getTargetContentEnter()Landroidx/compose/animation/EnterTransition;
HPLandroidx/compose/animation/ContentTransform;->getTargetContentZIndex()F
HSPLandroidx/compose/animation/ContentTransform;->setSizeTransform$animation_release(Landroidx/compose/animation/SizeTransform;)V
HSPLandroidx/compose/animation/ContentTransform;->setTargetContentZIndex(F)V
Landroidx/compose/animation/CrossfadeKt;
HPLandroidx/compose/animation/CrossfadeKt;->Crossfade(Landroidx/compose/animation/core/Transition;Landroidx/compose/ui/Modifier;Landroidx/compose/animation/core/FiniteAnimationSpec;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V
HPLandroidx/compose/animation/CrossfadeKt;->Crossfade(Ljava/lang/Object;Landroidx/compose/ui/Modifier;Landroidx/compose/animation/core/FiniteAnimationSpec;Ljava/lang/String;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V
Landroidx/compose/animation/CrossfadeKt$Crossfade$1;
HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$1;-><init>(Ljava/lang/Object;Landroidx/compose/ui/Modifier;Landroidx/compose/animation/core/FiniteAnimationSpec;Ljava/lang/String;Lkotlin/jvm/functions/Function3;II)V
Landroidx/compose/animation/CrossfadeKt$Crossfade$3;
HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$3;-><clinit>()V
HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$3;-><init>()V
HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
PLandroidx/compose/animation/CrossfadeKt$Crossfade$4$1;-><init>(Landroidx/compose/animation/core/Transition;)V
PLandroidx/compose/animation/CrossfadeKt$Crossfade$4$1;->invoke(Ljava/lang/Object;)Ljava/lang/Boolean;
PLandroidx/compose/animation/CrossfadeKt$Crossfade$4$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/CrossfadeKt$Crossfade$5$1;
HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$5$1;-><init>(Landroidx/compose/animation/core/Transition;Landroidx/compose/animation/core/FiniteAnimationSpec;Ljava/lang/Object;Lkotlin/jvm/functions/Function3;)V
HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$5$1;->access$invoke$lambda$1(Landroidx/compose/runtime/State;)F
HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$5$1;->invoke$lambda$1(Landroidx/compose/runtime/State;)F
HPLandroidx/compose/animation/CrossfadeKt$Crossfade$5$1;->invoke(Landroidx/compose/runtime/Composer;I)V
HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$5$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/CrossfadeKt$Crossfade$5$1$1$1;
HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$5$1$1$1;-><init>(Landroidx/compose/runtime/State;)V
HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$5$1$1$1;->invoke(Landroidx/compose/ui/graphics/GraphicsLayerScope;)V
HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$5$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/CrossfadeKt$Crossfade$5$1$alpha$2;
HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$5$1$alpha$2;-><init>(Landroidx/compose/animation/core/FiniteAnimationSpec;)V
HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$5$1$alpha$2;->invoke(Landroidx/compose/animation/core/Transition$Segment;Landroidx/compose/runtime/Composer;I)Landroidx/compose/animation/core/FiniteAnimationSpec;
HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$5$1$alpha$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/CrossfadeKt$Crossfade$7;
HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$7;-><init>(Landroidx/compose/animation/core/Transition;Landroidx/compose/ui/Modifier;Landroidx/compose/animation/core/FiniteAnimationSpec;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;II)V
PLandroidx/compose/animation/CrossfadeKt$Crossfade$7;->invoke(Landroidx/compose/runtime/Composer;I)V
PLandroidx/compose/animation/CrossfadeKt$Crossfade$7;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/EnterExitState;
HSPLandroidx/compose/animation/EnterExitState;->$values()[Landroidx/compose/animation/EnterExitState;
HSPLandroidx/compose/animation/EnterExitState;-><clinit>()V
HSPLandroidx/compose/animation/EnterExitState;-><init>(Ljava/lang/String;I)V
PLandroidx/compose/animation/EnterExitState;->values()[Landroidx/compose/animation/EnterExitState;
Landroidx/compose/animation/EnterExitTransitionElement;
HSPLandroidx/compose/animation/EnterExitTransitionElement;-><init>(Landroidx/compose/animation/core/Transition;Landroidx/compose/animation/core/Transition$DeferredAnimation;Landroidx/compose/animation/core/Transition$DeferredAnimation;Landroidx/compose/animation/core/Transition$DeferredAnimation;Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;Landroidx/compose/animation/GraphicsLayerBlockForEnterExit;)V
HSPLandroidx/compose/animation/EnterExitTransitionElement;->create()Landroidx/compose/animation/EnterExitTransitionModifierNode;
HSPLandroidx/compose/animation/EnterExitTransitionElement;->create()Landroidx/compose/ui/Modifier$Node;
HPLandroidx/compose/animation/EnterExitTransitionElement;->equals(Ljava/lang/Object;)Z
PLandroidx/compose/animation/EnterExitTransitionElement;->update(Landroidx/compose/animation/EnterExitTransitionModifierNode;)V
PLandroidx/compose/animation/EnterExitTransitionElement;->update(Landroidx/compose/ui/Modifier$Node;)V
Landroidx/compose/animation/EnterExitTransitionKt;
HSPLandroidx/compose/animation/EnterExitTransitionKt;->$r8$lambda$1JgidYUxIRNwEZ0kscHeqkwDXjI(Landroidx/compose/animation/core/Transition$DeferredAnimation;Landroidx/compose/animation/core/Transition$DeferredAnimation;Landroidx/compose/animation/core/Transition;Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;Landroidx/compose/animation/core/Transition$DeferredAnimation;)Lkotlin/jvm/functions/Function1;
HSPLandroidx/compose/animation/EnterExitTransitionKt;-><clinit>()V
PLandroidx/compose/animation/EnterExitTransitionKt;->access$getDefaultOffsetAnimationSpec$p()Landroidx/compose/animation/core/SpringSpec;
HPLandroidx/compose/animation/EnterExitTransitionKt;->createGraphicsLayerBlock$lambda$11(Landroidx/compose/animation/core/Transition$DeferredAnimation;Landroidx/compose/animation/core/Transition$DeferredAnimation;Landroidx/compose/animation/core/Transition;Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;Landroidx/compose/animation/core/Transition$DeferredAnimation;)Lkotlin/jvm/functions/Function1;
HPLandroidx/compose/animation/EnterExitTransitionKt;->createGraphicsLayerBlock(Landroidx/compose/animation/core/Transition;Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;Ljava/lang/String;Landroidx/compose/runtime/Composer;I)Landroidx/compose/animation/GraphicsLayerBlockForEnterExit;
HPLandroidx/compose/animation/EnterExitTransitionKt;->createModifier(Landroidx/compose/animation/core/Transition;Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;Ljava/lang/String;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier;
HSPLandroidx/compose/animation/EnterExitTransitionKt;->expandHorizontally$default(Landroidx/compose/animation/core/FiniteAnimationSpec;Landroidx/compose/ui/Alignment$Horizontal;ZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)Landroidx/compose/animation/EnterTransition;
HSPLandroidx/compose/animation/EnterExitTransitionKt;->expandHorizontally(Landroidx/compose/animation/core/FiniteAnimationSpec;Landroidx/compose/ui/Alignment$Horizontal;ZLkotlin/jvm/functions/Function1;)Landroidx/compose/animation/EnterTransition;
HSPLandroidx/compose/animation/EnterExitTransitionKt;->expandIn(Landroidx/compose/animation/core/FiniteAnimationSpec;Landroidx/compose/ui/Alignment;ZLkotlin/jvm/functions/Function1;)Landroidx/compose/animation/EnterTransition;
HSPLandroidx/compose/animation/EnterExitTransitionKt;->fadeIn$default(Landroidx/compose/animation/core/FiniteAnimationSpec;FILjava/lang/Object;)Landroidx/compose/animation/EnterTransition;
HSPLandroidx/compose/animation/EnterExitTransitionKt;->fadeIn(Landroidx/compose/animation/core/FiniteAnimationSpec;F)Landroidx/compose/animation/EnterTransition;
HSPLandroidx/compose/animation/EnterExitTransitionKt;->fadeOut$default(Landroidx/compose/animation/core/FiniteAnimationSpec;FILjava/lang/Object;)Landroidx/compose/animation/ExitTransition;
HSPLandroidx/compose/animation/EnterExitTransitionKt;->fadeOut(Landroidx/compose/animation/core/FiniteAnimationSpec;F)Landroidx/compose/animation/ExitTransition;
HSPLandroidx/compose/animation/EnterExitTransitionKt;->shrinkHorizontally$default(Landroidx/compose/animation/core/FiniteAnimationSpec;Landroidx/compose/ui/Alignment$Horizontal;ZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)Landroidx/compose/animation/ExitTransition;
HSPLandroidx/compose/animation/EnterExitTransitionKt;->shrinkHorizontally(Landroidx/compose/animation/core/FiniteAnimationSpec;Landroidx/compose/ui/Alignment$Horizontal;ZLkotlin/jvm/functions/Function1;)Landroidx/compose/animation/ExitTransition;
HSPLandroidx/compose/animation/EnterExitTransitionKt;->shrinkOut(Landroidx/compose/animation/core/FiniteAnimationSpec;Landroidx/compose/ui/Alignment;ZLkotlin/jvm/functions/Function1;)Landroidx/compose/animation/ExitTransition;
PLandroidx/compose/animation/EnterExitTransitionKt;->slideIn(Landroidx/compose/animation/core/FiniteAnimationSpec;Lkotlin/jvm/functions/Function1;)Landroidx/compose/animation/EnterTransition;
PLandroidx/compose/animation/EnterExitTransitionKt;->slideInHorizontally(Landroidx/compose/animation/core/FiniteAnimationSpec;Lkotlin/jvm/functions/Function1;)Landroidx/compose/animation/EnterTransition;
PLandroidx/compose/animation/EnterExitTransitionKt;->slideOut(Landroidx/compose/animation/core/FiniteAnimationSpec;Lkotlin/jvm/functions/Function1;)Landroidx/compose/animation/ExitTransition;
PLandroidx/compose/animation/EnterExitTransitionKt;->slideOutHorizontally(Landroidx/compose/animation/core/FiniteAnimationSpec;Lkotlin/jvm/functions/Function1;)Landroidx/compose/animation/ExitTransition;
HSPLandroidx/compose/animation/EnterExitTransitionKt;->toAlignment(Landroidx/compose/ui/Alignment$Horizontal;)Landroidx/compose/ui/Alignment;
HSPLandroidx/compose/animation/EnterExitTransitionKt;->trackActiveEnter$lambda$4(Landroidx/compose/runtime/MutableState;)Landroidx/compose/animation/EnterTransition;
HSPLandroidx/compose/animation/EnterExitTransitionKt;->trackActiveEnter$lambda$5(Landroidx/compose/runtime/MutableState;Landroidx/compose/animation/EnterTransition;)V
HPLandroidx/compose/animation/EnterExitTransitionKt;->trackActiveEnter(Landroidx/compose/animation/core/Transition;Landroidx/compose/animation/EnterTransition;Landroidx/compose/runtime/Composer;I)Landroidx/compose/animation/EnterTransition;
HSPLandroidx/compose/animation/EnterExitTransitionKt;->trackActiveExit$lambda$7(Landroidx/compose/runtime/MutableState;)Landroidx/compose/animation/ExitTransition;
HSPLandroidx/compose/animation/EnterExitTransitionKt;->trackActiveExit$lambda$8(Landroidx/compose/runtime/MutableState;Landroidx/compose/animation/ExitTransition;)V
HPLandroidx/compose/animation/EnterExitTransitionKt;->trackActiveExit(Landroidx/compose/animation/core/Transition;Landroidx/compose/animation/ExitTransition;Landroidx/compose/runtime/Composer;I)Landroidx/compose/animation/ExitTransition;
Landroidx/compose/animation/EnterExitTransitionKt$$ExternalSyntheticLambda0;
HSPLandroidx/compose/animation/EnterExitTransitionKt$$ExternalSyntheticLambda0;-><init>(Landroidx/compose/animation/core/Transition$DeferredAnimation;Landroidx/compose/animation/core/Transition$DeferredAnimation;Landroidx/compose/animation/core/Transition;Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;Landroidx/compose/animation/core/Transition$DeferredAnimation;)V
HPLandroidx/compose/animation/EnterExitTransitionKt$$ExternalSyntheticLambda0;->init()Lkotlin/jvm/functions/Function1;
Landroidx/compose/animation/EnterExitTransitionKt$TransformOriginVectorConverter$1;
HSPLandroidx/compose/animation/EnterExitTransitionKt$TransformOriginVectorConverter$1;-><clinit>()V
HSPLandroidx/compose/animation/EnterExitTransitionKt$TransformOriginVectorConverter$1;-><init>()V
Landroidx/compose/animation/EnterExitTransitionKt$TransformOriginVectorConverter$2;
HSPLandroidx/compose/animation/EnterExitTransitionKt$TransformOriginVectorConverter$2;-><clinit>()V
HSPLandroidx/compose/animation/EnterExitTransitionKt$TransformOriginVectorConverter$2;-><init>()V
HPLandroidx/compose/animation/EnterExitTransitionKt$createGraphicsLayerBlock$1$alpha$1;-><init>(Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;)V
HPLandroidx/compose/animation/EnterExitTransitionKt$createGraphicsLayerBlock$1$alpha$1;->invoke(Landroidx/compose/animation/core/Transition$Segment;)Landroidx/compose/animation/core/FiniteAnimationSpec;
HPLandroidx/compose/animation/EnterExitTransitionKt$createGraphicsLayerBlock$1$alpha$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
HPLandroidx/compose/animation/EnterExitTransitionKt$createGraphicsLayerBlock$1$alpha$2;-><init>(Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;)V
HPLandroidx/compose/animation/EnterExitTransitionKt$createGraphicsLayerBlock$1$alpha$2;->invoke(Landroidx/compose/animation/EnterExitState;)Ljava/lang/Float;
HPLandroidx/compose/animation/EnterExitTransitionKt$createGraphicsLayerBlock$1$alpha$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
PLandroidx/compose/animation/EnterExitTransitionKt$createGraphicsLayerBlock$1$alpha$2$WhenMappings;-><clinit>()V
Landroidx/compose/animation/EnterExitTransitionKt$createGraphicsLayerBlock$1$block$1;
HPLandroidx/compose/animation/EnterExitTransitionKt$createGraphicsLayerBlock$1$block$1;-><init>(Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;)V
HPLandroidx/compose/animation/EnterExitTransitionKt$createGraphicsLayerBlock$1$block$1;->invoke(Landroidx/compose/ui/graphics/GraphicsLayerScope;)V
HPLandroidx/compose/animation/EnterExitTransitionKt$createGraphicsLayerBlock$1$block$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/EnterExitTransitionKt$expandHorizontally$1;
HSPLandroidx/compose/animation/EnterExitTransitionKt$expandHorizontally$1;-><clinit>()V
HSPLandroidx/compose/animation/EnterExitTransitionKt$expandHorizontally$1;-><init>()V
PLandroidx/compose/animation/EnterExitTransitionKt$expandHorizontally$1;->invoke(I)Ljava/lang/Integer;
PLandroidx/compose/animation/EnterExitTransitionKt$expandHorizontally$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/EnterExitTransitionKt$expandHorizontally$2;
HSPLandroidx/compose/animation/EnterExitTransitionKt$expandHorizontally$2;-><init>(Lkotlin/jvm/functions/Function1;)V
PLandroidx/compose/animation/EnterExitTransitionKt$expandHorizontally$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
PLandroidx/compose/animation/EnterExitTransitionKt$expandHorizontally$2;->invoke-mzRDjE0(J)J
Landroidx/compose/animation/EnterExitTransitionKt$shrinkHorizontally$1;
HSPLandroidx/compose/animation/EnterExitTransitionKt$shrinkHorizontally$1;-><clinit>()V
HSPLandroidx/compose/animation/EnterExitTransitionKt$shrinkHorizontally$1;-><init>()V
Landroidx/compose/animation/EnterExitTransitionKt$shrinkHorizontally$2;
HSPLandroidx/compose/animation/EnterExitTransitionKt$shrinkHorizontally$2;-><init>(Lkotlin/jvm/functions/Function1;)V
PLandroidx/compose/animation/EnterExitTransitionKt$shrinkHorizontally$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
HPLandroidx/compose/animation/EnterExitTransitionKt$shrinkHorizontally$2;->invoke-mzRDjE0(J)J
PLandroidx/compose/animation/EnterExitTransitionKt$slideInHorizontally$2;-><init>(Lkotlin/jvm/functions/Function1;)V
HPLandroidx/compose/animation/EnterExitTransitionKt$slideInHorizontally$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
HPLandroidx/compose/animation/EnterExitTransitionKt$slideInHorizontally$2;->invoke-mHKZG7I(J)J
PLandroidx/compose/animation/EnterExitTransitionKt$slideOutHorizontally$2;-><init>(Lkotlin/jvm/functions/Function1;)V
PLandroidx/compose/animation/EnterExitTransitionKt$slideOutHorizontally$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
HPLandroidx/compose/animation/EnterExitTransitionKt$slideOutHorizontally$2;->invoke-mHKZG7I(J)J
Landroidx/compose/animation/EnterExitTransitionModifierNode;
HSPLandroidx/compose/animation/EnterExitTransitionModifierNode;-><init>(Landroidx/compose/animation/core/Transition;Landroidx/compose/animation/core/Transition$DeferredAnimation;Landroidx/compose/animation/core/Transition$DeferredAnimation;Landroidx/compose/animation/core/Transition$DeferredAnimation;Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;Landroidx/compose/animation/GraphicsLayerBlockForEnterExit;)V
HPLandroidx/compose/animation/EnterExitTransitionModifierNode;->getAlignment()Landroidx/compose/ui/Alignment;
PLandroidx/compose/animation/EnterExitTransitionModifierNode;->getEnter()Landroidx/compose/animation/EnterTransition;
PLandroidx/compose/animation/EnterExitTransitionModifierNode;->getExit()Landroidx/compose/animation/ExitTransition;
HPLandroidx/compose/animation/EnterExitTransitionModifierNode;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult;
HSPLandroidx/compose/animation/EnterExitTransitionModifierNode;->onAttach()V
PLandroidx/compose/animation/EnterExitTransitionModifierNode;->setEnter(Landroidx/compose/animation/EnterTransition;)V
PLandroidx/compose/animation/EnterExitTransitionModifierNode;->setExit(Landroidx/compose/animation/ExitTransition;)V
PLandroidx/compose/animation/EnterExitTransitionModifierNode;->setGraphicsLayerBlock(Landroidx/compose/animation/GraphicsLayerBlockForEnterExit;)V
PLandroidx/compose/animation/EnterExitTransitionModifierNode;->setOffsetAnimation(Landroidx/compose/animation/core/Transition$DeferredAnimation;)V
PLandroidx/compose/animation/EnterExitTransitionModifierNode;->setSizeAnimation(Landroidx/compose/animation/core/Transition$DeferredAnimation;)V
PLandroidx/compose/animation/EnterExitTransitionModifierNode;->setSlideAnimation(Landroidx/compose/animation/core/Transition$DeferredAnimation;)V
PLandroidx/compose/animation/EnterExitTransitionModifierNode;->setTransition(Landroidx/compose/animation/core/Transition;)V
HPLandroidx/compose/animation/EnterExitTransitionModifierNode;->sizeByState-Uzc_VyU(Landroidx/compose/animation/EnterExitState;J)J
HPLandroidx/compose/animation/EnterExitTransitionModifierNode;->slideTargetValueByState-oFUgxo0(Landroidx/compose/animation/EnterExitState;J)J
HPLandroidx/compose/animation/EnterExitTransitionModifierNode;->targetOffsetByState-oFUgxo0(Landroidx/compose/animation/EnterExitState;J)J
PLandroidx/compose/animation/EnterExitTransitionModifierNode$WhenMappings;-><clinit>()V
Landroidx/compose/animation/EnterExitTransitionModifierNode$measure$2;
HPLandroidx/compose/animation/EnterExitTransitionModifierNode$measure$2;-><init>(Landroidx/compose/ui/layout/Placeable;JJLkotlin/jvm/functions/Function1;)V
HPLandroidx/compose/animation/EnterExitTransitionModifierNode$measure$2;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V
HPLandroidx/compose/animation/EnterExitTransitionModifierNode$measure$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
HPLandroidx/compose/animation/EnterExitTransitionModifierNode$measure$animSize$1;-><init>(Landroidx/compose/animation/EnterExitTransitionModifierNode;J)V
HPLandroidx/compose/animation/EnterExitTransitionModifierNode$measure$animSize$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
HPLandroidx/compose/animation/EnterExitTransitionModifierNode$measure$animSize$1;->invoke-YEO4UFw(Landroidx/compose/animation/EnterExitState;)J
PLandroidx/compose/animation/EnterExitTransitionModifierNode$measure$offsetDelta$1;-><clinit>()V
PLandroidx/compose/animation/EnterExitTransitionModifierNode$measure$offsetDelta$1;-><init>()V
PLandroidx/compose/animation/EnterExitTransitionModifierNode$measure$offsetDelta$1;->invoke(Landroidx/compose/animation/core/Transition$Segment;)Landroidx/compose/animation/core/FiniteAnimationSpec;
HPLandroidx/compose/animation/EnterExitTransitionModifierNode$measure$offsetDelta$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
HPLandroidx/compose/animation/EnterExitTransitionModifierNode$measure$offsetDelta$2;-><init>(Landroidx/compose/animation/EnterExitTransitionModifierNode;J)V
HPLandroidx/compose/animation/EnterExitTransitionModifierNode$measure$offsetDelta$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
HPLandroidx/compose/animation/EnterExitTransitionModifierNode$measure$offsetDelta$2;->invoke-Bjo55l4(Landroidx/compose/animation/EnterExitState;)J
PLandroidx/compose/animation/EnterExitTransitionModifierNode$measure$slideOffset$1;-><init>(Landroidx/compose/animation/EnterExitTransitionModifierNode;J)V
HPLandroidx/compose/animation/EnterExitTransitionModifierNode$measure$slideOffset$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
HPLandroidx/compose/animation/EnterExitTransitionModifierNode$measure$slideOffset$1;->invoke-Bjo55l4(Landroidx/compose/animation/EnterExitState;)J
Landroidx/compose/animation/EnterExitTransitionModifierNode$sizeTransitionSpec$1;
HSPLandroidx/compose/animation/EnterExitTransitionModifierNode$sizeTransitionSpec$1;-><init>(Landroidx/compose/animation/EnterExitTransitionModifierNode;)V
HPLandroidx/compose/animation/EnterExitTransitionModifierNode$sizeTransitionSpec$1;->invoke(Landroidx/compose/animation/core/Transition$Segment;)Landroidx/compose/animation/core/FiniteAnimationSpec;
PLandroidx/compose/animation/EnterExitTransitionModifierNode$sizeTransitionSpec$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/EnterExitTransitionModifierNode$slideSpec$1;
HSPLandroidx/compose/animation/EnterExitTransitionModifierNode$slideSpec$1;-><init>(Landroidx/compose/animation/EnterExitTransitionModifierNode;)V
HPLandroidx/compose/animation/EnterExitTransitionModifierNode$slideSpec$1;->invoke(Landroidx/compose/animation/core/Transition$Segment;)Landroidx/compose/animation/core/FiniteAnimationSpec;
PLandroidx/compose/animation/EnterExitTransitionModifierNode$slideSpec$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/EnterTransition;
HSPLandroidx/compose/animation/EnterTransition;-><clinit>()V
HSPLandroidx/compose/animation/EnterTransition;-><init>()V
HSPLandroidx/compose/animation/EnterTransition;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
HSPLandroidx/compose/animation/EnterTransition;->access$getNone$cp()Landroidx/compose/animation/EnterTransition;
HSPLandroidx/compose/animation/EnterTransition;->equals(Ljava/lang/Object;)Z
HSPLandroidx/compose/animation/EnterTransition;->plus(Landroidx/compose/animation/EnterTransition;)Landroidx/compose/animation/EnterTransition;
Landroidx/compose/animation/EnterTransition$Companion;
HSPLandroidx/compose/animation/EnterTransition$Companion;-><init>()V
HSPLandroidx/compose/animation/EnterTransition$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
HSPLandroidx/compose/animation/EnterTransition$Companion;->getNone()Landroidx/compose/animation/EnterTransition;
Landroidx/compose/animation/EnterTransitionImpl;
HSPLandroidx/compose/animation/EnterTransitionImpl;-><init>(Landroidx/compose/animation/TransitionData;)V
HPLandroidx/compose/animation/EnterTransitionImpl;->getData$animation_release()Landroidx/compose/animation/TransitionData;
Landroidx/compose/animation/ExitTransition;
HSPLandroidx/compose/animation/ExitTransition;-><clinit>()V
HSPLandroidx/compose/animation/ExitTransition;-><init>()V
HSPLandroidx/compose/animation/ExitTransition;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
HSPLandroidx/compose/animation/ExitTransition;->access$getNone$cp()Landroidx/compose/animation/ExitTransition;
HSPLandroidx/compose/animation/ExitTransition;->equals(Ljava/lang/Object;)Z
HSPLandroidx/compose/animation/ExitTransition;->plus(Landroidx/compose/animation/ExitTransition;)Landroidx/compose/animation/ExitTransition;
Landroidx/compose/animation/ExitTransition$Companion;
HSPLandroidx/compose/animation/ExitTransition$Companion;-><init>()V
HSPLandroidx/compose/animation/ExitTransition$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
HSPLandroidx/compose/animation/ExitTransition$Companion;->getNone()Landroidx/compose/animation/ExitTransition;
Landroidx/compose/animation/ExitTransitionImpl;
HSPLandroidx/compose/animation/ExitTransitionImpl;-><init>(Landroidx/compose/animation/TransitionData;)V
HPLandroidx/compose/animation/ExitTransitionImpl;->getData$animation_release()Landroidx/compose/animation/TransitionData;
Landroidx/compose/animation/Fade;
HSPLandroidx/compose/animation/Fade;-><clinit>()V
HSPLandroidx/compose/animation/Fade;-><init>(FLandroidx/compose/animation/core/FiniteAnimationSpec;)V
PLandroidx/compose/animation/Fade;->equals(Ljava/lang/Object;)Z
PLandroidx/compose/animation/Fade;->getAlpha()F
PLandroidx/compose/animation/Fade;->getAnimationSpec()Landroidx/compose/animation/core/FiniteAnimationSpec;
Landroidx/compose/animation/FlingCalculator;
HSPLandroidx/compose/animation/FlingCalculator;-><clinit>()V
HSPLandroidx/compose/animation/FlingCalculator;-><init>(FLandroidx/compose/ui/unit/Density;)V
HSPLandroidx/compose/animation/FlingCalculator;->computeDeceleration(Landroidx/compose/ui/unit/Density;)F
PLandroidx/compose/animation/FlingCalculator;->flingDistance(F)F
PLandroidx/compose/animation/FlingCalculator;->getSplineDeceleration(F)D
Landroidx/compose/animation/FlingCalculatorKt;
HSPLandroidx/compose/animation/FlingCalculatorKt;-><clinit>()V
HSPLandroidx/compose/animation/FlingCalculatorKt;->access$computeDeceleration(FF)F
PLandroidx/compose/animation/FlingCalculatorKt;->access$getDecelerationRate$p()F
HSPLandroidx/compose/animation/FlingCalculatorKt;->computeDeceleration(FF)F
Landroidx/compose/animation/GraphicsLayerBlockForEnterExit;
Landroidx/compose/animation/LayoutModifierNodeWithPassThroughIntrinsics;
HSPLandroidx/compose/animation/LayoutModifierNodeWithPassThroughIntrinsics;-><clinit>()V
HSPLandroidx/compose/animation/LayoutModifierNodeWithPassThroughIntrinsics;-><init>()V
PLandroidx/compose/animation/LayoutModifierWithPassThroughIntrinsics;-><clinit>()V
PLandroidx/compose/animation/LayoutModifierWithPassThroughIntrinsics;-><init>()V
Landroidx/compose/animation/OnLookaheadMeasured;
Landroidx/compose/animation/Scale;
Landroidx/compose/animation/SingleValueAnimationKt;
HSPLandroidx/compose/animation/SingleValueAnimationKt;-><clinit>()V
HPLandroidx/compose/animation/SingleValueAnimationKt;->animateColorAsState-euL9pac(JLandroidx/compose/animation/core/AnimationSpec;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)Landroidx/compose/runtime/State;
PLandroidx/compose/animation/SizeAnimationModifierElement;-><init>(Landroidx/compose/animation/core/FiniteAnimationSpec;Lkotlin/jvm/functions/Function2;)V
PLandroidx/compose/animation/SizeAnimationModifierElement;->create()Landroidx/compose/animation/SizeAnimationModifierNode;
PLandroidx/compose/animation/SizeAnimationModifierElement;->create()Landroidx/compose/ui/Modifier$Node;
PLandroidx/compose/animation/SizeAnimationModifierElement;->equals(Ljava/lang/Object;)Z
PLandroidx/compose/animation/SizeAnimationModifierNode;-><init>(Landroidx/compose/animation/core/AnimationSpec;Lkotlin/jvm/functions/Function2;)V
PLandroidx/compose/animation/SizeAnimationModifierNode;->animateTo-mzRDjE0(J)J
PLandroidx/compose/animation/SizeAnimationModifierNode;->getAnimData()Landroidx/compose/animation/SizeAnimationModifierNode$AnimData;
PLandroidx/compose/animation/SizeAnimationModifierNode;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult;
PLandroidx/compose/animation/SizeAnimationModifierNode;->onAttach()V
PLandroidx/compose/animation/SizeAnimationModifierNode;->onReset()V
PLandroidx/compose/animation/SizeAnimationModifierNode;->setAnimData(Landroidx/compose/animation/SizeAnimationModifierNode$AnimData;)V
PLandroidx/compose/animation/SizeAnimationModifierNode;->targetConstraints-ZezNO4M(J)J
PLandroidx/compose/animation/SizeAnimationModifierNode$AnimData;-><clinit>()V
PLandroidx/compose/animation/SizeAnimationModifierNode$AnimData;-><init>(Landroidx/compose/animation/core/Animatable;J)V
PLandroidx/compose/animation/SizeAnimationModifierNode$AnimData;-><init>(Landroidx/compose/animation/core/Animatable;JLkotlin/jvm/internal/DefaultConstructorMarker;)V
PLandroidx/compose/animation/SizeAnimationModifierNode$AnimData;->equals(Ljava/lang/Object;)Z
PLandroidx/compose/animation/SizeAnimationModifierNode$AnimData;->getAnim()Landroidx/compose/animation/core/Animatable;
PLandroidx/compose/animation/SizeAnimationModifierNode$measure$2;-><init>(Landroidx/compose/ui/layout/Placeable;)V
PLandroidx/compose/animation/SizeAnimationModifierNode$measure$2;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V
PLandroidx/compose/animation/SizeAnimationModifierNode$measure$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/SizeTransform;
Landroidx/compose/animation/SizeTransformImpl;
HSPLandroidx/compose/animation/SizeTransformImpl;-><init>(ZLkotlin/jvm/functions/Function2;)V
HPLandroidx/compose/animation/SizeTransformImpl;->createAnimationSpec-TemP2vQ(JJ)Landroidx/compose/animation/core/FiniteAnimationSpec;
PLandroidx/compose/animation/SizeTransformImpl;->getClip()Z
Landroidx/compose/animation/Slide;
PLandroidx/compose/animation/Slide;-><clinit>()V
PLandroidx/compose/animation/Slide;-><init>(Lkotlin/jvm/functions/Function1;Landroidx/compose/animation/core/FiniteAnimationSpec;)V
PLandroidx/compose/animation/Slide;->equals(Ljava/lang/Object;)Z
PLandroidx/compose/animation/Slide;->getAnimationSpec()Landroidx/compose/animation/core/FiniteAnimationSpec;
PLandroidx/compose/animation/Slide;->getSlideOffset()Lkotlin/jvm/functions/Function1;
Landroidx/compose/animation/SplineBasedDecayKt;
PLandroidx/compose/animation/SplineBasedDecayKt;->access$computeSplineInfo([F[FI)V
PLandroidx/compose/animation/SplineBasedDecayKt;->computeSplineInfo([F[FI)V
HSPLandroidx/compose/animation/SplineBasedDecayKt;->splineBasedDecay(Landroidx/compose/ui/unit/Density;)Landroidx/compose/animation/core/DecayAnimationSpec;
Landroidx/compose/animation/SplineBasedFloatDecayAnimationSpec;
HSPLandroidx/compose/animation/SplineBasedFloatDecayAnimationSpec;-><clinit>()V
HSPLandroidx/compose/animation/SplineBasedFloatDecayAnimationSpec;-><init>(Landroidx/compose/ui/unit/Density;)V
PLandroidx/compose/animation/SplineBasedFloatDecayAnimationSpec;->flingDistance(F)F
PLandroidx/compose/animation/SplineBasedFloatDecayAnimationSpec;->getAbsVelocityThreshold()F
PLandroidx/compose/animation/SplineBasedFloatDecayAnimationSpec;->getTargetValue(FF)F
Landroidx/compose/animation/SplineBasedFloatDecayAnimationSpec_androidKt;
HSPLandroidx/compose/animation/SplineBasedFloatDecayAnimationSpec_androidKt;-><clinit>()V
HSPLandroidx/compose/animation/SplineBasedFloatDecayAnimationSpec_androidKt;->getPlatformFlingScrollFriction()F
HPLandroidx/compose/animation/SplineBasedFloatDecayAnimationSpec_androidKt;->rememberSplineBasedDecay(Landroidx/compose/runtime/Composer;I)Landroidx/compose/animation/core/DecayAnimationSpec;
Landroidx/compose/animation/TransitionData;
HSPLandroidx/compose/animation/TransitionData;-><clinit>()V
HSPLandroidx/compose/animation/TransitionData;-><init>(Landroidx/compose/animation/Fade;Landroidx/compose/animation/Slide;Landroidx/compose/animation/ChangeSize;Landroidx/compose/animation/Scale;ZLjava/util/Map;)V
HSPLandroidx/compose/animation/TransitionData;-><init>(Landroidx/compose/animation/Fade;Landroidx/compose/animation/Slide;Landroidx/compose/animation/ChangeSize;Landroidx/compose/animation/Scale;ZLjava/util/Map;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
HSPLandroidx/compose/animation/TransitionData;->equals(Ljava/lang/Object;)Z
HSPLandroidx/compose/animation/TransitionData;->getChangeSize()Landroidx/compose/animation/ChangeSize;
HSPLandroidx/compose/animation/TransitionData;->getEffectsMap()Ljava/util/Map;
HPLandroidx/compose/animation/TransitionData;->getFade()Landroidx/compose/animation/Fade;
HSPLandroidx/compose/animation/TransitionData;->getHold()Z
HSPLandroidx/compose/animation/TransitionData;->getScale()Landroidx/compose/animation/Scale;
HSPLandroidx/compose/animation/TransitionData;->getSlide()Landroidx/compose/animation/Slide;
Landroidx/compose/animation/core/Animatable;
HSPLandroidx/compose/animation/core/Animatable;-><clinit>()V
HPLandroidx/compose/animation/core/Animatable;-><init>(Ljava/lang/Object;Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;Ljava/lang/String;)V
HSPLandroidx/compose/animation/core/Animatable;-><init>(Ljava/lang/Object;Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
HSPLandroidx/compose/animation/core/Animatable;->access$clampToBounds(Landroidx/compose/animation/core/Animatable;Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroidx/compose/animation/core/Animatable;->access$endAnimation(Landroidx/compose/animation/core/Animatable;)V
HSPLandroidx/compose/animation/core/Animatable;->access$setRunning(Landroidx/compose/animation/core/Animatable;Z)V
HSPLandroidx/compose/animation/core/Animatable;->access$setTargetValue(Landroidx/compose/animation/core/Animatable;Ljava/lang/Object;)V
HSPLandroidx/compose/animation/core/Animatable;->animateTo$default(Landroidx/compose/animation/core/Animatable;Ljava/lang/Object;Landroidx/compose/animation/core/AnimationSpec;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object;
HSPLandroidx/compose/animation/core/Animatable;->animateTo(Ljava/lang/Object;Landroidx/compose/animation/core/AnimationSpec;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
HSPLandroidx/compose/animation/core/Animatable;->asState()Landroidx/compose/runtime/State;
HPLandroidx/compose/animation/core/Animatable;->clampToBounds(Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroidx/compose/animation/core/Animatable;->endAnimation()V
HSPLandroidx/compose/animation/core/Animatable;->getInternalState$animation_core_release()Landroidx/compose/animation/core/AnimationState;
HSPLandroidx/compose/animation/core/Animatable;->getTargetValue()Ljava/lang/Object;
HSPLandroidx/compose/animation/core/Animatable;->getTypeConverter()Landroidx/compose/animation/core/TwoWayConverter;
HPLandroidx/compose/animation/core/Animatable;->getValue()Ljava/lang/Object;
HSPLandroidx/compose/animation/core/Animatable;->getVelocity()Ljava/lang/Object;
HSPLandroidx/compose/animation/core/Animatable;->getVelocityVector()Landroidx/compose/animation/core/AnimationVector;
HSPLandroidx/compose/animation/core/Animatable;->isRunning()Z
HSPLandroidx/compose/animation/core/Animatable;->runAnimation(Landroidx/compose/animation/core/Animation;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
HSPLandroidx/compose/animation/core/Animatable;->setRunning(Z)V
HSPLandroidx/compose/animation/core/Animatable;->setTargetValue(Ljava/lang/Object;)V
HSPLandroidx/compose/animation/core/Animatable;->snapTo(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
Landroidx/compose/animation/core/Animatable$runAnimation$2;
HSPLandroidx/compose/animation/core/Animatable$runAnimation$2;-><init>(Landroidx/compose/animation/core/Animatable;Ljava/lang/Object;Landroidx/compose/animation/core/Animation;JLkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V
HSPLandroidx/compose/animation/core/Animatable$runAnimation$2;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
HSPLandroidx/compose/animation/core/Animatable$runAnimation$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroidx/compose/animation/core/Animatable$runAnimation$2;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
HSPLandroidx/compose/animation/core/Animatable$runAnimation$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/core/Animatable$runAnimation$2$1;
HSPLandroidx/compose/animation/core/Animatable$runAnimation$2$1;-><init>(Landroidx/compose/animation/core/Animatable;Landroidx/compose/animation/core/AnimationState;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/internal/Ref$BooleanRef;)V
HPLandroidx/compose/animation/core/Animatable$runAnimation$2$1;->invoke(Landroidx/compose/animation/core/AnimationScope;)V
HSPLandroidx/compose/animation/core/Animatable$runAnimation$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/core/Animatable$snapTo$2;
HSPLandroidx/compose/animation/core/Animatable$snapTo$2;-><init>(Landroidx/compose/animation/core/Animatable;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)V
HSPLandroidx/compose/animation/core/Animatable$snapTo$2;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
HSPLandroidx/compose/animation/core/Animatable$snapTo$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroidx/compose/animation/core/Animatable$snapTo$2;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
HSPLandroidx/compose/animation/core/Animatable$snapTo$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/core/AnimatableKt;
HSPLandroidx/compose/animation/core/AnimatableKt;-><clinit>()V
HSPLandroidx/compose/animation/core/AnimatableKt;->Animatable$default(FFILjava/lang/Object;)Landroidx/compose/animation/core/Animatable;
HPLandroidx/compose/animation/core/AnimatableKt;->Animatable(FF)Landroidx/compose/animation/core/Animatable;
HSPLandroidx/compose/animation/core/AnimatableKt;->access$getNegativeInfinityBounds1D$p()Landroidx/compose/animation/core/AnimationVector1D;
HSPLandroidx/compose/animation/core/AnimatableKt;->access$getNegativeInfinityBounds2D$p()Landroidx/compose/animation/core/AnimationVector2D;
HSPLandroidx/compose/animation/core/AnimatableKt;->access$getNegativeInfinityBounds4D$p()Landroidx/compose/animation/core/AnimationVector4D;
HSPLandroidx/compose/animation/core/AnimatableKt;->access$getPositiveInfinityBounds1D$p()Landroidx/compose/animation/core/AnimationVector1D;
HSPLandroidx/compose/animation/core/AnimatableKt;->access$getPositiveInfinityBounds2D$p()Landroidx/compose/animation/core/AnimationVector2D;
HSPLandroidx/compose/animation/core/AnimatableKt;->access$getPositiveInfinityBounds4D$p()Landroidx/compose/animation/core/AnimationVector4D;
Landroidx/compose/animation/core/AnimateAsStateKt;
HSPLandroidx/compose/animation/core/AnimateAsStateKt;-><clinit>()V
PLandroidx/compose/animation/core/AnimateAsStateKt;->access$animateValueAsState$lambda$4(Landroidx/compose/runtime/State;)Lkotlin/jvm/functions/Function1;
PLandroidx/compose/animation/core/AnimateAsStateKt;->access$animateValueAsState$lambda$6(Landroidx/compose/runtime/State;)Landroidx/compose/animation/core/AnimationSpec;
HPLandroidx/compose/animation/core/AnimateAsStateKt;->animateFloatAsState(FLandroidx/compose/animation/core/AnimationSpec;FLjava/lang/String;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)Landroidx/compose/runtime/State;
PLandroidx/compose/animation/core/AnimateAsStateKt;->animateValueAsState$lambda$4(Landroidx/compose/runtime/State;)Lkotlin/jvm/functions/Function1;
PLandroidx/compose/animation/core/AnimateAsStateKt;->animateValueAsState$lambda$6(Landroidx/compose/runtime/State;)Landroidx/compose/animation/core/AnimationSpec;
HPLandroidx/compose/animation/core/AnimateAsStateKt;->animateValueAsState(Ljava/lang/Object;Landroidx/compose/animation/core/TwoWayConverter;Landroidx/compose/animation/core/AnimationSpec;Ljava/lang/Object;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)Landroidx/compose/runtime/State;
Landroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$2;
HPLandroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$2;-><init>(Lkotlinx/coroutines/channels/Channel;Ljava/lang/Object;)V
HSPLandroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$2;->invoke()Ljava/lang/Object;
HSPLandroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$2;->invoke()V
Landroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$3;
HPLandroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$3;-><init>(Lkotlinx/coroutines/channels/Channel;Landroidx/compose/animation/core/Animatable;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Lkotlin/coroutines/Continuation;)V
HSPLandroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$3;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
HPLandroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$3$1;
HPLandroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$3$1;-><init>(Ljava/lang/Object;Landroidx/compose/animation/core/Animatable;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Lkotlin/coroutines/Continuation;)V
HPLandroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$3$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
HPLandroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$3$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
Landroidx/compose/animation/core/Animation;
HPLandroidx/compose/animation/core/Animation;->isFinishedFromNanos(J)Z
PLandroidx/compose/animation/core/AnimationEndReason;->$values()[Landroidx/compose/animation/core/AnimationEndReason;
PLandroidx/compose/animation/core/AnimationEndReason;-><clinit>()V
PLandroidx/compose/animation/core/AnimationEndReason;-><init>(Ljava/lang/String;I)V
Landroidx/compose/animation/core/AnimationKt;
HSPLandroidx/compose/animation/core/AnimationKt;->TargetBasedAnimation(Landroidx/compose/animation/core/AnimationSpec;Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Landroidx/compose/animation/core/TargetBasedAnimation;
PLandroidx/compose/animation/core/AnimationResult;-><clinit>()V
PLandroidx/compose/animation/core/AnimationResult;-><init>(Landroidx/compose/animation/core/AnimationState;Landroidx/compose/animation/core/AnimationEndReason;)V
Landroidx/compose/animation/core/AnimationScope;
HSPLandroidx/compose/animation/core/AnimationScope;-><clinit>()V
HSPLandroidx/compose/animation/core/AnimationScope;-><init>(Ljava/lang/Object;Landroidx/compose/animation/core/TwoWayConverter;Landroidx/compose/animation/core/AnimationVector;JLjava/lang/Object;JZLkotlin/jvm/functions/Function0;)V
HSPLandroidx/compose/animation/core/AnimationScope;->getFinishedTimeNanos()J
HSPLandroidx/compose/animation/core/AnimationScope;->getLastFrameTimeNanos()J
HSPLandroidx/compose/animation/core/AnimationScope;->getStartTimeNanos()J
HPLandroidx/compose/animation/core/AnimationScope;->getValue()Ljava/lang/Object;
HSPLandroidx/compose/animation/core/AnimationScope;->getVelocityVector()Landroidx/compose/animation/core/AnimationVector;
HPLandroidx/compose/animation/core/AnimationScope;->isRunning()Z
PLandroidx/compose/animation/core/AnimationScope;->setFinishedTimeNanos$animation_core_release(J)V
HSPLandroidx/compose/animation/core/AnimationScope;->setLastFrameTimeNanos$animation_core_release(J)V
PLandroidx/compose/animation/core/AnimationScope;->setRunning$animation_core_release(Z)V
HSPLandroidx/compose/animation/core/AnimationScope;->setValue$animation_core_release(Ljava/lang/Object;)V
HSPLandroidx/compose/animation/core/AnimationScope;->setVelocityVector$animation_core_release(Landroidx/compose/animation/core/AnimationVector;)V
Landroidx/compose/animation/core/AnimationSpec;
Landroidx/compose/animation/core/AnimationSpecKt;
HSPLandroidx/compose/animation/core/AnimationSpecKt;->access$convert(Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;)Landroidx/compose/animation/core/AnimationVector;
HSPLandroidx/compose/animation/core/AnimationSpecKt;->convert(Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;)Landroidx/compose/animation/core/AnimationVector;
PLandroidx/compose/animation/core/AnimationSpecKt;->infiniteRepeatable-9IiC70o$default(Landroidx/compose/animation/core/DurationBasedAnimationSpec;Landroidx/compose/animation/core/RepeatMode;JILjava/lang/Object;)Landroidx/compose/animation/core/InfiniteRepeatableSpec;
PLandroidx/compose/animation/core/AnimationSpecKt;->infiniteRepeatable-9IiC70o(Landroidx/compose/animation/core/DurationBasedAnimationSpec;Landroidx/compose/animation/core/RepeatMode;J)Landroidx/compose/animation/core/InfiniteRepeatableSpec;
PLandroidx/compose/animation/core/AnimationSpecKt;->keyframes(Lkotlin/jvm/functions/Function1;)Landroidx/compose/animation/core/KeyframesSpec;
HSPLandroidx/compose/animation/core/AnimationSpecKt;->spring$default(FFLjava/lang/Object;ILjava/lang/Object;)Landroidx/compose/animation/core/SpringSpec;
HPLandroidx/compose/animation/core/AnimationSpecKt;->spring(FFLjava/lang/Object;)Landroidx/compose/animation/core/SpringSpec;
HSPLandroidx/compose/animation/core/AnimationSpecKt;->tween$default(IILandroidx/compose/animation/core/Easing;ILjava/lang/Object;)Landroidx/compose/animation/core/TweenSpec;
HSPLandroidx/compose/animation/core/AnimationSpecKt;->tween(IILandroidx/compose/animation/core/Easing;)Landroidx/compose/animation/core/TweenSpec;
Landroidx/compose/animation/core/AnimationState;
HSPLandroidx/compose/animation/core/AnimationState;-><clinit>()V
HPLandroidx/compose/animation/core/AnimationState;-><init>(Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;Landroidx/compose/animation/core/AnimationVector;JJZ)V
HSPLandroidx/compose/animation/core/AnimationState;-><init>(Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;Landroidx/compose/animation/core/AnimationVector;JJZILkotlin/jvm/internal/DefaultConstructorMarker;)V
PLandroidx/compose/animation/core/AnimationState;->getFinishedTimeNanos()J
HSPLandroidx/compose/animation/core/AnimationState;->getLastFrameTimeNanos()J
HSPLandroidx/compose/animation/core/AnimationState;->getTypeConverter()Landroidx/compose/animation/core/TwoWayConverter;
HPLandroidx/compose/animation/core/AnimationState;->getValue()Ljava/lang/Object;
PLandroidx/compose/animation/core/AnimationState;->getVelocity()Ljava/lang/Object;
HSPLandroidx/compose/animation/core/AnimationState;->getVelocityVector()Landroidx/compose/animation/core/AnimationVector;
HSPLandroidx/compose/animation/core/AnimationState;->isRunning()Z
HSPLandroidx/compose/animation/core/AnimationState;->setFinishedTimeNanos$animation_core_release(J)V
HSPLandroidx/compose/animation/core/AnimationState;->setLastFrameTimeNanos$animation_core_release(J)V
HSPLandroidx/compose/animation/core/AnimationState;->setRunning$animation_core_release(Z)V
HSPLandroidx/compose/animation/core/AnimationState;->setValue$animation_core_release(Ljava/lang/Object;)V
HSPLandroidx/compose/animation/core/AnimationState;->setVelocityVector$animation_core_release(Landroidx/compose/animation/core/AnimationVector;)V
Landroidx/compose/animation/core/AnimationStateKt;
PLandroidx/compose/animation/core/AnimationStateKt;->AnimationState$default(FFJJZILjava/lang/Object;)Landroidx/compose/animation/core/AnimationState;
HSPLandroidx/compose/animation/core/AnimationStateKt;->AnimationState$default(Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;Ljava/lang/Object;JJZILjava/lang/Object;)Landroidx/compose/animation/core/AnimationState;
PLandroidx/compose/animation/core/AnimationStateKt;->AnimationState(FFJJZ)Landroidx/compose/animation/core/AnimationState;
HSPLandroidx/compose/animation/core/AnimationStateKt;->AnimationState(Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;Ljava/lang/Object;JJZ)Landroidx/compose/animation/core/AnimationState;
PLandroidx/compose/animation/core/AnimationStateKt;->copy$default(Landroidx/compose/animation/core/AnimationState;FFJJZILjava/lang/Object;)Landroidx/compose/animation/core/AnimationState;
HSPLandroidx/compose/animation/core/AnimationStateKt;->copy$default(Landroidx/compose/animation/core/AnimationState;Ljava/lang/Object;Landroidx/compose/animation/core/AnimationVector;JJZILjava/lang/Object;)Landroidx/compose/animation/core/AnimationState;
PLandroidx/compose/animation/core/AnimationStateKt;->copy(Landroidx/compose/animation/core/AnimationState;FFJJZ)Landroidx/compose/animation/core/AnimationState;
HSPLandroidx/compose/animation/core/AnimationStateKt;->copy(Landroidx/compose/animation/core/AnimationState;Ljava/lang/Object;Landroidx/compose/animation/core/AnimationVector;JJZ)Landroidx/compose/animation/core/AnimationState;
HPLandroidx/compose/animation/core/AnimationStateKt;->createZeroVectorFrom(Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;)Landroidx/compose/animation/core/AnimationVector;
Landroidx/compose/animation/core/AnimationVector;
HSPLandroidx/compose/animation/core/AnimationVector;-><clinit>()V
HPLandroidx/compose/animation/core/AnimationVector;-><init>()V
HPLandroidx/compose/animation/core/AnimationVector;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
Landroidx/compose/animation/core/AnimationVector1D;
HSPLandroidx/compose/animation/core/AnimationVector1D;-><clinit>()V
HPLandroidx/compose/animation/core/AnimationVector1D;-><init>(F)V
HPLandroidx/compose/animation/core/AnimationVector1D;->get$animation_core_release(I)F
HPLandroidx/compose/animation/core/AnimationVector1D;->getSize$animation_core_release()I
HPLandroidx/compose/animation/core/AnimationVector1D;->getValue()F
HSPLandroidx/compose/animation/core/AnimationVector1D;->newVector$animation_core_release()Landroidx/compose/animation/core/AnimationVector1D;
HSPLandroidx/compose/animation/core/AnimationVector1D;->newVector$animation_core_release()Landroidx/compose/animation/core/AnimationVector;
HSPLandroidx/compose/animation/core/AnimationVector1D;->reset$animation_core_release()V
HPLandroidx/compose/animation/core/AnimationVector1D;->set$animation_core_release(IF)V
Landroidx/compose/animation/core/AnimationVector2D;
HSPLandroidx/compose/animation/core/AnimationVector2D;-><clinit>()V
HSPLandroidx/compose/animation/core/AnimationVector2D;-><init>(FF)V
HSPLandroidx/compose/animation/core/AnimationVector2D;->equals(Ljava/lang/Object;)Z
HPLandroidx/compose/animation/core/AnimationVector2D;->get$animation_core_release(I)F
HPLandroidx/compose/animation/core/AnimationVector2D;->getSize$animation_core_release()I
HSPLandroidx/compose/animation/core/AnimationVector2D;->getV1()F
HPLandroidx/compose/animation/core/AnimationVector2D;->getV2()F
HSPLandroidx/compose/animation/core/AnimationVector2D;->newVector$animation_core_release()Landroidx/compose/animation/core/AnimationVector2D;
HSPLandroidx/compose/animation/core/AnimationVector2D;->newVector$animation_core_release()Landroidx/compose/animation/core/AnimationVector;
HSPLandroidx/compose/animation/core/AnimationVector2D;->reset$animation_core_release()V
HPLandroidx/compose/animation/core/AnimationVector2D;->set$animation_core_release(IF)V
Landroidx/compose/animation/core/AnimationVector3D;
HSPLandroidx/compose/animation/core/AnimationVector3D;-><clinit>()V
HSPLandroidx/compose/animation/core/AnimationVector3D;-><init>(FFF)V
Landroidx/compose/animation/core/AnimationVector4D;
HSPLandroidx/compose/animation/core/AnimationVector4D;-><clinit>()V
HSPLandroidx/compose/animation/core/AnimationVector4D;-><init>(FFFF)V
PLandroidx/compose/animation/core/AnimationVector4D;->equals(Ljava/lang/Object;)Z
PLandroidx/compose/animation/core/AnimationVector4D;->get$animation_core_release(I)F
PLandroidx/compose/animation/core/AnimationVector4D;->getSize$animation_core_release()I
PLandroidx/compose/animation/core/AnimationVector4D;->getV1()F
PLandroidx/compose/animation/core/AnimationVector4D;->getV2()F
PLandroidx/compose/animation/core/AnimationVector4D;->getV3()F
PLandroidx/compose/animation/core/AnimationVector4D;->getV4()F
PLandroidx/compose/animation/core/AnimationVector4D;->newVector$animation_core_release()Landroidx/compose/animation/core/AnimationVector4D;
PLandroidx/compose/animation/core/AnimationVector4D;->newVector$animation_core_release()Landroidx/compose/animation/core/AnimationVector;
HSPLandroidx/compose/animation/core/AnimationVector4D;->reset$animation_core_release()V
PLandroidx/compose/animation/core/AnimationVector4D;->set$animation_core_release(IF)V
Landroidx/compose/animation/core/AnimationVectorsKt;
HSPLandroidx/compose/animation/core/AnimationVectorsKt;->AnimationVector(F)Landroidx/compose/animation/core/AnimationVector1D;
HSPLandroidx/compose/animation/core/AnimationVectorsKt;->AnimationVector(FF)Landroidx/compose/animation/core/AnimationVector2D;
HSPLandroidx/compose/animation/core/AnimationVectorsKt;->AnimationVector(FFF)Landroidx/compose/animation/core/AnimationVector3D;
HSPLandroidx/compose/animation/core/AnimationVectorsKt;->AnimationVector(FFFF)Landroidx/compose/animation/core/AnimationVector4D;
HPLandroidx/compose/animation/core/AnimationVectorsKt;->copy(Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector;
HPLandroidx/compose/animation/core/AnimationVectorsKt;->copyFrom(Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)V
HPLandroidx/compose/animation/core/AnimationVectorsKt;->newInstance(Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector;
Landroidx/compose/animation/core/Animations;
Landroidx/compose/animation/core/ComplexDouble;
HSPLandroidx/compose/animation/core/ComplexDouble;-><clinit>()V
HSPLandroidx/compose/animation/core/ComplexDouble;-><init>(DD)V
HSPLandroidx/compose/animation/core/ComplexDouble;->access$get_imaginary$p(Landroidx/compose/animation/core/ComplexDouble;)D
HSPLandroidx/compose/animation/core/ComplexDouble;->access$get_real$p(Landroidx/compose/animation/core/Compl
Download .txt
gitextract_kj3p27ku/

├── .editorconfig
├── .gitattributes
├── .github/
│   ├── scripts/
│   │   └── mac-disk-cleanup.sh
│   └── workflows/
│       ├── baseline-profile.yml
│       ├── build.yml
│       ├── gradle-wrapper.yaml
│       └── todo.yml
├── .gitignore
├── .idea/
│   ├── checkstyle-idea.xml
│   ├── codeStyles/
│   │   ├── Project.xml
│   │   └── codeStyleConfig.xml
│   ├── copyright/
│   │   ├── Chris_Banes_Apache_v2.xml
│   │   ├── Google_Apache_v2_0.xml
│   │   └── profiles_settings.xml
│   ├── dictionaries/
│   │   ├── chris.xml
│   │   └── chrisbanes.xml
│   ├── encodings.xml
│   ├── inspectionProfiles/
│   │   ├── ktlint.xml
│   │   └── profiles_settings.xml
│   ├── kotlinc.xml
│   └── vcs.xml
├── .ruby-version
├── .swiftlint.yml
├── .xcode-version
├── Gemfile
├── LICENSE
├── README.md
├── android-app/
│   ├── app/
│   │   ├── benchmark-rules.pro
│   │   ├── build.gradle.kts
│   │   ├── proguard-rules-chucker.pro
│   │   ├── proguard-rules.pro
│   │   └── src/
│   │       ├── androidTest/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               ├── screenshots/
│   │       │               │   └── Screenshots.kt
│   │       │               └── test/
│   │       │                   └── smoke/
│   │       │                       └── SmokeTest.kt
│   │       ├── debug/
│   │       │   ├── AndroidManifest.xml
│   │       │   └── res/
│   │       │       └── values/
│   │       │           ├── colors.xml
│   │       │           └── strings.xml
│   │       ├── main/
│   │       │   ├── AndroidManifest.xml
│   │       │   ├── generated/
│   │       │   │   └── baselineProfiles/
│   │       │   │       ├── baseline-prof.txt
│   │       │   │       └── startup-prof.txt
│   │       │   ├── kotlin/
│   │       │   │   └── app/
│   │       │   │       └── tivi/
│   │       │   │           ├── TiviActivity.kt
│   │       │   │           ├── TiviApplication.kt
│   │       │   │           └── home/
│   │       │   │               └── MainActivity.kt
│   │       │   └── res/
│   │       │       ├── drawable-anydpi-v26/
│   │       │       │   ├── ic_launcher_background.xml
│   │       │       │   └── ic_launcher_foreground.xml
│   │       │       ├── mipmap-anydpi-v26/
│   │       │       │   └── ic_launcher.xml
│   │       │       ├── values/
│   │       │       │   ├── colors.xml
│   │       │       │   ├── strings.xml
│   │       │       │   ├── sys_ui.xml
│   │       │       │   └── themes.xml
│   │       │       ├── values-night/
│   │       │       │   ├── colors.xml
│   │       │       │   ├── sys_ui.xml
│   │       │       │   └── themes.xml
│   │       │       ├── values-notnight-v27/
│   │       │       │   └── sys_ui.xml
│   │       │       ├── values-v29/
│   │       │       │   └── themes.xml
│   │       │       └── xml/
│   │       │           ├── backup_rules.xml
│   │       │           └── data_extraction_rules.xml
│   │       └── qa/
│   │           └── res/
│   │               └── values/
│   │                   └── leak_canary.xml
│   ├── benchmark/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       └── main/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── benchmark/
│   │                           ├── BaselineProfileGenerator.kt
│   │                           ├── StartupBenchmark.kt
│   │                           └── Utils.kt
│   └── common-test/
│       ├── build.gradle.kts
│       └── src/
│           └── main/
│               └── kotlin/
│                   └── app/
│                       └── tivi/
│                           └── app/
│                               └── test/
│                                   └── AppScenarios.kt
├── api/
│   ├── tmdb/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       ├── commonMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── tmdb/
│   │       │                   ├── TmdbComponent.kt
│   │       │                   ├── TmdbImageSizes.kt
│   │       │                   ├── TmdbImageUrlProvider.kt
│   │       │                   ├── TmdbInitializer.kt
│   │       │                   ├── TmdbManager.kt
│   │       │                   └── TmdbOAuthInfo.kt
│   │       ├── iosMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── tmdb/
│   │       │                   └── TmdbPlatformComponent.kt
│   │       └── jvmMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── tmdb/
│   │                           └── TmdbPlatformComponent.kt
│   └── trakt/
│       ├── build.gradle.kts
│       └── src/
│           ├── commonMain/
│           │   └── kotlin/
│           │       └── app/
│           │           └── tivi/
│           │               └── trakt/
│           │                   ├── Anticipated.kt
│           │                   ├── TiviTrakt.kt
│           │                   └── TraktComponent.kt
│           ├── iosMain/
│           │   └── kotlin/
│           │       └── app/
│           │           └── tivi/
│           │               └── trakt/
│           │                   └── TraktPlatformComponent.kt
│           └── jvmMain/
│               └── kotlin/
│                   └── app/
│                       └── tivi/
│                           └── trakt/
│                               └── TraktPlatformComponent.kt
├── art/
│   ├── theme-baseline.sketch
│   └── tivi-art.sketch
├── build.gradle.kts
├── common/
│   ├── imageloading/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       ├── androidMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── common/
│   │       │                   └── imageloading/
│   │       │                       └── ImageLoadingPlatformComponent.kt
│   │       ├── commonMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── common/
│   │       │                   └── imageloading/
│   │       │                       ├── EpisodeImageModelInterceptor.kt
│   │       │                       ├── HideArtworkInterceptor.kt
│   │       │                       ├── ImageLoader.kt
│   │       │                       ├── ImageLoaderCleanupInitializer.kt
│   │       │                       ├── ImageLoadingComponent.kt
│   │       │                       ├── SeasonImageModelInterceptor.kt
│   │       │                       ├── ShowImageModelInterceptor.kt
│   │       │                       └── TmdbImageEntityCoilInterceptor.kt
│   │       ├── iosMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── common/
│   │       │                   └── imageloading/
│   │       │                       └── ImageLoadingPlatformComponent.kt
│   │       └── jvmMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── common/
│   │                           └── imageloading/
│   │                               └── ImageLoadingPlatformComponent.kt
│   └── ui/
│       ├── circuit/
│       │   ├── build.gradle.kts
│       │   ├── lint-baseline.xml
│       │   └── src/
│       │       └── commonMain/
│       │           └── kotlin/
│       │               └── app/
│       │                   └── tivi/
│       │                       ├── EventSink.kt
│       │                       ├── navigation/
│       │                       │   ├── DeepLinker.kt
│       │                       │   └── LocalNavigator.kt
│       │                       └── overlays/
│       │                           ├── BottomSheetOverlay.kt
│       │                           └── DialogOverlay.kt
│       ├── compose/
│       │   ├── build.gradle.kts
│       │   ├── lint-baseline.xml
│       │   └── src/
│       │       ├── androidMain/
│       │       │   └── kotlin/
│       │       │       └── app/
│       │       │           └── tivi/
│       │       │               └── common/
│       │       │                   └── compose/
│       │       │                       ├── Coil.kt
│       │       │                       ├── ColorExtractor.android.kt
│       │       │                       ├── ReportDrawnWhen.kt
│       │       │                       ├── theme/
│       │       │                       │   └── Platform.kt
│       │       │                       └── ui/
│       │       │                           └── Icon.android.kt
│       │       ├── commonMain/
│       │       │   └── kotlin/
│       │       │       └── app/
│       │       │           └── tivi/
│       │       │               └── common/
│       │       │                   └── compose/
│       │       │                       ├── ColorExtractor.kt
│       │       │                       ├── EntryGrid.kt
│       │       │                       ├── HazeScaffold.kt
│       │       │                       ├── Layout.kt
│       │       │                       ├── LazyList.kt
│       │       │                       ├── LazyPagingExtensions.kt
│       │       │                       ├── LogCompositions.kt
│       │       │                       ├── Modifier.kt
│       │       │                       ├── NestedScaffold.kt
│       │       │                       ├── ReportDrawnWhen.kt
│       │       │                       ├── RetainedCoroutineScope.kt
│       │       │                       ├── TiviCompositionLocals.kt
│       │       │                       ├── TiviPreferenceExtensions.kt
│       │       │                       ├── UiMessage.kt
│       │       │                       ├── WindowSizeClass.kt
│       │       │                       ├── theme/
│       │       │                       │   ├── Color.kt
│       │       │                       │   ├── Platform.kt
│       │       │                       │   ├── Shape.kt
│       │       │                       │   ├── Theme.kt
│       │       │                       │   └── Type.kt
│       │       │                       └── ui/
│       │       │                           ├── AppBar.kt
│       │       │                           ├── AutoSizedCircularProgressIndicator.kt
│       │       │                           ├── Backdrop.kt
│       │       │                           ├── BackdropCard.kt
│       │       │                           ├── Clickable.kt
│       │       │                           ├── DateTimeDialogs.kt
│       │       │                           ├── DateTimeTextFields.kt
│       │       │                           ├── Empty.kt
│       │       │                           ├── ExpandingSummary.kt
│       │       │                           ├── GradientScrim.kt
│       │       │                           ├── Icon.kt
│       │       │                           ├── IconButtonScrim.kt
│       │       │                           ├── Image.kt
│       │       │                           ├── LoadingButton.kt
│       │       │                           ├── PaddingValues.kt
│       │       │                           ├── Position.kt
│       │       │                           ├── PosterCard.kt
│       │       │                           ├── Preference.kt
│       │       │                           ├── RefreshButton.kt
│       │       │                           ├── SearchTextField.kt
│       │       │                           ├── SortChip.kt
│       │       │                           ├── SortMenuPopup.kt
│       │       │                           ├── Surface.kt
│       │       │                           ├── UserProfileButton.kt
│       │       │                           └── WindowInsets.kt
│       │       ├── iosMain/
│       │       │   └── kotlin/
│       │       │       └── app/
│       │       │           └── tivi/
│       │       │               └── common/
│       │       │                   └── compose/
│       │       │                       ├── Coil.kt
│       │       │                       ├── ColorExtractor.ios.kt
│       │       │                       ├── ReportDrawnWhen.kt
│       │       │                       ├── theme/
│       │       │                       │   └── Platform.kt
│       │       │                       └── ui/
│       │       │                           ├── DateTimeDialogs.kt
│       │       │                           ├── Icon.ios.kt
│       │       │                           └── Sheets.kt
│       │       ├── jvmCommon/
│       │       │   └── kotlin/
│       │       │       └── app/
│       │       │           └── tivi/
│       │       │               └── common/
│       │       │                   └── compose/
│       │       │                       └── ui/
│       │       │                           └── DateTimeDialogs.kt
│       │       └── jvmMain/
│       │           └── kotlin/
│       │               └── app/
│       │                   └── tivi/
│       │                       └── common/
│       │                           └── compose/
│       │                               ├── Coil.kt
│       │                               ├── ColorExtractor.jvm.kt
│       │                               ├── ReportDrawnWhen.kt
│       │                               ├── theme/
│       │                               │   └── Platform.kt
│       │                               └── ui/
│       │                                   └── Icon.jvm.kt
│       ├── resources/
│       │   ├── build.gradle.kts
│       │   └── src/
│       │       ├── androidMain/
│       │       │   └── kotlin/
│       │       │       └── app/
│       │       │           └── tivi/
│       │       │               └── util/
│       │       │                   ├── String.kt
│       │       │                   ├── TiviDateFormatter.kt
│       │       │                   └── TiviTextCreator.kt
│       │       ├── commonMain/
│       │       │   ├── composeResources/
│       │       │   │   └── values/
│       │       │   │       └── strings.xml
│       │       │   └── kotlin/
│       │       │       └── app/
│       │       │           └── tivi/
│       │       │               ├── common/
│       │       │               │   └── ui/
│       │       │               │       └── resources/
│       │       │               │           ├── Fonts.kt
│       │       │               │           └── Resources.kt
│       │       │               └── util/
│       │       │                   ├── GenreStringer.kt
│       │       │                   ├── String.kt
│       │       │                   ├── TiviDateFormatter.kt
│       │       │                   └── TiviTextCreator.kt
│       │       ├── iosMain/
│       │       │   └── kotlin/
│       │       │       └── app/
│       │       │           └── tivi/
│       │       │               └── util/
│       │       │                   ├── String.kt
│       │       │                   ├── TiviDateFormatter.kt
│       │       │                   └── TiviTextCreator.kt
│       │       └── jvmMain/
│       │           └── kotlin/
│       │               └── app/
│       │                   └── tivi/
│       │                       └── util/
│       │                           ├── String.kt
│       │                           ├── TiviDateFormatter.kt
│       │                           └── TiviTextCreator.kt
│       └── screens/
│           ├── build.gradle.kts
│           └── src/
│               └── commonMain/
│                   └── kotlin/
│                       └── app/
│                           └── tivi/
│                               └── screens/
│                                   ├── Parcelize.kt
│                                   └── Screens.kt
├── compose-stability.conf
├── core/
│   ├── analytics/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       ├── androidMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── core/
│   │       │                   └── analytics/
│   │       │                       ├── AnalyticsPlatformComponent.kt
│   │       │                       └── TiviFirebaseAnalytics.kt
│   │       ├── commonMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── core/
│   │       │                   └── analytics/
│   │       │                       ├── Analytics.kt
│   │       │                       ├── AnalyticsComponent.kt
│   │       │                       └── AnalyticsInitializer.kt
│   │       ├── iosMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── core/
│   │       │                   └── analytics/
│   │       │                       └── AnalyticsPlatformComponent.kt
│   │       └── jvmMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── core/
│   │                           └── analytics/
│   │                               └── AnalyticsPlatformComponent.kt
│   ├── base/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       └── commonMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       ├── animations/
│   │                       │   └── Lerp.kt
│   │                       ├── app/
│   │                       │   └── ApplicationInfo.kt
│   │                       ├── appinitializers/
│   │                       │   └── AppInitializer.kt
│   │                       ├── base/
│   │                       │   └── InvokeStatus.kt
│   │                       ├── extensions/
│   │                       │   └── Lazy.kt
│   │                       ├── inject/
│   │                       │   └── Scopes.kt
│   │                       └── util/
│   │                           ├── AppCoroutineDispatchers.kt
│   │                           ├── Collections.kt
│   │                           ├── CoroutineContext.kt
│   │                           └── Result.kt
│   ├── logging/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       ├── androidMain/
│   │       │   ├── AndroidManifest.xml
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── util/
│   │       │                   ├── AndroidSetCrashReportingEnabledAction.kt
│   │       │                   ├── CrashlyticsAndroidInitializer.kt
│   │       │                   └── LoggerPlatformComponent.kt
│   │       ├── commonMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── util/
│   │       │                   ├── CrashReportingInitializer.kt
│   │       │                   ├── KermitInitializer.kt
│   │       │                   ├── LoggerComponent.kt
│   │       │                   ├── RecordingLoggerWriter.kt
│   │       │                   └── SetCrashReportingEnabledAction.kt
│   │       ├── iosMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── util/
│   │       │                   ├── CrashlyticsIosInitializer.kt
│   │       │                   └── LoggerPlatformComponent.kt
│   │       ├── jvmMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── util/
│   │       │                   └── LoggerPlatformComponent.kt
│   │       └── mobileMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── util/
│   │                           └── CrashlyticsLoggerWriter.kt
│   ├── notifications/
│   │   ├── core/
│   │   │   ├── build.gradle.kts
│   │   │   └── src/
│   │   │       ├── androidMain/
│   │   │       │   ├── AndroidManifest.xml
│   │   │       │   ├── kotlin/
│   │   │       │   │   └── app/
│   │   │       │   │       └── tivi/
│   │   │       │   │           └── core/
│   │   │       │   │               └── notifications/
│   │   │       │   │                   ├── AndroidNotificationManager.kt
│   │   │       │   │                   ├── NotificationPlatformComponent.kt
│   │   │       │   │                   ├── PendingNotificationStore.kt
│   │   │       │   │                   └── PostNotificationBroadcastReceiver.kt
│   │   │       │   └── res/
│   │   │       │       └── drawable/
│   │   │       │           └── outline_tv_gen_24.xml
│   │   │       ├── commonMain/
│   │   │       │   └── kotlin/
│   │   │       │       └── app/
│   │   │       │           └── tivi/
│   │   │       │               └── core/
│   │   │       │                   └── notifications/
│   │   │       │                       ├── NotificationManager.kt
│   │   │       │                       └── NotificationsComponent.kt
│   │   │       ├── iosMain/
│   │   │       │   └── kotlin/
│   │   │       │       └── app/
│   │   │       │           └── tivi/
│   │   │       │               └── core/
│   │   │       │                   └── notifications/
│   │   │       │                       ├── IosNotificationManager.kt
│   │   │       │                       └── NotificationPlatformComponent.kt
│   │   │       └── jvmMain/
│   │   │           └── kotlin/
│   │   │               └── app/
│   │   │                   └── tivi/
│   │   │                       └── core/
│   │   │                           └── notifications/
│   │   │                               ├── EmptyNotificationManager.kt
│   │   │                               └── NotificationPlatformComponent.kt
│   │   └── protos/
│   │       ├── build.gradle.kts
│   │       └── src/
│   │           └── commonMain/
│   │               └── proto/
│   │                   └── pending.proto
│   ├── performance/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       ├── androidMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── core/
│   │       │                   └── perf/
│   │       │                       ├── AndroidTracer.kt
│   │       │                       └── PerformanceComponent.kt
│   │       ├── commonMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── core/
│   │       │                   └── perf/
│   │       │                       ├── PerformanceComponent.kt
│   │       │                       └── Tracer.kt
│   │       ├── iosMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── core/
│   │       │                   └── perf/
│   │       │                       └── PerformanceComponent.kt
│   │       └── jvmMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── core/
│   │                           └── perf/
│   │                               └── PerformanceComponent.kt
│   ├── permissions/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       ├── androidMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── core/
│   │       │                   └── permissions/
│   │       │                       ├── PermissionsController.android.kt
│   │       │                       └── PermissionsPlatformComponent.kt
│   │       ├── commonMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── core/
│   │       │                   └── permissions/
│   │       │                       ├── PermissionsComponent.kt
│   │       │                       └── PermissionsController.common.kt
│   │       ├── iosMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── core/
│   │       │                   └── permissions/
│   │       │                       └── PermissionsPlatformComponent.kt
│   │       ├── jvmMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── core/
│   │       │                   └── permissions/
│   │       │                       └── PermissionsPlatformComponent.kt
│   │       └── mokoImplMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── core/
│   │                           └── permissions/
│   │                               └── PermissionsController.ios.kt
│   ├── powercontroller/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       ├── androidMain/
│   │       │   ├── AndroidManifest.xml
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── util/
│   │       │                   ├── AndroidPowerController.kt
│   │       │                   └── PowerControllerComponent.kt
│   │       ├── commonMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── util/
│   │       │                   ├── PowerController.kt
│   │       │                   └── PowerControllerComponent.kt
│   │       ├── iosMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── util/
│   │       │                   └── PowerControllerComponent.kt
│   │       └── jvmMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── util/
│   │                           └── PowerControllerComponent.kt
│   └── preferences/
│       ├── build.gradle.kts
│       └── src/
│           ├── androidMain/
│           │   └── kotlin/
│           │       └── app/
│           │           └── tivi/
│           │               └── settings/
│           │                   └── PreferencesComponent.kt
│           ├── commonMain/
│           │   └── kotlin/
│           │       └── app/
│           │           └── tivi/
│           │               └── settings/
│           │                   ├── Preference.kt
│           │                   ├── PreferencesComponent.kt
│           │                   ├── TiviPreferences.kt
│           │                   └── TiviPreferencesImpl.kt
│           ├── iosMain/
│           │   └── kotlin/
│           │       └── app/
│           │           └── tivi/
│           │               └── settings/
│           │                   └── PreferencesPlatformComponent.kt
│           └── jvmMain/
│               └── kotlin/
│                   └── app/
│                       └── tivi/
│                           └── settings/
│                               └── PreferencesPlatformComponent.kt
├── data/
│   ├── anticipatedshows/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       └── commonMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── data/
│   │                           └── anticipatedshows/
│   │                               ├── AnticipatedShowsBinds.kt
│   │                               ├── AnticipatedShowsDataSource.kt
│   │                               ├── AnticipatedShowsLastRequestStore.kt
│   │                               ├── AnticipatedShowsStore.kt
│   │                               └── TraktAnticipatedShowsDataSource.kt
│   ├── db/
│   │   ├── build.gradle.kts
│   │   ├── room-schemas/
│   │   │   ├── 1.json
│   │   │   ├── 10.json
│   │   │   ├── 11.json
│   │   │   ├── 12.json
│   │   │   ├── 13.json
│   │   │   ├── 14.json
│   │   │   ├── 15.json
│   │   │   ├── 16.json
│   │   │   ├── 17.json
│   │   │   ├── 18.json
│   │   │   ├── 19.json
│   │   │   ├── 2.json
│   │   │   ├── 20.json
│   │   │   ├── 21.json
│   │   │   ├── 22.json
│   │   │   ├── 23.json
│   │   │   ├── 24.json
│   │   │   ├── 25.json
│   │   │   ├── 26.json
│   │   │   ├── 27.json
│   │   │   ├── 28.json
│   │   │   ├── 29.json
│   │   │   ├── 3.json
│   │   │   ├── 30.json
│   │   │   ├── 31.json
│   │   │   ├── 32.json
│   │   │   ├── 4.json
│   │   │   ├── 5.json
│   │   │   ├── 6.json
│   │   │   ├── 7.json
│   │   │   ├── 8.json
│   │   │   └── 9.json
│   │   └── src/
│   │       └── commonMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── data/
│   │                           ├── daos/
│   │                           │   ├── AnticipatedShowsDao.kt
│   │                           │   ├── EntityDao.kt
│   │                           │   ├── EntryDao.kt
│   │                           │   ├── EpisodeWatchEntryDao.kt
│   │                           │   ├── EpisodesDao.kt
│   │                           │   ├── FollowedShowsDao.kt
│   │                           │   ├── LastRequestDao.kt
│   │                           │   ├── LibraryShowsDao.kt
│   │                           │   ├── PaginatedEntryDao.kt
│   │                           │   ├── PairEntryDao.kt
│   │                           │   ├── PopularDao.kt
│   │                           │   ├── RecommendedDao.kt
│   │                           │   ├── RelatedShowsDao.kt
│   │                           │   ├── SeasonsDao.kt
│   │                           │   ├── ShowFtsDao.kt
│   │                           │   ├── ShowTmdbImagesDao.kt
│   │                           │   ├── TiviShowDao.kt
│   │                           │   ├── TrendingDao.kt
│   │                           │   ├── UserDao.kt
│   │                           │   └── WatchedShowDao.kt
│   │                           └── db/
│   │                               └── DatabaseTransactionRunner.kt
│   ├── db-sqldelight/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       ├── androidMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── data/
│   │       │                   └── SqlDelightDatabasePlatformComponent.kt
│   │       ├── commonMain/
│   │       │   ├── kotlin/
│   │       │   │   └── app/
│   │       │   │       └── tivi/
│   │       │   │           └── data/
│   │       │   │               ├── DatabaseFactory.kt
│   │       │   │               ├── SqlDelightDatabaseComponent.kt
│   │       │   │               ├── SqlDelightTransactionRunner.kt
│   │       │   │               ├── Utils.kt
│   │       │   │               ├── columnadaptors/
│   │       │   │               │   ├── DayOfWeekColumnAdapter.kt
│   │       │   │               │   ├── ImageTypeColumnAdapter.kt
│   │       │   │               │   ├── InstantLongColumnAdapter.kt
│   │       │   │               │   ├── InstantStringColumnAdapter.kt
│   │       │   │               │   ├── LocalDateColumnAdapter.kt
│   │       │   │               │   ├── LocalDateTimeColumnAdapter.kt
│   │       │   │               │   ├── LocalTimeColumnAdapter.kt
│   │       │   │               │   ├── PendingActionColumnAdapter.kt
│   │       │   │               │   ├── RequestColumnAdapter.kt
│   │       │   │               │   ├── ShowStatusColumnAdapter.kt
│   │       │   │               │   └── TimeZoneColumnAdapter.kt
│   │       │   │               ├── daos/
│   │       │   │               │   ├── SqlDelightAnticipatedShowsDao.kt
│   │       │   │               │   ├── SqlDelightEntityDao.kt
│   │       │   │               │   ├── SqlDelightEpisodeWatchEntryDao.kt
│   │       │   │               │   ├── SqlDelightEpisodesDao.kt
│   │       │   │               │   ├── SqlDelightFollowedShowsDao.kt
│   │       │   │               │   ├── SqlDelightLastRequestDao.kt
│   │       │   │               │   ├── SqlDelightLibraryShowsDao.kt
│   │       │   │               │   ├── SqlDelightPopularShowsDao.kt
│   │       │   │               │   ├── SqlDelightRecommendedShowsDao.kt
│   │       │   │               │   ├── SqlDelightRelatedShowsDao.kt
│   │       │   │               │   ├── SqlDelightSeasonsDao.kt
│   │       │   │               │   ├── SqlDelightShowImagesDao.kt
│   │       │   │               │   ├── SqlDelightTiviShowDao.kt
│   │       │   │               │   ├── SqlDelightTrendingShowsDao.kt
│   │       │   │               │   ├── SqlDelightUserDao.kt
│   │       │   │               │   └── SqlDelightWatchedShowsDao.kt
│   │       │   │               └── paging/
│   │       │   │                   ├── KeyedQueryPagingSource.kt
│   │       │   │                   ├── OffsetQueryPagingSource.kt
│   │       │   │                   └── QueryPagingSource.kt
│   │       │   └── sqldelight/
│   │       │       ├── app/
│   │       │       │   └── tivi/
│   │       │       │       └── data/
│   │       │       │           ├── anticipated_shows.sq
│   │       │       │           ├── episode_watch_entries.sq
│   │       │       │           ├── episodes.sq
│   │       │       │           ├── last_requests.sq
│   │       │       │           ├── library_shows.sq
│   │       │       │           ├── myshows_entries.sq
│   │       │       │           ├── popular_shows.sq
│   │       │       │           ├── recommended_entries.sq
│   │       │       │           ├── related_shows.sq
│   │       │       │           ├── seasons.sq
│   │       │       │           ├── show.sq
│   │       │       │           ├── show_images.sq
│   │       │       │           ├── shows_last_watched.sq
│   │       │       │           ├── shows_next_to_watch.sq
│   │       │       │           ├── shows_view_watch_stats.sq
│   │       │       │           ├── trending_shows.sq
│   │       │       │           ├── upnext_shows.sq
│   │       │       │           ├── users.sq
│   │       │       │           └── watched_entries.sq
│   │       │       └── migrations/
│   │       │           ├── 29.sqm
│   │       │           ├── 30.sqm
│   │       │           ├── 31.sqm
│   │       │           ├── 32.sqm
│   │       │           ├── 33.sqm
│   │       │           └── 34.sqm
│   │       ├── iosMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── data/
│   │       │                   └── SqlDelightDatabasePlatformComponent.kt
│   │       └── jvmMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── data/
│   │                           └── SqlDelightDatabasePlatformComponent.kt
│   ├── episodes/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       └── commonMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── data/
│   │                           └── episodes/
│   │                               ├── EpisodeBinds.kt
│   │                               ├── EpisodeLastRequestStore.kt
│   │                               ├── EpisodeWatchLastRequestStore.kt
│   │                               ├── EpisodeWatchStore.kt
│   │                               ├── SeasonLastRequestStore.kt
│   │                               ├── SeasonsEpisodesRepository.kt
│   │                               ├── ShowSeasonsLastRequestStore.kt
│   │                               └── datasource/
│   │                                   ├── EpisodeDataSource.kt
│   │                                   ├── EpisodeWatchesDataSource.kt
│   │                                   └── SeasonsEpisodesDataSource.kt
│   ├── followedshows/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       └── commonMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── data/
│   │                           └── followedshows/
│   │                               ├── FollowedShowsBinds.kt
│   │                               ├── FollowedShowsDataSource.kt
│   │                               ├── FollowedShowsLastRequestStore.kt
│   │                               ├── FollowedShowsRepository.kt
│   │                               └── TraktFollowedShowsDataSource.kt
│   ├── legacy/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       └── commonMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── data/
│   │                           ├── lastrequests/
│   │                           │   ├── EntityLastRequestStore.kt
│   │                           │   └── GroupLastRequestStore.kt
│   │                           ├── mappers/
│   │                           │   ├── EpisodeIdToTraktIdMapper.kt
│   │                           │   ├── Mapper.kt
│   │                           │   ├── Mappers.kt
│   │                           │   ├── SeasonIdToTraktIdMapper.kt
│   │                           │   ├── ShowIdToTmdbIdMapper.kt
│   │                           │   ├── ShowIdToTraktIdMapper.kt
│   │                           │   ├── ShowIdToTraktOrImdbIdMapper.kt
│   │                           │   ├── TmdbEpisodeDetailToEpisode.kt
│   │                           │   ├── TmdbEpisodeToEpisode.kt
│   │                           │   ├── TmdbSeasonDetailToSeason.kt
│   │                           │   ├── TmdbSeasonToSeason.kt
│   │                           │   ├── TmdbSeasonToSeasonWithEpisodes.kt
│   │                           │   ├── TmdbShowDetailToShowImages.kt
│   │                           │   ├── TmdbShowDetailToTiviShow.kt
│   │                           │   ├── TmdbShowPageResultToTiviShows.kt
│   │                           │   ├── TmdbShowToTiviShow.kt
│   │                           │   ├── TraktBaseShowToWatchedShowEntry.kt
│   │                           │   ├── TraktEpisodeToEpisode.kt
│   │                           │   ├── TraktHistoryEntryToEpisode.kt
│   │                           │   ├── TraktHistoryItemToEpisodeWatchEntry.kt
│   │                           │   ├── TraktListItemToFollowedShowEntry.kt
│   │                           │   ├── TraktListItemToTiviShow.kt
│   │                           │   ├── TraktSeasonToSeason.kt
│   │                           │   ├── TraktSeasonToSeasonWithEpisodes.kt
│   │                           │   ├── TraktShowToTiviShow.kt
│   │                           │   ├── TraktStatusToShowStatus.kt
│   │                           │   ├── TraktTrendingShowToTiviShow.kt
│   │                           │   ├── TraktTrendingShowToTrendingShowEntry.kt
│   │                           │   └── UserToTraktUser.kt
│   │                           └── util/
│   │                               ├── ItemSyncer.kt
│   │                               └── StoreExtensions.kt
│   ├── licenses/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       ├── androidMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── data/
│   │       │                   └── licenses/
│   │       │                       ├── LicenseDataPlatformComponent.kt
│   │       │                       └── fetcher/
│   │       │                           └── AndroidLicensesFetcherImpl.kt
│   │       ├── commonMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── data/
│   │       │                   └── licenses/
│   │       │                       ├── LicenseDataComponent.kt
│   │       │                       ├── LicensesState.kt
│   │       │                       ├── fetcher/
│   │       │                       │   └── LicensesFetcher.kt
│   │       │                       └── store/
│   │       │                           ├── LicensesStore.kt
│   │       │                           └── LicensesStoreImpl.kt
│   │       ├── iosMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── data/
│   │       │                   └── licenses/
│   │       │                       ├── LicenseDataPlatformComponent.kt
│   │       │                       └── fetcher/
│   │       │                           └── IosLicensesFetcherImpl.kt
│   │       └── jvmMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── data/
│   │                           └── licenses/
│   │                               ├── LicenseDataPlatformComponent.kt
│   │                               └── fetcher/
│   │                                   └── JvmLicensesFetcherImpl.kt
│   ├── models/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       └── commonMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── data/
│   │                           ├── compoundmodels/
│   │                           │   ├── EntryWithShow.kt
│   │                           │   ├── EpisodeWithSeason.kt
│   │                           │   ├── EpisodeWithWatches.kt
│   │                           │   ├── LibraryShow.kt
│   │                           │   ├── SeasonWithEpisodes.kt
│   │                           │   ├── SeasonWithEpisodesAndWatches.kt
│   │                           │   ├── SeasonWithShow.kt
│   │                           │   ├── ShowSeasonEpisode.kt
│   │                           │   └── UpNextEntry.kt
│   │                           ├── imagemodels/
│   │                           │   ├── EpisodeImageModel.kt
│   │                           │   ├── ImageModel.kt
│   │                           │   ├── SeasonImageModel.kt
│   │                           │   └── ShowImageModel.kt
│   │                           ├── models/
│   │                           │   ├── ActionDate.kt
│   │                           │   ├── AnticipatedShowEntry.kt
│   │                           │   ├── Entry.kt
│   │                           │   ├── Episode.kt
│   │                           │   ├── EpisodeWatchEntry.kt
│   │                           │   ├── FollowedShowEntry.kt
│   │                           │   ├── Genre.kt
│   │                           │   ├── LastRequest.kt
│   │                           │   ├── Notification.kt
│   │                           │   ├── PendingAction.kt
│   │                           │   ├── PopularShowEntry.kt
│   │                           │   ├── RecommendedShowEntry.kt
│   │                           │   ├── RelatedShowEntry.kt
│   │                           │   ├── Request.kt
│   │                           │   ├── Season.kt
│   │                           │   ├── ShowImages.kt
│   │                           │   ├── ShowStatus.kt
│   │                           │   ├── ShowTmdbImage.kt
│   │                           │   ├── SortOption.kt
│   │                           │   ├── TiviEntity.kt
│   │                           │   ├── TiviShow.kt
│   │                           │   ├── TraktUser.kt
│   │                           │   ├── TrendingShowEntry.kt
│   │                           │   └── WatchedShowEntry.kt
│   │                           ├── util/
│   │                           │   ├── DateTimeUtils.kt
│   │                           │   ├── ImageEntityUtils.kt
│   │                           │   └── MergeShowUtils.kt
│   │                           └── views/
│   │                               ├── ShowsNextToWatch.kt
│   │                               └── ShowsWatchStats.kt
│   ├── popularshows/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       └── commonMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── data/
│   │                           └── popularshows/
│   │                               ├── PopularShowsBinds.kt
│   │                               ├── PopularShowsDataSource.kt
│   │                               ├── PopularShowsLastRequestStore.kt
│   │                               ├── PopularShowsStore.kt
│   │                               └── TraktPopularShowsDataSource.kt
│   ├── recommendedshows/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       └── commonMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── data/
│   │                           └── recommendedshows/
│   │                               ├── RecommendedShowsBinds.kt
│   │                               ├── RecommendedShowsDataSource.kt
│   │                               ├── RecommendedShowsLastRequestStore.kt
│   │                               ├── RecommendedShowsStore.kt
│   │                               └── TraktRecommendedShowsDataSource.kt
│   ├── relatedshows/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       └── commonMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── data/
│   │                           └── relatedshows/
│   │                               ├── RelatedShowsBinds.kt
│   │                               ├── RelatedShowsDataSource.kt
│   │                               ├── RelatedShowsLastRequestStore.kt
│   │                               ├── RelatedShowsStore.kt
│   │                               ├── TmdbRelatedShowsDataSourceImpl.kt
│   │                               └── TraktRelatedShowsDataSourceImpl.kt
│   ├── search/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       └── commonMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── data/
│   │                           └── search/
│   │                               ├── SearchBinds.kt
│   │                               ├── SearchDataSource.kt
│   │                               ├── SearchRepository.kt
│   │                               └── TmdbSearchDataSource.kt
│   ├── showimages/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       └── commonMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── data/
│   │                           └── showimages/
│   │                               ├── ShowImagesBinds.kt
│   │                               ├── ShowImagesDataSource.kt
│   │                               ├── ShowImagesLastRequestStore.kt
│   │                               ├── ShowImagesStore.kt
│   │                               └── TmdbShowImagesDataSource.kt
│   ├── shows/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       └── commonMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── data/
│   │                           └── shows/
│   │                               ├── ShowDataSource.kt
│   │                               ├── ShowLastRequestStore.kt
│   │                               ├── ShowStore.kt
│   │                               ├── ShowsBinds.kt
│   │                               ├── TmdbShowDataSourceImpl.kt
│   │                               └── TraktShowDataSourceImpl.kt
│   ├── test/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       ├── androidUnitTest/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── data/
│   │       │                   └── DatabaseTest.kt
│   │       ├── commonTest/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               ├── data/
│   │       │               │   ├── DatabaseTest.kt
│   │       │               │   ├── dao/
│   │       │               │   │   ├── EpisodeWatchEntryTest.kt
│   │       │               │   │   ├── EpisodesTest.kt
│   │       │               │   │   └── SeasonsTest.kt
│   │       │               │   └── repositories/
│   │       │               │       ├── FollowedShowRepositoryTest.kt
│   │       │               │       └── SeasonsEpisodesRepositoryTest.kt
│   │       │               └── utils/
│   │       │                   ├── AuthorizedAuthStore.kt
│   │       │                   ├── Dispatchers.kt
│   │       │                   ├── FakeEpisodeDataSource.kt
│   │       │                   ├── FakeEpisodeWatchesDataSource.kt
│   │       │                   ├── FakeFollowedShowsDataSource.kt
│   │       │                   ├── FakeSeasonsEpisodesDataSource.kt
│   │       │                   ├── Fakes.kt
│   │       │                   ├── ObjectGraph.kt
│   │       │                   ├── SampleData.kt
│   │       │                   └── TestTransactionRunner.kt
│   │       ├── jvmTest/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── data/
│   │       │                   └── DatabaseTest.kt
│   │       └── nativeTest/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── data/
│   │                           └── DatabaseTest.kt
│   ├── traktauth/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       ├── androidMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── data/
│   │       │                   └── traktauth/
│   │       │                       ├── AndroidTraktLoginAction.kt
│   │       │                       ├── AndroidTraktRefreshTokenAction.kt
│   │       │                       ├── AppAuthAuthStateWrapper.kt
│   │       │                       ├── LoginTraktActivityResultContract.kt
│   │       │                       ├── TraktAuthComponent.kt
│   │       │                       ├── TraktAuthInitializer.kt
│   │       │                       └── store/
│   │       │                           ├── BlockStoreAuthStore.kt
│   │       │                           ├── PreferencesAuthStore.kt
│   │       │                           └── TiviAuthStore.kt
│   │       ├── commonMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── data/
│   │       │                   └── traktauth/
│   │       │                       ├── AuthState.kt
│   │       │                       ├── TraktAuthComponent.kt
│   │       │                       ├── TraktAuthRepository.kt
│   │       │                       ├── TraktAuthState.kt
│   │       │                       ├── TraktLoginAction.kt
│   │       │                       ├── TraktOAuthInfo.kt
│   │       │                       ├── TraktRefreshTokenAction.kt
│   │       │                       └── store/
│   │       │                           └── AuthStore.kt
│   │       ├── iosMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── data/
│   │       │                   └── traktauth/
│   │       │                       ├── IosAuthStore.kt
│   │       │                       └── TraktAuthComponent.kt
│   │       └── jvmMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── data/
│   │                           └── traktauth/
│   │                               ├── DesktopAuthStore.kt
│   │                               ├── DesktopTraktLoginAction.kt
│   │                               ├── DesktopTraktRefreshTokenAction.kt
│   │                               └── TraktAuthComponent.kt
│   ├── traktusers/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       └── commonMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── data/
│   │                           └── traktusers/
│   │                               ├── TraktUsersBinds.kt
│   │                               ├── TraktUsersDataSource.kt
│   │                               ├── TraktUsersLastRequestStore.kt
│   │                               ├── TraktUsersRepository.kt
│   │                               └── UsersDataSource.kt
│   ├── trendingshows/
│   │   ├── build.gradle.kts
│   │   └── src/
│   │       └── commonMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── data/
│   │                           └── trendingshows/
│   │                               ├── TraktTrendingShowsDataSource.kt
│   │                               ├── TrendingShowsBinds.kt
│   │                               ├── TrendingShowsDataSource.kt
│   │                               ├── TrendingShowsLastRequestStore.kt
│   │                               └── TrendingShowsStore.kt
│   └── watchedshows/
│       ├── build.gradle.kts
│       └── src/
│           └── commonMain/
│               └── kotlin/
│                   └── app/
│                       └── tivi/
│                           └── data/
│                               └── watchedshows/
│                                   ├── TraktWatchedShowsDataSource.kt
│                                   ├── WatchedShowsBinds.kt
│                                   ├── WatchedShowsDataSource.kt
│                                   ├── WatchedShowsLastRequestStore.kt
│                                   └── WatchedShowsStore.kt
├── desktop-app/
│   ├── build.gradle.kts
│   └── src/
│       └── jvmMain/
│           └── kotlin/
│               └── app/
│                   └── tivi/
│                       └── Main.kt
├── docs/
│   ├── _config.yml
│   └── privacypolicy.md
├── domain/
│   ├── build.gradle.kts
│   └── src/
│       └── commonMain/
│           └── kotlin/
│               └── app/
│                   └── tivi/
│                       └── domain/
│                           ├── Interactor.kt
│                           ├── PaginatedEntryRemoteMediator.kt
│                           ├── RefreshOnlyRemoteMediator.kt
│                           ├── interactors/
│                           │   ├── AddEpisodeWatch.kt
│                           │   ├── ChangeSeasonFollowStatus.kt
│                           │   ├── ChangeSeasonWatchedStatus.kt
│                           │   ├── ChangeShowFollowStatus.kt
│                           │   ├── ClearUserDetails.kt
│                           │   ├── FetchLicensesList.kt
│                           │   ├── GetTraktAuthState.kt
│                           │   ├── LoginTrakt.kt
│                           │   ├── LogoutTrakt.kt
│                           │   ├── RefreshTraktTokens.kt
│                           │   ├── RemoveEpisodeWatch.kt
│                           │   ├── RemoveEpisodeWatches.kt
│                           │   ├── ScheduleDebugEpisodeNotification.kt
│                           │   ├── ScheduleEpisodeNotifications.kt
│                           │   ├── SearchShows.kt
│                           │   ├── UpdateAnticipatedShows.kt
│                           │   ├── UpdateEpisodeDetails.kt
│                           │   ├── UpdateLibraryShows.kt
│                           │   ├── UpdatePopularShows.kt
│                           │   ├── UpdateRecommendedShows.kt
│                           │   ├── UpdateRelatedShows.kt
│                           │   ├── UpdateShowDetails.kt
│                           │   ├── UpdateShowImages.kt
│                           │   ├── UpdateShowSeasons.kt
│                           │   ├── UpdateTmdbConfig.kt
│                           │   ├── UpdateTrendingShows.kt
│                           │   ├── UpdateUpNextEpisodes.kt
│                           │   └── UpdateUserDetails.kt
│                           └── observers/
│                               ├── ObserveAnticipatedShows.kt
│                               ├── ObserveEpisodeDetails.kt
│                               ├── ObserveEpisodeWatches.kt
│                               ├── ObserveNextShowEpisodesToWatch.kt
│                               ├── ObservePagedAnticipatedShows.kt
│                               ├── ObservePagedLibraryShows.kt
│                               ├── ObservePagedPopularShows.kt
│                               ├── ObservePagedRecommendedShows.kt
│                               ├── ObservePagedTrendingShows.kt
│                               ├── ObservePagedUpNextShows.kt
│                               ├── ObservePopularShows.kt
│                               ├── ObserveRecommendedShows.kt
│                               ├── ObserveRelatedShows.kt
│                               ├── ObserveShowDetails.kt
│                               ├── ObserveShowDetailsForEpisodeId.kt
│                               ├── ObserveShowFollowStatus.kt
│                               ├── ObserveShowImages.kt
│                               ├── ObserveShowNextEpisodeToWatch.kt
│                               ├── ObserveShowSeasonsEpisodesWatches.kt
│                               ├── ObserveShowViewStats.kt
│                               ├── ObserveTraktAuthState.kt
│                               ├── ObserveTrendingShows.kt
│                               └── ObserveUserDetails.kt
├── fastlane/
│   ├── Fastfile
│   ├── Matchfile
│   ├── metadata/
│   │   └── android/
│   │       └── en_US/
│   │           ├── full_description.txt
│   │           ├── short_description.txt
│   │           ├── title.txt
│   │           └── video.txt
│   └── screenshots/
│       └── screenshots.html
├── gradle/
│   ├── build-logic/
│   │   ├── convention/
│   │   │   ├── build.gradle.kts
│   │   │   └── src/
│   │   │       └── main/
│   │   │           └── kotlin/
│   │   │               └── app/
│   │   │                   └── tivi/
│   │   │                       └── gradle/
│   │   │                           ├── Android.kt
│   │   │                           ├── AndroidApplicationConventionPlugin.kt
│   │   │                           ├── AndroidApplicationLicensesHandler.kt
│   │   │                           ├── AndroidLibraryConventionPlugin.kt
│   │   │                           ├── AndroidTestConventionPlugin.kt
│   │   │                           ├── AssetCopyTask.kt
│   │   │                           ├── ComposeMultiplatformConventionPlugin.kt
│   │   │                           ├── IosLicensesHandler.kt
│   │   │                           ├── Java.kt
│   │   │                           ├── Kotlin.kt
│   │   │                           ├── KotlinAndroidConventionPlugin.kt
│   │   │                           ├── KotlinMultiplatformConventionPlugin.kt
│   │   │                           ├── Licensee.kt
│   │   │                           ├── RootConventionPlugin.kt
│   │   │                           ├── Spotless.kt
│   │   │                           ├── VersionCatalog.kt
│   │   │                           └── Versions.kt
│   │   ├── gradle.properties
│   │   └── settings.gradle.kts
│   ├── dependencyGraph.gradle
│   ├── libs.versions.toml
│   └── wrapper/
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── ios-app/
│   └── Tivi/
│       ├── Podfile
│       ├── Settings.bundle/
│       │   └── Root.plist
│       ├── Tivi/
│       │   ├── Assets.xcassets/
│       │   │   ├── AppIcon-QA.appiconset/
│       │   │   │   └── Contents.json
│       │   │   ├── AppIcon.appiconset/
│       │   │   │   └── Contents.json
│       │   │   └── Contents.json
│       │   ├── Auth.swift
│       │   ├── ContentView.swift
│       │   ├── GoogleService-Info.plist
│       │   ├── Info.plist
│       │   ├── Preview Content/
│       │   │   └── Preview Assets.xcassets/
│       │   │       └── Contents.json
│       │   └── TiviApp.swift
│       ├── Tivi.xcodeproj/
│       │   ├── project.pbxproj
│       │   ├── project.xcworkspace/
│       │   │   ├── contents.xcworkspacedata
│       │   │   └── xcshareddata/
│       │   │       ├── IDEWorkspaceChecks.plist
│       │   │       └── swiftpm/
│       │   │           └── Package.resolved
│       │   └── xcshareddata/
│       │       └── xcschemes/
│       │           ├── Tivi Prod (StoreKit).xcscheme
│       │           ├── Tivi Prod.xcscheme
│       │           ├── Tivi QA.xcscheme
│       │           └── UITests.xcscheme
│       ├── Tivi.xcworkspace/
│       │   ├── contents.xcworkspacedata
│       │   └── xcshareddata/
│       │       └── IDEWorkspaceChecks.plist
│       ├── UITests/
│       │   ├── Extensions.swift
│       │   ├── Screenshots.swift
│       │   └── SnapshotHelper.swift
│       └── xcconfig/
│           ├── Project.xcconfig
│           ├── Tivi-Prod-Debug.xcconfig
│           ├── Tivi-Prod-Release.xcconfig
│           ├── Tivi-QA-Debug.xcconfig
│           ├── Tivi-QA-Release.xcconfig
│           ├── UITests.xcconfig
│           └── common/
│               ├── Debug.xcconfig
│               ├── Prod.xcconfig
│               ├── QA.xcconfig
│               └── Release.xcconfig
├── release/
│   ├── GoogleService-Info.plist.gpg
│   ├── app-debug.jks
│   ├── app-release.gpg
│   ├── clean-secrets.sh
│   ├── decrypt-secrets.sh
│   ├── encrypt-secrets.sh
│   ├── google-services.gpg
│   └── play-account.gpg
├── renovate.json
├── room2sqld.py
├── settings.gradle.kts
├── shared/
│   ├── common/
│   │   ├── build.gradle.kts
│   │   ├── lint-baseline.xml
│   │   └── src/
│   │       ├── androidMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── inject/
│   │       │                   ├── SharedActivityComponent.kt
│   │       │                   └── SharedPlatformApplicationComponent.kt
│   │       ├── commonMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               ├── appinitializers/
│   │       │               │   └── AppInitializers.kt
│   │       │               └── inject/
│   │       │                   ├── SharedApplicationComponent.kt
│   │       │                   └── SharedUiComponent.kt
│   │       ├── iosMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── inject/
│   │       │                   └── SharedPlatformApplicationComponent.kt
│   │       └── jvmMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── inject/
│   │                           └── SharedPlatformApplicationComponent.kt
│   ├── prod/
│   │   ├── build.gradle.kts
│   │   ├── lint-baseline.xml
│   │   └── src/
│   │       ├── androidMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── inject/
│   │       │                   ├── AndroidActivityComponent.kt
│   │       │                   └── AndroidApplicationComponent.kt
│   │       ├── commonMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── inject/
│   │       │                   ├── ProdApplicationComponent.kt
│   │       │                   └── ProdUiComponent.kt
│   │       ├── iosMain/
│   │       │   └── kotlin/
│   │       │       └── app/
│   │       │           └── tivi/
│   │       │               └── inject/
│   │       │                   ├── HomeUiControllerComponent.kt
│   │       │                   └── IosApplicationComponent.kt
│   │       └── jvmMain/
│   │           └── kotlin/
│   │               └── app/
│   │                   └── tivi/
│   │                       └── inject/
│   │                           ├── DesktopApplicationComponent.kt
│   │                           └── WindowComponent.kt
│   └── qa/
│       ├── build.gradle.kts
│       ├── lint-baseline.xml
│       └── src/
│           ├── androidMain/
│           │   └── kotlin/
│           │       └── app/
│           │           └── tivi/
│           │               └── inject/
│           │                   ├── AndroidActivityComponent.kt
│           │                   └── AndroidApplicationComponent.kt
│           ├── commonMain/
│           │   └── kotlin/
│           │       └── app/
│           │           └── tivi/
│           │               └── inject/
│           │                   ├── QaApplicationComponent.kt
│           │                   └── QaUiComponent.kt
│           ├── iosMain/
│           │   └── kotlin/
│           │       └── app/
│           │           └── tivi/
│           │               └── inject/
│           │                   ├── HomeUiControllerComponent.kt
│           │                   └── IosApplicationComponent.kt
│           └── jvmMain/
│               └── kotlin/
│                   └── app/
│                       └── tivi/
│                           └── inject/
│                               ├── DesktopApplicationComponent.kt
│                               └── WindowComponent.kt
├── spotless/
│   ├── cb-copyright.txt
│   └── google-copyright.txt
├── tasks/
│   ├── build.gradle.kts
│   └── src/
│       ├── androidMain/
│       │   ├── AndroidManifest.xml
│       │   └── kotlin/
│       │       └── app/
│       │           └── tivi/
│       │               └── tasks/
│       │                   ├── AndroidTasks.kt
│       │                   ├── BootBroadcastReceiver.kt
│       │                   ├── ScheduleEpisodeNotificationsWorker.kt
│       │                   ├── SyncLibraryShowsWorker.kt
│       │                   ├── TasksPlatformComponent.kt
│       │                   └── TiviWorkerFactory.kt
│       ├── commonMain/
│       │   └── kotlin/
│       │       └── app/
│       │           └── tivi/
│       │               └── tasks/
│       │                   ├── Tasks.kt
│       │                   ├── TasksComponent.kt
│       │                   └── TasksInitializer.kt
│       ├── iosMain/
│       │   └── kotlin/
│       │       └── app/
│       │           └── tivi/
│       │               └── tasks/
│       │                   ├── IosTasks.kt
│       │                   └── TasksPlatformComponent.kt
│       └── jvmMain/
│           └── kotlin/
│               └── app/
│                   └── tivi/
│                       └── tasks/
│                           └── TasksPlatformComponent.kt
├── thirdparty/
│   └── androidx/
│       └── paging/
│           └── compose/
│               ├── build.gradle.kts
│               └── src/
│                   ├── androidMain/
│                   │   └── kotlin/
│                   │       └── PagingPlaceholders.android.kt
│                   ├── commonMain/
│                   │   └── kotlin/
│                   │       ├── LazyFoundationExtensions.kt
│                   │       ├── LazyPagingItems.kt
│                   │       └── PagingPlaceholders.kt
│                   ├── iosMain/
│                   │   └── kotlin/
│                   │       └── PagingPlaceholders.ios.kt
│                   └── jvmMain/
│                       └── kotlin/
│                           └── PagingPlaceholders.jvm.kt
└── ui/
    ├── account/
    │   ├── build.gradle.kts
    │   ├── lint-baseline.xml
    │   └── src/
    │       └── commonMain/
    │           └── kotlin/
    │               └── app/
    │                   └── tivi/
    │                       └── account/
    │                           ├── AccountComponent.kt
    │                           ├── AccountPresenter.kt
    │                           ├── AccountUi.kt
    │                           └── AccountUiState.kt
    ├── anticipated/
    │   ├── build.gradle.kts
    │   ├── lint-baseline.xml
    │   └── src/
    │       └── commonMain/
    │           └── kotlin/
    │               └── app/
    │                   └── tivi/
    │                       └── home/
    │                           └── anticipated/
    │                               ├── AnticipatedShows.kt
    │                               ├── AnticipatedShowsComponent.kt
    │                               ├── AnticipatedShowsPresenter.kt
    │                               └── AnticipatedShowsUiState.kt
    ├── developer/
    │   ├── log/
    │   │   ├── build.gradle.kts
    │   │   ├── lint-baseline.xml
    │   │   └── src/
    │   │       └── commonMain/
    │   │           └── kotlin/
    │   │               └── app/
    │   │                   └── tivi/
    │   │                       └── developer/
    │   │                           └── log/
    │   │                               ├── DevLog.kt
    │   │                               ├── DevLogComponent.kt
    │   │                               ├── DevLogPresenter.kt
    │   │                               └── DevLogUiState.kt
    │   ├── notifications/
    │   │   ├── build.gradle.kts
    │   │   ├── lint-baseline.xml
    │   │   └── src/
    │   │       └── commonMain/
    │   │           └── kotlin/
    │   │               └── app/
    │   │                   └── tivi/
    │   │                       └── developer/
    │   │                           └── notifications/
    │   │                               ├── DevNotifications.kt
    │   │                               ├── DevNotificationsComponent.kt
    │   │                               ├── DevNotificationsPresenter.kt
    │   │                               └── DevNotificationsUiState.kt
    │   └── settings/
    │       ├── build.gradle.kts
    │       ├── lint-baseline.xml
    │       └── src/
    │           └── commonMain/
    │               └── kotlin/
    │                   └── app/
    │                       └── tivi/
    │                           └── settings/
    │                               └── developer/
    │                                   ├── DevSettings.kt
    │                                   ├── DevSettingsComponent.kt
    │                                   ├── DevSettingsPresenter.kt
    │                                   └── DevSettingsUiState.kt
    ├── discover/
    │   ├── build.gradle.kts
    │   ├── lint-baseline.xml
    │   └── src/
    │       └── commonMain/
    │           └── kotlin/
    │               └── app/
    │                   └── tivi/
    │                       └── home/
    │                           └── discover/
    │                               ├── Discover.kt
    │                               ├── DiscoverComponent.kt
    │                               ├── DiscoverPresenter.kt
    │                               └── DiscoverUiState.kt
    ├── episode/
    │   ├── details/
    │   │   ├── build.gradle.kts
    │   │   ├── lint-baseline.xml
    │   │   └── src/
    │   │       └── commonMain/
    │   │           └── kotlin/
    │   │               └── app/
    │   │                   └── tivi/
    │   │                       └── episodedetails/
    │   │                           ├── EpisodeDetails.kt
    │   │                           ├── EpisodeDetailsComponent.kt
    │   │                           ├── EpisodeDetailsPresenter.kt
    │   │                           └── EpisodeDetailsUiState.kt
    │   └── track/
    │       ├── build.gradle.kts
    │       ├── lint-baseline.xml
    │       └── src/
    │           └── commonMain/
    │               └── kotlin/
    │                   └── app/
    │                       └── tivi/
    │                           └── episode/
    │                               └── track/
    │                                   ├── EpisodeTrack.kt
    │                                   ├── EpisodeTrackComponent.kt
    │                                   ├── EpisodeTrackPresenter.kt
    │                                   └── EpisodeTrackUiState.kt
    ├── library/
    │   ├── build.gradle.kts
    │   ├── lint-baseline.xml
    │   └── src/
    │       └── commonMain/
    │           └── kotlin/
    │               └── app/
    │                   └── tivi/
    │                       └── home/
    │                           └── library/
    │                               ├── Library.kt
    │                               ├── LibraryComponent.kt
    │                               ├── LibraryPresenter.kt
    │                               └── LibraryUiState.kt
    ├── licenses/
    │   ├── build.gradle.kts
    │   ├── lint-baseline.xml
    │   └── src/
    │       └── commonMain/
    │           └── kotlin/
    │               └── app/
    │                   └── tivi/
    │                       └── settings/
    │                           └── licenses/
    │                               ├── Licenses.kt
    │                               ├── LicensesComponent.kt
    │                               ├── LicensesPresenter.kt
    │                               └── LicensesUiState.kt
    ├── popular/
    │   ├── build.gradle.kts
    │   ├── lint-baseline.xml
    │   └── src/
    │       └── commonMain/
    │           └── kotlin/
    │               └── app/
    │                   └── tivi/
    │                       └── home/
    │                           └── popular/
    │                               ├── PopularShows.kt
    │                               ├── PopularShowsComponent.kt
    │                               ├── PopularShowsPresenter.kt
    │                               └── PopularShowsUiState.kt
    ├── recommended/
    │   ├── build.gradle.kts
    │   ├── lint-baseline.xml
    │   └── src/
    │       └── commonMain/
    │           └── kotlin/
    │               └── app/
    │                   └── tivi/
    │                       └── home/
    │                           └── recommended/
    │                               ├── Recommended.kt
    │                               ├── RecommendedShowsComponent.kt
    │                               ├── RecommendedShowsPresenter.kt
    │                               └── RecommendedShowsUiState.kt
    ├── root/
    │   ├── build.gradle.kts
    │   ├── lint-baseline.xml
    │   └── src/
    │       ├── commonMain/
    │       │   └── kotlin/
    │       │       └── app/
    │       │           └── tivi/
    │       │               └── home/
    │       │                   ├── Home.kt
    │       │                   ├── RootUiComponent.kt
    │       │                   ├── RootViewModel.kt
    │       │                   └── TiviContent.kt
    │       └── iosMain/
    │           └── kotlin/
    │               └── app/
    │                   └── tivi/
    │                       └── home/
    │                           └── TiviUiViewController.kt
    ├── search/
    │   ├── build.gradle.kts
    │   ├── lint-baseline.xml
    │   └── src/
    │       └── commonMain/
    │           └── kotlin/
    │               └── app/
    │                   └── tivi/
    │                       └── home/
    │                           └── search/
    │                               ├── Search.kt
    │                               ├── SearchComponent.kt
    │                               ├── SearchPresenter.kt
    │                               └── SearchUiState.kt
    ├── settings/
    │   ├── build.gradle.kts
    │   ├── lint-baseline.xml
    │   └── src/
    │       ├── androidMain/
    │       │   └── kotlin/
    │       │       └── app/
    │       │           └── tivi/
    │       │               └── settings/
    │       │                   └── Platform.kt
    │       ├── commonMain/
    │       │   └── kotlin/
    │       │       └── app/
    │       │           └── tivi/
    │       │               └── settings/
    │       │                   ├── Platform.kt
    │       │                   ├── Settings.kt
    │       │                   ├── SettingsComponent.kt
    │       │                   ├── SettingsPresenter.kt
    │       │                   └── SettingsUiState.kt
    │       ├── iosMain/
    │       │   └── kotlin/
    │       │       └── app/
    │       │           └── tivi/
    │       │               └── settings/
    │       │                   └── Platform.kt
    │       └── jvmMain/
    │           └── kotlin/
    │               └── app/
    │                   └── tivi/
    │                       └── settings/
    │                           └── Platform.kt
    ├── show/
    │   ├── details/
    │   │   ├── build.gradle.kts
    │   │   ├── lint-baseline.xml
    │   │   └── src/
    │   │       └── commonMain/
    │   │           └── kotlin/
    │   │               └── app/
    │   │                   └── tivi/
    │   │                       └── showdetails/
    │   │                           └── details/
    │   │                               ├── ShowDetails.kt
    │   │                               ├── ShowDetailsComponent.kt
    │   │                               ├── ShowDetailsPresenter.kt
    │   │                               └── ShowDetailsUiState.kt
    │   └── seasons/
    │       ├── build.gradle.kts
    │       ├── lint-baseline.xml
    │       └── src/
    │           └── commonMain/
    │               └── kotlin/
    │                   └── app/
    │                       └── tivi/
    │                           └── showdetails/
    │                               └── seasons/
    │                                   ├── ShowSeasons.kt
    │                                   ├── ShowSeasonsComponent.kt
    │                                   ├── ShowSeasonsPresenter.kt
    │                                   └── ShowSeasonsUiState.kt
    ├── trending/
    │   ├── build.gradle.kts
    │   ├── lint-baseline.xml
    │   └── src/
    │       └── commonMain/
    │           └── kotlin/
    │               └── app/
    │                   └── tivi/
    │                       └── home/
    │                           └── trending/
    │                               ├── Trending.kt
    │                               ├── TrendingShowsComponent.kt
    │                               ├── TrendingShowsPresenter.kt
    │                               └── TrendingShowsUiState.kt
    └── upnext/
        ├── build.gradle.kts
        ├── lint-baseline.xml
        └── src/
            └── commonMain/
                └── kotlin/
                    └── app/
                        └── tivi/
                            └── home/
                                └── upnext/
                                    ├── UpNext.kt
                                    ├── UpNextComponent.kt
                                    ├── UpNextPresenter.kt
                                    └── UpNextUiState.kt
Download .txt
SYMBOL INDEX (1 symbols across 1 files)

FILE: room2sqld.py
  function prettify_sql (line 7) | def prettify_sql(sql):
Copy disabled (too large) Download .json
Condensed preview — 902 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (12,928K chars).
[
  {
    "path": ".editorconfig",
    "chars": 378,
    "preview": "root = true\n\n[*]\ncharset = utf-8\nindent_size = 2\nindent_style = space\ninsert_final_newline = true\ntrim_trailing_whitespa"
  },
  {
    "path": ".gitattributes",
    "chars": 53,
    "preview": "* text=auto eol=lf\n\n*.bat text eol=crlf\n*.jar binary\n"
  },
  {
    "path": ".github/scripts/mac-disk-cleanup.sh",
    "chars": 869,
    "preview": "#!/bin/bash\n\necho \"Disk space before cleanup...\"\ndf -h /\n\necho \"Removing unnecessary files to free up disk space...\"\n# h"
  },
  {
    "path": ".github/workflows/baseline-profile.yml",
    "chars": 3900,
    "preview": "name: Baseline profile generation\n\non:\n  # Every Sunday at 00:43\n  schedule:\n    - cron: '43 0 * * 0'\n  workflow_dispatc"
  },
  {
    "path": ".github/workflows/build.yml",
    "chars": 10226,
    "preview": "name: CI\n\non:\n  push:\n    branches:\n      - main\n    tags:\n      - v*\n  pull_request:\n  workflow_dispatch:\n\nenv:\n  ORG_G"
  },
  {
    "path": ".github/workflows/gradle-wrapper.yaml",
    "chars": 260,
    "preview": "name: gradle-wrapper\n\non:\n  pull_request:\n    paths:\n      - 'gradlew'\n      - 'gradlew.bat'\n      - 'gradle/wrapper/'\n\n"
  },
  {
    "path": ".github/workflows/todo.yml",
    "chars": 237,
    "preview": "name: TODO <> Issues\n\non:\n  push:\n    branches:\n      - main\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n\n    steps:\n    "
  },
  {
    "path": ".gitignore",
    "chars": 2338,
    "preview": "# Gradle\n.gradle\nbuild/\n\n# Kotlin\n.kotlin/\n\ncaptures\n\n/local.properties\n\n# IntelliJ .idea folder\n.idea/workspace.xml\n.id"
  },
  {
    "path": ".idea/checkstyle-idea.xml",
    "chars": 610,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"CheckStyle-IDEA\">\n    <option name=\"conf"
  },
  {
    "path": ".idea/codeStyles/Project.xml",
    "chars": 4332,
    "preview": "<component name=\"ProjectCodeStyleConfiguration\">\n  <code_scheme name=\"Project\" version=\"173\">\n    <JetCodeStyleSettings>"
  },
  {
    "path": ".idea/codeStyles/codeStyleConfig.xml",
    "chars": 142,
    "preview": "<component name=\"ProjectCodeStyleConfiguration\">\n  <state>\n    <option name=\"USE_PER_PROJECT_SETTINGS\" value=\"true\" />\n "
  },
  {
    "path": ".idea/copyright/Chris_Banes_Apache_v2.xml",
    "chars": 372,
    "preview": "<component name=\"CopyrightManager\">\n  <copyright>\n    <option name=\"allowReplaceRegexp\" value=\"Copyright \\d+, Christophe"
  },
  {
    "path": ".idea/copyright/Google_Apache_v2_0.xml",
    "chars": 361,
    "preview": "<component name=\"CopyrightManager\">\n  <copyright>\n    <option name=\"allowReplaceRegexp\" value=\"Google\" />\n    <option na"
  },
  {
    "path": ".idea/copyright/profiles_settings.xml",
    "chars": 216,
    "preview": "<component name=\"CopyrightManager\">\n  <settings default=\"Chris Banes Apache v2\">\n    <LanguageOptions name=\"__TEMPLATE__"
  },
  {
    "path": ".idea/dictionaries/chris.xml",
    "chars": 141,
    "preview": "<component name=\"ProjectDictionaryState\">\n  <dictionary name=\"chris\">\n    <words>\n      <w>spdx</w>\n    </words>\n  </dic"
  },
  {
    "path": ".idea/dictionaries/chrisbanes.xml",
    "chars": 165,
    "preview": "<component name=\"ProjectDictionaryState\">\n  <dictionary name=\"chrisbanes\">\n    <words>\n      <w>tmdb</w>\n      <w>trakt<"
  },
  {
    "path": ".idea/encodings.xml",
    "chars": 159,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"Encoding\">\n    <file url=\"PROJECT\" chars"
  },
  {
    "path": ".idea/inspectionProfiles/ktlint.xml",
    "chars": 146,
    "preview": "<component name=\"InspectionProjectProfileManager\">\n  <profile version=\"1.0\">\n    <option name=\"myName\" value=\"ktlint\" />"
  },
  {
    "path": ".idea/inspectionProfiles/profiles_settings.xml",
    "chars": 171,
    "preview": "<component name=\"InspectionProjectProfileManager\">\n  <settings>\n    <option name=\"PROJECT_PROFILE\" value=\"ktlint\" />\n   "
  },
  {
    "path": ".idea/kotlinc.xml",
    "chars": 176,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"KotlinJpsPluginSettings\">\n    <option na"
  },
  {
    "path": ".idea/vcs.xml",
    "chars": 180,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"VcsDirectoryMappings\">\n    <mapping dire"
  },
  {
    "path": ".ruby-version",
    "chars": 6,
    "preview": "3.3.4\n"
  },
  {
    "path": ".swiftlint.yml",
    "chars": 146,
    "preview": "included:\n  - ios-app/Tivi\n\nexcluded:\n  - ios-app/Tivi/UITests/SnapshotHelper.swift\n  - ios-app/Tivi/Pods\n\nstrict: true\n"
  },
  {
    "path": ".xcode-version",
    "chars": 5,
    "preview": "15.3\n"
  },
  {
    "path": "Gemfile",
    "chars": 90,
    "preview": "source \"https://rubygems.org\"\n\ngem 'cocoapods', '~> 1.15'\ngem 'fastlane'\ngem 'screengrab'\n"
  },
  {
    "path": "LICENSE",
    "chars": 11357,
    "preview": "                                 Apache License\n                           Version 2.0, January 2004\n                   "
  },
  {
    "path": "README.md",
    "chars": 5800,
    "preview": "# Tivi has now deprecated\n\nAfter roughly 9 years of development, I've decided that now (12th November 2024) is the time "
  },
  {
    "path": "android-app/app/benchmark-rules.pro",
    "chars": 68,
    "preview": "-dontobfuscate\n-dontwarn com.google.errorprone.annotations.InlineMe\n"
  },
  {
    "path": "android-app/app/build.gradle.kts",
    "chars": 4230,
    "preview": "// Copyright 2023, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "android-app/app/proguard-rules-chucker.pro",
    "chars": 261,
    "preview": "# Chucker uses GSON and TypeToken:\n# https://r8.googlesource.com/r8/+/refs/heads/main/compatibility-faq.md#gson-with-ful"
  },
  {
    "path": "android-app/app/proguard-rules.pro",
    "chars": 1606,
    "preview": "# This is a configuration file for R8\n\n-verbose\n-allowaccessmodification\n-repackageclasses\n\n# Note that you cannot just "
  },
  {
    "path": "android-app/app/src/androidTest/kotlin/app/tivi/screenshots/Screenshots.kt",
    "chars": 1356,
    "preview": "// Copyright 2024, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "android-app/app/src/androidTest/kotlin/app/tivi/test/smoke/SmokeTest.kt",
    "chars": 1494,
    "preview": "// Copyright 2023, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "android-app/app/src/debug/AndroidManifest.xml",
    "chars": 739,
    "preview": "<!-- Copyright 2024, Christopher Banes and the Tivi project contributors -->\n<!-- SPDX-License-Identifier: Apache-2.0 --"
  },
  {
    "path": "android-app/app/src/debug/res/values/colors.xml",
    "chars": 735,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright 2019 Google LLC\n  ~\n  ~ Licensed under the Apache License, Ver"
  },
  {
    "path": "android-app/app/src/debug/res/values/strings.xml",
    "chars": 691,
    "preview": "<!--\n  ~ Copyright 2018 Google, Inc.\n  ~\n  ~ Licensed under the Apache License, Version 2.0 (the \"License\");\n  ~ you may"
  },
  {
    "path": "android-app/app/src/main/AndroidManifest.xml",
    "chars": 3861,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright 2017 Google LLC.\n  ~\n  ~ Licensed under the Apache License, Ve"
  },
  {
    "path": "android-app/app/src/main/generated/baselineProfiles/baseline-prof.txt",
    "chars": 5153283,
    "preview": "PL_COROUTINE/ArtificialStackFrames;-><init>()V\nPL_COROUTINE/ArtificialStackFrames;->coroutineBoundary()Ljava/lang/StackT"
  },
  {
    "path": "android-app/app/src/main/generated/baselineProfiles/startup-prof.txt",
    "chars": 5153283,
    "preview": "PL_COROUTINE/ArtificialStackFrames;-><init>()V\nPL_COROUTINE/ArtificialStackFrames;->coroutineBoundary()Ljava/lang/StackT"
  },
  {
    "path": "android-app/app/src/main/kotlin/app/tivi/TiviActivity.kt",
    "chars": 877,
    "preview": "// Copyright 2017, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "android-app/app/src/main/kotlin/app/tivi/TiviApplication.kt",
    "chars": 2114,
    "preview": "// Copyright 2017, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "android-app/app/src/main/kotlin/app/tivi/home/MainActivity.kt",
    "chars": 3865,
    "preview": "// Copyright 2017, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "android-app/app/src/main/res/drawable-anydpi-v26/ic_launcher_background.xml",
    "chars": 299,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Copyright 2023, Christopher Banes and the Tivi project contributors -->\n<!--"
  },
  {
    "path": "android-app/app/src/main/res/drawable-anydpi-v26/ic_launcher_foreground.xml",
    "chars": 1888,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Copyright 2023, Christopher Banes and the Tivi project contributors -->\n<!--"
  },
  {
    "path": "android-app/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml",
    "chars": 466,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Copyright 2023, Christopher Banes and the Tivi project contributors -->\n<!--"
  },
  {
    "path": "android-app/app/src/main/res/values/colors.xml",
    "chars": 895,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright 2017 Google, Inc.\n  ~\n  ~ Licensed under the Apache License, V"
  },
  {
    "path": "android-app/app/src/main/res/values/strings.xml",
    "chars": 685,
    "preview": "<!--\n  ~ Copyright 2017 Google, Inc.\n  ~\n  ~ Licensed under the Apache License, Version 2.0 (the \"License\");\n  ~ you may"
  },
  {
    "path": "android-app/app/src/main/res/values/sys_ui.xml",
    "chars": 1075,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright 2019 Google, Inc.\n  ~\n  ~ Licensed under the Apache License, V"
  },
  {
    "path": "android-app/app/src/main/res/values/themes.xml",
    "chars": 2085,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright 2017 Google, Inc.\n  ~\n  ~ Licensed under the Apache License, V"
  },
  {
    "path": "android-app/app/src/main/res/values-night/colors.xml",
    "chars": 830,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright 2018 Google, Inc.\n  ~\n  ~ Licensed under the Apache License, V"
  },
  {
    "path": "android-app/app/src/main/res/values-night/sys_ui.xml",
    "chars": 875,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright 2019 Google, Inc.\n  ~\n  ~ Licensed under the Apache License, V"
  },
  {
    "path": "android-app/app/src/main/res/values-night/themes.xml",
    "chars": 751,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright 2019 Google, Inc.\n  ~\n  ~ Licensed under the Apache License, V"
  },
  {
    "path": "android-app/app/src/main/res/values-notnight-v27/sys_ui.xml",
    "chars": 868,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright 2019 Google, Inc.\n  ~\n  ~ Licensed under the Apache License, V"
  },
  {
    "path": "android-app/app/src/main/res/values-v29/themes.xml",
    "chars": 909,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright 2019 Google, Inc.\n  ~\n  ~ Licensed under the Apache License, V"
  },
  {
    "path": "android-app/app/src/main/res/xml/backup_rules.xml",
    "chars": 258,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<full-backup-content>\n    <include\n        domain=\"sharedpref\"\n        path=\"app."
  },
  {
    "path": "android-app/app/src/main/res/xml/data_extraction_rules.xml",
    "chars": 569,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<data-extraction-rules>\n    <cloud-backup>\n        <include\n            domain=\"s"
  },
  {
    "path": "android-app/app/src/qa/res/values/leak_canary.xml",
    "chars": 745,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright 2022 Google LLC\n  ~\n  ~ Licensed under the Apache License, Ver"
  },
  {
    "path": "android-app/benchmark/build.gradle.kts",
    "chars": 1198,
    "preview": "// Copyright 2023, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "android-app/benchmark/src/main/kotlin/app/tivi/benchmark/BaselineProfileGenerator.kt",
    "chars": 693,
    "preview": "// Copyright 2022, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "android-app/benchmark/src/main/kotlin/app/tivi/benchmark/StartupBenchmark.kt",
    "chars": 861,
    "preview": "// Copyright 2022, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "android-app/benchmark/src/main/kotlin/app/tivi/benchmark/Utils.kt",
    "chars": 419,
    "preview": "// Copyright 2024, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "android-app/common-test/build.gradle.kts",
    "chars": 324,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\n\nplugins "
  },
  {
    "path": "android-app/common-test/src/main/kotlin/app/tivi/app/test/AppScenarios.kt",
    "chars": 4253,
    "preview": "// Copyright 2023, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "api/tmdb/build.gradle.kts",
    "chars": 1095,
    "preview": "// Copyright 2023, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "api/tmdb/src/commonMain/kotlin/app/tivi/tmdb/TmdbComponent.kt",
    "chars": 1073,
    "preview": "// Copyright 2017, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "api/tmdb/src/commonMain/kotlin/app/tivi/tmdb/TmdbImageSizes.kt",
    "chars": 557,
    "preview": "// Copyright 2017, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "api/tmdb/src/commonMain/kotlin/app/tivi/tmdb/TmdbImageUrlProvider.kt",
    "chars": 1845,
    "preview": "// Copyright 2017, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "api/tmdb/src/commonMain/kotlin/app/tivi/tmdb/TmdbInitializer.kt",
    "chars": 583,
    "preview": "// Copyright 2019, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "api/tmdb/src/commonMain/kotlin/app/tivi/tmdb/TmdbManager.kt",
    "chars": 1432,
    "preview": "// Copyright 2017, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "api/tmdb/src/commonMain/kotlin/app/tivi/tmdb/TmdbOAuthInfo.kt",
    "chars": 196,
    "preview": "// Copyright 2023, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "api/tmdb/src/iosMain/kotlin/app/tivi/tmdb/TmdbPlatformComponent.kt",
    "chars": 1470,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "api/tmdb/src/jvmMain/kotlin/app/tivi/tmdb/TmdbPlatformComponent.kt",
    "chars": 1112,
    "preview": "// Copyright 2017, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "api/trakt/build.gradle.kts",
    "chars": 1652,
    "preview": "// Copyright 2023, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "api/trakt/src/commonMain/kotlin/app/tivi/trakt/Anticipated.kt",
    "chars": 949,
    "preview": "// Copyright 2024, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "api/trakt/src/commonMain/kotlin/app/tivi/trakt/TiviTrakt.kt",
    "chars": 4009,
    "preview": "// Copyright 2024, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\n@file:Sup"
  },
  {
    "path": "api/trakt/src/commonMain/kotlin/app/tivi/trakt/TraktComponent.kt",
    "chars": 2369,
    "preview": "// Copyright 2019, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "api/trakt/src/iosMain/kotlin/app/tivi/trakt/TraktPlatformComponent.kt",
    "chars": 933,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "api/trakt/src/jvmMain/kotlin/app/tivi/trakt/TraktPlatformComponent.kt",
    "chars": 1022,
    "preview": "// Copyright 2019, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "build.gradle.kts",
    "chars": 854,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\n\nplugins "
  },
  {
    "path": "common/imageloading/build.gradle.kts",
    "chars": 741,
    "preview": "// Copyright 2023, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "common/imageloading/src/androidMain/kotlin/app/tivi/common/imageloading/ImageLoadingPlatformComponent.kt",
    "chars": 511,
    "preview": "// Copyright 2019, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "common/imageloading/src/commonMain/kotlin/app/tivi/common/imageloading/EpisodeImageModelInterceptor.kt",
    "chars": 1857,
    "preview": "// Copyright 2019, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "common/imageloading/src/commonMain/kotlin/app/tivi/common/imageloading/HideArtworkInterceptor.kt",
    "chars": 1678,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/imageloading/src/commonMain/kotlin/app/tivi/common/imageloading/ImageLoader.kt",
    "chars": 1628,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/imageloading/src/commonMain/kotlin/app/tivi/common/imageloading/ImageLoaderCleanupInitializer.kt",
    "chars": 1212,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/imageloading/src/commonMain/kotlin/app/tivi/common/imageloading/ImageLoadingComponent.kt",
    "chars": 1634,
    "preview": "// Copyright 2019, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "common/imageloading/src/commonMain/kotlin/app/tivi/common/imageloading/SeasonImageModelInterceptor.kt",
    "chars": 1839,
    "preview": "// Copyright 2019, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "common/imageloading/src/commonMain/kotlin/app/tivi/common/imageloading/ShowImageModelInterceptor.kt",
    "chars": 2629,
    "preview": "// Copyright 2019, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/imageloading/src/commonMain/kotlin/app/tivi/common/imageloading/TmdbImageEntityCoilInterceptor.kt",
    "chars": 1494,
    "preview": "// Copyright 2019, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "common/imageloading/src/iosMain/kotlin/app/tivi/common/imageloading/ImageLoadingPlatformComponent.kt",
    "chars": 457,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/imageloading/src/jvmMain/kotlin/app/tivi/common/imageloading/ImageLoadingPlatformComponent.kt",
    "chars": 457,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/circuit/build.gradle.kts",
    "chars": 635,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\n\nplugins "
  },
  {
    "path": "common/ui/circuit/lint-baseline.xml",
    "chars": 188,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<issues format=\"6\" by=\"lint 8.5.1\" type=\"baseline\" client=\"gradle\" dependencies=\""
  },
  {
    "path": "common/ui/circuit/src/commonMain/kotlin/app/tivi/EventSink.kt",
    "chars": 810,
    "preview": "// Copyright 2024, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/circuit/src/commonMain/kotlin/app/tivi/navigation/DeepLinker.kt",
    "chars": 2689,
    "preview": "// Copyright 2024, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/circuit/src/commonMain/kotlin/app/tivi/navigation/LocalNavigator.kt",
    "chars": 438,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/circuit/src/commonMain/kotlin/app/tivi/overlays/BottomSheetOverlay.kt",
    "chars": 3760,
    "preview": "// Copyright (C) 2022 Slack Technologies, LLC\n// SPDX-License-Identifier: Apache-2.0\n\npackage app.tivi.overlays\n\nimport "
  },
  {
    "path": "common/ui/circuit/src/commonMain/kotlin/app/tivi/overlays/DialogOverlay.kt",
    "chars": 2004,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/compose/build.gradle.kts",
    "chars": 1514,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\n\nplugins "
  },
  {
    "path": "common/ui/compose/lint-baseline.xml",
    "chars": 3122,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<issues format=\"6\" by=\"lint 8.0.0-beta02\" type=\"baseline\" client=\"gradle\" depende"
  },
  {
    "path": "common/ui/compose/src/androidMain/kotlin/app/tivi/common/compose/Coil.kt",
    "chars": 454,
    "preview": "// Copyright 2024, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/compose/src/androidMain/kotlin/app/tivi/common/compose/ColorExtractor.android.kt",
    "chars": 394,
    "preview": "// Copyright 2024, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/compose/src/androidMain/kotlin/app/tivi/common/compose/ReportDrawnWhen.kt",
    "chars": 492,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/compose/src/androidMain/kotlin/app/tivi/common/compose/theme/Platform.kt",
    "chars": 866,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/compose/src/androidMain/kotlin/app/tivi/common/compose/ui/Icon.android.kt",
    "chars": 408,
    "preview": "// Copyright 2024, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/ColorExtractor.kt",
    "chars": 3045,
    "preview": "// Copyright 2024, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/EntryGrid.kt",
    "chars": 11161,
    "preview": "// Copyright 2021, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/HazeScaffold.kt",
    "chars": 2933,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/Layout.kt",
    "chars": 1547,
    "preview": "// Copyright 2021, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/LazyList.kt",
    "chars": 2123,
    "preview": "// Copyright 2020, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/LazyPagingExtensions.kt",
    "chars": 1134,
    "preview": "// Copyright 2021, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/LogCompositions.kt",
    "chars": 821,
    "preview": "// Copyright 2024, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/Modifier.kt",
    "chars": 374,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/NestedScaffold.kt",
    "chars": 3993,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/ReportDrawnWhen.kt",
    "chars": 253,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/RetainedCoroutineScope.kt",
    "chars": 946,
    "preview": "// Copyright (C) 2023 Slack Technologies, LLC\n// SPDX-License-Identifier: Apache-2.0\n\npackage app.tivi.common.compose\n\ni"
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/TiviCompositionLocals.kt",
    "chars": 791,
    "preview": "// Copyright 2020, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/TiviPreferenceExtensions.kt",
    "chars": 370,
    "preview": "// Copyright 2020, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/UiMessage.kt",
    "chars": 1102,
    "preview": "// Copyright 2019, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/WindowSizeClass.kt",
    "chars": 381,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/theme/Color.kt",
    "chars": 809,
    "preview": "// Copyright 2020, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/theme/Platform.kt",
    "chars": 367,
    "preview": "// Copyright 2020, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/theme/Shape.kt",
    "chars": 302,
    "preview": "// Copyright 2020, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/theme/Theme.kt",
    "chars": 1251,
    "preview": "// Copyright 2020, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/theme/Type.kt",
    "chars": 1604,
    "preview": "// Copyright 2022, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/ui/AppBar.kt",
    "chars": 1860,
    "preview": "// Copyright 2021, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/ui/AutoSizedCircularProgressIndicator.kt",
    "chars": 1634,
    "preview": "// Copyright 2021, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/ui/Backdrop.kt",
    "chars": 2547,
    "preview": "// Copyright 2022, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/ui/BackdropCard.kt",
    "chars": 2702,
    "preview": "// Copyright 2021, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/ui/Clickable.kt",
    "chars": 788,
    "preview": "// Copyright 2024, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/ui/DateTimeDialogs.kt",
    "chars": 1265,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/ui/DateTimeTextFields.kt",
    "chars": 4987,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/ui/Empty.kt",
    "chars": 1815,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/ui/ExpandingSummary.kt",
    "chars": 1571,
    "preview": "// Copyright 2020, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/ui/GradientScrim.kt",
    "chars": 1510,
    "preview": "// Copyright 2019, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/ui/Icon.kt",
    "chars": 885,
    "preview": "// Copyright 2024, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/ui/IconButtonScrim.kt",
    "chars": 1876,
    "preview": "// Copyright 2021, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/ui/Image.kt",
    "chars": 3574,
    "preview": "// Copyright 2022, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/ui/LoadingButton.kt",
    "chars": 1989,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/ui/PaddingValues.kt",
    "chars": 2528,
    "preview": "// Copyright 2021, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/ui/Position.kt",
    "chars": 1219,
    "preview": "// Copyright 2021, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/ui/PosterCard.kt",
    "chars": 2080,
    "preview": "// Copyright 2021, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/ui/Preference.kt",
    "chars": 3130,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/ui/RefreshButton.kt",
    "chars": 1695,
    "preview": "// Copyright 2021, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/ui/SearchTextField.kt",
    "chars": 2165,
    "preview": "// Copyright 2021, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/ui/SortChip.kt",
    "chars": 2326,
    "preview": "// Copyright 2022, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/ui/SortMenuPopup.kt",
    "chars": 1673,
    "preview": "// Copyright 2021, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/ui/Surface.kt",
    "chars": 1937,
    "preview": "// Copyright 2024, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/ui/UserProfileButton.kt",
    "chars": 1684,
    "preview": "// Copyright 2021, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/ui/WindowInsets.kt",
    "chars": 697,
    "preview": "// Copyright 2022, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/compose/src/iosMain/kotlin/app/tivi/common/compose/Coil.kt",
    "chars": 468,
    "preview": "// Copyright 2024, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/compose/src/iosMain/kotlin/app/tivi/common/compose/ColorExtractor.ios.kt",
    "chars": 276,
    "preview": "// Copyright 2024, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/compose/src/iosMain/kotlin/app/tivi/common/compose/ReportDrawnWhen.kt",
    "chars": 257,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/compose/src/iosMain/kotlin/app/tivi/common/compose/theme/Platform.kt",
    "chars": 426,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/compose/src/iosMain/kotlin/app/tivi/common/compose/ui/DateTimeDialogs.kt",
    "chars": 7859,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/compose/src/iosMain/kotlin/app/tivi/common/compose/ui/Icon.ios.kt",
    "chars": 347,
    "preview": "// Copyright 2024, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/compose/src/iosMain/kotlin/app/tivi/common/compose/ui/Sheets.kt",
    "chars": 1640,
    "preview": "// Copyright 2024, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/compose/src/jvmCommon/kotlin/app/tivi/common/compose/ui/DateTimeDialogs.kt",
    "chars": 4104,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\n@file:Opt"
  },
  {
    "path": "common/ui/compose/src/jvmMain/kotlin/app/tivi/common/compose/Coil.kt",
    "chars": 468,
    "preview": "// Copyright 2024, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/compose/src/jvmMain/kotlin/app/tivi/common/compose/ColorExtractor.jvm.kt",
    "chars": 276,
    "preview": "// Copyright 2024, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/compose/src/jvmMain/kotlin/app/tivi/common/compose/ReportDrawnWhen.kt",
    "chars": 257,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/compose/src/jvmMain/kotlin/app/tivi/common/compose/theme/Platform.kt",
    "chars": 426,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/compose/src/jvmMain/kotlin/app/tivi/common/compose/ui/Icon.jvm.kt",
    "chars": 357,
    "preview": "// Copyright 2024, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/resources/build.gradle.kts",
    "chars": 1090,
    "preview": "// Copyright 2023, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "common/ui/resources/src/androidMain/kotlin/app/tivi/util/String.kt",
    "chars": 199,
    "preview": "// Copyright 2024, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/resources/src/androidMain/kotlin/app/tivi/util/TiviDateFormatter.kt",
    "chars": 4331,
    "preview": "// Copyright 2018, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "common/ui/resources/src/androidMain/kotlin/app/tivi/util/TiviTextCreator.kt",
    "chars": 1334,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/resources/src/commonMain/composeResources/values/strings.xml",
    "chars": 10861,
    "preview": "<!-- Copyright 2024, Christopher Banes and the Tivi project contributors -->\n<!-- SPDX-License-Identifier: Apache-2.0 --"
  },
  {
    "path": "common/ui/resources/src/commonMain/kotlin/app/tivi/common/ui/resources/Fonts.kt",
    "chars": 590,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/resources/src/commonMain/kotlin/app/tivi/common/ui/resources/Resources.kt",
    "chars": 974,
    "preview": "// Copyright 2024, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/resources/src/commonMain/kotlin/app/tivi/util/GenreStringer.kt",
    "chars": 1875,
    "preview": "// Copyright 2017, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "common/ui/resources/src/commonMain/kotlin/app/tivi/util/String.kt",
    "chars": 183,
    "preview": "// Copyright 2024, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/resources/src/commonMain/kotlin/app/tivi/util/TiviDateFormatter.kt",
    "chars": 729,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/resources/src/commonMain/kotlin/app/tivi/util/TiviTextCreator.kt",
    "chars": 4782,
    "preview": "// Copyright 2021, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "common/ui/resources/src/iosMain/kotlin/app/tivi/util/String.kt",
    "chars": 1201,
    "preview": "// Copyright 2024, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/resources/src/iosMain/kotlin/app/tivi/util/TiviDateFormatter.kt",
    "chars": 5202,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/resources/src/iosMain/kotlin/app/tivi/util/TiviTextCreator.kt",
    "chars": 2265,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/resources/src/jvmMain/kotlin/app/tivi/util/String.kt",
    "chars": 199,
    "preview": "// Copyright 2024, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/resources/src/jvmMain/kotlin/app/tivi/util/TiviDateFormatter.kt",
    "chars": 3648,
    "preview": "// Copyright 2018, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "common/ui/resources/src/jvmMain/kotlin/app/tivi/util/TiviTextCreator.kt",
    "chars": 1334,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/screens/build.gradle.kts",
    "chars": 902,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\n\nimport o"
  },
  {
    "path": "common/ui/screens/src/commonMain/kotlin/app/tivi/screens/Parcelize.kt",
    "chars": 235,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "common/ui/screens/src/commonMain/kotlin/app/tivi/screens/Screens.kt",
    "chars": 2199,
    "preview": "// Copyright 2024, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "compose-stability.conf",
    "chars": 545,
    "preview": "// Consider all Tivi models as stable\napp.tivi.data.compoundmodels.*\napp.tivi.data.imagemodels.*\napp.tivi.data.models.*\n"
  },
  {
    "path": "core/analytics/build.gradle.kts",
    "chars": 584,
    "preview": "// Copyright 2023, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "core/analytics/src/androidMain/kotlin/app/tivi/core/analytics/AnalyticsPlatformComponent.kt",
    "chars": 405,
    "preview": "// Copyright 2022, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "core/analytics/src/androidMain/kotlin/app/tivi/core/analytics/TiviFirebaseAnalytics.kt",
    "chars": 1349,
    "preview": "// Copyright 2021, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "core/analytics/src/commonMain/kotlin/app/tivi/core/analytics/Analytics.kt",
    "chars": 454,
    "preview": "// Copyright 2021, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "core/analytics/src/commonMain/kotlin/app/tivi/core/analytics/AnalyticsComponent.kt",
    "chars": 510,
    "preview": "// Copyright 2022, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "core/analytics/src/commonMain/kotlin/app/tivi/core/analytics/AnalyticsInitializer.kt",
    "chars": 739,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "core/analytics/src/iosMain/kotlin/app/tivi/core/analytics/AnalyticsPlatformComponent.kt",
    "chars": 346,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "core/analytics/src/jvmMain/kotlin/app/tivi/core/analytics/AnalyticsPlatformComponent.kt",
    "chars": 509,
    "preview": "// Copyright 2023, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2.0\n\npackage a"
  },
  {
    "path": "core/base/build.gradle.kts",
    "chars": 369,
    "preview": "// Copyright 2023, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "core/base/src/commonMain/kotlin/app/tivi/animations/Lerp.kt",
    "chars": 273,
    "preview": "// Copyright 2018, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "core/base/src/commonMain/kotlin/app/tivi/app/ApplicationInfo.kt",
    "chars": 454,
    "preview": "// Copyright 2023, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "core/base/src/commonMain/kotlin/app/tivi/appinitializers/AppInitializer.kt",
    "chars": 209,
    "preview": "// Copyright 2017, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "core/base/src/commonMain/kotlin/app/tivi/base/InvokeStatus.kt",
    "chars": 314,
    "preview": "// Copyright 2019, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "core/base/src/commonMain/kotlin/app/tivi/extensions/Lazy.kt",
    "chars": 296,
    "preview": "// Copyright 2022, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "core/base/src/commonMain/kotlin/app/tivi/inject/Scopes.kt",
    "chars": 367,
    "preview": "// Copyright 2018, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  },
  {
    "path": "core/base/src/commonMain/kotlin/app/tivi/util/AppCoroutineDispatchers.kt",
    "chars": 418,
    "preview": "// Copyright 2018, Google LLC, Christopher Banes and the Tivi project contributors\n// SPDX-License-Identifier: Apache-2."
  }
]

// ... and 702 more files (download for full content)

About this extraction

This page contains the full source code of the chrisbanes/tivi GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 902 files (12.0 MB), approximately 3.2M tokens, and a symbol index with 1 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!