From 3406c9887c186908f237861cbf07db12618a56ce Mon Sep 17 00:00:00 2001 From: harvey186 Date: Sun, 17 Dec 2023 11:48:30 +0100 Subject: [PATCH] v.1.6.4 --- .editorconfig | 15 + .gitignore | 21 + 0001-readme_and_add_LeOS_repos.patch | 130 + 0002-name_change.patch | 5986 +++++++ ...rgs_sed_-i_'s_com_looker_com_leos_g'.patch | 14568 ++++++++++++++++ 0005-version_change.patch | 19 + LICENSE | 892 +- README.md | 34 +- STATUS.md | 15 + app/build.gradle.kts | 152 + app/proguard.pro | 9 + app/src/main/AndroidManifest.xml | 184 + app/src/main/ic_launcher-playstore.png | Bin 0 -> 128798 bytes .../kotlin/com/leos/droidify/MainActivity.kt | 29 + .../com/leos/droidify/MainApplication.kt | 276 + .../com/leos/droidify/ScreenActivity.kt | 311 + .../droidify/content/ProductPreferences.kt | 79 + .../com/leos/droidify/database/CursorOwner.kt | 143 + .../com/leos/droidify/database/Database.kt | 964 + .../droidify/database/ObservableCursor.kt | 64 + .../leos/droidify/database/QueryBuilder.kt | 50 + .../com/leos/droidify/database/QueryLoader.kt | 94 + .../droidify/database/RepositoryExporter.kt | 73 + .../leos/droidify/graphics/DrawableWrapper.kt | 57 + .../leos/droidify/graphics/PaddingDrawable.kt | 30 + .../com/leos/droidify/index/IndexMerger.kt | 115 + .../com/leos/droidify/index/IndexV1Parser.kt | 489 + .../leos/droidify/index/RepositoryUpdater.kt | 460 + .../receivers/InstalledAppReceiver.kt | 30 + .../com/leos/droidify/service/Connection.kt | 43 + .../droidify/service/ConnectionService.kt | 22 + .../leos/droidify/service/DownloadService.kt | 487 + .../droidify/service/ReleaseFileValidator.kt | 53 + .../com/leos/droidify/service/SyncService.kt | 636 + .../com/leos/droidify/sync/SyncPreference.kt | 23 + .../com/leos/droidify/ui/MessageDialog.kt | 265 + .../com/leos/droidify/ui/ScreenFragment.kt | 33 + .../droidify/ui/appDetail/AppDetailAdapter.kt | 1808 ++ .../ui/appDetail/AppDetailFragment.kt | 537 + .../ui/appDetail/AppDetailViewModel.kt | 103 + .../ui/appDetail/ScreenshotsAdapter.kt | 126 + .../droidify/ui/appList/AppListAdapter.kt | 200 + .../droidify/ui/appList/AppListFragment.kt | 198 + .../droidify/ui/appList/AppListViewModel.kt | 91 + .../ui/favourites/FavouriteFragmentAdapter.kt | 98 + .../ui/favourites/FavouritesFragment.kt | 79 + .../ui/favourites/FavouritesViewModel.kt | 35 + .../ui/repository/EditRepositoryFragment.kt | 475 + .../ui/repository/RepositoriesAdapter.kt | 74 + .../ui/repository/RepositoriesFragment.kt | 98 + .../ui/repository/RepositoryFragment.kt | 168 + .../ui/repository/RepositoryViewModel.kt | 64 + .../droidify/ui/settings/SettingsFragment.kt | 493 + .../droidify/ui/settings/SettingsViewModel.kt | 197 + .../droidify/ui/tabsFragment/TabsFragment.kt | 635 + .../droidify/ui/tabsFragment/TabsViewModel.kt | 67 + .../droidify/utility/PackageItemResolver.kt | 153 + .../droidify/utility/ProgressInputStream.kt | 36 + .../droidify/utility/extension/Android.kt | 14 + .../droidify/utility/extension/Connection.kt | 37 + .../droidify/utility/extension/Fragment.kt | 7 + .../droidify/utility/extension/ImageUtils.kt | 46 + .../droidify/utility/extension/PackageInfo.kt | 17 + .../droidify/utility/extension/Resources.kt | 16 + .../serialization/ProductItemSerialization.kt | 55 + .../ProductPreferenceSerialization.kt | 24 + .../serialization/ProductSerialization.kt | 208 + .../serialization/ReleaseSerialization.kt | 160 + .../serialization/RepositorySerialization.kt | 63 + .../droidify/widget/CursorRecyclerAdapter.kt | 36 + .../droidify/widget/DividerItemDecoration.kt | 139 + .../droidify/widget/EnumRecyclerAdapter.kt | 29 + .../leos/droidify/widget/FocusSearchView.kt | 39 + .../droidify/widget/StableRecyclerAdapter.kt | 28 + .../com/leos/droidify/work/CleanUpWorker.kt | 74 + app/src/main/res/anim/slide_right_fade_in.xml | 11 + .../main/res/anim/slide_right_fade_out.xml | 11 + app/src/main/res/animator/slide_in.xml | 18 + app/src/main/res/animator/slide_in_keep.xml | 3 + app/src/main/res/animator/slide_out.xml | 19 + app/src/main/res/drawable/favourite_icon.xml | 6 + .../res/drawable/ic_launcher_background.xml | 78 + .../res/drawable/ic_launcher_foreground.xml | 53 + .../res/drawable/ic_launcher_monochrome.xml | 53 + app/src/main/res/drawable/tv_banner.xml | 209 + app/src/main/res/layout/app_detail_header.xml | 170 + app/src/main/res/layout/download_status.xml | 24 + app/src/main/res/layout/edit_repository.xml | 118 + app/src/main/res/layout/enum_type.xml | 22 + .../main/res/layout/expand_view_button.xml | 10 + app/src/main/res/layout/fragment.xml | 37 + app/src/main/res/layout/install_button.xml | 8 + app/src/main/res/layout/link_item.xml | 42 + app/src/main/res/layout/permissions_item.xml | 29 + app/src/main/res/layout/product_item.xml | 68 + .../res/layout/recycler_view_with_fab.xml | 22 + app/src/main/res/layout/release_item.xml | 101 + app/src/main/res/layout/repository_item.xml | 39 + app/src/main/res/layout/repository_page.xml | 72 + app/src/main/res/layout/section_item.xml | 25 + app/src/main/res/layout/settings_page.xml | 183 + app/src/main/res/layout/switch_item.xml | 8 + app/src/main/res/layout/switch_type.xml | 39 + app/src/main/res/layout/tabs_toolbar.xml | 51 + app/src/main/res/layout/title_text_item.xml | 22 + .../main/res/menu/navigation_menu_main.xml | 15 + .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + app/src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 0 -> 3660 bytes .../mipmap-hdpi/ic_launcher_foreground.webp | Bin 0 -> 5524 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 0 -> 4892 bytes app/src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 0 -> 2224 bytes .../mipmap-mdpi/ic_launcher_foreground.webp | Bin 0 -> 3214 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 0 -> 3164 bytes .../main/res/mipmap-xhdpi/ic_launcher.webp | Bin 0 -> 5230 bytes .../mipmap-xhdpi/ic_launcher_foreground.webp | Bin 0 -> 8016 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 0 -> 7070 bytes .../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 0 -> 8682 bytes .../mipmap-xxhdpi/ic_launcher_foreground.webp | Bin 0 -> 14464 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 0 -> 12088 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 0 -> 12674 bytes .../ic_launcher_foreground.webp | Bin 0 -> 23134 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 0 -> 17552 bytes .../res/values/ic_launcher_background.xml | 4 + app/src/main/res/values/ids.xml | 10 + app/src/main/res/xml/locales_config.xml | 55 + .../main/res/xml/network_security_config.xml | 12 + build-logic/gradle.properties | 3 + build-logic/settings.gradle.kts | 15 + build-logic/structure/build.gradle.kts | 57 + .../main/kotlin/AndroidApplicationPlugin.kt | 38 + .../src/main/kotlin/AndroidHiltPlugin.kt | 21 + .../main/kotlin/AndroidHiltWorkerPlugin.kt | 21 + .../src/main/kotlin/AndroidLibraryPlugin.kt | 42 + .../src/main/kotlin/AndroidLintPlugin.kt | 27 + .../src/main/kotlin/AndroidRoomPlugin.kt | 46 + .../main/kotlin/AndroidSerializationPlugin.kt | 19 + .../src/main/kotlin/DefaultConfig.kt | 9 + .../structure/src/main/kotlin/Modules.kt | 21 + .../com/looker/droidify/KotlinAndroid.kt | 66 + .../com/looker/droidify/ProjectExtensions.kt | 18 + build.gradle.kts | 9 + core/common/.gitignore | 1 + core/common/build.gradle.kts | 58 + .../java/com/looker/core/common/Constants.kt | 13 + .../java/com/looker/core/common/DataSize.kt | 23 + .../java/com/looker/core/common/Deeplinks.kt | 80 + .../java/com/looker/core/common/Exporter.kt | 10 + .../com/looker/core/common/PackageName.kt | 6 + .../java/com/looker/core/common/SdkCheck.kt | 36 + .../java/com/looker/core/common/Singleton.kt | 13 + .../main/java/com/looker/core/common/Text.kt | 53 + .../com/looker/core/common/cache/Cache.kt | 243 + .../com/looker/core/common/device/Huawei.kt | 13 + .../com/looker/core/common/device/Miui.kt | 38 + .../core/common/extension/Collections.kt | 16 + .../looker/core/common/extension/Context.kt | 84 + .../looker/core/common/extension/Cursor.kt | 11 + .../looker/core/common/extension/DateTime.kt | 18 + .../looker/core/common/extension/Exception.kt | 8 + .../com/looker/core/common/extension/File.kt | 23 + .../core/common/extension/Fingerprint.kt | 27 + .../com/looker/core/common/extension/Flow.kt | 29 + .../looker/core/common/extension/Insets.kt | 83 + .../looker/core/common/extension/Intent.kt | 23 + .../looker/core/common/extension/JarFile.kt | 19 + .../com/looker/core/common/extension/Json.kt | 108 + .../looker/core/common/extension/Locale.kt | 17 + .../looker/core/common/extension/Network.kt | 6 + .../looker/core/common/extension/Number.kt | 25 + .../core/common/extension/PackageInfo.kt | 133 + .../core/common/extension/SQLiteDatabase.kt | 7 + .../looker/core/common/extension/Service.kt | 30 + .../com/looker/core/common/extension/View.kt | 54 + .../com/looker/core/common/result/Result.kt | 10 + .../core/common/signature/FileValidator.kt | 11 + .../core/common/signature/HashChecker.kt | 70 + .../main/res/color/favourite_icon_color.xml | 5 + .../src/main/res/color/switch_thumb_tint.xml | 6 + .../src/main/res/color/switch_track_tint.xml | 6 + .../common/src/main/res/drawable/arrow_up.xml | 10 + .../main/res/drawable/background_border.xml | 5 + core/common/src/main/res/drawable/ic_add.xml | 10 + .../src/main/res/drawable/ic_apk_install.xml | 10 + .../src/main/res/drawable/ic_arrow_down.xml | 10 + .../src/main/res/drawable/ic_bug_report.xml | 10 + .../src/main/res/drawable/ic_cancel.xml | 10 + .../src/main/res/drawable/ic_cannot_load.xml | 13 + .../common/src/main/res/drawable/ic_check.xml | 10 + core/common/src/main/res/drawable/ic_code.xml | 10 + .../src/main/res/drawable/ic_copyright.xml | 10 + .../src/main/res/drawable/ic_delete.xml | 10 + .../src/main/res/drawable/ic_donate.xml | 10 + .../main/res/drawable/ic_donate_bitcoin.xml | 10 + .../main/res/drawable/ic_donate_flattr.xml | 17 + .../main/res/drawable/ic_donate_liberapay.xml | 22 + .../main/res/drawable/ic_donate_litecoin.xml | 14 + .../res/drawable/ic_donate_opencollective.xml | 16 + .../src/main/res/drawable/ic_download.xml | 10 + .../common/src/main/res/drawable/ic_email.xml | 10 + .../src/main/res/drawable/ic_favourite.xml | 10 + .../res/drawable/ic_favourite_checked.xml | 10 + .../src/main/res/drawable/ic_gitlab.xml | 9 + .../src/main/res/drawable/ic_history.xml | 10 + .../common/src/main/res/drawable/ic_image.xml | 10 + core/common/src/main/res/drawable/ic_kde.xml | 9 + .../src/main/res/drawable/ic_language.xml | 10 + .../src/main/res/drawable/ic_launch.xml | 10 + .../src/main/res/drawable/ic_new_releases.xml | 11 + .../drawable/ic_perm_device_information.xml | 10 + .../src/main/res/drawable/ic_person.xml | 10 + .../common/src/main/res/drawable/ic_proxy.xml | 10 + .../src/main/res/drawable/ic_public.xml | 10 + core/common/src/main/res/drawable/ic_save.xml | 10 + .../src/main/res/drawable/ic_search.xml | 10 + .../common/src/main/res/drawable/ic_share.xml | 10 + core/common/src/main/res/drawable/ic_sort.xml | 11 + .../src/main/res/drawable/ic_source_code.xml | 10 + core/common/src/main/res/drawable/ic_sync.xml | 10 + .../src/main/res/drawable/ic_sync_type.xml | 10 + .../src/main/res/drawable/ic_themes.xml | 10 + core/common/src/main/res/drawable/ic_time.xml | 10 + core/common/src/main/res/drawable/ic_tune.xml | 10 + .../common/src/main/res/values-ar/strings.xml | 246 + .../common/src/main/res/values-az/strings.xml | 212 + .../common/src/main/res/values-be/strings.xml | 240 + .../common/src/main/res/values-bg/strings.xml | 234 + .../common/src/main/res/values-bn/strings.xml | 212 + .../common/src/main/res/values-ca/strings.xml | 212 + .../common/src/main/res/values-cs/strings.xml | 237 + .../common/src/main/res/values-de/strings.xml | 233 + .../common/src/main/res/values-el/strings.xml | 233 + .../common/src/main/res/values-eo/strings.xml | 234 + .../common/src/main/res/values-es/strings.xml | 237 + .../common/src/main/res/values-fa/strings.xml | 212 + .../common/src/main/res/values-fi/strings.xml | 233 + .../common/src/main/res/values-fr/strings.xml | 237 + .../common/src/main/res/values-gl/strings.xml | 216 + .../common/src/main/res/values-hi/strings.xml | 234 + .../common/src/main/res/values-hr/strings.xml | 236 + .../common/src/main/res/values-hu/strings.xml | 224 + .../common/src/main/res/values-ia/strings.xml | 169 + .../common/src/main/res/values-in/strings.xml | 231 + .../common/src/main/res/values-it/strings.xml | 238 + .../common/src/main/res/values-iw/strings.xml | 218 + .../common/src/main/res/values-ja/strings.xml | 230 + .../common/src/main/res/values-kn/strings.xml | 212 + .../common/src/main/res/values-ko/strings.xml | 230 + .../common/src/main/res/values-lt/strings.xml | 215 + .../common/src/main/res/values-lv/strings.xml | 215 + .../common/src/main/res/values-ml/strings.xml | 212 + .../src/main/res/values-nb-rNO/strings.xml | 224 + .../common/src/main/res/values-nl/strings.xml | 215 + .../common/src/main/res/values-nn/strings.xml | 217 + .../common/src/main/res/values-or/strings.xml | 233 + .../common/src/main/res/values-pa/strings.xml | 234 + .../common/src/main/res/values-pl/strings.xml | 239 + .../src/main/res/values-pt-rBR/strings.xml | 240 + .../common/src/main/res/values-pt/strings.xml | 236 + .../common/src/main/res/values-ro/strings.xml | 215 + .../common/src/main/res/values-ru/strings.xml | 241 + .../src/main/res/values-ryu/strings.xml | 224 + .../common/src/main/res/values-si/strings.xml | 2 + .../common/src/main/res/values-sl/strings.xml | 218 + .../common/src/main/res/values-sr/strings.xml | 237 + .../common/src/main/res/values-sv/strings.xml | 234 + .../common/src/main/res/values-tl/strings.xml | 212 + .../common/src/main/res/values-tr/strings.xml | 235 + .../common/src/main/res/values-uk/strings.xml | 240 + .../common/src/main/res/values-ur/strings.xml | 2 + core/common/src/main/res/values-v31/dimen.xml | 5 + .../common/src/main/res/values-v31/styles.xml | 77 + .../common/src/main/res/values-vi/strings.xml | 231 + .../src/main/res/values-zh-rCN/strings.xml | 230 + .../src/main/res/values-zh-rTW/strings.xml | 231 + core/common/src/main/res/values/colors.xml | 68 + core/common/src/main/res/values/dimen.xml | 10 + core/common/src/main/res/values/strings.xml | 237 + core/common/src/main/res/values/styles.xml | 197 + .../core/common/signature/HashCheckerTest.kt | 59 + core/common/src/test/resources/sample.txt | 1 + core/data/.gitignore | 1 + core/data/build.gradle.kts | 36 + core/data/src/main/AndroidManifest.xml | 5 + .../com/looker/core/data/di/DataModule.kt | 32 + .../core/data/di/DataModuleSingleton.kt | 22 + .../com/looker/core/data/fdroid/Mapper.kt | 132 + .../data/fdroid/repository/AppRepository.kt | 24 + .../data/fdroid/repository/RepoRepository.kt | 19 + .../offline/OfflineFirstAppRepository.kt | 85 + .../offline/OfflineFirstRepoRepository.kt | 115 + .../core/data/fdroid/sync/IndexDownloader.kt | 33 + .../data/fdroid/sync/IndexDownloaderImpl.kt | 134 + .../core/data/fdroid/sync/IndexManager.kt | 52 + .../looker/core/data/fdroid/sync/IndexType.kt | 6 + .../fdroid/sync/signature/EntryValidator.kt | 55 + .../fdroid/sync/signature/IndexValidator.kt | 55 + .../fdroid/sync/workers/DelegatingWorker.kt | 48 + .../fdroid/sync/workers/SyncWorkHelper.kt | 42 + .../data/fdroid/sync/workers/SyncWorker.kt | 81 + .../ConnectivityManagerNetworkMonitor.kt | 55 + .../looker/core/data/utils/NetworkMonitor.kt | 7 + .../core/data/utils/SyncStatusMonitor.kt | 7 + core/database/.gitignore | 1 + core/database/build.gradle.kts | 28 + .../1.json | 381 + core/database/src/main/assets/repo.db | Bin 0 -> 36864 bytes .../com/looker/core/database/Converters.kt | 94 + .../looker/core/database/DroidifyDatabase.kt | 34 + .../com/looker/core/database/dao/AppDao.kt | 50 + .../looker/core/database/dao/InstalledDao.kt | 18 + .../com/looker/core/database/dao/RepoDao.kt | 28 + .../com/looker/core/database/di/DaoModule.kt | 34 + .../looker/core/database/di/DatabaseModule.kt | 26 + .../looker/core/database/model/AppEntity.kt | 132 + .../core/database/model/InstalledEntity.kt | 12 + .../core/database/model/PackageEntity.kt | 70 + .../looker/core/database/model/RepoEntity.kt | 89 + .../core/database/utils/Localization.kt | 53 + .../looker/core/database/LocalizationTest.kt | 195 + core/datastore/.gitignore | 1 + core/datastore/build.gradle.kts | 29 + .../datastore/DataStoreSettingsRepository.kt | 158 + .../com/looker/core/datastore/Settings.kt | 66 + .../core/datastore/SettingsRepository.kt | 61 + .../core/datastore/di/DatastoreModule.kt | 80 + .../datastore/exporter/SettingsExporter.kt | 57 + .../core/datastore/extension/Preferences.kt | 123 + .../migration/ProtoDataStoreMigration.kt | 100 + .../looker/core/datastore/model/AutoSync.kt | 8 + .../core/datastore/model/InstallerType.kt | 19 + .../core/datastore/model/ProxyPreference.kt | 20 + .../looker/core/datastore/model/ProxyType.kt | 7 + .../looker/core/datastore/model/SortOrder.kt | 8 + .../com/looker/core/datastore/model/Theme.kt | 9 + core/di/.gitignore | 1 + core/di/build.gradle.kts | 20 + .../com/looker/core/di/CoroutinesModule.kt | 41 + core/domain/.gitignore | 1 + core/domain/build.gradle.kts | 24 + .../com/looker/core/domain/InstalledItem.kt | 8 + .../kotlin/com/looker/core/domain/Product.kt | 102 + .../com/looker/core/domain/ProductItem.kt | 30 + .../looker/core/domain/ProductPreference.kt | 7 + .../kotlin/com/looker/core/domain/Release.kt | 46 + .../com/looker/core/domain/Repository.kt | 407 + .../kotlin/com/looker/core/domain/Syncable.kt | 14 + .../com/looker/core/domain/newer/App.kt | 76 + .../com/looker/core/domain/newer/DataFile.kt | 7 + .../com/looker/core/domain/newer/Package.kt | 41 + .../com/looker/core/domain/newer/Repo.kt | 50 + core/network/.gitignore | 1 + core/network/build.gradle.kts | 28 + .../java/com/looker/network/Downloader.kt | 32 + .../java/com/looker/network/KtorDownloader.kt | 152 + .../com/looker/network/NetworkResponse.kt | 28 + .../com/looker/network/di/NetworkModule.kt | 18 + .../looker/network/header/HeadersBuilder.kt | 20 + .../network/header/KtorHeadersBuilder.kt | 44 + gradle.properties | 22 + gradle/libs.versions.toml | 111 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 43462 bytes gradle/wrapper/gradle-wrapper.properties | 7 + gradlew | 249 + gradlew.bat | 92 + installer/.gitignore | 1 + installer/build.gradle.kts | 30 + .../com/looker/installer/InstallManager.kt | 123 + .../com/looker/installer/InstallModule.kt | 34 + .../looker/installer/installers/Installer.kt | 14 + .../installer/installers/LegacyInstaller.kt | 70 + .../installers/root/RootInstaller.kt | 78 + .../installers/root/RootPermissionHandler.kt | 12 + .../installers/session/SessionInstaller.kt | 108 + .../session/SessionInstallerService.kt | 123 + .../installers/shizuku/ShizukuInstaller.kt | 91 + .../shizuku/ShizukuPermissionHandler.kt | 81 + .../com/looker/installer/model/InstallItem.kt | 11 + .../looker/installer/model/InstallState.kt | 6 + metadata/en-US/changelogs/42.txt | 6 + metadata/en-US/changelogs/43.txt | 4 + metadata/en-US/changelogs/47.txt | 12 + metadata/en-US/changelogs/48.txt | 5 + metadata/en-US/changelogs/49.txt | 2 + metadata/en-US/changelogs/50.txt | 50 + metadata/en-US/changelogs/51.txt | 6 + metadata/en-US/changelogs/52.txt | 34 + metadata/en-US/changelogs/53.txt | 5 + metadata/en-US/changelogs/54.txt | 3 + metadata/en-US/changelogs/55.txt | 3 + metadata/en-US/changelogs/56.txt | 10 + metadata/en-US/changelogs/57.txt | 14 + metadata/en-US/changelogs/58.txt | 14 + metadata/en-US/changelogs/581.txt | 15 + metadata/en-US/changelogs/582.txt | 5 + metadata/en-US/changelogs/583.txt | 13 + metadata/en-US/changelogs/584.txt | 15 + metadata/en-US/changelogs/590.txt | 16 + metadata/en-US/changelogs/591.txt | 16 + metadata/en-US/changelogs/592.txt | 18 + metadata/en-US/changelogs/593.txt | 19 + metadata/en-US/changelogs/594.txt | 2 + metadata/en-US/changelogs/595.txt | 9 + metadata/en-US/full_description.txt | 31 + metadata/en-US/images/featureGraphic.png | Bin 0 -> 36773 bytes metadata/en-US/images/icon.png | Bin 0 -> 8154 bytes metadata/en-US/images/phoneScreenshots/1.png | Bin 0 -> 602815 bytes metadata/en-US/images/phoneScreenshots/2.png | Bin 0 -> 471743 bytes metadata/en-US/images/phoneScreenshots/3.png | Bin 0 -> 674622 bytes metadata/en-US/images/phoneScreenshots/4.png | Bin 0 -> 676570 bytes metadata/en-US/images/promoGraphic.png | Bin 0 -> 36773 bytes metadata/en-US/short_description.txt | 1 + metadata/es-AR/changelogs/4.txt | 1 + metadata/es-AR/full_description.txt | 10 + metadata/es-AR/short_description.txt | 1 + renovate.json | 7 + settings.gradle.kts | 30 + sync/fdroid/.gitignore | 1 + sync/fdroid/build.gradle.kts | 35 + .../sync/fdroid/ExampleInstrumentedTest.kt | 24 + sync/fdroid/src/main/AndroidManifest.xml | 4 + .../com/looker/sync/fdroid/FdroidSyncable.kt | 13 + .../com/looker/sync/fdroid/IndexValidator.kt | 70 + .../com/looker/sync/fdroid/ExampleUnitTest.kt | 17 + update.sh | 86 + 425 files changed, 54943 insertions(+), 238 deletions(-) create mode 100644 .editorconfig create mode 100644 .gitignore create mode 100644 0001-readme_and_add_LeOS_repos.patch create mode 100644 0002-name_change.patch create mode 100644 0004-package_name_change_via_grep_-RiIl_'com_looker'___xargs_sed_-i_'s_com_looker_com_leos_g'.patch create mode 100644 0005-version_change.patch create mode 100644 STATUS.md create mode 100644 app/build.gradle.kts create mode 100644 app/proguard.pro create mode 100644 app/src/main/AndroidManifest.xml create mode 100644 app/src/main/ic_launcher-playstore.png create mode 100644 app/src/main/kotlin/com/leos/droidify/MainActivity.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/MainApplication.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/ScreenActivity.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/content/ProductPreferences.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/database/CursorOwner.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/database/Database.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/database/ObservableCursor.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/database/QueryBuilder.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/database/QueryLoader.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/database/RepositoryExporter.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/graphics/DrawableWrapper.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/graphics/PaddingDrawable.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/index/IndexMerger.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/index/IndexV1Parser.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/index/RepositoryUpdater.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/receivers/InstalledAppReceiver.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/service/Connection.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/service/ConnectionService.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/service/DownloadService.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/service/ReleaseFileValidator.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/service/SyncService.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/sync/SyncPreference.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/ui/MessageDialog.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/ui/ScreenFragment.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/ui/appDetail/AppDetailAdapter.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/ui/appDetail/AppDetailFragment.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/ui/appDetail/AppDetailViewModel.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/ui/appDetail/ScreenshotsAdapter.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/ui/appList/AppListAdapter.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/ui/appList/AppListFragment.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/ui/appList/AppListViewModel.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/ui/favourites/FavouriteFragmentAdapter.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/ui/favourites/FavouritesFragment.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/ui/favourites/FavouritesViewModel.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/ui/repository/EditRepositoryFragment.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/ui/repository/RepositoriesAdapter.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/ui/repository/RepositoriesFragment.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/ui/repository/RepositoryFragment.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/ui/repository/RepositoryViewModel.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/ui/settings/SettingsFragment.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/ui/settings/SettingsViewModel.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/ui/tabsFragment/TabsFragment.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/ui/tabsFragment/TabsViewModel.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/utility/PackageItemResolver.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/utility/ProgressInputStream.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/utility/extension/Android.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/utility/extension/Connection.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/utility/extension/Fragment.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/utility/extension/ImageUtils.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/utility/extension/PackageInfo.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/utility/extension/Resources.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/utility/serialization/ProductItemSerialization.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/utility/serialization/ProductPreferenceSerialization.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/utility/serialization/ProductSerialization.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/utility/serialization/ReleaseSerialization.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/utility/serialization/RepositorySerialization.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/widget/CursorRecyclerAdapter.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/widget/DividerItemDecoration.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/widget/EnumRecyclerAdapter.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/widget/FocusSearchView.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/widget/StableRecyclerAdapter.kt create mode 100644 app/src/main/kotlin/com/leos/droidify/work/CleanUpWorker.kt create mode 100644 app/src/main/res/anim/slide_right_fade_in.xml create mode 100644 app/src/main/res/anim/slide_right_fade_out.xml create mode 100644 app/src/main/res/animator/slide_in.xml create mode 100644 app/src/main/res/animator/slide_in_keep.xml create mode 100644 app/src/main/res/animator/slide_out.xml create mode 100644 app/src/main/res/drawable/favourite_icon.xml create mode 100644 app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 app/src/main/res/drawable/ic_launcher_foreground.xml create mode 100644 app/src/main/res/drawable/ic_launcher_monochrome.xml create mode 100644 app/src/main/res/drawable/tv_banner.xml create mode 100644 app/src/main/res/layout/app_detail_header.xml create mode 100644 app/src/main/res/layout/download_status.xml create mode 100644 app/src/main/res/layout/edit_repository.xml create mode 100644 app/src/main/res/layout/enum_type.xml create mode 100644 app/src/main/res/layout/expand_view_button.xml create mode 100644 app/src/main/res/layout/fragment.xml create mode 100644 app/src/main/res/layout/install_button.xml create mode 100644 app/src/main/res/layout/link_item.xml create mode 100644 app/src/main/res/layout/permissions_item.xml create mode 100644 app/src/main/res/layout/product_item.xml create mode 100644 app/src/main/res/layout/recycler_view_with_fab.xml create mode 100644 app/src/main/res/layout/release_item.xml create mode 100644 app/src/main/res/layout/repository_item.xml create mode 100644 app/src/main/res/layout/repository_page.xml create mode 100644 app/src/main/res/layout/section_item.xml create mode 100644 app/src/main/res/layout/settings_page.xml create mode 100644 app/src/main/res/layout/switch_item.xml create mode 100644 app/src/main/res/layout/switch_type.xml create mode 100644 app/src/main/res/layout/tabs_toolbar.xml create mode 100644 app/src/main/res/layout/title_text_item.xml create mode 100644 app/src/main/res/menu/navigation_menu_main.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/values/ic_launcher_background.xml create mode 100644 app/src/main/res/values/ids.xml create mode 100644 app/src/main/res/xml/locales_config.xml create mode 100644 app/src/main/res/xml/network_security_config.xml create mode 100644 build-logic/gradle.properties create mode 100644 build-logic/settings.gradle.kts create mode 100644 build-logic/structure/build.gradle.kts create mode 100644 build-logic/structure/src/main/kotlin/AndroidApplicationPlugin.kt create mode 100644 build-logic/structure/src/main/kotlin/AndroidHiltPlugin.kt create mode 100644 build-logic/structure/src/main/kotlin/AndroidHiltWorkerPlugin.kt create mode 100644 build-logic/structure/src/main/kotlin/AndroidLibraryPlugin.kt create mode 100644 build-logic/structure/src/main/kotlin/AndroidLintPlugin.kt create mode 100644 build-logic/structure/src/main/kotlin/AndroidRoomPlugin.kt create mode 100644 build-logic/structure/src/main/kotlin/AndroidSerializationPlugin.kt create mode 100644 build-logic/structure/src/main/kotlin/DefaultConfig.kt create mode 100644 build-logic/structure/src/main/kotlin/Modules.kt create mode 100644 build-logic/structure/src/main/kotlin/com/looker/droidify/KotlinAndroid.kt create mode 100644 build-logic/structure/src/main/kotlin/com/looker/droidify/ProjectExtensions.kt create mode 100644 build.gradle.kts create mode 100644 core/common/.gitignore create mode 100644 core/common/build.gradle.kts create mode 100644 core/common/src/main/java/com/looker/core/common/Constants.kt create mode 100644 core/common/src/main/java/com/looker/core/common/DataSize.kt create mode 100644 core/common/src/main/java/com/looker/core/common/Deeplinks.kt create mode 100644 core/common/src/main/java/com/looker/core/common/Exporter.kt create mode 100644 core/common/src/main/java/com/looker/core/common/PackageName.kt create mode 100644 core/common/src/main/java/com/looker/core/common/SdkCheck.kt create mode 100644 core/common/src/main/java/com/looker/core/common/Singleton.kt create mode 100644 core/common/src/main/java/com/looker/core/common/Text.kt create mode 100644 core/common/src/main/java/com/looker/core/common/cache/Cache.kt create mode 100644 core/common/src/main/java/com/looker/core/common/device/Huawei.kt create mode 100644 core/common/src/main/java/com/looker/core/common/device/Miui.kt create mode 100644 core/common/src/main/java/com/looker/core/common/extension/Collections.kt create mode 100644 core/common/src/main/java/com/looker/core/common/extension/Context.kt create mode 100644 core/common/src/main/java/com/looker/core/common/extension/Cursor.kt create mode 100644 core/common/src/main/java/com/looker/core/common/extension/DateTime.kt create mode 100644 core/common/src/main/java/com/looker/core/common/extension/Exception.kt create mode 100644 core/common/src/main/java/com/looker/core/common/extension/File.kt create mode 100644 core/common/src/main/java/com/looker/core/common/extension/Fingerprint.kt create mode 100644 core/common/src/main/java/com/looker/core/common/extension/Flow.kt create mode 100644 core/common/src/main/java/com/looker/core/common/extension/Insets.kt create mode 100644 core/common/src/main/java/com/looker/core/common/extension/Intent.kt create mode 100644 core/common/src/main/java/com/looker/core/common/extension/JarFile.kt create mode 100644 core/common/src/main/java/com/looker/core/common/extension/Json.kt create mode 100644 core/common/src/main/java/com/looker/core/common/extension/Locale.kt create mode 100644 core/common/src/main/java/com/looker/core/common/extension/Network.kt create mode 100644 core/common/src/main/java/com/looker/core/common/extension/Number.kt create mode 100644 core/common/src/main/java/com/looker/core/common/extension/PackageInfo.kt create mode 100644 core/common/src/main/java/com/looker/core/common/extension/SQLiteDatabase.kt create mode 100644 core/common/src/main/java/com/looker/core/common/extension/Service.kt create mode 100644 core/common/src/main/java/com/looker/core/common/extension/View.kt create mode 100644 core/common/src/main/java/com/looker/core/common/result/Result.kt create mode 100644 core/common/src/main/java/com/looker/core/common/signature/FileValidator.kt create mode 100644 core/common/src/main/java/com/looker/core/common/signature/HashChecker.kt create mode 100644 core/common/src/main/res/color/favourite_icon_color.xml create mode 100644 core/common/src/main/res/color/switch_thumb_tint.xml create mode 100644 core/common/src/main/res/color/switch_track_tint.xml create mode 100644 core/common/src/main/res/drawable/arrow_up.xml create mode 100644 core/common/src/main/res/drawable/background_border.xml create mode 100644 core/common/src/main/res/drawable/ic_add.xml create mode 100644 core/common/src/main/res/drawable/ic_apk_install.xml create mode 100644 core/common/src/main/res/drawable/ic_arrow_down.xml create mode 100644 core/common/src/main/res/drawable/ic_bug_report.xml create mode 100644 core/common/src/main/res/drawable/ic_cancel.xml create mode 100644 core/common/src/main/res/drawable/ic_cannot_load.xml create mode 100644 core/common/src/main/res/drawable/ic_check.xml create mode 100644 core/common/src/main/res/drawable/ic_code.xml create mode 100644 core/common/src/main/res/drawable/ic_copyright.xml create mode 100644 core/common/src/main/res/drawable/ic_delete.xml create mode 100644 core/common/src/main/res/drawable/ic_donate.xml create mode 100644 core/common/src/main/res/drawable/ic_donate_bitcoin.xml create mode 100644 core/common/src/main/res/drawable/ic_donate_flattr.xml create mode 100644 core/common/src/main/res/drawable/ic_donate_liberapay.xml create mode 100644 core/common/src/main/res/drawable/ic_donate_litecoin.xml create mode 100644 core/common/src/main/res/drawable/ic_donate_opencollective.xml create mode 100644 core/common/src/main/res/drawable/ic_download.xml create mode 100644 core/common/src/main/res/drawable/ic_email.xml create mode 100644 core/common/src/main/res/drawable/ic_favourite.xml create mode 100644 core/common/src/main/res/drawable/ic_favourite_checked.xml create mode 100644 core/common/src/main/res/drawable/ic_gitlab.xml create mode 100644 core/common/src/main/res/drawable/ic_history.xml create mode 100644 core/common/src/main/res/drawable/ic_image.xml create mode 100644 core/common/src/main/res/drawable/ic_kde.xml create mode 100644 core/common/src/main/res/drawable/ic_language.xml create mode 100644 core/common/src/main/res/drawable/ic_launch.xml create mode 100644 core/common/src/main/res/drawable/ic_new_releases.xml create mode 100644 core/common/src/main/res/drawable/ic_perm_device_information.xml create mode 100644 core/common/src/main/res/drawable/ic_person.xml create mode 100644 core/common/src/main/res/drawable/ic_proxy.xml create mode 100644 core/common/src/main/res/drawable/ic_public.xml create mode 100644 core/common/src/main/res/drawable/ic_save.xml create mode 100644 core/common/src/main/res/drawable/ic_search.xml create mode 100644 core/common/src/main/res/drawable/ic_share.xml create mode 100644 core/common/src/main/res/drawable/ic_sort.xml create mode 100644 core/common/src/main/res/drawable/ic_source_code.xml create mode 100644 core/common/src/main/res/drawable/ic_sync.xml create mode 100644 core/common/src/main/res/drawable/ic_sync_type.xml create mode 100644 core/common/src/main/res/drawable/ic_themes.xml create mode 100644 core/common/src/main/res/drawable/ic_time.xml create mode 100644 core/common/src/main/res/drawable/ic_tune.xml create mode 100644 core/common/src/main/res/values-ar/strings.xml create mode 100644 core/common/src/main/res/values-az/strings.xml create mode 100644 core/common/src/main/res/values-be/strings.xml create mode 100644 core/common/src/main/res/values-bg/strings.xml create mode 100644 core/common/src/main/res/values-bn/strings.xml create mode 100644 core/common/src/main/res/values-ca/strings.xml create mode 100644 core/common/src/main/res/values-cs/strings.xml create mode 100644 core/common/src/main/res/values-de/strings.xml create mode 100644 core/common/src/main/res/values-el/strings.xml create mode 100644 core/common/src/main/res/values-eo/strings.xml create mode 100644 core/common/src/main/res/values-es/strings.xml create mode 100644 core/common/src/main/res/values-fa/strings.xml create mode 100644 core/common/src/main/res/values-fi/strings.xml create mode 100644 core/common/src/main/res/values-fr/strings.xml create mode 100644 core/common/src/main/res/values-gl/strings.xml create mode 100644 core/common/src/main/res/values-hi/strings.xml create mode 100644 core/common/src/main/res/values-hr/strings.xml create mode 100644 core/common/src/main/res/values-hu/strings.xml create mode 100644 core/common/src/main/res/values-ia/strings.xml create mode 100644 core/common/src/main/res/values-in/strings.xml create mode 100644 core/common/src/main/res/values-it/strings.xml create mode 100644 core/common/src/main/res/values-iw/strings.xml create mode 100644 core/common/src/main/res/values-ja/strings.xml create mode 100644 core/common/src/main/res/values-kn/strings.xml create mode 100644 core/common/src/main/res/values-ko/strings.xml create mode 100644 core/common/src/main/res/values-lt/strings.xml create mode 100644 core/common/src/main/res/values-lv/strings.xml create mode 100644 core/common/src/main/res/values-ml/strings.xml create mode 100644 core/common/src/main/res/values-nb-rNO/strings.xml create mode 100644 core/common/src/main/res/values-nl/strings.xml create mode 100644 core/common/src/main/res/values-nn/strings.xml create mode 100644 core/common/src/main/res/values-or/strings.xml create mode 100644 core/common/src/main/res/values-pa/strings.xml create mode 100644 core/common/src/main/res/values-pl/strings.xml create mode 100644 core/common/src/main/res/values-pt-rBR/strings.xml create mode 100644 core/common/src/main/res/values-pt/strings.xml create mode 100644 core/common/src/main/res/values-ro/strings.xml create mode 100644 core/common/src/main/res/values-ru/strings.xml create mode 100644 core/common/src/main/res/values-ryu/strings.xml create mode 100644 core/common/src/main/res/values-si/strings.xml create mode 100644 core/common/src/main/res/values-sl/strings.xml create mode 100644 core/common/src/main/res/values-sr/strings.xml create mode 100644 core/common/src/main/res/values-sv/strings.xml create mode 100644 core/common/src/main/res/values-tl/strings.xml create mode 100644 core/common/src/main/res/values-tr/strings.xml create mode 100644 core/common/src/main/res/values-uk/strings.xml create mode 100644 core/common/src/main/res/values-ur/strings.xml create mode 100644 core/common/src/main/res/values-v31/dimen.xml create mode 100644 core/common/src/main/res/values-v31/styles.xml create mode 100644 core/common/src/main/res/values-vi/strings.xml create mode 100644 core/common/src/main/res/values-zh-rCN/strings.xml create mode 100644 core/common/src/main/res/values-zh-rTW/strings.xml create mode 100644 core/common/src/main/res/values/colors.xml create mode 100644 core/common/src/main/res/values/dimen.xml create mode 100644 core/common/src/main/res/values/strings.xml create mode 100644 core/common/src/main/res/values/styles.xml create mode 100644 core/common/src/test/java/com/looker/core/common/signature/HashCheckerTest.kt create mode 100644 core/common/src/test/resources/sample.txt create mode 100644 core/data/.gitignore create mode 100644 core/data/build.gradle.kts create mode 100644 core/data/src/main/AndroidManifest.xml create mode 100644 core/data/src/main/java/com/looker/core/data/di/DataModule.kt create mode 100644 core/data/src/main/java/com/looker/core/data/di/DataModuleSingleton.kt create mode 100644 core/data/src/main/java/com/looker/core/data/fdroid/Mapper.kt create mode 100644 core/data/src/main/java/com/looker/core/data/fdroid/repository/AppRepository.kt create mode 100644 core/data/src/main/java/com/looker/core/data/fdroid/repository/RepoRepository.kt create mode 100644 core/data/src/main/java/com/looker/core/data/fdroid/repository/offline/OfflineFirstAppRepository.kt create mode 100644 core/data/src/main/java/com/looker/core/data/fdroid/repository/offline/OfflineFirstRepoRepository.kt create mode 100644 core/data/src/main/java/com/looker/core/data/fdroid/sync/IndexDownloader.kt create mode 100644 core/data/src/main/java/com/looker/core/data/fdroid/sync/IndexDownloaderImpl.kt create mode 100644 core/data/src/main/java/com/looker/core/data/fdroid/sync/IndexManager.kt create mode 100644 core/data/src/main/java/com/looker/core/data/fdroid/sync/IndexType.kt create mode 100644 core/data/src/main/java/com/looker/core/data/fdroid/sync/signature/EntryValidator.kt create mode 100644 core/data/src/main/java/com/looker/core/data/fdroid/sync/signature/IndexValidator.kt create mode 100644 core/data/src/main/java/com/looker/core/data/fdroid/sync/workers/DelegatingWorker.kt create mode 100644 core/data/src/main/java/com/looker/core/data/fdroid/sync/workers/SyncWorkHelper.kt create mode 100644 core/data/src/main/java/com/looker/core/data/fdroid/sync/workers/SyncWorker.kt create mode 100644 core/data/src/main/java/com/looker/core/data/utils/ConnectivityManagerNetworkMonitor.kt create mode 100644 core/data/src/main/java/com/looker/core/data/utils/NetworkMonitor.kt create mode 100644 core/data/src/main/java/com/looker/core/data/utils/SyncStatusMonitor.kt create mode 100644 core/database/.gitignore create mode 100644 core/database/build.gradle.kts create mode 100644 core/database/schemas/com.looker.core.database.DroidifyDatabase/1.json create mode 100644 core/database/src/main/assets/repo.db create mode 100644 core/database/src/main/java/com/looker/core/database/Converters.kt create mode 100644 core/database/src/main/java/com/looker/core/database/DroidifyDatabase.kt create mode 100644 core/database/src/main/java/com/looker/core/database/dao/AppDao.kt create mode 100644 core/database/src/main/java/com/looker/core/database/dao/InstalledDao.kt create mode 100644 core/database/src/main/java/com/looker/core/database/dao/RepoDao.kt create mode 100644 core/database/src/main/java/com/looker/core/database/di/DaoModule.kt create mode 100644 core/database/src/main/java/com/looker/core/database/di/DatabaseModule.kt create mode 100644 core/database/src/main/java/com/looker/core/database/model/AppEntity.kt create mode 100644 core/database/src/main/java/com/looker/core/database/model/InstalledEntity.kt create mode 100644 core/database/src/main/java/com/looker/core/database/model/PackageEntity.kt create mode 100644 core/database/src/main/java/com/looker/core/database/model/RepoEntity.kt create mode 100644 core/database/src/main/java/com/looker/core/database/utils/Localization.kt create mode 100644 core/database/src/test/java/com/looker/core/database/LocalizationTest.kt create mode 100644 core/datastore/.gitignore create mode 100644 core/datastore/build.gradle.kts create mode 100644 core/datastore/src/main/java/com/looker/core/datastore/DataStoreSettingsRepository.kt create mode 100644 core/datastore/src/main/java/com/looker/core/datastore/Settings.kt create mode 100644 core/datastore/src/main/java/com/looker/core/datastore/SettingsRepository.kt create mode 100644 core/datastore/src/main/java/com/looker/core/datastore/di/DatastoreModule.kt create mode 100644 core/datastore/src/main/java/com/looker/core/datastore/exporter/SettingsExporter.kt create mode 100644 core/datastore/src/main/java/com/looker/core/datastore/extension/Preferences.kt create mode 100644 core/datastore/src/main/java/com/looker/core/datastore/migration/ProtoDataStoreMigration.kt create mode 100644 core/datastore/src/main/java/com/looker/core/datastore/model/AutoSync.kt create mode 100644 core/datastore/src/main/java/com/looker/core/datastore/model/InstallerType.kt create mode 100644 core/datastore/src/main/java/com/looker/core/datastore/model/ProxyPreference.kt create mode 100644 core/datastore/src/main/java/com/looker/core/datastore/model/ProxyType.kt create mode 100644 core/datastore/src/main/java/com/looker/core/datastore/model/SortOrder.kt create mode 100644 core/datastore/src/main/java/com/looker/core/datastore/model/Theme.kt create mode 100644 core/di/.gitignore create mode 100644 core/di/build.gradle.kts create mode 100644 core/di/src/main/kotlin/com/looker/core/di/CoroutinesModule.kt create mode 100644 core/domain/.gitignore create mode 100644 core/domain/build.gradle.kts create mode 100644 core/domain/src/main/kotlin/com/looker/core/domain/InstalledItem.kt create mode 100644 core/domain/src/main/kotlin/com/looker/core/domain/Product.kt create mode 100644 core/domain/src/main/kotlin/com/looker/core/domain/ProductItem.kt create mode 100644 core/domain/src/main/kotlin/com/looker/core/domain/ProductPreference.kt create mode 100644 core/domain/src/main/kotlin/com/looker/core/domain/Release.kt create mode 100644 core/domain/src/main/kotlin/com/looker/core/domain/Repository.kt create mode 100644 core/domain/src/main/kotlin/com/looker/core/domain/Syncable.kt create mode 100644 core/domain/src/main/kotlin/com/looker/core/domain/newer/App.kt create mode 100644 core/domain/src/main/kotlin/com/looker/core/domain/newer/DataFile.kt create mode 100644 core/domain/src/main/kotlin/com/looker/core/domain/newer/Package.kt create mode 100644 core/domain/src/main/kotlin/com/looker/core/domain/newer/Repo.kt create mode 100644 core/network/.gitignore create mode 100644 core/network/build.gradle.kts create mode 100644 core/network/src/main/java/com/looker/network/Downloader.kt create mode 100644 core/network/src/main/java/com/looker/network/KtorDownloader.kt create mode 100644 core/network/src/main/java/com/looker/network/NetworkResponse.kt create mode 100644 core/network/src/main/java/com/looker/network/di/NetworkModule.kt create mode 100644 core/network/src/main/java/com/looker/network/header/HeadersBuilder.kt create mode 100644 core/network/src/main/java/com/looker/network/header/KtorHeadersBuilder.kt create mode 100644 gradle.properties create mode 100644 gradle/libs.versions.toml create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat create mode 100644 installer/.gitignore create mode 100644 installer/build.gradle.kts create mode 100644 installer/src/main/java/com/looker/installer/InstallManager.kt create mode 100644 installer/src/main/java/com/looker/installer/InstallModule.kt create mode 100644 installer/src/main/java/com/looker/installer/installers/Installer.kt create mode 100644 installer/src/main/java/com/looker/installer/installers/LegacyInstaller.kt create mode 100644 installer/src/main/java/com/looker/installer/installers/root/RootInstaller.kt create mode 100644 installer/src/main/java/com/looker/installer/installers/root/RootPermissionHandler.kt create mode 100644 installer/src/main/java/com/looker/installer/installers/session/SessionInstaller.kt create mode 100644 installer/src/main/java/com/looker/installer/installers/session/SessionInstallerService.kt create mode 100644 installer/src/main/java/com/looker/installer/installers/shizuku/ShizukuInstaller.kt create mode 100644 installer/src/main/java/com/looker/installer/installers/shizuku/ShizukuPermissionHandler.kt create mode 100644 installer/src/main/java/com/looker/installer/model/InstallItem.kt create mode 100644 installer/src/main/java/com/looker/installer/model/InstallState.kt create mode 100644 metadata/en-US/changelogs/42.txt create mode 100644 metadata/en-US/changelogs/43.txt create mode 100644 metadata/en-US/changelogs/47.txt create mode 100644 metadata/en-US/changelogs/48.txt create mode 100644 metadata/en-US/changelogs/49.txt create mode 100644 metadata/en-US/changelogs/50.txt create mode 100644 metadata/en-US/changelogs/51.txt create mode 100644 metadata/en-US/changelogs/52.txt create mode 100644 metadata/en-US/changelogs/53.txt create mode 100644 metadata/en-US/changelogs/54.txt create mode 100644 metadata/en-US/changelogs/55.txt create mode 100644 metadata/en-US/changelogs/56.txt create mode 100644 metadata/en-US/changelogs/57.txt create mode 100644 metadata/en-US/changelogs/58.txt create mode 100644 metadata/en-US/changelogs/581.txt create mode 100644 metadata/en-US/changelogs/582.txt create mode 100644 metadata/en-US/changelogs/583.txt create mode 100644 metadata/en-US/changelogs/584.txt create mode 100644 metadata/en-US/changelogs/590.txt create mode 100644 metadata/en-US/changelogs/591.txt create mode 100644 metadata/en-US/changelogs/592.txt create mode 100644 metadata/en-US/changelogs/593.txt create mode 100644 metadata/en-US/changelogs/594.txt create mode 100644 metadata/en-US/changelogs/595.txt create mode 100644 metadata/en-US/full_description.txt create mode 100644 metadata/en-US/images/featureGraphic.png create mode 100644 metadata/en-US/images/icon.png create mode 100644 metadata/en-US/images/phoneScreenshots/1.png create mode 100644 metadata/en-US/images/phoneScreenshots/2.png create mode 100644 metadata/en-US/images/phoneScreenshots/3.png create mode 100644 metadata/en-US/images/phoneScreenshots/4.png create mode 100644 metadata/en-US/images/promoGraphic.png create mode 100644 metadata/en-US/short_description.txt create mode 100644 metadata/es-AR/changelogs/4.txt create mode 100644 metadata/es-AR/full_description.txt create mode 100644 metadata/es-AR/short_description.txt create mode 100644 renovate.json create mode 100644 settings.gradle.kts create mode 100644 sync/fdroid/.gitignore create mode 100644 sync/fdroid/build.gradle.kts create mode 100644 sync/fdroid/src/androidTest/kotlin/com/looker/sync/fdroid/ExampleInstrumentedTest.kt create mode 100644 sync/fdroid/src/main/AndroidManifest.xml create mode 100644 sync/fdroid/src/main/kotlin/com/looker/sync/fdroid/FdroidSyncable.kt create mode 100644 sync/fdroid/src/main/kotlin/com/looker/sync/fdroid/IndexValidator.kt create mode 100644 sync/fdroid/src/test/kotlin/com/looker/sync/fdroid/ExampleUnitTest.kt create mode 100644 update.sh diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..f8481c3 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,15 @@ +root = true + +[*] +charset = utf-8 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.{kt,kts}] +ktlint_code_style = android_studio +indent_size = 4 +ij_kotlin_name_count_to_use_star_import = 999 +ij_kotlin_name_count_to_use_star_import_for_members = 999 + +[*.{yml,yaml}] +indent_size = 2 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..227ba7c --- /dev/null +++ b/.gitignore @@ -0,0 +1,21 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/app/build/ +/build +/captures +.externalNativeBuild +.cxx +local.properties +/.idea/ +/build-logic/structure/build/ +/core-datastore/build/ +/app/release/ +/app/alpha/ diff --git a/0001-readme_and_add_LeOS_repos.patch b/0001-readme_and_add_LeOS_repos.patch new file mode 100644 index 0000000..bed79a0 --- /dev/null +++ b/0001-readme_and_add_LeOS_repos.patch @@ -0,0 +1,130 @@ +Subject: [PATCH] readme and add LeOS repos +--- +Index: README.md +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/README.md b/README.md +--- a/README.md (revision 606b549c3b7cc2ed522e768543f0428cf91534f4) ++++ b/README.md (revision c17032f99e142d8795ef140a61b160508fc385d9) +@@ -2,72 +2,22 @@ + + Droid-ify + +-# Droid-ify ++# LeOS-Droid + + ### A quick material F-Droid client. + +-[![Github Stars](https://img.shields.io/github/stars/Iamlooker/Droid-ify?color=%2364f573&style=for-the-badge)](https://github.com/Iamlooker/Droid-ify/stargazers) +-[![Github License](https://img.shields.io/github/license/Iamlooker/Droid-ify?color=%2364f573&style=for-the-badge)](https://github.com/Iamlooker/Droid-ify/blob/master/COPYING) +-[![Github Downloads](https://img.shields.io/github/downloads/Iamlooker/Droid-ify/total.svg?color=%23f5ad64&style=for-the-badge)](https://github.com/Iamlooker/Droid-ify/releases/) +-[![Github Latest](https://img.shields.io/github/v/release/Iamlooker/Droid-ify?display_name=tag&color=%23f5ad64&style=for-the-badge)](https://github.com/Iamlooker/Droid-ify/releases/latest) +-[![FDroid Latest](https://img.shields.io/f-droid/v/com.looker.droidify?color=%23f5ad64&style=for-the-badge)](https://f-droid.org/packages/com.looker.droidify) +- +
+ +-## Features ++## :book: Features + +-* Material & Clean design ++* Material F-Droid style ++* No cards or inappropriate animations + * Fast repository syncing +-* Smooth user experience +-* Feature-rich +- +-## Screenshots ++* Standard Android components and minimal dependencies ++* share option + +- + +-## Building and Installing +-1. **Install Android Studio**: +- - Download and install [Android Studio](https://developer.android.com/studio) on your computer if you haven't already. ++## :scroll: License + +-2. **Clone the Repository**: +- - Open Android Studio and select "Project from Version Control." +- - Paste the link to this repository to clone it to your local machine. ++Licensed GPLv3+. \ + +-3. **Build the APK**: +- - In Android Studio, navigate to `Build > APK`. +- - Select "Create New Keystore" and enter the required information, including a password. +- - Wait for the build process to finish. +- +-## TODO +- +-- [ ] Add support for `index-v2` +-- [ ] Add detekt code-analysis +-- [ ] Add GitHub Repo feature +- +-## Contribution +- +-- Pick any issue you would like to resolve +-- Fork the project +-- Open a Pull Request +-- Your PR will undergo review +- +-## Translations +-[![Translation status](https://hosted.weblate.org/widgets/droidify/-/horizontal-auto.svg)](https://hosted.weblate.org/engage/droidify/?utm_source=widget) +- +-## License +- +-``` +-Droid-ify +- +-Copyright (C) 2023 LooKeR +-This program is free software: you can redistribute it and/or modify +-it under the terms of the GNU General Public License as published by +-the Free Software Foundation, either version 3 of the License, or +-(at your option) any later version. +-This program is distributed in the hope that it will be useful, +-but WITHOUT ANY WARRANTY; without even the implied warranty of +-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-GNU General Public License for more details. +-You should have received a copy of the GNU General Public License +-along with this program. If not, see . +-``` +Index: core/data/src/main/java/com/looker/core/data/fdroid/repository/RepoRepository.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/data/src/main/java/com/looker/core/data/fdroid/repository/RepoRepository.kt b/core/data/src/main/java/com/looker/core/data/fdroid/repository/RepoRepository.kt +--- a/core/data/src/main/java/com/looker/core/data/fdroid/repository/RepoRepository.kt (revision 606b549c3b7cc2ed522e768543f0428cf91534f4) ++++ b/core/data/src/main/java/com/looker/core/data/fdroid/repository/RepoRepository.kt (revision c17032f99e142d8795ef140a61b160508fc385d9) +@@ -1,19 +1,19 @@ +-package com.leos.core.data.fdroid.repository ++package com.looker.core.data.fdroid.repository + +-import android.content.Context +-import com.leos.core.model.newer.Repo ++import com.looker.core.domain.newer.Repo + import kotlinx.coroutines.flow.Flow + + interface RepoRepository { + +- fun getRepos(): Flow> ++ suspend fun getRepo(id: Long): Repo ++ ++ fun getRepos(): Flow> + +- suspend fun updateRepo(repo: Repo): Boolean ++ suspend fun updateRepo(repo: Repo) + +- suspend fun enableRepository(repo: Repo, enable: Boolean) ++ suspend fun enableRepository(repo: Repo, enable: Boolean) + +- suspend fun sync(context: Context, repo: Repo, allowUnstable: Boolean): Boolean ++ suspend fun sync(repo: Repo): Boolean + +- suspend fun syncAll(context: Context, allowUnstable: Boolean): Boolean +- +-} +\ No newline at end of file ++ suspend fun syncAll(): Boolean ++} diff --git a/0002-name_change.patch b/0002-name_change.patch new file mode 100644 index 0000000..a7d6499 --- /dev/null +++ b/0002-name_change.patch @@ -0,0 +1,5986 @@ +Subject: [PATCH] name change +--- +Index: app/build.gradle.kts +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/build.gradle.kts b/app/build.gradle.kts +--- a/app/build.gradle.kts (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/app/build.gradle.kts (revision 0458da45767012c818054339c035c122795f8f19) +@@ -76,12 +76,12 @@ + buildTypes { + getByName("debug") { + applicationIdSuffix = ".debug" +- resValue("string", "application_name", "Droid-ify-Debug") ++ resValue("string", "application_name", "LeOS-Droid-Debug") + } + getByName("release") { + isMinifyEnabled = true + isShrinkResources = true +- resValue("string", "application_name", "Droid-ify") ++ resValue("string", "application_name", "LeOS-Droid") + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard.pro" +@@ -90,7 +90,7 @@ + create("alpha") { + initWith(getByName("debug")) + applicationIdSuffix = ".alpha" +- resValue("string", "application_name", "Droid-ify Alpha") ++ resValue("string", "application_name", "LeOS-Droid Alpha") + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard.pro" +@@ -102,7 +102,7 @@ + buildConfigField( + type = "String", + name = "VERSION_NAME", +- value = "\"v${DefaultConfig.versionName}\"" ++ value = "\"v1.6.4\"" + ) + } + } +Index: app/src/main/AndroidManifest.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml +--- a/app/src/main/AndroidManifest.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/app/src/main/AndroidManifest.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -26,9 +26,9 @@ + UTF-8 +=================================================================== +diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml +new file mode 100644 +--- /dev/null (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/app/src/main/res/drawable/ic_launcher_background.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -0,0 +1,78 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +Index: app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +--- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -1,6 +1,5 @@ + + +- +- +- ++ ++ + +\ No newline at end of file +Index: app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +--- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -1,6 +1,5 @@ + + +- +- +- ++ ++ + +\ No newline at end of file +Index: core/common/src/main/res/values-ar/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-ar/strings.xml b/core/common/src/main/res/values-ar/strings.xml +--- a/core/common/src/main/res/values-ar/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-ar/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -216,7 +216,7 @@ + افرض التنظيف + ينظِّف الملفَّات المتكرِّرة + مكِّن المستودع +- أعد تشغيل Droid-ify لرؤية التغييرات ++ أعد تشغيل LeOS-Droid لرؤية التغييرات + يثبّت + في انتظار بدء التثبيت… + حدِّث التطبيقات تلقائيًّا +Index: core/common/src/main/res/values-az/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-az/strings.xml b/core/common/src/main/res/values-az/strings.xml +--- a/core/common/src/main/res/values-az/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-az/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -148,7 +148,7 @@ + İmzasız. Tətbiq siyahısını yoxlamaq mümkün olmadı. İmzasız depolardan proqramları endirərkən diqqətli olun. + Repozitoriya əlçatmazdır + %s tələb edir +- Dəyişiklikləri görmək üçün Droid-ify-ı yenidən başladın ++ Dəyişiklikləri görmək üçün LeOS-Droid-ı yenidən başladın + Səssiz Quraşdırma + Səssiz quraşdırmalar üçün kök icazəsinə icazə verin + Yadda saxla +Index: core/common/src/main/res/values-be/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-be/strings.xml b/core/common/src/main/res/values-be/strings.xml +--- a/core/common/src/main/res/values-be/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-be/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -80,7 +80,7 @@ + Ўсталяванне + Ваша платформа %1$s не падтрымліваецца. Падтрымліваюцца платформы: %2$s. + Рэпазітар недасяжны +- Перазапусціце Droid-ify, каб убачыць змены ++ Перазапусціце LeOS-Droid, каб убачыць змены + Адсутныя функцыі. + Няма даступных прыкладанняў + Пароль адсутнічае +Index: core/common/src/main/res/values-bg/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-bg/strings.xml b/core/common/src/main/res/values-bg/strings.xml +--- a/core/common/src/main/res/values-bg/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-bg/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -202,7 +202,7 @@ + Автоматично актуализиране на приложения + Инсталиране + Опитайте се да инсталирате актуализации автоматично +- Рестартирайте Droid-ify, за да видите промените ++ Рестартирайте LeOS-Droid, за да видите промените + Изчакване за стартиране на инсталацията… + Любими + Активирайте хранилището +Index: core/common/src/main/res/values-bn/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-bn/strings.xml b/core/common/src/main/res/values-bn/strings.xml +--- a/core/common/src/main/res/values-bn/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-bn/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -130,7 +130,7 @@ + সম্প্রতি আপডেট করা হয়েছে + ভান্ডার + এই সংগ্রহস্থল এখনও ব্যবহার করা হয় নি. এটিতে থাকা অ্যাপ্লিকেশনগুলি দেখতে এটি চালু করুন। +- পরিবর্তনগুলি দেখতে Droid-ify পুনরায় চালু করুন ++ পরিবর্তনগুলি দেখতে LeOS-Droid পুনরায় চালু করুন + পুরানো সংস্করণ দেখান + +%d আরো + প্রিয় +Index: core/common/src/main/res/values-ca/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-ca/strings.xml b/core/common/src/main/res/values-ca/strings.xml +--- a/core/common/src/main/res/values-ca/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-ca/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -207,6 +207,6 @@ + Neteja els fitxers redundants + Habiliteu el repositori + S\'està esperant per iniciar la instal·lació… +- Reinicieu Droid-ify per veure els canvis ++ Reinicieu LeOS-Droid per veure els canvis + Instal·lació + +\ No newline at end of file +Index: core/common/src/main/res/values-cs/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-cs/strings.xml b/core/common/src/main/res/values-cs/strings.xml +--- a/core/common/src/main/res/values-cs/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-cs/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -207,7 +207,7 @@ + Vynutit vyčištění + Repozitář nedostupný + Povolit repozitář +- Pro zobrazení změn restartujte Droid-ify ++ Pro zobrazení změn restartujte LeOS-Droid + Čekání na spuštění instalace… + Instalace + Automatická aktualizace aplikací +Index: core/common/src/main/res/values-de/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-de/strings.xml b/core/common/src/main/res/values-de/strings.xml +--- a/core/common/src/main/res/values-de/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-de/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -205,7 +205,7 @@ + Repository aktivieren + Entfernt doppelte Dateien + Installation +- Starten Sie Droid-ify neu, um die Änderungen zu sehen ++ Starten Sie LeOS-Droid neu, um die Änderungen zu sehen + Warten auf den Beginn der Installation … + Apps automatisch aktualisieren + Versuche, Updates automatisch zu installieren +Index: core/common/src/main/res/values-el/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-el/strings.xml b/core/common/src/main/res/values-el/strings.xml +--- a/core/common/src/main/res/values-el/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-el/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -204,7 +204,7 @@ + Αναγκαστική εκκαθάριση + Καθαρίζει τα περιττά αρχεία + Ενεργοποιήστε το αποθετήριο +- Επανεκκινήστε το Droid-ify για να δείτε αλλαγές ++ Επανεκκινήστε το LeOS-Droid για να δείτε αλλαγές + Εγκατάσταση + Αναμονή για έναρξη εγκατάστασης… + Αυτόματη ενημέρωση εφαρμογών +Index: core/common/src/main/res/values-eo/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-eo/strings.xml b/core/common/src/main/res/values-eo/strings.xml +--- a/core/common/src/main/res/values-eo/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-eo/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -70,7 +70,7 @@ + Instalante + Via %1$s platformo ne estas subtenata. Subtenataj platformoj: %2$s. + Deponejo neatingebla +- Rekomenci Droid-ify por vidi ŝanĝojn ++ Rekomenci LeOS-Droid por vidi ŝanĝojn + Uzantnomo mankas + Konektanta… + Ĝisdatigi +Index: core/common/src/main/res/values-es/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-es/strings.xml b/core/common/src/main/res/values-es/strings.xml +--- a/core/common/src/main/res/values-es/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-es/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -208,7 +208,7 @@ + Limpiar archivos redundantes + Habilitar el repositorio + Instalando +- Reinicia Droid-ify para ver los cambios ++ Reinicia LeOS-Droid para ver los cambios + Esperando para iniciar la instalación… + Actualización automática de aplicaciones + Intentar instalar actualizaciones automáticamente +Index: core/common/src/main/res/values-fa/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-fa/strings.xml b/core/common/src/main/res/values-fa/strings.xml +--- a/core/common/src/main/res/values-fa/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-fa/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -201,7 +201,7 @@ + از تم رنگی material you استفاده کنید + مخزن را فعال کنید + پاکسازی اجباری +- برای مشاهده تغییرات، Droid-ify را مجددا راه اندازی کنید ++ برای مشاهده تغییرات، LeOS-Droid را مجددا راه اندازی کنید + موارد دلخواه + مخزن قابل دسترسی نیست + به‌روز رسانی خودکار برنامه‌ها +Index: core/common/src/main/res/values-fi/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-fi/strings.xml b/core/common/src/main/res/values-fi/strings.xml +--- a/core/common/src/main/res/values-fi/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-fi/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -205,7 +205,7 @@ + Puhdistaa tarpeettomat tiedostot + Ohjelmavarasto ei ole tavoitettavissa + Asentaa +- Käynnistä Droid-ify uudelleen nähdäksesi muutokset ++ Käynnistä LeOS-Droid uudelleen nähdäksesi muutokset + Odotetaan asennuksen aloittamista… + Päivitä sovelluksia automaattisesti + Yritä asentaa päivitykset automaattisesti +Index: core/common/src/main/res/values-fr/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-fr/strings.xml b/core/common/src/main/res/values-fr/strings.xml +--- a/core/common/src/main/res/values-fr/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-fr/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -208,7 +208,7 @@ + Nettoyer les fichiers redondants + Activer le dépôt + Installation +- Redémarrez Droid-ify pour voir les changements ++ Redémarrez LeOS-Droid pour voir les changements + En attente du démarrage de l\'installation… + Mise à jour automatique des applis + Essayez d\'installer les mises à jour automatiquement +Index: core/common/src/main/res/values-gl/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-gl/strings.xml b/core/common/src/main/res/values-gl/strings.xml +--- a/core/common/src/main/res/values-gl/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-gl/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -205,7 +205,7 @@ + Forzala limpeza + Activalo repositorio + Instalando +- Reinicia Droid-ify para velos cambios ++ Reinicia LeOS-Droid para velos cambios + Agardando para iniciala instalación… + Actualizacións automática das aplicacións + Tenta instalar actualizacións automaticamente +Index: core/common/src/main/res/values-hi/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-hi/strings.xml b/core/common/src/main/res/values-hi/strings.xml +--- a/core/common/src/main/res/values-hi/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-hi/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -207,7 +207,7 @@ + ऐप्स को ऑटो अपडेट करें + अपडेटस को स्वचालित रूप से इंस्टॉल करने का प्रयास करें + रिपॉजिटरी को सक्षम करें +- बदलाव देखने के लिए Droid-ify को रीस्टार्ट करें ++ बदलाव देखने के लिए LeOS-Droid को रीस्टार्ट करें + इंस्टॉल कर रहा है + गैर-मुक्त घटक हैं + सर्वर नया पैकेट प्रदान करने में विफल रहा। +Index: core/common/src/main/res/values-hu/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-hu/strings.xml b/core/common/src/main/res/values-hu/strings.xml +--- a/core/common/src/main/res/values-hu/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-hu/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -199,7 +199,7 @@ + Nincs internet-hozzáférés + Próbálja automatikusan telepíteni a frissítéseket + Telepítés… +- Indítsa újra a Droid-ify-t a változások megtekintéséhez ++ Indítsa újra a LeOS-Droid-t a változások megtekintéséhez + Várakozás a telepítés megkezdésére … + Kedvencek + Eltakarítja a redundáns fájlokat +Index: core/common/src/main/res/values-in/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-in/strings.xml b/core/common/src/main/res/values-in/strings.xml +--- a/core/common/src/main/res/values-in/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-in/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -205,7 +205,7 @@ + Menunggu untuk memulai pemasangan… + Perbarui aplikasi secara otomatis + Cobalah untuk menginstal pembaruan secara otomatis +- Ulang Droid-ify untuk melihat perubahan ++ Ulang LeOS-Droid untuk melihat perubahan + Memiliki komponen tidak terbuka + Server gagal menyediakan paket baru. + Tidak dapat terhubung ke server +Index: core/common/src/main/res/values-it/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-it/strings.xml b/core/common/src/main/res/values-it/strings.xml +--- a/core/common/src/main/res/values-it/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-it/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -210,7 +210,7 @@ + Abilita il repository + Installazione + In attesa di avviare l\'installazione… +- Riavvia Droid-ify per vedere le modifiche ++ Riavvia LeOS-Droid per vedere le modifiche + Aggiornamento automatico delle app + Prova a installare gli aggiornamenti automaticamente + Ha componenti non liberi +Index: core/common/src/main/res/values-ja/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-ja/strings.xml b/core/common/src/main/res/values-ja/strings.xml +--- a/core/common/src/main/res/values-ja/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-ja/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -205,7 +205,7 @@ + 強制的にクリーンアップ + 冗長ファイルをクリーンアップする + Material You カラーテーマを使用する +- Droid-ify を再起動して変更を確認する ++ LeOS-Droid を再起動して変更を確認する + 不自由なコンポーネントを含む + ホーム画面のスワイプ + コンテンツには安全ではないものが含まれています +Index: core/common/src/main/res/values-kn/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-kn/strings.xml b/core/common/src/main/res/values-kn/strings.xml +--- a/core/common/src/main/res/values-kn/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-kn/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -208,5 +208,5 @@ + ವಸ್ತು ನೀವು + ವಸ್ತು ನೀವು ಬಣ್ಣದ ಥೀಮ್ ಬಳಸಿ + ರೆಪೊಸಿಟರಿಯನ್ನು ತಲುಪಲಾಗುವುದಿಲ್ಲ +- ಬದಲಾವಣೆಗಳನ್ನು ನೋಡಲು Droid-ify ಅನ್ನು ಮರುಪ್ರಾರಂಭಿಸಿ ++ ಬದಲಾವಣೆಗಳನ್ನು ನೋಡಲು LeOS-Droid ಅನ್ನು ಮರುಪ್ರಾರಂಭಿಸಿ + +\ No newline at end of file +Index: core/common/src/main/res/values-ko/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-ko/strings.xml b/core/common/src/main/res/values-ko/strings.xml +--- a/core/common/src/main/res/values-ko/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-ko/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -202,7 +202,7 @@ + 비밀번호 + 권한 + +%d개 더 +- Droid-ify를 다시 시작하여 변경 사항 확인 ++ LeOS-Droid를 다시 시작하여 변경 사항 확인 + 자동 설치 + 설정 + 안전하지 않은 알고리즘을 사용하여 서명됨 +Index: core/common/src/main/res/values-lt/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-lt/strings.xml b/core/common/src/main/res/values-lt/strings.xml +--- a/core/common/src/main/res/values-lt/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-lt/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -203,7 +203,7 @@ + Automatinis programų atnaujinimas + Pabandykite automatiškai įdiegti naujinimus + Diegimas +- Iš naujo paleiskite Droid-ify, kad pamatytumėte pakeitimus ++ Iš naujo paleiskite LeOS-Droid, kad pamatytumėte pakeitimus + Laukiama, kol bus pradėtas diegimas… + Mėgstamiausi + Saugykla nepasiekiama +Index: core/common/src/main/res/values-lv/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-lv/strings.xml b/core/common/src/main/res/values-lv/strings.xml +--- a/core/common/src/main/res/values-lv/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-lv/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -203,7 +203,7 @@ + Automātiski atjaunināt lietotnes + Mēģiniet automātiski instalēt atjauninājumus + Instalēšana +- Restartējiet Droid-ify, lai redzētu izmaiņas ++ Restartējiet LeOS-Droid, lai redzētu izmaiņas + Gaida instalēšanas sākšanu… + Izlase + Iespējot repozitoriju +Index: core/common/src/main/res/values-ml/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-ml/strings.xml b/core/common/src/main/res/values-ml/strings.xml +--- a/core/common/src/main/res/values-ml/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-ml/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -100,7 +100,7 @@ + പാസ്‌വേഡ് കാണുന്നില്ല + അനുമതികൾ + %s ആവശ്യമാണ് +- മാറ്റങ്ങൾ കാണുന്നതിന് Droid-ify പുനരാരംഭിക്കുക ++ മാറ്റങ്ങൾ കാണുന്നതിന് LeOS-Droid പുനരാരംഭിക്കുക + സോക്സ് പ്രോക്സി + അടുക്കൽ ക്രമം + സിസ്റ്റം +Index: core/common/src/main/res/values-nb-rNO/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-nb-rNO/strings.xml b/core/common/src/main/res/values-nb-rNO/strings.xml +--- a/core/common/src/main/res/values-nb-rNO/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-nb-rNO/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -208,7 +208,7 @@ + Installer nye versjoner av programmer automatisk + Venter på å starte installasjon … + Installerer +- Start Droid-ify på ny for å ta i bruk endringene ++ Start LeOS-Droid på ny for å ta i bruk endringene + Har ufrie komponenter + Hjemmeskjermsdragning + Inneholder sensurerbart innhold +Index: core/common/src/main/res/values-nl/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-nl/strings.xml b/core/common/src/main/res/values-nl/strings.xml +--- a/core/common/src/main/res/values-nl/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-nl/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -199,7 +199,7 @@ + Laat de topbalk uitbreiden en instorten + Apps automatisch bijwerken + Installeren +- Start Droid-ify opnieuw om de wijzigingen te zien ++ Start LeOS-Droid opnieuw om de wijzigingen te zien + Favorieten + Materiaal jij + Gebruik materiaal jij kleurthema +Index: core/common/src/main/res/values-nn/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-nn/strings.xml b/core/common/src/main/res/values-nn/strings.xml +--- a/core/common/src/main/res/values-nn/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-nn/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -204,7 +204,7 @@ + Slå på samlinga + Nytt «Material You»-letar + Material You +- Byrje om Droid-ify for å sjå brigde ++ Byrje om LeOS-Droid for å sjå brigde + Legg inn + Ventar på å leggja inn … + Oppdater appane sjølvverkande +Index: core/common/src/main/res/values-or/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-or/strings.xml b/core/common/src/main/res/values-or/strings.xml +--- a/core/common/src/main/res/values-or/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-or/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -207,7 +207,7 @@ + ଅଟୋ ଅପଡେଟ୍ ଆପ୍ସ + ସ୍ୱୟଂଚାଳିତ ଭାବରେ ଅଦ୍ୟତନଗୁଡିକ ସଂସ୍ଥାପନ କରିବାକୁ ଚେଷ୍ଟା କରନ୍ତୁ + ସଂସ୍ଥାପନ କରୁଅଛି +- ପରିବର୍ତ୍ତନଗୁଡିକ ଦେଖିବାକୁ Droid-ify ପୁନ Rest ଆରମ୍ଭ କରନ୍ତୁ ++ ପରିବର୍ତ୍ତନଗୁଡିକ ଦେଖିବାକୁ LeOS-Droid ପୁନ Rest ଆରମ୍ଭ କରନ୍ତୁ + ସ୍ଥାପନ ଆରମ୍ଭ କରିବାକୁ ଅପେକ୍ଷା କରିଛି… + ଅନାବଶ୍ୟକ ଉପାଦାନଗୁଡ଼ିକ ଅଛି + ସର୍ଭର ନୂତନ ପ୍ୟାକେଟ ପ୍ରଦାନ କରିବାରେ ବିଫଳ ହୋଇଛି । +Index: core/common/src/main/res/values-pa/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-pa/strings.xml b/core/common/src/main/res/values-pa/strings.xml +--- a/core/common/src/main/res/values-pa/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-pa/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -205,7 +205,7 @@ + ਬੇਲੋੜੀਆਂ ਫਾਈਲਾਂ ਨੂੰ ਸਾਫ਼ ਕਰਦਾ ਹੈ + ਐਪਸ ਨੂੰ ਆਟੋ ਅੱਪਡੇਟ ਕਰੋ + ਇੰਸਟਾਲ ਕਰ ਰਿਹਾ ਹੈ +- ਤਬਦੀਲੀਆਂ ਦੇਖਣ ਲਈ Droid-ify ਨੂੰ ਰੀਸਟਾਰਟ ਕਰੋ ++ ਤਬਦੀਲੀਆਂ ਦੇਖਣ ਲਈ LeOS-Droid ਨੂੰ ਰੀਸਟਾਰਟ ਕਰੋ + ਰਿਪੋਜ਼ਟਰੀ ਨੂੰ ਸਮਰੱਥ ਬਣਾਓ + ਅੱਪਡੇਟਾਂ ਨੂੰ ਸਵੈਚਲਿਤ ਤੌਰ \'ਤੇ ਇੰਸਟਾਲ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ + ਇੰਸਟਾਲੇਸ਼ਨ ਸ਼ੁਰੂ ਕਰਨ ਦੀ ਉਡੀਕ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ… +Index: core/common/src/main/res/values-pl/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-pl/strings.xml b/core/common/src/main/res/values-pl/strings.xml +--- a/core/common/src/main/res/values-pl/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-pl/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -207,7 +207,7 @@ + Silnik motywu Monet + Włącz repozytorium + Instalowanie +- Uruchom Droid-ify ponownie, aby zastosować zmiany ++ Uruchom LeOS-Droid ponownie, aby zastosować zmiany + Oczekiwanie na rozpoczęcie instalacji… + Ulubione + Wymuś oczyszczenie +Index: core/common/src/main/res/values-pt-rBR/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-pt-rBR/strings.xml b/core/common/src/main/res/values-pt-rBR/strings.xml +--- a/core/common/src/main/res/values-pt-rBR/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-pt-rBR/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -211,7 +211,7 @@ + Repositório inacessível + Ativar o repositório + Instalando +- Reinicie o Droid-ify para ver as alterações ++ Reinicie o LeOS-Droid para ver as alterações + Aguardando para iniciar a instalação… + Atualizar aplicativos automaticamente + Tente instalar atualizações automaticamente +Index: core/common/src/main/res/values-pt/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-pt/strings.xml b/core/common/src/main/res/values-pt/strings.xml +--- a/core/common/src/main/res/values-pt/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-pt/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -209,7 +209,7 @@ + Ativar repositório + À espera para começar a instalação… + A instalar +- Reiniciar Droid-ify para ver as alterações ++ Reiniciar LeOS-Droid para ver as alterações + Atualizações automáticas + Tentar atualizar aplicações automaticamente + Tem componentes não livres +Index: core/common/src/main/res/values-ro/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-ro/strings.xml b/core/common/src/main/res/values-ro/strings.xml +--- a/core/common/src/main/res/values-ro/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-ro/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -210,6 +210,6 @@ + Actualizare automată a aplicațiilor + Se așteaptă începerea instalării… + Încercați să instalați actualizările automat +- Reporniți Droid-ify pentru a vedea modificările ++ Reporniți LeOS-Droid pentru a vedea modificările + Instalarea + +\ No newline at end of file +Index: core/common/src/main/res/values-ru/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-ru/strings.xml b/core/common/src/main/res/values-ru/strings.xml +--- a/core/common/src/main/res/values-ru/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-ru/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -211,7 +211,7 @@ + Произвести очистку + Удаление лишних файлов + Включить репозиторий +- Перезапустите Droid-ify для применения изменений ++ Перезапустите LeOS-Droid для применения изменений + Установка + Ожидание начала установки… + Автообновление приложений +Index: core/common/src/main/res/values-ryu/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-ryu/strings.xml b/core/common/src/main/res/values-ryu/strings.xml +--- a/core/common/src/main/res/values-ryu/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-ryu/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -208,7 +208,7 @@ + ちゅーしちちーがクリーンアップさびーん + じょうはべるファイルクリーンアップさびーん + Material Youぬカラーテーマしーようさびーん +- Droid-ifyさいきぬーんちへんかんかくにんすん ++ LeOS-Droidさいきぬーんちへんかんかくにんすん + ふじゆーるなコンポーネントくくまびーん + ホームやしがみんぬスワイプ + コンテンツんかえーあんさんやあらんむんがくくまっとーいびーん +Index: core/common/src/main/res/values-sl/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-sl/strings.xml b/core/common/src/main/res/values-sl/strings.xml +--- a/core/common/src/main/res/values-sl/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-sl/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -211,7 +211,7 @@ + Aktiviraj skladišče + Odstrani podvojene datoteke + Nameščanje +- Znova zaženite Droid-ify, da vidite spremembe ++ Znova zaženite LeOS-Droid, da vidite spremembe + Čakanje na začetek namestitve … + Samodejno posodobite aplikacije + Poskusite samodejno namestiti posodobitve +Index: core/common/src/main/res/values-sr/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-sr/strings.xml b/core/common/src/main/res/values-sr/strings.xml +--- a/core/common/src/main/res/values-sr/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-sr/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -72,7 +72,7 @@ + Инсталирање + Ваша платформа %1$s није подржана. Подржане платформе: %2$s. + Репозиторијум је недоступан +- Рестартујте Droid-ify да бисте видели промене ++ Рестартујте LeOS-Droid да бисте видели промене + Недостаје корисничко име + Повезивање… + Ажурирање +Index: core/common/src/main/res/values-sv/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-sv/strings.xml b/core/common/src/main/res/values-sv/strings.xml +--- a/core/common/src/main/res/values-sv/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-sv/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -205,7 +205,7 @@ + Tvinga städning + Aktivera arkivet + Installerar +- Starta om Droid-ify för att se ändringarna ++ Starta om LeOS-Droid för att se ändringarna + Väntar på att starta installationen… + Uppdatera appar automatiskt + Försök att installera uppdateringar automatiskt +Index: core/common/src/main/res/values-tl/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-tl/strings.xml b/core/common/src/main/res/values-tl/strings.xml +--- a/core/common/src/main/res/values-tl/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-tl/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -144,7 +144,7 @@ + Bilang ng mga aplikasyon + Nagtataguyod ng mga serbisyo na hindi libre sa network + Uri ng proxy +- I-restart ang Droid-ify para makita ang mga pagbabago ++ I-restart ang LeOS-Droid para makita ang mga pagbabago + Magpakita ng higit pa + Nilagdaan gamit ang hindi ligtas na algorithm + Pag-uuri ng pagkakasunud-sunod +Index: core/common/src/main/res/values-tr/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-tr/strings.xml b/core/common/src/main/res/values-tr/strings.xml +--- a/core/common/src/main/res/values-tr/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-tr/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -206,7 +206,7 @@ + Gereksiz dosyaları temizler + Depoyu etkinleştir + Kuruluyor +- Değişiklikleri görmek için Droid-ify\'ı yeniden başlatın ++ Değişiklikleri görmek için LeOS-Droid\'ı yeniden başlatın + Kurulumun başlatılması bekleniyor… + Uygulamaları otomatik güncelle + Güncellemeleri otomatik olarak kurmaya çalış +Index: core/common/src/main/res/values-uk/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-uk/strings.xml b/core/common/src/main/res/values-uk/strings.xml +--- a/core/common/src/main/res/values-uk/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-uk/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -212,7 +212,7 @@ + Автооновлення застосунков + Намагатися встановити оновлення автоматично + Встановлення +- Перезапустіть Droid-ify, щоб побачити зміни ++ Перезапустіть LeOS-Droid, щоб побачити зміни + Увімкніть репозиторій + Очікування початку встановлення… + Має невільні компоненти +Index: core/common/src/main/res/values-vi/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-vi/strings.xml b/core/common/src/main/res/values-vi/strings.xml +--- a/core/common/src/main/res/values-vi/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-vi/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -205,7 +205,7 @@ + Dọn dẹp các tệp dư thừa + Kho lưu trữ không thể truy cập + Kích hoạt kho lưu trữ +- Khởi động lại Droid-ify để xem thay đổi ++ Khởi động lại LeOS-Droid để xem thay đổi + Vuốt màn hình chính + Chứa nội dung không an toàn cho công việc + Có các thành phần không tự do +Index: core/common/src/main/res/values-zh-rCN/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-zh-rCN/strings.xml b/core/common/src/main/res/values-zh-rCN/strings.xml +--- a/core/common/src/main/res/values-zh-rCN/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-zh-rCN/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -205,7 +205,7 @@ + 启用此存储库 + Material You 设计 + 等待开始安装… +- 重新启动 Droid-ify 使更改生效 ++ 重新启动 LeOS-Droid 使更改生效 + 包含非自由组件 + 服务器未能提供新数据包。 + 无法连接服务器 +Index: core/common/src/main/res/values-zh-rTW/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values-zh-rTW/strings.xml b/core/common/src/main/res/values-zh-rTW/strings.xml +--- a/core/common/src/main/res/values-zh-rTW/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values-zh-rTW/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -204,7 +204,7 @@ + 自動更新程式 + 嘗試自動安裝更新 + 安裝 +- 重新啟動 Droid-ify 查看更變 ++ 重新啟動 LeOS-Droid 查看更變 + 等待開始安裝… + 具有非自由元件 + 無法連線至伺服器 +Index: core/common/src/main/res/values/strings.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/res/values/strings.xml b/core/common/src/main/res/values/strings.xml +--- a/core/common/src/main/res/values/strings.xml (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/core/common/src/main/res/values/strings.xml (revision 0458da45767012c818054339c035c122795f8f19) +@@ -171,7 +171,7 @@ + Unsigned. Could not verify the application list. Be careful downloading applications from unsigned repositories. + Repository unreachable + Requires %s +- Restart Droid-ify to see changes ++ Restart LeOS-Droid to see changes + Silent Install + Allow root permission for silent installs + Save +Index: metadata/en-US/short_description.txt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/metadata/en-US/short_description.txt b/metadata/en-US/short_description.txt +--- a/metadata/en-US/short_description.txt (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/metadata/en-US/short_description.txt (revision 0458da45767012c818054339c035c122795f8f19) +@@ -1,1 +1,1 @@ +-Material-ify with Droid-ify. +\ No newline at end of file ++Material-ify with LeOS-Droid. +Index: settings.gradle.kts +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/settings.gradle.kts b/settings.gradle.kts +--- a/settings.gradle.kts (revision c17032f99e142d8795ef140a61b160508fc385d9) ++++ b/settings.gradle.kts (revision 0458da45767012c818054339c035c122795f8f19) +@@ -15,7 +15,7 @@ + } + } + +-rootProject.name = "Droid-ify" ++rootProject.name = "LeOS-Droid" + include( + ":app", + ":core:common", +diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png +index cbc409571658e8c4c887051b768469afd255f7f6..db2ed4c70a962646c834da89547d49bae5ded3d8 +GIT binary patch +literal 128798 +zc%007_al|>|G&NWUXd+ZlH_orGAo+4V}!~$Mj7E8o3e5$6glA)mA$uPWSodJ4l<5$ +zkgVf~b8wvVxsTr8|Ka;XI;U>;b>GkN7|-i^VtdV;n?r(wj*gDo(&Ew$IyweA+8;I+ +z;IF^oKMv^VV(2U{ncNC@U4O%z@4WOgSvmHcgfrtip{8#)R0Q58%Dp?+S16RTa6`q> +zs>b8;Q^j+io?I~Xd(J1iAPM=Rv=*Ris7u`<6K8tc4@Ww5>tv(e%@y(v3s9;}5%T5PIC#Nc8Ptd`Pp5eYc0UxYw({1j{iw?(Pn*gCY>WDm(} +z>z-!aN+qHXm)DXry{vP``8e4`cSMLpU5Qub7zwV)n+m +zs6-eHQ#u?7q3B2js_K3UP7q;ZX)M3*>}0I9kHD$*Nru)pO +zrWWEjJE{m*i#Rphec*r&Q%JVRcsY#7S2A!3uEp6QdKIuaQ6>cX+@iTN=wi3>tP>2g +z=C*8619N+IH=I5`xU1eek>yTr7DG6BRTnJcjVxfSgR;3vzi)v;o=4dPKf{S?ABL6S +z7|>n_14JTXP0?DxT5+gcJ?tAr9G(O3MQJ>9)_A3100~aQT|#Fekd}MT$xS%0`_l|3 +zHx2<2Wk<2CLK-q!j-KHW`x-MPEl +z1JU{>1WEMmdsN3$+0JS$H-Zarq(}lso_DYy40oQBX=gj&0$PtF!xA3`@6- +zJs)5F0o;-&!Qk9zZ0v+^WJvYWX-qhLQUz7xrS|1Iw?P5KW)cW>59BiZym{wVk@!78PC_aGY@wz!f?h* +zl-WNMtkJ@T_I$Vei#Z@v_ +zja?I24LN+>t^~*7Y;!B={R!@9C-;8#C?gqG&oXt6`iouuVrg98E=}#tM?UxH8lPm= +zj#*xN>LMxfRGp^<+U{!TI^TfWCr($XvxT?GbP0(`T@KP<-vaX`o{XEY@75Q*avRI) +z4I5~2hNB&{D-0!!OuF@dhjGuc_-7{4wXyo0syhnP8lH}j$&KGx-drTtun1H{i`>hP +z{CmREGQM3x7Ev=B+`6IjkuPU11UQ90 +z_%jFHmlS9}Arjv1GE0%mJuFtQmY-zxhA_M219{Pm{gjvI{ZRNyBurqq`#H2Lojw{h +zC;29knHS>>?#iGO6`%-|NM4vb`pxqxYQ$m~-_T$)ggwFHSU)caMvvUJb2m#>6o5o3p92u?clz?&rV}AmNgCUlRS!tIjo2ua6c?6@Vd; +z^^`J2?6Z81or0yvFi#V#*0kp*C+*C5m(Lf3;@CVc#zUpW@<1#lGhi|A+15hgj>ety +zgfOzptSGmpU9iyb=RoOa_q|nfQt$g>d>gdmvq+;pT%(WEB9hoWY5nDIVao=@bB=bSR;giTfcGSET`VBQyMN55Fkq*^FS)IsMgWflGXn +z8g6cNYCvKNJa)N<>5XS3pYfZ6q@Vj`t7kcD8r(c>O;AJYAOsbCPKpd=Q!Ag}@*MnR +zwQr~{Ez+yL+{&>0xAG2W2y%$}0N+xtsF7+b`}eRXpK+8?QxqI@TaWvt+c)OiSB^J7 +zex3UI!e4p?=4IwYv;(=SzDf=E`#=uMz~LIB4X^C2`5RpU_(g!dUT^Ep-1?=V_K^p&){{W*M)5pT#@ +zelI04Rwn)g$jR%ITPz{cdOmNNH0a-OP{`s}?`t?Z)?RllNc9?efd8Vem}?LsUSflM +za_VNS_Wf^mx#xn?$dL@*SMp*V>S}A;x*dgt$}e~>av6jQdY_qi=*vmcH7*g>E{$+u +z51EMx*bF&o=!lxu2Q;x|Bnw}a&@ZMLu&K1wNU&!Ly|S`3&njud%VvY +zw~Yb~-%oYk>GFTc=$R;azO}Yk*u&!Cg=XIHsU3I6(a~<_@{}!^%G>Vq{UcwLf*wmC +zS-GyT!$apM_+|ZW`r8FmJ)jT2#wd}!ERS-d7b(ws@`_UlO_7S%0!zlpZgKU`jkCIS +zmBnlSZg3~;-b<6#W_DQgcJJ@m&qW0&-nnz!U}{nU`feyJBjZHyW*+A6qhsy4q%j +zj8^tL_}p0-)>RE$UR@$=apWH+KX88N%2?T2#FGg=FaEr);Nt!5q4yuelarE6TRP5H +zr_MozK@-)?S8Ss>>MqpqQdn1_Epm-3vgWXo-j$=TjHeC--A6ineDh0Cg%!~a_HQ0> +zwl6fKG@N<+PAARcBDdUbM9Pm56YDQIDYx2_1N%bmslwR$ki?6d(Jl5nr7FRdDRNui +zv=(OW4shcUEAd)-p^1BG@J(@s#?OVp~B1#)VaIw{CCj(Vej +zjJMa~v*MYxr@n3({raWDAFl;9`%bXBl~IuR3JFT~S%xI5Now}DJX%3hK#a +zAF>y`UVl@*ae@I6^!Jaj`DnrLMAM{o=d5WbYDq+6f?DbuIN!3k{To}0Kk!x4ChzRp +zH+b;(xEIX!es3g8$Gb2^afM{%7?WfSn|so=A|Nba-IC1VSh{HVCfT?`G)2mOAfl# +z{NeXR16^v~DxMuIVtQ@l+Kpfj*CBK`WsH +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 +zE09YQ1?Ivkum!tq8tQGd)XZj61-uSg +z0qI8i0gZd}T6Ouv_1PFhYyN7V-uZLJM0c{0FTV)1i#lJ~l__ba7EyWfcQH8tSU#fzs(t`7B`XsYTnIUM&K+N{BRKWz5~;Hv?a +z2uD6^+6}<~D1mwgQvJaKLoX_1<{Yl84U}ScGv@z5^cUZuZo4nzJZ{|%c6a+I7gO3( +zlZf_}B=amwt#A2VCm%LW%`X^B2=b2PZ|_LK8iOLTgyO)0iz}l`#PI6{_rx7vXBU2W +zAn$eGtx|_(^p7PKUH4s?i^V0ZaFrQ +z)}^DNs5ord%$DZg;@znY0Lc9DhMY&!!p8u-dWR%PBQ3Hk1`ErA)B@xSb%Gye!+Q>r +zPtsFH6~I|!HZ&gYM7U})BKcb+@Tnc#A%r&HN!eLL17Znzh_ +z_C~EdKXqS^G)^a$_WRk@1Z~wU7SQ&xdOuxa_)t()Z +zr`)4%yTovLWQZM3Y_KNjv$;*pQIoo;R_@ZCSB)Hz +zs(vbbtz9`=vZ9Q8Vagq~+)0Y=RtxuZrRRuXch6v$-ldz~a~{B_GAsc8UEIWmC}5Fr^)qY0CSNBq&ReDTqXZ3>k#-&f&=eJf5OeDItMXk +zX|u)B#XyDSZeAsQeBK3-?g_U9udSG(CS{>(;R=wPsH+4lLd&{S1^PjB%;-Qa^j?&B +z^dHw={W>~P+0Q1Xax6HwS2~fc3!A3R; +zwHp}=phVjecJ|@l^EWrZlrHV(OIKE3N14 +z)}SspQ9={Yk62qtlA=u(=r*B#WWl7vvw1bao4m61ljQBK^WdWc)7RYg;is(ErN4%2 +zyA2d;r8R{8?t1d+Gfes+F|Otv%A%7ugoRnFwU;qc6|YMYljO_1{kEorr(tcpP!-N$ +zwM-m9=(8@afwlTbH#xPJt3A?w74jFi_HVyiuhk*6qY%m3*Q7r)q04O<$miFHj`PTX +zEJ(oM)WM7}#T5gsz(ZYrCno?xaZ?W50E;YysIC$7b|W27nuL&ffK!hE^Mm|+fHh^H +zR9SV(?IUoU2r44#nyd6E+h9Teat*x5eDV9lI~+3^MAgf0q!>9n>?yk1*K*YjyeJ9` +zHToFxAKPGjgv;ZG4>Kpz?pGMh`RLL?yPWk1_j3D6oJYSGj_bz585yabSutR95g2|Y +zf^xa6=5b3Gc;$3HBtm76XDexQ`(Yhy!MOsgv!+bixD4AYN4|^i0Z$%qlZh{;tqIDA +zLyOgF_+Pto@+{`8=i$rlj&lqv7_iwauF4SCQ=eeQI( +z#-5Rba|e&f;|%%*<*W|b3S1k8Uo6M^6HDu0jR42kWRv~hbCVIJ)&-{`vZb0dr)85+ +z`9IQ{kmdbxuN2=`sflvzzhN9^l;CZ=sVI}!A|R<1h!`^w^d1=v1&@AT&PP^Utke+W +z46*g*?=$T!qjSgW1iC|*YVHXZWr5Dz9yJ^JPfk6&n4u2o{PdLmUH5hNI-Li^(`nP^ +z)2>T(CB~Wtq)Ig6(lL*NP&aCQe*xlvq2f^ +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 +zB_UKHr0o+; +zI+)3MO-%rkgOz?zesq@GF4L4GjrMYOX-m`e+SD9?SF|)VEJ2-6jbyu`qYu%pK>d{g +zA`WO~;FHgTV^Kq_JH|P7;AzWtp@Ze%H?(~|QeHNkO|;mEJo*ykL{LX#0jC)8I%fBw +zAHR`cTf%7Hs2sd|e{HrG*M}VPO|6?Qh`h3_3OIb`0=^gw7Nngl6 +zeW~Y>h0(=bjyTlyE=X+u=Oq;fg5EO9NM^CpF_j;s()G+GRp-6+e{X2%jROKDNIn6` +z8HmjWAh~E;6$xdENa!81aXcU~$^1jSD0DEUg4FtI)8FS9wU_1v{ITE>ORXqm~pC&%OD +zsyV=XFar?5K^1f>$Hrj&8n9^jbILG&>HGQV`(FH)!bLLeSYy@{C@j)5|MamQU8zMU +z^OhbR|BD>Gg^sYiK=PQzM4eOnPx3KE=IqLd5(;ReGDDgoZvh;R&HW<;F_DW*Ro#Dv +z!z##R$<3kPc!sYa&R?PaC+3x?c<;$wN2Xkn2cSENfzigF?`ZTr +zH+geSt7mj0E;jdoUrYn|kHn91D8j>eX$JVjD_RQ1kHg9g&)cQ#FdSP+I{<6`z3>^@ +z#^v$6&PP6iR`4WRSqqY1*@L@jz%xl0{c$i!;}s{0%}L!gpCN!T;s92W1iTQY96NCE +zL@QoLF8x{=b5{_<%;HzIDAj{Np)(s{)QXW}6(sBAL_|4g#@q`u5%%(-RD>rkhLbXvT-Z{~sYZi{Zl2c5`7O7reaW +zSzwMy-)&R|U`DT*Dcdh-JV*myTCQzKrM0lOB>)H5sjLbzT;h1J`u=;|BEz!syJr!h +zMDKRErTB9C@WrJAxl0aA;hIU`+=70j*w!^JTpE-5Wl(eXN>-k!g^J;;V<-EGIi +z*FHo`_5$Vo;3%LC(v6g~YNTwPqxlk}HK48<$>ZJdM8G!MtwCb`V!-SayPc2bJ{L#s6*S!h0CR>$bU;Yd!P{%rp`rSir+5&su(O4 +z`rtgP`Acwu6G}YEIcEh4~97S{kPk?IGiZEDG8ik +zZO;lD2rA95CFi)~PBBni%5>gZi^ZFI|0`tD;g*mHZA=4_qlo0QBrV~$3n!H +zXC2MYr4G=-sBy#E5&3+V@pD4Z^0)XEsE7iR}|Od5qklDr%^ +zZ6ViV?0xy)rc!gspNtE}Q38sS-)nGnPjUlyKwO5kLh+5MZninY6=1a=v$UO*k%RAm +z(WdnQt&JVQw6f+TxvXV&(abqO4{#%aMwT0vOW-6b+)f0n-j(7nKKL +zM*;ve4lsf2faCC?oycH^gV#_@?D)DR8lBs$l~xHr62L*;PT=e2xUtAp)F;_)8_>7R +zC!a5V`oe2UoG_VCdJNj*#3q$}X7TL$#(?|6Cf|PR0%Yc_z}N9G-zgM}UII1lFbJ}l +zb*??g`e7zfpi2-SEJygj2w-xmG~iPQa0X&;A0$Q6)DO2XPXj7zME(+oSSo|{*$JivwP +zNJyBuO?1hU7Il0BZxP>D?Gm})HNu#|06s(GsRY{rI}&Y_3kdo~N~r>pN1Oy!-q%8l +z_Wgov^7rQ*3VYz*?9@apJh)W_$-MWUeZe^!LC0i!1=a?|p)CDJJS9|54zq%Gv3TP9 +zuD1mmVm}P_e;D@w=G(UoVE!puT{lv=k7;}0U{M>dO!|2s`D~VUgv95FgVOhVLYc@< +zam9ccD1e%#Mw5<%O+zc7hG<611^DuvCR-aQsn1{-n*@F@0AL?g?tV`OoI5xV_ep8n +zGV|=U8AS@``s73Ak)hS(FePtK%R8s6?DPxocL>ot|8-Kwk5-uNl0W30-+@i%MY8eS +z`z2rm*q@TdL&JchsovoOLz+`)B=4)U!)dk#aGd@}CFKhu#&*)w{q5+$M_*>b-7x~? +zQW7RZ9ubty)y#F4Ko>f#gFb5|V&Fg6N^Bpz?BX;|kAE80uEJ)=-R56obxH2Kwt+84 +zrJ?@`*o^KUgJZi0XyV4*NDYGL5cQ+&A24=2~}&H_5wfWJg*v1&<&2(^~Jw +z7ob1j0q;FmcGu*tKvtw!ZTdMl3Q?2wn2kjiQ +zP_JZ2i0ofqZJGQR1o;>7Y#z_qa(P+iKg5u6+6Cuvjr|hu=mrP!Uqv);tUF4L%V&6= +z_v)mTC~fr00icx+ZHCZ6o0|jgNxi$KkB46-+(wTpQU#wbeyP-HZ+pbmtEt+*-n8t# +zozh|tTK63ecL#Nz^HF5k#H7&Acv#x)+*~8lHlG3HcvOgt!}?-?`VJieZfxXzv}uY` +zsz(AKbpM}LrFCBw1|>B+etekkLphv5;Gea(IS%>g0mRh14hV4~Z6HqFz;`AADWEAN +z|9t?wXfZmGgI7KfB0qF5%1TjCrJ>#VGg(&k0+fe-t$UjcTP|aYo$`;(_PR7*`YhDn +z9-W^wxTt*>!o=k5=~S^8Q>{znC}HWCvQJ&EII= +zs7ixcW;zRyFims +z$tJVR+&E;j^4=6YSSFHzgC;e+j!Pu!VbqJp{~b*MbjTEb<&HeST`QQSJ7+P_MoJ&y +zx7JJZN00tSfxeyNTJ$Zm?bR%eY~)R)cNLwpM*Au>ncLDaZF{ms6he7+R^6JcuEmNo +z)@O!;p1yv~F#OtBFmtw30EKO1kG{A;(@;LNP0`JAq{eYS(5y7jd!i(ogTrDErg~8* +z+#y27f**g~XHF1pqsTfq9$$XE13m|68D`Wt%~L%pl$ipk71BoI)+*W#;uNi>iRkDL +zv=Aa`Mhkekx@TO+vwYewg8!#Z!54af!dfkd%x}>;9?rM%&)0EKB5)S?+iyD!rwUZBdcLOz=Lc6 +z1_gd~jh4)ap|gNMXzCsfPW0kL(j(Jp`X}2Mki%L%8t*VrNdWa6!9!Y`>DKR@TTa7H +zORG@n~`bo1>_HMpy$T=ID?Y`-V!bJiB +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 +z2TdzG>p@X!K&lYzFZyf3=?iE7YYs!D +zw*MoEXRmwR^UCttmC233RWb+~4jvc1jD;5)FMVb9&%Q-%di6r>*^bt08PB%UiJYO! +zNWElrQ-JTQ$z`$iK5F~INpXhrA{UL;-RU~GDA90U^(zh9iICCx9j;{SnY?fnDn$#Y +ztMwtw>x0?bCs-r+pzpI1AV%MQp@$^_JjU?5C+Vtz6|l#9|H|j!QT2 +z>G+G@tvR0c=P%G9UjgsT$Mhvf%M%2U4+3GA%$?HaWT}anK&uAAhIz3?P?^80Ntda~ +zd;htSx_nPPzr51@p3c67!D2l7)&c_luW7J&izHxejQ$DG%in!K)fTUzfDoJlXFu9d +zwSc9QfnMbjFBsAMs7q1SA2+h1Hq=L!+Uy>##&4KBxRvb&pV0#V>z&W5EX7}h_dXa9 +z59qiHLq#V`|2?9I0cqc*AC*Q76MahS69m%;&}Rkc!YdJD(|Z25h$z_s$sk#BxvFb7R^X(44c^(2zYPo7NMzv#)VA?!ipLoRaPpK@S%C`cXgkNafj7Up1)Tq1<1& +zuKYr2($N>&LLyMhSrSzXx +zKUfY#5M6ne4wt398E|C`4y7sZsYDaF)(;2VHi=DvK40#3^>$XZTqMvpOr5K +z0}0B>3$8y&6z@p4t*KH=%`=>xAF&vMu-miJ#lizwpmkgtmab$I@2@=tB-N?xWYf6d%^Sk+j#>hc1AeZ|FAv>e-W^PEgn!sldiCXfA>+En+) +z%ZSrN*W*92S%JP_5BdxMs~UK|B*M`b16`bdn_hD!lcjJ-M`w>e;Z|`jl9>up>-?4{ +zbs<1^sESYW=YYDB94ARumq|FfNs^Ve;*Z`S`PF{DJH^v5hp?xY>>Wy(OE&dyf#c4J +zU@s|W9qv>HT#wk7-6xpMgg`Up4QB=`_8NeWv2+N}6{~B;4Cf+Av +zm2#W!uJ&OukBzj?1ao#1@Genze+4XHp%17@YWB|Qv6eRZ-HEbwo&RoD)^hC*_iaYY +z23{4_e@Up<>M*`l_ZUDMkkK(|#9i!*bat2X+%W)#Lsu5F=>H{2tjomy=feNZuUGKB +zq|b?7t($9z=@1~aD_+!k$vCJPY=04hfLhGLC|{coAHr|fA5NdPhiJ3u0Lm4L1;Vq& +z9?*V+8@|J>6^rf){LhXGd~^l42lPV-GraozT)T%@!-8}I-lu#6)m}_+> +zf8OD{v6hnu=5s)km7IcVXlUm2eZ4qh^?NL9vgl{P*UcRy`uh_4)W(UoMk#!c`NWH< +z0g?F~L)>$eCyG78dXE$yeYvoFW}MFOH#u)u9$IW;`7uGYX&yd +z`nq+hEWQ+=FG{@p5wCuDPrj*hy`Jm8u- +ziOhMj5*vS!+lvWrs?Qki19-VPUk*=_IJoiztpZhHpJ2j@6VKHF?~qFP?SXKJ1>6{Z +z0(Rqd8}k6slS&VEa4~g8TdV+1DM$67#uG2ffj>IggjC@7Sn0Dd@_L%{gn8C+OcIeH +zCoD5y<)053{3eh^YJS#Xi=x>1Zs23Yd3ec+J)(Q{n7PnFvOvt)@wPH1X&VmRd{@*x +zMNg3QISwTWOaeJ*bAl#HU}%2?zw3H|oeX8c*>$X=fxJJP;|DAkZ+trGP7z!v4{JE| +zeVS$ybG|F$;M)NX2+s&^^kIwOWD$Cb{+-<@cvw?})Yh1~Q|IxG3q-&7;6yc{W3_lz +zDpw9110~7e%87RaHPgr#??-zfoJN5xp;=%d3}7n?wGfs$n|BZ#n1trXuoabpM85T2 +z)T_v;5LTnWf`7&-0Yq31j}yJYg^RYAT&2dN^SAL4Pliub7dG0LHDn$oPs1^=(SDyq +zt?mesMnbMoDPk>gF}M9`S$Mc;T81%RhsAykm_DY@&L1-4V^R7)m1M;P()i6-toiw( +zqcM$7u7r0Z@&xfKOh-~qHrcdrz@U6TD~Wff)**BOA+La|BP_{>E0h1n?d8 +z2M&BTrWC(tCGifHO=jK|hOG2#0;!D+^B2W2y+DffUAs3oT)vx)=``b*Dc3IP>2KjQ +zQJwIawY#P-^;QR0dd4HaiO~-X*%otJDzyB-Z^KJc1z0+%wHNHv+wpAk4ycw0-vkwreU +zF`}C!L;+zi3w~$!qxj1VPKruhs(y@_(B{{0iMioTXttu* +zU1IJ+sFxTQjDc#}7YD<*FPVa0dVk+73Z8{}uy@Ie&1^-#KEW9;oM_eQ&FsdUGa-+b +zzY`4N)l@*??kn>^{wRnecke;*1K34-T2l#J4ooI*!wNi$UKOF4w>nQB)*(vVL_&k) +z#eVvFxonMzy{A05jCA~0jp+rf{Hsn3Z0ZMw1iP6NtpC%eAz#w`ZQ*q57@a+-da%r| +z_nP$uhrhG=pOw5MFcUXvpZV8e@3XQa +zm%M^bbauV!_%T!-Hn#fN+d)t}jSz;?J*b2yD8@JqJq`;?EZd2moB}0<`y`4(vwe!n +zz)wkpw6@fVn`FtNK`#mSfiO`*ca`i#<3tMLjDOV#zUmPznjA!<)aM{}0c>;rK%K9; +z=?n|&fv^-Q+s*m%4GMTpIIFR%&Rk1zNI~*}LC1FAA(%1fnfJNr548Ap9{%jqI#6~- +z|4D(c2IQ|@`3df~f29rHG?@YpBTrB+ +zocAfiWR7~cyHvE0zwDU-_262Ep8c7RmA0F8yl-YIKPh{;dq(c$Th=j?=;58MNbLF$ +z(ZnT@m{Gf%or;vw#7CPCj|Bo%hbVySh$pCk6I}~-P=OC$hqE0NaUe@<^-%81mrtDtg +z&Q;+_iXx#ycL_3d{dxo5%CLFd^T>sDtZ$CYr6VTIgtu;1gOe9j!>QJ6>Lv10Vwu&A +zMJAoSUAU{lpBmzdE;O?XZOQ{Rmb)JxN6q{2No2@oz8WzT#uFa4VT3hYgcJ>+H%L_K +zDvtnkQWQFul6LvDg5PUPDN0E78aQ1<|Ymg$AKx4_dx +z%9k3l6+Z=u6eQmOoQI)iCnyR8d;)U|Ck7-{`q?cY=y(zlYn}!2tW_W@ZD@>jgPS?& +z*WWX+^g}_S=~@p&KcVCHk~Hz<7~wod?kq7ANe{O6Mp0Z*xmM7)Dq*VY2Z5SFp=kRqG~g@ +zy3YIDh|D0-u^JC#*r8bv68}vQVp584!^i6=owI{Eqk^cY|9P^JIPDC2NJ@$1f +zMFvH%w$l`+JPGkzvofdD#^)9K0^Y;C$UFa*>e|d5%ig7noRVy0eO8Qo-*4ghev)wH +z`ec=BeV&DFmWXQ8tufDoaWGIAzA(H^JQ~p{ARmh6%kTF*d-_>_yYOd?xOzW+LWw}_ +zLh*a=AW{az%$>djSZa_kj*vb=COiYUBQG{&Q{5CRx^SSWQ{B1PDKn5~AV-8uN0E}m +znt@t$+VY2*L)^mHuPoGIjvdFJrML^^52(^(ntUDp84u9Pr8#(dm<*aJ3H{e!KMM1E^FTL4Czeiy%_esdehA_ +zJ_wJOuUsf+oM|yVw6=MX=CbcHFzGD)N{r@uSZ+yzLxHJ^hXdzG3;sHXND@ZyEKjnC +zzuDx{NZeidIUYuciFx1?E_$gUR^;zRlR(d{;a+?p-c;Ks=z4*#MDvlnSipxKLcj)u +z0W@?_F9V9gC}}YUiD+ncYJX~#db84SAE+7%Ky63a&3hFWYyyBYkQE1W6y#mWZs7zB +z7-~`l205#kn{c!g&jRnaCLci80B2P%3Ehz(G7`>uwarTa6y63~HHkEY*C +z$wo~Bz^QADoJMO4j^w~VnlyEFX +zGl;sU=il{bEBg4V@CV9tg}x}EENF!w)lM8+4(>pL7eq1!DjV>qfymfeP*xWF*+bs( +zZuTBXm}+%Z-M?TXnt*eZEj83Iu|4>KfxXc_IUPsAGye1E6RbOH06mQZ1jItvD$w>w +z*=W67e{3$N^Ro#$7tIq_zB+cMa%pQ1xoA8cB~?Pa~uX7^HSag!u`s&fD_IWLa^$@p%UG52LojoHwf>?i0jI-kn82qJZxR +zMWHD@WJ<~Yx3?~Qo$ultZnX(TNem?F(DX^QJfBc)ouD9bt;Zc)OC+6?l^L^)D +zUX`8TJzDuw^0bCMi&ie9g!O)pDH~}D +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 +z+=VkAycbPfBsM1;>?H6sduGL1BazXmJDC)W +zE~bT!OQ8po@{C0MaxYkv=pY@Hpc^My7!~speEk~_WOW~4_UL8vRaeb((c;%Bauf|| +z=y$C9s}!fTKsoPQa_d2`h}8;G1p4!!;ArTM%g0LbD^`GTrIyM`UII>Pf3L5s{z9Q~8k +zoq2DhZjjk_uY)AXFYpxrMMW +zC!=15-kS?xW8^n;+IN<vH_!i- +z=!i-la5(~*{9eD3Lk@4TSE6r}*oYb53D35?NUK=cGna7me0H@tjk<(HZR6C6Ba4`i +zIf`NhDAfRk7t9F)_(exW-UKrS_S@ToTt?~uYv*><>Mw9Aa@y|O7JiJ>rWx=}8~`n^ +zUk348NikzL&Z-Dk)sfIP(;T3rGeG8SDZx7qlF=FQTOKWa7r*oNP=D&e1Zx!jwKmMc +zE(IZLnMythQ6P}HbHV&6bKwn$%0=&tmkXz)*%gntg-d0jZJ3HM*1uFrWjs^v=E{fI +zB>+yq${&;knBN`&m%B3snmx2^oyQBT3RkuHFX85! +z_eB>jPY$hiwXQgEx-aNF{)JD~EyK>N0zMcD^gyQ45}k1X +zOqhw>1Z6<-w{QmT1c{y~{F0FXoei@R&Ps2v)NK@mrbh&yV&XuKjH&YLHo4C*P!(q` +zI*#@G$b%j++hon4@7h{|f3*ehR2)dL$>iBzWilpyP+$T2j^c-$VG*7%ux}Ol4~y|E +zK=IPEH#>n~)hXbuE3P8?L~UOV@ebG63#TvgCau@>S-$7%m6gVwl+#puuXRUdf7VwF +z_y-2dy34cH?=4n#%y=qXr<`uw(P+GDR`S@<&B*Ke)Y_KL=4;KOfKp@f@T14g~KV0b@6bPgZSM&eFN8j +zoPQ5G<{E8Eqx{DdP$z&>fqSQ~ARd2sjxQqN=rTQ4zH7*FoTzM1&0gF)@T>e~!-wRM8WrL2c^chdqZByIqMwI? +zkF_RyAi3HcpJ(A2W<8ive2{90S?NcR&%qU&*!M5BShBD?YaLqJoXbwpqk1YsZ_MCU +z9z^u+yT*++pV}9s$$Dv&y~rH|Ht2eR4{vUD;0$r+ELvRk<5}D1np?gG*$`@iOcF$`W1#~7N^xL7w3RJ<+h14uo2{71fWt+ +znn=VX7n~^Z82I`RCB_wiUyK^E8)fTcPi*9aqI7!hFIu%QSl(}Yc(`a4JpsMq0VuB9 +zN;~(RfD{cU!X6Q9s&y{K<1Z6`nYRGGS7hrc%a6+cCaBbVm16wM-ud7B-^B7$q?DCl +z54Qg-6Dnp_;GYNk%6#iYk;$X(8$mZE*Qu7yunrXwHT}LP*;p85F5t; +zB$sw5l&}szLxoNl@n`<53I3tmX3o?|9P#47@m4_qC!!oMAoA*({&a|QWy<9J#x+)4 +zI?T`wh2NGA5WvUKw6L!S0V42$cC+WVWs +z!E46*sgAB3Gvlnsam4Os(s7-(x7bn!)F +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 +z{ +zP|zQjX2DStka)xH#6uUkr`s=gqiYd&x!6T0%56MWZv7RY3UC1}i!v-hEu%%rC{d!QmjV%T*NJhR8^Fe$Vt|Mc +zP?5;O`+Jc!qbxT9iUVoDf&8&%6!h#$tpT5WjE!Sf%Occc$;_4ASr +z5A8%#_Z(ROrMtgzAd$76+iEbrgxvm_H;;VQcwypFo?1P5@yAZk@)u8T*e;CSVUFU0 +z>EnVl1Xl75(MqjxmDY<@YWO`z>8&K?#D8=JZD5Klm|M`PwtM0~#WW6nI +zK||~Js6F7N%%Ln`H#_vN4r?YO-a|;dK2D5av?UC{4vJEaAZ6W&E|%PSWjycF3qTfL +zRc8wKtnXTp>J8~=b}IlNWz@J~OM6{-mUIOXmBJ*y!m|XK+Sz*>E)E2l6R+Cggn?Hz +zA9!IE+0J0IJq#e$Zw7&59|w>R`=W(&Z-9SRG`v|<)s3+fHqOlBaUO7<_RJS(#mN$c`!Eyd4*wj`I(PgmeWsM+!vIq-&+!-S>?vZ2Yf=sY@p!*-mxj^}0(L+WrpA*9yzRVpiSb +zDR`5=Ti1)D-ijsKw((HmN8*v(eaGFkm0yQ}JlpEqp~y}hM!pf2KOkipf=hnN*b#Cw +z9kq?{APToUF4l=j=I4!mcA+qh&M!lWwuH^{%yd^X$6e_uE#M1AUvK7vb-Z;d-cGc0 +zXHZft0kzhlW-sogX<$m43joWhKOtO#>_PmWoYx{@7VCK4i|@OvVYaU9k}1q`7ndNC +zMUJ}NJl+Xy);0&Ayak+|jUq~!hIM1x>^_e|D7)r}SE#@BH%|l~v5hw;lNM~M5S35M +zlqh~FJc!EawwZ3Kix3`c&n(afKzxBc;>F8!Vr=az8F#sbbVP$=lrB(qEsR8R281t! +zBIX!(LH9&{f^qlbJLgYjZ`rlt_K4w@qW!1K9b3&5 +zWk!OtKQe7zIIJ(Gp6NMa#d>X|d2OoHhf-hj>_M%5p>w_KzPT`!Zs|Gg}xU^MKO>ljurId0uQ5DGa_z=IQ_vnnV;X| +z7MLuUeP+Z>_jwJlsWD~JoU(?HKvwj{`!OH&D4kE(eTB$tXN31s_{#v4iFFI1%sq^D +zx~7_&nJ7f}Q9u6L+Y{fl?ybcQ6JD%v~>si@FpeT=%4ahY9|3{B6uKvCgpCaYX) +zEp@K}(>u-uO22#A1-rQ65)0T_MUu0VqRvACs&FC-ahBbBlu^Z=`vC;~Oc}KW+?n$W +zYK_tSvqO*uti8S_rs?9anG2Q2RM@)c$vvxD232d~qnF95qy_ngQmlM$;+<%o?`u54 +zsjvJ%c=0fMjwu_@DUwqdI8!`7xt65J>9ijw&tZBY10_x;*nD)vy| +zLxRlZ4Dz8*q@#GaMyE6BSR1@p>JKM^F5}3EHf#nv5D(e%S4UfO!z4u^on0RhZQyWR +z@T4WcqSQ%qVZl&5?_SD#OIQO3GgwNLQwHn=g}TpH@E{YPk3PNVEn*G3sY;46_{gu_ +zeumUlgen5>6>Gxqg}u41VqIU3MpyQhtVU-=b6UKkkBuAL}ho +z2QL9YcN+k79Q4Qar!u|*td}V~0^J~(QKONM7%Su~a?v*Xs_OorJ~C5p=XweTL=?N} +z*yL}Njg~ApYu1$eT^G#6fX~P#?Iqgz0!S +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 +zwk(SVE3|~zN;8hdE8|h +z^msC%68FIid9@53k)K+ZT_DYk9eC4Pv^bk1RqM~XYGsy#8;$_L7QnWkQdjoetW4X? +zA|OJrlY|5~g*K0ivh$r>repxHPN4teiA$*CIo0yrV&NuFVo3Zzxr&-RoZ!izy#z}8sT +zR$f1HKu?5zbEbi~FB|jsKbxV}D-iAB!l}_@lcwgpp7>lLo%DUXZ=P1V(636j`c69X +zIXAhONGe=lieHx}|4TXO_c9f#fEHmn>=y0b9>U7;67mM;{J)PK;-;WV<+^N(>{e*V +zrm)V0ng=6=Rydz1oWH_g-H6r%(n0jlXbe-hd*8h?TK^q|(8%7$z#FNpy9c+NTp +zYnH?T0I^lF77KNbLQFpKdN$GUe$zEB?@r;q=0{c2O@WoKWyL8ix24&`9w&L=FEL=_Q6K4X7= +z)&xw#QcEw$wngu=!ty{XjW$y6VxeQ>n9?Y6k@7S6?$^eB?x&;s)(iFRb~Tw=r>#<2 +z9F7shhw)cX)VkH7R^CxJ#;S_{dMR>np$S&7vljN&wt68X)R$Ow>Cx8X6DAig-8Xk< +zJeVqn{u-Sbg}W+(lVZ9!7FQtv)|k8GFveN-s4@n?;2p5^5qc5a1nAKS)~h_#S@$s$OrNPLqIl-050ZoINuHU^&sAd_o7T*$dh$t@Gi}b! +zTHwX8cz$MlRkeCtY~_Gr4v*@md_5_HCN+PuE19{XH=#{X^_UL)WEGTM96tp&A}n5= +zFv+N_yS2(*m)1uG*{KsFsuVVBSJHtQu!Vs_BnlbctuRf1pV-(0;wutBC)Nc=JgUTp +zQXg$XD^yYQ?msBMd`vL+%;&;!0io}0A3t^NMV(j{Fu8oN;Y`9v-UK7u?a-DNWzrS!sEY4I;Knc}Eo8gO30^8VKM3<`oGE9?xvq&Z-*d6^ +zQC9?CyWo(n94y|gh9t;x!;^%iFRe(N=H&T-i;&)t@(}UbKvPU;l}22?jpa`#^gvdZ +zi9lEy$3wyk-3y+h+u3C`zFqEpwjq^>kBix%3z;Izd&6>ai{iBPW6aw$*n5nosRSZn +zp$JT*{9AMema2f~C4=L}z;_@&yQa|qu5Y`JgEt+uhPj*o3$I`oc-($3M%*cInpE|z +zao3`OC9>`pOe^kJzQ6u%NRun}v+CwF)U7=(tY*FL>qJwPsm&)q(8o<3?PH#sT|WG6dSp41yt8bvVdb$D`n*o?@>S~?VO*Ur!+iT8dxnCf +zPJ#nIMmI%<*)8K*+3A|PKVCT01OYxZA(BmEk%1e8TOfa+RfSopcDH1v3v$qXLsOcx +zZ(c6KOE)&cI3IUzUW+JvCBt=ezRJRcL7h>59$NVZ%Q7!4PtuyQ3c&hC1pbW*4V;W< +zj|2-u>i=7m1+Mj~{@*4z9weATM0XPTcEF`n)ofEzp}+-1L+OiM0l&8u7HxiDN6gKp +z^9ZT6W#m?lh28e8`e!HM4|pc_xICpx@o$+03*}(0oDd)msTJg!ir4zg_BDm9k5h3? +zkmU#)><}^j@|~DuiK3{U7#FL(7<31_0ReX8-%_JHlOuiwbZao +z^Up#BN*d4@b)#tNBrUTF6dJ+bF=B*z9R%V#tZEeI$%tfqF!JIfi{#qMXc0nJH5r~$ +zO@V3sa%o*}eg76J)JV$tjYd;bjZg((XMaL%$9o8Q%xFe@`ACm2$G5kR{?{Y4to`R+ +z?^1{Q$1k}*Hlx&z0jL2bB&5+=$lNSl9JCWVi1~xDmq^#;$X#yD^H2 +zw_OkxFffI=l&y<{V?R|ofNP{dy2*{uJ(WLLj!L3#Cf>0z3CTOZgsiMw4u9)8wux@? +zn&fsxo*83yaLh%1zVfSg*kO}?`|w{kq-c0{lx#h5u>0w=W6exh%}$-V3w&~DM9n|F +zN$224cs!=LOMVv)?sddgGcSxN>;iJY0<%hnJ28UFTp4wLzy*DF(B;}(Tlo_awV|vP +z-Kn4gb_D +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 +zL)X!E&x}+65y}cPK1t>7Q=DwzvO +z9?g${;=IHSFD8D1Il?ZrGq~nv^6~HL_+S6_#qP$#I+wNo%-k!{8IdIIpZ`w1Agrs% +zOyaEO2#!=vezP2o)=W3mn0*27Ol^@PU0WA?_optCTy0RYiqM{aMK<^`1IQKl5)iZ% +zHXPJVW&zU%oM9d?ZUER-@aavhu3| +z%I(NeKEXJzD4AP!YF2$2e~)i3db)r1{Orew(p}6eC`M7XeDuBo#2yfu5*noG)pC6)|l4612GUEya +znjJ^R;M#)LNq}p32^^xAk~bxe0JplCV_sqBv9l8$vUT$_;2JKw)|SBKdJ)voj=NDS +zNa6mkPfIUYysbKRc3{4EUQRK*54ZcDmP=!?ElgZYVDcgMX;@WR=i4#FtJWFj=vBkZ +zA2huePO2kp{^~x;6<0dn>1Xh;tm7H+kkPdpZ4*aQM5*ED>)r+Kzk|Y|`>7S>c6PG> +zxJLo+5nWFUAON=(3cL@deXGGh&=RbL;^lv(fMX%q_|)x +zb#||DaNPIeN?me$#EV$kiFF0x^CXiuJ~(zl;5)Z_-TSs+C2wOb~VsD{N8U20q;B5T+o=^9|_1 +za~z^fGXRE|W+WJ){uAN}rnMVhj@rqw0ALCDy)F`X+t!vyooa;ku>i`Zu^b+qMa}{Y +z4kgsuTFC!b4F2H8Z{nDEYSb%_^P*<^=j}EZq^plsKAY`EY4FjUkx^p`m0w@0kQwBl +zuTr%QbVp6Zidk%*_`5OV$0w8c%pX}KRJ$%+Nr2Zm7%zl>x&P*M=7$n*T5~0ca5Hi1v_cd(cZGWr+cp`GIu#QB{&rB4(g2%qS}qG>}{LaQ+{9UxgO;C?_d$sHSP@H +zIe~z>Yr=E}qf7)2`T_uDF?yWRAs3k@yDzsbxd$9a5i7C29sM$VQ%o`D_Oao^t9lQY +zAH^AnFGv_)?%K_g>b+Qf;aB6i3q4gHx5}k97>B>)lzGju9DBd5e26_^Pwe$(Xv_4r +zoK}T|2rShOx=gw$$?$%EpLFl}#@8VwXG??2HdpsX&UygAGDQ{7Bm+Tr`X061Zh`^0 +zP>wT+fJ1l8^iTn^SvU_Ew2pCo2gmn6F)ttK}yNoLT_RP+7cGq}>5>au2ci&X^ +zhkc0xI*iS}G`XW9ng`U2L?=<-zqIclNx^bqMqMwLNbXk@h#Wn; +zH0K`j=7;o|^S@$mZ2rYF|Gd=b|6X*@4s_11z!T0K!c`+cS&%|jxj?TVnYRP4OHPI5 +z$5nlM5hm)aiTNU)G;49O?BJ24JvYm~`V00yy>|GELVE}I%-m){>sn=roQ=R6spDDZ +zH-0a(4HNV{ynr-8dLC5$>V0&rf_L&}0O50VH6 +z&nbw;rhmC+@>TS2e4u~WUx$KEN7vF@&IpJ+_{`H3nGu#S)L=z9fSB0g +z2aouG6BwNY{6qJU)Ge=Fm2aZXT*!_4I}Q!yp(mSeIG+s3P^Otj!G%Y*oU0zOVs(`4 +z7qGhZdk8%NK(`H3_|F$fP!>bJv~H#p8~v*eRMONmm0|Qb~Mr=r~pOR0R#tA7Wg~B +zO`5<6G(qj7Sv`N^+ubfXIf?&V|W$qO^7p$L-d6*5b2cX4KQ( +zpUyN)n2c;%N;)pq_-Mr1$-&72J{Qv$G1a1r4ZP!VBwk*SDfN4L_HPT<#C`aUHvFvU +zkrpVee!_ksrH`sT|Mo=t4~Z)Afw{@tdxqV)6~;4w-TRKi@fafEf@!6`$PgyW*Y| +zH&yiY6fymA!?79!vKnDIi^Y5O?nBnj&$R7BDga{T5OWX0+PMc>%s~R8U`cjRSmNCL?}~^KB4QE0b7>$+UgDfydktAs)kV279vbiP +zj_Jf^riD{pj)2X}0V+uS5##a`CxQsY;4?s^Z#op2&LSb#;<~);1J(W0s~|o|4gAe# +z^-JsMA4}L%LG}yF5)}LIMQec$yp0I=>QYzxwjeU?bKZ$dIooG1)h)Tu57!CGjf%Wa +zBsxA&8^q`RcUC;)N7H-cEt?-RDDsbTRDA;wi~-DNzlr;6`afVsgaxS|GXR(QQ`Apw +zWJ3Zy_JQ_rs2D|ZG~raUlbUj!CjNJz5}FR2w4T`ULOJ8ap(DI?&Ceo;&5^}JTMVDm +zU$l6A=u*24tDE8BF!XW1*!yEwyznQR6Zq49T+y#QF&X1*PhC}dp?&e-cH;ALfCm7v +z$Z}Cej=q_3;<8=Ay#h0$Nji#7UlaD*9Qh8D() +zlAD<^h|Gn7#dfZfqO6t35PrOA@>bINeXd1Qjxl4KW +zGHQ!Veggdbd-z3*we73ew*mC_AB(U;&8fw^HlR?`Lz4}!kh;z(y +z7%#{5O29by!TxVYv!Ci^-zI$oVsI#U1B6)m7vOx6fou^e2K5j`$`K%sa9BLRaSht> +z_4d;9vO5N2_dg$MvMxU6K6{3ZybqA{g{|Vx +zwBZ?nhLRh49bvz^cJ>xm`q+=woiao?Km)U@WA{bE+!)jV27qjnV5k9PBgy>eZb&&s +z(~uPOq>Jh?V~o(zcO9ycijzZLSr2+!bzUo0R%f%7MMb1Mi`jDevJTtk5^Z(FMZCn#I)G~XoX#T5WNS`UIeelxS4(b +zQO2nuFRcyI>l<92{P)eR0sTNawX*!`ZH-2O^VIOB;G=H#_%v +zYc=@vUJ=fz0mk!O(J8kR7f3p8-Q$;cc#NXZuHMP{d5``(D$yYBRfu|Cv?@t1x3gIU +zESM!s00O%;W*-u8XC9a}pi+UOl{;ged)933a=F~{ix*$6zp)n)Y?1oXj=$M`Wu$ca +zWbp@baj%Lq?cEP$>cpqBg|K1yJ&KYQ2MsQLm16!r;jOw` +z4a7@x1>!wGJYoU%$WGH0&I3Lri1$uqzyI;umYpP9 +zwxqIUOJysgBCVDvBqkNwY?YlEOQ?i;Qj}^)MIj+eS;mqj)M&AkWk$#{ma&Xk%<{Xg +z>HYnE{&{*Z?)$#3bI$9$Ugw<7>qA^9&HVB`t+2pveN;{~&DzVP%gK)6lv@G +z`n*#rOj#hf=p`)p3^98WG1EmrCjk7@he^qA^DVHuY^8 +zTMt;44L|L7vVKTdDXFp<3aFMouW^~W<7oCTg&4K$SkVbJofHnM!zuamVi>)7((ac+GJIN&|64=`~Bs=qpzxVqW4? +z?Wgq)Rrfm-OG*`m6_91A-Bkyqt)w9`=OnPsceLreR-+9HIqD<*inA}Z3r?krt{7jq +zxSYpt4H?#+5pDqH4qr$v&VuY0=rRDLN~^@^fj}VT|Mxs0K(N%DFYE>Xh5q0NDlKDkj?Y}L@ +zm}jjqc%S8ASN+D1J<@+h7q>psp9$M0&KsEk{xBsl5Qigcvb(K +zT@MSTJeE)>$Jq@f^viKWQdP`hhVg99iqThwppfBm>vzd}ie4Tm$6VOVX{5VGBN?&( +zUWGP_Uq~0TXm`ksmjAow-4aRi=JfHg%%bM%H}|T4P)#0t40pHnL0rDD7OIXnRFkts +za9zO2dgO^vJnWSuaf^-AuSRJ;oepfCsvzW@Sav!3#N$R&T|jk_{TdeXRI=t>A+c(5 +z`I^W3y1hh<-PQM>I$bMT^EH#t?u#_IO8dS#BIK{zy?ZrNEOs)ae*;^vz98U_PI-7I +zpdK_a5B!NvF5xSaF)8{9GQ4IG-Q_?T)I$~O1NQrWfqmy{ppU8|kxa_E!n4I<(`ARSM?0>k8-$&S_a2tDmd@)< +zjQ13B8@A%tBY32+w(5;ovD&?Qm@yTrAn_Nv<3BbLiA8t~@;oBT!Z~7W7#eFAt?oFZ +ztQmOx-Z8q6+hdQ|@T!5rnr5eChvw62`RO>T1|0w;Ts5F}>h~QAsp*s4NADZo(oXP5 +zF!pH=SQ8QGGGti}?B<(+`6VVm2EU69==EBmoc?O8|97bjkP +z&s1!%x3&K(Z*$%%** +zBKAl_t!Q^P&@Mt01LW}SdtpIx2jnF8irYEpBK#op?b{EW#II^SEY}05QyNQWmEd&y(a59dun5nB`fo$%X0j> +z=iZop3nmd1OLgR?$_sKvF5{^7$(?+D45=9%tPHUxJ8}h?ml-yxO%`NviqJy%OYGfT9D!Kl&^ +z_9rt=h?nG@E!UjZ^$LA>iaPN1B{LNDUxF959UJ=RIc??nYW&d|!?5rGY+<$$o^Yi` +zzG90Gs>q=#8fk}vyG4Y3cTEkjbDE1lfSHTH?hB4Kfhp5dgxsN^!q +zJ0`;kqeB`6x6+b-V1Q>=Ce+6dcNDq@5ibs(H6PcMS?(Qf8vu-4?*#~U%jg&Wd+qS2# +z4{mYYyS~Ew)6YR!vOh_W^Fu@N_|DTFtL(-`Sf~sF-%DIf_F#)Ai;?RPTp#N%xj*Tb*2KS2&MCh*tQdQ>G|C4jsFLGs +z=tQVN5ILmP;L`@fJY_kg)(>ptB{p*t>LLv=3JV~q03C+#evwuPY1GT1`A+7CAz0=Q +z%pW|Yv{&hnko9^w#MlLMeuE1Vqf3`Kb&Rk +zgsd&Pl1Y>ECOEO!#B1wH>6LQr{*|#}2v(2P!W4K!O`(!umkiuQi4}K>>tQs)-QaUs +z7n!65QuFv@trnzW6n)oVt(tTOj(ZgZR>3}$oRK*4=INpPwdyL(Le};gS6B3#?snl` +zBlKrt$PiQ6gxpsQoV=IVU4)k_@&hazmT})u(E>kMN}SB&&yu$;R~)$UNn(gx6 +zqwXZruGBshiyiyYpTUy(ZMP>uEA1nH?5LlFW!QFKynM3YqCTO5@NqVn&st>ga&5et +z3sURIh1Ytzq_B+wV_)J4`)b7Xb-HxGNLv8YFkc=u;d(Er?>+kb5}50&CFjBUnXFvM)Qi7%w@lY$kyn=xliHBJqBT +ztb<4-|5&o34s~gkNoFh$1-Z-(oDtL{0sq@}n5iA{?Cwj$$Uj@%Pg-3)+iWy;CUEfh +zs-zr}`iNSUNaLv@G!SG|u!mS|FIIKB0lQ^<+-L+VGycm3IlWiNI_&yzQ~`1@)|Riq +zVa?#p)I+li-alpSF7kED3J{c%r;0&X+eg{#U)r7@*(lTy@acocsGXnl`)hrTK-U+F +zv-uxUO;|p?sI|keCz%8ra^RkUJ3(>+&R&YC7(x@7{`~?;c*#;1hu*xks)ncKB9L4u^eVKdU=Z&XV^YDaC{9}(>MBTzBj<4U5eM~5}#2s)Zeh#me +zV0xbY`(+IE6zBV#YcV&Z!&L_zC(Nl-C_r+~=6rE5+H`K@Ijt=|Z{Al2sn&~h2@M0_ +z7c1b)XT7r`f7a&&a$bI;RwUmVpXDa~o#?y|-xSGx3XCaU_T-#}q`Vj%$biLBmJln` +z$!lMP@i-&H?>JwOxg6s8&3vomMR8JRfZXe!h?I*_Ikphj +zIhYO13+b0(FG$l7aDGBvjQh{@Bm#*y&F~9&^f1r8ybZ^#bdhxhNWX)S^)o#G#ybAF +zg*?Zde^fJ6D^w8!hm9`s-z5Fu +zE7ynfB}jWgeAIU{m-Gl}ADlYypSuSKjrG;OxgZpg*gnqWe0f3dtq0Uv6y1m +zi;N>RI0#)ay?`3((s@vMt&_`786@7|x@Y7+zZEQM@RlP*w0WiBzoxEDF5ksGQalf@DB7O^I3cVr$70ow(&zJ!KIh-4G_mo4mv^p{gaUD$YY88n +z_NXVwK{|2Iva<`8y7f|8$F7BU+JokrQVT6T&)SG5-D(}Y1gkFuY?CMMQi%A1$>ZO+ +zo@zM%!;cNvQ6SB92N_TiSS?`jx#59W6qG|;Bx=7kJ0m~Mo<0-8o)l`3Kg|4GeVQ21 +zDAJ13JtL2}1V+6Xz6zE*<$~C-;^K6k0_4vSLkBaDBCrZ7Ps7zWRbcCsgatCG-Jw-fO>tb3VLbf+Va%xZ&b`$l!l3 +z`jIo`IQ*E4jKW?+iXZeIkkPBkI6>it%i>*Nxw}+yj^^@je2{kkdSr#IlrHi{f=nL0 +z_U6pCCz2CS=DoRZRWBLzRIPqni=S)sEPt)L?e)SP_VT%SqF+F&0JiI9)01qDb?6UA +zUF2sXh93h&;PgIJ-4L&;1irWgdA!${-%cL6N9|{<-%Y97b65yrb5a9>=F$%AltWHS +zELk8s!##p>yUu;fn>I-Q|Gl#+f0}v%nR%SZ`Ai&nHJuK;xeW6NR$k+A9-J#|5Cg@q +zG3ZgT+QOth8-bB@1{5A4!LkJuO8ceIRHO#>k-fCmvsumk?#=gQrw9u<`|lF{PCgL0uNBaoaru>I +z-V{KLB475j81{dfQ;9PT2|Q0ZDbR(_LZfrEbkvhU_DC*3!q>Gb1Mb$JpqtF)kM$CL +z`}2P~J4*%!WR73+ +z4ek`kwPNFL;yT= +zfeL^&1X3T&Uwsv;$0+%+je(k!fuOr$u}7cWQaOhlzPdD$wyOx2y0>e`^S%aEbH%Ud +z`hBxbJzJ$x%F!sD4)YwY6z%7+shh>2;X|{I!xN3)b?+#xO)Jf0C%xY~T7XchnqWT< +zCU^z937||MGJ#WZRd)<=1qB`f<^JHDi +zCpEoi!#<5pdh~oc$N30ETF*l+_Ad+)NdP;* +z1~%U()IbA>=)_0jHM&u17i{<_TjY>=N4^G<0u(CckZ>u2_`%Bo@tX;mzb+jx3654Q +z&}XF?Z5uybNb~)wuy8hH^Cmr&AUA!H=Sz8|h5}07_l+(t66lPRV6#g3Jle6{3m+>d +zO@sO6PblPM(e!bHKiQplgW|ZD&u6c=e;31N?1X-X4GSlB+nwTE;k@C^fho{efmF){ +zto1uAv;*pzjDo{3neJFmAcu)b+d5P_c6UTuc!{N|JE}bu?Q?0a-T%T%@#B>E_^pPx +zm(~O{-Vz&2zHv4Gae; +zu_%5%5h#8f)x)!o0F^IDq&0YBfXjhG(ky@4aX!jgIfS@IJob!Wv#iKFBxExb4Za9lUmvgM)aIy~w7=TA{T;q%{+S%b{qIF;MFSS!lE<4^Am}gW2LL4A< +z_3Xsi;qTuRWAf|SX+JN-85&{)iBy(E^YN4C>@eo2mfnv&9*#n7{ls?xGf(NSb3{LG +z7}f&;sgBH(c|zp~#O@Fv_P9wvt*fWOl4dy-WJw`b)W{xkRVB#El0q4_*NZZ$iTiCo +z1^nK6-DoB*jIZIuS^wO)m=uX^^k0c#H$5jN2e=1Q6%YEKw1VV=-1 +zu+Z*UI&#nag6i#(4Z?o+M+5=CH`HSl13`NV7Nd517V{leneEz5g7wJ2(%>5iI1{X4tYbx3zBOfA%>6XhH3_USQz}9fG>qDwCj}Y +z-oX9NSrqA9?#{i=d2*-ZN}Apr1F^o(x-vKNE=aAFNTSc>)QWLE&(6NLR}E^a6e4$i +zgRO|!Z}WfVvM9|GMZX+xeD@Dfd|2$&QFPX2Wi}DT^h~vi(3rgFRzm56)8&CeAU@!H +zp9HoNQ)r7h%N|?={P{O;NcaP902%EI-2Yl`JTd8P$8lY$&eQ=XB}<8wsR*M#5-I$# +z&mYz+RuL0ldR}@r`a$=4pnJ^vK~pu6h(Pl>a=DC0UYX;}^(ceY9=;3tv?mYUZ|LuN +zs4-gxNTdgKR!C`95f=Aw;S0C5yRPyex{JU3TIC^WOYm%E+A5Y`f +z!<06QTS|H=b!vU;eb8NYTb{fKs_w%$}$!S;QQ&fQXJbx|W*TchUgml!@7 +zBiP!f#l`Hu988(Lv>fx|?>s(`C0QQ)U0}p4&Fa&!N&Mdu_9sj6V2}KrBA)N0Ys7Se +zy8XlDOj*B5LTgG_t)=#%vQs@L(qs30dNWjl?&A#rOiyFj->pL6U?N}x08y$qCyfT! +zx2Xeja4Kj3a6?l$1TFM0x*;TL$RUP+n!}R_zvr+jy*#lAX9H9I1s)%qrzqxzySbyd +zC~g}5_Y(|puv)@(EIR!wcBYNPus180s`J|!9+hz-SNE#U!}*yTUro@h1Nzk2@E4y1 +zCVOVQuh(<*B~;85uN_}^@7b~Wlw%H9w1F;ibnUMM?to?7yWl$KbXW>fLH9>vKFZo3p6wR&kc=a7Uw_WVwZ-S5_w?6$Uz#T-ef~V>&HHut#KXK>O-4&6x*A=ONz-K~-k$ohVZq^L +z%oTv!e)MuGPZtc&^%Zlwi-@7pN6Gm6WkP^o4jmS17y>?gNXYv9J4EDw5x)Vl)tQgN +z2ey3O4kgy$q945wL>{qE42y?Y;SX3vgus~ZlrL6*gBxKxNb%E{(El={cmYY +z_(^V*sYA;xhp$a?`%QC>g>O13m!bK^X!ocAdyo07{d&86&EjU2&1eh3Ep4>qfpctK +zma++K={=?b2&fnbnym>}3}I`IVw127i;zjSs`sG$b%13Muk0g!io +zuwXZ=o|^{`nG<;v(Ekr7<#F})>~ARU=<*Kqwgu3A5EYJR8F3RO@e6JrwRuUu;k +zSv#zcPN)wc>^teC`0&MwHSSm72s?ki<(d{Mt=F|a*-&jJMZ-0qZN=Hkc2#)3*~D;q +zfH5yp$?c_&Gwl_L=XUj$=4Tvt9Yb+R6XH@2V3h?<*sNK=<(2E>r +z`@d;*IA#T78nVXLZ)sgRr`%dip0E>nBA5bV~v)y +z@#e$E?4HxnA?U4dIW@Oq?HBBYhg# +zGO96abxwq4xYw#j_7xPoX&F9Yd^6(erjExeiI$%_fY`yu!up;*w~~T6U-F(+EYFzI +zgA*cgs06NWhq6vdK0j%fE@CAPSeQtXR`*T*9DO;&!I>|oY86oII%u_cu9%w#zQmn( +zj-tmMD+^zz&649oagT8nScV^>N%PnF<>VD=h8u-NFR!hCBjK|unihR1=cB6G>Ck?0 +z=X(#$ +zY&H)3hB<#@V5B{k`Vw0aYIZGDV~UiW<#tttX*msN2CR5884w+mM13*HDrxx8MEHy- +zV1t_7q^fVdr84X6uQ$cKRDCcy)4rLhrR=LE6t-Nn)KlOv9#QMJI2b-&dbFRgx^_*gy0>cTNO@!o(bnoE<-O$SkxgboGm7#!OII%Hs*#1TB4mI})>i*)smoaAnJ#-ylf25N2c$4=4J1c-q +zrXe*>f{#he1mD9I<3d3aGfkRUtSK-}h8R+bSp(!7??eF=ESI~^ +zjlgVShR~s4F#XpctHN;XS*i@nB?q%iP77nX?(6ls*xr`H(g0VvH#EgzTHFLlS>VCR +zJPV68QLa)=S)U2Hp7Vj-g+!HYlRHFz46tu#5Yn2f@zh6r#l|&LZHf!FVXR6&y7-+VgVJM;&uxQLhecvCy1KsZ`o)^4bhT9b`41SrL` +zM-`wza9)h{iz&((Tj0kiYYZQtRNd1weSKr$s8HD}7jL^);)e{Dvby6M+Yb6XP&Tj8 +zy=S~xVHJNYES>ztwt>5G<(1{UXZBe1l@+zqMwe=qz8Pl+f2kG;R}J(R;RJTI?e{$S +zCx6STkqMrkJV`p19AmPCIq`LaC>es|ag8DcNIM83S6##l +z@KSGG#D(nI$kW(ZAg`xk!48({#xFswCdiYcDZDZ_%bBiq^>gFPwqMIkbzRl8Z)E3t +z^7M;w4O9 +zZm232SlVk!eQx>#>JfOr;}KQ;62pW(rA=$VtyHGoZ2%N%+W%!kOG`n3Yy3=c#m&N< +z1&b6X#qU+Gb%QmcJj}nh`Y4MMUsbp5xf^S_9783pY2?((SO#@YKBf1Ok9;emo;}U7 +zHha8)+hfk(W@RR;kA9LcfpWjuJLH<%R=X$b$%&+v_oKAt+Q)m*^odtr9KE~}`$N9D +zeG6E(g6mNZkfuj93^4JDVV$UMIgSK2fWd1Cmy}RILid1YqyV`G@)T_w0oj!2QK5z& +zz^2x2L*iv59CBoYtS{>#usnh)xJ&~CAc+@gz$8#XqcjKKz+MSM?Lg&h=&A)OPcm{f02?F5h`?iZEYW+F+rvqLd3D&+8iTa;&o3MnIw_~@c0l<---*em +za#9NZq_TBd+p97)e1g`j)XSvnaMSkIkZGh{F+}#S3#E!$@4Zr;QRt*|9$igx`o5%X +z16Qtn)2L#hIRfgTZnx{tRgGq!xTW~S{Z67Fw{Dq9Kklf?8Dv(u4&1BLQVJ%1IWQ9< +z;25;ep$rQTjKPW6ONk&SVugpr*+sr=rhhbW!x1>xr$7eG9hwkrAE5&cXf4zr=YrHK +z{4*ddVo3ld3>X?p4v~aac3AxaGQSmyY*Tpb#0vcW#Jn!J)CBHpNjzFIQ`5DZR{uN3 +zYOaVQf}SvF>B!(;zn*d_!aqBRGCzC%hxz#d*=@){hHRotelo&MM2%Taz4O +zje8VGs#%a89i6Ls{skSWJd$ZldK0S1@GjKSqe$3O>QWJQ+jJ3XeZ4FFS`Ci|ua;xH#PKq%M@6DpbJ3{1D+78;z7Cq)qI7yTMX-wBWXCg~}soDcfJcdqytk_67=ZtbN)3 +zBmVI8IqaIAgtQXGhEFd+j}=0mc!(F{itBJ~g&JN0D=Gi~Vb&n-g0Qm1Vxvd{@VraU +zLoV76_~`_GA0t0eBx3GHW;S?lHf +zCE0pMWQb;1iq>D&b*j)-no0@X6gjtMCd*8?({8!##b +zOT61_hKwqf=G{!sXswg?c}}v{pBXHEcLP-ygc%DAFgX02WBn;j!D!D^^c|hRc&8*$ +zIH4qlDaFLW;X@W!V*o=K(0CAKyh9_LQm +zpYXqOlN)m9IX}r<7ddqtXn2|*tYByU8_|x#NBldn1;<@5oVo9d6Sxl2gln+qC*~K| +z&m|AhJ2MSTzY}V|hOaez@O5wh;#C)em;Pr$0uiaRDbLkOnT6fG +zSE9GS<#x=$-`mBH(85~pdK!+BrKvI9j#sJz@f9B^I`q +zcd!@;VPV+*t{X3L!xzCZVSX%ZD_Qv%Y-uDOh^jxd=8p4sQn---gMC#--7~SSC*Ztd +zuSp2OxH0p$lg8as(+$j_7Psv>LMf>9Cc53O+&*UyN=uD$a9ur4AeB+`RJsn|&SqaT +zp?D4$vCPg09QZPDZrksy3q@&!*6IIruNZd~%7@p*bC_oI%W?sxn`BLl=Q}Unv@8}@ +z`LgVeg7`#(e4uWKcMgV2=wkAQUJc=}F^lkW_kFS0rPoNfo*N>lsrbxVQ!Li60I5z8 +zL)O4PBC&%h#L5IYP^psx;bUnhI|LG|o=|WNh87?bbcWob-neU*k2qd@4xLq~@U|(z +z2c1LyGka5{c<+}}bOU~~7i&qV30aYZxG#nMr;Xg6swdK$&_+757q8D0%nM)_u%Lic2dKDePr9VYAM-E +z_6;Qm4%XEG7QWw!s|G>^_Pe-#eryXCHI#?dDIg!g`DOJSUZtSWQJAy8oYPFwB3F$& +z`Zfw+JuG~5yLTv=={>p~>ynYyW&68cSEb-;aO1>>SHlYD3#Zy9PFj>2z7@Rp!})Ia +zWy5urcHY#gn(pymA>j;;oCy8xy=C@3wd`A1+NoK!p=%YTF%6M3&lFNVtX?&?Dp3(X +zTv%HCJIy9DTX!=#V6Cvaf&{njLyMbHu-vOXM##b!i~DS#Os#p7(1uVp15zZxn@oUx +z64ypRH8MlFTZ{lT$6D?7#}1fh_&Gg0EYx5Q08r`w($r=kSda4sDa#>O*t(Dh`_s6O +z+_9dWL_oh{JW!d65pB +zT-uRujWl?4;>YWBa^V|-ua1{R}9JW)}^T}$sF!>U^X$XscQ +z%_P(ga)~hKXop0{j*j(*Qi +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 +zf5%zseR-`sxc^6Z2?zTOxQjx=>b*L6XP;h&S +zsrlfj0x+H-31??63|OdU!+;2-@?r+wDe1WV^C#Bk53fp$U+B1((X5l~B$caj&^)$G +z-3Q%)(^+*~c{OwB*V8iPF1r;@?8ju95%5e^CsVR(BkwIIaDEUZ$2E92?*0ONyF(&x +zEJ7SsM|h2e9_9&(dKpj&z<0V)_ZH80+}9@L^5-1m%|UfpYl_D@zeXJY9Z6^+K3O*5 +zkcnR$;B31gS%D5y3s!%_Gb&M1mIY6BgVBq<=30&8Vr`q^L +zQ7j+Uv_q{xnggEw_)4-UXK%)S?c`i3R-Sh}c3aW>2(h~eYzaI9GdNepd!1JRq#ArY +z8mT~8f_cyl)lB4_M6KXl$)do)n}74)LLe60c^^a{{D6dzaL3HWw}SmRzoJHQ$lY9C +zb?k*ox&=KwUKH>Y$Bss$5u*B57Iv>H3u~jws(H@QjKc37@{bN7b4BU{M+;9ui3r$( +zAy21qOWp%NQYy%%a#1T^1qR=~8T`F^!ysPH)<$+p{`T`tw*}vwDd`K_(j@03 +zyUooY(#dAqndjQ16OFfpw&WfbSG{39jsNyt{rYQ^+v??a9=qys?QPu(-+W2+ +z-=!|SjggY(QFx+d>*;F|bXnHz)%|_y#kg+b;7YSUs%z!sE~GY333=R8bk;kT?~H;n +zva6iWx_5pQ6UZJPVAWFf<}#_WtZz(bPp*_UX}%aoa&SjAI*^IVid*9?>Ws^)YINl)xB56wHv^KS*t)|qEzbw=bXnJ$XcvCYB^bp +z9@A$?H<^Q9$#U35IFfogwPfEs@2{m|R$r4FaHNtla1Va$11dV@>LA*OEyz7OR)dMd +z^%AOy9^6CPB*Re}iTiAJ^ll|5&(RGv0xyog*~HBM#Zmd#J3nGb<{EVbV{dTRyWrs8 +z8U~v%&D_J%%401)(cGRKzhi3;q`zkiDkHCU2w0at +zKCw;04B7p24f1@@1Eq>Wtbk^6O*m%8>nKifMnL!y&u4pl^Awp8j04+b$&6*xxgmwSjLAr~4<-`S~knG=x^$Xcq*kt1RWB5^;T#H@@%4$0? +z0d)#B0=(lMcu4U3z%@9oxmVaXfE^owQl|f4ieg&W{HS77EBhN$iQ($bHJ&_$)t#ex +z;;T4{wAHu3nvb-Jf7{w|z((S%OigSyF;yG&TcH?z4_u`QemmWk^Lm2mnirjnY9zFy +zeAr9ISya8neCmJ$%YuSSjPyi}f=|K+VBKc<<>0};!^}POYrR|@7Z213j?BEs4z%Tr +z?-Aq{b|-Q<1(<8N^i>~rJh+22*hWF@SFjyVs1B1>ee=cWV7MB;F^5qtmioD<&eFPK +zNn}1?O|0+ELbn2QB-;N9(*J1<5|28CRbuG?{PJPXfZJVU4`^@~)zoQGz)(Kydhp*o +zU}izCvZEq5``#Sy7BCj;KzON_fZe*iNtiE2~_ +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 +z2njO#Fv6g=Qhk`6&lACKlJ +zGOSv|-8t`?d+rLOakaUrEEUS8pppr3J*y9QEQ!=Ym4o39X(L)Pa)@~&%H`4QcB9zV|@-e$lwn|`u)wB<9V1xRjPez* +zV5IL{__Sec6nr*sZ!LBjydkW8UvX0*2P&w>_)JE>4NmT)L1`kSzQQ1>OdFj;eP>FhpZVo1Z4c>I>O@$|}-;v)~MA_xk@9A*sSerKHF&Y8O3 +zx^R8N?~(T2nq64(rnqrk9*>bLZj3#37OJMz{sq^Iz9BH>=J +zNW6AS`w=^ZchX2NJsjTWv?*32_uZmMW5)p7fy&OVflO8gDSmaQ$1B(@YQ{gRRgs3a +zeY?y=gl8-{O^{Tvtx0j-%1t(RnZG6~W=Gnw8)Q7S5sCxA>t}|z=l%fWtCwMB#)o2= +z&4@|rBwoU?Ce^<2YN}pq4Cd}Kw!_QHENFM#eokJkO_U0-&?cyJb!+`B8@(ve`DW=b>T)tFXDPYP%sFVXa<#nM&vsg^3STTc45 +zq@ND#qK&eHb+Mz@F!^~>5w;#%Rj}=TW?%^@5yP>Avk&{R6rl(fr%6QUieY1Os37Ay +z0Q&#DdL&0*Jes3Qw`$$kjcv+Vs4`7wKSipKrCWy}0=L2*YO+Prm*f!&vqTw4ycEVQ +zv<+lz0rt;Oi5EP*GG=hBNj4pFNFSE?1;BwsYNWwpB6_k809*w!(hv4oPfQa?9f*_} +z;^hG!nVdqqUM9I?b|3eF0R?<`nE-XiZ=T^|NPps`ok@9o4_b<8#CTn;^QXH|)0~x> +zrb&i6}5%{Ht$L}vc9$Aa{n +z^Z;aELDiAkQZrbG?2!P%xVdIKd7PYc@VKQxR`!K;NhG|R0FXLiEtYsKRYaJ3FNj4Z +zC7g%O_+x+r;V54QSOPWLVQ@7(aiT_XA{(hc>gTzI0JE@RVF%a^xR#W&o2bhCli64U +z_5;*Uw6xRowC!$eqGdAoQEF1su8?>z4e2U}Oa`+^x_(6lGJqan0_6Od98cfi#~bvJ +z^>m06!_Y-h$P`%G-jD`Qn;JC0Nxn`_7t#-_Dv=1VqPru}v$NYcU+xpkxmxqT0KE#p +z+X(v_R@i8mM6_c;lO&C#f$^_945W)O3HHkvZtjI=R@|pQ>GGp%?bxH8g54pHAbfaA +z{<-Igf*8{G%_Q|Hn_1m?7pkt!zzx{$eFT0WknbREVgT5xTR~>jX4tV0{SZeu5t~#E +zW)bv1M8d{HUb56q+ua!a9t1kXnTkm`6Y!V7N5PwaFifmF)9!-R0SYx +z^9m_sO30Gp=%?ff$>a?@?i0@9Ypwckpi3j_5(U90%y_d|d) +z6QC9XF%*GHxHITz)*e`7c#6f$6T6ij&f3>RTC`%^-%Hga*!G%}xT~<5At%<#s9*D> +zSBjsyZtrwN)mGB33$aH$A80|2ciTvjx703DO^WdK@Y*>BIX?iBL$>4bx0h@oE#5Gg(Rc@^nIlxQxlX8_U}Z&9pJpM;sG*#r9n^yoM>b78z*GP?+oE(SRxsIrdi?6x%T{j +zp}e@pCQ4M#QTH6yJr%@mWj6o>Dq+9aEXA0BWG}L~q+$p`sH?g`p0|v+)|x+};6bMQtBrS{XtPHELkhfsenL&@1-UUcA(Kp +ztvZ1YKVG=`mprHqs2SiHeOtT#zbZcNW)$&`4w6kRy-X +z(1g{p9glVRbb4CfnL2J81olN?w&)^T^oMSn6a^l3$`nv!(-g$s04E1t*wRq5 +z^k96^L*nDlUfwh~nGe`tEo3^XOzX7OUrm>5eS^8d)+Me%oV+_EU2U~4x&3jT`FY~O +zzI*-${}|1&%|%%{aT`3Du#TT(=_&vl!()Ki +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 +z_tC<0wDYd8R6(^QOY9l6D7di7ww^$;o@exOD +z%xXEObh<90&W(!TR9&U!Jvw*p_4SBb>yGVZN1GBfs={~HJNW!`$?|&Nw6~F=%XWM^ +zA}?@6Pr?HGMND_mVuALs{?uqIYI1is);_F2l;i7f1b;erI|3-E@(P#1Qo-gednL2X +z5ki7x{`#2TkdQTGH)Uu4iL%u!a<*R7c(h6K_^s>&lvFYq$xYK<#pmes?O_)mvkc!^ +z>VU;Lh*Nba*6bt74sWF@4A&E4F{G8dRhrJ&dA+q4>}ryv0YWGtgT!%C6%PJLMZ`x4 +z>sASiiD(T$%?pDM3X4QJrC-~zo6?1HDp$}rBcpG?X~(niit-VC*9giD^5c*E*`l(Mo%_Wy#bqS-owAq-K3~e9QUq3+R~HwB`d-SAqA- +zr28XGKB4sWG;Bg@_Cnb~8#W>bY&|emrWmOp`0@=BMvpJhyCo^K^K+ulH;^g8L`~Hy +z)k#n6ePg>funBXN%gy6)Y;KJl+lXp*y1@@SVKiyU(~D4%<`2z=yXg5R`Vx%anJu2| +zSp=zKqP(IBIUDZJRv#m}DD^6y;0U4p9=&)nA$$0wyoBWM3bU$z( +z7?N@xSu#i$5*lPb8NxEwDTjAg5vx!|?RIiLopnGuS?at!fd4^x^0QfUx0(Ws8|3jP +z&9YmI2ScRy|E*J`>s&4kXtMiv8GXL;FkB{Z>?Iopd-&X$E~m_HWWme&>CR`%-vQ0uRKenK;vM#^GlAkU=$M6?Uh^t-eGr#V=C**djLt{W`ZO +zGvb5i{uboB+w8DHH<@3iD5-K}Vu*fV!Xh4yvSb&T5}Vz_twMFF!t4wSrfBY}Kxa%Y +zBZNc;FcMX_q}+;mntfMNrPe}uQiG~I#QF3^>ATq7GG68QO?7dkRnJzv^)}B4+Qj_q-5#GD +zr#^Go)dX?mV0gO9fTJGVLC6zJlvN%wKpa!_E0o?c!i$Fw*~MaL&qo(&i{JdQp{fFJ +zwr7ygVU5FSPh!hw6aNsV5w}YTzP1lGUDw%}+bVBW%x#KoQ2{fg}hkJwNZzOA; +zJ_v|TcDvWPwdpVuAKE)u^+4qm6vI!w7R49+jOS~t>5e1AxJ#G%OQlamtvUc_-p1if +z#zRYOC%6KY`WY6zWa(voOW34isVMD;&-5h@c)qSb-u;*ZIksuO7nqmKm*B0!P;wL$SFDbI3Cfr|+!W5>|=#RyVTT>(_k@1tgl +za{x1F1sOAz#t~O+QVJDOCPo894C)jj%as6r(pGlATso;t{Z>?&+20bK+`*3NNV(@I +z%l7^z{+G~(q0ndQJ> +zMRe+Fraa!_Jzf7#?8MiOMA#KJ0s{)e2Ry)*{pc$3SmMgxA$lv^EeLd44g$%_KDQsUJBXm~^T#M*Byve;cRNd6;! +z8st65=7C~lD5Vr>tg_r7_Af2py;9v!b$_leJvLr(^y9Rt+jsA&?wQ(mM#0mbQf)IV +zur5~$gGU98VIa5!PN&DUw#{_5|Ga79#TTLxEx8kB^mnwSWflLZbZxZjP~6>a%Z$aE +zE5rPEL+wx}F1RmN1LemVcT}NU$uK3(`<|&D!5;0T0r6(f!a!=m6a&Xh`yxQF$lTmPgBaO +zaC1IERIi*;>0`-_K=q~148d%Jc9PfLs-_Q;U5`4YNnd~aWLupRW#-yPeX#+2^Zf6^J@R*zM93- +zqV2PKbaniWF#y`Q4uds@1whsC-WB4iC7pEK9rT7^LScVo{4G{oSAcprTxW5gE$EX3 +z5O)QCOTR3adg#|;*Sw1r%n{iVE-*Yw*(Q^5#MHw4$ +zv`~nP@hLeM=&1p76u0bsl}ZOPRI +zOPfwHiC5oeO#8L_P6{T^pLDJHzqPO^{7%ma`XD)fn(>R~MOv%={ogJ8(bxaX>&L|> +zr}P|mo5wGjH1GTPkp4?Jh9$%yUGWZ_RD6$)VV!@)9CKyJnpI>OP1{HaXc95nmf;vC +z6=%M(qoXaIS{IXT26JwGkD;=a +zyu2-TS=kjSmTLpW^XhpsgXU!Cr)_!qeccZG)#FQgo)o{_ +zd8BLVd#`L$0`JyrFZ|$sF8^HN8{zmcr=IA?s+Oto=f`|3#_Ir@2)7NxPTw>=qA_~O +zpM}iemsDd1@^G|xmC~P(ncGYf8Kr!GdN|PA8NlBIo5Y0A!porFX$^CNy-DUOk_yP2 +z4l>sT#I$E`!Y(yVtK-s|aH`NAb%HmZTX0eur~ZtH+^NovA=r|X!jCiEMu!9@-5K;& +ztn}jNUrX!5aJ~4!B%Bsj(cW>@NTlt%~>$>3+H+|!y`$O=7Z&U2W +ze5ZiHEpa=0%6X+5BP4ONzhW@97FLvIl_XZKWLxgyAX{H}5su_WIFCautp+>+e4h@U3))zd@K40}?-|WbJX6>cid41v& +zJs(jHu#owLq=>e#hScMb(<<}$@yhOyR2CLlR`2{nVQsV0VLW;cufQpycO^$jOC)K0wFEofSR8e&A|zrP +zWEKPvLuV6DHo;la=`4<?zWK-~VeT#~=I`zMC#>Jr +zJ>}yQ^a1hV`lR%*1N-)Wp2Q^7rWmFA6`3A2T6u7S^zc&mijdG@{QYcTug65s?$4W! +z{>@yCY&&*!LF0b&#@xZzYxRYB3Py4H2I2<1Vnxl5`GMSx0F||TW~{i5p71En^k)j& +z0nD|XnB6crVUfok9vS)M-423~`^mWIGd*wl#Qoy_u_=wL<7V?|uMF+RCULqsBf~sa +z&UKb^v&~lWxO$^FMkD1wdt0mkb&N%g|Q?%Z?Txs41@9+F|+BM-?m +zuaSqOn~%vQQ{<9x#ZV8=J}>qEmL~^7tm8GFNyxuU$tah{U2kD|Jvc8&dtHRXPvcf+wI=Z$ElusI=uC@ +z>5t9(eq48QNJ$qZ_+XJD+wRTzwVj*ko|@vl=H7gvbDzCGW*lZbpu#F|s962$bAY0o +z(dLZJ%W+T+#4+2I;^-FAOo8ey#hMmlS@;k&_n1qgXyFcN+k11C_r&LQ@;cfcWw}@ +z<6JnR&hxwXf`Q>wc?mNiI&g3&erWawef8L70*>X@11qWL?F)zcK%i|Ix$O-{Dx7pl +zIBSab9rPmtkr)ZNAUqW1)BK#OEOYMYnj1w9J^6#5U!(2~3ru|9p~4jUi%os}x4lo; +z*+JCgb4dCenpUnKvAj%cAIuGwAN=L`r%|erd67$gbQ1r#+g@?DJmSE)lZhitSfZpa +z$I$FH`qQ3&Za=wZshJegSRP(G5zu6rIkODeCu(TxL2u(O88#r0z;qM{t)*-AA%=M= +z_3epyhW#!t7s;AW_-slkdt$6>oh%OvRtz{a=*;5o{2Yn@-I0OMeu=##GE5d0bz~jX +z1h|(!@*Z_1m9pINgO@LejA8y3H3Eg!<*zCcb+x)$#=FN8K_VAoJd?9t6`9cMNl*VSHKRFGrM>IL_y-%r&4A??{s$#3QN +z6WqJy-In|J_qy_97W#@$?Dp*u`SsKf|E6xhx$lz3 +zx9Ls%v20hIjK&EKYWyIz4%sSuMwZ$*g$=i&~$oP?VzMrRGBp>7RlMjUX`R@^&8{N +zDm)aze>(LK3ZKD?-*y=tdKBdUXew0Rg$Mxg$rZD4# +zlJcDH7g5c@)VQam(me~6(R|a6TYe)ZZr?GcX~_{s9}Y9vb$74pwYY^&CWoJ^8mHvW +zg_V-6Et%F0kkoQ(3Au;P*qvP5aY3>CZ``=y?BJJvc)JZB6JQMcuK^(O>SVIt-ibkE +zP8P5MwnRnf4|Qa`LKf6d`zgUQe9rl;ho+2~Hm$tsovw;Ql017 +zY5D#d@fmh|m#U_Y6*61X+9lmud2hx(@%{C@gcBqDuI^hyGOah_G(eFT#CUTQ@*-m6 +z2C{(8P8C|l9E99KUdU^HLoyoWlX9QOnd-vLslynj`r^GFXP>p$=@|2e+m3b2xwi1$ +zFj;+Tg+e~j+`sI{8mZuR=(X+SK^ +zld~oH&imJzm-jG_4{Sc%{${g~Kj==VkEP+Tk?<@W_mPS<;<#+6xv(bERrvcrCk~2a +z`20w4==YDJVQfcpnAt1Dt-i>q|NLTSZ^aMGes7?J6?fcMhL71+lm6awIXhy}ttz(L +zv`{T8d(fqO{BxUHa(sk0CGeYbJY_WJ1cgjI8*=J5I8hBi=&aGWMLNdt8V7h>(I-VN +z9Q_HPV8=%kg2nIxGM-(p=}3{j(8!CcwdIc0H_V%xgxymP_68@l%kD?){MkIGPghfH +z_w^b2++WY`Kw)Z`P(I@^NmJ~@leb468Ftz}W>m<0>Drb@^tKG{#G`8-V{-YFq +zcTS!z?bh=!vkiN=!Z03kBPLJ?I-RJJB-6??#l3tj4goQnaqbEb*l49rG&s7bW{%F| +zD*KzGy4z1xa#8!+9)vYQtft})kvRKp-mav_?1MO*}_(CZMGL2spi#@yL&Dp&V_G5 +z*Mq3l7fZid+|YHGS=$t1oGy2g-zf52BWZNhUXHS-^?tcPn)VIGe2E>OH5G+cm%X^?TXg)QiMlFJx)xHFFR@p^*Tn(O7%nv*_*W{+ +z`A*V1?O2hO%Ks|+x;^yW^JVJY#?o`GgS0w_eJafoys4K& +zdzE~^GzM|>Wi{Sy^?|CWa$dSsl$u1HEPHM~ZH&_^F~!vsCK3!gWOnbjFXKQWktgk{7z8&1XRMU7lGw0z`L>5h+zBg<>`HSZpW_LaxK9LMZ`UHmsw+@RHsH@+%J +zV1GH|>imvs*A}qvHu|=C+fQhX)Jn}KE{?5N?dllzOSzD9`?MU^`JoSzqHj~N`sBh(|-|yiya_J^!vaT|S{+ns^ekW=0?DQ)4Jo1k3 +zV7S@sP%ou&1}kl+{pVe5F!wX9#IWCX+IO_@V6W^_0(-;k!CgGjX{y1^G+3ypaBwXg +zrPy3FdBHo`X9?0zD9&=3O;m6&=K|S$QJm>L+9Ji{)pg!@59)maOTr7GO4+9#Le`ds +zxEOg~z$^rxF*1J +zZ1~LW4aV;erD>)e%OA}N$+BuSdRUhnmv_wb`!R&e1{`P0Rb^Y2-J9C)QZzB*+v8(< +zuIYz0E!juOFLjH8dB=*oi-M>sZCJO&qf(m{Og(0fN62}()SH%C=7^I~b{#J?^m$h$ +z4vKU!woeNV35i^04C@JgC(0Lp7x{nY{BDcn_@B_9DphlUO9$6XQrlj18F``&ZJp~ +zx)-Me}UhbY7MAd2A-7Eg|>5ns#0>cYD($ +z&YnKmuU4%I?wohQ)+LvMIX~eoex=0bL9U14>hKzcM^K+Dhqx6Ps2A07OQCjRneM=A +z?UGX1k#gUL+=_*w67{u?fWenDLfebt+yA_HW%F|FJ$fYbyY2O?sqQNyjra0eOd{^~VXK{YW{>%IZ +z<4n2ei{3Kv(`vzP)h9Ezo3gAt0!|owj{zIEt4h4caiqT +zIc&?twqy={zuC7@)v-}&Eo-b^6zDL=@6hnHeB-WdyVTN};<@_kW6Pt@oQe{>T(

u(P4u=>ybyMo&tu9HiTQk&29^TQXt@!T_MQ(8ol +z)hFcICZe)ppuv*54(xozMgnm6Mz3iFPtU{dGo(+{=a=BM>!*K!bm?okzh+kF8V0X9 +z6sHSI#gcc^jzvQT`eP!;^UN=Ps&j>Yg^h};f2*m{MIjnF9Os!O)L4Ig$nMB*U}b0P +zLr(YjvF;C+>g`R+yQh7%A23sLpSRK*lI@wfe&xS;`lSZ$VOPz`wc1e^bM*R|U0++5 +z*avay%WXKTaq8J(TovL!mcp5Yh%Bh%wsEnsgZFBy3W>9N1p6yM*v2Pp<5Rce=AO+3 +zYR5cNkF>3+ZTuc>_p{yqo~6&yEgBys_-tq5yu&L)CvCB2ff0#!_gbHN`FYyl_Q0yRc^@L^|@S=l=6=(N`KOY@|5@%A|`S{ +zX&H{*vQF!J3`2z!5F9tEpqPytDQTHIpBqZ9id(Dm`38II3CEb^-dn(9eDzitbskGNU>Rj@h2|PEtaqd;y +zL^TJ&apR^+|Adc7`d@DVsyGQ}k+DHj87u4>x)$rSNpr+f`{DG}zt7cjIEPEWTD4*W +z8BPFza@KUIPBA%FYA)Vxd_Sd#xwE;TH8$^6TGl~>+9Pk`;A5fQqqMYSO+@{Xvq|zC +z@wGQc$x8lkYvQm`cJr5)UTFNK#fRII(_PrD$UFXQzA)@>4}EiSZkxe-Ug;ydGu1tE +z(!s&!k;~}5G3-)*G&sNF@3u^Rj>Pq?PNPSTBv+a6?;HH~m{SG8Joi>lg-w*Ko^$Zq +zJ)Ff&Hc=iB=p#q!6Jj-+*-O<^27!HDq}tG}D)p=g##W2enyIUw#z0)w1#*sLko*6l +z>QrqioP{kVgEk%Ly67So4jTQ6Y|VcbpiR00o0MFh9`D8`L$%nSQCEGhq1v!*#1D|> +z(u(2t!*cEi+mCs0^f7yaf3E3;RpB|qUn<+Q$o2PL%GLzd^Y(SvJbzQo&-$;Xs$ku} +ztj=~mao9OVp1<+Hr02cPim69L0)y+l(79_3eV>__CEpx0zp)Q`?`ohICzS}d#6&QR +z%>36Fc&mz)q$M;D?>&hIw#khuGYn0gqM+h*+ny~7R_&JVth#H}dPQIp6)5L?(TM{A +zjYE1WHh|(D;isO(8w_b%Q|il=VgOO~MY}kQ>ujRp>pAIhqdC2JOFnv$EdDJVow%%7 +zKrT-}pCB;ot;EDiZcKt4R-r`LRViK0k{1dpP7)7o684cW*($ +z!(NwVL>&ioBmXyDO=g$K?+|F?sa3Jz>X1pMIJ`3Pv2heRB-Oe)YV2DShFV>T$p~j{ +zqzCZEk7#;Va%3EPIQ6BwbXpMS$j_rWal37z+TlNc8O@1o4};9cEyY%o_#(ugG^aM2N>jYIKjioa2mICU*9uL##i9DN +zXO~tknoh6j^pxALn`+2%o8WgVnubFq$y&GE`Qb+;?_1yBaEkBRhDckw_#Qy4@C9mQMha+D7A&t)X4`jx6a@9k&zq1=dK{}l-6XWeA +zBhbwZg(3+DbCI*q#oZkZEibgrHf@2E=Hs=ZixyayBtaw=025kw-iY1U1%0AAY64mI +zfF>UKl_ox+aE?+S9yf*FsagvGSpxxi5&|;I>cc>C@!B>Sx1H#hXyPGFfhL6nueHK? +zTFX5kI2`&aiOgi;Wr7hY3aw@j6XyOv-IN+CFI)67WjDOmXhwTSc`qsY0#D$SJ|?eR +z>l!4_lOHwfZF-Hrp-xQ=uIxQ>bMQj|!krH^IleQ@rGew}20X`D%?>psIlc5P+!m+g +z9=kHy%D4Xg3&Sj4-iyMc4hTzZN#oRq$OL$*l5RI?UH~|JfzxxuaO+QI?9s?&OoF_; +zyH0T|r#rBbqaJ15@y%z}B`c?J#$;LT2%N&%Yjj*6Y@P*lK>DKwf9HpE%wTYH*J0xS +zO4<|}$NB_OPi>+)8aV2=r>$CR35?^k5hx9Lp1n+dsRhct*xJJ;R1;2R&!A%<<-sl}0xZa>P2@(fRCcL6?43?uF*-y0d+I30wK6|~nMzH~w|5E1?vMHX+I#ay +zZ~NZpniD*#Lc6y`ErXy`&O0Qrci&cet-!JSx8K>Z}>XxjRa!{Elvq&aDs +z11|$Oqo(e@ZfOd%F6j^E=%H5V(?)Y7cdd3%Q#kLjmKhl0I4%?-C?oS7WRg*2x#w{s +z8F;Aj5@ri6p5iaHLQXgeyZe7;&z((sr*>-eK8O3<}bGDe!K&x@Zx +zu_<=Jm*WImmuhaA$1Nl@akmpy(z)F!Xr}U>H1eZk4y^h{_h0Hy`k59FtxF=> +zFH7k~hi)jjjSV(YP6LxTharuX#B2IR7(N2Xc98Z@n}%XZt;n|^2`(TBKR1F&oEkaR +zRp^$P4k@7n4LGPh@$~eaE7JQ^1&}xL>xWK|-`tRoMnX8a0p^^Lpj#dh*0Jo*dEqto +zq1x+;`wp^}nn@rQ7iNkK}gc;iYfd +z^Cp#l#TV-Ljd(ZW>0`IroLdf6`2%a0zxJmq&qNdt=PO3O#^zArYS?hTSW;!rXOzkeRJkPUsGGooyEJJ +zF8?-IbZCru?usSuy=H959*$VL~mC=J$R_@m(gGe +z?q6AS-`wFXb5U~vt(HF>$ +z`DeK`GD>j$oqr5z1BCvF7zoNh46Fcx3p_Bb8ybKw5M5;wt9TCf;`Mv@P8T~i{EZ|q +zFbS_k2Xa~zs1NvV0uNrgZ#aMBy)oQnCSk9g>p^8Pw7_Ih+2wbI{15XB&pP#`Uxutx +z=Q?%O)P8x;^WpTDpv=obO>j2!aNV9QxySnk$IQ}e%xs!q6)-+#xIKH*p0cSk$b%Nf +z7g}Tw4!_Os;x|vS7CW&~ayb$EuZNCjIPbf0Zvz6Js(2{8PBuy)nfFfMJdB>Vb`k6y +zewTCpf43*85jm^hnj*t5nIs_p4FTeRrI&l}OBrHd8Hj%^LnxvhNksKP7G1xEgU7`* +zQ9&4j|4DdppPg_FXlOkF#&#IJ&CYq@W=e&=Q~(nQkVF#zQhh*>U4^}G_?j{hWQFjR +z5AYDW+V34?#_CN;tAmvA;3U}Eqr!nG7}{|k%?NAmDf!)ZRlIhaw!3FN<2)zKkHAn+ +zP4Bf=nL=${)SceKbd7#7E62^?cB3{f%Jtu(7MrjD<1%wriq|0WvY!_juHAIc6vsB8 +zOlQfdb2AkEgVuF%YgRrCWmPh3hj8Q-?21tqJBsA-6G^DuAwn>{Rf~c3&lJ!;#sBX% +z4a)PSWb8K%CaPaJJ_5HPeL96>Cacp~H-+D_b!YXUR4d1{Y+0GR>?Ua250czP5%Ou^ +zN<;ghgI|%*Q~VTX#aSq6gbj{0!UF}gg|xS%vu@+1Y13o95Ys>fN^F*dP+i3f)4&72 +zA&HlHxa$hwGwoNu3jsd8zgp;lztsw_w(JD!-C7!aDYk(6Pq*;<6UN>WvZqBSy}VhY +z<-E~2b{*Y^9+`l>r#fmoc?Q24Lt;II8!z5h#XN$pM`*zKGwnr5C=@O=?H9Xky0^kr_6OP&@Ei(Ssx}9^mFn8(wVze(%dB^z)b7k- +zp&~-w(CFVb*w?9AlIk~$5GtGg*ZN)~9C2QYS)Ka?PX_=RfL#;Z1%&U^VI+hJT@h}6 +zw{m!yEBCTJM9A6ukWddEK6NlrA@mDjH;QTBAS{23eXh-fZ@c=u0m1?Y`#s&su~UKi +z!TSVWj05DCJ2GebHd-9$vN%IVZhsLG@2M2tkXY@3bH<2HiYeB=m;bAJXsv{LyF8*u +zvwBJKoa`En^?BD8xrR$K+i?BWA##4CZ&_m|(i_`@jVi{nGH#6pPWZ6K+zF>9(gF!r +z97)(>+U}*^BJ2r%{`5l7MA>&D42}y|dm*TTHnoshMAKWgneZ8;9j6{Sx#RAg +zUH?7&GJWKv_4V6I!DUu*_w#9kEi=EceBLO{i(?(oi(eS{%8i*g!h=!H^drW{|73tmDmB(QBJ +zNDzO7FB`^-F2dI5WS=$fRC{fEr}w@jSxkEqG{dr)Kzrrk3vX286$vw7!9FbXwFx75 +z)jor19h6$aL%Hf8HD#iT%^pblA)@?&B$URrWq}XX<7RO#wlT^I@Vl49^6`IxVX*Zy +zJDw(&X50`0K3R$713#Q5|4>nm4L^7yL=F>R7$Bi7c&CtDQf-d6t649wC8!l%C@`(2 +zkSaB~ZtFchW{h2R-w;arJufHDS${K}&n4{Oi#Oa}#~+D7akBU(y3FW1Zy-IkpZG-W +zq}G#!8Vo8yymWuAyCAy!Z&6O$^e5bhx7<_Sra4-49RXsy`7lb3f2o2dkKet#lFwgU +zm(2uryEIYOKs(7RV1fk?mWA_DICoF*_4uR7IeBlufdmXq!c_Blw!m6?T{5&Y_l@%kQvV@qdQPTQrtnMc*b^gXo5 +z!xHP#WR@9z>)4)O1*1zt3F}Ba=C!|<58Tk-S{(ANnR;Rg>bh&Ob +zMzGtHRPU56^PY6z(pFkKa8Fiv4w$snht1&RQz=D)wepJ`2}eu<<{~;IlXhV~FQxi5 +z;he4{WHwh-hZznn%8ABoU+5hH=A%w34N9Nj6|hU0EBSaCf+HJ!GoJQwX|n-TmVyXH +zB_cwB1NM1C+|rX6kGwmbeK{rKvs32 +ztMR4_nU?tA34;95UhWaLHi)OWD6n?`6tXzzLw?0Mj-+``KKOZb5jKjH*FjhtAIw%e +zY`^{d>q#RG5vF^Dh^6WHqML}67U&Z&hPpB& +z0|K#>X;T3M3%}U3Asm<@1r9q9(=gZ(X4b;Nh?81=tg`@qY-S;WX)}Rk$gd~$PNJ^c +zT6_)m47}-`pLN@%l2PybSJnUAH*cr$R+_CYW3D&S7D^t+glqyHR-BOYuXmrKuWe!T0f)ppQ>- +zbyD0OD%~C<1<{w}2>P=CY@=UzGaG8vu?MGKTMRZt(Z1l+65UD_(vsYxoc`tC|4Dgp +zq&O(-!iCTF4_#+0k9dAr&M3mX>I9MVccHgPfRM-Z_}H_BQG9}*1)LLr2rU-|R(@^= +zR;j@e;ED_TrMAGcm%F_2wQ{XagrLctvntNeYZto0d2MRtJ!{lnTN{hVNNK +z(^upqBQBr4g9uHOBzt*7TnFI)*kWuH)`1{~3Vy)AS@SGa1swv{Frk~|cLIp6pn{EB +z;+!8uT}R*L4&N=&9yv2_Q@w_g!lq@i*8l7)+vu&^*Kb}JspDc@Mx#U$_9M9A-{|Nw +z09oZ%q-*@iHY*VtaaSac&|(DcCZ;M2DTe+tjpxfJRz%C^8j63-y~uVxJt;D^bN{eU +z0f^GlP7VcPE&E*X>(qH5YNQ+5d4+4MvbvDq>(BJZWnn +zSWe%h&tOs-pc~Wfm_mN8JIQ4R{RG5Ew0T)7A~ac&Y=uC2Y*HpFHA4rjkwh2)Oon|x +z3{Xj=B0x_{nJ^I`?OnA#2o%!3g`gJF2dX{w81*6XPRHi1^q!5D!R|4c?X+6`a8jd; +z^WC}+y$TU_9KA*AB+57LDf2qL?w$qS{w!BPyn!KtwK&zWCi%>T%}|jnvtjImUwd|I +zxPRlTTji5~WyZtkG0u;e`#(l7s6J0treWL+Z>F5&fvkwF$cd&EcT(U?*}5L2f!6hc +z+zt?{aj+X(a+m!GYs@kiRG#=jG4o2ss^o}K^0({~4lj@L% +zh|nlWGU^EeGW&AU0K%pqE`u=9HGuR052DdJaN>k34yzVqNlz?*RKma&3qb;h(m|=C +zKg)iZI)KPw)W{m;n3986Nz*f9i#2zn>wv=W@k7kB!9&y5TXyWnuutfUkN8l +z#EA<6KdBu)5BKkKi{YqR4b2v)JwN~0NWaoA-1~_@?c?{VME`MxBN0lRSYfCsu|PJ3 +z_s}SY`=bN52sTv^y}hQ@K8nV;oZ~W!)?Ek!4h!JyM#~pmccul!n}^g^fp+s&RykBo +z1F+dip4+Ss_)S81&j(1Oh6dn6UByjFtm`R2h|9Q3oy#Ej~ +zS3;S%%N*&kR+*UA0v)tR5~H#IqgOV3JRAYR6KVtX1u%qwb%Ue{6PqwVQAs8XPKWuI;=pc?fdbPD2?B{KJ^oarFep%{1q +zjEAl6Fmnv!;Q^9>oy4YdRK1={D-#Rpn~23NP?a4rcY`tn;wwc6Im+{MHoV|s;ADDy +z@WS87CYm+j1fPdfVmnUV#7{TLp +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 +zphf=0LkJ8yn>C{@AXQi-}VW%iSY6uGd3Y +zL^T(?kakjiHxv!zOJ|)dyH**h$o)ne5riK1XZxS=&|)4^+VXoAK@H{Phn5YBZgOTw +za^3RHgLOKNUiVZTerzT_Xz*Dk4o=g6*UvwmiZ;jp->L=R`woHC170aLynQ(ZIb6H!hnZ}9gj|Nd~|C^ +z?g!0{NfFrF!PEZim-d5sm1>rALGLXxdr)2x3vwR@V&zJvUdfeIgqe9iHjxy4&+NU6 +zH<#nv#TNhgT8$5?1^iWRP*}2Y0nyD6C&~2<+G8hA0I=2*`QUH9Xhtv<->va7@WS@R +z%Q;x!w16Du4Wr?p;PO7)&2R@sGg@UuiUc?e +zTEju`1A-GTY4JJFi+$jf_0U>Fqva^jp +zRTqx4RXqG>AF>%gUzeMXtaVF{Sbz23NPJUS83mK0$)OI7)uWdh28JmFA1(4d@-?OO +z9819d<&pO#c4E&|V887}y&bvZ8hYp&ZR`47t}mz~OS$bq(*aCVwdeRrAOF5+rNPz% +zO@5PR#Wa2LUbGVVXZsqF%Yp}kKm%Su%g=ys5}rNEs2!PSkAwlK+kxV +zLCw%7K=l-?n=iU)`^TrPOuLiJ2GMY#7=9a^z&a=4<|#J?h#OOrU)S*7P#Dk)yUEZG +zO_4oWlH^kcQ1HZRU8E0of;?ck(oV_<+%N$O5-0VX=s+0#W4Xt7<-(>fFBLfjdk@8U +z8$4_o8|?Ztbo!=cknF;fl7w3W8K-nvrCmYo7(EUujkA1>OE8!pd-~7H90-r-S_r%S +zrIKw;XkhoFmN!vH=a;8HUQZWXqn&=BB(6ID)6{tQwwS+PLguem%i851gUuv$ofK5$ +zc6$0AcA0wFp>_eThYHg?9!?QTgTe|wT-^+DBsqR+EK`o0_64N=yEpV+dws>7H*4*f +zht*1lVIfO_MU_p9Py)khALP9M>FFojXD>{bZfY&6i?jh%xCCNkzcO42i?BwL;SveJ +zRuD|9b--%86BjW5*Rh{=DU@8aQTWjvY>;hTy{7P*Z{j`Ea|7x3O^?_2R$_eh@3i8E +za*D?(>PvIWqfSk-NvJxZ&Jc$tl!fMMd)7= +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 +z^RWVR13G) +zzk}qw)H|vKLZSm3`iY{e0nlq#_}|mJ)I~nr^0<$1J{0jR)SxPJde5>{Bo{?F{wh>R +zFLKr^>dT)M`SInpnFyIMHXJU?vZf!Q+j*u-LjR;9#%+-U1VHj7c>E4weVP&So(4}D +z!$WOx@fem<*r$YMXxj#Lk!0lUPf)*Bw*6bngYlu;s>1h_&q0fGMM59OAh++H^<3-6 +z8hZ`Vd~*>jJbfJ~UUFLIJ-<*C6d30lmm`DQwqN5#Ywb4dZx-1 +z*5{M6GUNZ7PyZtKJ1!wEXCsc-iS%G$w)9V@%T15jKNn`I4X3E<{4Wx1p|r2Xns|$> +z)=a4Lht*FaK!ZYLKEDlT&s&TlRkTuoA4GmayHEHGqEGVbqw9~>YsbaDHQwryNvo$% +zUE5@tbOjNh5^$hIwMx;#HdJAw9e?J%=t_kHT+EHatoIbhALmQ#N2{ +zfT=Rk+W-R6CCY09F>8&-@3}Ng=i=l$_$fuLodze|`)w#=zXdyHb*f4S`?mYYDih!N +zLB~?y0MB*W{sk84m7QpKSbRE#aB2d4N-4W{1jw1|#WdX$fdBT!n#Q(xLk=xao{|w1 +zA?Yt(6>Zfz&?hob9Fe{3t8a7jw+5U-x2StuQ2&P*l6kJ?DB}V_V^S8aU1Obf0_o9v +z%m8}X0?lh>OsVXUB?LXdovI*x8skjwtHD>}b(d_4F$GjcC_IT0U7iYbv;m~tuz`Fj +zG=a$0cbAR)u{g){nLQO+aF=oTm8%%6gimkhpB?DS8a+ZM3_LEX&?7WrE&A^_g{+-A +z%#D^LC)%#o7%Wo$!^mUcmUcV9N1@XK{1*;6P6vY6xiEn$ko_H7*#b>zh$N3FL*~e4 +zq=y8{$V?OI#yYUu`Sp?p +zkc&68Xy*C@nj(gndf@MKotO1{DRnt5VzFgkD;c%=^&b~0w_*2}QYWh%8JZ_3R`t%# +zwqE7PVNg=b63y5#@E~gfLq<~(U6x37pDoHn4R7dPlqYbQd>HK_KNauo<=%nYoY?xD +zXaXugN&i{8H5Jf!AZPscLz8`#0$ZKg2e-S|{y-%@Fu$}?!7gp4upmzq{daxP^TLg= +zr;?EeMaY(+5i$S1XCnW5ve8M_i6=T-To>}A_xMQ-kPN%NBR$qA6VY(%bH{nWJZ2@H +zGSf6jDT#}5Y}jo{A37PKwTuG1r(%Gbex{_w%&)Fz0(l)JzZ<=q-N4iTh&OM1(CAf` +zlZ3g;z4=78P$qmMPUoLef+C!U10X~;V!*Y%-)74pH%qGRkG<&#dougU7XorQXs)x{ +zhH8aWH@vcSk>@W~tJMriN-r1UNiQP{Ko;)p1-fp!11|LwsP346Bu6)HP;3Q=!=&2x +z&8h4X4^{JmroFez6Vl}(?{g!1C|}jA@#f3E>BSnPNV9-#tV8s#i93 +z3P*}zLFqb+x+E7AcdLGnGVxB&!}AYgw1#vEB#~kUh4SX$v6TS9ui?&ktRa3{{Dt>i +ziGuseZJ#w#CI7!Mya;8oVzoP!gNmLWy}JQI{qd%sqZ`oan1|Fb=Z!z>-nRb!Fx52q +z!N+@_{C&v=OwU-zdtuuPu%ZTZ(K6pR#q~)Yx&Cq=OdpffUK?>$>p7m`ZjCC?4=+EjW{-0&YhET*}4y7Pu +z+fQO=;m-#tawFm?`)0g?QZ6D&Vt(+COX)RRCVlo|@uZc!R>r@rBPi{NoJb4e1-H;} +znK{*sor;7~s&MQhMpaR;PE+d2wZq1Dt}bU7qe6D~w@%((5M`vUo!g_XqPN20Kinc- +z{9sPxpy6Y2#=hYbWIOs6dJHpo_n9yMzm-HS9>gWd#C(0T#-En%ig>h5tMqvP@hWjP +zdvo!}$lGihCeD6rWS}IU$Lf~0EeSp;I^0{04{xKO7glW9nc9T#2gQ%Lt?LP<3*hxK +zD&q*y`xs~Lvxu-`)auw=n2su5~)%sv63y`7EBEByXJbv_={X&@^-?PoBR6R_O72M +z@U~8mJ+L$#U2``KlI{%d#d)%nMghjJ-GkD&X^Aw9Gjle +zv9dZ^HnXgg-I&Q7gHO7cE`-aq+(B!|x=Xy4p@BQW+=kt+s!MV|9 +zQz~yq-zGfL3xp?j`ruK_)kX3ax;>};^gl!?0v(* +zkjkB3gu^rwDOw +z@ghATTCQzuE=Ip5DAJGrX~)NmXL0A_`eOUy%;F+rBjb3nBC&U4bL3)VN$Pm(Er+;I +zjZ=){jh`CdGk#+HTzt{?RV+0wZaZ7!%r+p|j5^s*9>D|DE;B|+ivjQ$Y_vJv65n9M +z&*HdnUl!52ZSu&|QyK*#8ngCsMWV0Lvl4cgEBzmD{eN*fCNYVVTn*Ol8=Kg?*IgQ$$L;heP;$tncy +z=ga*iSv-zVD?p-Ey$!RwuBwnTWyhlR=LSBn`E#sxQ)c%4CH%zw_h$BWv-aP$+T-dg +zBv^)?MxK;Y^FJf&@fx@ofd$>;MP+M}v7WqHr~QqjB^fKZri~<2qJ)OQ?PlR2G+Hq{ +zCoKJxX@u(s>|Bwc$Ok;m?jf`CF1{g(b{weKpVu|xNU0~b3FLe1sGARMk1LPk*E}r0 +zU7lEeuROjy3vk@1^7Qg#;~e8O_D+@(U5_pa)_8{QP2ZL>XT5y+;7w(7m;MdC9}j45 +zQQm;7kafZVfl66R6=9f5b2s~PoZx5_lNC*I3sD@{6Z*yzyX|8#lesCAcx!MEXV=!G +zn!CkcKkoi7nfBQHwMvOtiBgGC3AzLmkSiBHX6`oc-(lq$;WYw^VtX)UM=~8i|(%a?P$LWmZW2QUfcE)~>-Npwm +zT7nmr0*|v*W$`glv<&MkJ8p(?v~k99y4urqXP%`e>@3*T5Tdf8f%-8*;HZ~zDG3BN +zRq&lTGe=(8I=>YXs#dAcvrx_XsgnB4fj%XVf6koTe@rv|Q{=vy^e)8EO3vNSX1?l$ +zg^t^}ye&Zf+|BCBTEb)7xe1%BlbMid~>{T7tjlW +zY(U97uxDmzIUSVRoI7-QGwgW2ryp_B>g2%R^tcimGdVtFIsDEAQ_QJZHR(snX-Pvm +z*XtZf_ZzcRpM5|l;r7%^+%EU5+eO61Qe-n_q@xQ6@B^+zxbGw`t?AHq7r~iqERsIn +zO7*(vXc+Q*rHaDpcIq66x&8UWH4hj0;~tL;{9 +zrWEckWr2BJ@V&U`e-9<%u8@16Dq26{hTq1j*1&^jYYZ@Iv>E4kdwiGz?;cO=JJRW} +zd4h2IblROz)j`5k3r{$#N#%6A0_8xszSwb*5dNGj?>j~i3(SQ8Y)|=_{GaHK1|qU)R?cKk-=SJ +z|32!H>i1N(OY7B?`SH`vDrW@yd~!Tfe<7jg_=={?GHKsJuN;37c%B@eo$zX#hG3I~n2vWBSsz5nA+V-ygd_rSDa(`zORQEEpYi%k^a@ +zcX=P(i-4dWR`XQ+vXb?eKL_& +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 +zt$J?-LfY5EdY(TNrFsN^3 +z>5yy>6uEO-HRmBE@@BmT$+dMVivq_jrml_X^935LD3wVj&9+pPKKpMavMtsU6JP8V +zt(jDsuyR^PqDix>^X6OO%{CQju7LahI4|0ar5+#Vk4dNSY_L5Z0L-$Ziy%)9uvZ`K +zme~ZV;)D9M4{R919MWK(QQga%<0#>r@!v$+^-0S8F5&e$1$}v4#&4h+C^ZHK%08Ii +zA<*59a^a~kyL&o(-&n+w_0Q2GErCD}PWU6woZFKiLI% +zN*lnhk#4oX@T0N0BZ^K!oCIohBGW2+ZsY37xjNZuUO`OEAEHGLQzI59U&Om7P|;Vg +zHZV~24fC(NAO%?{34g@(?p(Ejj-vl{VSDc66^X$lI5a~{Tl>=l<_mvDm%m2O)^03}C8Tn1FfQ3I +zNW@hRxeQ9Mz?fz=l7WU`JCXAgfuN4P!;MXN!fSvK0OhES%FT9{k}zn3y1s8;pb@dLyd_nk*y5)8h2W4+ +z!j`3o1UDVq7SXEA3%9(f>DCNVFIyAV21;+F$tU8WFKKzWq}nHfp-qsFo;Dq}1!>=s +zZs$G8ANm%tG*%Cdls_znKj^^;%W!;DLEZVF_W%1-2oe3zz1G)U58`rH`w%1G}`wn(==MPHT&uDorNNurUPVeEV +zk_&V}xZh=kyLOLcGIkdvkLN?n5&0YkaM58%mA0zqzW*IIyhYt--C?-N+|m4rH1qm`UfBGdi*CQ!Iy<=qWW|N1NrsT +zX(MyZJ0;}{q?W(s+r5WLI59O>nGkf!IB)67VnV(QjZnOG!olmW*1;dDs`)fqP*a?) +zJE2eus#ED#q2DSYW +zH`(R~+Ta{KzcCE53$O%j_D(m8mgj@SLZ!ZCt_Pn7&k}}h$J14XqK=b5+ +z&0{nBXJZP)Gxt2eC~?srE%~ojq?(IVvI@~0ZK(m&F3^61rB=A)w57M*bn)u1>xUEU=HlI@jYWj8Q6bv_ +z>KQDiJn0;~li59l&0>>kSVvl_I9D$;W+H_}tjp@9Jg&UT;fjdekX9gk6L$|_VuKtu +z65ke|YMvpP*fC~6sgtK8Xj{i?3wox3ZfDw+P*+eNOek2r$^FOGhcMzYGd`;5UavDB +z5qka=rR-O$GlXVI@+a%}d9mkgy`vCVXM`r9-Q3aTe3Y&N5tx#dwYx6kLhJvgwl>G+>$oh36nr`Odn1!;c_lO7P;T7!6ffiG=N$(G26+ +z+RE#KtiI)fHvC+bQ0$j%DO;5|nDw!Mjn`F~S>WgXlSv~5xstp6cBnb-NIq3{_e>~0doH~ +z7!qy`za=>~nOh&e1uGRm4){2JA}1Db?IbRET8XGCNTMhdB`rJv?wi}$r^sFgn&5c5ZfC2TkU4+q(CWGAToL4U+~Zg2 +zeLex&CuQF6%4+7P7c6R5f*V?(ENvR%z~RqoA{o7Yz+s{_{1p>_YHrn8}iK_njeBNCSwTXNvNBVEQ5!cN{RCN8nu1Jq`{>rJywmNx3Ro +zmesY#FWkCp*1zBLJvikpE281-(gf~pu52qLs56nm`wC~iz4%nmxUsDlb|8W{b)G*_ +zW@`|y3Kw|Nn`|<3oDx*L!y@C@=P5K0bCy5#_G((sy&`U7!NrgWcd`a{o;+nP={JOpgZCmE<;PJ=Jo0Y2x +z%umI~GSA{4e<7F4lMX~KQPzugUdRQnj(W2yL2xMDwfQsWn@w+3MlMTJ;vSt_dz&o2 +zU(hWjnQK$A2yu{l6|F%g*?=6d6Ch3C{fL6fhT&%BW4xqUQ&>>INJ%bfL`Av&?$1QB +zaSzbg_H57kD@E*mW%*X +z#i_^+FQ$jo0HMLQnF59;D<|~tWVp5iC7*NPZdQ!?zw_-+h@r~Lnf53B#bYy}&|Nj$ +zeY(+ANmdpLRXYexb=;Zbh?tD1+9fXtim9*NdnILib@OuWn%daQ0byI-YSZcbt$F~R +ze20!TMZQ=~2T3DP0Elgh5*5dIE~3;QJITAJ<38_cUpwWVk=v8W99f?wqvQ0RpRM6Y +zop3hTfkdZUfgn5^7jm*jKV#oNcOi@zIlQsuQCIhJV!usj;q4Sf^!BXS}7L?)yXkOQUvHV#{MHQpohNmOh`&u(7-M8QwU7zjq +zxpPse09s{)tQ;7##NV?SuLyfea!6FX{Q0#eKYwUR#l2P=M6>eK-!1x>Gt~N_boQkc +zf4q|~CpGD+JK>|bN136(m{Q))XLTxGL9PfCYtr}RVw0$|NtZ?27g3f6!VvSC`74_q +z0UF2kRzI6`vvjER)_Q63nNNiwkuQK>8M8-9F +z-&h)Dovj}+K0T|+n{1x#1?%^g;%{APGgMfb1uX|vX= +zckSd-nNF6IG^|7+MP^=g{hZmV4%7~$JAp!B_RWU|6UW7;$?s6*ZBP>t%s~@Ui2rG= +zEGmRG>;F~o9ixlP*_$5qU*=MTRX@93I|H|xhj-_v^Sm3ZvG5o(e|v5rHpEi6RiB7G +zlj;(zTx4subXq|o5^aWdBm+ZE-l7qyHZ)>aFAAad4?#JUT{E9LGC~5{g}--Mx`OUA#`6m$z3C1tZ0F8$q`{eF{chc}fw6ANY +zOWy6=oAI|ZV|n&@h>z@;)EQ2{?-4~hg7N!meIxKGtu +zw`Zl>o8m?D>Xe&!ku3Wa9OZ~8s$$NGklIhoK)dW9MBq&vz?)*>2BZLjq`3#`8(+Be +z+BfC88w@Mo;aT;Q@WVVvVT +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 +z68ID6A*?R;pYlwYl|*GLsLmNMy?;%&j4X~M +zmaXv61K-WtFkmqzg_>>wM*LnO8s%$u~en{&O0(NhXK--7X9Uc7L4oe*PDK2 +z`0Q`$x=la)x|I(Gz>oxIRPEUC2eUuEZ!tzZF@Jd54r)|hgh`>3nA4;n$v{>*DPwHX +zBuGF4h`}gHWNmrFmZ$OmH{Ug2^B@?B)*j+JqRfvnKKQ;s{p-s4GM5Yj(W15FQSJiR +z`dG!Pjolg?!@r5pf^q%K#QWmY-{h=Vdsop9?>t+wdUHlGNie}`n>+eG{pAnl%CCA% +z$&UR|6Z59YQ3oyDX;hYN%gK<4m=tc_74_e8m#@At|Nl?U&3XB;+Zum*_xll1eb^43 +zViyHuC2`FK3v7AlZ{wX@SjnQ5SotBI`s(%eu^aymhPjW&u$v#kwV@;fi*N15t*ZQA +zhZ3|F+`cO9XfJ5&4)qswS`*TXy3&15zp=dN4lDO9aCQGRlTJqkrejo#YKQWHUEj~P +z&79vBJoNX^XT7#ftp5(hF!u@;{MOaUK261>+*S+|2PFftXMi{a=YX_`Q>AYmttS8R +z>HY$T!6X1;>3?@^neV#9nEh=Boh@J;0~`SC$96t^8Po1)u>i$3SHg@3=70K1%AB@$ +zZLkl=E|z-+HHYPkZV%NMD+jm6=D%NDEnWVX?Krl*bF%H{J#FTqSm$_{Y?%w@9(cxQ +z4=mPco^{|j*8CgywC_0UtH&M)c_-$IK_ALRtKIwAtvh}8^!}4sOdhw>o>=nfqR*{8 +z>pRe;nCGqi4zC_`#9tRL-PT@!-&;;!de>QN8rM?nz4L&nmiYKvWA=XGs;;T7 +zy>`{R4Idpo_!(G20< +eoc$j_9K~$~1n<4yE1cc?ezY$_@niZkDg*#f^7_dD + +diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp +new file mode 100644 +index 0000000000000000000000000000000000000000..453a5c9cf486f7fafdc71376ce854651929048ef +GIT binary patch +literal 5524 +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 +zRa{5*nhI +z!+4I(Yk&CczHP>?TQ_1;0SjK3kAkVO&5W-jQR}k=yjgU?Yva19#K!J+U7IzyJt4QB +zlWPDXKYbCPA;9vBX=qSvRR}=(|7#--+%;mY70)nl(QA{x%`GB3z@GcN92xc$lwbTL +z*ccKZDrA~pxi!>$b*I1o>2-qxeq-<8IdZTLEPVN=?GN?lg%anI@(F;#ya-?fB47r^ +zmm*mX6_oheEnz3^Ip~004zpCVlgB!rdnaFu90*gT(?$PXr-^y5%uM+2yeX_sbu&Mc +z*!gQ7nm!^iSy%h9^E`3Ytpcj +z&>(9Plr%DcXGguhctgTx&ImYi=v14TZ#uaBvARh;AZ$Cg)++N)QOX-Pc~`t;u&1D) +z5|%{vVGnMcB|mf?*M&cFp4i{vn_u+yd;j98_ugym&J=yyhgCoRL-E*InPpM@&0B1_ +zThed}KoQo#Hh>t5afPK|xJkbCT+BmXZ1#b-!dA?i>{hfmGMy`*iy~N1X0wFzUv;u+ +zl%*h0R^ge%E=&PjhHGyVdgC$lU4CKg!m#& +z2xS$H1UJDr4gx?5P(lTP>?Wy_^u_1nzA<&g`qc&}^$Kg%2T7SQO?#y7^W`Pt?C4}U +zO7A2wZ0{oCroRZh?rLK5be*TS)w(uPJ*^Zky=}`oZZrPozYE+cv(uwt0w6)5bP3ZO +zqku6KkmXQAPH~qA2zWLtcVCG5MJ6q(5H(bSc7zR}4-k{$sC_oJr1oF!O^11ds?Ft)NH7m4;`rKvEfi^(I +zNI)NCRPR?rR2uA5Vh?6e-meZ4bWr)2JYCm<4&)g2VWR+SFzF}Dp6iv)03wO(!W8DP +zfUO&o3_8$;1OX5+7;r8<5W)z3kOL}u*}Zyp7v_*ZN0kfGL4rzxE36iZH(p@~fX1Z< +z3sq;x3Ftx#Am3@{vp}k;4!QI|m&9%L +zfl|%L?7nmqH!AmDu!OD+9mpU-0A!Lo+@g}1;X=>S15ZlOW&>4JIrNyXhys7npeL4sl~ +zl{MIYMf!WLw$BW9VYk6$*iV?XpaWg{ej8c+IhPtSAWA(-vV)Ilbe?7^*5MH_8bP=T +z`JERnyZ8-L1W{=Ug}Dv~5f`BY5R(kL&<23$=8#I-5E2By07Ct!5UQaS|An +zVC(vj=dSa8_YW6p*n7&Ug6N@XII1HDd%b^1;WS2pSFhH4IAis$>FMavyIUmA@ +zE(kC#Ns)}hs~Wz|$K3z6FWdh5I~5Q<1-mI +zda((NO`zKCw_$#0$}d+X!ykrr8Frwx*8BCu!Gr?=18AZ6#Y6!m43O)Q#T^Nw7itfD +z@5n~jA;Aa*5)R~U?E3F2x;~PqoglN(S_fT%HV#5pz+x!dstQWz15^S#^uflO$0T=s +zZG!UHQGzp_KX +z4hxJ_U?LCoS)Y>sxWmQYbce^Up0wwsnqvprZo;$!ZAfTJy#ECi>uXa(Ny`mGfXMU- +z=7GkqCrdZ{?TCZ}0wpkBfd-Ioc!d14GfaQaOHTg4gcEj>KIq~ry(ki#xUf8i?)}=yJ0X=|X +zgQr9s9_Z^>c9h@GCEq-`r|@N~5C8%>uo@&q5}-lj#{>NJ9pAKJYbBTc_`jXH-$EI- +zN!=Zjbq^kx2jUZ!C9=nFMF1K=0|=#t{Z+n$*-b1+wJz5K5@mH+HUp==nP6fbk +zd%0-_%0Xd%V9KhS6N9m87>E`TfqZJQ>64%^_ezBW*dQZoc&pW~l@Wm#XYBRt +zlT^Pug!G_`IKL^&2FUbKN9gdoI@3POyv~V5iiO0)0)EV@3m;_SMmSdojUU#CKl2&! +zZ+y_yc_JhHzY1?xXK;&EHN~|N2?Y +z#di%&gbp<1KW}eP`fi(cqIabv$D(ztuh~@e%byY2$B{XS20AcCtp0=W2HP;&-?%;TFi* +zTwbhRff;xStQJ7wwR?1(de4Esf3}J9Sp;1`!IA*yNPfN*eRvBZR*WEtFTb*#&i+md +zvez5)lnepT!6%ro2|@e@R?dC^pWaH?>G_&<-);WukAA74^q2W_>P(Ww&n6GF)Qa0%V?OQy +zD@ibUYOL*Bec3iMSu&YyJ}8yG-koVIfw7tZ14sRh|3}~8&xuSXJN*p#;-qgbo&qaM +zP?y;5tGycAGvXXh9~bjqVL6S@AXXI`4tl4_g}?Dl?Y6=Pg1|=`Scqx(0IV!Q2nT$F +z$2~vG6cFbb{8VcM@KUTUKw!5Io9g;5Bgw1ekq-U&mR*J#ECee|;K5NZ7e~I+^wvA8 +zx}Ip&7TgC`nqbc7SoZSY^wY-IT1z8?!fFHlI-m;tj$88BX~oTfBA&Tm@i%cZBv^5R +W)p!$;SapEHyRic0|NX~*r6K^E=59Oy + +diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +deleted file mode 100644 +index cc2e82fe684a57153b9c8017c0cd8fdd5df3c54e..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +Hc$@&aUz9ENg{om_O{@%OD~qpwd!n8z0QdjldrN|A*X1ug_o+CynbiN!zP?wr$(CZQHhO +z+qUm&8*#Flna^Xt^WEJa4*!0>wyFNr|&z74RaF%Jl@HjC4Op^FKfDe$}z(a&20btWcl7$Wq(<|oxpP3UZGX!Ky4jjpCn^mE@ +z0?<4!5{-@A?!~;R0JDDbAUF$6bzw)4#fTAp`|iPkUoY!x;Rv0KyvFXoIJ?LwWsovXnSljZG?;-Q +zln|7#ub|AVFMC~fWd6-YJ%9I~Jn?82e&a3>)XVtm>F4vo!PQ5?`1~Z-LqsSmdIs=dK}rCSB*O;wB*FgY`!{6xC`lBU@_bo8Q7{Omn^^8Fmm$SF%7WNsq~ +zmt}w0d~E*2*+1*~^%3rW^hx`Go4G5_p69bC&3C?d_xX*L)1B+L!#{@`$)$mWQToMq +zJ!tt9-M78LjcDL<-@ +zetD;OX%L08H5Zto87{pKX2WdRL}clCdI~6cl72DH;s#4a3n4CibmBiZ?eqlM69VM>t~Ax7F$m}nPvIA +z7f|nAmJ$~~`nso`y57F!?cuN8#c;M*a?X*?vt{S}a^o8}SuI`YUmpGxHQX#xZLDck +zj8x-LtxKFi200-FGJH#?Gn3-lckS~3G0Jtzyazp~qr_g~z*JW+f7x|sdw%_It^vi~ +zkhyX7fP1;#376&P|HgmvVmKRD{Liwp!ixX-L;9IfC;4YxwHInyp>9uFjK$*)UC0RL +ze01;-0^OM9UpWyQ=riO(}YPYdPgNHxR&38iE9d{!v +z`CsT3OU_9RLe)^H7^%dOc-CPGW5_94!W&L6V%$It71RPM%$p$pFVgrpTCb)q{9ftFoYiD(19*qCvydZ3iBD5 +z8xdERSi|+P(0}{ +zfe{R0Oduzeo=`T@kC^lk=U`4i13hS0aEM4dT%!~k$V8N)=Nc%`jga{x*0FV)*B24xRdH3(X +zu$Pw20fUfI!YuS)2w@^=I_S9-qkHj~t%a{OWBuP$qxqd!@9dE--gX8$5CB91Fe5@z +zpwuAkBaILsGeiIxA__5n&-q^M+Bo-!2f6Z{Z}t`7B&7?}P{VMHgP){5h8v8Ou3e+m +zc=lkjy&BVeOxl^-1}`~?fKov~r9#?AS|J1okOAM4aZd7vo9W0Ex4!>RoDLv>z +z&4$>|a)Hh@OzsrNFPEbSucjzZq@8&>9h~8j5K-#s@tPSjC-T)nw|d-Yc(*&aA|ZG; +zqm&`k)=?9@wX=KyR~;`dT_x?maun?*UTy`tlzB#g2p|NME2Ps%YlOg?6M-*4yJF{4 +zGvUN@!)=%7dO<>hJ~OAt!sk>cUW@A{gFjSJ`(l?ibSaagw@Y_U(gsOnNDx>l0D-Gj +zkck?|esrQ*ICFFHE-V4hl~Nl_sSxrY(DNszNsIEeIPep+CxH$gf{vR59qrGuzZK-IzQ0rU7ontzVOJ|bN<_X<+q#VPmb@oO56CWBaWi$c@j;mRZpSAOKnjt>4S_A}$IYb_SV!N@VBXb+&WWk@esIcKog&A>Ia_u#iu@C^6Iv;=dyYR^_Z7nr<%OC2mJ^nc#xIyRGdc5+O-AfZB6N0S5EIn&17TF9%mXiiOLIUd4cx!17^s8No~HMQpO7omS@b&z7uy(-~5V~_p;R@?PQXx1;wx!6rn6@B+zs0 +zObk8Ph%$tzgPdu@9^`~T9>u>ZJ5x;;Uvp6Qlev(UWKf@r3$yat?f*}ojVi}`9uR1@ +z)ac>5z4ocSE9)`DMxsrM5LQM9d$&BYT)iSWd+NM@kG9jJ5CA6{f*7E;B1WKeJuLq( +zFoJzJ03GN;zrb{weCl91p}6w(JNc16=oQ~Syi=CTit5?1y6srKx*~h;$-N>x25_?? +zQ$Z(ROsyx{y!z=L^7^k#U+>6dwl@^2c>5EYiym;^&i()Xg?4>AcFouYiI0BSQK}+) +zOPj+G+61zIQH^2-_KALXw9AW6M0wej(3$4-3;Wd%#u|BLqS;+FdFmT`)bCP+WyoBY +zLeNrKtu2O2KYp@q{%(Hp-j|JEd}&twwxv8+SRP-kHJY9N^ix*1PkD4uS;&?RHXJB0oq<`HgZ(fgdHWN`ob&pWU)pX}jvvqIwBPFYAKH(8@wmDO_aV&? +z07XZ%tJQMMW_^zR_F2#Er`HU2>!-B!rsvB +z9r5aSf;r40db5}=zyd5X%tHj?9liKxd;Q`c1u6BTl#Z1}*arbXQ0O!j8ulwBKmZtr +zxcbdlUH1DgCN +zrh=d?X=t?_p)wGmfQuUl6d;1aq6BFqY$Zr2AkY^G_YAB9daxt}EW;sK=G~XfESEGC +znhwf!fWUGHyr=|LKmu_kL&C8MAp;Z;1R?a7e!D!YQK1iu3=5nE5R{6F+Dc7(I*xK) +zg_XLMMU)UV61EazLVyAg;-IS2?MK+L26Z8I(XE{dkQgFlIa(SG%W?@2fC8Z046k2O +zfsk-);z$CZKoY4&;TP%L0ZK!u9|%jZq!ib#Xe%{z+D=jk%+r8pL?w&d6n5Z%^MIjezqKG9pGGSP)!$IUN-9_RwEB +z(f{__YrUM8^Xse5Du0nbygWy;)M6PHg`k4A(yob)lN27!TcpS9KW@NOn)e^Go%0#f +z_Ol=1SYJcys9Yq3=X1@me+@2;zNDhKJK_x7El=;#P->c|5=8`{FaZgYP%=glh)N*g +zxWuIg0cudeEUd2|NT0v%&GD$Dy34m2r0BijtvrkpuT!{r^3T+lpC9gOxJ$com#fz9 +zmN^cYqC9y4r98RzUB;(RxV)%pgdx;W3)Cw7d_39yakIBjrUwat8kC_*$ZJLX)kV*U +zYa2&aAH{X9B~5~VpszvIZq9fjae@9~#@5O`;i9ANb;c?80anr!X*oB?UDBTT!dr{7 +zISfS>D3GQcapGj>p2x-Xr?fW@$~gf|s6ibXoPXlUw9}mJ9>HZPA?-(6pYah1;TWds +z{kVKdZ~nyDN1SQSI_WL~KUW12qM^ypzTBMOmY3IVX{Mc&siVz=$8KW +z3vs6e!(xYAnK$vo)>}8mdry8~Tr{i15S>Aw+F-Omj)eq31W>>bns~1%Ql$O3zxBUP +z=l^FmM(sh9Jm|$H)aL9@z~6m}ai|kc{o^NpI6FJ>nZ@acZkvox+_9JyeGnzkN@~YZ +zWFaN1xk2VuV+s>!;=DvT9<+z+KmOatvM+w~A5C(Dc3_Ca&$DX-4}+j;JZXG(vKk(~ +z`+}|T&U|IV9$li$X(y=iZP^*LvdhmHr$62D +ztgFxL--MBC{`gg(>IVun|6+2O~{Kk?yDpSoUWEfmFa +zh@EY*OBNC;dseqLhc9@|CoYk=+0N`--g?J99{J73`0n7f%Hi7iAv2-*jMq$YfzIa= +z_kY$4KJdVw-&if{qQDZgpfN_e16#1ERo^MG?bcuV#d`efi{JSO$G||eeXAx-4lfY~ +zGWn%tZo`t4%FIhOOUxy7U^pLVWaJ@4*5XfMCQWcp^w~bHIk9 +zUilP%J>|fGpI$rUQ&=HkHQy{O9GdyZi6738`iBS9x}V}nG)HSuLk0$LE7$(vv;A*A +zAfEbX#m4@O;r2tq6aM?w=at{=pB^Dmo7=VLsM5*WD8|Ok1yC}z_1OjY`tTbb^RW5< +z*}B>D0)7Gxv~_)3a-b?3 +zbEmJhLM_3U_s44p>3poG3ko`7qo^%xZP!8HRVRLuTVKejC-EEqPa>lK$$ya) +zGcz`Ym}=rJNi4{MLFP{xLIiy|sA(g~@dX(7fj_*jzYq&1^QY_#qyGuO1Hcyw01&wW +z+7ttTfw$1Yw(X20J%2E^ZQGtX;@Y-t+qP}nwr%g&wi;DQxsqC)em$(cvK&-9mn>}C +z&PIBIRkdT=*3sJDQ`@#}+qP}nw(Z>}9eXBKYN+ngz7MuY-Ml9^e` +z$(cU@iu^GvA8-J|HGuYSLNY)YaOS%P$PUB+cYXpJh??L4{s+t`J3!<>587HreBb=% +z;IVKo0Cu>gZJ|grsh+ozl*~}ZSyRzSERfoL93#4(KMZ#tfgb<{D3?ItjsO2?np@40 +zbd67V^G)zcL`?9T5C#H?<_H)iKwLzm1!%X08YY~v^?w~p%BY8|-283nCEM)J+^^s5 +zT76OTDxTk~1r3+N6||S`YWYP`QLUOP+oF=~vn +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 +zUy`5nEQ>{lhjkwU +zGgf9z7g_}jwMHHDUyJ9)<{2xjVFL+p3jg^>X0=Zl>kSWU82+M9DvXwi@hq^S=;TdF +zKb1fDvwTu69W+zApC#?(#8q>sqGoH^>@^%Pf39_>FXP+33107bNh@o0#gwnL##biW +zC8Z5)VrvB9+Jk3vP3FlgUN#~$pW`q0>zf~{pHe|N1B$ZcA+siX4<%%w-ybc +z84*7@&o);%P;|M&%+4*Qnn=R%F^Lu}*_4?Y1;4Ztp2==7G$FB0_*mRq{Ya(EYhzeq?e{cNFse(wBRU#M$t5#zaKKp_Z(DsoKVyzaS<=?VN& +z`QDRL@AB!if7`BOb8C0p?wIbTY&Fgo37evo&*W!+)_?qVum0~1pZ@aU>PJ@_63*l- +zFB-bR5sDjuyk0~hWD_({L%;;`&AQWm8*#vIMU|pWFNu}Pc2BJ>sAh3K&_rep8xT3Q +zw|Vz(ZqALa_xLq8wQ6A%l+}`Py7edp` +zic}`I8Br5fbg>6A5RotvtzwJ>NKJ`9?r*`ryrnvtR@Wsh@#z7js|AbR6*I_gUsYsJ +zphf|-6Ve>H&L_Jhru^NN(1uEiCWwfM!WyRer~mrj!qHS}S{Fz(TL~3lCW|tPR0$<4 +zsA0V926VsqgMiYeXa!?Ht3m>FQU$64%E$p)lz=93ecxGGyNV4YK=v3WROpz=u+_={ +zp-lmhV_bo{Y~1eQZQD&gT!pHDDzXTOG%!E<2ZxYxRq7ymOq8}-NXRekj#Ot*K@kCn +zXdr{q@GHg#)DRGLZHiWL2AyZD=hCWx3UWYXw8RKvaQMGvmaXLT9-T3WCZcxC?b6f6 +zROFgPWy~C2ig62#k?makOOqv7Y&xB`?HGOY_HBrqlUI1iOxkhF@KTHc&hy+qV}766 +z$zm)K(}~g=){zhu5-Mb8^|oCVUNDa${)65EPQ=R6xP_aCLU9Qen{Jw?88ezW0irI6 +zXYxcug&EW-n;n4)vIt~jXKqzBeDz>aoB|~Td*~|?KAqV*vB-*<{v+3S*7INWR=;?BV)zf4KLdKkK9tjY +zzXhyxX(C*XtOZ7SRQTYv{&jS99iu1-J(;8NuIWXXf^H}y=)%%VfBO5+i8vF{I?&^9 +z{pL*(8I%Y)b|uP(W*5oO9ZjGP8gHzdj74xfloGUK+n-Y)C_ME7IS2uQM0KWZbS%3;6eOaFhp4LMTz+D +zJ$Xg0Fq_{jFB=gd9raRMTmPc5IIZNYR`XSkjQ5DYLdkIVk&^je@w1f_P{)iwh!JfJ +z`LP)*|JaoIDBMNYf3GRNjG*WmpFBSL>l-8H`%_}!wxxwpKtwRFj9%`%LA(h?Lw%M9 +zUcRVZp3!H?M9{R9AP9&aYUsa&f0uqDe!cHBq7y~)eJ>qbokaZUeCzo9sSVb}@5^DlJ%#;;YM +z{}Pov)HGkIqZbokM?mq2(EWISZt`-q<%w>sHff*9(-FYV2;O-bOMhBN=YJ*hz1q9I +zcnfw2)b>apf1a@WPmGoEf7mg>cMmlqac2`3#3wrknziuYoHPwPDEJTlfy+cm07yqa +A7XSbN + +diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +deleted file mode 100644 +index 23b969de27f5abd43b58097d47e29c89ad22d0c9..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +Hc$@Nk&Fg3;+OEMM6+kP&iCS3;+NxFTe{BO(<;Jwt;LX>H7cT9ud+1V8Py7 +zJVp0DNqNsoxc0wL(6)`_-OnFkx$HnFZ6pO69*suQe}zagX`A?0SsA-V|0e*1Z+N{% +zt8)Qf6bAqc-2k8s18Li|{$+3bEkwiwU=|)IQ;xH3j-<>~*=N7C#2O@2w+ +zTsGFWZQHo*&9;rx)ZT2{wr#6z&jgM9zKe7Qf5B&wwT-UKGS!o=nN%NFzoJFk+963g +z5r33z8*SURZS&3DkG5@VY}>XysaB|5sm_Y}DQ(+!ysobA{emw}S3i|WYTLFkw{5pG +zcgi2ok!^F2>|HxanPnq+U%Iw!o3^bw=Um&@c(!fZwr$(|07ka0h?#BMw%^-ang9UJ +z#y|pMEGa+@RKEe`BoPBzKxaw{v=)J>GsBcjXvkQ|UxNRig#Ust21dXD7*8A{3C~G( +z>hg2!rn8vuB4`7>G-&S+ORoy+<%_1Jy;^#XtF<~=p(df$XdV!W-_Vb@(`xF?-ZrJm#(I(^@}t7JRzwmhDHV +z^M|juUpVvOfyLdPGjBXtc>)>9;+5OBynC&De^H@)wut7p%$@prg?T^j`9^QXzl*i! +zpPSDU`7PzveT#*9PMTFqTM|03fdw)3fyzYpoAeId@Y~pKqrcAn@$cpN>Yq&M4GVMe +z!9@q9_IfV}%S;d;t~iXf+rrxq?dMr@9{x9n@_$NG?>6W7BQ~*|UmE!}*;r)!kZo14 +z%qEx^#(?u}!f~h%RCfO0iGKIzwhBfPn9Of=&Csf?hpqwZ0@(!kADC}T_^agO_~YB& +za7UH@r&YM#EAzY!MJ5Vt6c|V|p)DjFM??e#NCEOud*3#Rv9;uw^%@G1Qh}T +z(FQ~e!Ux(yBx^H&O8MHBX^-ua9=^K?q6PB-^OW&CwP0Q#0oA?Gzw@#FRK91B)%O+0g6C$5F%JOLT#fuRGzJ& +z=l5M1rY67q-@w&2rALy#Ov>i4M7}(~T9*EI)8lQVyh_6P_FE_6IA~sI5r`m!F8YB8 +zBtTo*=Qi`7XHj2L;D2Di!9)TZ32Xs> +z5F!rYgQAfSq94eI9}Z~k`QEX6%j)`8B1y0CgKv#hA3{hX^Fy~F^kqf7&m%tI0bXF~ +zwQ=0a&^lNDeQl`UzD7&};W(rTRU;puX|*ZvRVH8L>Oo_sbds$m_!5$ua+6*Obx59u +z$O?-=4GSmhY@PsCxDhTk9{(nYU|o?aDX7 +z0uWQEPsUF3eSZ9w@Ey0mADp}Vl*Zq7`!9QNP44#K%1ZfkdVp(7euT=g&P>ag8Ho_ +zrN(NrSLyI|x|CjSFkYxUI_(9!runkoBEAZK +zdkr*2e3?rS-(mnekOrU|q? +zd!q>{U;<4)I{)u28u?AuYN!3ww06LZe%R@$Ug3uGV}5`7|Bmg~Kov-~0(mQd8feZX +zhXhD*YQcRELNQ27%ys1HjDl^~)}kaCl;4QFUy~7O9byJs5T9`%;PeaKdsEYk3%#3_ +zcV*REK1mIm{i3LL^iTt;L7gZV7u6(;ltE_+5QHZP7znliE--;jH8@efSJ#Qhe*nh- +zwsDxc=pqCZ2-W&y%X^8;-xy6gC$D7SN58$QDD^Q7d^z9QnZ*VXa9|S9qT)#?3V+AJ +z5}z82#SNAqjt*?CSQLsukP#7$GEyrFI#Vk27iLlRfy&ASw?-T!?@NGL5F-{eP|XN! +zfD0_~sbGqSaE!y!f@4}6rV$Yl1x7qEjeJ=-c2Ne!Y2WJXT=YcK4r2lWlnQ|2SHd>S +zZT#&t_vL5PU<4Rynivp7>7q=4E)0qciHMdEC7{wIDkYLZ3P{9R0~R#TpLqQA8(_yU +zlCs)v4+|{)&Yy?4?qqr}81(n{00llg#^MT5pumub$Y(}{M<^iCSwbqrfp`#$^G3{R +zHg}qS@b0i^7?+!5mXNI)>o-q%{riHdrblL!L4vVE^-wNAC(h82R-vM(KND9gYzR78 +zqFh2sNTA>k640F$Pd5#mIq&L;&9-nu2m?_75Tsh=v9)2w^p9D|{<3-2nLffxRpShh +zr+^JUlX*up{I>jbHTF7MGgm>erpl+n)K|4P=0~b9Wr~o5-|p)(Jj;poudo5kl(6mw +zP67``>3Ly>^*3{$$>{&jBi+Xt8d5+c6*WHnh<9#Nt!RdlkzJ_rb!5%&Dp58>M2JUc +zcC=qr-hF|2V3r#~IO!qSz*2HQ{4wT!%j+KKFlM9!frUlnvlL*WwM3Nkfd-aeRVtYp +z1yPB%XUG2Ef6$ognxQ`cwS>1m^y{Hy@Pp7o9>CLowA%c2j==I=J&w7KEk#GPKwdV| +z+JhJg30gn|Bp@ovkt6q`(lf2c%W;$6`PCoCb`hXGUmz8KUv}D_jz5vy}{W% +zuUU^W`B4EGg6wV`Zk|0h~79+Z~Y@q}fI&uXX;EpkAS78d;G(#zfz!>q6i9{<6`+M|8ZG8z?Ee3WdX{&7)d`SRKEMMks6J`{Q{^t5V{|O5 +zpZTmLGnEfJZ{ZH#6`K$leBj#Q`u6L}uK^rHvjflwbQ|Yh`q0<>w!;N3e@zo@zjk2{ +zB`6M~vkZdNCv`xrbojvI!7dn0rhQnPo12>hvG1~nzdnR!lOoCGdA}6Z`f#PXY1{yy +C{3?b3 + +diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png +deleted file mode 100644 +index 7daeb42176897d418f02edea15e4bda3b253c5aa..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +Hc$@DRdTnm*7z&4@4*_rMrEaqZI(dHCI5ms&#A6Ku7 +zL3NRxR&gk3+lEQ_!|pDFh?oH8TA7Tj=9XWr;BY2DS7K+jwndVh=gX|D?&|6qW}amh +zGcz+YGcz+YGcz+Y(=s!|@H9hVexaPte{cYQ}ZCj_tp^j|Zwry*;yFIgZkD8TG!?wMU +zEImoFYi1hL7|${KsK;8{-u-3Uw!Qys+qP}nI_$B!tE;LL25#HNk<&Ew?t5>5Q`^?` +zDBY)~Ts4Rmz0xXHl$=jDB`qWWr91jGa7^a=QFP$3`!J^_CpP=bKh^LLCM +zA|L_`q-~qZwwrx8j%-_r3U`O4CO{f2JqZHPJY^&TcbE5uf!juk++$|^0YLCw%W@O& +z9|A~Fpp$#(E+r5@Kv@ZgNZ=vN<_3)L!qdn2ip(KGhXi&3SyWC3&b46C^e`_Dl{dgI +z4~NyYpfWK)oE&P-2-&G1*B#Q85D$QDf{H?^3dWX!;W=T$D`8?NL@UDSq3&w1qCd1Z +z!py7T`v<}5CQvID9f%KZ;}Sbj-&dH>7O)_T%1c4!c5p=d1Ve*1_ObFhs!NxcTqxr4 +zE5S31K_yK9#Q7n0Ay{@i80ZX34Asa8U2`Gp9BCT9F!e}lIjOg>K}Mv+mXoS!szKD6 +zrQ!2e!PifK|CfV6*`Hg$ysH^^Y=?4b1$tH}5jR$R&XZ<+~W&r+Nm-;6D8@ob%iw=cULigW5bznS1_?>DndnR_k?k1quQBOose +zjhBOM2a4ZZi`AQ&QY)yp+?azudN6|-ioU3SETSUQ8QXLTOw&TRU);o +zK@WaC3led6**Kak>icI`w37)!EW5GC(*i2r2@f7a3O1~f; +zUU3=tC>90SaR*?7lb}Bs2n*Q4lJ|Rs6)zvhQ#aVKyw&NQmGSxXWV~D!+J;)-8hWLB +zC3CC4=#=7Zm%i}iXHT%(Ry8-f=b9a--G0N}lkp{)<;{zJZTlOR#+VoJt45^{5f8#X +zlzAY0fCqW_P%6Qbm|_z)rZ1ie58NAmzZ^8*$hfoHjrnq^_`hOn +zeRWS;Rkec;ZI?0Hds657p>*!DaLsh!7Vm)t>}=wap+OgyeC;syJoPonO(%C(Bo^0; +zYWq`U)TsVUa29)Bc>dN6r9n&AKGSvW!b&4Iw`4KyWu$uA4$2y<()ax1TmK085b&Us +z&*xEvQofYW%bHQCb@raXNjGBduv2vjCwQrc^{d*A|8}u<-MKbG16m=#AcC|RJa_L* +z=d@@6eX})wq5oaL+#cIsLGA=$vYgMjS=61P%n +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 +z2fQp@^hw}^jV8uO&&0p0yybRA5}?4=T0TN! +z?%(j-|K17w{>FFhr~N)O3^uNXxB%2X`!hsx$Y8wNG16x&9A4UfK~g$bNhdQ`GbR&j +zNgJ+%Bq@9d=*Em}R@NH*>wXI@82hGa$cM$)yrESF3@r@}DUb$O>DEFDhH4*vSsALI +z%G(d|PqP1+d%XJJfoKFq%jZ2stQO0G!4;-KsK?yeK^tp<)IWo`$Cwyj*&uh`tA4kkN`6w#q7IpH~WWlGFx8U|C&ChW({His%|i-s>^)tlr?cr&^cJ= +zJnz`E^EK<)*bXuy#14n=00S^pU>eMNNVIT)-O_PTqyOS$>^z^Pzuh8Rvx4lt>gO-c +zIrp^nyd}01=~<7EEf>>jS;( +z!c{IgbJA}zBgEK(c{yx+^5x7kMDRMF7v_P|ssSi~OsVm?eV1}@eVq~i-y44Cs(^#W +zE4kor85kgbAQevTebHR7VK_vqLRFuU@Wvwx{=U`K8NK0+k9#zb8r&HbODIXuw|@I> +za_<`MwE=!c{yZ}z2re>if}U_%H9&Cr4BhZ-TAU%E&PAK^f7J2AZ2>PXMM6+kP&iCH9{>O^*T6Lp3ASw`Il}Bt_Ugak^X}t_{!f5@ +zW@16XSYS#CVnnV1IYwvf6o3PWIR+3gqjM`Ski9^5Epvh-K(jx9X|X_F5i6d)VB1KN +zqSD*6Azc1xGW@^Iwvi-7b@0q+V*UZX$)J%WMRolAtKiAMxR=oX3BcbpGeg2`RI6E^ +z8Nf3vK-CZ3<|jNQHH`J~aDkH6AP*-ifMZadr_ZQ?txrubFfXY9L +zV8Q_=o{S5EU>p+or3PHs{~wYh>y6ATwW{5{wsCCRwtenw+dk*Ywr$(Cea2JODrV;Y +z*@*xDAGH@5bv(cDfNk5^Xxsj+XOec(UK&2OZQHhO+qP|6w{6>gZrk>Fnl?EPTiCW8 +zk|f>V9}$VNnl&{uYumQ>&^C^2+qP}{$hK{>&8)15%=jo^+jh9Io_{8ps0iBB*4oA~ +z*1N~HZQHhO+cwwUn%gbYrb(J)lF7^u(Y9T%(#?!lSA=CLk@^CNIJM+4|M8gr_-}5c +zAmBtPvQwCnLS72WOVKR|I1xZDvf+XQHW)}Di5ManK?*WX3@9i@DO^aP2ZOK%11Xf? +z6s!U;@e4l3BUqS%?IcJ+feTfbHew12kO{b82N3}S3B(aW7j|GfcAy7ISSJ8%Sbz&r +zg%m8LF^J#sG`0-GLkbEG!&;T$aVniG|44AN>K!pYe +zTu?wDgBUvS2Y$d7j6n7PZd{H<02aa+hZ8wa5W+op4yhqf!!n!zmio}|_(9*dcu&ov +zPNv?^{ZrrN1G^sd{}3#AkPlf!3Qo+#ahMGQK$4jx`}X}qn>#vm?9U^IzBPa9Omgb< +z*qU>RHM{9`GjrC}s&=fIEPJ%8UfqU6@7DiF2kT7jIP|tODe?&gz(6~`#Ru4dR1I+9 +z1{jcTKe5;L?=>C!jU0=oQ?_n+J>|wuZ@Z7f+@=pH+=fSBt~?-7jmyDZ=Q=*vLkl19 +z@0sV}3f^D!k&0jP-r!exPR(EY)o79yfDRMM0`Oo3PJs(RCX#b)%Y(j{b;no3hkiJB +z(|K`*%CiJ6zzp9yY`}V8+M$_1g9u|pXt##tODm?X6*hfKk2~EWrCu$TiX8$m{EZjz +z6A}gB!1XX-I_9fGzW=0JcM&j87|7AUq~PIKAF}^vTitbgA;xhOeqMQ?1D8SGbAI## +zJTU(ZB^O}^;1Y~uawM?lbUp~Aa1&D56IS6o7+^dw9el{I2k-MG$K0=%Jx<80~bhWp&>9;yf2K~paUpdpQocm&@g*#R1Eg8|dAU+eR~ +zw@h+Jn1+BN&{i;n0q%e4PRD-1aEE>M_zf$duR2hO`LMpld!y&Xv@6g6XmJt7%R+7$ +zC=jragNKj?uwgN-fB}*|`KUh({)-Qc-S(L|H&nGxMcsxefQV=yL1+;&s@)~g{okR1 +zaV-@)gYJ7T-BTZ7nADJx$+67AhR$Z`hM>(y#XLWj`6YqTLwylAg)9PPaz*yq7Edz@rd8`{84Jm+&aUxC*zy +z=9C}w`pc`QnT8=mKm`p1fP?@z=syLXx!k0#Ct=#k167d!?%&x*&f1>_35sNli-Ijf +z@j^HC;(B;75fbK}`(RLyZ-XFh-}EzY5BOQBQwFr`J6y +z&$hK9fX(`!01b3D1te5T1;#cPBgoqvBXq-zC*LLF +zd#{U|Sub$WANsxO&IK<0qf08Z|0IB*%MsYt>xNX=(ZBLQ6H3onDtxZ1rvJisC=oG^ +z`~KniX%BOpaix|6KbY}KcyB-h*}U&^DZ>OhWK&*Xtdcohkea~4Wy79*=OO!krqCsS +z&ehdW(>|5rQ8L=zg*0}pK9Fw2g7@|0p&#;Q$B~ovPNk4I^f%|f`(*j!VG}B~mVwr$ +z1RzlA7b-=jLWH&;1~7mCLowT@3>m!T``(BgjZoDSdG;rn3|oJU;-}?%~8TXvomA +zZAPxtq1vScI+&m`f@P*!sjMdzXrMrlGhJ;e?gj+G!# +z+br|C_0bg=JC=&P`$efL(A0{Y62LY_48$K)K+1KU?V_Y*O1dRWn-Tf&1sHq$oEl5g +zxi$qGD){KtqcQ+gC}1!I0`?%qx;^EhBvTo?(gX!tnduRI&7FwNR1}F1UODD&J3asn +z0%S56g|T5OFX_k%L5nIIwQNsPuplC8gp_#aEnyhkOh&s1MMTIkz@VHD%)At^vL4u{= +z@-mf*s%y@B{qBT;G?ro3V3gw&$Yc_lcvsby868_$j{3LA+6YoZL(ja==0{t#Homr- +z`&>VZARA{v9S9%~hd?fUDzO=Y8GF(l1w@pEQUwhZ00Bu56jLM9FZ)n*$PHtse|82; +ztVYE^0EZ$&j!g4ggC@|SKI5y8)heB11G<^f)d%^JC;&m3$vYHc0o&CXW5WnyEyN%o +zVaHKG{>`vvQY-LMO^%9VLqop@P_{!tP}51q99`0sE)JJ~z|n9H0#JoQq;0&eK%kE~ +znLkQE0~Oh{ui7a$m2UEsM~Q{xKw)o8xwD;dA%&@!G6=wdu;gum|JaYxwS+s}JB1I0gXlp&o{n&pP{mqq=+MEJ5WBu4l4IU&$>c +zb67wE&|)9%-$?;dn2h290H#0}v$)&8@Yf!E1~O5 +z$M*O&IYB~T^E~1HqK4@-k#T+KuI@{-V>%${*aQu9xCi$i&U3uZgntMMFdI_W?y>ft +zIVyA!*XrR;F)}^yW`o}J!~yrepk9$SQZXD@>P6}N-}L*}>$9Bsy*#;9I-9l0UTZ~_ +z(&Mw;`-hq*jQoNcdc8C=HQaKl)o=dqx8JnHDjSGMdX8ZZAR;=9x3A+pTGI^`^Hv`T +zfmy(9KgidwOa*#0M#Dpf55IbkyDTh313(5kvfS|?o^)fEcRqB?Wq)t={pa}Hbi_{u +z!O8k-wu<}GpwE-mrXdf&34K(D-=mjYKDrt+-);4=)3q*67nsAi1W>`j!#TUE`M=g``W8QU?)rvXq(@=Yd2*Gil>)}-rIIErUheIptAhZ6C?y) +zSoWG89{|gh{;@;zY1R!4;4}MGhb#{BlgyYtn!ovuJ$nVY2N}DB1`@O?<9(Nyyl5HF +zP`digHZ1g6JZ9N}4=7@vZG%(^wZU=%cn3CeK#T!(Fq +zo@J{03V~soKD(Ggfm{0#2Q|-?JxAj9uiSieft^s#y+h#e9!B>eiwjO50k{Wka%W94 +zF$@ibD-RSvT0WAeovCU_00O1679KGi#&i)WN9WebBNpGQbj#g_s>fT3l)EYO@Gjc@ +zM1B8vmyDV(lVLfkUvKMgBb8oY=bh6%nX>Uotz`N#!zCU2(Bk$wT?oU5z{&#wNX>aw +zTf4i~B2$c!z~ie7d|K_Usei2Y%k=v3Mxx5lJa>1TMLN{|8&8e|a&*S5m(Qzx+dbCM +zd_@QBXP!yjOQax*xO=Oz2fNE`ySH!!d@B#+K!HY(gD@1iZ01Bg}Rx(5K_|atdYBlf4$Jp``0q#++&6I3o>P*RcYzy=v#~Y_g$_Y +zAbSA5Ys+)psB+fgU88`GFnz`WOp0#IS%u@*ykr6>8aGaaFg^-T4)2miHUl@LUbI +z4sy_wU!@E3pAT1jHIWT~nk3kQ34j5BfDIJqhOC-Y;X#Ytej6542S&4h-u!cqqF84u +z;EKy;`^AeE!qf;kYGneK21MVf$jN0f*W~#| +z-fLeoQ!rAd|LsAXPXthxO&A2oFapTg5p=;j{blKwGfSV(s)!Rte|Y(Kj&dXonH-+j +zovSef>8L)byts^2dV+WnNwT<=I~^dl_BP7w@hW%z?(Iw0xeQi^zj~{{&%DpRU(%-`9928JSutjgG4KML0I#Cp)y`?+Y$cjH +z_{1g8b@Mz2X!QHZW*IkupbIY49+Tu4<{dHr1Mk^)Xq!%(HD5J$-*(>pm&09;Sc{#< +za=*%sdn~%)@lU^(Nsz~5`Y-*2>s3*wkSR5gU|2FCAxjj6EYiw4tl~NIUYk<_ebYQ< +zezccPZ}7{>jgIPKZlz2f73H=JuJEO%2be_Cw->S%*YmSU4;ynhh6Es8B%NeuhpVVB-c6_*D@^>3-? +z7#08`;$Sy(ZYI6R9S_#*4ZBjhxNfCL!OV}Hfqqt`Ni@i&y&k`vzo +zrU0VIWYwF5^#B+Iu?`RfRL}s5?IQ?)j^f}ys)=(WY+0Un}+@n8bpnil-3uD +zxsk?xN*j6PWCYOwNB|;aV(&QRfB7BUniy{8DRVd+<6z9%AK}&wI1_2cez3hWR_285wEt}2pJeNk4+ouWa +z--Jb=!QSAW;=G7+4L}1`rIyu$0$~HgkQhVMP(z`J(d7}mzBpcKd8ua(WA@rsHjxDR +zrL@v!@ub2S3V?xtXrLkbgIs;V@ocYLz%g_;fJ&w~y@Kd_il&4LN&pEmMk5RZ7(h+M +zhp7Z3qo*s;+014}-*TIvGVe=P2?eqbCaaE0z`s6z*<*Fy7i^8mJ5U|nvKP@5&_fy6 +z9f+iIRP70lS2Ih=F)W}q={qwSlQ&T7kOUP*3B@OcK~RAR0u~{O%3n`&`9p#^j35E1 +zyJtoH1o_x@^_S2E5NaIyu|3 +z*7mNuh0aS@J(M4g1;!Y&4AcQArof2Y73g@9%4P1#@|)GqN3M@4tL1F<`}bfN3dRr= +z4b};QZ27H@V8u{fCnCWlp9H +zRvy@ZtB~cga}hiDZq|v2vY`7;vyjYT3Ed{y?}t`Ovo3VYZ+Ty#?;_21mi)j?ROI4+ +z46Qt1U?C2LVUP1&Zd%V`onVccE1L9VHmhu}P9aSRJt$Fpg{)c5@!qszCJa0?0GhDl +z9C$3xhW#ySbsM5Xu0&GUER^ytETMtY6)k%+Nzj8563X{E)2`7sJMs6bl>~l8WC*HZ +zG7g7yLObB{%^cPk^QYG4F+>9(L2u~ogQJ`0SajIlz`kRQ`&$5MUZNh<4u)yx=d$t0mYh|XZjqP@~vnRa<(RQ^DjRZf5o0UNW41`H#!l(DkyF= +z;_S^>mLxrMSilm>*SE?@Sf6K3DgrbRAQ}Kmn7|CCFvi{rj$4WXy@ObO@DDIv>5P5J +z(?u~0-FOEKgkT2hU^-^3xoLmU1{;W$?KuRM>(kl0==#k4?A_k1ZXIF`HeelM12$m| +zrZCQ6k{Lg+i|wEC1FI5%s9LMki!s)N^-&w*n29v*ffx!v#X)e3NH}97>^Egn3d~_l +z(5Iih&k=EPLFhtHbqZa}Ob38&&KZaa+X>?7|MjE_91hp!b}JL0}xCv{H2io}P?;-U1yH5yBl{ +zPy`jogEhke~+@y0J4NA=D6%aDqA=t~2u0^M@H+vpThghUm*1DbJ}q! +z3_JoG7#M*H4=zIG{YTk&tH-_zEvix!&R_!$UnXpBoyOzy>Vg09wbUnCvoaKmj%SEay1G +z=&NSee(4+sdhiyq!2k&iM35Zkcjdc1C3m+VQzjZnkh`Jf?%5>@%qyr+8$2Tj7@%CI +z#;BM*A3`t3%^$m!9d0DB8w`>_!UB*_dWGoTjGcGRbZ~+Oy6YbeR68_FSPv`{3{YKk +ztpgaMx>FV*qD$eQw`c(`(?K;)wYv0n-V}uXrQY%ff>v? +zWHY`TL=Au`RC|%R1Z$YD!ShdS{Dl~ju!8{;Xd~1QK1BTfoAm6KT6Pk12f8*>LPn;9 +zHgYm)A)tl=)i{?CfEu}ta_%(9b$VXVdFp+JQ~(`GFlYh+6?T}HpXU3+JNj+6G~P9v +zKTSXnDoD^mz!a3IdNeIvcLib=;*SsCzc_myK$X~GL4siuq@cru@KDkDw6~8IY}_qa +zIT~mx=s^Mq83OuHK>`o}QK%@Ok7`F7tXbG{CEWHNLke6r}}Ci +z?wP5utRXN@awO8$RriCCUOh~tCDT1I&R&Lctsq<$&HK9chT_c_?(i +z1k^_Uk4+dDW+a^W7z>et?0{%fh%9STK~$nbV}d36l%ue+xEha3@Zm5688ksX$bPs- +z6iA3ruVIs0}?>b1aZ-DYC{DEz(50Up!>HcJn!;r +zhaT5#`WQz&T-?fPo=hrGMju2E9ZM;`R;>C`f=MfB8QFswFH|*sudA(}sy>8ks8!H} +z_g}qM`{JbS=k8!mN&sE(bU{10IrMhol~9JfI+h+15c!v^*Rj4~+x~TU0`}oHg}rzqamib*+4EzCNx5!}At%hC +zgQU`>Z6*1!uAV?PJ_f@LnE0YedOrPQ;$J-$y|1Sz|5zjN5|$a|y)*(ak@79<-?TJ5 +z2{%9m11=cG%eedX`Qq!Q%v~k|L_}sYD)&lmXa+vQHJup4&SCdS@f$XOXm-GlOzHin +zzLFMV4m0SfUyf|xeOzJ}*5XD8FzA9PUb$Qee)7Ek*M`ytFi7+|q+OVh*CoiSKFz%6 +z?Hs7Z{}>zkLj*SB$M+rzzIdob-J{%t3GC9Las^`z^P?=U$7(zP0R~=>#A{QsKD9UR +zT1yj)2@#RqG%hmFqU%*{FTpEtfx#Cv(k#7zd{Y;KbTPqF*Ve{;7p(kYP<)A7;A=`{Uj?MFh1t;Ac!@U!X1ASGzL2Sl#+U +zJNx4`I8PJ6hGhwH=;&WRtD4hQ+amcnKHP#CcnzE?f?}-tOfS!Tf&XiFg}bf&nilpn +z_OHUdu%9k~f&*S;@vi4M{m1v~<|H8qE)o7{S2f_qci@x}_#4siMc(cGV!z4UPeFrx +zM~D8yakvxeX#YnxtIjNusE +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 +zhL*O1NSa$teB6x&3P%{r-* +zUf4!5B⁢hC)KP2~-lWi2^*d49lsSkz`IQ467ViBJgz!oztdMHm9+Ygd&hy!cj;v +z(pE#nC^Qth(3613kZ=J9Eo0?UrHm1j7!1Q^zzDF4zOysPWnI=KX@ev^78^vjhcrN& +z?m{x8>)tky?JB^c00ZRl{}}8HGO9B`4x$zw2-5Yai4R6(v#CtU2$KqnB^)wzoyMlu +zBOwrTGF_-9e&Nw$VIV5dnaN{-aiqd|0ulr<JYRwr= +zq6@PVuoV{Y2{JZ`Bpo(uFiI@|UDGQMY!e*` +z*hGPZg$A!uOjKnw37b&LKp9OB!7mNjxJn&5Qz|!(i=d?V&6|rZZZQd%v^exI3d1OE +zw9|4zL*sj>CVbMPewq}}i}e4!F>d_^brRmnAT80ad5%E;F?dR?+bQdSlLg3u{${cG +z+y4}cHkl@7Sghe|gVBr&8IeLlcnNeS-U0!wONrL)Pi}d#N4!G0RPo4AzQ{TU1B)x+8XMO6y +zOYB$U*%zbI;z=tTmN=`v2JtKupM?jp(!{W@xo=rzs;F4}rljV}CN+`_)7uOUk2WN< +zhGJldlK?p))uzX0ZVQ|?xx9aFb!qk*(|@olzOkX%qDpa=O^tB(!>{My8TsEs8umWp +za#7M?Q<0?M?Qdtuh?*-Y_LVK~+wUD?ei>9Mx?G`5qaug0EK0K|cga_NI_o>|?!}1( +z{qIVzSIcg=XYw24`XFz32p+r?AzStoI_guRa4n)k@l?ONR{wPRMise48QP-6ro^J+ +z#*c;(qfjeW;`Xg-C%2z*f7ZQgh39}bw6zJ1$yV%Z>mQT3V6x6cgh3%K^vDXPYQyI5 +z!eqjE@fVXv?}8PXTr-N3(9)fl4iCim&2WkMZa>-k%*VU+HBXXaO$V{J|PcXuyHYM0LiZ_gPt=Y05n?ss?68x4eYz91nqEF^1w0`(W&`NzBjs +z%<`g!Vn1ZbA=)Nvis< +z8^1`r@%J~4f3Is@h%n2xV1nfMG}?} +z0!AhQk-(gUFi6&;6)$J~7VSwT_^L~Lq_8QD)lUAM`1JHA#a+J$dtm{94NYd29=zhq +zb2Jq53uQFL-MMZEezzXUIgi$gmsUmc_<4=ZyDv7poJ40bK>`*q=r>g*62)F?cDm4x +zHvYt+f~;XuBQbMgb?J8(z9!!PckdVj*Kc|`7WIZjW(q|79#LNeti3mKLWL?y(@-BD +z-Qc};Y46G-W~k!QcvUEUlpr%vs&Wvh;8x^8GI-CehUvq2W3s-oe#fuskIUaykNoz# +z%3rT+mO=JK)E|n`Xtb}{yP8>sZ*dYQAQ)q8H0B;|S9nkCGOEuQKe6hkm#e8n86DxR +zZaXEdxz%mtuBJ73)t%-q=l*E^d6`zdSJ&*3?XcOlVz=*U>01siP~V2tQa}GuK)EPdGTsYGcb_kAmO8(1PU%|y%?ubBh)Dz^wzsg +z0TrMFx4K|I)z)IQy>`sxbOMrt`g$dOo<%~J`Hpbp#Ev^Pych)84UUtG5z6>o2oGL? +zrYysFZEnn9B|k%c>^RgvHV9#3O|tM~F;4+G0e8iu<*?5?NCBf(%z9KgfHH2qwLnS} +z_1FvNGxx@}q=0BZ-`=?ADJTp=XhRBH5kAzM31(M}*g}?PJbjs0^q;ffVUEfKpmFxn +zkIq=#mC~vqO`NsF{hi0|`r1lOdoKeHFwDMQd7 +z;whro<2CEPf2#-V^^Mt9p)!$&Dn*<^A;a)i*bI^bU^@C#R#MO1|IOq2R)z-XsHq>X +zKYquL{QhdZegf))(8_k;uq6}1i31sn@w5d7ZJudQ7(2MOWOrBc2TrAsD5IkTvl9P; +z>48Zo5s;Ep5{3zS(dSOAnNeCi4ZK0Z&kGxZWzEoD_wKUxGMRsQGKOc4vecy-Be~Wk#hYVLKdL!>dz0IK +zneR4!ZQ~Q*1jC2>WH9;n^5gWchU;NP0`oF=Y3qH;i+PmFIT|+f-S9{EU#|LTl?M*3 +zjK@217={e|nwt80cQ4nTgP%{qj0AESuV~hkjq$KG28^E8g$SR7H&%V%&xHwpzqsfo +z1D^}NHr&|D&5bp%E`fQO8a}g}L1q&_K$0nXge7%c`r6I!pE_ryItOkC+yOY?yD!*f +zwfpL&n?ajlIy05zOq>%L8)so;m#d(=#x2J`_K1gcDRG+sw*qD)-MRaugBCNBIbp_> +z@G`Bn$UKtiF8-z#%}3 +z2)Pj`M*X%?#yHc$pCA{OJofO-Y<=m7d)cCrPus6fE`jAeU}nY+sWwe@GayUR&ownu +zBlwPuG3~Uq$JtZX?9wmYHe{@MVf-rS$&4L}G=Ex@+zhmox$CXp=U)+xzB*~%!sqN+ +zXHVE5<(8G^-Izf?Ib0pSzx$udyfKKB=bi(#?%NamNP^w0i_ta2!Q)`Y(#W;gN##(V +zo14!WIxgRsQ;vXB@7iXf+gH2DYNB% +zw;O){i{|%Pp?R8LQZ7@^^N|QSM3lk5xpQ~$XUL0g{`1DKiUM;On3(XHo>9ML?%Yo#?_mo+c7<`t%TDrb_| +z|I1vut@HfcTAoX``@dY|RM(tp%Gqe+z*6S2mbvKW5BHRCpHn`>r05!2yisV66pi!< +Ij@}Rv0QiozrT_o{ + +diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +deleted file mode 100644 +index be7d161aa23d67dd361d9dcb2a37382c72f2ce71..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +Hc$@f)o4*m%W+(@#mD*X+2cTUXy7eq|#5;%?|$%!)X-zsb% +zc&S2IaQb!8{|Ugqy#Y!c{v`LL5CA7OT9Bdu06Nf1D9KaH3|_Mg7L%IZ-#^J!3vl|` +zStqn2x1yA_yaA+@6h#r*77Q39MN$;S-2p^Wbg_GFM)Zq#Ji#gjRgGiYwr$(S>a4Es%2?XA?R!_Y?K{?K_e@n*gf(p23`w${ +zh&0Mo-PJutbId)qZQHhO+x}%^ZQEAwSnYCFDguHe$!(iGgu4ZBBt;O(egQ$?;|Y;M +z9DtywXPGH+5HbaV%4Cq4P8z{zG*NK8o3rX7U1v9bQK +zwQ-TDBNGQGSOlR*s1U6B$G>XKWZHeu8B7~X!8jO-dqzovTn(*9ptC8mI=}}p0@ku{ +zR)9Ym!C*K(SVb_x$ZL^IKs*kEHPGJ>$tFl6&~?B_ScgY-3@SRrI%q!_%c~=#~Y215&DNnm2f!8+J}T9KSp@t{jitj?u7>g4)rrcV(QlBxZ}yP{@Yx +z8VqS-VV10@_S%Lv9qIZJ=|HJ28k!cK&s9a8DiGdOrct`&wfV{r7OQdJYPkOHxZ}Q9 +zE=L+8-T;p|65dzr@>(&yn1-hp=LI1zt_+Wr_ +zf`@uaD?xqm(@_Up8k1+iSJc4x-OtM_*Zjo5-FU2D(uzheySmpt_3wtFV_n~=X{qjm +z@x7Dcs#++9mEfEWlZVE$N8r(Zj7UkUHrhL!RNB&>TKTPE#6K&N{clvn|0>1lituM^ +z%Ac<5qI3f-X;4yv(kNxtP9pYzmgWw0Bhe*2wQ{PXmyZh7Xwo9D5Fwn|1lQgl7hDH( +z>muR5-;MF;qu}HIWN$5U$W(QK-Q;K#pq6{)=E9qv_Xzhxg9J^C#V;4GFG!zO9DscVPvHgnyyg7_i +z0lto!_{H*2|K-jCEmVS%4%DfkqJs?TJoMe|3woaYL*aD?M_89$*&cx)n2YLFP-rdG +z@wP65iL>EHYwlIp_bYvLZJC=Spd-MApeOI^z0)1QlKdzlxh!gFT;Q`duD#lqqE;QKYcqJ>MBiE{~jb|PjpS|JRJDrhkGAwfoxPSzZ^clhyJ&+Zll7&>6>XDDS +z*DEH@I{V^Z$$zfs{HwEuzBAIohng#f*Hnjh9zrV)MkRvJnLpp3;v19{re>A3@#;O4 +z71}Th{os*LE)JXA{;130Zxiv~hvCJ=F#nFANlLB%Y_Ui)rKGF_xtczrLtmddJ8H?B +zf>xEY0w(G>$~M+-h%Eqh!z1ys{Yv=YCBC{%u3!&Bqd)>z02RP1V-rKz#2{A0EZr9z +z?_%HG%VGJQtLX3YQ0en)SN5*+hZgsu>oj?I?&r)eO2Jv1*4D!anO91@?Sz;vdyl#Q +z_WJveiErx&NCM;+NG(t%D@nG7w8o6j?;{-({#A92934QhPRP`ILab{ix*wi>2z=%y +zZ_%C@ZYmQ=cyK)zGfUY_sczLJZgn7BPAZGVPrYAZyXC +z^K;fOCn(enSHfyXKZNynoN>C)+{Sv=FFK(u|?I$Z{&mJEj&GXd0q9tU6$Ix +zWw#++L``6O9c?`}j@5f*o6=r4vSv!&RgOB=RPXwMAWM@gAS(L$to;3bqFE>M +zJW6;WS_2Q){g-b5**E;VU +z%bkXio8rK6@cHA1H;t6%ORcB-A1Fxr0`Oc5GaDOcTDf6Mghs^FG+s{|*J1^Jom7f! +zfV3cMily~EpZu0K-uRzL{oTBwl0AH`(!DJGGK}e +z4}c3P04WR`5DNjJAVDIZ0C`AQ?YITxkzf`{giOWUJP`nhifpzkORf@15=g1AhM`dg +z6HZF-t%{I}FcqTcCp}R{7C%@De$dibhY>&|0WlLWi}HzPkOT58Sa*@nCy)U0De_C^ +zl2-r_8KkTVq$QLR8@NC05( +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 +z&)MV^a9>%AH7E%KgBjdP=`v|>+@NYZ#*2pR +zoF_@K#OOv}A8fUwQZsL!%L3g03;~CMwWLk~X`4QxLlP~o^%w&QA?>&jYem~oQmsH97k&QLKoHQ4O=@u6X3+<$Oi +zWz30t9)GYmZheL3Coy4ssK3E8Q+aTqE&87S{O7ab +zO`Yi2zV9AU((jrt8l$Kx34?SL8@dps-pT6nwk0m!f{iyt2?>u;9(#Cce(V9OoWfq!TxSnQUggD*` +z%3&Y}N&>Uzk|{tkW!uVqv62mB-}C#J#g@iMHiapOGJ+%n7jV(!Dp`<|Uk+|?CLx7X +zqiFkU(F=@Z)XIRxuI0_MY$Z(WN>xw{hk-0eTg=^-O+-ol+$nzk*Vo6kc<+o-@f(6E +zJl6weu{j&Ixq#JmJ^U(_64Xp2sRXAX+lLf@7+WaxvD4bV=QB1!hbR*W0)WMO0DpSM +zyG@p+3SO}*^(FwvfhZt`0Fp`AH@rxi@%iip|5LK +z5RoKeY^PwdRw}9a;U5rmanS+Srm<;>kG$L`wGv4HNFbdq6d`aB0w@sV-~C;TJrqkg +z-6!Y}qC=EPlIQ?jdkt_N%!ML&1xaE7+t;_`^CkwN=^(VCuPX^#8FLJ)^!xrjNQWRb +z7So}U>F97{1hA18aOaz>wQaQyUJ|{%3sp!*QSa|!%ZF^%asl3h1(`5?qKuOCY_Gs& +zzL-ACV=IY;6ef0Ez&Fus>$;P(Xn>?GvR(G|CvT2-Mu~)JBS^4Yn$={l%Ud}O_)Jk=noQF~584OSEhf=1ecyb?3BlGLs#W*B55^oTGDSPgit7sHQdyOkHe +zf@+E1;U_`1^TdQw%?wSpMhZFqDhJ`gxGIdcvMifo&yeux@mrHbgs~ASqI3`>z&E_M +z?!n7gHH)RL1ZgJ5xgD4c&9`MIe*9xdP5sB<5(nWLm@CKC>Tb;7Po6v>gHrMNn$pdL*dk!Ke65X7PI}aKC+NI +z>O(D?bVd+eS`E|XQw+vQdf+U$|7DNgcV_=f3fpg(Iw%4k5+)E1GEpB=@RFCTE4|(g +zDr!ME>?AYM%rhh?0Qtz}WDt1P0jIj%4<@UF@`Dwy;)K|JuX +z)f2b<(fCx@26MOH2#5IkNC+9?^?NIt#fx@gTP+76447Yw;Pqagd%fak{iH+BFAIqb +z#^!ya2-C)p){HX68W1VoI_#l=;Lq`yFae3op@^nSl +ztWsRCT&BV139jo0UJw8;j+P*5pc2x(bDDQz-w*e}sGJM}lj_51$dr)^Z)uDMAmB*R +z!4OoRh+mz5y!_zC+0@E_wfjAZT(CXYuCYlI{XC!sxN49g51$o=wFSwd$ +zrhtC*{wF_j`>yT}YjJW(j1)t{q4KIr;IfP0f^o%ge3+g`HV)cw;M2(l(>B(z?RS&w +z^$UQofZ_zz6C{bWiS!)uFlTWh4?EkE&#OWeX=7e*r$g>N6yA0hT)qShI9A^JbVSca +z6kPL<{~c)8dz$KV`#q78BAC`hP#i%EAYxE=A`eri2l) +zhoEkWQw!i|@jru6eB#Ky`S@OBBUR;4TbAPy?j% +zyicHo67=SgXEk!U*XMHm+l&3;@vX-ec=gZaxpUzB$3y}a_=3&hN+udeYYo1{SiF98%X6t6>##KNBZHnw3Gl!H3x$OW?{O!$^w}0dA$+pSAbuv^G8gU>2$Otr+Z(lIdf5!{&i!L1VSi`k_0E+2B +zGJtw^kjN`-qMBAw4U;C9$+IcjGVG(CDovtK?Yw*ZtzSKF%5%T&ed~DSh!g4Du^7T{ +zN6j)h^Q1qy?s1blr#)3tk5arYsPQ5R;`T)gJr*Yvyb +zvw!hj|Cxn7!5spt1O|Y(QGUCYj~^b)4=!KI9ej^Jzj9M;%jIkX +zotdPYk??i)CB@Tw4#`!2yFj`9n-4{v{`r<=$9Ec&kXIv%smDblg_T_83-g1Euird4 +zEw7s>muI2q*fpw|-(&dW)55f>(L6f2*C%Wrb4!m_N~xZ%FDo;P4+b{=`(FKp-yf=d +zZ*EJ<>0AZ@=h_r4jWD +z8+z%mPduGgXapJiwA5d+7jWz`tG@QrXKen@^}(0_(3lc*CMIK2!K4o*9rDeHOXJ+%z%rL+GFJsudpnC?w8bx?aPh-6hN@A%lYcf``0(K!S0EIUs`J`pD(l``L{ +zw>NFI#uUFZ(C79>#hPn71MwX(qa5jGgi|68`7idS(`;Ut91RV8lk3Si<-|3!KLq+q1oWr8NA$k@jV0bsI#3kK%Up#j|cr8H@GyshdYH4| +zP@^_`)7u!8Qc?x1+2>F(fLxF2?y2Inzy7NI>+doziM?cq4GwozoV&?eE*RV&XMabW +z`nn>v9mlWVcgnYY(0Sk)ch07JP1Z7~NRaEZ<>wFq!!HaeQG7PBkHJ%WyXXGyWOuVp +zy#0oli&yt6!MP*eSUFnnI@%BK+err2`s($sCqF|4$Tg75up=p=VPaP(-29zGL8))Y +zF)iEux=ycUws+nM@@y7A;Xu<jb_Gb`v|F18ljOh)6c3yTmYzahh-5uUE8PrslTw)i*PX4>QJJ&5`Af9}DyY{Su0*AvBc0t_B +zXxN9qW1e+T+j`PTd5x4^V!;B-!T4TLF+-2hIE@shywJyt}kx@Rdc +zk;@q-$%mgA>l^Oe_m7UVN?>3MK(;?3_HQ!Ef57tIxZ&@TW|G@z*I2vP(qxVnyN`|< +z5dSpr-qD`D_gdDo%10JUCL-ZL-s6&7pE!`J$HcAxB(@Ob+mDHzwaun-*VnyRi-fz3 +z?(VhrYZ{L_zL$*=2M>x6*aDyd%o`&f^?-9E@C-c_tT5D?6!MfvNQis46 +zgMrRtW5OS&wYPuc|DFGR#!>yoDtq*z{oyfthKDVR1bcyZTfA+Zqs;}K6I@!@nDD5_xp7>UYnugH8^%7menh$Q-o~hrc +zxD%o95g$B(F%5wMO-Q#az~NFL*gA57E&8j*)`G*$3<@X|S{oY+(`BM>HKpKuuvnN*&sMO~IH1v5C`{kw +I(DUjE0O~5+KmY&$ + +diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp +new file mode 100644 +index 0000000000000000000000000000000000000000..3d15e56f56293eab94d02579a53f7a6c2f5c6fa1 +GIT binary patch +literal 14464 +zc$@)%IDf}dNk&F^H~;`wMM6+kP&iC%H~;`IL%~oG3AT|WHLBfPkIg?}?-{~T4Q68e?;W-4G<3BXU)oES5+6m!hX&@#^3Y-njg>;yG` +z6%*z3VnUVFSQsL1Q>>8_AI*<)8JMyY92kh?oHX+oje72Y@PizKUE1Im+D}F9rc*BNn2F46u|KU;z)# +zTC!r>maS&2yMM92v24(2*&OHV^$F^eg +ztZJ0Q0gTW^8226Dk{m~JB*|I;^Z&=T7*!2qMrN(7xq5n|t<8|MZQEvKR=fMOZQHhO +z+qTckziit$ZQHha*l2fGRb)nZw{6?BZCl%7skNbNdfB#ZTif>j>3i5$VB5BB+qS*; +z&>mf_c;2?{kfd$CW2nzTed=^d6|3Ba$f=0Ar9TuVjQB=bKP|>eA9SDE`7*w!|W!%KYg?0EC|DFZr +z@H$Ro3<*deuvo%R@oij42GD56QEW#Xs&V7?fhgMXKCFa!^mbvP0jtn~^@v~=-iqth +zKBX1c5dnH=;~M^ie+C;cM{X7x=kON%G7SW31qRpg1vseyRak}?6hPs?Zg60Cx>Uw1 +z#n08XJEjvu;~@w@1kGqXBCt`54LF24Nb{P&M*+o!ok*z_@*~RQN=fH(CNpFSH&a}Y +zt8IlTH8Gk>rK+N)DH+9{zED9NF*s$LqK&KgH-3U^n1XvWki=6U5IOrsH^-X0*Tm(T +zkfE}j(a|0 +z5Z5|qtj?ee0wK6Zu}2i`*okeJhhLv(UnwQZ(1HKi_f>OgYrOPt@4nYs`D6J&?-e?) +z(EEkKFAPDUNFhrBgHkJfr7TB=zR`w}p=w=Kr-duNr#w$9kJzO+B4>%qFAGgUhcgh&D?%%hwDAQ-^}2zZbBv+$E1sQOLM)$QAgZ9)MX(Dwti{IdHJXRY0x8+;Hb +zBj_)eLN&JG1Blfn5M&nG;(_(d%-ZFrJ#k>>m!=JyY|GXrOA6S4==sJcm|h{zDxoF1s6n4-z#4k +z_``D-EZ^?6Dy#qAq^&3U^y8Uo*DMi7929m68bs;A0k@ +zcowHHv+6E@LJ4ZQdHIW754>TYRVAzh0U#%I%cBjxG9}M4vo9HkA4IrMGs|r%Op^sM+qK+6+ua5%4SV_@Y1k3%II&7n8iPMX?v2aJep0H|mvI+li&f|kGlTIs+vSeidd8~rIhdB+}&6IZPLXy4}d +zhgLr~tITg}Ly<75F?FAt2yR?4N$h$C(G+ +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 +zymuAM}aTF +z6PjyoR}rMGS4X>d(1dvrSQr{e9nk|f3Scl$>G(+At@)BYt2!9)@jC7#r3bip4YvVg +z=9m1;y&pOWwb@WB=V6RrhJv;c`_f!+Yub#4Sk=iZxZETfN*rCJHeTwY>^mwsw`@^K +z0*v8FXiS0W?ZMo~X)Tr@@M|aD7a}7zRl2>6{3Z5mYqafG~wC +zx=CmEVHoi71}-NgLV#y+EuyrqkLULt15lUdnz`S6CLU9wl}7>t3j;Nj;Brx*p{7-k +zA(_Hnjqm04d7T)*ApRAlgt#rS4@E#^rXFe7QOU~J3<1I0+QX!!H-U$N1a2^V$Ond^ +zKm!;`YrqQ>Jr;D1A8!`KYy!;VWkk{eDscn?D*qG)Uav1eL0uZ0L~B?TYcjY$ah)zm +z&IYTXHsm8CXhjDVZd9j5&>?krq9(k*vaoRR3<~K0+u;GiXtmy;V(zC=)`A2)qq!kEacn;B2fF>*l@Rct- +z!~Pltjl25t&#>T@Gi0)6uTX86Yd&tDgWm;J;q-XWLC=<3KEH^WuSY1Efx-#2rNVQL +z&Bz1M7cE|hiz*_cHA}h;0CJ`^AwgGR1HU9Nuv{LD0x=4;nlKn4s)Ty!_)_^0ybp=K +zKWrph1;}A1%rpQChY^I>dTjCh=F7j|%9yv#*9$HUMes3XU=-m7E6O6z#2~6DHljfF +zGOb?qsqg{G?J4Qc8AcGecn@M}080=D5c5xF#X=lf23R#;*KTMokf$M>?tWbjELj=~ +zK2`{z?kIf72OUNQr7!h`7a#Br$#b#%?RD!i1BJC%o(6{{4#N+s#y@;m10H4OG_oUA +z4~2*r-UT(i+U|E<7OaOxzd_(=v&+il1UEEA0HJrp)t?kCD%ged&N-%h>V+jsA4=&OMFkk&_Rao7;LGprQm?cct-{{=+e8Hri3j0RmfQgbY_eXqu95ys +zC{l}I3~KpwNSIN!0Rm8!f>S|#E1-gBKWE*ki{t)+e_7ngNfTex4(}Ld%U&w;d^i# +zA#(KwvA7&s@Q<>8ymsubuh?$JZ(|gDC#X7AcN`ut#a_73U*3Kkc=?%WuAhWL8Zi(= +z1Zk`HVw;ig@T}>Z|HXfoagTJ{v`VD08LDiCPJB_W^2#;+5NIq$V*P_G;(>3$myR2N +zfCXr-)+^XoPVySO_&xFFr;alqfnbaP3K4i9k%qR9f4t^<&uR1d?~6GC}L +z$Dn^m77>Cd#I0uNBsY|e(6iQ}V}Zt`+fWS7e#;G~AMWA-5Qwaz71z9JpW*7OtI-v4 +zOGuiRTS6WJpoJ!Re4)hwlp1CdQ-}#fOaW*YwpF?s7>9os5*`CoqIvC8VPGBt)XTAv +zUySrhmVx6CipqhI07lsJl)laXmOvU{r0KT1mf8oaVB64N@ezQ<5x*Qh^|N)!JML<# +zK>!>-AB>ZBuWB^5dq$uT8hT1OQM?;dAa+?UJM##QS3p!*HzlvSt=()^d&_ONeE@=< +zOTHKN{=HXycsp%N=|LVqk?chtsmTs0m_S2^@BrlInEu;iVJr|u^V+Wn6AKVv{BKjL +zUmer~FkW0TgiGWqwmNpru3M8R0t|eVb+_$k+qYlv*}hVxh_Cvpe&(4ND%?c~ENQRr +zuUghwHR)K39y&Y(1=<+mC=$zL&rQ=No(2$=>mFDRrTmHR@xKdMtcA7uN9AO6-%lX8 +zAgZEJJ)wWv@+UBb2}~gZggr1B)ccFS5`Ts&0EI?`);%yV2VlkdhC1hKAE8O;a$uSL +zRTp$+JOX3`@2}Ulw>Ju3FO0u)S+PES`Ru{6O71Q%`^fclK^$Z$e +zxzUM6uoxZ*Inh$pe +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 +zf@_hEr}YMX@$A1v6TLZGNG +zZ0Ihmu%D<5*6&8em1F<}nRO4ku?+=fNxR^PtN#7p8KdFMf29%rX2_7jZ)bR$I10Cz +z$n-&8^$kK#LBRrOYrV}+u_hQR{}}Ow+l*`{wE!8sx$ePr)bKDIo9@q8e{0>nH4Ez1 +zQ55y?YGK|ME+o$pbZ}Q|w?LajKWPjJQT2Px_kt^;#`@1wuJ1}L#{#&7&b6Px2|NP@ +zqHvqWun2K(g1^-}+lEV7i4s=nh2D>O-M#YCy1383JAoO0&Sb +zw9enTo0X`C;5x<<;B>=TJPHTKw8ffxX2;cgGzrMOk!T?MpMq7)IB8M?jh+QG_Dh(o +zye$pEr+@27`P`V`YO)`*yEqyEa(Dqc0hO@{FCYid@UNUQ^}vis7Y!ehlvtv^@S;A^ +z>lt(~69q+%h9pq1pa!}O+7?CQa$6LEckJZKvBdy_?lkjGzhbJ46%r+;!eX0TL~!u)xM~1%!UaHEF2xh1K^LtAwUh(`uMhS@8A;7 +zr?5VQ2SWB8c9uXKU=VLZCF2)>Vh@1$_9?6G{L9$8%Pj=;9tY?WFWPUo2XI_ndjP_= +zo}|ksY^pg4<+wB#_}9C;>R)ay@}IM#e8o0^0-k^cQXy2}2ofRdnY;S8DZOS!d*wFE +z&@PSR`oY2hJ+cwm+J`@AXb?Go$e?jvC4d|Xs1hQg%s5Q^$7}K%ITJ@18R@O)@3PazPZ)th>+;z=HS+AL6b<26tTQ +z(x<(lIBG2#Kmh|NpjLq@pg=ZZ19E6Q^(un1-2ITovj3f0z6PDNZu10o;%Vgbg0~5o +zJEnF*07mg7bV~jp9oAzJ6s$$-x*2_2n$oaz4XqwmUD$&t^~_bm+uZCFJ_gC~+pB{N +zR*a-D?k4n#z;`FYFmbmEkIF(WfATpxV=>~}HCqSGe#Yr)B~dR! +zlN#H|H??l#;{ZO6V+f>0Na6?_pb~l{4sBy2??cB^p*d(&(2TvJ;8A!J;6C*)mww<~ +zwp`d~;Q~sCh}s{w08oJhAS3Q9dcScXLl)%$9jqjT4gzpRhi2t1hY8hn)kg?2^;t-MEdLO{6 +z1;P6y_ugiz0c!vX_#ae&^au{NBMKm|to0ZX9DdSfa|XzuJ&Sq(wDExfrOappa;RVm +z?U8x;b>s+vuc|Z*HXsM^Z-`2SxO-;~Hk^V{ +zaP8epaw5OC5j#qfM?K-FP#0h+tUM7HfZ@TR)=9QzD)ox{(}d* +zrdfHbNf1W>Hn1>L{z(!PUIP1$au=l{&x +z$J>K3#ERk9ZoopS)+YTQUM%cIa*NmHb!+!QLC_1xtPIy#B13kGZDZhBbl^wmMI>Qc +z1cq=HVI(kc_8;cUW99ZR#;^yghu^?!(h?E;&}z-nNe((pmzgaAHNkFuTAY@K3svX|-kKUE7<03sUR4(}^G +z5*5^$wZIllzN^lH0Vs>=pBSdpY6uL;-o?{z)42Mwkq8_}w9L|02!)`BbIWOZvprpT +z!^eHOT2s?*NTq~eCs>+nmun8T3^u^$LID~AP*9MQPYHxkE~m@Nu9dfzB0 +z2=3$D-Mn$nOb9?D0v7@jDTJT_t6arW*C*iP=<8~*Lyk>KMdGze%&tBsTvqJ#hv{m0!QbM+BUUR<&G@n8D+`F2T# +zuAo^ooABDa*UbU7Kn*%Ud$b6icOPt-Ai=S5xem05M@~KH{$@!7bmzAnT +z%V^L?uY-)`oo;pAAS(ZW$Q-NIm;!?&7?2qjujO33x7YJl`!K%{wQL&_D8Yq*#0x3{ +zb`R;H|ANXNuPy$kk#D|vYUy-hN7XQ!NiD!~#I>+KGU~Bxs2S&p+!}5Ud2ky~ym2l8 +z;^Pwy8zE@q;59o*egakmfKzl<8~C%>QK +zersQc1c8EdL21aqt;K&ICf1k?xaBbf~n +zXM4&2Nxpx&6TMK|aJJLZC{8nfU94;|DyDD9-n~R=GrazyV(84E=7)}=nxC6M5ZyvB +zdI%JNfav=k8s?YWXT#MKo8S2W6^K1Mv4WWFG9#DTwGC=bxf&PIy+<)!YDz5t|Um0`7BhvTjiZiY7iRMjAr=R +z!s8;Tf(ts8TB}LD_*;jnCmAZb4vPe`T+NbTZ3Km{wDo#)Y6&Rle&xBr?;tFCForxG +z$d-(Mwt^z&MnL;C03kHOS-Hf=7&4uMMG6~ON4wx&#@yQarzEEr*tLy9un-?d{VGt# +zFVmE1CM*NGX}Ufk+Hx3L#~4VrWBb#dlHRAV7cLIe_2+=CFXc +zOd5o=yISD>#)`eR_zsaM#hjwBC#*lv@S!}BW4DW;u?Vf0Mg|IW4$zIWICyE9hQI6I +ztcx{Eg_g>e{f`H3>`-}YZBK^6SlB}Awxh9nVtcP+^S^0*!tuql{kkQ +z&^^FIJdfYst~H-&#C~kz17$bL-_zx%z+CaL1EReD1*FE +z|KJXbTM)*7qZ&j9i7<&5@p~_vYWbY(ov;6tFC8XEUDEoNo~?A0IdEM6VgAO?uY*%^ +z?o&-(!#B{0yImxXfQL&shA)2dgnEl``M-;e?dd23sD|}S;kXyrPkA&8!FzCe+scRG +z<2l4YHxZ`s8U{|+Hhe-d@SB^|UQ8lwhq-?C7Z;RhK%&(WAh=GM{vb;Vhww5UL3I@1 +z<2K&JcRms0-!>cnpQLu>iU<^i0~Z|W2l`1gI>;q?dxkU1n=y%35dmFA$l`6>+@H^#rST>FAIe=NjzEAOyoz6br=2vsTjzGs +z@|Qu2ez;MC+3KlMo8g!!eTa#>3qFe*=!6Zri;%}DT-Z$3ef>`EU)##*P$xkdh6;oY +zsI)fSEhgU2(FQi-KUS1=k{&REmyy4x(fW~%&OytsGk_^vv?gq#mBJ2%_bC?6Rs0;z +z<1$RpWrQ-i(OD!*KD(BApfXrzgjy6LVAu^IFH-g1?(p>p;s3AzM5l@H2(Mt`-fY>I +zg;zF5TrISLI)e+!af-lEue2vc_EQ{s17E>0^mmR;RkVNXS{~fd73iR4exNpdQu$XdALYmZ +z`|$#1pg`vlqS%e4XEi-PV|vq`y)fIXaBXOMX~zJ0h3U~vhqvP~-arU+AE3~TT`2vp +zdg6_W#Ws!0MWS&$R_-!-@LA57#<%eA2s%(4fiSjUZ6)3NUX!cO>S`8}0SMX_0?|ke +zh5Nw{y;t!mTt_!7(1oZXDb!*g?EhxuuceNsRIx_fXbMzX2tX!rm+?m*>RgRY_!lHV +zHxevt!upvs_%oz_QQ0xaYTWm&5-qnWe4-Q2Rs1^6;u=iQk%VgOMBM62~fK%TkQ%{N5wLB_im +zW$ +zrIvSB`U-8Z3{8&_ps+>x{ml(jd<56f4HI-Lp^Ve$%A_@4V#SyTv5v_Cjk6Z8lbBl}SYPF>=zn^vl +zAI1fohY7kGRZytKUPQmz`ddGxL>@MqdTaap-o{iNmg2vW1l>(Au?Aaj6}#Wf`cr?x +zl8@1hRD2sJ&<71VoDj$U0bl+CJ3Ys3zh3bzcz9;zwEq9H03U01On>>qUDJ;Syo_n6 +zP6vG4L_fZ?VYD3&@D@U#+X)$*MLjm)G=S=OAizUhMiMiyLDv(CIDGr?^nNs5%m{LE5I@4rQF!--FV+t{{MW#JMr^j{DqIP4*EDS)8=6M&Vu0^a^a +zfh4OaUI5^t2Pujl0BmLjFMEFg5NJJAMMGeohw7<1rQX((jjZKm2gVn-DCz-j!`-}c +zsp<9q+}3FgBuP>fQO^dclO!pM6{;^uQWPBocq#}fiij}Wgz?{F>tyI;Z*#OUWTc02 +zr4@?eP|&uG6!WLO-NPUvCZNYEDr*i~Y5qYJwz#XQuQmsYau6vxCAy@mbkE&i+|Twa +zk|gIBnO$XOW@ct)W@cu%rYm3huV7|oW@cu_t6`q$%#4uY{7%G)lhs$I&sUgchr$>m +zHY`IZ4ArJ1`>r=-wg=4Is!~swO2JCfYpi42lkB)VpP57o1~HxiZV?)K^PNRDk=wUx1tyzg$%cWcq~6iCej +zAq6sVcZat(C2QMF+s-?+>}%V$V%JhjAIxf+ko3eQ+eO7!V1HVnG=85 +zwi%M-|KIgQBuZ_JXR5KbZQHi>7hkq*+qS!3YwwOdbL`lvszzp2WoBfAHEi1qNwS_V +zA`+FErQWKwZQHhfdynm(wr$(CZJT3zn#IhBFRW49c1V)+deWhFw&^*}T!7dyf_;mj5Sc<)hLZ#f4O +z0mcBn!z4Q4;Lyc@S=xZ~JP6IZ2E<)1Kx@>1dVzR>dVnSZO9YC3kbcNQAcG)-pmdOE +z26!Xb&cMOB&bTF7TmVHNB79bqtqDWKHEK3uoLRsdbAxc3M0Y~bHPqXOdIt0-L%$cw +zF32mO5nw1FGoTlSjvtzJVdG-hstVh$!(Xq?w()RzF#)oF(;2;*CAAHsH$L7 +z(18d6>KzY6#MiVYKmY-Uh=G4Je;&#Y@4zQ7#rrSBuW!WalZ>|mq!(>;#ykY#NUn~! +zD_|rZ!*{&q#!C$Z@CLYY$S@Oq^$YLGZx5L18RGVcqX)73b!mt-?{17+cW!_;dmox@ +zcf;jFIXWN?@gZ)gmSKM^!+I1I`ujrgH{7%1Q$}9DTIku^+{|-Ndgj%gPjdQQ_C`zpERU}9Bh)(( +z9Kc$lUckl(u5{02kI1p>eaRk +zrN%M*wLc#m$Qw_?Cojk1C_G|dfVySEC*-b4g^Gf85Mlrr0#?8g@JS040B{O$N)(xzA|FFDn@Z3IB56rsdkHUI67qrD +zQgP7znbvt&k%|Zgor~c=`@_%XfJ51kB0lh95Cy;tNQvht_auX1DQHC +z`0Gya-NoQ^Z2$s9w2=!iEa16-Hw5S)f&-3YAx031L1Gk_ +zK`%V#M%TFTS)pg>+!`$wMhI@44Zm0hem)Y+8sI+=!kmbpRFDfG2fqYo0b~Gj04abh +zB`)W5efBmO|ILr!r1Gs}zm8@$UVE}i6zn~@2h=>-Jn4XjmQloh3s8GN9*`9j!LzXgl +zs4c82@H4=4O&~XTFE|IlqB)SD{Ey}3Erlw%;aer3@Web!C_hfJ_CW4PD3R~dN|K`+ +zEhx2CiWEgDqAdV;c|f+1!`$0(?z|#4l9Ab8Gu<1_?7TRLAp@WN0N~KP`O`k!Ji;yql_~uU +zamnFH!2tLEDT$DftM%9}LZ5?3@0xm&2RYr|Ozt_F8)nDYX;4G&GcQNPxGga$2ef9* +zO!q5{<4<`@z$XRoL`i;7c9s*B2HNcM}UQNxSNoeg#wK=v!A9kmhjB9+Cd=3WoCmOG*tsM;S@qa +z_#L?@+cMoOLuv)2ModYAVnWfN6aXcP0)WNSKrBctr!a*OxyVYeJ`AkfERQ@7OY6P& +zuh6%L1C9EME +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 +znPn4&G!0#CZfIZlRY93&98f|-3*aI0rrOG(V +z`}%{y4WAl3SCyRGqfUUgMx%|##xzjAC?;9h)*x>KNP&b6`AB0Z3GL8`er0To;{5OC +z1WwZJtShH1V~$K$F6uy%wWTm2C`@ZNuj$*>r*V&e-B-IW#_0}@071K`gwBTLRMqtW +zRNVr?68>+!P4X5Y4$4H6_`SUSaf-=jN*gBt8Onhipc5quPKFPr>6$@-c!>r$fJ>FJ +zI}en#nF(n@!Br?Pm*(&Cq5}(tHdzK+VA=X6o4??fl~r|B<>}uWNv<3z3^NtFPFab +zw`479h6Y3Hh?|9oZlOdxDXPQ7f&WJM0Gp*Md?QI{l;qQsX%ZRED^^nis7nG=twE^+ +zNQ=C3jxwPUn1eLfZhSscZ1#`P4i~M^Fs7-bvtPL#Oaeh*PJ@K10__S-<7DN_y1GsY +zzCQ!~+cG4Vubb7aa&j)`%oPBU!czB1`TYRl^R+gM@FSc0ws(o3!7fDL~aN +zAYp6o6G{RZ(xmeTi_5D~k=qN*sh_YGw=3V2 +zA%QwE>AlGilgS>;0X8WzP}*~r-1LSp&>2}Ll!!bg0WR1`(-Io?jP`ybbrPx)ey+GO +zJy|{QKnPyF|rL<$B=Kn;&6p#JIh2BWXw-G +zCqJUfr=T&=H1XHU1+AHRAR%d#qwA&^Vac?6=HgCy(3}i +z$r?~eBdYqw7zNN`r3Hk{$s14)lHY!1lEkM01%L_>(^$xgYKxNT#}Gc@-Pov2(c4r> +z)dD@m_y2B@w>$u%Nt6_&7yv+nCtPcy9l4?L4L97-SkhVYav=%OBD(ME#Mie42j7ilbun?amNcmip=@5SVBCQroR4UcjG(eJ0eCaQQ_5dF_vH%*X +zw{CCvytH?I5~YG41m{!a;Hb(=zyk5$VT;j-+xjerh(}S +zrVQh1+Nka64!`JY8HZ|h_~(=InGVWU@~!B%f?pKErglu~7Q1FKX +zI}~h1Q=w@%2+79DBWf>0!F&!tvUx~c#L%yQBMSJf>i74Dzq~4oEGM{0H*Ye)SQoCI +z4L=7@7z?_B&l|{>p3tC<#=jyX| +zZt0Bt=2tBP>~r83+rto4$yhT8_25?lxTpsN|VIGQG{-kBlb*cHeoM0JDa8S~EHN_@|SwvI7CQwk!O{3%98gp?qhOk25o5 +zt3ZZ?1rH30mZoA^OiA1WFaYA^rO(wVa8s#dMi>I15(3mRiuwShdg8VMX!2<*oPj72 +zG)xLMZdO`069A*wpaa6?IXV6?$qI@taY4C1SVhc0&Lt$Wj;KDt?gSQJ$99H5Ta@J> +zU!a$xfxsZ(sh5{V?TH3p9Gb*l-x~IVv+d3f&uf}fXaG0h{%$dF3813TeDFBc2P%LX +zjn@68_h0C4?fp>JPjikSkIIGIQ*!nw`Lk!cfPj$&iz7iF7Qqmj7)*+^$s*b_lrmur +zEK;vYo33qJ5D9(m{|x}f*cPZHuyS`dogPj!n!h=YSr&UX+6|j%VqoKssRG_&(&s5o +zcVF>^jjUJXXxkhTCYf_byj5+$cuYx}3iCZdwX6uCAq>$creU&K!LpuVL~H^_;rAb$W-#l8GL{t$ +z1A=v8Fv*JGvMTQp3Y{O)<%ccbJv;Q_W}|~mXOw;W`u8BYXi@s9K_$bV_5fb^O^1Yv +z?_Mr%2uMJSD*^y7nM*3E4KiiJ`hV9R`_}(YfZ=2?dW0$ig+;?TPEEOSODN-z(QN`- +z3&WvC$5m!c|Ev+u>x(R}7kq{Tq_TD#kc^!N@J*({KbzeyOD~l;nG*gA@<^7077qbW +zKsA~ct)}z9e+Gn)t^ya%LPjE@pQuyz#kDggtIvn*LP#!xBt?rETClyFKWEL$>jfBf +ztC0s)6E8sc06M_s@)aU)LH|J+mjqhb2scH?0S%~Yy6VJ%E2*l{l7W@wKw3l^?kBw1 +z_9c2f-(VjSR{2A>Yx1LU-DU$`jAaA+RV#GN~jXD<5fWwG)9 +zQ5A^Kg9x$c7?KkI*VZH16IRc+ToQq1f&d(W{qnueyKXTO8@D`}XH|_@%Q22jWl&2f +zB{WQ$LL1y{p1Rob#J0*#Ip8jo*1SByq<;X +zt33s%=6jsge&ZQW;jh2yu>Yy&tu3B*zx4B;=)e1fUI4eZ4NFNNeuBkfhUCP*#9%#AXtJ(r +zAJ%@!pTBcBCPJg#{GktRZK(xnBQAGI>7|L^bD#`FLGZhq +z73I@P(|b4Q_I1B5T=|E8_s>86=6c^h8*i52NbJGbKON%rd|i*QJtUF(+AD0^ZHVz+ +z8{-9<1QaoYT+8!L;k7#+n+kWGGYK6ht{J7?Bq^rlo%?oD7nh8kEIZHwM58o4>w>PE +zN^|LA!rqO?-Ru5*$~E?-3%Q&A(_yWt!~)`MJqQ3B(1qmAd!=piPxQe6`k0>}HuBJ7 +ziTX%G4BT8xDIPa+FXh`aH&Ffzw~9cRJI7L-60ev-`?7wc-T!|0eFeMMUF3^@wp+Ms +zTf|yxS#ke`u!kcGr}o_lTlX;#LWSGP56m&^RrnnfzBLY>T)hXyl +zLC~mpDFBm*V%;nCP~*Mrp^bKr_+or>NFF~#tzhR?23wXBc23sb$3+iy{dfqAogzd) +zACP#jv?um}H~$oXUI_`ug~7!lTmN~h`K&^LDBg@2&4uDKBm_ZfY`=@hh>qVjl%#qX +zr;mO!1x%%YBjLs%oZq$4dwqaWHYWyf +zAzEW%8W@@bUY7*J0#Xxx=vGHtbxKZxD2aO9Q566*w!$qfTfMO-Sdv7N0!xPfo&|00 +zkBQc2GKtp=aN3yRptL-^Dp{GmM|7WlHsBQ!6nONbLCAu|#802xvkb9nk`})}i~Oib +z@|j-s?k0cw(3J-p2)Mk0Sfe`G>dlU7?70wbXydNDiQ+?$fsA+OC5+KUDZo~O+Xlrv +zZ@%+h>Thx0lcssm(3^kvyGj%LC4JsYXedB{L|=f)g34qx9r8KLJoVy#|HVv43Df{Q +zfH~6l&b@h`y6<#wl7H_HTvr*whlC?EF~DRXV~GBm`k=nR-T+>8-pum`$A98Wqcw+5 +ztbXW24mbr&DH@^~Eoi#?YQ{H)Z`Xxeb(vtZKtarm +z$wv6~b7+IgR)odjw0r)l=RG}J?6Ei9Vw5cXkmaECVxVbIx#W8yx{@pV69(3)w-ewX6NAtI@jhb3=gS< +zG~!iM@V8F4Qu*ti`y1=-n#*@Xs%ddUhy@h8J$=6zvcA@}skmwM*zM}bDSM7R(uI@D +zL;}n_5YZy;p{vy&_WNx2eX?0o>?5?Vt;TH&|6R1zWRJJ}^xHnR|K3xsulR0pAOVfd +zj3N#afBR+qayv8k_rLaYFW(3XI;aLb`yG%zVvIqpg`P4HEQdOh!j^XpO2P6-0E@7! +zNcBPjIpdhJy3hGG$rKhQfe}5wGsgeHd#Qv@(0A?xEtT~T#ZKV%LryLH(~omCAxp%v +zBFsR=8{6FG3e=Zke=yqya2-ULuJZ!bN}h$rbw6P>_|K033%n@B9d0el`Tb)XI0&o7 +zCE>{@C;bPX5z{W<&Viv=9IX-Ir*;O}&`hfyvrd?ZKtucb0H+(c>$wZWKj@-Z7qU!% +zCA6x@o{6*L^-+)_wNYTc7}Ec=M>L{!WBYReh6BdL*{oOmgg1w#@b=c1(T1Z0fSi$6hV%dTNJ1t7ljF>!W7s&Iv$n2n9}zHy +z#C@^|AJAoCu6&=IS;+FE`0wU8@j$H0(s)EPJ=TYG0e?H!O(xD^%+7dkttIrlkLyB` +zK55KA8Mr^1TjA6Vvip8Gb^}QDXN!pH$4tm?yN`40j2}Az!V}8Q`wZ@i-x?y<{|{C% +zx)1i>5{DmzHOlgJNYkewT*#jR{|>NjGMRMFWgy*igoU;9J{>WHL?0g#{KIae2HY^} +zV8+uFx5l5td+lTTizjERj +zx4u4^j1kSgP4&wm{`Gz{pnQ$`t?bGO?YMJZG@W5uCTf~Gt(=c5wd*W +zGdGi4Gr8(?(oJ~YQY0rrXYd{0@%`TW)rjaEMLqMzJ7)|tNXDCPvhAu@eJ^9q+)M=L +zI_HIL!4h_C>T<5@Ol`egK(N)N{i>Pw9->77);ZC%vz-xn2C&}28!UA%sHj>b8Pg*(($iQsLf5GMf8Rl|hMgRcuo*7dB + +diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +deleted file mode 100644 +index 26357af1e557f992d58827ada472bb089488186b..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +Hc$@kDX}CxsG^@_jtpR*=l-CAXv5zI8<>Mq=&#Jqd0W*)<}{HNNuBHv +z{J&d1K(y@$ +zs*+!ESvqvQ`=5-ZI{`V8Bt?=7uq46S>Ms(9?VB0ztp5{$e{842KgmCvqBsrg%<~sT +z5r)PL&BNO^P8e%x6@UeRK%lGKRg{-96@c-~aCTSZslsJtX9dKB&*glIaWH7xNK(un_CB+^BM=c2&@W9VEp-K<5bP>lE|)p! +zUYCZUFe#lHa`>nl0~M8dTThE#lHT;H@;1}no7sIF6Z?OPB+L0%_v<&0VVRkknVFfH +znRl_0C0|4qA=^q+Gs +z?48Y6H+5{4ZQHK4ZQHhOTV>m>I`%m^4z|}`m~))9*Urru-D^MpAIrH9CzWPK**;@6 +z^Om;CO1s~>%e$3PwsFQy*|x2WX8I1MZFk<2v2Av#D3)Fpq5crlHmsrSucqC&tU}B7naZPbC3NimA){lJT-7oa +z>KkKppV(H3aTT_OB!R{Gxb~H}d@R)BVC~DhWg^t6F!qGrG3cv6F@!EZvN9|g8i9E8 +zUIE4t7-(lvPoNURY9m(8f~7N~Iv3$j|781^0qsq(X&=~Kjgk*p4z6Ks6|Ns2r#~A{ +zmm|XVYVhNOSVsy|!gHbDzDPN^y-?M4Jw=`-nepyz2S5K-=zmkZtq#vs;0_`pN0`9f +z)8IGnfn#$JY%3B-6~z6)IS9t5VX7JvL5#>SDRcrM@5&!UL?96$uxpv{G^{k^-ZET2 +zF>agyYv)9;?T+t%YxKP(-d>02D{ux8QGn}MU5LMZDE|0$sI_M&z`Z|3oF>FbAqkVW +z7w)reTXp+Q!zofdOpEHo{(4(=RMbjq4x%bH2q;ie3Tu2X80z)U8{ +zHa8>+Th)0MHHS3*~0?VI7lVa%e{7`M%X +zyW8pdkwqed5J-21q^?am^_tqP*Wkzp<6EDHwf2si@$PY&NMRtyi&J~zUFp +zIfjQJgkf8k5K)nkIHx8zYY}y8$(Zx_4bt^6QEIxWNu5Idt(4aFIRDCg^~C)64BS_) +zFU`se@!584645l|Pkbk2fB3LTW)BDuB|rqj5Jvz7vZvf>U3=o2E8%nQKEV;665lvD +z{DiQ*(-h?bkbg+eA&LJ%Yf#Hp%@@$Qa1TiR@>ch|oX_ +zmBfGXmGkq7XQ~go$C++FBLePhX_1-WIVSW{-tHSp2e{TNt2^vaTrPm5qiL-%KCiak +ze1((z`D0PF*{PTJrzP>-Aemc(*&e_aDA@}54(UWHq<^6_B%mWDVHbrc0HT6%yD8+^ +zyN5>K^XjbUp@vjgG^q#*N0h|fv*T}{j$_||TJ8eayrYMbBS}kAh7@E%N)TlpYzJz8 +ztKk3Iw%+VyU1rc`;T8KtW)mu&!ZfjtynEdS7>TBi!@9Tq?Bi1Vm|{2S(D?!t)U=$) +zel}3TI_N9OY@8eR>s%$gQ6o*?pWe&BM@;AP~ +zd^2v!{H(jdeXtV=9|WJdIk@S9k)i0>7F&&U2~+q$R-ngy=~mrja5O^1dkz&R2G5eQc~BqEoik+dMKh?NDP4X|AzZ|&#A +z^D*I86u{_FFun=ItkiW~x5tdDHN9)QNR@3$L=fgAv9&~wm5t$Cq+!ItYs9lU#5z;~ +zgMcI(3TK?oIOe-vx@gq*6j#2OHYs*#JJrQ{-|YU+7%t +zg3+n`#t6%ZutF3PMQ*UkCwcalJ?A$ExYid;QwB}(Rm~OhH&R-jogrdXU?fmL0-P3N +z+Sp0zU2r4=*f}hxU&KXXwB4y;UH2MKzU;{+Yo0eh9KU);d`5!?^!JN$2tj6C +zu^B_fm8)#CH(}P2MovUhoGUW1LjRfpfBncuqGRdg5u_2oCr!gKSSqIY&2Sfp~^J9G~_huPMzw=sKWZBdj0SPYeK +z6Avn@J2jS!i((}Y?>sRToCd(h80Wf>Crr=k-uJ$Dlw~ffCHb`RpPR=NZxCi@-a7n9 +z+nW=j$1R+P+WLQ#Z>pZUzGinsN*an +z{mcH4yjHQpUppeSH1HtcKl2*FzJig{Q7jkzwljmW?)a?#zh57q`7nj`!`@-+53gs?6ItQ9jx`}vJxn5{Wo(a`9Wb+y +z6;==cQ&fJ@SEP68R8l4Vo9F^DTEhh>Q#BPF4&-R|uA)Fe;X*%~sx4{z-i$EPAjaPx +z&l^A&XyA3QDS%-#mBiOrL8NpTnQq3+%v7Ek$3-yp{FQVl>0Y5zSkos1GsbEgoSMj# +znm}SI)BzjGCBP&`A&6e +zfv5;>oT?;(4JNuoK2QegA+a@GVTr)a%owZ6lSZCa(u0ux +z1A(3aty5G+|g!5lsa@{<0xI3|5Xu+(&&n$y*3UrNMwi<;*RJpJ);p(L}>@x#$tPIW;@J~ +zptf^5khbt(lG+M1v>((^BPc0IUYj2k6agw^*UMC7A&AM}+UB>cmk2 +zk3^bZ3M`9~WYII`EU+7FAT*dMRz9_ePD%`qPXaA>^p~p+rc-wgxpQtHeo#jSd+>uF +zT=5;!LMq&wfHDkd=ct6F>I7ZSFG)&eVQP|a3Z?*I=|+0A +zQsFNw82CG{epeH$Eu0!j3;ysQ4Au}v%bY2}u28BFq4HBJnZzyb2Qc=ke0d=j<%&+h +z%+)!NlB3>zyQ$tB*qNwF01ZRn$KeRk5sNy`^>vyuKmV&RQWl@thHZy~?M;UCpZ$s% +zrtncX_hP*H7kN6Kl0EM=9ZT1zpX4zDp7p@TfQF$V6{pp02BexHj1>NS`}~r@8mvm9 +zoTZ)xU0q-UVQmx +zP8PXQMkdJ^!mfu)`-d~=Lh_ItBqK41)6|Smu~G%mSdyhwCZGQsGj<+Ls(84RwQ|l%@6yf}%&VAmxX`{BVDr +zTX6&vM@Gpt90k286fLBXoDxd4eqJUF<5)S{#r;p!lQQwHv?bZ*f3Th%`kETl_oS0-$TA~FYKlZBfuT)6TbW}lRGCd?W2VDz7lfsyU +zIhPdP7d9K{7`E&vd;go~ZVnI`vZ}Alq!FmA;Pe%I`;z2jepdSk6(}cF<^`NjtR(hQ +zkS$>+O3t*^*uEmg3Y7MSj5}T%RAJ&z^kk(>8haF`G8t?@f27Rx?$Z8fS7y81h>EQw +z%i&)Wi(j?GaHN})2*0}Y50<;D#2f`{$&=Cz-9}e&+$si*y{;Pz1%$hj#X@3yiRbsQ +z`ku5ufMz;c(_oVc8`2W=?;Ax|Py?w7rI+#ARk2dt?mz$#LmwkF9r|4anK3Ir=NqSQ +zuAAp9wBeWzk;pQ_gplv8nY^NMc;VPU)aDtKhJe`-E(Vn$AeaN_5maKOdn1sc-;P0K +zoVTRVx?0=1zLR8cX|Ktt-0aTESXCBgE?L-;)aCsgDcABA?C#onn+v8IVFj_$(jBDT +z9%&xvXN@EVGR)m!%oQ9ESwFf32~fHqh58!)1|ooXtw9ro+ex%bH!YJ}kCo-FW`;_c +zmjU=7avK8rxgIfYTxbYqE`;)kLwyK{M*uqlFvLobk{Q_&ZqCFhG0gm`vCO{I5^1iX +z5s1AwD1_KZw5(M{oBVrSR5zA+NDzk?7JMo)?e~$%^w3=Iby7*AMWAeh(Vuq%v(O{M +z<~DU$=^}&FCerXQW+l!@!AAV9NOw|x&o|(2YS4$;JSTpn+X?U_;1=er~KwC$%h^%QKg@gpR1B$c#d#TNc43%_tQ? +z69UUlRAuXxNl4zJaFfBL4GwI@%2XA7CeuS_y4=sk4|Y_q6eAT7-N0D%QK*)l#@6gk +z59%=Ufmslt#e8{}Q&1$4-4( +zU4RiqWKJ$Yqs73EFfu~0(g|+KzJ7>v0!hYcD#`?eTR~>O#dYK9`UxNN@407Xwf^Y~ +z^TK{U%${G>Th5fURfB3e?=$xZ^u;N(-s>q~6SjI=$%<7kGfVq@B%MBQirY)Y0Qwpr +zxq(Uy00dTBl6|um_x%loFiaW|96>~ux^vUxPZzs-Q{Y7}!G65haUTuG{d +zu=>bN2L%xlGJApR2BPSFnWn3B97fkAF7aThSxR>zFS< +z#~p1<`irSYSln3Ft*fu!rUw|JS6Ia*Ny36EKP!rQ7;2QDR+Zw`QT>&LZ795=ePG|0 +zbmzz*Gb`kp0XNFat`x`5qKO)}IX%lvncgNa!~Es}-dOPJYh4d}TI03^L{&&nr8cRFRN +zoYO+H$s6hMs>~6yVy2Q~3jydr`6<*+5N*&i7Bx^oG@`nB&d%)0SubmOZLwZ$#M+_* +zs}*g%Y%tewVa@i1Tk!JD;|toTL^8>3nIwZ&oSZ +z4PSz%7dbS~aRJ5;EX9fXjG>K|%#Y!kmc~tifQevGzfgfTlz(-a>`F}3 +zgKg?Ka{Ji>w%%cvBx}gWx8nH0D0U)Ntb_nWQCZ9~O70VDsZY=}_&Hd#Z&3U}TDmWX +zBdc_>dx=ZXFe3m8;9zPdnG$WXGMB~8eykL44x)t)dzx!nR{)vQC;Sk^5p5GsiA&;~ +zNDzt2;(g~)A;MBHLmKrbvx%w38OOXuF56@ugQT5{V=^KaVInqF!0xMqnc +zv?ae~3K@}?7d{jqHb714l#&D@(AVVRD>5ma-#4rDg5D*D<*}<=dH8Z0K$LkmwI}xs +z>^7;H$&~U`7^hHmt8C2l8&|MBabyvkMG3aUwWImcYg83-b>!Wl651xSwf**bY(O&hl2QLtN_gM)vYUzuGM1 +zame9qJx3khGE^Gm;;j4~omCUZnSYRIXs-L`l3jUL6CeUmedWOK@X%9D3C|_S#QQ$< +zD`bES@MsD;1K0+D0=}nyS+vTlEvb26Wrnve9PbxDdD|mDi*0*MpKC?$vm}h|t}nbq +zE=Gq(A(sBN#h|sJ+M(iIA(HA;$TmcO$I9-^17aaGuN-=-h0V8)AIen+(^4(nUra(% +zmLH}kAFcNuFHg1aZSm!-10{RmWDk +z>+R8Px&1+dbFW%I?@FJ8x6UT-?28+j-Q5Hvm*YClx_rf4qKXNq1(zU&bqtgiGQ=+> +zBRNO{7-3`t7=m}-JhINey9X)*hya~XGt1ig$64)bZ2Q}%Kc`sjtWvb2f8-_doLomw +zZVI+_w$6_L8GsxFsp_GnHHD_F8+fp!;bi_lt%TDl4L23VX+1aHdz8~(H%T@hd+sFS +z{5vU9Y7xOEN^N}c*zH!!j(qE!?N!TEEZdm1PW7+K8*_ZGRB_W3juI6iajaOaSmrPD +zLieFG_(z#ka*#|YfFbM!5C00p_J4h0H3G +zF3*vroem9+$cJRvj-8ryZ55E_nn-@Im<{R^0E9pgMDS2(?#%+D-fDx$(chPglw~GO +z>?{Jd@aaHX{u+&#*?3%?N+@qFve9fdP}(e4s){@jxJe!A)LyC)qNb{q)BY{DgYj^3 +z&)*tD>8Ri=Re6tYH|v-JbJH+BmzQBJ*!Bz!4S^jJI#H>{+`7h(O}>8Xkw&m>HbzyZ +z_4HV}=#XbxqP(qTgU*rrqS?ce0G%x(6`B^mR48l_GeK&3y4BmbcGiT`*Ow!mT;89F +zydTwU=;%VQep@KFelX}Uf=+S9by1uAa0RKQf@97y0q;@yFB|=sYW!thNGkW~O9aVf +zc@9^NYzr8`&INV^paGx>puqF&wdc{jZ5d2XoL>V~y8Eq((zNxh#Qg>wKoX%^f0kMI +zRwJ`&I)g=k>1C98(Gsa#E-l3F$h;LqJI4t0R-kTz<5a~SrY&qFM3eRQmomrYrIG~_ +z30^_L6GhI-DQD&UeSQ7?K!okbC%(^WB6W->0bD!|IPYgcyJ^7g%U6YkI +z4*hj`p;?*AlBA%L+A)CvMn-@+IB^<44rkhDxR%hgkvPiZ*Hv7!Ek`rokBDdoM;%4a +zx%FElnrt*_gO0hWD0cKS-MB}G*LLQm&+F@P{Ee%xD2vZ(8i|uopOyEy)S1`eM8v!u +z>G_w9zR7AE!@6^BXyJ!TKt=1ShUFno>5*({O)0UH8Wm~(eRY%ukfFzfcLE>{bUA92 +z|EmT^F$H?EZKh7pv`8J}H7a_rCG>*k-Xfg{zJDmK!KH*8HP-)dSkr+QK3++5aZP`2oIK5auaO>ELxc;L9Co~Mc{3k#PmM>ZW* +zzzA7vD_WHdQsSN1$lUyE3Rpi04xYl+HJY#;^RCU!&Zljt6Jkn7ls~X|QzFn;*I=aN +z_f(_@RJ7k@l{Z%EbdbIc3$^f^addR+qzPLx`-a@f!AsAC%&b9}syfhF-U%wH-VxJ@ +z{oqzvhVrw=ve|Iu*;qN~U|s*+QgS|2{s66P`?%DX@L3>bWi}P#fWsCmJ(Pd+<-?mZ +z5R?dFhWy|T&;ZZ|(7_e1KoZ)zGuS@%I}>}~T6v5YD#X#!i(e!$lzTSvxcORXgD_fz +z)lb+vhi~K#20>=z3LPCC5GB;BW988&Qeq>~Fjx~*y+zwo2?%FzBeN!Jt#E;Aqk3PB +zU~wJ>P?LxoXhmotcm`?d2;g+M9U;=NDA)s2mLHo~H0|l%y3%8%eNv4j2<|;zON7ck +z=ZrpxJ26mOO>|o%97+}~8CK`hF|po^%g>JApY^9LjifhH;Hajk^1SHrTEJ(( +z-AK`pV5|mXcC0Xi_x9HmNE +zdjFC*27w;uXvLLyvp(Eq(m-dy8t8?N(Al)n3){2yU(wIOnsD*Uu<;)QdHCY=qi}Hz +zPJ;-7d{Z*D+sj3eZ7x+PL?Y(y-;-Er+WA%t&?=)+D5=F2av=R9I;!CUef{P)Fi=^I +z-uT^bHVhFr>1dn@2UcO14A&i1y#YomFiQY)sPxt4onA0Q0u14JTpG!+=63WI_SUN` +zDB0Fv)01}(y!X$nRSCMDue5#XLrD0h%b#f_-L}tQPRFzN3?0!OR6^V*b|@%_2&2n_ +zM5g-U2r!47AsAt%X``j-G_dkGU)2Q0d~eZ1uQ-8!mi4CKiEggXpgVD9f5L9q?k(uL +zb@H-uOdbJ4=o%dWP90_`Btxt7^&ukBfZFL0XM`*x+^*15R6`CZYJ>ebN;j9>nL9_RKbkXQGaQ)-U=$f(%s^UdX0*xC8r +z^_bclOmvZIAs3`ZEL7!8rKukTvSL1PXHMu;&)Due*VQ +zE|Uz>a2#848+nLYQ4ITDa25UUvzn}VV6?B~>paM37k;U5VB>U6i!wV1N +zxdD$g4MBhMrGAAB^u=|gUeo>>c)7&uCOnIjz^ +zZ0S-RIvq_|Zbd)&@_6*q9UqF}8iP~^16|3$C*$Osj>p +z+Kq@#j7CW&llI*H=n@-v&@Ko%VjH8qCl@{Tvw7wrKIxE+_FgzZ?9a)BjK~tpp&u+r +zi7Pb-77xxIZZy30$De1xp8rj#d^T3mwc4zKqX~>^-TC_|z1wti@oV1%wSnms^L!pb +zGpn~;qFVkh;;q$Z2&4Nf|CbA-CDHBY#vhFA*>$b@&tLlC3cvY+7y3YUL^sO-|Fh43 +z`G$o|<;tV`yJ`4flym>r!I4`{fepmjRz=`RKatvG$7E*tzwjRGL$rQq)(HIoBCV`8 +z#?j;@|NYdjq_jIO +z4e}_rYy{G`n@`M;i64>#{KgKRO-J|nssFP00j(!cQ!}Z$w$iZT#6ykm{JA*&WKjj{m$lN?)Ed^WJ@W=}E7PCpVwYcnwu|BDD=F;E}fi67UH) +zeD%7WoLDoE(p=C$Ph*xh%fcsg5?eDCY?RgEYmU;_e|h(fU%q>|C1Kw*{BU-S^7HuD +z7)|b+@dvNmF63RFvqs--M<&&AbuUrND{>gm+wUO8?VmFE;CPE{gp%*zAYI +z*QIw`c9|l9_(3ji0*n@|P03v8b_@YAmOucCptKUeO3moqlHD-2VlyvT<_hjaQn|1joA?dg?}u +z`9{zA`_g592r?L!;iym~P~41#Py>%Jff|U%#YYpVm_9t`ar&K;D#$2h5KM!13bZ$G +z#=@yBUx?>TBr7SI%FY`l0sOCi(2rK^{r5PFWD&wbY9ZpMVXjIhn|M(G5^-h%@W1}p +zofTtuQ}9##>L2sfB5#-9ySMtnEMxPZLQJ2J3v;f>2WfX?yy@LPH0RB~ +zYY|-dpa1#M|0y5a-Jy$04nd8pb~>#>>Vee7)vYHUb>qr@UocI88Gs3Z62KTQ9owIk +zKl4*}scy;87CcDN-Qx9=ay+D`uI3ie;*)M$ShZlQ`}oJN>fP$D>f7qdFyt3wX(7xq +z%(5@FNgZqvu4%@!OeS^#0YC*H!WUH0VO}g&nx%mgv18YiUC!_%OoyONIC?cp<~p8P +zYzUBpe}p{zIBW{c71OAYu%1NPvQ&Ed(Ocl8HX;OTLg>Uyq9P>! +zARmYg!)zdDrH;@4W(V&UySlr(g5?w*<*9zX6~o_xzjrxbBv+#z1|2oCq$LZz#Aq#q +zjoeX?N$8{=e7;oF7aBcXUBu#hSXC@m2g9lPIQcC|*!5^N5{8Y4F0*6yT~SWV=}}P# +zl!zq!z#WxTc<%MWQC?TLj}3yR;2BLq9UA8}wg+EFC6@;^TN}>?SKL)AeLq8uS +zC`GJ1sCA^5wn`h2el5=Vu}g-=E?Abp3&5+cuH*x=dlwSN4Ry#ReExe#ql9pwzsaK} +z@WcIg;byB$&ps9YaB7Un=pSG=EJtN>KkU86+Un6$Jw3i5S^E(-ZWN0R8?(AB$EHCp +zYjT|X7lzk1#nmy`c@Sg^=0nE`S-V}t%BOy`Pp^9B-~5eP$!KGtKCW6Zzf=5@PxRyx +zq3__B?88E-!!veB4qSgZ+E4qq#v9Su@Z*ge)Tcd-n0(B;2icaK)^zOICrm7ueCml= +zwi~v*z%>uHiD_*x)p#QbXSSky!prk!8A^x1*cL3D+9%BsIdH>eP89R+q)B6J7^QL| +zCLLN_$#}xOVBbWjSU~yy6ESa(?0(Moe%hn|?`!}Q{62LzF%QqMdj5GeW)Fvf0W752 +zk>W(`d!@g(?w+$d_Q#YSfC)`=Gm(y(cGqq+%&r4tPc0-YtU4*Puk!KAvlsYy^N)RV +zqY=#5QU=2HCS2wDSGCK5g +z>rY#h`BUJ}J7A$z6DmRI<3@J#mewemsj;~8Q=gjKK5^&9`rfv7dspGf7vmuoT$Uq> +zq7em-LITJny|kyvJf}F0ildpEWBEUSVb+Aq+IQu171^S$Oy4ccJAs9&sN^ip33|d +z#%3853$U7y +zSg3{*_T+7QEAgfhLavkU>OEEc7*Di=4KTj}=l$3rL&ri)&k}SZ2&yYpmnFu2vbofS +zNaSFzc+%|HeLDR9^=^2I)oE) +z6pFT8AX#@z_HqK&Zxfcj;HCfXJn!|qyH!|tJT`Ra*R?PZn%^0A%mc{Y8QKfO9pnA(EhgVnxLwz*+p*Qd +zy9>Q(CI_99zTCEB_DwC8CS3o%dRVh9>~JVN9j45U>@H;(8?62m;rdV*)NL{p;^6i( +z6U=!Qz#~Wo3rP@=D8?qJT09tR8pO7oj*Nrb#}@Y}vJ8d*BM9%@+l%>E?ZsXk6mSU! +z2|5XPIEXPuw#{%LL%1x!CeVKa0h|EC+|%Iq3CIE_Meed3OB73W8{sh4jJ*B#F;Ie- +z0}mj`5V#a(LdyN&7X-xb+mWM2u?7eYB<)4>x{iFsD>x_vzo0<#Vi(K(9`6iD0Ks{B +z4X_>m>ZU{GrG29ByZImkkRUxzclgsi1N?m3|J6=nn5Y)q)58B-M&gY9=;JD+R&v(_UUiGGJZX4Yi=1F$|pBUqyUIWu* +wI3(gu%(aYUG)Nxn_NTI0m2J$wI5Glau7M%P6u3*s7}s3J@a90N`4$}%0^bpuG5`Po + +diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp +new file mode 100644 +index 0000000000000000000000000000000000000000..44b3d4420b6a89ae90aefdc0f78f1acb8aa83976 +GIT binary patch +literal 23134 +zc$@$&K+?ZbNk&FiS^xl7MM6+kP&iCUS^xkqufb~&5w>k3Il}BtcIv<3^X5N}=>G)h +zXC@XP3B?SU{*+8V=NOEs*a6@wV1)t1n!%$y!i?-rE|A^HoRb8UvWWTuc}MK{^a+#N +zwxw)lBnyS4e-?refCkgM3eC2WBt>=jZ!%;45x&Vbk|Zbn3b3%S^aeuyVSV*~0`NC= +zbfBXH_(i@t=u*;o(=kA~9WX!OeK?{MsR$&J|0k=EheJASY88wpPEtWAZ>tm +zmYV8~O0R)=BLLU}0N9Xkog4r)#ZE`t8A$<{L40LnA%`9OQll_#+sF~sf7u%@-#a2E +zpdagKDGXV$@L3L6e(o)cH-M5L1%(8=h0z0Titq9;j`WZSkRiPpa7{&()L +z&1?eJEL%1Y8-mT%reUL~TIJaau#}l~zt-I?0~V^btu5P@d0o$gyE`O@#u0cTafW1) +zHcJc=(cRr0p69-{9ND&2TN!Jgcfa9IL`wf#1d+S@S&}5%Hf<}{ezt9+X1{j7UfBQt +zs%`(hXhF7Gx0aj}$3_S-72cBV-1*eCZJQ!Fl5~4Sl2THsR4V2wRWma)Gb}SR!|A{; +z*fVBk7-nY1qQ+w85+nrJb-9~aWDTX~kv_wK|Nr?&l3u_6KS@=}YTG@wZLaOJZQHhe +zx8~T^^{6#!R`+!G?6!LvRjDNZ-xu3$TgNs@n&-Oj`_apAMB1vhZQHi-(eA%s+f3Uw +zt13}eIx`&a8xQa6c)+&JkR<*8u835*s=KP~?&-0$vprt>#qwj@wr$&dZS20Y-kBYn +ztwCGW)#a+J%#5G~+e%#9S|rifAg?w?!8GT-Plz~j(Ix+J$$wn(AD8^cCI4~Be_Zk( +zm;A@2bdVwij1~bO3L5^%MG6uITG5YoBw(fRT`9bn!l4v8Q?OHzzw<~z0Eh+y31pB) +zGLS$NVK^`WLxF{;9Rw_-aR4I-ql!BG0B}*nGNy0^CvY8As8N9w1e&oA +zPeAp(4@9699T>!39K#EE4G$ynJ5?YB6JbQqigj3zA=oHjt-*(ms443i36*UCEGk`!7_TzDQsFnW}(19ZE;!S)Cqo|Jvq+nqP&!VIHD?l{F +zF@SwIfDXvti4>%eMjtj}0}@!o8a(hjL2yw)2|0}8GOpkOR#EsJNPxs3o<{d7t$;=W +zSMX1G3%M8zNWsBQJdL&NCxDM4s)1RoWmii$XvZK@kS}$dZRkNiHed*#fJQ|U5<H5VVa7W{AFE20j=ay<73IqgfBw<0nloZ(L!zK)&8=>N=3LTMDfg-Zx>cY&w=;d9> +zuEnCpqTZR+nYx{Y$JFc0{HYadma4M~CR$^XJ3%W{LrY97F|@?kVHA=FDF#hy7v5Jt +ze-2GV8W|~~1Q4xdx`+mfxQ5fXjN6!l_Yx8yu@z6F2qF;3HRr^cMH^liaP(N-u@gn7 +zrk*0CfsH0(d;5*;>vHC&t?6HDSClXWfWi#^4*!MaaWEgnCOiQb1ay+MeT%C<<)OBp +z^+@a2eI&i6?K)}^+Ubn5@i +zG5uFANu`hIl}b`7Kt`rj@Gy%DID@megDQf9?%0fHPzC`l*Sgkh)YJENSoe6$-jDa` +z+gN94t4q%ytQ$~-vK0n4T%Y)nyRQAJX4igIUD@=(0MNLHKgK6e8UsKZUO*)RI?3#v +zUR?bz{%y~*PGlx@ZNYI^M@$jPF{5)-cHR+Bc;ANq?r)y{4Nou3EUquC+-!b=`T<8- +zB(Wa{5JNHV^9bNCt%9Z1Y|`I)!Hd!7J^s|vvGCH{#tF0f22E>pY|y!Zbqpo|kq{lU +z1g(PvAZ0=%0YpVg`H(&jN&X_$7K}ZA85xqd~DcNeaZS~wR^7b(mj>7P?rTz0-|MNTXSXAum0X?pZMXh +zTDunxfWj60BHl&t^WRbk;ZaCv0G;IWZ+h>j0nxDW_dPw>%%5j=@H+`K;Aq}FH7X6NP?9(L`Xi{5)UIof$r>z_t# +z(7r`-8$d+#`jK-=fs`Q-AVNR_h(52i$g0X0W;H&epms2=_Y%*lpE#|#Z=2eiPL*;wp~35>tr@y4LSfz +z03GD91Ra1FV*OD<0|FVMg^a9vQ%!uul_ll=uz5f7p;h0fG&c7b*sr9LfSt{Hu!2+g +z1kND~f5na=eCx2Q`n(O#d+xnSw<}V-ind1w@kG*L-;GzxdbZkLmPr0K?t^*n&-Htxq_vVN1ihArK7& +z0=W1C+^%hq=)eKI3JYE)FY+_9wdZ|2a^5FyKjnY7Chxv>jYB=xD|#J!4JOb5NB|N{ +zpo2lnvaJiq76^mP+dBJo=Z#4{I!ebe@>6_3q#658)6Vc1X;X=&)__= +zP}N-g!Z0$*b8i5>$1{!FgAwp`g^l;9f|ItP7`PQ9kZ3_fE +zd>udd^KZw-KAc%j{V)H!`It6#9QvO-I>=A%?FZ&l{jhyE<&psRAJ*gR7=tQ+COp)T +z%wuFWS>1lbGaXNRBs%xlt`jzn-lFx7Lx(kiyeDfv{aAsafB@uefFS^ZcT*yf-wx>> +z#nh`YoBwO4!)M0~e#L|ZpBc0Aa~Cw%yU+vyU?YR0*pDnu<049xI9@;jM2O6J^|`=< +zH|#LKU^XNS*M*P@1QbA!5P%SYx0_~no$2!F=1pVmMmVsr89E^kdte7@efZnnFQ4*e +zcpKIsLG-Z>ijz<5*Kb|rhr~kyw0IP~cpa0_Js{vr8sD7EGaoLA9Q^(EWMCFKo66_fdP(4sR6?C8xHTm5@)Fraswk=Z#(Veypl} +z$-E_>KkK}&pHz0c6(s=!z(Ow`!4MYlHb&uPI|lF^@*qOwn)T259=v{=xdUw$B*+*x +zsX(DG8w4c%ncU#DjF>#>yJNDd7BL7kV=Ih99t|5&0+HmxFMG0cTibR9=1@*jcAEk| +z#e8=J6i}q_C_3;4?m`0?Xu(t1gu)Pmx3H+~Iz9e1|Gi`GV@;<;?6lFAD-^v3VCc?6 +z-8zjffE8E}R4S5igsxF?M3rJHwNKb4Z(eWv%UK5(RTqBWm#zI0sc*7Lia0C?gs=%m +z(2lEkr>_KwemsvH2xz$$z5Y_oz1QwAYp6{?0Q8#_&_K|a&kqrfG)b>b6E2NY8f6#~ +zQLIDwkViu+0uX!VD-Za%ccs#`1TgfDJ4Ji&?bls1hxA?MN1MAI*LBK>Wj$k`Z +z;T{fS1sXt$EZO<7HUIk$BPIqI!62m+&;W|Ec~TJAxH0U&v2Hhnrw9QML&qTxL?EF6 +z{0nv>OEr82f9s!7eyR@2q!b|FY|2%xk +zYU3?}6R-w_YGnK?bVCW^E&YT5Hdz7wpMm3%INSkesHGBN_wE3TR(na6s +zTXChWG0eaMh+`+7KvNdCJ$9ok+++h$1D5$k4^rm$r%k0Uz!m4^$B#9x%?>w{%Qj +zdcw(p%tSA%{eXTb`N!R8-|2nzm;2%6Yh0S@LJK`+@1dR@P=20&%$Zw&4nnZ +zp(Wov5(8n=P(f7d&-`;+r3ga+ +zRP6rbqW}AshYXJmO$hX<1R&!dAc9Jf*^8lfp%me$m>^I`?vMux@Q{W8x4LBES{KxQ +z)kA|+Isi+^H={jDa%O_@xLcCq+aha2S%t~>wR!4RY1hf3&;8O@EjoXv#=sF- +zx9{~;|M~Za46mUV3P_-#*NkGc?6rdeNy&u76-OWF+ng63h5#sG{*VW1SVjg>uwl@8 +zi;JE6e2~m8s2l{#1^`P_=LxrU-Q(fnjlS>PaR*9|dbnljsTW_N@lQd~^E0D7s;-p# +zNELT#=RhOT3>bz9-3NAg2^pXb^^}QN2~Xda_CNpA@1ifc?8dKOb#kZX8~^{b@y)P0 +zl#mJ(00lr26^>bzj1v{hmod|A7%I@fJXQ~RKw}h1bb?NFzRYJ-cGTiy-k<28{MCh` +zoGXFoU}@KR-Xr!s{(o@S@yN{%dpE%*^b?^%xG1%1nDP)bGY^iDVU&zWjoVwJCnM$p +zNPqEMgp6kcQYa?Eau{U%1bk#rr%NVMTsn4M(zuPZSCf5qWp6Ig}HC +z38a9)P%JpgAtWARK_%o32X|VjR~Usc*m^ap43`91DMiJKlfIjakM$r>!v&}RRB08ayxwUC7wj@Je?$w}lVS<9E1A!o@7_G362+{1ChTrJMLey|?4iQfT +z&=45(=!G7+;`9&=a=}cIQYZ)zFwll}NH7Wr5;52VyH2PH)~1m-Cg}m9=)lFnwOP`5 +z%hSOM!$3F`y3TZyXc!)tVHo41G}@|6fWbhtTbZ$$@hw`)i}lcLg_J@N5Fi>HM6*Jp +zAljlu#8NdT$W2SpXBOQUM7~}PTxKq8Zmd?h27=D7X);cjNI$5ubSGr4f*b{R3fk_n +zmuC+#xT&zDAQcn^0#(XvVI2k}h|#b?!hi+=O)okNxutMSp|=}Ky%}E(41L_R0`T^$;c+5yf)$z)mzMV5SkeA%-0WM7EEID2xUI +zda2S`%1u36dIsLvUK-=xWaM;y%~f~^QJD{9R5SpC)3^9Fk3pE(v!Owok1&u)qdmY( +zBV{^|H!v;;G8>bUWTH2=G-Aigc8yEKYD@3J!p_V?IuJPslh|%|l{~QAB7{UrTX<;^ +z)Bp(8V37|+t;ZsaFBQF%3&l_oBLmPdpoh#hQH^i7zIoqAt@3t|sJ7=Q1cs_VJXE?~ +zDV79Iz$izFk`yb2bt(`$H4i>=BMKHljh%^w@{ugT5W%3uu%N;C*kD3}2#5}5E}Fm3 +z|EA|YX;LXHzp9z12rCd+fZzp#ijK?%yrAeW4$!Fkx=60|Oiw0lTG)I!8>0*DgHh7l +z3B)U(e)=fN5p7maROOP}?f**%vmKJ4!@OYg|+GFZ_Mpu@5t +zxOY@pFj7t>3=-xDEc^+b+6hvH(E`zC?T4^(GVuT6;i9a!$M>BnN#|L^4q4|mHkiSJ +z05CVKHQ(;L7S1_5^Q6D%=**l1wKbc~!Gl(V%d=h266?C(Sp`s!hnc1lh(6->=O@rD!u2u+a{7;HEMTx +zUns$^oj8tW;i#{f1BR~ix +zG#D|2COnI+kN{%eyWQKiik%?0)(gK%OJJx%XZOt}b_SF|Ad{od={=UQ6|}!XZZEq! +z7~DPDK2GEV3?{m6*uJx9w?I`20RrEOL5LB96zmjU!n^ox5V-f0TMk}j5LpKhksIkl +zbx$6|ng-{X6F$P^Fvb^-fSPS?W(HzqK?l{6K$dqqQV%&@ieOsF4ve1=j=B^D#g}l@<)I)p +zB7mlSgTk}`5poFY#v$K6mh+y$s=6)+{02V2GmxVNDI{=p~a!koJeQPK1rOcg*Dx;_(HgfGm${SE=CuPda$mWCZ_4Ca06&_iSJpA|{ +zl`aTuz$@q-D@eh>Hf)3f&`G~^-ea@J%pco=4)WZgYH#bAeuCEMgec}7M0(T&roMX4 +zX0sV+2tnstu)|SPXBQ1{Nd1JQC4rj@-u&0iCoivg>fsMAUP}Nrp1@-Wjg>lh3KbAZ +zx);2!wsh}vXEYi_WO*HAkJMUR18Bf2X#?nCka`qUlOMvwfas1!F;JnXd_=Mj<3spD +z00hr|+vTG7XFU1%12hC$@G90pjFS)}aG(K#g|jm+`p1#ehI$?HC7k>|o-q~$e`LC`yfh%sTcY)|CbMyjMB@fgY=5HP!Z(f>bo0&@z*15Md@extv0YW&Aoe*Qg1BM;2L7+DCF@Mb+yEYV(pf?_dhctnNsGOuFjRk%h +z@UlD&!TAWbdEX2|bk)CmR1lgVIe{gNT+Orr=x|?jdU6)R8VGF0BZ!U+AcNxw0y>%1 +zlY7i{o8g{E@$5vzN)sW?2Bd(-`x6G3KC8P7{`If|HOhbz-t}c2#nN}_0h9w{kq*Z@ +z!+llzPOU=&ICu){#syL^u@w;z@RD~HlBbSr0?3SqqEoi0aS@4lVOUrGiMBb=Z)K5O +z+t34*Bhbjv+4zEFkm)cp6dr85yirRcN+7TuBjX|)F&sl31oQgB4PBe|dmW?*3NNKV +zX`EN5p*jC+(ArV^p|Q +zFpOqs0F~^FO+3423Nk{V(ostVI7vYYXi`H8MK_(mhTbC#AT%+^%Impa&}6?p`h`Nv +zebTf#>DeyfaNIx*Kw=-Z!x|BQjYG(TpjNprJdFc}3faZBG7y656`JlP4R~Ov{MP+qX4lI~asqyoWXq+rE9Soqu(P1=w +zVfd`$F^&Mh#t3>LM*|>+mr}t~z2B5ihX{t=Iv%(v2WL%Q+0R?}NP*#k&J8vD3lQcA +zEqhRuJR!UG4nmdP{Q&b<+0n9$M$9K8G=Gecc>n^PI0|Pp0C8-F2ZEf@ePE{;#0o7i +zftV^rafwv`$jAmpkU303fns1CL|{m!U{AG4W-k3bCqEeEl|8qzK)SkwNfsSR!(3qo +zv$w_fzHD=km7 +z>?}YX(*}YA)Gey7;I+^%fEf%l>xk^WDp<5kLjxqS1Fa(gXh%1KfUonmrE~uQb*vOA +z(a-9Z40BUi*a+CCZZCe+Z_|wIonv2~=c^%EPsT*fdd+?U@p1i@SN) +z8hc1CNC>LEKbxphDA+D_zd>6&Y3=#D>_5L-3Lb#OW^|1KBm`QJ0)d7+yP{fbL!{`c +zg69k8cDh&2H_I7M6dWsZ62Js#lK=#rt%`<4GoT{UiYlNGCSN~&swWow62(3oGI#gu +zzwnL)6aWO)jRL^J1}uRP)pzp6n#Q51k_0i#T0jUzC#^ZHyN_k$Y!nEP_x7-k2VekG +z*D4|H4#bZFY=|H=QCfvHF+t13%mdWI6ANHrUrA-VA#=Y)Ket|f(dGdNq_7U*5dhfO +zj52^yP3zvh{ksg%!|0dyT(_|5NAtAYjUo{0dfkGH9V6Qb%~41}Py^FDWryA_ +z+5GTEhhI;tLxCDwj3V^A-k<>(a_$k!!5z938Bljay=hS^3`l5HTZC4n?|2sM&AgYa +zx3BaRV=MucLhL8*clGne%j~|^_K!0j{U1+W*e?MEU|}ngBLE0t00C&Cj%gq5QAkwt +zC1uE%xde1tv8FBi(#tOTdf)tWhAd1}D?`Bo``77$TKpbppoSrt6qCBsVpeL0k;hHkz)=Am$u-DY4ry^vgE-5AIsST!Q +zUfH~gwgH@DkA +z-l0lICh-tdQ_v7FB^hODap9!yjKPevU}*P}NBg?RV~azLsU1cpHUX8sShWr4jYnoM +zhdi=3rLlL?ZPWn_^dJLq=wmS4=g2F3=dPp1*GmdiV>F-*nL?Rl{L|Ll{$uZ%zx9+{ +z*H>Or3DKkwQnVT0=Q!ijN-q5p$7$DG_AmdCvHk@dKM{x6>$_1v&ywBM)FLwi4A$p5(EavKd8OaO(lk4IxY$pd{N!| +ze{ex}^&;w-pa|fi5s(PM1_2>O%9e0#kfCL%!8>&n`7zRj* +z2%?1|0!uEeyNRo^8|ILL6(=>kl@*(E#w&Tp%Q@-Qobg6=9W{+{l%YXDD1^)o-(Yn3 +z`m*1)NQgr9wgHeAIKFCvnV${s9o;qW;3n(@5djwqTFQ2w0PG8L6)K4DXq9a2Q8GK#TBHrtDZ5UL%~WS1j_L1D&Z;qBL5q)RejC?csO(#?F-W +zv#eImp#ee?x4cRF)vlU8*tqj1vI&jdB1SH+mzyJ$S~EYTw$^KDt<(bp7CNzb_&b@= +zh#-YSFZXJMs}De+w7=tsGKiFf++yCrx*G?cN*{<2>N;+CzIVK`Xz0oJtd6KMzZ*Y^ +zuj7q|*L|tI>ao1;(fq1c-1H_x$U%b$A8lt0_HX;T%?`8)3Kf5HZ;c}aDL_Cr0m?lft5COE2?Xug}=X7&3A|Qm4$;_t*7sFj^x$L`-|AId_V4;CeU^0^i +zbNHl<<iq4Df;qh@y;=woKM7`!m?p@3K{U +z>ZSBtJ=9$lzm8HVB&P96{Pm(g|0(^=LReSlWJ}OM;!MsEnf`{!#pRY~iSEZo$sYVe +z(m#+F*nL~-p|@;$`E?p=bpV8rKJ5gCws1_Mtqf4Um{vo|1TRzn(Ko)FveZz(E@Fum@UuAg^`CS2P(3 +zMUw^pamX}iFt$~3$#fS25b*6YyWG4uo_@aQwOtcynRZS5_6nI%o*wHi7*UsmA(}EG +zE^1w8@4V|v?TF)RX5JbgsWhr5E;%F=1|i((y1sqA7y^O3L;d^9XKkDO*;oA?SV=zb +zgW13N()?A6vMPX3Xj{M9wsZ-1R;Omr^xkHtn`Y%#UI%}G@@TaaBw^g|-z3~N@+@B7yJMuG~XVt`O&ZY;16P;pf*8CcgC2H|+E`et-_ +z@ACV=K?sf64u5j~E;FgJ1Pvsqt+m#tFxux+YMV{K71i+c2Op@rKM9lTc81|CTq>E?gTg(;f;&0dv|%# +zDR=<(#(d89Crr!+s3F+(+e+UdMs6By!urLVsR>C0}l>B;BcBwIfLv$f&9gFV#}^kXn^=+ +zOviFiwLG*{LbW10$Ej&aZ}&4IU?Y0S15OWks@{`JSP(gX&~k5BWQ>J1o8uOq%nFA= +zm{zr|&VmEO@VVcqTm=>+NJ1!d841sk7En4Zr44vRMX6*eWKh&}-;Myl^=>RW)n>qf +zX}_#f`-c^w0nE!zb9enJAI!iWL>FF_CAbbQ?$P_`0qw6ikD3$!un;-q0ekq4uI2_pbZPpJTXl4dU2sG&vnCc*?bY-PuOe8RY +zMs;-iBs4(7RLqzj_8c7NpD4fb;u|)mEC8|Aq&AjPgI`4_NF5R&KP1@SuXU#-eP%Jb +z1OW4}2P_C^0AIKFS2!RpK2rF_IzPOa#Dm=G{Eo0Oh*4WBZ_MFS +z2Zm++OKWd7_fn7`mQ;2QX>8C01PUIoX@N+*-^d3b-h`WUlj4jp<94_c#LfWO(9>0Y +zU$mR=DVRXVghzZGKXYK{BQ&~UR6tu +zz_{>c^W(RE$ouF4(B}?{@9Ysd9XR9<3qZqERq_u!0N#Wbi(4elJ*(Y^MtgwYYKuNf +zDHuRl^Q^|+`F`=h*jQR#)V7RJK+C4=9olSn9$>#4tg*N=)&BH!Ruu~(DG@M@vKBS_ +zXaC|)F?CRE|BSXtM;IEQ^7N#x&1BOSfLdwU)LFtF%>}>VZP?0z2!%rc4G3iw1Qogi +z{CJ%5!|o}y0ujm{<#b=0$Grn$a_{-={{GKBRW88-f@{;NLu;SSAxNs7I1CVp1O?kO +zVaF=t201km2))8-xqZ8T?4R*>tMChZB-b_yx~-C!>v8pso_|ljYbgwZNUXl_j-~B! +zTZfyn`oMzq4DjA-f8L0Vz==jS4ca{RM+E{y3~_du_E~8Sdq9ZHdbpL{JHr=&4m%t; +zCvyN;*8ZKbaz}7L=*E(DhNKJH8AGz#2i8<(&P@z$5!Z;?(vB +zF1!z$4oDaw8%DX05P&g;s`h=Eb+!l`0A+vFZE5c~fX)A0|2;pZOYinhWLHA-GmiV` +zKmJgTI5dD~%Q9yD-VE1JuCmpuw$0VBBw0Kyow``RR#_noF&UAVzw521{=v$1zvlZ_ +zF#gKrM!S~&c}H%20N_h66F>jGe&krqQVIO+^)?0;zT<7! +zb)QIVqZ6b`R-V>T1Y^Q*HhfQi)#@tXfDoz%`)fY7^NtJpHUGSSyKn8Q+j*%~#riK_ +zBYf)Hwj!DaQP8UZ3C +z%}P%xJ?o>hX1{W(==M{GJhu2x{6~fzyFJJL;J`~8OAkEhKmPa){oQ2@fPmJP^{s4o +z?8rebqxSb9kN~4&Njo+`Fr+RZ``OKq^T+JJu+{YG?=m?Z(FzMd33KP$t~~UX;OTu% +zrsY11nH<|!&o?~&@bHP9AD6uD`fltUKd+P+?02YTcKPT3!{BX6&sBkxQ1_!a2ZsE> +z7rx_xw_#(^K%1~<1MKbsMaix)#F(;k@`8a1L`1+si)54Juy@K4>+5!{GT_)q**4L( +zoDlX+4dXbrYTfd0|FmF1vmi%o_;q!n-~lOHjtojy!4ObLnO$^)!0dh)`>MYv=Pl_3 +zbMFg!&$TUI^*Ph)b)7H)G|D?|)fc8MJ%7r{Cuhv=H7xE2e;(ALfz(S*`WKs&M?8O3cp(kop9 +z6G}sm3Wd_q94Mi{Qj(yuhd?^UxbRiY7rF{JUZS#I(+vj%6!J?}&Q&72$?QCvnw5&O +zpsP!)mj*6N+7p%RsS7lg;m*(9#hz{Ty>CZvKz%N{N4ju8dEjkmDS-nT2Csf8O;G!; +zdvC2ZX@oQswr=&M*s~Iq3pH-=tS|E1B$=- +zh?TUy@U32HM=`s +zc2&5B39LdPhA^zc)eB#aMO$0x@y)8e7d$Op4HIg<%9RT^cdw=T1c()$$mKrfa$MuY +zt=_xg44JDM64O#QoSL^78bG783{wwop?>kd9KEve#M?7{3_waKyR%kPGHE3O-i8L9zyAK`&);A9_x&?&zV@73S8&;CpcX`13?|9X +z`Nt<$Ev&oiT<|n;o!@oa>~10gy08aXNZ-4E<4&^Yd)SYB*`{arT39T#w!M(m^$;nL +zV41M2==~Xb)}d3-vo8Ig-}wJ;pR2zg?Y~@X^e?Zp@ejND2VBrd^r*=~NQ^QKMOiSs +z4I4p!pi1|>NCjdQlHdZhD~I6UDJ1wyJFkB};@!{qy7+4_fq@01#cIa2IXr>eG+Pj9 +zQp=rK-S3^Z`TSWn`%aSkliHrRTle$3F`vN_7LZ_xGbKJDvP5)*e$Vt@(e)Sjh6lxX +z^OGvGA>k{<)s$j}1Hv1DI6&f?-~+9@Dk-)evO0uhgvsoBVB^FD?}`1s0NnS*MOI}G +zFGfco1(fIshQjQhyE<*sO1km+31<-uYaWds3I^$VZ^ie9f? +zt7VyJ0Ferlnyl;uvMK8!^o&VfWQV3wnR_EPLRla%_S?Q{V<7P1P&KwueAHQPxb`#I +z>CVjM4+!32^?k*htNl3(I$;wSvd7f9S-1)|?12e=Cw8pBD9WdyQ9hcP-G<7RSNfIQ +z3-;QjXsIu_0X@)mqg?3DkeCY-61|0pA)GHrFJE#*^FC}OCf*pwTw?Npa&3~f9a?)R +zRt6#4@lEv?qp6;%u~j)Z+S!Vkpe&}SD6nuf6f{HdiVr960}29%^tA^kX#HxtK+k0e +zs62%jR{BXHMV;kAhx2;wa*Qk+Nb=N$gX}zTLwvSqU-;I=K^hWR2)RWEOX#4yM8DE;b9_UAZ6mbrlQ(0BauO$z@Bp-KcDF +zBe38i(U=qTLQq=!tr07pE<0g`%v}2m_PiMz0w*Bqsitu{O1g(^lp20}1)H+Y`g5fZ*Z4&@YvHJ5=kakCZv+Yk4%l2tZ+R#P89Ro| +zR41M$*yha~m>M6;_C&+CE;_u!7*|vk4Hbo(A5gTGmkFTNu+5W+51^@K=KgpD8vE(u +zZ@~^CAVG_RnP0yhvs+{t%8HobmL9InMTot&Trc>_bl<5^-%1hBfrFuH#peagCMa}T +zf&)r0EWl9k^S|y479`{b%ckxS0bVMegl?ys^*J=eF1_Fm5=fJ4JFuoqyT*!Wd%&Tg +zD5$T!R2t>|&e;hZG#&Cl3L4|3B!CfmK9$x{3H=s)LvZ&)xu-8)M7Dd@hSJBmg<7IKl=briL#VJCv1 +zai)wm=+yQ5$GT9`?Jf#F;6e@$M== +z2M!`1L7jcHJJ++PWm&KAOuA^fI3t0PgHf_f-x9o{Qdk3O0P%PNcpVAP9~2v^@oz>ELbio#F`Kvh?U +zm~gllm@u5`$-#*Nmmf(kfTe<)Eh(e`iU6r5=IIfg0=dShFfI<~>&0FK07O_B@&yxx +z-A^=gkEO0qD_va(ikl;#&E_F|T?kc56AiybLJ1upZ6Q#3J}zQBBuiKWG`86s6lKf= +zK!t_Pt4MLhnv;PvJe1cXyk3S+#d~ywi +z$Qtf9`~@aDD08LvY-kr=jbL7lY}Ad0opGXkTm{9ZLD08n4u)^mkI?C}?P|%o_ +zmEInMw#vcbr_V%8V7F4*2p|p+pnAvy({N!C0{XcB;y>4Xf597qb^B)Sg^1r(5)y_Wn`sk2@2J?GxTn1 +z3qQd>TEuqHukNMKH*`P&1Q^FXh{GNzVg!c~0wMy(<`2AdcGiiB>cNnRh%kqZijEY4 +zZHcAi35kc=;}b3j<&>s+FakiJ8IO!@!R{*9paBF^+u$SffTr^4`Ak#vYfBG4JeQl; +z4FUzcb@*3?LINK}9|Vw;9a^08j2@k_#fTxw5Jn`hVQgrZc%ouk53ME|)#4r0N=UU! +z00aA?YA!3qupv6^0x>x!A6NIOKFK|XZ-vK6)SsVlI`J_O2yhdN;P5Ay*oQ+10R*O& +zEB@n+jrNa|!}HM*A!awlH(CgLqTm?ZbW24SevQzi5y5b6E<1V$UBz8UApqB0f>kW_ +zWuIZ3hGmZ*EZklW`6jp^u!gq}|1ctuz+>oz0I1rvyXdaE--(Hl1r6M9ozU@6)zv +z=#*jKB*;p(I35CTS +z?o$^b(5`sKhFD0lkRSsx3d5)>2cY@Uv&?^bLLQHSKm(@{j0L|X25}TI5Lol%nY8ue +z9r8pBuu#-SlpC$6x=L&rr9yb|*r&RfrUInAgk{Ab1_6eLG!G&W80ZUxl^czM&Vfd<|d}0WliR<+y^okYF?rB!;jDArPu4I2`vJ8oBZq#stD=w!w|2!Hs|SVHXz=gAS^8 +zdZ|<@RVGAPP`bx~AgU%^H5>&EzqiCVGL}?|I-qR^^^xTCZNt`MXI}@e +zkBh%M5dvxKMjQlOlOi72ctLAD!U(0B?-6DK@x+BJ8!kKBC=Yf+*Q4>qkGlE!kEpMe +zy4Emyg=iOUcxUduANUUax6npJhsMJ9+=Ku4f3{t03+L8DFuNijDho{Wp7zqZ}hRG>UhyAtNL%-rTj +zhcFD_CaQn9Zg!U~NPxg1zC1eqc5T?$jxGoQEn?NdZr1d;!AHgr`}b6Q!No#crHYJY +z2;ur!O%y<$z14@4JtBysj4D)JHz4DNFcOyysU=G1rcqjX$A(6AKV%qEd--Ge_QmA7 +zrd?PE0+qhd=pZyI+1zYdPN2N7kJPt5@&9`%Ul#gf>hB&HP$0cKN} +zT~xd(AR*E=Eg4e%ySw-?gEVB0CT4U@(ADXH|5X!`h~DD0v;~m7Q_ho +zH$$KkgRnrz0&ixoZC&Rw4VdfLSJ;DHXgiRdwbnpo#^%>tC{Z-91_&0Fv7dT`^Xo6z +zwci$AqL%==h$p$Hzn=gQi|hiRnD$%y^N(Eq)9Lef)}isjx&V)53?Vj-wh6WZtwkHk +zDbbfp1P)6Q$o`kZ;43oRea$Y`7A;B!V_Ou#aH+u=ZOn6EgNg+ +zSsK3o#Xm2nf211~4#<+r2S68sHx2j+@^3!OD|+XYwsq(rzzXdZcJ+$@ +zS{gRwn%XrQ{`=JPW4!)OLa;%jwAA1p)LHYr&Iqq9iw$VAM4hKBDM5ii8E-&kX(J>F +z3G^e{vR! +zOE4uJei^s);XDcP-p+TUIv$zil#tI>c7C0b6QrbVt-E9$lthK!8wy~zcLVh75 +z#&Xy?fS5x*yee<^Y^aEWoN)rm28}W?AS~uFq%ur)rCHEgYs*AD9o#O-^*elA$LSS? +zMuzo=1e#%ifJmV>o8s>zVkgj-$gl@tpbHC`=I(0oYEh&=M2`h=vbwz6e(Q0|;@)m8 +zCrBEuQZbvOX-8+<{CC_pPi+zV1#vNWbE+T$1}5eAjbGY1vEYO*nz!b8RTq3!< +zKnI8*5Da{q<&)J_yW9z)Bf4JH*iY0m!JV;+ItU2ZNFW0N#tp$l2nMd;HN1qsd19UE +z<$S5V0cKWh51QubPCs}?18CR2UWTF5-!y6V$`Dmoi8ti}KP~_Wop4T&zo~b%LP|46 +zZISScS^hsC^=J4#+(rOkA_iyd>=7^k{u|HZD<~mz)rB_h1!w0tKQsS!K%z`Fu!n+* +z$&XgWdQNKqB4!Yg-6Tf{zeim121AJ#u6Lw+E$?fLQU`9aR*+ZJgnpsR#TW57eiP?V +zMHKe<*`oz6;_tD7CiJ86(0#_w?Nixp$nPY<&|+LEV)=PMiIh5+K!7ahQ{&GKH}&n_ +z{Qg+^Mtg4n`(bwl)5F|dq3#VhzxOu_)8h)}~6Du^Q#$Zeg)K6W`{uPM13 +zWFIw1BIMbh^HMu3AtZDKB;#HMPj@K0RacA +z_$vMl3t$`p8XjDLG8Pdaw9zN^+@$DkM{F0d2fGme8QV$#m`x62M1u08V9SL3Cb^)j +z;rqXL?Bq!R@2pmOq6AHA3SwR`E&wzFcrakXLj?-NSc)_R4Wgm3GsWLnWnh0;ZLeQr +z2QC0da!@L!EO=gCAk|R2#Et>PK{CkJ)=vm?Bu8)n!z2kdlH7?>_{LHgGN9o@K@Pbi +zYJ&*_s=+=zU)xPLJF$L-8@n~)`I{z@2B)@*&f!Y4>_(?BB&%WQo6{fywsVxWp6(IC +zQRhJHD)nSC|4RO5yHI|C2y8_2f6d#d+5!PoKp;4?%GlbFnP+!%|NAp1L^D_bk~3Ht +zCCUtV0$eCA&;u&(Jr7Dd^=;=CV1^Ld8vor#sqsPmQ@OcNsJ(f>_$jIYbp&u=g7HOA +zEuhiB;t&3Y@tu<<=JVa$DX3l8gUG!s`MOSp!B7LN0`$TvE?h;gpgY2(c+_rX6n6yB +zLL>4T*Zi +zKkXp@@Ojnd>na{#gK%Ld!0#vbXb6kzB6o`IPF7OuvRNU7d9f{170ITBXqFVu3Imm=I9^>XRCeZ?cj`{l|XO +z{rz6~A!uzlluj{_O;tk{<9lkSQOf~^FzJL4{v9TjdX;jUiMPhe$?#v7htcahQU=Iu +z06+sO#u^YH3<*0R0Q`+h+&j72rLEKa-(H<6ZX?-&%rY-#J^elbTi#txz_6pV15U`s +z_r?x|l~wYDRg47MCiRzvlUIkY+?O@|^Faax3`htt?g&NHAP_)6e%lkoKluvx4Ii|$ +zml(4iSN7^EJCJ1#mU+oLVv>-*i&XEyOv4UCAVn~8!h&q7!mnNyI7x!5vI{4}_!|m0 +zw)=#$Yd_T30~Gv*DikDug!t+!s#mY^fAb+1(u6a6b&c8~GL|VJd!rjc(s35s)EX|3 +zxle{96d_M<&Kt_wf|`VD8=QG(GI~{4_>O)C7=U`M)_5xgA39nO1C_e-_iL<^!gM8A053S*&nw|PeV +z%UkyU`fgvj5s7VNy3O@{3T)G4A=A&=TBEkc;?e>qco`+*n~8Ls +z2b*MX=B>xV+k068#J@wp=uJ!%kb?j*CN}^ZCJb1xAwP8+f!eEAnAz?4WY;wP%g_1N +zb0=)tZ`-b5NGJ^ev#q-{$%a(EWT(0-i8*Lxo|FKD)f$7#nBL^tO_fir^;&ssK=>CC +z;2s1FIEcW+8kQlz=p?vkz#rxz@IG)2_vNdt{n&GU|A!tW_Kw@sC81}JdUDp)EfIxP +zpp+!<^F-XCMpkz0NYUB&XdSxC$|u6tmPz(ZHuv_@)U&fl5I=%M1QG!}iDfo<5}|1v_EXMn(n}T1j?Odx}Ci +zkZx`Xrl^g?I}r-kh7-Ho(B++Lk+bDY@V5~#VZ(uoD%=JQ#wtNW0T_@CKE%5&qii+62xZ!hSM?X&Re_tN-9(|<9xXcVxm^j3PHlgZi!^*80sZ}{;Hr^4A=3SZd| +z`g|e&!6f>**(5~!cEq4|0UrSvy_67;Frc7YKtMtRD2VtAD;CN7Q|Z3EMnBq-{Cba< +z)+;T?gL$r|_r-?vGGWqzgw_`ks5&E)RURfm%Y=>fK}Sf}%p8 +z#0pQBc9l`4iA-HK{3$JO7;yT<8E4+ubmC-I`GpSo)fxvt1L(XgM2u}p7?C@zApYta +z;?E^T)KEP!0EWgn;bZXi(8W1Y|&m0!n1zMt2+|AfO_kF@XqdNch>~@3p*|0GQ7cBymS*1`@E97wo +z*P+IA8a|F6MK>gL9cUoeQA;IXNvz-(SrD{LA&f29jPR;a7R&fI{0A7*z<1)8&<{{Y +zqZ)xiIVEfJhVWYA2-K|y!i1cCKc(tKX&r?W67>_<2ti;GDTq;Rn`0iJ6$-PMM^G1K +znfT9yEz@3|xtSM`fMSveJV)qPwZ@0};smp<6_98_KWwbPg*mE$Nn|mMWRmlbwqxn3 +zik>7IC=sDRel`o{$q_@7K}`aAZ$4oOkkIpl()@$Uy0h|MPEw-+hGSN4DaGX)akD}5 +zMCm~dQrJKg-*c>$ +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 +J{D03|0RTPdajF0S + +diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +deleted file mode 100644 +index 26357af1e557f992d58827ada472bb089488186b..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +Hc$@`M~KZnoq-p=@8GNk~@#drM4m-V&Hlez2-`wv>cW +z5+@1Cs-Fv*me1R`>EB35+9NfeKS?8cy-*JlILSfJ%}>?nbh~j^Nz|zMwHqsHB&l;# +zoknXdzU>dBuSE@C}z}jk$#dCMN$0G +z+232~haKGje^E5H0@%P!Cjd9wl|_{YG`%sFBTG$Gv*yVhn%bK>8Xxtwfj(VmtV&(0 +zKPnD}ZQF(s|37<-F6?$8i;1)~|8F|EEZjn}2mrFB}OE&CJZq%*@R8GrsXNGcz+Y+i%Rw7US+o +z2Qyt2QT6|4S6BD$nO^WQp!O@1WMo#& +zFPCIyY^6+POliSX#)UGsPagMD%4&^=(pVZ=ENhve%giv8S}e&+Wmsl98Cz+p@y!~x +zZO0=?*ZY3V7nIw!HMVWrHh-=0%eHOr4%>DQ8&f^3?ow9@9p`&x3){9slBDPR5y+^_ +zsGdTPZQHhWw6=E-caP08+qP|uZF{C!u8OG4!2f^Nux&FO+jUS1VBhD8(yCQf!nE1ox_SimlS5XVQzxCpd!ifmLC +zb%k?r23V&ptb=pQ5xLG7XPg$TKrvEIEy*!r6thZ>4e4?KiztM0gco5(juUhPCE*lv +zLyn`>FosX?WuD&|(`ODw%coic4d@zTF=7#N1V#{x5DSs(BDchCjolnOhCAUHY=PSX +z%ls%fCtgt7XLAK^*<=?EVmqJ_FX0n`af}_cm0t&O3%>(KIwgxz>L2)P)2SKF> +zDsCugkXOK#!6ZPxt&4y(AvRzbfnESQjnF(6nzNvNB((Q{eig)5GC-v;m3mgHD+Q2t +z0nl1I3t$51-*(0sSrkB0ct$F9#iD&1K!N}^z?17daAa0q9)EV`ZWkpIM$ynIYg-pS +z>sN+=u@2qBLI5@0jf(t`X~;G0X-esL1-Ndk4=TO +zgW<}q(3%QiH3-|eVSr4r833&TGK&GMTm8kZkTv1S0AB^T58w{~KK{?6t|%1YV2=V2 +zS!Q^J~pjemGJ +zzE4yEjZtj4Om#reU^abtBq5rhoBNM) +zd`&O!W6%4U*!5^%V?R4&6jXxtl2CeSI8g;lAz%yy2la3!hz!3?n!~E?%WV^S_JwRD +zd@PmxC#u9$iK3UF>e^CNOVqScit3=I4ZcK9J5Z$n1t0~W1ds|@%2XDBEd)(7Gc1p7 +zaR2z&5$<1%w4Tv+hVwPZ%u*_>NrVsqio?JU=jOs~JHpK$4d;)9@Pv*L&ijnJ`yf{f +zF$aQN2PSquY``DBr0Bjo98wwEpcIf2gE8NQr2GQFCQPB*|o6NVfV2mErx$7_h% +zD>akuaf8{%n1~)P61M}gU9%O{;`7pK+Tu&T5Tdy5K@PuA +zgua(FFaS~%QKUq{K^uT`7nomsqOEng>EL15xuBeHDq;=X7yzW;AmGqJ03rYrjj{gj +zM_udx(qkPNM9}jKF@&c9z2YTUd^Rpv!nr0y83s}pq1%}2`&AR4*ZqahnFV6o5yCD* +zRTWWGL$2VlxP>o~(;hU9u;;Z9C1?WBU@4?l2{SE(cYp{@zi|s@Uj;|k;Uy_kSOn1o +zq&hU8i+?|h_uh_Qzl=N@AqHH9Oa_Hj#jO%y0s&_LO3}9zv;eG=#5qMs7~oNLc@y36 +z{xUkIeUqo2{yRP3;);e~KtO=Qz#bF`lI!h$W&Q0hZ1~4tu2LhsMg&x2RA0~Rz1SGT +zjv$_t|2%Iy@LICs +zNAyKC8`_q}oB)stgh^B8?d!8i7leH2YXUmwR8x(L5)r~Ty0FVJW{D42e +z-w!zoPy;1WM3T~i^*#-Ys4sjEW?P){%D?s7KFSte|7=eUv+~z)2pi$P9pG0V0Cz?} +zeh56{oGglDC`n@iu!7!R5~%E;vOs|z83OSF<%Gxul(K2*<@(E@^~H)h+9CEaF~Oc0mU??-22bTFuL+auLAx3D +zGKez~Nl???gtKPdX}RNt+AwiGEz(y(vGd?KB+-^~AgxdE1%C%NPDP5MNO=R%2(o5q +zC|l1*W?P^4<_5p;t%-BdsZ|;eoMZ&HXT$&f&>jyjNr6)drX#{j(c9Y#&Vb4SW#|FD +zt`j2XLJS1#a8q!!eG9;~e%O10L!3CwdV(0jFo7^a{Fy`L&-HnB +zAzsrS9~JmB`ARrj0kau~N`K7G%*i`^z3r*#;YZqRvAzh3-46s0TXzBxHK_29f`5RZ +zfsa#)Vagkb_zK*T&EoB8S}e=#8~jy)1;M=WZFkn}C(DCM+jb8>v=3aRJ#p8x-4mr= +zgFghn1^+)FdeDfdlN>9+P=yu*Wu-a(xV~}w`#trdYYS3-Xai7gLL{ObP_7slMK4$b +zzyfgS?Dit82OvcbqJ)7*Mu4C|3&8y!*KU|YA2d8*1LRlT8!uK(Zu8Bp*tWPVq|-?h +zjLCHQV{2}@*%DIWV1!)5rra=kEf*umS~ZL@)th +z5YlNxUmqw@!Y@<((${swz3)xvv;z#j<^Lh%N^!vj;0!w3J39e{8PWjAkuy(l4L;Ei +z1+Xx*_JRTSO}qIsj)sk4KoqD9?sqk%VF&Xku0aTa93K1V0HWeY2Vcm~?aX&TL^*t5 +z$Mk?t4u-Qj10ftx2m=bR6x(=``hD;Z!Y(0&A#A(^jlYE=+L`G?;WEjl9p{;gPV$xQ +zw`8qSoiXV4<_CB@M2RG)B^JqAOMvjh%6o$PHV4;c(YL(^Y`rtA7Qms3W5!)~bG5a@ +zMZ0Y?sJXy|xHK25tg&lHPBs(WGjb?omEfkfe*D#Rv^Dh!{$coOsz4FuI5t@TOqwV_ +zG+s0!B-)ie&;oE4r+0QnEreNwT;Sy@d^wlcEk#76=q7CK3AfAy9l$bhuD#MT_Jml# +zHEY70W|>-l*T7JZ&$RYA?Im|KewTTM2JWVdxpY{JxY*u}3wa9s8ny#~f(!^j+0(<43^Og8@wE&_1Y(9MK_KkHf+va%qh@ +zJr>F8r&FX+BWb}10Hhp=hz6*I>jMRqKxI(8 +zkbpsZv=*=yU<~MgB50h4Is|7w4f_|+Iswsk%(VrDdE;($(>u2Cbbp-1o^h7KWrF~AWCA+q9m7mx({Zufg9Umy@*sRjBO@Z;EFNkx&#=c2FrOf}E~h#tn1< +z3owpA&O$hV41@%<9z>iU*4b7j&|0HZcSQ+2DQ@4xNM!}8fL2odlAlMfd?SRmMjlcR +zM1xt$xC=0$Q87bg8#i4+W#Qiel}zE_xD!SR9}LK*mXrZUwJV{u*0avGI18tSt)cz$ +z@XL+h8xcOdt)*M+ksrUq^bEd!O;tvDT5$e6+r=0BJp=(cQHus#j362e^)zsOthhc! +zn4=8W=cC0l5_n+{MlRcbo5r4F72N#3@Q?iF9Xvp@A?7kh=))_-7;LqIg0ax914jCDqlnRIJmb+RJFoY1%RmXfv56! +zU^-1aYbfQjM8y(CA@$fjCYRAk!3%g#KxfqX+j_*@wmJ|_Vi!!l5IlP_WLvlM))5|2 +zwg|JaP7;p=ZxB=!a3%XOgIVoz??oz`o?aAjrhXrG&ylhvmMo%*0;;NwWTFUd4SHQQ +zl_5Q#2Oxv=abm-dSEN4DbqVkRaOSPxum&{d(=(2@cuc-|CBqdTVPEk3`45@@+!Buq+U5L=_iD{6_IbJt)@$=P) +zJ0b;28^B9n405r+T1)tvD0Q;nT!_cZya@dw$Wkz<`vf)ImWE^(xuO&oT?D_uKf><2 +zL|Q>2fYi}ao?K<|e#}wgl7g2Mr0GVrl)@R1@_@>J5GObsE@J`geIq!rJ~H0RqxB3? +zByQ+!lmZQ5&yV6JClo0k)?|xC#WR|!dZH+xXmHW^E&Trj8zBCK!9^5+43SVSndK=9 +zDxeI7+?vk!dVmn!>k9gbIdB6=hl-r??amQZA`15E@a&gmp)s%-SejWPg-bMbwv1H= +z&qe2JdGjvReinjFsp=Kek%Aj4sX+SF7vS%OpaDYOP{=+tN$LQx04x9ll11eTB0N3}l9Z8~BNgkU^9*r<&#%K^hnPiEvvC_ey4S<6Tq=^o7`+)`+ +zpWgD8V8AVJc}t*>in@`dDYz0BGAP2z-yQbkAazxWLWmW^3DE;+Lg>b*hfnOcJj8~a +z_Vg^oG$MUtf6%}sM(dkVY%F+1s5QbA2N-VE)6Jz#(4Y+ru&iD_E|D)%rDyr5KRmZ` +zj3WJj(4h#leg=Ge*NgT5Dg93~o28xL)6m^Orlfv`` +zcY9FTv4SZFDCVf(xE +z;v?cs@E3-H55_Zw+3?)`w@iTsy-|M4wp6Vwib)};NJS%|Om+~@#;M1*rU0bAlO_ng +zo@hn@7!F@7P}~ub^cZvLhasR`K=*MuHG+sYAoI?YvoqEtbVyc3AP)TOM3`|x6;Q<+ +z4<)4W5({F14-B{RqV_|;2_CX2=5}OX)Vru>5zfs~LNQXL;agKx8DdN+L@|aw)HS{n +z-8{<)yrbxb!%bjV@hBK&uxlKc*ebe!G0qa<8r}RUO%rJe@Rebig2kOiP`f21^))T9 +zP^8SzbERA`So9FYrG0&1K%cc~5n3L+CP;(1Lg+W9D!7Re(riKO&9S!udEG+YN}$Qv +zSvrCT`ms=z81rFnG8FMRh*_Hqxe6|pUj^(^SR}x>87HiCe+10{vJgew!1J&u%7lmH +zap4m(4%SgnL5kW$O2bPQs6au1rBNNh6I`&6s|TLtR#QRdd5uMz3K9qdB7`;qjt3%@ +zvD;!hvs)K@L)|63S0NfIIitRZm?Kc3ybetKY^ys%m-`SUT=R!~h?(Lz$a!HhW$4wO +zcKness7LbejSNkS4|xb6N(8Bj%$RGCc~c~Og6XQ6GA|2E2C+H19B7;WS*P3nO{D{m +zx}>r}uVuvq&!E3I&T!Z5$;kTE2;a%b%)J_L`COt+tR`j1dj<2+!HGk{M^}dC-g^e}cR!Pr +z-mEgDsl0y?NYEDheG^OEUT>aj3QEpDGiBgW&O6TXMXjl0GE#Af-34w?*ZL_gP+@3C +zro~NtYt?oBHkPC#>VPx27JQ*@sJkQwJdj@k!r>I=m+}TP1O#{q%>EX(PF%nlZ3#nU +zO{N-f7l_-d5im``6iy>`?Ea$ESg|vVrfLuffs^di1AXZX$vB*jgFvyWrc9A=6A}Rt +z5ojbxbRvW;5jG0`vu`G${qCanr*@nUiP;lpEN0bJY&|ODwz}Dx|Hw^V(g>%SG%4>7 +z(rmg|G$rLuBBa7tG%{30%8wH%!{GG(viu7&nrJb%eCW&fh=I~PSwhz~jM{CQs` +z<%HRLi9KsTMFZuyvFlCfp*yuc`?)kQF_B)9UT}YMp-HV?2`Lu>4w}O(R`o7zARm=G +ztt}%ZNsDQm-wxo%8E1W#`t6dO%i+fmKsX*EpbOKlZ7bz~k%5qD^=fM12<#gGn1s@S+twx +z!Sou#z*j6|m-l4siQDNRImiF}9~Uyx4D9Ce^xl;_cU(N^efopKc{^F42d$gl%YLWt +zZ@9NDtmwk&f-$!wLy1_+gLmnU`0l`@uOAqMX@)SzzvhK9CH#7j)>Q`qN1#AdBl;pqk?ALF>osi(iA2&=%}J;_7FZ*2 +zzD*k@kg|R}o>E3(%Qm@*nKL8 +zj0y$Rb=MTtacDugH1FvF=aqT+8+>jFiG)KQstA)CJlZXV^9YQgP5tA)+tZ)j94gAC +zv@%Owvo1@&@edcdo}OWO>!{FVH}Ex;W$G$%4i_X0`3S2@FJ)xKrpWJ0anLn<}}2#IRKV{ +zBY}ymwib#?EuWkb5*fCzCo=xvmbU8nT9?!*roYo&+GT!r?Pgcl7RI56+W%hHZ;Fqy +zI$bKnBN6M;U~VYNfYwilK$x|znR7lLf!MAXTnZdL +zeGkk_)eR?;5v`^@QRgkm%%drF>c|!+Z@HUXWwXxv6J-46ZPg}!3J%CRfKu9H-aKbx +z@c75)cuiR^%J4QD!6}Abhe0^6;%?e{g}WTTjpNGB8aK}$ES}iy7LdAz4X@oEB&h>T +zCv7~RK#s5d+GbbyOh|Nw1F{}q7~9Re(#)PXUe@uniimGlz2GdloYX6w)B}eG$ndR_ +z5GwpE;R_FsoG|W6sE^LMGZjbS7$19Ew;6uVb~q#?77C|N)Zn3QZWGENSm&d%FmH_%ZA +zvkbJ>k8BqRvqX4)xcCQsJ`VAn6D$CBb)L2%G(hIb1zV?cSSW%ljVwK;rwJ*Rj_2ey +zj*nD!qqTs#E}Jx<7diM(btF>F{Q}IEn(;7eSgLT9_Apl3<3^L@QOpdSBy_9h* +zkN|fA!}!SnL`8VBu}qIcls3T)lz?YbB8_S0$rfWVYzhcfJdA>ZHt1BIzDt>pwuFI2 +ztLN2iK8xTCPCW5Mg*-665Wr;sL}n?XlQ1PMVXU9oTMkbBqH@aWIJZ$n91v27ea*tF +zhM91bDUL`aKvf_Z-%Z16A|R%4@wB?rO&v}BQGl~FjH4-%ccDNUont=)K|#n+Lofez +zEknVXLR!FwRR-7A{G+;)3Gu~+nKb|VnV$6wS+QslrU$PjQcakQf$U38YcV4t@;l*U +znzVpd&u!gTGktrT*HO%9>>G*F*=3D%GRDO_P;J}@t`elHWbvPf?|jhZK16O~fq_E} +zJBn-WWMTW10VO6QuIPt0JI(oSteKVw0+e$G)iujFE#SkY{eEcmGjqLz-IRIomp~Y+gPA`2gE^=R+pH +zWKS$8V9-orO`n)(jac4l-5k&W8d32529G+x10W34ZYugnvnd=2O|S>d(*qx|HM#1; +z_oT>(Emt*P{Fe<_pxPjrnNBBhl)eROQ{No{Pg@KiwTO=TspF!54ih%==xc{r{U +zsJ+zqnFF7*Y;H5=BA6zY(n@NEY(Fg2hP^Q9Qybb}Y;u6Vk_T1m^09$ev>-7+#F)%{ +z0x#@KOTZrx_LL|CzQl*4OTePafas +z7uVRIR!)tLHJxJMW({gOoYM^!E=4OoNoxw6u)Y0E>b;ly*rBMlfIv~t4kbK;-lll{b +zE(ix+%kSTK@c+use)QJq6YnxRy|bp%3)C$1rT=FNFSUb(NyHbHoWK#Jp)n&DwO!t+ +zL1$;@=>RZ4U^Ji$Utj=6fix)^P5+CFq~f^knH{U1`CWxeOWl4l@-q9GEUd#3QB#pd +z>OOkcQ|2C@KW+C^L)#Mp>mlI|Id5RDGvnvS&aQHI2YI5xR^B%AgD+ne&e3dU8bo!s +zPFN5l(#^tvLjzCIbC>CbEx#@^`kFYj&In* +z@XMwk8_+l~Pu7^DoI5bET}~-;B`15vB|sb#+7fiO45Wc&x3kX+vN#a-u3O;%L}DRy +zXHsk2Q1rcSxvwQ53qq9K<}q-3v3EjCdGuZ0DbBv@?%7lCym#xV_us$g(?ipq-#yj6 +z*lBW;1}h?-?5q2&z5a719Y6QEvBDD+Q~=v}k)Fu29J~h$=4cjh#d0TiDH|gLS3)<< +z0={gdC|0hF4I_7N%{d=EydGLRTxY5A|4af~4z%DtznTd(^ooHDBx!6%pcOf1O-V`y +zfHK5qsTq>U5U?K67jQbeT_%{-%3U;>yC<5G_p)h0? +zb5rK@FL~8P-7DUB;ri>}cFEd%!#V^RUIWaL){aeW?E3P#WOTB8df3H}L5daWBqq}s +zm#Tr08N5K#V9id%P{-f~YA}j*P5N6-f`5FSqX^;%30=SggjamBkIj3f&#syB*>oF8 +z1#791lqne5WEQz2GKa%}{Tt8UDJU1lSA}7Kh}w%Xfu=6hZ3M0Wm{kc5iDSO7G!Ogk +zdEL|3G|Nu$j#jX)Gv{1))@RkwmxvHy)VfHobbg@R`QZw3_JPUPA>SwutaL&?J?8ET +zG^Y@AHOu9lLv*HrCJSmvLsW!M1dUjn*mUb=S#}2d_&SGfkNfW6u6G6D0g;#HWa+U9 +zCJLV-Tk`4Rx)M7zi4hjrXvt_|SB36y)U`u|ae`-@pE%*t!t*2}WfB1jUEWa~v? +zbTZ^wL9=EgKotqxq3hrWor%FsxaO--L%8bdg?F{2B>{TfyWSN@aM!ghkV^^W^W&Q4Z1jq}Y(f8IQ&ga +z`kQfF+N}bOx5l1t?VXj3FOuy{%eOx`_*0)*bsVUplI%x7Dys; +zuDn}AEP@*D0N1Ri7FJR0V3_JWPYHL8I-@MII;+Ofg|Da^>aNHYGLcKmZl7l2B*_Oa +zL9L-pLv3KYc{)V1;7~&t!tUe{Cv83=Vef%*F~x>Z4R?*!6jE8P8z|~_)SbvZ!&C#4 +zo6Y)>9Z03b^*g1))LnzY_1Dpk#hCh$AL67g~#0bXE9i{QXU_7em3*YX$ +zBnMPM<7E5OyrFdyQX@zr0~p=!$09eK0^~@q$7%`RW9`bfP|OA3+!AI7uL^S_N^`E}d)_JqSb3 +zdNN)&_%7gslZOa$6`7BhLK0VpTqXn!*g1)au$u5(BdeJJ?leNB)@9iSpA>rXO`PxX +zZtQl&gYqdhP#ITil9ADPqLP)L;9j(B=9M47iZIGNgpX^UFpGvs^XLMCI%R+z|8v2{ +z$4T(1UQ2F|>WaEyR{-3cgWHo_VgLk9p$EMJPUSoK=$leVt`Z-d`p9I>vH*mNVRo91 +z7SX6oV~G~iqfH;QW#D(C?B=X#>-bLiFqO#% +z%(XLP%LYIudZSX}`+KvYKhFQh@i%GSU-}8tozxKq3I4HoG;t~)`Kp3yNxO8j_jsZ +z%2}>Z7K&x#M4o54DEy~+I=$ah3l>mF +zX-ph(iVfcV|FAYJ^X&n+bTpU>RGa5)LCwwKPCu-nv?4S3B?KTcJf7#7P(?F=Fy_Ez +znTb*BH4!Oh@dO5PHb+#BrLqYnQZl+ACLjE_G?ARNS!?;7yeN}(*Ie5oUl4TQNtXz1@qZ9vNJ%1rX{l2f>t +z9Li}gC%*a5UNA1}86T`}30D+2t^jYooUqA51Eik@H#ET`L_p|CP7mB4E{Zr!y~9yr +z)rGEDD&}L3Ts8-$GJqNMEYIZHDwoq(w8WzQf1Xy&_2qYK{^C=2BQVpzqkFBaz-@dEyH77nX!6KHQoAYXjB&0UDMXOyzPvA<` +zV&uzm_Im6!qkqkoy1pvX+R!@fv}McAT?Q#rK^-WL9x- +zkPcI*i}Olr;g&$VH|^c#_AHE9;-&?7nbd*+3s5#a)_m*kXu|$G3LG>O +zqGRAM506RaH&TotX1YN&jie%Mh&OsJV_JrBgeDYrJ1fLU1{lJ}5E-+SQ>ef|W-=8c +z6+m^sU!Jty`Kh}DNBQ|UUr(YA*SgJZzWrK*dLRf?=AeRLh7C{tZ~fg_e%R~fB@#e7 +zqA`a^3&om6%8UraDpubAK=ATweoagvGYpbCxcw8M4J6`c+#0PeNc68r9US%0?5$$l +zXf@qDFULz~cPu&nVK6B$_|rHGlw8Ucotvma(8eC|*L5+d8(zZzgM5(rf$LK@%*|0F +zD$_pL^zfH|Mo_c_*z5$C2Hu0Tqrbny;^2e1qn~tBj^&K~Na>*#(SLLXdm3R6JK2Ex{p0Xv!Jq$GAXekuMpCXh+6S-(^um~!NEkUeUysqK4X7ZK= +z%`ikP*B_;h4)9T1E>^o_busd#GBu)yWUxLG2}OhngO0TmNyt4s$-49_=!3S(8XxVy +zLoV+POGKj)03ydCX)BfGLZB3qjlkb*1vwBIdRjNs24)&l8UUJunfb=h(cfb+;R!J# +zrw()KqXn5tf7>BwZ;X$m91#%Pgw-)BI-L}<=hm=*#uohX>AdjyAVb2M-fdyZ^TA|L%9-;OMz7W_S<3Djdq9p;#&WQ_=`j{^PoxsSEAzM~Wex6jLyZ^s#@&0CEUux +zvw-Bx8Oun)#9%Dob)ZEvuh@%DPSS`Wbtw2USMn=dLq1vS9wD4|%LuzGZa;pw2*X~+UZ +zTzI71V7p~U`M3Z6g1=|9%^eSom+bFyk76t_A?i}c@ca)CCg{40feTQ-R{dEgJgwq6 +zM~*!}hWr6y&=D8oO>HX}eyWrgUf2BE{Gb&xjdhpru0+4GU2p0i#| +zjwgG#b@pG~^ro3$K1p~eQxtT7bgx3J%7vERe(pYOp&}NFQMH@9hnF@>-?;CF&|iP@ +z=mCL0Ifi>M^o}PyVX|NYLJ-3+k5~n66jj3_VdsbR+5c4Q*U@3za#1Ng{gc6!lN@LH +zfG4x+)IMQ_BX4Vh66`C;WbdXw%YLs*R0gm;?o+S;QSIh5ZTs?v&;2L=rQhB&t#`+4 +z08S`S`s)__DT6VZb*4m7S{*OaglA2{(5{2}F9`@%6&~6N@{c>ll=oe6q-QMXmARv) +z$_muTD8Ik>1T}fnBm8mfEm(F+M~y +zLHyx+mug0rj~Bw}VsMIp&w!*FVk8d%Nl6Teim*Cn1l+cU)ro@%>Pm$`J-`+O{iXP5 +z{<2cQfBv`8NzeVgX#U>P=DQ~^_qvN^S}iTZhAPTbaQ>PQOj6TP59}q)y;rxaTK^fY +zyZ`04)i*zVd+CQ?grVW3!wQ@l3nL|<&xB}a@P1GMqZRo&W1=K%$HrRqI%CZ2G+N^J +zT#NvmK%F>h^4c-(pEVQm&w7eKIrz99XO4&rz2OZZ1UI}PL;xh{I9(xkMw|sZ{u5$w +zLyJf_QK|{TbG*OE`{V!k+vX1Wzy7>&0RK)8h29Fcg!*XIN2NX?l6SU3QKeBj;+9J$OhqdE<;Ngg?kXRLl7NI-wbUTFcg +z&Mi_fOVfY5?}iX5xjv$_L+9ASBhFga8ScM03{o)14S#>lnLoRxCP&mmt;a2}Wbb`6PAkqJ6l4N~6yhzR +zF#5bjK#1%Daq4@ +z$1F$aeh95X6d*s?jSDa^`uTH@a{F7fLWa6Gck0;q+}_7ltUhT@Z#(_usDc8r<}hk$ +z5!yv4jTv~!S^uwJ`oRJ3+;V+Qy^aE-yCTp*CH~I`1KJfDMB#w=Nr(n`gayz-f(*FQ +zf*%a%l?0C%`_;-D!f26Mw`39Zv4RwwiMMfZi9L?l`MUjM^Gn~nc6ac95WDeF2B-xI +zO|C*WKpEqJ*ufcno4!R$kpc2_Q6;(_O!Egc*2nj7Eh8NQ^{9jk5CRH8Q^D+y +zR_Q52c?)YtFi$}9h~xsk=qL#1Ly{;N01*?j=KJR0(7NQc*#C@NxPU+a0ahx_ZiSwY +zE(-t!CKc^fjNFvtug*OIl>igs?ctX9f=3fmCm}qFD#@QGayaIQ`o{>VTO{#=x$a4L +zVuUE56!)Dda26U_O%eeA-8u&Ksohx0*XQ8FaFh7Cevd)CFMMAC@`DLUMD3%9=(Q|<&wiXd|(Vb#fre^=c=EKIb5@c6MZU`4)O$XS^6Ml?S{!{* +zp8bZ+qv?x1@X5}DmYy*xLLt_|*RtsQM%)TP0jkXzF4^@FUwhgAi&whtb+2^YD|zkg +z#=c!QR_c}vcM|RjS8om71pS5F2nn$b{)<^nCmPzv62Yq0_(vstd+vE?x%xe>`rwau +zf8?7d8oFkkyI2W)a6?F$REIO1VRiVGnumSY+5MBf;Wx&QjO?}5c~)-x7>+k_8ULFp{J^Y0)!QFt*i`iaQQ%c&%$mCdvt~>SZls4?Z|& +zJ{kR%q}Ucdc}FrOlCgTt2$4r!q80AJ&~M5mc}Z6q;Xl6J7)^7LGsME}3asefbTVc9 +zGK1y4q4(1N$cH|dd3sJfD1K`eEFM{v&cE1FCzNqfqA?o~bX;p%a3yG^*>#tp-AFFi +zASdJ*&v*t_P-|B2L2Y1l89n-*o1+oLg#RZi%|1__1J^x1jS&P|;eMb(G9y$n5+lJ7 +zdUn{F7K+;OwV3Q6@8!@Jmm14DYKc8oPyUeNYE_Sw5T_XQq3OKPrh(fCbYHl31zG_f +z>FgH7eH13Hn4Vne(l<|^K0cL`KLeq&{KwUJDuedAz_o?bV91IJ5&jsne7|n +zlGZh*Z%lx;tw6h98fpV!f7m1V&=<{QI8$pDLM()?D0#XbDgU@9r{??-UODV}8JPIl +z1n9O-{?Fk67~_%+4q$z)q52O*3*2DPCc_>#)c0B@&6%?%HuKiWzGP$VzH1|t6zpCt +zxKuK4s<(GMjh+*#>%;O;&@lnj>DSPXgG>5^g!OgSv?O^6sE&Zc!I0o{ZtDtF)9cdO +z`N*y1lu%^#6kpi*=A_shYi|e~emSUhCnA{upNAGq7{`$7wZxYK-vB0xVD}*lI)9f- +zHYWC6JI_*pabx$3(&+=2#$g`Jt^>2Z30dvVI>)Ik@h)O@t_8_hFjt4G^dKhNomVG| +zZFxl5cP(e>VWBBDzZ?>b30Hx$D?=s`(is;~S^~~71aPgGGYXK`f!)P0U!9GON3Z_! +zV%*xb-LMkBXYK{}V0DJ`^I<&?re72GJqi=D^WaaeHER%wR1w!pzQ?PBwK6Qr;J*G> +zr?1zyWg*MH`>q8uo9j|OQ@j103bDq(@&s`3cn6`h<_8%qJV)Y*MnCbM@A%BDY{tn! +zMF${@e!VJw +z$D;&**5hIsR+fY}n{*51AlwGGynh@vc6FAJWAZOo0>+5`_d)To-hYXg3N#6-`@_FC +z#YeI*6A*Y5^4oq}9HK@jk^jaICj1i^&{csA?iGX7#v6Ln@GD*EU)uk_O-YdxUotB+ +zkb`sJ!R=ui$->=c>tq&M?6TVewAS#*T|k&D*Bl55blgtL!w$zFm>YBEZ_V(5liuZONfN6dCeU_S +z0cQl5`zZ|jNJK+xm4K+#m5^GMqu*wIop<(_Y=CqJxF!UL704$?ML=>lpQ*?80oF1~ +z8v*#w;W5@ka^eKfLq>qPJ{(a5*=^1!c4p5r6)r34CwZ6)54{h+tA^EJ9+xv7l@Q6f +z08^z6k1h6|SVn21$ZGZ|uI)41J)r*XGAX3{m0)}j?61$V^Evlsi;W#!cF9Si54pdN +z9RB#MZ^DV^W_MyH)4G7>+0J)hM6udNrEP{-OVnC-oJX<^QLNSpA;Upm3l=nK>U*5z +zqobCY{8wC6?N7bs|7u~He+&*iJSMSPSF6&oK3i)vN^2R`W)S((+EHv3vD(LcYk<7N +zYPdv_36LKLXPVyi! +zG#5Z8AlyBGJ3KHEq!8H4!$B|9s}nYkxb*ir%s&Tb92}L*&qb&!RA`^rV|A!?$pKoU +z9nmrb<0CJy11f|balR%IWJAb~gymb05I-cxpMq90m`|@lzYJKtcK8S4%g`zC_Cu_- +z9b=sFp$Z<^y*#3G28iJf+BKcLJS>&K@*z3$TpZgFFM;=M)~8ot;Cxm+*6gWmrz|_x +z+BU_Y8OpYT<^pai-}`t0UWhcyz8*MZVDVu&@Dwzge<1=)K)*uQKCr_7TI){P>2O@5 +zZJo7_J0CF(k6D1N5F9Tc&^y@X*mrzN8a3p{Flv(Dob3t~nrj07_gL3<6j7GYaK>7+ +zwbL3H`C^gYG)p +z@yUqk?ao@FNme!~&2@+v3DNGC-PszrW27&aAwoDSfK*pXj>ZZMD|dvK0(?H6LhqEm)KquyEQr2jdJJmR+a8 +z!NNfsxKX4t2BxE(dMspJ3u|FDtm6iNuOYDPJFT@9+cXEGIO&bN5q}L%YdJ%-=pd&! +zIK4aoMC?q1fPwVl?No&jL>ZW#b69RT&2(T?#8U3Tyym?U>P53MEN3WS6OpABqONmL +r42@9kyeh*&&{*C$&CR1`&sy+H5IHWxVL9fMUTF-8 +=================================================================== +diff --git a/app/build.gradle.kts b/app/build.gradle.kts +--- a/app/build.gradle.kts (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/app/build.gradle.kts (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -6,7 +6,7 @@ + } + + android { +- namespace = "com.looker.droidify" ++ namespace = "com.leos.droidify" + defaultConfig { + vectorDrawables.useSupportLibrary = true + +Index: app/src/main/AndroidManifest.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml +--- a/app/src/main/AndroidManifest.xml (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/app/src/main/AndroidManifest.xml (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -144,7 +144,7 @@ + android:foregroundServiceType="dataSync" /> + + + + + + +Index: app/src/main/kotlin/com/leos/droidify/MainActivity.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/MainActivity.kt b/app/src/main/kotlin/com/leos/droidify/MainActivity.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/MainActivity.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,29 @@ ++package com.leos.droidify ++ ++import android.content.Intent ++import com.leos.core.common.getInstallPackageName ++import dagger.hilt.android.AndroidEntryPoint ++ ++@AndroidEntryPoint ++class MainActivity : ScreenActivity() { ++ companion object { ++ const val ACTION_UPDATES = "${BuildConfig.APPLICATION_ID}.intent.action.UPDATES" ++ const val ACTION_INSTALL = "${BuildConfig.APPLICATION_ID}.intent.action.INSTALL" ++ const val EXTRA_CACHE_FILE_NAME = ++ "${BuildConfig.APPLICATION_ID}.intent.extra.CACHE_FILE_NAME" ++ } ++ ++ override fun handleIntent(intent: Intent?) { ++ when (intent?.action) { ++ ACTION_UPDATES -> handleSpecialIntent(SpecialIntent.Updates) ++ ACTION_INSTALL -> handleSpecialIntent( ++ SpecialIntent.Install( ++ intent.getInstallPackageName, ++ intent.getStringExtra(EXTRA_CACHE_FILE_NAME) ++ ) ++ ) ++ ++ else -> super.handleIntent(intent) ++ } ++ } ++} +Index: app/src/main/kotlin/com/leos/droidify/MainApplication.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/MainApplication.kt b/app/src/main/kotlin/com/leos/droidify/MainApplication.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/MainApplication.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,276 @@ ++package com.leos.droidify ++ ++import android.annotation.SuppressLint ++import android.app.Application ++import android.content.BroadcastReceiver ++import android.content.Context ++import android.content.Intent ++import android.content.IntentFilter ++import androidx.appcompat.app.AppCompatDelegate ++import androidx.hilt.work.HiltWorkerFactory ++import androidx.work.Configuration ++import androidx.work.NetworkType ++import coil.ImageLoader ++import coil.ImageLoaderFactory ++import coil.disk.DiskCache ++import coil.memory.MemoryCache ++import com.leos.core.common.Constants ++import com.leos.core.common.cache.Cache ++import com.leos.core.common.extension.getInstalledPackagesCompat ++import com.leos.core.common.extension.jobScheduler ++import com.leos.core.common.log ++import com.leos.core.datastore.SettingsRepository ++import com.leos.core.datastore.get ++import com.leos.core.datastore.model.AutoSync ++import com.leos.core.datastore.model.InstallerType ++import com.leos.core.datastore.model.ProxyPreference ++import com.leos.core.datastore.model.ProxyType ++import com.leos.droidify.content.ProductPreferences ++import com.leos.droidify.database.Database ++import com.leos.droidify.index.RepositoryUpdater ++import com.leos.droidify.receivers.InstalledAppReceiver ++import com.leos.droidify.service.Connection ++import com.leos.droidify.service.SyncService ++import com.leos.droidify.sync.SyncPreference ++import com.leos.droidify.sync.toJobNetworkType ++import com.leos.droidify.utility.extension.toInstalledItem ++import com.leos.droidify.work.CleanUpWorker ++import com.leos.installer.InstallManager ++import com.leos.installer.installers.root.RootPermissionHandler ++import com.leos.installer.installers.shizuku.ShizukuPermissionHandler ++import com.leos.network.Downloader ++import dagger.hilt.android.HiltAndroidApp ++import kotlinx.coroutines.CoroutineScope ++import kotlinx.coroutines.Dispatchers ++import kotlinx.coroutines.SupervisorJob ++import kotlinx.coroutines.cancel ++import kotlinx.coroutines.flow.collectIndexed ++import kotlinx.coroutines.flow.drop ++import kotlinx.coroutines.launch ++import java.net.InetSocketAddress ++import java.net.Proxy ++import javax.inject.Inject ++import kotlin.time.Duration.Companion.INFINITE ++import kotlin.time.Duration.Companion.hours ++import com.leos.core.common.R as CommonR ++ ++@HiltAndroidApp ++class MainApplication : Application(), ImageLoaderFactory, Configuration.Provider { ++ ++ private val parentJob = SupervisorJob() ++ private val appScope = CoroutineScope(Dispatchers.Default + parentJob) ++ ++ @Inject ++ lateinit var settingsRepository: SettingsRepository ++ ++ @Inject ++ lateinit var installer: InstallManager ++ ++ @Inject ++ lateinit var downloader: Downloader ++ ++ @Inject ++ lateinit var shizukuPermissionHandler: ShizukuPermissionHandler ++ ++ @Inject ++ lateinit var rootPermissionHandler: RootPermissionHandler ++ ++ @Inject ++ lateinit var workerFactory: HiltWorkerFactory ++ ++ override fun onCreate() { ++ super.onCreate() ++ ++ val databaseUpdated = Database.init(this) ++ ProductPreferences.init(this, appScope) ++ RepositoryUpdater.init(appScope, downloader) ++ listenApplications() ++ checkLanguage() ++ updatePreference() ++ setupInstaller() ++ ++ if (databaseUpdated) forceSyncAll() ++ } ++ ++ override fun onTerminate() { ++ super.onTerminate() ++ appScope.cancel("Application Terminated") ++ installer.close() ++ } ++ ++ private fun setupInstaller() { ++ appScope.launch { ++ launch { ++ settingsRepository.get { installerType }.collect { ++ if (it == InstallerType.SHIZUKU) handleShizukuInstaller() ++ if (it == InstallerType.ROOT) { ++ if (!rootPermissionHandler.isGranted) { ++ settingsRepository.setInstallerType(InstallerType.Default) ++ } ++ } ++ } ++ } ++ installer() ++ } ++ } ++ ++ private fun CoroutineScope.handleShizukuInstaller() = launch { ++ shizukuPermissionHandler.state.collect { (isGranted, isAlive, _) -> ++ if (isAlive && isGranted) { ++ settingsRepository.setInstallerType(InstallerType.SHIZUKU) ++ return@collect ++ } ++ if (isAlive) { ++ settingsRepository.setInstallerType(InstallerType.Default) ++ shizukuPermissionHandler.requestPermission() ++ return@collect ++ } ++ settingsRepository.setInstallerType(InstallerType.Default) ++ } ++ } ++ ++ private fun listenApplications() { ++ registerReceiver( ++ InstalledAppReceiver(packageManager), ++ IntentFilter().apply { ++ addAction(Intent.ACTION_PACKAGE_ADDED) ++ addAction(Intent.ACTION_PACKAGE_REMOVED) ++ addDataScheme("package") ++ } ++ ) ++ val installedItems = ++ packageManager.getInstalledPackagesCompat() ++ ?.map { it.toInstalledItem() } ++ ?: return ++ Database.InstalledAdapter.putAll(installedItems) ++ } ++ ++ private fun checkLanguage() { ++ appScope.launch { ++ val lastSetLanguage = settingsRepository.getInitial().language ++ val systemSetLanguage = AppCompatDelegate.getApplicationLocales().toLanguageTags() ++ if (systemSetLanguage != lastSetLanguage && lastSetLanguage != "system") { ++ settingsRepository.setLanguage(systemSetLanguage) ++ } ++ } ++ } ++ ++ private fun updatePreference() { ++ appScope.launch { ++ launch { ++ settingsRepository.get { unstableUpdate }.drop(1).collect { ++ forceSyncAll() ++ } ++ } ++ launch { ++ settingsRepository.get { autoSync }.collectIndexed { index, syncMode -> ++ // Don't update sync job on initial collect ++ updateSyncJob(index > 0, syncMode) ++ } ++ } ++ launch { ++ settingsRepository.get { cleanUpInterval }.drop(1).collect { ++ if (it == INFINITE) { ++ CleanUpWorker.removeAllSchedules(applicationContext) ++ } else { ++ CleanUpWorker.scheduleCleanup(applicationContext, it) ++ } ++ } ++ } ++ launch { ++ settingsRepository.get { proxy }.collect(::updateProxy) ++ } ++ } ++ } ++ ++ private fun updateProxy(proxyPreference: ProxyPreference) { ++ val type = proxyPreference.type ++ val host = proxyPreference.host ++ val port = proxyPreference.port ++ val socketAddress = when (type) { ++ ProxyType.DIRECT -> null ++ ProxyType.HTTP, ProxyType.SOCKS -> { ++ try { ++ InetSocketAddress.createUnresolved(host, port) ++ } catch (e: IllegalArgumentException) { ++ log(e) ++ null ++ } ++ } ++ } ++ val androidProxyType = when (type) { ++ ProxyType.DIRECT -> Proxy.Type.DIRECT ++ ProxyType.HTTP -> Proxy.Type.HTTP ++ ProxyType.SOCKS -> Proxy.Type.SOCKS ++ } ++ val determinedProxy = socketAddress?.let { Proxy(androidProxyType, it) } ?: Proxy.NO_PROXY ++ downloader.setProxy(determinedProxy) ++ } ++ ++ private fun updateSyncJob(force: Boolean, autoSync: AutoSync) { ++ if (autoSync == AutoSync.NEVER) { ++ jobScheduler?.cancel(Constants.JOB_ID_SYNC) ++ return ++ } ++ val jobScheduler = jobScheduler ++ val syncConditions = when (autoSync) { ++ AutoSync.ALWAYS -> SyncPreference(NetworkType.CONNECTED) ++ AutoSync.WIFI_ONLY -> SyncPreference(NetworkType.UNMETERED) ++ AutoSync.WIFI_PLUGGED_IN -> SyncPreference(NetworkType.UNMETERED, pluggedIn = true) ++ else -> null ++ } ++ val isPreviousJobPending = jobScheduler?.allPendingJobs ++ ?.any { it.id == Constants.JOB_ID_SYNC } == false ++ if ((force || !isPreviousJobPending) && syncConditions != null) { ++ val period = 12.hours.inWholeMilliseconds ++ val job = SyncService.Job.create( ++ context = this, ++ periodMillis = period, ++ networkType = syncConditions.toJobNetworkType(), ++ isCharging = syncConditions.pluggedIn, ++ isBatteryLow = syncConditions.batteryNotLow ++ ) ++ jobScheduler?.schedule(job) ++ } ++ } ++ ++ private fun forceSyncAll() { ++ Database.RepositoryAdapter.getAll().forEach { ++ if (it.lastModified.isNotEmpty() || it.entityTag.isNotEmpty()) { ++ Database.RepositoryAdapter.put(it.copy(lastModified = "", entityTag = "")) ++ } ++ } ++ Connection(SyncService::class.java, onBind = { connection, binder -> ++ binder.sync(SyncService.SyncRequest.FORCE) ++ connection.unbind(this) ++ }).bind(this) ++ } ++ ++ class BootReceiver : BroadcastReceiver() { ++ @SuppressLint("UnsafeProtectedBroadcastReceiver") ++ override fun onReceive(context: Context, intent: Intent) = Unit ++ } ++ ++ override fun newImageLoader(): ImageLoader { ++ val memoryCache = MemoryCache.Builder(this) ++ .maxSizePercent(0.25) ++ .build() ++ ++ val diskCache = DiskCache.Builder() ++ .directory(Cache.getImagesDir(this)) ++ .maxSizePercent(0.05) ++ .build() ++ ++ return ImageLoader.Builder(this) ++ .memoryCache(memoryCache) ++ .diskCache(diskCache) ++ .error(CommonR.drawable.ic_cannot_load) ++ .crossfade(350) ++ .build() ++ } ++ ++ override val workManagerConfiguration: Configuration ++ get() = Configuration.Builder() ++ .setWorkerFactory(workerFactory) ++ .build() ++} +Index: app/src/main/kotlin/com/looker/droidify/ScreenActivity.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/looker/droidify/ScreenActivity.kt b/app/src/main/kotlin/com/leos/droidify/ScreenActivity.kt +rename from app/src/main/kotlin/com/looker/droidify/ScreenActivity.kt +rename to app/src/main/kotlin/com/leos/droidify/ScreenActivity.kt +--- a/app/src/main/kotlin/com/looker/droidify/ScreenActivity.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/app/src/main/kotlin/com/leos/droidify/ScreenActivity.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.droidify ++package com.leos.droidify + + import android.Manifest + import android.content.Intent +@@ -16,22 +16,22 @@ + import androidx.fragment.app.Fragment + import androidx.fragment.app.commit + import androidx.lifecycle.lifecycleScope +-import com.looker.core.common.* +-import com.looker.core.common.extension.* +-import com.looker.core.datastore.SettingsRepository +-import com.looker.core.datastore.extension.getThemeRes +-import com.looker.core.datastore.get +-import com.looker.droidify.database.CursorOwner +-import com.looker.droidify.ui.ScreenFragment +-import com.looker.droidify.ui.appDetail.AppDetailFragment +-import com.looker.droidify.ui.favourites.FavouritesFragment +-import com.looker.droidify.ui.repository.EditRepositoryFragment +-import com.looker.droidify.ui.repository.RepositoriesFragment +-import com.looker.droidify.ui.repository.RepositoryFragment +-import com.looker.droidify.ui.settings.SettingsFragment +-import com.looker.droidify.ui.tabsFragment.TabsFragment +-import com.looker.installer.InstallManager +-import com.looker.installer.model.installFrom ++import com.leos.core.common.* ++import com.leos.core.common.extension.* ++import com.leos.core.datastore.SettingsRepository ++import com.leos.core.datastore.extension.getThemeRes ++import com.leos.core.datastore.get ++import com.leos.droidify.database.CursorOwner ++import com.leos.droidify.ui.ScreenFragment ++import com.leos.droidify.ui.appDetail.AppDetailFragment ++import com.leos.droidify.ui.favourites.FavouritesFragment ++import com.leos.droidify.ui.repository.EditRepositoryFragment ++import com.leos.droidify.ui.repository.RepositoriesFragment ++import com.leos.droidify.ui.repository.RepositoryFragment ++import com.leos.droidify.ui.settings.SettingsFragment ++import com.leos.droidify.ui.tabsFragment.TabsFragment ++import com.leos.installer.InstallManager ++import com.leos.installer.model.installFrom + import dagger.hilt.EntryPoint + import dagger.hilt.InstallIn + import dagger.hilt.android.AndroidEntryPoint +Index: app/src/main/kotlin/com/leos/droidify/content/ProductPreferences.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/content/ProductPreferences.kt b/app/src/main/kotlin/com/leos/droidify/content/ProductPreferences.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/content/ProductPreferences.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,79 @@ ++package com.leos.droidify.content ++ ++import android.content.Context ++import android.content.SharedPreferences ++import com.leos.core.common.extension.Json ++import com.leos.core.common.extension.parseDictionary ++import com.leos.core.common.extension.writeDictionary ++import com.leos.core.domain.ProductPreference ++import com.leos.droidify.database.Database ++import com.leos.droidify.utility.serialization.productPreference ++import com.leos.droidify.utility.serialization.serialize ++import java.io.ByteArrayOutputStream ++import java.nio.charset.Charset ++import kotlinx.coroutines.CoroutineScope ++import kotlinx.coroutines.flow.MutableSharedFlow ++import kotlinx.coroutines.flow.asSharedFlow ++import kotlinx.coroutines.launch ++ ++object ProductPreferences { ++ private val defaultProductPreference = ProductPreference(false, 0L) ++ private lateinit var preferences: SharedPreferences ++ private val mutableSubject = MutableSharedFlow>() ++ private val subject = mutableSubject.asSharedFlow() ++ ++ fun init(context: Context, scope: CoroutineScope) { ++ preferences = context.getSharedPreferences("product_preferences", Context.MODE_PRIVATE) ++ Database.LockAdapter.putAll( ++ preferences.all.keys.mapNotNull { packageName -> ++ this[packageName].databaseVersionCode?.let { Pair(packageName, it) } ++ } ++ ) ++ scope.launch { ++ subject.collect { (packageName, versionCode) -> ++ if (versionCode != null) { ++ Database.LockAdapter.put(Pair(packageName, versionCode)) ++ } else { ++ Database.LockAdapter.delete(packageName) ++ } ++ } ++ } ++ } ++ ++ private val ProductPreference.databaseVersionCode: Long? ++ get() = when { ++ ignoreUpdates -> 0L ++ ignoreVersionCode > 0L -> ignoreVersionCode ++ else -> null ++ } ++ ++ operator fun get(packageName: String): ProductPreference { ++ return if (preferences.contains(packageName)) { ++ try { ++ Json.factory.createParser(preferences.getString(packageName, "{}")) ++ .use { it.parseDictionary { productPreference() } } ++ } catch (e: Exception) { ++ e.printStackTrace() ++ defaultProductPreference ++ } ++ } else { ++ defaultProductPreference ++ } ++ } ++ ++ operator fun set(packageName: String, productPreference: ProductPreference) { ++ val oldProductPreference = this[packageName] ++ preferences.edit().putString( ++ packageName, ++ ByteArrayOutputStream().apply { ++ Json.factory.createGenerator(this) ++ .use { it.writeDictionary(productPreference::serialize) } ++ }.toByteArray().toString(Charset.defaultCharset()) ++ ).apply() ++ if (oldProductPreference.ignoreUpdates != productPreference.ignoreUpdates || ++ oldProductPreference.ignoreVersionCode != productPreference.ignoreVersionCode ++ ) { ++ mutableSubject.tryEmit(Pair(packageName, productPreference.databaseVersionCode)) ++ } ++ } ++} +Index: app/src/main/kotlin/com/leos/droidify/database/CursorOwner.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/database/CursorOwner.kt b/app/src/main/kotlin/com/leos/droidify/database/CursorOwner.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/database/CursorOwner.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,143 @@ ++package com.leos.droidify.database ++ ++import android.database.Cursor ++import android.os.Bundle ++import androidx.fragment.app.Fragment ++import androidx.loader.app.LoaderManager ++import androidx.loader.content.Loader ++import com.leos.core.datastore.model.SortOrder ++import com.leos.core.domain.ProductItem ++ ++class CursorOwner : Fragment(), LoaderManager.LoaderCallbacks { ++ sealed class Request { ++ internal abstract val id: Int ++ ++ data class ProductsAvailable( ++ val searchQuery: String, ++ val section: ProductItem.Section, ++ val order: SortOrder ++ ) : Request() { ++ override val id: Int ++ get() = 1 ++ } ++ ++ data class ProductsInstalled( ++ val searchQuery: String, ++ val section: ProductItem.Section, ++ val order: SortOrder ++ ) : Request() { ++ override val id: Int ++ get() = 2 ++ } ++ ++ data class ProductsUpdates( ++ val searchQuery: String, ++ val section: ProductItem.Section, ++ val order: SortOrder ++ ) : Request() { ++ override val id: Int ++ get() = 3 ++ } ++ ++ object Repositories : Request() { ++ override val id: Int ++ get() = 4 ++ } ++ } ++ ++ interface Callback { ++ fun onCursorData(request: Request, cursor: Cursor?) ++ } ++ ++ private data class ActiveRequest( ++ val request: Request, ++ val callback: Callback?, ++ val cursor: Cursor? ++ ) ++ ++ init { ++ retainInstance = true ++ } ++ ++ private val activeRequests = mutableMapOf() ++ ++ fun attach(callback: Callback, request: Request) { ++ val oldActiveRequest = activeRequests[request.id] ++ if (oldActiveRequest?.callback != null && ++ oldActiveRequest.callback != callback && oldActiveRequest.cursor != null ++ ) { ++ oldActiveRequest.callback.onCursorData(oldActiveRequest.request, null) ++ } ++ val cursor = if (oldActiveRequest?.request == request && oldActiveRequest.cursor != null) { ++ callback.onCursorData(request, oldActiveRequest.cursor) ++ oldActiveRequest.cursor ++ } else { ++ null ++ } ++ activeRequests[request.id] = ActiveRequest(request, callback, cursor) ++ if (cursor == null) { ++ LoaderManager.getInstance(this).restartLoader(request.id, null, this) ++ } ++ } ++ ++ fun detach(callback: Callback) { ++ for (id in activeRequests.keys) { ++ val activeRequest = activeRequests[id]!! ++ if (activeRequest.callback == callback) { ++ activeRequests[id] = activeRequest.copy(callback = null) ++ } ++ } ++ } ++ ++ override fun onCreateLoader(id: Int, args: Bundle?): Loader { ++ val request = activeRequests[id]!!.request ++ return QueryLoader(requireContext()) { ++ when (request) { ++ is Request.ProductsAvailable -> ++ Database.ProductAdapter ++ .query( ++ installed = false, ++ updates = false, ++ searchQuery = request.searchQuery, ++ section = request.section, ++ order = request.order, ++ signal = it ++ ) ++ ++ is Request.ProductsInstalled -> ++ Database.ProductAdapter ++ .query( ++ installed = true, ++ updates = false, ++ searchQuery = request.searchQuery, ++ section = request.section, ++ order = request.order, ++ signal = it ++ ) ++ ++ is Request.ProductsUpdates -> ++ Database.ProductAdapter ++ .query( ++ installed = true, ++ updates = true, ++ searchQuery = request.searchQuery, ++ section = request.section, ++ order = request.order, ++ signal = it ++ ) ++ ++ is Request.Repositories -> Database.RepositoryAdapter.query(it) ++ } ++ } ++ } ++ ++ override fun onLoadFinished(loader: Loader, data: Cursor?) { ++ val activeRequest = activeRequests[loader.id] ++ if (activeRequest != null) { ++ activeRequests[loader.id] = activeRequest.copy(cursor = data) ++ activeRequest.callback?.onCursorData(activeRequest.request, data) ++ } ++ } ++ ++ override fun onLoaderReset(loader: Loader) = onLoadFinished(loader, null) ++} +Index: app/src/main/kotlin/com/leos/droidify/database/Database.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/database/Database.kt b/app/src/main/kotlin/com/leos/droidify/database/Database.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/database/Database.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,964 @@ ++package com.leos.droidify.database ++ ++import android.content.ContentValues ++import android.content.Context ++import android.database.Cursor ++import android.database.sqlite.SQLiteDatabase ++import android.database.sqlite.SQLiteOpenHelper ++import android.os.CancellationSignal ++import androidx.core.database.sqlite.transaction ++import com.fasterxml.jackson.core.JsonGenerator ++import com.fasterxml.jackson.core.JsonParser ++import com.leos.core.common.extension.Json ++import com.leos.core.common.extension.asSequence ++import com.leos.core.common.extension.firstOrNull ++import com.leos.core.common.extension.parseDictionary ++import com.leos.core.common.extension.writeDictionary ++import com.leos.core.common.log ++import com.leos.core.datastore.model.SortOrder ++import com.leos.core.domain.InstalledItem ++import com.leos.core.domain.Product ++import com.leos.core.domain.ProductItem ++import com.leos.core.domain.Repository ++import com.leos.droidify.BuildConfig ++import com.leos.droidify.utility.serialization.product ++import com.leos.droidify.utility.serialization.productItem ++import com.leos.droidify.utility.serialization.repository ++import com.leos.droidify.utility.serialization.serialize ++import kotlinx.coroutines.Dispatchers ++import kotlinx.coroutines.channels.awaitClose ++import kotlinx.coroutines.delay ++import kotlinx.coroutines.flow.Flow ++import kotlinx.coroutines.flow.callbackFlow ++import kotlinx.coroutines.flow.emitAll ++import kotlinx.coroutines.flow.flowOf ++import kotlinx.coroutines.flow.flowOn ++import kotlinx.coroutines.flow.map ++import kotlinx.coroutines.flow.onCompletion ++import kotlinx.coroutines.flow.onEach ++import kotlinx.coroutines.withContext ++import java.io.ByteArrayOutputStream ++import kotlin.collections.component1 ++import kotlin.collections.component2 ++import kotlin.collections.set ++ ++object Database { ++ fun init(context: Context): Boolean { ++ val helper = Helper(context) ++ db = helper.writableDatabase ++ if (helper.created) { ++ for (repository in Repository.defaultRepositories) { ++ RepositoryAdapter.put(repository) ++ } ++ } ++ RepositoryAdapter.removeDuplicates() ++ return helper.created || helper.updated ++ } ++ ++ private lateinit var db: SQLiteDatabase ++ ++ private interface Table { ++ val memory: Boolean ++ val innerName: String ++ val createTable: String ++ val createIndex: String? ++ get() = null ++ ++ val databasePrefix: String ++ get() = if (memory) "memory." else "" ++ ++ val name: String ++ get() = "$databasePrefix$innerName" ++ ++ fun formatCreateTable(name: String): String { ++ return "CREATE TABLE $name (${QueryBuilder.trimQuery(createTable)})" ++ } ++ ++ val createIndexPairFormatted: Pair? ++ get() = createIndex?.let { ++ Pair( ++ "CREATE INDEX ${innerName}_index ON $innerName ($it)", ++ "CREATE INDEX ${name}_index ON $innerName ($it)" ++ ) ++ } ++ } ++ ++ private object Schema { ++ object Repository : Table { ++ const val ROW_ID = "_id" ++ const val ROW_ENABLED = "enabled" ++ const val ROW_DELETED = "deleted" ++ const val ROW_DATA = "data" ++ ++ override val memory = false ++ override val innerName = "repository" ++ override val createTable = """ ++ $ROW_ID INTEGER PRIMARY KEY AUTOINCREMENT, ++ $ROW_ENABLED INTEGER NOT NULL, ++ $ROW_DELETED INTEGER NOT NULL, ++ $ROW_DATA BLOB NOT NULL ++ """ ++ } ++ ++ object Product : Table { ++ const val ROW_REPOSITORY_ID = "repository_id" ++ const val ROW_PACKAGE_NAME = "package_name" ++ const val ROW_NAME = "name" ++ const val ROW_SUMMARY = "summary" ++ const val ROW_DESCRIPTION = "description" ++ const val ROW_ADDED = "added" ++ const val ROW_UPDATED = "updated" ++ const val ROW_VERSION_CODE = "version_code" ++ const val ROW_SIGNATURES = "signatures" ++ const val ROW_COMPATIBLE = "compatible" ++ const val ROW_DATA = "data" ++ const val ROW_DATA_ITEM = "data_item" ++ ++ override val memory = false ++ override val innerName = "product" ++ override val createTable = """ ++ $ROW_REPOSITORY_ID INTEGER NOT NULL, ++ $ROW_PACKAGE_NAME TEXT NOT NULL, ++ $ROW_NAME TEXT NOT NULL, ++ $ROW_SUMMARY TEXT NOT NULL, ++ $ROW_DESCRIPTION TEXT NOT NULL, ++ $ROW_ADDED INTEGER NOT NULL, ++ $ROW_UPDATED INTEGER NOT NULL, ++ $ROW_VERSION_CODE INTEGER NOT NULL, ++ $ROW_SIGNATURES TEXT NOT NULL, ++ $ROW_COMPATIBLE INTEGER NOT NULL, ++ $ROW_DATA BLOB NOT NULL, ++ $ROW_DATA_ITEM BLOB NOT NULL, ++ PRIMARY KEY ($ROW_REPOSITORY_ID, $ROW_PACKAGE_NAME) ++ """ ++ override val createIndex = ROW_PACKAGE_NAME ++ } ++ ++ object Category : Table { ++ const val ROW_REPOSITORY_ID = "repository_id" ++ const val ROW_PACKAGE_NAME = "package_name" ++ const val ROW_NAME = "name" ++ ++ override val memory = false ++ override val innerName = "category" ++ override val createTable = """ ++ $ROW_REPOSITORY_ID INTEGER NOT NULL, ++ $ROW_PACKAGE_NAME TEXT NOT NULL, ++ $ROW_NAME TEXT NOT NULL, ++ PRIMARY KEY ($ROW_REPOSITORY_ID, $ROW_PACKAGE_NAME, $ROW_NAME) ++ """ ++ override val createIndex = "$ROW_PACKAGE_NAME, $ROW_NAME" ++ } ++ ++ object Installed : Table { ++ const val ROW_PACKAGE_NAME = "package_name" ++ const val ROW_VERSION = "version" ++ const val ROW_VERSION_CODE = "version_code" ++ const val ROW_SIGNATURE = "signature" ++ ++ override val memory = true ++ override val innerName = "installed" ++ override val createTable = """ ++ $ROW_PACKAGE_NAME TEXT PRIMARY KEY, ++ $ROW_VERSION TEXT NOT NULL, ++ $ROW_VERSION_CODE INTEGER NOT NULL, ++ $ROW_SIGNATURE TEXT NOT NULL ++ """ ++ } ++ ++ object Lock : Table { ++ const val ROW_PACKAGE_NAME = "package_name" ++ const val ROW_VERSION_CODE = "version_code" ++ ++ override val memory = true ++ override val innerName = "lock" ++ override val createTable = """ ++ $ROW_PACKAGE_NAME TEXT PRIMARY KEY, ++ $ROW_VERSION_CODE INTEGER NOT NULL ++ """ ++ } ++ ++ object Synthetic { ++ const val ROW_CAN_UPDATE = "can_update" ++ const val ROW_MATCH_RANK = "match_rank" ++ } ++ } ++ ++ private class Helper(context: Context) : SQLiteOpenHelper(context, "droidify", null, 2) { ++ var created = false ++ private set ++ var updated = false ++ private set ++ ++ override fun onCreate(db: SQLiteDatabase) = Unit ++ override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) = ++ onVersionChange(db) ++ ++ override fun onDowngrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) = ++ onVersionChange(db) ++ ++ private fun onVersionChange(db: SQLiteDatabase) { ++ handleTables(db, true, Schema.Product, Schema.Category) ++ addRepos(db, Repository.newlyAdded) ++ this.updated = true ++ } ++ ++ override fun onOpen(db: SQLiteDatabase) { ++ val create = handleTables(db, false, Schema.Repository) ++ val updated = handleTables(db, create, Schema.Product, Schema.Category) ++ db.execSQL("ATTACH DATABASE ':memory:' AS memory") ++ handleTables(db, false, Schema.Installed, Schema.Lock) ++ handleIndexes( ++ db, ++ Schema.Repository, ++ Schema.Product, ++ Schema.Category, ++ Schema.Installed, ++ Schema.Lock ++ ) ++ dropOldTables(db, Schema.Repository, Schema.Product, Schema.Category) ++ this.created = this.created || create ++ this.updated = this.updated || create || updated ++ } ++ } ++ ++ private fun handleTables(db: SQLiteDatabase, recreate: Boolean, vararg tables: Table): Boolean { ++ val shouldRecreate = recreate || tables.any { table -> ++ val sql = db.query( ++ "${table.databasePrefix}sqlite_master", ++ columns = arrayOf("sql"), ++ selection = Pair("type = ? AND name = ?", arrayOf("table", table.innerName)) ++ ).use { it.firstOrNull()?.getString(0) }.orEmpty() ++ table.formatCreateTable(table.innerName) != sql ++ } ++ return shouldRecreate && run { ++ val shouldVacuum = tables.map { ++ db.execSQL("DROP TABLE IF EXISTS ${it.name}") ++ db.execSQL(it.formatCreateTable(it.name)) ++ !it.memory ++ } ++ if (shouldVacuum.any { it } && !db.inTransaction()) { ++ db.execSQL("VACUUM") ++ } ++ true ++ } ++ } ++ ++ private fun addRepos(db: SQLiteDatabase, repos: List) { ++ if (BuildConfig.DEBUG) { ++ log("Add Repos: $repos", "RepositoryAdapter") ++ } ++ if (repos.isEmpty()) return ++ db.transaction { ++ repos.forEach { ++ RepositoryAdapter.put(it) ++ } ++ } ++ } ++ ++ private fun handleIndexes(db: SQLiteDatabase, vararg tables: Table) { ++ val shouldVacuum = tables.map { table -> ++ val sqls = db.query( ++ "${table.databasePrefix}sqlite_master", ++ columns = arrayOf("name", "sql"), ++ selection = Pair("type = ? AND tbl_name = ?", arrayOf("index", table.innerName)) ++ ) ++ .use { cursor -> ++ cursor.asSequence() ++ .mapNotNull { it.getString(1)?.let { sql -> Pair(it.getString(0), sql) } } ++ .toList() ++ } ++ .filter { !it.first.startsWith("sqlite_") } ++ val createIndexes = table.createIndexPairFormatted?.let { listOf(it) }.orEmpty() ++ createIndexes.map { it.first } != sqls.map { it.second } && run { ++ for (name in sqls.map { it.first }) { ++ db.execSQL("DROP INDEX IF EXISTS $name") ++ } ++ for (createIndexPair in createIndexes) { ++ db.execSQL(createIndexPair.second) ++ } ++ !table.memory ++ } ++ } ++ if (shouldVacuum.any { it } && !db.inTransaction()) { ++ db.execSQL("VACUUM") ++ } ++ } ++ ++ private fun dropOldTables(db: SQLiteDatabase, vararg neededTables: Table) { ++ val tables = db.query( ++ "sqlite_master", ++ columns = arrayOf("name"), ++ selection = Pair("type = ?", arrayOf("table")) ++ ) ++ .use { cursor -> cursor.asSequence().mapNotNull { it.getString(0) }.toList() } ++ .filter { !it.startsWith("sqlite_") && !it.startsWith("android_") } ++ .toSet() - neededTables.mapNotNull { if (it.memory) null else it.name }.toSet() ++ if (tables.isNotEmpty()) { ++ for (table in tables) { ++ db.execSQL("DROP TABLE IF EXISTS $table") ++ } ++ if (!db.inTransaction()) { ++ db.execSQL("VACUUM") ++ } ++ } ++ } ++ ++ sealed class Subject { ++ data object Repositories : Subject() ++ data class Repository(val id: Long) : Subject() ++ data object Products : Subject() ++ } ++ ++ private val observers = mutableMapOf Unit>>() ++ ++ private fun dataObservable(subject: Subject): (Boolean, () -> Unit) -> Unit = ++ { register, observer -> ++ synchronized(observers) { ++ val set = observers[subject] ?: run { ++ val set = mutableSetOf<() -> Unit>() ++ observers[subject] = set ++ set ++ } ++ if (register) { ++ set += observer ++ } else { ++ set -= observer ++ } ++ } ++ } ++ ++ fun flowCollection(subject: Subject): Flow = callbackFlow { ++ val callback: () -> Unit = { trySend(Unit) } ++ val dataObservable = dataObservable(subject) ++ dataObservable(true, callback) ++ ++ awaitClose { dataObservable(false, callback) } ++ }.flowOn(Dispatchers.IO) ++ ++ private fun notifyChanged(vararg subjects: Subject) { ++ synchronized(observers) { ++ subjects.asSequence().mapNotNull { observers[it] }.flatten().forEach { it() } ++ } ++ } ++ ++ private fun SQLiteDatabase.insertOrReplace( ++ replace: Boolean, ++ table: String, ++ contentValues: ContentValues ++ ): Long { ++ return if (replace) { ++ replace(table, null, contentValues) ++ } else { ++ insert( ++ table, ++ null, ++ contentValues ++ ) ++ } ++ } ++ ++ private fun SQLiteDatabase.query( ++ table: String, ++ columns: Array? = null, ++ selection: Pair>? = null, ++ orderBy: String? = null, ++ signal: CancellationSignal? = null ++ ): Cursor { ++ return query( ++ false, ++ table, ++ columns, ++ selection?.first, ++ selection?.second, ++ null, ++ null, ++ orderBy, ++ null, ++ signal ++ ) ++ } ++ ++ private fun Cursor.observable(subject: Subject): ObservableCursor { ++ return ObservableCursor(this, dataObservable(subject)) ++ } ++ ++ fun ByteArray.jsonParse(callback: (JsonParser) -> T): T { ++ return Json.factory.createParser(this).use { it.parseDictionary(callback) } ++ } ++ ++ fun jsonGenerate(callback: (JsonGenerator) -> Unit): ByteArray { ++ val outputStream = ByteArrayOutputStream() ++ Json.factory.createGenerator(outputStream).use { it.writeDictionary(callback) } ++ return outputStream.toByteArray() ++ } ++ ++ object RepositoryAdapter { ++ internal fun putWithoutNotification(repository: Repository, shouldReplace: Boolean): Long { ++ return db.insertOrReplace( ++ shouldReplace, ++ Schema.Repository.name, ++ ContentValues().apply { ++ if (shouldReplace) { ++ put(Schema.Repository.ROW_ID, repository.id) ++ } ++ put(Schema.Repository.ROW_ENABLED, if (repository.enabled) 1 else 0) ++ put(Schema.Repository.ROW_DELETED, 0) ++ put(Schema.Repository.ROW_DATA, jsonGenerate(repository::serialize)) ++ } ++ ) ++ } ++ ++ fun put(repository: Repository): Repository { ++ val shouldReplace = repository.id >= 0L ++ val newId = putWithoutNotification(repository, shouldReplace) ++ val id = if (shouldReplace) repository.id else newId ++ notifyChanged(Subject.Repositories, Subject.Repository(id), Subject.Products) ++ return if (newId != repository.id) repository.copy(id = newId) else repository ++ } ++ ++ fun removeDuplicates() { ++ db.transaction { ++ val all = getAll() ++ val different = all.distinctBy { it.address } ++ val duplicates = all - different.toSet() ++ duplicates.forEach { ++ markAsDeleted(it.id) ++ } ++ } ++ } ++ ++ fun getStream(id: Long): Flow = flowOf(Unit) ++ .onCompletion { if (it == null) emitAll(flowCollection(Subject.Repositories)) } ++ .map { get(id) } ++ .flowOn(Dispatchers.IO) ++ ++ fun get(id: Long): Repository? { ++ return db.query( ++ Schema.Repository.name, ++ selection = Pair( ++ "${Schema.Repository.ROW_ID} = ? AND ${Schema.Repository.ROW_DELETED} == 0", ++ arrayOf(id.toString()) ++ ) ++ ).use { it.firstOrNull()?.let(::transform) } ++ } ++ ++ fun getAllStream(): Flow> = flowOf(Unit) ++ .onCompletion { if (it == null) emitAll(flowCollection(Subject.Repositories)) } ++ .map { getAll() } ++ .flowOn(Dispatchers.IO) ++ ++ fun getEnabledStream(): Flow> = flowOf(Unit) ++ .onCompletion { if (it == null) emitAll(flowCollection(Subject.Repositories)) } ++ .map { getEnabled() } ++ .flowOn(Dispatchers.IO) ++ ++ private suspend fun getEnabled(): List = withContext(Dispatchers.IO) { ++ db.query( ++ Schema.Repository.name, ++ selection = Pair( ++ "${Schema.Repository.ROW_ENABLED} != 0 AND " + ++ "${Schema.Repository.ROW_DELETED} == 0", ++ emptyArray() ++ ), ++ signal = null ++ ).use { it.asSequence().map(::transform).toList() } ++ } ++ ++ fun getAll(): List { ++ return db.query( ++ Schema.Repository.name, ++ selection = Pair("${Schema.Repository.ROW_DELETED} == 0", emptyArray()), ++ signal = null ++ ).use { it.asSequence().map(::transform).toList() } ++ } ++ ++ fun getAllRemovedStream(): Flow> = flowOf(Unit) ++ .onCompletion { if (it == null) emitAll(flowCollection(Subject.Repositories)) } ++ .map { getAllDisabledDeleted() } ++ .flowOn(Dispatchers.IO) ++ ++ private fun getAllDisabledDeleted(): Map { ++ return db.query( ++ Schema.Repository.name, ++ columns = arrayOf(Schema.Repository.ROW_ID, Schema.Repository.ROW_DELETED), ++ selection = Pair( ++ "${Schema.Repository.ROW_ENABLED} == 0 OR " + ++ "${Schema.Repository.ROW_DELETED} != 0", ++ emptyArray() ++ ), ++ signal = null ++ ).use { parentCursor -> ++ parentCursor.asSequence().associate { ++ val idIndex = it.getColumnIndexOrThrow(Schema.Repository.ROW_ID) ++ val isDeletedIndex = it.getColumnIndexOrThrow(Schema.Repository.ROW_DELETED) ++ it.getLong(idIndex) to (it.getInt(isDeletedIndex) != 0) ++ } ++ } ++ } ++ ++ fun markAsDeleted(id: Long) { ++ db.update( ++ Schema.Repository.name, ++ ContentValues().apply { ++ put(Schema.Repository.ROW_DELETED, 1) ++ }, ++ "${Schema.Repository.ROW_ID} = ?", ++ arrayOf(id.toString()) ++ ) ++ notifyChanged(Subject.Repositories, Subject.Repository(id), Subject.Products) ++ } ++ ++ fun cleanup(removedRepos: Map) { ++ val result = removedRepos.map { (id, isDeleted) -> ++ val idsString = id.toString() ++ val productsCount = db.delete( ++ Schema.Product.name, ++ "${Schema.Product.ROW_REPOSITORY_ID} IN ($idsString)", ++ null ++ ) ++ val categoriesCount = db.delete( ++ Schema.Category.name, ++ "${Schema.Category.ROW_REPOSITORY_ID} IN ($idsString)", ++ null ++ ) ++ if (isDeleted) { ++ db.delete( ++ Schema.Repository.name, ++ "${Schema.Repository.ROW_ID} IN ($id)", ++ null ++ ) ++ } ++ productsCount != 0 || categoriesCount != 0 ++ } ++ if (result.any { it }) { ++ notifyChanged(Subject.Products) ++ } ++ } ++ ++ fun importRepos(list: List) { ++ db.transaction { ++ val currentAddresses = getAll().map { it.address } ++ val newRepos = list ++ .filter { it.address !in currentAddresses } ++ newRepos.forEach { put(it) } ++ removeDuplicates() ++ } ++ } ++ ++ fun query(signal: CancellationSignal?): Cursor { ++ return db.query( ++ Schema.Repository.name, ++ selection = Pair("${Schema.Repository.ROW_DELETED} == 0", emptyArray()), ++ orderBy = "${Schema.Repository.ROW_ENABLED} DESC", ++ signal = signal ++ ).observable(Subject.Repositories) ++ } ++ ++ fun transform(cursor: Cursor): Repository { ++ return cursor.getBlob(cursor.getColumnIndexOrThrow(Schema.Repository.ROW_DATA)) ++ .jsonParse { ++ it.repository().apply { ++ this.id = ++ cursor.getLong(cursor.getColumnIndexOrThrow(Schema.Repository.ROW_ID)) ++ } ++ } ++ } ++ } ++ ++ object ProductAdapter { ++ ++ fun getStream(packageName: String): Flow> = flowOf(Unit) ++ .onCompletion { if (it == null) emitAll(flowCollection(Subject.Products)) } ++ .map { get(packageName, null) } ++ .flowOn(Dispatchers.IO) ++ ++ suspend fun getUpdates(): List = withContext(Dispatchers.IO) { ++ query( ++ installed = true, ++ updates = true, ++ searchQuery = "", ++ section = ProductItem.Section.All, ++ order = SortOrder.NAME, ++ signal = null ++ ).use { ++ it.asSequence() ++ .map(ProductAdapter::transformItem) ++ .toList() ++ } ++ } ++ ++ fun getUpdatesStream(): Flow> = flowOf(Unit) ++ .onCompletion { if (it == null) emitAll(flowCollection(Subject.Products)) } ++ // Crashes due to immediate retrieval of data? ++ .onEach { delay(50) } ++ .map { getUpdates() } ++ .flowOn(Dispatchers.IO) ++ ++ fun get(packageName: String, signal: CancellationSignal?): List { ++ return db.query( ++ Schema.Product.name, ++ columns = arrayOf( ++ Schema.Product.ROW_REPOSITORY_ID, ++ Schema.Product.ROW_DESCRIPTION, ++ Schema.Product.ROW_DATA ++ ), ++ selection = Pair("${Schema.Product.ROW_PACKAGE_NAME} = ?", arrayOf(packageName)), ++ signal = signal ++ ).use { it.asSequence().map(::transform).toList() } ++ } ++ ++ fun getCountStream(repositoryId: Long): Flow = flowOf(Unit) ++ .onCompletion { if (it == null) emitAll(flowCollection(Subject.Products)) } ++ .map { getCount(repositoryId) } ++ .flowOn(Dispatchers.IO) ++ ++ private fun getCount(repositoryId: Long): Int { ++ return db.query( ++ Schema.Product.name, ++ columns = arrayOf("COUNT (*)"), ++ selection = Pair( ++ "${Schema.Product.ROW_REPOSITORY_ID} = ?", ++ arrayOf(repositoryId.toString()) ++ ) ++ ).use { it.firstOrNull()?.getInt(0) ?: 0 } ++ } ++ ++ fun query( ++ installed: Boolean, ++ updates: Boolean, ++ searchQuery: String, ++ section: ProductItem.Section, ++ order: SortOrder, ++ signal: CancellationSignal? ++ ): Cursor { ++ val builder = QueryBuilder() ++ ++ val signatureMatches = """installed.${Schema.Installed.ROW_SIGNATURE} IS NOT NULL AND ++ product.${Schema.Product.ROW_SIGNATURES} LIKE ('%.' || installed.${Schema.Installed.ROW_SIGNATURE} || '.%') AND ++ product.${Schema.Product.ROW_SIGNATURES} != ''""" ++ ++ builder += """SELECT product.rowid AS _id, product.${Schema.Product.ROW_REPOSITORY_ID}, ++ product.${Schema.Product.ROW_PACKAGE_NAME}, product.${Schema.Product.ROW_NAME}, ++ product.${Schema.Product.ROW_SUMMARY}, installed.${Schema.Installed.ROW_VERSION}, ++ (COALESCE(lock.${Schema.Lock.ROW_VERSION_CODE}, -1) NOT IN (0, product.${Schema.Product.ROW_VERSION_CODE}) AND ++ product.${Schema.Product.ROW_COMPATIBLE} != 0 AND product.${Schema.Product.ROW_VERSION_CODE} > ++ COALESCE(installed.${Schema.Installed.ROW_VERSION_CODE}, 0xffffffff) AND $signatureMatches) ++ AS ${Schema.Synthetic.ROW_CAN_UPDATE}, product.${Schema.Product.ROW_COMPATIBLE}, ++ product.${Schema.Product.ROW_DATA_ITEM},""" ++ ++ if (searchQuery.isNotEmpty()) { ++ builder += """(((product.${Schema.Product.ROW_NAME} LIKE ? OR ++ product.${Schema.Product.ROW_SUMMARY} LIKE ?) * 7) | ++ ((product.${Schema.Product.ROW_PACKAGE_NAME} LIKE ?) * 3) | ++ (product.${Schema.Product.ROW_DESCRIPTION} LIKE ?)) AS ${Schema.Synthetic.ROW_MATCH_RANK},""" ++ builder %= List(4) { "%$searchQuery%" } ++ } else { ++ builder += "0 AS ${Schema.Synthetic.ROW_MATCH_RANK}," ++ } ++ ++ builder += """MAX((product.${Schema.Product.ROW_COMPATIBLE} AND ++ (installed.${Schema.Installed.ROW_SIGNATURE} IS NULL OR $signatureMatches)) || ++ PRINTF('%016X', product.${Schema.Product.ROW_VERSION_CODE})) FROM ${Schema.Product.name} AS product""" ++ builder += """JOIN ${Schema.Repository.name} AS repository ++ ON product.${Schema.Product.ROW_REPOSITORY_ID} = repository.${Schema.Repository.ROW_ID}""" ++ builder += """LEFT JOIN ${Schema.Lock.name} AS lock ++ ON product.${Schema.Product.ROW_PACKAGE_NAME} = lock.${Schema.Lock.ROW_PACKAGE_NAME}""" ++ ++ if (!installed && !updates) { ++ builder += "LEFT" ++ } ++ builder += """JOIN ${Schema.Installed.name} AS installed ++ ON product.${Schema.Product.ROW_PACKAGE_NAME} = installed.${Schema.Installed.ROW_PACKAGE_NAME}""" ++ ++ if (section is ProductItem.Section.Category) { ++ builder += """JOIN ${Schema.Category.name} AS category ++ ON product.${Schema.Product.ROW_PACKAGE_NAME} = category.${Schema.Product.ROW_PACKAGE_NAME}""" ++ } ++ ++ builder += """WHERE repository.${Schema.Repository.ROW_ENABLED} != 0 AND ++ repository.${Schema.Repository.ROW_DELETED} == 0""" ++ ++ if (section is ProductItem.Section.Category) { ++ builder += "AND category.${Schema.Category.ROW_NAME} = ?" ++ builder %= section.name ++ } else if (section is ProductItem.Section.Repository) { ++ builder += "AND product.${Schema.Product.ROW_REPOSITORY_ID} = ?" ++ builder %= section.id.toString() ++ } ++ ++ if (searchQuery.isNotEmpty()) { ++ builder += """AND ${Schema.Synthetic.ROW_MATCH_RANK} > 0""" ++ } ++ ++ builder += "GROUP BY product.${Schema.Product.ROW_PACKAGE_NAME} HAVING 1" ++ ++ if (updates) { ++ builder += "AND ${Schema.Synthetic.ROW_CAN_UPDATE}" ++ } ++ builder += "ORDER BY" ++ ++ if (searchQuery.isNotEmpty()) { ++ builder += """${Schema.Synthetic.ROW_MATCH_RANK} DESC,""" ++ } ++ ++ when (order) { ++ SortOrder.UPDATED -> builder += "product.${Schema.Product.ROW_UPDATED} DESC," ++ SortOrder.ADDED -> builder += "product.${Schema.Product.ROW_ADDED} DESC," ++ SortOrder.NAME -> Unit ++ }::class ++ builder += "product.${Schema.Product.ROW_NAME} COLLATE LOCALIZED ASC" ++ ++ return builder.query(db, signal).observable(Subject.Products) ++ } ++ ++ private fun transform(cursor: Cursor): Product { ++ return cursor.getBlob(cursor.getColumnIndexOrThrow(Schema.Product.ROW_DATA)) ++ .jsonParse { ++ it.product().apply { ++ this.repositoryId = cursor ++ .getLong(cursor.getColumnIndexOrThrow(Schema.Product.ROW_REPOSITORY_ID)) ++ this.description = cursor ++ .getString(cursor.getColumnIndexOrThrow(Schema.Product.ROW_DESCRIPTION)) ++ } ++ } ++ } ++ ++ fun transformItem(cursor: Cursor): ProductItem { ++ return cursor.getBlob(cursor.getColumnIndexOrThrow(Schema.Product.ROW_DATA_ITEM)) ++ .jsonParse { ++ it.productItem().apply { ++ this.repositoryId = cursor ++ .getLong(cursor.getColumnIndexOrThrow(Schema.Product.ROW_REPOSITORY_ID)) ++ this.packageName = cursor ++ .getString(cursor.getColumnIndexOrThrow(Schema.Product.ROW_PACKAGE_NAME)) ++ this.name = cursor ++ .getString(cursor.getColumnIndexOrThrow(Schema.Product.ROW_NAME)) ++ this.summary = cursor ++ .getString(cursor.getColumnIndexOrThrow(Schema.Product.ROW_SUMMARY)) ++ this.installedVersion = cursor ++ .getString(cursor.getColumnIndexOrThrow(Schema.Installed.ROW_VERSION)) ++ .orEmpty() ++ this.compatible = cursor ++ .getInt(cursor.getColumnIndexOrThrow(Schema.Product.ROW_COMPATIBLE)) != 0 ++ this.canUpdate = cursor ++ .getInt(cursor.getColumnIndexOrThrow(Schema.Synthetic.ROW_CAN_UPDATE)) != 0 ++ this.matchRank = cursor ++ .getInt(cursor.getColumnIndexOrThrow(Schema.Synthetic.ROW_MATCH_RANK)) ++ } ++ } ++ } ++ } ++ ++ object CategoryAdapter { ++ ++ fun getAllStream(): Flow> = flowOf(Unit) ++ .onCompletion { if (it == null) emitAll(flowCollection(Subject.Products)) } ++ .map { getAll() } ++ .flowOn(Dispatchers.IO) ++ ++ private suspend fun getAll(): Set = withContext(Dispatchers.IO) { ++ val builder = QueryBuilder() ++ ++ builder += """SELECT DISTINCT category.${Schema.Category.ROW_NAME} ++ FROM ${Schema.Category.name} AS category ++ JOIN ${Schema.Repository.name} AS repository ++ ON category.${Schema.Category.ROW_REPOSITORY_ID} = repository.${Schema.Repository.ROW_ID} ++ WHERE repository.${Schema.Repository.ROW_ENABLED} != 0 AND ++ repository.${Schema.Repository.ROW_DELETED} == 0""" ++ ++ builder.query(db, null).use { cursor -> ++ cursor.asSequence().map { ++ it.getString(it.getColumnIndexOrThrow(Schema.Category.ROW_NAME)) ++ }.toSet() ++ } ++ } ++ } ++ ++ object InstalledAdapter { ++ ++ fun getStream(packageName: String): Flow = flowOf(Unit) ++ .onCompletion { if (it == null) emitAll(flowCollection(Subject.Products)) } ++ .map { get(packageName, null) } ++ .flowOn(Dispatchers.IO) ++ ++ fun get(packageName: String, signal: CancellationSignal?): InstalledItem? { ++ return db.query( ++ Schema.Installed.name, ++ columns = arrayOf( ++ Schema.Installed.ROW_PACKAGE_NAME, ++ Schema.Installed.ROW_VERSION, ++ Schema.Installed.ROW_VERSION_CODE, ++ Schema.Installed.ROW_SIGNATURE ++ ), ++ selection = Pair("${Schema.Installed.ROW_PACKAGE_NAME} = ?", arrayOf(packageName)), ++ signal = signal ++ ).use { it.firstOrNull()?.let(::transform) } ++ } ++ ++ private fun put(installedItem: InstalledItem, notify: Boolean) { ++ db.insertOrReplace( ++ true, ++ Schema.Installed.name, ++ ContentValues().apply { ++ put(Schema.Installed.ROW_PACKAGE_NAME, installedItem.packageName) ++ put(Schema.Installed.ROW_VERSION, installedItem.version) ++ put(Schema.Installed.ROW_VERSION_CODE, installedItem.versionCode) ++ put(Schema.Installed.ROW_SIGNATURE, installedItem.signature) ++ } ++ ) ++ if (notify) { ++ notifyChanged(Subject.Products) ++ } ++ } ++ ++ fun put(installedItem: InstalledItem) = put(installedItem, true) ++ ++ fun putAll(installedItems: List) { ++ db.transaction { ++ db.delete(Schema.Installed.name, null, null) ++ installedItems.forEach { put(it, false) } ++ } ++ } ++ ++ fun delete(packageName: String) { ++ val count = db.delete( ++ Schema.Installed.name, ++ "${Schema.Installed.ROW_PACKAGE_NAME} = ?", ++ arrayOf(packageName) ++ ) ++ if (count > 0) { ++ notifyChanged(Subject.Products) ++ } ++ } ++ ++ private fun transform(cursor: Cursor): InstalledItem { ++ return InstalledItem( ++ cursor.getString(cursor.getColumnIndexOrThrow(Schema.Installed.ROW_PACKAGE_NAME)), ++ cursor.getString(cursor.getColumnIndexOrThrow(Schema.Installed.ROW_VERSION)), ++ cursor.getLong(cursor.getColumnIndexOrThrow(Schema.Installed.ROW_VERSION_CODE)), ++ cursor.getString(cursor.getColumnIndexOrThrow(Schema.Installed.ROW_SIGNATURE)) ++ ) ++ } ++ } ++ ++ object LockAdapter { ++ private fun put(lock: Pair, notify: Boolean) { ++ db.insertOrReplace( ++ true, ++ Schema.Lock.name, ++ ContentValues().apply { ++ put(Schema.Lock.ROW_PACKAGE_NAME, lock.first) ++ put(Schema.Lock.ROW_VERSION_CODE, lock.second) ++ } ++ ) ++ if (notify) { ++ notifyChanged(Subject.Products) ++ } ++ } ++ ++ fun put(lock: Pair) = put(lock, true) ++ ++ fun putAll(locks: List>) { ++ db.transaction { ++ db.delete(Schema.Lock.name, null, null) ++ locks.forEach { put(it, false) } ++ } ++ } ++ ++ fun delete(packageName: String) { ++ db.delete(Schema.Lock.name, "${Schema.Lock.ROW_PACKAGE_NAME} = ?", arrayOf(packageName)) ++ notifyChanged(Subject.Products) ++ } ++ } ++ ++ object UpdaterAdapter { ++ private val Table.temporaryName: String ++ get() = "${name}_temporary" ++ ++ fun createTemporaryTable() { ++ db.execSQL("DROP TABLE IF EXISTS ${Schema.Product.temporaryName}") ++ db.execSQL("DROP TABLE IF EXISTS ${Schema.Category.temporaryName}") ++ db.execSQL(Schema.Product.formatCreateTable(Schema.Product.temporaryName)) ++ db.execSQL(Schema.Category.formatCreateTable(Schema.Category.temporaryName)) ++ } ++ ++ fun putTemporary(products: List) { ++ db.transaction { ++ for (product in products) { ++ // Format signatures like ".signature1.signature2." for easier select ++ val signatures = product.signatures.joinToString { ".$it" } ++ .let { if (it.isNotEmpty()) "$it." else "" } ++ db.insertOrReplace( ++ true, ++ Schema.Product.temporaryName, ++ ContentValues().apply { ++ put(Schema.Product.ROW_REPOSITORY_ID, product.repositoryId) ++ put(Schema.Product.ROW_PACKAGE_NAME, product.packageName) ++ put(Schema.Product.ROW_NAME, product.name) ++ put(Schema.Product.ROW_SUMMARY, product.summary) ++ put(Schema.Product.ROW_DESCRIPTION, product.description) ++ put(Schema.Product.ROW_ADDED, product.added) ++ put(Schema.Product.ROW_UPDATED, product.updated) ++ put(Schema.Product.ROW_VERSION_CODE, product.versionCode) ++ put(Schema.Product.ROW_SIGNATURES, signatures) ++ put(Schema.Product.ROW_COMPATIBLE, if (product.compatible) 1 else 0) ++ put(Schema.Product.ROW_DATA, jsonGenerate(product::serialize)) ++ put( ++ Schema.Product.ROW_DATA_ITEM, ++ jsonGenerate(product.item()::serialize) ++ ) ++ } ++ ) ++ for (category in product.categories) { ++ db.insertOrReplace( ++ true, ++ Schema.Category.temporaryName, ++ ContentValues().apply { ++ put(Schema.Category.ROW_REPOSITORY_ID, product.repositoryId) ++ put(Schema.Category.ROW_PACKAGE_NAME, product.packageName) ++ put(Schema.Category.ROW_NAME, category) ++ } ++ ) ++ } ++ } ++ } ++ } ++ ++ fun finishTemporary(repository: Repository, success: Boolean) { ++ if (success) { ++ db.transaction { ++ db.delete( ++ Schema.Product.name, ++ "${Schema.Product.ROW_REPOSITORY_ID} = ?", ++ arrayOf(repository.id.toString()) ++ ) ++ db.delete( ++ Schema.Category.name, ++ "${Schema.Category.ROW_REPOSITORY_ID} = ?", ++ arrayOf(repository.id.toString()) ++ ) ++ db.execSQL( ++ "INSERT INTO ${Schema.Product.name} SELECT * " + ++ "FROM ${Schema.Product.temporaryName}" ++ ) ++ db.execSQL( ++ "INSERT INTO ${Schema.Category.name} SELECT * " + ++ "FROM ${Schema.Category.temporaryName}" ++ ) ++ RepositoryAdapter.putWithoutNotification(repository, true) ++ db.execSQL("DROP TABLE IF EXISTS ${Schema.Product.temporaryName}") ++ db.execSQL("DROP TABLE IF EXISTS ${Schema.Category.temporaryName}") ++ } ++ notifyChanged( ++ Subject.Repositories, ++ Subject.Repository(repository.id), ++ Subject.Products ++ ) ++ } else { ++ db.execSQL("DROP TABLE IF EXISTS ${Schema.Product.temporaryName}") ++ db.execSQL("DROP TABLE IF EXISTS ${Schema.Category.temporaryName}") ++ } ++ } ++ } ++} +Index: app/src/main/kotlin/com/leos/droidify/database/ObservableCursor.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/database/ObservableCursor.kt b/app/src/main/kotlin/com/leos/droidify/database/ObservableCursor.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/database/ObservableCursor.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,64 @@ ++package com.leos.droidify.database ++ ++import android.database.ContentObservable ++import android.database.ContentObserver ++import android.database.Cursor ++import android.database.CursorWrapper ++ ++class ObservableCursor( ++ cursor: Cursor, ++ private val observable: ( ++ register: Boolean, ++ observer: () -> Unit ++ ) -> Unit ++) : CursorWrapper(cursor) { ++ private var registered = false ++ private val contentObservable = ContentObservable() ++ ++ private val onChange: () -> Unit = { ++ contentObservable.dispatchChange(false, null) ++ } ++ ++ init { ++ observable(true, onChange) ++ registered = true ++ } ++ ++ override fun registerContentObserver(observer: ContentObserver) { ++ super.registerContentObserver(observer) ++ contentObservable.registerObserver(observer) ++ } ++ ++ override fun unregisterContentObserver(observer: ContentObserver) { ++ super.unregisterContentObserver(observer) ++ contentObservable.unregisterObserver(observer) ++ } ++ ++ @Deprecated("Deprecated in Java") ++ @Suppress("DEPRECATION") ++ override fun requery(): Boolean { ++ if (!registered) { ++ observable(true, onChange) ++ registered = true ++ } ++ return super.requery() ++ } ++ ++ @Deprecated("Deprecated in Java") ++ @Suppress("DEPRECATION") ++ override fun deactivate() { ++ super.deactivate() ++ deactivateOrClose() ++ } ++ ++ override fun close() { ++ super.close() ++ contentObservable.unregisterAll() ++ deactivateOrClose() ++ } ++ ++ private fun deactivateOrClose() { ++ observable(false, onChange) ++ registered = false ++ } ++} +Index: app/src/main/kotlin/com/leos/droidify/database/QueryBuilder.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/database/QueryBuilder.kt b/app/src/main/kotlin/com/leos/droidify/database/QueryBuilder.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/database/QueryBuilder.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,50 @@ ++package com.leos.droidify.database ++ ++import android.database.Cursor ++import android.database.sqlite.SQLiteDatabase ++import android.os.CancellationSignal ++import com.leos.core.common.extension.asSequence ++import com.leos.core.common.log ++import com.leos.droidify.BuildConfig ++ ++class QueryBuilder { ++ companion object { ++ fun trimQuery(query: String): String { ++ return query.lines().map { it.trim() }.filter { it.isNotEmpty() } ++ .joinToString(separator = " ") ++ } ++ } ++ ++ private val builder = StringBuilder() ++ private val arguments = mutableListOf() ++ ++ operator fun plusAssign(query: String) { ++ if (builder.isNotEmpty()) { ++ builder.append(" ") ++ } ++ builder.append(trimQuery(query)) ++ } ++ ++ operator fun remAssign(argument: String) { ++ this.arguments += argument ++ } ++ ++ operator fun remAssign(arguments: List) { ++ this.arguments += arguments ++ } ++ ++ fun query(db: SQLiteDatabase, signal: CancellationSignal?): Cursor { ++ val query = builder.toString() ++ val arguments = arguments.toTypedArray() ++ if (BuildConfig.DEBUG) { ++ synchronized(QueryBuilder::class.java) { ++ log(query) ++ db.rawQuery("EXPLAIN QUERY PLAN $query", arguments).use { ++ it.asSequence() ++ .forEach { log(":: ${it.getString(it.getColumnIndex("detail"))}") } ++ } ++ } ++ } ++ return db.rawQuery(query, arguments, signal) ++ } ++} +Index: app/src/main/kotlin/com/leos/droidify/database/QueryLoader.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/database/QueryLoader.kt b/app/src/main/kotlin/com/leos/droidify/database/QueryLoader.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/database/QueryLoader.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,94 @@ ++package com.leos.droidify.database ++ ++import android.content.Context ++import android.database.Cursor ++import android.os.CancellationSignal ++import android.os.OperationCanceledException ++import androidx.loader.content.AsyncTaskLoader ++ ++class QueryLoader(context: Context, private val query: (CancellationSignal) -> Cursor?) : ++ AsyncTaskLoader(context) { ++ private val observer = ForceLoadContentObserver() ++ private var cancellationSignal: CancellationSignal? = null ++ private var cursor: Cursor? = null ++ ++ override fun loadInBackground(): Cursor? { ++ val cancellationSignal = synchronized(this) { ++ if (isLoadInBackgroundCanceled) { ++ throw OperationCanceledException() ++ } ++ val cancellationSignal = CancellationSignal() ++ this.cancellationSignal = cancellationSignal ++ cancellationSignal ++ } ++ try { ++ val cursor = query(cancellationSignal) ++ if (cursor != null) { ++ try { ++ cursor.count // Ensure the cursor window is filled ++ cursor.registerContentObserver(observer) ++ } catch (e: Exception) { ++ cursor.close() ++ throw e ++ } ++ } ++ return cursor ++ } finally { ++ synchronized(this) { ++ this.cancellationSignal = null ++ } ++ } ++ } ++ ++ override fun cancelLoadInBackground() { ++ super.cancelLoadInBackground() ++ ++ synchronized(this) { ++ cancellationSignal?.cancel() ++ } ++ } ++ ++ override fun deliverResult(data: Cursor?) { ++ if (isReset) { ++ data?.close() ++ } else { ++ val oldCursor = cursor ++ cursor = data ++ if (isStarted) { ++ super.deliverResult(data) ++ } ++ if (oldCursor != data) { ++ oldCursor.closeIfNeeded() ++ } ++ } ++ } ++ ++ override fun onStartLoading() { ++ cursor?.let(this::deliverResult) ++ if (takeContentChanged() || cursor == null) { ++ forceLoad() ++ } ++ } ++ ++ override fun onStopLoading() { ++ cancelLoad() ++ } ++ ++ override fun onCanceled(data: Cursor?) { ++ data.closeIfNeeded() ++ } ++ ++ override fun onReset() { ++ super.onReset() ++ ++ stopLoading() ++ cursor.closeIfNeeded() ++ cursor = null ++ } ++ ++ private fun Cursor?.closeIfNeeded() { ++ if (this != null && !isClosed) { ++ close() ++ } ++ } ++} +Index: app/src/main/kotlin/com/leos/droidify/database/RepositoryExporter.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/database/RepositoryExporter.kt b/app/src/main/kotlin/com/leos/droidify/database/RepositoryExporter.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/database/RepositoryExporter.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,73 @@ ++package com.leos.droidify.database ++ ++import android.content.Context ++import android.net.Uri ++import com.fasterxml.jackson.core.JsonToken ++import com.leos.core.common.Exporter ++import com.leos.core.common.extension.Json ++import com.leos.core.common.extension.forEach ++import com.leos.core.common.extension.forEachKey ++import com.leos.core.common.extension.parseDictionary ++import com.leos.core.common.extension.writeArray ++import com.leos.core.common.extension.writeDictionary ++import com.leos.core.di.ApplicationScope ++import com.leos.core.di.IoDispatcher ++import com.leos.core.domain.Repository ++import com.leos.droidify.utility.serialization.repository ++import com.leos.droidify.utility.serialization.serialize ++import dagger.hilt.android.qualifiers.ApplicationContext ++import javax.inject.Inject ++import javax.inject.Singleton ++import kotlinx.coroutines.CoroutineDispatcher ++import kotlinx.coroutines.CoroutineScope ++import kotlinx.coroutines.launch ++import kotlinx.coroutines.withContext ++ ++@Singleton ++class RepositoryExporter @Inject constructor( ++ @ApplicationContext private val context: Context, ++ @ApplicationScope private val scope: CoroutineScope, ++ @IoDispatcher private val ioDispatcher: CoroutineDispatcher ++) : Exporter> { ++ override suspend fun export(item: List, target: Uri) { ++ scope.launch(ioDispatcher) { ++ val stream = context.contentResolver.openOutputStream(target) ++ Json.factory.createGenerator(stream).use { generator -> ++ generator.writeDictionary { ++ writeArray("repositories") { ++ item.map { ++ it.copy( ++ id = -1, ++ mirrors = if (it.enabled) it.mirrors else emptyList(), ++ lastModified = "", ++ entityTag = "" ++ ) ++ }.forEach { repo -> ++ writeDictionary { ++ repo.serialize(this) ++ } ++ } ++ } ++ } ++ } ++ } ++ } ++ ++ override suspend fun import(target: Uri): List = withContext(ioDispatcher) { ++ val list = mutableListOf() ++ val stream = context.contentResolver.openInputStream(target) ++ Json.factory.createParser(stream).use { generator -> ++ generator?.parseDictionary { ++ forEachKey { ++ if (it.array("repositories")) { ++ forEach(JsonToken.START_OBJECT) { ++ val repo = repository() ++ list.add(repo) ++ } ++ } ++ } ++ } ++ } ++ list ++ } ++} +Index: app/src/main/kotlin/com/leos/droidify/graphics/DrawableWrapper.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/graphics/DrawableWrapper.kt b/app/src/main/kotlin/com/leos/droidify/graphics/DrawableWrapper.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/graphics/DrawableWrapper.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,57 @@ ++package com.leos.droidify.graphics ++ ++import android.graphics.Canvas ++import android.graphics.ColorFilter ++import android.graphics.Rect ++import android.graphics.drawable.Drawable ++ ++open class DrawableWrapper(val drawable: Drawable) : Drawable() { ++ init { ++ drawable.callback = object : Callback { ++ override fun invalidateDrawable(who: Drawable) { ++ callback?.invalidateDrawable(who) ++ } ++ ++ override fun scheduleDrawable(who: Drawable, what: Runnable, `when`: Long) { ++ callback?.scheduleDrawable(who, what, `when`) ++ } ++ ++ override fun unscheduleDrawable(who: Drawable, what: Runnable) { ++ callback?.unscheduleDrawable(who, what) ++ } ++ } ++ } ++ ++ override fun onBoundsChange(bounds: Rect) { ++ drawable.bounds = bounds ++ } ++ ++ override fun getIntrinsicWidth(): Int = drawable.intrinsicWidth ++ override fun getIntrinsicHeight(): Int = drawable.intrinsicHeight ++ override fun getMinimumWidth(): Int = drawable.minimumWidth ++ override fun getMinimumHeight(): Int = drawable.minimumHeight ++ ++ override fun draw(canvas: Canvas) { ++ drawable.draw(canvas) ++ } ++ ++ override fun getAlpha(): Int { ++ return drawable.alpha ++ } ++ ++ override fun setAlpha(alpha: Int) { ++ drawable.alpha = alpha ++ } ++ ++ override fun getColorFilter(): ColorFilter? { ++ return drawable.colorFilter ++ } ++ ++ override fun setColorFilter(colorFilter: ColorFilter?) { ++ drawable.colorFilter = colorFilter ++ } ++ ++ @Deprecated("Deprecated in Java") ++ @Suppress("DEPRECATION") ++ override fun getOpacity(): Int = drawable.opacity ++} +Index: app/src/main/kotlin/com/leos/droidify/graphics/PaddingDrawable.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/graphics/PaddingDrawable.kt b/app/src/main/kotlin/com/leos/droidify/graphics/PaddingDrawable.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/graphics/PaddingDrawable.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,30 @@ ++package com.leos.droidify.graphics ++ ++import android.graphics.Rect ++import android.graphics.drawable.Drawable ++import kotlin.math.roundToInt ++ ++class PaddingDrawable( ++ drawable: Drawable, ++ private val horizontalFactor: Float, ++ private val aspectRatio: Float = 16f / 9f ++) : DrawableWrapper(drawable) { ++ override fun getIntrinsicWidth(): Int = ++ (horizontalFactor * super.getIntrinsicWidth()).roundToInt() ++ ++ override fun getIntrinsicHeight(): Int = ++ ((horizontalFactor * aspectRatio) * super.getIntrinsicHeight()).roundToInt() ++ ++ override fun onBoundsChange(bounds: Rect) { ++ val width = (bounds.width() / horizontalFactor).roundToInt() ++ val height = (bounds.height() / (horizontalFactor * aspectRatio)).roundToInt() ++ val left = (bounds.width() - width) / 2 ++ val top = (bounds.height() - height) / 2 ++ drawable.setBounds( ++ bounds.left + left, ++ bounds.top + top, ++ bounds.left + left + width, ++ bounds.top + top + height ++ ) ++ } ++} +Index: app/src/main/kotlin/com/leos/droidify/index/IndexMerger.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/index/IndexMerger.kt b/app/src/main/kotlin/com/leos/droidify/index/IndexMerger.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/index/IndexMerger.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,115 @@ ++package com.leos.droidify.index ++ ++import android.content.ContentValues ++import android.database.sqlite.SQLiteDatabase ++import com.fasterxml.jackson.core.JsonToken ++import com.leos.core.common.extension.Json ++import com.leos.core.common.extension.asSequence ++import com.leos.core.common.extension.collectNotNull ++import com.leos.core.common.extension.execWithResult ++import com.leos.core.common.extension.writeDictionary ++import com.leos.core.domain.Product ++import com.leos.core.domain.Release ++import com.leos.droidify.utility.serialization.product ++import com.leos.droidify.utility.serialization.release ++import com.leos.droidify.utility.serialization.serialize ++import java.io.ByteArrayOutputStream ++import java.io.Closeable ++import java.io.File ++ ++class IndexMerger(file: File) : Closeable { ++ private val db = SQLiteDatabase.openOrCreateDatabase(file, null) ++ ++ init { ++ db.execWithResult("PRAGMA synchronous = OFF") ++ db.execWithResult("PRAGMA journal_mode = OFF") ++ db.execSQL( ++ "CREATE TABLE product (" + ++ "package_name TEXT PRIMARY KEY," + ++ "description TEXT NOT NULL, " + ++ "data BLOB NOT NULL)" ++ ) ++ db.execSQL("CREATE TABLE releases (package_name TEXT PRIMARY KEY, data BLOB NOT NULL)") ++ db.beginTransaction() ++ } ++ ++ fun addProducts(products: List) { ++ for (product in products) { ++ val outputStream = ByteArrayOutputStream() ++ Json.factory.createGenerator(outputStream) ++ .use { it.writeDictionary(product::serialize) } ++ db.insert( ++ "product", ++ null, ++ ContentValues().apply { ++ put("package_name", product.packageName) ++ put("description", product.description) ++ put("data", outputStream.toByteArray()) ++ } ++ ) ++ } ++ } ++ ++ fun addReleases(pairs: List>>) { ++ for (pair in pairs) { ++ val (packageName, releases) = pair ++ val outputStream = ByteArrayOutputStream() ++ Json.factory.createGenerator(outputStream).use { ++ it.writeStartArray() ++ for (release in releases) { ++ it.writeDictionary(release::serialize) ++ } ++ it.writeEndArray() ++ } ++ db.insert( ++ "releases", ++ null, ++ ContentValues().apply { ++ put("package_name", packageName) ++ put("data", outputStream.toByteArray()) ++ } ++ ) ++ } ++ } ++ ++ private fun closeTransaction() { ++ if (db.inTransaction()) { ++ db.setTransactionSuccessful() ++ db.endTransaction() ++ } ++ } ++ ++ fun forEach(repositoryId: Long, windowSize: Int, callback: (List, Int) -> Unit) { ++ closeTransaction() ++ db.rawQuery( ++ """SELECT product.description, product.data AS pd, releases.data AS rd FROM product ++ LEFT JOIN releases ON product.package_name = releases.package_name""", ++ null ++ )?.use { cursor -> ++ cursor.asSequence().map { currentCursor -> ++ val description = currentCursor.getString(0) ++ val product = Json.factory.createParser(currentCursor.getBlob(1)).use { ++ it.nextToken() ++ it.product().apply { ++ this.repositoryId = repositoryId ++ this.description = description ++ } ++ } ++ val releases = currentCursor.getBlob(2)?.let { bytes -> ++ Json.factory.createParser(bytes).use { ++ it.nextToken() ++ it.collectNotNull( ++ JsonToken.START_OBJECT ++ ) { release() } ++ } ++ }.orEmpty() ++ product.copy(releases = releases) ++ }.windowed(windowSize, windowSize, true) ++ .forEach { products -> callback(products, cursor.count) } ++ } ++ } ++ ++ override fun close() { ++ db.use { closeTransaction() } ++ } ++} +Index: app/src/main/kotlin/com/leos/droidify/index/IndexV1Parser.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/index/IndexV1Parser.kt b/app/src/main/kotlin/com/leos/droidify/index/IndexV1Parser.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/index/IndexV1Parser.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,489 @@ ++package com.leos.droidify.index ++ ++import android.content.res.Resources ++import androidx.core.os.ConfigurationCompat.getLocales ++import androidx.core.os.LocaleListCompat ++import com.fasterxml.jackson.core.JsonParser ++import com.fasterxml.jackson.core.JsonToken ++import com.leos.core.common.SdkCheck ++import com.leos.core.common.extension.Json ++import com.leos.core.common.extension.collectDistinctNotEmptyStrings ++import com.leos.core.common.extension.collectNotNull ++import com.leos.core.common.extension.forEach ++import com.leos.core.common.extension.forEachKey ++import com.leos.core.common.extension.illegal ++import com.leos.core.common.nullIfEmpty ++import com.leos.core.domain.Product ++import com.leos.core.domain.Release ++import java.io.InputStream ++ ++object IndexV1Parser { ++ interface Callback { ++ fun onRepository( ++ mirrors: List, ++ name: String, ++ description: String, ++ version: Int, ++ timestamp: Long ++ ) ++ ++ fun onProduct(product: Product) ++ fun onReleases(packageName: String, releases: List) ++ } ++ ++ private class Screenshots( ++ val phone: List, ++ val smallTablet: List, ++ val largeTablet: List ++ ) ++ ++ private class Localized( ++ val name: String, ++ val summary: String, ++ val description: String, ++ val whatsNew: String, ++ val metadataIcon: String, ++ val screenshots: Screenshots? ++ ) ++ ++ private fun Map.getAndCall( ++ key: String, ++ callback: (String, Localized) -> T? ++ ): T? { ++ return this[key]?.let { callback(key, it) } ++ } ++ ++ /** ++ * Gets the best localization for the given [localeList] ++ * from collections. ++ */ ++ private fun Map?.getBestLocale(localeList: LocaleListCompat): T? { ++ if (isNullOrEmpty()) return null ++ val firstMatch = localeList.getFirstMatch(keys.toTypedArray()) ?: return null ++ val tag = firstMatch.toLanguageTag() ++ // try first matched tag first (usually has region tag, e.g. de-DE) ++ return get(tag) ?: run { ++ // split away stuff like script and try language and region only ++ val langCountryTag = "${firstMatch.language}-${firstMatch.country}" ++ getOrStartsWith(langCountryTag) ?: run { ++ // split away region tag and try language only ++ val langTag = firstMatch.language ++ // try language, then English and then just take the first of the list ++ getOrStartsWith(langTag) ?: get("en-US") ?: get("en") ?: values.first() ++ } ++ } ++ } ++ ++ /** ++ * Returns the value from the map with the given key or if that key is not contained in the map, ++ * tries the first map key that starts with the given key. ++ * If nothing matches, null is returned. ++ * ++ * This is useful when looking for a language tag like `fr_CH` and falling back to `fr` ++ * in a map that has `fr_FR` as a key. ++ */ ++ private fun Map.getOrStartsWith(s: String): T? = get(s) ?: run { ++ entries.forEach { (key, value) -> ++ if (key.startsWith(s)) return value ++ } ++ return null ++ } ++ ++ private fun Map.find(callback: (String, Localized) -> T?): T? { ++ return getAndCall("en-US", callback) ?: getAndCall("en_US", callback) ?: getAndCall( ++ "en", ++ callback ++ ) ++ } ++ ++ private fun Map.findLocalized(callback: (Localized) -> T?): T? { ++ return getBestLocale(getLocales(Resources.getSystem().configuration))?.let { callback(it) } ++ } ++ ++ private fun Map.findString( ++ fallback: String, ++ callback: (Localized) -> String ++ ): String { ++ return (find { _, localized -> callback(localized).nullIfEmpty() } ?: fallback).trim() ++ } ++ ++ private fun Map.findLocalizedString( ++ fallback: String, ++ callback: (Localized) -> String ++ ): String { ++ // @BLumia: it's possible a key of a certain Localized object is empty, so we still need a fallback ++ return ( ++ findLocalized { localized -> callback(localized).trim().nullIfEmpty() } ?: findString( ++ fallback, ++ callback ++ ) ++ ).trim() ++ } ++ ++ internal object DonateComparator : Comparator { ++ private val classes = listOf( ++ Product.Donate.Regular::class, ++ Product.Donate.Bitcoin::class, ++ Product.Donate.Litecoin::class, ++ Product.Donate.Flattr::class, ++ Product.Donate.Liberapay::class, ++ Product.Donate.OpenCollective::class ++ ) ++ ++ override fun compare(donate1: Product.Donate, donate2: Product.Donate): Int { ++ val index1 = classes.indexOf(donate1::class) ++ val index2 = classes.indexOf(donate2::class) ++ return when { ++ index1 >= 0 && index2 == -1 -> -1 ++ index2 >= 0 && index1 == -1 -> 1 ++ else -> index1.compareTo(index2) ++ } ++ } ++ } ++ ++ fun parse(repositoryId: Long, inputStream: InputStream, callback: Callback) { ++ val jsonParser = Json.factory.createParser(inputStream) ++ if (jsonParser.nextToken() != JsonToken.START_OBJECT) { ++ jsonParser.illegal() ++ } else { ++ jsonParser.forEachKey { it -> ++ when { ++ it.dictionary("repo") -> { ++ var address = "" ++ var mirrors = emptyList() ++ var name = "" ++ var description = "" ++ var version = 0 ++ var timestamp = 0L ++ forEachKey { ++ when { ++ it.string("address") -> address = valueAsString ++ it.array("mirrors") -> mirrors = collectDistinctNotEmptyStrings() ++ it.string("name") -> name = valueAsString ++ it.string("description") -> description = valueAsString ++ it.number("version") -> version = valueAsInt ++ it.number("timestamp") -> timestamp = valueAsLong ++ else -> skipChildren() ++ } ++ } ++ val realMirrors = ( ++ if (address.isNotEmpty()) { ++ listOf(address) ++ } else { ++ emptyList() ++ } ++ ) + mirrors ++ callback.onRepository( ++ mirrors = realMirrors.distinct(), ++ name = name, ++ description = description, ++ version = version, ++ timestamp = timestamp ++ ) ++ } ++ ++ it.array("apps") -> forEach(JsonToken.START_OBJECT) { ++ val product = parseProduct(repositoryId) ++ callback.onProduct(product) ++ } ++ ++ it.dictionary("packages") -> forEachKey { ++ if (it.token == JsonToken.START_ARRAY) { ++ val packageName = it.key ++ val releases = collectNotNull(JsonToken.START_OBJECT) { parseRelease() } ++ callback.onReleases(packageName, releases) ++ } else { ++ skipChildren() ++ } ++ } ++ ++ else -> skipChildren() ++ } ++ } ++ } ++ } ++ ++ private fun JsonParser.parseProduct(repositoryId: Long): Product { ++ var packageName = "" ++ var nameFallback = "" ++ var summaryFallback = "" ++ var descriptionFallback = "" ++ var icon = "" ++ var authorName = "" ++ var authorEmail = "" ++ var authorWeb = "" ++ var source = "" ++ var changelog = "" ++ var web = "" ++ var tracker = "" ++ var added = 0L ++ var updated = 0L ++ var suggestedVersionCode = 0L ++ var categories = emptyList() ++ var antiFeatures = emptyList() ++ val licenses = mutableListOf() ++ val donates = mutableListOf() ++ val localizedMap = mutableMapOf() ++ forEachKey { it -> ++ when { ++ it.string("packageName") -> packageName = valueAsString ++ it.string("name") -> nameFallback = valueAsString ++ it.string("summary") -> summaryFallback = valueAsString ++ it.string("description") -> descriptionFallback = valueAsString ++ it.string("icon") -> icon = validateIcon(valueAsString) ++ it.string("authorName") -> authorName = valueAsString ++ it.string("authorEmail") -> authorEmail = valueAsString ++ it.string("authorWebSite") -> authorWeb = valueAsString ++ it.string("sourceCode") -> source = valueAsString ++ it.string("changelog") -> changelog = valueAsString ++ it.string("webSite") -> web = valueAsString ++ it.string("issueTracker") -> tracker = valueAsString ++ it.number("added") -> added = valueAsLong ++ it.number("lastUpdated") -> updated = valueAsLong ++ it.string("suggestedVersionCode") -> ++ suggestedVersionCode = ++ valueAsString.toLongOrNull() ?: 0L ++ ++ it.array("categories") -> categories = collectDistinctNotEmptyStrings() ++ it.array("antiFeatures") -> antiFeatures = collectDistinctNotEmptyStrings() ++ it.string("license") -> licenses += valueAsString.split(',') ++ .filter { it.isNotEmpty() } ++ ++ it.string("donate") -> donates += Product.Donate.Regular(valueAsString) ++ it.string("bitcoin") -> donates += Product.Donate.Bitcoin(valueAsString) ++ it.string("flattrID") -> donates += Product.Donate.Flattr(valueAsString) ++ it.string("liberapayID") -> donates += Product.Donate.Liberapay(valueAsString) ++ it.string("openCollective") -> donates += Product.Donate.OpenCollective( ++ valueAsString ++ ) ++ ++ it.dictionary("localized") -> forEachKey { it -> ++ if (it.token == JsonToken.START_OBJECT) { ++ val locale = it.key ++ var name = "" ++ var summary = "" ++ var description = "" ++ var whatsNew = "" ++ var metadataIcon = "" ++ var phone = emptyList() ++ var smallTablet = emptyList() ++ var largeTablet = emptyList() ++ forEachKey { ++ when { ++ it.string("name") -> name = valueAsString ++ it.string("summary") -> summary = valueAsString ++ it.string("description") -> description = valueAsString ++ it.string("whatsNew") -> whatsNew = valueAsString ++ it.string("icon") -> metadataIcon = valueAsString ++ it.array("phoneScreenshots") -> ++ phone = ++ collectDistinctNotEmptyStrings() ++ ++ it.array("sevenInchScreenshots") -> ++ smallTablet = ++ collectDistinctNotEmptyStrings() ++ ++ it.array("tenInchScreenshots") -> ++ largeTablet = ++ collectDistinctNotEmptyStrings() ++ ++ else -> skipChildren() ++ } ++ } ++ val screenshots = ++ if (sequenceOf( ++ phone, ++ smallTablet, ++ largeTablet ++ ).any { it.isNotEmpty() } ++ ) { ++ Screenshots(phone, smallTablet, largeTablet) ++ } else { ++ null ++ } ++ localizedMap[locale] = Localized( ++ name, ++ summary, ++ description, ++ whatsNew, ++ metadataIcon.nullIfEmpty()?.let { "$locale/$it" }.orEmpty(), ++ screenshots ++ ) ++ } else { ++ skipChildren() ++ } ++ } ++ ++ else -> skipChildren() ++ } ++ } ++ val name = localizedMap.findLocalizedString(nameFallback) { it.name } ++ val summary = localizedMap.findLocalizedString(summaryFallback) { it.summary } ++ val description = ++ localizedMap.findLocalizedString(descriptionFallback) { it.description }.replace( ++ "\n", ++ "
" ++ ) ++ val whatsNew = localizedMap.findLocalizedString("") { it.whatsNew }.replace("\n", "
") ++ val metadataIcon = localizedMap.findLocalizedString("") { it.metadataIcon }.ifEmpty { ++ localizedMap.firstNotNullOfOrNull { it.value.metadataIcon }.orEmpty() ++ } ++ val screenshotPairs = ++ localizedMap.find { key, localized -> localized.screenshots?.let { Pair(key, it) } } ++ val screenshots = screenshotPairs ++ ?.let { (key, screenshots) -> ++ screenshots.phone.asSequence() ++ .map { Product.Screenshot(key, Product.Screenshot.Type.PHONE, it) } + ++ screenshots.smallTablet.asSequence() ++ .map { ++ Product.Screenshot( ++ key, ++ Product.Screenshot.Type.SMALL_TABLET, ++ it ++ ) ++ } + ++ screenshots.largeTablet.asSequence() ++ .map { ++ Product.Screenshot( ++ key, ++ Product.Screenshot.Type.LARGE_TABLET, ++ it ++ ) ++ } ++ } ++ .orEmpty().toList() ++ return Product( ++ repositoryId, ++ packageName, ++ name, ++ summary, ++ description, ++ whatsNew, ++ icon, ++ metadataIcon, ++ Product.Author(authorName, authorEmail, authorWeb), ++ source, ++ changelog, ++ web, ++ tracker, ++ added, ++ updated, ++ suggestedVersionCode, ++ categories, ++ antiFeatures, ++ licenses, ++ donates.sortedWith(DonateComparator), ++ screenshots, ++ emptyList() ++ ) ++ } ++ ++ private fun JsonParser.parseRelease(): Release { ++ var version = "" ++ var versionCode = 0L ++ var added = 0L ++ var size = 0L ++ var minSdkVersion = 0 ++ var targetSdkVersion = 0 ++ var maxSdkVersion = 0 ++ var source = "" ++ var release = "" ++ var hash = "" ++ var hashTypeCandidate = "" ++ var signature = "" ++ var obbMain = "" ++ var obbMainHash = "" ++ var obbPatch = "" ++ var obbPatchHash = "" ++ val permissions = linkedSetOf() ++ var features = emptyList() ++ var platforms = emptyList() ++ forEachKey { ++ when { ++ it.string("versionName") -> version = valueAsString ++ it.number("versionCode") -> versionCode = valueAsLong ++ it.number("added") -> added = valueAsLong ++ it.number("size") -> size = valueAsLong ++ it.number("minSdkVersion") -> minSdkVersion = valueAsInt ++ it.number("targetSdkVersion") -> targetSdkVersion = valueAsInt ++ it.number("maxSdkVersion") -> maxSdkVersion = valueAsInt ++ it.string("srcname") -> source = valueAsString ++ it.string("apkName") -> release = valueAsString ++ it.string("hash") -> hash = valueAsString ++ it.string("hashType") -> hashTypeCandidate = valueAsString ++ it.string("sig") -> signature = valueAsString ++ it.string("obbMainFile") -> obbMain = valueAsString ++ it.string("obbMainFileSha256") -> obbMainHash = valueAsString ++ it.string("obbPatchFile") -> obbPatch = valueAsString ++ it.string("obbPatchFileSha256") -> obbPatchHash = valueAsString ++ it.array("uses-permission") -> collectPermissions(permissions, 0) ++ it.array("uses-permission-sdk-23") -> collectPermissions(permissions, 23) ++ it.array("features") -> features = collectDistinctNotEmptyStrings() ++ it.array("nativecode") -> platforms = collectDistinctNotEmptyStrings() ++ else -> skipChildren() ++ } ++ } ++ val hashType = ++ if (hash.isNotEmpty() && hashTypeCandidate.isEmpty()) "sha256" else hashTypeCandidate ++ val obbMainHashType = if (obbMainHash.isNotEmpty()) "sha256" else "" ++ val obbPatchHashType = if (obbPatchHash.isNotEmpty()) "sha256" else "" ++ return Release( ++ false, ++ version, ++ versionCode, ++ added, ++ size, ++ minSdkVersion, ++ targetSdkVersion, ++ maxSdkVersion, ++ source, ++ release, ++ hash, ++ hashType, ++ signature, ++ obbMain, ++ obbMainHash, ++ obbMainHashType, ++ obbPatch, ++ obbPatchHash, ++ obbPatchHashType, ++ permissions.toList(), ++ features, ++ platforms, ++ emptyList() ++ ) ++ } ++ ++ private fun JsonParser.collectPermissions(permissions: LinkedHashSet, minSdk: Int) { ++ forEach(JsonToken.START_ARRAY) { ++ val firstToken = nextToken() ++ val permission = if (firstToken == JsonToken.VALUE_STRING) valueAsString else "" ++ if (firstToken != JsonToken.END_ARRAY) { ++ val secondToken = nextToken() ++ val maxSdk = if (secondToken == JsonToken.VALUE_NUMBER_INT) valueAsInt else 0 ++ if (permission.isNotEmpty() && ++ SdkCheck.sdk >= minSdk && ( ++ maxSdk <= 0 || ++ SdkCheck.sdk <= maxSdk ++ ) ++ ) { ++ permissions.add(permission) ++ } ++ if (secondToken != JsonToken.END_ARRAY) { ++ while (true) { ++ val token = nextToken() ++ if (token == JsonToken.END_ARRAY) { ++ break ++ } else if (token.isStructStart) { ++ skipChildren() ++ } ++ } ++ } ++ } ++ } ++ } ++ ++ private fun validateIcon(icon: String): String { ++ return if (icon.endsWith(".xml")) "" else icon ++ } ++} +Index: app/src/main/kotlin/com/leos/droidify/index/RepositoryUpdater.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/index/RepositoryUpdater.kt b/app/src/main/kotlin/com/leos/droidify/index/RepositoryUpdater.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/index/RepositoryUpdater.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,460 @@ ++package com.leos.droidify.index ++ ++import android.content.Context ++import android.net.Uri ++import com.leos.core.common.SdkCheck ++import com.leos.core.common.cache.Cache ++import com.leos.core.common.extension.fingerprint ++import com.leos.core.common.extension.toFormattedString ++import com.leos.core.common.result.Result ++import com.leos.core.domain.Product ++import com.leos.core.domain.Release ++import com.leos.core.domain.Repository ++import com.leos.droidify.database.Database ++import com.leos.droidify.utility.extension.android.Android ++import com.leos.droidify.utility.getProgress ++import com.leos.network.Downloader ++import com.leos.network.NetworkResponse ++import java.io.File ++import java.security.CodeSigner ++import java.security.cert.Certificate ++import java.util.jar.JarEntry ++import java.util.jar.JarFile ++import kotlinx.coroutines.* ++import kotlinx.coroutines.flow.drop ++import kotlinx.coroutines.flow.filter ++import kotlinx.coroutines.flow.map ++ ++object RepositoryUpdater { ++ enum class Stage { ++ DOWNLOAD, PROCESS, MERGE, COMMIT ++ } ++ ++ // TODO Add support for Index-V2 and also cleanup everything here ++ private enum class IndexType( ++ val jarName: String, ++ val contentName: String ++ ) { ++ INDEX_V1("index-v1.jar", "index-v1.json") ++ } ++ ++ enum class ErrorType { ++ NETWORK, HTTP, VALIDATION, PARSING ++ } ++ ++ class UpdateException : Exception { ++ val errorType: ErrorType ++ ++ constructor(errorType: ErrorType, message: String) : super(message) { ++ this.errorType = errorType ++ } ++ ++ constructor(errorType: ErrorType, message: String, cause: Exception) : super( ++ message, ++ cause ++ ) { ++ this.errorType = errorType ++ } ++ } ++ ++ private val updaterLock = Any() ++ private val cleanupLock = Any() ++ ++ private lateinit var downloader: Downloader ++ ++ fun init(scope: CoroutineScope, downloader: Downloader) { ++ this.downloader = downloader ++ scope.launch { ++ // No need of mutex because it is in same coroutine scope ++ var lastDisabled = emptyMap() ++ Database.RepositoryAdapter ++ .getAllRemovedStream() ++ .map { deletedRepos -> ++ deletedRepos ++ .filterNot { it.key in lastDisabled.keys } ++ .also { lastDisabled = deletedRepos } ++ } ++ // To not perform complete cleanup on startup ++ .drop(1) ++ .filter { it.isNotEmpty() } ++ .collect(Database.RepositoryAdapter::cleanup) ++ } ++ } ++ ++ fun await() { ++ synchronized(updaterLock) { } ++ } ++ ++ suspend fun update( ++ context: Context, ++ repository: Repository, ++ unstable: Boolean, ++ callback: (Stage, Long, Long?) -> Unit ++ ) = update( ++ context = context, ++ repository = repository, ++ unstable = unstable, ++ indexTypes = listOf(IndexType.INDEX_V1), ++ callback = callback ++ ) ++ ++ private suspend fun update( ++ context: Context, ++ repository: Repository, ++ unstable: Boolean, ++ indexTypes: List, ++ callback: (Stage, Long, Long?) -> Unit ++ ): Result = withContext(Dispatchers.IO) { ++ val indexType = indexTypes[0] ++ when (val request = downloadIndex(context, repository, indexType, callback)) { ++ is Result.Error -> { ++ val result = request.data ++ ?: return@withContext Result.Error(request.exception, false) ++ ++ val file = request.data?.file ++ ?: return@withContext Result.Error(request.exception, false) ++ file.delete() ++ if (result.statusCode == 404 && indexTypes.isNotEmpty()) { ++ update( ++ context = context, ++ repository = repository, ++ indexTypes = indexTypes.subList(1, indexTypes.size), ++ unstable = unstable, ++ callback = callback ++ ) ++ } else { ++ Result.Error( ++ UpdateException( ++ ErrorType.HTTP, ++ "Invalid response: HTTP ${result.statusCode}" ++ ) ++ ) ++ } ++ } ++ ++ is Result.Success -> { ++ if (request.data.isUnmodified) { ++ request.data.file.delete() ++ Result.Success(false) ++ } else { ++ try { ++ val isFileParsedSuccessfully = processFile( ++ context = context, ++ repository = repository, ++ indexType = indexType, ++ unstable = unstable, ++ file = request.data.file, ++ lastModified = request.data.lastModified, ++ entityTag = request.data.entityTag, ++ callback = callback ++ ) ++ Result.Success(isFileParsedSuccessfully) ++ } catch (e: UpdateException) { ++ Result.Error(e) ++ } ++ } ++ } ++ } ++ } ++ ++ private suspend fun downloadIndex( ++ context: Context, ++ repository: Repository, ++ indexType: IndexType, ++ callback: (Stage, Long, Long?) -> Unit ++ ): Result = withContext(Dispatchers.IO) { ++ val file = Cache.getTemporaryFile(context) ++ val result = downloader.downloadToFile( ++ url = Uri.parse(repository.address).buildUpon() ++ .appendPath(indexType.jarName).build().toString(), ++ target = file, ++ headers = { ++ ifModifiedSince(repository.lastModified) ++ etag(repository.entityTag) ++ authentication(repository.authentication) ++ } ++ ) { read, total -> ++ callback(Stage.DOWNLOAD, read.value, total.value) ++ } ++ ++ when (result) { ++ is NetworkResponse.Success -> { ++ Result.Success( ++ IndexFile( ++ isUnmodified = result.statusCode == 304, ++ lastModified = result.lastModified?.toFormattedString() ?: "", ++ entityTag = result.etag ?: "", ++ statusCode = result.statusCode, ++ file = file ++ ) ++ ) ++ } ++ ++ is NetworkResponse.Error -> { ++ file.delete() ++ when (result) { ++ is NetworkResponse.Error.Http -> { ++ val errorType = if (result.statusCode in 400..499) { ++ ErrorType.HTTP ++ } else { ++ ErrorType.NETWORK ++ } ++ ++ Result.Error( ++ UpdateException( ++ errorType = errorType, ++ message = "Failed with Status: ${result.statusCode}" ++ ) ++ ) ++ } ++ ++ is NetworkResponse.Error.ConnectionTimeout -> Result.Error(result.exception) ++ is NetworkResponse.Error.IO -> Result.Error(result.exception) ++ is NetworkResponse.Error.SocketTimeout -> Result.Error(result.exception) ++ is NetworkResponse.Error.Unknown -> Result.Error(result.exception) ++ // TODO: Add Validator ++ is NetworkResponse.Error.Validation -> Result.Error() ++ } ++ } ++ } ++ } ++ ++ private fun processFile( ++ context: Context, ++ repository: Repository, ++ indexType: IndexType, ++ unstable: Boolean, ++ file: File, ++ lastModified: String, ++ entityTag: String, ++ callback: (Stage, Long, Long?) -> Unit ++ ): Boolean { ++ var rollback = true ++ return synchronized(updaterLock) { ++ try { ++ val jarFile = JarFile(file, true) ++ val indexEntry = jarFile.getEntry(indexType.contentName) as JarEntry ++ val total = indexEntry.size ++ Database.UpdaterAdapter.createTemporaryTable() ++ val features = context.packageManager.systemAvailableFeatures ++ .asSequence().map { it.name }.toSet() + setOf("android.hardware.touchscreen") ++ ++ var changedRepository: Repository? = null ++ ++ val mergerFile = Cache.getTemporaryFile(context) ++ try { ++ val unmergedProducts = mutableListOf() ++ val unmergedReleases = mutableListOf>>() ++ IndexMerger(mergerFile).use { indexMerger -> ++ jarFile.getInputStream(indexEntry).getProgress { ++ callback(Stage.PROCESS, it, total) ++ }.use { entryStream -> ++ IndexV1Parser.parse( ++ repository.id, ++ entryStream, ++ object : IndexV1Parser.Callback { ++ override fun onRepository( ++ mirrors: List, ++ name: String, ++ description: String, ++ version: Int, ++ timestamp: Long ++ ) { ++ changedRepository = repository.update( ++ mirrors, ++ name, ++ description, ++ version, ++ lastModified, ++ entityTag, ++ timestamp ++ ) ++ } ++ ++ override fun onProduct(product: Product) { ++ if (Thread.interrupted()) { ++ throw InterruptedException() ++ } ++ unmergedProducts += product ++ if (unmergedProducts.size >= 50) { ++ indexMerger.addProducts(unmergedProducts) ++ unmergedProducts.clear() ++ } ++ } ++ ++ override fun onReleases( ++ packageName: String, ++ releases: List ++ ) { ++ if (Thread.interrupted()) { ++ throw InterruptedException() ++ } ++ unmergedReleases += Pair(packageName, releases) ++ if (unmergedReleases.size >= 50) { ++ indexMerger.addReleases(unmergedReleases) ++ unmergedReleases.clear() ++ } ++ } ++ } ++ ) ++ ++ if (Thread.interrupted()) { ++ throw InterruptedException() ++ } ++ if (unmergedProducts.isNotEmpty()) { ++ indexMerger.addProducts(unmergedProducts) ++ unmergedProducts.clear() ++ } ++ if (unmergedReleases.isNotEmpty()) { ++ indexMerger.addReleases(unmergedReleases) ++ unmergedReleases.clear() ++ } ++ var progress = 0 ++ indexMerger.forEach(repository.id, 50) { products, totalCount -> ++ if (Thread.interrupted()) { ++ throw InterruptedException() ++ } ++ progress += products.size ++ callback( ++ Stage.MERGE, ++ progress.toLong(), ++ totalCount.toLong() ++ ) ++ Database.UpdaterAdapter.putTemporary( ++ products ++ .map { transformProduct(it, features, unstable) } ++ ) ++ } ++ } ++ } ++ } finally { ++ mergerFile.delete() ++ } ++ ++ val workRepository = changedRepository ?: repository ++ if (workRepository.timestamp < repository.timestamp) { ++ throw UpdateException( ++ ErrorType.VALIDATION, ++ "New index is older than current index:" + ++ " ${workRepository.timestamp} < ${repository.timestamp}" ++ ) ++ } ++ ++ val fingerprint = indexEntry ++ .codeSigner ++ .certificate ++ .fingerprint() ++ .uppercase() ++ ++ val commitRepository = if (!workRepository.fingerprint.equals( ++ fingerprint, ++ ignoreCase = true ++ ) ++ ) { ++ if (workRepository.fingerprint.isNotEmpty()) { ++ throw UpdateException( ++ ErrorType.VALIDATION, ++ "Certificate fingerprints do not match" ++ ) ++ } ++ ++ workRepository.copy(fingerprint = fingerprint) ++ } else { ++ workRepository ++ } ++ if (Thread.interrupted()) { ++ throw InterruptedException() ++ } ++ callback(Stage.COMMIT, 0, null) ++ synchronized(cleanupLock) { ++ Database.UpdaterAdapter.finishTemporary(commitRepository, true) ++ } ++ rollback = false ++ true ++ } catch (e: Exception) { ++ throw when (e) { ++ is UpdateException, is InterruptedException -> e ++ else -> UpdateException(ErrorType.PARSING, "Error parsing index", e) ++ } ++ } finally { ++ file.delete() ++ if (rollback) { ++ Database.UpdaterAdapter.finishTemporary(repository, false) ++ } ++ } ++ } ++ } ++ ++ @get:Throws(UpdateException::class) ++ private val JarEntry.codeSigner: CodeSigner ++ get() = codeSigners?.singleOrNull() ++ ?: throw UpdateException( ++ ErrorType.VALIDATION, ++ "index.jar must be signed by a single code signer" ++ ) ++ ++ @get:Throws(UpdateException::class) ++ private val CodeSigner.certificate: Certificate ++ get() = signerCertPath?.certificates?.singleOrNull() ++ ?: throw UpdateException( ++ ErrorType.VALIDATION, ++ "index.jar code signer should have only one certificate" ++ ) ++ ++ private fun transformProduct( ++ product: Product, ++ features: Set, ++ unstable: Boolean ++ ): Product { ++ val releasePairs = product.releases ++ .distinctBy { it.identifier } ++ .sortedByDescending { it.versionCode } ++ .map { release -> ++ val incompatibilities = mutableListOf() ++ if (release.minSdkVersion > 0 && SdkCheck.sdk < release.minSdkVersion) { ++ incompatibilities += Release.Incompatibility.MinSdk ++ } ++ if (release.maxSdkVersion > 0 && SdkCheck.sdk > release.maxSdkVersion) { ++ incompatibilities += Release.Incompatibility.MaxSdk ++ } ++ if (release.platforms.isNotEmpty() && ++ (release.platforms intersect Android.platforms).isEmpty() ++ ) { ++ incompatibilities += Release.Incompatibility.Platform ++ } ++ incompatibilities += (release.features - features).sorted() ++ .map { Release.Incompatibility.Feature(it) } ++ Pair(release, incompatibilities.toList()) ++ } ++ ++ val predicate: (Release) -> Boolean = { ++ unstable || ++ product.suggestedVersionCode <= 0 || ++ it.versionCode <= product.suggestedVersionCode ++ } ++ ++ val firstSelected = ++ releasePairs.firstOrNull { it.second.isEmpty() && predicate(it.first) } ++ ?: releasePairs.firstOrNull { predicate(it.first) } ++ ++ val releases = releasePairs ++ .map { (release, incompatibilities) -> ++ release.copy( ++ incompatibilities = incompatibilities, ++ selected = firstSelected?.let { ++ it.first.versionCode == release.versionCode && ++ it.second == incompatibilities ++ } ?: false ++ ) ++ } ++ return product.copy(releases = releases) ++ } ++} ++ ++data class IndexFile( ++ val isUnmodified: Boolean, ++ val lastModified: String, ++ val entityTag: String, ++ val statusCode: Int, ++ val file: File ++) +Index: app/src/main/kotlin/com/leos/droidify/receivers/InstalledAppReceiver.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/receivers/InstalledAppReceiver.kt b/app/src/main/kotlin/com/leos/droidify/receivers/InstalledAppReceiver.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/receivers/InstalledAppReceiver.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,30 @@ ++package com.leos.droidify.receivers ++ ++import android.content.BroadcastReceiver ++import android.content.Context ++import android.content.Intent ++import android.content.pm.PackageManager ++import com.leos.core.common.extension.getPackageInfoCompat ++import com.leos.droidify.database.Database ++import com.leos.droidify.utility.extension.toInstalledItem ++ ++class InstalledAppReceiver(private val packageManager: PackageManager) : BroadcastReceiver() { ++ override fun onReceive(context: Context, intent: Intent) { ++ val packageName = ++ intent.data?.let { if (it.scheme == "package") it.schemeSpecificPart else null } ++ if (packageName != null) { ++ when (intent.action.orEmpty()) { ++ Intent.ACTION_PACKAGE_ADDED, ++ Intent.ACTION_PACKAGE_REMOVED ++ -> { ++ val packageInfo = packageManager.getPackageInfoCompat(packageName) ++ if (packageInfo != null) { ++ Database.InstalledAdapter.put(packageInfo.toInstalledItem()) ++ } else { ++ Database.InstalledAdapter.delete(packageName) ++ } ++ } ++ } ++ } ++ } ++} +Index: app/src/main/kotlin/com/leos/droidify/service/Connection.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/service/Connection.kt b/app/src/main/kotlin/com/leos/droidify/service/Connection.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/service/Connection.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,43 @@ ++package com.leos.droidify.service ++ ++import android.content.ComponentName ++import android.content.Context ++import android.content.Intent ++import android.content.ServiceConnection ++import android.os.IBinder ++ ++class Connection>( ++ private val serviceClass: Class, ++ private val onBind: ((Connection, B) -> Unit)? = null, ++ private val onUnbind: ((Connection, B) -> Unit)? = null ++) : ServiceConnection { ++ var binder: B? = null ++ private set ++ ++ private fun handleUnbind() { ++ binder?.let { ++ binder = null ++ onUnbind?.invoke(this, it) ++ } ++ } ++ ++ override fun onServiceConnected(componentName: ComponentName, binder: IBinder) { ++ @Suppress("UNCHECKED_CAST") ++ binder as B ++ this.binder = binder ++ onBind?.invoke(this, binder) ++ } ++ ++ override fun onServiceDisconnected(componentName: ComponentName) { ++ handleUnbind() ++ } ++ ++ fun bind(context: Context) { ++ context.bindService(Intent(context, serviceClass), this, Context.BIND_AUTO_CREATE) ++ } ++ ++ fun unbind(context: Context) { ++ context.unbindService(this) ++ handleUnbind() ++ } ++} +Index: app/src/main/kotlin/com/leos/droidify/service/ConnectionService.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/service/ConnectionService.kt b/app/src/main/kotlin/com/leos/droidify/service/ConnectionService.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/service/ConnectionService.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,22 @@ ++package com.leos.droidify.service ++ ++import android.app.Service ++import android.content.Intent ++import android.os.IBinder ++import kotlinx.coroutines.CoroutineScope ++import kotlinx.coroutines.Dispatchers ++import kotlinx.coroutines.SupervisorJob ++import kotlinx.coroutines.cancel ++ ++abstract class ConnectionService : Service() { ++ ++ private val supervisorJob = SupervisorJob() ++ val lifecycleScope = CoroutineScope(Dispatchers.Main + supervisorJob) ++ ++ abstract override fun onBind(intent: Intent): T ++ ++ override fun onDestroy() { ++ super.onDestroy() ++ lifecycleScope.cancel() ++ } ++} +Index: app/src/main/kotlin/com/leos/droidify/service/DownloadService.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/service/DownloadService.kt b/app/src/main/kotlin/com/leos/droidify/service/DownloadService.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/service/DownloadService.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,487 @@ ++package com.leos.droidify.service ++ ++import android.app.NotificationChannel ++import android.app.NotificationManager ++import android.app.PendingIntent ++import android.content.Intent ++import android.net.Uri ++import android.os.Build ++import android.util.Log ++import android.view.ContextThemeWrapper ++import androidx.core.app.NotificationCompat ++import com.leos.core.common.Constants ++import com.leos.core.common.DataSize ++import com.leos.core.common.R as CommonR ++import com.leos.core.common.R.string as stringRes ++import com.leos.core.common.R.style as styleRes ++import com.leos.core.common.SdkCheck ++import com.leos.core.common.cache.Cache ++import com.leos.core.common.extension.notificationManager ++import com.leos.core.common.extension.percentBy ++import com.leos.core.common.extension.startSelf ++import com.leos.core.common.extension.stopForegroundCompat ++import com.leos.core.common.extension.toPendingIntent ++import com.leos.core.common.extension.updateAsMutable ++import com.leos.core.common.log ++import com.leos.core.common.sdkAbove ++import com.leos.core.common.signature.ValidationException ++import com.leos.core.datastore.SettingsRepository ++import com.leos.core.datastore.get ++import com.leos.core.datastore.model.InstallerType ++import com.leos.core.domain.Release ++import com.leos.core.domain.Repository ++import com.leos.droidify.BuildConfig ++import com.leos.droidify.MainActivity ++import com.leos.installer.InstallManager ++import com.leos.installer.model.installFrom ++import com.leos.network.Downloader ++import com.leos.network.NetworkResponse ++import dagger.hilt.android.AndroidEntryPoint ++import java.io.File ++import javax.inject.Inject ++import kotlinx.coroutines.CoroutineScope ++import kotlinx.coroutines.Job ++import kotlinx.coroutines.flow.MutableStateFlow ++import kotlinx.coroutines.flow.asStateFlow ++import kotlinx.coroutines.flow.collectLatest ++import kotlinx.coroutines.flow.filter ++import kotlinx.coroutines.flow.first ++import kotlinx.coroutines.flow.sample ++import kotlinx.coroutines.flow.update ++import kotlinx.coroutines.launch ++import kotlinx.coroutines.runBlocking ++import kotlinx.coroutines.sync.Mutex ++import kotlinx.coroutines.sync.withLock ++import kotlinx.coroutines.yield ++ ++@AndroidEntryPoint ++class DownloadService : ConnectionService() { ++ companion object { ++ private const val ACTION_CANCEL = "${BuildConfig.APPLICATION_ID}.intent.action.CANCEL" ++ } ++ ++ @Inject ++ lateinit var settingsRepository: SettingsRepository ++ ++ @Inject ++ lateinit var downloader: Downloader ++ ++ private val installerType ++ get() = settingsRepository.get { installerType } ++ ++ @Inject ++ lateinit var installer: InstallManager ++ ++ sealed class State(val packageName: String) { ++ data object Idle : State("") ++ data class Connecting(val name: String) : State(name) ++ data class Downloading(val name: String, val read: DataSize, val total: DataSize?) : State( ++ name ++ ) ++ ++ data class Error(val name: String) : State(name) ++ data class Cancel(val name: String) : State(name) ++ data class Success(val name: String, val release: Release) : State(name) ++ } ++ ++ data class DownloadState( ++ val currentItem: State = State.Idle, ++ val queue: List = emptyList() ++ ) { ++ infix fun isDownloading(packageName: String): Boolean = ++ currentItem.packageName == packageName && ( ++ currentItem is State.Connecting || currentItem is State.Downloading ++ ) ++ ++ infix fun isComplete(packageName: String): Boolean = ++ currentItem.packageName == packageName && ( ++ currentItem is State.Error || ++ currentItem is State.Cancel || ++ currentItem is State.Success || ++ currentItem is State.Idle ++ ) ++ } ++ ++ private val _downloadState = MutableStateFlow(DownloadState()) ++ ++ private class Task( ++ val packageName: String, ++ val name: String, ++ val release: Release, ++ val url: String, ++ val authentication: String, ++ val isUpdate: Boolean = false ++ ) { ++ val notificationTag: String ++ get() = "download-$packageName" ++ } ++ ++ private data class CurrentTask(val task: Task, val job: Job, val lastState: State) ++ ++ private var started = false ++ private val tasks = mutableListOf() ++ private var currentTask: CurrentTask? = null ++ ++ private val lock = Mutex() ++ ++ inner class Binder : android.os.Binder() { ++ val downloadState = _downloadState.asStateFlow() ++ fun enqueue( ++ packageName: String, ++ name: String, ++ repository: Repository, ++ release: Release, ++ isUpdate: Boolean = false ++ ) { ++ val task = Task( ++ packageName = packageName, ++ name = name, ++ release = release, ++ url = release.getDownloadUrl(repository), ++ authentication = repository.authentication, ++ isUpdate = isUpdate ++ ) ++ if (Cache.getReleaseFile(this@DownloadService, release.cacheFileName).exists()) { ++ lifecycleScope.launch { publishSuccess(task) } ++ return ++ } ++ cancelTasks(packageName) ++ cancelCurrentTask(packageName) ++ notificationManager?.cancel( ++ task.notificationTag, ++ Constants.NOTIFICATION_ID_DOWNLOADING ++ ) ++ tasks += task ++ if (currentTask == null) { ++ handleDownload() ++ } else { ++ updateCurrentQueue { add(packageName) } ++ } ++ } ++ ++ fun cancel(packageName: String) { ++ cancelTasks(packageName) ++ cancelCurrentTask(packageName) ++ } ++ } ++ ++ private val binder = Binder() ++ override fun onBind(intent: Intent): Binder = binder ++ ++ override fun onCreate() { ++ super.onCreate() ++ ++ sdkAbove(Build.VERSION_CODES.O) { ++ NotificationChannel( ++ Constants.NOTIFICATION_CHANNEL_DOWNLOADING, ++ getString(stringRes.downloading), ++ NotificationManager.IMPORTANCE_LOW ++ ).apply { setShowBadge(false) } ++ .let { ++ notificationManager?.createNotificationChannel(it) ++ } ++ } ++ ++ lifecycleScope.launch { ++ _downloadState ++ .filter { currentTask != null } ++ .sample(400) ++ .collectLatest { ++ publishForegroundState(false, it.currentItem) ++ } ++ } ++ } ++ ++ override fun onDestroy() { ++ super.onDestroy() ++ cancelTasks(null) ++ cancelCurrentTask(null) ++ } ++ ++ override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { ++ if (intent?.action == ACTION_CANCEL) { ++ currentTask?.let { binder.cancel(it.task.packageName) } ++ } ++ return START_NOT_STICKY ++ } ++ ++ private fun cancelTasks(packageName: String?) { ++ tasks.removeAll { ++ (packageName == null || it.packageName == packageName) && run { ++ updateCurrentState(State.Cancel(it.packageName)) ++ true ++ } ++ } ++ } ++ ++ private fun cancelCurrentTask(packageName: String?) { ++ currentTask?.let { ++ if (packageName == null || it.task.packageName == packageName) { ++ it.job.cancel() ++ currentTask = null ++ updateCurrentState(State.Cancel(it.task.packageName)) ++ } ++ } ++ } ++ ++ private sealed interface ErrorType { ++ data object IO : ErrorType ++ data object Http : ErrorType ++ data object SocketTimeout : ErrorType ++ data object ConnectionTimeout : ErrorType ++ class Validation(val exception: ValidationException) : ErrorType ++ } ++ ++ private fun showNotificationError(task: Task, errorType: ErrorType) { ++ val intent = Intent(this, MainActivity::class.java) ++ .setAction(Intent.ACTION_VIEW) ++ .setData(Uri.parse("package:${task.packageName}")) ++ .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) ++ .toPendingIntent(this) ++ notificationManager?.notify( ++ task.notificationTag, ++ Constants.NOTIFICATION_ID_DOWNLOADING, ++ NotificationCompat ++ .Builder(this, Constants.NOTIFICATION_CHANNEL_DOWNLOADING) ++ .setAutoCancel(true) ++ .setSmallIcon(android.R.drawable.stat_notify_error) ++ .setColor( ++ ContextThemeWrapper(this, styleRes.Theme_Main_Light) ++ .getColor(CommonR.color.md_theme_dark_errorContainer) ++ ) ++ .setOnlyAlertOnce(true) ++ .setContentIntent(intent) ++ .errorNotificationContent(task, errorType) ++ .build() ++ ) ++ } ++ ++ private fun NotificationCompat.Builder.errorNotificationContent( ++ task: Task, ++ errorType: ErrorType ++ ): NotificationCompat.Builder { ++ val title = if (errorType is ErrorType.Validation) { ++ stringRes.could_not_validate_FORMAT ++ } else { ++ stringRes.could_not_download_FORMAT ++ } ++ val description = when (errorType) { ++ ErrorType.ConnectionTimeout -> getString(stringRes.connection_error_DESC) ++ ErrorType.Http -> getString(stringRes.http_error_DESC) ++ ErrorType.IO -> getString(stringRes.io_error_DESC) ++ ErrorType.SocketTimeout -> getString(stringRes.socket_error_DESC) ++ is ErrorType.Validation -> errorType.exception.message ++ } ++ setContentTitle(getString(title, task.name)) ++ return setContentText(description) ++ } ++ ++ private fun showNotificationInstall(task: Task) { ++ val intent = Intent(this, MainActivity::class.java) ++ .setAction(MainActivity.ACTION_INSTALL) ++ .setData(Uri.parse("package:${task.packageName}")) ++ .putExtra(MainActivity.EXTRA_CACHE_FILE_NAME, task.release.cacheFileName) ++ .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) ++ .toPendingIntent(this) ++ notificationManager?.notify( ++ task.notificationTag, ++ Constants.NOTIFICATION_ID_DOWNLOADING, ++ NotificationCompat ++ .Builder(this, Constants.NOTIFICATION_CHANNEL_DOWNLOADING) ++ .setAutoCancel(true) ++ .setOngoing(false) ++ .setSmallIcon(android.R.drawable.stat_sys_download_done) ++ .setColor( ++ ContextThemeWrapper(this, styleRes.Theme_Main_Light) ++ .getColor(CommonR.color.md_theme_dark_primaryContainer) ++ ) ++ .setOnlyAlertOnce(true) ++ .setContentIntent(intent) ++ .setContentTitle(getString(stringRes.downloaded_FORMAT, task.name)) ++ .setContentText(getString(stringRes.tap_to_install_DESC)) ++ .build() ++ ) ++ } ++ ++ private suspend fun publishSuccess(task: Task) { ++ val currentInstaller = installerType.first() ++ updateCurrentQueue { add("") } ++ updateCurrentState(State.Success(task.packageName, task.release)) ++ val autoInstallWithSessionInstaller = ++ SdkCheck.canAutoInstall(task.release.targetSdkVersion) && ++ currentInstaller == InstallerType.SESSION && ++ task.isUpdate ++ ++ showNotificationInstall(task) ++ if (currentInstaller == InstallerType.ROOT || ++ currentInstaller == InstallerType.SHIZUKU || ++ autoInstallWithSessionInstaller ++ ) { ++ val installItem = task.packageName installFrom task.release.cacheFileName ++ installer install installItem ++ } ++ } ++ ++ private val stateNotificationBuilder by lazy { ++ NotificationCompat ++ .Builder(this, Constants.NOTIFICATION_CHANNEL_DOWNLOADING) ++ .setSmallIcon(android.R.drawable.stat_sys_download) ++ .setColor( ++ ContextThemeWrapper(this, styleRes.Theme_Main_Light) ++ .getColor(CommonR.color.md_theme_dark_primaryContainer) ++ ) ++ .addAction( ++ 0, ++ getString(stringRes.cancel), ++ PendingIntent.getService( ++ this, ++ 0, ++ Intent(this, this::class.java).setAction(ACTION_CANCEL), ++ PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE ++ ) ++ ) ++ } ++ ++ private fun publishForegroundState(force: Boolean, state: State) { ++ if (!force && currentTask == null) return ++ currentTask = currentTask!!.copy(lastState = state) ++ stateNotificationBuilder.downloadingNotificationContent(state) ++ ?.let { notification -> ++ startForeground( ++ Constants.NOTIFICATION_ID_DOWNLOADING, ++ notification.build() ++ ) ++ } ?: run { ++ log("Invalid Download State: $state", "DownloadService", Log.ERROR) ++ } ++ } ++ ++ private fun NotificationCompat.Builder.downloadingNotificationContent( ++ state: State ++ ): NotificationCompat.Builder? { ++ return when (state) { ++ is State.Connecting -> { ++ setContentTitle(getString(stringRes.downloading_FORMAT, currentTask!!.task.name)) ++ setContentText(getString(stringRes.connecting)) ++ setProgress(1, 0, true) ++ } ++ ++ is State.Downloading -> { ++ setContentTitle(getString(stringRes.downloading_FORMAT, currentTask!!.task.name)) ++ if (state.total != null) { ++ setContentText("${state.read} / ${state.total}") ++ setProgress(100, state.read.value percentBy state.total.value, false) ++ } else { ++ setContentText(state.read.toString()) ++ setProgress(0, 0, true) ++ } ++ } ++ ++ else -> null ++ } ++ } ++ ++ private fun handleDownload() { ++ if (currentTask != null) return ++ if (tasks.isEmpty() && started) { ++ started = false ++ stopForegroundCompat() ++ return ++ } ++ if (!started) { ++ started = true ++ startSelf() ++ } ++ val task = tasks.removeFirstOrNull() ?: return ++ with(stateNotificationBuilder) { ++ setWhen(System.currentTimeMillis()) ++ setContentIntent(createNotificationIntent(task.packageName)) ++ } ++ val connectionState = State.Connecting(task.packageName) ++ val partialReleaseFile = ++ Cache.getPartialReleaseFile(this, task.release.cacheFileName) ++ val job = lifecycleScope.downloadFile(task, partialReleaseFile) ++ currentTask = CurrentTask(task, job, connectionState) ++ publishForegroundState(true, connectionState) ++ updateCurrentState(State.Connecting(task.packageName)) ++ } ++ ++ private fun createNotificationIntent(packageName: String): PendingIntent? = ++ Intent(this, MainActivity::class.java) ++ .setAction(Intent.ACTION_VIEW) ++ .setData(Uri.parse("package:$packageName")) ++ .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK) ++ .toPendingIntent(this) ++ ++ private fun CoroutineScope.downloadFile( ++ task: Task, ++ target: File ++ ) = launch { ++ try { ++ val releaseValidator = ReleaseFileValidator( ++ context = this@DownloadService, ++ packageName = task.packageName, ++ release = task.release ++ ) ++ val response = downloader.downloadToFile( ++ url = task.url, ++ target = target, ++ validator = releaseValidator, ++ headers = { authentication(task.authentication) } ++ ) { read, total -> ++ yield() ++ updateCurrentState(State.Downloading(task.packageName, read, total)) ++ } ++ ++ when (response) { ++ is NetworkResponse.Success -> { ++ val releaseFile = Cache.getReleaseFile( ++ this@DownloadService, ++ task.release.cacheFileName ++ ) ++ target.renameTo(releaseFile) ++ publishSuccess(task) ++ } ++ ++ is NetworkResponse.Error -> { ++ updateCurrentState(State.Error(task.packageName)) ++ val errorType = when (response) { ++ is NetworkResponse.Error.ConnectionTimeout -> ErrorType.ConnectionTimeout ++ is NetworkResponse.Error.IO -> ErrorType.IO ++ is NetworkResponse.Error.SocketTimeout -> ErrorType.SocketTimeout ++ is NetworkResponse.Error.Validation -> ErrorType.Validation( ++ response.exception ++ ) ++ ++ else -> ErrorType.Http ++ } ++ showNotificationError(task, errorType) ++ } ++ } ++ } finally { ++ lock.withLock { currentTask = null } ++ handleDownload() ++ } ++ } ++ ++ private fun updateCurrentState(state: State) { ++ _downloadState.update { ++ val newQueue = ++ if (state.packageName in it.queue) { ++ it.queue.updateAsMutable { ++ removeAll { name -> name == "" } ++ remove(state.packageName) ++ } ++ } else { ++ it.queue ++ } ++ it.copy(currentItem = state, queue = newQueue) ++ } ++ } ++ ++ private fun updateCurrentQueue(block: MutableList.() -> Unit) { ++ _downloadState.update { state -> ++ state.copy(queue = state.queue.updateAsMutable(block)) ++ } ++ } ++} +Index: app/src/main/kotlin/com/leos/droidify/service/ReleaseFileValidator.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/service/ReleaseFileValidator.kt b/app/src/main/kotlin/com/leos/droidify/service/ReleaseFileValidator.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/service/ReleaseFileValidator.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,53 @@ ++package com.leos.droidify.service ++ ++import android.content.Context ++import androidx.annotation.StringRes ++import com.leos.core.common.R.string as strings ++import com.leos.core.common.extension.calculateHash ++import com.leos.core.common.extension.getPackageArchiveInfoCompat ++import com.leos.core.common.extension.singleSignature ++import com.leos.core.common.extension.versionCodeCompat ++import com.leos.core.common.signature.FileValidator ++import com.leos.core.common.signature.Hash ++import com.leos.core.common.signature.ValidationException ++import com.leos.core.common.signature.verifyHash ++import com.leos.core.domain.Release ++import java.io.File ++ ++class ReleaseFileValidator( ++ private val context: Context, ++ private val packageName: String, ++ private val release: Release ++) : FileValidator { ++ ++ override suspend fun validate(file: File) { ++ val hash = Hash(release.hashType, release.hash) ++ if (!file.verifyHash(hash)) { ++ throw ValidationException( ++ getString(strings.integrity_check_error_DESC) ++ ) ++ } ++ val packageInfo = context.packageManager.getPackageArchiveInfoCompat(file.path) ++ ?: throw ValidationException(getString(strings.file_format_error_DESC)) ++ if (packageInfo.packageName != packageName || ++ packageInfo.versionCodeCompat != release.versionCode ++ ) { ++ throw ValidationException(getString(strings.invalid_metadata_error_DESC)) ++ } ++ ++ packageInfo.singleSignature ++ ?.calculateHash() ++ ?.takeIf { it.isNotBlank() || it == release.signature } ++ ?: throw ValidationException(getString(strings.invalid_signature_error_DESC)) ++ ++ packageInfo.permissions ++ ?.asSequence() ++ .orEmpty() ++ .map { it.name } ++ .toSet() ++ .takeIf { release.permissions.containsAll(it) } ++ ?: throw ValidationException(getString(strings.invalid_permissions_error_DESC)) ++ } ++ ++ private fun getString(@StringRes id: Int): String = context.getString(id) ++} +Index: app/src/main/kotlin/com/leos/droidify/service/SyncService.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/service/SyncService.kt b/app/src/main/kotlin/com/leos/droidify/service/SyncService.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/service/SyncService.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,636 @@ ++package com.leos.droidify.service ++ ++import android.annotation.SuppressLint ++import android.app.NotificationChannel ++import android.app.NotificationManager ++import android.app.PendingIntent ++import android.app.job.JobInfo ++import android.app.job.JobParameters ++import android.app.job.JobService ++import android.content.ComponentName ++import android.content.Context ++import android.content.Intent ++import android.graphics.Color ++import android.os.Build ++import android.text.SpannableStringBuilder ++import android.text.style.ForegroundColorSpan ++import android.view.ContextThemeWrapper ++import androidx.core.app.NotificationCompat ++import androidx.fragment.app.Fragment ++import com.leos.core.common.Constants ++import com.leos.core.common.DataSize ++import com.leos.core.common.SdkCheck ++import com.leos.core.common.extension.getColorFromAttr ++import com.leos.core.common.extension.notificationManager ++import com.leos.core.common.extension.percentBy ++import com.leos.core.common.extension.startSelf ++import com.leos.core.common.extension.stopForegroundCompat ++import com.leos.core.common.result.Result ++import com.leos.core.common.sdkAbove ++import com.leos.core.datastore.SettingsRepository ++import com.leos.core.domain.ProductItem ++import com.leos.core.domain.Repository ++import com.leos.droidify.BuildConfig ++import com.leos.droidify.MainActivity ++import com.leos.droidify.database.Database ++import com.leos.droidify.index.RepositoryUpdater ++import com.leos.droidify.utility.extension.startUpdate ++import dagger.hilt.android.AndroidEntryPoint ++import kotlinx.coroutines.CoroutineScope ++import kotlinx.coroutines.Dispatchers ++import kotlinx.coroutines.NonCancellable ++import kotlinx.coroutines.cancel ++import kotlinx.coroutines.flow.MutableSharedFlow ++import kotlinx.coroutines.flow.SharedFlow ++import kotlinx.coroutines.flow.asSharedFlow ++import kotlinx.coroutines.flow.collectLatest ++import kotlinx.coroutines.flow.sample ++import kotlinx.coroutines.launch ++import kotlinx.coroutines.sync.Mutex ++import kotlinx.coroutines.sync.withLock ++import kotlinx.coroutines.withContext ++import java.lang.ref.WeakReference ++import javax.inject.Inject ++import com.leos.core.common.R as CommonR ++import com.leos.core.common.R.string as stringRes ++import com.leos.core.common.R.style as styleRes ++import kotlinx.coroutines.Job as CoroutinesJob ++ ++@AndroidEntryPoint ++class SyncService : ConnectionService() { ++ ++ companion object { ++ private const val MAX_PROGRESS = 100 ++ ++ private const val NOTIFICATION_UPDATE_SAMPLING = 400L ++ ++ private const val MAX_UPDATE_NOTIFICATION = 5 ++ private const val ACTION_CANCEL = "${BuildConfig.APPLICATION_ID}.intent.action.CANCEL" ++ ++ private val syncState = MutableSharedFlow() ++ private val onFinishState = MutableSharedFlow() ++ } ++ ++ @Inject ++ lateinit var settingsRepository: SettingsRepository ++ ++ private sealed class State(val name: String) { ++ data class Connecting(val appName: String) : State(appName) ++ data class Syncing( ++ val appName: String, ++ val stage: RepositoryUpdater.Stage, ++ val read: DataSize, ++ val total: DataSize? ++ ) : State(appName) ++ } ++ ++ private class Task(val repositoryId: Long, val manual: Boolean) ++ private data class CurrentTask( ++ val task: Task?, ++ val job: CoroutinesJob, ++ val hasUpdates: Boolean, ++ val lastState: State ++ ) ++ ++ private enum class Started { NO, AUTO, MANUAL } ++ ++ private var started = Started.NO ++ private val tasks = mutableListOf() ++ private var currentTask: CurrentTask? = null ++ ++ private var updateNotificationBlockerFragment: WeakReference? = null ++ ++ private val downloadConnection = Connection(DownloadService::class.java) ++ private val lock = Mutex() ++ ++ enum class SyncRequest { AUTO, MANUAL, FORCE } ++ ++ inner class Binder : android.os.Binder() { ++ ++ val onFinish: SharedFlow ++ get() = onFinishState.asSharedFlow() ++ ++ private fun sync(ids: List, request: SyncRequest) { ++ val cancelledTask = ++ cancelCurrentTask { request == SyncRequest.FORCE && it.task?.repositoryId in ids } ++ cancelTasks { !it.manual && it.repositoryId in ids } ++ val currentIds = tasks.asSequence().map { it.repositoryId }.toSet() ++ val manual = request != SyncRequest.AUTO ++ tasks += ids.asSequence().filter { ++ it !in currentIds && ++ it != currentTask?.task?.repositoryId ++ }.map { Task(it, manual) } ++ handleNextTask(cancelledTask?.hasUpdates == true) ++ if (request != SyncRequest.AUTO && started == Started.AUTO) { ++ started = Started.MANUAL ++ startSelf() ++ handleSetStarted() ++ currentTask?.lastState?.let { publishForegroundState(true, it) } ++ } ++ } ++ ++ fun sync(request: SyncRequest) { ++ val ids = Database.RepositoryAdapter.getAll() ++ .asSequence().filter { it.enabled }.map { it.id }.toList() ++ sync(ids, request) ++ } ++ ++ fun sync(repository: Repository) { ++ if (repository.enabled) { ++ sync(listOf(repository.id), SyncRequest.FORCE) ++ } ++ } ++ ++ suspend fun updateAllApps() { ++ updateAllAppsInternal() ++ } ++ ++ fun setUpdateNotificationBlocker(fragment: Fragment?) { ++ updateNotificationBlockerFragment = fragment?.let(::WeakReference) ++ if (fragment != null) { ++ notificationManager?.cancel(Constants.NOTIFICATION_ID_UPDATES) ++ } ++ } ++ ++ fun setEnabled(repository: Repository, enabled: Boolean): Boolean { ++ Database.RepositoryAdapter.put(repository.enable(enabled)) ++ if (enabled) { ++ val isRepoInTasks = repository.id != currentTask?.task?.repositoryId && ++ !tasks.any { it.repositoryId == repository.id } ++ if (isRepoInTasks) { ++ tasks += Task(repository.id, true) ++ handleNextTask(false) ++ } ++ } else { ++ cancelTasks { it.repositoryId == repository.id } ++ val cancelledTask = cancelCurrentTask { ++ it.task?.repositoryId == repository.id ++ } ++ handleNextTask(cancelledTask?.hasUpdates == true) ++ } ++ return true ++ } ++ ++ fun isCurrentlySyncing(repositoryId: Long): Boolean { ++ return currentTask?.task?.repositoryId == repositoryId ++ } ++ ++ fun deleteRepository(repositoryId: Long): Boolean { ++ val repository = Database.RepositoryAdapter.get(repositoryId) ++ return repository != null && run { ++ setEnabled(repository, false) ++ Database.RepositoryAdapter.markAsDeleted(repository.id) ++ true ++ } ++ } ++ ++ fun cancelAuto(): Boolean { ++ val removed = cancelTasks { !it.manual } ++ val currentTask = cancelCurrentTask { it.task?.manual == false } ++ handleNextTask(currentTask?.hasUpdates == true) ++ return removed || currentTask != null ++ } ++ } ++ ++ private val binder = Binder() ++ override fun onBind(intent: Intent): Binder = binder ++ ++ override fun onCreate() { ++ super.onCreate() ++ ++ sdkAbove(Build.VERSION_CODES.O) { ++ val channels = listOf( ++ NotificationChannel( ++ Constants.NOTIFICATION_CHANNEL_SYNCING, ++ getString(stringRes.syncing), ++ NotificationManager.IMPORTANCE_LOW ++ ).apply { setShowBadge(false) }, ++ NotificationChannel( ++ Constants.NOTIFICATION_CHANNEL_UPDATES, ++ getString(stringRes.updates), ++ NotificationManager.IMPORTANCE_LOW ++ ) ++ ) ++ notificationManager?.createNotificationChannels(channels) ++ } ++ downloadConnection.bind(this) ++ lifecycleScope.launch { ++ syncState ++ .sample(NOTIFICATION_UPDATE_SAMPLING) ++ .collectLatest { ++ publishForegroundState(false, it) ++ } ++ } ++ } ++ ++ override fun onDestroy() { ++ super.onDestroy() ++ downloadConnection.unbind(this) ++ cancelTasks { true } ++ cancelCurrentTask { true } ++ } ++ ++ override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { ++ if (intent?.action == ACTION_CANCEL) { ++ tasks.clear() ++ val cancelledTask = cancelCurrentTask { it.task != null } ++ handleNextTask(cancelledTask?.hasUpdates == true) ++ } ++ return START_NOT_STICKY ++ } ++ ++ private fun cancelTasks(condition: (Task) -> Boolean): Boolean { ++ return tasks.removeAll(condition) ++ } ++ ++ private fun cancelCurrentTask(condition: ((CurrentTask) -> Boolean)): CurrentTask? { ++ return currentTask?.let { ++ if (condition(it)) { ++ currentTask = null ++ it.job.cancel() ++ RepositoryUpdater.await() ++ it ++ } else { ++ null ++ } ++ } ++ } ++ ++ private fun showNotificationError(repository: Repository, exception: Exception) { ++ val description = getString( ++ when (exception) { ++ is RepositoryUpdater.UpdateException -> when (exception.errorType) { ++ RepositoryUpdater.ErrorType.NETWORK -> stringRes.network_error_DESC ++ RepositoryUpdater.ErrorType.HTTP -> stringRes.http_error_DESC ++ RepositoryUpdater.ErrorType.VALIDATION -> stringRes.validation_index_error_DESC ++ RepositoryUpdater.ErrorType.PARSING -> stringRes.parsing_index_error_DESC ++ } ++ ++ else -> stringRes.unknown_error_DESC ++ } ++ ) ++ notificationManager?.notify( ++ "repository-${repository.id}", ++ Constants.NOTIFICATION_ID_SYNCING, ++ NotificationCompat ++ .Builder(this, Constants.NOTIFICATION_CHANNEL_SYNCING) ++ .setSmallIcon(android.R.drawable.stat_sys_warning) ++ .setColor( ++ ContextThemeWrapper(this, styleRes.Theme_Main_Light) ++ .getColorFromAttr(android.R.attr.colorPrimary).defaultColor ++ ) ++ .setContentTitle(getString(stringRes.could_not_sync_FORMAT, repository.name)) ++ .setContentText(description) ++ .build() ++ ) ++ } ++ ++ private val stateNotificationBuilder by lazy { ++ NotificationCompat ++ .Builder(this, Constants.NOTIFICATION_CHANNEL_SYNCING) ++ .setSmallIcon(CommonR.drawable.ic_sync) ++ .setColor( ++ ContextThemeWrapper(this, styleRes.Theme_Main_Light) ++ .getColorFromAttr(android.R.attr.colorPrimary).defaultColor ++ ) ++ .addAction( ++ 0, ++ getString(stringRes.cancel), ++ PendingIntent.getService( ++ this, ++ 0, ++ Intent(this, this::class.java).setAction(ACTION_CANCEL), ++ PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE ++ ) ++ ) ++ } ++ ++ private fun publishForegroundState(force: Boolean, state: State) { ++ if (force || currentTask?.lastState != state) { ++ currentTask = currentTask?.copy(lastState = state) ++ if (started == Started.MANUAL) { ++ startForeground( ++ Constants.NOTIFICATION_ID_SYNCING, ++ stateNotificationBuilder.apply { ++ setContentTitle(getString(stringRes.syncing_FORMAT, state.name)) ++ when (state) { ++ is State.Connecting -> { ++ setContentText(getString(stringRes.connecting)) ++ setProgress(0, 0, true) ++ } ++ ++ is State.Syncing -> { ++ when (state.stage) { ++ RepositoryUpdater.Stage.DOWNLOAD -> { ++ if (state.total != null) { ++ setContentText("${state.read} / ${state.total}") ++ setProgress( ++ MAX_PROGRESS, ++ state.read percentBy state.total, ++ false ++ ) ++ } else { ++ setContentText(state.read.toString()) ++ setProgress(0, 0, true) ++ } ++ } ++ ++ RepositoryUpdater.Stage.PROCESS -> { ++ val progress = (state.read percentBy state.total) ++ .takeIf { it != -1 } ++ setContentText( ++ getString( ++ stringRes.processing_FORMAT, ++ "${progress ?: 0}%" ++ ) ++ ) ++ setProgress(MAX_PROGRESS, progress ?: 0, progress == null) ++ } ++ ++ RepositoryUpdater.Stage.MERGE -> { ++ val progress = (state.read percentBy state.total) ++ setContentText( ++ getString( ++ stringRes.merging_FORMAT, ++ "${state.read.value} / ${state.total?.value ?: state.read.value}" ++ ) ++ ) ++ setProgress(MAX_PROGRESS, progress, false) ++ } ++ ++ RepositoryUpdater.Stage.COMMIT -> { ++ setContentText(getString(stringRes.saving_details)) ++ setProgress(0, 0, true) ++ } ++ } ++ } ++ }::class ++ }.build() ++ ) ++ } ++ } ++ } ++ ++ private fun handleSetStarted() { ++ stateNotificationBuilder.setWhen(System.currentTimeMillis()) ++ } ++ ++ private fun handleNextTask(hasUpdates: Boolean) { ++ if (currentTask != null) return ++ if (tasks.isEmpty()) { ++ if (started != Started.NO) { ++ lifecycleScope.launch { ++ val setting = settingsRepository.getInitial() ++ handleUpdates( ++ hasUpdates = hasUpdates, ++ notifyUpdates = setting.notifyUpdate, ++ autoUpdate = setting.autoUpdate ++ ) ++ } ++ } ++ return ++ } ++ val task = tasks.removeFirst() ++ val repository = Database.RepositoryAdapter.get(task.repositoryId) ++ if (repository == null || !repository.enabled) handleNextTask(hasUpdates) ++ val lastStarted = started ++ val newStarted = if (task.manual || lastStarted == Started.MANUAL) { ++ Started.MANUAL ++ } else { ++ Started.AUTO ++ } ++ started = newStarted ++ if (newStarted == Started.MANUAL && lastStarted != Started.MANUAL) { ++ startSelf() ++ handleSetStarted() ++ } ++ val initialState = State.Connecting(repository!!.name) ++ publishForegroundState(true, initialState) ++ lifecycleScope.launch { ++ val unstableUpdates = ++ settingsRepository.getInitial().unstableUpdate ++ val downloadJob = downloadFile( ++ task = task, ++ repository = repository, ++ hasUpdates = hasUpdates, ++ unstableUpdates = unstableUpdates ++ ) ++ currentTask = CurrentTask(task, downloadJob, hasUpdates, initialState) ++ } ++ } ++ ++ private fun CoroutineScope.downloadFile( ++ task: Task, ++ repository: Repository, ++ hasUpdates: Boolean, ++ unstableUpdates: Boolean ++ ): CoroutinesJob = launch(Dispatchers.Default) { ++ var passedHasUpdates = hasUpdates ++ try { ++ val response = RepositoryUpdater.update( ++ this@SyncService, ++ repository, ++ unstableUpdates ++ ) { stage, progress, total -> ++ launch { ++ syncState.emit( ++ State.Syncing( ++ appName = repository.name, ++ stage = stage, ++ read = DataSize(progress), ++ total = total?.let { DataSize(it) } ++ ) ++ ) ++ } ++ } ++ passedHasUpdates = when (response) { ++ is Result.Error -> { ++ response.exception?.let { ++ it.printStackTrace() ++ if (task.manual) showNotificationError(repository, it as Exception) ++ } ++ response.data == true || hasUpdates ++ } ++ ++ is Result.Success -> response.data || hasUpdates ++ } ++ } finally { ++ withContext(NonCancellable) { ++ lock.withLock { currentTask = null } ++ handleNextTask(passedHasUpdates) ++ } ++ } ++ } ++ ++ private suspend fun handleUpdates( ++ hasUpdates: Boolean, ++ notifyUpdates: Boolean, ++ autoUpdate: Boolean ++ ) { ++ try { ++ if (!hasUpdates || !notifyUpdates) { ++ onFinishState.emit(Unit) ++ val needStop = started == Started.MANUAL ++ started = Started.NO ++ if (needStop) stopForegroundCompat() ++ return ++ } ++ val blocked = updateNotificationBlockerFragment?.get()?.isAdded == true ++ val updates = Database.ProductAdapter.getUpdates() ++ if (!blocked && updates.isNotEmpty()) { ++ displayUpdatesNotification(updates) ++ if (autoUpdate) updateAllAppsInternal() ++ } ++ handleUpdates(hasUpdates = false, notifyUpdates = true, autoUpdate = autoUpdate) ++ } finally { ++ withContext(NonCancellable) { ++ lock.withLock { currentTask = null } ++ handleNextTask(false) ++ } ++ } ++ } ++ ++ private suspend fun updateAllAppsInternal() { ++ Database.ProductAdapter ++ .getUpdates() ++ // Update LeOS-Doid the last ++ .sortedBy { if (it.packageName == packageName) 1 else -1 } ++ .map { ++ Database.InstalledAdapter.get(it.packageName, null) to ++ Database.RepositoryAdapter.get(it.repositoryId) ++ } ++ .filter { it.first != null && it.second != null } ++ .forEach { (installItem, repo) -> ++ val productRepo = Database.ProductAdapter.get(installItem!!.packageName, null) ++ .filter { it.repositoryId == repo!!.id } ++ .map { it to repo!! } ++ downloadConnection.startUpdate( ++ installItem.packageName, ++ installItem, ++ productRepo ++ ) ++ } ++ } ++ ++ private fun displayUpdatesNotification(productItems: List) { ++ fun T.applyHack(callback: T.() -> Unit): T = apply(callback) ++ notificationManager?.notify( ++ Constants.NOTIFICATION_ID_UPDATES, ++ NotificationCompat ++ .Builder(this, Constants.NOTIFICATION_CHANNEL_UPDATES) ++ .setSmallIcon(CommonR.drawable.ic_new_releases) ++ .setContentTitle(getString(stringRes.new_updates_available)) ++ .setContentText( ++ resources.getQuantityString( ++ CommonR.plurals.new_updates_DESC_FORMAT, ++ productItems.size, ++ productItems.size ++ ) ++ ) ++ .setColor( ++ ContextThemeWrapper(this, styleRes.Theme_Main_Light) ++ .getColorFromAttr(android.R.attr.colorPrimary).defaultColor ++ ) ++ .setContentIntent( ++ PendingIntent.getActivity( ++ this, ++ 0, ++ Intent(this, MainActivity::class.java) ++ .setAction(MainActivity.ACTION_UPDATES), ++ PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE ++ ) ++ ) ++ .setStyle( ++ NotificationCompat.InboxStyle().applyHack { ++ for (productItem in productItems.take(MAX_UPDATE_NOTIFICATION)) { ++ val builder = SpannableStringBuilder(productItem.name) ++ builder.setSpan( ++ ForegroundColorSpan(Color.BLACK), ++ 0, ++ builder.length, ++ SpannableStringBuilder.SPAN_EXCLUSIVE_EXCLUSIVE ++ ) ++ builder.append(' ').append(productItem.version) ++ addLine(builder) ++ } ++ if (productItems.size > MAX_UPDATE_NOTIFICATION) { ++ val summary = ++ getString( ++ stringRes.plus_more_FORMAT, ++ productItems.size - MAX_UPDATE_NOTIFICATION ++ ) ++ if (SdkCheck.isNougat) addLine(summary) else setSummaryText(summary) ++ } ++ } ++ ) ++ .build() ++ ) ++ } ++ ++ @SuppressLint("SpecifyJobSchedulerIdRange") ++ class Job : JobService() { ++ private val jobScope = CoroutineScope(Dispatchers.Default) ++ private var syncParams: JobParameters? = null ++ private val syncConnection = ++ Connection(SyncService::class.java, onBind = { connection, binder -> ++ jobScope.launch { ++ binder.onFinish.collect { ++ val params = syncParams ++ if (params != null) { ++ syncParams = null ++ connection.unbind(this@Job) ++ jobFinished(params, false) ++ } ++ } ++ } ++ binder.sync(SyncRequest.AUTO) ++ }, onUnbind = { _, binder -> ++ binder.cancelAuto() ++ jobScope.cancel() ++ val params = syncParams ++ if (params != null) { ++ syncParams = null ++ jobFinished(params, true) ++ } ++ }) ++ ++ override fun onStartJob(params: JobParameters): Boolean { ++ syncParams = params ++ syncConnection.bind(this) ++ return true ++ } ++ ++ override fun onStopJob(params: JobParameters): Boolean { ++ syncParams = null ++ jobScope.cancel() ++ val reschedule = syncConnection.binder?.cancelAuto() == true ++ syncConnection.unbind(this) ++ return reschedule ++ } ++ ++ companion object { ++ fun create( ++ context: Context, ++ periodMillis: Long, ++ networkType: Int, ++ isCharging: Boolean, ++ isBatteryLow: Boolean ++ ): JobInfo = JobInfo.Builder( ++ Constants.JOB_ID_SYNC, ++ ComponentName(context, Job::class.java) ++ ).apply { ++ setRequiredNetworkType(networkType) ++ sdkAbove(sdk = Build.VERSION_CODES.O) { ++ setRequiresCharging(isCharging) ++ setRequiresBatteryNotLow(isBatteryLow) ++ setRequiresStorageNotLow(true) ++ } ++ if (SdkCheck.isNougat) { ++ setPeriodic(periodMillis, JobInfo.getMinFlexMillis()) ++ } else { ++ setPeriodic(periodMillis) ++ } ++ }.build() ++ } ++ } ++} +Index: app/src/main/kotlin/com/leos/droidify/sync/SyncPreference.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/sync/SyncPreference.kt b/app/src/main/kotlin/com/leos/droidify/sync/SyncPreference.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/sync/SyncPreference.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,23 @@ ++package com.leos.droidify.sync ++ ++import android.app.job.JobInfo ++import androidx.work.Constraints ++import androidx.work.NetworkType ++ ++data class SyncPreference( ++ val networkType: NetworkType, ++ val pluggedIn: Boolean = false, ++ val batteryNotLow: Boolean = true, ++) ++ ++fun SyncPreference.toJobNetworkType() = when (networkType) { ++ NetworkType.NOT_REQUIRED -> JobInfo.NETWORK_TYPE_NONE ++ NetworkType.UNMETERED -> JobInfo.NETWORK_TYPE_UNMETERED ++ else -> JobInfo.NETWORK_TYPE_ANY ++} ++ ++fun SyncPreference.toWorkConstraints(): Constraints = Constraints( ++ requiredNetworkType = networkType, ++ requiresCharging = pluggedIn, ++ requiresBatteryNotLow = batteryNotLow ++) +Index: app/src/main/kotlin/com/leos/droidify/ui/MessageDialog.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/ui/MessageDialog.kt b/app/src/main/kotlin/com/leos/droidify/ui/MessageDialog.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/ui/MessageDialog.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,265 @@ ++package com.leos.droidify.ui ++ ++import android.content.ActivityNotFoundException ++import android.content.Intent ++import android.net.Uri ++import android.os.Bundle ++import android.os.Parcel ++import android.os.Parcelable ++import androidx.appcompat.app.AlertDialog ++import androidx.core.os.bundleOf ++import androidx.fragment.app.DialogFragment ++import androidx.fragment.app.FragmentManager ++import com.google.android.material.dialog.MaterialAlertDialogBuilder ++import com.leos.core.common.SdkCheck ++import com.leos.core.common.nullIfEmpty ++import com.leos.core.domain.Release ++import com.leos.droidify.ui.repository.RepositoryFragment ++import com.leos.droidify.utility.PackageItemResolver ++import com.leos.droidify.utility.extension.android.Android ++import kotlinx.parcelize.Parceler ++import kotlinx.parcelize.Parcelize ++import kotlinx.parcelize.TypeParceler ++import com.leos.core.common.R.string as stringRes ++ ++class MessageDialog() : DialogFragment() { ++ companion object { ++ private const val EXTRA_MESSAGE = "message" ++ } ++ ++ constructor(message: Message) : this() { ++ arguments = bundleOf(EXTRA_MESSAGE to message) ++ } ++ ++ fun show(fragmentManager: FragmentManager) { ++ show(fragmentManager, this::class.java.name) ++ } ++ ++ override fun onCreateDialog(savedInstanceState: Bundle?): AlertDialog { ++ val dialog = MaterialAlertDialogBuilder(requireContext()) ++ val message = if (SdkCheck.isTiramisu) { ++ arguments?.getParcelable(EXTRA_MESSAGE, Message::class.java)!! ++ } else { ++ arguments?.getParcelable(EXTRA_MESSAGE)!! ++ } ++ when (message) { ++ is Message.DeleteRepositoryConfirm -> { ++ dialog.setTitle(stringRes.confirmation) ++ dialog.setMessage(stringRes.delete_repository_DESC) ++ dialog.setPositiveButton(stringRes.delete) { _, _ -> ++ (parentFragment as RepositoryFragment).onDeleteConfirm() ++ } ++ dialog.setNegativeButton(stringRes.cancel, null) ++ } ++ ++ is Message.CantEditSyncing -> { ++ dialog.setTitle(stringRes.action_failed) ++ dialog.setMessage(stringRes.cant_edit_sync_DESC) ++ dialog.setPositiveButton(stringRes.ok, null) ++ } ++ ++ is Message.Link -> { ++ dialog.setTitle(stringRes.confirmation) ++ dialog.setMessage(getString(stringRes.open_DESC_FORMAT, message.uri.toString())) ++ dialog.setPositiveButton(stringRes.ok) { _, _ -> ++ try { ++ startActivity(Intent(Intent.ACTION_VIEW, message.uri)) ++ } catch (e: ActivityNotFoundException) { ++ e.printStackTrace() ++ } ++ } ++ dialog.setNegativeButton(stringRes.cancel, null) ++ } ++ ++ is Message.Permissions -> { ++ val packageManager = requireContext().packageManager ++ val builder = StringBuilder() ++ val localCache = PackageItemResolver.LocalCache() ++ val title = if (message.group != null) { ++ val name = try { ++ val permissionGroupInfo = ++ packageManager.getPermissionGroupInfo(message.group, 0) ++ PackageItemResolver.loadLabel( ++ requireContext(), ++ localCache, ++ permissionGroupInfo ++ )?.nullIfEmpty()?.let { if (it == message.group) null else it } ++ } catch (e: Exception) { ++ null ++ } ++ name ?: getString(stringRes.unknown) ++ } else { ++ getString(stringRes.other) ++ } ++ for (permission in message.permissions) { ++ kotlin.runCatching { ++ val permissionInfo = packageManager.getPermissionInfo(permission, 0) ++ PackageItemResolver.loadDescription( ++ requireContext(), ++ localCache, ++ permissionInfo ++ )?.nullIfEmpty()?.let { if (it == permission) null else it } ++ ?: error("Invalid Permission Description") ++ }.onSuccess { ++ builder.append(it).append("\n\n") ++ } ++ } ++ if (builder.isNotEmpty()) { ++ builder.delete(builder.length - 2, builder.length) ++ } else { ++ builder.append(getString(stringRes.no_description_available_DESC)) ++ } ++ dialog.setTitle(title) ++ dialog.setMessage(builder) ++ dialog.setPositiveButton(stringRes.ok, null) ++ } ++ ++ is Message.ReleaseIncompatible -> { ++ val builder = StringBuilder() ++ val minSdkVersion = ++ if (Release.Incompatibility.MinSdk in message.incompatibilities) { ++ message.minSdkVersion ++ } else { ++ null ++ } ++ val maxSdkVersion = ++ if (Release.Incompatibility.MaxSdk in message.incompatibilities) { ++ message.maxSdkVersion ++ } else { ++ null ++ } ++ if (minSdkVersion != null || maxSdkVersion != null) { ++ val versionMessage = minSdkVersion?.let { ++ getString( ++ stringRes.incompatible_api_min_DESC_FORMAT, ++ it ++ ) ++ } ++ ?: maxSdkVersion?.let { ++ getString( ++ stringRes.incompatible_api_max_DESC_FORMAT, ++ it ++ ) ++ } ++ builder.append( ++ getString( ++ stringRes.incompatible_api_DESC_FORMAT, ++ Android.name, ++ SdkCheck.sdk, ++ versionMessage.orEmpty() ++ ) ++ ).append("\n\n") ++ } ++ if (Release.Incompatibility.Platform in message.incompatibilities) { ++ builder.append( ++ getString( ++ stringRes.incompatible_platforms_DESC_FORMAT, ++ Android.primaryPlatform ?: getString(stringRes.unknown), ++ message.platforms.joinToString(separator = ", ") ++ ) ++ ).append("\n\n") ++ } ++ val features = ++ message.incompatibilities.mapNotNull { it as? Release.Incompatibility.Feature } ++ if (features.isNotEmpty()) { ++ builder.append(getString(stringRes.incompatible_features_DESC)) ++ for (feature in features) { ++ builder.append("\n\u2022 ").append(feature.feature) ++ } ++ builder.append("\n\n") ++ } ++ if (builder.isNotEmpty()) { ++ builder.delete(builder.length - 2, builder.length) ++ } ++ dialog.setTitle(stringRes.incompatible_version) ++ dialog.setMessage(builder) ++ dialog.setPositiveButton(stringRes.ok, null) ++ } ++ ++ is Message.ReleaseOlder -> { ++ dialog.setTitle(stringRes.incompatible_version) ++ dialog.setMessage(stringRes.incompatible_older_DESC) ++ dialog.setPositiveButton(stringRes.ok, null) ++ } ++ ++ is Message.ReleaseSignatureMismatch -> { ++ dialog.setTitle(stringRes.incompatible_version) ++ dialog.setMessage(stringRes.incompatible_signature_DESC) ++ dialog.setPositiveButton(stringRes.ok, null) ++ } ++ }::class ++ return dialog.create() ++ } ++} ++ ++@Parcelize ++sealed interface Message : Parcelable { ++ @Parcelize ++ data object DeleteRepositoryConfirm : Message ++ ++ @Parcelize ++ data object CantEditSyncing : Message ++ ++ @Parcelize ++ class Link(val uri: Uri) : Message ++ ++ @Parcelize ++ class Permissions(val group: String?, val permissions: List) : Message ++ ++ @Parcelize ++ @TypeParceler ++ class ReleaseIncompatible( ++ val incompatibilities: List, ++ val platforms: List, ++ val minSdkVersion: Int, ++ val maxSdkVersion: Int ++ ) : Message ++ ++ @Parcelize ++ data object ReleaseOlder : Message ++ ++ @Parcelize ++ data object ReleaseSignatureMismatch : Message ++} ++ ++class ReleaseIncompatibilityParceler : Parceler { ++ ++ private companion object { ++ // Incompatibility indices in `Parcel` ++ const val MIN_SDK_INDEX = 0 ++ const val MAX_SDK_INDEX = 1 ++ const val PLATFORM_INDEX = 2 ++ const val FEATURE_INDEX = 3 ++ } ++ ++ override fun create(parcel: Parcel): Release.Incompatibility { ++ return when (parcel.readInt()) { ++ MIN_SDK_INDEX -> Release.Incompatibility.MinSdk ++ MAX_SDK_INDEX -> Release.Incompatibility.MaxSdk ++ PLATFORM_INDEX -> Release.Incompatibility.Platform ++ FEATURE_INDEX -> Release.Incompatibility.Feature(requireNotNull(parcel.readString())) ++ else -> error("Invalid Index for Incompatibility") ++ } ++ } ++ ++ override fun Release.Incompatibility.write(parcel: Parcel, flags: Int) { ++ when (this) { ++ is Release.Incompatibility.MinSdk -> { ++ parcel.writeInt(MIN_SDK_INDEX) ++ } ++ ++ is Release.Incompatibility.MaxSdk -> { ++ parcel.writeInt(MAX_SDK_INDEX) ++ } ++ ++ is Release.Incompatibility.Platform -> { ++ parcel.writeInt(PLATFORM_INDEX) ++ } ++ ++ is Release.Incompatibility.Feature -> { ++ parcel.writeInt(FEATURE_INDEX) ++ parcel.writeString(feature) ++ } ++ } ++ } ++} +Index: app/src/main/kotlin/com/looker/droidify/ui/ScreenFragment.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/looker/droidify/ui/ScreenFragment.kt b/app/src/main/kotlin/com/leos/droidify/ui/ScreenFragment.kt +rename from app/src/main/kotlin/com/looker/droidify/ui/ScreenFragment.kt +rename to app/src/main/kotlin/com/leos/droidify/ui/ScreenFragment.kt +--- a/app/src/main/kotlin/com/looker/droidify/ui/ScreenFragment.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/app/src/main/kotlin/com/leos/droidify/ui/ScreenFragment.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.droidify.ui ++package com.leos.droidify.ui + + import android.os.Bundle + import android.view.LayoutInflater +@@ -6,7 +6,7 @@ + import android.view.ViewGroup + import androidx.fragment.app.Fragment + import com.google.android.material.appbar.MaterialToolbar +-import com.looker.droidify.databinding.FragmentBinding ++import com.leos.droidify.databinding.FragmentBinding + + open class ScreenFragment : Fragment() { + private var _fragmentBinding: FragmentBinding? = null +Index: app/src/main/kotlin/com/leos/droidify/ui/appDetail/AppDetailAdapter.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/ui/appDetail/AppDetailAdapter.kt b/app/src/main/kotlin/com/leos/droidify/ui/appDetail/AppDetailAdapter.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/ui/appDetail/AppDetailAdapter.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,1808 @@ ++package com.leos.droidify.ui.appDetail ++ ++import android.annotation.SuppressLint ++import android.content.* ++import android.content.pm.PermissionGroupInfo ++import android.content.pm.PermissionInfo ++import android.content.res.Resources ++import android.graphics.* ++import android.net.Uri ++import android.os.Parcelable ++import android.text.SpannableStringBuilder ++import android.text.format.DateFormat ++import android.text.method.LinkMovementMethod ++import android.text.style.* ++import android.text.util.Linkify ++import android.view.* ++import android.widget.* ++import androidx.annotation.DrawableRes ++import androidx.annotation.StringRes ++import androidx.core.net.toUri ++import androidx.core.text.HtmlCompat ++import androidx.core.text.bold ++import androidx.core.text.buildSpannedString ++import androidx.core.text.util.LinkifyCompat ++import androidx.core.view.isVisible ++import androidx.recyclerview.widget.LinearLayoutManager ++import androidx.recyclerview.widget.RecyclerView ++import coil.load ++import com.google.android.material.button.MaterialButton ++import com.google.android.material.card.MaterialCardView ++import com.google.android.material.imageview.ShapeableImageView ++import com.google.android.material.materialswitch.MaterialSwitch ++import com.google.android.material.progressindicator.LinearProgressIndicator ++import com.google.android.material.snackbar.Snackbar ++import com.leos.core.common.DataSize ++import com.leos.core.common.extension.* ++import com.leos.core.common.formatSize ++import com.leos.core.common.nullIfEmpty ++import com.leos.core.domain.* ++import com.leos.droidify.R ++import com.leos.droidify.content.ProductPreferences ++import com.leos.droidify.utility.PackageItemResolver ++import com.leos.droidify.utility.extension.ImageUtils.icon ++import com.leos.droidify.utility.extension.android.Android ++import com.leos.droidify.utility.extension.resources.TypefaceExtra ++import com.leos.droidify.utility.extension.resources.sizeScaled ++import com.leos.droidify.widget.StableRecyclerAdapter ++import kotlinx.datetime.Instant ++import kotlinx.datetime.TimeZone ++import kotlinx.datetime.toJavaLocalDateTime ++import kotlinx.datetime.toLocalDateTime ++import kotlinx.parcelize.Parcelize ++import java.lang.ref.WeakReference ++import java.time.format.DateTimeFormatter ++import java.time.format.FormatStyle ++import java.util.Locale ++import kotlin.math.PI ++import kotlin.math.roundToInt ++import kotlin.math.sin ++import com.google.android.material.R as MaterialR ++import com.leos.core.common.R.drawable as drawableRes ++import com.leos.core.common.R.string as stringRes ++ ++class AppDetailAdapter(private val callbacks: Callbacks) : ++ StableRecyclerAdapter() { ++ ++ companion object { ++ private const val MAX_RELEASE_ITEMS = 5 ++ } ++ ++ interface Callbacks { ++ fun onActionClick(action: Action) ++ fun onFavouriteClicked() ++ fun onPreferenceChanged(preference: ProductPreference) ++ fun onPermissionsClick(group: String?, permissions: List) ++ fun onScreenshotClick(screenshot: Product.Screenshot, parentView: ImageView) ++ fun onReleaseClick(release: Release) ++ fun onRequestAddRepository(address: String) ++ fun onUriClick(uri: Uri, shouldConfirm: Boolean): Boolean ++ } ++ ++ enum class Action(@StringRes val titleResId: Int, @DrawableRes val iconResId: Int) { ++ INSTALL(stringRes.install, drawableRes.ic_download), ++ UPDATE(stringRes.update, drawableRes.ic_download), ++ LAUNCH(stringRes.launch, drawableRes.ic_launch), ++ DETAILS(stringRes.details, drawableRes.ic_tune), ++ UNINSTALL(stringRes.uninstall, drawableRes.ic_delete), ++ CANCEL(stringRes.cancel, drawableRes.ic_cancel), ++ SHARE(stringRes.share, drawableRes.ic_share) ++ } ++ ++ sealed interface Status { ++ data object Idle : Status ++ data object Pending : Status ++ data object Connecting : Status ++ data class Downloading(val read: DataSize, val total: DataSize?) : Status ++ data object PendingInstall : Status ++ data object Installing : Status ++ } ++ ++ enum class ViewType { ++ APP_INFO, ++ DOWNLOAD_STATUS, ++ INSTALL_BUTTON, ++ SCREENSHOT, ++ SWITCH, ++ SECTION, ++ EXPAND, ++ TEXT, ++ LINK, ++ PERMISSIONS, ++ RELEASE, ++ EMPTY ++ } ++ ++ private enum class SwitchType(val titleResId: Int) { ++ IGNORE_ALL_UPDATES(stringRes.ignore_all_updates), ++ IGNORE_THIS_UPDATE(stringRes.ignore_this_update) ++ } ++ ++ private enum class SectionType( ++ val titleResId: Int, ++ val colorAttrResId: Int = MaterialR.attr.colorPrimary ++ ) { ++ ANTI_FEATURES(stringRes.anti_features, MaterialR.attr.colorError), ++ CHANGES(stringRes.changes), ++ LINKS(stringRes.links), ++ DONATE(stringRes.donate), ++ PERMISSIONS(stringRes.permissions), ++ VERSIONS(stringRes.versions) ++ } ++ ++ internal enum class ExpandType { ++ NOTHING, DESCRIPTION, CHANGES, ++ LINKS, DONATES, PERMISSIONS, VERSIONS ++ } ++ ++ private enum class TextType { DESCRIPTION, ANTI_FEATURES, CHANGES } ++ ++ private enum class LinkType( ++ val iconResId: Int, ++ val titleResId: Int, ++ val format: ((Context, String) -> String)? = null ++ ) { ++ SOURCE(drawableRes.ic_code, stringRes.source_code), ++ AUTHOR(drawableRes.ic_person, stringRes.author_website), ++ EMAIL(drawableRes.ic_email, stringRes.author_email), ++ LICENSE( ++ drawableRes.ic_copyright, ++ stringRes.license, ++ format = { context, text -> context.getString(stringRes.license_FORMAT, text) } ++ ), ++ TRACKER(drawableRes.ic_bug_report, stringRes.bug_tracker), ++ CHANGELOG(drawableRes.ic_history, stringRes.changelog), ++ WEB(drawableRes.ic_public, stringRes.project_website) ++ } ++ ++ private sealed class Item { ++ abstract val descriptor: String ++ abstract val viewType: ViewType ++ ++ class AppInfoItem( ++ val repository: Repository, ++ val product: Product ++ ) : Item() { ++ override val descriptor: String ++ get() = "app_info.${product.name}" ++ ++ override val viewType: ViewType ++ get() = ViewType.APP_INFO ++ } ++ ++ data object DownloadStatusItem : Item() { ++ override val descriptor: String ++ get() = "download_status" ++ override val viewType: ViewType ++ get() = ViewType.DOWNLOAD_STATUS ++ } ++ ++ data object InstallButtonItem : Item() { ++ override val descriptor: String ++ get() = "install_button" ++ override val viewType: ViewType ++ get() = ViewType.INSTALL_BUTTON ++ } ++ ++ class ScreenshotItem( ++ val screenshots: List, ++ val packageName: String, ++ val repository: Repository ++ ) : Item() { ++ override val descriptor: String ++ get() = "screenshot.${screenshots.size}" ++ override val viewType: ViewType ++ get() = ViewType.SCREENSHOT ++ } ++ ++ class SwitchItem( ++ val switchType: SwitchType, ++ val packageName: String, ++ val versionCode: Long ++ ) : Item() { ++ override val descriptor: String ++ get() = "switch.${switchType.name}" ++ ++ override val viewType: ViewType ++ get() = ViewType.SWITCH ++ } ++ ++ class SectionItem( ++ val sectionType: SectionType, ++ val expandType: ExpandType, ++ val items: List, ++ val collapseCount: Int ++ ) : Item() { ++ constructor(sectionType: SectionType) : this( ++ sectionType, ++ ExpandType.NOTHING, ++ emptyList(), ++ 0 ++ ) ++ ++ override val descriptor: String ++ get() = "section.${sectionType.name}" ++ ++ override val viewType: ViewType ++ get() = ViewType.SECTION ++ } ++ ++ class ExpandItem( ++ val expandType: ExpandType, ++ val replace: Boolean, ++ val items: List ++ ) : Item() { ++ override val descriptor: String ++ get() = "expand.${expandType.name}" ++ ++ override val viewType: ViewType ++ get() = ViewType.EXPAND ++ } ++ ++ class TextItem(val textType: TextType, val text: CharSequence) : Item() { ++ override val descriptor: String ++ get() = "text.${textType.name}" ++ ++ override val viewType: ViewType ++ get() = ViewType.TEXT ++ } ++ ++ sealed class LinkItem : Item() { ++ override val viewType: ViewType ++ get() = ViewType.LINK ++ ++ abstract val iconResId: Int ++ abstract fun getTitle(context: Context): String ++ abstract val uri: Uri? ++ ++ val displayLink: String? ++ get() = uri?.schemeSpecificPart?.nullIfEmpty() ++ ?.let { if (it.startsWith("//")) null else it } ?: uri?.toString() ++ ++ class Typed( ++ val linkType: LinkType, ++ val text: String, ++ override val uri: Uri? ++ ) : LinkItem() { ++ override val descriptor: String ++ get() = "link.typed.${linkType.name}" ++ ++ override val iconResId: Int ++ get() = linkType.iconResId ++ ++ override fun getTitle(context: Context): String { ++ return text.nullIfEmpty()?.let { linkType.format?.invoke(context, it) ?: it } ++ ?: context.getString(linkType.titleResId) ++ } ++ } ++ ++ class Donate(val donate: Product.Donate) : LinkItem() { ++ override val descriptor: String ++ get() = "link.donate.$donate" ++ ++ override val iconResId: Int ++ get() = when (donate) { ++ is Product.Donate.Regular -> drawableRes.ic_donate ++ is Product.Donate.Bitcoin -> drawableRes.ic_donate_bitcoin ++ is Product.Donate.Litecoin -> drawableRes.ic_donate_litecoin ++ is Product.Donate.Flattr -> drawableRes.ic_donate_flattr ++ is Product.Donate.Liberapay -> drawableRes.ic_donate_liberapay ++ is Product.Donate.OpenCollective -> drawableRes.ic_donate_opencollective ++ } ++ ++ override fun getTitle(context: Context): String = when (donate) { ++ is Product.Donate.Regular -> context.getString(stringRes.website) ++ is Product.Donate.Bitcoin -> "Bitcoin" ++ is Product.Donate.Litecoin -> "Litecoin" ++ is Product.Donate.Flattr -> "Flattr" ++ is Product.Donate.Liberapay -> "Liberapay" ++ is Product.Donate.OpenCollective -> "Open Collective" ++ } ++ ++ override val uri: Uri? = when (donate) { ++ is Product.Donate.Regular -> Uri.parse(donate.url) ++ is Product.Donate.Bitcoin -> Uri.parse("bitcoin:${donate.address}") ++ is Product.Donate.Litecoin -> Uri.parse("litecoin:${donate.address}") ++ is Product.Donate.Flattr -> Uri.parse( ++ "https://flattr.com/thing/${donate.id}" ++ ) ++ ++ is Product.Donate.Liberapay -> Uri.parse( ++ "https://liberapay.com/~${donate.id}" ++ ) ++ ++ is Product.Donate.OpenCollective -> Uri.parse( ++ "https://opencollective.com/${donate.id}" ++ ) ++ } ++ } ++ } ++ ++ class PermissionsItem( ++ val group: PermissionGroupInfo?, ++ val permissions: List ++ ) : Item() { ++ override val descriptor: String ++ get() = "permissions.${group?.name}" + ++ ".${permissions.joinToString(separator = ".") { it.name }}" ++ ++ override val viewType: ViewType ++ get() = ViewType.PERMISSIONS ++ } ++ ++ class ReleaseItem( ++ val repository: Repository, ++ val release: Release, ++ val selectedRepository: Boolean, ++ val showSignature: Boolean ++ ) : Item() { ++ override val descriptor: String ++ get() = "release.${repository.id}.${release.identifier}" ++ ++ override val viewType: ViewType ++ get() = ViewType.RELEASE ++ } ++ ++ class EmptyItem(val packageName: String, val repoAddress: String?) : Item() { ++ override val descriptor: String ++ get() = "empty" ++ ++ override val viewType: ViewType ++ get() = ViewType.EMPTY ++ } ++ } ++ ++ private class Measurement { ++ private var density = 0f ++ private var scaledDensity = 0f ++ private lateinit var metric: T ++ ++ fun measure(view: View) { ++ View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED) ++ .let { view.measure(it, it) } ++ } ++ ++ fun invalidate(resources: Resources, callback: () -> T): T { ++ val (density, scaledDensity) = resources.displayMetrics.let { ++ Pair( ++ it.density, ++ it.scaledDensity ++ ) ++ } ++ if (this.density != density || this.scaledDensity != scaledDensity) { ++ this.density = density ++ this.scaledDensity = scaledDensity ++ metric = callback() ++ } ++ return metric ++ } ++ } ++ ++ @Volatile ++ private var isFavourite: Boolean = false ++ ++ private class AppInfoViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { ++ val icon = itemView.findViewById(R.id.app_icon)!! ++ val name = itemView.findViewById(R.id.app_name)!! ++ val authorName = itemView.findViewById(R.id.author_name)!! ++ val packageName = itemView.findViewById(R.id.package_name)!! ++ val textSwitcher = itemView.findViewById(R.id.author_package_name)!! ++ ++ init { ++ textSwitcher.setInAnimation(itemView.context!!, R.anim.slide_right_fade_in) ++ textSwitcher.setOutAnimation(itemView.context!!, R.anim.slide_right_fade_out) ++ } ++ ++ val version = itemView.findViewById(R.id.version)!! ++ val size = itemView.findViewById(R.id.size)!! ++ val dev = itemView.findViewById(R.id.dev_block)!! ++ ++ val favouriteButton = itemView.findViewById(R.id.favourite)!! ++ } ++ ++ private class DownloadStatusViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { ++ val statusText = itemView.findViewById(R.id.status)!! ++ val progress = itemView.findViewById(R.id.progress)!! ++ } ++ ++ private class InstallButtonViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { ++ val button = itemView.findViewById(R.id.action)!! ++ ++ val actionTintNormal = button.context.getColorFromAttr(MaterialR.attr.colorPrimary) ++ val actionTintOnNormal = button.context.getColorFromAttr(MaterialR.attr.colorOnPrimary) ++ val actionTintCancel = button.context.getColorFromAttr(MaterialR.attr.colorError) ++ val actionTintOnCancel = button.context.getColorFromAttr(MaterialR.attr.colorOnError) ++ val actionTintDisabled = button.context.getColorFromAttr(MaterialR.attr.colorOutline) ++ val actionTintOnDisabled = button.context.getColorFromAttr(android.R.attr.colorBackground) ++ ++ init { ++ button.height = itemView.resources.sizeScaled(48) ++ } ++ } ++ ++ private class ScreenShotViewHolder(context: Context) : ++ RecyclerView.ViewHolder(RecyclerView(context)) { ++ ++ val screenshotsRecycler: RecyclerView ++ get() = itemView as RecyclerView ++ } ++ ++ private class SwitchViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { ++ val switch = itemView.findViewById(R.id.update_state_switch)!! ++ ++ val statefulViews: Sequence ++ get() = sequenceOf(itemView, switch) ++ } ++ ++ private class SectionViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { ++ val title = itemView.findViewById(R.id.title)!! ++ val icon = itemView.findViewById(R.id.icon)!! ++ } ++ ++ private class ExpandViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { ++ val button = itemView.findViewById(R.id.expand_view_button)!! ++ } ++ ++ private class TextViewHolder(context: Context) : ++ RecyclerView.ViewHolder(TextView(context)) { ++ val text: TextView ++ get() = itemView as TextView ++ ++ init { ++ with(itemView as TextView) { ++ setTextIsSelectable(true) ++ setTextSizeScaled(15) ++ isFocusable = false ++ 16.dp.let { itemView.setPadding(it, it, it, it) } ++ movementMethod = LinkMovementMethod() ++ layoutParams = RecyclerView.LayoutParams( ++ RecyclerView.LayoutParams.MATCH_PARENT, ++ RecyclerView.LayoutParams.WRAP_CONTENT ++ ) ++ } ++ } ++ } ++ ++ @SuppressLint("ClickableViewAccessibility") ++ private open class OverlappingViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { ++ init { ++ // Block touch events if touched above negative margin ++ itemView.setOnTouchListener { _, event -> ++ event.action == MotionEvent.ACTION_DOWN && run { ++ val top = (itemView.layoutParams as ViewGroup.MarginLayoutParams).topMargin ++ top < 0 && event.y < -top ++ } ++ } ++ } ++ } ++ ++ private class LinkViewHolder(itemView: View) : OverlappingViewHolder(itemView) { ++ companion object { ++ private val measurement = Measurement() ++ } ++ ++ val icon = itemView.findViewById(R.id.icon)!! ++ val text = itemView.findViewById(R.id.text)!! ++ val link = itemView.findViewById(R.id.link)!! ++ ++ init { ++ text.typeface = TypefaceExtra.medium ++ val margin = measurement.invalidate(itemView.resources) { ++ @SuppressLint("SetTextI18n") ++ text.text = "measure" ++ link.visibility = View.GONE ++ measurement.measure(itemView) ++ ((itemView.measuredHeight - icon.measuredHeight) / 2f).roundToInt() ++ } ++ (icon.layoutParams as ViewGroup.MarginLayoutParams).apply { ++ topMargin += margin ++ bottomMargin += margin ++ } ++ } ++ } ++ ++ private class PermissionsViewHolder(itemView: View) : OverlappingViewHolder(itemView) { ++ companion object { ++ private val measurement = Measurement() ++ } ++ ++ val icon = itemView.findViewById(R.id.icon)!! ++ val text = itemView.findViewById(R.id.text)!! ++ ++ init { ++ val margin = measurement.invalidate(itemView.resources) { ++ @SuppressLint("SetTextI18n") ++ text.text = "measure" ++ measurement.measure(itemView) ++ ((itemView.measuredHeight - icon.measuredHeight) / 2f).roundToInt() ++ } ++ (icon.layoutParams as ViewGroup.MarginLayoutParams).apply { ++ topMargin += margin ++ bottomMargin += margin ++ } ++ } ++ } ++ ++ private class ReleaseViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { ++ val dateFormat = DateFormat.getDateFormat(itemView.context)!! ++ ++ val version = itemView.findViewById(R.id.version)!! ++ val status = itemView.findViewById(R.id.installation_status)!! ++ val source = itemView.findViewById(R.id.source)!! ++ val added = itemView.findViewById(R.id.added)!! ++ val size = itemView.findViewById(R.id.size)!! ++ val signature = itemView.findViewById(R.id.signature)!! ++ val compatibility = itemView.findViewById(R.id.compatibility)!! ++ ++ val statefulViews: Sequence ++ get() = sequenceOf( ++ itemView, ++ version, ++ status, ++ source, ++ added, ++ size, ++ signature, ++ compatibility ++ ) ++ } ++ ++ private class EmptyViewHolder(context: Context) : ++ RecyclerView.ViewHolder(LinearLayout(context)) { ++ val packageName = TextView(context) ++ val repoTitle = TextView(context) ++ val repoAddress = TextView(context) ++ val copyRepoAddress = MaterialButton(context) ++ ++ init { ++ with(itemView as LinearLayout) { ++ layoutParams = RecyclerView.LayoutParams( ++ RecyclerView.LayoutParams.MATCH_PARENT, ++ RecyclerView.LayoutParams.MATCH_PARENT ++ ) ++ orientation = LinearLayout.VERTICAL ++ gravity = Gravity.CENTER ++ setPadding(20.dp, 20.dp, 20.dp, 20.dp) ++ val imageView = ImageView(context) ++ val bitmap = Bitmap.createBitmap( ++ 64.dp.px.roundToInt(), ++ 32.dp.px.roundToInt(), ++ Bitmap.Config.ARGB_8888 ++ ) ++ val canvas = Canvas(bitmap) ++ val title = TextView(context) ++ with(title) { ++ gravity = Gravity.CENTER ++ typeface = TypefaceExtra.medium ++ setTextColor(context.getColorFromAttr(MaterialR.attr.colorPrimary)) ++ setTextSizeScaled(20) ++ setText(stringRes.application_not_found) ++ setPadding(0, 12.dp, 0, 12.dp) ++ } ++ with(packageName) { ++ gravity = Gravity.CENTER ++ setTextColor(context.getColorFromAttr(MaterialR.attr.colorOutline)) ++ typeface = Typeface.DEFAULT_BOLD ++ setTextSizeScaled(16) ++ background = context.corneredBackground ++ setPadding(0, 12.dp, 0, 12.dp) ++ } ++ val waveHeight = 2.dp.px ++ val waveWidth = 12.dp.px ++ with(canvas) { ++ val linePaint = Paint().apply { ++ color = context.getColorFromAttr(MaterialR.attr.colorOutline).defaultColor ++ strokeWidth = 8f ++ strokeCap = Paint.Cap.ROUND ++ strokeJoin = Paint.Join.ROUND ++ } ++ for (x in 12..(width - 12)) { ++ val yValue = ++ ( ++ ( ++ sin(x * (2f * PI / waveWidth)) * ++ (waveHeight / (2)) + ++ (waveHeight / 2) ++ ).toFloat() + ++ (0 - (waveHeight / 2)) ++ ) + height / 2 ++ drawPoint(x.toFloat(), yValue, linePaint) ++ } ++ } ++ imageView.load(bitmap) ++ with(repoTitle) { ++ gravity = Gravity.CENTER ++ typeface = TypefaceExtra.medium ++ setTextColor(context.getColorFromAttr(MaterialR.attr.colorPrimary)) ++ setTextSizeScaled(20) ++ setPadding(0, 0, 0, 12.dp) ++ } ++ with(repoAddress) { ++ gravity = Gravity.CENTER ++ setTextColor(context.getColorFromAttr(MaterialR.attr.colorOutline)) ++ typeface = Typeface.DEFAULT_BOLD ++ setTextSizeScaled(16) ++ background = context.corneredBackground ++ setPadding(0, 12.dp, 0, 12.dp) ++ } ++ with(copyRepoAddress) { ++ icon = context.open ++ setText(stringRes.add_repository) ++ setBackgroundColor(context.getColor(android.R.color.transparent)) ++ setTextColor(context.getColorFromAttr(MaterialR.attr.colorPrimary)) ++ iconTint = context.getColorFromAttr(MaterialR.attr.colorPrimary) ++ } ++ addView( ++ title, ++ LinearLayout.LayoutParams.MATCH_PARENT, ++ LinearLayout.LayoutParams.WRAP_CONTENT ++ ) ++ addView( ++ packageName, ++ LinearLayout.LayoutParams.MATCH_PARENT, ++ LinearLayout.LayoutParams.WRAP_CONTENT ++ ) ++ addView( ++ imageView, ++ LinearLayout.LayoutParams.MATCH_PARENT, ++ LinearLayout.LayoutParams.WRAP_CONTENT ++ ) ++ addView( ++ repoTitle, ++ LinearLayout.LayoutParams.MATCH_PARENT, ++ LinearLayout.LayoutParams.WRAP_CONTENT ++ ) ++ addView( ++ repoAddress, ++ LinearLayout.LayoutParams.MATCH_PARENT, ++ LinearLayout.LayoutParams.WRAP_CONTENT ++ ) ++ addView( ++ copyRepoAddress, ++ LinearLayout.LayoutParams.WRAP_CONTENT, ++ LinearLayout.LayoutParams.WRAP_CONTENT ++ ) ++ } ++ } ++ } ++ ++ private val items = mutableListOf() ++ private val expanded = mutableSetOf() ++ private var product: Product? = null ++ private var installedItem: InstalledItem? = null ++ ++ fun setProducts( ++ context: Context, ++ packageName: String, ++ suggestedRepo: String? = null, ++ products: List>, ++ installedItem: InstalledItem?, ++ isFavourite: Boolean, ++ allowIncompatibleVersion: Boolean ++ ) { ++ items.clear() ++ val productRepository = products.findSuggested(installedItem) ?: run { ++ items += Item.EmptyItem(packageName, suggestedRepo) ++ notifyDataSetChanged() ++ return ++ } ++ ++ this.product = productRepository.first ++ this.installedItem = installedItem ++ this.isFavourite = isFavourite ++ ++ items += Item.AppInfoItem( ++ productRepository.second, ++ productRepository.first ++ ) ++ ++ items += Item.DownloadStatusItem ++ items += Item.InstallButtonItem ++ ++ if (productRepository.first.screenshots.isNotEmpty()) { ++ val screenShotItem = mutableListOf() ++ screenShotItem += Item.ScreenshotItem( ++ productRepository.first.screenshots, ++ packageName, ++ productRepository.second ++ ) ++ items += screenShotItem ++ } ++ ++ if (installedItem != null) { ++ items.add( ++ Item.SwitchItem( ++ SwitchType.IGNORE_ALL_UPDATES, ++ packageName, ++ productRepository.first.versionCode ++ ) ++ ) ++ if (productRepository.first.canUpdate(installedItem)) { ++ items.add( ++ Item.SwitchItem( ++ SwitchType.IGNORE_THIS_UPDATE, ++ packageName, ++ productRepository.first.versionCode ++ ) ++ ) ++ } ++ } ++ ++ val textViewHolder = TextViewHolder(context) ++ val textViewWidthSpec = context.resources.displayMetrics.widthPixels ++ .let { View.MeasureSpec.makeMeasureSpec(it, View.MeasureSpec.EXACTLY) } ++ val textViewHeightSpec = ++ View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED) ++ ++ fun CharSequence.lineCropped(maxLines: Int, cropLines: Int): CharSequence? { ++ assert(cropLines <= maxLines) ++ textViewHolder.text.text = this ++ textViewHolder.text.measure(textViewWidthSpec, textViewHeightSpec) ++ textViewHolder.text.layout( ++ 0, ++ 0, ++ textViewHolder.text.measuredWidth, ++ textViewHolder.text.measuredHeight ++ ) ++ val layout = textViewHolder.text.layout ++ val cropLineOffset = ++ if (layout.lineCount <= maxLines) -1 else layout.getLineEnd(cropLines - 1) ++ val paragraphEndIndex = if (cropLineOffset < 0) { ++ -1 ++ } else { ++ indexOf("\n\n", cropLineOffset).let { if (it >= 0) it else length } ++ } ++ val paragraphEndLine = if (paragraphEndIndex < 0) { ++ -1 ++ } else { ++ layout.getLineForOffset(paragraphEndIndex).apply { assert(this >= 0) } ++ } ++ val end = when { ++ cropLineOffset < 0 -> -1 ++ paragraphEndLine >= 0 && paragraphEndLine - (cropLines - 1) <= 3 -> ++ if (paragraphEndIndex < length) paragraphEndIndex else -1 ++ ++ else -> cropLineOffset ++ } ++ val length = if (end < 0) { ++ -1 ++ } else { ++ asSequence().take(end) ++ .indexOfLast { it != '\n' }.let { if (it >= 0) it + 1 else end } ++ } ++ return if (length >= 0) subSequence(0, length) else null ++ } ++ ++ val description = formatHtml(productRepository.first.description).apply { ++ if (productRepository.first.let { it.summary.isNotEmpty() && it.name != it.summary }) { ++ if (isNotEmpty()) { ++ insert(0, "\n\n") ++ } ++ insert(0, productRepository.first.summary) ++ if (isNotEmpty()) { ++ setSpan( ++ TypefaceSpan("sans-serif-medium"), ++ 0, ++ productRepository.first.summary.length, ++ SpannableStringBuilder.SPAN_EXCLUSIVE_EXCLUSIVE ++ ) ++ } ++ } ++ } ++ if (description.isNotEmpty()) { ++ val cropped = if (ExpandType.DESCRIPTION !in expanded) { ++ description.lineCropped( ++ 12, ++ 10 ++ ) ++ } else { ++ null ++ } ++ val item = Item.TextItem(TextType.DESCRIPTION, description) ++ if (cropped != null) { ++ val croppedItem = Item.TextItem(TextType.DESCRIPTION, cropped) ++ items += listOf( ++ croppedItem, ++ Item.ExpandItem(ExpandType.DESCRIPTION, true, listOf(item, croppedItem)) ++ ) ++ } else { ++ items += item ++ } ++ } ++ ++ val antiFeatures = productRepository.first.antiFeatures.map { ++ when (it) { ++ "Ads" -> context.getString(stringRes.has_advertising) ++ "ApplicationDebuggable" -> context.getString(stringRes.compiled_for_debugging) ++ "DisabledAlgorithm" -> context.getString(stringRes.signed_using_unsafe_algorithm) ++ "KnownVuln" -> context.getString(stringRes.has_security_vulnerabilities) ++ "NoSourceSince" -> context.getString(stringRes.source_code_no_longer_available) ++ "NonFreeAdd" -> context.getString(stringRes.promotes_non_free_software) ++ "NonFreeAssets" -> context.getString(stringRes.contains_non_free_media) ++ "NonFreeDep" -> context.getString(stringRes.has_non_free_dependencies) ++ "NonFreeNet" -> context.getString(stringRes.promotes_non_free_network_services) ++ "NSFW" -> context.getString(stringRes.contains_nsfw) ++ "Tracking" -> context.getString(stringRes.tracks_or_reports_your_activity) ++ "UpstreamNonFree" -> context.getString(stringRes.upstream_source_code_is_not_free) ++ // special tag(https://floss.social/@IzzyOnDroid/110815951568369581) ++ // apps include non-free libraries ++ "NonFreeComp" -> context.getString(stringRes.has_non_free_components) ++ else -> context.getString(stringRes.unknown_FORMAT, it) ++ } ++ }.joinToString(separator = "\n") { "\u2022 $it" } ++ if (antiFeatures.isNotEmpty()) { ++ items += Item.SectionItem(SectionType.ANTI_FEATURES) ++ items += Item.TextItem(TextType.ANTI_FEATURES, antiFeatures) ++ } ++ ++ val changes = formatHtml(productRepository.first.whatsNew) ++ if (changes.isNotEmpty()) { ++ items += Item.SectionItem(SectionType.CHANGES) ++ val cropped = ++ if (ExpandType.CHANGES !in expanded) { ++ changes.lineCropped(12, 10) ++ } else { ++ null ++ } ++ val item = Item.TextItem(TextType.CHANGES, changes) ++ if (cropped != null) { ++ val croppedItem = Item.TextItem(TextType.CHANGES, cropped) ++ items += listOf( ++ croppedItem, ++ Item.ExpandItem(ExpandType.CHANGES, true, listOf(item, croppedItem)) ++ ) ++ } else { ++ items += item ++ } ++ } ++ ++ val linkItems = mutableListOf() ++ with(productRepository.first) { ++ source.let { link -> ++ if (link.isNotEmpty()) { ++ linkItems += Item.LinkItem.Typed( ++ LinkType.SOURCE, ++ "", ++ link.toUri() ++ ) ++ } ++ } ++ ++ if (author.name.isNotEmpty() || author.web.isNotEmpty()) { ++ linkItems += Item.LinkItem.Typed( ++ LinkType.AUTHOR, ++ author.name, ++ author.web.nullIfEmpty()?.let(Uri::parse) ++ ) ++ } ++ author.email.nullIfEmpty()?.let { ++ linkItems += Item.LinkItem.Typed(LinkType.EMAIL, "", Uri.parse("mailto:$it")) ++ } ++ linkItems += licenses.asSequence().map { ++ Item.LinkItem.Typed( ++ LinkType.LICENSE, ++ it, ++ Uri.parse("https://spdx.org/licenses/$it.html") ++ ) ++ } ++ tracker.nullIfEmpty() ++ ?.let { linkItems += Item.LinkItem.Typed(LinkType.TRACKER, "", Uri.parse(it)) } ++ changelog.nullIfEmpty()?.let { ++ linkItems += Item.LinkItem.Typed( ++ LinkType.CHANGELOG, ++ "", ++ Uri.parse(it) ++ ) ++ } ++ web.nullIfEmpty() ++ ?.let { linkItems += Item.LinkItem.Typed(LinkType.WEB, "", Uri.parse(it)) } ++ } ++ if (linkItems.isNotEmpty()) { ++ if (ExpandType.LINKS in expanded) { ++ items += Item.SectionItem( ++ SectionType.LINKS, ++ ExpandType.LINKS, ++ emptyList(), ++ linkItems.size ++ ) ++ items += linkItems ++ } else { ++ items += Item.SectionItem(SectionType.LINKS, ExpandType.LINKS, linkItems, 0) ++ } ++ } ++ ++ val donateItems = productRepository.first.donates.map(Item.LinkItem::Donate) ++ if (donateItems.isNotEmpty()) { ++ if (ExpandType.DONATES in expanded) { ++ items += Item.SectionItem( ++ SectionType.DONATE, ++ ExpandType.DONATES, ++ emptyList(), ++ donateItems.size ++ ) ++ items += donateItems ++ } else { ++ items += Item.SectionItem( ++ SectionType.DONATE, ++ ExpandType.DONATES, ++ donateItems, ++ 0 ++ ) ++ } ++ } ++ ++ val release = productRepository.first.displayRelease ++ if (release != null) { ++ val packageManager = context.packageManager ++ val permissions = release.permissions ++ .asSequence().mapNotNull { ++ try { ++ packageManager.getPermissionInfo(it, 0) ++ } catch (e: Exception) { ++ null ++ } ++ } ++ .groupBy(PackageItemResolver::getPermissionGroup) ++ .asSequence().map { (group, permissionInfo) -> ++ val permissionGroupInfo = try { ++ group?.let { packageManager.getPermissionGroupInfo(it, 0) } ++ } catch (e: Exception) { ++ null ++ } ++ Pair(permissionGroupInfo, permissionInfo) ++ } ++ .groupBy({ it.first }, { it.second }) ++ if (permissions.isNotEmpty()) { ++ val permissionsItems = mutableListOf() ++ permissionsItems += permissions.asSequence().filter { it.key != null } ++ .map { Item.PermissionsItem(it.key, it.value.flatten()) } ++ permissions.asSequence().find { it.key == null } ++ ?.let { ++ permissionsItems += Item.PermissionsItem(null, it.value.flatten()) ++ } ++ if (ExpandType.PERMISSIONS in expanded) { ++ items += Item.SectionItem( ++ SectionType.PERMISSIONS, ++ ExpandType.PERMISSIONS, ++ emptyList(), ++ permissionsItems.size ++ ) ++ items += permissionsItems ++ } else { ++ items += Item.SectionItem( ++ SectionType.PERMISSIONS, ++ ExpandType.PERMISSIONS, ++ permissionsItems, ++ 0 ++ ) ++ } ++ } ++ } ++ ++ val compatibleReleasePairs = products.asSequence() ++ .flatMap { (product, repository) -> ++ product.releases.asSequence() ++ .filter { allowIncompatibleVersion || it.incompatibilities.isEmpty() } ++ .map { Pair(it, repository) } ++ } ++ ++ val versionsWithMultiSignature = compatibleReleasePairs ++ .filterNot { release?.signature?.isEmpty() == true } ++ .map { (release, _) -> release.versionCode to release.signature } ++ .distinct() ++ .groupBy { it.first } ++ .filter { (_, entry) -> entry.size >= 2 } ++ .keys ++ ++ val releaseItems = compatibleReleasePairs ++ .map { (release, repository) -> ++ Item.ReleaseItem( ++ repository = repository, ++ release = release, ++ selectedRepository = repository.id == productRepository.second.id, ++ showSignature = release.versionCode in versionsWithMultiSignature ++ ) ++ } ++ .sortedByDescending { it.release.versionCode } ++ .toList() ++ if (releaseItems.isNotEmpty()) { ++ items += Item.SectionItem(SectionType.VERSIONS) ++ if (releaseItems.size > MAX_RELEASE_ITEMS && ExpandType.VERSIONS !in expanded) { ++ items += releaseItems.take(MAX_RELEASE_ITEMS) ++ items += Item.ExpandItem( ++ ExpandType.VERSIONS, ++ false, ++ releaseItems.takeLast(releaseItems.size - MAX_RELEASE_ITEMS) ++ ) ++ } else { ++ items += releaseItems ++ } ++ } ++ ++ this.product = productRepository.first ++ this.installedItem = installedItem ++ notifyDataSetChanged() ++ } ++ ++ var action: Action? = null ++ set(value) { ++ val index = items.indexOf(Item.InstallButtonItem) ++ val progressBarIndex = items.indexOf(Item.DownloadStatusItem) ++ if (index > 0 && progressBarIndex > 0) { ++ notifyItemChanged(index) ++ notifyItemChanged(progressBarIndex) ++ } ++ field = value ++ } ++ ++ var status: Status = Status.Idle ++ set(value) { ++ if (field != value) { ++ val index = items.indexOf(Item.DownloadStatusItem) ++ if (index > 0) notifyItemChanged(index) ++ } ++ field = value ++ } ++ ++ override val viewTypeClass: Class ++ get() = ViewType::class.java ++ ++ override fun getItemCount(): Int = items.size ++ override fun getItemDescriptor(position: Int): String = items[position].descriptor ++ override fun getItemEnumViewType(position: Int): ViewType = items[position].viewType ++ ++ override fun onCreateViewHolder( ++ parent: ViewGroup, ++ viewType: ViewType ++ ): RecyclerView.ViewHolder { ++ return when (viewType) { ++ ViewType.APP_INFO -> AppInfoViewHolder(parent.inflate(R.layout.app_detail_header)) ++ .apply { ++ favouriteButton.setOnClickListener { callbacks.onFavouriteClicked() } ++ } ++ ++ ViewType.DOWNLOAD_STATUS -> DownloadStatusViewHolder( ++ parent.inflate(R.layout.download_status) ++ ) ++ ++ ViewType.INSTALL_BUTTON -> InstallButtonViewHolder( ++ parent.inflate(R.layout.install_button) ++ ).apply { ++ button.setOnClickListener { action?.let(callbacks::onActionClick) } ++ } ++ ++ ViewType.SCREENSHOT -> ScreenShotViewHolder(parent.context) ++ ViewType.SWITCH -> SwitchViewHolder(parent.inflate(R.layout.switch_item)).apply { ++ itemView.setOnClickListener { ++ val switchItem = items[absoluteAdapterPosition] as Item.SwitchItem ++ val productPreference = when (switchItem.switchType) { ++ SwitchType.IGNORE_ALL_UPDATES -> { ++ ProductPreferences[switchItem.packageName].let { ++ it.copy( ++ ignoreUpdates = !it.ignoreUpdates ++ ) ++ } ++ } ++ ++ SwitchType.IGNORE_THIS_UPDATE -> { ++ ProductPreferences[switchItem.packageName].let { ++ it.copy( ++ ignoreVersionCode = ++ if (it.ignoreVersionCode == switchItem.versionCode) { ++ 0 ++ } else { ++ switchItem.versionCode ++ } ++ ) ++ } ++ } ++ } ++ ProductPreferences[switchItem.packageName] = productPreference ++ callbacks.onPreferenceChanged(productPreference) ++ } ++ } ++ ++ ViewType.SECTION -> SectionViewHolder(parent.inflate(R.layout.section_item)).apply { ++ itemView.setOnClickListener { ++ val position = absoluteAdapterPosition ++ val sectionItem = items[position] as Item.SectionItem ++ if (sectionItem.items.isNotEmpty()) { ++ expanded += sectionItem.expandType ++ items[position] = Item.SectionItem( ++ sectionItem.sectionType, ++ sectionItem.expandType, ++ emptyList(), ++ sectionItem.items.size + sectionItem.collapseCount ++ ) ++ notifyItemChanged(position) ++ items.addAll(position + 1, sectionItem.items) ++ notifyItemRangeInserted(position + 1, sectionItem.items.size) ++ } else if (sectionItem.collapseCount > 0) { ++ expanded -= sectionItem.expandType ++ items[position] = Item.SectionItem( ++ sectionItem.sectionType, ++ sectionItem.expandType, ++ items.subList(position + 1, position + 1 + sectionItem.collapseCount) ++ .toList(), ++ 0 ++ ) ++ notifyItemChanged(position) ++ repeat(sectionItem.collapseCount) { items.removeAt(position + 1) } ++ notifyItemRangeRemoved(position + 1, sectionItem.collapseCount) ++ } ++ } ++ } ++ ++ ViewType.EXPAND -> ExpandViewHolder(parent.inflate(R.layout.expand_view_button)) ++ .apply { ++ itemView.setOnClickListener { ++ val position = absoluteAdapterPosition ++ val expandItem = items[position] as Item.ExpandItem ++ if (expandItem.expandType !in expanded) { ++ expanded += expandItem.expandType ++ if (expandItem.replace) { ++ items[position - 1] = expandItem.items[0] ++ notifyItemRangeChanged(position - 1, 2) ++ } else { ++ items.addAll(position, expandItem.items) ++ if (position > 0) { ++ notifyItemRangeInserted(position, expandItem.items.size) ++ notifyItemChanged(position + expandItem.items.size) ++ } ++ } ++ } else { ++ expanded -= expandItem.expandType ++ if (expandItem.replace) { ++ items[position - 1] = expandItem.items[1] ++ notifyItemRangeChanged(position - 1, 2) ++ } else { ++ items.removeAll(expandItem.items) ++ if (position > 0) { ++ notifyItemRangeRemoved( ++ position - expandItem.items.size, ++ expandItem.items.size ++ ) ++ notifyItemChanged(position - expandItem.items.size) ++ } ++ } ++ } ++ } ++ } ++ ++ ViewType.TEXT -> TextViewHolder(parent.context) ++ ViewType.LINK -> LinkViewHolder(parent.inflate(R.layout.link_item)).apply { ++ itemView.setOnClickListener { ++ val linkItem = items[absoluteAdapterPosition] as Item.LinkItem ++ if (linkItem.uri?.let { callbacks.onUriClick(it, false) } != true) { ++ linkItem.displayLink?.let { copyLinkToClipboard(itemView, it) } ++ } ++ } ++ itemView.setOnLongClickListener { ++ val linkItem = items[absoluteAdapterPosition] as Item.LinkItem ++ linkItem.displayLink?.let { copyLinkToClipboard(itemView, it) } ++ true ++ } ++ } ++ ++ ViewType.PERMISSIONS -> PermissionsViewHolder(parent.inflate(R.layout.permissions_item)) ++ .apply { ++ itemView.setOnClickListener { ++ val permissionsItem = items[absoluteAdapterPosition] as Item.PermissionsItem ++ callbacks.onPermissionsClick( ++ permissionsItem.group?.name, ++ permissionsItem.permissions.map { it.name } ++ ) ++ } ++ } ++ ++ ViewType.RELEASE -> ReleaseViewHolder(parent.inflate(R.layout.release_item)).apply { ++ itemView.setOnClickListener { ++ val releaseItem = items[absoluteAdapterPosition] as Item.ReleaseItem ++ callbacks.onReleaseClick(releaseItem.release) ++ } ++ itemView.setOnLongClickListener { ++ val releaseItem = items[absoluteAdapterPosition] as Item.ReleaseItem ++ copyLinkToClipboard( ++ itemView, ++ releaseItem.release.getDownloadUrl(releaseItem.repository) ++ ) ++ true ++ } ++ } ++ ++ ViewType.EMPTY -> EmptyViewHolder(parent.context).apply { ++ copyRepoAddress.setOnClickListener { ++ repoAddress.text?.let { link -> ++ callbacks.onRequestAddRepository(link.toString()) ++ } ++ } ++ } ++ } ++ } ++ ++ override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { ++ onBindViewHolder(holder, position, emptyList()) ++ } ++ ++ override fun onBindViewHolder( ++ holder: RecyclerView.ViewHolder, ++ position: Int, ++ payloads: List ++ ) { ++ val context = holder.itemView.context ++ val item = items[position] ++ when (getItemEnumViewType(position)) { ++ ViewType.APP_INFO -> { ++ holder as AppInfoViewHolder ++ item as Item.AppInfoItem ++ var showAuthor = item.product.author.name.isNotEmpty() ++ val iconUrl = ++ item.product.item().icon(view = holder.icon, repository = item.repository) ++ holder.icon.load(iconUrl) { ++ authentication(item.repository.authentication) ++ } ++ val authorText = ++ if (showAuthor) { ++ buildSpannedString { ++ append("by ") ++ bold { append(item.product.author.name) } ++ } ++ } else { ++ buildSpannedString { bold { append(item.product.packageName) } } ++ } ++ holder.authorName.text = authorText ++ holder.packageName.text = authorText ++ if (item.product.author.name.isNotEmpty()) { ++ holder.icon.setOnClickListener { ++ showAuthor = !showAuthor ++ val newText = if (showAuthor) { ++ buildSpannedString { ++ append("by ") ++ bold { append(item.product.author.name) } ++ } ++ } else { ++ buildSpannedString { bold { append(item.product.packageName) } } ++ } ++ holder.textSwitcher.setText(newText) ++ } ++ } ++ holder.name.text = item.product.name ++ ++ holder.version.apply { ++ text = installedItem?.version ?: product?.version ++ if (product?.canUpdate(installedItem) == true) { ++ if (background == null) { ++ background = context.corneredBackground ++ setPadding(8.dp, 4.dp, 8.dp, 4.dp) ++ backgroundTintList = ++ context.getColorFromAttr(MaterialR.attr.colorSecondaryContainer) ++ setTextColor(context.getColorFromAttr(MaterialR.attr.colorSecondary)) ++ } ++ } else { ++ if (background != null) { ++ setPadding(0, 0, 0, 0) ++ setTextColor( ++ context.getColorFromAttr(android.R.attr.colorControlNormal) ++ ) ++ background = null ++ } ++ } ++ } ++ holder.size.text = product?.displayRelease?.size?.formatSize() ++ ++ holder.dev.setOnClickListener { ++ product?.source?.let { link -> ++ if (link.isNotEmpty()) { ++ context.startActivity(Intent(Intent.ACTION_VIEW, link.toUri())) ++ } ++ } ++ } ++ holder.dev.setOnLongClickListener { ++ product?.source?.let { link -> ++ if (link.isNotEmpty()) copyLinkToClipboard(holder.dev, link) ++ } ++ true ++ } ++ holder.favouriteButton.isChecked = isFavourite ++ } ++ ++ ViewType.DOWNLOAD_STATUS -> { ++ holder as DownloadStatusViewHolder ++ item as Item.DownloadStatusItem ++ val status = status ++ holder.itemView.isVisible = status != Status.Idle ++ holder.statusText.isVisible = status != Status.Idle ++ holder.progress.isVisible = status != Status.Idle ++ if (status != Status.Idle) { ++ when (status) { ++ is Status.Pending -> { ++ holder.statusText.setText(stringRes.waiting_to_start_download) ++ holder.progress.isIndeterminate = true ++ } ++ ++ is Status.Connecting -> { ++ holder.statusText.setText(stringRes.connecting) ++ holder.progress.isIndeterminate = true ++ } ++ ++ is Status.Downloading -> { ++ holder.statusText.text = context.getString( ++ stringRes.downloading_FORMAT, ++ if (status.total == null) { ++ status.read.toString() ++ } else { ++ "${status.read} / ${status.total}" ++ } ++ ) ++ holder.progress.isIndeterminate = status.total == null ++ if (status.total != null) { ++ holder.progress.progress = ++ ( ++ holder.progress.max.toFloat() * ++ status.read.value / ++ status.total.value ++ ).roundToInt() ++ } ++ } ++ ++ Status.Installing -> { ++ holder.statusText.setText(stringRes.installing) ++ holder.progress.isIndeterminate = true ++ } ++ ++ Status.PendingInstall -> { ++ holder.statusText.setText(stringRes.waiting_to_start_installation) ++ holder.progress.isIndeterminate = true ++ } ++ ++ Status.Idle -> {} ++ } ++ } ++ Unit ++ } ++ ++ ViewType.INSTALL_BUTTON -> { ++ holder as InstallButtonViewHolder ++ item as Item.InstallButtonItem ++ val action = action ++ holder.button.apply { ++ isEnabled = action != null ++ if (action != null) { ++ icon = context.getDrawableCompat(action.iconResId) ++ setText(action.titleResId) ++ setTextColor( ++ if (action == Action.CANCEL) { ++ holder.actionTintOnCancel ++ } else { ++ holder.actionTintOnNormal ++ } ++ ) ++ backgroundTintList = if (action == Action.CANCEL) { ++ holder.actionTintCancel ++ } else { ++ holder.actionTintNormal ++ } ++ iconTint = if (action == Action.CANCEL) { ++ holder.actionTintOnCancel ++ } else { ++ holder.actionTintOnNormal ++ } ++ } else { ++ icon = context.getDrawableCompat(drawableRes.ic_cancel) ++ setText(stringRes.cancel) ++ setTextColor(holder.actionTintOnDisabled) ++ backgroundTintList = holder.actionTintDisabled ++ iconTint = holder.actionTintOnDisabled ++ } ++ } ++ } ++ ++ ViewType.SCREENSHOT -> { ++ holder as ScreenShotViewHolder ++ item as Item.ScreenshotItem ++ holder.screenshotsRecycler.run { ++ isNestedScrollingEnabled = false ++ clipToPadding = false ++ setPadding(8.dp, 8.dp, 8.dp, 8.dp) ++ layoutManager = ++ LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false) ++ adapter = ++ ScreenshotsAdapter { screenshot, view -> ++ callbacks.onScreenshotClick(screenshot, view) ++ }.apply { ++ setScreenshots(item.repository, item.packageName, item.screenshots) ++ } ++ } ++ } ++ ++ ViewType.SWITCH -> { ++ holder as SwitchViewHolder ++ item as Item.SwitchItem ++ val (checked, enabled) = when (item.switchType) { ++ SwitchType.IGNORE_ALL_UPDATES -> { ++ val productPreference = ProductPreferences[item.packageName] ++ Pair(productPreference.ignoreUpdates, true) ++ } ++ ++ SwitchType.IGNORE_THIS_UPDATE -> { ++ val productPreference = ProductPreferences[item.packageName] ++ Pair( ++ productPreference.ignoreUpdates || ++ productPreference.ignoreVersionCode == item.versionCode, ++ !productPreference.ignoreUpdates ++ ) ++ } ++ } ++ with(holder) { ++ switch.setText(item.switchType.titleResId) ++ switch.isChecked = checked ++ statefulViews.forEach { it.isEnabled = enabled } ++ } ++ } ++ ++ ViewType.SECTION -> { ++ holder as SectionViewHolder ++ item as Item.SectionItem ++ val expandable = item.items.isNotEmpty() || item.collapseCount > 0 ++ holder.itemView.isEnabled = expandable ++ holder.itemView.let { ++ it.setPadding( ++ it.paddingLeft, ++ it.paddingTop, ++ it.paddingRight, ++ if (expandable) it.paddingTop else 0 ++ ) ++ } ++ val color = context.getColorFromAttr(item.sectionType.colorAttrResId) ++ holder.title.setTextColor(color) ++ holder.title.text = context.getString(item.sectionType.titleResId) ++ holder.icon.isVisible = expandable ++ holder.icon.scaleY = if (item.collapseCount > 0) -1f else 1f ++ holder.icon.imageTintList = color ++ } ++ ++ ViewType.EXPAND -> { ++ holder as ExpandViewHolder ++ item as Item.ExpandItem ++ holder.button.text = if (item.expandType !in expanded) { ++ when (item.expandType) { ++ ExpandType.VERSIONS -> context.getString(stringRes.show_older_versions) ++ else -> context.getString(stringRes.show_more) ++ } ++ } else { ++ context.getString(stringRes.show_less) ++ } ++ } ++ ++ ViewType.TEXT -> { ++ holder as TextViewHolder ++ item as Item.TextItem ++ holder.text.text = item.text ++ } ++ ++ ViewType.LINK -> { ++ holder as LinkViewHolder ++ item as Item.LinkItem ++ val layoutParams = holder.itemView.layoutParams as RecyclerView.LayoutParams ++ layoutParams.topMargin = ++ if (position > 0 && items[position - 1] !is Item.LinkItem) { ++ -context.resources.sizeScaled(8) ++ } else { ++ 0 ++ } ++ holder.itemView.isEnabled = item.uri != null ++ holder.icon.setImageResource(item.iconResId) ++ holder.text.text = item.getTitle(context) ++ holder.link.isVisible = item.uri != null ++ holder.link.text = item.displayLink ++ } ++ ++ ViewType.PERMISSIONS -> { ++ holder as PermissionsViewHolder ++ item as Item.PermissionsItem ++ val layoutParams = holder.itemView.layoutParams as RecyclerView.LayoutParams ++ layoutParams.topMargin = ++ if (position > 0 && items[position - 1] !is Item.PermissionsItem) { ++ -context.resources.sizeScaled(8) ++ } else { ++ 0 ++ } ++ val packageManager = context.packageManager ++ holder.icon.setImageDrawable( ++ if (item.group != null && item.group.icon != 0) { ++ item.group.loadUnbadgedIcon(packageManager) ++ } else { ++ null ++ } ?: context.getMutatedIcon(drawableRes.ic_perm_device_information) ++ ) ++ val localCache = PackageItemResolver.LocalCache() ++ val labels = item.permissions.map { permission -> ++ val labelFromPackage = ++ PackageItemResolver.loadLabel(context, localCache, permission) ++ val label = labelFromPackage ?: run { ++ val prefixes = ++ listOf("android.permission.", "com.android.browser.permission.") ++ prefixes.find { permission.name.startsWith(it) }?.let { it -> ++ val transform = permission.name.substring(it.length) ++ if (transform.matches("[A-Z_]+".toRegex())) { ++ transform.split("_") ++ .joinToString(separator = " ") { it.lowercase(Locale.US) } ++ } else { ++ null ++ } ++ } ++ } ++ if (label == null) { ++ Pair(false, permission.name) ++ } else { ++ Pair( ++ true, ++ label.first().uppercaseChar() + label.substring(1, label.length) ++ ) ++ } ++ } ++ val builder = SpannableStringBuilder() ++ ( ++ labels.asSequence().filter { it.first } + labels.asSequence() ++ .filter { !it.first } ++ ).forEach { ++ if (builder.isNotEmpty()) { ++ builder.append("\n\n") ++ builder.setSpan( ++ RelativeSizeSpan(1f / 3f), ++ builder.length - 2, ++ builder.length, ++ SpannableStringBuilder.SPAN_EXCLUSIVE_EXCLUSIVE ++ ) ++ } ++ builder.append(it.second) ++ if (!it.first) { ++ // Replace dots with spans to enable word wrap ++ it.second.asSequence() ++ .mapIndexedNotNull { index, c -> if (c == '.') index else null } ++ .map { index -> index + builder.length - it.second.length } ++ .forEach { index -> ++ builder.setSpan( ++ DotSpan(), ++ index, ++ index + 1, ++ SpannableStringBuilder.SPAN_EXCLUSIVE_EXCLUSIVE ++ ) ++ } ++ } ++ } ++ holder.text.text = builder ++ } ++ ++ ViewType.RELEASE -> { ++ holder as ReleaseViewHolder ++ item as Item.ReleaseItem ++ val incompatibility = item.release.incompatibilities.firstOrNull() ++ val singlePlatform = ++ if (item.release.platforms.size == 1) item.release.platforms.first() else null ++ val installed = installedItem?.versionCode == item.release.versionCode && ++ installedItem?.signature == item.release.signature ++ val suggested = ++ incompatibility == null && item.release.selected && item.selectedRepository ++ ++ if (suggested) { ++ holder.itemView.apply { ++ background = context.corneredBackground ++ backgroundTintList = ++ holder.itemView.context.getColorFromAttr(MaterialR.attr.colorSurface) ++ } ++ } else { ++ holder.itemView.background = null ++ } ++ holder.version.text = ++ context.getString(stringRes.version_FORMAT, item.release.version) ++ ++ holder.status.apply { ++ isVisible = installed || suggested ++ setText( ++ when { ++ installed -> stringRes.installed ++ suggested -> stringRes.suggested ++ else -> stringRes.unknown ++ } ++ ) ++ background = context.corneredBackground ++ setPadding(15, 15, 15, 15) ++ backgroundTintList = ++ context.getColorFromAttr(MaterialR.attr.colorSecondaryContainer) ++ setTextColor(context.getColorFromAttr(MaterialR.attr.colorOnSecondaryContainer)) ++ } ++ holder.source.text = ++ context.getString(stringRes.provided_by_FORMAT, item.repository.name) ++ val instant = Instant.fromEpochMilliseconds(item.release.added) ++ // FDroid uses UTC time ++ val date = instant.toLocalDateTime(TimeZone.UTC) ++ val dateFormat = try { ++ date.toJavaLocalDateTime() ++ .format(DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT)) ++ } catch (e: Exception) { ++ e.printStackTrace() ++ holder.dateFormat.format(item.release.added) ++ } ++ holder.added.text = dateFormat ++ holder.size.text = item.release.size.formatSize() ++ holder.signature.isVisible = ++ item.showSignature && item.release.signature.isNotEmpty() ++ if (item.showSignature && item.release.signature.isNotEmpty()) { ++ val bytes = ++ item.release.signature ++ .uppercase(Locale.US) ++ .windowed(2, 2, false) ++ .take(8) ++ val signature = bytes.joinToString(separator = " ") ++ val builder = SpannableStringBuilder( ++ context.getString( ++ stringRes.signature_FORMAT, ++ signature ++ ) ++ ) ++ val index = builder.indexOf(signature) ++ if (index >= 0) { ++ bytes.forEachIndexed { i, _ -> ++ builder.setSpan( ++ TypefaceSpan("monospace"), ++ index + 3 * i, ++ index + 3 * i + 2, ++ SpannableStringBuilder.SPAN_EXCLUSIVE_EXCLUSIVE ++ ) ++ } ++ } ++ holder.signature.text = builder ++ } ++ holder.compatibility.isVisible = incompatibility != null || singlePlatform != null ++ if (incompatibility != null) { ++ holder.compatibility.setTextColor( ++ context.getColorFromAttr(MaterialR.attr.colorError) ++ ) ++ holder.compatibility.text = when (incompatibility) { ++ is Release.Incompatibility.MinSdk, ++ is Release.Incompatibility.MaxSdk ++ -> context.getString( ++ stringRes.incompatible_with_FORMAT, ++ Android.name ++ ) ++ ++ is Release.Incompatibility.Platform -> context.getString( ++ stringRes.incompatible_with_FORMAT, ++ Android.primaryPlatform ?: context.getString(stringRes.unknown) ++ ) ++ ++ is Release.Incompatibility.Feature -> context.getString( ++ stringRes.requires_FORMAT, ++ incompatibility.feature ++ ) ++ } ++ } else if (singlePlatform != null) { ++ holder.compatibility.setTextColor( ++ context.getColorFromAttr(android.R.attr.textColorSecondary) ++ ) ++ holder.compatibility.text = ++ context.getString(stringRes.only_compatible_with_FORMAT, singlePlatform) ++ } ++ val enabled = status == Status.Idle ++ holder.statefulViews.forEach { it.isEnabled = enabled } ++ } ++ ++ ViewType.EMPTY -> { ++ holder as EmptyViewHolder ++ item as Item.EmptyItem ++ holder.packageName.text = item.packageName ++ if (item.repoAddress != null) { ++ holder.repoTitle.setText(stringRes.repository_not_found) ++ holder.repoAddress.text = item.repoAddress ++ } ++ } ++ } ++ } ++ ++ private fun formatHtml(text: String): SpannableStringBuilder { ++ val html = HtmlCompat.fromHtml(text, HtmlCompat.FROM_HTML_MODE_LEGACY) ++ val builder = run { ++ val builder = SpannableStringBuilder(html) ++ val last = builder.indexOfLast { it != '\n' } ++ val first = builder.indexOfFirst { it != '\n' } ++ if (last >= 0) { ++ builder.delete(last + 1, builder.length) ++ } ++ if (first in 1 until last) { ++ builder.delete(0, first - 1) ++ } ++ generateSequence(builder) { ++ val index = it.indexOf("\n\n\n") ++ if (index >= 0) it.delete(index, index + 1) else null ++ }.last() ++ } ++ LinkifyCompat.addLinks(builder, Linkify.WEB_URLS or Linkify.EMAIL_ADDRESSES) ++ val urlSpans = builder ++ .getSpans(0, builder.length, URLSpan::class.java) ++ .orEmpty() ++ for (span in urlSpans) { ++ val start = builder.getSpanStart(span) ++ val end = builder.getSpanEnd(span) ++ val flags = builder.getSpanFlags(span) ++ builder.removeSpan(span) ++ builder.setSpan(LinkSpan(span.url, this), start, end, flags) ++ } ++ val bulletSpans = builder ++ .getSpans(0, builder.length, BulletSpan::class.java) ++ .orEmpty() ++ .asSequence().map { Pair(it, builder.getSpanStart(it)) } ++ .sortedByDescending { it.second } ++ for (spanPair in bulletSpans) { ++ val (span, start) = spanPair ++ builder.removeSpan(span) ++ builder.insert(start, "\u2022 ") ++ } ++ return builder ++ } ++ ++ private fun copyLinkToClipboard(view: View, link: String) { ++ view.context.copyToClipboard(link) ++ Snackbar.make(view, stringRes.link_copied_to_clipboard, Snackbar.LENGTH_SHORT).show() ++ } ++ ++ private class LinkSpan(private val url: String, productAdapter: AppDetailAdapter) : ++ ClickableSpan() { ++ private val productAdapterReference = WeakReference(productAdapter) ++ ++ override fun onClick(view: View) { ++ val productAdapter = productAdapterReference.get() ++ val uri = try { ++ Uri.parse(url) ++ } catch (e: Exception) { ++ e.printStackTrace() ++ null ++ } ++ if (productAdapter != null && uri != null) { ++ productAdapter.callbacks.onUriClick(uri, true) ++ } ++ } ++ } ++ ++ private class DotSpan : ReplacementSpan() { ++ override fun getSize( ++ paint: Paint, ++ text: CharSequence?, ++ start: Int, ++ end: Int, ++ fm: Paint.FontMetricsInt? ++ ): Int { ++ return paint.measureText(".").roundToInt() ++ } ++ ++ override fun draw( ++ canvas: Canvas, ++ text: CharSequence?, ++ start: Int, ++ end: Int, ++ x: Float, ++ top: Int, ++ y: Int, ++ bottom: Int, ++ paint: Paint ++ ) { ++ canvas.drawText(".", x, y.toFloat(), paint) ++ } ++ } ++ ++ @Parcelize ++ class SavedState internal constructor(internal val expanded: Set) : Parcelable ++ ++ fun saveState(): SavedState? { ++ return if (expanded.isNotEmpty()) { ++ SavedState(expanded) ++ } else { ++ null ++ } ++ } ++ ++ fun restoreState(savedState: SavedState) { ++ expanded.clear() ++ expanded += savedState.expanded ++ } ++} +Index: app/src/main/kotlin/com/leos/droidify/ui/appDetail/AppDetailFragment.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/ui/appDetail/AppDetailFragment.kt b/app/src/main/kotlin/com/leos/droidify/ui/appDetail/AppDetailFragment.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/ui/appDetail/AppDetailFragment.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,537 @@ ++package com.leos.droidify.ui.appDetail ++ ++import android.content.ActivityNotFoundException ++import android.content.ComponentName ++import android.content.Intent ++import android.net.Uri ++import android.os.Bundle ++import android.provider.Settings ++import android.view.MenuItem ++import android.view.View ++import android.widget.ImageView ++import androidx.appcompat.app.AlertDialog ++import androidx.core.net.toUri ++import androidx.core.os.bundleOf ++import androidx.fragment.app.DialogFragment ++import androidx.fragment.app.viewModels ++import androidx.lifecycle.Lifecycle ++import androidx.lifecycle.lifecycleScope ++import androidx.lifecycle.repeatOnLifecycle ++import androidx.recyclerview.widget.LinearLayoutManager ++import androidx.recyclerview.widget.RecyclerView ++import androidx.recyclerview.widget.SimpleItemAnimator ++import coil.load ++import com.google.android.material.dialog.MaterialAlertDialogBuilder ++import com.leos.core.common.extension.getLauncherActivities ++import com.leos.core.common.extension.getMutatedIcon ++import com.leos.core.common.extension.isFirstItemVisible ++import com.leos.core.common.extension.isSystemApplication ++import com.leos.core.common.extension.systemBarsPadding ++import com.leos.core.common.extension.updateAsMutable ++import com.leos.core.domain.InstalledItem ++import com.leos.core.domain.Product ++import com.leos.core.domain.ProductPreference ++import com.leos.core.domain.Release ++import com.leos.core.domain.Repository ++import com.leos.core.domain.findSuggested ++import com.leos.droidify.content.ProductPreferences ++import com.leos.droidify.service.Connection ++import com.leos.droidify.service.DownloadService ++import com.leos.droidify.ui.Message ++import com.leos.droidify.ui.MessageDialog ++import com.leos.droidify.ui.ScreenFragment ++import com.leos.droidify.ui.appDetail.AppDetailViewModel.Companion.ARG_PACKAGE_NAME ++import com.leos.droidify.ui.appDetail.AppDetailViewModel.Companion.ARG_REPO_ADDRESS ++import com.leos.droidify.utility.extension.ImageUtils.url ++import com.leos.droidify.utility.extension.screenActivity ++import com.leos.droidify.utility.extension.startUpdate ++import com.leos.installer.model.InstallState ++import com.leos.installer.model.isCancellable ++import com.stfalcon.imageviewer.StfalconImageViewer ++import dagger.hilt.android.AndroidEntryPoint ++import kotlinx.coroutines.delay ++import kotlinx.coroutines.flow.collectLatest ++import kotlinx.coroutines.launch ++import com.leos.core.common.R.string as stringRes ++ ++@AndroidEntryPoint ++class AppDetailFragment() : ScreenFragment(), AppDetailAdapter.Callbacks { ++ companion object { ++ private const val STATE_LAYOUT_MANAGER = "layoutManager" ++ private const val STATE_ADAPTER = "adapter" ++ } ++ ++ constructor(packageName: String, repoAddress: String? = null) : this() { ++ arguments = bundleOf( ++ ARG_PACKAGE_NAME to packageName, ++ ARG_REPO_ADDRESS to repoAddress ++ ) ++ } ++ ++ private enum class Action( ++ val id: Int, ++ val adapterAction: AppDetailAdapter.Action ++ ) { ++ INSTALL(1, AppDetailAdapter.Action.INSTALL), ++ UPDATE(2, AppDetailAdapter.Action.UPDATE), ++ LAUNCH(3, AppDetailAdapter.Action.LAUNCH), ++ DETAILS(4, AppDetailAdapter.Action.DETAILS), ++ UNINSTALL(5, AppDetailAdapter.Action.UNINSTALL), ++ SHARE(6, AppDetailAdapter.Action.SHARE) ++ } ++ ++ private class Installed( ++ val installedItem: InstalledItem, ++ val isSystem: Boolean, ++ val launcherActivities: List> ++ ) ++ ++ private val viewModel: AppDetailViewModel by viewModels() ++ ++ private var layoutManagerState: LinearLayoutManager.SavedState? = null ++ ++ private var actions = Pair(emptySet(), null as Action?) ++ private var products = emptyList>() ++ private var installed: Installed? = null ++ private var downloading = false ++ private var installing: InstallState? = null ++ ++ private var recyclerView: RecyclerView? = null ++ private var detailAdapter: AppDetailAdapter? = null ++ ++ private val downloadConnection = Connection( ++ serviceClass = DownloadService::class.java, ++ onBind = { _, binder -> ++ lifecycleScope.launch { ++ binder.downloadState.collect(::updateDownloadState) ++ } ++ } ++ ) ++ ++ override fun onViewCreated(view: View, savedInstanceState: Bundle?) { ++ super.onViewCreated(view, savedInstanceState) ++ ++ detailAdapter = AppDetailAdapter(this@AppDetailFragment) ++ screenActivity.onToolbarCreated(toolbar) ++ toolbar.menu.apply { ++ Action.entries.forEach { action -> ++ add(0, action.id, 0, action.adapterAction.titleResId) ++ .setIcon(toolbar.context.getMutatedIcon(action.adapterAction.iconResId)) ++ .setVisible(false) ++ .setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_ALWAYS) ++ .setOnMenuItemClickListener { ++ onActionClick(action.adapterAction) ++ true ++ } ++ } ++ } ++ ++ val content = fragmentBinding.fragmentContent ++ content.addView( ++ RecyclerView(content.context).apply { ++ id = android.R.id.list ++ this.layoutManager = LinearLayoutManager( ++ context, ++ LinearLayoutManager.VERTICAL, ++ false ++ ) ++ isMotionEventSplittingEnabled = false ++ isVerticalScrollBarEnabled = false ++ adapter = detailAdapter ++ (itemAnimator as SimpleItemAnimator).supportsChangeAnimations = false ++ if (detailAdapter != null) { ++ savedInstanceState?.getParcelable(STATE_ADAPTER) ++ ?.let(detailAdapter!!::restoreState) ++ } ++ layoutManagerState = savedInstanceState?.getParcelable(STATE_LAYOUT_MANAGER) ++ recyclerView = this ++ systemBarsPadding(includeFab = false) ++ } ++ ) ++ viewLifecycleOwner.lifecycleScope.launch { ++ repeatOnLifecycle(Lifecycle.State.CREATED) { ++ launch { ++ viewModel.state.collectLatest { state -> ++ products = state.products.mapNotNull { product -> ++ val requiredRepo = state.repos.find { it.id == product.repositoryId } ++ requiredRepo?.let { product to it } ++ } ++ layoutManagerState?.let { ++ recyclerView?.layoutManager!!.onRestoreInstanceState(it) ++ } ++ layoutManagerState = null ++ installed = state.installedItem?.let { ++ with(requireContext().packageManager) { ++ val isSystem = isSystemApplication(viewModel.packageName) ++ val launcherActivities = if (state.isSelf) { ++ emptyList() ++ } else { ++ getLauncherActivities(viewModel.packageName) ++ } ++ Installed(it, isSystem, launcherActivities) ++ } ++ } ++ val adapter = recyclerView?.adapter as? AppDetailAdapter ++ ++ // `delay` is cancellable hence it waits for 50 milliseconds to show empty page ++ if (products.isEmpty()) delay(50) ++ ++ adapter?.setProducts( ++ context = requireContext(), ++ packageName = viewModel.packageName, ++ suggestedRepo = state.addressIfUnavailable, ++ products = products, ++ installedItem = state.installedItem, ++ isFavourite = state.isFavourite, ++ allowIncompatibleVersion = state.allowIncompatibleVersions ++ ) ++ updateButtons() ++ } ++ } ++ launch { ++ viewModel.installerState.collect(::updateInstallState) ++ } ++ launch { ++ recyclerView?.isFirstItemVisible?.collect(::updateToolbarButtons) ++ } ++ } ++ } ++ ++ downloadConnection.bind(requireContext()) ++ } ++ ++ override fun onDestroyView() { ++ super.onDestroyView() ++ recyclerView = null ++ detailAdapter = null ++ ++ downloadConnection.unbind(requireContext()) ++ } ++ ++ override fun onSaveInstanceState(outState: Bundle) { ++ super.onSaveInstanceState(outState) ++ ++ val layoutManagerState = ++ layoutManagerState ?: recyclerView?.layoutManager?.onSaveInstanceState() ++ layoutManagerState?.let { outState.putParcelable(STATE_LAYOUT_MANAGER, it) } ++ val adapterState = (recyclerView?.adapter as? AppDetailAdapter)?.saveState() ++ adapterState?.let { outState.putParcelable(STATE_ADAPTER, it) } ++ } ++ ++ private fun updateButtons( ++ preference: ProductPreference = ProductPreferences[viewModel.packageName] ++ ) { ++ val installed = installed ++ val product = products.findSuggested(installed?.installedItem)?.first ++ val compatible = product != null && product.selectedReleases.firstOrNull() ++ .let { it != null && it.incompatibilities.isEmpty() } ++ val canInstall = product != null && installed == null && compatible ++ val canUpdate = ++ product != null && compatible && product.canUpdate(installed?.installedItem) && ++ !preference.shouldIgnoreUpdate(product.versionCode) ++ val canUninstall = product != null && installed != null && !installed.isSystem ++ val canLaunch = ++ product != null && installed != null && installed.launcherActivities.isNotEmpty() ++ ++ val actions = buildSet { ++ if (canInstall) add(Action.INSTALL) ++ if (canUpdate) add(Action.UPDATE) ++ if (canLaunch) add(Action.LAUNCH) ++ if (installed != null) add(Action.DETAILS) ++ if (canUninstall) add(Action.UNINSTALL) ++ add(Action.SHARE) ++ } ++ ++ val primaryAction = when { ++ canUpdate -> Action.UPDATE ++ canLaunch -> Action.LAUNCH ++ canInstall -> Action.INSTALL ++ installed != null -> Action.DETAILS ++ else -> Action.SHARE ++ } ++ ++ val adapterAction = when { ++ installing == InstallState.Installing -> null ++ installing == InstallState.Pending -> AppDetailAdapter.Action.CANCEL ++ downloading -> AppDetailAdapter.Action.CANCEL ++ else -> primaryAction.adapterAction ++ } ++ ++ (recyclerView?.adapter as? AppDetailAdapter)?.action = adapterAction ++ ++ for (action in sequenceOf( ++ Action.INSTALL, ++ Action.UPDATE, ++ )) { ++ toolbar.menu.findItem(action.id).isEnabled = !downloading ++ } ++ this.actions = Pair(actions, primaryAction) ++ updateToolbarButtons() ++ } ++ ++ private fun updateToolbarButtons( ++ isActionVisible: Boolean = (recyclerView?.layoutManager as LinearLayoutManager) ++ .findFirstVisibleItemPosition() == 0 ++ ) { ++ toolbar.title = if (isActionVisible) { ++ getString(stringRes.application) ++ } else { ++ products.firstOrNull()?.first?.name ?: getString(stringRes.application) ++ } ++ val (actions, primaryAction) = actions ++ val displayActions = actions.updateAsMutable { ++ if (isActionVisible && primaryAction != null) { ++ remove(primaryAction) ++ } ++ if (size >= 4 && resources.configuration.screenWidthDp < 400) { ++ remove(Action.DETAILS) ++ } ++ } ++ Action.entries.forEach { action -> ++ toolbar.menu.findItem(action.id).isVisible = action in displayActions ++ } ++ } ++ ++ private fun updateInstallState(installerState: InstallState?) { ++ val status = when (installerState) { ++ InstallState.Pending -> AppDetailAdapter.Status.PendingInstall ++ InstallState.Installing -> AppDetailAdapter.Status.Installing ++ else -> AppDetailAdapter.Status.Idle ++ } ++ (recyclerView?.adapter as? AppDetailAdapter)?.status = status ++ installing = installerState ++ updateButtons() ++ } ++ ++ private fun updateDownloadState(state: DownloadService.DownloadState) { ++ val packageName = viewModel.packageName ++ val isPending = packageName in state.queue ++ val isDownloading = state isDownloading packageName ++ val isCompleted = state isComplete packageName ++ val isActive = isPending || isDownloading ++ if (isPending) { ++ detailAdapter?.status = AppDetailAdapter.Status.Pending ++ } ++ if (isDownloading) { ++ detailAdapter?.status = when (state.currentItem) { ++ is DownloadService.State.Connecting -> AppDetailAdapter.Status.Connecting ++ is DownloadService.State.Downloading -> AppDetailAdapter.Status.Downloading( ++ state.currentItem.read, ++ state.currentItem.total ++ ) ++ ++ else -> AppDetailAdapter.Status.Idle ++ } ++ } ++ if (isCompleted) { ++ detailAdapter?.status = AppDetailAdapter.Status.Idle ++ } ++ if (this.downloading != isActive) { ++ this.downloading = isActive ++ updateButtons() ++ } ++ if (state.currentItem is DownloadService.State.Success && isResumed) { ++ viewModel.installPackage( ++ state.currentItem.packageName, ++ state.currentItem.release.cacheFileName ++ ) ++ } ++ } ++ ++ override fun onActionClick(action: AppDetailAdapter.Action) { ++ when (action) { ++ AppDetailAdapter.Action.INSTALL, ++ AppDetailAdapter.Action.UPDATE ++ -> downloadConnection.startUpdate( ++ viewModel.packageName, ++ installed?.installedItem, ++ products ++ ) ++ ++ AppDetailAdapter.Action.LAUNCH -> { ++ val launcherActivities = installed?.launcherActivities.orEmpty() ++ if (launcherActivities.size >= 2) { ++ LaunchDialog(launcherActivities).show( ++ childFragmentManager, ++ LaunchDialog::class.java.name ++ ) ++ } else { ++ launcherActivities.firstOrNull()?.let { startLauncherActivity(it.first) } ++ } ++ } ++ ++ AppDetailAdapter.Action.DETAILS -> { ++ startActivity( ++ Intent( ++ Settings.ACTION_APPLICATION_DETAILS_SETTINGS, ++ "package:${viewModel.packageName}".toUri() ++ ) ++ ) ++ } ++ ++ AppDetailAdapter.Action.UNINSTALL -> viewModel.uninstallPackage() ++ ++ AppDetailAdapter.Action.CANCEL -> { ++ val binder = downloadConnection.binder ++ if (installing?.isCancellable == true) { ++ viewModel.removeQueue() ++ } else if (downloading && binder != null) { ++ binder.cancel(viewModel.packageName) ++ } ++ } ++ ++ AppDetailAdapter.Action.SHARE -> { ++ val repo = products[0].second ++ val address = when { ++ repo.name == "F-Droid" -> ++ "https://www.f-droid.org/packages/" + ++ "${viewModel.packageName}/" ++ ++ "IzzyOnDroid" in repo.name -> { ++ "https://apt.izzysoft.de/fdroid/index/apk/${viewModel.packageName}" ++ } ++ ++ else -> { ++ "https://droidify.eu.org/app/?id=" + ++ "${viewModel.packageName}&repo_address=${repo.address}" ++ } ++ } ++ val sendIntent = Intent(Intent.ACTION_SEND) ++ .putExtra(Intent.EXTRA_TEXT, address) ++ .setType("text/plain") ++ startActivity(Intent.createChooser(sendIntent, null)) ++ } ++ } ++ } ++ ++ override fun onFavouriteClicked() { ++ viewModel.setFavouriteState() ++ } ++ ++ private fun startLauncherActivity(name: String) { ++ try { ++ startActivity( ++ Intent(Intent.ACTION_MAIN) ++ .addCategory(Intent.CATEGORY_LAUNCHER) ++ .setComponent(ComponentName(viewModel.packageName, name)) ++ .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK) ++ ) ++ } catch (e: Exception) { ++ e.printStackTrace() ++ } ++ } ++ ++ override fun onPreferenceChanged(preference: ProductPreference) { ++ updateButtons(preference) ++ } ++ ++ override fun onPermissionsClick(group: String?, permissions: List) { ++ MessageDialog(Message.Permissions(group, permissions)) ++ .show(childFragmentManager) ++ } ++ ++ override fun onScreenshotClick(screenshot: Product.Screenshot, parentView: ImageView) { ++ val product = products ++ .firstOrNull { (product, _) -> ++ product.screenshots.find { it === screenshot }?.identifier != null ++ } ++ ?: return ++ val screenshots = product.first.screenshots ++ val position = screenshots.indexOfFirst { screenshot.identifier == it.identifier } ++ StfalconImageViewer ++ .Builder(context, screenshots) { view, current -> ++ view.load(current.url(product.second, viewModel.packageName)) ++ } ++ .withTransitionFrom(parentView) ++ .withStartPosition(position) ++ .show() ++ } ++ ++ override fun onReleaseClick(release: Release) { ++ val installedItem = installed?.installedItem ++ when { ++ release.incompatibilities.isNotEmpty() -> { ++ MessageDialog( ++ Message.ReleaseIncompatible( ++ release.incompatibilities, ++ release.platforms, ++ release.minSdkVersion, ++ release.maxSdkVersion ++ ) ++ ).show(childFragmentManager) ++ } ++ ++ installedItem != null && installedItem.versionCode > release.versionCode -> { ++ MessageDialog(Message.ReleaseOlder).show(childFragmentManager) ++ } ++ ++ installedItem != null && installedItem.signature != release.signature -> { ++ MessageDialog(Message.ReleaseSignatureMismatch).show( ++ childFragmentManager ++ ) ++ } ++ ++ else -> { ++ val productRepository = ++ products.asSequence().filter { (product, _) -> ++ product.releases.any { it === release } ++ }.firstOrNull() ++ if (productRepository != null) { ++ downloadConnection.binder?.enqueue( ++ viewModel.packageName, ++ productRepository.first.name, ++ productRepository.second, ++ release, ++ installedItem != null ++ ) ++ } ++ } ++ } ++ } ++ ++ override fun onRequestAddRepository(address: String) { ++ screenActivity.navigateAddRepository(address) ++ } ++ ++ override fun onUriClick(uri: Uri, shouldConfirm: Boolean): Boolean { ++ return if (shouldConfirm && (uri.scheme == "http" || uri.scheme == "https")) { ++ MessageDialog(Message.Link(uri)).show(childFragmentManager) ++ true ++ } else { ++ try { ++ startActivity(Intent(Intent.ACTION_VIEW, uri)) ++ true ++ } catch (e: ActivityNotFoundException) { ++ e.printStackTrace() ++ false ++ } ++ } ++ } ++ ++ class LaunchDialog() : DialogFragment() { ++ companion object { ++ private const val EXTRA_NAMES = "names" ++ private const val EXTRA_LABELS = "labels" ++ } ++ ++ constructor(launcherActivities: List>) : this() { ++ arguments = Bundle().apply { ++ putStringArrayList(EXTRA_NAMES, ArrayList(launcherActivities.map { it.first })) ++ putStringArrayList(EXTRA_LABELS, ArrayList(launcherActivities.map { it.second })) ++ } ++ } ++ ++ override fun onCreateDialog(savedInstanceState: Bundle?): AlertDialog { ++ val names = requireArguments().getStringArrayList(EXTRA_NAMES)!! ++ val labels = requireArguments().getStringArrayList(EXTRA_LABELS)!! ++ return MaterialAlertDialogBuilder(requireContext()) ++ .setTitle(stringRes.launch) ++ .setItems(labels.toTypedArray()) { _, position -> ++ (parentFragment as AppDetailFragment) ++ .startLauncherActivity(names[position]) ++ } ++ .setNegativeButton(stringRes.cancel, null) ++ .create() ++ } ++ } ++} +Index: app/src/main/kotlin/com/leos/droidify/ui/appDetail/AppDetailViewModel.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/ui/appDetail/AppDetailViewModel.kt b/app/src/main/kotlin/com/leos/droidify/ui/appDetail/AppDetailViewModel.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/ui/appDetail/AppDetailViewModel.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,103 @@ ++package com.leos.droidify.ui.appDetail ++ ++import androidx.lifecycle.SavedStateHandle ++import androidx.lifecycle.ViewModel ++import androidx.lifecycle.viewModelScope ++import com.leos.core.common.extension.asStateFlow ++import com.leos.core.common.toPackageName ++import com.leos.core.datastore.SettingsRepository ++import com.leos.core.domain.InstalledItem ++import com.leos.core.domain.Product ++import com.leos.core.domain.Repository ++import com.leos.droidify.BuildConfig ++import com.leos.droidify.database.Database ++import com.leos.installer.InstallManager ++import com.leos.installer.model.InstallState ++import com.leos.installer.model.installFrom ++import dagger.hilt.android.lifecycle.HiltViewModel ++import javax.inject.Inject ++import kotlinx.coroutines.flow.StateFlow ++import kotlinx.coroutines.flow.combine ++import kotlinx.coroutines.flow.flow ++import kotlinx.coroutines.flow.mapNotNull ++import kotlinx.coroutines.launch ++ ++@HiltViewModel ++class AppDetailViewModel @Inject constructor( ++ private val installer: InstallManager, ++ private val settingsRepository: SettingsRepository, ++ savedStateHandle: SavedStateHandle ++) : ViewModel() { ++ ++ val packageName: String = requireNotNull(savedStateHandle[ARG_PACKAGE_NAME]) ++ ++ private val repoAddress: StateFlow = ++ savedStateHandle.getStateFlow(ARG_REPO_ADDRESS, null) ++ ++ val installerState: StateFlow = ++ installer.state.mapNotNull { stateMap -> ++ stateMap[packageName.toPackageName()] ++ }.asStateFlow(null) ++ ++ val state = ++ combine( ++ Database.ProductAdapter.getStream(packageName), ++ Database.RepositoryAdapter.getAllStream(), ++ Database.InstalledAdapter.getStream(packageName), ++ repoAddress, ++ flow { emit(settingsRepository.getInitial()) } ++ ) { products, repositories, installedItem, suggestedAddress, initialSettings -> ++ val idAndRepos = repositories.associateBy { it.id } ++ val filteredProducts = products.filter { product -> ++ idAndRepos[product.repositoryId] != null ++ } ++ AppDetailUiState( ++ products = filteredProducts, ++ repos = repositories, ++ installedItem = installedItem, ++ isFavourite = packageName in initialSettings.favouriteApps, ++ allowIncompatibleVersions = initialSettings.incompatibleVersions, ++ isSelf = packageName == BuildConfig.APPLICATION_ID, ++ addressIfUnavailable = suggestedAddress ++ ) ++ }.asStateFlow(AppDetailUiState()) ++ ++ fun setFavouriteState() { ++ viewModelScope.launch { ++ settingsRepository.toggleFavourites(packageName) ++ } ++ } ++ ++ fun installPackage(packageName: String, fileName: String) { ++ viewModelScope.launch { ++ installer install (packageName installFrom fileName) ++ } ++ } ++ ++ fun uninstallPackage() { ++ viewModelScope.launch { ++ installer uninstall packageName.toPackageName() ++ } ++ } ++ ++ fun removeQueue() { ++ viewModelScope.launch { ++ installer remove packageName.toPackageName() ++ } ++ } ++ ++ companion object { ++ const val ARG_PACKAGE_NAME = "package_name" ++ const val ARG_REPO_ADDRESS = "repo_address" ++ } ++} ++ ++data class AppDetailUiState( ++ val products: List = emptyList(), ++ val repos: List = emptyList(), ++ val installedItem: InstalledItem? = null, ++ val isSelf: Boolean = false, ++ val isFavourite: Boolean = false, ++ val allowIncompatibleVersions: Boolean = false, ++ val addressIfUnavailable: String? = null ++) +Index: app/src/main/kotlin/com/leos/droidify/ui/appDetail/ScreenshotsAdapter.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/ui/appDetail/ScreenshotsAdapter.kt b/app/src/main/kotlin/com/leos/droidify/ui/appDetail/ScreenshotsAdapter.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/ui/appDetail/ScreenshotsAdapter.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,126 @@ ++package com.leos.droidify.ui.appDetail ++ ++import android.content.Context ++import android.graphics.drawable.Drawable ++import android.view.Gravity ++import android.view.View ++import android.view.ViewGroup ++import android.widget.FrameLayout ++import android.widget.ImageView ++import androidx.recyclerview.widget.RecyclerView ++import coil.load ++import coil.size.Scale ++import com.google.android.material.R as MaterialR ++import com.google.android.material.imageview.ShapeableImageView ++import com.leos.core.common.R.dimen as dimenRes ++import com.leos.core.common.extension.aspectRatio ++import com.leos.core.common.extension.authentication ++import com.leos.core.common.extension.camera ++import com.leos.core.common.extension.dp ++import com.leos.core.common.extension.getColorFromAttr ++import com.leos.core.common.extension.selectableBackground ++import com.leos.core.domain.Product ++import com.leos.core.domain.Repository ++import com.leos.droidify.graphics.PaddingDrawable ++import com.leos.droidify.utility.extension.ImageUtils.url ++import com.leos.droidify.widget.StableRecyclerAdapter ++ ++class ScreenshotsAdapter(private val onClick: (Product.Screenshot, ImageView) -> Unit) : ++ StableRecyclerAdapter() { ++ enum class ViewType { SCREENSHOT } ++ ++ private val items = mutableListOf() ++ ++ private class ViewHolder(context: Context) : ++ RecyclerView.ViewHolder(FrameLayout(context)) { ++ val image: ShapeableImageView = object : ShapeableImageView(context) { ++ override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { ++ super.onMeasure(widthMeasureSpec, heightMeasureSpec) ++ setMeasuredDimension(measuredWidth, measuredHeight) ++ } ++ } ++ val placeholderColor = context.getColorFromAttr(MaterialR.attr.colorPrimaryContainer) ++ val radius = context.resources.getDimension(dimenRes.shape_small_corner) ++ ++ val imageShapeModel = image.shapeAppearanceModel.toBuilder() ++ .setAllCornerSizes(radius) ++ .build() ++ val cameraIcon = context.camera ++ .apply { setTintList(placeholderColor) } ++ val placeholder: Drawable = PaddingDrawable(cameraIcon, 3f, context.aspectRatio) ++ ++ init { ++ with(image) { ++ shapeAppearanceModel = imageShapeModel ++ background = context.selectableBackground ++ isFocusable = true ++ } ++ with(itemView as FrameLayout) { ++ layoutParams = RecyclerView.LayoutParams( ++ RecyclerView.LayoutParams.WRAP_CONTENT, ++ 150.dp ++ ).apply { ++ marginStart = radius.toInt() ++ marginEnd = radius.toInt() ++ } ++ foregroundGravity = Gravity.CENTER ++ addView(image) ++ } ++ } ++ } ++ ++ fun setScreenshots( ++ repository: Repository, ++ packageName: String, ++ screenshots: List ++ ) { ++ items.clear() ++ items += screenshots.map { Item.ScreenshotItem(repository, packageName, it) } ++ notifyItemRangeInserted(0, screenshots.size) ++ } ++ ++ override val viewTypeClass: Class ++ get() = ViewType::class.java ++ ++ override fun getItemEnumViewType(position: Int): ViewType { ++ return ViewType.SCREENSHOT ++ } ++ ++ override fun onCreateViewHolder( ++ parent: ViewGroup, ++ viewType: ViewType ++ ): RecyclerView.ViewHolder { ++ return ViewHolder(parent.context).apply { ++ image.setOnClickListener { onClick(items[absoluteAdapterPosition].screenshot, it as ImageView) } ++ } ++ } ++ ++ override fun getItemDescriptor(position: Int): String = items[position].descriptor ++ override fun getItemCount(): Int = items.size ++ ++ override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { ++ holder as ViewHolder ++ val item = items[position] ++ holder.image.load( ++ item.screenshot.url(item.repository, item.packageName) ++ ) { ++ scale(Scale.FILL) ++ placeholder(holder.placeholder) ++ error(holder.placeholder) ++ authentication(item.repository.authentication) ++ } ++ } ++ ++ private sealed class Item { ++ abstract val descriptor: String ++ ++ class ScreenshotItem( ++ val repository: Repository, ++ val packageName: String, ++ val screenshot: Product.Screenshot ++ ) : Item() { ++ override val descriptor: String ++ get() = "screenshot.${repository.id}.${screenshot.identifier}" ++ } ++ } ++} +Index: app/src/main/kotlin/com/leos/droidify/ui/appList/AppListAdapter.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/ui/appList/AppListAdapter.kt b/app/src/main/kotlin/com/leos/droidify/ui/appList/AppListAdapter.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/ui/appList/AppListAdapter.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,200 @@ ++package com.leos.droidify.ui.appList ++ ++import android.content.Context ++import android.view.Gravity ++import android.view.View ++import android.view.ViewGroup ++import android.widget.FrameLayout ++import android.widget.TextView ++import androidx.core.view.isVisible ++import androidx.recyclerview.widget.RecyclerView ++import coil.load ++import com.google.android.material.R as MaterialR ++import com.google.android.material.imageview.ShapeableImageView ++import com.google.android.material.progressindicator.CircularProgressIndicator ++import com.leos.core.common.extension.authentication ++import com.leos.core.common.extension.corneredBackground ++import com.leos.core.common.extension.dp ++import com.leos.core.common.extension.getColorFromAttr ++import com.leos.core.common.extension.inflate ++import com.leos.core.common.extension.setTextSizeScaled ++import com.leos.core.common.nullIfEmpty ++import com.leos.core.domain.ProductItem ++import com.leos.core.domain.Repository ++import com.leos.droidify.R ++import com.leos.droidify.database.Database ++import com.leos.droidify.utility.extension.ImageUtils.icon ++import com.leos.droidify.utility.extension.resources.TypefaceExtra ++import com.leos.droidify.widget.CursorRecyclerAdapter ++ ++class AppListAdapter( ++ private val source: AppListFragment.Source, ++ private val onClick: (ProductItem) -> Unit ++) : CursorRecyclerAdapter() { ++ ++ enum class ViewType { PRODUCT, LOADING, EMPTY } ++ ++ private class ProductViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { ++ val name = itemView.findViewById(R.id.name)!! ++ val status = itemView.findViewById(R.id.status)!! ++ val summary = itemView.findViewById(R.id.summary)!! ++ val icon = itemView.findViewById(R.id.icon)!! ++ } ++ ++ private class LoadingViewHolder(context: Context) : ++ RecyclerView.ViewHolder(FrameLayout(context)) { ++ init { ++ with(itemView as FrameLayout) { ++ val progressBar = CircularProgressIndicator(context) ++ addView(progressBar) ++ layoutParams = RecyclerView.LayoutParams( ++ RecyclerView.LayoutParams.MATCH_PARENT, ++ RecyclerView.LayoutParams.MATCH_PARENT ++ ) ++ } ++ } ++ } ++ ++ private class EmptyViewHolder(context: Context) : ++ RecyclerView.ViewHolder(TextView(context)) { ++ val text: TextView ++ get() = itemView as TextView ++ ++ init { ++ with(itemView as TextView) { ++ gravity = Gravity.CENTER ++ setPadding(20.dp, 20.dp, 20.dp, 20.dp) ++ typeface = TypefaceExtra.light ++ setTextColor(context.getColorFromAttr(android.R.attr.colorPrimary)) ++ setTextSizeScaled(20) ++ layoutParams = RecyclerView.LayoutParams( ++ RecyclerView.LayoutParams.MATCH_PARENT, ++ RecyclerView.LayoutParams.MATCH_PARENT ++ ) ++ } ++ } ++ } ++ ++ var repositories: Map = emptyMap() ++ set(value) { ++ field = value ++ notifyDataSetChanged() ++ } ++ ++ var emptyText: String = "" ++ set(value) { ++ if (field != value) { ++ field = value ++ if (isEmpty) { ++ notifyDataSetChanged() ++ } ++ } ++ } ++ ++ override val viewTypeClass: Class ++ get() = ViewType::class.java ++ ++ private val isEmpty: Boolean ++ get() = super.getItemCount() == 0 ++ ++ override fun getItemCount(): Int = if (isEmpty) 1 else super.getItemCount() ++ override fun getItemId(position: Int): Long = if (isEmpty) -1 else super.getItemId(position) ++ ++ override fun getItemEnumViewType(position: Int): ViewType { ++ return when { ++ !isEmpty -> ViewType.PRODUCT ++ cursor == null -> ViewType.LOADING ++ else -> ViewType.EMPTY ++ } ++ } ++ ++ private fun getProductItem(position: Int): ProductItem { ++ return Database.ProductAdapter.transformItem(moveTo(position)) ++ } ++ ++ override fun onCreateViewHolder( ++ parent: ViewGroup, ++ viewType: ViewType ++ ): RecyclerView.ViewHolder { ++ return when (viewType) { ++ ViewType.PRODUCT -> ProductViewHolder(parent.inflate(R.layout.product_item)).apply { ++ itemView.setOnClickListener { onClick(getProductItem(absoluteAdapterPosition)) } ++ } ++ ++ ViewType.LOADING -> LoadingViewHolder(parent.context) ++ ViewType.EMPTY -> EmptyViewHolder(parent.context) ++ } ++ } ++ ++ override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { ++ when (getItemEnumViewType(position)) { ++ ViewType.PRODUCT -> { ++ holder as ProductViewHolder ++ val productItem = getProductItem(if (position > -1) position else 0) ++ holder.name.text = productItem.name ++ holder.summary.text = productItem.summary ++ holder.summary.isVisible = ++ productItem.summary.isNotEmpty() && productItem.name != productItem.summary ++ val repository: Repository? = repositories[productItem.repositoryId] ++ if (repository != null) { ++ val iconUrl = productItem.icon(view = holder.icon, repository = repository) ++ holder.icon.load(iconUrl) { ++ authentication(repository.authentication) ++ } ++ } ++ with(holder.status) { ++ val versionText = if (source == AppListFragment.Source.UPDATES) { ++ productItem.version ++ } else { ++ productItem.installedVersion.nullIfEmpty() ?: productItem.version ++ } ++ text = versionText ++ val isInstalled = productItem.installedVersion.nullIfEmpty() != null ++ when { ++ productItem.canUpdate -> { ++ backgroundTintList = ++ context.getColorFromAttr(MaterialR.attr.colorSecondaryContainer) ++ setTextColor( ++ context.getColorFromAttr(MaterialR.attr.colorOnSecondaryContainer) ++ ) ++ } ++ ++ isInstalled -> { ++ backgroundTintList = ++ context.getColorFromAttr(MaterialR.attr.colorPrimaryContainer) ++ setTextColor( ++ context.getColorFromAttr(MaterialR.attr.colorOnPrimaryContainer) ++ ) ++ } ++ ++ else -> { ++ setPadding(0, 0, 0, 0) ++ setTextColor( ++ holder.status.context.getColorFromAttr( ++ MaterialR.attr.colorOnBackground ++ ) ++ ) ++ background = null ++ return@with ++ } ++ } ++ background = context.corneredBackground ++ 6.dp.let { setPadding(it, it, it, it) } ++ } ++ val enabled = productItem.compatible || productItem.installedVersion.isNotEmpty() ++ sequenceOf(holder.name, holder.status, holder.summary).forEach { ++ it.isEnabled = enabled ++ } ++ } ++ ++ ViewType.LOADING -> { ++ // Do nothing ++ } ++ ++ ViewType.EMPTY -> { ++ holder as EmptyViewHolder ++ holder.text.text = emptyText ++ } ++ }::class ++ } ++} +Index: app/src/main/kotlin/com/leos/droidify/ui/appList/AppListFragment.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/ui/appList/AppListFragment.kt b/app/src/main/kotlin/com/leos/droidify/ui/appList/AppListFragment.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/ui/appList/AppListFragment.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,198 @@ ++package com.leos.droidify.ui.appList ++ ++import android.database.Cursor ++import android.os.Bundle ++import android.os.Parcelable ++import android.view.LayoutInflater ++import android.view.View ++import android.view.ViewGroup ++import androidx.core.view.isVisible ++import androidx.fragment.app.Fragment ++import androidx.fragment.app.viewModels ++import androidx.lifecycle.Lifecycle ++import androidx.lifecycle.lifecycleScope ++import androidx.lifecycle.repeatOnLifecycle ++import androidx.recyclerview.widget.LinearLayoutManager ++import androidx.recyclerview.widget.RecyclerView ++import com.leos.core.common.R as CommonR ++import com.leos.core.common.R.string as stringRes ++import com.leos.core.common.extension.dp ++import com.leos.core.common.extension.isFirstItemVisible ++import com.leos.core.common.extension.systemBarsMargin ++import com.leos.core.common.extension.systemBarsPadding ++import com.leos.core.domain.ProductItem ++import com.leos.droidify.database.CursorOwner ++import com.leos.droidify.databinding.RecyclerViewWithFabBinding ++import com.leos.droidify.utility.extension.screenActivity ++import dagger.hilt.android.AndroidEntryPoint ++import kotlinx.coroutines.launch ++ ++@AndroidEntryPoint ++class AppListFragment() : Fragment(), CursorOwner.Callback { ++ ++ private val viewModel: AppListViewModel by viewModels() ++ ++ private var _binding: RecyclerViewWithFabBinding? = null ++ private val binding get() = _binding!! ++ ++ companion object { ++ private const val STATE_LAYOUT_MANAGER = "layoutManager" ++ ++ private const val EXTRA_SOURCE = "source" ++ } ++ ++ enum class Source( ++ val titleResId: Int, ++ val sections: Boolean, ++ val order: Boolean, ++ val updateAll: Boolean ++ ) { ++ AVAILABLE(stringRes.available, true, true, false), ++ INSTALLED(stringRes.installed, false, true, false), ++ UPDATES(stringRes.updates, false, false, true) ++ } ++ ++ constructor(source: Source) : this() { ++ arguments = Bundle().apply { ++ putString(EXTRA_SOURCE, source.name) ++ } ++ } ++ ++ val source: Source ++ get() = requireArguments().getString(EXTRA_SOURCE)!!.let(Source::valueOf) ++ ++ private lateinit var recyclerView: RecyclerView ++ private lateinit var recyclerViewAdapter: AppListAdapter ++ private var shortAnimationDuration: Int = 0 ++ private var layoutManagerState: Parcelable? = null ++ ++ override fun onCreateView( ++ inflater: LayoutInflater, ++ container: ViewGroup?, ++ savedInstanceState: Bundle? ++ ): View { ++ _binding = RecyclerViewWithFabBinding.inflate(inflater, container, false) ++ ++ shortAnimationDuration = resources.getInteger(android.R.integer.config_shortAnimTime) ++ ++ viewModel.syncConnection.bind(requireContext()) ++ ++ recyclerView = binding.recyclerView.apply { ++ layoutManager = LinearLayoutManager(context) ++ isMotionEventSplittingEnabled = false ++ setHasFixedSize(true) ++ recycledViewPool.setMaxRecycledViews(AppListAdapter.ViewType.PRODUCT.ordinal, 30) ++ recyclerViewAdapter = AppListAdapter(source) { ++ screenActivity.navigateProduct(it.packageName) ++ } ++ adapter = recyclerViewAdapter ++ systemBarsPadding() ++ } ++ val fab = binding.scrollUp ++ with(fab) { ++ if (source.updateAll) { ++ text = getString(CommonR.string.update_all) ++ setOnClickListener { viewModel.updateAll() } ++ setIconResource(CommonR.drawable.ic_download) ++ alpha = 1f ++ viewLifecycleOwner.lifecycleScope.launch { ++ viewModel.showUpdateAllButton.collect { ++ isVisible = it ++ } ++ } ++ systemBarsMargin(16.dp) ++ } else { ++ text = "" ++ setIconResource(CommonR.drawable.arrow_up) ++ setOnClickListener { recyclerView.smoothScrollToPosition(0) } ++ alpha = 0f ++ isVisible = true ++ systemBarsMargin(16.dp) ++ } ++ } ++ ++ viewLifecycleOwner.lifecycleScope.launch { ++ if (!source.updateAll) { ++ recyclerView.isFirstItemVisible.collect { showFab -> ++ fab.animate() ++ .alpha(if (!showFab) 1f else 0f) ++ .setDuration(shortAnimationDuration.toLong()) ++ .setListener(null) ++ } ++ } ++ } ++ return binding.root ++ } ++ ++ override fun onViewCreated(view: View, savedInstanceState: Bundle?) { ++ super.onViewCreated(view, savedInstanceState) ++ layoutManagerState = savedInstanceState?.getParcelable(STATE_LAYOUT_MANAGER) ++ ++ updateRequest() ++ viewLifecycleOwner.lifecycleScope.launch { ++ repeatOnLifecycle(Lifecycle.State.RESUMED) { ++ launch { ++ viewModel.reposStream.collect { repos -> ++ recyclerViewAdapter.repositories = repos.associateBy { it.id } ++ } ++ } ++ launch { ++ viewModel.sortOrderFlow.collect { ++ updateRequest() ++ } ++ } ++ } ++ } ++ } ++ ++ override fun onSaveInstanceState(outState: Bundle) { ++ super.onSaveInstanceState(outState) ++ (layoutManagerState ?: recyclerView.layoutManager?.onSaveInstanceState()) ++ ?.let { outState.putParcelable(STATE_LAYOUT_MANAGER, it) } ++ } ++ ++ override fun onDestroyView() { ++ super.onDestroyView() ++ viewModel.syncConnection.unbind(requireContext()) ++ _binding = null ++ screenActivity.cursorOwner.detach(this) ++ } ++ ++ override fun onCursorData(request: CursorOwner.Request, cursor: Cursor?) { ++ recyclerViewAdapter.cursor = cursor ++ recyclerViewAdapter.emptyText = when { ++ cursor == null -> "" ++ viewModel.searchQuery.value.isNotEmpty() -> { ++ getString(stringRes.no_matching_applications_found) ++ } ++ ++ else -> when (source) { ++ Source.AVAILABLE -> getString(stringRes.no_applications_available) ++ Source.INSTALLED -> getString(stringRes.no_applications_installed) ++ Source.UPDATES -> getString(stringRes.all_applications_up_to_date) ++ } ++ } ++ layoutManagerState?.let { ++ layoutManagerState = null ++ recyclerView.layoutManager?.onRestoreInstanceState(it) ++ } ++ } ++ ++ internal fun setSearchQuery(searchQuery: String) { ++ viewModel.setSearchQuery(searchQuery) { ++ updateRequest() ++ } ++ } ++ ++ internal fun setSection(section: ProductItem.Section) { ++ viewModel.setSection(section) { ++ updateRequest() ++ } ++ } ++ ++ private fun updateRequest() { ++ if (view != null) { ++ screenActivity.cursorOwner.attach(this, viewModel.request(source)) ++ } ++ } ++} +Index: app/src/main/kotlin/com/leos/droidify/ui/appList/AppListViewModel.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/ui/appList/AppListViewModel.kt b/app/src/main/kotlin/com/leos/droidify/ui/appList/AppListViewModel.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/ui/appList/AppListViewModel.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,91 @@ ++package com.leos.droidify.ui.appList ++ ++import androidx.lifecycle.ViewModel ++import androidx.lifecycle.viewModelScope ++import com.leos.core.common.extension.asStateFlow ++import com.leos.core.datastore.SettingsRepository ++import com.leos.core.datastore.get ++import com.leos.core.datastore.model.SortOrder ++import com.leos.core.domain.ProductItem ++import com.leos.core.domain.ProductItem.Section.All ++import com.leos.droidify.database.CursorOwner ++import com.leos.droidify.database.Database ++import com.leos.droidify.service.Connection ++import com.leos.droidify.service.SyncService ++import dagger.hilt.android.lifecycle.HiltViewModel ++import javax.inject.Inject ++import kotlinx.coroutines.Dispatchers ++import kotlinx.coroutines.flow.MutableStateFlow ++import kotlinx.coroutines.flow.map ++import kotlinx.coroutines.launch ++ ++@HiltViewModel ++class AppListViewModel ++@Inject constructor( ++ settingsRepository: SettingsRepository ++) : ViewModel() { ++ ++ val reposStream = Database.RepositoryAdapter ++ .getAllStream() ++ .asStateFlow(emptyList()) ++ ++ val showUpdateAllButton = Database.ProductAdapter ++ .getUpdatesStream() ++ .map { it.isNotEmpty() } ++ .asStateFlow(false) ++ ++ val sortOrderFlow = settingsRepository.get { sortOrder } ++ .asStateFlow(SortOrder.UPDATED) ++ ++ private val sections = MutableStateFlow(All) ++ ++ val searchQuery = MutableStateFlow("") ++ ++ val syncConnection = Connection(SyncService::class.java) ++ ++ fun updateAll() { ++ viewModelScope.launch { ++ syncConnection.binder?.updateAllApps() ++ } ++ } ++ ++ fun request(source: AppListFragment.Source): CursorOwner.Request { ++ return when (source) { ++ AppListFragment.Source.AVAILABLE -> CursorOwner.Request.ProductsAvailable( ++ searchQuery.value, ++ sections.value, ++ sortOrderFlow.value ++ ) ++ ++ AppListFragment.Source.INSTALLED -> CursorOwner.Request.ProductsInstalled( ++ searchQuery.value, ++ sections.value, ++ sortOrderFlow.value ++ ) ++ ++ AppListFragment.Source.UPDATES -> CursorOwner.Request.ProductsUpdates( ++ searchQuery.value, ++ sections.value, ++ sortOrderFlow.value ++ ) ++ } ++ } ++ ++ fun setSection(newSection: ProductItem.Section, perform: () -> Unit) { ++ viewModelScope.launch { ++ if (newSection != sections.value) { ++ sections.emit(newSection) ++ launch(Dispatchers.Main) { perform() } ++ } ++ } ++ } ++ ++ fun setSearchQuery(newSearchQuery: String, perform: () -> Unit) { ++ viewModelScope.launch { ++ if (newSearchQuery != searchQuery.value) { ++ searchQuery.emit(newSearchQuery) ++ launch(Dispatchers.Main) { perform() } ++ } ++ } ++ } ++} +Index: app/src/main/kotlin/com/leos/droidify/ui/favourites/FavouriteFragmentAdapter.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/ui/favourites/FavouriteFragmentAdapter.kt b/app/src/main/kotlin/com/leos/droidify/ui/favourites/FavouriteFragmentAdapter.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/ui/favourites/FavouriteFragmentAdapter.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,98 @@ ++package com.leos.droidify.ui.favourites ++ ++import android.view.LayoutInflater ++import android.view.ViewGroup ++import androidx.core.view.isVisible ++import androidx.recyclerview.widget.RecyclerView ++import coil.load ++import com.google.android.material.R as MaterialR ++import com.leos.core.common.extension.authentication ++import com.leos.core.common.extension.corneredBackground ++import com.leos.core.common.extension.dp ++import com.leos.core.common.extension.getColorFromAttr ++import com.leos.core.common.nullIfEmpty ++import com.leos.core.domain.Product ++import com.leos.core.domain.Repository ++import com.leos.droidify.databinding.ProductItemBinding ++import com.leos.droidify.utility.extension.ImageUtils.icon ++ ++class FavouriteFragmentAdapter( ++ private val onProductClick: (String) -> Unit ++) : RecyclerView.Adapter() { ++ ++ inner class ViewHolder(binding: ProductItemBinding) : RecyclerView.ViewHolder(binding.root) { ++ val icon = binding.icon ++ val name = binding.name ++ val summary = binding.summary ++ val version = binding.status ++ } ++ ++ var apps: List> = emptyList() ++ set(value) { ++ field = value ++ notifyDataSetChanged() ++ } ++ ++ var repositories: Map = emptyMap() ++ set(value) { ++ field = value ++ notifyDataSetChanged() ++ } ++ ++ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder = ++ ViewHolder( ++ ProductItemBinding.inflate( ++ LayoutInflater.from(parent.context), ++ parent, ++ false ++ ) ++ ).apply { ++ itemView.setOnClickListener { ++ if (apps.isNotEmpty() && apps[absoluteAdapterPosition].firstOrNull() != null) { ++ onProductClick(apps[absoluteAdapterPosition].first().packageName) ++ } ++ } ++ } ++ ++ override fun getItemCount(): Int = apps.size ++ ++ override fun onBindViewHolder(holder: ViewHolder, position: Int) { ++ val item = apps[position].first().item() ++ val repository: Repository? = repositories[item.repositoryId] ++ holder.name.text = item.name ++ holder.summary.isVisible = item.summary.isNotEmpty() ++ holder.summary.text = item.summary ++ if (repository != null) { ++ val iconUrl = item.icon(holder.icon, repository) ++ holder.icon.load(iconUrl) { ++ authentication(repository.authentication) ++ } ++ } ++ holder.version.apply { ++ text = item.installedVersion.nullIfEmpty() ?: item.version ++ val isInstalled = item.installedVersion.nullIfEmpty() != null ++ when { ++ item.canUpdate -> { ++ backgroundTintList = ++ context.getColorFromAttr(MaterialR.attr.colorSecondaryContainer) ++ setTextColor(context.getColorFromAttr(MaterialR.attr.colorOnSecondaryContainer)) ++ } ++ ++ isInstalled -> { ++ backgroundTintList = ++ context.getColorFromAttr(MaterialR.attr.colorPrimaryContainer) ++ setTextColor(context.getColorFromAttr(MaterialR.attr.colorOnPrimaryContainer)) ++ } ++ ++ else -> { ++ setPadding(0, 0, 0, 0) ++ setTextColor(context.getColorFromAttr(MaterialR.attr.colorOnBackground)) ++ background = null ++ return@apply ++ } ++ } ++ background = context.corneredBackground ++ 6.dp.let { setPadding(it, it, it, it) } ++ } ++ } ++} +Index: app/src/main/kotlin/com/leos/droidify/ui/favourites/FavouritesFragment.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/ui/favourites/FavouritesFragment.kt b/app/src/main/kotlin/com/leos/droidify/ui/favourites/FavouritesFragment.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/ui/favourites/FavouritesFragment.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,79 @@ ++package com.leos.droidify.ui.favourites ++ ++import android.os.Bundle ++import android.view.LayoutInflater ++import android.view.View ++import android.view.ViewGroup ++import androidx.fragment.app.viewModels ++import androidx.lifecycle.Lifecycle ++import androidx.lifecycle.flowWithLifecycle ++import androidx.lifecycle.lifecycleScope ++import androidx.lifecycle.repeatOnLifecycle ++import androidx.recyclerview.widget.LinearLayoutManager ++import androidx.recyclerview.widget.RecyclerView ++import com.leos.core.common.R as CommonR ++import com.leos.core.common.extension.systemBarsPadding ++import com.leos.droidify.database.Database ++import com.leos.droidify.ui.ScreenFragment ++import com.leos.droidify.utility.extension.screenActivity ++import dagger.hilt.android.AndroidEntryPoint ++import kotlinx.coroutines.flow.collectLatest ++import kotlinx.coroutines.launch ++ ++@AndroidEntryPoint ++class FavouritesFragment : ScreenFragment() { ++ ++ private val viewModel: FavouritesViewModel by viewModels() ++ ++ private lateinit var recyclerView: RecyclerView ++ private lateinit var recyclerViewAdapter: FavouriteFragmentAdapter ++ ++ override fun onCreateView( ++ inflater: LayoutInflater, ++ container: ViewGroup?, ++ savedInstanceState: Bundle? ++ ): View { ++ super.onCreateView(inflater, container, savedInstanceState) ++ val view = fragmentBinding.root.apply { ++ val content = fragmentBinding.fragmentContent ++ content.addView( ++ RecyclerView(content.context).apply { ++ id = android.R.id.list ++ layoutManager = LinearLayoutManager(context) ++ isVerticalScrollBarEnabled = false ++ setHasFixedSize(true) ++ recyclerViewAdapter = ++ FavouriteFragmentAdapter { screenActivity.navigateProduct(it) } ++ this.adapter = recyclerViewAdapter ++ systemBarsPadding(includeFab = false) ++ recyclerView = this ++ } ++ ) ++ } ++ viewLifecycleOwner.lifecycleScope.launch { ++ repeatOnLifecycle(Lifecycle.State.CREATED) { ++ launch { ++ viewModel.favouriteApps.collect { apps -> ++ recyclerViewAdapter.apps = apps ++ } ++ } ++ launch { ++ Database.RepositoryAdapter ++ .getAllStream() ++ .flowWithLifecycle(viewLifecycleOwner.lifecycle, Lifecycle.State.RESUMED) ++ .collectLatest { repositories -> ++ recyclerViewAdapter.repositories = repositories.associateBy { it.id } ++ } ++ } ++ } ++ } ++ ++ toolbar.title = getString(CommonR.string.favourites) ++ return view ++ } ++ ++ override fun onViewCreated(view: View, savedInstanceState: Bundle?) { ++ super.onViewCreated(view, savedInstanceState) ++ screenActivity.onToolbarCreated(toolbar) ++ } ++} +Index: app/src/main/kotlin/com/leos/droidify/ui/favourites/FavouritesViewModel.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/ui/favourites/FavouritesViewModel.kt b/app/src/main/kotlin/com/leos/droidify/ui/favourites/FavouritesViewModel.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/ui/favourites/FavouritesViewModel.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,35 @@ ++package com.leos.droidify.ui.favourites ++ ++import androidx.lifecycle.ViewModel ++import androidx.lifecycle.viewModelScope ++import com.leos.core.common.extension.asStateFlow ++import com.leos.core.datastore.SettingsRepository ++import com.leos.core.datastore.get ++import com.leos.core.domain.Product ++import com.leos.droidify.database.Database ++import dagger.hilt.android.lifecycle.HiltViewModel ++import javax.inject.Inject ++import kotlinx.coroutines.flow.StateFlow ++import kotlinx.coroutines.flow.map ++import kotlinx.coroutines.launch ++ ++@HiltViewModel ++class FavouritesViewModel @Inject constructor( ++ private val settingsRepository: SettingsRepository ++) : ViewModel() { ++ ++ val favouriteApps: StateFlow>> = ++ settingsRepository ++ .get { favouriteApps } ++ .map { favourites -> ++ favourites.mapNotNull { app -> ++ Database.ProductAdapter.get(app, null).ifEmpty { null } ++ } ++ }.asStateFlow(emptyList()) ++ ++ fun updateFavourites(packageName: String) { ++ viewModelScope.launch { ++ settingsRepository.toggleFavourites(packageName) ++ } ++ } ++} +Index: app/src/main/kotlin/com/leos/droidify/ui/repository/EditRepositoryFragment.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/ui/repository/EditRepositoryFragment.kt b/app/src/main/kotlin/com/leos/droidify/ui/repository/EditRepositoryFragment.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/ui/repository/EditRepositoryFragment.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,475 @@ ++package com.leos.droidify.ui.repository ++ ++import android.os.Bundle ++import android.text.Selection ++import android.util.Base64 ++import android.view.MenuItem ++import android.view.View ++import android.view.ViewGroup ++import androidx.appcompat.app.AlertDialog ++import androidx.core.net.toUri ++import androidx.core.os.bundleOf ++import androidx.core.view.isVisible ++import androidx.core.widget.doAfterTextChanged ++import androidx.fragment.app.DialogFragment ++import androidx.lifecycle.lifecycleScope ++import com.google.android.material.dialog.MaterialAlertDialogBuilder ++import com.google.android.material.snackbar.Snackbar ++import com.leos.core.common.extension.clipboardManager ++import com.leos.core.common.extension.get ++import com.leos.core.common.extension.getMutatedIcon ++import com.leos.core.common.nullIfEmpty ++import com.leos.core.domain.Repository ++import com.leos.droidify.database.Database ++import com.leos.droidify.databinding.EditRepositoryBinding ++import com.leos.droidify.service.Connection ++import com.leos.droidify.service.SyncService ++import com.leos.droidify.ui.Message ++import com.leos.droidify.ui.MessageDialog ++import com.leos.droidify.ui.ScreenFragment ++import com.leos.droidify.utility.extension.screenActivity ++import com.leos.network.Downloader ++import com.leos.network.NetworkResponse ++import dagger.hilt.android.AndroidEntryPoint ++import kotlinx.coroutines.Dispatchers ++import kotlinx.coroutines.Job ++import kotlinx.coroutines.async ++import kotlinx.coroutines.awaitAll ++import kotlinx.coroutines.coroutineScope ++import kotlinx.coroutines.launch ++import java.net.URI ++import java.net.URISyntaxException ++import java.net.URL ++import java.nio.charset.Charset ++import java.util.Locale ++import javax.inject.Inject ++import kotlin.math.min ++import com.leos.core.common.R as CommonR ++import com.leos.core.common.R.string as stringRes ++ ++@AndroidEntryPoint ++class EditRepositoryFragment() : ScreenFragment() { ++ ++ constructor(repositoryId: Long?, repoAddress: String?) : this() { ++ arguments = ++ bundleOf(EXTRA_REPOSITORY_ID to repositoryId, EXTRA_REPOSITORY_ADDRESS to repoAddress) ++ } ++ ++ private var _binding: EditRepositoryBinding? = null ++ private val binding get() = _binding!! ++ ++ private val repoId: Long? ++ get() = arguments?.getLong(EXTRA_REPOSITORY_ID) ++ ++ private val repoAddress: String? ++ get() = arguments?.getString(EXTRA_REPOSITORY_ADDRESS) ++ ++ private var saveMenuItem: MenuItem? = null ++ ++ private val syncConnection = Connection(SyncService::class.java) ++ private var checkInProgress = false ++ private var checkJob: Job? = null ++ ++ private var takenAddresses = emptySet() ++ ++ @Inject ++ lateinit var downloader: Downloader ++ ++ override fun onViewCreated(view: View, savedInstanceState: Bundle?) { ++ super.onViewCreated(view, savedInstanceState) ++ ++ _binding = EditRepositoryBinding.inflate(layoutInflater) ++ ++ syncConnection.bind(requireContext()) ++ ++ screenActivity.onToolbarCreated(toolbar) ++ toolbar.title = ++ getString( ++ if (repoId != null) stringRes.edit_repository else stringRes.add_repository ++ ) ++ ++ saveMenuItem = toolbar.menu.add(stringRes.save) ++ .setIcon(toolbar.context.getMutatedIcon(CommonR.drawable.ic_save)) ++ .setEnabled(false) ++ .setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_ALWAYS).setOnMenuItemClickListener { ++ onSaveRepositoryClick(true) ++ true ++ } ++ ++ val content = fragmentBinding.fragmentContent ++ ++ content.addView(binding.root) ++ ++ val validChar: (Char) -> Boolean = { it in '0'..'9' || it in 'a'..'f' || it in 'A'..'F' } ++ ++ binding.fingerprint.doAfterTextChanged { text -> ++ fun logicalPosition(text: String, position: Int): Int { ++ return if (position > 0) { ++ text.asSequence().take(position) ++ .count(validChar) ++ } else { ++ position ++ } ++ } ++ ++ fun realPosition(text: String, position: Int): Int { ++ return if (position > 0) { ++ var left = position ++ val index = text.indexOfFirst { ++ validChar(it) && run { ++ left -= 1 ++ left <= 0 ++ } ++ } ++ if (index >= 0) min(index + 1, text.length) else text.length ++ } else { ++ position ++ } ++ } ++ ++ val inputString = text.toString() ++ val outputString = inputString ++ .uppercase(Locale.US) ++ .filter(validChar) ++ .windowed(2, 2, true).take(32) ++ .joinToString(separator = " ") ++ if (inputString != outputString) { ++ val inputStart = logicalPosition(inputString, Selection.getSelectionStart(text)) ++ val inputEnd = logicalPosition(inputString, Selection.getSelectionEnd(text)) ++ text?.replace(0, text.length, outputString) ++ Selection.setSelection( ++ text, ++ realPosition(outputString, inputStart), ++ realPosition(outputString, inputEnd) ++ ) ++ } ++ } ++ ++ if (savedInstanceState == null) { ++ val repository = repoId?.let(Database.RepositoryAdapter::get) ++ if (repository == null) { ++ val text = repoAddress ?: kotlin.run { ++ context?.clipboardManager?.primaryClip?.takeIf { it.itemCount > 0 } ++ ?.getItemAt(0)?.text?.toString().orEmpty() ++ } ++ val (addressText, fingerprintText) = try { ++ val uri = URL(text).toString().toUri() ++ val fingerprintText = uri["fingerprint"]?.nullIfEmpty() ++ ?: uri["FINGERPRINT"]?.nullIfEmpty() ++ Pair( ++ uri.buildUpon().path(uri.path?.pathCropped).query(null).fragment(null) ++ .build().toString(), ++ fingerprintText ++ ) ++ } catch (e: Exception) { ++ Pair(null, null) ++ } ++ binding.address.setText(addressText) ++ binding.fingerprint.setText(fingerprintText) ++ } else { ++ binding.address.setText(repository.address) ++ val mirrors = repository.mirrors.map { it.withoutKnownPath } ++ binding.addressContainer.apply { ++ isEndIconVisible = mirrors.isNotEmpty() ++ setEndIconDrawable(CommonR.drawable.ic_arrow_down) ++ setEndIconOnClickListener { ++ SelectMirrorDialog(mirrors).show( ++ childFragmentManager, ++ SelectMirrorDialog::class.java.name ++ ) ++ } ++ } ++ binding.fingerprint.setText(repository.fingerprint) ++ val (usernameText, passwordText) = repository.authentication.nullIfEmpty() ++ ?.let { if (it.startsWith("Basic ")) it.substring(6) else null }?.let { ++ try { ++ Base64.decode(it, Base64.NO_WRAP).toString(Charset.defaultCharset()) ++ } catch (e: Exception) { ++ e.printStackTrace() ++ null ++ } ++ }?.let { ++ val index = it.indexOf(':') ++ if (index >= 0) { ++ Pair( ++ it.substring(0, index), ++ it.substring(index + 1) ++ ) ++ } else { ++ null ++ } ++ } ?: Pair(null, null) ++ binding.username.setText(usernameText) ++ binding.password.setText(passwordText) ++ } ++ } ++ ++ binding.address.doAfterTextChanged { invalidateAddress() } ++ binding.fingerprint.doAfterTextChanged { invalidateFingerprint() } ++ binding.username.doAfterTextChanged { invalidateUsernamePassword() } ++ binding.password.doAfterTextChanged { invalidateUsernamePassword() } ++ ++ (binding.overlay.parent as ViewGroup).layoutTransition?.setDuration(200L) ++ binding.overlay.background!!.apply { ++ mutate() ++ alpha = 0xcc ++ } ++ binding.skip.setOnClickListener { ++ if (checkInProgress) { ++ checkInProgress = false ++ checkJob?.cancel() ++ onSaveRepositoryClick(false) ++ } ++ } ++ ++ viewLifecycleOwner.lifecycleScope.launch { ++ val list = Database.RepositoryAdapter.getAll() ++ takenAddresses = list.asSequence().filter { it.id != repoId } ++ .flatMap { (it.mirrors + it.address).asSequence() } ++ .map { it.withoutKnownPath } ++ .toSet() ++ invalidateAddress() ++ } ++ invalidateAddress() ++ invalidateFingerprint() ++ invalidateUsernamePassword() ++ } ++ ++ override fun onDestroyView() { ++ super.onDestroyView() ++ ++ saveMenuItem = null ++ syncConnection.unbind(requireContext()) ++ _binding = null ++ } ++ ++ private var addressError = false ++ private var fingerprintError = false ++ private var usernamePasswordError = false ++ ++ private fun invalidateAddress() { ++ invalidateAddress(binding.address.text.toString()) ++ } ++ ++ private fun invalidateAddress(addressText: String) { ++ val normalizedAddress = normalizeAddress(addressText) ++ val addressErrorResId = if (normalizedAddress != null) { ++ if (normalizedAddress.withoutKnownPath in takenAddresses) { ++ stringRes.already_exists ++ } else { ++ null ++ } ++ } else { ++ stringRes.invalid_address ++ } ++ addressError = addressErrorResId != null ++ addressErrorResId?.let { binding.address.error = getString(it) } ++ invalidateState() ++ } ++ ++ private fun invalidateFingerprint() { ++ val fingerprint = binding.fingerprint.text.toString().replace(" ", "") ++ val fingerprintInvalid = fingerprint.isNotEmpty() && fingerprint.length != 64 ++ if (fingerprintInvalid) { ++ binding.fingerprint.error = getString(stringRes.invalid_fingerprint_format) ++ } ++ fingerprintError = fingerprintInvalid ++ invalidateState() ++ } ++ ++ private fun invalidateUsernamePassword() { ++ val username = binding.username.text.toString() ++ val password = binding.password.text.toString() ++ val usernameInvalid = username.contains(':') ++ val usernameEmpty = username.isEmpty() && password.isNotEmpty() ++ val passwordEmpty = username.isNotEmpty() && password.isEmpty() ++ if (usernameEmpty) { ++ binding.username.error = getString(stringRes.username_missing) ++ } else if (passwordEmpty) { ++ binding.password.error = getString(stringRes.password_missing) ++ } else if (usernameInvalid) { ++ binding.username.error = getString(stringRes.invalid_username_format) ++ } ++ usernamePasswordError = usernameInvalid || usernameEmpty || passwordEmpty ++ invalidateState() ++ } ++ ++ private fun invalidateState() { ++ saveMenuItem!!.isEnabled = ++ !addressError && !fingerprintError && !usernamePasswordError && !checkInProgress ++ binding.apply { ++ sequenceOf(address, fingerprint, username, password).forEach { ++ it.isEnabled = !checkInProgress ++ } ++ } ++ binding.overlay.isVisible = checkInProgress ++ } ++ ++ private val String.pathCropped: String ++ get() { ++ val index = indexOfLast { it != '/' } ++ return if (index >= 0 && index < length - 1) substring(0, index + 1) else this ++ } ++ ++ private val String.withoutKnownPath: String ++ get() { ++ val cropped = pathCropped ++ val endsWith = ++ addressSuffixes.asSequence() ++ .sortedByDescending { it.length } ++ .find { cropped.endsWith("/$it") } ++ return if (endsWith != null) { ++ cropped.substring( ++ 0, ++ cropped.length - endsWith.length - 1 ++ ) ++ } else { ++ cropped ++ } ++ } ++ ++ private fun normalizeAddress(address: String): String? { ++ val uri = try { ++ val uri = URI(address) ++ if (uri.isAbsolute) uri.normalize() else null ++ } catch (e: URISyntaxException) { ++ return null ++ } ++ return try { ++ uri?.toURL()?.toURI()?.toString()?.removeSuffix("/") ++ } catch (e: URISyntaxException) { ++ null ++ } ++ } ++ ++ private fun setMirror(address: String) { ++ binding.address.setText(address) ++ } ++ ++ private fun onSaveRepositoryClick(check: Boolean) { ++ if (!checkInProgress) { ++ val address = normalizeAddress(binding.address.text.toString())!! ++ val fingerprint = binding.fingerprint.text.toString().replace(" ", "") ++ val username = binding.username.text.toString().nullIfEmpty() ++ val password = binding.password.text.toString().nullIfEmpty() ++ val authentication = username?.let { u -> ++ password?.let { p -> ++ Base64.encodeToString( ++ "$u:$p".toByteArray(Charset.defaultCharset()), ++ Base64.NO_WRAP ++ ) ++ } ++ }?.let { "Basic $it" }.orEmpty() ++ ++ if (check) { ++ checkJob = viewLifecycleOwner.lifecycleScope.launch(Dispatchers.Main) { ++ val resultAddress = try { ++ checkAddress(address, authentication) ++ } catch (e: Exception) { ++ e.printStackTrace() ++ failedAddressCheck() ++ null ++ } ++ val allow = resultAddress == address || run { ++ if (resultAddress == null) return@run false ++ binding.address.setText(resultAddress) ++ invalidateAddress(resultAddress) ++ !addressError ++ } ++ if (allow && resultAddress != null) { ++ onSaveRepositoryProceedInvalidate( ++ resultAddress, ++ fingerprint, ++ authentication ++ ) ++ } else { ++ invalidateState() ++ } ++ invalidateState() ++ } ++ } else { ++ onSaveRepositoryProceedInvalidate(address, fingerprint, authentication) ++ } ++ } ++ } ++ ++ private suspend fun checkAddress( ++ address: String, ++ authentication: String ++ ): String? = coroutineScope { ++ checkInProgress = true ++ invalidateState() ++ val allAddresses = addressSuffixes.map { "$address/$it" } + address ++ val pathCheck = allAddresses.map { ++ async { ++ downloader.headCall( ++ url = "$it/index-v1.jar", ++ headers = { authentication(authentication) } ++ ) is NetworkResponse.Success ++ } ++ } ++ val indexOfValidAddress = pathCheck.awaitAll().indexOf(true) ++ allAddresses[indexOfValidAddress].nullIfEmpty() ++ } ++ ++ private fun onSaveRepositoryProceedInvalidate( ++ address: String, ++ fingerprint: String, ++ authentication: String ++ ) { ++ val binder = syncConnection.binder ++ if (binder != null) { ++ val repositoryId = repoId ++ if (repositoryId != null && binder.isCurrentlySyncing(repositoryId)) { ++ MessageDialog(Message.CantEditSyncing).show(childFragmentManager) ++ invalidateState() ++ } else { ++ val repository = repositoryId?.let(Database.RepositoryAdapter::get) ++ ?.edit(address, fingerprint, authentication) ++ ?: Repository.newRepository(address, fingerprint, authentication) ++ val changedRepository = Database.RepositoryAdapter.put(repository) ++ if (repositoryId == null && changedRepository.enabled) { ++ binder.sync(changedRepository) ++ } ++ screenActivity.onBackPressed() ++ } ++ } else { ++ invalidateState() ++ } ++ } ++ ++ private fun failedAddressCheck() { ++ checkInProgress = false ++ invalidateState() ++ Snackbar.make( ++ requireView(), ++ CommonR.string.repository_unreachable, ++ Snackbar.LENGTH_SHORT ++ ).show() ++ } ++ ++ class SelectMirrorDialog() : DialogFragment() { ++ constructor(mirrors: List) : this() { ++ arguments = bundleOf(EXTRA_MIRRORS to ArrayList(mirrors)) ++ } ++ ++ override fun onCreateDialog(savedInstanceState: Bundle?): AlertDialog { ++ val mirrors = requireArguments().getStringArrayList(EXTRA_MIRRORS)!! ++ return MaterialAlertDialogBuilder(requireContext()).setTitle(stringRes.select_mirror) ++ .setItems(mirrors.toTypedArray()) { _, position -> ++ (parentFragment as EditRepositoryFragment).setMirror(mirrors[position]) ++ }.setNegativeButton(stringRes.cancel, null).create() ++ } ++ ++ private companion object { ++ const val EXTRA_MIRRORS = "mirrors" ++ } ++ } ++ ++ private companion object { ++ const val EXTRA_REPOSITORY_ID = "repositoryId" ++ const val EXTRA_REPOSITORY_ADDRESS = "repositoryAddress" ++ ++ val addressSuffixes = listOf("fdroid/repo", "repo") ++ } ++} +Index: app/src/main/kotlin/com/leos/droidify/ui/repository/RepositoriesAdapter.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/ui/repository/RepositoriesAdapter.kt b/app/src/main/kotlin/com/leos/droidify/ui/repository/RepositoriesAdapter.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/ui/repository/RepositoriesAdapter.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,74 @@ ++package com.leos.droidify.ui.repository ++ ++import android.view.LayoutInflater ++import android.view.View ++import android.view.ViewGroup ++import androidx.recyclerview.widget.RecyclerView ++import com.leos.core.domain.Repository ++import com.leos.droidify.database.Database ++import com.leos.droidify.databinding.RepositoryItemBinding ++import com.leos.droidify.widget.CursorRecyclerAdapter ++ ++class RepositoriesAdapter( ++ private val navigate: (Repository) -> Unit, ++ private val onSwitch: (repository: Repository, isEnabled: Boolean) -> Boolean ++) : CursorRecyclerAdapter() { ++ enum class ViewType { REPOSITORY } ++ ++ private class ViewHolder(itemView: RepositoryItemBinding) : ++ RecyclerView.ViewHolder(itemView.root) { ++ val checkMark = itemView.repositoryState ++ val repoName = itemView.repositoryName ++ val repoDesc = itemView.repositoryDescription ++ ++ var isEnabled = true ++ } ++ ++ override val viewTypeClass: Class ++ get() = ViewType::class.java ++ ++ override fun getItemEnumViewType(position: Int): ViewType { ++ return ViewType.REPOSITORY ++ } ++ ++ private fun getRepository(position: Int): Repository { ++ return Database.RepositoryAdapter.transform(moveTo(position.takeUnless { it < 0 } ?: 0)) ++ } ++ ++ override fun onCreateViewHolder( ++ parent: ViewGroup, ++ viewType: ViewType ++ ): RecyclerView.ViewHolder { ++ return ViewHolder( ++ RepositoryItemBinding.inflate( ++ LayoutInflater.from(parent.context), ++ parent, ++ false ++ ) ++ ).apply { ++ itemView.setOnLongClickListener { ++ navigate(getRepository(absoluteAdapterPosition)) ++ true ++ } ++ itemView.setOnClickListener { ++ isEnabled = !isEnabled ++ onSwitch(getRepository(absoluteAdapterPosition), isEnabled) ++ } ++ } ++ } ++ ++ override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { ++ holder as ViewHolder ++ val repository = getRepository(position) ++ ++ holder.isEnabled = repository.enabled ++ holder.repoName.text = repository.name ++ holder.repoDesc.text = repository.description.trim() ++ ++ if (repository.enabled) { ++ holder.checkMark.visibility = View.VISIBLE ++ } else { ++ holder.checkMark.visibility = View.INVISIBLE ++ } ++ } ++} +Index: app/src/main/kotlin/com/leos/droidify/ui/repository/RepositoriesFragment.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/ui/repository/RepositoriesFragment.kt b/app/src/main/kotlin/com/leos/droidify/ui/repository/RepositoriesFragment.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/ui/repository/RepositoriesFragment.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,98 @@ ++package com.leos.droidify.ui.repository ++ ++import android.database.Cursor ++import android.os.Bundle ++import android.view.LayoutInflater ++import android.view.View ++import android.view.ViewGroup ++import androidx.recyclerview.widget.LinearLayoutManager ++import com.leos.core.common.R as CommonR ++import com.leos.core.common.extension.dp ++import com.leos.core.common.extension.systemBarsMargin ++import com.leos.core.common.extension.systemBarsPadding ++import com.leos.droidify.database.CursorOwner ++import com.leos.droidify.databinding.RecyclerViewWithFabBinding ++import com.leos.droidify.service.Connection ++import com.leos.droidify.service.SyncService ++import com.leos.droidify.ui.ScreenFragment ++import com.leos.droidify.utility.extension.screenActivity ++import com.leos.droidify.widget.addDivider ++ ++class RepositoriesFragment : ScreenFragment(), CursorOwner.Callback { ++ ++ private var _binding: RecyclerViewWithFabBinding? = null ++ private val binding get() = _binding!! ++ ++ private val syncConnection = Connection(SyncService::class.java) ++ ++ override fun onCreateView( ++ inflater: LayoutInflater, ++ container: ViewGroup?, ++ savedInstanceState: Bundle? ++ ): View { ++ super.onCreateView(inflater, container, savedInstanceState) ++ _binding = RecyclerViewWithFabBinding.inflate(inflater, container, false) ++ val view = fragmentBinding.root.apply { ++ binding.scrollUp.apply { ++ setIconResource(CommonR.drawable.ic_add) ++ setText(CommonR.string.add_repository) ++ setOnClickListener { screenActivity.navigateAddRepository() } ++ systemBarsMargin(16.dp) ++ } ++ binding.recyclerView.apply { ++ layoutManager = LinearLayoutManager(context) ++ isMotionEventSplittingEnabled = false ++ setHasFixedSize(true) ++ adapter = RepositoriesAdapter( ++ navigate = { screenActivity.navigateRepository(it.id) } ++ ) { repository, isEnabled -> ++ repository.enabled != isEnabled && ++ syncConnection.binder?.setEnabled(repository, isEnabled) == true ++ } ++ addDivider { _, _, configuration -> ++ configuration.set( ++ needDivider = true, ++ toTop = false, ++ paddingStart = 16.dp, ++ paddingEnd = 16.dp ++ ) ++ } ++ systemBarsPadding() ++ } ++ fragmentBinding.fragmentContent.addView(binding.root) ++ } ++ handleFab() ++ return view ++ } ++ ++ private fun handleFab() { ++ binding.recyclerView.setOnScrollChangeListener { _, _, scrollY, _, oldScrollY -> ++ if (scrollY > oldScrollY) { ++ binding.scrollUp.shrink() ++ } else { ++ binding.scrollUp.extend() ++ } ++ } ++ } ++ ++ override fun onViewCreated(view: View, savedInstanceState: Bundle?) { ++ super.onViewCreated(view, savedInstanceState) ++ ++ syncConnection.bind(requireContext()) ++ screenActivity.cursorOwner.attach(this, CursorOwner.Request.Repositories) ++ screenActivity.onToolbarCreated(toolbar) ++ toolbar.title = getString(CommonR.string.repositories) ++ } ++ ++ override fun onDestroyView() { ++ super.onDestroyView() ++ ++ _binding = null ++ syncConnection.unbind(requireContext()) ++ screenActivity.cursorOwner.detach(this) ++ } ++ ++ override fun onCursorData(request: CursorOwner.Request, cursor: Cursor?) { ++ (binding.recyclerView.adapter as RepositoriesAdapter).cursor = cursor ++ } ++} +Index: app/src/main/kotlin/com/leos/droidify/ui/repository/RepositoryFragment.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/ui/repository/RepositoryFragment.kt b/app/src/main/kotlin/com/leos/droidify/ui/repository/RepositoryFragment.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/ui/repository/RepositoryFragment.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,168 @@ ++package com.leos.droidify.ui.repository ++ ++import android.os.Bundle ++import android.text.SpannableStringBuilder ++import android.text.format.DateUtils ++import android.text.style.ForegroundColorSpan ++import android.text.style.TypefaceSpan ++import android.view.LayoutInflater ++import android.view.View ++import android.view.ViewGroup ++import android.widget.LinearLayout ++import androidx.core.os.bundleOf ++import androidx.core.widget.NestedScrollView ++import androidx.fragment.app.viewModels ++import androidx.lifecycle.Lifecycle ++import androidx.lifecycle.lifecycleScope ++import androidx.lifecycle.repeatOnLifecycle ++import com.leos.core.common.extension.getColorFromAttr ++import com.leos.core.common.extension.systemBarsPadding ++import com.leos.core.domain.Repository ++import com.leos.droidify.databinding.RepositoryPageBinding ++import com.leos.droidify.ui.Message ++import com.leos.droidify.ui.MessageDialog ++import com.leos.droidify.ui.ScreenFragment ++import com.leos.droidify.utility.extension.screenActivity ++import dagger.hilt.android.AndroidEntryPoint ++import kotlinx.coroutines.flow.collectLatest ++import kotlinx.coroutines.launch ++import java.util.Date ++import java.util.Locale ++import com.google.android.material.R as MaterialR ++import com.leos.core.common.R.string as stringRes ++ ++@AndroidEntryPoint ++class RepositoryFragment() : ScreenFragment() { ++ ++ private var _binding: RepositoryPageBinding? = null ++ private val binding get() = _binding!! ++ ++ private val viewModel: RepositoryViewModel by viewModels() ++ ++ constructor(repositoryId: Long) : this() { ++ arguments = bundleOf(RepositoryViewModel.ARG_REPO_ID to repositoryId) ++ } ++ ++ private var layout: LinearLayout? = null ++ ++ override fun onCreateView( ++ inflater: LayoutInflater, ++ container: ViewGroup?, ++ savedInstanceState: Bundle? ++ ): View { ++ super.onCreateView(inflater, container, savedInstanceState) ++ _binding = RepositoryPageBinding.inflate(inflater, container, false) ++ viewModel.bindService(requireContext()) ++ screenActivity.onToolbarCreated(toolbar) ++ toolbar.title = getString(stringRes.repository) ++ val scroll = NestedScrollView(binding.root.context) ++ scroll.addView(binding.root) ++ scroll.systemBarsPadding() ++ fragmentBinding.fragmentContent.addView(scroll) ++ viewLifecycleOwner.lifecycleScope.launch { ++ repeatOnLifecycle(Lifecycle.State.RESUMED) { ++ viewModel.state.collectLatest { ++ setupView(it.repo, it.appCount) ++ } ++ } ++ } ++ return fragmentBinding.root ++ } ++ ++ override fun onDestroyView() { ++ super.onDestroyView() ++ ++ layout = null ++ viewModel.unbindService(requireContext()) ++ } ++ ++ private fun setupView(repository: Repository?, appCount: Int) { ++ with(binding) { ++ address.title.setText(stringRes.address) ++ if (repository == null) { ++ address.text.text = getString(stringRes.unknown) ++ } else { ++ repoSwitch.isChecked = repository.enabled ++ repoSwitch.setOnCheckedChangeListener { _, isChecked -> ++ viewModel.enabledRepository(isChecked) ++ } ++ ++ address.text.text = repository.address ++ toolbar.title = repository.name ++ repoName.title.setText(stringRes.name) ++ repoName.text.text = repository.name ++ ++ repoDescription.title.setText(stringRes.description) ++ repoDescription.text.text = repository.description.replace('\n', ' ').trim() ++ ++ recentlyUpdated.title.setText(stringRes.recently_updated) ++ recentlyUpdated.text.text = run { ++ val lastUpdated = repository.updated ++ if (lastUpdated > 0L) { ++ val date = Date(repository.updated) ++ val format = ++ if (DateUtils.isToday(date.time)) { ++ DateUtils.FORMAT_SHOW_TIME ++ } else { ++ DateUtils.FORMAT_SHOW_TIME or DateUtils.FORMAT_SHOW_DATE ++ } ++ DateUtils.formatDateTime(requireContext(), date.time, format) ++ } else { ++ getString(stringRes.unknown) ++ } ++ } ++ ++ numberOfApps.title.setText(stringRes.number_of_applications) ++ numberOfApps.text.text = appCount.toString() ++ ++ repoFingerprint.title.setText(stringRes.fingerprint) ++ if (repository.fingerprint.isEmpty()) { ++ if (repository.updated > 0L) { ++ val builder = ++ SpannableStringBuilder(getString(stringRes.repository_unsigned_DESC)) ++ builder.setSpan( ++ ForegroundColorSpan( ++ requireContext() ++ .getColorFromAttr(MaterialR.attr.colorError) ++ .defaultColor ++ ), ++ 0, ++ builder.length, ++ SpannableStringBuilder.SPAN_EXCLUSIVE_EXCLUSIVE ++ ) ++ repoFingerprint.text.text = builder ++ } ++ } else { ++ val fingerprint = ++ SpannableStringBuilder( ++ repository.fingerprint.windowed(2, 2, false) ++ .take(32).joinToString(separator = " ") { it.uppercase(Locale.US) } ++ ) ++ fingerprint.setSpan( ++ TypefaceSpan("monospace"), ++ 0, ++ fingerprint.length, ++ SpannableStringBuilder.SPAN_EXCLUSIVE_EXCLUSIVE ++ ) ++ repoFingerprint.text.text = fingerprint ++ } ++ } ++ ++ editRepoButton.setOnClickListener { ++ screenActivity.navigateEditRepository(viewModel.id) ++ } ++ ++ deleteRepoButton.setOnClickListener { ++ MessageDialog( ++ Message.DeleteRepositoryConfirm ++ ).show(childFragmentManager) ++ } ++ } ++ } ++ ++ internal fun onDeleteConfirm() { ++ viewModel.deleteRepository( ++ onDelete = { requireActivity().onBackPressed() } ++ ) ++ } ++} +Index: app/src/main/kotlin/com/leos/droidify/ui/repository/RepositoryViewModel.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/ui/repository/RepositoryViewModel.kt b/app/src/main/kotlin/com/leos/droidify/ui/repository/RepositoryViewModel.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/ui/repository/RepositoryViewModel.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,64 @@ ++package com.leos.droidify.ui.repository ++ ++import android.content.Context ++import androidx.lifecycle.SavedStateHandle ++import androidx.lifecycle.ViewModel ++import androidx.lifecycle.viewModelScope ++import com.leos.core.common.extension.asStateFlow ++import com.leos.core.domain.Repository ++import com.leos.droidify.database.Database ++import com.leos.droidify.service.Connection ++import com.leos.droidify.service.SyncService ++import dagger.hilt.android.lifecycle.HiltViewModel ++import kotlinx.coroutines.flow.combine ++import kotlinx.coroutines.flow.first ++import kotlinx.coroutines.launch ++import javax.inject.Inject ++ ++@HiltViewModel ++class RepositoryViewModel @Inject constructor( ++ savedStateHandle: SavedStateHandle ++) : ViewModel() { ++ ++ val id: Long = savedStateHandle[ARG_REPO_ID] ?: -1 ++ ++ private val repoStream = Database.RepositoryAdapter.getStream(id) ++ ++ private val countStream = Database.ProductAdapter.getCountStream(id) ++ ++ val state = combine(repoStream, countStream) { repo, count -> ++ RepositoryPageItem(repo, count) ++ }.asStateFlow(RepositoryPageItem()) ++ ++ private val syncConnection = Connection(SyncService::class.java) ++ ++ fun bindService(context: Context) { ++ syncConnection.bind(context) ++ } ++ ++ fun unbindService(context: Context) { ++ syncConnection.unbind(context) ++ } ++ ++ fun enabledRepository(enable: Boolean) { ++ viewModelScope.launch { ++ val repo = repoStream.first { it != null }!! ++ syncConnection.binder?.setEnabled(repo, enable) ++ } ++ } ++ ++ fun deleteRepository(onDelete: () -> Unit) { ++ if (syncConnection.binder?.deleteRepository(id) == true) { ++ onDelete() ++ } ++ } ++ ++ companion object { ++ const val ARG_REPO_ID = "repo_id" ++ } ++} ++ ++data class RepositoryPageItem( ++ val repo: Repository? = null, ++ val appCount: Int = 0 ++) +Index: app/src/main/kotlin/com/leos/droidify/ui/settings/SettingsFragment.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/ui/settings/SettingsFragment.kt b/app/src/main/kotlin/com/leos/droidify/ui/settings/SettingsFragment.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/ui/settings/SettingsFragment.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,493 @@ ++package com.leos.droidify.ui.settings ++ ++import android.content.Context ++import android.content.Intent ++import android.net.Uri ++import android.os.Bundle ++import android.view.* ++import androidx.activity.result.contract.ActivityResultContracts.CreateDocument ++import androidx.activity.result.contract.ActivityResultContracts.OpenDocument ++import androidx.annotation.DrawableRes ++import androidx.annotation.StringRes ++import androidx.appcompat.app.AlertDialog ++import androidx.core.view.isVisible ++import androidx.core.widget.NestedScrollView ++import androidx.fragment.app.Fragment ++import androidx.fragment.app.viewModels ++import androidx.lifecycle.* ++import com.google.android.material.dialog.MaterialAlertDialogBuilder ++import com.google.android.material.snackbar.Snackbar ++import com.google.android.material.textfield.TextInputEditText ++import com.leos.core.common.BuildConfig as CommonBuildConfig ++import com.leos.core.common.R as CommonR ++import com.leos.core.common.SdkCheck ++import com.leos.core.common.extension.homeAsUp ++import com.leos.core.common.extension.systemBarsPadding ++import com.leos.core.common.extension.updateAsMutable ++import com.leos.core.datastore.Settings ++import com.leos.core.datastore.extension.* ++import com.leos.core.datastore.model.* ++import com.leos.droidify.BuildConfig ++import com.leos.droidify.databinding.EnumTypeBinding ++import com.leos.droidify.databinding.SettingsPageBinding ++import com.leos.droidify.databinding.SwitchTypeBinding ++import dagger.hilt.android.AndroidEntryPoint ++import java.util.Locale ++import kotlin.time.Duration ++import kotlin.time.Duration.Companion.days ++import kotlin.time.Duration.Companion.hours ++import kotlinx.coroutines.flow.Flow ++import kotlinx.coroutines.launch ++ ++@AndroidEntryPoint ++class SettingsFragment : Fragment() { ++ ++ companion object { ++ fun newInstance() = SettingsFragment() ++ ++ private const val BACKUP_MIME_TYPE = "application/json" ++ private const val REPO_BACKUP_NAME = "droidify_repos.json" ++ private const val SETTINGS_BACKUP_NAME = "droidify_settings.json" ++ ++ private val localeCodesList: List = CommonBuildConfig.DETECTED_LOCALES ++ .toList() ++ .updateAsMutable { add(0, "system") } ++ ++ private const val FOXY_DROID_TITLE = "FoxyDroid" ++ private const val FOXY_DROID_URL = "https://github.com/kitsunyan/foxy-droid" ++ ++ private const val DROID_IFY_TITLE = "LeOS-Droid" ++ private const val DROID_IFY_URL = "https://github.com/LeOS-GSI/LeOS-Droid-ify" ++ } ++ ++ private val viewModel: SettingsViewModel by viewModels() ++ private var _binding: SettingsPageBinding? = null ++ private val binding get() = _binding!! ++ ++ private val createExportFileForSettings = ++ registerForActivityResult(CreateDocument(BACKUP_MIME_TYPE)) { fileUri -> ++ if (fileUri != null) { ++ viewModel.exportSettings(fileUri) ++ } ++ } ++ ++ private val openImportFileForSettings = ++ registerForActivityResult(OpenDocument()) { fileUri -> ++ if (fileUri != null) { ++ viewModel.importSettings(fileUri) ++ } else { ++ viewModel.createSnackbar(CommonR.string.file_format_error_DESC) ++ } ++ } ++ ++ private val createExportFileForRepos = ++ registerForActivityResult(CreateDocument(BACKUP_MIME_TYPE)) { fileUri -> ++ if (fileUri != null) { ++ viewModel.exportRepos(fileUri) ++ } ++ } ++ ++ private val openImportFileForRepos = ++ registerForActivityResult(OpenDocument()) { fileUri -> ++ if (fileUri != null) { ++ viewModel.importRepos(fileUri) ++ } else { ++ viewModel.createSnackbar(CommonR.string.file_format_error_DESC) ++ } ++ } ++ ++ override fun onCreateView( ++ inflater: LayoutInflater, ++ container: ViewGroup?, ++ savedInstanceState: Bundle? ++ ): View { ++ _binding = SettingsPageBinding.inflate(inflater, container, false) ++ binding.nestedScrollView.systemBarsPadding() ++ val toolbar = binding.toolbar ++ toolbar.navigationIcon = toolbar.context.homeAsUp ++ toolbar.setNavigationOnClickListener { activity?.onBackPressed() } ++ toolbar.title = getString(CommonR.string.settings) ++ with(binding) { ++ dynamicTheme.root.isVisible = SdkCheck.isSnowCake ++ dynamicTheme.connect( ++ titleText = getString(CommonR.string.material_you), ++ contentText = getString(CommonR.string.material_you_desc), ++ setting = viewModel.getInitialSetting { dynamicTheme } ++ ) ++ homeScreenSwiping.connect( ++ titleText = getString(CommonR.string.home_screen_swiping), ++ contentText = getString(CommonR.string.home_screen_swiping_DESC), ++ setting = viewModel.getInitialSetting { homeScreenSwiping } ++ ) ++ autoUpdate.connect( ++ titleText = getString(CommonR.string.auto_update), ++ contentText = getString(CommonR.string.auto_update_apps), ++ setting = viewModel.getInitialSetting { autoUpdate } ++ ) ++ notifyUpdates.connect( ++ titleText = getString(CommonR.string.notify_about_updates), ++ contentText = getString(CommonR.string.notify_about_updates_summary), ++ setting = viewModel.getInitialSetting { notifyUpdate } ++ ) ++ unstableUpdates.connect( ++ titleText = getString(CommonR.string.unstable_updates), ++ contentText = getString(CommonR.string.unstable_updates_summary), ++ setting = viewModel.getInitialSetting { unstableUpdate } ++ ) ++ incompatibleUpdates.connect( ++ titleText = getString(CommonR.string.incompatible_versions), ++ contentText = getString(CommonR.string.incompatible_versions_summary), ++ setting = viewModel.getInitialSetting { incompatibleVersions } ++ ) ++ language.connect( ++ titleText = getString(CommonR.string.prefs_language_title), ++ map = { translateLocale(getLocaleOfCode(it)) }, ++ setting = viewModel.getSetting { language } ++ ) { selectedLocale, valueToString -> ++ addSingleCorrectDialog( ++ initialValue = selectedLocale, ++ values = localeCodesList, ++ title = CommonR.string.prefs_language_title, ++ iconRes = CommonR.drawable.ic_language, ++ valueToString = valueToString, ++ onClick = viewModel::setLanguage ++ ) ++ } ++ theme.connect( ++ titleText = getString(CommonR.string.theme), ++ setting = viewModel.getSetting { theme }, ++ map = { themeName(it) } ++ ) { theme, valueToString -> ++ addSingleCorrectDialog( ++ initialValue = theme, ++ values = Theme.entries, ++ title = CommonR.string.themes, ++ iconRes = CommonR.drawable.ic_themes, ++ valueToString = valueToString, ++ onClick = viewModel::setTheme ++ ) ++ } ++ cleanUp.connect( ++ titleText = getString(CommonR.string.cleanup_title), ++ setting = viewModel.getSetting { cleanUpInterval }, ++ map = { toTime(it) } ++ ) { duration, valueToString -> ++ addSingleCorrectDialog( ++ initialValue = duration, ++ values = cleanUpIntervals, ++ title = CommonR.string.cleanup_title, ++ iconRes = CommonR.drawable.ic_time, ++ valueToString = valueToString, ++ onClick = viewModel::setCleanUpInterval ++ ) ++ } ++ autoSync.connect( ++ titleText = getString(CommonR.string.sync_repositories_automatically), ++ setting = viewModel.getSetting { autoSync }, ++ map = { autoSyncName(it) } ++ ) { autoSync, valueToString -> ++ addSingleCorrectDialog( ++ initialValue = autoSync, ++ values = AutoSync.entries, ++ title = CommonR.string.sync_repositories_automatically, ++ iconRes = CommonR.drawable.ic_sync_type, ++ valueToString = valueToString, ++ onClick = viewModel::setAutoSync ++ ) ++ } ++ installer.connect( ++ titleText = getString(CommonR.string.installer), ++ setting = viewModel.getSetting { installerType }, ++ map = { installerName(it) } ++ ) { installerType, valueToString -> ++ addSingleCorrectDialog( ++ initialValue = installerType, ++ values = InstallerType.entries, ++ title = CommonR.string.installer, ++ iconRes = CommonR.drawable.ic_apk_install, ++ valueToString = valueToString, ++ onClick = viewModel::setInstaller ++ ) ++ } ++ proxyType.connect( ++ titleText = getString(CommonR.string.proxy_type), ++ setting = viewModel.getSetting { proxy.type }, ++ map = { proxyName(it) } ++ ) { proxyType, valueToString -> ++ addSingleCorrectDialog( ++ initialValue = proxyType, ++ values = ProxyType.entries, ++ title = CommonR.string.proxy_type, ++ iconRes = CommonR.drawable.ic_proxy, ++ valueToString = valueToString, ++ onClick = viewModel::setProxyType ++ ) ++ } ++ proxyHost.connect( ++ titleText = getString(CommonR.string.proxy_host), ++ setting = viewModel.getSetting { proxy.host }, ++ map = { it } ++ ) { host, _ -> ++ addEditTextDialog( ++ initialValue = host, ++ title = CommonR.string.proxy_host, ++ onFinish = viewModel::setProxyHost ++ ) ++ } ++ proxyPort.connect( ++ titleText = getString(CommonR.string.proxy_port), ++ setting = viewModel.getSetting { proxy.port }, ++ map = { it.toString() } ++ ) { port, _ -> ++ addEditTextDialog( ++ initialValue = port.toString(), ++ title = CommonR.string.proxy_port, ++ onFinish = viewModel::setProxyPort ++ ) ++ } ++ ++ forceCleanUp.title.text = getString(CommonR.string.force_clean_up) ++ forceCleanUp.content.text = getString(CommonR.string.force_clean_up_DESC) ++ ++ importSettings.title.text = getString(CommonR.string.import_settings_title) ++ importSettings.content.text = getString(CommonR.string.import_settings_DESC) ++ exportSettings.title.text = getString(CommonR.string.export_settings_title) ++ exportSettings.content.text = getString(CommonR.string.export_settings_DESC) ++ ++ importRepos.title.text = getString(CommonR.string.import_repos_title) ++ importRepos.content.text = getString(CommonR.string.import_repos_DESC) ++ exportRepos.title.text = getString(CommonR.string.export_repos_title) ++ exportRepos.content.text = getString(CommonR.string.export_repos_DESC) ++ ++ creditFoxy.title.text = getString(CommonR.string.special_credits) ++ creditFoxy.content.text = FOXY_DROID_TITLE ++ droidify.title.text = DROID_IFY_TITLE ++ droidify.content.text = BuildConfig.VERSION_NAME ++ } ++ setChangeListener() ++ viewLifecycleOwner.lifecycleScope.launch { ++ repeatOnLifecycle(Lifecycle.State.RESUMED) { ++ launch { ++ viewModel.snackbarStringId.collect { ++ Snackbar.make(binding.root, it, Snackbar.LENGTH_LONG).show() ++ } ++ } ++ launch { ++ viewModel.settingsFlow.collect(::updateSettings) ++ } ++ } ++ } ++ return binding.root ++ } ++ ++ override fun onDestroyView() { ++ super.onDestroyView() ++ _binding = null ++ } ++ ++ private fun setChangeListener() { ++ with(binding) { ++ dynamicTheme.checked.setOnCheckedChangeListener { _, checked -> ++ viewModel.setDynamicTheme(checked) ++ } ++ homeScreenSwiping.checked.setOnCheckedChangeListener { _, checked -> ++ viewModel.setHomeScreenSwiping(checked) ++ } ++ notifyUpdates.checked.setOnCheckedChangeListener { _, checked -> ++ viewModel.setNotifyUpdates(checked) ++ } ++ autoUpdate.checked.setOnCheckedChangeListener { _, checked -> ++ viewModel.setAutoUpdate(checked) ++ } ++ unstableUpdates.checked.setOnCheckedChangeListener { _, checked -> ++ viewModel.setUnstableUpdates(checked) ++ } ++ incompatibleUpdates.checked.setOnCheckedChangeListener { _, checked -> ++ viewModel.setIncompatibleUpdates(checked) ++ } ++ forceCleanUp.root.setOnClickListener { ++ viewModel.forceCleanup(it.context) ++ } ++ importSettings.root.setOnClickListener { ++ openImportFileForSettings.launch(arrayOf(BACKUP_MIME_TYPE)) ++ } ++ exportSettings.root.setOnClickListener { ++ createExportFileForSettings.launch(SETTINGS_BACKUP_NAME) ++ } ++ importRepos.root.setOnClickListener { ++ openImportFileForRepos.launch(arrayOf(BACKUP_MIME_TYPE)) ++ } ++ exportRepos.root.setOnClickListener { ++ createExportFileForRepos.launch(REPO_BACKUP_NAME) ++ } ++ creditFoxy.root.setOnClickListener { ++ openLink(FOXY_DROID_URL) ++ } ++ droidify.root.setOnClickListener { ++ openLink(DROID_IFY_URL) ++ } ++ } ++ } ++ ++ private fun updateSettings(settings: Settings) { ++ with(binding) { ++ val allowProxies = settings.proxy.type != ProxyType.DIRECT ++ proxyHost.root.isVisible = allowProxies ++ proxyPort.root.isVisible = allowProxies ++ forceCleanUp.root.isVisible = settings.cleanUpInterval == Duration.INFINITE ++ } ++ } ++ ++ private val cleanUpIntervals = ++ listOf(6.hours, 12.hours, 18.hours, 1.days, 2.days, Duration.INFINITE) ++ ++ private fun translateLocale(locale: Locale?): String { ++ val country = locale?.getDisplayCountry(locale) ++ val language = locale?.getDisplayLanguage(locale) ++ val languageDisplay = if (locale != null) { ++ ( ++ language?.replaceFirstChar { it.uppercase(Locale.getDefault()) } + ++ ( ++ if (country?.isNotEmpty() == true && country.compareTo( ++ language.toString(), ++ true ++ ) != 0 ++ ) { ++ "($country)" ++ } else { ++ "" ++ } ++ ) ++ ) ++ } else { ++ getString(CommonR.string.system) ++ } ++ return languageDisplay ++ } ++ ++ private fun openLink(link: String) { ++ try { ++ startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(link))) ++ } catch (e: IllegalStateException) { ++ viewModel.createSnackbar(CommonR.string.cannot_open_link) ++ } ++ } ++ ++ @Suppress("DEPRECATION") ++ private fun Context.getLocaleOfCode(localeCode: String): Locale? = when { ++ localeCode.isEmpty() -> if (SdkCheck.isNougat) { ++ resources.configuration.locales[0] ++ } else { ++ resources.configuration.locale ++ } ++ ++ localeCode.contains("-r") -> Locale( ++ localeCode.substring(0, 2), ++ localeCode.substring(4) ++ ) ++ ++ localeCode.contains("_") -> Locale( ++ localeCode.substring(0, 2), ++ localeCode.substring(3) ++ ) ++ ++ localeCode == "system" -> null ++ else -> Locale(localeCode) ++ } ++ ++ private fun EnumTypeBinding.connect( ++ titleText: String, ++ setting: Flow, ++ map: Context.(T) -> String, ++ dialog: View.(T, valueToString: Context.(T) -> String) -> AlertDialog ++ ) { ++ title.text = titleText ++ viewLifecycleOwner.lifecycleScope.launch { ++ repeatOnLifecycle(Lifecycle.State.RESUMED) { ++ setting.collect { ++ with(root.context) { ++ content.text = map(it) ++ } ++ root.setOnClickListener { _ -> ++ root.dialog(it, map).show() ++ } ++ } ++ } ++ } ++ } ++ ++ private fun SwitchTypeBinding.connect( ++ titleText: String, ++ contentText: String, ++ setting: Flow ++ ) { ++ title.text = titleText ++ content.text = contentText ++ root.setOnClickListener { ++ checked.isChecked = !checked.isChecked ++ } ++ viewLifecycleOwner.lifecycleScope.launch { ++ repeatOnLifecycle(Lifecycle.State.RESUMED) { ++ setting.collect { ++ checked.isChecked = it ++ } ++ } ++ } ++ } ++ ++ private fun View.addSingleCorrectDialog( ++ initialValue: T, ++ values: List, ++ @StringRes title: Int, ++ @DrawableRes iconRes: Int, ++ onClick: (T) -> Unit, ++ valueToString: Context.(T) -> String ++ ) = MaterialAlertDialogBuilder(context) ++ .setTitle(title) ++ .setIcon(iconRes) ++ .setSingleChoiceItems( ++ values.map { context.valueToString(it) }.toTypedArray(), ++ values.indexOf(initialValue) ++ ) { dialog, newValue -> ++ dialog.dismiss() ++ post { ++ onClick(values.elementAt(newValue)) ++ } ++ } ++ .setNegativeButton(CommonR.string.cancel, null) ++ .create() ++ ++ private fun View.addEditTextDialog( ++ initialValue: String, ++ @StringRes title: Int, ++ onFinish: (String) -> Unit ++ ): AlertDialog { ++ val scroll = NestedScrollView(context) ++ val customEditText = TextInputEditText(context) ++ customEditText.id = android.R.id.edit ++ val paddingValue = context.resources.getDimension(CommonR.dimen.shape_margin_large).toInt() ++ scroll.setPadding(paddingValue, 0, paddingValue, 0) ++ customEditText.setText(initialValue) ++ customEditText.hint = customEditText.text.toString() ++ customEditText.text?.let { editable -> customEditText.setSelection(editable.length) } ++ customEditText.requestFocus() ++ scroll.addView( ++ customEditText, ++ ViewGroup.LayoutParams.MATCH_PARENT, ++ ViewGroup.LayoutParams.WRAP_CONTENT ++ ) ++ return MaterialAlertDialogBuilder(context) ++ .setTitle(title) ++ .setView(scroll) ++ .setPositiveButton(CommonR.string.ok) { _, _ -> ++ post { onFinish(customEditText.text.toString()) } ++ } ++ .setNegativeButton(CommonR.string.cancel, null) ++ .create() ++ .apply { ++ window!!.setSoftInputMode( ++ WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE ++ ) ++ } ++ } ++} +Index: app/src/main/kotlin/com/leos/droidify/ui/settings/SettingsViewModel.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/ui/settings/SettingsViewModel.kt b/app/src/main/kotlin/com/leos/droidify/ui/settings/SettingsViewModel.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/ui/settings/SettingsViewModel.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,197 @@ ++package com.leos.droidify.ui.settings ++ ++import android.content.Context ++import android.net.Uri ++import androidx.annotation.StringRes ++import androidx.appcompat.app.AppCompatDelegate ++import androidx.core.os.LocaleListCompat ++import androidx.lifecycle.ViewModel ++import androidx.lifecycle.viewModelScope ++import com.leos.core.common.extension.toLocale ++import com.leos.core.datastore.Settings ++import com.leos.core.datastore.SettingsRepository ++import com.leos.core.datastore.get ++import com.leos.core.datastore.model.AutoSync ++import com.leos.core.datastore.model.InstallerType ++import com.leos.core.datastore.model.ProxyType ++import com.leos.core.datastore.model.Theme ++import com.leos.droidify.database.Database ++import com.leos.droidify.database.RepositoryExporter ++import com.leos.droidify.work.CleanUpWorker ++import com.leos.installer.installers.shizuku.ShizukuPermissionHandler ++import dagger.hilt.android.lifecycle.HiltViewModel ++import kotlinx.coroutines.cancel ++import kotlinx.coroutines.flow.Flow ++import kotlinx.coroutines.flow.MutableSharedFlow ++import kotlinx.coroutines.flow.asSharedFlow ++import kotlinx.coroutines.flow.first ++import kotlinx.coroutines.flow.flow ++import kotlinx.coroutines.flow.map ++import kotlinx.coroutines.launch ++import javax.inject.Inject ++import kotlin.time.Duration ++import com.leos.core.common.R as CommonR ++ ++@HiltViewModel ++class SettingsViewModel ++@Inject constructor( ++ private val settingsRepository: SettingsRepository, ++ private val shizukuPermissionHandler: ShizukuPermissionHandler, ++ private val repositoryExporter: RepositoryExporter ++) : ViewModel() { ++ ++ private val initialSetting = flow { ++ emit(settingsRepository.getInitial()) ++ } ++ val settingsFlow get() = settingsRepository.data ++ ++ private val _snackbarStringId = MutableSharedFlow() ++ val snackbarStringId = _snackbarStringId.asSharedFlow() ++ ++ fun getSetting(block: Settings.() -> T): Flow = settingsRepository.get(block) ++ ++ fun getInitialSetting(block: Settings.() -> T): Flow = initialSetting.map { it.block() } ++ ++ fun setLanguage(language: String) { ++ viewModelScope.launch { ++ val appLocale = LocaleListCompat.create(language.toLocale()) ++ AppCompatDelegate.setApplicationLocales(appLocale) ++ settingsRepository.setLanguage(language) ++ } ++ } ++ ++ fun setTheme(theme: Theme) { ++ viewModelScope.launch { ++ settingsRepository.setTheme(theme) ++ } ++ } ++ ++ fun setDynamicTheme(enable: Boolean) { ++ viewModelScope.launch { ++ settingsRepository.setDynamicTheme(enable) ++ } ++ } ++ ++ fun setHomeScreenSwiping(enable: Boolean) { ++ viewModelScope.launch { ++ settingsRepository.setHomeScreenSwiping(enable) ++ } ++ } ++ ++ fun setCleanUpInterval(interval: Duration) { ++ viewModelScope.launch { ++ settingsRepository.setCleanUpInterval(interval) ++ } ++ } ++ ++ fun forceCleanup(context: Context) { ++ viewModelScope.launch { ++ CleanUpWorker.force(context) ++ } ++ } ++ ++ fun setAutoSync(autoSync: AutoSync) { ++ viewModelScope.launch { ++ settingsRepository.setAutoSync(autoSync) ++ } ++ } ++ ++ fun setNotifyUpdates(enable: Boolean) { ++ viewModelScope.launch { ++ settingsRepository.enableNotifyUpdates(enable) ++ } ++ } ++ ++ fun setAutoUpdate(enable: Boolean) { ++ viewModelScope.launch { ++ settingsRepository.setAutoUpdate(enable) ++ } ++ } ++ ++ fun setUnstableUpdates(enable: Boolean) { ++ viewModelScope.launch { ++ settingsRepository.enableUnstableUpdates(enable) ++ } ++ } ++ ++ fun setIncompatibleUpdates(enable: Boolean) { ++ viewModelScope.launch { ++ settingsRepository.enableIncompatibleVersion(enable) ++ } ++ } ++ ++ fun setProxyType(proxyType: ProxyType) { ++ viewModelScope.launch { ++ settingsRepository.setProxyType(proxyType) ++ } ++ } ++ ++ fun setProxyHost(proxyHost: String) { ++ viewModelScope.launch { ++ settingsRepository.setProxyHost(proxyHost) ++ } ++ } ++ ++ fun setProxyPort(proxyPort: String) { ++ viewModelScope.launch { ++ try { ++ settingsRepository.setProxyPort(proxyPort.toInt()) ++ } catch (e: NumberFormatException) { ++ createSnackbar(CommonR.string.proxy_port_error_not_int) ++ } ++ } ++ } ++ ++ fun setInstaller(installerType: InstallerType) { ++ viewModelScope.launch { ++ settingsRepository.setInstallerType(installerType) ++ if (installerType == InstallerType.SHIZUKU) handleShizuku() ++ } ++ } ++ ++ fun exportSettings(file: Uri) { ++ viewModelScope.launch { ++ settingsRepository.export(file) ++ } ++ } ++ ++ fun importSettings(file: Uri) { ++ viewModelScope.launch { ++ settingsRepository.import(file) ++ } ++ } ++ ++ fun exportRepos(file: Uri) { ++ viewModelScope.launch { ++ val repos = Database.RepositoryAdapter.getAll() ++ repositoryExporter.export(repos, file) ++ } ++ } ++ ++ fun importRepos(file: Uri) { ++ viewModelScope.launch { ++ val repos = repositoryExporter.import(file) ++ Database.RepositoryAdapter.importRepos(repos) ++ } ++ } ++ ++ fun createSnackbar(@StringRes message: Int) { ++ viewModelScope.launch { ++ _snackbarStringId.emit(message) ++ } ++ } ++ ++ private fun handleShizuku() { ++ viewModelScope.launch { ++ val state = shizukuPermissionHandler.state.first() ++ if (state.isAlive && state.isPermissionGranted) cancel() ++ if (state.isInstalled) { ++ if (!state.isAlive) { ++ createSnackbar(CommonR.string.shizuku_not_alive) ++ } ++ } else { ++ createSnackbar(CommonR.string.shizuku_not_installed) ++ } ++ } ++ } ++} +Index: app/src/main/kotlin/com/leos/droidify/ui/tabsFragment/TabsFragment.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/ui/tabsFragment/TabsFragment.kt b/app/src/main/kotlin/com/leos/droidify/ui/tabsFragment/TabsFragment.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/ui/tabsFragment/TabsFragment.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,635 @@ ++package com.leos.droidify.ui.tabsFragment ++ ++import android.animation.ValueAnimator ++import android.content.Context ++import android.content.res.ColorStateList ++import android.os.Build ++import android.os.Bundle ++import android.view.Gravity ++import android.view.MenuItem ++import android.view.View ++import android.view.ViewGroup ++import android.view.animation.DecelerateInterpolator ++import android.widget.FrameLayout ++import android.widget.TextView ++import androidx.appcompat.widget.SearchView ++import androidx.core.view.isVisible ++import androidx.fragment.app.Fragment ++import androidx.fragment.app.viewModels ++import androidx.lifecycle.Lifecycle ++import androidx.lifecycle.lifecycleScope ++import androidx.lifecycle.repeatOnLifecycle ++import androidx.recyclerview.widget.LinearLayoutManager ++import androidx.recyclerview.widget.RecyclerView ++import androidx.viewpager2.adapter.FragmentStateAdapter ++import androidx.viewpager2.widget.ViewPager2 ++import com.google.android.material.elevation.SurfaceColors ++import com.google.android.material.shape.MaterialShapeDrawable ++import com.google.android.material.shape.ShapeAppearanceModel ++import com.google.android.material.tabs.TabLayoutMediator ++import com.leos.core.common.R as CommonR ++import com.leos.core.common.R.string as stringRes ++import com.leos.core.common.device.Huawei ++import com.leos.core.common.extension.dp ++import com.leos.core.common.extension.getMutatedIcon ++import com.leos.core.common.extension.selectableBackground ++import com.leos.core.common.extension.systemBarsPadding ++import com.leos.core.common.sdkAbove ++import com.leos.core.datastore.extension.sortOrderName ++import com.leos.core.datastore.model.SortOrder ++import com.leos.core.domain.ProductItem ++import com.leos.droidify.R ++import com.leos.droidify.databinding.TabsToolbarBinding ++import com.leos.droidify.service.Connection ++import com.leos.droidify.service.SyncService ++import com.leos.droidify.ui.ScreenFragment ++import com.leos.droidify.ui.appList.AppListFragment ++import com.leos.droidify.utility.extension.resources.sizeScaled ++import com.leos.droidify.utility.extension.screenActivity ++import com.leos.droidify.widget.DividerConfiguration ++import com.leos.droidify.widget.FocusSearchView ++import com.leos.droidify.widget.StableRecyclerAdapter ++import com.leos.droidify.widget.addDivider ++import dagger.hilt.android.AndroidEntryPoint ++import kotlin.math.abs ++import kotlin.math.roundToInt ++import kotlinx.coroutines.launch ++ ++@AndroidEntryPoint ++class TabsFragment : ScreenFragment() { ++ ++ private var _tabsBinding: TabsToolbarBinding? = null ++ private val tabsBinding get() = _tabsBinding!! ++ ++ private val viewModel: TabsViewModel by viewModels() ++ ++ companion object { ++ private const val STATE_SEARCH_FOCUSED = "searchFocused" ++ private const val STATE_SEARCH_QUERY = "searchQuery" ++ private const val STATE_SHOW_SECTIONS = "showSections" ++ } ++ ++ private class Layout(view: TabsToolbarBinding) { ++ val tabs = view.tabs ++ val sectionLayout = view.sectionLayout ++ val sectionChange = view.sectionChange ++ val sectionName = view.sectionName ++ val sectionIcon = view.sectionIcon ++ } ++ ++ private var favouritesItem: MenuItem? = null ++ private var searchMenuItem: MenuItem? = null ++ private var sortOrderMenu: Pair>? = null ++ private var syncRepositoriesMenuItem: MenuItem? = null ++ private var layout: Layout? = null ++ private var sectionsList: RecyclerView? = null ++ private var sectionsAdapter: SectionsAdapter? = null ++ private var viewPager: ViewPager2? = null ++ ++ private var showSections = false ++ set(value) { ++ if (field != value) { ++ field = value ++ val layout = layout ++ layout?.tabs?.let { ++ (0 until it.childCount) ++ .forEach { index -> it.getChildAt(index)!!.isEnabled = !value } ++ } ++ layout?.sectionIcon?.scaleY = if (value) -1f else 1f ++ if (((sectionsList?.parent as? View)?.height ?: 0) > 0) { ++ animateSectionsList() ++ } ++ } ++ } ++ ++ private var searchQuery = "" ++ ++ private val syncConnection = Connection( ++ serviceClass = SyncService::class.java, ++ onBind = { _, _ -> ++ viewPager?.let { ++ val source = AppListFragment.Source.entries[it.currentItem] ++ updateUpdateNotificationBlocker(source) ++ } ++ } ++ ) ++ ++ private var sectionsAnimator: ValueAnimator? = null ++ ++ private var needSelectUpdates = false ++ ++ private val productFragments: Sequence ++ get() = if (host == null) { ++ emptySequence() ++ } else { ++ childFragmentManager.fragments.asSequence().mapNotNull { it as? AppListFragment } ++ } ++ ++ override fun onCreate(savedInstanceState: Bundle?) { ++ super.onCreate(savedInstanceState) ++ _tabsBinding = TabsToolbarBinding.inflate(layoutInflater) ++ } ++ ++ override fun onViewCreated(view: View, savedInstanceState: Bundle?) { ++ super.onViewCreated(view, savedInstanceState) ++ syncConnection.bind(requireContext()) ++ ++ sectionsAdapter = SectionsAdapter { ++ if (showSections) { ++ viewModel.setSection(it) ++ sectionsList?.scrollToPosition(0) ++ showSections = false ++ } ++ } ++ ++ screenActivity.onToolbarCreated(toolbar) ++ toolbar.title = getString(R.string.application_name) ++ // Move focus from SearchView to Toolbar ++ toolbar.isFocusable = true ++ ++ val searchView = FocusSearchView(toolbar.context).apply { ++ maxWidth = Int.MAX_VALUE ++ queryHint = getString(stringRes.search) ++ setOnQueryTextListener(object : SearchView.OnQueryTextListener { ++ override fun onQueryTextSubmit(query: String?): Boolean { ++ clearFocus() ++ return true ++ } ++ ++ override fun onQueryTextChange(newText: String?): Boolean { ++ if (isResumed) { ++ searchQuery = newText.orEmpty() ++ productFragments.forEach { it.setSearchQuery(newText.orEmpty()) } ++ } ++ return true ++ } ++ }) ++ } ++ ++ toolbar.menu.apply { ++ if (!Huawei.isHuaweiEmui) { ++ sdkAbove(Build.VERSION_CODES.P) { ++ setGroupDividerEnabled(true) ++ } ++ } ++ ++ searchMenuItem = add(0, R.id.toolbar_search, 0, stringRes.search) ++ .setIcon(toolbar.context.getMutatedIcon(CommonR.drawable.ic_search)) ++ .setActionView(searchView) ++ .setShowAsActionFlags( ++ MenuItem.SHOW_AS_ACTION_ALWAYS or MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW ++ ) ++ ++ syncRepositoriesMenuItem = add(0, 0, 0, stringRes.sync_repositories) ++ .setIcon(toolbar.context.getMutatedIcon(CommonR.drawable.ic_sync)) ++ .setOnMenuItemClickListener { ++ syncConnection.binder?.sync(SyncService.SyncRequest.MANUAL) ++ true ++ } ++ ++ sortOrderMenu = addSubMenu(0, 0, 0, stringRes.sorting_order) ++ .setIcon(toolbar.context.getMutatedIcon(CommonR.drawable.ic_sort)) ++ .let { menu -> ++ menu.item.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_ALWAYS) ++ val menuItems = SortOrder.entries.map { sortOrder -> ++ menu.add(context.sortOrderName(sortOrder)) ++ .setOnMenuItemClickListener { ++ viewModel.setSortOrder(sortOrder) ++ true ++ } ++ } ++ menu.setGroupCheckable(0, true, true) ++ Pair(menu.item, menuItems) ++ } ++ ++ favouritesItem = add(1, 0, 0, stringRes.favourites) ++ .setIcon( ++ toolbar.context.getMutatedIcon(CommonR.drawable.ic_favourite_checked) ++ ) ++ .setOnMenuItemClickListener { ++ view.post { screenActivity.navigateFavourites() } ++ true ++ } ++ ++ add(1, 0, 0, stringRes.repositories) ++ .setOnMenuItemClickListener { ++ view.post { screenActivity.navigateRepositories() } ++ true ++ } ++ ++ add(1, 0, 0, stringRes.settings) ++ .setOnMenuItemClickListener { ++ view.post { screenActivity.navigatePreferences() } ++ true ++ } ++ } ++ ++ searchQuery = savedInstanceState?.getString(STATE_SEARCH_QUERY).orEmpty() ++ productFragments.forEach { it.setSearchQuery(searchQuery) } ++ ++ val toolbarExtra = fragmentBinding.toolbarExtra ++ toolbarExtra.addView(tabsBinding.root) ++ val layout = Layout(tabsBinding) ++ this.layout = layout ++ ++ showSections = (savedInstanceState?.getByte(STATE_SHOW_SECTIONS)?.toInt() ?: 0) != 0 ++ ++ val content = fragmentBinding.fragmentContent ++ ++ viewPager = ViewPager2(content.context).apply { ++ id = R.id.fragment_pager ++ adapter = object : FragmentStateAdapter(this@TabsFragment) { ++ override fun getItemCount(): Int = AppListFragment.Source.entries.size ++ override fun createFragment(position: Int): Fragment = AppListFragment( ++ AppListFragment.Source.entries[position] ++ ) ++ } ++ content.addView(this) ++ registerOnPageChangeCallback(pageChangeCallback) ++ offscreenPageLimit = 1 ++ } ++ ++ viewPager?.let { ++ TabLayoutMediator(layout.tabs, it) { tab, position -> ++ tab.text = getString(AppListFragment.Source.entries[position].titleResId) ++ }.attach() ++ } ++ ++ viewLifecycleOwner.lifecycleScope.launch { ++ repeatOnLifecycle(Lifecycle.State.CREATED) { ++ launch { ++ viewModel.sections.collect(::updateSections) ++ } ++ launch { ++ viewModel.sortOrder.collect(::updateOrder) ++ } ++ launch { ++ viewModel.currentSection.collect(::updateSection) ++ } ++ launch { ++ viewModel.allowHomeScreenSwiping.collect { ++ viewPager?.isUserInputEnabled = it ++ } ++ } ++ } ++ } ++ ++ val backgroundPath = ShapeAppearanceModel.builder() ++ .setAllCornerSizes( ++ context?.resources?.getDimension(CommonR.dimen.shape_large_corner) ?: 0F ++ ) ++ .build() ++ val sectionBackground = MaterialShapeDrawable(backgroundPath) ++ val color = SurfaceColors.SURFACE_3.getColor(requireContext()) ++ sectionBackground.fillColor = ColorStateList.valueOf(color) ++ val sectionsList = RecyclerView(toolbar.context).apply { ++ id = R.id.sections_list ++ layoutManager = LinearLayoutManager(context) ++ isMotionEventSplittingEnabled = false ++ isVerticalScrollBarEnabled = false ++ setHasFixedSize(true) ++ adapter = sectionsAdapter ++ sectionsAdapter?.let { addDivider(it::configureDivider) } ++ background = sectionBackground ++ elevation = 4.dp.toFloat() ++ content.addView(this) ++ val margins = 8.dp ++ (layoutParams as ViewGroup.MarginLayoutParams).setMargins(margins, margins, margins, 0) ++ visibility = View.GONE ++ systemBarsPadding(includeFab = false) ++ } ++ this.sectionsList = sectionsList ++ ++ var lastContentHeight = -1 ++ content.viewTreeObserver.addOnGlobalLayoutListener { ++ if (this.view != null) { ++ val initial = lastContentHeight <= 0 ++ val contentHeight = content.height ++ if (lastContentHeight != contentHeight) { ++ lastContentHeight = contentHeight ++ if (initial) { ++ sectionsList.layoutParams.height = if (showSections) contentHeight else 0 ++ sectionsList.isVisible = showSections ++ sectionsList.requestLayout() ++ } else { ++ animateSectionsList() ++ } ++ } ++ } ++ } ++ } ++ ++ override fun onDestroyView() { ++ super.onDestroyView() ++ ++ favouritesItem = null ++ searchMenuItem = null ++ sortOrderMenu = null ++ syncRepositoriesMenuItem = null ++ layout = null ++ sectionsList = null ++ sectionsAdapter = null ++ viewPager = null ++ ++ syncConnection.unbind(requireContext()) ++ sectionsAnimator?.cancel() ++ sectionsAnimator = null ++ ++ _tabsBinding = null ++ } ++ ++ override fun onSaveInstanceState(outState: Bundle) { ++ super.onSaveInstanceState(outState) ++ ++ outState.putBoolean(STATE_SEARCH_FOCUSED, searchMenuItem?.actionView?.hasFocus() == true) ++ outState.putString(STATE_SEARCH_QUERY, searchQuery) ++ outState.putByte(STATE_SHOW_SECTIONS, if (showSections) 1 else 0) ++ } ++ ++ override fun onViewStateRestored(savedInstanceState: Bundle?) { ++ super.onViewStateRestored(savedInstanceState) ++ ++ (searchMenuItem?.actionView as FocusSearchView).allowFocus = true ++ if (needSelectUpdates) { ++ needSelectUpdates = false ++ selectUpdatesInternal(false) ++ } ++ } ++ ++ override fun onBackPressed(): Boolean { ++ return when { ++ viewModel.currentSection.value != ProductItem.Section.All -> { ++ viewModel.setSection(ProductItem.Section.All) ++ true ++ } ++ ++ searchMenuItem?.isActionViewExpanded == true -> { ++ searchMenuItem?.collapseActionView() ++ true ++ } ++ ++ showSections -> { ++ showSections = false ++ true ++ } ++ ++ else -> { ++ super.onBackPressed() ++ } ++ } ++ } ++ ++ internal fun selectUpdates() = selectUpdatesInternal(true) ++ ++ private fun updateUpdateNotificationBlocker(activeSource: AppListFragment.Source) { ++ val blockerFragment = if (activeSource == AppListFragment.Source.UPDATES) { ++ productFragments.find { it.source == activeSource } ++ } else { ++ null ++ } ++ syncConnection.binder?.setUpdateNotificationBlocker(blockerFragment) ++ } ++ ++ private fun selectUpdatesInternal(allowSmooth: Boolean) { ++ if (view != null) { ++ val viewPager = viewPager ++ viewPager?.setCurrentItem( ++ AppListFragment.Source.UPDATES.ordinal, ++ allowSmooth && viewPager.isLaidOut ++ ) ++ } else { ++ needSelectUpdates = true ++ } ++ } ++ ++ private fun updateOrder(sortOrder: SortOrder) { ++ sortOrderMenu!!.second[sortOrder.ordinal].isChecked = true ++ } ++ ++ private fun updateSections( ++ sectionsList: List ++ ) { ++ sectionsAdapter?.sections = sectionsList ++ layout?.run { ++ sectionIcon.isVisible = sectionsList.any { it !is ProductItem.Section.All } ++ sectionLayout.setOnClickListener { showSections = isVisible && !showSections } ++ } ++ } ++ ++ private fun updateSection(section: ProductItem.Section) { ++ layout?.sectionName?.text = when (section) { ++ is ProductItem.Section.All -> getString(stringRes.all_applications) ++ is ProductItem.Section.Category -> section.name ++ is ProductItem.Section.Repository -> section.name ++ } ++ productFragments.filter { it.source.sections }.forEach { it.setSection(section) } ++ } ++ ++ private fun animateSectionsList() { ++ val sectionsList = sectionsList!! ++ val value = if (sectionsList.visibility != View.VISIBLE) { ++ 0f ++ } else { ++ sectionsList.height.toFloat() / (sectionsList.parent as View).height ++ } ++ val target = if (showSections) 0.98f else 0f ++ sectionsAnimator?.cancel() ++ sectionsAnimator = null ++ ++ if (value != target) { ++ sectionsAnimator = ValueAnimator.ofFloat(value, target).apply { ++ duration = (250 * abs(target - value)).toLong() ++ interpolator = DecelerateInterpolator(2f) ++ addUpdateListener { ++ val newValue = animatedValue as Float ++ sectionsList.apply { ++ val height = ((parent as View).height * newValue).toInt() ++ val visible = height > 0 ++ if ((visibility == View.VISIBLE) != visible) isVisible = visible ++ if (layoutParams.height != height) { ++ layoutParams.height = height ++ requestLayout() ++ } ++ } ++ if (target <= 0f && newValue <= 0f) { ++ sectionsAnimator = null ++ } ++ } ++ start() ++ } ++ } ++ } ++ ++ private val pageChangeCallback = object : ViewPager2.OnPageChangeCallback() { ++ override fun onPageScrolled( ++ position: Int, ++ positionOffset: Float, ++ positionOffsetPixels: Int ++ ) { ++ val layout = layout!! ++ val fromSections = AppListFragment.Source.entries[position].sections ++ val toSections = if (positionOffset <= 0f) { ++ fromSections ++ } else { ++ AppListFragment.Source.entries[position + 1].sections ++ } ++ val offset = if (fromSections != toSections) { ++ if (fromSections) 1f - positionOffset else positionOffset ++ } else { ++ if (fromSections) 1f else 0f ++ } ++ assert(layout.sectionLayout.childCount == 1) ++ val child = layout.sectionLayout.getChildAt(0) ++ val height = child.layoutParams.height ++ assert(height > 0) ++ val currentHeight = (offset * height).roundToInt() ++ if (layout.sectionLayout.layoutParams.height != currentHeight) { ++ layout.sectionLayout.layoutParams.height = currentHeight ++ layout.sectionLayout.requestLayout() ++ } ++ } ++ ++ override fun onPageSelected(position: Int) { ++ val source = AppListFragment.Source.entries[position] ++ updateUpdateNotificationBlocker(source) ++ sortOrderMenu!!.first.apply { ++ isVisible = source.order ++ setShowAsActionFlags( ++ if (!source.order || ++ resources.configuration.screenWidthDp >= 300 ++ ) { ++ MenuItem.SHOW_AS_ACTION_ALWAYS ++ } else { ++ 0 ++ } ++ ) ++ } ++ syncRepositoriesMenuItem!!.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_ALWAYS) ++ if (showSections && !source.sections) { ++ showSections = false ++ } ++ } ++ ++ override fun onPageScrollStateChanged(state: Int) { ++ val source = AppListFragment.Source.entries[viewPager!!.currentItem] ++ layout!!.sectionChange.isEnabled = ++ state != ViewPager2.SCROLL_STATE_DRAGGING && source.sections ++ if (state == ViewPager2.SCROLL_STATE_IDLE) { ++ // onPageSelected can be called earlier than fragments created ++ updateUpdateNotificationBlocker(source) ++ } ++ } ++ } ++ ++ private class SectionsAdapter( ++ private val onClick: (ProductItem.Section) -> Unit ++ ) : StableRecyclerAdapter() { ++ enum class ViewType { SECTION } ++ ++ private class SectionViewHolder(context: Context) : ++ RecyclerView.ViewHolder(FrameLayout(context)) { ++ val title: TextView = TextView(context) ++ ++ init { ++ with(title) { ++ gravity = Gravity.CENTER_VERTICAL ++ setPadding(16.dp, 0, 16.dp, 0) ++ layoutParams = FrameLayout.LayoutParams( ++ FrameLayout.LayoutParams.WRAP_CONTENT, ++ FrameLayout.LayoutParams.MATCH_PARENT ++ ) ++ } ++ with(itemView as FrameLayout) { ++ layoutParams = RecyclerView.LayoutParams( ++ RecyclerView.LayoutParams.MATCH_PARENT, ++ 48.dp ++ ) ++ background = context.selectableBackground ++ addView(title) ++ } ++ } ++ } ++ ++ var sections: List = emptyList() ++ set(value) { ++ field = value ++ notifyDataSetChanged() ++ } ++ ++ fun configureDivider( ++ context: Context, ++ position: Int, ++ configuration: DividerConfiguration ++ ) { ++ val currentSection = sections[position] ++ val nextSection = sections.getOrNull(position + 1) ++ when { ++ nextSection != null && currentSection.javaClass != nextSection.javaClass -> { ++ val padding = context.resources.sizeScaled(16) ++ configuration.set( ++ needDivider = true, ++ toTop = false, ++ paddingStart = padding, ++ paddingEnd = padding ++ ) ++ } ++ ++ else -> { ++ configuration.set( ++ needDivider = false, ++ toTop = false, ++ paddingStart = 0, ++ paddingEnd = 0 ++ ) ++ } ++ } ++ } ++ ++ override val viewTypeClass: Class ++ get() = ViewType::class.java ++ ++ override fun getItemCount(): Int = sections.size ++ override fun getItemDescriptor(position: Int): String = sections[position].toString() ++ override fun getItemEnumViewType(position: Int): ViewType = ViewType.SECTION ++ ++ override fun onCreateViewHolder( ++ parent: ViewGroup, ++ viewType: ViewType ++ ): RecyclerView.ViewHolder { ++ return SectionViewHolder(parent.context).apply { ++ itemView.setOnClickListener { onClick(sections[absoluteAdapterPosition]) } ++ } ++ } ++ ++ override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { ++ holder as SectionViewHolder ++ val section = sections[position] ++ val previousSection = sections.getOrNull(position - 1) ++ val nextSection = sections.getOrNull(position + 1) ++ val margin = holder.itemView.resources.sizeScaled(8) ++ val layoutParams = holder.itemView.layoutParams as RecyclerView.LayoutParams ++ layoutParams.topMargin = if (previousSection == null || ++ section.javaClass != previousSection.javaClass ++ ) { ++ margin ++ } else { ++ 0 ++ } ++ layoutParams.bottomMargin = if (nextSection == null || ++ section.javaClass != nextSection.javaClass ++ ) { ++ margin ++ } else { ++ 0 ++ } ++ holder.title.text = when (section) { ++ is ProductItem.Section.All -> holder.itemView.resources.getString( ++ stringRes.all_applications ++ ) ++ ++ is ProductItem.Section.Category -> section.name ++ is ProductItem.Section.Repository -> section.name ++ } ++ } ++ } ++} +Index: app/src/main/kotlin/com/leos/droidify/ui/tabsFragment/TabsViewModel.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/ui/tabsFragment/TabsViewModel.kt b/app/src/main/kotlin/com/leos/droidify/ui/tabsFragment/TabsViewModel.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/ui/tabsFragment/TabsViewModel.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,67 @@ ++package com.leos.droidify.ui.tabsFragment ++ ++import androidx.lifecycle.SavedStateHandle ++import androidx.lifecycle.ViewModel ++import androidx.lifecycle.viewModelScope ++import com.leos.core.common.extension.asStateFlow ++import com.leos.core.datastore.SettingsRepository ++import com.leos.core.datastore.get ++import com.leos.core.datastore.model.SortOrder ++import com.leos.core.domain.ProductItem ++import com.leos.droidify.database.Database ++import dagger.hilt.android.lifecycle.HiltViewModel ++import javax.inject.Inject ++import kotlinx.coroutines.flow.catch ++import kotlinx.coroutines.flow.combine ++import kotlinx.coroutines.launch ++ ++@HiltViewModel ++class TabsViewModel @Inject constructor( ++ private val settingsRepository: SettingsRepository, ++ private val savedStateHandle: SavedStateHandle ++) : ViewModel() { ++ ++ val currentSection = ++ savedStateHandle.getStateFlow(STATE_SECTION, ProductItem.Section.All) ++ ++ val sortOrder = settingsRepository ++ .get { sortOrder } ++ .asStateFlow(SortOrder.UPDATED) ++ ++ val allowHomeScreenSwiping = settingsRepository ++ .get { homeScreenSwiping } ++ .asStateFlow(false) ++ ++ val sections = ++ combine( ++ Database.CategoryAdapter.getAllStream(), ++ Database.RepositoryAdapter.getEnabledStream() ++ ) { categories, repos -> ++ val productCategories = categories ++ .asSequence() ++ .sorted() ++ .map(ProductItem.Section::Category) ++ .toList() ++ ++ val enabledRepositories = repos ++ .map { ProductItem.Section.Repository(it.id, it.name) } ++ enabledRepositories.ifEmpty { setSection(ProductItem.Section.All) } ++ listOf(ProductItem.Section.All) + productCategories + enabledRepositories ++ } ++ .catch { it.printStackTrace() } ++ .asStateFlow(emptyList()) ++ ++ fun setSection(section: ProductItem.Section) { ++ savedStateHandle[STATE_SECTION] = section ++ } ++ ++ fun setSortOrder(sortOrder: SortOrder) { ++ viewModelScope.launch { ++ settingsRepository.setSortOrder(sortOrder) ++ } ++ } ++ ++ companion object { ++ private const val STATE_SECTION = "section" ++ } ++} +Index: app/src/main/kotlin/com/leos/droidify/utility/PackageItemResolver.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/utility/PackageItemResolver.kt b/app/src/main/kotlin/com/leos/droidify/utility/PackageItemResolver.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/utility/PackageItemResolver.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,153 @@ ++package com.leos.droidify.utility ++ ++import android.Manifest ++import android.content.Context ++import android.content.pm.PackageItemInfo ++import android.content.pm.PermissionInfo ++import android.content.res.Resources ++import android.os.Build ++import com.leos.core.common.SdkCheck ++import java.util.Locale ++ ++object PackageItemResolver { ++ class LocalCache { ++ internal val resources = mutableMapOf() ++ } ++ ++ private data class CacheKey(val locales: List, val packageName: String, val resId: Int) ++ ++ private val cache = mutableMapOf() ++ ++ private fun load( ++ context: Context, ++ localCache: LocalCache, ++ packageName: String, ++ nonLocalized: CharSequence?, ++ resId: Int ++ ): CharSequence? { ++ return when { ++ nonLocalized != null -> { ++ nonLocalized ++ } ++ ++ resId != 0 -> { ++ val locales = if (SdkCheck.isNougat) { ++ val localesList = context.resources.configuration.locales ++ (0 until localesList.size()).map(localesList::get) ++ } else { ++ @Suppress("DEPRECATION") ++ listOf(context.resources.configuration.locale) ++ } ++ val cacheKey = CacheKey(locales, packageName, resId) ++ if (cache.containsKey(cacheKey)) { ++ cache[cacheKey] ++ } else { ++ val resources = localCache.resources[packageName] ?: run { ++ val resources = try { ++ val resources = ++ context.packageManager.getResourcesForApplication(packageName) ++ @Suppress("DEPRECATION") ++ resources.updateConfiguration(context.resources.configuration, null) ++ resources ++ } catch (e: Exception) { ++ null ++ } ++ resources?.let { localCache.resources[packageName] = it } ++ resources ++ } ++ val label = resources?.getString(resId) ++ cache[cacheKey] = label ++ label ++ } ++ } ++ ++ else -> { ++ null ++ } ++ } ++ } ++ ++ fun loadLabel( ++ context: Context, ++ localCache: LocalCache, ++ packageItemInfo: PackageItemInfo ++ ): CharSequence? { ++ return load( ++ context, ++ localCache, ++ packageItemInfo.packageName, ++ packageItemInfo.nonLocalizedLabel, ++ packageItemInfo.labelRes ++ ) ++ } ++ ++ fun loadDescription( ++ context: Context, ++ localCache: LocalCache, ++ permissionInfo: PermissionInfo ++ ): CharSequence? { ++ return load( ++ context, ++ localCache, ++ permissionInfo.packageName, ++ permissionInfo.nonLocalizedDescription, ++ permissionInfo.descriptionRes ++ ) ++ } ++ ++ fun getPermissionGroup(permissionInfo: PermissionInfo): String? = ++ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { ++ when (permissionInfo.name) { ++ Manifest.permission.READ_CONTACTS, ++ Manifest.permission.WRITE_CONTACTS, ++ Manifest.permission.GET_ACCOUNTS ++ -> Manifest.permission_group.CONTACTS ++ ++ Manifest.permission.READ_CALENDAR, ++ Manifest.permission.WRITE_CALENDAR ++ -> Manifest.permission_group.CALENDAR ++ ++ Manifest.permission.SEND_SMS, ++ Manifest.permission.RECEIVE_SMS, ++ Manifest.permission.READ_SMS, ++ Manifest.permission.RECEIVE_MMS, ++ Manifest.permission.RECEIVE_WAP_PUSH, ++ "android.permission.READ_CELL_BROADCASTS" ++ -> Manifest.permission_group.SMS ++ ++ Manifest.permission.READ_EXTERNAL_STORAGE, ++ Manifest.permission.WRITE_EXTERNAL_STORAGE, ++ Manifest.permission.ACCESS_MEDIA_LOCATION ++ -> Manifest.permission_group.STORAGE ++ ++ Manifest.permission.ACCESS_FINE_LOCATION, ++ Manifest.permission.ACCESS_COARSE_LOCATION, ++ Manifest.permission.ACCESS_BACKGROUND_LOCATION ++ -> Manifest.permission_group.LOCATION ++ ++ Manifest.permission.READ_CALL_LOG, ++ Manifest.permission.WRITE_CALL_LOG, ++ @Suppress("DEPRECATION") ++ Manifest.permission.PROCESS_OUTGOING_CALLS ++ -> Manifest.permission_group.CALL_LOG ++ ++ Manifest.permission.READ_PHONE_STATE, ++ Manifest.permission.READ_PHONE_NUMBERS, ++ Manifest.permission.CALL_PHONE, ++ Manifest.permission.ADD_VOICEMAIL, ++ Manifest.permission.USE_SIP, ++ Manifest.permission.ANSWER_PHONE_CALLS, ++ Manifest.permission.ACCEPT_HANDOVER ++ -> Manifest.permission_group.PHONE ++ ++ Manifest.permission.RECORD_AUDIO -> Manifest.permission_group.MICROPHONE ++ Manifest.permission.ACTIVITY_RECOGNITION -> ++ Manifest.permission_group.ACTIVITY_RECOGNITION ++ Manifest.permission.CAMERA -> Manifest.permission_group.CAMERA ++ Manifest.permission.BODY_SENSORS -> Manifest.permission_group.SENSORS ++ else -> null ++ } ++ } else { ++ permissionInfo.group ++ } ++} +Index: app/src/main/kotlin/com/leos/droidify/utility/ProgressInputStream.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/utility/ProgressInputStream.kt b/app/src/main/kotlin/com/leos/droidify/utility/ProgressInputStream.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/utility/ProgressInputStream.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,36 @@ ++package com.leos.droidify.utility ++ ++import java.io.InputStream ++ ++fun InputStream.getProgress(callback: (Long) -> Unit): InputStream = ++ ProgressInputStream(this, callback) ++ ++private class ProgressInputStream( ++ private val inputStream: InputStream, ++ private val callback: (Long) -> Unit ++) : InputStream() { ++ private var count = 0L ++ ++ private inline fun notify(one: Boolean, read: () -> T): T { ++ val result = read() ++ count += if (one) 1L else result.toLong() ++ callback(count) ++ return result ++ } ++ ++ override fun read(): Int = notify(true) { inputStream.read() } ++ override fun read(b: ByteArray): Int = notify(false) { inputStream.read(b) } ++ override fun read(b: ByteArray, off: Int, len: Int): Int = ++ notify(false) { inputStream.read(b, off, len) } ++ ++ override fun skip(n: Long): Long = notify(false) { inputStream.skip(n) } ++ ++ override fun available(): Int { ++ return inputStream.available() ++ } ++ ++ override fun close() { ++ inputStream.close() ++ super.close() ++ } ++} +Index: app/src/main/kotlin/com/leos/droidify/utility/extension/Android.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/utility/extension/Android.kt b/app/src/main/kotlin/com/leos/droidify/utility/extension/Android.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/utility/extension/Android.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,14 @@ ++@file:Suppress("PackageDirectoryMismatch") ++ ++package com.leos.droidify.utility.extension.android ++ ++import android.os.Build ++ ++object Android { ++ val name: String = "Android ${Build.VERSION.RELEASE}" ++ ++ val platforms = Build.SUPPORTED_ABIS.toSet() ++ ++ val primaryPlatform: String? = Build.SUPPORTED_64_BIT_ABIS?.firstOrNull() ++ ?: Build.SUPPORTED_32_BIT_ABIS?.firstOrNull() ++} +Index: app/src/main/kotlin/com/leos/droidify/utility/extension/Connection.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/utility/extension/Connection.kt b/app/src/main/kotlin/com/leos/droidify/utility/extension/Connection.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/utility/extension/Connection.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,37 @@ ++package com.leos.droidify.utility.extension ++ ++import com.leos.core.domain.InstalledItem ++import com.leos.core.domain.Product ++import com.leos.core.domain.Repository ++import com.leos.core.domain.findSuggested ++import com.leos.droidify.service.Connection ++import com.leos.droidify.service.DownloadService ++import com.leos.droidify.utility.extension.android.Android ++ ++fun Connection.startUpdate( ++ packageName: String, ++ installedItem: InstalledItem?, ++ products: List> ++) { ++ if (binder == null || products.isEmpty()) return ++ ++ val (product, repository) = products.findSuggested(installedItem) ?: return ++ ++ val compatibleReleases = product.selectedReleases ++ .filter { installedItem == null || installedItem.signature == it.signature } ++ .ifEmpty { return } ++ ++ val selectedRelease = compatibleReleases.singleOrNull() ?: compatibleReleases.run { ++ filter { Android.primaryPlatform in it.platforms }.minByOrNull { it.platforms.size } ++ ?: minByOrNull { it.platforms.size } ++ ?: firstOrNull() ++ } ?: return ++ ++ requireNotNull(binder).enqueue( ++ packageName = packageName, ++ name = product.name, ++ repository = repository, ++ release = selectedRelease, ++ isUpdate = installedItem != null ++ ) ++} +Index: app/src/main/kotlin/com/leos/droidify/utility/extension/Fragment.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/utility/extension/Fragment.kt b/app/src/main/kotlin/com/leos/droidify/utility/extension/Fragment.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/utility/extension/Fragment.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,7 @@ ++package com.leos.droidify.utility.extension ++ ++import androidx.fragment.app.Fragment ++import com.leos.droidify.ScreenActivity ++ ++inline val Fragment.screenActivity: ScreenActivity ++ get() = requireActivity() as ScreenActivity +Index: app/src/main/kotlin/com/leos/droidify/utility/extension/ImageUtils.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/utility/extension/ImageUtils.kt b/app/src/main/kotlin/com/leos/droidify/utility/extension/ImageUtils.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/utility/extension/ImageUtils.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,46 @@ ++package com.leos.droidify.utility.extension ++ ++import android.view.View ++import com.leos.core.common.Singleton ++import com.leos.core.common.extension.dpi ++import com.leos.core.domain.Product ++import com.leos.core.domain.ProductItem ++import com.leos.core.domain.Repository ++ ++object ImageUtils { ++ private val SUPPORTED_DPI = listOf(120, 160, 240, 320, 480, 640) ++ private var DeviceDpi = Singleton() ++ ++ fun Product.Screenshot.url( ++ repository: Repository, ++ packageName: String ++ ): String { ++ val phoneType = when (type) { ++ Product.Screenshot.Type.PHONE -> "phoneScreenshots" ++ Product.Screenshot.Type.SMALL_TABLET -> "sevenInchScreenshots" ++ Product.Screenshot.Type.LARGE_TABLET -> "tenInchScreenshots" ++ } ++ return "${repository.address}/$packageName/$locale/$phoneType/$path" ++ } ++ ++ fun ProductItem.icon( ++ view: View, ++ repository: Repository ++ ): String? { ++ if (packageName.isBlank()) return null ++ if (icon.isBlank() && metadataIcon.isBlank()) return null ++ if (repository.version < 11 && icon.isNotBlank()) { ++ return "${repository.address}/icons/$icon" ++ } ++ if (icon.isNotBlank()) { ++ val deviceDpi = DeviceDpi.getOrUpdate { ++ (SUPPORTED_DPI.find { it >= view.dpi } ?: SUPPORTED_DPI.last()).toString() ++ } ++ return "${repository.address}/icons-$deviceDpi/$icon" ++ } ++ if (metadataIcon.isNotBlank()) { ++ return "${repository.address}/$packageName/$metadataIcon" ++ } ++ return null ++ } ++} +Index: app/src/main/kotlin/com/leos/droidify/utility/extension/PackageInfo.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/utility/extension/PackageInfo.kt b/app/src/main/kotlin/com/leos/droidify/utility/extension/PackageInfo.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/utility/extension/PackageInfo.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,17 @@ ++package com.leos.droidify.utility.extension ++ ++import android.content.pm.PackageInfo ++import com.leos.core.common.extension.calculateHash ++import com.leos.core.common.extension.singleSignature ++import com.leos.core.common.extension.versionCodeCompat ++import com.leos.core.domain.InstalledItem ++ ++fun PackageInfo.toInstalledItem(): InstalledItem { ++ val signatureString = singleSignature?.calculateHash().orEmpty() ++ return InstalledItem( ++ packageName, ++ versionName.orEmpty(), ++ versionCodeCompat, ++ signatureString ++ ) ++} +Index: app/src/main/kotlin/com/leos/droidify/utility/extension/Resources.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/utility/extension/Resources.kt b/app/src/main/kotlin/com/leos/droidify/utility/extension/Resources.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/utility/extension/Resources.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,16 @@ ++@file:Suppress("PackageDirectoryMismatch") ++ ++package com.leos.droidify.utility.extension.resources ++ ++import android.content.res.Resources ++import android.graphics.Typeface ++import kotlin.math.roundToInt ++ ++object TypefaceExtra { ++ val medium = Typeface.create("sans-serif-medium", Typeface.NORMAL)!! ++ val light = Typeface.create("sans-serif-light", Typeface.NORMAL)!! ++} ++ ++fun Resources.sizeScaled(size: Int): Int { ++ return (size * displayMetrics.density).roundToInt() ++} +Index: app/src/main/kotlin/com/leos/droidify/utility/serialization/ProductItemSerialization.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/utility/serialization/ProductItemSerialization.kt b/app/src/main/kotlin/com/leos/droidify/utility/serialization/ProductItemSerialization.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/utility/serialization/ProductItemSerialization.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,55 @@ ++package com.leos.droidify.utility.serialization ++ ++import com.fasterxml.jackson.core.JsonGenerator ++import com.fasterxml.jackson.core.JsonParser ++import com.leos.core.common.extension.forEachKey ++import com.leos.core.domain.ProductItem ++ ++fun ProductItem.serialize(generator: JsonGenerator) { ++ generator.writeNumberField("serialVersion", 1) ++ generator.writeNumberField("repositoryId", repositoryId) ++ generator.writeStringField("packageName", packageName) ++ generator.writeStringField("name", name) ++ generator.writeStringField("summary", summary) ++ generator.writeStringField("icon", icon) ++ generator.writeStringField("metadataIcon", metadataIcon) ++ generator.writeStringField("version", version) ++ generator.writeStringField("installedVersion", installedVersion) ++ generator.writeBooleanField("compatible", compatible) ++ generator.writeBooleanField("canUpdate", canUpdate) ++ generator.writeNumberField("matchRank", matchRank) ++} ++ ++fun JsonParser.productItem(): ProductItem { ++ var repositoryId = 0L ++ var packageName = "" ++ var name = "" ++ var summary = "" ++ var icon = "" ++ var metadataIcon = "" ++ var version = "" ++ var installedVersion = "" ++ var compatible = false ++ var canUpdate = false ++ var matchRank = 0 ++ forEachKey { ++ when { ++ it.number("repositoryId") -> repositoryId = valueAsLong ++ it.string("packageName") -> packageName = valueAsString ++ it.string("name") -> name = valueAsString ++ it.string("summary") -> summary = valueAsString ++ it.string("icon") -> icon = valueAsString ++ it.string("metadataIcon") -> metadataIcon = valueAsString ++ it.string("version") -> version = valueAsString ++ it.string("installedVersion") -> installedVersion = valueAsString ++ it.boolean("compatible") -> compatible = valueAsBoolean ++ it.boolean("canUpdate") -> canUpdate = valueAsBoolean ++ it.number("matchRank") -> matchRank = valueAsInt ++ else -> skipChildren() ++ } ++ } ++ return ProductItem( ++ repositoryId, packageName, name, summary, icon, metadataIcon, ++ version, installedVersion, compatible, canUpdate, matchRank ++ ) ++} +Index: app/src/main/kotlin/com/leos/droidify/utility/serialization/ProductPreferenceSerialization.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/utility/serialization/ProductPreferenceSerialization.kt b/app/src/main/kotlin/com/leos/droidify/utility/serialization/ProductPreferenceSerialization.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/utility/serialization/ProductPreferenceSerialization.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,24 @@ ++package com.leos.droidify.utility.serialization ++ ++import com.fasterxml.jackson.core.JsonGenerator ++import com.fasterxml.jackson.core.JsonParser ++import com.leos.core.common.extension.forEachKey ++import com.leos.core.domain.ProductPreference ++ ++fun ProductPreference.serialize(generator: JsonGenerator) { ++ generator.writeBooleanField("ignoreUpdates", ignoreUpdates) ++ generator.writeNumberField("ignoreVersionCode", ignoreVersionCode) ++} ++ ++fun JsonParser.productPreference(): ProductPreference { ++ var ignoreUpdates = false ++ var ignoreVersionCode = 0L ++ forEachKey { ++ when { ++ it.boolean("ignoreUpdates") -> ignoreUpdates = valueAsBoolean ++ it.number("ignoreVersionCode") -> ignoreVersionCode = valueAsLong ++ else -> skipChildren() ++ } ++ } ++ return ProductPreference(ignoreUpdates, ignoreVersionCode) ++} +Index: app/src/main/kotlin/com/leos/droidify/utility/serialization/ProductSerialization.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/utility/serialization/ProductSerialization.kt b/app/src/main/kotlin/com/leos/droidify/utility/serialization/ProductSerialization.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/utility/serialization/ProductSerialization.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,208 @@ ++package com.leos.droidify.utility.serialization ++ ++import com.fasterxml.jackson.core.JsonGenerator ++import com.fasterxml.jackson.core.JsonParser ++import com.fasterxml.jackson.core.JsonToken ++import com.leos.core.common.extension.collectNotNull ++import com.leos.core.common.extension.collectNotNullStrings ++import com.leos.core.common.extension.forEachKey ++import com.leos.core.common.extension.writeArray ++import com.leos.core.common.extension.writeDictionary ++import com.leos.core.domain.Product ++import com.leos.core.domain.Release ++ ++fun Product.serialize(generator: JsonGenerator) { ++ generator.writeNumberField("repositoryId", repositoryId) ++ generator.writeNumberField("serialVersion", 1) ++ generator.writeStringField("packageName", packageName) ++ generator.writeStringField("name", name) ++ generator.writeStringField("summary", summary) ++ generator.writeStringField("description", description) ++ generator.writeStringField("whatsNew", whatsNew) ++ generator.writeStringField("icon", icon) ++ generator.writeStringField("metadataIcon", metadataIcon) ++ generator.writeStringField("authorName", author.name) ++ generator.writeStringField("authorEmail", author.email) ++ generator.writeStringField("authorWeb", author.web) ++ generator.writeStringField("source", source) ++ generator.writeStringField("changelog", changelog) ++ generator.writeStringField("web", web) ++ generator.writeStringField("tracker", tracker) ++ generator.writeNumberField("added", added) ++ generator.writeNumberField("updated", updated) ++ generator.writeNumberField("suggestedVersionCode", suggestedVersionCode) ++ generator.writeArray("categories") { categories.forEach(::writeString) } ++ generator.writeArray("antiFeatures") { antiFeatures.forEach(::writeString) } ++ generator.writeArray("licenses") { licenses.forEach(::writeString) } ++ generator.writeArray("donates") { ++ donates.forEach { ++ writeDictionary { ++ when (it) { ++ is Product.Donate.Regular -> { ++ writeStringField("type", "") ++ writeStringField("url", it.url) ++ } ++ ++ is Product.Donate.Bitcoin -> { ++ writeStringField("type", "bitcoin") ++ writeStringField("address", it.address) ++ } ++ ++ is Product.Donate.Litecoin -> { ++ writeStringField("type", "litecoin") ++ writeStringField("address", it.address) ++ } ++ ++ is Product.Donate.Flattr -> { ++ writeStringField("type", "flattr") ++ writeStringField("id", it.id) ++ } ++ ++ is Product.Donate.Liberapay -> { ++ writeStringField("type", "liberapay") ++ writeStringField("id", it.id) ++ } ++ ++ is Product.Donate.OpenCollective -> { ++ writeStringField("type", "openCollective") ++ writeStringField("id", it.id) ++ } ++ }::class ++ } ++ } ++ } ++ generator.writeArray("screenshots") { ++ screenshots.forEach { ++ writeDictionary { ++ writeStringField("locale", it.locale) ++ writeStringField("type", it.type.jsonName) ++ writeStringField("path", it.path) ++ } ++ } ++ } ++ generator.writeArray("releases") { releases.forEach { writeDictionary { it.serialize(this) } } } ++} ++ ++fun JsonParser.product(): Product { ++ var repositoryId = 0L ++ var packageName = "" ++ var name = "" ++ var summary = "" ++ var description = "" ++ var whatsNew = "" ++ var icon = "" ++ var metadataIcon = "" ++ var authorName = "" ++ var authorEmail = "" ++ var authorWeb = "" ++ var source = "" ++ var changelog = "" ++ var web = "" ++ var tracker = "" ++ var added = 0L ++ var updated = 0L ++ var suggestedVersionCode = 0L ++ var categories = emptyList() ++ var antiFeatures = emptyList() ++ var licenses = emptyList() ++ var donates = emptyList() ++ var screenshots = emptyList() ++ var releases = emptyList() ++ forEachKey { it -> ++ when { ++ it.string("repositoryId") -> repositoryId = valueAsLong ++ it.string("packageName") -> packageName = valueAsString ++ it.string("name") -> name = valueAsString ++ it.string("summary") -> summary = valueAsString ++ it.string("description") -> description = valueAsString ++ it.string("whatsNew") -> whatsNew = valueAsString ++ it.string("icon") -> icon = valueAsString ++ it.string("metadataIcon") -> metadataIcon = valueAsString ++ it.string("authorName") -> authorName = valueAsString ++ it.string("authorEmail") -> authorEmail = valueAsString ++ it.string("authorWeb") -> authorWeb = valueAsString ++ it.string("source") -> source = valueAsString ++ it.string("changelog") -> changelog = valueAsString ++ it.string("web") -> web = valueAsString ++ it.string("tracker") -> tracker = valueAsString ++ it.number("added") -> added = valueAsLong ++ it.number("updated") -> updated = valueAsLong ++ it.number("suggestedVersionCode") -> suggestedVersionCode = valueAsLong ++ it.array("categories") -> categories = collectNotNullStrings() ++ it.array("antiFeatures") -> antiFeatures = collectNotNullStrings() ++ it.array("licenses") -> licenses = collectNotNullStrings() ++ it.array("donates") -> donates = collectNotNull(JsonToken.START_OBJECT) { ++ var type = "" ++ var url = "" ++ var address = "" ++ var id = "" ++ forEachKey { ++ when { ++ it.string("type") -> type = valueAsString ++ it.string("url") -> url = valueAsString ++ it.string("address") -> address = valueAsString ++ it.string("id") -> id = valueAsString ++ else -> skipChildren() ++ } ++ } ++ when (type) { ++ "" -> Product.Donate.Regular(url) ++ "bitcoin" -> Product.Donate.Bitcoin(address) ++ "litecoin" -> Product.Donate.Litecoin(address) ++ "flattr" -> Product.Donate.Flattr(id) ++ "liberapay" -> Product.Donate.Liberapay(id) ++ "openCollective" -> Product.Donate.OpenCollective(id) ++ else -> null ++ } ++ } ++ ++ it.array("screenshots") -> ++ screenshots = ++ collectNotNull(JsonToken.START_OBJECT) { ++ var locale = "" ++ var type = "" ++ var path = "" ++ forEachKey { ++ when { ++ it.string("locale") -> locale = valueAsString ++ it.string("type") -> type = valueAsString ++ it.string("path") -> path = valueAsString ++ else -> skipChildren() ++ } ++ } ++ Product.Screenshot.Type.entries.find { it.jsonName == type } ++ ?.let { Product.Screenshot(locale, it, path) } ++ } ++ ++ it.array("releases") -> ++ releases = ++ collectNotNull(JsonToken.START_OBJECT) { release() } ++ ++ else -> skipChildren() ++ } ++ } ++ return Product( ++ repositoryId, ++ packageName, ++ name, ++ summary, ++ description, ++ whatsNew, ++ icon, ++ metadataIcon, ++ Product.Author(authorName, authorEmail, authorWeb), ++ source, ++ changelog, ++ web, ++ tracker, ++ added, ++ updated, ++ suggestedVersionCode, ++ categories, ++ antiFeatures, ++ licenses, ++ donates, ++ screenshots, ++ releases ++ ) ++} +Index: app/src/main/kotlin/com/leos/droidify/utility/serialization/ReleaseSerialization.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/utility/serialization/ReleaseSerialization.kt b/app/src/main/kotlin/com/leos/droidify/utility/serialization/ReleaseSerialization.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/utility/serialization/ReleaseSerialization.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,160 @@ ++package com.leos.droidify.utility.serialization ++ ++import com.fasterxml.jackson.core.JsonGenerator ++import com.fasterxml.jackson.core.JsonParser ++import com.fasterxml.jackson.core.JsonToken ++import com.leos.core.common.extension.collectNotNull ++import com.leos.core.common.extension.collectNotNullStrings ++import com.leos.core.common.extension.forEachKey ++import com.leos.core.common.extension.writeArray ++import com.leos.core.common.extension.writeDictionary ++import com.leos.core.domain.Release ++ ++fun Release.serialize(generator: JsonGenerator) { ++ generator.writeNumberField("serialVersion", 1) ++ generator.writeBooleanField("selected", selected) ++ generator.writeStringField("version", version) ++ generator.writeNumberField("versionCode", versionCode) ++ generator.writeNumberField("added", added) ++ generator.writeNumberField("size", size) ++ generator.writeNumberField("minSdkVersion", minSdkVersion) ++ generator.writeNumberField("targetSdkVersion", targetSdkVersion) ++ generator.writeNumberField("maxSdkVersion", maxSdkVersion) ++ generator.writeStringField("source", source) ++ generator.writeStringField("release", release) ++ generator.writeStringField("hash", hash) ++ generator.writeStringField("hashType", hashType) ++ generator.writeStringField("signature", signature) ++ generator.writeStringField("obbMain", obbMain) ++ generator.writeStringField("obbMainHash", obbMainHash) ++ generator.writeStringField("obbMainHashType", obbMainHashType) ++ generator.writeStringField("obbPatch", obbPatch) ++ generator.writeStringField("obbPatchHash", obbPatchHash) ++ generator.writeStringField("obbPatchHashType", obbPatchHashType) ++ generator.writeArray("permissions") { permissions.forEach { writeString(it) } } ++ generator.writeArray("features") { features.forEach { writeString(it) } } ++ generator.writeArray("platforms") { platforms.forEach { writeString(it) } } ++ generator.writeArray("incompatibilities") { ++ incompatibilities.forEach { ++ writeDictionary { ++ when (it) { ++ is Release.Incompatibility.MinSdk -> { ++ writeStringField("type", "minSdk") ++ } ++ ++ is Release.Incompatibility.MaxSdk -> { ++ writeStringField("type", "maxSdk") ++ } ++ ++ is Release.Incompatibility.Platform -> { ++ writeStringField("type", "platform") ++ } ++ ++ is Release.Incompatibility.Feature -> { ++ writeStringField("type", "feature") ++ writeStringField("feature", it.feature) ++ } ++ }::class ++ } ++ } ++ } ++} ++ ++fun JsonParser.release(): Release { ++ var selected = false ++ var version = "" ++ var versionCode = 0L ++ var added = 0L ++ var size = 0L ++ var minSdkVersion = 0 ++ var targetSdkVersion = 0 ++ var maxSdkVersion = 0 ++ var source = "" ++ var release = "" ++ var hash = "" ++ var hashType = "" ++ var signature = "" ++ var obbMain = "" ++ var obbMainHash = "" ++ var obbMainHashType = "" ++ var obbPatch = "" ++ var obbPatchHash = "" ++ var obbPatchHashType = "" ++ var permissions = emptyList() ++ var features = emptyList() ++ var platforms = emptyList() ++ var incompatibilities = emptyList() ++ forEachKey { it -> ++ when { ++ it.boolean("selected") -> selected = valueAsBoolean ++ it.string("version") -> version = valueAsString ++ it.number("versionCode") -> versionCode = valueAsLong ++ it.number("added") -> added = valueAsLong ++ it.number("size") -> size = valueAsLong ++ it.number("minSdkVersion") -> minSdkVersion = valueAsInt ++ it.number("targetSdkVersion") -> targetSdkVersion = valueAsInt ++ it.number("maxSdkVersion") -> maxSdkVersion = valueAsInt ++ it.string("source") -> source = valueAsString ++ it.string("release") -> release = valueAsString ++ it.string("hash") -> hash = valueAsString ++ it.string("hashType") -> hashType = valueAsString ++ it.string("signature") -> signature = valueAsString ++ it.string("obbMain") -> obbMain = valueAsString ++ it.string("obbMainHash") -> obbMainHash = valueAsString ++ it.string("obbMainHashType") -> obbMainHashType = valueAsString ++ it.string("obbPatch") -> obbPatch = valueAsString ++ it.string("obbPatchHash") -> obbPatchHash = valueAsString ++ it.string("obbPatchHashType") -> obbPatchHashType = valueAsString ++ it.array("permissions") -> permissions = collectNotNullStrings() ++ it.array("features") -> features = collectNotNullStrings() ++ it.array("platforms") -> platforms = collectNotNullStrings() ++ it.array("incompatibilities") -> ++ incompatibilities = ++ collectNotNull(JsonToken.START_OBJECT) { ++ var type = "" ++ var feature = "" ++ forEachKey { ++ when { ++ it.string("type") -> type = valueAsString ++ it.string("feature") -> feature = valueAsString ++ else -> skipChildren() ++ } ++ } ++ when (type) { ++ "minSdk" -> Release.Incompatibility.MinSdk ++ "maxSdk" -> Release.Incompatibility.MaxSdk ++ "platform" -> Release.Incompatibility.Platform ++ "feature" -> Release.Incompatibility.Feature(feature) ++ else -> null ++ } ++ } ++ ++ else -> skipChildren() ++ } ++ } ++ return Release( ++ selected, ++ version, ++ versionCode, ++ added, ++ size, ++ minSdkVersion, ++ targetSdkVersion, ++ maxSdkVersion, ++ source, ++ release, ++ hash, ++ hashType, ++ signature, ++ obbMain, ++ obbMainHash, ++ obbMainHashType, ++ obbPatch, ++ obbPatchHash, ++ obbPatchHashType, ++ permissions, ++ features, ++ platforms, ++ incompatibilities ++ ) ++} +Index: app/src/main/kotlin/com/leos/droidify/utility/serialization/RepositorySerialization.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/utility/serialization/RepositorySerialization.kt b/app/src/main/kotlin/com/leos/droidify/utility/serialization/RepositorySerialization.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/utility/serialization/RepositorySerialization.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,63 @@ ++package com.leos.droidify.utility.serialization ++ ++import com.fasterxml.jackson.core.JsonGenerator ++import com.fasterxml.jackson.core.JsonParser ++import com.leos.core.common.extension.collectNotNullStrings ++import com.leos.core.common.extension.forEachKey ++import com.leos.core.common.extension.writeArray ++import com.leos.core.domain.Repository ++ ++fun Repository.serialize(generator: JsonGenerator) { ++ generator.writeNumberField("serialVersion", 1) ++ generator.writeNumberField("id", id) ++ generator.writeStringField("address", address) ++ generator.writeArray("mirrors") { mirrors.forEach { writeString(it) } } ++ generator.writeStringField("name", name) ++ generator.writeStringField("description", description) ++ generator.writeNumberField("version", version) ++ generator.writeBooleanField("enabled", enabled) ++ generator.writeStringField("fingerprint", fingerprint) ++ generator.writeStringField("lastModified", lastModified) ++ generator.writeStringField("entityTag", entityTag) ++ generator.writeNumberField("updated", updated) ++ generator.writeNumberField("timestamp", timestamp) ++ generator.writeStringField("authentication", authentication) ++} ++ ++fun JsonParser.repository(): Repository { ++ var id = -1L ++ var address = "" ++ var mirrors = emptyList() ++ var name = "" ++ var description = "" ++ var version = 0 ++ var enabled = false ++ var fingerprint = "" ++ var lastModified = "" ++ var entityTag = "" ++ var updated = 0L ++ var timestamp = 0L ++ var authentication = "" ++ forEachKey { ++ when { ++ it.string("id") -> id = valueAsLong ++ it.string("address") -> address = valueAsString ++ it.array("mirrors") -> mirrors = collectNotNullStrings() ++ it.string("name") -> name = valueAsString ++ it.string("description") -> description = valueAsString ++ it.number("version") -> version = valueAsInt ++ it.boolean("enabled") -> enabled = valueAsBoolean ++ it.string("fingerprint") -> fingerprint = valueAsString ++ it.string("lastModified") -> lastModified = valueAsString ++ it.string("entityTag") -> entityTag = valueAsString ++ it.number("updated") -> updated = valueAsLong ++ it.number("timestamp") -> timestamp = valueAsLong ++ it.string("authentication") -> authentication = valueAsString ++ else -> skipChildren() ++ } ++ } ++ return Repository( ++ id, address, mirrors, name, description, version, enabled, fingerprint, ++ lastModified, entityTag, updated, timestamp, authentication ++ ) ++} +Index: app/src/main/kotlin/com/leos/droidify/widget/CursorRecyclerAdapter.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/widget/CursorRecyclerAdapter.kt b/app/src/main/kotlin/com/leos/droidify/widget/CursorRecyclerAdapter.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/widget/CursorRecyclerAdapter.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,36 @@ ++package com.leos.droidify.widget ++ ++import android.database.Cursor ++import androidx.recyclerview.widget.RecyclerView ++ ++abstract class CursorRecyclerAdapter, VH : RecyclerView.ViewHolder> : ++ EnumRecyclerAdapter() { ++ init { ++ super.setHasStableIds(true) ++ } ++ ++ private var rowIdIndex = 0 ++ ++ var cursor: Cursor? = null ++ set(value) { ++ if (field != value) { ++ field?.close() ++ field = value ++ rowIdIndex = value?.getColumnIndexOrThrow("_id") ?: 0 ++ notifyDataSetChanged() ++ } ++ } ++ ++ final override fun setHasStableIds(hasStableIds: Boolean) { ++ throw UnsupportedOperationException() ++ } ++ ++ override fun getItemCount(): Int = cursor?.count ?: 0 ++ override fun getItemId(position: Int): Long = moveTo(position).getLong(rowIdIndex) ++ ++ fun moveTo(position: Int): Cursor { ++ val cursor = cursor!! ++ cursor.moveToPosition(position) ++ return cursor ++ } ++} +Index: app/src/main/kotlin/com/leos/droidify/widget/DividerItemDecoration.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/widget/DividerItemDecoration.kt b/app/src/main/kotlin/com/leos/droidify/widget/DividerItemDecoration.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/widget/DividerItemDecoration.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,139 @@ ++package com.leos.droidify.widget ++ ++import android.content.Context ++import android.graphics.Canvas ++import android.graphics.Rect ++import android.view.View ++import androidx.recyclerview.widget.RecyclerView ++import com.leos.core.common.extension.divider ++import com.leos.droidify.R ++import kotlin.math.roundToInt ++ ++fun RecyclerView.addDivider( ++ configure: ( ++ context: Context, ++ position: Int, ++ configuration: DividerConfiguration ++ ) -> Unit ++) { ++ addItemDecoration( ++ DividerItemDecoration( ++ context = context, ++ configure = configure ++ ) ++ ) ++} ++ ++fun interface DividerConfiguration { ++ fun set(needDivider: Boolean, toTop: Boolean, paddingStart: Int, paddingEnd: Int) ++} ++ ++private class DividerItemDecoration( ++ context: Context, ++ private val configure: ( ++ context: Context, ++ position: Int, ++ configuration: DividerConfiguration ++ ) -> Unit ++) : RecyclerView.ItemDecoration() { ++ ++ private class ConfigurationHolder : DividerConfiguration { ++ var needDivider = false ++ var toTop = false ++ var paddingStart = 0 ++ var paddingEnd = 0 ++ ++ override fun set(needDivider: Boolean, toTop: Boolean, paddingStart: Int, paddingEnd: Int) { ++ this.needDivider = needDivider ++ this.toTop = toTop ++ this.paddingStart = paddingStart ++ this.paddingEnd = paddingEnd ++ } ++ } ++ ++ private val View.configuration: ConfigurationHolder ++ get() = getTag(R.id.divider_configuration) as? ConfigurationHolder ?: run { ++ val configuration = ConfigurationHolder() ++ setTag(R.id.divider_configuration, configuration) ++ configuration ++ } ++ ++ private val divider = context.divider ++ private val bounds = Rect() ++ ++ private fun draw( ++ c: Canvas, ++ configuration: ConfigurationHolder, ++ view: View, ++ top: Int, ++ width: Int, ++ rtl: Boolean ++ ) { ++ val divider = divider ++ val left = if (rtl) configuration.paddingEnd else configuration.paddingStart ++ val right = width - (if (rtl) configuration.paddingStart else configuration.paddingEnd) ++ val translatedTop = top + view.translationY.roundToInt() ++ divider.alpha = (view.alpha * 0xff).toInt() ++ divider.setBounds(left, translatedTop, right, translatedTop + divider.intrinsicHeight) ++ divider.draw(c) ++ } ++ ++ override fun onDraw(c: Canvas, parent: RecyclerView, state: RecyclerView.State) { ++ val divider = divider ++ val bounds = bounds ++ val rtl = parent.layoutDirection == View.LAYOUT_DIRECTION_RTL ++ for (i in 0 until parent.childCount) { ++ val view = parent.getChildAt(i) ++ val configuration = view.configuration ++ if (configuration.needDivider) { ++ val position = parent.getChildAdapterPosition(view) ++ if (position == parent.adapter!!.itemCount - 1) { ++ parent.getDecoratedBoundsWithMargins(view, bounds) ++ draw(c, configuration, view, bounds.bottom, parent.width, rtl) ++ } else { ++ val toTopView = if (configuration.toTop && position >= 0) { ++ parent.findViewHolderForAdapterPosition(position + 1)?.itemView ++ } else { ++ null ++ } ++ if (toTopView != null) { ++ parent.getDecoratedBoundsWithMargins(toTopView, bounds) ++ draw( ++ c, ++ configuration, ++ toTopView, ++ bounds.top - divider.intrinsicHeight, ++ parent.width, ++ rtl ++ ) ++ } else { ++ parent.getDecoratedBoundsWithMargins(view, bounds) ++ draw( ++ c, ++ configuration, ++ view, ++ bounds.bottom - divider.intrinsicHeight, ++ parent.width, ++ rtl ++ ) ++ } ++ } ++ } ++ } ++ } ++ ++ override fun getItemOffsets( ++ outRect: Rect, ++ view: View, ++ parent: RecyclerView, ++ state: RecyclerView.State ++ ) { ++ val configuration = view.configuration ++ val position = parent.getChildAdapterPosition(view) ++ if (position >= 0) { ++ configure(view.context, position, configuration) ++ } ++ val needDivider = position < parent.adapter!!.itemCount - 1 && configuration.needDivider ++ outRect.set(0, 0, 0, if (needDivider) divider.intrinsicHeight else 0) ++ } ++} +Index: app/src/main/kotlin/com/leos/droidify/widget/EnumRecyclerAdapter.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/widget/EnumRecyclerAdapter.kt b/app/src/main/kotlin/com/leos/droidify/widget/EnumRecyclerAdapter.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/widget/EnumRecyclerAdapter.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,29 @@ ++package com.leos.droidify.widget ++ ++import android.util.SparseArray ++import android.view.ViewGroup ++import androidx.recyclerview.widget.RecyclerView ++ ++abstract class EnumRecyclerAdapter, VH : RecyclerView.ViewHolder> : ++ RecyclerView.Adapter() { ++ abstract val viewTypeClass: Class ++ ++ private val names = SparseArray() ++ ++ private fun getViewType(viewType: Int): VT { ++ return java.lang.Enum.valueOf(viewTypeClass, names.get(viewType)) ++ } ++ ++ final override fun getItemViewType(position: Int): Int { ++ val enum = getItemEnumViewType(position) ++ names.put(enum.ordinal, enum.name) ++ return enum.ordinal ++ } ++ ++ final override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VH { ++ return onCreateViewHolder(parent, getViewType(viewType)) ++ } ++ ++ abstract fun getItemEnumViewType(position: Int): VT ++ abstract fun onCreateViewHolder(parent: ViewGroup, viewType: VT): VH ++} +Index: app/src/main/kotlin/com/leos/droidify/widget/FocusSearchView.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/widget/FocusSearchView.kt b/app/src/main/kotlin/com/leos/droidify/widget/FocusSearchView.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/widget/FocusSearchView.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,39 @@ ++package com.leos.droidify.widget ++ ++import android.content.Context ++import android.util.AttributeSet ++import android.view.KeyEvent ++import androidx.appcompat.widget.SearchView ++ ++class FocusSearchView : SearchView { ++ constructor(context: Context) : super(context) ++ constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) ++ constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super( ++ context, ++ attrs, ++ defStyleAttr ++ ) ++ ++ var allowFocus = true ++ ++ override fun dispatchKeyEventPreIme(event: KeyEvent): Boolean { ++ // Always clear focus on back press ++ return if (hasFocus() && event.keyCode == KeyEvent.KEYCODE_BACK) { ++ if (event.action == KeyEvent.ACTION_UP) { ++ clearFocus() ++ } ++ true ++ } else { ++ super.dispatchKeyEventPreIme(event) ++ } ++ } ++ ++ override fun setIconified(iconify: Boolean) { ++ super.setIconified(iconify) ++ ++ // Don't focus view and raise keyboard unless allowed ++ if (!iconify && !allowFocus) { ++ clearFocus() ++ } ++ } ++} +Index: app/src/main/kotlin/com/leos/droidify/widget/StableRecyclerAdapter.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/widget/StableRecyclerAdapter.kt b/app/src/main/kotlin/com/leos/droidify/widget/StableRecyclerAdapter.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/widget/StableRecyclerAdapter.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,28 @@ ++package com.leos.droidify.widget ++ ++import androidx.recyclerview.widget.RecyclerView ++ ++abstract class StableRecyclerAdapter, VH : RecyclerView.ViewHolder> : ++ EnumRecyclerAdapter() { ++ private var nextId = 1L ++ private val descriptorToId = mutableMapOf() ++ ++ init { ++ super.setHasStableIds(true) ++ } ++ ++ final override fun setHasStableIds(hasStableIds: Boolean) { ++ throw UnsupportedOperationException() ++ } ++ ++ override fun getItemId(position: Int): Long { ++ val descriptor = getItemDescriptor(position) ++ return descriptorToId[descriptor] ?: run { ++ val id = nextId++ ++ descriptorToId[descriptor] = id ++ id ++ } ++ } ++ ++ abstract fun getItemDescriptor(position: Int): String ++} +Index: app/src/main/kotlin/com/leos/droidify/work/CleanUpWorker.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/kotlin/com/leos/droidify/work/CleanUpWorker.kt b/app/src/main/kotlin/com/leos/droidify/work/CleanUpWorker.kt +new file mode 100644 +--- /dev/null (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) ++++ b/app/src/main/kotlin/com/leos/droidify/work/CleanUpWorker.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -0,0 +1,74 @@ ++package com.leos.droidify.work ++ ++import android.content.Context ++import android.util.Log ++import androidx.hilt.work.HiltWorker ++import androidx.work.CoroutineWorker ++import androidx.work.ExistingPeriodicWorkPolicy ++import androidx.work.ExistingWorkPolicy ++import androidx.work.OneTimeWorkRequestBuilder ++import androidx.work.PeriodicWorkRequestBuilder ++import androidx.work.WorkManager ++import androidx.work.WorkerParameters ++import com.leos.core.common.cache.Cache ++import com.leos.core.datastore.SettingsRepository ++import dagger.assisted.Assisted ++import dagger.assisted.AssistedInject ++import kotlin.time.Duration ++import kotlin.time.toJavaDuration ++import kotlinx.coroutines.Dispatchers ++import kotlinx.coroutines.withContext ++ ++@HiltWorker ++class CleanUpWorker @AssistedInject constructor( ++ @Assisted context: Context, ++ @Assisted workerParams: WorkerParameters, ++ private val settingsRepository: SettingsRepository ++) : CoroutineWorker(context, workerParams) { ++ companion object { ++ private const val TAG = "CleanUpWorker" ++ ++ fun removeAllSchedules(context: Context) { ++ val workManager = WorkManager.getInstance(context) ++ workManager.cancelUniqueWork(TAG) ++ } ++ ++ fun scheduleCleanup(context: Context, duration: Duration) { ++ val workManager = WorkManager.getInstance(context) ++ val cleanup = PeriodicWorkRequestBuilder(duration.toJavaDuration()) ++ .build() ++ ++ workManager.enqueueUniquePeriodicWork( ++ TAG, ++ ExistingPeriodicWorkPolicy.UPDATE, ++ cleanup ++ ) ++ Log.i(TAG, "Periodic work enqueued with duration: $duration") ++ } ++ ++ fun force(context: Context) { ++ val cleanup = OneTimeWorkRequestBuilder() ++ .build() ++ ++ val workManager = WorkManager.getInstance(context) ++ workManager.enqueueUniqueWork( ++ "$TAG.force", ++ ExistingWorkPolicy.KEEP, ++ cleanup ++ ) ++ Log.i(TAG, "Forced cleanup enqueued") ++ } ++ } ++ ++ override suspend fun doWork(): Result = withContext(Dispatchers.IO) { ++ try { ++ Log.i(TAG, "doWork: Started Cleanup") ++ settingsRepository.setCleanupInstant() ++ Cache.cleanup(applicationContext) ++ Result.success() ++ } catch (e: Exception) { ++ Log.i(TAG, "doWork: Failed to clean up", e) ++ Result.failure() ++ } ++ } ++} +Index: app/src/main/res/layout/settings_page.xml +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/app/src/main/res/layout/settings_page.xml b/app/src/main/res/layout/settings_page.xml +--- a/app/src/main/res/layout/settings_page.xml (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/app/src/main/res/layout/settings_page.xml (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -5,7 +5,7 @@ + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="?colorSurface" +- tools:context="com.looker.droidify.ui.settings.SettingsFragment"> ++ tools:context="com.leos.droidify.ui.settings.SettingsFragment"> + + UTF-8 +=================================================================== +diff --git a/build-logic/structure/src/main/kotlin/AndroidApplicationPlugin.kt b/build-logic/structure/src/main/kotlin/AndroidApplicationPlugin.kt +--- a/build-logic/structure/src/main/kotlin/AndroidApplicationPlugin.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/build-logic/structure/src/main/kotlin/AndroidApplicationPlugin.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,5 +1,5 @@ + import com.android.build.api.dsl.ApplicationExtension +-import com.looker.droidify.configureKotlinAndroid ++import com.leos.droidify.configureKotlinAndroid + import org.gradle.api.Plugin + import org.gradle.api.Project + import org.gradle.kotlin.dsl.configure +Index: build-logic/structure/src/main/kotlin/AndroidHiltPlugin.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/build-logic/structure/src/main/kotlin/AndroidHiltPlugin.kt b/build-logic/structure/src/main/kotlin/AndroidHiltPlugin.kt +--- a/build-logic/structure/src/main/kotlin/AndroidHiltPlugin.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/build-logic/structure/src/main/kotlin/AndroidHiltPlugin.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,5 +1,5 @@ +-import com.looker.droidify.getLibrary +-import com.looker.droidify.libs ++import com.leos.droidify.getLibrary ++import com.leos.droidify.libs + import org.gradle.api.Plugin + import org.gradle.api.Project + import org.gradle.kotlin.dsl.dependencies +Index: build-logic/structure/src/main/kotlin/AndroidHiltWorkerPlugin.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/build-logic/structure/src/main/kotlin/AndroidHiltWorkerPlugin.kt b/build-logic/structure/src/main/kotlin/AndroidHiltWorkerPlugin.kt +--- a/build-logic/structure/src/main/kotlin/AndroidHiltWorkerPlugin.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/build-logic/structure/src/main/kotlin/AndroidHiltWorkerPlugin.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,5 +1,5 @@ +-import com.looker.droidify.getLibrary +-import com.looker.droidify.libs ++import com.leos.droidify.getLibrary ++import com.leos.droidify.libs + import org.gradle.api.Plugin + import org.gradle.api.Project + import org.gradle.kotlin.dsl.dependencies +Index: build-logic/structure/src/main/kotlin/AndroidLibraryPlugin.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/build-logic/structure/src/main/kotlin/AndroidLibraryPlugin.kt b/build-logic/structure/src/main/kotlin/AndroidLibraryPlugin.kt +--- a/build-logic/structure/src/main/kotlin/AndroidLibraryPlugin.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/build-logic/structure/src/main/kotlin/AndroidLibraryPlugin.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,6 +1,6 @@ + import com.android.build.api.variant.LibraryAndroidComponentsExtension + import com.android.build.gradle.LibraryExtension +-import com.looker.droidify.configureKotlinAndroid ++import com.leos.droidify.configureKotlinAndroid + import org.gradle.api.Plugin + import org.gradle.api.Project + import org.gradle.kotlin.dsl.configure +Index: build-logic/structure/src/main/kotlin/AndroidRoomPlugin.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/build-logic/structure/src/main/kotlin/AndroidRoomPlugin.kt b/build-logic/structure/src/main/kotlin/AndroidRoomPlugin.kt +--- a/build-logic/structure/src/main/kotlin/AndroidRoomPlugin.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/build-logic/structure/src/main/kotlin/AndroidRoomPlugin.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,6 +1,6 @@ + import com.google.devtools.ksp.gradle.KspExtension +-import com.looker.droidify.getLibrary +-import com.looker.droidify.libs ++import com.leos.droidify.getLibrary ++import com.leos.droidify.libs + import org.gradle.api.Plugin + import org.gradle.api.Project + import org.gradle.api.tasks.InputDirectory +Index: build-logic/structure/src/main/kotlin/AndroidSerializationPlugin.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/build-logic/structure/src/main/kotlin/AndroidSerializationPlugin.kt b/build-logic/structure/src/main/kotlin/AndroidSerializationPlugin.kt +--- a/build-logic/structure/src/main/kotlin/AndroidSerializationPlugin.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/build-logic/structure/src/main/kotlin/AndroidSerializationPlugin.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,5 +1,5 @@ +-import com.looker.droidify.getLibrary +-import com.looker.droidify.libs ++import com.leos.droidify.getLibrary ++import com.leos.droidify.libs + import org.gradle.api.Plugin + import org.gradle.api.Project + import org.gradle.kotlin.dsl.dependencies +Index: build-logic/structure/src/main/kotlin/DefaultConfig.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/build-logic/structure/src/main/kotlin/DefaultConfig.kt b/build-logic/structure/src/main/kotlin/DefaultConfig.kt +--- a/build-logic/structure/src/main/kotlin/DefaultConfig.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/build-logic/structure/src/main/kotlin/DefaultConfig.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,7 +1,7 @@ + object DefaultConfig { + // Update [release_build.yml] along with this + const val buildTools: String = "34.0.0" +- const val appId = "com.looker.droidify" ++ const val appId = "com.leos.droidify" + const val compileSdk = 34 + const val minSdk = 23 + const val versionCode = 595 +Index: build-logic/structure/src/main/kotlin/com/looker/droidify/KotlinAndroid.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/build-logic/structure/src/main/kotlin/com/looker/droidify/KotlinAndroid.kt b/build-logic/structure/src/main/kotlin/com/looker/droidify/KotlinAndroid.kt +--- a/build-logic/structure/src/main/kotlin/com/looker/droidify/KotlinAndroid.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/build-logic/structure/src/main/kotlin/com/looker/droidify/KotlinAndroid.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.droidify ++package com.leos.droidify + + import DefaultConfig + import com.android.build.api.dsl.CommonExtension +Index: build-logic/structure/src/main/kotlin/com/looker/droidify/ProjectExtensions.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/build-logic/structure/src/main/kotlin/com/looker/droidify/ProjectExtensions.kt b/build-logic/structure/src/main/kotlin/com/looker/droidify/ProjectExtensions.kt +--- a/build-logic/structure/src/main/kotlin/com/looker/droidify/ProjectExtensions.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/build-logic/structure/src/main/kotlin/com/looker/droidify/ProjectExtensions.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.droidify ++package com.leos.droidify + + import org.gradle.api.Project + import org.gradle.api.artifacts.MinimalExternalModuleDependency +Index: core/common/build.gradle.kts +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/build.gradle.kts b/core/common/build.gradle.kts +--- a/core/common/build.gradle.kts (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/common/build.gradle.kts (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -6,7 +6,7 @@ + } + + android { +- namespace = "com.looker.core.common" ++ namespace = "com.leos.core.common" + defaultConfig { + vectorDrawables.useSupportLibrary = true + } +Index: core/common/src/main/java/com/looker/core/common/Constants.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/java/com/looker/core/common/Constants.kt b/core/common/src/main/java/com/looker/core/common/Constants.kt +--- a/core/common/src/main/java/com/looker/core/common/Constants.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/common/src/main/java/com/looker/core/common/Constants.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.common ++package com.leos.core.common + + object Constants { + const val NOTIFICATION_CHANNEL_SYNCING = "syncing" +Index: core/common/src/main/java/com/looker/core/common/DataSize.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/java/com/looker/core/common/DataSize.kt b/core/common/src/main/java/com/looker/core/common/DataSize.kt +--- a/core/common/src/main/java/com/looker/core/common/DataSize.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/common/src/main/java/com/looker/core/common/DataSize.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.common ++package com.leos.core.common + + import java.util.Locale + +Index: core/common/src/main/java/com/looker/core/common/Deeplinks.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/java/com/looker/core/common/Deeplinks.kt b/core/common/src/main/java/com/looker/core/common/Deeplinks.kt +--- a/core/common/src/main/java/com/looker/core/common/Deeplinks.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/common/src/main/java/com/looker/core/common/Deeplinks.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,7 +1,7 @@ +-package com.looker.core.common ++package com.leos.core.common + + import android.content.Intent +-import com.looker.core.common.extension.get ++import com.leos.core.common.extension.get + + private const val PERSONAL_HOST = "droidify.eu.org" + +Index: core/common/src/main/java/com/looker/core/common/Exporter.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/java/com/looker/core/common/Exporter.kt b/core/common/src/main/java/com/looker/core/common/Exporter.kt +--- a/core/common/src/main/java/com/looker/core/common/Exporter.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/common/src/main/java/com/looker/core/common/Exporter.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.common ++package com.leos.core.common + + import android.net.Uri + +Index: core/common/src/main/java/com/looker/core/common/PackageName.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/java/com/looker/core/common/PackageName.kt b/core/common/src/main/java/com/looker/core/common/PackageName.kt +--- a/core/common/src/main/java/com/looker/core/common/PackageName.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/common/src/main/java/com/looker/core/common/PackageName.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.common ++package com.leos.core.common + + @JvmInline + value class PackageName(val name: String) +Index: core/common/src/main/java/com/looker/core/common/SdkCheck.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/java/com/looker/core/common/SdkCheck.kt b/core/common/src/main/java/com/looker/core/common/SdkCheck.kt +--- a/core/common/src/main/java/com/looker/core/common/SdkCheck.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/common/src/main/java/com/looker/core/common/SdkCheck.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.common ++package com.leos.core.common + + import android.os.Build + import androidx.annotation.ChecksSdkIntAtLeast +Index: core/common/src/main/java/com/looker/core/common/Singleton.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/java/com/looker/core/common/Singleton.kt b/core/common/src/main/java/com/looker/core/common/Singleton.kt +--- a/core/common/src/main/java/com/looker/core/common/Singleton.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/common/src/main/java/com/looker/core/common/Singleton.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.common ++package com.leos.core.common + + class Singleton { + private var value: T? = null +Index: core/common/src/main/java/com/looker/core/common/Text.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/java/com/looker/core/common/Text.kt b/core/common/src/main/java/com/looker/core/common/Text.kt +--- a/core/common/src/main/java/com/looker/core/common/Text.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/common/src/main/java/com/looker/core/common/Text.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.common ++package com.leos.core.common + + import android.util.Log + import java.util.Locale +Index: core/common/src/main/java/com/looker/core/common/cache/Cache.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/java/com/looker/core/common/cache/Cache.kt b/core/common/src/main/java/com/looker/core/common/cache/Cache.kt +--- a/core/common/src/main/java/com/looker/core/common/cache/Cache.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/common/src/main/java/com/looker/core/common/cache/Cache.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.common.cache ++package com.leos.core.common.cache + + import android.content.ContentProvider + import android.content.ContentValues +@@ -11,8 +11,8 @@ + import android.os.ParcelFileDescriptor + import android.provider.OpenableColumns + import android.system.Os +-import com.looker.core.common.SdkCheck +-import com.looker.core.common.sdkAbove ++import com.leos.core.common.SdkCheck ++import com.leos.core.common.sdkAbove + import java.io.File + import java.util.UUID + import kotlin.concurrent.thread +Index: core/common/src/main/java/com/looker/core/common/device/Huawei.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/java/com/looker/core/common/device/Huawei.kt b/core/common/src/main/java/com/looker/core/common/device/Huawei.kt +--- a/core/common/src/main/java/com/looker/core/common/device/Huawei.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/common/src/main/java/com/looker/core/common/device/Huawei.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.common.device ++package com.leos.core.common.device + + object Huawei { + val isHuaweiEmui: Boolean +Index: core/common/src/main/java/com/looker/core/common/device/Miui.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/java/com/looker/core/common/device/Miui.kt b/core/common/src/main/java/com/looker/core/common/device/Miui.kt +--- a/core/common/src/main/java/com/looker/core/common/device/Miui.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/common/src/main/java/com/looker/core/common/device/Miui.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.common.device ++package com.leos.core.common.device + + import android.annotation.SuppressLint + import android.util.Log +Index: core/common/src/main/java/com/looker/core/common/extension/Collections.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/java/com/looker/core/common/extension/Collections.kt b/core/common/src/main/java/com/looker/core/common/extension/Collections.kt +--- a/core/common/src/main/java/com/looker/core/common/extension/Collections.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/common/src/main/java/com/looker/core/common/extension/Collections.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.common.extension ++package com.leos.core.common.extension + + inline fun Map.updateAsMutable(block: MutableMap.() -> Unit): Map { + return toMutableMap().apply(block) +Index: core/common/src/main/java/com/looker/core/common/extension/Context.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/java/com/looker/core/common/extension/Context.kt b/core/common/src/main/java/com/looker/core/common/extension/Context.kt +--- a/core/common/src/main/java/com/looker/core/common/extension/Context.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/common/src/main/java/com/looker/core/common/extension/Context.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.common.extension ++package com.leos.core.common.extension + + import android.app.NotificationManager + import android.app.job.JobScheduler +@@ -14,7 +14,7 @@ + import androidx.appcompat.content.res.AppCompatResources + import androidx.core.content.ContextCompat + import androidx.core.content.getSystemService +-import com.looker.core.common.R ++import com.leos.core.common.R + + inline val Context.clipboardManager: ClipboardManager? + get() = getSystemService() +Index: core/common/src/main/java/com/looker/core/common/extension/Cursor.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/java/com/looker/core/common/extension/Cursor.kt b/core/common/src/main/java/com/looker/core/common/extension/Cursor.kt +--- a/core/common/src/main/java/com/looker/core/common/extension/Cursor.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/common/src/main/java/com/looker/core/common/extension/Cursor.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.common.extension ++package com.leos.core.common.extension + + import android.database.Cursor + +Index: core/common/src/main/java/com/looker/core/common/extension/DateTime.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/java/com/looker/core/common/extension/DateTime.kt b/core/common/src/main/java/com/looker/core/common/extension/DateTime.kt +--- a/core/common/src/main/java/com/looker/core/common/extension/DateTime.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/common/src/main/java/com/looker/core/common/extension/DateTime.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.common.extension ++package com.leos.core.common.extension + + import java.text.SimpleDateFormat + import java.util.Date +Index: core/common/src/main/java/com/looker/core/common/extension/Exception.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/java/com/looker/core/common/extension/Exception.kt b/core/common/src/main/java/com/looker/core/common/extension/Exception.kt +--- a/core/common/src/main/java/com/looker/core/common/extension/Exception.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/common/src/main/java/com/looker/core/common/extension/Exception.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.common.extension ++package com.leos.core.common.extension + + import kotlinx.coroutines.CancellationException + +Index: core/common/src/main/java/com/looker/core/common/extension/File.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/java/com/looker/core/common/extension/File.kt b/core/common/src/main/java/com/looker/core/common/extension/File.kt +--- a/core/common/src/main/java/com/looker/core/common/extension/File.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/common/src/main/java/com/looker/core/common/extension/File.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.common.extension ++package com.leos.core.common.extension + + import java.io.File + import java.io.InputStream +Index: core/common/src/main/java/com/looker/core/common/extension/Fingerprint.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/java/com/looker/core/common/extension/Fingerprint.kt b/core/common/src/main/java/com/looker/core/common/extension/Fingerprint.kt +--- a/core/common/src/main/java/com/looker/core/common/extension/Fingerprint.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/common/src/main/java/com/looker/core/common/extension/Fingerprint.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,6 +1,6 @@ +-package com.looker.core.common.extension ++package com.leos.core.common.extension + +-import com.looker.core.common.hex ++import com.leos.core.common.hex + import java.security.MessageDigest + import java.security.cert.Certificate + import java.security.cert.CertificateEncodingException +Index: core/common/src/main/java/com/looker/core/common/extension/Flow.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/java/com/looker/core/common/extension/Flow.kt b/core/common/src/main/java/com/looker/core/common/extension/Flow.kt +--- a/core/common/src/main/java/com/looker/core/common/extension/Flow.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/common/src/main/java/com/looker/core/common/extension/Flow.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.common.extension ++package com.leos.core.common.extension + + import androidx.lifecycle.ViewModel + import androidx.lifecycle.viewModelScope +Index: core/common/src/main/java/com/looker/core/common/extension/Insets.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/java/com/looker/core/common/extension/Insets.kt b/core/common/src/main/java/com/looker/core/common/extension/Insets.kt +--- a/core/common/src/main/java/com/looker/core/common/extension/Insets.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/common/src/main/java/com/looker/core/common/extension/Insets.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.common.extension ++package com.leos.core.common.extension + + import android.view.View + import android.view.ViewGroup +@@ -10,11 +10,11 @@ + import androidx.core.view.updatePadding + import androidx.core.widget.NestedScrollView + import androidx.recyclerview.widget.RecyclerView +-import com.looker.core.common.SdkCheck +-import com.looker.core.common.extension.InsetSides.BOTTOM +-import com.looker.core.common.extension.InsetSides.LEFT +-import com.looker.core.common.extension.InsetSides.RIGHT +-import com.looker.core.common.extension.InsetSides.TOP ++import com.leos.core.common.SdkCheck ++import com.leos.core.common.extension.InsetSides.BOTTOM ++import com.leos.core.common.extension.InsetSides.LEFT ++import com.leos.core.common.extension.InsetSides.RIGHT ++import com.leos.core.common.extension.InsetSides.TOP + + fun View.systemBarsMargin( + persistentPadding: Int, +Index: core/common/src/main/java/com/looker/core/common/extension/Intent.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/java/com/looker/core/common/extension/Intent.kt b/core/common/src/main/java/com/looker/core/common/extension/Intent.kt +--- a/core/common/src/main/java/com/looker/core/common/extension/Intent.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/common/src/main/java/com/looker/core/common/extension/Intent.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,11 +1,11 @@ +-package com.looker.core.common.extension ++package com.leos.core.common.extension + + import android.app.PendingIntent + import android.content.Context + import android.content.Intent + import android.net.Uri + import androidx.core.app.TaskStackBuilder +-import com.looker.core.common.SdkCheck ++import com.leos.core.common.SdkCheck + + inline val intentFlagCompat + get() = if (SdkCheck.isSnowCake) { +Index: core/common/src/main/java/com/looker/core/common/extension/JarFile.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/java/com/looker/core/common/extension/JarFile.kt b/core/common/src/main/java/com/looker/core/common/extension/JarFile.kt +--- a/core/common/src/main/java/com/looker/core/common/extension/JarFile.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/common/src/main/java/com/looker/core/common/extension/JarFile.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.common.extension ++package com.leos.core.common.extension + + import java.io.File + import java.security.CodeSigner +Index: core/common/src/main/java/com/looker/core/common/extension/Json.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/java/com/looker/core/common/extension/Json.kt b/core/common/src/main/java/com/looker/core/common/extension/Json.kt +--- a/core/common/src/main/java/com/looker/core/common/extension/Json.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/common/src/main/java/com/looker/core/common/extension/Json.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.common.extension ++package com.leos.core.common.extension + + import com.fasterxml.jackson.core.JsonFactory + import com.fasterxml.jackson.core.JsonGenerator +Index: core/common/src/main/java/com/looker/core/common/extension/Locale.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/java/com/looker/core/common/extension/Locale.kt b/core/common/src/main/java/com/looker/core/common/extension/Locale.kt +--- a/core/common/src/main/java/com/looker/core/common/extension/Locale.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/common/src/main/java/com/looker/core/common/extension/Locale.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.common.extension ++package com.leos.core.common.extension + + import java.util.Locale + +Index: core/common/src/main/java/com/looker/core/common/extension/Network.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/java/com/looker/core/common/extension/Network.kt b/core/common/src/main/java/com/looker/core/common/extension/Network.kt +--- a/core/common/src/main/java/com/looker/core/common/extension/Network.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/common/src/main/java/com/looker/core/common/extension/Network.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.common.extension ++package com.leos.core.common.extension + + import androidx.core.net.toUri + +Index: core/common/src/main/java/com/looker/core/common/extension/Number.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/java/com/looker/core/common/extension/Number.kt b/core/common/src/main/java/com/looker/core/common/extension/Number.kt +--- a/core/common/src/main/java/com/looker/core/common/extension/Number.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/common/src/main/java/com/looker/core/common/extension/Number.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,9 +1,9 @@ +-package com.looker.core.common.extension ++package com.leos.core.common.extension + + import android.content.res.Resources + import android.util.TypedValue + import android.view.View +-import com.looker.core.common.DataSize ++import com.leos.core.common.DataSize + import kotlin.math.roundToInt + + infix fun Long.percentBy(denominator: Long?): Int { +Index: core/common/src/main/java/com/looker/core/common/extension/PackageInfo.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/java/com/looker/core/common/extension/PackageInfo.kt b/core/common/src/main/java/com/looker/core/common/extension/PackageInfo.kt +--- a/core/common/src/main/java/com/looker/core/common/extension/PackageInfo.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/common/src/main/java/com/looker/core/common/extension/PackageInfo.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,9 +1,9 @@ +-package com.looker.core.common.extension ++package com.leos.core.common.extension + + import android.content.Intent + import android.content.pm.* +-import com.looker.core.common.SdkCheck +-import com.looker.core.common.hex ++import com.leos.core.common.SdkCheck ++import com.leos.core.common.hex + import java.security.MessageDigest + + val PackageInfo.singleSignature: Signature? +Index: core/common/src/main/java/com/looker/core/common/extension/SQLiteDatabase.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/java/com/looker/core/common/extension/SQLiteDatabase.kt b/core/common/src/main/java/com/looker/core/common/extension/SQLiteDatabase.kt +--- a/core/common/src/main/java/com/looker/core/common/extension/SQLiteDatabase.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/common/src/main/java/com/looker/core/common/extension/SQLiteDatabase.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.common.extension ++package com.leos.core.common.extension + + import android.database.sqlite.SQLiteDatabase + +Index: core/common/src/main/java/com/looker/core/common/extension/Service.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/java/com/looker/core/common/extension/Service.kt b/core/common/src/main/java/com/looker/core/common/extension/Service.kt +--- a/core/common/src/main/java/com/looker/core/common/extension/Service.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/common/src/main/java/com/looker/core/common/extension/Service.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,8 +1,8 @@ +-package com.looker.core.common.extension ++package com.leos.core.common.extension + + import android.app.Service + import android.content.Intent +-import com.looker.core.common.SdkCheck ++import com.leos.core.common.SdkCheck + + fun Service.startSelf() { + val intent = Intent(this, this::class.java) +Index: core/common/src/main/java/com/looker/core/common/extension/View.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/java/com/looker/core/common/extension/View.kt b/core/common/src/main/java/com/looker/core/common/extension/View.kt +--- a/core/common/src/main/java/com/looker/core/common/extension/View.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/common/src/main/java/com/looker/core/common/extension/View.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.common.extension ++package com.leos.core.common.extension + + import android.util.TypedValue + import android.view.LayoutInflater +Index: core/common/src/main/java/com/looker/core/common/result/Result.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/java/com/looker/core/common/result/Result.kt b/core/common/src/main/java/com/looker/core/common/result/Result.kt +--- a/core/common/src/main/java/com/looker/core/common/result/Result.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/common/src/main/java/com/looker/core/common/result/Result.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.common.result ++package com.leos.core.common.result + + sealed interface Result { + data class Success(val data: T) : Result +Index: core/common/src/main/java/com/looker/core/common/signature/FileValidator.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/java/com/looker/core/common/signature/FileValidator.kt b/core/common/src/main/java/com/looker/core/common/signature/FileValidator.kt +--- a/core/common/src/main/java/com/looker/core/common/signature/FileValidator.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/common/src/main/java/com/looker/core/common/signature/FileValidator.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.common.signature ++package com.leos.core.common.signature + + import java.io.File + +Index: core/common/src/main/java/com/looker/core/common/signature/HashChecker.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/main/java/com/looker/core/common/signature/HashChecker.kt b/core/common/src/main/java/com/looker/core/common/signature/HashChecker.kt +--- a/core/common/src/main/java/com/looker/core/common/signature/HashChecker.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/common/src/main/java/com/looker/core/common/signature/HashChecker.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,7 +1,7 @@ +-package com.looker.core.common.signature ++package com.leos.core.common.signature + +-import com.looker.core.common.extension.exceptCancellation +-import com.looker.core.common.hex ++import com.leos.core.common.extension.exceptCancellation ++import com.leos.core.common.hex + import java.io.File + import java.security.MessageDigest + import kotlinx.coroutines.* +Index: core/common/src/test/java/com/looker/core/common/signature/HashCheckerTest.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/common/src/test/java/com/looker/core/common/signature/HashCheckerTest.kt b/core/common/src/test/java/com/looker/core/common/signature/HashCheckerTest.kt +--- a/core/common/src/test/java/com/looker/core/common/signature/HashCheckerTest.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/common/src/test/java/com/looker/core/common/signature/HashCheckerTest.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.common.signature ++package com.leos.core.common.signature + + import java.io.File + import kotlin.test.Test +Index: core/data/build.gradle.kts +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/data/build.gradle.kts b/core/data/build.gradle.kts +--- a/core/data/build.gradle.kts (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/data/build.gradle.kts (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -5,7 +5,7 @@ + } + + android { +- namespace = "com.looker.core.data" ++ namespace = "com.leos.core.data" + + buildTypes { + release { +Index: core/data/src/main/java/com/looker/core/data/di/DataModule.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/data/src/main/java/com/looker/core/data/di/DataModule.kt b/core/data/src/main/java/com/looker/core/data/di/DataModule.kt +--- a/core/data/src/main/java/com/looker/core/data/di/DataModule.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/data/src/main/java/com/looker/core/data/di/DataModule.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,11 +1,11 @@ +-package com.looker.core.data.di ++package com.leos.core.data.di + +-import com.looker.core.data.fdroid.repository.AppRepository +-import com.looker.core.data.fdroid.repository.RepoRepository +-import com.looker.core.data.fdroid.repository.offline.OfflineFirstAppRepository +-import com.looker.core.data.fdroid.repository.offline.OfflineFirstRepoRepository +-import com.looker.core.data.fdroid.sync.IndexDownloader +-import com.looker.core.data.fdroid.sync.IndexDownloaderImpl ++import com.leos.core.data.fdroid.repository.AppRepository ++import com.leos.core.data.fdroid.repository.RepoRepository ++import com.leos.core.data.fdroid.repository.offline.OfflineFirstAppRepository ++import com.leos.core.data.fdroid.repository.offline.OfflineFirstRepoRepository ++import com.leos.core.data.fdroid.sync.IndexDownloader ++import com.leos.core.data.fdroid.sync.IndexDownloaderImpl + import dagger.Binds + import dagger.Module + import dagger.hilt.InstallIn +Index: core/data/src/main/java/com/looker/core/data/di/DataModuleSingleton.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/data/src/main/java/com/looker/core/data/di/DataModuleSingleton.kt b/core/data/src/main/java/com/looker/core/data/di/DataModuleSingleton.kt +--- a/core/data/src/main/java/com/looker/core/data/di/DataModuleSingleton.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/data/src/main/java/com/looker/core/data/di/DataModuleSingleton.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,7 +1,7 @@ +-package com.looker.core.data.di ++package com.leos.core.data.di + +-import com.looker.core.data.fdroid.sync.IndexDownloader +-import com.looker.core.data.fdroid.sync.IndexManager ++import com.leos.core.data.fdroid.sync.IndexDownloader ++import com.leos.core.data.fdroid.sync.IndexManager + import dagger.Module + import dagger.Provides + import dagger.hilt.InstallIn +Index: core/data/src/main/java/com/looker/core/data/fdroid/Mapper.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/data/src/main/java/com/looker/core/data/fdroid/Mapper.kt b/core/data/src/main/java/com/looker/core/data/fdroid/Mapper.kt +--- a/core/data/src/main/java/com/looker/core/data/fdroid/Mapper.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/data/src/main/java/com/looker/core/data/fdroid/Mapper.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,11 +1,11 @@ +-package com.looker.core.data.fdroid ++package com.leos.core.data.fdroid + +-import com.looker.core.database.model.AntiFeatureEntity +-import com.looker.core.database.model.AppEntity +-import com.looker.core.database.model.CategoryEntity +-import com.looker.core.database.model.PackageEntity +-import com.looker.core.database.model.PermissionEntity +-import com.looker.core.database.model.RepoEntity ++import com.leos.core.database.model.AntiFeatureEntity ++import com.leos.core.database.model.AppEntity ++import com.leos.core.database.model.CategoryEntity ++import com.leos.core.database.model.PackageEntity ++import com.leos.core.database.model.PermissionEntity ++import com.leos.core.database.model.RepoEntity + import org.fdroid.index.v2.PackageV2 + import org.fdroid.index.v2.PackageVersionV2 + import org.fdroid.index.v2.RepoV2 +Index: core/data/src/main/java/com/looker/core/data/fdroid/repository/AppRepository.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/data/src/main/java/com/looker/core/data/fdroid/repository/AppRepository.kt b/core/data/src/main/java/com/looker/core/data/fdroid/repository/AppRepository.kt +--- a/core/data/src/main/java/com/looker/core/data/fdroid/repository/AppRepository.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/data/src/main/java/com/looker/core/data/fdroid/repository/AppRepository.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,9 +1,9 @@ +-package com.looker.core.data.fdroid.repository ++package com.leos.core.data.fdroid.repository + +-import com.looker.core.common.PackageName +-import com.looker.core.domain.newer.App +-import com.looker.core.domain.newer.Author +-import com.looker.core.domain.newer.Package ++import com.leos.core.common.PackageName ++import com.leos.core.domain.newer.App ++import com.leos.core.domain.newer.Author ++import com.leos.core.domain.newer.Package + import kotlinx.coroutines.flow.Flow + + interface AppRepository { +Index: core/data/src/main/java/com/looker/core/data/fdroid/repository/RepoRepository.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/data/src/main/java/com/looker/core/data/fdroid/repository/RepoRepository.kt b/core/data/src/main/java/com/looker/core/data/fdroid/repository/RepoRepository.kt +--- a/core/data/src/main/java/com/looker/core/data/fdroid/repository/RepoRepository.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/data/src/main/java/com/looker/core/data/fdroid/repository/RepoRepository.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,6 +1,6 @@ +-package com.looker.core.data.fdroid.repository ++package com.leos.core.data.fdroid.repository + +-import com.looker.core.domain.newer.Repo ++import com.leos.core.domain.newer.Repo + import kotlinx.coroutines.flow.Flow + + interface RepoRepository { +Index: core/data/src/main/java/com/looker/core/data/fdroid/repository/offline/OfflineFirstAppRepository.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/data/src/main/java/com/looker/core/data/fdroid/repository/offline/OfflineFirstAppRepository.kt b/core/data/src/main/java/com/looker/core/data/fdroid/repository/offline/OfflineFirstAppRepository.kt +--- a/core/data/src/main/java/com/looker/core/data/fdroid/repository/offline/OfflineFirstAppRepository.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/data/src/main/java/com/looker/core/data/fdroid/repository/offline/OfflineFirstAppRepository.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,18 +1,18 @@ +-package com.looker.core.data.fdroid.repository.offline ++package com.leos.core.data.fdroid.repository.offline + +-import com.looker.core.common.PackageName +-import com.looker.core.data.fdroid.repository.AppRepository +-import com.looker.core.database.dao.AppDao +-import com.looker.core.database.dao.InstalledDao +-import com.looker.core.database.model.AppEntity +-import com.looker.core.database.model.InstalledEntity +-import com.looker.core.database.model.PackageEntity +-import com.looker.core.database.model.toExternal +-import com.looker.core.datastore.SettingsRepository +-import com.looker.core.datastore.get +-import com.looker.core.domain.newer.App +-import com.looker.core.domain.newer.Author +-import com.looker.core.domain.newer.Package ++import com.leos.core.common.PackageName ++import com.leos.core.data.fdroid.repository.AppRepository ++import com.leos.core.database.dao.AppDao ++import com.leos.core.database.dao.InstalledDao ++import com.leos.core.database.model.AppEntity ++import com.leos.core.database.model.InstalledEntity ++import com.leos.core.database.model.PackageEntity ++import com.leos.core.database.model.toExternal ++import com.leos.core.datastore.SettingsRepository ++import com.leos.core.datastore.get ++import com.leos.core.domain.newer.App ++import com.leos.core.domain.newer.Author ++import com.leos.core.domain.newer.Package + import javax.inject.Inject + import kotlinx.coroutines.async + import kotlinx.coroutines.coroutineScope +Index: core/data/src/main/java/com/looker/core/data/fdroid/repository/offline/OfflineFirstRepoRepository.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/data/src/main/java/com/looker/core/data/fdroid/repository/offline/OfflineFirstRepoRepository.kt b/core/data/src/main/java/com/looker/core/data/fdroid/repository/offline/OfflineFirstRepoRepository.kt +--- a/core/data/src/main/java/com/looker/core/data/fdroid/repository/offline/OfflineFirstRepoRepository.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/data/src/main/java/com/looker/core/data/fdroid/repository/offline/OfflineFirstRepoRepository.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,17 +1,17 @@ +-package com.looker.core.data.fdroid.repository.offline ++package com.leos.core.data.fdroid.repository.offline + +-import com.looker.core.common.extension.exceptCancellation +-import com.looker.core.data.fdroid.repository.RepoRepository +-import com.looker.core.data.fdroid.sync.IndexManager +-import com.looker.core.data.fdroid.toEntity +-import com.looker.core.database.dao.AppDao +-import com.looker.core.database.dao.RepoDao +-import com.looker.core.database.model.toExternal +-import com.looker.core.database.model.update +-import com.looker.core.datastore.SettingsRepository +-import com.looker.core.di.ApplicationScope +-import com.looker.core.di.DefaultDispatcher +-import com.looker.core.domain.newer.Repo ++import com.leos.core.common.extension.exceptCancellation ++import com.leos.core.data.fdroid.repository.RepoRepository ++import com.leos.core.data.fdroid.sync.IndexManager ++import com.leos.core.data.fdroid.toEntity ++import com.leos.core.database.dao.AppDao ++import com.leos.core.database.dao.RepoDao ++import com.leos.core.database.model.toExternal ++import com.leos.core.database.model.update ++import com.leos.core.datastore.SettingsRepository ++import com.leos.core.di.ApplicationScope ++import com.leos.core.di.DefaultDispatcher ++import com.leos.core.domain.newer.Repo + import javax.inject.Inject + import kotlinx.coroutines.CoroutineDispatcher + import kotlinx.coroutines.CoroutineScope +Index: core/data/src/main/java/com/looker/core/data/fdroid/sync/IndexDownloader.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/data/src/main/java/com/looker/core/data/fdroid/sync/IndexDownloader.kt b/core/data/src/main/java/com/looker/core/data/fdroid/sync/IndexDownloader.kt +--- a/core/data/src/main/java/com/looker/core/data/fdroid/sync/IndexDownloader.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/data/src/main/java/com/looker/core/data/fdroid/sync/IndexDownloader.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,6 +1,6 @@ +-package com.looker.core.data.fdroid.sync ++package com.leos.core.data.fdroid.sync + +-import com.looker.core.domain.newer.Repo ++import com.leos.core.domain.newer.Repo + import org.fdroid.index.v1.IndexV1 + import org.fdroid.index.v2.Entry + import org.fdroid.index.v2.IndexV2 +Index: core/data/src/main/java/com/looker/core/data/fdroid/sync/IndexDownloaderImpl.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/data/src/main/java/com/looker/core/data/fdroid/sync/IndexDownloaderImpl.kt b/core/data/src/main/java/com/looker/core/data/fdroid/sync/IndexDownloaderImpl.kt +--- a/core/data/src/main/java/com/looker/core/data/fdroid/sync/IndexDownloaderImpl.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/data/src/main/java/com/looker/core/data/fdroid/sync/IndexDownloaderImpl.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,11 +1,11 @@ +-package com.looker.core.data.fdroid.sync ++package com.leos.core.data.fdroid.sync + +-import com.looker.core.common.signature.FileValidator +-import com.looker.core.data.fdroid.sync.signature.EntryValidator +-import com.looker.core.data.fdroid.sync.signature.IndexValidator +-import com.looker.core.domain.newer.Repo +-import com.looker.network.Downloader +-import com.looker.network.NetworkResponse ++import com.leos.core.common.signature.FileValidator ++import com.leos.core.data.fdroid.sync.signature.EntryValidator ++import com.leos.core.data.fdroid.sync.signature.IndexValidator ++import com.leos.core.domain.newer.Repo ++import com.leos.network.Downloader ++import com.leos.network.NetworkResponse + import java.io.File + import java.io.InputStream + import java.util.Date +Index: core/data/src/main/java/com/looker/core/data/fdroid/sync/IndexManager.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/data/src/main/java/com/looker/core/data/fdroid/sync/IndexManager.kt b/core/data/src/main/java/com/looker/core/data/fdroid/sync/IndexManager.kt +--- a/core/data/src/main/java/com/looker/core/data/fdroid/sync/IndexManager.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/data/src/main/java/com/looker/core/data/fdroid/sync/IndexManager.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,6 +1,6 @@ +-package com.looker.core.data.fdroid.sync ++package com.leos.core.data.fdroid.sync + +-import com.looker.core.domain.newer.Repo ++import com.leos.core.domain.newer.Repo + import kotlinx.coroutines.Dispatchers + import kotlinx.coroutines.withContext + import org.fdroid.index.IndexConverter +Index: core/data/src/main/java/com/looker/core/data/fdroid/sync/IndexType.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/data/src/main/java/com/looker/core/data/fdroid/sync/IndexType.kt b/core/data/src/main/java/com/looker/core/data/fdroid/sync/IndexType.kt +--- a/core/data/src/main/java/com/looker/core/data/fdroid/sync/IndexType.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/data/src/main/java/com/looker/core/data/fdroid/sync/IndexType.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.data.fdroid.sync ++package com.leos.core.data.fdroid.sync + + enum class IndexType { + INDEX_V1, +Index: core/data/src/main/java/com/looker/core/data/fdroid/sync/signature/EntryValidator.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/data/src/main/java/com/looker/core/data/fdroid/sync/signature/EntryValidator.kt b/core/data/src/main/java/com/looker/core/data/fdroid/sync/signature/EntryValidator.kt +--- a/core/data/src/main/java/com/looker/core/data/fdroid/sync/signature/EntryValidator.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/data/src/main/java/com/looker/core/data/fdroid/sync/signature/EntryValidator.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,12 +1,12 @@ +-package com.looker.core.data.fdroid.sync.signature ++package com.leos.core.data.fdroid.sync.signature + +-import com.looker.core.common.extension.certificate +-import com.looker.core.common.extension.codeSigner +-import com.looker.core.common.extension.fingerprint +-import com.looker.core.common.extension.toJarFile +-import com.looker.core.common.signature.FileValidator +-import com.looker.core.common.signature.ValidationException +-import com.looker.core.domain.newer.Repo ++import com.leos.core.common.extension.certificate ++import com.leos.core.common.extension.codeSigner ++import com.leos.core.common.extension.fingerprint ++import com.leos.core.common.extension.toJarFile ++import com.leos.core.common.signature.FileValidator ++import com.leos.core.common.signature.ValidationException ++import com.leos.core.domain.newer.Repo + import kotlinx.coroutines.Dispatchers + import kotlinx.coroutines.withContext + import org.fdroid.index.IndexParser +Index: core/data/src/main/java/com/looker/core/data/fdroid/sync/signature/IndexValidator.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/data/src/main/java/com/looker/core/data/fdroid/sync/signature/IndexValidator.kt b/core/data/src/main/java/com/looker/core/data/fdroid/sync/signature/IndexValidator.kt +--- a/core/data/src/main/java/com/looker/core/data/fdroid/sync/signature/IndexValidator.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/data/src/main/java/com/looker/core/data/fdroid/sync/signature/IndexValidator.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,12 +1,12 @@ +-package com.looker.core.data.fdroid.sync.signature ++package com.leos.core.data.fdroid.sync.signature + +-import com.looker.core.common.extension.certificate +-import com.looker.core.common.extension.codeSigner +-import com.looker.core.common.extension.fingerprint +-import com.looker.core.common.extension.toJarFile +-import com.looker.core.common.signature.FileValidator +-import com.looker.core.common.signature.ValidationException +-import com.looker.core.domain.newer.Repo ++import com.leos.core.common.extension.certificate ++import com.leos.core.common.extension.codeSigner ++import com.leos.core.common.extension.fingerprint ++import com.leos.core.common.extension.toJarFile ++import com.leos.core.common.signature.FileValidator ++import com.leos.core.common.signature.ValidationException ++import com.leos.core.domain.newer.Repo + import kotlinx.coroutines.Dispatchers + import kotlinx.coroutines.withContext + import org.fdroid.index.IndexParser +Index: core/data/src/main/java/com/looker/core/data/fdroid/sync/workers/DelegatingWorker.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/data/src/main/java/com/looker/core/data/fdroid/sync/workers/DelegatingWorker.kt b/core/data/src/main/java/com/looker/core/data/fdroid/sync/workers/DelegatingWorker.kt +--- a/core/data/src/main/java/com/looker/core/data/fdroid/sync/workers/DelegatingWorker.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/data/src/main/java/com/looker/core/data/fdroid/sync/workers/DelegatingWorker.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.data.fdroid.sync.workers ++package com.leos.core.data.fdroid.sync.workers + + import android.content.Context + import androidx.hilt.work.HiltWorkerFactory +Index: core/data/src/main/java/com/looker/core/data/fdroid/sync/workers/SyncWorkHelper.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/data/src/main/java/com/looker/core/data/fdroid/sync/workers/SyncWorkHelper.kt b/core/data/src/main/java/com/looker/core/data/fdroid/sync/workers/SyncWorkHelper.kt +--- a/core/data/src/main/java/com/looker/core/data/fdroid/sync/workers/SyncWorkHelper.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/data/src/main/java/com/looker/core/data/fdroid/sync/workers/SyncWorkHelper.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.data.fdroid.sync.workers ++package com.leos.core.data.fdroid.sync.workers + + import android.app.Notification + import android.app.NotificationChannel +@@ -6,9 +6,9 @@ + import android.content.Context + import androidx.core.app.NotificationCompat + import androidx.work.ForegroundInfo +-import com.looker.core.common.R as CommonR +-import com.looker.core.common.SdkCheck +-import com.looker.core.common.extension.notificationManager ++import com.leos.core.common.R as CommonR ++import com.leos.core.common.SdkCheck ++import com.leos.core.common.extension.notificationManager + + private const val SyncNotificationID = 12 + private const val SyncNotificationChannelID = "SyncNotificationChannelID" +Index: core/data/src/main/java/com/looker/core/data/fdroid/sync/workers/SyncWorker.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/data/src/main/java/com/looker/core/data/fdroid/sync/workers/SyncWorker.kt b/core/data/src/main/java/com/looker/core/data/fdroid/sync/workers/SyncWorker.kt +--- a/core/data/src/main/java/com/looker/core/data/fdroid/sync/workers/SyncWorker.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/data/src/main/java/com/looker/core/data/fdroid/sync/workers/SyncWorker.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.data.fdroid.sync.workers ++package com.leos.core.data.fdroid.sync.workers + + import android.content.Context + import android.util.Log +@@ -14,7 +14,7 @@ + import androidx.work.PeriodicWorkRequestBuilder + import androidx.work.WorkManager + import androidx.work.WorkerParameters +-import com.looker.core.data.fdroid.repository.RepoRepository ++import com.leos.core.data.fdroid.repository.RepoRepository + import dagger.assisted.Assisted + import dagger.assisted.AssistedInject + import java.util.concurrent.TimeUnit +Index: core/data/src/main/java/com/looker/core/data/utils/ConnectivityManagerNetworkMonitor.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/data/src/main/java/com/looker/core/data/utils/ConnectivityManagerNetworkMonitor.kt b/core/data/src/main/java/com/looker/core/data/utils/ConnectivityManagerNetworkMonitor.kt +--- a/core/data/src/main/java/com/looker/core/data/utils/ConnectivityManagerNetworkMonitor.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/data/src/main/java/com/looker/core/data/utils/ConnectivityManagerNetworkMonitor.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,11 +1,11 @@ +-package com.looker.core.data.utils ++package com.leos.core.data.utils + + import android.content.Context + import android.net.ConnectivityManager + import android.net.Network + import android.net.NetworkCapabilities + import android.net.NetworkRequest +-import com.looker.core.common.extension.connectivityManager ++import com.leos.core.common.extension.connectivityManager + import dagger.hilt.android.qualifiers.ApplicationContext + import javax.inject.Inject + import kotlinx.coroutines.channels.awaitClose +Index: core/data/src/main/java/com/looker/core/data/utils/NetworkMonitor.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/data/src/main/java/com/looker/core/data/utils/NetworkMonitor.kt b/core/data/src/main/java/com/looker/core/data/utils/NetworkMonitor.kt +--- a/core/data/src/main/java/com/looker/core/data/utils/NetworkMonitor.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/data/src/main/java/com/looker/core/data/utils/NetworkMonitor.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.data.utils ++package com.leos.core.data.utils + + import kotlinx.coroutines.flow.Flow + +Index: core/data/src/main/java/com/looker/core/data/utils/SyncStatusMonitor.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/data/src/main/java/com/looker/core/data/utils/SyncStatusMonitor.kt b/core/data/src/main/java/com/looker/core/data/utils/SyncStatusMonitor.kt +--- a/core/data/src/main/java/com/looker/core/data/utils/SyncStatusMonitor.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/data/src/main/java/com/looker/core/data/utils/SyncStatusMonitor.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.data.utils ++package com.leos.core.data.utils + + import kotlinx.coroutines.flow.Flow + +Index: core/database/build.gradle.kts +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/database/build.gradle.kts b/core/database/build.gradle.kts +--- a/core/database/build.gradle.kts (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/database/build.gradle.kts (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -6,7 +6,7 @@ + } + + android { +- namespace = "com.looker.core.database" ++ namespace = "com.leos.core.database" + + buildTypes { + release { +Index: core/database/src/main/java/com/looker/core/database/Converters.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/database/src/main/java/com/looker/core/database/Converters.kt b/core/database/src/main/java/com/looker/core/database/Converters.kt +--- a/core/database/src/main/java/com/looker/core/database/Converters.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/database/src/main/java/com/looker/core/database/Converters.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,11 +1,11 @@ +-package com.looker.core.database ++package com.leos.core.database + + import androidx.room.TypeConverter +-import com.looker.core.database.model.AntiFeatureEntity +-import com.looker.core.database.model.CategoryEntity +-import com.looker.core.database.model.LocalizedList +-import com.looker.core.database.model.LocalizedString +-import com.looker.core.database.model.PackageEntity ++import com.leos.core.database.model.AntiFeatureEntity ++import com.leos.core.database.model.CategoryEntity ++import com.leos.core.database.model.LocalizedList ++import com.leos.core.database.model.LocalizedString ++import com.leos.core.database.model.PackageEntity + import kotlinx.serialization.builtins.ListSerializer + import kotlinx.serialization.builtins.MapSerializer + import kotlinx.serialization.builtins.serializer +Index: core/database/src/main/java/com/looker/core/database/DroidifyDatabase.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/database/src/main/java/com/looker/core/database/DroidifyDatabase.kt b/core/database/src/main/java/com/looker/core/database/DroidifyDatabase.kt +--- a/core/database/src/main/java/com/looker/core/database/DroidifyDatabase.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/database/src/main/java/com/looker/core/database/DroidifyDatabase.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,14 +1,14 @@ +-package com.looker.core.database ++package com.leos.core.database + + import androidx.room.Database + import androidx.room.RoomDatabase + import androidx.room.TypeConverters +-import com.looker.core.database.dao.AppDao +-import com.looker.core.database.dao.InstalledDao +-import com.looker.core.database.dao.RepoDao +-import com.looker.core.database.model.AppEntity +-import com.looker.core.database.model.InstalledEntity +-import com.looker.core.database.model.RepoEntity ++import com.leos.core.database.dao.AppDao ++import com.leos.core.database.dao.InstalledDao ++import com.leos.core.database.dao.RepoDao ++import com.leos.core.database.model.AppEntity ++import com.leos.core.database.model.InstalledEntity ++import com.leos.core.database.model.RepoEntity + + @Database( + version = 1, +Index: core/database/src/main/java/com/looker/core/database/dao/AppDao.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/database/src/main/java/com/looker/core/database/dao/AppDao.kt b/core/database/src/main/java/com/looker/core/database/dao/AppDao.kt +--- a/core/database/src/main/java/com/looker/core/database/dao/AppDao.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/database/src/main/java/com/looker/core/database/dao/AppDao.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,12 +1,12 @@ +-package com.looker.core.database.dao ++package com.leos.core.database.dao + + import androidx.room.Dao + import androidx.room.Insert + import androidx.room.OnConflictStrategy + import androidx.room.Query + import androidx.room.Upsert +-import com.looker.core.database.model.AppEntity +-import com.looker.core.database.model.PackageEntity ++import com.leos.core.database.model.AppEntity ++import com.leos.core.database.model.PackageEntity + import kotlinx.coroutines.flow.Flow + + @Dao +Index: core/database/src/main/java/com/looker/core/database/dao/InstalledDao.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/database/src/main/java/com/looker/core/database/dao/InstalledDao.kt b/core/database/src/main/java/com/looker/core/database/dao/InstalledDao.kt +--- a/core/database/src/main/java/com/looker/core/database/dao/InstalledDao.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/database/src/main/java/com/looker/core/database/dao/InstalledDao.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,7 +1,7 @@ +-package com.looker.core.database.dao ++package com.leos.core.database.dao + + import androidx.room.* +-import com.looker.core.database.model.InstalledEntity ++import com.leos.core.database.model.InstalledEntity + import kotlinx.coroutines.flow.Flow + + @Dao +Index: core/database/src/main/java/com/looker/core/database/dao/RepoDao.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/database/src/main/java/com/looker/core/database/dao/RepoDao.kt b/core/database/src/main/java/com/looker/core/database/dao/RepoDao.kt +--- a/core/database/src/main/java/com/looker/core/database/dao/RepoDao.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/database/src/main/java/com/looker/core/database/dao/RepoDao.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,9 +1,9 @@ +-package com.looker.core.database.dao ++package com.leos.core.database.dao + + import androidx.room.Dao + import androidx.room.Query + import androidx.room.Upsert +-import com.looker.core.database.model.RepoEntity ++import com.leos.core.database.model.RepoEntity + import kotlinx.coroutines.flow.Flow + + @Dao +Index: core/database/src/main/java/com/looker/core/database/di/DaoModule.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/database/src/main/java/com/looker/core/database/di/DaoModule.kt b/core/database/src/main/java/com/looker/core/database/di/DaoModule.kt +--- a/core/database/src/main/java/com/looker/core/database/di/DaoModule.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/database/src/main/java/com/looker/core/database/di/DaoModule.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,9 +1,9 @@ +-package com.looker.core.database.di ++package com.leos.core.database.di + +-import com.looker.core.database.DroidifyDatabase +-import com.looker.core.database.dao.AppDao +-import com.looker.core.database.dao.InstalledDao +-import com.looker.core.database.dao.RepoDao ++import com.leos.core.database.DroidifyDatabase ++import com.leos.core.database.dao.AppDao ++import com.leos.core.database.dao.InstalledDao ++import com.leos.core.database.dao.RepoDao + import dagger.Module + import dagger.Provides + import dagger.hilt.InstallIn +Index: core/database/src/main/java/com/looker/core/database/di/DatabaseModule.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/database/src/main/java/com/looker/core/database/di/DatabaseModule.kt b/core/database/src/main/java/com/looker/core/database/di/DatabaseModule.kt +--- a/core/database/src/main/java/com/looker/core/database/di/DatabaseModule.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/database/src/main/java/com/looker/core/database/di/DatabaseModule.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,8 +1,8 @@ +-package com.looker.core.database.di ++package com.leos.core.database.di + + import android.content.Context + import androidx.room.Room +-import com.looker.core.database.DroidifyDatabase ++import com.leos.core.database.DroidifyDatabase + import dagger.Module + import dagger.Provides + import dagger.hilt.InstallIn +Index: core/database/src/main/java/com/looker/core/database/model/AppEntity.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/database/src/main/java/com/looker/core/database/model/AppEntity.kt b/core/database/src/main/java/com/looker/core/database/model/AppEntity.kt +--- a/core/database/src/main/java/com/looker/core/database/model/AppEntity.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/database/src/main/java/com/looker/core/database/model/AppEntity.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,17 +1,17 @@ +-package com.looker.core.database.model ++package com.leos.core.database.model + + import androidx.room.ColumnInfo + import androidx.room.Entity +-import com.looker.core.common.nullIfEmpty +-import com.looker.core.common.toPackageName +-import com.looker.core.database.utils.localizedValue +-import com.looker.core.domain.newer.App +-import com.looker.core.domain.newer.Author +-import com.looker.core.domain.newer.Donation +-import com.looker.core.domain.newer.Graphics +-import com.looker.core.domain.newer.Links +-import com.looker.core.domain.newer.Metadata +-import com.looker.core.domain.newer.Screenshots ++import com.leos.core.common.nullIfEmpty ++import com.leos.core.common.toPackageName ++import com.leos.core.database.utils.localizedValue ++import com.leos.core.domain.newer.App ++import com.leos.core.domain.newer.Author ++import com.leos.core.domain.newer.Donation ++import com.leos.core.domain.newer.Graphics ++import com.leos.core.domain.newer.Links ++import com.leos.core.domain.newer.Metadata ++import com.leos.core.domain.newer.Screenshots + + internal typealias LocalizedString = Map + internal typealias LocalizedList = Map> +Index: core/database/src/main/java/com/looker/core/database/model/InstalledEntity.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/database/src/main/java/com/looker/core/database/model/InstalledEntity.kt b/core/database/src/main/java/com/looker/core/database/model/InstalledEntity.kt +--- a/core/database/src/main/java/com/looker/core/database/model/InstalledEntity.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/database/src/main/java/com/looker/core/database/model/InstalledEntity.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.database.model ++package com.leos.core.database.model + + import androidx.room.Entity + import androidx.room.PrimaryKey +Index: core/database/src/main/java/com/looker/core/database/model/PackageEntity.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/database/src/main/java/com/looker/core/database/model/PackageEntity.kt b/core/database/src/main/java/com/looker/core/database/model/PackageEntity.kt +--- a/core/database/src/main/java/com/looker/core/database/model/PackageEntity.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/database/src/main/java/com/looker/core/database/model/PackageEntity.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,12 +1,12 @@ +-package com.looker.core.database.model ++package com.leos.core.database.model + +-import com.looker.core.database.utils.localizedValue +-import com.looker.core.domain.newer.ApkFile +-import com.looker.core.domain.newer.Manifest +-import com.looker.core.domain.newer.Package +-import com.looker.core.domain.newer.Permission +-import com.looker.core.domain.newer.Platforms +-import com.looker.core.domain.newer.SDKs ++import com.leos.core.database.utils.localizedValue ++import com.leos.core.domain.newer.ApkFile ++import com.leos.core.domain.newer.Manifest ++import com.leos.core.domain.newer.Package ++import com.leos.core.domain.newer.Permission ++import com.leos.core.domain.newer.Platforms ++import com.leos.core.domain.newer.SDKs + import kotlinx.serialization.Serializable + + @Serializable +Index: core/database/src/main/java/com/looker/core/database/model/RepoEntity.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/database/src/main/java/com/looker/core/database/model/RepoEntity.kt b/core/database/src/main/java/com/looker/core/database/model/RepoEntity.kt +--- a/core/database/src/main/java/com/looker/core/database/model/RepoEntity.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/database/src/main/java/com/looker/core/database/model/RepoEntity.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,13 +1,13 @@ +-package com.looker.core.database.model ++package com.leos.core.database.model + + import androidx.room.Entity + import androidx.room.PrimaryKey +-import com.looker.core.database.utils.localizedValue +-import com.looker.core.domain.newer.AntiFeature +-import com.looker.core.domain.newer.Authentication +-import com.looker.core.domain.newer.Category +-import com.looker.core.domain.newer.Repo +-import com.looker.core.domain.newer.VersionInfo ++import com.leos.core.database.utils.localizedValue ++import com.leos.core.domain.newer.AntiFeature ++import com.leos.core.domain.newer.Authentication ++import com.leos.core.domain.newer.Category ++import com.leos.core.domain.newer.Repo ++import com.leos.core.domain.newer.VersionInfo + import kotlinx.serialization.Serializable + + @Entity(tableName = "repos") +Index: core/database/src/main/java/com/looker/core/database/utils/Localization.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/database/src/main/java/com/looker/core/database/utils/Localization.kt b/core/database/src/main/java/com/looker/core/database/utils/Localization.kt +--- a/core/database/src/main/java/com/looker/core/database/utils/Localization.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/database/src/main/java/com/looker/core/database/utils/Localization.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,7 +1,7 @@ +-package com.looker.core.database.utils ++package com.leos.core.database.utils + + import androidx.core.os.LocaleListCompat +-import com.looker.core.common.stripBetween ++import com.leos.core.common.stripBetween + import java.util.Locale + + internal fun localeListCompat(tag: String): LocaleListCompat = +Index: core/database/src/test/java/com/looker/core/database/LocalizationTest.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/database/src/test/java/com/looker/core/database/LocalizationTest.kt b/core/database/src/test/java/com/looker/core/database/LocalizationTest.kt +--- a/core/database/src/test/java/com/looker/core/database/LocalizationTest.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/database/src/test/java/com/looker/core/database/LocalizationTest.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,11 +1,11 @@ +-package com.looker.core.database ++package com.leos.core.database + + import androidx.core.os.LocaleListCompat + import androidx.core.os.LocaleListCompat.getEmptyLocaleList +-import com.looker.core.database.utils.localeListCompat +-import com.looker.core.database.utils.localizedValue +-import com.looker.core.database.utils.suitableLocale +-import com.looker.core.database.utils.suitableTag ++import com.leos.core.database.utils.localeListCompat ++import com.leos.core.database.utils.localizedValue ++import com.leos.core.database.utils.suitableLocale ++import com.leos.core.database.utils.suitableTag + import org.junit.Test + import java.util.Locale + import kotlin.test.assertEquals +Index: core/datastore/build.gradle.kts +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/datastore/build.gradle.kts b/core/datastore/build.gradle.kts +--- a/core/datastore/build.gradle.kts (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/datastore/build.gradle.kts (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -6,7 +6,7 @@ + } + + android { +- namespace = "com.looker.core.datastore" ++ namespace = "com.leos.core.datastore" + + buildTypes { + release { +Index: core/datastore/src/main/java/com/looker/core/datastore/DataStoreSettingsRepository.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/datastore/src/main/java/com/looker/core/datastore/DataStoreSettingsRepository.kt b/core/datastore/src/main/java/com/looker/core/datastore/DataStoreSettingsRepository.kt +--- a/core/datastore/src/main/java/com/looker/core/datastore/DataStoreSettingsRepository.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/datastore/src/main/java/com/looker/core/datastore/DataStoreSettingsRepository.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,15 +1,15 @@ +-package com.looker.core.datastore ++package com.leos.core.datastore + + import android.net.Uri + import android.util.Log + import androidx.datastore.core.DataStore +-import com.looker.core.common.Exporter +-import com.looker.core.common.extension.updateAsMutable +-import com.looker.core.datastore.model.AutoSync +-import com.looker.core.datastore.model.InstallerType +-import com.looker.core.datastore.model.ProxyType +-import com.looker.core.datastore.model.SortOrder +-import com.looker.core.datastore.model.Theme ++import com.leos.core.common.Exporter ++import com.leos.core.common.extension.updateAsMutable ++import com.leos.core.datastore.model.AutoSync ++import com.leos.core.datastore.model.InstallerType ++import com.leos.core.datastore.model.ProxyType ++import com.leos.core.datastore.model.SortOrder ++import com.leos.core.datastore.model.Theme + import kotlinx.coroutines.flow.Flow + import kotlinx.coroutines.flow.catch + import kotlinx.coroutines.flow.first +Index: core/datastore/src/main/java/com/looker/core/datastore/Settings.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/datastore/src/main/java/com/looker/core/datastore/Settings.kt b/core/datastore/src/main/java/com/looker/core/datastore/Settings.kt +--- a/core/datastore/src/main/java/com/looker/core/datastore/Settings.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/datastore/src/main/java/com/looker/core/datastore/Settings.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,11 +1,11 @@ +-package com.looker.core.datastore ++package com.leos.core.datastore + + import androidx.datastore.core.Serializer +-import com.looker.core.datastore.model.AutoSync +-import com.looker.core.datastore.model.InstallerType +-import com.looker.core.datastore.model.ProxyPreference +-import com.looker.core.datastore.model.SortOrder +-import com.looker.core.datastore.model.Theme ++import com.leos.core.datastore.model.AutoSync ++import com.leos.core.datastore.model.InstallerType ++import com.leos.core.datastore.model.ProxyPreference ++import com.leos.core.datastore.model.SortOrder ++import com.leos.core.datastore.model.Theme + import java.io.IOException + import java.io.InputStream + import java.io.OutputStream +Index: core/datastore/src/main/java/com/looker/core/datastore/SettingsRepository.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/datastore/src/main/java/com/looker/core/datastore/SettingsRepository.kt b/core/datastore/src/main/java/com/looker/core/datastore/SettingsRepository.kt +--- a/core/datastore/src/main/java/com/looker/core/datastore/SettingsRepository.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/datastore/src/main/java/com/looker/core/datastore/SettingsRepository.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,11 +1,11 @@ +-package com.looker.core.datastore ++package com.leos.core.datastore + + import android.net.Uri +-import com.looker.core.datastore.model.AutoSync +-import com.looker.core.datastore.model.InstallerType +-import com.looker.core.datastore.model.ProxyType +-import com.looker.core.datastore.model.SortOrder +-import com.looker.core.datastore.model.Theme ++import com.leos.core.datastore.model.AutoSync ++import com.leos.core.datastore.model.InstallerType ++import com.leos.core.datastore.model.ProxyType ++import com.leos.core.datastore.model.SortOrder ++import com.leos.core.datastore.model.Theme + import kotlinx.coroutines.flow.Flow + import kotlinx.coroutines.flow.distinctUntilChanged + import kotlinx.coroutines.flow.map +Index: core/datastore/src/main/java/com/looker/core/datastore/di/DatastoreModule.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/datastore/src/main/java/com/looker/core/datastore/di/DatastoreModule.kt b/core/datastore/src/main/java/com/looker/core/datastore/di/DatastoreModule.kt +--- a/core/datastore/src/main/java/com/looker/core/datastore/di/DatastoreModule.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/datastore/src/main/java/com/looker/core/datastore/di/DatastoreModule.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.datastore.di ++package com.leos.core.datastore.di + + import android.content.Context + import androidx.datastore.core.DataStore +@@ -7,15 +7,15 @@ + import androidx.datastore.preferences.core.PreferenceDataStoreFactory + import androidx.datastore.preferences.core.Preferences + import androidx.datastore.preferences.preferencesDataStoreFile +-import com.looker.core.common.Exporter +-import com.looker.core.datastore.DataStoreSettingsRepository +-import com.looker.core.datastore.Settings +-import com.looker.core.datastore.SettingsRepository +-import com.looker.core.datastore.SettingsSerializer +-import com.looker.core.datastore.exporter.SettingsExporter +-import com.looker.core.datastore.migration.ProtoDataStoreMigration +-import com.looker.core.di.ApplicationScope +-import com.looker.core.di.IoDispatcher ++import com.leos.core.common.Exporter ++import com.leos.core.datastore.DataStoreSettingsRepository ++import com.leos.core.datastore.Settings ++import com.leos.core.datastore.SettingsRepository ++import com.leos.core.datastore.SettingsSerializer ++import com.leos.core.datastore.exporter.SettingsExporter ++import com.leos.core.datastore.migration.ProtoDataStoreMigration ++import com.leos.core.di.ApplicationScope ++import com.leos.core.di.IoDispatcher + import dagger.Module + import dagger.Provides + import dagger.hilt.InstallIn +Index: core/datastore/src/main/java/com/looker/core/datastore/exporter/SettingsExporter.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/datastore/src/main/java/com/looker/core/datastore/exporter/SettingsExporter.kt b/core/datastore/src/main/java/com/looker/core/datastore/exporter/SettingsExporter.kt +--- a/core/datastore/src/main/java/com/looker/core/datastore/exporter/SettingsExporter.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/datastore/src/main/java/com/looker/core/datastore/exporter/SettingsExporter.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,9 +1,9 @@ +-package com.looker.core.datastore.exporter ++package com.leos.core.datastore.exporter + + import android.content.Context + import android.net.Uri +-import com.looker.core.common.Exporter +-import com.looker.core.datastore.Settings ++import com.leos.core.common.Exporter ++import com.leos.core.datastore.Settings + import kotlinx.coroutines.CoroutineDispatcher + import kotlinx.coroutines.CoroutineScope + import kotlinx.coroutines.cancel +Index: core/datastore/src/main/java/com/looker/core/datastore/extension/Preferences.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/datastore/src/main/java/com/looker/core/datastore/extension/Preferences.kt b/core/datastore/src/main/java/com/looker/core/datastore/extension/Preferences.kt +--- a/core/datastore/src/main/java/com/looker/core/datastore/extension/Preferences.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/datastore/src/main/java/com/looker/core/datastore/extension/Preferences.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,16 +1,16 @@ +-package com.looker.core.datastore.extension ++package com.leos.core.datastore.extension + + import android.content.Context + import android.content.res.Configuration +-import com.looker.core.common.R +-import com.looker.core.common.R.string as stringRes +-import com.looker.core.common.R.style as styleRes +-import com.looker.core.common.SdkCheck +-import com.looker.core.datastore.model.AutoSync +-import com.looker.core.datastore.model.InstallerType +-import com.looker.core.datastore.model.ProxyType +-import com.looker.core.datastore.model.SortOrder +-import com.looker.core.datastore.model.Theme ++import com.leos.core.common.R ++import com.leos.core.common.R.string as stringRes ++import com.leos.core.common.R.style as styleRes ++import com.leos.core.common.SdkCheck ++import com.leos.core.datastore.model.AutoSync ++import com.leos.core.datastore.model.InstallerType ++import com.leos.core.datastore.model.ProxyType ++import com.leos.core.datastore.model.SortOrder ++import com.leos.core.datastore.model.Theme + import kotlin.time.Duration + + fun Configuration.getThemeRes(theme: Theme, dynamicTheme: Boolean) = when (theme) { +Index: core/datastore/src/main/java/com/looker/core/datastore/migration/ProtoDataStoreMigration.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/datastore/src/main/java/com/looker/core/datastore/migration/ProtoDataStoreMigration.kt b/core/datastore/src/main/java/com/looker/core/datastore/migration/ProtoDataStoreMigration.kt +--- a/core/datastore/src/main/java/com/looker/core/datastore/migration/ProtoDataStoreMigration.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/datastore/src/main/java/com/looker/core/datastore/migration/ProtoDataStoreMigration.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.datastore.migration ++package com.leos.core.datastore.migration + + import androidx.datastore.core.DataMigration + import androidx.datastore.core.DataStore +@@ -9,13 +9,13 @@ + import androidx.datastore.preferences.core.longPreferencesKey + import androidx.datastore.preferences.core.stringPreferencesKey + import androidx.datastore.preferences.core.stringSetPreferencesKey +-import com.looker.core.datastore.Settings +-import com.looker.core.datastore.model.AutoSync +-import com.looker.core.datastore.model.InstallerType +-import com.looker.core.datastore.model.ProxyPreference +-import com.looker.core.datastore.model.ProxyType +-import com.looker.core.datastore.model.SortOrder +-import com.looker.core.datastore.model.Theme ++import com.leos.core.datastore.Settings ++import com.leos.core.datastore.model.AutoSync ++import com.leos.core.datastore.model.InstallerType ++import com.leos.core.datastore.model.ProxyPreference ++import com.leos.core.datastore.model.ProxyType ++import com.leos.core.datastore.model.SortOrder ++import com.leos.core.datastore.model.Theme + import kotlin.time.Duration.Companion.hours + import kotlinx.coroutines.flow.first + import kotlinx.datetime.Instant +Index: core/datastore/src/main/java/com/looker/core/datastore/model/AutoSync.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/datastore/src/main/java/com/looker/core/datastore/model/AutoSync.kt b/core/datastore/src/main/java/com/looker/core/datastore/model/AutoSync.kt +--- a/core/datastore/src/main/java/com/looker/core/datastore/model/AutoSync.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/datastore/src/main/java/com/looker/core/datastore/model/AutoSync.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.datastore.model ++package com.leos.core.datastore.model + + enum class AutoSync { + ALWAYS, +Index: core/datastore/src/main/java/com/looker/core/datastore/model/InstallerType.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/datastore/src/main/java/com/looker/core/datastore/model/InstallerType.kt b/core/datastore/src/main/java/com/looker/core/datastore/model/InstallerType.kt +--- a/core/datastore/src/main/java/com/looker/core/datastore/model/InstallerType.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/datastore/src/main/java/com/looker/core/datastore/model/InstallerType.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,6 +1,6 @@ +-package com.looker.core.datastore.model ++package com.leos.core.datastore.model + +-import com.looker.core.common.device.Miui ++import com.leos.core.common.device.Miui + + enum class InstallerType { + LEGACY, +Index: core/datastore/src/main/java/com/looker/core/datastore/model/ProxyPreference.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/datastore/src/main/java/com/looker/core/datastore/model/ProxyPreference.kt b/core/datastore/src/main/java/com/looker/core/datastore/model/ProxyPreference.kt +--- a/core/datastore/src/main/java/com/looker/core/datastore/model/ProxyPreference.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/datastore/src/main/java/com/looker/core/datastore/model/ProxyPreference.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.datastore.model ++package com.leos.core.datastore.model + + import kotlinx.serialization.Serializable + +Index: core/datastore/src/main/java/com/looker/core/datastore/model/ProxyType.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/datastore/src/main/java/com/looker/core/datastore/model/ProxyType.kt b/core/datastore/src/main/java/com/looker/core/datastore/model/ProxyType.kt +--- a/core/datastore/src/main/java/com/looker/core/datastore/model/ProxyType.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/datastore/src/main/java/com/looker/core/datastore/model/ProxyType.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.datastore.model ++package com.leos.core.datastore.model + + enum class ProxyType { + DIRECT, +Index: core/datastore/src/main/java/com/looker/core/datastore/model/SortOrder.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/datastore/src/main/java/com/looker/core/datastore/model/SortOrder.kt b/core/datastore/src/main/java/com/looker/core/datastore/model/SortOrder.kt +--- a/core/datastore/src/main/java/com/looker/core/datastore/model/SortOrder.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/datastore/src/main/java/com/looker/core/datastore/model/SortOrder.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.datastore.model ++package com.leos.core.datastore.model + + // todo: Add Support for sorting by size + enum class SortOrder { +Index: core/datastore/src/main/java/com/looker/core/datastore/model/Theme.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/datastore/src/main/java/com/looker/core/datastore/model/Theme.kt b/core/datastore/src/main/java/com/looker/core/datastore/model/Theme.kt +--- a/core/datastore/src/main/java/com/looker/core/datastore/model/Theme.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/datastore/src/main/java/com/looker/core/datastore/model/Theme.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.datastore.model ++package com.leos.core.datastore.model + + enum class Theme { + SYSTEM, +Index: core/di/build.gradle.kts +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/di/build.gradle.kts b/core/di/build.gradle.kts +--- a/core/di/build.gradle.kts (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/di/build.gradle.kts (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -5,7 +5,7 @@ + } + + android { +- namespace = "com.looker.core.di" ++ namespace = "com.leos.core.di" + + buildTypes { + release { +Index: core/di/src/main/kotlin/com/looker/core/di/CoroutinesModule.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/di/src/main/kotlin/com/looker/core/di/CoroutinesModule.kt b/core/di/src/main/kotlin/com/looker/core/di/CoroutinesModule.kt +--- a/core/di/src/main/kotlin/com/looker/core/di/CoroutinesModule.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/di/src/main/kotlin/com/looker/core/di/CoroutinesModule.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.di ++package com.leos.core.di + + import dagger.Module + import dagger.Provides +Index: core/domain/build.gradle.kts +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/domain/build.gradle.kts b/core/domain/build.gradle.kts +--- a/core/domain/build.gradle.kts (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/domain/build.gradle.kts (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -5,7 +5,7 @@ + } + + android { +- namespace = "com.looker.core.domain" ++ namespace = "com.leos.core.domain" + + buildTypes { + release { +Index: core/domain/src/main/kotlin/com/looker/core/domain/InstalledItem.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/domain/src/main/kotlin/com/looker/core/domain/InstalledItem.kt b/core/domain/src/main/kotlin/com/looker/core/domain/InstalledItem.kt +--- a/core/domain/src/main/kotlin/com/looker/core/domain/InstalledItem.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/domain/src/main/kotlin/com/looker/core/domain/InstalledItem.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.domain ++package com.leos.core.domain + + class InstalledItem( + val packageName: String, +Index: core/domain/src/main/kotlin/com/looker/core/domain/Product.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/domain/src/main/kotlin/com/looker/core/domain/Product.kt b/core/domain/src/main/kotlin/com/looker/core/domain/Product.kt +--- a/core/domain/src/main/kotlin/com/looker/core/domain/Product.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/domain/src/main/kotlin/com/looker/core/domain/Product.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.domain ++package com.leos.core.domain + + data class Product( + var repositoryId: Long, +Index: core/domain/src/main/kotlin/com/looker/core/domain/ProductItem.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/domain/src/main/kotlin/com/looker/core/domain/ProductItem.kt b/core/domain/src/main/kotlin/com/looker/core/domain/ProductItem.kt +--- a/core/domain/src/main/kotlin/com/looker/core/domain/ProductItem.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/domain/src/main/kotlin/com/looker/core/domain/ProductItem.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.domain ++package com.leos.core.domain + + import android.os.Parcelable + import kotlinx.parcelize.Parcelize +Index: core/domain/src/main/kotlin/com/looker/core/domain/ProductPreference.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/domain/src/main/kotlin/com/looker/core/domain/ProductPreference.kt b/core/domain/src/main/kotlin/com/looker/core/domain/ProductPreference.kt +--- a/core/domain/src/main/kotlin/com/looker/core/domain/ProductPreference.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/domain/src/main/kotlin/com/looker/core/domain/ProductPreference.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.domain ++package com.leos.core.domain + + data class ProductPreference(val ignoreUpdates: Boolean, val ignoreVersionCode: Long) { + fun shouldIgnoreUpdate(versionCode: Long): Boolean { +Index: core/domain/src/main/kotlin/com/looker/core/domain/Release.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/domain/src/main/kotlin/com/looker/core/domain/Release.kt b/core/domain/src/main/kotlin/com/looker/core/domain/Release.kt +--- a/core/domain/src/main/kotlin/com/looker/core/domain/Release.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/domain/src/main/kotlin/com/looker/core/domain/Release.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.domain ++package com.leos.core.domain + + import android.net.Uri + +Index: core/domain/src/main/kotlin/com/looker/core/domain/Repository.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/domain/src/main/kotlin/com/looker/core/domain/Repository.kt b/core/domain/src/main/kotlin/com/looker/core/domain/Repository.kt +--- a/core/domain/src/main/kotlin/com/looker/core/domain/Repository.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/domain/src/main/kotlin/com/looker/core/domain/Repository.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,6 +1,6 @@ +-package com.looker.core.domain ++package com.leos.core.domain + +-import com.looker.core.domain.newer.isOnion ++import com.leos.core.domain.newer.isOnion + import java.net.URL + + data class Repository( +Index: core/domain/src/main/kotlin/com/looker/core/domain/Syncable.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/domain/src/main/kotlin/com/looker/core/domain/Syncable.kt b/core/domain/src/main/kotlin/com/looker/core/domain/Syncable.kt +--- a/core/domain/src/main/kotlin/com/looker/core/domain/Syncable.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/domain/src/main/kotlin/com/looker/core/domain/Syncable.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,7 +1,7 @@ +-package com.looker.core.domain ++package com.leos.core.domain + +-import com.looker.core.domain.newer.App +-import com.looker.core.domain.newer.Repo ++import com.leos.core.domain.newer.App ++import com.leos.core.domain.newer.Repo + + interface Syncable { + +Index: core/domain/src/main/kotlin/com/looker/core/domain/newer/App.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/domain/src/main/kotlin/com/looker/core/domain/newer/App.kt b/core/domain/src/main/kotlin/com/looker/core/domain/newer/App.kt +--- a/core/domain/src/main/kotlin/com/looker/core/domain/newer/App.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/domain/src/main/kotlin/com/looker/core/domain/newer/App.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,6 +1,6 @@ +-package com.looker.core.domain.newer ++package com.leos.core.domain.newer + +-import com.looker.core.common.PackageName ++import com.leos.core.common.PackageName + + data class App( + val repoId: Long, +Index: core/domain/src/main/kotlin/com/looker/core/domain/newer/DataFile.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/domain/src/main/kotlin/com/looker/core/domain/newer/DataFile.kt b/core/domain/src/main/kotlin/com/looker/core/domain/newer/DataFile.kt +--- a/core/domain/src/main/kotlin/com/looker/core/domain/newer/DataFile.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/domain/src/main/kotlin/com/looker/core/domain/newer/DataFile.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.domain.newer ++package com.leos.core.domain.newer + + interface DataFile { + val name: String +Index: core/domain/src/main/kotlin/com/looker/core/domain/newer/Package.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/domain/src/main/kotlin/com/looker/core/domain/newer/Package.kt b/core/domain/src/main/kotlin/com/looker/core/domain/newer/Package.kt +--- a/core/domain/src/main/kotlin/com/looker/core/domain/newer/Package.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/domain/src/main/kotlin/com/looker/core/domain/newer/Package.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.domain.newer ++package com.leos.core.domain.newer + + data class Package( + val installed: Boolean, +Index: core/domain/src/main/kotlin/com/looker/core/domain/newer/Repo.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/domain/src/main/kotlin/com/looker/core/domain/newer/Repo.kt b/core/domain/src/main/kotlin/com/looker/core/domain/newer/Repo.kt +--- a/core/domain/src/main/kotlin/com/looker/core/domain/newer/Repo.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/domain/src/main/kotlin/com/looker/core/domain/newer/Repo.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.core.domain.newer ++package com.leos.core.domain.newer + + data class Repo( + val id: Long, +Index: core/network/build.gradle.kts +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/network/build.gradle.kts b/core/network/build.gradle.kts +--- a/core/network/build.gradle.kts (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/network/build.gradle.kts (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -5,7 +5,7 @@ + } + + android { +- namespace = "com.looker.network" ++ namespace = "com.leos.network" + + buildTypes { + release { +Index: core/network/src/main/java/com/looker/network/Downloader.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/network/src/main/java/com/looker/network/Downloader.kt b/core/network/src/main/java/com/looker/network/Downloader.kt +--- a/core/network/src/main/java/com/looker/network/Downloader.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/network/src/main/java/com/looker/network/Downloader.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,8 +1,8 @@ +-package com.looker.network ++package com.leos.network + +-import com.looker.core.common.DataSize +-import com.looker.core.common.signature.FileValidator +-import com.looker.network.header.HeadersBuilder ++import com.leos.core.common.DataSize ++import com.leos.core.common.signature.FileValidator ++import com.leos.network.header.HeadersBuilder + import java.io.File + import java.net.Proxy + +Index: core/network/src/main/java/com/looker/network/KtorDownloader.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/network/src/main/java/com/looker/network/KtorDownloader.kt b/core/network/src/main/java/com/looker/network/KtorDownloader.kt +--- a/core/network/src/main/java/com/looker/network/KtorDownloader.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/network/src/main/java/com/looker/network/KtorDownloader.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,14 +1,14 @@ +-package com.looker.network ++package com.leos.network + +-import com.looker.core.common.DataSize +-import com.looker.core.common.extension.exceptCancellation +-import com.looker.core.common.extension.size +-import com.looker.core.common.signature.FileValidator +-import com.looker.core.common.signature.ValidationException +-import com.looker.network.Downloader.Companion.CONNECTION_TIMEOUT +-import com.looker.network.Downloader.Companion.SOCKET_TIMEOUT +-import com.looker.network.header.HeadersBuilder +-import com.looker.network.header.KtorHeadersBuilder ++import com.leos.core.common.DataSize ++import com.leos.core.common.extension.exceptCancellation ++import com.leos.core.common.extension.size ++import com.leos.core.common.signature.FileValidator ++import com.leos.core.common.signature.ValidationException ++import com.leos.network.Downloader.Companion.CONNECTION_TIMEOUT ++import com.leos.network.Downloader.Companion.SOCKET_TIMEOUT ++import com.leos.network.header.HeadersBuilder ++import com.leos.network.header.KtorHeadersBuilder + import io.ktor.client.HttpClient + import io.ktor.client.HttpClientConfig + import io.ktor.client.engine.okhttp.OkHttp +Index: core/network/src/main/java/com/looker/network/NetworkResponse.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/network/src/main/java/com/looker/network/NetworkResponse.kt b/core/network/src/main/java/com/looker/network/NetworkResponse.kt +--- a/core/network/src/main/java/com/looker/network/NetworkResponse.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/network/src/main/java/com/looker/network/NetworkResponse.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,6 +1,6 @@ +-package com.looker.network ++package com.leos.network + +-import com.looker.core.common.signature.ValidationException ++import com.leos.core.common.signature.ValidationException + import java.util.Date + + sealed interface NetworkResponse { +Index: core/network/src/main/java/com/looker/network/di/NetworkModule.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/network/src/main/java/com/looker/network/di/NetworkModule.kt b/core/network/src/main/java/com/looker/network/di/NetworkModule.kt +--- a/core/network/src/main/java/com/looker/network/di/NetworkModule.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/network/src/main/java/com/looker/network/di/NetworkModule.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,7 +1,7 @@ +-package com.looker.network.di ++package com.leos.network.di + +-import com.looker.network.Downloader +-import com.looker.network.KtorDownloader ++import com.leos.network.Downloader ++import com.leos.network.KtorDownloader + import dagger.Module + import dagger.Provides + import dagger.hilt.InstallIn +Index: core/network/src/main/java/com/looker/network/header/HeadersBuilder.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/network/src/main/java/com/looker/network/header/HeadersBuilder.kt b/core/network/src/main/java/com/looker/network/header/HeadersBuilder.kt +--- a/core/network/src/main/java/com/looker/network/header/HeadersBuilder.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/network/src/main/java/com/looker/network/header/HeadersBuilder.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.network.header ++package com.leos.network.header + + import java.util.Date + +Index: core/network/src/main/java/com/looker/network/header/KtorHeadersBuilder.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/core/network/src/main/java/com/looker/network/header/KtorHeadersBuilder.kt b/core/network/src/main/java/com/looker/network/header/KtorHeadersBuilder.kt +--- a/core/network/src/main/java/com/looker/network/header/KtorHeadersBuilder.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/core/network/src/main/java/com/looker/network/header/KtorHeadersBuilder.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,6 +1,6 @@ +-package com.looker.network.header ++package com.leos.network.header + +-import com.looker.core.common.extension.toFormattedString ++import com.leos.core.common.extension.toFormattedString + import io.ktor.http.HttpHeaders + import io.ktor.util.encodeBase64 + import java.util.Date +Index: installer/build.gradle.kts +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/installer/build.gradle.kts b/installer/build.gradle.kts +--- a/installer/build.gradle.kts (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/installer/build.gradle.kts (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -5,7 +5,7 @@ + } + + android { +- namespace = "com.looker.installer" ++ namespace = "com.leos.installer" + + buildTypes { + release { +Index: installer/src/main/java/com/looker/installer/InstallManager.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/installer/src/main/java/com/looker/installer/InstallManager.kt b/installer/src/main/java/com/looker/installer/InstallManager.kt +--- a/installer/src/main/java/com/looker/installer/InstallManager.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/installer/src/main/java/com/looker/installer/InstallManager.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,22 +1,22 @@ +-package com.looker.installer ++package com.leos.installer + + import android.content.Context +-import com.looker.core.common.Constants +-import com.looker.core.common.PackageName +-import com.looker.core.common.extension.addAndCompute +-import com.looker.core.common.extension.filter +-import com.looker.core.common.extension.notificationManager +-import com.looker.core.common.extension.updateAsMutable +-import com.looker.core.datastore.SettingsRepository +-import com.looker.core.datastore.get +-import com.looker.core.datastore.model.InstallerType +-import com.looker.installer.installers.Installer +-import com.looker.installer.installers.LegacyInstaller +-import com.looker.installer.installers.root.RootInstaller +-import com.looker.installer.installers.session.SessionInstaller +-import com.looker.installer.installers.shizuku.ShizukuInstaller +-import com.looker.installer.model.InstallItem +-import com.looker.installer.model.InstallState ++import com.leos.core.common.Constants ++import com.leos.core.common.PackageName ++import com.leos.core.common.extension.addAndCompute ++import com.leos.core.common.extension.filter ++import com.leos.core.common.extension.notificationManager ++import com.leos.core.common.extension.updateAsMutable ++import com.leos.core.datastore.SettingsRepository ++import com.leos.core.datastore.get ++import com.leos.core.datastore.model.InstallerType ++import com.leos.installer.installers.Installer ++import com.leos.installer.installers.LegacyInstaller ++import com.leos.installer.installers.root.RootInstaller ++import com.leos.installer.installers.session.SessionInstaller ++import com.leos.installer.installers.shizuku.ShizukuInstaller ++import com.leos.installer.model.InstallItem ++import com.leos.installer.model.InstallState + import kotlinx.coroutines.CoroutineScope + import kotlinx.coroutines.channels.Channel + import kotlinx.coroutines.channels.consumeEach +Index: installer/src/main/java/com/looker/installer/InstallModule.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/installer/src/main/java/com/looker/installer/InstallModule.kt b/installer/src/main/java/com/looker/installer/InstallModule.kt +--- a/installer/src/main/java/com/looker/installer/InstallModule.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/installer/src/main/java/com/looker/installer/InstallModule.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,9 +1,9 @@ +-package com.looker.installer ++package com.leos.installer + + import android.content.Context +-import com.looker.core.datastore.SettingsRepository +-import com.looker.installer.installers.root.RootPermissionHandler +-import com.looker.installer.installers.shizuku.ShizukuPermissionHandler ++import com.leos.core.datastore.SettingsRepository ++import com.leos.installer.installers.root.RootPermissionHandler ++import com.leos.installer.installers.shizuku.ShizukuPermissionHandler + import dagger.Module + import dagger.Provides + import dagger.hilt.InstallIn +Index: installer/src/main/java/com/looker/installer/installers/Installer.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/installer/src/main/java/com/looker/installer/installers/Installer.kt b/installer/src/main/java/com/looker/installer/installers/Installer.kt +--- a/installer/src/main/java/com/looker/installer/installers/Installer.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/installer/src/main/java/com/looker/installer/installers/Installer.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,8 +1,8 @@ +-package com.looker.installer.installers ++package com.leos.installer.installers + +-import com.looker.core.common.PackageName +-import com.looker.installer.model.InstallItem +-import com.looker.installer.model.InstallState ++import com.leos.core.common.PackageName ++import com.leos.installer.model.InstallItem ++import com.leos.installer.model.InstallState + + interface Installer { + +Index: installer/src/main/java/com/looker/installer/installers/LegacyInstaller.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/installer/src/main/java/com/looker/installer/installers/LegacyInstaller.kt b/installer/src/main/java/com/looker/installer/installers/LegacyInstaller.kt +--- a/installer/src/main/java/com/looker/installer/installers/LegacyInstaller.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/installer/src/main/java/com/looker/installer/installers/LegacyInstaller.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,14 +1,14 @@ +-package com.looker.installer.installers ++package com.leos.installer.installers + + import android.content.Context + import android.content.Intent + import android.util.AndroidRuntimeException + import androidx.core.net.toUri +-import com.looker.core.common.PackageName +-import com.looker.core.common.SdkCheck +-import com.looker.core.common.cache.Cache +-import com.looker.installer.model.InstallItem +-import com.looker.installer.model.InstallState ++import com.leos.core.common.PackageName ++import com.leos.core.common.SdkCheck ++import com.leos.core.common.cache.Cache ++import com.leos.installer.model.InstallItem ++import com.leos.installer.model.InstallState + import kotlin.coroutines.resume + import kotlinx.coroutines.suspendCancellableCoroutine + +Index: installer/src/main/java/com/looker/installer/installers/root/RootInstaller.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/installer/src/main/java/com/looker/installer/installers/root/RootInstaller.kt b/installer/src/main/java/com/looker/installer/installers/root/RootInstaller.kt +--- a/installer/src/main/java/com/looker/installer/installers/root/RootInstaller.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/installer/src/main/java/com/looker/installer/installers/root/RootInstaller.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,13 +1,13 @@ +-package com.looker.installer.installers.root ++package com.leos.installer.installers.root + + import android.content.Context +-import com.looker.core.common.PackageName +-import com.looker.core.common.SdkCheck +-import com.looker.core.common.cache.Cache +-import com.looker.installer.installers.Installer +-import com.looker.installer.installers.uninstallPackage +-import com.looker.installer.model.InstallItem +-import com.looker.installer.model.InstallState ++import com.leos.core.common.PackageName ++import com.leos.core.common.SdkCheck ++import com.leos.core.common.cache.Cache ++import com.leos.installer.installers.Installer ++import com.leos.installer.installers.uninstallPackage ++import com.leos.installer.model.InstallItem ++import com.leos.installer.model.InstallState + import com.topjohnwu.superuser.Shell + import kotlinx.coroutines.suspendCancellableCoroutine + import java.io.File +Index: installer/src/main/java/com/looker/installer/installers/root/RootPermissionHandler.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/installer/src/main/java/com/looker/installer/installers/root/RootPermissionHandler.kt b/installer/src/main/java/com/looker/installer/installers/root/RootPermissionHandler.kt +--- a/installer/src/main/java/com/looker/installer/installers/root/RootPermissionHandler.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/installer/src/main/java/com/looker/installer/installers/root/RootPermissionHandler.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.installer.installers.root ++package com.leos.installer.installers.root + + import com.topjohnwu.superuser.Shell + +Index: installer/src/main/java/com/looker/installer/installers/session/SessionInstaller.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/installer/src/main/java/com/looker/installer/installers/session/SessionInstaller.kt b/installer/src/main/java/com/looker/installer/installers/session/SessionInstaller.kt +--- a/installer/src/main/java/com/looker/installer/installers/session/SessionInstaller.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/installer/src/main/java/com/looker/installer/installers/session/SessionInstaller.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.installer.installers.session ++package com.leos.installer.installers.session + + import android.annotation.SuppressLint + import android.app.PendingIntent +@@ -9,14 +9,14 @@ + import android.os.Handler + import android.os.Looper + import android.util.Log +-import com.looker.core.common.PackageName +-import com.looker.core.common.SdkCheck +-import com.looker.core.common.cache.Cache +-import com.looker.core.common.log +-import com.looker.core.common.sdkAbove +-import com.looker.installer.installers.Installer +-import com.looker.installer.model.InstallItem +-import com.looker.installer.model.InstallState ++import com.leos.core.common.PackageName ++import com.leos.core.common.SdkCheck ++import com.leos.core.common.cache.Cache ++import com.leos.core.common.log ++import com.leos.core.common.sdkAbove ++import com.leos.installer.installers.Installer ++import com.leos.installer.model.InstallItem ++import com.leos.installer.model.InstallState + import kotlinx.coroutines.suspendCancellableCoroutine + import kotlin.coroutines.resume + +Index: installer/src/main/java/com/looker/installer/installers/session/SessionInstallerService.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/installer/src/main/java/com/looker/installer/installers/session/SessionInstallerService.kt b/installer/src/main/java/com/looker/installer/installers/session/SessionInstallerService.kt +--- a/installer/src/main/java/com/looker/installer/installers/session/SessionInstallerService.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/installer/src/main/java/com/looker/installer/installers/session/SessionInstallerService.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.installer.installers.session ++package com.leos.installer.installers.session + + import android.app.Service + import android.content.Intent +@@ -7,10 +7,10 @@ + import android.os.IBinder + import android.view.ContextThemeWrapper + import androidx.core.app.NotificationCompat +-import com.looker.core.common.Constants.NOTIFICATION_CHANNEL_DOWNLOADING +-import com.looker.core.common.Constants.NOTIFICATION_ID_DOWNLOADING +-import com.looker.core.common.R as CommonR +-import com.looker.core.common.extension.notificationManager ++import com.leos.core.common.Constants.NOTIFICATION_CHANNEL_DOWNLOADING ++import com.leos.core.common.Constants.NOTIFICATION_ID_DOWNLOADING ++import com.leos.core.common.R as CommonR ++import com.leos.core.common.extension.notificationManager + + class SessionInstallerService : Service() { + companion object { +Index: installer/src/main/java/com/looker/installer/installers/shizuku/ShizukuInstaller.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/installer/src/main/java/com/looker/installer/installers/shizuku/ShizukuInstaller.kt b/installer/src/main/java/com/looker/installer/installers/shizuku/ShizukuInstaller.kt +--- a/installer/src/main/java/com/looker/installer/installers/shizuku/ShizukuInstaller.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/installer/src/main/java/com/looker/installer/installers/shizuku/ShizukuInstaller.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,13 +1,13 @@ +-package com.looker.installer.installers.shizuku ++package com.leos.installer.installers.shizuku + + import android.content.Context +-import com.looker.core.common.PackageName +-import com.looker.core.common.SdkCheck +-import com.looker.core.common.cache.Cache +-import com.looker.installer.installers.Installer +-import com.looker.installer.installers.uninstallPackage +-import com.looker.installer.model.InstallItem +-import com.looker.installer.model.InstallState ++import com.leos.core.common.PackageName ++import com.leos.core.common.SdkCheck ++import com.leos.core.common.cache.Cache ++import com.leos.installer.installers.Installer ++import com.leos.installer.installers.uninstallPackage ++import com.leos.installer.model.InstallItem ++import com.leos.installer.model.InstallState + import java.io.BufferedReader + import java.io.InputStream + import kotlin.coroutines.resume +Index: installer/src/main/java/com/looker/installer/installers/shizuku/ShizukuPermissionHandler.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/installer/src/main/java/com/looker/installer/installers/shizuku/ShizukuPermissionHandler.kt b/installer/src/main/java/com/looker/installer/installers/shizuku/ShizukuPermissionHandler.kt +--- a/installer/src/main/java/com/looker/installer/installers/shizuku/ShizukuPermissionHandler.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/installer/src/main/java/com/looker/installer/installers/shizuku/ShizukuPermissionHandler.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,8 +1,8 @@ +-package com.looker.installer.installers.shizuku ++package com.leos.installer.installers.shizuku + + import android.content.Context + import android.content.pm.PackageManager +-import com.looker.core.common.extension.getPackageInfoCompat ++import com.leos.core.common.extension.getPackageInfoCompat + import kotlinx.coroutines.Dispatchers + import kotlinx.coroutines.channels.awaitClose + import kotlinx.coroutines.flow.Flow +Index: installer/src/main/java/com/looker/installer/model/InstallItem.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/installer/src/main/java/com/looker/installer/model/InstallItem.kt b/installer/src/main/java/com/looker/installer/model/InstallItem.kt +--- a/installer/src/main/java/com/looker/installer/model/InstallItem.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/installer/src/main/java/com/looker/installer/model/InstallItem.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,7 +1,7 @@ +-package com.looker.installer.model ++package com.leos.installer.model + +-import com.looker.core.common.PackageName +-import com.looker.core.common.toPackageName ++import com.leos.core.common.PackageName ++import com.leos.core.common.toPackageName + + data class InstallItem( + val packageName: PackageName, +Index: installer/src/main/java/com/looker/installer/model/InstallState.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/installer/src/main/java/com/looker/installer/model/InstallState.kt b/installer/src/main/java/com/looker/installer/model/InstallState.kt +--- a/installer/src/main/java/com/looker/installer/model/InstallState.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/installer/src/main/java/com/looker/installer/model/InstallState.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.installer.model ++package com.leos.installer.model + + enum class InstallState { Failed, Pending, Installing, Installed } + +Index: sync/fdroid/build.gradle.kts +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/sync/fdroid/build.gradle.kts b/sync/fdroid/build.gradle.kts +--- a/sync/fdroid/build.gradle.kts (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/sync/fdroid/build.gradle.kts (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -5,7 +5,7 @@ + } + + android { +- namespace = "com.looker.sync.fdroid" ++ namespace = "com.leos.sync.fdroid" + + buildTypes { + release { +Index: sync/fdroid/src/androidTest/kotlin/com/looker/sync/fdroid/ExampleInstrumentedTest.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/sync/fdroid/src/androidTest/kotlin/com/looker/sync/fdroid/ExampleInstrumentedTest.kt b/sync/fdroid/src/androidTest/kotlin/com/looker/sync/fdroid/ExampleInstrumentedTest.kt +--- a/sync/fdroid/src/androidTest/kotlin/com/looker/sync/fdroid/ExampleInstrumentedTest.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/sync/fdroid/src/androidTest/kotlin/com/looker/sync/fdroid/ExampleInstrumentedTest.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.sync.fdroid ++package com.leos.sync.fdroid + + import androidx.test.platform.app.InstrumentationRegistry + import androidx.test.ext.junit.runners.AndroidJUnit4 +@@ -19,6 +19,6 @@ + fun useAppContext() { + // Context of the app under test. + val appContext = InstrumentationRegistry.getInstrumentation().targetContext +- assertEquals("com.looker.sync.fdroid.test", appContext.packageName) ++ assertEquals("com.leos.sync.fdroid.test", appContext.packageName) + } + } +Index: sync/fdroid/src/main/kotlin/com/looker/sync/fdroid/FdroidSyncable.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/sync/fdroid/src/main/kotlin/com/looker/sync/fdroid/FdroidSyncable.kt b/sync/fdroid/src/main/kotlin/com/looker/sync/fdroid/FdroidSyncable.kt +--- a/sync/fdroid/src/main/kotlin/com/looker/sync/fdroid/FdroidSyncable.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/sync/fdroid/src/main/kotlin/com/looker/sync/fdroid/FdroidSyncable.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,8 +1,8 @@ +-package com.looker.sync.fdroid ++package com.leos.sync.fdroid + +-import com.looker.core.domain.Syncable +-import com.looker.core.domain.newer.App +-import com.looker.core.domain.newer.Repo ++import com.leos.core.domain.Syncable ++import com.leos.core.domain.newer.App ++import com.leos.core.domain.newer.Repo + + class FdroidSyncable(override val repo: Repo) : Syncable { + +Index: sync/fdroid/src/main/kotlin/com/looker/sync/fdroid/IndexValidator.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/sync/fdroid/src/main/kotlin/com/looker/sync/fdroid/IndexValidator.kt b/sync/fdroid/src/main/kotlin/com/looker/sync/fdroid/IndexValidator.kt +--- a/sync/fdroid/src/main/kotlin/com/looker/sync/fdroid/IndexValidator.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/sync/fdroid/src/main/kotlin/com/looker/sync/fdroid/IndexValidator.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,12 +1,12 @@ +-package com.looker.sync.fdroid ++package com.leos.sync.fdroid + +-import com.looker.core.common.extension.certificate +-import com.looker.core.common.extension.codeSigner +-import com.looker.core.common.extension.fingerprint +-import com.looker.core.common.extension.toJarFile +-import com.looker.core.common.signature.FileValidator +-import com.looker.core.common.signature.ValidationException +-import com.looker.core.domain.newer.Repo ++import com.leos.core.common.extension.certificate ++import com.leos.core.common.extension.codeSigner ++import com.leos.core.common.extension.fingerprint ++import com.leos.core.common.extension.toJarFile ++import com.leos.core.common.signature.FileValidator ++import com.leos.core.common.signature.ValidationException ++import com.leos.core.domain.newer.Repo + import kotlinx.coroutines.Dispatchers + import kotlinx.coroutines.withContext + import org.fdroid.index.IndexParser +Index: sync/fdroid/src/test/kotlin/com/looker/sync/fdroid/ExampleUnitTest.kt +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/sync/fdroid/src/test/kotlin/com/looker/sync/fdroid/ExampleUnitTest.kt b/sync/fdroid/src/test/kotlin/com/looker/sync/fdroid/ExampleUnitTest.kt +--- a/sync/fdroid/src/test/kotlin/com/looker/sync/fdroid/ExampleUnitTest.kt (revision 0458da45767012c818054339c035c122795f8f19) ++++ b/sync/fdroid/src/test/kotlin/com/looker/sync/fdroid/ExampleUnitTest.kt (revision 7930ca9b65b0a8066e31a8214c9ce883d08022ec) +@@ -1,4 +1,4 @@ +-package com.looker.sync.fdroid ++package com.leos.sync.fdroid + + import org.junit.Test + +diff --git a/xx.git/HEAD b/xx.git/HEAD +deleted file mode 100644 +index b870d82622c1a9ca6bcaf5df639680424a1904b0..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +Hc$@UTF-8 +=================================================================== +diff --git a/build-logic/structure/src/main/kotlin/DefaultConfig.kt b/build-logic/structure/src/main/kotlin/DefaultConfig.kt +--- a/build-logic/structure/src/main/kotlin/DefaultConfig.kt (revision 9efd9725d03549d0f467d59c5a45df7996ab6af5) ++++ b/build-logic/structure/src/main/kotlin/DefaultConfig.kt (revision 82f8ffcc4719b25ce01b7d7fc7943ffc01dc618e) +@@ -4,6 +4,6 @@ + const val appId = "com.leos.droidify" + const val compileSdk = 34 + const val minSdk = 23 +- const val versionCode = 595 +- const val versionName = "0.5.9 Patch 5" ++ const val versionCode = 666 ++ const val versionName = "v01.6.4" + } diff --git a/LICENSE b/LICENSE index 06d3450..f288702 100644 --- a/LICENSE +++ b/LICENSE @@ -1,232 +1,674 @@ -GNU GENERAL PUBLIC LICENSE -Version 3, 29 June 2007 - -Copyright © 2007 Free Software Foundation, Inc. - -Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. - -Preamble - -The GNU General Public License is a free, copyleft license for software and other kinds of works. - -The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. - -When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. - -To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. - -For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. - -Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. - -For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. - -Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. - -Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. - -The precise terms and conditions for copying, distribution and modification follow. - -TERMS AND CONDITIONS - -0. Definitions. - -“This License” refers to version 3 of the GNU General Public License. - -“Copyright” also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. - -“The Program” refers to any copyrightable work licensed under this License. Each licensee is addressed as “you”. “Licensees” and “recipients” may be individuals or organizations. - -To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a “modified version” of the earlier work or a work “based on” the earlier work. - -A “covered work” means either the unmodified Program or a work based on the Program. - -To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. - -To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. - -An interactive user interface displays “Appropriate Legal Notices” to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. - -1. Source Code. -The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work. - -A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. - -The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. - -The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. - -The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. - -The Corresponding Source for a work in source code form is that same work. - -2. Basic Permissions. -All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. - -You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. - -Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. - -3. Protecting Users' Legal Rights From Anti-Circumvention Law. -No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. - -When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. - -4. Conveying Verbatim Copies. -You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. - -You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. - -5. Conveying Modified Source Versions. -You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”. - - c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. - -A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. - -6. Conveying Non-Source Forms. -You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: - - a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. - - d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. - -A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. - -A “User Product” is either (1) a “consumer product”, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, “normally used” refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. - -“Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. - -If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). - -The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. - -Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. - -7. Additional Terms. -“Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. - -When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. - -Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or authors of the material; or - - e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. - -All other non-permissive additional terms are considered “further restrictions” within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. - -If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. - -Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. - -8. Termination. -You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). - -However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. - -Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. - -Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. - -9. Acceptance Not Required for Having Copies. -You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. - -10. Automatic Licensing of Downstream Recipients. -Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. - -An “entity transaction” is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. - -You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. - -11. Patents. -A “contributor” is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's “contributor version”. - -A contributor's “essential patent claims” are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, “control” includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. - -Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. - -In the following three paragraphs, a “patent license” is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To “grant” such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. - -If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. “Knowingly relying” means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. - -If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. - -A patent license is “discriminatory” if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. - -Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. - -12. No Surrender of Others' Freedom. -If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. - -13. Use with the GNU Affero General Public License. -Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. - -14. Revised Versions of this License. -The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. - -If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. - -Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. - -15. Disclaimer of Warranty. -THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - -16. Limitation of Liability. -IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -17. Interpretation of Sections 15 and 16. -If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. - -END OF TERMS AND CONDITIONS - -How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found. - - LeOS-Droid - Copyright (C) 2023 JoJo - - This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along with this program. If not, see . + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. -If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: - LeOS-Droid Copyright (C) 2023 JoJo - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. -The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an “about box”. +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". -You should also get your employer (if you work as a programmer) or school, if any, to sign a “copyright disclaimer” for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. -The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/README.md b/README.md index 39da1bb..32c4a8b 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,23 @@ +
+ +Droid-ify + # LeOS-Droid -# LeOS-Droid - -### A quick material F-Droid client. - -
- -## :book: Features - -* Material F-Droid style -* No cards or inappropriate animations -* Fast repository syncing -* Standard Android components and minimal dependencies -* share option \ No newline at end of file +### A quick material F-Droid client. + +
+ +## :book: Features + +* Material F-Droid style +* No cards or inappropriate animations +* Fast repository syncing +* Standard Android components and minimal dependencies +* share option + + +## :scroll: License + +Licensed GPLv3+. \ + diff --git a/STATUS.md b/STATUS.md new file mode 100644 index 0000000..fe93a5f --- /dev/null +++ b/STATUS.md @@ -0,0 +1,15 @@ +_17-Aug-2023_ +# Project Status + +I was holding back releases, because I was re-writing the whole structure of the app. But I think this is taking too long. +It is only natural that users will grow impatient for an update, thats why I will be releasing new versions soon. + +## Why the delay: +- I had exams and submissions in my college +- I am really unwell mentally +- I was not able to create a solid structure for the new backend + +## What now? +- Next release will be on **19-Aug**, and will contain many bug fixes and stability improvements. +- All the [progress](https://github.com/Droid-ify/client/pull/309) made in past months is still here and will help in future. +- We will be missing on the new index format introduced by fdroid for some future releases. diff --git a/app/build.gradle.kts b/app/build.gradle.kts new file mode 100644 index 0000000..dbdaf67 --- /dev/null +++ b/app/build.gradle.kts @@ -0,0 +1,152 @@ +plugins { + alias(libs.plugins.looker.android.application) + alias(libs.plugins.looker.hilt.work) + alias(libs.plugins.looker.lint) + id("kotlin-parcelize") +} + +android { + namespace = "com.leos.droidify" + defaultConfig { + vectorDrawables.useSupportLibrary = true + + resourceConfigurations += mutableListOf( + /* locale list begin */ + "ar", + "az", + "be", + "bg", + "bn", + "ca", + "cs", + "de", + "el", + "eo", + "es", + "fa", + "fi", + "fr", + "gl", + "hi", + "hr", + "hu", + "ia", + "in", + "it", + "iw", + "ja", + "kn", + "ko", + "lt", + "lv", + "ml", + "nb-rNO", + "nl", + "nn", + "or", + "pa", + "pl", + "pt", + "pt-rBR", + "ro", + "ru", + "ryu", + "si", + "sl", + "sr", + "sv", + "tl", + "tr", + "uk", + "ur", + "vi", + "zh-rCN", + "zh-rTW" + /* locale list end */ + ) + } + + sourceSets.forEach { source -> + val javaDir = source.java.srcDirs.find { it.name == "java" } + source.java { + srcDir(File(javaDir?.parentFile, "kotlin")) + } + } + + buildTypes { + getByName("debug") { + applicationIdSuffix = ".debug" + resValue("string", "application_name", "LeOS-Droid-Debug") + } + getByName("release") { + isMinifyEnabled = true + isShrinkResources = true + resValue("string", "application_name", "LeOS-Droid") + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard.pro" + ) + } + create("alpha") { + initWith(getByName("debug")) + applicationIdSuffix = ".alpha" + resValue("string", "application_name", "LeOS-Droid Alpha") + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard.pro" + ) + isDebuggable = true + isMinifyEnabled = true + } + all { + buildConfigField( + type = "String", + name = "VERSION_NAME", + value = "\"v1.6.4\"" + ) + } + } + packaging { + resources { + excludes += listOf( + "/DebugProbesKt.bin", + "/kotlin/**.kotlin_builtins", + "/kotlin/**.kotlin_metadata", + "/META-INF/**.kotlin_module", + "/META-INF/**.pro", + "/META-INF/**.version", + "/META-INF/versions/9/previous-**.bin" + ) + } + } + buildFeatures { + viewBinding = true + buildConfig = true + } +} + +dependencies { + + modules( + Modules.coreDomain, + Modules.coreCommon, + Modules.coreNetwork, + Modules.coreDatastore, + Modules.coreDI, + Modules.installer + ) + + implementation(libs.android.material) + implementation(libs.androidx.core.ktx) + implementation(libs.androidx.activity.ktx) + implementation(libs.androidx.appcompat) + implementation(libs.androidx.fragment.ktx) + implementation(libs.androidx.lifecycle.viewModel.ktx) + implementation(libs.androidx.recyclerview) + implementation(libs.androidx.sqlite.ktx) + implementation(libs.coil.kt) + implementation(libs.kotlinx.datetime) + implementation(libs.kotlinx.coroutines.android) + implementation(libs.jackson.core) + implementation(libs.image.viewer) +} diff --git a/app/proguard.pro b/app/proguard.pro new file mode 100644 index 0000000..950af2e --- /dev/null +++ b/app/proguard.pro @@ -0,0 +1,9 @@ +-dontobfuscate + +# Disable ServiceLoader reproducibility-breaking optimizations +-keep class kotlinx.coroutines.CoroutineExceptionHandler +-keep class kotlinx.coroutines.internal.MainDispatcherFactory + +-dontwarn kotlinx.serialization.KSerializer +-dontwarn kotlinx.serialization.Serializable +-dontwarn org.slf4j.impl.StaticLoggerBinder \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..d8e510d --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,184 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png new file mode 100644 index 0000000000000000000000000000000000000000..db2ed4c70a962646c834da89547d49bae5ded3d8 GIT binary patch literal 128798 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�Z|2o$SkuXLPyq>2L2CDWLV{&jsM+(zwaA2CB>!uu^c5;9dh>wL8E=2SSvQZ5ym0jhx3JlznppO!u{1yKEC$ zSM|X5s)&zOr|~Hlbi_+%q{Ypvo(nk)i+I=T@ED&Z+Yg+PviX{d=qbtZB2JN{scPg? zfVPhwXumq=i6#Xf)gQ`ZZV+bjl| zF3^sF_C+VHzjE?Q?-*jCEe1UXf2JP7Ei}8N154Qq7*4`i3C70X*Im+WNe;C(&%XC* zw%9I){J0EYIl~I3HG$0=gO-$zBdB@vCTT;4TBoeG9GlttS4i_fn2{G$`$I9LnzuhmrE#`(;J5Y zMuXc%sK0V_d3|m?bxkObP!0B+iQg@ry-p^K5x~=^-`0m$*AYLH(w$FL0yEhQ+j-}J zPpH_xSar4gE%=r%#(0g18dBf62co%+xphXc=gwilQLs9g7vM;1W`C&L%)U)7r- z9yhd@1@fe3Pm|41qaj12tBZ&%%yR;HP$wK>D9q^J2F`$e<*r_EQUH6J9EO@#`&+Lq zz3tbGP8aCHX&wqS;|Li_~H(UQXId;lV7^Q*mfma`Nyc9d}k`wi0X)r z4h4z`|`>$akOZW=v>#JlC&h7aTeF88#_+OI09kVOvz;v$eq$kh86;v=q zz+2}b1Yfx(QHsUGN2QzQ)N)M%J#fAuUiwOYhTb7>7^izsY4NV1*X;{!(q*mbQdc3Xx>?{<#2GxRE@XSV|{6`5-_o*YY6a2u7W z0Se~o530vGPE=Ao;G&}}9YE74>{_9~bO7!IS1-w2fqVYG6;#^|lBSzt<$>W7cJl+T z6*iMjqn`5yUELWqZenCB42ZBrD<-RZ=sHsVMj%HJTWI~{B@J-KjvG6R5@osR$jFTZ zTz{bz$z5-a5L^+Pc#`xoFz#X8(+;JTpN>v+eoSDBxXgqS=_T)r?Hp)r-n;`xq@*6l zeSQqGk2^1%phShCG&Zj7vHe}8#?&&j{WETq5+4PTTjH-mBXrDOTdCx~imw5C_^h%5 zDRWCLz(*1txWbWD2uzT`QCpp?bAcJXrbFn@--qqbAqopkzZmv_@^A%q}C4}S;rhzY)Q)Ciot z@!@p$LL`-I7hw}L>`PG}n=rEpwFkN-!Ux_{Cs>N}40*@N8g>S0%#CqQestk=62$1e zq4$5jTPX|)-^Piu0yafs95Qj8KQE$0+A+Mvt5UH2CD1o?8xM`WRDj00$c`kl6M0IW zzVJDytQTS1Gk^;OPYxnk@zL0@hnXNEL5gL%bv|^^AErUE1dRqj0jTRS5>uSR4QE<# zW#}6mXk-XQxi(6WU3?0iAwMT-p*`XL#aqddD3c#O%Q}?*K&K=<0Q~MwAoKp->;y*- zb8*tkhwSLU2=TW$Q;IiE2L24giUSd5QimbJ6TPMLd}kBj(vmvT0zk}0(kMcw6=Gg$ zqUz)%n<2f71|>O9k)jIYv*dMq#syA@jcd73h!8CtFSi=tADNKkTu}RGEUUi|gj3imPERVks!${8$gY+v71YdKn~gW6kIGio|eAjMir(x0Co=Gm!A8JPFQw8J^|n( z^|DlY(xDMksur=!N`WK~<+bBcpysM;P1nL2v$L*d1J!MmFv~%QDkO~?Rr2Cj)%miD z)k2e9^fov9QzdC;gjpG05y~f{PoRKB6%6cPCd_yOg<>I<4P%lkxu~V$Gu$n8@|Lgmma-b{nkv| zfvS8xlcIq_zw-I+m)yxrHMZkF5mFn#_`AbXAUof`ICUU=Tk94_M2!KYE`-!qkKKCp zu)X9-A-Y4}Vi)}^`|9oh=K@DzlDBeu(PLngu%k@c z5|()=2a&$f^W%HHWhqM-0l^%iR6*_<=vNT-WtKA+Ch�bRnW6g)AC({(Vb}&8Co> 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

`Wmmofgdoy5R!<1XzS%?Ac2i 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 T@Yv;X{x8^|Pgz!2oWJvbd handleSpecialIntent(SpecialIntent.Updates) + ACTION_INSTALL -> handleSpecialIntent( + SpecialIntent.Install( + intent.getInstallPackageName, + intent.getStringExtra(EXTRA_CACHE_FILE_NAME) + ) + ) + + else -> super.handleIntent(intent) + } + } +} diff --git a/app/src/main/kotlin/com/leos/droidify/MainApplication.kt b/app/src/main/kotlin/com/leos/droidify/MainApplication.kt new file mode 100644 index 0000000..1839001 --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/MainApplication.kt @@ -0,0 +1,276 @@ +package com.leos.droidify + +import android.annotation.SuppressLint +import android.app.Application +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import androidx.appcompat.app.AppCompatDelegate +import androidx.hilt.work.HiltWorkerFactory +import androidx.work.Configuration +import androidx.work.NetworkType +import coil.ImageLoader +import coil.ImageLoaderFactory +import coil.disk.DiskCache +import coil.memory.MemoryCache +import com.leos.core.common.Constants +import com.leos.core.common.cache.Cache +import com.leos.core.common.extension.getInstalledPackagesCompat +import com.leos.core.common.extension.jobScheduler +import com.leos.core.common.log +import com.leos.core.datastore.SettingsRepository +import com.leos.core.datastore.get +import com.leos.core.datastore.model.AutoSync +import com.leos.core.datastore.model.InstallerType +import com.leos.core.datastore.model.ProxyPreference +import com.leos.core.datastore.model.ProxyType +import com.leos.droidify.content.ProductPreferences +import com.leos.droidify.database.Database +import com.leos.droidify.index.RepositoryUpdater +import com.leos.droidify.receivers.InstalledAppReceiver +import com.leos.droidify.service.Connection +import com.leos.droidify.service.SyncService +import com.leos.droidify.sync.SyncPreference +import com.leos.droidify.sync.toJobNetworkType +import com.leos.droidify.utility.extension.toInstalledItem +import com.leos.droidify.work.CleanUpWorker +import com.leos.installer.InstallManager +import com.leos.installer.installers.root.RootPermissionHandler +import com.leos.installer.installers.shizuku.ShizukuPermissionHandler +import com.leos.network.Downloader +import dagger.hilt.android.HiltAndroidApp +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.SupervisorJob +import kotlinx.coroutines.cancel +import kotlinx.coroutines.flow.collectIndexed +import kotlinx.coroutines.flow.drop +import kotlinx.coroutines.launch +import java.net.InetSocketAddress +import java.net.Proxy +import javax.inject.Inject +import kotlin.time.Duration.Companion.INFINITE +import kotlin.time.Duration.Companion.hours +import com.leos.core.common.R as CommonR + +@HiltAndroidApp +class MainApplication : Application(), ImageLoaderFactory, Configuration.Provider { + + private val parentJob = SupervisorJob() + private val appScope = CoroutineScope(Dispatchers.Default + parentJob) + + @Inject + lateinit var settingsRepository: SettingsRepository + + @Inject + lateinit var installer: InstallManager + + @Inject + lateinit var downloader: Downloader + + @Inject + lateinit var shizukuPermissionHandler: ShizukuPermissionHandler + + @Inject + lateinit var rootPermissionHandler: RootPermissionHandler + + @Inject + lateinit var workerFactory: HiltWorkerFactory + + override fun onCreate() { + super.onCreate() + + val databaseUpdated = Database.init(this) + ProductPreferences.init(this, appScope) + RepositoryUpdater.init(appScope, downloader) + listenApplications() + checkLanguage() + updatePreference() + setupInstaller() + + if (databaseUpdated) forceSyncAll() + } + + override fun onTerminate() { + super.onTerminate() + appScope.cancel("Application Terminated") + installer.close() + } + + private fun setupInstaller() { + appScope.launch { + launch { + settingsRepository.get { installerType }.collect { + if (it == InstallerType.SHIZUKU) handleShizukuInstaller() + if (it == InstallerType.ROOT) { + if (!rootPermissionHandler.isGranted) { + settingsRepository.setInstallerType(InstallerType.Default) + } + } + } + } + installer() + } + } + + private fun CoroutineScope.handleShizukuInstaller() = launch { + shizukuPermissionHandler.state.collect { (isGranted, isAlive, _) -> + if (isAlive && isGranted) { + settingsRepository.setInstallerType(InstallerType.SHIZUKU) + return@collect + } + if (isAlive) { + settingsRepository.setInstallerType(InstallerType.Default) + shizukuPermissionHandler.requestPermission() + return@collect + } + settingsRepository.setInstallerType(InstallerType.Default) + } + } + + private fun listenApplications() { + registerReceiver( + InstalledAppReceiver(packageManager), + IntentFilter().apply { + addAction(Intent.ACTION_PACKAGE_ADDED) + addAction(Intent.ACTION_PACKAGE_REMOVED) + addDataScheme("package") + } + ) + val installedItems = + packageManager.getInstalledPackagesCompat() + ?.map { it.toInstalledItem() } + ?: return + Database.InstalledAdapter.putAll(installedItems) + } + + private fun checkLanguage() { + appScope.launch { + val lastSetLanguage = settingsRepository.getInitial().language + val systemSetLanguage = AppCompatDelegate.getApplicationLocales().toLanguageTags() + if (systemSetLanguage != lastSetLanguage && lastSetLanguage != "system") { + settingsRepository.setLanguage(systemSetLanguage) + } + } + } + + private fun updatePreference() { + appScope.launch { + launch { + settingsRepository.get { unstableUpdate }.drop(1).collect { + forceSyncAll() + } + } + launch { + settingsRepository.get { autoSync }.collectIndexed { index, syncMode -> + // Don't update sync job on initial collect + updateSyncJob(index > 0, syncMode) + } + } + launch { + settingsRepository.get { cleanUpInterval }.drop(1).collect { + if (it == INFINITE) { + CleanUpWorker.removeAllSchedules(applicationContext) + } else { + CleanUpWorker.scheduleCleanup(applicationContext, it) + } + } + } + launch { + settingsRepository.get { proxy }.collect(::updateProxy) + } + } + } + + private fun updateProxy(proxyPreference: ProxyPreference) { + val type = proxyPreference.type + val host = proxyPreference.host + val port = proxyPreference.port + val socketAddress = when (type) { + ProxyType.DIRECT -> null + ProxyType.HTTP, ProxyType.SOCKS -> { + try { + InetSocketAddress.createUnresolved(host, port) + } catch (e: IllegalArgumentException) { + log(e) + null + } + } + } + val androidProxyType = when (type) { + ProxyType.DIRECT -> Proxy.Type.DIRECT + ProxyType.HTTP -> Proxy.Type.HTTP + ProxyType.SOCKS -> Proxy.Type.SOCKS + } + val determinedProxy = socketAddress?.let { Proxy(androidProxyType, it) } ?: Proxy.NO_PROXY + downloader.setProxy(determinedProxy) + } + + private fun updateSyncJob(force: Boolean, autoSync: AutoSync) { + if (autoSync == AutoSync.NEVER) { + jobScheduler?.cancel(Constants.JOB_ID_SYNC) + return + } + val jobScheduler = jobScheduler + val syncConditions = when (autoSync) { + AutoSync.ALWAYS -> SyncPreference(NetworkType.CONNECTED) + AutoSync.WIFI_ONLY -> SyncPreference(NetworkType.UNMETERED) + AutoSync.WIFI_PLUGGED_IN -> SyncPreference(NetworkType.UNMETERED, pluggedIn = true) + else -> null + } + val isPreviousJobPending = jobScheduler?.allPendingJobs + ?.any { it.id == Constants.JOB_ID_SYNC } == false + if ((force || !isPreviousJobPending) && syncConditions != null) { + val period = 12.hours.inWholeMilliseconds + val job = SyncService.Job.create( + context = this, + periodMillis = period, + networkType = syncConditions.toJobNetworkType(), + isCharging = syncConditions.pluggedIn, + isBatteryLow = syncConditions.batteryNotLow + ) + jobScheduler?.schedule(job) + } + } + + private fun forceSyncAll() { + Database.RepositoryAdapter.getAll().forEach { + if (it.lastModified.isNotEmpty() || it.entityTag.isNotEmpty()) { + Database.RepositoryAdapter.put(it.copy(lastModified = "", entityTag = "")) + } + } + Connection(SyncService::class.java, onBind = { connection, binder -> + binder.sync(SyncService.SyncRequest.FORCE) + connection.unbind(this) + }).bind(this) + } + + class BootReceiver : BroadcastReceiver() { + @SuppressLint("UnsafeProtectedBroadcastReceiver") + override fun onReceive(context: Context, intent: Intent) = Unit + } + + override fun newImageLoader(): ImageLoader { + val memoryCache = MemoryCache.Builder(this) + .maxSizePercent(0.25) + .build() + + val diskCache = DiskCache.Builder() + .directory(Cache.getImagesDir(this)) + .maxSizePercent(0.05) + .build() + + return ImageLoader.Builder(this) + .memoryCache(memoryCache) + .diskCache(diskCache) + .error(CommonR.drawable.ic_cannot_load) + .crossfade(350) + .build() + } + + override val workManagerConfiguration: Configuration + get() = Configuration.Builder() + .setWorkerFactory(workerFactory) + .build() +} diff --git a/app/src/main/kotlin/com/leos/droidify/ScreenActivity.kt b/app/src/main/kotlin/com/leos/droidify/ScreenActivity.kt new file mode 100644 index 0000000..f2f1bc5 --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/ScreenActivity.kt @@ -0,0 +1,311 @@ +package com.leos.droidify + +import android.Manifest +import android.content.Intent +import android.content.pm.PackageManager +import android.os.Build +import android.os.Bundle +import android.os.Parcelable +import android.view.ViewGroup +import android.widget.FrameLayout +import androidx.activity.result.contract.ActivityResultContracts +import androidx.appcompat.app.AppCompatActivity +import androidx.appcompat.widget.Toolbar +import androidx.core.content.ContextCompat +import androidx.core.view.WindowCompat +import androidx.fragment.app.Fragment +import androidx.fragment.app.commit +import androidx.lifecycle.lifecycleScope +import com.leos.core.common.* +import com.leos.core.common.extension.* +import com.leos.core.datastore.SettingsRepository +import com.leos.core.datastore.extension.getThemeRes +import com.leos.core.datastore.get +import com.leos.droidify.database.CursorOwner +import com.leos.droidify.ui.ScreenFragment +import com.leos.droidify.ui.appDetail.AppDetailFragment +import com.leos.droidify.ui.favourites.FavouritesFragment +import com.leos.droidify.ui.repository.EditRepositoryFragment +import com.leos.droidify.ui.repository.RepositoriesFragment +import com.leos.droidify.ui.repository.RepositoryFragment +import com.leos.droidify.ui.settings.SettingsFragment +import com.leos.droidify.ui.tabsFragment.TabsFragment +import com.leos.installer.InstallManager +import com.leos.installer.model.installFrom +import dagger.hilt.EntryPoint +import dagger.hilt.InstallIn +import dagger.hilt.android.AndroidEntryPoint +import dagger.hilt.android.EntryPointAccessors +import dagger.hilt.components.SingletonComponent +import kotlinx.coroutines.flow.drop +import kotlinx.coroutines.flow.first +import kotlinx.coroutines.launch +import kotlinx.coroutines.runBlocking +import kotlinx.parcelize.Parcelize +import javax.inject.Inject + +@AndroidEntryPoint +abstract class ScreenActivity : AppCompatActivity() { + companion object { + private const val STATE_FRAGMENT_STACK = "fragmentStack" + } + + sealed interface SpecialIntent { + data object Updates : SpecialIntent + class Install(val packageName: String?, val cacheFileName: String?) : SpecialIntent + } + + private val notificationPermission = + registerForActivityResult(ActivityResultContracts.RequestPermission()) { } + + @Inject + lateinit var installer: InstallManager + + @Parcelize + private class FragmentStackItem( + val className: String, + val arguments: Bundle?, + val savedState: Fragment.SavedState? + ) : Parcelable + + lateinit var cursorOwner: CursorOwner + private set + + private val fragmentStack = mutableListOf() + + private val currentFragment: Fragment? + get() { + supportFragmentManager.executePendingTransactions() + return supportFragmentManager.findFragmentById(R.id.main_content) + } + + @EntryPoint + @InstallIn(SingletonComponent::class) + interface CustomUserRepositoryInjector { + fun settingsRepository(): SettingsRepository + } + + private fun collectChange() { + val hiltEntryPoint = + EntryPointAccessors.fromApplication( + this, + CustomUserRepositoryInjector::class.java + ) + val newSettings = hiltEntryPoint.settingsRepository() + .get { theme to dynamicTheme } + runBlocking { + val theme = newSettings.first() + setTheme( + resources.configuration.getThemeRes( + theme = theme.first, + dynamicTheme = theme.second + ) + ) + } + lifecycleScope.launch { + newSettings.drop(1).collect { themeAndDynamic -> + setTheme( + resources.configuration.getThemeRes( + theme = themeAndDynamic.first, + dynamicTheme = themeAndDynamic.second + ) + ) + recreate() + } + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + collectChange() + super.onCreate(savedInstanceState) + val rootView = FrameLayout(this).apply { id = R.id.main_content } + addContentView( + rootView, + ViewGroup.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.MATCH_PARENT + ) + ) + + when { + ContextCompat.checkSelfPermission( + this, + Manifest.permission.POST_NOTIFICATIONS + ) == PackageManager.PERMISSION_GRANTED -> { + } + + shouldShowRequestPermissionRationale(Manifest.permission.POST_NOTIFICATIONS) -> { + sdkAbove(Build.VERSION_CODES.TIRAMISU) { + notificationPermission.launch(Manifest.permission.POST_NOTIFICATIONS) + } + } + + else -> { + sdkAbove(Build.VERSION_CODES.TIRAMISU) { + notificationPermission.launch(Manifest.permission.POST_NOTIFICATIONS) + } + } + } + + supportFragmentManager.addFragmentOnAttachListener { _, _ -> + hideKeyboard() + } + + if (savedInstanceState == null) { + cursorOwner = CursorOwner() + supportFragmentManager.commit { + add(cursorOwner, CursorOwner::class.java.name) + } + } else { + cursorOwner = supportFragmentManager + .findFragmentByTag(CursorOwner::class.java.name) as CursorOwner + } + + savedInstanceState?.getParcelableArrayList(STATE_FRAGMENT_STACK) + ?.let { fragmentStack += it } + if (savedInstanceState == null) { + replaceFragment(TabsFragment(), null) + if ((intent.flags and Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) == 0) { + handleIntent(intent) + } + } + if (SdkCheck.isR) { + window.statusBarColor = resources.getColor(android.R.color.transparent, theme) + window.navigationBarColor = resources.getColor(android.R.color.transparent, theme) + WindowCompat.setDecorFitsSystemWindows(window, false) + } + } + + override fun onSaveInstanceState(outState: Bundle) { + super.onSaveInstanceState(outState) + outState.putParcelableArrayList(STATE_FRAGMENT_STACK, ArrayList(fragmentStack)) + } + + override fun onBackPressed() { + val currentFragment = currentFragment + if (!(currentFragment is ScreenFragment && currentFragment.onBackPressed())) { + hideKeyboard() + if (!popFragment()) { + super.onBackPressed() + } + } + } + + private fun replaceFragment(fragment: Fragment, open: Boolean?) { + if (open != null) { + currentFragment?.view?.translationZ = + (if (open) Int.MIN_VALUE else Int.MAX_VALUE).toFloat() + } + supportFragmentManager.commit { + if (open != null) { + setCustomAnimations( + if (open) R.animator.slide_in else 0, + if (open) R.animator.slide_in_keep else R.animator.slide_out + ) + } + setReorderingAllowed(true) + replace(R.id.main_content, fragment) + } + } + + private fun pushFragment(fragment: Fragment) { + currentFragment?.let { + fragmentStack.add( + FragmentStackItem( + it::class.java.name, + it.arguments, + supportFragmentManager.saveFragmentInstanceState(it) + ) + ) + } + replaceFragment(fragment, true) + } + + private fun popFragment(): Boolean { + return fragmentStack.isNotEmpty() && run { + val stackItem = fragmentStack.removeAt(fragmentStack.size - 1) + val fragment = Class.forName(stackItem.className).newInstance() as Fragment + stackItem.arguments?.let(fragment::setArguments) + stackItem.savedState?.let(fragment::setInitialSavedState) + replaceFragment(fragment, false) + true + } + } + + private fun hideKeyboard() { + inputManager?.hideSoftInputFromWindow((currentFocus ?: window.decorView).windowToken, 0) + } + + internal fun onToolbarCreated(toolbar: Toolbar) { + if (fragmentStack.isNotEmpty()) { + toolbar.navigationIcon = toolbar.context.homeAsUp + toolbar.setNavigationOnClickListener { onBackPressed() } + } + } + + override fun onNewIntent(intent: Intent?) { + super.onNewIntent(intent) + handleIntent(intent) + } + + protected fun handleSpecialIntent(specialIntent: SpecialIntent) { + when (specialIntent) { + is SpecialIntent.Updates -> { + if (currentFragment !is TabsFragment) { + fragmentStack.clear() + replaceFragment(TabsFragment(), true) + } + val tabsFragment = currentFragment as TabsFragment + tabsFragment.selectUpdates() + } + + is SpecialIntent.Install -> { + val packageName = specialIntent.packageName + if (!packageName.isNullOrEmpty()) { + navigateProduct(packageName) + specialIntent.cacheFileName?.also { cacheFile -> + val installItem = packageName installFrom cacheFile + lifecycleScope.launch { installer install installItem } + } + } + Unit + } + }::class + } + + open fun handleIntent(intent: Intent?) { + when (intent?.action) { + Intent.ACTION_VIEW -> { + when (val deeplink = intent.deeplinkType) { + is DeeplinkType.AppDetail -> { + val fragment = currentFragment + if (fragment !is AppDetailFragment) { + navigateProduct(deeplink.packageName, deeplink.repoAddress) + } + } + + is DeeplinkType.AddRepository -> { + navigateAddRepository(repoAddress = deeplink.address) + } + + null -> {} + } + } + } + } + + internal fun navigateFavourites() = pushFragment(FavouritesFragment()) + internal fun navigateProduct(packageName: String, repoAddress: String? = null) = + pushFragment(AppDetailFragment(packageName, repoAddress)) + + internal fun navigateRepositories() = pushFragment(RepositoriesFragment()) + internal fun navigatePreferences() = pushFragment(SettingsFragment.newInstance()) + internal fun navigateAddRepository(repoAddress: String? = null) = + pushFragment(EditRepositoryFragment(null, repoAddress)) + + internal fun navigateRepository(repositoryId: Long) = + pushFragment(RepositoryFragment(repositoryId)) + + internal fun navigateEditRepository(repositoryId: Long) = + pushFragment(EditRepositoryFragment(repositoryId, null)) +} diff --git a/app/src/main/kotlin/com/leos/droidify/content/ProductPreferences.kt b/app/src/main/kotlin/com/leos/droidify/content/ProductPreferences.kt new file mode 100644 index 0000000..f7b5569 --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/content/ProductPreferences.kt @@ -0,0 +1,79 @@ +package com.leos.droidify.content + +import android.content.Context +import android.content.SharedPreferences +import com.leos.core.common.extension.Json +import com.leos.core.common.extension.parseDictionary +import com.leos.core.common.extension.writeDictionary +import com.leos.core.domain.ProductPreference +import com.leos.droidify.database.Database +import com.leos.droidify.utility.serialization.productPreference +import com.leos.droidify.utility.serialization.serialize +import java.io.ByteArrayOutputStream +import java.nio.charset.Charset +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.flow.MutableSharedFlow +import kotlinx.coroutines.flow.asSharedFlow +import kotlinx.coroutines.launch + +object ProductPreferences { + private val defaultProductPreference = ProductPreference(false, 0L) + private lateinit var preferences: SharedPreferences + private val mutableSubject = MutableSharedFlow>() + private val subject = mutableSubject.asSharedFlow() + + fun init(context: Context, scope: CoroutineScope) { + preferences = context.getSharedPreferences("product_preferences", Context.MODE_PRIVATE) + Database.LockAdapter.putAll( + preferences.all.keys.mapNotNull { packageName -> + this[packageName].databaseVersionCode?.let { Pair(packageName, it) } + } + ) + scope.launch { + subject.collect { (packageName, versionCode) -> + if (versionCode != null) { + Database.LockAdapter.put(Pair(packageName, versionCode)) + } else { + Database.LockAdapter.delete(packageName) + } + } + } + } + + private val ProductPreference.databaseVersionCode: Long? + get() = when { + ignoreUpdates -> 0L + ignoreVersionCode > 0L -> ignoreVersionCode + else -> null + } + + operator fun get(packageName: String): ProductPreference { + return if (preferences.contains(packageName)) { + try { + Json.factory.createParser(preferences.getString(packageName, "{}")) + .use { it.parseDictionary { productPreference() } } + } catch (e: Exception) { + e.printStackTrace() + defaultProductPreference + } + } else { + defaultProductPreference + } + } + + operator fun set(packageName: String, productPreference: ProductPreference) { + val oldProductPreference = this[packageName] + preferences.edit().putString( + packageName, + ByteArrayOutputStream().apply { + Json.factory.createGenerator(this) + .use { it.writeDictionary(productPreference::serialize) } + }.toByteArray().toString(Charset.defaultCharset()) + ).apply() + if (oldProductPreference.ignoreUpdates != productPreference.ignoreUpdates || + oldProductPreference.ignoreVersionCode != productPreference.ignoreVersionCode + ) { + mutableSubject.tryEmit(Pair(packageName, productPreference.databaseVersionCode)) + } + } +} diff --git a/app/src/main/kotlin/com/leos/droidify/database/CursorOwner.kt b/app/src/main/kotlin/com/leos/droidify/database/CursorOwner.kt new file mode 100644 index 0000000..3e583bd --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/database/CursorOwner.kt @@ -0,0 +1,143 @@ +package com.leos.droidify.database + +import android.database.Cursor +import android.os.Bundle +import androidx.fragment.app.Fragment +import androidx.loader.app.LoaderManager +import androidx.loader.content.Loader +import com.leos.core.datastore.model.SortOrder +import com.leos.core.domain.ProductItem + +class CursorOwner : Fragment(), LoaderManager.LoaderCallbacks { + sealed class Request { + internal abstract val id: Int + + data class ProductsAvailable( + val searchQuery: String, + val section: ProductItem.Section, + val order: SortOrder + ) : Request() { + override val id: Int + get() = 1 + } + + data class ProductsInstalled( + val searchQuery: String, + val section: ProductItem.Section, + val order: SortOrder + ) : Request() { + override val id: Int + get() = 2 + } + + data class ProductsUpdates( + val searchQuery: String, + val section: ProductItem.Section, + val order: SortOrder + ) : Request() { + override val id: Int + get() = 3 + } + + object Repositories : Request() { + override val id: Int + get() = 4 + } + } + + interface Callback { + fun onCursorData(request: Request, cursor: Cursor?) + } + + private data class ActiveRequest( + val request: Request, + val callback: Callback?, + val cursor: Cursor? + ) + + init { + retainInstance = true + } + + private val activeRequests = mutableMapOf() + + fun attach(callback: Callback, request: Request) { + val oldActiveRequest = activeRequests[request.id] + if (oldActiveRequest?.callback != null && + oldActiveRequest.callback != callback && oldActiveRequest.cursor != null + ) { + oldActiveRequest.callback.onCursorData(oldActiveRequest.request, null) + } + val cursor = if (oldActiveRequest?.request == request && oldActiveRequest.cursor != null) { + callback.onCursorData(request, oldActiveRequest.cursor) + oldActiveRequest.cursor + } else { + null + } + activeRequests[request.id] = ActiveRequest(request, callback, cursor) + if (cursor == null) { + LoaderManager.getInstance(this).restartLoader(request.id, null, this) + } + } + + fun detach(callback: Callback) { + for (id in activeRequests.keys) { + val activeRequest = activeRequests[id]!! + if (activeRequest.callback == callback) { + activeRequests[id] = activeRequest.copy(callback = null) + } + } + } + + override fun onCreateLoader(id: Int, args: Bundle?): Loader { + val request = activeRequests[id]!!.request + return QueryLoader(requireContext()) { + when (request) { + is Request.ProductsAvailable -> + Database.ProductAdapter + .query( + installed = false, + updates = false, + searchQuery = request.searchQuery, + section = request.section, + order = request.order, + signal = it + ) + + is Request.ProductsInstalled -> + Database.ProductAdapter + .query( + installed = true, + updates = false, + searchQuery = request.searchQuery, + section = request.section, + order = request.order, + signal = it + ) + + is Request.ProductsUpdates -> + Database.ProductAdapter + .query( + installed = true, + updates = true, + searchQuery = request.searchQuery, + section = request.section, + order = request.order, + signal = it + ) + + is Request.Repositories -> Database.RepositoryAdapter.query(it) + } + } + } + + override fun onLoadFinished(loader: Loader, data: Cursor?) { + val activeRequest = activeRequests[loader.id] + if (activeRequest != null) { + activeRequests[loader.id] = activeRequest.copy(cursor = data) + activeRequest.callback?.onCursorData(activeRequest.request, data) + } + } + + override fun onLoaderReset(loader: Loader) = onLoadFinished(loader, null) +} diff --git a/app/src/main/kotlin/com/leos/droidify/database/Database.kt b/app/src/main/kotlin/com/leos/droidify/database/Database.kt new file mode 100644 index 0000000..6b1f492 --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/database/Database.kt @@ -0,0 +1,964 @@ +package com.leos.droidify.database + +import android.content.ContentValues +import android.content.Context +import android.database.Cursor +import android.database.sqlite.SQLiteDatabase +import android.database.sqlite.SQLiteOpenHelper +import android.os.CancellationSignal +import androidx.core.database.sqlite.transaction +import com.fasterxml.jackson.core.JsonGenerator +import com.fasterxml.jackson.core.JsonParser +import com.leos.core.common.extension.Json +import com.leos.core.common.extension.asSequence +import com.leos.core.common.extension.firstOrNull +import com.leos.core.common.extension.parseDictionary +import com.leos.core.common.extension.writeDictionary +import com.leos.core.common.log +import com.leos.core.datastore.model.SortOrder +import com.leos.core.domain.InstalledItem +import com.leos.core.domain.Product +import com.leos.core.domain.ProductItem +import com.leos.core.domain.Repository +import com.leos.droidify.BuildConfig +import com.leos.droidify.utility.serialization.product +import com.leos.droidify.utility.serialization.productItem +import com.leos.droidify.utility.serialization.repository +import com.leos.droidify.utility.serialization.serialize +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.channels.awaitClose +import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.callbackFlow +import kotlinx.coroutines.flow.emitAll +import kotlinx.coroutines.flow.flowOf +import kotlinx.coroutines.flow.flowOn +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.onCompletion +import kotlinx.coroutines.flow.onEach +import kotlinx.coroutines.withContext +import java.io.ByteArrayOutputStream +import kotlin.collections.component1 +import kotlin.collections.component2 +import kotlin.collections.set + +object Database { + fun init(context: Context): Boolean { + val helper = Helper(context) + db = helper.writableDatabase + if (helper.created) { + for (repository in Repository.defaultRepositories) { + RepositoryAdapter.put(repository) + } + } + RepositoryAdapter.removeDuplicates() + return helper.created || helper.updated + } + + private lateinit var db: SQLiteDatabase + + private interface Table { + val memory: Boolean + val innerName: String + val createTable: String + val createIndex: String? + get() = null + + val databasePrefix: String + get() = if (memory) "memory." else "" + + val name: String + get() = "$databasePrefix$innerName" + + fun formatCreateTable(name: String): String { + return "CREATE TABLE $name (${QueryBuilder.trimQuery(createTable)})" + } + + val createIndexPairFormatted: Pair? + get() = createIndex?.let { + Pair( + "CREATE INDEX ${innerName}_index ON $innerName ($it)", + "CREATE INDEX ${name}_index ON $innerName ($it)" + ) + } + } + + private object Schema { + object Repository : Table { + const val ROW_ID = "_id" + const val ROW_ENABLED = "enabled" + const val ROW_DELETED = "deleted" + const val ROW_DATA = "data" + + override val memory = false + override val innerName = "repository" + override val createTable = """ + $ROW_ID INTEGER PRIMARY KEY AUTOINCREMENT, + $ROW_ENABLED INTEGER NOT NULL, + $ROW_DELETED INTEGER NOT NULL, + $ROW_DATA BLOB NOT NULL + """ + } + + object Product : Table { + const val ROW_REPOSITORY_ID = "repository_id" + const val ROW_PACKAGE_NAME = "package_name" + const val ROW_NAME = "name" + const val ROW_SUMMARY = "summary" + const val ROW_DESCRIPTION = "description" + const val ROW_ADDED = "added" + const val ROW_UPDATED = "updated" + const val ROW_VERSION_CODE = "version_code" + const val ROW_SIGNATURES = "signatures" + const val ROW_COMPATIBLE = "compatible" + const val ROW_DATA = "data" + const val ROW_DATA_ITEM = "data_item" + + override val memory = false + override val innerName = "product" + override val createTable = """ + $ROW_REPOSITORY_ID INTEGER NOT NULL, + $ROW_PACKAGE_NAME TEXT NOT NULL, + $ROW_NAME TEXT NOT NULL, + $ROW_SUMMARY TEXT NOT NULL, + $ROW_DESCRIPTION TEXT NOT NULL, + $ROW_ADDED INTEGER NOT NULL, + $ROW_UPDATED INTEGER NOT NULL, + $ROW_VERSION_CODE INTEGER NOT NULL, + $ROW_SIGNATURES TEXT NOT NULL, + $ROW_COMPATIBLE INTEGER NOT NULL, + $ROW_DATA BLOB NOT NULL, + $ROW_DATA_ITEM BLOB NOT NULL, + PRIMARY KEY ($ROW_REPOSITORY_ID, $ROW_PACKAGE_NAME) + """ + override val createIndex = ROW_PACKAGE_NAME + } + + object Category : Table { + const val ROW_REPOSITORY_ID = "repository_id" + const val ROW_PACKAGE_NAME = "package_name" + const val ROW_NAME = "name" + + override val memory = false + override val innerName = "category" + override val createTable = """ + $ROW_REPOSITORY_ID INTEGER NOT NULL, + $ROW_PACKAGE_NAME TEXT NOT NULL, + $ROW_NAME TEXT NOT NULL, + PRIMARY KEY ($ROW_REPOSITORY_ID, $ROW_PACKAGE_NAME, $ROW_NAME) + """ + override val createIndex = "$ROW_PACKAGE_NAME, $ROW_NAME" + } + + object Installed : Table { + const val ROW_PACKAGE_NAME = "package_name" + const val ROW_VERSION = "version" + const val ROW_VERSION_CODE = "version_code" + const val ROW_SIGNATURE = "signature" + + override val memory = true + override val innerName = "installed" + override val createTable = """ + $ROW_PACKAGE_NAME TEXT PRIMARY KEY, + $ROW_VERSION TEXT NOT NULL, + $ROW_VERSION_CODE INTEGER NOT NULL, + $ROW_SIGNATURE TEXT NOT NULL + """ + } + + object Lock : Table { + const val ROW_PACKAGE_NAME = "package_name" + const val ROW_VERSION_CODE = "version_code" + + override val memory = true + override val innerName = "lock" + override val createTable = """ + $ROW_PACKAGE_NAME TEXT PRIMARY KEY, + $ROW_VERSION_CODE INTEGER NOT NULL + """ + } + + object Synthetic { + const val ROW_CAN_UPDATE = "can_update" + const val ROW_MATCH_RANK = "match_rank" + } + } + + private class Helper(context: Context) : SQLiteOpenHelper(context, "droidify", null, 2) { + var created = false + private set + var updated = false + private set + + override fun onCreate(db: SQLiteDatabase) = Unit + override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) = + onVersionChange(db) + + override fun onDowngrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) = + onVersionChange(db) + + private fun onVersionChange(db: SQLiteDatabase) { + handleTables(db, true, Schema.Product, Schema.Category) + addRepos(db, Repository.newlyAdded) + this.updated = true + } + + override fun onOpen(db: SQLiteDatabase) { + val create = handleTables(db, false, Schema.Repository) + val updated = handleTables(db, create, Schema.Product, Schema.Category) + db.execSQL("ATTACH DATABASE ':memory:' AS memory") + handleTables(db, false, Schema.Installed, Schema.Lock) + handleIndexes( + db, + Schema.Repository, + Schema.Product, + Schema.Category, + Schema.Installed, + Schema.Lock + ) + dropOldTables(db, Schema.Repository, Schema.Product, Schema.Category) + this.created = this.created || create + this.updated = this.updated || create || updated + } + } + + private fun handleTables(db: SQLiteDatabase, recreate: Boolean, vararg tables: Table): Boolean { + val shouldRecreate = recreate || tables.any { table -> + val sql = db.query( + "${table.databasePrefix}sqlite_master", + columns = arrayOf("sql"), + selection = Pair("type = ? AND name = ?", arrayOf("table", table.innerName)) + ).use { it.firstOrNull()?.getString(0) }.orEmpty() + table.formatCreateTable(table.innerName) != sql + } + return shouldRecreate && run { + val shouldVacuum = tables.map { + db.execSQL("DROP TABLE IF EXISTS ${it.name}") + db.execSQL(it.formatCreateTable(it.name)) + !it.memory + } + if (shouldVacuum.any { it } && !db.inTransaction()) { + db.execSQL("VACUUM") + } + true + } + } + + private fun addRepos(db: SQLiteDatabase, repos: List) { + if (BuildConfig.DEBUG) { + log("Add Repos: $repos", "RepositoryAdapter") + } + if (repos.isEmpty()) return + db.transaction { + repos.forEach { + RepositoryAdapter.put(it) + } + } + } + + private fun handleIndexes(db: SQLiteDatabase, vararg tables: Table) { + val shouldVacuum = tables.map { table -> + val sqls = db.query( + "${table.databasePrefix}sqlite_master", + columns = arrayOf("name", "sql"), + selection = Pair("type = ? AND tbl_name = ?", arrayOf("index", table.innerName)) + ) + .use { cursor -> + cursor.asSequence() + .mapNotNull { it.getString(1)?.let { sql -> Pair(it.getString(0), sql) } } + .toList() + } + .filter { !it.first.startsWith("sqlite_") } + val createIndexes = table.createIndexPairFormatted?.let { listOf(it) }.orEmpty() + createIndexes.map { it.first } != sqls.map { it.second } && run { + for (name in sqls.map { it.first }) { + db.execSQL("DROP INDEX IF EXISTS $name") + } + for (createIndexPair in createIndexes) { + db.execSQL(createIndexPair.second) + } + !table.memory + } + } + if (shouldVacuum.any { it } && !db.inTransaction()) { + db.execSQL("VACUUM") + } + } + + private fun dropOldTables(db: SQLiteDatabase, vararg neededTables: Table) { + val tables = db.query( + "sqlite_master", + columns = arrayOf("name"), + selection = Pair("type = ?", arrayOf("table")) + ) + .use { cursor -> cursor.asSequence().mapNotNull { it.getString(0) }.toList() } + .filter { !it.startsWith("sqlite_") && !it.startsWith("android_") } + .toSet() - neededTables.mapNotNull { if (it.memory) null else it.name }.toSet() + if (tables.isNotEmpty()) { + for (table in tables) { + db.execSQL("DROP TABLE IF EXISTS $table") + } + if (!db.inTransaction()) { + db.execSQL("VACUUM") + } + } + } + + sealed class Subject { + data object Repositories : Subject() + data class Repository(val id: Long) : Subject() + data object Products : Subject() + } + + private val observers = mutableMapOf Unit>>() + + private fun dataObservable(subject: Subject): (Boolean, () -> Unit) -> Unit = + { register, observer -> + synchronized(observers) { + val set = observers[subject] ?: run { + val set = mutableSetOf<() -> Unit>() + observers[subject] = set + set + } + if (register) { + set += observer + } else { + set -= observer + } + } + } + + fun flowCollection(subject: Subject): Flow = callbackFlow { + val callback: () -> Unit = { trySend(Unit) } + val dataObservable = dataObservable(subject) + dataObservable(true, callback) + + awaitClose { dataObservable(false, callback) } + }.flowOn(Dispatchers.IO) + + private fun notifyChanged(vararg subjects: Subject) { + synchronized(observers) { + subjects.asSequence().mapNotNull { observers[it] }.flatten().forEach { it() } + } + } + + private fun SQLiteDatabase.insertOrReplace( + replace: Boolean, + table: String, + contentValues: ContentValues + ): Long { + return if (replace) { + replace(table, null, contentValues) + } else { + insert( + table, + null, + contentValues + ) + } + } + + private fun SQLiteDatabase.query( + table: String, + columns: Array? = null, + selection: Pair>? = null, + orderBy: String? = null, + signal: CancellationSignal? = null + ): Cursor { + return query( + false, + table, + columns, + selection?.first, + selection?.second, + null, + null, + orderBy, + null, + signal + ) + } + + private fun Cursor.observable(subject: Subject): ObservableCursor { + return ObservableCursor(this, dataObservable(subject)) + } + + fun ByteArray.jsonParse(callback: (JsonParser) -> T): T { + return Json.factory.createParser(this).use { it.parseDictionary(callback) } + } + + fun jsonGenerate(callback: (JsonGenerator) -> Unit): ByteArray { + val outputStream = ByteArrayOutputStream() + Json.factory.createGenerator(outputStream).use { it.writeDictionary(callback) } + return outputStream.toByteArray() + } + + object RepositoryAdapter { + internal fun putWithoutNotification(repository: Repository, shouldReplace: Boolean): Long { + return db.insertOrReplace( + shouldReplace, + Schema.Repository.name, + ContentValues().apply { + if (shouldReplace) { + put(Schema.Repository.ROW_ID, repository.id) + } + put(Schema.Repository.ROW_ENABLED, if (repository.enabled) 1 else 0) + put(Schema.Repository.ROW_DELETED, 0) + put(Schema.Repository.ROW_DATA, jsonGenerate(repository::serialize)) + } + ) + } + + fun put(repository: Repository): Repository { + val shouldReplace = repository.id >= 0L + val newId = putWithoutNotification(repository, shouldReplace) + val id = if (shouldReplace) repository.id else newId + notifyChanged(Subject.Repositories, Subject.Repository(id), Subject.Products) + return if (newId != repository.id) repository.copy(id = newId) else repository + } + + fun removeDuplicates() { + db.transaction { + val all = getAll() + val different = all.distinctBy { it.address } + val duplicates = all - different.toSet() + duplicates.forEach { + markAsDeleted(it.id) + } + } + } + + fun getStream(id: Long): Flow = flowOf(Unit) + .onCompletion { if (it == null) emitAll(flowCollection(Subject.Repositories)) } + .map { get(id) } + .flowOn(Dispatchers.IO) + + fun get(id: Long): Repository? { + return db.query( + Schema.Repository.name, + selection = Pair( + "${Schema.Repository.ROW_ID} = ? AND ${Schema.Repository.ROW_DELETED} == 0", + arrayOf(id.toString()) + ) + ).use { it.firstOrNull()?.let(::transform) } + } + + fun getAllStream(): Flow> = flowOf(Unit) + .onCompletion { if (it == null) emitAll(flowCollection(Subject.Repositories)) } + .map { getAll() } + .flowOn(Dispatchers.IO) + + fun getEnabledStream(): Flow> = flowOf(Unit) + .onCompletion { if (it == null) emitAll(flowCollection(Subject.Repositories)) } + .map { getEnabled() } + .flowOn(Dispatchers.IO) + + private suspend fun getEnabled(): List = withContext(Dispatchers.IO) { + db.query( + Schema.Repository.name, + selection = Pair( + "${Schema.Repository.ROW_ENABLED} != 0 AND " + + "${Schema.Repository.ROW_DELETED} == 0", + emptyArray() + ), + signal = null + ).use { it.asSequence().map(::transform).toList() } + } + + fun getAll(): List { + return db.query( + Schema.Repository.name, + selection = Pair("${Schema.Repository.ROW_DELETED} == 0", emptyArray()), + signal = null + ).use { it.asSequence().map(::transform).toList() } + } + + fun getAllRemovedStream(): Flow> = flowOf(Unit) + .onCompletion { if (it == null) emitAll(flowCollection(Subject.Repositories)) } + .map { getAllDisabledDeleted() } + .flowOn(Dispatchers.IO) + + private fun getAllDisabledDeleted(): Map { + return db.query( + Schema.Repository.name, + columns = arrayOf(Schema.Repository.ROW_ID, Schema.Repository.ROW_DELETED), + selection = Pair( + "${Schema.Repository.ROW_ENABLED} == 0 OR " + + "${Schema.Repository.ROW_DELETED} != 0", + emptyArray() + ), + signal = null + ).use { parentCursor -> + parentCursor.asSequence().associate { + val idIndex = it.getColumnIndexOrThrow(Schema.Repository.ROW_ID) + val isDeletedIndex = it.getColumnIndexOrThrow(Schema.Repository.ROW_DELETED) + it.getLong(idIndex) to (it.getInt(isDeletedIndex) != 0) + } + } + } + + fun markAsDeleted(id: Long) { + db.update( + Schema.Repository.name, + ContentValues().apply { + put(Schema.Repository.ROW_DELETED, 1) + }, + "${Schema.Repository.ROW_ID} = ?", + arrayOf(id.toString()) + ) + notifyChanged(Subject.Repositories, Subject.Repository(id), Subject.Products) + } + + fun cleanup(removedRepos: Map) { + val result = removedRepos.map { (id, isDeleted) -> + val idsString = id.toString() + val productsCount = db.delete( + Schema.Product.name, + "${Schema.Product.ROW_REPOSITORY_ID} IN ($idsString)", + null + ) + val categoriesCount = db.delete( + Schema.Category.name, + "${Schema.Category.ROW_REPOSITORY_ID} IN ($idsString)", + null + ) + if (isDeleted) { + db.delete( + Schema.Repository.name, + "${Schema.Repository.ROW_ID} IN ($id)", + null + ) + } + productsCount != 0 || categoriesCount != 0 + } + if (result.any { it }) { + notifyChanged(Subject.Products) + } + } + + fun importRepos(list: List) { + db.transaction { + val currentAddresses = getAll().map { it.address } + val newRepos = list + .filter { it.address !in currentAddresses } + newRepos.forEach { put(it) } + removeDuplicates() + } + } + + fun query(signal: CancellationSignal?): Cursor { + return db.query( + Schema.Repository.name, + selection = Pair("${Schema.Repository.ROW_DELETED} == 0", emptyArray()), + orderBy = "${Schema.Repository.ROW_ENABLED} DESC", + signal = signal + ).observable(Subject.Repositories) + } + + fun transform(cursor: Cursor): Repository { + return cursor.getBlob(cursor.getColumnIndexOrThrow(Schema.Repository.ROW_DATA)) + .jsonParse { + it.repository().apply { + this.id = + cursor.getLong(cursor.getColumnIndexOrThrow(Schema.Repository.ROW_ID)) + } + } + } + } + + object ProductAdapter { + + fun getStream(packageName: String): Flow> = flowOf(Unit) + .onCompletion { if (it == null) emitAll(flowCollection(Subject.Products)) } + .map { get(packageName, null) } + .flowOn(Dispatchers.IO) + + suspend fun getUpdates(): List = withContext(Dispatchers.IO) { + query( + installed = true, + updates = true, + searchQuery = "", + section = ProductItem.Section.All, + order = SortOrder.NAME, + signal = null + ).use { + it.asSequence() + .map(ProductAdapter::transformItem) + .toList() + } + } + + fun getUpdatesStream(): Flow> = flowOf(Unit) + .onCompletion { if (it == null) emitAll(flowCollection(Subject.Products)) } + // Crashes due to immediate retrieval of data? + .onEach { delay(50) } + .map { getUpdates() } + .flowOn(Dispatchers.IO) + + fun get(packageName: String, signal: CancellationSignal?): List { + return db.query( + Schema.Product.name, + columns = arrayOf( + Schema.Product.ROW_REPOSITORY_ID, + Schema.Product.ROW_DESCRIPTION, + Schema.Product.ROW_DATA + ), + selection = Pair("${Schema.Product.ROW_PACKAGE_NAME} = ?", arrayOf(packageName)), + signal = signal + ).use { it.asSequence().map(::transform).toList() } + } + + fun getCountStream(repositoryId: Long): Flow = flowOf(Unit) + .onCompletion { if (it == null) emitAll(flowCollection(Subject.Products)) } + .map { getCount(repositoryId) } + .flowOn(Dispatchers.IO) + + private fun getCount(repositoryId: Long): Int { + return db.query( + Schema.Product.name, + columns = arrayOf("COUNT (*)"), + selection = Pair( + "${Schema.Product.ROW_REPOSITORY_ID} = ?", + arrayOf(repositoryId.toString()) + ) + ).use { it.firstOrNull()?.getInt(0) ?: 0 } + } + + fun query( + installed: Boolean, + updates: Boolean, + searchQuery: String, + section: ProductItem.Section, + order: SortOrder, + signal: CancellationSignal? + ): Cursor { + val builder = QueryBuilder() + + val signatureMatches = """installed.${Schema.Installed.ROW_SIGNATURE} IS NOT NULL AND + product.${Schema.Product.ROW_SIGNATURES} LIKE ('%.' || installed.${Schema.Installed.ROW_SIGNATURE} || '.%') AND + product.${Schema.Product.ROW_SIGNATURES} != ''""" + + builder += """SELECT product.rowid AS _id, product.${Schema.Product.ROW_REPOSITORY_ID}, + product.${Schema.Product.ROW_PACKAGE_NAME}, product.${Schema.Product.ROW_NAME}, + product.${Schema.Product.ROW_SUMMARY}, installed.${Schema.Installed.ROW_VERSION}, + (COALESCE(lock.${Schema.Lock.ROW_VERSION_CODE}, -1) NOT IN (0, product.${Schema.Product.ROW_VERSION_CODE}) AND + product.${Schema.Product.ROW_COMPATIBLE} != 0 AND product.${Schema.Product.ROW_VERSION_CODE} > + COALESCE(installed.${Schema.Installed.ROW_VERSION_CODE}, 0xffffffff) AND $signatureMatches) + AS ${Schema.Synthetic.ROW_CAN_UPDATE}, product.${Schema.Product.ROW_COMPATIBLE}, + product.${Schema.Product.ROW_DATA_ITEM},""" + + if (searchQuery.isNotEmpty()) { + builder += """(((product.${Schema.Product.ROW_NAME} LIKE ? OR + product.${Schema.Product.ROW_SUMMARY} LIKE ?) * 7) | + ((product.${Schema.Product.ROW_PACKAGE_NAME} LIKE ?) * 3) | + (product.${Schema.Product.ROW_DESCRIPTION} LIKE ?)) AS ${Schema.Synthetic.ROW_MATCH_RANK},""" + builder %= List(4) { "%$searchQuery%" } + } else { + builder += "0 AS ${Schema.Synthetic.ROW_MATCH_RANK}," + } + + builder += """MAX((product.${Schema.Product.ROW_COMPATIBLE} AND + (installed.${Schema.Installed.ROW_SIGNATURE} IS NULL OR $signatureMatches)) || + PRINTF('%016X', product.${Schema.Product.ROW_VERSION_CODE})) FROM ${Schema.Product.name} AS product""" + builder += """JOIN ${Schema.Repository.name} AS repository + ON product.${Schema.Product.ROW_REPOSITORY_ID} = repository.${Schema.Repository.ROW_ID}""" + builder += """LEFT JOIN ${Schema.Lock.name} AS lock + ON product.${Schema.Product.ROW_PACKAGE_NAME} = lock.${Schema.Lock.ROW_PACKAGE_NAME}""" + + if (!installed && !updates) { + builder += "LEFT" + } + builder += """JOIN ${Schema.Installed.name} AS installed + ON product.${Schema.Product.ROW_PACKAGE_NAME} = installed.${Schema.Installed.ROW_PACKAGE_NAME}""" + + if (section is ProductItem.Section.Category) { + builder += """JOIN ${Schema.Category.name} AS category + ON product.${Schema.Product.ROW_PACKAGE_NAME} = category.${Schema.Product.ROW_PACKAGE_NAME}""" + } + + builder += """WHERE repository.${Schema.Repository.ROW_ENABLED} != 0 AND + repository.${Schema.Repository.ROW_DELETED} == 0""" + + if (section is ProductItem.Section.Category) { + builder += "AND category.${Schema.Category.ROW_NAME} = ?" + builder %= section.name + } else if (section is ProductItem.Section.Repository) { + builder += "AND product.${Schema.Product.ROW_REPOSITORY_ID} = ?" + builder %= section.id.toString() + } + + if (searchQuery.isNotEmpty()) { + builder += """AND ${Schema.Synthetic.ROW_MATCH_RANK} > 0""" + } + + builder += "GROUP BY product.${Schema.Product.ROW_PACKAGE_NAME} HAVING 1" + + if (updates) { + builder += "AND ${Schema.Synthetic.ROW_CAN_UPDATE}" + } + builder += "ORDER BY" + + if (searchQuery.isNotEmpty()) { + builder += """${Schema.Synthetic.ROW_MATCH_RANK} DESC,""" + } + + when (order) { + SortOrder.UPDATED -> builder += "product.${Schema.Product.ROW_UPDATED} DESC," + SortOrder.ADDED -> builder += "product.${Schema.Product.ROW_ADDED} DESC," + SortOrder.NAME -> Unit + }::class + builder += "product.${Schema.Product.ROW_NAME} COLLATE LOCALIZED ASC" + + return builder.query(db, signal).observable(Subject.Products) + } + + private fun transform(cursor: Cursor): Product { + return cursor.getBlob(cursor.getColumnIndexOrThrow(Schema.Product.ROW_DATA)) + .jsonParse { + it.product().apply { + this.repositoryId = cursor + .getLong(cursor.getColumnIndexOrThrow(Schema.Product.ROW_REPOSITORY_ID)) + this.description = cursor + .getString(cursor.getColumnIndexOrThrow(Schema.Product.ROW_DESCRIPTION)) + } + } + } + + fun transformItem(cursor: Cursor): ProductItem { + return cursor.getBlob(cursor.getColumnIndexOrThrow(Schema.Product.ROW_DATA_ITEM)) + .jsonParse { + it.productItem().apply { + this.repositoryId = cursor + .getLong(cursor.getColumnIndexOrThrow(Schema.Product.ROW_REPOSITORY_ID)) + this.packageName = cursor + .getString(cursor.getColumnIndexOrThrow(Schema.Product.ROW_PACKAGE_NAME)) + this.name = cursor + .getString(cursor.getColumnIndexOrThrow(Schema.Product.ROW_NAME)) + this.summary = cursor + .getString(cursor.getColumnIndexOrThrow(Schema.Product.ROW_SUMMARY)) + this.installedVersion = cursor + .getString(cursor.getColumnIndexOrThrow(Schema.Installed.ROW_VERSION)) + .orEmpty() + this.compatible = cursor + .getInt(cursor.getColumnIndexOrThrow(Schema.Product.ROW_COMPATIBLE)) != 0 + this.canUpdate = cursor + .getInt(cursor.getColumnIndexOrThrow(Schema.Synthetic.ROW_CAN_UPDATE)) != 0 + this.matchRank = cursor + .getInt(cursor.getColumnIndexOrThrow(Schema.Synthetic.ROW_MATCH_RANK)) + } + } + } + } + + object CategoryAdapter { + + fun getAllStream(): Flow> = flowOf(Unit) + .onCompletion { if (it == null) emitAll(flowCollection(Subject.Products)) } + .map { getAll() } + .flowOn(Dispatchers.IO) + + private suspend fun getAll(): Set = withContext(Dispatchers.IO) { + val builder = QueryBuilder() + + builder += """SELECT DISTINCT category.${Schema.Category.ROW_NAME} + FROM ${Schema.Category.name} AS category + JOIN ${Schema.Repository.name} AS repository + ON category.${Schema.Category.ROW_REPOSITORY_ID} = repository.${Schema.Repository.ROW_ID} + WHERE repository.${Schema.Repository.ROW_ENABLED} != 0 AND + repository.${Schema.Repository.ROW_DELETED} == 0""" + + builder.query(db, null).use { cursor -> + cursor.asSequence().map { + it.getString(it.getColumnIndexOrThrow(Schema.Category.ROW_NAME)) + }.toSet() + } + } + } + + object InstalledAdapter { + + fun getStream(packageName: String): Flow = flowOf(Unit) + .onCompletion { if (it == null) emitAll(flowCollection(Subject.Products)) } + .map { get(packageName, null) } + .flowOn(Dispatchers.IO) + + fun get(packageName: String, signal: CancellationSignal?): InstalledItem? { + return db.query( + Schema.Installed.name, + columns = arrayOf( + Schema.Installed.ROW_PACKAGE_NAME, + Schema.Installed.ROW_VERSION, + Schema.Installed.ROW_VERSION_CODE, + Schema.Installed.ROW_SIGNATURE + ), + selection = Pair("${Schema.Installed.ROW_PACKAGE_NAME} = ?", arrayOf(packageName)), + signal = signal + ).use { it.firstOrNull()?.let(::transform) } + } + + private fun put(installedItem: InstalledItem, notify: Boolean) { + db.insertOrReplace( + true, + Schema.Installed.name, + ContentValues().apply { + put(Schema.Installed.ROW_PACKAGE_NAME, installedItem.packageName) + put(Schema.Installed.ROW_VERSION, installedItem.version) + put(Schema.Installed.ROW_VERSION_CODE, installedItem.versionCode) + put(Schema.Installed.ROW_SIGNATURE, installedItem.signature) + } + ) + if (notify) { + notifyChanged(Subject.Products) + } + } + + fun put(installedItem: InstalledItem) = put(installedItem, true) + + fun putAll(installedItems: List) { + db.transaction { + db.delete(Schema.Installed.name, null, null) + installedItems.forEach { put(it, false) } + } + } + + fun delete(packageName: String) { + val count = db.delete( + Schema.Installed.name, + "${Schema.Installed.ROW_PACKAGE_NAME} = ?", + arrayOf(packageName) + ) + if (count > 0) { + notifyChanged(Subject.Products) + } + } + + private fun transform(cursor: Cursor): InstalledItem { + return InstalledItem( + cursor.getString(cursor.getColumnIndexOrThrow(Schema.Installed.ROW_PACKAGE_NAME)), + cursor.getString(cursor.getColumnIndexOrThrow(Schema.Installed.ROW_VERSION)), + cursor.getLong(cursor.getColumnIndexOrThrow(Schema.Installed.ROW_VERSION_CODE)), + cursor.getString(cursor.getColumnIndexOrThrow(Schema.Installed.ROW_SIGNATURE)) + ) + } + } + + object LockAdapter { + private fun put(lock: Pair, notify: Boolean) { + db.insertOrReplace( + true, + Schema.Lock.name, + ContentValues().apply { + put(Schema.Lock.ROW_PACKAGE_NAME, lock.first) + put(Schema.Lock.ROW_VERSION_CODE, lock.second) + } + ) + if (notify) { + notifyChanged(Subject.Products) + } + } + + fun put(lock: Pair) = put(lock, true) + + fun putAll(locks: List>) { + db.transaction { + db.delete(Schema.Lock.name, null, null) + locks.forEach { put(it, false) } + } + } + + fun delete(packageName: String) { + db.delete(Schema.Lock.name, "${Schema.Lock.ROW_PACKAGE_NAME} = ?", arrayOf(packageName)) + notifyChanged(Subject.Products) + } + } + + object UpdaterAdapter { + private val Table.temporaryName: String + get() = "${name}_temporary" + + fun createTemporaryTable() { + db.execSQL("DROP TABLE IF EXISTS ${Schema.Product.temporaryName}") + db.execSQL("DROP TABLE IF EXISTS ${Schema.Category.temporaryName}") + db.execSQL(Schema.Product.formatCreateTable(Schema.Product.temporaryName)) + db.execSQL(Schema.Category.formatCreateTable(Schema.Category.temporaryName)) + } + + fun putTemporary(products: List) { + db.transaction { + for (product in products) { + // Format signatures like ".signature1.signature2." for easier select + val signatures = product.signatures.joinToString { ".$it" } + .let { if (it.isNotEmpty()) "$it." else "" } + db.insertOrReplace( + true, + Schema.Product.temporaryName, + ContentValues().apply { + put(Schema.Product.ROW_REPOSITORY_ID, product.repositoryId) + put(Schema.Product.ROW_PACKAGE_NAME, product.packageName) + put(Schema.Product.ROW_NAME, product.name) + put(Schema.Product.ROW_SUMMARY, product.summary) + put(Schema.Product.ROW_DESCRIPTION, product.description) + put(Schema.Product.ROW_ADDED, product.added) + put(Schema.Product.ROW_UPDATED, product.updated) + put(Schema.Product.ROW_VERSION_CODE, product.versionCode) + put(Schema.Product.ROW_SIGNATURES, signatures) + put(Schema.Product.ROW_COMPATIBLE, if (product.compatible) 1 else 0) + put(Schema.Product.ROW_DATA, jsonGenerate(product::serialize)) + put( + Schema.Product.ROW_DATA_ITEM, + jsonGenerate(product.item()::serialize) + ) + } + ) + for (category in product.categories) { + db.insertOrReplace( + true, + Schema.Category.temporaryName, + ContentValues().apply { + put(Schema.Category.ROW_REPOSITORY_ID, product.repositoryId) + put(Schema.Category.ROW_PACKAGE_NAME, product.packageName) + put(Schema.Category.ROW_NAME, category) + } + ) + } + } + } + } + + fun finishTemporary(repository: Repository, success: Boolean) { + if (success) { + db.transaction { + db.delete( + Schema.Product.name, + "${Schema.Product.ROW_REPOSITORY_ID} = ?", + arrayOf(repository.id.toString()) + ) + db.delete( + Schema.Category.name, + "${Schema.Category.ROW_REPOSITORY_ID} = ?", + arrayOf(repository.id.toString()) + ) + db.execSQL( + "INSERT INTO ${Schema.Product.name} SELECT * " + + "FROM ${Schema.Product.temporaryName}" + ) + db.execSQL( + "INSERT INTO ${Schema.Category.name} SELECT * " + + "FROM ${Schema.Category.temporaryName}" + ) + RepositoryAdapter.putWithoutNotification(repository, true) + db.execSQL("DROP TABLE IF EXISTS ${Schema.Product.temporaryName}") + db.execSQL("DROP TABLE IF EXISTS ${Schema.Category.temporaryName}") + } + notifyChanged( + Subject.Repositories, + Subject.Repository(repository.id), + Subject.Products + ) + } else { + db.execSQL("DROP TABLE IF EXISTS ${Schema.Product.temporaryName}") + db.execSQL("DROP TABLE IF EXISTS ${Schema.Category.temporaryName}") + } + } + } +} diff --git a/app/src/main/kotlin/com/leos/droidify/database/ObservableCursor.kt b/app/src/main/kotlin/com/leos/droidify/database/ObservableCursor.kt new file mode 100644 index 0000000..ffdf1c5 --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/database/ObservableCursor.kt @@ -0,0 +1,64 @@ +package com.leos.droidify.database + +import android.database.ContentObservable +import android.database.ContentObserver +import android.database.Cursor +import android.database.CursorWrapper + +class ObservableCursor( + cursor: Cursor, + private val observable: ( + register: Boolean, + observer: () -> Unit + ) -> Unit +) : CursorWrapper(cursor) { + private var registered = false + private val contentObservable = ContentObservable() + + private val onChange: () -> Unit = { + contentObservable.dispatchChange(false, null) + } + + init { + observable(true, onChange) + registered = true + } + + override fun registerContentObserver(observer: ContentObserver) { + super.registerContentObserver(observer) + contentObservable.registerObserver(observer) + } + + override fun unregisterContentObserver(observer: ContentObserver) { + super.unregisterContentObserver(observer) + contentObservable.unregisterObserver(observer) + } + + @Deprecated("Deprecated in Java") + @Suppress("DEPRECATION") + override fun requery(): Boolean { + if (!registered) { + observable(true, onChange) + registered = true + } + return super.requery() + } + + @Deprecated("Deprecated in Java") + @Suppress("DEPRECATION") + override fun deactivate() { + super.deactivate() + deactivateOrClose() + } + + override fun close() { + super.close() + contentObservable.unregisterAll() + deactivateOrClose() + } + + private fun deactivateOrClose() { + observable(false, onChange) + registered = false + } +} diff --git a/app/src/main/kotlin/com/leos/droidify/database/QueryBuilder.kt b/app/src/main/kotlin/com/leos/droidify/database/QueryBuilder.kt new file mode 100644 index 0000000..cb777ba --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/database/QueryBuilder.kt @@ -0,0 +1,50 @@ +package com.leos.droidify.database + +import android.database.Cursor +import android.database.sqlite.SQLiteDatabase +import android.os.CancellationSignal +import com.leos.core.common.extension.asSequence +import com.leos.core.common.log +import com.leos.droidify.BuildConfig + +class QueryBuilder { + companion object { + fun trimQuery(query: String): String { + return query.lines().map { it.trim() }.filter { it.isNotEmpty() } + .joinToString(separator = " ") + } + } + + private val builder = StringBuilder() + private val arguments = mutableListOf() + + operator fun plusAssign(query: String) { + if (builder.isNotEmpty()) { + builder.append(" ") + } + builder.append(trimQuery(query)) + } + + operator fun remAssign(argument: String) { + this.arguments += argument + } + + operator fun remAssign(arguments: List) { + this.arguments += arguments + } + + fun query(db: SQLiteDatabase, signal: CancellationSignal?): Cursor { + val query = builder.toString() + val arguments = arguments.toTypedArray() + if (BuildConfig.DEBUG) { + synchronized(QueryBuilder::class.java) { + log(query) + db.rawQuery("EXPLAIN QUERY PLAN $query", arguments).use { + it.asSequence() + .forEach { log(":: ${it.getString(it.getColumnIndex("detail"))}") } + } + } + } + return db.rawQuery(query, arguments, signal) + } +} diff --git a/app/src/main/kotlin/com/leos/droidify/database/QueryLoader.kt b/app/src/main/kotlin/com/leos/droidify/database/QueryLoader.kt new file mode 100644 index 0000000..38648f6 --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/database/QueryLoader.kt @@ -0,0 +1,94 @@ +package com.leos.droidify.database + +import android.content.Context +import android.database.Cursor +import android.os.CancellationSignal +import android.os.OperationCanceledException +import androidx.loader.content.AsyncTaskLoader + +class QueryLoader(context: Context, private val query: (CancellationSignal) -> Cursor?) : + AsyncTaskLoader(context) { + private val observer = ForceLoadContentObserver() + private var cancellationSignal: CancellationSignal? = null + private var cursor: Cursor? = null + + override fun loadInBackground(): Cursor? { + val cancellationSignal = synchronized(this) { + if (isLoadInBackgroundCanceled) { + throw OperationCanceledException() + } + val cancellationSignal = CancellationSignal() + this.cancellationSignal = cancellationSignal + cancellationSignal + } + try { + val cursor = query(cancellationSignal) + if (cursor != null) { + try { + cursor.count // Ensure the cursor window is filled + cursor.registerContentObserver(observer) + } catch (e: Exception) { + cursor.close() + throw e + } + } + return cursor + } finally { + synchronized(this) { + this.cancellationSignal = null + } + } + } + + override fun cancelLoadInBackground() { + super.cancelLoadInBackground() + + synchronized(this) { + cancellationSignal?.cancel() + } + } + + override fun deliverResult(data: Cursor?) { + if (isReset) { + data?.close() + } else { + val oldCursor = cursor + cursor = data + if (isStarted) { + super.deliverResult(data) + } + if (oldCursor != data) { + oldCursor.closeIfNeeded() + } + } + } + + override fun onStartLoading() { + cursor?.let(this::deliverResult) + if (takeContentChanged() || cursor == null) { + forceLoad() + } + } + + override fun onStopLoading() { + cancelLoad() + } + + override fun onCanceled(data: Cursor?) { + data.closeIfNeeded() + } + + override fun onReset() { + super.onReset() + + stopLoading() + cursor.closeIfNeeded() + cursor = null + } + + private fun Cursor?.closeIfNeeded() { + if (this != null && !isClosed) { + close() + } + } +} diff --git a/app/src/main/kotlin/com/leos/droidify/database/RepositoryExporter.kt b/app/src/main/kotlin/com/leos/droidify/database/RepositoryExporter.kt new file mode 100644 index 0000000..bf69004 --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/database/RepositoryExporter.kt @@ -0,0 +1,73 @@ +package com.leos.droidify.database + +import android.content.Context +import android.net.Uri +import com.fasterxml.jackson.core.JsonToken +import com.leos.core.common.Exporter +import com.leos.core.common.extension.Json +import com.leos.core.common.extension.forEach +import com.leos.core.common.extension.forEachKey +import com.leos.core.common.extension.parseDictionary +import com.leos.core.common.extension.writeArray +import com.leos.core.common.extension.writeDictionary +import com.leos.core.di.ApplicationScope +import com.leos.core.di.IoDispatcher +import com.leos.core.domain.Repository +import com.leos.droidify.utility.serialization.repository +import com.leos.droidify.utility.serialization.serialize +import dagger.hilt.android.qualifiers.ApplicationContext +import javax.inject.Inject +import javax.inject.Singleton +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext + +@Singleton +class RepositoryExporter @Inject constructor( + @ApplicationContext private val context: Context, + @ApplicationScope private val scope: CoroutineScope, + @IoDispatcher private val ioDispatcher: CoroutineDispatcher +) : Exporter> { + override suspend fun export(item: List, target: Uri) { + scope.launch(ioDispatcher) { + val stream = context.contentResolver.openOutputStream(target) + Json.factory.createGenerator(stream).use { generator -> + generator.writeDictionary { + writeArray("repositories") { + item.map { + it.copy( + id = -1, + mirrors = if (it.enabled) it.mirrors else emptyList(), + lastModified = "", + entityTag = "" + ) + }.forEach { repo -> + writeDictionary { + repo.serialize(this) + } + } + } + } + } + } + } + + override suspend fun import(target: Uri): List = withContext(ioDispatcher) { + val list = mutableListOf() + val stream = context.contentResolver.openInputStream(target) + Json.factory.createParser(stream).use { generator -> + generator?.parseDictionary { + forEachKey { + if (it.array("repositories")) { + forEach(JsonToken.START_OBJECT) { + val repo = repository() + list.add(repo) + } + } + } + } + } + list + } +} diff --git a/app/src/main/kotlin/com/leos/droidify/graphics/DrawableWrapper.kt b/app/src/main/kotlin/com/leos/droidify/graphics/DrawableWrapper.kt new file mode 100644 index 0000000..b305897 --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/graphics/DrawableWrapper.kt @@ -0,0 +1,57 @@ +package com.leos.droidify.graphics + +import android.graphics.Canvas +import android.graphics.ColorFilter +import android.graphics.Rect +import android.graphics.drawable.Drawable + +open class DrawableWrapper(val drawable: Drawable) : Drawable() { + init { + drawable.callback = object : Callback { + override fun invalidateDrawable(who: Drawable) { + callback?.invalidateDrawable(who) + } + + override fun scheduleDrawable(who: Drawable, what: Runnable, `when`: Long) { + callback?.scheduleDrawable(who, what, `when`) + } + + override fun unscheduleDrawable(who: Drawable, what: Runnable) { + callback?.unscheduleDrawable(who, what) + } + } + } + + override fun onBoundsChange(bounds: Rect) { + drawable.bounds = bounds + } + + override fun getIntrinsicWidth(): Int = drawable.intrinsicWidth + override fun getIntrinsicHeight(): Int = drawable.intrinsicHeight + override fun getMinimumWidth(): Int = drawable.minimumWidth + override fun getMinimumHeight(): Int = drawable.minimumHeight + + override fun draw(canvas: Canvas) { + drawable.draw(canvas) + } + + override fun getAlpha(): Int { + return drawable.alpha + } + + override fun setAlpha(alpha: Int) { + drawable.alpha = alpha + } + + override fun getColorFilter(): ColorFilter? { + return drawable.colorFilter + } + + override fun setColorFilter(colorFilter: ColorFilter?) { + drawable.colorFilter = colorFilter + } + + @Deprecated("Deprecated in Java") + @Suppress("DEPRECATION") + override fun getOpacity(): Int = drawable.opacity +} diff --git a/app/src/main/kotlin/com/leos/droidify/graphics/PaddingDrawable.kt b/app/src/main/kotlin/com/leos/droidify/graphics/PaddingDrawable.kt new file mode 100644 index 0000000..28b080f --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/graphics/PaddingDrawable.kt @@ -0,0 +1,30 @@ +package com.leos.droidify.graphics + +import android.graphics.Rect +import android.graphics.drawable.Drawable +import kotlin.math.roundToInt + +class PaddingDrawable( + drawable: Drawable, + private val horizontalFactor: Float, + private val aspectRatio: Float = 16f / 9f +) : DrawableWrapper(drawable) { + override fun getIntrinsicWidth(): Int = + (horizontalFactor * super.getIntrinsicWidth()).roundToInt() + + override fun getIntrinsicHeight(): Int = + ((horizontalFactor * aspectRatio) * super.getIntrinsicHeight()).roundToInt() + + override fun onBoundsChange(bounds: Rect) { + val width = (bounds.width() / horizontalFactor).roundToInt() + val height = (bounds.height() / (horizontalFactor * aspectRatio)).roundToInt() + val left = (bounds.width() - width) / 2 + val top = (bounds.height() - height) / 2 + drawable.setBounds( + bounds.left + left, + bounds.top + top, + bounds.left + left + width, + bounds.top + top + height + ) + } +} diff --git a/app/src/main/kotlin/com/leos/droidify/index/IndexMerger.kt b/app/src/main/kotlin/com/leos/droidify/index/IndexMerger.kt new file mode 100644 index 0000000..6115cc4 --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/index/IndexMerger.kt @@ -0,0 +1,115 @@ +package com.leos.droidify.index + +import android.content.ContentValues +import android.database.sqlite.SQLiteDatabase +import com.fasterxml.jackson.core.JsonToken +import com.leos.core.common.extension.Json +import com.leos.core.common.extension.asSequence +import com.leos.core.common.extension.collectNotNull +import com.leos.core.common.extension.execWithResult +import com.leos.core.common.extension.writeDictionary +import com.leos.core.domain.Product +import com.leos.core.domain.Release +import com.leos.droidify.utility.serialization.product +import com.leos.droidify.utility.serialization.release +import com.leos.droidify.utility.serialization.serialize +import java.io.ByteArrayOutputStream +import java.io.Closeable +import java.io.File + +class IndexMerger(file: File) : Closeable { + private val db = SQLiteDatabase.openOrCreateDatabase(file, null) + + init { + db.execWithResult("PRAGMA synchronous = OFF") + db.execWithResult("PRAGMA journal_mode = OFF") + db.execSQL( + "CREATE TABLE product (" + + "package_name TEXT PRIMARY KEY," + + "description TEXT NOT NULL, " + + "data BLOB NOT NULL)" + ) + db.execSQL("CREATE TABLE releases (package_name TEXT PRIMARY KEY, data BLOB NOT NULL)") + db.beginTransaction() + } + + fun addProducts(products: List) { + for (product in products) { + val outputStream = ByteArrayOutputStream() + Json.factory.createGenerator(outputStream) + .use { it.writeDictionary(product::serialize) } + db.insert( + "product", + null, + ContentValues().apply { + put("package_name", product.packageName) + put("description", product.description) + put("data", outputStream.toByteArray()) + } + ) + } + } + + fun addReleases(pairs: List>>) { + for (pair in pairs) { + val (packageName, releases) = pair + val outputStream = ByteArrayOutputStream() + Json.factory.createGenerator(outputStream).use { + it.writeStartArray() + for (release in releases) { + it.writeDictionary(release::serialize) + } + it.writeEndArray() + } + db.insert( + "releases", + null, + ContentValues().apply { + put("package_name", packageName) + put("data", outputStream.toByteArray()) + } + ) + } + } + + private fun closeTransaction() { + if (db.inTransaction()) { + db.setTransactionSuccessful() + db.endTransaction() + } + } + + fun forEach(repositoryId: Long, windowSize: Int, callback: (List, Int) -> Unit) { + closeTransaction() + db.rawQuery( + """SELECT product.description, product.data AS pd, releases.data AS rd FROM product + LEFT JOIN releases ON product.package_name = releases.package_name""", + null + )?.use { cursor -> + cursor.asSequence().map { currentCursor -> + val description = currentCursor.getString(0) + val product = Json.factory.createParser(currentCursor.getBlob(1)).use { + it.nextToken() + it.product().apply { + this.repositoryId = repositoryId + this.description = description + } + } + val releases = currentCursor.getBlob(2)?.let { bytes -> + Json.factory.createParser(bytes).use { + it.nextToken() + it.collectNotNull( + JsonToken.START_OBJECT + ) { release() } + } + }.orEmpty() + product.copy(releases = releases) + }.windowed(windowSize, windowSize, true) + .forEach { products -> callback(products, cursor.count) } + } + } + + override fun close() { + db.use { closeTransaction() } + } +} diff --git a/app/src/main/kotlin/com/leos/droidify/index/IndexV1Parser.kt b/app/src/main/kotlin/com/leos/droidify/index/IndexV1Parser.kt new file mode 100644 index 0000000..69815e5 --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/index/IndexV1Parser.kt @@ -0,0 +1,489 @@ +package com.leos.droidify.index + +import android.content.res.Resources +import androidx.core.os.ConfigurationCompat.getLocales +import androidx.core.os.LocaleListCompat +import com.fasterxml.jackson.core.JsonParser +import com.fasterxml.jackson.core.JsonToken +import com.leos.core.common.SdkCheck +import com.leos.core.common.extension.Json +import com.leos.core.common.extension.collectDistinctNotEmptyStrings +import com.leos.core.common.extension.collectNotNull +import com.leos.core.common.extension.forEach +import com.leos.core.common.extension.forEachKey +import com.leos.core.common.extension.illegal +import com.leos.core.common.nullIfEmpty +import com.leos.core.domain.Product +import com.leos.core.domain.Release +import java.io.InputStream + +object IndexV1Parser { + interface Callback { + fun onRepository( + mirrors: List, + name: String, + description: String, + version: Int, + timestamp: Long + ) + + fun onProduct(product: Product) + fun onReleases(packageName: String, releases: List) + } + + private class Screenshots( + val phone: List, + val smallTablet: List, + val largeTablet: List + ) + + private class Localized( + val name: String, + val summary: String, + val description: String, + val whatsNew: String, + val metadataIcon: String, + val screenshots: Screenshots? + ) + + private fun Map.getAndCall( + key: String, + callback: (String, Localized) -> T? + ): T? { + return this[key]?.let { callback(key, it) } + } + + /** + * Gets the best localization for the given [localeList] + * from collections. + */ + private fun Map?.getBestLocale(localeList: LocaleListCompat): T? { + if (isNullOrEmpty()) return null + val firstMatch = localeList.getFirstMatch(keys.toTypedArray()) ?: return null + val tag = firstMatch.toLanguageTag() + // try first matched tag first (usually has region tag, e.g. de-DE) + return get(tag) ?: run { + // split away stuff like script and try language and region only + val langCountryTag = "${firstMatch.language}-${firstMatch.country}" + getOrStartsWith(langCountryTag) ?: run { + // split away region tag and try language only + val langTag = firstMatch.language + // try language, then English and then just take the first of the list + getOrStartsWith(langTag) ?: get("en-US") ?: get("en") ?: values.first() + } + } + } + + /** + * Returns the value from the map with the given key or if that key is not contained in the map, + * tries the first map key that starts with the given key. + * If nothing matches, null is returned. + * + * This is useful when looking for a language tag like `fr_CH` and falling back to `fr` + * in a map that has `fr_FR` as a key. + */ + private fun Map.getOrStartsWith(s: String): T? = get(s) ?: run { + entries.forEach { (key, value) -> + if (key.startsWith(s)) return value + } + return null + } + + private fun Map.find(callback: (String, Localized) -> T?): T? { + return getAndCall("en-US", callback) ?: getAndCall("en_US", callback) ?: getAndCall( + "en", + callback + ) + } + + private fun Map.findLocalized(callback: (Localized) -> T?): T? { + return getBestLocale(getLocales(Resources.getSystem().configuration))?.let { callback(it) } + } + + private fun Map.findString( + fallback: String, + callback: (Localized) -> String + ): String { + return (find { _, localized -> callback(localized).nullIfEmpty() } ?: fallback).trim() + } + + private fun Map.findLocalizedString( + fallback: String, + callback: (Localized) -> String + ): String { + // @BLumia: it's possible a key of a certain Localized object is empty, so we still need a fallback + return ( + findLocalized { localized -> callback(localized).trim().nullIfEmpty() } ?: findString( + fallback, + callback + ) + ).trim() + } + + internal object DonateComparator : Comparator { + private val classes = listOf( + Product.Donate.Regular::class, + Product.Donate.Bitcoin::class, + Product.Donate.Litecoin::class, + Product.Donate.Flattr::class, + Product.Donate.Liberapay::class, + Product.Donate.OpenCollective::class + ) + + override fun compare(donate1: Product.Donate, donate2: Product.Donate): Int { + val index1 = classes.indexOf(donate1::class) + val index2 = classes.indexOf(donate2::class) + return when { + index1 >= 0 && index2 == -1 -> -1 + index2 >= 0 && index1 == -1 -> 1 + else -> index1.compareTo(index2) + } + } + } + + fun parse(repositoryId: Long, inputStream: InputStream, callback: Callback) { + val jsonParser = Json.factory.createParser(inputStream) + if (jsonParser.nextToken() != JsonToken.START_OBJECT) { + jsonParser.illegal() + } else { + jsonParser.forEachKey { it -> + when { + it.dictionary("repo") -> { + var address = "" + var mirrors = emptyList() + var name = "" + var description = "" + var version = 0 + var timestamp = 0L + forEachKey { + when { + it.string("address") -> address = valueAsString + it.array("mirrors") -> mirrors = collectDistinctNotEmptyStrings() + it.string("name") -> name = valueAsString + it.string("description") -> description = valueAsString + it.number("version") -> version = valueAsInt + it.number("timestamp") -> timestamp = valueAsLong + else -> skipChildren() + } + } + val realMirrors = ( + if (address.isNotEmpty()) { + listOf(address) + } else { + emptyList() + } + ) + mirrors + callback.onRepository( + mirrors = realMirrors.distinct(), + name = name, + description = description, + version = version, + timestamp = timestamp + ) + } + + it.array("apps") -> forEach(JsonToken.START_OBJECT) { + val product = parseProduct(repositoryId) + callback.onProduct(product) + } + + it.dictionary("packages") -> forEachKey { + if (it.token == JsonToken.START_ARRAY) { + val packageName = it.key + val releases = collectNotNull(JsonToken.START_OBJECT) { parseRelease() } + callback.onReleases(packageName, releases) + } else { + skipChildren() + } + } + + else -> skipChildren() + } + } + } + } + + private fun JsonParser.parseProduct(repositoryId: Long): Product { + var packageName = "" + var nameFallback = "" + var summaryFallback = "" + var descriptionFallback = "" + var icon = "" + var authorName = "" + var authorEmail = "" + var authorWeb = "" + var source = "" + var changelog = "" + var web = "" + var tracker = "" + var added = 0L + var updated = 0L + var suggestedVersionCode = 0L + var categories = emptyList() + var antiFeatures = emptyList() + val licenses = mutableListOf() + val donates = mutableListOf() + val localizedMap = mutableMapOf() + forEachKey { it -> + when { + it.string("packageName") -> packageName = valueAsString + it.string("name") -> nameFallback = valueAsString + it.string("summary") -> summaryFallback = valueAsString + it.string("description") -> descriptionFallback = valueAsString + it.string("icon") -> icon = validateIcon(valueAsString) + it.string("authorName") -> authorName = valueAsString + it.string("authorEmail") -> authorEmail = valueAsString + it.string("authorWebSite") -> authorWeb = valueAsString + it.string("sourceCode") -> source = valueAsString + it.string("changelog") -> changelog = valueAsString + it.string("webSite") -> web = valueAsString + it.string("issueTracker") -> tracker = valueAsString + it.number("added") -> added = valueAsLong + it.number("lastUpdated") -> updated = valueAsLong + it.string("suggestedVersionCode") -> + suggestedVersionCode = + valueAsString.toLongOrNull() ?: 0L + + it.array("categories") -> categories = collectDistinctNotEmptyStrings() + it.array("antiFeatures") -> antiFeatures = collectDistinctNotEmptyStrings() + it.string("license") -> licenses += valueAsString.split(',') + .filter { it.isNotEmpty() } + + it.string("donate") -> donates += Product.Donate.Regular(valueAsString) + it.string("bitcoin") -> donates += Product.Donate.Bitcoin(valueAsString) + it.string("flattrID") -> donates += Product.Donate.Flattr(valueAsString) + it.string("liberapayID") -> donates += Product.Donate.Liberapay(valueAsString) + it.string("openCollective") -> donates += Product.Donate.OpenCollective( + valueAsString + ) + + it.dictionary("localized") -> forEachKey { it -> + if (it.token == JsonToken.START_OBJECT) { + val locale = it.key + var name = "" + var summary = "" + var description = "" + var whatsNew = "" + var metadataIcon = "" + var phone = emptyList() + var smallTablet = emptyList() + var largeTablet = emptyList() + forEachKey { + when { + it.string("name") -> name = valueAsString + it.string("summary") -> summary = valueAsString + it.string("description") -> description = valueAsString + it.string("whatsNew") -> whatsNew = valueAsString + it.string("icon") -> metadataIcon = valueAsString + it.array("phoneScreenshots") -> + phone = + collectDistinctNotEmptyStrings() + + it.array("sevenInchScreenshots") -> + smallTablet = + collectDistinctNotEmptyStrings() + + it.array("tenInchScreenshots") -> + largeTablet = + collectDistinctNotEmptyStrings() + + else -> skipChildren() + } + } + val screenshots = + if (sequenceOf( + phone, + smallTablet, + largeTablet + ).any { it.isNotEmpty() } + ) { + Screenshots(phone, smallTablet, largeTablet) + } else { + null + } + localizedMap[locale] = Localized( + name, + summary, + description, + whatsNew, + metadataIcon.nullIfEmpty()?.let { "$locale/$it" }.orEmpty(), + screenshots + ) + } else { + skipChildren() + } + } + + else -> skipChildren() + } + } + val name = localizedMap.findLocalizedString(nameFallback) { it.name } + val summary = localizedMap.findLocalizedString(summaryFallback) { it.summary } + val description = + localizedMap.findLocalizedString(descriptionFallback) { it.description }.replace( + "\n", + "
" + ) + val whatsNew = localizedMap.findLocalizedString("") { it.whatsNew }.replace("\n", "
") + val metadataIcon = localizedMap.findLocalizedString("") { it.metadataIcon }.ifEmpty { + localizedMap.firstNotNullOfOrNull { it.value.metadataIcon }.orEmpty() + } + val screenshotPairs = + localizedMap.find { key, localized -> localized.screenshots?.let { Pair(key, it) } } + val screenshots = screenshotPairs + ?.let { (key, screenshots) -> + screenshots.phone.asSequence() + .map { Product.Screenshot(key, Product.Screenshot.Type.PHONE, it) } + + screenshots.smallTablet.asSequence() + .map { + Product.Screenshot( + key, + Product.Screenshot.Type.SMALL_TABLET, + it + ) + } + + screenshots.largeTablet.asSequence() + .map { + Product.Screenshot( + key, + Product.Screenshot.Type.LARGE_TABLET, + it + ) + } + } + .orEmpty().toList() + return Product( + repositoryId, + packageName, + name, + summary, + description, + whatsNew, + icon, + metadataIcon, + Product.Author(authorName, authorEmail, authorWeb), + source, + changelog, + web, + tracker, + added, + updated, + suggestedVersionCode, + categories, + antiFeatures, + licenses, + donates.sortedWith(DonateComparator), + screenshots, + emptyList() + ) + } + + private fun JsonParser.parseRelease(): Release { + var version = "" + var versionCode = 0L + var added = 0L + var size = 0L + var minSdkVersion = 0 + var targetSdkVersion = 0 + var maxSdkVersion = 0 + var source = "" + var release = "" + var hash = "" + var hashTypeCandidate = "" + var signature = "" + var obbMain = "" + var obbMainHash = "" + var obbPatch = "" + var obbPatchHash = "" + val permissions = linkedSetOf() + var features = emptyList() + var platforms = emptyList() + forEachKey { + when { + it.string("versionName") -> version = valueAsString + it.number("versionCode") -> versionCode = valueAsLong + it.number("added") -> added = valueAsLong + it.number("size") -> size = valueAsLong + it.number("minSdkVersion") -> minSdkVersion = valueAsInt + it.number("targetSdkVersion") -> targetSdkVersion = valueAsInt + it.number("maxSdkVersion") -> maxSdkVersion = valueAsInt + it.string("srcname") -> source = valueAsString + it.string("apkName") -> release = valueAsString + it.string("hash") -> hash = valueAsString + it.string("hashType") -> hashTypeCandidate = valueAsString + it.string("sig") -> signature = valueAsString + it.string("obbMainFile") -> obbMain = valueAsString + it.string("obbMainFileSha256") -> obbMainHash = valueAsString + it.string("obbPatchFile") -> obbPatch = valueAsString + it.string("obbPatchFileSha256") -> obbPatchHash = valueAsString + it.array("uses-permission") -> collectPermissions(permissions, 0) + it.array("uses-permission-sdk-23") -> collectPermissions(permissions, 23) + it.array("features") -> features = collectDistinctNotEmptyStrings() + it.array("nativecode") -> platforms = collectDistinctNotEmptyStrings() + else -> skipChildren() + } + } + val hashType = + if (hash.isNotEmpty() && hashTypeCandidate.isEmpty()) "sha256" else hashTypeCandidate + val obbMainHashType = if (obbMainHash.isNotEmpty()) "sha256" else "" + val obbPatchHashType = if (obbPatchHash.isNotEmpty()) "sha256" else "" + return Release( + false, + version, + versionCode, + added, + size, + minSdkVersion, + targetSdkVersion, + maxSdkVersion, + source, + release, + hash, + hashType, + signature, + obbMain, + obbMainHash, + obbMainHashType, + obbPatch, + obbPatchHash, + obbPatchHashType, + permissions.toList(), + features, + platforms, + emptyList() + ) + } + + private fun JsonParser.collectPermissions(permissions: LinkedHashSet, minSdk: Int) { + forEach(JsonToken.START_ARRAY) { + val firstToken = nextToken() + val permission = if (firstToken == JsonToken.VALUE_STRING) valueAsString else "" + if (firstToken != JsonToken.END_ARRAY) { + val secondToken = nextToken() + val maxSdk = if (secondToken == JsonToken.VALUE_NUMBER_INT) valueAsInt else 0 + if (permission.isNotEmpty() && + SdkCheck.sdk >= minSdk && ( + maxSdk <= 0 || + SdkCheck.sdk <= maxSdk + ) + ) { + permissions.add(permission) + } + if (secondToken != JsonToken.END_ARRAY) { + while (true) { + val token = nextToken() + if (token == JsonToken.END_ARRAY) { + break + } else if (token.isStructStart) { + skipChildren() + } + } + } + } + } + } + + private fun validateIcon(icon: String): String { + return if (icon.endsWith(".xml")) "" else icon + } +} diff --git a/app/src/main/kotlin/com/leos/droidify/index/RepositoryUpdater.kt b/app/src/main/kotlin/com/leos/droidify/index/RepositoryUpdater.kt new file mode 100644 index 0000000..269858f --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/index/RepositoryUpdater.kt @@ -0,0 +1,460 @@ +package com.leos.droidify.index + +import android.content.Context +import android.net.Uri +import com.leos.core.common.SdkCheck +import com.leos.core.common.cache.Cache +import com.leos.core.common.extension.fingerprint +import com.leos.core.common.extension.toFormattedString +import com.leos.core.common.result.Result +import com.leos.core.domain.Product +import com.leos.core.domain.Release +import com.leos.core.domain.Repository +import com.leos.droidify.database.Database +import com.leos.droidify.utility.extension.android.Android +import com.leos.droidify.utility.getProgress +import com.leos.network.Downloader +import com.leos.network.NetworkResponse +import java.io.File +import java.security.CodeSigner +import java.security.cert.Certificate +import java.util.jar.JarEntry +import java.util.jar.JarFile +import kotlinx.coroutines.* +import kotlinx.coroutines.flow.drop +import kotlinx.coroutines.flow.filter +import kotlinx.coroutines.flow.map + +object RepositoryUpdater { + enum class Stage { + DOWNLOAD, PROCESS, MERGE, COMMIT + } + + // TODO Add support for Index-V2 and also cleanup everything here + private enum class IndexType( + val jarName: String, + val contentName: String + ) { + INDEX_V1("index-v1.jar", "index-v1.json") + } + + enum class ErrorType { + NETWORK, HTTP, VALIDATION, PARSING + } + + class UpdateException : Exception { + val errorType: ErrorType + + constructor(errorType: ErrorType, message: String) : super(message) { + this.errorType = errorType + } + + constructor(errorType: ErrorType, message: String, cause: Exception) : super( + message, + cause + ) { + this.errorType = errorType + } + } + + private val updaterLock = Any() + private val cleanupLock = Any() + + private lateinit var downloader: Downloader + + fun init(scope: CoroutineScope, downloader: Downloader) { + this.downloader = downloader + scope.launch { + // No need of mutex because it is in same coroutine scope + var lastDisabled = emptyMap() + Database.RepositoryAdapter + .getAllRemovedStream() + .map { deletedRepos -> + deletedRepos + .filterNot { it.key in lastDisabled.keys } + .also { lastDisabled = deletedRepos } + } + // To not perform complete cleanup on startup + .drop(1) + .filter { it.isNotEmpty() } + .collect(Database.RepositoryAdapter::cleanup) + } + } + + fun await() { + synchronized(updaterLock) { } + } + + suspend fun update( + context: Context, + repository: Repository, + unstable: Boolean, + callback: (Stage, Long, Long?) -> Unit + ) = update( + context = context, + repository = repository, + unstable = unstable, + indexTypes = listOf(IndexType.INDEX_V1), + callback = callback + ) + + private suspend fun update( + context: Context, + repository: Repository, + unstable: Boolean, + indexTypes: List, + callback: (Stage, Long, Long?) -> Unit + ): Result = withContext(Dispatchers.IO) { + val indexType = indexTypes[0] + when (val request = downloadIndex(context, repository, indexType, callback)) { + is Result.Error -> { + val result = request.data + ?: return@withContext Result.Error(request.exception, false) + + val file = request.data?.file + ?: return@withContext Result.Error(request.exception, false) + file.delete() + if (result.statusCode == 404 && indexTypes.isNotEmpty()) { + update( + context = context, + repository = repository, + indexTypes = indexTypes.subList(1, indexTypes.size), + unstable = unstable, + callback = callback + ) + } else { + Result.Error( + UpdateException( + ErrorType.HTTP, + "Invalid response: HTTP ${result.statusCode}" + ) + ) + } + } + + is Result.Success -> { + if (request.data.isUnmodified) { + request.data.file.delete() + Result.Success(false) + } else { + try { + val isFileParsedSuccessfully = processFile( + context = context, + repository = repository, + indexType = indexType, + unstable = unstable, + file = request.data.file, + lastModified = request.data.lastModified, + entityTag = request.data.entityTag, + callback = callback + ) + Result.Success(isFileParsedSuccessfully) + } catch (e: UpdateException) { + Result.Error(e) + } + } + } + } + } + + private suspend fun downloadIndex( + context: Context, + repository: Repository, + indexType: IndexType, + callback: (Stage, Long, Long?) -> Unit + ): Result = withContext(Dispatchers.IO) { + val file = Cache.getTemporaryFile(context) + val result = downloader.downloadToFile( + url = Uri.parse(repository.address).buildUpon() + .appendPath(indexType.jarName).build().toString(), + target = file, + headers = { + ifModifiedSince(repository.lastModified) + etag(repository.entityTag) + authentication(repository.authentication) + } + ) { read, total -> + callback(Stage.DOWNLOAD, read.value, total.value) + } + + when (result) { + is NetworkResponse.Success -> { + Result.Success( + IndexFile( + isUnmodified = result.statusCode == 304, + lastModified = result.lastModified?.toFormattedString() ?: "", + entityTag = result.etag ?: "", + statusCode = result.statusCode, + file = file + ) + ) + } + + is NetworkResponse.Error -> { + file.delete() + when (result) { + is NetworkResponse.Error.Http -> { + val errorType = if (result.statusCode in 400..499) { + ErrorType.HTTP + } else { + ErrorType.NETWORK + } + + Result.Error( + UpdateException( + errorType = errorType, + message = "Failed with Status: ${result.statusCode}" + ) + ) + } + + is NetworkResponse.Error.ConnectionTimeout -> Result.Error(result.exception) + is NetworkResponse.Error.IO -> Result.Error(result.exception) + is NetworkResponse.Error.SocketTimeout -> Result.Error(result.exception) + is NetworkResponse.Error.Unknown -> Result.Error(result.exception) + // TODO: Add Validator + is NetworkResponse.Error.Validation -> Result.Error() + } + } + } + } + + private fun processFile( + context: Context, + repository: Repository, + indexType: IndexType, + unstable: Boolean, + file: File, + lastModified: String, + entityTag: String, + callback: (Stage, Long, Long?) -> Unit + ): Boolean { + var rollback = true + return synchronized(updaterLock) { + try { + val jarFile = JarFile(file, true) + val indexEntry = jarFile.getEntry(indexType.contentName) as JarEntry + val total = indexEntry.size + Database.UpdaterAdapter.createTemporaryTable() + val features = context.packageManager.systemAvailableFeatures + .asSequence().map { it.name }.toSet() + setOf("android.hardware.touchscreen") + + var changedRepository: Repository? = null + + val mergerFile = Cache.getTemporaryFile(context) + try { + val unmergedProducts = mutableListOf() + val unmergedReleases = mutableListOf>>() + IndexMerger(mergerFile).use { indexMerger -> + jarFile.getInputStream(indexEntry).getProgress { + callback(Stage.PROCESS, it, total) + }.use { entryStream -> + IndexV1Parser.parse( + repository.id, + entryStream, + object : IndexV1Parser.Callback { + override fun onRepository( + mirrors: List, + name: String, + description: String, + version: Int, + timestamp: Long + ) { + changedRepository = repository.update( + mirrors, + name, + description, + version, + lastModified, + entityTag, + timestamp + ) + } + + override fun onProduct(product: Product) { + if (Thread.interrupted()) { + throw InterruptedException() + } + unmergedProducts += product + if (unmergedProducts.size >= 50) { + indexMerger.addProducts(unmergedProducts) + unmergedProducts.clear() + } + } + + override fun onReleases( + packageName: String, + releases: List + ) { + if (Thread.interrupted()) { + throw InterruptedException() + } + unmergedReleases += Pair(packageName, releases) + if (unmergedReleases.size >= 50) { + indexMerger.addReleases(unmergedReleases) + unmergedReleases.clear() + } + } + } + ) + + if (Thread.interrupted()) { + throw InterruptedException() + } + if (unmergedProducts.isNotEmpty()) { + indexMerger.addProducts(unmergedProducts) + unmergedProducts.clear() + } + if (unmergedReleases.isNotEmpty()) { + indexMerger.addReleases(unmergedReleases) + unmergedReleases.clear() + } + var progress = 0 + indexMerger.forEach(repository.id, 50) { products, totalCount -> + if (Thread.interrupted()) { + throw InterruptedException() + } + progress += products.size + callback( + Stage.MERGE, + progress.toLong(), + totalCount.toLong() + ) + Database.UpdaterAdapter.putTemporary( + products + .map { transformProduct(it, features, unstable) } + ) + } + } + } + } finally { + mergerFile.delete() + } + + val workRepository = changedRepository ?: repository + if (workRepository.timestamp < repository.timestamp) { + throw UpdateException( + ErrorType.VALIDATION, + "New index is older than current index:" + + " ${workRepository.timestamp} < ${repository.timestamp}" + ) + } + + val fingerprint = indexEntry + .codeSigner + .certificate + .fingerprint() + .uppercase() + + val commitRepository = if (!workRepository.fingerprint.equals( + fingerprint, + ignoreCase = true + ) + ) { + if (workRepository.fingerprint.isNotEmpty()) { + throw UpdateException( + ErrorType.VALIDATION, + "Certificate fingerprints do not match" + ) + } + + workRepository.copy(fingerprint = fingerprint) + } else { + workRepository + } + if (Thread.interrupted()) { + throw InterruptedException() + } + callback(Stage.COMMIT, 0, null) + synchronized(cleanupLock) { + Database.UpdaterAdapter.finishTemporary(commitRepository, true) + } + rollback = false + true + } catch (e: Exception) { + throw when (e) { + is UpdateException, is InterruptedException -> e + else -> UpdateException(ErrorType.PARSING, "Error parsing index", e) + } + } finally { + file.delete() + if (rollback) { + Database.UpdaterAdapter.finishTemporary(repository, false) + } + } + } + } + + @get:Throws(UpdateException::class) + private val JarEntry.codeSigner: CodeSigner + get() = codeSigners?.singleOrNull() + ?: throw UpdateException( + ErrorType.VALIDATION, + "index.jar must be signed by a single code signer" + ) + + @get:Throws(UpdateException::class) + private val CodeSigner.certificate: Certificate + get() = signerCertPath?.certificates?.singleOrNull() + ?: throw UpdateException( + ErrorType.VALIDATION, + "index.jar code signer should have only one certificate" + ) + + private fun transformProduct( + product: Product, + features: Set, + unstable: Boolean + ): Product { + val releasePairs = product.releases + .distinctBy { it.identifier } + .sortedByDescending { it.versionCode } + .map { release -> + val incompatibilities = mutableListOf() + if (release.minSdkVersion > 0 && SdkCheck.sdk < release.minSdkVersion) { + incompatibilities += Release.Incompatibility.MinSdk + } + if (release.maxSdkVersion > 0 && SdkCheck.sdk > release.maxSdkVersion) { + incompatibilities += Release.Incompatibility.MaxSdk + } + if (release.platforms.isNotEmpty() && + (release.platforms intersect Android.platforms).isEmpty() + ) { + incompatibilities += Release.Incompatibility.Platform + } + incompatibilities += (release.features - features).sorted() + .map { Release.Incompatibility.Feature(it) } + Pair(release, incompatibilities.toList()) + } + + val predicate: (Release) -> Boolean = { + unstable || + product.suggestedVersionCode <= 0 || + it.versionCode <= product.suggestedVersionCode + } + + val firstSelected = + releasePairs.firstOrNull { it.second.isEmpty() && predicate(it.first) } + ?: releasePairs.firstOrNull { predicate(it.first) } + + val releases = releasePairs + .map { (release, incompatibilities) -> + release.copy( + incompatibilities = incompatibilities, + selected = firstSelected?.let { + it.first.versionCode == release.versionCode && + it.second == incompatibilities + } ?: false + ) + } + return product.copy(releases = releases) + } +} + +data class IndexFile( + val isUnmodified: Boolean, + val lastModified: String, + val entityTag: String, + val statusCode: Int, + val file: File +) diff --git a/app/src/main/kotlin/com/leos/droidify/receivers/InstalledAppReceiver.kt b/app/src/main/kotlin/com/leos/droidify/receivers/InstalledAppReceiver.kt new file mode 100644 index 0000000..e437afe --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/receivers/InstalledAppReceiver.kt @@ -0,0 +1,30 @@ +package com.leos.droidify.receivers + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.pm.PackageManager +import com.leos.core.common.extension.getPackageInfoCompat +import com.leos.droidify.database.Database +import com.leos.droidify.utility.extension.toInstalledItem + +class InstalledAppReceiver(private val packageManager: PackageManager) : BroadcastReceiver() { + override fun onReceive(context: Context, intent: Intent) { + val packageName = + intent.data?.let { if (it.scheme == "package") it.schemeSpecificPart else null } + if (packageName != null) { + when (intent.action.orEmpty()) { + Intent.ACTION_PACKAGE_ADDED, + Intent.ACTION_PACKAGE_REMOVED + -> { + val packageInfo = packageManager.getPackageInfoCompat(packageName) + if (packageInfo != null) { + Database.InstalledAdapter.put(packageInfo.toInstalledItem()) + } else { + Database.InstalledAdapter.delete(packageName) + } + } + } + } + } +} diff --git a/app/src/main/kotlin/com/leos/droidify/service/Connection.kt b/app/src/main/kotlin/com/leos/droidify/service/Connection.kt new file mode 100644 index 0000000..d20f42b --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/service/Connection.kt @@ -0,0 +1,43 @@ +package com.leos.droidify.service + +import android.content.ComponentName +import android.content.Context +import android.content.Intent +import android.content.ServiceConnection +import android.os.IBinder + +class Connection>( + private val serviceClass: Class, + private val onBind: ((Connection, B) -> Unit)? = null, + private val onUnbind: ((Connection, B) -> Unit)? = null +) : ServiceConnection { + var binder: B? = null + private set + + private fun handleUnbind() { + binder?.let { + binder = null + onUnbind?.invoke(this, it) + } + } + + override fun onServiceConnected(componentName: ComponentName, binder: IBinder) { + @Suppress("UNCHECKED_CAST") + binder as B + this.binder = binder + onBind?.invoke(this, binder) + } + + override fun onServiceDisconnected(componentName: ComponentName) { + handleUnbind() + } + + fun bind(context: Context) { + context.bindService(Intent(context, serviceClass), this, Context.BIND_AUTO_CREATE) + } + + fun unbind(context: Context) { + context.unbindService(this) + handleUnbind() + } +} diff --git a/app/src/main/kotlin/com/leos/droidify/service/ConnectionService.kt b/app/src/main/kotlin/com/leos/droidify/service/ConnectionService.kt new file mode 100644 index 0000000..1f41bac --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/service/ConnectionService.kt @@ -0,0 +1,22 @@ +package com.leos.droidify.service + +import android.app.Service +import android.content.Intent +import android.os.IBinder +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.SupervisorJob +import kotlinx.coroutines.cancel + +abstract class ConnectionService : Service() { + + private val supervisorJob = SupervisorJob() + val lifecycleScope = CoroutineScope(Dispatchers.Main + supervisorJob) + + abstract override fun onBind(intent: Intent): T + + override fun onDestroy() { + super.onDestroy() + lifecycleScope.cancel() + } +} diff --git a/app/src/main/kotlin/com/leos/droidify/service/DownloadService.kt b/app/src/main/kotlin/com/leos/droidify/service/DownloadService.kt new file mode 100644 index 0000000..31eb7ec --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/service/DownloadService.kt @@ -0,0 +1,487 @@ +package com.leos.droidify.service + +import android.app.NotificationChannel +import android.app.NotificationManager +import android.app.PendingIntent +import android.content.Intent +import android.net.Uri +import android.os.Build +import android.util.Log +import android.view.ContextThemeWrapper +import androidx.core.app.NotificationCompat +import com.leos.core.common.Constants +import com.leos.core.common.DataSize +import com.leos.core.common.R as CommonR +import com.leos.core.common.R.string as stringRes +import com.leos.core.common.R.style as styleRes +import com.leos.core.common.SdkCheck +import com.leos.core.common.cache.Cache +import com.leos.core.common.extension.notificationManager +import com.leos.core.common.extension.percentBy +import com.leos.core.common.extension.startSelf +import com.leos.core.common.extension.stopForegroundCompat +import com.leos.core.common.extension.toPendingIntent +import com.leos.core.common.extension.updateAsMutable +import com.leos.core.common.log +import com.leos.core.common.sdkAbove +import com.leos.core.common.signature.ValidationException +import com.leos.core.datastore.SettingsRepository +import com.leos.core.datastore.get +import com.leos.core.datastore.model.InstallerType +import com.leos.core.domain.Release +import com.leos.core.domain.Repository +import com.leos.droidify.BuildConfig +import com.leos.droidify.MainActivity +import com.leos.installer.InstallManager +import com.leos.installer.model.installFrom +import com.leos.network.Downloader +import com.leos.network.NetworkResponse +import dagger.hilt.android.AndroidEntryPoint +import java.io.File +import javax.inject.Inject +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Job +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.flow.collectLatest +import kotlinx.coroutines.flow.filter +import kotlinx.coroutines.flow.first +import kotlinx.coroutines.flow.sample +import kotlinx.coroutines.flow.update +import kotlinx.coroutines.launch +import kotlinx.coroutines.runBlocking +import kotlinx.coroutines.sync.Mutex +import kotlinx.coroutines.sync.withLock +import kotlinx.coroutines.yield + +@AndroidEntryPoint +class DownloadService : ConnectionService() { + companion object { + private const val ACTION_CANCEL = "${BuildConfig.APPLICATION_ID}.intent.action.CANCEL" + } + + @Inject + lateinit var settingsRepository: SettingsRepository + + @Inject + lateinit var downloader: Downloader + + private val installerType + get() = settingsRepository.get { installerType } + + @Inject + lateinit var installer: InstallManager + + sealed class State(val packageName: String) { + data object Idle : State("") + data class Connecting(val name: String) : State(name) + data class Downloading(val name: String, val read: DataSize, val total: DataSize?) : State( + name + ) + + data class Error(val name: String) : State(name) + data class Cancel(val name: String) : State(name) + data class Success(val name: String, val release: Release) : State(name) + } + + data class DownloadState( + val currentItem: State = State.Idle, + val queue: List = emptyList() + ) { + infix fun isDownloading(packageName: String): Boolean = + currentItem.packageName == packageName && ( + currentItem is State.Connecting || currentItem is State.Downloading + ) + + infix fun isComplete(packageName: String): Boolean = + currentItem.packageName == packageName && ( + currentItem is State.Error || + currentItem is State.Cancel || + currentItem is State.Success || + currentItem is State.Idle + ) + } + + private val _downloadState = MutableStateFlow(DownloadState()) + + private class Task( + val packageName: String, + val name: String, + val release: Release, + val url: String, + val authentication: String, + val isUpdate: Boolean = false + ) { + val notificationTag: String + get() = "download-$packageName" + } + + private data class CurrentTask(val task: Task, val job: Job, val lastState: State) + + private var started = false + private val tasks = mutableListOf() + private var currentTask: CurrentTask? = null + + private val lock = Mutex() + + inner class Binder : android.os.Binder() { + val downloadState = _downloadState.asStateFlow() + fun enqueue( + packageName: String, + name: String, + repository: Repository, + release: Release, + isUpdate: Boolean = false + ) { + val task = Task( + packageName = packageName, + name = name, + release = release, + url = release.getDownloadUrl(repository), + authentication = repository.authentication, + isUpdate = isUpdate + ) + if (Cache.getReleaseFile(this@DownloadService, release.cacheFileName).exists()) { + lifecycleScope.launch { publishSuccess(task) } + return + } + cancelTasks(packageName) + cancelCurrentTask(packageName) + notificationManager?.cancel( + task.notificationTag, + Constants.NOTIFICATION_ID_DOWNLOADING + ) + tasks += task + if (currentTask == null) { + handleDownload() + } else { + updateCurrentQueue { add(packageName) } + } + } + + fun cancel(packageName: String) { + cancelTasks(packageName) + cancelCurrentTask(packageName) + } + } + + private val binder = Binder() + override fun onBind(intent: Intent): Binder = binder + + override fun onCreate() { + super.onCreate() + + sdkAbove(Build.VERSION_CODES.O) { + NotificationChannel( + Constants.NOTIFICATION_CHANNEL_DOWNLOADING, + getString(stringRes.downloading), + NotificationManager.IMPORTANCE_LOW + ).apply { setShowBadge(false) } + .let { + notificationManager?.createNotificationChannel(it) + } + } + + lifecycleScope.launch { + _downloadState + .filter { currentTask != null } + .sample(400) + .collectLatest { + publishForegroundState(false, it.currentItem) + } + } + } + + override fun onDestroy() { + super.onDestroy() + cancelTasks(null) + cancelCurrentTask(null) + } + + override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { + if (intent?.action == ACTION_CANCEL) { + currentTask?.let { binder.cancel(it.task.packageName) } + } + return START_NOT_STICKY + } + + private fun cancelTasks(packageName: String?) { + tasks.removeAll { + (packageName == null || it.packageName == packageName) && run { + updateCurrentState(State.Cancel(it.packageName)) + true + } + } + } + + private fun cancelCurrentTask(packageName: String?) { + currentTask?.let { + if (packageName == null || it.task.packageName == packageName) { + it.job.cancel() + currentTask = null + updateCurrentState(State.Cancel(it.task.packageName)) + } + } + } + + private sealed interface ErrorType { + data object IO : ErrorType + data object Http : ErrorType + data object SocketTimeout : ErrorType + data object ConnectionTimeout : ErrorType + class Validation(val exception: ValidationException) : ErrorType + } + + private fun showNotificationError(task: Task, errorType: ErrorType) { + val intent = Intent(this, MainActivity::class.java) + .setAction(Intent.ACTION_VIEW) + .setData(Uri.parse("package:${task.packageName}")) + .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) + .toPendingIntent(this) + notificationManager?.notify( + task.notificationTag, + Constants.NOTIFICATION_ID_DOWNLOADING, + NotificationCompat + .Builder(this, Constants.NOTIFICATION_CHANNEL_DOWNLOADING) + .setAutoCancel(true) + .setSmallIcon(android.R.drawable.stat_notify_error) + .setColor( + ContextThemeWrapper(this, styleRes.Theme_Main_Light) + .getColor(CommonR.color.md_theme_dark_errorContainer) + ) + .setOnlyAlertOnce(true) + .setContentIntent(intent) + .errorNotificationContent(task, errorType) + .build() + ) + } + + private fun NotificationCompat.Builder.errorNotificationContent( + task: Task, + errorType: ErrorType + ): NotificationCompat.Builder { + val title = if (errorType is ErrorType.Validation) { + stringRes.could_not_validate_FORMAT + } else { + stringRes.could_not_download_FORMAT + } + val description = when (errorType) { + ErrorType.ConnectionTimeout -> getString(stringRes.connection_error_DESC) + ErrorType.Http -> getString(stringRes.http_error_DESC) + ErrorType.IO -> getString(stringRes.io_error_DESC) + ErrorType.SocketTimeout -> getString(stringRes.socket_error_DESC) + is ErrorType.Validation -> errorType.exception.message + } + setContentTitle(getString(title, task.name)) + return setContentText(description) + } + + private fun showNotificationInstall(task: Task) { + val intent = Intent(this, MainActivity::class.java) + .setAction(MainActivity.ACTION_INSTALL) + .setData(Uri.parse("package:${task.packageName}")) + .putExtra(MainActivity.EXTRA_CACHE_FILE_NAME, task.release.cacheFileName) + .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) + .toPendingIntent(this) + notificationManager?.notify( + task.notificationTag, + Constants.NOTIFICATION_ID_DOWNLOADING, + NotificationCompat + .Builder(this, Constants.NOTIFICATION_CHANNEL_DOWNLOADING) + .setAutoCancel(true) + .setOngoing(false) + .setSmallIcon(android.R.drawable.stat_sys_download_done) + .setColor( + ContextThemeWrapper(this, styleRes.Theme_Main_Light) + .getColor(CommonR.color.md_theme_dark_primaryContainer) + ) + .setOnlyAlertOnce(true) + .setContentIntent(intent) + .setContentTitle(getString(stringRes.downloaded_FORMAT, task.name)) + .setContentText(getString(stringRes.tap_to_install_DESC)) + .build() + ) + } + + private suspend fun publishSuccess(task: Task) { + val currentInstaller = installerType.first() + updateCurrentQueue { add("") } + updateCurrentState(State.Success(task.packageName, task.release)) + val autoInstallWithSessionInstaller = + SdkCheck.canAutoInstall(task.release.targetSdkVersion) && + currentInstaller == InstallerType.SESSION && + task.isUpdate + + showNotificationInstall(task) + if (currentInstaller == InstallerType.ROOT || + currentInstaller == InstallerType.SHIZUKU || + autoInstallWithSessionInstaller + ) { + val installItem = task.packageName installFrom task.release.cacheFileName + installer install installItem + } + } + + private val stateNotificationBuilder by lazy { + NotificationCompat + .Builder(this, Constants.NOTIFICATION_CHANNEL_DOWNLOADING) + .setSmallIcon(android.R.drawable.stat_sys_download) + .setColor( + ContextThemeWrapper(this, styleRes.Theme_Main_Light) + .getColor(CommonR.color.md_theme_dark_primaryContainer) + ) + .addAction( + 0, + getString(stringRes.cancel), + PendingIntent.getService( + this, + 0, + Intent(this, this::class.java).setAction(ACTION_CANCEL), + PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE + ) + ) + } + + private fun publishForegroundState(force: Boolean, state: State) { + if (!force && currentTask == null) return + currentTask = currentTask!!.copy(lastState = state) + stateNotificationBuilder.downloadingNotificationContent(state) + ?.let { notification -> + startForeground( + Constants.NOTIFICATION_ID_DOWNLOADING, + notification.build() + ) + } ?: run { + log("Invalid Download State: $state", "DownloadService", Log.ERROR) + } + } + + private fun NotificationCompat.Builder.downloadingNotificationContent( + state: State + ): NotificationCompat.Builder? { + return when (state) { + is State.Connecting -> { + setContentTitle(getString(stringRes.downloading_FORMAT, currentTask!!.task.name)) + setContentText(getString(stringRes.connecting)) + setProgress(1, 0, true) + } + + is State.Downloading -> { + setContentTitle(getString(stringRes.downloading_FORMAT, currentTask!!.task.name)) + if (state.total != null) { + setContentText("${state.read} / ${state.total}") + setProgress(100, state.read.value percentBy state.total.value, false) + } else { + setContentText(state.read.toString()) + setProgress(0, 0, true) + } + } + + else -> null + } + } + + private fun handleDownload() { + if (currentTask != null) return + if (tasks.isEmpty() && started) { + started = false + stopForegroundCompat() + return + } + if (!started) { + started = true + startSelf() + } + val task = tasks.removeFirstOrNull() ?: return + with(stateNotificationBuilder) { + setWhen(System.currentTimeMillis()) + setContentIntent(createNotificationIntent(task.packageName)) + } + val connectionState = State.Connecting(task.packageName) + val partialReleaseFile = + Cache.getPartialReleaseFile(this, task.release.cacheFileName) + val job = lifecycleScope.downloadFile(task, partialReleaseFile) + currentTask = CurrentTask(task, job, connectionState) + publishForegroundState(true, connectionState) + updateCurrentState(State.Connecting(task.packageName)) + } + + private fun createNotificationIntent(packageName: String): PendingIntent? = + Intent(this, MainActivity::class.java) + .setAction(Intent.ACTION_VIEW) + .setData(Uri.parse("package:$packageName")) + .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + .toPendingIntent(this) + + private fun CoroutineScope.downloadFile( + task: Task, + target: File + ) = launch { + try { + val releaseValidator = ReleaseFileValidator( + context = this@DownloadService, + packageName = task.packageName, + release = task.release + ) + val response = downloader.downloadToFile( + url = task.url, + target = target, + validator = releaseValidator, + headers = { authentication(task.authentication) } + ) { read, total -> + yield() + updateCurrentState(State.Downloading(task.packageName, read, total)) + } + + when (response) { + is NetworkResponse.Success -> { + val releaseFile = Cache.getReleaseFile( + this@DownloadService, + task.release.cacheFileName + ) + target.renameTo(releaseFile) + publishSuccess(task) + } + + is NetworkResponse.Error -> { + updateCurrentState(State.Error(task.packageName)) + val errorType = when (response) { + is NetworkResponse.Error.ConnectionTimeout -> ErrorType.ConnectionTimeout + is NetworkResponse.Error.IO -> ErrorType.IO + is NetworkResponse.Error.SocketTimeout -> ErrorType.SocketTimeout + is NetworkResponse.Error.Validation -> ErrorType.Validation( + response.exception + ) + + else -> ErrorType.Http + } + showNotificationError(task, errorType) + } + } + } finally { + lock.withLock { currentTask = null } + handleDownload() + } + } + + private fun updateCurrentState(state: State) { + _downloadState.update { + val newQueue = + if (state.packageName in it.queue) { + it.queue.updateAsMutable { + removeAll { name -> name == "" } + remove(state.packageName) + } + } else { + it.queue + } + it.copy(currentItem = state, queue = newQueue) + } + } + + private fun updateCurrentQueue(block: MutableList.() -> Unit) { + _downloadState.update { state -> + state.copy(queue = state.queue.updateAsMutable(block)) + } + } +} diff --git a/app/src/main/kotlin/com/leos/droidify/service/ReleaseFileValidator.kt b/app/src/main/kotlin/com/leos/droidify/service/ReleaseFileValidator.kt new file mode 100644 index 0000000..5b92156 --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/service/ReleaseFileValidator.kt @@ -0,0 +1,53 @@ +package com.leos.droidify.service + +import android.content.Context +import androidx.annotation.StringRes +import com.leos.core.common.R.string as strings +import com.leos.core.common.extension.calculateHash +import com.leos.core.common.extension.getPackageArchiveInfoCompat +import com.leos.core.common.extension.singleSignature +import com.leos.core.common.extension.versionCodeCompat +import com.leos.core.common.signature.FileValidator +import com.leos.core.common.signature.Hash +import com.leos.core.common.signature.ValidationException +import com.leos.core.common.signature.verifyHash +import com.leos.core.domain.Release +import java.io.File + +class ReleaseFileValidator( + private val context: Context, + private val packageName: String, + private val release: Release +) : FileValidator { + + override suspend fun validate(file: File) { + val hash = Hash(release.hashType, release.hash) + if (!file.verifyHash(hash)) { + throw ValidationException( + getString(strings.integrity_check_error_DESC) + ) + } + val packageInfo = context.packageManager.getPackageArchiveInfoCompat(file.path) + ?: throw ValidationException(getString(strings.file_format_error_DESC)) + if (packageInfo.packageName != packageName || + packageInfo.versionCodeCompat != release.versionCode + ) { + throw ValidationException(getString(strings.invalid_metadata_error_DESC)) + } + + packageInfo.singleSignature + ?.calculateHash() + ?.takeIf { it.isNotBlank() || it == release.signature } + ?: throw ValidationException(getString(strings.invalid_signature_error_DESC)) + + packageInfo.permissions + ?.asSequence() + .orEmpty() + .map { it.name } + .toSet() + .takeIf { release.permissions.containsAll(it) } + ?: throw ValidationException(getString(strings.invalid_permissions_error_DESC)) + } + + private fun getString(@StringRes id: Int): String = context.getString(id) +} diff --git a/app/src/main/kotlin/com/leos/droidify/service/SyncService.kt b/app/src/main/kotlin/com/leos/droidify/service/SyncService.kt new file mode 100644 index 0000000..1aba090 --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/service/SyncService.kt @@ -0,0 +1,636 @@ +package com.leos.droidify.service + +import android.annotation.SuppressLint +import android.app.NotificationChannel +import android.app.NotificationManager +import android.app.PendingIntent +import android.app.job.JobInfo +import android.app.job.JobParameters +import android.app.job.JobService +import android.content.ComponentName +import android.content.Context +import android.content.Intent +import android.graphics.Color +import android.os.Build +import android.text.SpannableStringBuilder +import android.text.style.ForegroundColorSpan +import android.view.ContextThemeWrapper +import androidx.core.app.NotificationCompat +import androidx.fragment.app.Fragment +import com.leos.core.common.Constants +import com.leos.core.common.DataSize +import com.leos.core.common.SdkCheck +import com.leos.core.common.extension.getColorFromAttr +import com.leos.core.common.extension.notificationManager +import com.leos.core.common.extension.percentBy +import com.leos.core.common.extension.startSelf +import com.leos.core.common.extension.stopForegroundCompat +import com.leos.core.common.result.Result +import com.leos.core.common.sdkAbove +import com.leos.core.datastore.SettingsRepository +import com.leos.core.domain.ProductItem +import com.leos.core.domain.Repository +import com.leos.droidify.BuildConfig +import com.leos.droidify.MainActivity +import com.leos.droidify.database.Database +import com.leos.droidify.index.RepositoryUpdater +import com.leos.droidify.utility.extension.startUpdate +import dagger.hilt.android.AndroidEntryPoint +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.NonCancellable +import kotlinx.coroutines.cancel +import kotlinx.coroutines.flow.MutableSharedFlow +import kotlinx.coroutines.flow.SharedFlow +import kotlinx.coroutines.flow.asSharedFlow +import kotlinx.coroutines.flow.collectLatest +import kotlinx.coroutines.flow.sample +import kotlinx.coroutines.launch +import kotlinx.coroutines.sync.Mutex +import kotlinx.coroutines.sync.withLock +import kotlinx.coroutines.withContext +import java.lang.ref.WeakReference +import javax.inject.Inject +import com.leos.core.common.R as CommonR +import com.leos.core.common.R.string as stringRes +import com.leos.core.common.R.style as styleRes +import kotlinx.coroutines.Job as CoroutinesJob + +@AndroidEntryPoint +class SyncService : ConnectionService() { + + companion object { + private const val MAX_PROGRESS = 100 + + private const val NOTIFICATION_UPDATE_SAMPLING = 400L + + private const val MAX_UPDATE_NOTIFICATION = 5 + private const val ACTION_CANCEL = "${BuildConfig.APPLICATION_ID}.intent.action.CANCEL" + + private val syncState = MutableSharedFlow() + private val onFinishState = MutableSharedFlow() + } + + @Inject + lateinit var settingsRepository: SettingsRepository + + private sealed class State(val name: String) { + data class Connecting(val appName: String) : State(appName) + data class Syncing( + val appName: String, + val stage: RepositoryUpdater.Stage, + val read: DataSize, + val total: DataSize? + ) : State(appName) + } + + private class Task(val repositoryId: Long, val manual: Boolean) + private data class CurrentTask( + val task: Task?, + val job: CoroutinesJob, + val hasUpdates: Boolean, + val lastState: State + ) + + private enum class Started { NO, AUTO, MANUAL } + + private var started = Started.NO + private val tasks = mutableListOf() + private var currentTask: CurrentTask? = null + + private var updateNotificationBlockerFragment: WeakReference? = null + + private val downloadConnection = Connection(DownloadService::class.java) + private val lock = Mutex() + + enum class SyncRequest { AUTO, MANUAL, FORCE } + + inner class Binder : android.os.Binder() { + + val onFinish: SharedFlow + get() = onFinishState.asSharedFlow() + + private fun sync(ids: List, request: SyncRequest) { + val cancelledTask = + cancelCurrentTask { request == SyncRequest.FORCE && it.task?.repositoryId in ids } + cancelTasks { !it.manual && it.repositoryId in ids } + val currentIds = tasks.asSequence().map { it.repositoryId }.toSet() + val manual = request != SyncRequest.AUTO + tasks += ids.asSequence().filter { + it !in currentIds && + it != currentTask?.task?.repositoryId + }.map { Task(it, manual) } + handleNextTask(cancelledTask?.hasUpdates == true) + if (request != SyncRequest.AUTO && started == Started.AUTO) { + started = Started.MANUAL + startSelf() + handleSetStarted() + currentTask?.lastState?.let { publishForegroundState(true, it) } + } + } + + fun sync(request: SyncRequest) { + val ids = Database.RepositoryAdapter.getAll() + .asSequence().filter { it.enabled }.map { it.id }.toList() + sync(ids, request) + } + + fun sync(repository: Repository) { + if (repository.enabled) { + sync(listOf(repository.id), SyncRequest.FORCE) + } + } + + suspend fun updateAllApps() { + updateAllAppsInternal() + } + + fun setUpdateNotificationBlocker(fragment: Fragment?) { + updateNotificationBlockerFragment = fragment?.let(::WeakReference) + if (fragment != null) { + notificationManager?.cancel(Constants.NOTIFICATION_ID_UPDATES) + } + } + + fun setEnabled(repository: Repository, enabled: Boolean): Boolean { + Database.RepositoryAdapter.put(repository.enable(enabled)) + if (enabled) { + val isRepoInTasks = repository.id != currentTask?.task?.repositoryId && + !tasks.any { it.repositoryId == repository.id } + if (isRepoInTasks) { + tasks += Task(repository.id, true) + handleNextTask(false) + } + } else { + cancelTasks { it.repositoryId == repository.id } + val cancelledTask = cancelCurrentTask { + it.task?.repositoryId == repository.id + } + handleNextTask(cancelledTask?.hasUpdates == true) + } + return true + } + + fun isCurrentlySyncing(repositoryId: Long): Boolean { + return currentTask?.task?.repositoryId == repositoryId + } + + fun deleteRepository(repositoryId: Long): Boolean { + val repository = Database.RepositoryAdapter.get(repositoryId) + return repository != null && run { + setEnabled(repository, false) + Database.RepositoryAdapter.markAsDeleted(repository.id) + true + } + } + + fun cancelAuto(): Boolean { + val removed = cancelTasks { !it.manual } + val currentTask = cancelCurrentTask { it.task?.manual == false } + handleNextTask(currentTask?.hasUpdates == true) + return removed || currentTask != null + } + } + + private val binder = Binder() + override fun onBind(intent: Intent): Binder = binder + + override fun onCreate() { + super.onCreate() + + sdkAbove(Build.VERSION_CODES.O) { + val channels = listOf( + NotificationChannel( + Constants.NOTIFICATION_CHANNEL_SYNCING, + getString(stringRes.syncing), + NotificationManager.IMPORTANCE_LOW + ).apply { setShowBadge(false) }, + NotificationChannel( + Constants.NOTIFICATION_CHANNEL_UPDATES, + getString(stringRes.updates), + NotificationManager.IMPORTANCE_LOW + ) + ) + notificationManager?.createNotificationChannels(channels) + } + downloadConnection.bind(this) + lifecycleScope.launch { + syncState + .sample(NOTIFICATION_UPDATE_SAMPLING) + .collectLatest { + publishForegroundState(false, it) + } + } + } + + override fun onDestroy() { + super.onDestroy() + downloadConnection.unbind(this) + cancelTasks { true } + cancelCurrentTask { true } + } + + override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { + if (intent?.action == ACTION_CANCEL) { + tasks.clear() + val cancelledTask = cancelCurrentTask { it.task != null } + handleNextTask(cancelledTask?.hasUpdates == true) + } + return START_NOT_STICKY + } + + private fun cancelTasks(condition: (Task) -> Boolean): Boolean { + return tasks.removeAll(condition) + } + + private fun cancelCurrentTask(condition: ((CurrentTask) -> Boolean)): CurrentTask? { + return currentTask?.let { + if (condition(it)) { + currentTask = null + it.job.cancel() + RepositoryUpdater.await() + it + } else { + null + } + } + } + + private fun showNotificationError(repository: Repository, exception: Exception) { + val description = getString( + when (exception) { + is RepositoryUpdater.UpdateException -> when (exception.errorType) { + RepositoryUpdater.ErrorType.NETWORK -> stringRes.network_error_DESC + RepositoryUpdater.ErrorType.HTTP -> stringRes.http_error_DESC + RepositoryUpdater.ErrorType.VALIDATION -> stringRes.validation_index_error_DESC + RepositoryUpdater.ErrorType.PARSING -> stringRes.parsing_index_error_DESC + } + + else -> stringRes.unknown_error_DESC + } + ) + notificationManager?.notify( + "repository-${repository.id}", + Constants.NOTIFICATION_ID_SYNCING, + NotificationCompat + .Builder(this, Constants.NOTIFICATION_CHANNEL_SYNCING) + .setSmallIcon(android.R.drawable.stat_sys_warning) + .setColor( + ContextThemeWrapper(this, styleRes.Theme_Main_Light) + .getColorFromAttr(android.R.attr.colorPrimary).defaultColor + ) + .setContentTitle(getString(stringRes.could_not_sync_FORMAT, repository.name)) + .setContentText(description) + .build() + ) + } + + private val stateNotificationBuilder by lazy { + NotificationCompat + .Builder(this, Constants.NOTIFICATION_CHANNEL_SYNCING) + .setSmallIcon(CommonR.drawable.ic_sync) + .setColor( + ContextThemeWrapper(this, styleRes.Theme_Main_Light) + .getColorFromAttr(android.R.attr.colorPrimary).defaultColor + ) + .addAction( + 0, + getString(stringRes.cancel), + PendingIntent.getService( + this, + 0, + Intent(this, this::class.java).setAction(ACTION_CANCEL), + PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE + ) + ) + } + + private fun publishForegroundState(force: Boolean, state: State) { + if (force || currentTask?.lastState != state) { + currentTask = currentTask?.copy(lastState = state) + if (started == Started.MANUAL) { + startForeground( + Constants.NOTIFICATION_ID_SYNCING, + stateNotificationBuilder.apply { + setContentTitle(getString(stringRes.syncing_FORMAT, state.name)) + when (state) { + is State.Connecting -> { + setContentText(getString(stringRes.connecting)) + setProgress(0, 0, true) + } + + is State.Syncing -> { + when (state.stage) { + RepositoryUpdater.Stage.DOWNLOAD -> { + if (state.total != null) { + setContentText("${state.read} / ${state.total}") + setProgress( + MAX_PROGRESS, + state.read percentBy state.total, + false + ) + } else { + setContentText(state.read.toString()) + setProgress(0, 0, true) + } + } + + RepositoryUpdater.Stage.PROCESS -> { + val progress = (state.read percentBy state.total) + .takeIf { it != -1 } + setContentText( + getString( + stringRes.processing_FORMAT, + "${progress ?: 0}%" + ) + ) + setProgress(MAX_PROGRESS, progress ?: 0, progress == null) + } + + RepositoryUpdater.Stage.MERGE -> { + val progress = (state.read percentBy state.total) + setContentText( + getString( + stringRes.merging_FORMAT, + "${state.read.value} / ${state.total?.value ?: state.read.value}" + ) + ) + setProgress(MAX_PROGRESS, progress, false) + } + + RepositoryUpdater.Stage.COMMIT -> { + setContentText(getString(stringRes.saving_details)) + setProgress(0, 0, true) + } + } + } + }::class + }.build() + ) + } + } + } + + private fun handleSetStarted() { + stateNotificationBuilder.setWhen(System.currentTimeMillis()) + } + + private fun handleNextTask(hasUpdates: Boolean) { + if (currentTask != null) return + if (tasks.isEmpty()) { + if (started != Started.NO) { + lifecycleScope.launch { + val setting = settingsRepository.getInitial() + handleUpdates( + hasUpdates = hasUpdates, + notifyUpdates = setting.notifyUpdate, + autoUpdate = setting.autoUpdate + ) + } + } + return + } + val task = tasks.removeFirst() + val repository = Database.RepositoryAdapter.get(task.repositoryId) + if (repository == null || !repository.enabled) handleNextTask(hasUpdates) + val lastStarted = started + val newStarted = if (task.manual || lastStarted == Started.MANUAL) { + Started.MANUAL + } else { + Started.AUTO + } + started = newStarted + if (newStarted == Started.MANUAL && lastStarted != Started.MANUAL) { + startSelf() + handleSetStarted() + } + val initialState = State.Connecting(repository!!.name) + publishForegroundState(true, initialState) + lifecycleScope.launch { + val unstableUpdates = + settingsRepository.getInitial().unstableUpdate + val downloadJob = downloadFile( + task = task, + repository = repository, + hasUpdates = hasUpdates, + unstableUpdates = unstableUpdates + ) + currentTask = CurrentTask(task, downloadJob, hasUpdates, initialState) + } + } + + private fun CoroutineScope.downloadFile( + task: Task, + repository: Repository, + hasUpdates: Boolean, + unstableUpdates: Boolean + ): CoroutinesJob = launch(Dispatchers.Default) { + var passedHasUpdates = hasUpdates + try { + val response = RepositoryUpdater.update( + this@SyncService, + repository, + unstableUpdates + ) { stage, progress, total -> + launch { + syncState.emit( + State.Syncing( + appName = repository.name, + stage = stage, + read = DataSize(progress), + total = total?.let { DataSize(it) } + ) + ) + } + } + passedHasUpdates = when (response) { + is Result.Error -> { + response.exception?.let { + it.printStackTrace() + if (task.manual) showNotificationError(repository, it as Exception) + } + response.data == true || hasUpdates + } + + is Result.Success -> response.data || hasUpdates + } + } finally { + withContext(NonCancellable) { + lock.withLock { currentTask = null } + handleNextTask(passedHasUpdates) + } + } + } + + private suspend fun handleUpdates( + hasUpdates: Boolean, + notifyUpdates: Boolean, + autoUpdate: Boolean + ) { + try { + if (!hasUpdates || !notifyUpdates) { + onFinishState.emit(Unit) + val needStop = started == Started.MANUAL + started = Started.NO + if (needStop) stopForegroundCompat() + return + } + val blocked = updateNotificationBlockerFragment?.get()?.isAdded == true + val updates = Database.ProductAdapter.getUpdates() + if (!blocked && updates.isNotEmpty()) { + displayUpdatesNotification(updates) + if (autoUpdate) updateAllAppsInternal() + } + handleUpdates(hasUpdates = false, notifyUpdates = true, autoUpdate = autoUpdate) + } finally { + withContext(NonCancellable) { + lock.withLock { currentTask = null } + handleNextTask(false) + } + } + } + + private suspend fun updateAllAppsInternal() { + Database.ProductAdapter + .getUpdates() + // Update LeOS-Doid the last + .sortedBy { if (it.packageName == packageName) 1 else -1 } + .map { + Database.InstalledAdapter.get(it.packageName, null) to + Database.RepositoryAdapter.get(it.repositoryId) + } + .filter { it.first != null && it.second != null } + .forEach { (installItem, repo) -> + val productRepo = Database.ProductAdapter.get(installItem!!.packageName, null) + .filter { it.repositoryId == repo!!.id } + .map { it to repo!! } + downloadConnection.startUpdate( + installItem.packageName, + installItem, + productRepo + ) + } + } + + private fun displayUpdatesNotification(productItems: List) { + fun T.applyHack(callback: T.() -> Unit): T = apply(callback) + notificationManager?.notify( + Constants.NOTIFICATION_ID_UPDATES, + NotificationCompat + .Builder(this, Constants.NOTIFICATION_CHANNEL_UPDATES) + .setSmallIcon(CommonR.drawable.ic_new_releases) + .setContentTitle(getString(stringRes.new_updates_available)) + .setContentText( + resources.getQuantityString( + CommonR.plurals.new_updates_DESC_FORMAT, + productItems.size, + productItems.size + ) + ) + .setColor( + ContextThemeWrapper(this, styleRes.Theme_Main_Light) + .getColorFromAttr(android.R.attr.colorPrimary).defaultColor + ) + .setContentIntent( + PendingIntent.getActivity( + this, + 0, + Intent(this, MainActivity::class.java) + .setAction(MainActivity.ACTION_UPDATES), + PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE + ) + ) + .setStyle( + NotificationCompat.InboxStyle().applyHack { + for (productItem in productItems.take(MAX_UPDATE_NOTIFICATION)) { + val builder = SpannableStringBuilder(productItem.name) + builder.setSpan( + ForegroundColorSpan(Color.BLACK), + 0, + builder.length, + SpannableStringBuilder.SPAN_EXCLUSIVE_EXCLUSIVE + ) + builder.append(' ').append(productItem.version) + addLine(builder) + } + if (productItems.size > MAX_UPDATE_NOTIFICATION) { + val summary = + getString( + stringRes.plus_more_FORMAT, + productItems.size - MAX_UPDATE_NOTIFICATION + ) + if (SdkCheck.isNougat) addLine(summary) else setSummaryText(summary) + } + } + ) + .build() + ) + } + + @SuppressLint("SpecifyJobSchedulerIdRange") + class Job : JobService() { + private val jobScope = CoroutineScope(Dispatchers.Default) + private var syncParams: JobParameters? = null + private val syncConnection = + Connection(SyncService::class.java, onBind = { connection, binder -> + jobScope.launch { + binder.onFinish.collect { + val params = syncParams + if (params != null) { + syncParams = null + connection.unbind(this@Job) + jobFinished(params, false) + } + } + } + binder.sync(SyncRequest.AUTO) + }, onUnbind = { _, binder -> + binder.cancelAuto() + jobScope.cancel() + val params = syncParams + if (params != null) { + syncParams = null + jobFinished(params, true) + } + }) + + override fun onStartJob(params: JobParameters): Boolean { + syncParams = params + syncConnection.bind(this) + return true + } + + override fun onStopJob(params: JobParameters): Boolean { + syncParams = null + jobScope.cancel() + val reschedule = syncConnection.binder?.cancelAuto() == true + syncConnection.unbind(this) + return reschedule + } + + companion object { + fun create( + context: Context, + periodMillis: Long, + networkType: Int, + isCharging: Boolean, + isBatteryLow: Boolean + ): JobInfo = JobInfo.Builder( + Constants.JOB_ID_SYNC, + ComponentName(context, Job::class.java) + ).apply { + setRequiredNetworkType(networkType) + sdkAbove(sdk = Build.VERSION_CODES.O) { + setRequiresCharging(isCharging) + setRequiresBatteryNotLow(isBatteryLow) + setRequiresStorageNotLow(true) + } + if (SdkCheck.isNougat) { + setPeriodic(periodMillis, JobInfo.getMinFlexMillis()) + } else { + setPeriodic(periodMillis) + } + }.build() + } + } +} diff --git a/app/src/main/kotlin/com/leos/droidify/sync/SyncPreference.kt b/app/src/main/kotlin/com/leos/droidify/sync/SyncPreference.kt new file mode 100644 index 0000000..6378f99 --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/sync/SyncPreference.kt @@ -0,0 +1,23 @@ +package com.leos.droidify.sync + +import android.app.job.JobInfo +import androidx.work.Constraints +import androidx.work.NetworkType + +data class SyncPreference( + val networkType: NetworkType, + val pluggedIn: Boolean = false, + val batteryNotLow: Boolean = true, +) + +fun SyncPreference.toJobNetworkType() = when (networkType) { + NetworkType.NOT_REQUIRED -> JobInfo.NETWORK_TYPE_NONE + NetworkType.UNMETERED -> JobInfo.NETWORK_TYPE_UNMETERED + else -> JobInfo.NETWORK_TYPE_ANY +} + +fun SyncPreference.toWorkConstraints(): Constraints = Constraints( + requiredNetworkType = networkType, + requiresCharging = pluggedIn, + requiresBatteryNotLow = batteryNotLow +) diff --git a/app/src/main/kotlin/com/leos/droidify/ui/MessageDialog.kt b/app/src/main/kotlin/com/leos/droidify/ui/MessageDialog.kt new file mode 100644 index 0000000..6c68dfb --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/ui/MessageDialog.kt @@ -0,0 +1,265 @@ +package com.leos.droidify.ui + +import android.content.ActivityNotFoundException +import android.content.Intent +import android.net.Uri +import android.os.Bundle +import android.os.Parcel +import android.os.Parcelable +import androidx.appcompat.app.AlertDialog +import androidx.core.os.bundleOf +import androidx.fragment.app.DialogFragment +import androidx.fragment.app.FragmentManager +import com.google.android.material.dialog.MaterialAlertDialogBuilder +import com.leos.core.common.SdkCheck +import com.leos.core.common.nullIfEmpty +import com.leos.core.domain.Release +import com.leos.droidify.ui.repository.RepositoryFragment +import com.leos.droidify.utility.PackageItemResolver +import com.leos.droidify.utility.extension.android.Android +import kotlinx.parcelize.Parceler +import kotlinx.parcelize.Parcelize +import kotlinx.parcelize.TypeParceler +import com.leos.core.common.R.string as stringRes + +class MessageDialog() : DialogFragment() { + companion object { + private const val EXTRA_MESSAGE = "message" + } + + constructor(message: Message) : this() { + arguments = bundleOf(EXTRA_MESSAGE to message) + } + + fun show(fragmentManager: FragmentManager) { + show(fragmentManager, this::class.java.name) + } + + override fun onCreateDialog(savedInstanceState: Bundle?): AlertDialog { + val dialog = MaterialAlertDialogBuilder(requireContext()) + val message = if (SdkCheck.isTiramisu) { + arguments?.getParcelable(EXTRA_MESSAGE, Message::class.java)!! + } else { + arguments?.getParcelable(EXTRA_MESSAGE)!! + } + when (message) { + is Message.DeleteRepositoryConfirm -> { + dialog.setTitle(stringRes.confirmation) + dialog.setMessage(stringRes.delete_repository_DESC) + dialog.setPositiveButton(stringRes.delete) { _, _ -> + (parentFragment as RepositoryFragment).onDeleteConfirm() + } + dialog.setNegativeButton(stringRes.cancel, null) + } + + is Message.CantEditSyncing -> { + dialog.setTitle(stringRes.action_failed) + dialog.setMessage(stringRes.cant_edit_sync_DESC) + dialog.setPositiveButton(stringRes.ok, null) + } + + is Message.Link -> { + dialog.setTitle(stringRes.confirmation) + dialog.setMessage(getString(stringRes.open_DESC_FORMAT, message.uri.toString())) + dialog.setPositiveButton(stringRes.ok) { _, _ -> + try { + startActivity(Intent(Intent.ACTION_VIEW, message.uri)) + } catch (e: ActivityNotFoundException) { + e.printStackTrace() + } + } + dialog.setNegativeButton(stringRes.cancel, null) + } + + is Message.Permissions -> { + val packageManager = requireContext().packageManager + val builder = StringBuilder() + val localCache = PackageItemResolver.LocalCache() + val title = if (message.group != null) { + val name = try { + val permissionGroupInfo = + packageManager.getPermissionGroupInfo(message.group, 0) + PackageItemResolver.loadLabel( + requireContext(), + localCache, + permissionGroupInfo + )?.nullIfEmpty()?.let { if (it == message.group) null else it } + } catch (e: Exception) { + null + } + name ?: getString(stringRes.unknown) + } else { + getString(stringRes.other) + } + for (permission in message.permissions) { + kotlin.runCatching { + val permissionInfo = packageManager.getPermissionInfo(permission, 0) + PackageItemResolver.loadDescription( + requireContext(), + localCache, + permissionInfo + )?.nullIfEmpty()?.let { if (it == permission) null else it } + ?: error("Invalid Permission Description") + }.onSuccess { + builder.append(it).append("\n\n") + } + } + if (builder.isNotEmpty()) { + builder.delete(builder.length - 2, builder.length) + } else { + builder.append(getString(stringRes.no_description_available_DESC)) + } + dialog.setTitle(title) + dialog.setMessage(builder) + dialog.setPositiveButton(stringRes.ok, null) + } + + is Message.ReleaseIncompatible -> { + val builder = StringBuilder() + val minSdkVersion = + if (Release.Incompatibility.MinSdk in message.incompatibilities) { + message.minSdkVersion + } else { + null + } + val maxSdkVersion = + if (Release.Incompatibility.MaxSdk in message.incompatibilities) { + message.maxSdkVersion + } else { + null + } + if (minSdkVersion != null || maxSdkVersion != null) { + val versionMessage = minSdkVersion?.let { + getString( + stringRes.incompatible_api_min_DESC_FORMAT, + it + ) + } + ?: maxSdkVersion?.let { + getString( + stringRes.incompatible_api_max_DESC_FORMAT, + it + ) + } + builder.append( + getString( + stringRes.incompatible_api_DESC_FORMAT, + Android.name, + SdkCheck.sdk, + versionMessage.orEmpty() + ) + ).append("\n\n") + } + if (Release.Incompatibility.Platform in message.incompatibilities) { + builder.append( + getString( + stringRes.incompatible_platforms_DESC_FORMAT, + Android.primaryPlatform ?: getString(stringRes.unknown), + message.platforms.joinToString(separator = ", ") + ) + ).append("\n\n") + } + val features = + message.incompatibilities.mapNotNull { it as? Release.Incompatibility.Feature } + if (features.isNotEmpty()) { + builder.append(getString(stringRes.incompatible_features_DESC)) + for (feature in features) { + builder.append("\n\u2022 ").append(feature.feature) + } + builder.append("\n\n") + } + if (builder.isNotEmpty()) { + builder.delete(builder.length - 2, builder.length) + } + dialog.setTitle(stringRes.incompatible_version) + dialog.setMessage(builder) + dialog.setPositiveButton(stringRes.ok, null) + } + + is Message.ReleaseOlder -> { + dialog.setTitle(stringRes.incompatible_version) + dialog.setMessage(stringRes.incompatible_older_DESC) + dialog.setPositiveButton(stringRes.ok, null) + } + + is Message.ReleaseSignatureMismatch -> { + dialog.setTitle(stringRes.incompatible_version) + dialog.setMessage(stringRes.incompatible_signature_DESC) + dialog.setPositiveButton(stringRes.ok, null) + } + }::class + return dialog.create() + } +} + +@Parcelize +sealed interface Message : Parcelable { + @Parcelize + data object DeleteRepositoryConfirm : Message + + @Parcelize + data object CantEditSyncing : Message + + @Parcelize + class Link(val uri: Uri) : Message + + @Parcelize + class Permissions(val group: String?, val permissions: List) : Message + + @Parcelize + @TypeParceler + class ReleaseIncompatible( + val incompatibilities: List, + val platforms: List, + val minSdkVersion: Int, + val maxSdkVersion: Int + ) : Message + + @Parcelize + data object ReleaseOlder : Message + + @Parcelize + data object ReleaseSignatureMismatch : Message +} + +class ReleaseIncompatibilityParceler : Parceler { + + private companion object { + // Incompatibility indices in `Parcel` + const val MIN_SDK_INDEX = 0 + const val MAX_SDK_INDEX = 1 + const val PLATFORM_INDEX = 2 + const val FEATURE_INDEX = 3 + } + + override fun create(parcel: Parcel): Release.Incompatibility { + return when (parcel.readInt()) { + MIN_SDK_INDEX -> Release.Incompatibility.MinSdk + MAX_SDK_INDEX -> Release.Incompatibility.MaxSdk + PLATFORM_INDEX -> Release.Incompatibility.Platform + FEATURE_INDEX -> Release.Incompatibility.Feature(requireNotNull(parcel.readString())) + else -> error("Invalid Index for Incompatibility") + } + } + + override fun Release.Incompatibility.write(parcel: Parcel, flags: Int) { + when (this) { + is Release.Incompatibility.MinSdk -> { + parcel.writeInt(MIN_SDK_INDEX) + } + + is Release.Incompatibility.MaxSdk -> { + parcel.writeInt(MAX_SDK_INDEX) + } + + is Release.Incompatibility.Platform -> { + parcel.writeInt(PLATFORM_INDEX) + } + + is Release.Incompatibility.Feature -> { + parcel.writeInt(FEATURE_INDEX) + parcel.writeString(feature) + } + } + } +} diff --git a/app/src/main/kotlin/com/leos/droidify/ui/ScreenFragment.kt b/app/src/main/kotlin/com/leos/droidify/ui/ScreenFragment.kt new file mode 100644 index 0000000..1d3a0f6 --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/ui/ScreenFragment.kt @@ -0,0 +1,33 @@ +package com.leos.droidify.ui + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import com.google.android.material.appbar.MaterialToolbar +import com.leos.droidify.databinding.FragmentBinding + +open class ScreenFragment : Fragment() { + private var _fragmentBinding: FragmentBinding? = null + val fragmentBinding get() = _fragmentBinding!! + val toolbar: MaterialToolbar get() = fragmentBinding.toolbar + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + _fragmentBinding = FragmentBinding.inflate(layoutInflater) + } + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View = fragmentBinding.root + + open fun onBackPressed(): Boolean = false + + override fun onDestroyView() { + super.onDestroyView() + _fragmentBinding = null + } +} diff --git a/app/src/main/kotlin/com/leos/droidify/ui/appDetail/AppDetailAdapter.kt b/app/src/main/kotlin/com/leos/droidify/ui/appDetail/AppDetailAdapter.kt new file mode 100644 index 0000000..a0f071a --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/ui/appDetail/AppDetailAdapter.kt @@ -0,0 +1,1808 @@ +package com.leos.droidify.ui.appDetail + +import android.annotation.SuppressLint +import android.content.* +import android.content.pm.PermissionGroupInfo +import android.content.pm.PermissionInfo +import android.content.res.Resources +import android.graphics.* +import android.net.Uri +import android.os.Parcelable +import android.text.SpannableStringBuilder +import android.text.format.DateFormat +import android.text.method.LinkMovementMethod +import android.text.style.* +import android.text.util.Linkify +import android.view.* +import android.widget.* +import androidx.annotation.DrawableRes +import androidx.annotation.StringRes +import androidx.core.net.toUri +import androidx.core.text.HtmlCompat +import androidx.core.text.bold +import androidx.core.text.buildSpannedString +import androidx.core.text.util.LinkifyCompat +import androidx.core.view.isVisible +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import coil.load +import com.google.android.material.button.MaterialButton +import com.google.android.material.card.MaterialCardView +import com.google.android.material.imageview.ShapeableImageView +import com.google.android.material.materialswitch.MaterialSwitch +import com.google.android.material.progressindicator.LinearProgressIndicator +import com.google.android.material.snackbar.Snackbar +import com.leos.core.common.DataSize +import com.leos.core.common.extension.* +import com.leos.core.common.formatSize +import com.leos.core.common.nullIfEmpty +import com.leos.core.domain.* +import com.leos.droidify.R +import com.leos.droidify.content.ProductPreferences +import com.leos.droidify.utility.PackageItemResolver +import com.leos.droidify.utility.extension.ImageUtils.icon +import com.leos.droidify.utility.extension.android.Android +import com.leos.droidify.utility.extension.resources.TypefaceExtra +import com.leos.droidify.utility.extension.resources.sizeScaled +import com.leos.droidify.widget.StableRecyclerAdapter +import kotlinx.datetime.Instant +import kotlinx.datetime.TimeZone +import kotlinx.datetime.toJavaLocalDateTime +import kotlinx.datetime.toLocalDateTime +import kotlinx.parcelize.Parcelize +import java.lang.ref.WeakReference +import java.time.format.DateTimeFormatter +import java.time.format.FormatStyle +import java.util.Locale +import kotlin.math.PI +import kotlin.math.roundToInt +import kotlin.math.sin +import com.google.android.material.R as MaterialR +import com.leos.core.common.R.drawable as drawableRes +import com.leos.core.common.R.string as stringRes + +class AppDetailAdapter(private val callbacks: Callbacks) : + StableRecyclerAdapter() { + + companion object { + private const val MAX_RELEASE_ITEMS = 5 + } + + interface Callbacks { + fun onActionClick(action: Action) + fun onFavouriteClicked() + fun onPreferenceChanged(preference: ProductPreference) + fun onPermissionsClick(group: String?, permissions: List) + fun onScreenshotClick(screenshot: Product.Screenshot, parentView: ImageView) + fun onReleaseClick(release: Release) + fun onRequestAddRepository(address: String) + fun onUriClick(uri: Uri, shouldConfirm: Boolean): Boolean + } + + enum class Action(@StringRes val titleResId: Int, @DrawableRes val iconResId: Int) { + INSTALL(stringRes.install, drawableRes.ic_download), + UPDATE(stringRes.update, drawableRes.ic_download), + LAUNCH(stringRes.launch, drawableRes.ic_launch), + DETAILS(stringRes.details, drawableRes.ic_tune), + UNINSTALL(stringRes.uninstall, drawableRes.ic_delete), + CANCEL(stringRes.cancel, drawableRes.ic_cancel), + SHARE(stringRes.share, drawableRes.ic_share) + } + + sealed interface Status { + data object Idle : Status + data object Pending : Status + data object Connecting : Status + data class Downloading(val read: DataSize, val total: DataSize?) : Status + data object PendingInstall : Status + data object Installing : Status + } + + enum class ViewType { + APP_INFO, + DOWNLOAD_STATUS, + INSTALL_BUTTON, + SCREENSHOT, + SWITCH, + SECTION, + EXPAND, + TEXT, + LINK, + PERMISSIONS, + RELEASE, + EMPTY + } + + private enum class SwitchType(val titleResId: Int) { + IGNORE_ALL_UPDATES(stringRes.ignore_all_updates), + IGNORE_THIS_UPDATE(stringRes.ignore_this_update) + } + + private enum class SectionType( + val titleResId: Int, + val colorAttrResId: Int = MaterialR.attr.colorPrimary + ) { + ANTI_FEATURES(stringRes.anti_features, MaterialR.attr.colorError), + CHANGES(stringRes.changes), + LINKS(stringRes.links), + DONATE(stringRes.donate), + PERMISSIONS(stringRes.permissions), + VERSIONS(stringRes.versions) + } + + internal enum class ExpandType { + NOTHING, DESCRIPTION, CHANGES, + LINKS, DONATES, PERMISSIONS, VERSIONS + } + + private enum class TextType { DESCRIPTION, ANTI_FEATURES, CHANGES } + + private enum class LinkType( + val iconResId: Int, + val titleResId: Int, + val format: ((Context, String) -> String)? = null + ) { + SOURCE(drawableRes.ic_code, stringRes.source_code), + AUTHOR(drawableRes.ic_person, stringRes.author_website), + EMAIL(drawableRes.ic_email, stringRes.author_email), + LICENSE( + drawableRes.ic_copyright, + stringRes.license, + format = { context, text -> context.getString(stringRes.license_FORMAT, text) } + ), + TRACKER(drawableRes.ic_bug_report, stringRes.bug_tracker), + CHANGELOG(drawableRes.ic_history, stringRes.changelog), + WEB(drawableRes.ic_public, stringRes.project_website) + } + + private sealed class Item { + abstract val descriptor: String + abstract val viewType: ViewType + + class AppInfoItem( + val repository: Repository, + val product: Product + ) : Item() { + override val descriptor: String + get() = "app_info.${product.name}" + + override val viewType: ViewType + get() = ViewType.APP_INFO + } + + data object DownloadStatusItem : Item() { + override val descriptor: String + get() = "download_status" + override val viewType: ViewType + get() = ViewType.DOWNLOAD_STATUS + } + + data object InstallButtonItem : Item() { + override val descriptor: String + get() = "install_button" + override val viewType: ViewType + get() = ViewType.INSTALL_BUTTON + } + + class ScreenshotItem( + val screenshots: List, + val packageName: String, + val repository: Repository + ) : Item() { + override val descriptor: String + get() = "screenshot.${screenshots.size}" + override val viewType: ViewType + get() = ViewType.SCREENSHOT + } + + class SwitchItem( + val switchType: SwitchType, + val packageName: String, + val versionCode: Long + ) : Item() { + override val descriptor: String + get() = "switch.${switchType.name}" + + override val viewType: ViewType + get() = ViewType.SWITCH + } + + class SectionItem( + val sectionType: SectionType, + val expandType: ExpandType, + val items: List, + val collapseCount: Int + ) : Item() { + constructor(sectionType: SectionType) : this( + sectionType, + ExpandType.NOTHING, + emptyList(), + 0 + ) + + override val descriptor: String + get() = "section.${sectionType.name}" + + override val viewType: ViewType + get() = ViewType.SECTION + } + + class ExpandItem( + val expandType: ExpandType, + val replace: Boolean, + val items: List + ) : Item() { + override val descriptor: String + get() = "expand.${expandType.name}" + + override val viewType: ViewType + get() = ViewType.EXPAND + } + + class TextItem(val textType: TextType, val text: CharSequence) : Item() { + override val descriptor: String + get() = "text.${textType.name}" + + override val viewType: ViewType + get() = ViewType.TEXT + } + + sealed class LinkItem : Item() { + override val viewType: ViewType + get() = ViewType.LINK + + abstract val iconResId: Int + abstract fun getTitle(context: Context): String + abstract val uri: Uri? + + val displayLink: String? + get() = uri?.schemeSpecificPart?.nullIfEmpty() + ?.let { if (it.startsWith("//")) null else it } ?: uri?.toString() + + class Typed( + val linkType: LinkType, + val text: String, + override val uri: Uri? + ) : LinkItem() { + override val descriptor: String + get() = "link.typed.${linkType.name}" + + override val iconResId: Int + get() = linkType.iconResId + + override fun getTitle(context: Context): String { + return text.nullIfEmpty()?.let { linkType.format?.invoke(context, it) ?: it } + ?: context.getString(linkType.titleResId) + } + } + + class Donate(val donate: Product.Donate) : LinkItem() { + override val descriptor: String + get() = "link.donate.$donate" + + override val iconResId: Int + get() = when (donate) { + is Product.Donate.Regular -> drawableRes.ic_donate + is Product.Donate.Bitcoin -> drawableRes.ic_donate_bitcoin + is Product.Donate.Litecoin -> drawableRes.ic_donate_litecoin + is Product.Donate.Flattr -> drawableRes.ic_donate_flattr + is Product.Donate.Liberapay -> drawableRes.ic_donate_liberapay + is Product.Donate.OpenCollective -> drawableRes.ic_donate_opencollective + } + + override fun getTitle(context: Context): String = when (donate) { + is Product.Donate.Regular -> context.getString(stringRes.website) + is Product.Donate.Bitcoin -> "Bitcoin" + is Product.Donate.Litecoin -> "Litecoin" + is Product.Donate.Flattr -> "Flattr" + is Product.Donate.Liberapay -> "Liberapay" + is Product.Donate.OpenCollective -> "Open Collective" + } + + override val uri: Uri? = when (donate) { + is Product.Donate.Regular -> Uri.parse(donate.url) + is Product.Donate.Bitcoin -> Uri.parse("bitcoin:${donate.address}") + is Product.Donate.Litecoin -> Uri.parse("litecoin:${donate.address}") + is Product.Donate.Flattr -> Uri.parse( + "https://flattr.com/thing/${donate.id}" + ) + + is Product.Donate.Liberapay -> Uri.parse( + "https://liberapay.com/~${donate.id}" + ) + + is Product.Donate.OpenCollective -> Uri.parse( + "https://opencollective.com/${donate.id}" + ) + } + } + } + + class PermissionsItem( + val group: PermissionGroupInfo?, + val permissions: List + ) : Item() { + override val descriptor: String + get() = "permissions.${group?.name}" + + ".${permissions.joinToString(separator = ".") { it.name }}" + + override val viewType: ViewType + get() = ViewType.PERMISSIONS + } + + class ReleaseItem( + val repository: Repository, + val release: Release, + val selectedRepository: Boolean, + val showSignature: Boolean + ) : Item() { + override val descriptor: String + get() = "release.${repository.id}.${release.identifier}" + + override val viewType: ViewType + get() = ViewType.RELEASE + } + + class EmptyItem(val packageName: String, val repoAddress: String?) : Item() { + override val descriptor: String + get() = "empty" + + override val viewType: ViewType + get() = ViewType.EMPTY + } + } + + private class Measurement { + private var density = 0f + private var scaledDensity = 0f + private lateinit var metric: T + + fun measure(view: View) { + View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED) + .let { view.measure(it, it) } + } + + fun invalidate(resources: Resources, callback: () -> T): T { + val (density, scaledDensity) = resources.displayMetrics.let { + Pair( + it.density, + it.scaledDensity + ) + } + if (this.density != density || this.scaledDensity != scaledDensity) { + this.density = density + this.scaledDensity = scaledDensity + metric = callback() + } + return metric + } + } + + @Volatile + private var isFavourite: Boolean = false + + private class AppInfoViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val icon = itemView.findViewById(R.id.app_icon)!! + val name = itemView.findViewById(R.id.app_name)!! + val authorName = itemView.findViewById(R.id.author_name)!! + val packageName = itemView.findViewById(R.id.package_name)!! + val textSwitcher = itemView.findViewById(R.id.author_package_name)!! + + init { + textSwitcher.setInAnimation(itemView.context!!, R.anim.slide_right_fade_in) + textSwitcher.setOutAnimation(itemView.context!!, R.anim.slide_right_fade_out) + } + + val version = itemView.findViewById(R.id.version)!! + val size = itemView.findViewById(R.id.size)!! + val dev = itemView.findViewById(R.id.dev_block)!! + + val favouriteButton = itemView.findViewById(R.id.favourite)!! + } + + private class DownloadStatusViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val statusText = itemView.findViewById(R.id.status)!! + val progress = itemView.findViewById(R.id.progress)!! + } + + private class InstallButtonViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val button = itemView.findViewById(R.id.action)!! + + val actionTintNormal = button.context.getColorFromAttr(MaterialR.attr.colorPrimary) + val actionTintOnNormal = button.context.getColorFromAttr(MaterialR.attr.colorOnPrimary) + val actionTintCancel = button.context.getColorFromAttr(MaterialR.attr.colorError) + val actionTintOnCancel = button.context.getColorFromAttr(MaterialR.attr.colorOnError) + val actionTintDisabled = button.context.getColorFromAttr(MaterialR.attr.colorOutline) + val actionTintOnDisabled = button.context.getColorFromAttr(android.R.attr.colorBackground) + + init { + button.height = itemView.resources.sizeScaled(48) + } + } + + private class ScreenShotViewHolder(context: Context) : + RecyclerView.ViewHolder(RecyclerView(context)) { + + val screenshotsRecycler: RecyclerView + get() = itemView as RecyclerView + } + + private class SwitchViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val switch = itemView.findViewById(R.id.update_state_switch)!! + + val statefulViews: Sequence + get() = sequenceOf(itemView, switch) + } + + private class SectionViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val title = itemView.findViewById(R.id.title)!! + val icon = itemView.findViewById(R.id.icon)!! + } + + private class ExpandViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val button = itemView.findViewById(R.id.expand_view_button)!! + } + + private class TextViewHolder(context: Context) : + RecyclerView.ViewHolder(TextView(context)) { + val text: TextView + get() = itemView as TextView + + init { + with(itemView as TextView) { + setTextIsSelectable(true) + setTextSizeScaled(15) + isFocusable = false + 16.dp.let { itemView.setPadding(it, it, it, it) } + movementMethod = LinkMovementMethod() + layoutParams = RecyclerView.LayoutParams( + RecyclerView.LayoutParams.MATCH_PARENT, + RecyclerView.LayoutParams.WRAP_CONTENT + ) + } + } + } + + @SuppressLint("ClickableViewAccessibility") + private open class OverlappingViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + init { + // Block touch events if touched above negative margin + itemView.setOnTouchListener { _, event -> + event.action == MotionEvent.ACTION_DOWN && run { + val top = (itemView.layoutParams as ViewGroup.MarginLayoutParams).topMargin + top < 0 && event.y < -top + } + } + } + } + + private class LinkViewHolder(itemView: View) : OverlappingViewHolder(itemView) { + companion object { + private val measurement = Measurement() + } + + val icon = itemView.findViewById(R.id.icon)!! + val text = itemView.findViewById(R.id.text)!! + val link = itemView.findViewById(R.id.link)!! + + init { + text.typeface = TypefaceExtra.medium + val margin = measurement.invalidate(itemView.resources) { + @SuppressLint("SetTextI18n") + text.text = "measure" + link.visibility = View.GONE + measurement.measure(itemView) + ((itemView.measuredHeight - icon.measuredHeight) / 2f).roundToInt() + } + (icon.layoutParams as ViewGroup.MarginLayoutParams).apply { + topMargin += margin + bottomMargin += margin + } + } + } + + private class PermissionsViewHolder(itemView: View) : OverlappingViewHolder(itemView) { + companion object { + private val measurement = Measurement() + } + + val icon = itemView.findViewById(R.id.icon)!! + val text = itemView.findViewById(R.id.text)!! + + init { + val margin = measurement.invalidate(itemView.resources) { + @SuppressLint("SetTextI18n") + text.text = "measure" + measurement.measure(itemView) + ((itemView.measuredHeight - icon.measuredHeight) / 2f).roundToInt() + } + (icon.layoutParams as ViewGroup.MarginLayoutParams).apply { + topMargin += margin + bottomMargin += margin + } + } + } + + private class ReleaseViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val dateFormat = DateFormat.getDateFormat(itemView.context)!! + + val version = itemView.findViewById(R.id.version)!! + val status = itemView.findViewById(R.id.installation_status)!! + val source = itemView.findViewById(R.id.source)!! + val added = itemView.findViewById(R.id.added)!! + val size = itemView.findViewById(R.id.size)!! + val signature = itemView.findViewById(R.id.signature)!! + val compatibility = itemView.findViewById(R.id.compatibility)!! + + val statefulViews: Sequence + get() = sequenceOf( + itemView, + version, + status, + source, + added, + size, + signature, + compatibility + ) + } + + private class EmptyViewHolder(context: Context) : + RecyclerView.ViewHolder(LinearLayout(context)) { + val packageName = TextView(context) + val repoTitle = TextView(context) + val repoAddress = TextView(context) + val copyRepoAddress = MaterialButton(context) + + init { + with(itemView as LinearLayout) { + layoutParams = RecyclerView.LayoutParams( + RecyclerView.LayoutParams.MATCH_PARENT, + RecyclerView.LayoutParams.MATCH_PARENT + ) + orientation = LinearLayout.VERTICAL + gravity = Gravity.CENTER + setPadding(20.dp, 20.dp, 20.dp, 20.dp) + val imageView = ImageView(context) + val bitmap = Bitmap.createBitmap( + 64.dp.px.roundToInt(), + 32.dp.px.roundToInt(), + Bitmap.Config.ARGB_8888 + ) + val canvas = Canvas(bitmap) + val title = TextView(context) + with(title) { + gravity = Gravity.CENTER + typeface = TypefaceExtra.medium + setTextColor(context.getColorFromAttr(MaterialR.attr.colorPrimary)) + setTextSizeScaled(20) + setText(stringRes.application_not_found) + setPadding(0, 12.dp, 0, 12.dp) + } + with(packageName) { + gravity = Gravity.CENTER + setTextColor(context.getColorFromAttr(MaterialR.attr.colorOutline)) + typeface = Typeface.DEFAULT_BOLD + setTextSizeScaled(16) + background = context.corneredBackground + setPadding(0, 12.dp, 0, 12.dp) + } + val waveHeight = 2.dp.px + val waveWidth = 12.dp.px + with(canvas) { + val linePaint = Paint().apply { + color = context.getColorFromAttr(MaterialR.attr.colorOutline).defaultColor + strokeWidth = 8f + strokeCap = Paint.Cap.ROUND + strokeJoin = Paint.Join.ROUND + } + for (x in 12..(width - 12)) { + val yValue = + ( + ( + sin(x * (2f * PI / waveWidth)) * + (waveHeight / (2)) + + (waveHeight / 2) + ).toFloat() + + (0 - (waveHeight / 2)) + ) + height / 2 + drawPoint(x.toFloat(), yValue, linePaint) + } + } + imageView.load(bitmap) + with(repoTitle) { + gravity = Gravity.CENTER + typeface = TypefaceExtra.medium + setTextColor(context.getColorFromAttr(MaterialR.attr.colorPrimary)) + setTextSizeScaled(20) + setPadding(0, 0, 0, 12.dp) + } + with(repoAddress) { + gravity = Gravity.CENTER + setTextColor(context.getColorFromAttr(MaterialR.attr.colorOutline)) + typeface = Typeface.DEFAULT_BOLD + setTextSizeScaled(16) + background = context.corneredBackground + setPadding(0, 12.dp, 0, 12.dp) + } + with(copyRepoAddress) { + icon = context.open + setText(stringRes.add_repository) + setBackgroundColor(context.getColor(android.R.color.transparent)) + setTextColor(context.getColorFromAttr(MaterialR.attr.colorPrimary)) + iconTint = context.getColorFromAttr(MaterialR.attr.colorPrimary) + } + addView( + title, + LinearLayout.LayoutParams.MATCH_PARENT, + LinearLayout.LayoutParams.WRAP_CONTENT + ) + addView( + packageName, + LinearLayout.LayoutParams.MATCH_PARENT, + LinearLayout.LayoutParams.WRAP_CONTENT + ) + addView( + imageView, + LinearLayout.LayoutParams.MATCH_PARENT, + LinearLayout.LayoutParams.WRAP_CONTENT + ) + addView( + repoTitle, + LinearLayout.LayoutParams.MATCH_PARENT, + LinearLayout.LayoutParams.WRAP_CONTENT + ) + addView( + repoAddress, + LinearLayout.LayoutParams.MATCH_PARENT, + LinearLayout.LayoutParams.WRAP_CONTENT + ) + addView( + copyRepoAddress, + LinearLayout.LayoutParams.WRAP_CONTENT, + LinearLayout.LayoutParams.WRAP_CONTENT + ) + } + } + } + + private val items = mutableListOf() + private val expanded = mutableSetOf() + private var product: Product? = null + private var installedItem: InstalledItem? = null + + fun setProducts( + context: Context, + packageName: String, + suggestedRepo: String? = null, + products: List>, + installedItem: InstalledItem?, + isFavourite: Boolean, + allowIncompatibleVersion: Boolean + ) { + items.clear() + val productRepository = products.findSuggested(installedItem) ?: run { + items += Item.EmptyItem(packageName, suggestedRepo) + notifyDataSetChanged() + return + } + + this.product = productRepository.first + this.installedItem = installedItem + this.isFavourite = isFavourite + + items += Item.AppInfoItem( + productRepository.second, + productRepository.first + ) + + items += Item.DownloadStatusItem + items += Item.InstallButtonItem + + if (productRepository.first.screenshots.isNotEmpty()) { + val screenShotItem = mutableListOf() + screenShotItem += Item.ScreenshotItem( + productRepository.first.screenshots, + packageName, + productRepository.second + ) + items += screenShotItem + } + + if (installedItem != null) { + items.add( + Item.SwitchItem( + SwitchType.IGNORE_ALL_UPDATES, + packageName, + productRepository.first.versionCode + ) + ) + if (productRepository.first.canUpdate(installedItem)) { + items.add( + Item.SwitchItem( + SwitchType.IGNORE_THIS_UPDATE, + packageName, + productRepository.first.versionCode + ) + ) + } + } + + val textViewHolder = TextViewHolder(context) + val textViewWidthSpec = context.resources.displayMetrics.widthPixels + .let { View.MeasureSpec.makeMeasureSpec(it, View.MeasureSpec.EXACTLY) } + val textViewHeightSpec = + View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED) + + fun CharSequence.lineCropped(maxLines: Int, cropLines: Int): CharSequence? { + assert(cropLines <= maxLines) + textViewHolder.text.text = this + textViewHolder.text.measure(textViewWidthSpec, textViewHeightSpec) + textViewHolder.text.layout( + 0, + 0, + textViewHolder.text.measuredWidth, + textViewHolder.text.measuredHeight + ) + val layout = textViewHolder.text.layout + val cropLineOffset = + if (layout.lineCount <= maxLines) -1 else layout.getLineEnd(cropLines - 1) + val paragraphEndIndex = if (cropLineOffset < 0) { + -1 + } else { + indexOf("\n\n", cropLineOffset).let { if (it >= 0) it else length } + } + val paragraphEndLine = if (paragraphEndIndex < 0) { + -1 + } else { + layout.getLineForOffset(paragraphEndIndex).apply { assert(this >= 0) } + } + val end = when { + cropLineOffset < 0 -> -1 + paragraphEndLine >= 0 && paragraphEndLine - (cropLines - 1) <= 3 -> + if (paragraphEndIndex < length) paragraphEndIndex else -1 + + else -> cropLineOffset + } + val length = if (end < 0) { + -1 + } else { + asSequence().take(end) + .indexOfLast { it != '\n' }.let { if (it >= 0) it + 1 else end } + } + return if (length >= 0) subSequence(0, length) else null + } + + val description = formatHtml(productRepository.first.description).apply { + if (productRepository.first.let { it.summary.isNotEmpty() && it.name != it.summary }) { + if (isNotEmpty()) { + insert(0, "\n\n") + } + insert(0, productRepository.first.summary) + if (isNotEmpty()) { + setSpan( + TypefaceSpan("sans-serif-medium"), + 0, + productRepository.first.summary.length, + SpannableStringBuilder.SPAN_EXCLUSIVE_EXCLUSIVE + ) + } + } + } + if (description.isNotEmpty()) { + val cropped = if (ExpandType.DESCRIPTION !in expanded) { + description.lineCropped( + 12, + 10 + ) + } else { + null + } + val item = Item.TextItem(TextType.DESCRIPTION, description) + if (cropped != null) { + val croppedItem = Item.TextItem(TextType.DESCRIPTION, cropped) + items += listOf( + croppedItem, + Item.ExpandItem(ExpandType.DESCRIPTION, true, listOf(item, croppedItem)) + ) + } else { + items += item + } + } + + val antiFeatures = productRepository.first.antiFeatures.map { + when (it) { + "Ads" -> context.getString(stringRes.has_advertising) + "ApplicationDebuggable" -> context.getString(stringRes.compiled_for_debugging) + "DisabledAlgorithm" -> context.getString(stringRes.signed_using_unsafe_algorithm) + "KnownVuln" -> context.getString(stringRes.has_security_vulnerabilities) + "NoSourceSince" -> context.getString(stringRes.source_code_no_longer_available) + "NonFreeAdd" -> context.getString(stringRes.promotes_non_free_software) + "NonFreeAssets" -> context.getString(stringRes.contains_non_free_media) + "NonFreeDep" -> context.getString(stringRes.has_non_free_dependencies) + "NonFreeNet" -> context.getString(stringRes.promotes_non_free_network_services) + "NSFW" -> context.getString(stringRes.contains_nsfw) + "Tracking" -> context.getString(stringRes.tracks_or_reports_your_activity) + "UpstreamNonFree" -> context.getString(stringRes.upstream_source_code_is_not_free) + // special tag(https://floss.social/@IzzyOnDroid/110815951568369581) + // apps include non-free libraries + "NonFreeComp" -> context.getString(stringRes.has_non_free_components) + else -> context.getString(stringRes.unknown_FORMAT, it) + } + }.joinToString(separator = "\n") { "\u2022 $it" } + if (antiFeatures.isNotEmpty()) { + items += Item.SectionItem(SectionType.ANTI_FEATURES) + items += Item.TextItem(TextType.ANTI_FEATURES, antiFeatures) + } + + val changes = formatHtml(productRepository.first.whatsNew) + if (changes.isNotEmpty()) { + items += Item.SectionItem(SectionType.CHANGES) + val cropped = + if (ExpandType.CHANGES !in expanded) { + changes.lineCropped(12, 10) + } else { + null + } + val item = Item.TextItem(TextType.CHANGES, changes) + if (cropped != null) { + val croppedItem = Item.TextItem(TextType.CHANGES, cropped) + items += listOf( + croppedItem, + Item.ExpandItem(ExpandType.CHANGES, true, listOf(item, croppedItem)) + ) + } else { + items += item + } + } + + val linkItems = mutableListOf() + with(productRepository.first) { + source.let { link -> + if (link.isNotEmpty()) { + linkItems += Item.LinkItem.Typed( + LinkType.SOURCE, + "", + link.toUri() + ) + } + } + + if (author.name.isNotEmpty() || author.web.isNotEmpty()) { + linkItems += Item.LinkItem.Typed( + LinkType.AUTHOR, + author.name, + author.web.nullIfEmpty()?.let(Uri::parse) + ) + } + author.email.nullIfEmpty()?.let { + linkItems += Item.LinkItem.Typed(LinkType.EMAIL, "", Uri.parse("mailto:$it")) + } + linkItems += licenses.asSequence().map { + Item.LinkItem.Typed( + LinkType.LICENSE, + it, + Uri.parse("https://spdx.org/licenses/$it.html") + ) + } + tracker.nullIfEmpty() + ?.let { linkItems += Item.LinkItem.Typed(LinkType.TRACKER, "", Uri.parse(it)) } + changelog.nullIfEmpty()?.let { + linkItems += Item.LinkItem.Typed( + LinkType.CHANGELOG, + "", + Uri.parse(it) + ) + } + web.nullIfEmpty() + ?.let { linkItems += Item.LinkItem.Typed(LinkType.WEB, "", Uri.parse(it)) } + } + if (linkItems.isNotEmpty()) { + if (ExpandType.LINKS in expanded) { + items += Item.SectionItem( + SectionType.LINKS, + ExpandType.LINKS, + emptyList(), + linkItems.size + ) + items += linkItems + } else { + items += Item.SectionItem(SectionType.LINKS, ExpandType.LINKS, linkItems, 0) + } + } + + val donateItems = productRepository.first.donates.map(Item.LinkItem::Donate) + if (donateItems.isNotEmpty()) { + if (ExpandType.DONATES in expanded) { + items += Item.SectionItem( + SectionType.DONATE, + ExpandType.DONATES, + emptyList(), + donateItems.size + ) + items += donateItems + } else { + items += Item.SectionItem( + SectionType.DONATE, + ExpandType.DONATES, + donateItems, + 0 + ) + } + } + + val release = productRepository.first.displayRelease + if (release != null) { + val packageManager = context.packageManager + val permissions = release.permissions + .asSequence().mapNotNull { + try { + packageManager.getPermissionInfo(it, 0) + } catch (e: Exception) { + null + } + } + .groupBy(PackageItemResolver::getPermissionGroup) + .asSequence().map { (group, permissionInfo) -> + val permissionGroupInfo = try { + group?.let { packageManager.getPermissionGroupInfo(it, 0) } + } catch (e: Exception) { + null + } + Pair(permissionGroupInfo, permissionInfo) + } + .groupBy({ it.first }, { it.second }) + if (permissions.isNotEmpty()) { + val permissionsItems = mutableListOf() + permissionsItems += permissions.asSequence().filter { it.key != null } + .map { Item.PermissionsItem(it.key, it.value.flatten()) } + permissions.asSequence().find { it.key == null } + ?.let { + permissionsItems += Item.PermissionsItem(null, it.value.flatten()) + } + if (ExpandType.PERMISSIONS in expanded) { + items += Item.SectionItem( + SectionType.PERMISSIONS, + ExpandType.PERMISSIONS, + emptyList(), + permissionsItems.size + ) + items += permissionsItems + } else { + items += Item.SectionItem( + SectionType.PERMISSIONS, + ExpandType.PERMISSIONS, + permissionsItems, + 0 + ) + } + } + } + + val compatibleReleasePairs = products.asSequence() + .flatMap { (product, repository) -> + product.releases.asSequence() + .filter { allowIncompatibleVersion || it.incompatibilities.isEmpty() } + .map { Pair(it, repository) } + } + + val versionsWithMultiSignature = compatibleReleasePairs + .filterNot { release?.signature?.isEmpty() == true } + .map { (release, _) -> release.versionCode to release.signature } + .distinct() + .groupBy { it.first } + .filter { (_, entry) -> entry.size >= 2 } + .keys + + val releaseItems = compatibleReleasePairs + .map { (release, repository) -> + Item.ReleaseItem( + repository = repository, + release = release, + selectedRepository = repository.id == productRepository.second.id, + showSignature = release.versionCode in versionsWithMultiSignature + ) + } + .sortedByDescending { it.release.versionCode } + .toList() + if (releaseItems.isNotEmpty()) { + items += Item.SectionItem(SectionType.VERSIONS) + if (releaseItems.size > MAX_RELEASE_ITEMS && ExpandType.VERSIONS !in expanded) { + items += releaseItems.take(MAX_RELEASE_ITEMS) + items += Item.ExpandItem( + ExpandType.VERSIONS, + false, + releaseItems.takeLast(releaseItems.size - MAX_RELEASE_ITEMS) + ) + } else { + items += releaseItems + } + } + + this.product = productRepository.first + this.installedItem = installedItem + notifyDataSetChanged() + } + + var action: Action? = null + set(value) { + val index = items.indexOf(Item.InstallButtonItem) + val progressBarIndex = items.indexOf(Item.DownloadStatusItem) + if (index > 0 && progressBarIndex > 0) { + notifyItemChanged(index) + notifyItemChanged(progressBarIndex) + } + field = value + } + + var status: Status = Status.Idle + set(value) { + if (field != value) { + val index = items.indexOf(Item.DownloadStatusItem) + if (index > 0) notifyItemChanged(index) + } + field = value + } + + override val viewTypeClass: Class + get() = ViewType::class.java + + override fun getItemCount(): Int = items.size + override fun getItemDescriptor(position: Int): String = items[position].descriptor + override fun getItemEnumViewType(position: Int): ViewType = items[position].viewType + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: ViewType + ): RecyclerView.ViewHolder { + return when (viewType) { + ViewType.APP_INFO -> AppInfoViewHolder(parent.inflate(R.layout.app_detail_header)) + .apply { + favouriteButton.setOnClickListener { callbacks.onFavouriteClicked() } + } + + ViewType.DOWNLOAD_STATUS -> DownloadStatusViewHolder( + parent.inflate(R.layout.download_status) + ) + + ViewType.INSTALL_BUTTON -> InstallButtonViewHolder( + parent.inflate(R.layout.install_button) + ).apply { + button.setOnClickListener { action?.let(callbacks::onActionClick) } + } + + ViewType.SCREENSHOT -> ScreenShotViewHolder(parent.context) + ViewType.SWITCH -> SwitchViewHolder(parent.inflate(R.layout.switch_item)).apply { + itemView.setOnClickListener { + val switchItem = items[absoluteAdapterPosition] as Item.SwitchItem + val productPreference = when (switchItem.switchType) { + SwitchType.IGNORE_ALL_UPDATES -> { + ProductPreferences[switchItem.packageName].let { + it.copy( + ignoreUpdates = !it.ignoreUpdates + ) + } + } + + SwitchType.IGNORE_THIS_UPDATE -> { + ProductPreferences[switchItem.packageName].let { + it.copy( + ignoreVersionCode = + if (it.ignoreVersionCode == switchItem.versionCode) { + 0 + } else { + switchItem.versionCode + } + ) + } + } + } + ProductPreferences[switchItem.packageName] = productPreference + callbacks.onPreferenceChanged(productPreference) + } + } + + ViewType.SECTION -> SectionViewHolder(parent.inflate(R.layout.section_item)).apply { + itemView.setOnClickListener { + val position = absoluteAdapterPosition + val sectionItem = items[position] as Item.SectionItem + if (sectionItem.items.isNotEmpty()) { + expanded += sectionItem.expandType + items[position] = Item.SectionItem( + sectionItem.sectionType, + sectionItem.expandType, + emptyList(), + sectionItem.items.size + sectionItem.collapseCount + ) + notifyItemChanged(position) + items.addAll(position + 1, sectionItem.items) + notifyItemRangeInserted(position + 1, sectionItem.items.size) + } else if (sectionItem.collapseCount > 0) { + expanded -= sectionItem.expandType + items[position] = Item.SectionItem( + sectionItem.sectionType, + sectionItem.expandType, + items.subList(position + 1, position + 1 + sectionItem.collapseCount) + .toList(), + 0 + ) + notifyItemChanged(position) + repeat(sectionItem.collapseCount) { items.removeAt(position + 1) } + notifyItemRangeRemoved(position + 1, sectionItem.collapseCount) + } + } + } + + ViewType.EXPAND -> ExpandViewHolder(parent.inflate(R.layout.expand_view_button)) + .apply { + itemView.setOnClickListener { + val position = absoluteAdapterPosition + val expandItem = items[position] as Item.ExpandItem + if (expandItem.expandType !in expanded) { + expanded += expandItem.expandType + if (expandItem.replace) { + items[position - 1] = expandItem.items[0] + notifyItemRangeChanged(position - 1, 2) + } else { + items.addAll(position, expandItem.items) + if (position > 0) { + notifyItemRangeInserted(position, expandItem.items.size) + notifyItemChanged(position + expandItem.items.size) + } + } + } else { + expanded -= expandItem.expandType + if (expandItem.replace) { + items[position - 1] = expandItem.items[1] + notifyItemRangeChanged(position - 1, 2) + } else { + items.removeAll(expandItem.items) + if (position > 0) { + notifyItemRangeRemoved( + position - expandItem.items.size, + expandItem.items.size + ) + notifyItemChanged(position - expandItem.items.size) + } + } + } + } + } + + ViewType.TEXT -> TextViewHolder(parent.context) + ViewType.LINK -> LinkViewHolder(parent.inflate(R.layout.link_item)).apply { + itemView.setOnClickListener { + val linkItem = items[absoluteAdapterPosition] as Item.LinkItem + if (linkItem.uri?.let { callbacks.onUriClick(it, false) } != true) { + linkItem.displayLink?.let { copyLinkToClipboard(itemView, it) } + } + } + itemView.setOnLongClickListener { + val linkItem = items[absoluteAdapterPosition] as Item.LinkItem + linkItem.displayLink?.let { copyLinkToClipboard(itemView, it) } + true + } + } + + ViewType.PERMISSIONS -> PermissionsViewHolder(parent.inflate(R.layout.permissions_item)) + .apply { + itemView.setOnClickListener { + val permissionsItem = items[absoluteAdapterPosition] as Item.PermissionsItem + callbacks.onPermissionsClick( + permissionsItem.group?.name, + permissionsItem.permissions.map { it.name } + ) + } + } + + ViewType.RELEASE -> ReleaseViewHolder(parent.inflate(R.layout.release_item)).apply { + itemView.setOnClickListener { + val releaseItem = items[absoluteAdapterPosition] as Item.ReleaseItem + callbacks.onReleaseClick(releaseItem.release) + } + itemView.setOnLongClickListener { + val releaseItem = items[absoluteAdapterPosition] as Item.ReleaseItem + copyLinkToClipboard( + itemView, + releaseItem.release.getDownloadUrl(releaseItem.repository) + ) + true + } + } + + ViewType.EMPTY -> EmptyViewHolder(parent.context).apply { + copyRepoAddress.setOnClickListener { + repoAddress.text?.let { link -> + callbacks.onRequestAddRepository(link.toString()) + } + } + } + } + } + + override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { + onBindViewHolder(holder, position, emptyList()) + } + + override fun onBindViewHolder( + holder: RecyclerView.ViewHolder, + position: Int, + payloads: List + ) { + val context = holder.itemView.context + val item = items[position] + when (getItemEnumViewType(position)) { + ViewType.APP_INFO -> { + holder as AppInfoViewHolder + item as Item.AppInfoItem + var showAuthor = item.product.author.name.isNotEmpty() + val iconUrl = + item.product.item().icon(view = holder.icon, repository = item.repository) + holder.icon.load(iconUrl) { + authentication(item.repository.authentication) + } + val authorText = + if (showAuthor) { + buildSpannedString { + append("by ") + bold { append(item.product.author.name) } + } + } else { + buildSpannedString { bold { append(item.product.packageName) } } + } + holder.authorName.text = authorText + holder.packageName.text = authorText + if (item.product.author.name.isNotEmpty()) { + holder.icon.setOnClickListener { + showAuthor = !showAuthor + val newText = if (showAuthor) { + buildSpannedString { + append("by ") + bold { append(item.product.author.name) } + } + } else { + buildSpannedString { bold { append(item.product.packageName) } } + } + holder.textSwitcher.setText(newText) + } + } + holder.name.text = item.product.name + + holder.version.apply { + text = installedItem?.version ?: product?.version + if (product?.canUpdate(installedItem) == true) { + if (background == null) { + background = context.corneredBackground + setPadding(8.dp, 4.dp, 8.dp, 4.dp) + backgroundTintList = + context.getColorFromAttr(MaterialR.attr.colorSecondaryContainer) + setTextColor(context.getColorFromAttr(MaterialR.attr.colorSecondary)) + } + } else { + if (background != null) { + setPadding(0, 0, 0, 0) + setTextColor( + context.getColorFromAttr(android.R.attr.colorControlNormal) + ) + background = null + } + } + } + holder.size.text = product?.displayRelease?.size?.formatSize() + + holder.dev.setOnClickListener { + product?.source?.let { link -> + if (link.isNotEmpty()) { + context.startActivity(Intent(Intent.ACTION_VIEW, link.toUri())) + } + } + } + holder.dev.setOnLongClickListener { + product?.source?.let { link -> + if (link.isNotEmpty()) copyLinkToClipboard(holder.dev, link) + } + true + } + holder.favouriteButton.isChecked = isFavourite + } + + ViewType.DOWNLOAD_STATUS -> { + holder as DownloadStatusViewHolder + item as Item.DownloadStatusItem + val status = status + holder.itemView.isVisible = status != Status.Idle + holder.statusText.isVisible = status != Status.Idle + holder.progress.isVisible = status != Status.Idle + if (status != Status.Idle) { + when (status) { + is Status.Pending -> { + holder.statusText.setText(stringRes.waiting_to_start_download) + holder.progress.isIndeterminate = true + } + + is Status.Connecting -> { + holder.statusText.setText(stringRes.connecting) + holder.progress.isIndeterminate = true + } + + is Status.Downloading -> { + holder.statusText.text = context.getString( + stringRes.downloading_FORMAT, + if (status.total == null) { + status.read.toString() + } else { + "${status.read} / ${status.total}" + } + ) + holder.progress.isIndeterminate = status.total == null + if (status.total != null) { + holder.progress.progress = + ( + holder.progress.max.toFloat() * + status.read.value / + status.total.value + ).roundToInt() + } + } + + Status.Installing -> { + holder.statusText.setText(stringRes.installing) + holder.progress.isIndeterminate = true + } + + Status.PendingInstall -> { + holder.statusText.setText(stringRes.waiting_to_start_installation) + holder.progress.isIndeterminate = true + } + + Status.Idle -> {} + } + } + Unit + } + + ViewType.INSTALL_BUTTON -> { + holder as InstallButtonViewHolder + item as Item.InstallButtonItem + val action = action + holder.button.apply { + isEnabled = action != null + if (action != null) { + icon = context.getDrawableCompat(action.iconResId) + setText(action.titleResId) + setTextColor( + if (action == Action.CANCEL) { + holder.actionTintOnCancel + } else { + holder.actionTintOnNormal + } + ) + backgroundTintList = if (action == Action.CANCEL) { + holder.actionTintCancel + } else { + holder.actionTintNormal + } + iconTint = if (action == Action.CANCEL) { + holder.actionTintOnCancel + } else { + holder.actionTintOnNormal + } + } else { + icon = context.getDrawableCompat(drawableRes.ic_cancel) + setText(stringRes.cancel) + setTextColor(holder.actionTintOnDisabled) + backgroundTintList = holder.actionTintDisabled + iconTint = holder.actionTintOnDisabled + } + } + } + + ViewType.SCREENSHOT -> { + holder as ScreenShotViewHolder + item as Item.ScreenshotItem + holder.screenshotsRecycler.run { + isNestedScrollingEnabled = false + clipToPadding = false + setPadding(8.dp, 8.dp, 8.dp, 8.dp) + layoutManager = + LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false) + adapter = + ScreenshotsAdapter { screenshot, view -> + callbacks.onScreenshotClick(screenshot, view) + }.apply { + setScreenshots(item.repository, item.packageName, item.screenshots) + } + } + } + + ViewType.SWITCH -> { + holder as SwitchViewHolder + item as Item.SwitchItem + val (checked, enabled) = when (item.switchType) { + SwitchType.IGNORE_ALL_UPDATES -> { + val productPreference = ProductPreferences[item.packageName] + Pair(productPreference.ignoreUpdates, true) + } + + SwitchType.IGNORE_THIS_UPDATE -> { + val productPreference = ProductPreferences[item.packageName] + Pair( + productPreference.ignoreUpdates || + productPreference.ignoreVersionCode == item.versionCode, + !productPreference.ignoreUpdates + ) + } + } + with(holder) { + switch.setText(item.switchType.titleResId) + switch.isChecked = checked + statefulViews.forEach { it.isEnabled = enabled } + } + } + + ViewType.SECTION -> { + holder as SectionViewHolder + item as Item.SectionItem + val expandable = item.items.isNotEmpty() || item.collapseCount > 0 + holder.itemView.isEnabled = expandable + holder.itemView.let { + it.setPadding( + it.paddingLeft, + it.paddingTop, + it.paddingRight, + if (expandable) it.paddingTop else 0 + ) + } + val color = context.getColorFromAttr(item.sectionType.colorAttrResId) + holder.title.setTextColor(color) + holder.title.text = context.getString(item.sectionType.titleResId) + holder.icon.isVisible = expandable + holder.icon.scaleY = if (item.collapseCount > 0) -1f else 1f + holder.icon.imageTintList = color + } + + ViewType.EXPAND -> { + holder as ExpandViewHolder + item as Item.ExpandItem + holder.button.text = if (item.expandType !in expanded) { + when (item.expandType) { + ExpandType.VERSIONS -> context.getString(stringRes.show_older_versions) + else -> context.getString(stringRes.show_more) + } + } else { + context.getString(stringRes.show_less) + } + } + + ViewType.TEXT -> { + holder as TextViewHolder + item as Item.TextItem + holder.text.text = item.text + } + + ViewType.LINK -> { + holder as LinkViewHolder + item as Item.LinkItem + val layoutParams = holder.itemView.layoutParams as RecyclerView.LayoutParams + layoutParams.topMargin = + if (position > 0 && items[position - 1] !is Item.LinkItem) { + -context.resources.sizeScaled(8) + } else { + 0 + } + holder.itemView.isEnabled = item.uri != null + holder.icon.setImageResource(item.iconResId) + holder.text.text = item.getTitle(context) + holder.link.isVisible = item.uri != null + holder.link.text = item.displayLink + } + + ViewType.PERMISSIONS -> { + holder as PermissionsViewHolder + item as Item.PermissionsItem + val layoutParams = holder.itemView.layoutParams as RecyclerView.LayoutParams + layoutParams.topMargin = + if (position > 0 && items[position - 1] !is Item.PermissionsItem) { + -context.resources.sizeScaled(8) + } else { + 0 + } + val packageManager = context.packageManager + holder.icon.setImageDrawable( + if (item.group != null && item.group.icon != 0) { + item.group.loadUnbadgedIcon(packageManager) + } else { + null + } ?: context.getMutatedIcon(drawableRes.ic_perm_device_information) + ) + val localCache = PackageItemResolver.LocalCache() + val labels = item.permissions.map { permission -> + val labelFromPackage = + PackageItemResolver.loadLabel(context, localCache, permission) + val label = labelFromPackage ?: run { + val prefixes = + listOf("android.permission.", "com.android.browser.permission.") + prefixes.find { permission.name.startsWith(it) }?.let { it -> + val transform = permission.name.substring(it.length) + if (transform.matches("[A-Z_]+".toRegex())) { + transform.split("_") + .joinToString(separator = " ") { it.lowercase(Locale.US) } + } else { + null + } + } + } + if (label == null) { + Pair(false, permission.name) + } else { + Pair( + true, + label.first().uppercaseChar() + label.substring(1, label.length) + ) + } + } + val builder = SpannableStringBuilder() + ( + labels.asSequence().filter { it.first } + labels.asSequence() + .filter { !it.first } + ).forEach { + if (builder.isNotEmpty()) { + builder.append("\n\n") + builder.setSpan( + RelativeSizeSpan(1f / 3f), + builder.length - 2, + builder.length, + SpannableStringBuilder.SPAN_EXCLUSIVE_EXCLUSIVE + ) + } + builder.append(it.second) + if (!it.first) { + // Replace dots with spans to enable word wrap + it.second.asSequence() + .mapIndexedNotNull { index, c -> if (c == '.') index else null } + .map { index -> index + builder.length - it.second.length } + .forEach { index -> + builder.setSpan( + DotSpan(), + index, + index + 1, + SpannableStringBuilder.SPAN_EXCLUSIVE_EXCLUSIVE + ) + } + } + } + holder.text.text = builder + } + + ViewType.RELEASE -> { + holder as ReleaseViewHolder + item as Item.ReleaseItem + val incompatibility = item.release.incompatibilities.firstOrNull() + val singlePlatform = + if (item.release.platforms.size == 1) item.release.platforms.first() else null + val installed = installedItem?.versionCode == item.release.versionCode && + installedItem?.signature == item.release.signature + val suggested = + incompatibility == null && item.release.selected && item.selectedRepository + + if (suggested) { + holder.itemView.apply { + background = context.corneredBackground + backgroundTintList = + holder.itemView.context.getColorFromAttr(MaterialR.attr.colorSurface) + } + } else { + holder.itemView.background = null + } + holder.version.text = + context.getString(stringRes.version_FORMAT, item.release.version) + + holder.status.apply { + isVisible = installed || suggested + setText( + when { + installed -> stringRes.installed + suggested -> stringRes.suggested + else -> stringRes.unknown + } + ) + background = context.corneredBackground + setPadding(15, 15, 15, 15) + backgroundTintList = + context.getColorFromAttr(MaterialR.attr.colorSecondaryContainer) + setTextColor(context.getColorFromAttr(MaterialR.attr.colorOnSecondaryContainer)) + } + holder.source.text = + context.getString(stringRes.provided_by_FORMAT, item.repository.name) + val instant = Instant.fromEpochMilliseconds(item.release.added) + // FDroid uses UTC time + val date = instant.toLocalDateTime(TimeZone.UTC) + val dateFormat = try { + date.toJavaLocalDateTime() + .format(DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT)) + } catch (e: Exception) { + e.printStackTrace() + holder.dateFormat.format(item.release.added) + } + holder.added.text = dateFormat + holder.size.text = item.release.size.formatSize() + holder.signature.isVisible = + item.showSignature && item.release.signature.isNotEmpty() + if (item.showSignature && item.release.signature.isNotEmpty()) { + val bytes = + item.release.signature + .uppercase(Locale.US) + .windowed(2, 2, false) + .take(8) + val signature = bytes.joinToString(separator = " ") + val builder = SpannableStringBuilder( + context.getString( + stringRes.signature_FORMAT, + signature + ) + ) + val index = builder.indexOf(signature) + if (index >= 0) { + bytes.forEachIndexed { i, _ -> + builder.setSpan( + TypefaceSpan("monospace"), + index + 3 * i, + index + 3 * i + 2, + SpannableStringBuilder.SPAN_EXCLUSIVE_EXCLUSIVE + ) + } + } + holder.signature.text = builder + } + holder.compatibility.isVisible = incompatibility != null || singlePlatform != null + if (incompatibility != null) { + holder.compatibility.setTextColor( + context.getColorFromAttr(MaterialR.attr.colorError) + ) + holder.compatibility.text = when (incompatibility) { + is Release.Incompatibility.MinSdk, + is Release.Incompatibility.MaxSdk + -> context.getString( + stringRes.incompatible_with_FORMAT, + Android.name + ) + + is Release.Incompatibility.Platform -> context.getString( + stringRes.incompatible_with_FORMAT, + Android.primaryPlatform ?: context.getString(stringRes.unknown) + ) + + is Release.Incompatibility.Feature -> context.getString( + stringRes.requires_FORMAT, + incompatibility.feature + ) + } + } else if (singlePlatform != null) { + holder.compatibility.setTextColor( + context.getColorFromAttr(android.R.attr.textColorSecondary) + ) + holder.compatibility.text = + context.getString(stringRes.only_compatible_with_FORMAT, singlePlatform) + } + val enabled = status == Status.Idle + holder.statefulViews.forEach { it.isEnabled = enabled } + } + + ViewType.EMPTY -> { + holder as EmptyViewHolder + item as Item.EmptyItem + holder.packageName.text = item.packageName + if (item.repoAddress != null) { + holder.repoTitle.setText(stringRes.repository_not_found) + holder.repoAddress.text = item.repoAddress + } + } + } + } + + private fun formatHtml(text: String): SpannableStringBuilder { + val html = HtmlCompat.fromHtml(text, HtmlCompat.FROM_HTML_MODE_LEGACY) + val builder = run { + val builder = SpannableStringBuilder(html) + val last = builder.indexOfLast { it != '\n' } + val first = builder.indexOfFirst { it != '\n' } + if (last >= 0) { + builder.delete(last + 1, builder.length) + } + if (first in 1 until last) { + builder.delete(0, first - 1) + } + generateSequence(builder) { + val index = it.indexOf("\n\n\n") + if (index >= 0) it.delete(index, index + 1) else null + }.last() + } + LinkifyCompat.addLinks(builder, Linkify.WEB_URLS or Linkify.EMAIL_ADDRESSES) + val urlSpans = builder + .getSpans(0, builder.length, URLSpan::class.java) + .orEmpty() + for (span in urlSpans) { + val start = builder.getSpanStart(span) + val end = builder.getSpanEnd(span) + val flags = builder.getSpanFlags(span) + builder.removeSpan(span) + builder.setSpan(LinkSpan(span.url, this), start, end, flags) + } + val bulletSpans = builder + .getSpans(0, builder.length, BulletSpan::class.java) + .orEmpty() + .asSequence().map { Pair(it, builder.getSpanStart(it)) } + .sortedByDescending { it.second } + for (spanPair in bulletSpans) { + val (span, start) = spanPair + builder.removeSpan(span) + builder.insert(start, "\u2022 ") + } + return builder + } + + private fun copyLinkToClipboard(view: View, link: String) { + view.context.copyToClipboard(link) + Snackbar.make(view, stringRes.link_copied_to_clipboard, Snackbar.LENGTH_SHORT).show() + } + + private class LinkSpan(private val url: String, productAdapter: AppDetailAdapter) : + ClickableSpan() { + private val productAdapterReference = WeakReference(productAdapter) + + override fun onClick(view: View) { + val productAdapter = productAdapterReference.get() + val uri = try { + Uri.parse(url) + } catch (e: Exception) { + e.printStackTrace() + null + } + if (productAdapter != null && uri != null) { + productAdapter.callbacks.onUriClick(uri, true) + } + } + } + + private class DotSpan : ReplacementSpan() { + override fun getSize( + paint: Paint, + text: CharSequence?, + start: Int, + end: Int, + fm: Paint.FontMetricsInt? + ): Int { + return paint.measureText(".").roundToInt() + } + + override fun draw( + canvas: Canvas, + text: CharSequence?, + start: Int, + end: Int, + x: Float, + top: Int, + y: Int, + bottom: Int, + paint: Paint + ) { + canvas.drawText(".", x, y.toFloat(), paint) + } + } + + @Parcelize + class SavedState internal constructor(internal val expanded: Set) : Parcelable + + fun saveState(): SavedState? { + return if (expanded.isNotEmpty()) { + SavedState(expanded) + } else { + null + } + } + + fun restoreState(savedState: SavedState) { + expanded.clear() + expanded += savedState.expanded + } +} diff --git a/app/src/main/kotlin/com/leos/droidify/ui/appDetail/AppDetailFragment.kt b/app/src/main/kotlin/com/leos/droidify/ui/appDetail/AppDetailFragment.kt new file mode 100644 index 0000000..7550435 --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/ui/appDetail/AppDetailFragment.kt @@ -0,0 +1,537 @@ +package com.leos.droidify.ui.appDetail + +import android.content.ActivityNotFoundException +import android.content.ComponentName +import android.content.Intent +import android.net.Uri +import android.os.Bundle +import android.provider.Settings +import android.view.MenuItem +import android.view.View +import android.widget.ImageView +import androidx.appcompat.app.AlertDialog +import androidx.core.net.toUri +import androidx.core.os.bundleOf +import androidx.fragment.app.DialogFragment +import androidx.fragment.app.viewModels +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.lifecycleScope +import androidx.lifecycle.repeatOnLifecycle +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import androidx.recyclerview.widget.SimpleItemAnimator +import coil.load +import com.google.android.material.dialog.MaterialAlertDialogBuilder +import com.leos.core.common.extension.getLauncherActivities +import com.leos.core.common.extension.getMutatedIcon +import com.leos.core.common.extension.isFirstItemVisible +import com.leos.core.common.extension.isSystemApplication +import com.leos.core.common.extension.systemBarsPadding +import com.leos.core.common.extension.updateAsMutable +import com.leos.core.domain.InstalledItem +import com.leos.core.domain.Product +import com.leos.core.domain.ProductPreference +import com.leos.core.domain.Release +import com.leos.core.domain.Repository +import com.leos.core.domain.findSuggested +import com.leos.droidify.content.ProductPreferences +import com.leos.droidify.service.Connection +import com.leos.droidify.service.DownloadService +import com.leos.droidify.ui.Message +import com.leos.droidify.ui.MessageDialog +import com.leos.droidify.ui.ScreenFragment +import com.leos.droidify.ui.appDetail.AppDetailViewModel.Companion.ARG_PACKAGE_NAME +import com.leos.droidify.ui.appDetail.AppDetailViewModel.Companion.ARG_REPO_ADDRESS +import com.leos.droidify.utility.extension.ImageUtils.url +import com.leos.droidify.utility.extension.screenActivity +import com.leos.droidify.utility.extension.startUpdate +import com.leos.installer.model.InstallState +import com.leos.installer.model.isCancellable +import com.stfalcon.imageviewer.StfalconImageViewer +import dagger.hilt.android.AndroidEntryPoint +import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.collectLatest +import kotlinx.coroutines.launch +import com.leos.core.common.R.string as stringRes + +@AndroidEntryPoint +class AppDetailFragment() : ScreenFragment(), AppDetailAdapter.Callbacks { + companion object { + private const val STATE_LAYOUT_MANAGER = "layoutManager" + private const val STATE_ADAPTER = "adapter" + } + + constructor(packageName: String, repoAddress: String? = null) : this() { + arguments = bundleOf( + ARG_PACKAGE_NAME to packageName, + ARG_REPO_ADDRESS to repoAddress + ) + } + + private enum class Action( + val id: Int, + val adapterAction: AppDetailAdapter.Action + ) { + INSTALL(1, AppDetailAdapter.Action.INSTALL), + UPDATE(2, AppDetailAdapter.Action.UPDATE), + LAUNCH(3, AppDetailAdapter.Action.LAUNCH), + DETAILS(4, AppDetailAdapter.Action.DETAILS), + UNINSTALL(5, AppDetailAdapter.Action.UNINSTALL), + SHARE(6, AppDetailAdapter.Action.SHARE) + } + + private class Installed( + val installedItem: InstalledItem, + val isSystem: Boolean, + val launcherActivities: List> + ) + + private val viewModel: AppDetailViewModel by viewModels() + + private var layoutManagerState: LinearLayoutManager.SavedState? = null + + private var actions = Pair(emptySet(), null as Action?) + private var products = emptyList>() + private var installed: Installed? = null + private var downloading = false + private var installing: InstallState? = null + + private var recyclerView: RecyclerView? = null + private var detailAdapter: AppDetailAdapter? = null + + private val downloadConnection = Connection( + serviceClass = DownloadService::class.java, + onBind = { _, binder -> + lifecycleScope.launch { + binder.downloadState.collect(::updateDownloadState) + } + } + ) + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + detailAdapter = AppDetailAdapter(this@AppDetailFragment) + screenActivity.onToolbarCreated(toolbar) + toolbar.menu.apply { + Action.entries.forEach { action -> + add(0, action.id, 0, action.adapterAction.titleResId) + .setIcon(toolbar.context.getMutatedIcon(action.adapterAction.iconResId)) + .setVisible(false) + .setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_ALWAYS) + .setOnMenuItemClickListener { + onActionClick(action.adapterAction) + true + } + } + } + + val content = fragmentBinding.fragmentContent + content.addView( + RecyclerView(content.context).apply { + id = android.R.id.list + this.layoutManager = LinearLayoutManager( + context, + LinearLayoutManager.VERTICAL, + false + ) + isMotionEventSplittingEnabled = false + isVerticalScrollBarEnabled = false + adapter = detailAdapter + (itemAnimator as SimpleItemAnimator).supportsChangeAnimations = false + if (detailAdapter != null) { + savedInstanceState?.getParcelable(STATE_ADAPTER) + ?.let(detailAdapter!!::restoreState) + } + layoutManagerState = savedInstanceState?.getParcelable(STATE_LAYOUT_MANAGER) + recyclerView = this + systemBarsPadding(includeFab = false) + } + ) + viewLifecycleOwner.lifecycleScope.launch { + repeatOnLifecycle(Lifecycle.State.CREATED) { + launch { + viewModel.state.collectLatest { state -> + products = state.products.mapNotNull { product -> + val requiredRepo = state.repos.find { it.id == product.repositoryId } + requiredRepo?.let { product to it } + } + layoutManagerState?.let { + recyclerView?.layoutManager!!.onRestoreInstanceState(it) + } + layoutManagerState = null + installed = state.installedItem?.let { + with(requireContext().packageManager) { + val isSystem = isSystemApplication(viewModel.packageName) + val launcherActivities = if (state.isSelf) { + emptyList() + } else { + getLauncherActivities(viewModel.packageName) + } + Installed(it, isSystem, launcherActivities) + } + } + val adapter = recyclerView?.adapter as? AppDetailAdapter + + // `delay` is cancellable hence it waits for 50 milliseconds to show empty page + if (products.isEmpty()) delay(50) + + adapter?.setProducts( + context = requireContext(), + packageName = viewModel.packageName, + suggestedRepo = state.addressIfUnavailable, + products = products, + installedItem = state.installedItem, + isFavourite = state.isFavourite, + allowIncompatibleVersion = state.allowIncompatibleVersions + ) + updateButtons() + } + } + launch { + viewModel.installerState.collect(::updateInstallState) + } + launch { + recyclerView?.isFirstItemVisible?.collect(::updateToolbarButtons) + } + } + } + + downloadConnection.bind(requireContext()) + } + + override fun onDestroyView() { + super.onDestroyView() + recyclerView = null + detailAdapter = null + + downloadConnection.unbind(requireContext()) + } + + override fun onSaveInstanceState(outState: Bundle) { + super.onSaveInstanceState(outState) + + val layoutManagerState = + layoutManagerState ?: recyclerView?.layoutManager?.onSaveInstanceState() + layoutManagerState?.let { outState.putParcelable(STATE_LAYOUT_MANAGER, it) } + val adapterState = (recyclerView?.adapter as? AppDetailAdapter)?.saveState() + adapterState?.let { outState.putParcelable(STATE_ADAPTER, it) } + } + + private fun updateButtons( + preference: ProductPreference = ProductPreferences[viewModel.packageName] + ) { + val installed = installed + val product = products.findSuggested(installed?.installedItem)?.first + val compatible = product != null && product.selectedReleases.firstOrNull() + .let { it != null && it.incompatibilities.isEmpty() } + val canInstall = product != null && installed == null && compatible + val canUpdate = + product != null && compatible && product.canUpdate(installed?.installedItem) && + !preference.shouldIgnoreUpdate(product.versionCode) + val canUninstall = product != null && installed != null && !installed.isSystem + val canLaunch = + product != null && installed != null && installed.launcherActivities.isNotEmpty() + + val actions = buildSet { + if (canInstall) add(Action.INSTALL) + if (canUpdate) add(Action.UPDATE) + if (canLaunch) add(Action.LAUNCH) + if (installed != null) add(Action.DETAILS) + if (canUninstall) add(Action.UNINSTALL) + add(Action.SHARE) + } + + val primaryAction = when { + canUpdate -> Action.UPDATE + canLaunch -> Action.LAUNCH + canInstall -> Action.INSTALL + installed != null -> Action.DETAILS + else -> Action.SHARE + } + + val adapterAction = when { + installing == InstallState.Installing -> null + installing == InstallState.Pending -> AppDetailAdapter.Action.CANCEL + downloading -> AppDetailAdapter.Action.CANCEL + else -> primaryAction.adapterAction + } + + (recyclerView?.adapter as? AppDetailAdapter)?.action = adapterAction + + for (action in sequenceOf( + Action.INSTALL, + Action.UPDATE, + )) { + toolbar.menu.findItem(action.id).isEnabled = !downloading + } + this.actions = Pair(actions, primaryAction) + updateToolbarButtons() + } + + private fun updateToolbarButtons( + isActionVisible: Boolean = (recyclerView?.layoutManager as LinearLayoutManager) + .findFirstVisibleItemPosition() == 0 + ) { + toolbar.title = if (isActionVisible) { + getString(stringRes.application) + } else { + products.firstOrNull()?.first?.name ?: getString(stringRes.application) + } + val (actions, primaryAction) = actions + val displayActions = actions.updateAsMutable { + if (isActionVisible && primaryAction != null) { + remove(primaryAction) + } + if (size >= 4 && resources.configuration.screenWidthDp < 400) { + remove(Action.DETAILS) + } + } + Action.entries.forEach { action -> + toolbar.menu.findItem(action.id).isVisible = action in displayActions + } + } + + private fun updateInstallState(installerState: InstallState?) { + val status = when (installerState) { + InstallState.Pending -> AppDetailAdapter.Status.PendingInstall + InstallState.Installing -> AppDetailAdapter.Status.Installing + else -> AppDetailAdapter.Status.Idle + } + (recyclerView?.adapter as? AppDetailAdapter)?.status = status + installing = installerState + updateButtons() + } + + private fun updateDownloadState(state: DownloadService.DownloadState) { + val packageName = viewModel.packageName + val isPending = packageName in state.queue + val isDownloading = state isDownloading packageName + val isCompleted = state isComplete packageName + val isActive = isPending || isDownloading + if (isPending) { + detailAdapter?.status = AppDetailAdapter.Status.Pending + } + if (isDownloading) { + detailAdapter?.status = when (state.currentItem) { + is DownloadService.State.Connecting -> AppDetailAdapter.Status.Connecting + is DownloadService.State.Downloading -> AppDetailAdapter.Status.Downloading( + state.currentItem.read, + state.currentItem.total + ) + + else -> AppDetailAdapter.Status.Idle + } + } + if (isCompleted) { + detailAdapter?.status = AppDetailAdapter.Status.Idle + } + if (this.downloading != isActive) { + this.downloading = isActive + updateButtons() + } + if (state.currentItem is DownloadService.State.Success && isResumed) { + viewModel.installPackage( + state.currentItem.packageName, + state.currentItem.release.cacheFileName + ) + } + } + + override fun onActionClick(action: AppDetailAdapter.Action) { + when (action) { + AppDetailAdapter.Action.INSTALL, + AppDetailAdapter.Action.UPDATE + -> downloadConnection.startUpdate( + viewModel.packageName, + installed?.installedItem, + products + ) + + AppDetailAdapter.Action.LAUNCH -> { + val launcherActivities = installed?.launcherActivities.orEmpty() + if (launcherActivities.size >= 2) { + LaunchDialog(launcherActivities).show( + childFragmentManager, + LaunchDialog::class.java.name + ) + } else { + launcherActivities.firstOrNull()?.let { startLauncherActivity(it.first) } + } + } + + AppDetailAdapter.Action.DETAILS -> { + startActivity( + Intent( + Settings.ACTION_APPLICATION_DETAILS_SETTINGS, + "package:${viewModel.packageName}".toUri() + ) + ) + } + + AppDetailAdapter.Action.UNINSTALL -> viewModel.uninstallPackage() + + AppDetailAdapter.Action.CANCEL -> { + val binder = downloadConnection.binder + if (installing?.isCancellable == true) { + viewModel.removeQueue() + } else if (downloading && binder != null) { + binder.cancel(viewModel.packageName) + } + } + + AppDetailAdapter.Action.SHARE -> { + val repo = products[0].second + val address = when { + repo.name == "F-Droid" -> + "https://www.f-droid.org/packages/" + + "${viewModel.packageName}/" + + "IzzyOnDroid" in repo.name -> { + "https://apt.izzysoft.de/fdroid/index/apk/${viewModel.packageName}" + } + + else -> { + "https://droidify.eu.org/app/?id=" + + "${viewModel.packageName}&repo_address=${repo.address}" + } + } + val sendIntent = Intent(Intent.ACTION_SEND) + .putExtra(Intent.EXTRA_TEXT, address) + .setType("text/plain") + startActivity(Intent.createChooser(sendIntent, null)) + } + } + } + + override fun onFavouriteClicked() { + viewModel.setFavouriteState() + } + + private fun startLauncherActivity(name: String) { + try { + startActivity( + Intent(Intent.ACTION_MAIN) + .addCategory(Intent.CATEGORY_LAUNCHER) + .setComponent(ComponentName(viewModel.packageName, name)) + .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + ) + } catch (e: Exception) { + e.printStackTrace() + } + } + + override fun onPreferenceChanged(preference: ProductPreference) { + updateButtons(preference) + } + + override fun onPermissionsClick(group: String?, permissions: List) { + MessageDialog(Message.Permissions(group, permissions)) + .show(childFragmentManager) + } + + override fun onScreenshotClick(screenshot: Product.Screenshot, parentView: ImageView) { + val product = products + .firstOrNull { (product, _) -> + product.screenshots.find { it === screenshot }?.identifier != null + } + ?: return + val screenshots = product.first.screenshots + val position = screenshots.indexOfFirst { screenshot.identifier == it.identifier } + StfalconImageViewer + .Builder(context, screenshots) { view, current -> + view.load(current.url(product.second, viewModel.packageName)) + } + .withTransitionFrom(parentView) + .withStartPosition(position) + .show() + } + + override fun onReleaseClick(release: Release) { + val installedItem = installed?.installedItem + when { + release.incompatibilities.isNotEmpty() -> { + MessageDialog( + Message.ReleaseIncompatible( + release.incompatibilities, + release.platforms, + release.minSdkVersion, + release.maxSdkVersion + ) + ).show(childFragmentManager) + } + + installedItem != null && installedItem.versionCode > release.versionCode -> { + MessageDialog(Message.ReleaseOlder).show(childFragmentManager) + } + + installedItem != null && installedItem.signature != release.signature -> { + MessageDialog(Message.ReleaseSignatureMismatch).show( + childFragmentManager + ) + } + + else -> { + val productRepository = + products.asSequence().filter { (product, _) -> + product.releases.any { it === release } + }.firstOrNull() + if (productRepository != null) { + downloadConnection.binder?.enqueue( + viewModel.packageName, + productRepository.first.name, + productRepository.second, + release, + installedItem != null + ) + } + } + } + } + + override fun onRequestAddRepository(address: String) { + screenActivity.navigateAddRepository(address) + } + + override fun onUriClick(uri: Uri, shouldConfirm: Boolean): Boolean { + return if (shouldConfirm && (uri.scheme == "http" || uri.scheme == "https")) { + MessageDialog(Message.Link(uri)).show(childFragmentManager) + true + } else { + try { + startActivity(Intent(Intent.ACTION_VIEW, uri)) + true + } catch (e: ActivityNotFoundException) { + e.printStackTrace() + false + } + } + } + + class LaunchDialog() : DialogFragment() { + companion object { + private const val EXTRA_NAMES = "names" + private const val EXTRA_LABELS = "labels" + } + + constructor(launcherActivities: List>) : this() { + arguments = Bundle().apply { + putStringArrayList(EXTRA_NAMES, ArrayList(launcherActivities.map { it.first })) + putStringArrayList(EXTRA_LABELS, ArrayList(launcherActivities.map { it.second })) + } + } + + override fun onCreateDialog(savedInstanceState: Bundle?): AlertDialog { + val names = requireArguments().getStringArrayList(EXTRA_NAMES)!! + val labels = requireArguments().getStringArrayList(EXTRA_LABELS)!! + return MaterialAlertDialogBuilder(requireContext()) + .setTitle(stringRes.launch) + .setItems(labels.toTypedArray()) { _, position -> + (parentFragment as AppDetailFragment) + .startLauncherActivity(names[position]) + } + .setNegativeButton(stringRes.cancel, null) + .create() + } + } +} diff --git a/app/src/main/kotlin/com/leos/droidify/ui/appDetail/AppDetailViewModel.kt b/app/src/main/kotlin/com/leos/droidify/ui/appDetail/AppDetailViewModel.kt new file mode 100644 index 0000000..063233a --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/ui/appDetail/AppDetailViewModel.kt @@ -0,0 +1,103 @@ +package com.leos.droidify.ui.appDetail + +import androidx.lifecycle.SavedStateHandle +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.leos.core.common.extension.asStateFlow +import com.leos.core.common.toPackageName +import com.leos.core.datastore.SettingsRepository +import com.leos.core.domain.InstalledItem +import com.leos.core.domain.Product +import com.leos.core.domain.Repository +import com.leos.droidify.BuildConfig +import com.leos.droidify.database.Database +import com.leos.installer.InstallManager +import com.leos.installer.model.InstallState +import com.leos.installer.model.installFrom +import dagger.hilt.android.lifecycle.HiltViewModel +import javax.inject.Inject +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.flow +import kotlinx.coroutines.flow.mapNotNull +import kotlinx.coroutines.launch + +@HiltViewModel +class AppDetailViewModel @Inject constructor( + private val installer: InstallManager, + private val settingsRepository: SettingsRepository, + savedStateHandle: SavedStateHandle +) : ViewModel() { + + val packageName: String = requireNotNull(savedStateHandle[ARG_PACKAGE_NAME]) + + private val repoAddress: StateFlow = + savedStateHandle.getStateFlow(ARG_REPO_ADDRESS, null) + + val installerState: StateFlow = + installer.state.mapNotNull { stateMap -> + stateMap[packageName.toPackageName()] + }.asStateFlow(null) + + val state = + combine( + Database.ProductAdapter.getStream(packageName), + Database.RepositoryAdapter.getAllStream(), + Database.InstalledAdapter.getStream(packageName), + repoAddress, + flow { emit(settingsRepository.getInitial()) } + ) { products, repositories, installedItem, suggestedAddress, initialSettings -> + val idAndRepos = repositories.associateBy { it.id } + val filteredProducts = products.filter { product -> + idAndRepos[product.repositoryId] != null + } + AppDetailUiState( + products = filteredProducts, + repos = repositories, + installedItem = installedItem, + isFavourite = packageName in initialSettings.favouriteApps, + allowIncompatibleVersions = initialSettings.incompatibleVersions, + isSelf = packageName == BuildConfig.APPLICATION_ID, + addressIfUnavailable = suggestedAddress + ) + }.asStateFlow(AppDetailUiState()) + + fun setFavouriteState() { + viewModelScope.launch { + settingsRepository.toggleFavourites(packageName) + } + } + + fun installPackage(packageName: String, fileName: String) { + viewModelScope.launch { + installer install (packageName installFrom fileName) + } + } + + fun uninstallPackage() { + viewModelScope.launch { + installer uninstall packageName.toPackageName() + } + } + + fun removeQueue() { + viewModelScope.launch { + installer remove packageName.toPackageName() + } + } + + companion object { + const val ARG_PACKAGE_NAME = "package_name" + const val ARG_REPO_ADDRESS = "repo_address" + } +} + +data class AppDetailUiState( + val products: List = emptyList(), + val repos: List = emptyList(), + val installedItem: InstalledItem? = null, + val isSelf: Boolean = false, + val isFavourite: Boolean = false, + val allowIncompatibleVersions: Boolean = false, + val addressIfUnavailable: String? = null +) diff --git a/app/src/main/kotlin/com/leos/droidify/ui/appDetail/ScreenshotsAdapter.kt b/app/src/main/kotlin/com/leos/droidify/ui/appDetail/ScreenshotsAdapter.kt new file mode 100644 index 0000000..d13199c --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/ui/appDetail/ScreenshotsAdapter.kt @@ -0,0 +1,126 @@ +package com.leos.droidify.ui.appDetail + +import android.content.Context +import android.graphics.drawable.Drawable +import android.view.Gravity +import android.view.View +import android.view.ViewGroup +import android.widget.FrameLayout +import android.widget.ImageView +import androidx.recyclerview.widget.RecyclerView +import coil.load +import coil.size.Scale +import com.google.android.material.R as MaterialR +import com.google.android.material.imageview.ShapeableImageView +import com.leos.core.common.R.dimen as dimenRes +import com.leos.core.common.extension.aspectRatio +import com.leos.core.common.extension.authentication +import com.leos.core.common.extension.camera +import com.leos.core.common.extension.dp +import com.leos.core.common.extension.getColorFromAttr +import com.leos.core.common.extension.selectableBackground +import com.leos.core.domain.Product +import com.leos.core.domain.Repository +import com.leos.droidify.graphics.PaddingDrawable +import com.leos.droidify.utility.extension.ImageUtils.url +import com.leos.droidify.widget.StableRecyclerAdapter + +class ScreenshotsAdapter(private val onClick: (Product.Screenshot, ImageView) -> Unit) : + StableRecyclerAdapter() { + enum class ViewType { SCREENSHOT } + + private val items = mutableListOf() + + private class ViewHolder(context: Context) : + RecyclerView.ViewHolder(FrameLayout(context)) { + val image: ShapeableImageView = object : ShapeableImageView(context) { + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec) + setMeasuredDimension(measuredWidth, measuredHeight) + } + } + val placeholderColor = context.getColorFromAttr(MaterialR.attr.colorPrimaryContainer) + val radius = context.resources.getDimension(dimenRes.shape_small_corner) + + val imageShapeModel = image.shapeAppearanceModel.toBuilder() + .setAllCornerSizes(radius) + .build() + val cameraIcon = context.camera + .apply { setTintList(placeholderColor) } + val placeholder: Drawable = PaddingDrawable(cameraIcon, 3f, context.aspectRatio) + + init { + with(image) { + shapeAppearanceModel = imageShapeModel + background = context.selectableBackground + isFocusable = true + } + with(itemView as FrameLayout) { + layoutParams = RecyclerView.LayoutParams( + RecyclerView.LayoutParams.WRAP_CONTENT, + 150.dp + ).apply { + marginStart = radius.toInt() + marginEnd = radius.toInt() + } + foregroundGravity = Gravity.CENTER + addView(image) + } + } + } + + fun setScreenshots( + repository: Repository, + packageName: String, + screenshots: List + ) { + items.clear() + items += screenshots.map { Item.ScreenshotItem(repository, packageName, it) } + notifyItemRangeInserted(0, screenshots.size) + } + + override val viewTypeClass: Class + get() = ViewType::class.java + + override fun getItemEnumViewType(position: Int): ViewType { + return ViewType.SCREENSHOT + } + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: ViewType + ): RecyclerView.ViewHolder { + return ViewHolder(parent.context).apply { + image.setOnClickListener { onClick(items[absoluteAdapterPosition].screenshot, it as ImageView) } + } + } + + override fun getItemDescriptor(position: Int): String = items[position].descriptor + override fun getItemCount(): Int = items.size + + override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { + holder as ViewHolder + val item = items[position] + holder.image.load( + item.screenshot.url(item.repository, item.packageName) + ) { + scale(Scale.FILL) + placeholder(holder.placeholder) + error(holder.placeholder) + authentication(item.repository.authentication) + } + } + + private sealed class Item { + abstract val descriptor: String + + class ScreenshotItem( + val repository: Repository, + val packageName: String, + val screenshot: Product.Screenshot + ) : Item() { + override val descriptor: String + get() = "screenshot.${repository.id}.${screenshot.identifier}" + } + } +} diff --git a/app/src/main/kotlin/com/leos/droidify/ui/appList/AppListAdapter.kt b/app/src/main/kotlin/com/leos/droidify/ui/appList/AppListAdapter.kt new file mode 100644 index 0000000..2c6baa1 --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/ui/appList/AppListAdapter.kt @@ -0,0 +1,200 @@ +package com.leos.droidify.ui.appList + +import android.content.Context +import android.view.Gravity +import android.view.View +import android.view.ViewGroup +import android.widget.FrameLayout +import android.widget.TextView +import androidx.core.view.isVisible +import androidx.recyclerview.widget.RecyclerView +import coil.load +import com.google.android.material.R as MaterialR +import com.google.android.material.imageview.ShapeableImageView +import com.google.android.material.progressindicator.CircularProgressIndicator +import com.leos.core.common.extension.authentication +import com.leos.core.common.extension.corneredBackground +import com.leos.core.common.extension.dp +import com.leos.core.common.extension.getColorFromAttr +import com.leos.core.common.extension.inflate +import com.leos.core.common.extension.setTextSizeScaled +import com.leos.core.common.nullIfEmpty +import com.leos.core.domain.ProductItem +import com.leos.core.domain.Repository +import com.leos.droidify.R +import com.leos.droidify.database.Database +import com.leos.droidify.utility.extension.ImageUtils.icon +import com.leos.droidify.utility.extension.resources.TypefaceExtra +import com.leos.droidify.widget.CursorRecyclerAdapter + +class AppListAdapter( + private val source: AppListFragment.Source, + private val onClick: (ProductItem) -> Unit +) : CursorRecyclerAdapter() { + + enum class ViewType { PRODUCT, LOADING, EMPTY } + + private class ProductViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val name = itemView.findViewById(R.id.name)!! + val status = itemView.findViewById(R.id.status)!! + val summary = itemView.findViewById(R.id.summary)!! + val icon = itemView.findViewById(R.id.icon)!! + } + + private class LoadingViewHolder(context: Context) : + RecyclerView.ViewHolder(FrameLayout(context)) { + init { + with(itemView as FrameLayout) { + val progressBar = CircularProgressIndicator(context) + addView(progressBar) + layoutParams = RecyclerView.LayoutParams( + RecyclerView.LayoutParams.MATCH_PARENT, + RecyclerView.LayoutParams.MATCH_PARENT + ) + } + } + } + + private class EmptyViewHolder(context: Context) : + RecyclerView.ViewHolder(TextView(context)) { + val text: TextView + get() = itemView as TextView + + init { + with(itemView as TextView) { + gravity = Gravity.CENTER + setPadding(20.dp, 20.dp, 20.dp, 20.dp) + typeface = TypefaceExtra.light + setTextColor(context.getColorFromAttr(android.R.attr.colorPrimary)) + setTextSizeScaled(20) + layoutParams = RecyclerView.LayoutParams( + RecyclerView.LayoutParams.MATCH_PARENT, + RecyclerView.LayoutParams.MATCH_PARENT + ) + } + } + } + + var repositories: Map = emptyMap() + set(value) { + field = value + notifyDataSetChanged() + } + + var emptyText: String = "" + set(value) { + if (field != value) { + field = value + if (isEmpty) { + notifyDataSetChanged() + } + } + } + + override val viewTypeClass: Class + get() = ViewType::class.java + + private val isEmpty: Boolean + get() = super.getItemCount() == 0 + + override fun getItemCount(): Int = if (isEmpty) 1 else super.getItemCount() + override fun getItemId(position: Int): Long = if (isEmpty) -1 else super.getItemId(position) + + override fun getItemEnumViewType(position: Int): ViewType { + return when { + !isEmpty -> ViewType.PRODUCT + cursor == null -> ViewType.LOADING + else -> ViewType.EMPTY + } + } + + private fun getProductItem(position: Int): ProductItem { + return Database.ProductAdapter.transformItem(moveTo(position)) + } + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: ViewType + ): RecyclerView.ViewHolder { + return when (viewType) { + ViewType.PRODUCT -> ProductViewHolder(parent.inflate(R.layout.product_item)).apply { + itemView.setOnClickListener { onClick(getProductItem(absoluteAdapterPosition)) } + } + + ViewType.LOADING -> LoadingViewHolder(parent.context) + ViewType.EMPTY -> EmptyViewHolder(parent.context) + } + } + + override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { + when (getItemEnumViewType(position)) { + ViewType.PRODUCT -> { + holder as ProductViewHolder + val productItem = getProductItem(if (position > -1) position else 0) + holder.name.text = productItem.name + holder.summary.text = productItem.summary + holder.summary.isVisible = + productItem.summary.isNotEmpty() && productItem.name != productItem.summary + val repository: Repository? = repositories[productItem.repositoryId] + if (repository != null) { + val iconUrl = productItem.icon(view = holder.icon, repository = repository) + holder.icon.load(iconUrl) { + authentication(repository.authentication) + } + } + with(holder.status) { + val versionText = if (source == AppListFragment.Source.UPDATES) { + productItem.version + } else { + productItem.installedVersion.nullIfEmpty() ?: productItem.version + } + text = versionText + val isInstalled = productItem.installedVersion.nullIfEmpty() != null + when { + productItem.canUpdate -> { + backgroundTintList = + context.getColorFromAttr(MaterialR.attr.colorSecondaryContainer) + setTextColor( + context.getColorFromAttr(MaterialR.attr.colorOnSecondaryContainer) + ) + } + + isInstalled -> { + backgroundTintList = + context.getColorFromAttr(MaterialR.attr.colorPrimaryContainer) + setTextColor( + context.getColorFromAttr(MaterialR.attr.colorOnPrimaryContainer) + ) + } + + else -> { + setPadding(0, 0, 0, 0) + setTextColor( + holder.status.context.getColorFromAttr( + MaterialR.attr.colorOnBackground + ) + ) + background = null + return@with + } + } + background = context.corneredBackground + 6.dp.let { setPadding(it, it, it, it) } + } + val enabled = productItem.compatible || productItem.installedVersion.isNotEmpty() + sequenceOf(holder.name, holder.status, holder.summary).forEach { + it.isEnabled = enabled + } + } + + ViewType.LOADING -> { + // Do nothing + } + + ViewType.EMPTY -> { + holder as EmptyViewHolder + holder.text.text = emptyText + } + }::class + } +} diff --git a/app/src/main/kotlin/com/leos/droidify/ui/appList/AppListFragment.kt b/app/src/main/kotlin/com/leos/droidify/ui/appList/AppListFragment.kt new file mode 100644 index 0000000..ef78863 --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/ui/appList/AppListFragment.kt @@ -0,0 +1,198 @@ +package com.leos.droidify.ui.appList + +import android.database.Cursor +import android.os.Bundle +import android.os.Parcelable +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.core.view.isVisible +import androidx.fragment.app.Fragment +import androidx.fragment.app.viewModels +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.lifecycleScope +import androidx.lifecycle.repeatOnLifecycle +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.leos.core.common.R as CommonR +import com.leos.core.common.R.string as stringRes +import com.leos.core.common.extension.dp +import com.leos.core.common.extension.isFirstItemVisible +import com.leos.core.common.extension.systemBarsMargin +import com.leos.core.common.extension.systemBarsPadding +import com.leos.core.domain.ProductItem +import com.leos.droidify.database.CursorOwner +import com.leos.droidify.databinding.RecyclerViewWithFabBinding +import com.leos.droidify.utility.extension.screenActivity +import dagger.hilt.android.AndroidEntryPoint +import kotlinx.coroutines.launch + +@AndroidEntryPoint +class AppListFragment() : Fragment(), CursorOwner.Callback { + + private val viewModel: AppListViewModel by viewModels() + + private var _binding: RecyclerViewWithFabBinding? = null + private val binding get() = _binding!! + + companion object { + private const val STATE_LAYOUT_MANAGER = "layoutManager" + + private const val EXTRA_SOURCE = "source" + } + + enum class Source( + val titleResId: Int, + val sections: Boolean, + val order: Boolean, + val updateAll: Boolean + ) { + AVAILABLE(stringRes.available, true, true, false), + INSTALLED(stringRes.installed, false, true, false), + UPDATES(stringRes.updates, false, false, true) + } + + constructor(source: Source) : this() { + arguments = Bundle().apply { + putString(EXTRA_SOURCE, source.name) + } + } + + val source: Source + get() = requireArguments().getString(EXTRA_SOURCE)!!.let(Source::valueOf) + + private lateinit var recyclerView: RecyclerView + private lateinit var recyclerViewAdapter: AppListAdapter + private var shortAnimationDuration: Int = 0 + private var layoutManagerState: Parcelable? = null + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + _binding = RecyclerViewWithFabBinding.inflate(inflater, container, false) + + shortAnimationDuration = resources.getInteger(android.R.integer.config_shortAnimTime) + + viewModel.syncConnection.bind(requireContext()) + + recyclerView = binding.recyclerView.apply { + layoutManager = LinearLayoutManager(context) + isMotionEventSplittingEnabled = false + setHasFixedSize(true) + recycledViewPool.setMaxRecycledViews(AppListAdapter.ViewType.PRODUCT.ordinal, 30) + recyclerViewAdapter = AppListAdapter(source) { + screenActivity.navigateProduct(it.packageName) + } + adapter = recyclerViewAdapter + systemBarsPadding() + } + val fab = binding.scrollUp + with(fab) { + if (source.updateAll) { + text = getString(CommonR.string.update_all) + setOnClickListener { viewModel.updateAll() } + setIconResource(CommonR.drawable.ic_download) + alpha = 1f + viewLifecycleOwner.lifecycleScope.launch { + viewModel.showUpdateAllButton.collect { + isVisible = it + } + } + systemBarsMargin(16.dp) + } else { + text = "" + setIconResource(CommonR.drawable.arrow_up) + setOnClickListener { recyclerView.smoothScrollToPosition(0) } + alpha = 0f + isVisible = true + systemBarsMargin(16.dp) + } + } + + viewLifecycleOwner.lifecycleScope.launch { + if (!source.updateAll) { + recyclerView.isFirstItemVisible.collect { showFab -> + fab.animate() + .alpha(if (!showFab) 1f else 0f) + .setDuration(shortAnimationDuration.toLong()) + .setListener(null) + } + } + } + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + layoutManagerState = savedInstanceState?.getParcelable(STATE_LAYOUT_MANAGER) + + updateRequest() + viewLifecycleOwner.lifecycleScope.launch { + repeatOnLifecycle(Lifecycle.State.RESUMED) { + launch { + viewModel.reposStream.collect { repos -> + recyclerViewAdapter.repositories = repos.associateBy { it.id } + } + } + launch { + viewModel.sortOrderFlow.collect { + updateRequest() + } + } + } + } + } + + override fun onSaveInstanceState(outState: Bundle) { + super.onSaveInstanceState(outState) + (layoutManagerState ?: recyclerView.layoutManager?.onSaveInstanceState()) + ?.let { outState.putParcelable(STATE_LAYOUT_MANAGER, it) } + } + + override fun onDestroyView() { + super.onDestroyView() + viewModel.syncConnection.unbind(requireContext()) + _binding = null + screenActivity.cursorOwner.detach(this) + } + + override fun onCursorData(request: CursorOwner.Request, cursor: Cursor?) { + recyclerViewAdapter.cursor = cursor + recyclerViewAdapter.emptyText = when { + cursor == null -> "" + viewModel.searchQuery.value.isNotEmpty() -> { + getString(stringRes.no_matching_applications_found) + } + + else -> when (source) { + Source.AVAILABLE -> getString(stringRes.no_applications_available) + Source.INSTALLED -> getString(stringRes.no_applications_installed) + Source.UPDATES -> getString(stringRes.all_applications_up_to_date) + } + } + layoutManagerState?.let { + layoutManagerState = null + recyclerView.layoutManager?.onRestoreInstanceState(it) + } + } + + internal fun setSearchQuery(searchQuery: String) { + viewModel.setSearchQuery(searchQuery) { + updateRequest() + } + } + + internal fun setSection(section: ProductItem.Section) { + viewModel.setSection(section) { + updateRequest() + } + } + + private fun updateRequest() { + if (view != null) { + screenActivity.cursorOwner.attach(this, viewModel.request(source)) + } + } +} diff --git a/app/src/main/kotlin/com/leos/droidify/ui/appList/AppListViewModel.kt b/app/src/main/kotlin/com/leos/droidify/ui/appList/AppListViewModel.kt new file mode 100644 index 0000000..39bdc5c --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/ui/appList/AppListViewModel.kt @@ -0,0 +1,91 @@ +package com.leos.droidify.ui.appList + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.leos.core.common.extension.asStateFlow +import com.leos.core.datastore.SettingsRepository +import com.leos.core.datastore.get +import com.leos.core.datastore.model.SortOrder +import com.leos.core.domain.ProductItem +import com.leos.core.domain.ProductItem.Section.All +import com.leos.droidify.database.CursorOwner +import com.leos.droidify.database.Database +import com.leos.droidify.service.Connection +import com.leos.droidify.service.SyncService +import dagger.hilt.android.lifecycle.HiltViewModel +import javax.inject.Inject +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.launch + +@HiltViewModel +class AppListViewModel +@Inject constructor( + settingsRepository: SettingsRepository +) : ViewModel() { + + val reposStream = Database.RepositoryAdapter + .getAllStream() + .asStateFlow(emptyList()) + + val showUpdateAllButton = Database.ProductAdapter + .getUpdatesStream() + .map { it.isNotEmpty() } + .asStateFlow(false) + + val sortOrderFlow = settingsRepository.get { sortOrder } + .asStateFlow(SortOrder.UPDATED) + + private val sections = MutableStateFlow(All) + + val searchQuery = MutableStateFlow("") + + val syncConnection = Connection(SyncService::class.java) + + fun updateAll() { + viewModelScope.launch { + syncConnection.binder?.updateAllApps() + } + } + + fun request(source: AppListFragment.Source): CursorOwner.Request { + return when (source) { + AppListFragment.Source.AVAILABLE -> CursorOwner.Request.ProductsAvailable( + searchQuery.value, + sections.value, + sortOrderFlow.value + ) + + AppListFragment.Source.INSTALLED -> CursorOwner.Request.ProductsInstalled( + searchQuery.value, + sections.value, + sortOrderFlow.value + ) + + AppListFragment.Source.UPDATES -> CursorOwner.Request.ProductsUpdates( + searchQuery.value, + sections.value, + sortOrderFlow.value + ) + } + } + + fun setSection(newSection: ProductItem.Section, perform: () -> Unit) { + viewModelScope.launch { + if (newSection != sections.value) { + sections.emit(newSection) + launch(Dispatchers.Main) { perform() } + } + } + } + + fun setSearchQuery(newSearchQuery: String, perform: () -> Unit) { + viewModelScope.launch { + if (newSearchQuery != searchQuery.value) { + searchQuery.emit(newSearchQuery) + launch(Dispatchers.Main) { perform() } + } + } + } +} diff --git a/app/src/main/kotlin/com/leos/droidify/ui/favourites/FavouriteFragmentAdapter.kt b/app/src/main/kotlin/com/leos/droidify/ui/favourites/FavouriteFragmentAdapter.kt new file mode 100644 index 0000000..a761019 --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/ui/favourites/FavouriteFragmentAdapter.kt @@ -0,0 +1,98 @@ +package com.leos.droidify.ui.favourites + +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.core.view.isVisible +import androidx.recyclerview.widget.RecyclerView +import coil.load +import com.google.android.material.R as MaterialR +import com.leos.core.common.extension.authentication +import com.leos.core.common.extension.corneredBackground +import com.leos.core.common.extension.dp +import com.leos.core.common.extension.getColorFromAttr +import com.leos.core.common.nullIfEmpty +import com.leos.core.domain.Product +import com.leos.core.domain.Repository +import com.leos.droidify.databinding.ProductItemBinding +import com.leos.droidify.utility.extension.ImageUtils.icon + +class FavouriteFragmentAdapter( + private val onProductClick: (String) -> Unit +) : RecyclerView.Adapter() { + + inner class ViewHolder(binding: ProductItemBinding) : RecyclerView.ViewHolder(binding.root) { + val icon = binding.icon + val name = binding.name + val summary = binding.summary + val version = binding.status + } + + var apps: List> = emptyList() + set(value) { + field = value + notifyDataSetChanged() + } + + var repositories: Map = emptyMap() + set(value) { + field = value + notifyDataSetChanged() + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder = + ViewHolder( + ProductItemBinding.inflate( + LayoutInflater.from(parent.context), + parent, + false + ) + ).apply { + itemView.setOnClickListener { + if (apps.isNotEmpty() && apps[absoluteAdapterPosition].firstOrNull() != null) { + onProductClick(apps[absoluteAdapterPosition].first().packageName) + } + } + } + + override fun getItemCount(): Int = apps.size + + override fun onBindViewHolder(holder: ViewHolder, position: Int) { + val item = apps[position].first().item() + val repository: Repository? = repositories[item.repositoryId] + holder.name.text = item.name + holder.summary.isVisible = item.summary.isNotEmpty() + holder.summary.text = item.summary + if (repository != null) { + val iconUrl = item.icon(holder.icon, repository) + holder.icon.load(iconUrl) { + authentication(repository.authentication) + } + } + holder.version.apply { + text = item.installedVersion.nullIfEmpty() ?: item.version + val isInstalled = item.installedVersion.nullIfEmpty() != null + when { + item.canUpdate -> { + backgroundTintList = + context.getColorFromAttr(MaterialR.attr.colorSecondaryContainer) + setTextColor(context.getColorFromAttr(MaterialR.attr.colorOnSecondaryContainer)) + } + + isInstalled -> { + backgroundTintList = + context.getColorFromAttr(MaterialR.attr.colorPrimaryContainer) + setTextColor(context.getColorFromAttr(MaterialR.attr.colorOnPrimaryContainer)) + } + + else -> { + setPadding(0, 0, 0, 0) + setTextColor(context.getColorFromAttr(MaterialR.attr.colorOnBackground)) + background = null + return@apply + } + } + background = context.corneredBackground + 6.dp.let { setPadding(it, it, it, it) } + } + } +} diff --git a/app/src/main/kotlin/com/leos/droidify/ui/favourites/FavouritesFragment.kt b/app/src/main/kotlin/com/leos/droidify/ui/favourites/FavouritesFragment.kt new file mode 100644 index 0000000..8b5738f --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/ui/favourites/FavouritesFragment.kt @@ -0,0 +1,79 @@ +package com.leos.droidify.ui.favourites + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.viewModels +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.flowWithLifecycle +import androidx.lifecycle.lifecycleScope +import androidx.lifecycle.repeatOnLifecycle +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.leos.core.common.R as CommonR +import com.leos.core.common.extension.systemBarsPadding +import com.leos.droidify.database.Database +import com.leos.droidify.ui.ScreenFragment +import com.leos.droidify.utility.extension.screenActivity +import dagger.hilt.android.AndroidEntryPoint +import kotlinx.coroutines.flow.collectLatest +import kotlinx.coroutines.launch + +@AndroidEntryPoint +class FavouritesFragment : ScreenFragment() { + + private val viewModel: FavouritesViewModel by viewModels() + + private lateinit var recyclerView: RecyclerView + private lateinit var recyclerViewAdapter: FavouriteFragmentAdapter + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + super.onCreateView(inflater, container, savedInstanceState) + val view = fragmentBinding.root.apply { + val content = fragmentBinding.fragmentContent + content.addView( + RecyclerView(content.context).apply { + id = android.R.id.list + layoutManager = LinearLayoutManager(context) + isVerticalScrollBarEnabled = false + setHasFixedSize(true) + recyclerViewAdapter = + FavouriteFragmentAdapter { screenActivity.navigateProduct(it) } + this.adapter = recyclerViewAdapter + systemBarsPadding(includeFab = false) + recyclerView = this + } + ) + } + viewLifecycleOwner.lifecycleScope.launch { + repeatOnLifecycle(Lifecycle.State.CREATED) { + launch { + viewModel.favouriteApps.collect { apps -> + recyclerViewAdapter.apps = apps + } + } + launch { + Database.RepositoryAdapter + .getAllStream() + .flowWithLifecycle(viewLifecycleOwner.lifecycle, Lifecycle.State.RESUMED) + .collectLatest { repositories -> + recyclerViewAdapter.repositories = repositories.associateBy { it.id } + } + } + } + } + + toolbar.title = getString(CommonR.string.favourites) + return view + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + screenActivity.onToolbarCreated(toolbar) + } +} diff --git a/app/src/main/kotlin/com/leos/droidify/ui/favourites/FavouritesViewModel.kt b/app/src/main/kotlin/com/leos/droidify/ui/favourites/FavouritesViewModel.kt new file mode 100644 index 0000000..162b828 --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/ui/favourites/FavouritesViewModel.kt @@ -0,0 +1,35 @@ +package com.leos.droidify.ui.favourites + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.leos.core.common.extension.asStateFlow +import com.leos.core.datastore.SettingsRepository +import com.leos.core.datastore.get +import com.leos.core.domain.Product +import com.leos.droidify.database.Database +import dagger.hilt.android.lifecycle.HiltViewModel +import javax.inject.Inject +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.launch + +@HiltViewModel +class FavouritesViewModel @Inject constructor( + private val settingsRepository: SettingsRepository +) : ViewModel() { + + val favouriteApps: StateFlow>> = + settingsRepository + .get { favouriteApps } + .map { favourites -> + favourites.mapNotNull { app -> + Database.ProductAdapter.get(app, null).ifEmpty { null } + } + }.asStateFlow(emptyList()) + + fun updateFavourites(packageName: String) { + viewModelScope.launch { + settingsRepository.toggleFavourites(packageName) + } + } +} diff --git a/app/src/main/kotlin/com/leos/droidify/ui/repository/EditRepositoryFragment.kt b/app/src/main/kotlin/com/leos/droidify/ui/repository/EditRepositoryFragment.kt new file mode 100644 index 0000000..5ced897 --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/ui/repository/EditRepositoryFragment.kt @@ -0,0 +1,475 @@ +package com.leos.droidify.ui.repository + +import android.os.Bundle +import android.text.Selection +import android.util.Base64 +import android.view.MenuItem +import android.view.View +import android.view.ViewGroup +import androidx.appcompat.app.AlertDialog +import androidx.core.net.toUri +import androidx.core.os.bundleOf +import androidx.core.view.isVisible +import androidx.core.widget.doAfterTextChanged +import androidx.fragment.app.DialogFragment +import androidx.lifecycle.lifecycleScope +import com.google.android.material.dialog.MaterialAlertDialogBuilder +import com.google.android.material.snackbar.Snackbar +import com.leos.core.common.extension.clipboardManager +import com.leos.core.common.extension.get +import com.leos.core.common.extension.getMutatedIcon +import com.leos.core.common.nullIfEmpty +import com.leos.core.domain.Repository +import com.leos.droidify.database.Database +import com.leos.droidify.databinding.EditRepositoryBinding +import com.leos.droidify.service.Connection +import com.leos.droidify.service.SyncService +import com.leos.droidify.ui.Message +import com.leos.droidify.ui.MessageDialog +import com.leos.droidify.ui.ScreenFragment +import com.leos.droidify.utility.extension.screenActivity +import com.leos.network.Downloader +import com.leos.network.NetworkResponse +import dagger.hilt.android.AndroidEntryPoint +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.Job +import kotlinx.coroutines.async +import kotlinx.coroutines.awaitAll +import kotlinx.coroutines.coroutineScope +import kotlinx.coroutines.launch +import java.net.URI +import java.net.URISyntaxException +import java.net.URL +import java.nio.charset.Charset +import java.util.Locale +import javax.inject.Inject +import kotlin.math.min +import com.leos.core.common.R as CommonR +import com.leos.core.common.R.string as stringRes + +@AndroidEntryPoint +class EditRepositoryFragment() : ScreenFragment() { + + constructor(repositoryId: Long?, repoAddress: String?) : this() { + arguments = + bundleOf(EXTRA_REPOSITORY_ID to repositoryId, EXTRA_REPOSITORY_ADDRESS to repoAddress) + } + + private var _binding: EditRepositoryBinding? = null + private val binding get() = _binding!! + + private val repoId: Long? + get() = arguments?.getLong(EXTRA_REPOSITORY_ID) + + private val repoAddress: String? + get() = arguments?.getString(EXTRA_REPOSITORY_ADDRESS) + + private var saveMenuItem: MenuItem? = null + + private val syncConnection = Connection(SyncService::class.java) + private var checkInProgress = false + private var checkJob: Job? = null + + private var takenAddresses = emptySet() + + @Inject + lateinit var downloader: Downloader + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + _binding = EditRepositoryBinding.inflate(layoutInflater) + + syncConnection.bind(requireContext()) + + screenActivity.onToolbarCreated(toolbar) + toolbar.title = + getString( + if (repoId != null) stringRes.edit_repository else stringRes.add_repository + ) + + saveMenuItem = toolbar.menu.add(stringRes.save) + .setIcon(toolbar.context.getMutatedIcon(CommonR.drawable.ic_save)) + .setEnabled(false) + .setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_ALWAYS).setOnMenuItemClickListener { + onSaveRepositoryClick(true) + true + } + + val content = fragmentBinding.fragmentContent + + content.addView(binding.root) + + val validChar: (Char) -> Boolean = { it in '0'..'9' || it in 'a'..'f' || it in 'A'..'F' } + + binding.fingerprint.doAfterTextChanged { text -> + fun logicalPosition(text: String, position: Int): Int { + return if (position > 0) { + text.asSequence().take(position) + .count(validChar) + } else { + position + } + } + + fun realPosition(text: String, position: Int): Int { + return if (position > 0) { + var left = position + val index = text.indexOfFirst { + validChar(it) && run { + left -= 1 + left <= 0 + } + } + if (index >= 0) min(index + 1, text.length) else text.length + } else { + position + } + } + + val inputString = text.toString() + val outputString = inputString + .uppercase(Locale.US) + .filter(validChar) + .windowed(2, 2, true).take(32) + .joinToString(separator = " ") + if (inputString != outputString) { + val inputStart = logicalPosition(inputString, Selection.getSelectionStart(text)) + val inputEnd = logicalPosition(inputString, Selection.getSelectionEnd(text)) + text?.replace(0, text.length, outputString) + Selection.setSelection( + text, + realPosition(outputString, inputStart), + realPosition(outputString, inputEnd) + ) + } + } + + if (savedInstanceState == null) { + val repository = repoId?.let(Database.RepositoryAdapter::get) + if (repository == null) { + val text = repoAddress ?: kotlin.run { + context?.clipboardManager?.primaryClip?.takeIf { it.itemCount > 0 } + ?.getItemAt(0)?.text?.toString().orEmpty() + } + val (addressText, fingerprintText) = try { + val uri = URL(text).toString().toUri() + val fingerprintText = uri["fingerprint"]?.nullIfEmpty() + ?: uri["FINGERPRINT"]?.nullIfEmpty() + Pair( + uri.buildUpon().path(uri.path?.pathCropped).query(null).fragment(null) + .build().toString(), + fingerprintText + ) + } catch (e: Exception) { + Pair(null, null) + } + binding.address.setText(addressText) + binding.fingerprint.setText(fingerprintText) + } else { + binding.address.setText(repository.address) + val mirrors = repository.mirrors.map { it.withoutKnownPath } + binding.addressContainer.apply { + isEndIconVisible = mirrors.isNotEmpty() + setEndIconDrawable(CommonR.drawable.ic_arrow_down) + setEndIconOnClickListener { + SelectMirrorDialog(mirrors).show( + childFragmentManager, + SelectMirrorDialog::class.java.name + ) + } + } + binding.fingerprint.setText(repository.fingerprint) + val (usernameText, passwordText) = repository.authentication.nullIfEmpty() + ?.let { if (it.startsWith("Basic ")) it.substring(6) else null }?.let { + try { + Base64.decode(it, Base64.NO_WRAP).toString(Charset.defaultCharset()) + } catch (e: Exception) { + e.printStackTrace() + null + } + }?.let { + val index = it.indexOf(':') + if (index >= 0) { + Pair( + it.substring(0, index), + it.substring(index + 1) + ) + } else { + null + } + } ?: Pair(null, null) + binding.username.setText(usernameText) + binding.password.setText(passwordText) + } + } + + binding.address.doAfterTextChanged { invalidateAddress() } + binding.fingerprint.doAfterTextChanged { invalidateFingerprint() } + binding.username.doAfterTextChanged { invalidateUsernamePassword() } + binding.password.doAfterTextChanged { invalidateUsernamePassword() } + + (binding.overlay.parent as ViewGroup).layoutTransition?.setDuration(200L) + binding.overlay.background!!.apply { + mutate() + alpha = 0xcc + } + binding.skip.setOnClickListener { + if (checkInProgress) { + checkInProgress = false + checkJob?.cancel() + onSaveRepositoryClick(false) + } + } + + viewLifecycleOwner.lifecycleScope.launch { + val list = Database.RepositoryAdapter.getAll() + takenAddresses = list.asSequence().filter { it.id != repoId } + .flatMap { (it.mirrors + it.address).asSequence() } + .map { it.withoutKnownPath } + .toSet() + invalidateAddress() + } + invalidateAddress() + invalidateFingerprint() + invalidateUsernamePassword() + } + + override fun onDestroyView() { + super.onDestroyView() + + saveMenuItem = null + syncConnection.unbind(requireContext()) + _binding = null + } + + private var addressError = false + private var fingerprintError = false + private var usernamePasswordError = false + + private fun invalidateAddress() { + invalidateAddress(binding.address.text.toString()) + } + + private fun invalidateAddress(addressText: String) { + val normalizedAddress = normalizeAddress(addressText) + val addressErrorResId = if (normalizedAddress != null) { + if (normalizedAddress.withoutKnownPath in takenAddresses) { + stringRes.already_exists + } else { + null + } + } else { + stringRes.invalid_address + } + addressError = addressErrorResId != null + addressErrorResId?.let { binding.address.error = getString(it) } + invalidateState() + } + + private fun invalidateFingerprint() { + val fingerprint = binding.fingerprint.text.toString().replace(" ", "") + val fingerprintInvalid = fingerprint.isNotEmpty() && fingerprint.length != 64 + if (fingerprintInvalid) { + binding.fingerprint.error = getString(stringRes.invalid_fingerprint_format) + } + fingerprintError = fingerprintInvalid + invalidateState() + } + + private fun invalidateUsernamePassword() { + val username = binding.username.text.toString() + val password = binding.password.text.toString() + val usernameInvalid = username.contains(':') + val usernameEmpty = username.isEmpty() && password.isNotEmpty() + val passwordEmpty = username.isNotEmpty() && password.isEmpty() + if (usernameEmpty) { + binding.username.error = getString(stringRes.username_missing) + } else if (passwordEmpty) { + binding.password.error = getString(stringRes.password_missing) + } else if (usernameInvalid) { + binding.username.error = getString(stringRes.invalid_username_format) + } + usernamePasswordError = usernameInvalid || usernameEmpty || passwordEmpty + invalidateState() + } + + private fun invalidateState() { + saveMenuItem!!.isEnabled = + !addressError && !fingerprintError && !usernamePasswordError && !checkInProgress + binding.apply { + sequenceOf(address, fingerprint, username, password).forEach { + it.isEnabled = !checkInProgress + } + } + binding.overlay.isVisible = checkInProgress + } + + private val String.pathCropped: String + get() { + val index = indexOfLast { it != '/' } + return if (index >= 0 && index < length - 1) substring(0, index + 1) else this + } + + private val String.withoutKnownPath: String + get() { + val cropped = pathCropped + val endsWith = + addressSuffixes.asSequence() + .sortedByDescending { it.length } + .find { cropped.endsWith("/$it") } + return if (endsWith != null) { + cropped.substring( + 0, + cropped.length - endsWith.length - 1 + ) + } else { + cropped + } + } + + private fun normalizeAddress(address: String): String? { + val uri = try { + val uri = URI(address) + if (uri.isAbsolute) uri.normalize() else null + } catch (e: URISyntaxException) { + return null + } + return try { + uri?.toURL()?.toURI()?.toString()?.removeSuffix("/") + } catch (e: URISyntaxException) { + null + } + } + + private fun setMirror(address: String) { + binding.address.setText(address) + } + + private fun onSaveRepositoryClick(check: Boolean) { + if (!checkInProgress) { + val address = normalizeAddress(binding.address.text.toString())!! + val fingerprint = binding.fingerprint.text.toString().replace(" ", "") + val username = binding.username.text.toString().nullIfEmpty() + val password = binding.password.text.toString().nullIfEmpty() + val authentication = username?.let { u -> + password?.let { p -> + Base64.encodeToString( + "$u:$p".toByteArray(Charset.defaultCharset()), + Base64.NO_WRAP + ) + } + }?.let { "Basic $it" }.orEmpty() + + if (check) { + checkJob = viewLifecycleOwner.lifecycleScope.launch(Dispatchers.Main) { + val resultAddress = try { + checkAddress(address, authentication) + } catch (e: Exception) { + e.printStackTrace() + failedAddressCheck() + null + } + val allow = resultAddress == address || run { + if (resultAddress == null) return@run false + binding.address.setText(resultAddress) + invalidateAddress(resultAddress) + !addressError + } + if (allow && resultAddress != null) { + onSaveRepositoryProceedInvalidate( + resultAddress, + fingerprint, + authentication + ) + } else { + invalidateState() + } + invalidateState() + } + } else { + onSaveRepositoryProceedInvalidate(address, fingerprint, authentication) + } + } + } + + private suspend fun checkAddress( + address: String, + authentication: String + ): String? = coroutineScope { + checkInProgress = true + invalidateState() + val allAddresses = addressSuffixes.map { "$address/$it" } + address + val pathCheck = allAddresses.map { + async { + downloader.headCall( + url = "$it/index-v1.jar", + headers = { authentication(authentication) } + ) is NetworkResponse.Success + } + } + val indexOfValidAddress = pathCheck.awaitAll().indexOf(true) + allAddresses[indexOfValidAddress].nullIfEmpty() + } + + private fun onSaveRepositoryProceedInvalidate( + address: String, + fingerprint: String, + authentication: String + ) { + val binder = syncConnection.binder + if (binder != null) { + val repositoryId = repoId + if (repositoryId != null && binder.isCurrentlySyncing(repositoryId)) { + MessageDialog(Message.CantEditSyncing).show(childFragmentManager) + invalidateState() + } else { + val repository = repositoryId?.let(Database.RepositoryAdapter::get) + ?.edit(address, fingerprint, authentication) + ?: Repository.newRepository(address, fingerprint, authentication) + val changedRepository = Database.RepositoryAdapter.put(repository) + if (repositoryId == null && changedRepository.enabled) { + binder.sync(changedRepository) + } + screenActivity.onBackPressed() + } + } else { + invalidateState() + } + } + + private fun failedAddressCheck() { + checkInProgress = false + invalidateState() + Snackbar.make( + requireView(), + CommonR.string.repository_unreachable, + Snackbar.LENGTH_SHORT + ).show() + } + + class SelectMirrorDialog() : DialogFragment() { + constructor(mirrors: List) : this() { + arguments = bundleOf(EXTRA_MIRRORS to ArrayList(mirrors)) + } + + override fun onCreateDialog(savedInstanceState: Bundle?): AlertDialog { + val mirrors = requireArguments().getStringArrayList(EXTRA_MIRRORS)!! + return MaterialAlertDialogBuilder(requireContext()).setTitle(stringRes.select_mirror) + .setItems(mirrors.toTypedArray()) { _, position -> + (parentFragment as EditRepositoryFragment).setMirror(mirrors[position]) + }.setNegativeButton(stringRes.cancel, null).create() + } + + private companion object { + const val EXTRA_MIRRORS = "mirrors" + } + } + + private companion object { + const val EXTRA_REPOSITORY_ID = "repositoryId" + const val EXTRA_REPOSITORY_ADDRESS = "repositoryAddress" + + val addressSuffixes = listOf("fdroid/repo", "repo") + } +} diff --git a/app/src/main/kotlin/com/leos/droidify/ui/repository/RepositoriesAdapter.kt b/app/src/main/kotlin/com/leos/droidify/ui/repository/RepositoriesAdapter.kt new file mode 100644 index 0000000..c09c7c4 --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/ui/repository/RepositoriesAdapter.kt @@ -0,0 +1,74 @@ +package com.leos.droidify.ui.repository + +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.leos.core.domain.Repository +import com.leos.droidify.database.Database +import com.leos.droidify.databinding.RepositoryItemBinding +import com.leos.droidify.widget.CursorRecyclerAdapter + +class RepositoriesAdapter( + private val navigate: (Repository) -> Unit, + private val onSwitch: (repository: Repository, isEnabled: Boolean) -> Boolean +) : CursorRecyclerAdapter() { + enum class ViewType { REPOSITORY } + + private class ViewHolder(itemView: RepositoryItemBinding) : + RecyclerView.ViewHolder(itemView.root) { + val checkMark = itemView.repositoryState + val repoName = itemView.repositoryName + val repoDesc = itemView.repositoryDescription + + var isEnabled = true + } + + override val viewTypeClass: Class + get() = ViewType::class.java + + override fun getItemEnumViewType(position: Int): ViewType { + return ViewType.REPOSITORY + } + + private fun getRepository(position: Int): Repository { + return Database.RepositoryAdapter.transform(moveTo(position.takeUnless { it < 0 } ?: 0)) + } + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: ViewType + ): RecyclerView.ViewHolder { + return ViewHolder( + RepositoryItemBinding.inflate( + LayoutInflater.from(parent.context), + parent, + false + ) + ).apply { + itemView.setOnLongClickListener { + navigate(getRepository(absoluteAdapterPosition)) + true + } + itemView.setOnClickListener { + isEnabled = !isEnabled + onSwitch(getRepository(absoluteAdapterPosition), isEnabled) + } + } + } + + override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { + holder as ViewHolder + val repository = getRepository(position) + + holder.isEnabled = repository.enabled + holder.repoName.text = repository.name + holder.repoDesc.text = repository.description.trim() + + if (repository.enabled) { + holder.checkMark.visibility = View.VISIBLE + } else { + holder.checkMark.visibility = View.INVISIBLE + } + } +} diff --git a/app/src/main/kotlin/com/leos/droidify/ui/repository/RepositoriesFragment.kt b/app/src/main/kotlin/com/leos/droidify/ui/repository/RepositoriesFragment.kt new file mode 100644 index 0000000..2df3a63 --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/ui/repository/RepositoriesFragment.kt @@ -0,0 +1,98 @@ +package com.leos.droidify.ui.repository + +import android.database.Cursor +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.LinearLayoutManager +import com.leos.core.common.R as CommonR +import com.leos.core.common.extension.dp +import com.leos.core.common.extension.systemBarsMargin +import com.leos.core.common.extension.systemBarsPadding +import com.leos.droidify.database.CursorOwner +import com.leos.droidify.databinding.RecyclerViewWithFabBinding +import com.leos.droidify.service.Connection +import com.leos.droidify.service.SyncService +import com.leos.droidify.ui.ScreenFragment +import com.leos.droidify.utility.extension.screenActivity +import com.leos.droidify.widget.addDivider + +class RepositoriesFragment : ScreenFragment(), CursorOwner.Callback { + + private var _binding: RecyclerViewWithFabBinding? = null + private val binding get() = _binding!! + + private val syncConnection = Connection(SyncService::class.java) + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + super.onCreateView(inflater, container, savedInstanceState) + _binding = RecyclerViewWithFabBinding.inflate(inflater, container, false) + val view = fragmentBinding.root.apply { + binding.scrollUp.apply { + setIconResource(CommonR.drawable.ic_add) + setText(CommonR.string.add_repository) + setOnClickListener { screenActivity.navigateAddRepository() } + systemBarsMargin(16.dp) + } + binding.recyclerView.apply { + layoutManager = LinearLayoutManager(context) + isMotionEventSplittingEnabled = false + setHasFixedSize(true) + adapter = RepositoriesAdapter( + navigate = { screenActivity.navigateRepository(it.id) } + ) { repository, isEnabled -> + repository.enabled != isEnabled && + syncConnection.binder?.setEnabled(repository, isEnabled) == true + } + addDivider { _, _, configuration -> + configuration.set( + needDivider = true, + toTop = false, + paddingStart = 16.dp, + paddingEnd = 16.dp + ) + } + systemBarsPadding() + } + fragmentBinding.fragmentContent.addView(binding.root) + } + handleFab() + return view + } + + private fun handleFab() { + binding.recyclerView.setOnScrollChangeListener { _, _, scrollY, _, oldScrollY -> + if (scrollY > oldScrollY) { + binding.scrollUp.shrink() + } else { + binding.scrollUp.extend() + } + } + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + syncConnection.bind(requireContext()) + screenActivity.cursorOwner.attach(this, CursorOwner.Request.Repositories) + screenActivity.onToolbarCreated(toolbar) + toolbar.title = getString(CommonR.string.repositories) + } + + override fun onDestroyView() { + super.onDestroyView() + + _binding = null + syncConnection.unbind(requireContext()) + screenActivity.cursorOwner.detach(this) + } + + override fun onCursorData(request: CursorOwner.Request, cursor: Cursor?) { + (binding.recyclerView.adapter as RepositoriesAdapter).cursor = cursor + } +} diff --git a/app/src/main/kotlin/com/leos/droidify/ui/repository/RepositoryFragment.kt b/app/src/main/kotlin/com/leos/droidify/ui/repository/RepositoryFragment.kt new file mode 100644 index 0000000..203a94b --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/ui/repository/RepositoryFragment.kt @@ -0,0 +1,168 @@ +package com.leos.droidify.ui.repository + +import android.os.Bundle +import android.text.SpannableStringBuilder +import android.text.format.DateUtils +import android.text.style.ForegroundColorSpan +import android.text.style.TypefaceSpan +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.LinearLayout +import androidx.core.os.bundleOf +import androidx.core.widget.NestedScrollView +import androidx.fragment.app.viewModels +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.lifecycleScope +import androidx.lifecycle.repeatOnLifecycle +import com.leos.core.common.extension.getColorFromAttr +import com.leos.core.common.extension.systemBarsPadding +import com.leos.core.domain.Repository +import com.leos.droidify.databinding.RepositoryPageBinding +import com.leos.droidify.ui.Message +import com.leos.droidify.ui.MessageDialog +import com.leos.droidify.ui.ScreenFragment +import com.leos.droidify.utility.extension.screenActivity +import dagger.hilt.android.AndroidEntryPoint +import kotlinx.coroutines.flow.collectLatest +import kotlinx.coroutines.launch +import java.util.Date +import java.util.Locale +import com.google.android.material.R as MaterialR +import com.leos.core.common.R.string as stringRes + +@AndroidEntryPoint +class RepositoryFragment() : ScreenFragment() { + + private var _binding: RepositoryPageBinding? = null + private val binding get() = _binding!! + + private val viewModel: RepositoryViewModel by viewModels() + + constructor(repositoryId: Long) : this() { + arguments = bundleOf(RepositoryViewModel.ARG_REPO_ID to repositoryId) + } + + private var layout: LinearLayout? = null + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + super.onCreateView(inflater, container, savedInstanceState) + _binding = RepositoryPageBinding.inflate(inflater, container, false) + viewModel.bindService(requireContext()) + screenActivity.onToolbarCreated(toolbar) + toolbar.title = getString(stringRes.repository) + val scroll = NestedScrollView(binding.root.context) + scroll.addView(binding.root) + scroll.systemBarsPadding() + fragmentBinding.fragmentContent.addView(scroll) + viewLifecycleOwner.lifecycleScope.launch { + repeatOnLifecycle(Lifecycle.State.RESUMED) { + viewModel.state.collectLatest { + setupView(it.repo, it.appCount) + } + } + } + return fragmentBinding.root + } + + override fun onDestroyView() { + super.onDestroyView() + + layout = null + viewModel.unbindService(requireContext()) + } + + private fun setupView(repository: Repository?, appCount: Int) { + with(binding) { + address.title.setText(stringRes.address) + if (repository == null) { + address.text.text = getString(stringRes.unknown) + } else { + repoSwitch.isChecked = repository.enabled + repoSwitch.setOnCheckedChangeListener { _, isChecked -> + viewModel.enabledRepository(isChecked) + } + + address.text.text = repository.address + toolbar.title = repository.name + repoName.title.setText(stringRes.name) + repoName.text.text = repository.name + + repoDescription.title.setText(stringRes.description) + repoDescription.text.text = repository.description.replace('\n', ' ').trim() + + recentlyUpdated.title.setText(stringRes.recently_updated) + recentlyUpdated.text.text = run { + val lastUpdated = repository.updated + if (lastUpdated > 0L) { + val date = Date(repository.updated) + val format = + if (DateUtils.isToday(date.time)) { + DateUtils.FORMAT_SHOW_TIME + } else { + DateUtils.FORMAT_SHOW_TIME or DateUtils.FORMAT_SHOW_DATE + } + DateUtils.formatDateTime(requireContext(), date.time, format) + } else { + getString(stringRes.unknown) + } + } + + numberOfApps.title.setText(stringRes.number_of_applications) + numberOfApps.text.text = appCount.toString() + + repoFingerprint.title.setText(stringRes.fingerprint) + if (repository.fingerprint.isEmpty()) { + if (repository.updated > 0L) { + val builder = + SpannableStringBuilder(getString(stringRes.repository_unsigned_DESC)) + builder.setSpan( + ForegroundColorSpan( + requireContext() + .getColorFromAttr(MaterialR.attr.colorError) + .defaultColor + ), + 0, + builder.length, + SpannableStringBuilder.SPAN_EXCLUSIVE_EXCLUSIVE + ) + repoFingerprint.text.text = builder + } + } else { + val fingerprint = + SpannableStringBuilder( + repository.fingerprint.windowed(2, 2, false) + .take(32).joinToString(separator = " ") { it.uppercase(Locale.US) } + ) + fingerprint.setSpan( + TypefaceSpan("monospace"), + 0, + fingerprint.length, + SpannableStringBuilder.SPAN_EXCLUSIVE_EXCLUSIVE + ) + repoFingerprint.text.text = fingerprint + } + } + + editRepoButton.setOnClickListener { + screenActivity.navigateEditRepository(viewModel.id) + } + + deleteRepoButton.setOnClickListener { + MessageDialog( + Message.DeleteRepositoryConfirm + ).show(childFragmentManager) + } + } + } + + internal fun onDeleteConfirm() { + viewModel.deleteRepository( + onDelete = { requireActivity().onBackPressed() } + ) + } +} diff --git a/app/src/main/kotlin/com/leos/droidify/ui/repository/RepositoryViewModel.kt b/app/src/main/kotlin/com/leos/droidify/ui/repository/RepositoryViewModel.kt new file mode 100644 index 0000000..f6689b8 --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/ui/repository/RepositoryViewModel.kt @@ -0,0 +1,64 @@ +package com.leos.droidify.ui.repository + +import android.content.Context +import androidx.lifecycle.SavedStateHandle +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.leos.core.common.extension.asStateFlow +import com.leos.core.domain.Repository +import com.leos.droidify.database.Database +import com.leos.droidify.service.Connection +import com.leos.droidify.service.SyncService +import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.first +import kotlinx.coroutines.launch +import javax.inject.Inject + +@HiltViewModel +class RepositoryViewModel @Inject constructor( + savedStateHandle: SavedStateHandle +) : ViewModel() { + + val id: Long = savedStateHandle[ARG_REPO_ID] ?: -1 + + private val repoStream = Database.RepositoryAdapter.getStream(id) + + private val countStream = Database.ProductAdapter.getCountStream(id) + + val state = combine(repoStream, countStream) { repo, count -> + RepositoryPageItem(repo, count) + }.asStateFlow(RepositoryPageItem()) + + private val syncConnection = Connection(SyncService::class.java) + + fun bindService(context: Context) { + syncConnection.bind(context) + } + + fun unbindService(context: Context) { + syncConnection.unbind(context) + } + + fun enabledRepository(enable: Boolean) { + viewModelScope.launch { + val repo = repoStream.first { it != null }!! + syncConnection.binder?.setEnabled(repo, enable) + } + } + + fun deleteRepository(onDelete: () -> Unit) { + if (syncConnection.binder?.deleteRepository(id) == true) { + onDelete() + } + } + + companion object { + const val ARG_REPO_ID = "repo_id" + } +} + +data class RepositoryPageItem( + val repo: Repository? = null, + val appCount: Int = 0 +) diff --git a/app/src/main/kotlin/com/leos/droidify/ui/settings/SettingsFragment.kt b/app/src/main/kotlin/com/leos/droidify/ui/settings/SettingsFragment.kt new file mode 100644 index 0000000..e10ec61 --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/ui/settings/SettingsFragment.kt @@ -0,0 +1,493 @@ +package com.leos.droidify.ui.settings + +import android.content.Context +import android.content.Intent +import android.net.Uri +import android.os.Bundle +import android.view.* +import androidx.activity.result.contract.ActivityResultContracts.CreateDocument +import androidx.activity.result.contract.ActivityResultContracts.OpenDocument +import androidx.annotation.DrawableRes +import androidx.annotation.StringRes +import androidx.appcompat.app.AlertDialog +import androidx.core.view.isVisible +import androidx.core.widget.NestedScrollView +import androidx.fragment.app.Fragment +import androidx.fragment.app.viewModels +import androidx.lifecycle.* +import com.google.android.material.dialog.MaterialAlertDialogBuilder +import com.google.android.material.snackbar.Snackbar +import com.google.android.material.textfield.TextInputEditText +import com.leos.core.common.BuildConfig as CommonBuildConfig +import com.leos.core.common.R as CommonR +import com.leos.core.common.SdkCheck +import com.leos.core.common.extension.homeAsUp +import com.leos.core.common.extension.systemBarsPadding +import com.leos.core.common.extension.updateAsMutable +import com.leos.core.datastore.Settings +import com.leos.core.datastore.extension.* +import com.leos.core.datastore.model.* +import com.leos.droidify.BuildConfig +import com.leos.droidify.databinding.EnumTypeBinding +import com.leos.droidify.databinding.SettingsPageBinding +import com.leos.droidify.databinding.SwitchTypeBinding +import dagger.hilt.android.AndroidEntryPoint +import java.util.Locale +import kotlin.time.Duration +import kotlin.time.Duration.Companion.days +import kotlin.time.Duration.Companion.hours +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.launch + +@AndroidEntryPoint +class SettingsFragment : Fragment() { + + companion object { + fun newInstance() = SettingsFragment() + + private const val BACKUP_MIME_TYPE = "application/json" + private const val REPO_BACKUP_NAME = "droidify_repos.json" + private const val SETTINGS_BACKUP_NAME = "droidify_settings.json" + + private val localeCodesList: List = CommonBuildConfig.DETECTED_LOCALES + .toList() + .updateAsMutable { add(0, "system") } + + private const val FOXY_DROID_TITLE = "FoxyDroid" + private const val FOXY_DROID_URL = "https://github.com/kitsunyan/foxy-droid" + + private const val DROID_IFY_TITLE = "LeOS-Droid" + private const val DROID_IFY_URL = "https://github.com/LeOS-GSI/LeOS-Droid-ify" + } + + private val viewModel: SettingsViewModel by viewModels() + private var _binding: SettingsPageBinding? = null + private val binding get() = _binding!! + + private val createExportFileForSettings = + registerForActivityResult(CreateDocument(BACKUP_MIME_TYPE)) { fileUri -> + if (fileUri != null) { + viewModel.exportSettings(fileUri) + } + } + + private val openImportFileForSettings = + registerForActivityResult(OpenDocument()) { fileUri -> + if (fileUri != null) { + viewModel.importSettings(fileUri) + } else { + viewModel.createSnackbar(CommonR.string.file_format_error_DESC) + } + } + + private val createExportFileForRepos = + registerForActivityResult(CreateDocument(BACKUP_MIME_TYPE)) { fileUri -> + if (fileUri != null) { + viewModel.exportRepos(fileUri) + } + } + + private val openImportFileForRepos = + registerForActivityResult(OpenDocument()) { fileUri -> + if (fileUri != null) { + viewModel.importRepos(fileUri) + } else { + viewModel.createSnackbar(CommonR.string.file_format_error_DESC) + } + } + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + _binding = SettingsPageBinding.inflate(inflater, container, false) + binding.nestedScrollView.systemBarsPadding() + val toolbar = binding.toolbar + toolbar.navigationIcon = toolbar.context.homeAsUp + toolbar.setNavigationOnClickListener { activity?.onBackPressed() } + toolbar.title = getString(CommonR.string.settings) + with(binding) { + dynamicTheme.root.isVisible = SdkCheck.isSnowCake + dynamicTheme.connect( + titleText = getString(CommonR.string.material_you), + contentText = getString(CommonR.string.material_you_desc), + setting = viewModel.getInitialSetting { dynamicTheme } + ) + homeScreenSwiping.connect( + titleText = getString(CommonR.string.home_screen_swiping), + contentText = getString(CommonR.string.home_screen_swiping_DESC), + setting = viewModel.getInitialSetting { homeScreenSwiping } + ) + autoUpdate.connect( + titleText = getString(CommonR.string.auto_update), + contentText = getString(CommonR.string.auto_update_apps), + setting = viewModel.getInitialSetting { autoUpdate } + ) + notifyUpdates.connect( + titleText = getString(CommonR.string.notify_about_updates), + contentText = getString(CommonR.string.notify_about_updates_summary), + setting = viewModel.getInitialSetting { notifyUpdate } + ) + unstableUpdates.connect( + titleText = getString(CommonR.string.unstable_updates), + contentText = getString(CommonR.string.unstable_updates_summary), + setting = viewModel.getInitialSetting { unstableUpdate } + ) + incompatibleUpdates.connect( + titleText = getString(CommonR.string.incompatible_versions), + contentText = getString(CommonR.string.incompatible_versions_summary), + setting = viewModel.getInitialSetting { incompatibleVersions } + ) + language.connect( + titleText = getString(CommonR.string.prefs_language_title), + map = { translateLocale(getLocaleOfCode(it)) }, + setting = viewModel.getSetting { language } + ) { selectedLocale, valueToString -> + addSingleCorrectDialog( + initialValue = selectedLocale, + values = localeCodesList, + title = CommonR.string.prefs_language_title, + iconRes = CommonR.drawable.ic_language, + valueToString = valueToString, + onClick = viewModel::setLanguage + ) + } + theme.connect( + titleText = getString(CommonR.string.theme), + setting = viewModel.getSetting { theme }, + map = { themeName(it) } + ) { theme, valueToString -> + addSingleCorrectDialog( + initialValue = theme, + values = Theme.entries, + title = CommonR.string.themes, + iconRes = CommonR.drawable.ic_themes, + valueToString = valueToString, + onClick = viewModel::setTheme + ) + } + cleanUp.connect( + titleText = getString(CommonR.string.cleanup_title), + setting = viewModel.getSetting { cleanUpInterval }, + map = { toTime(it) } + ) { duration, valueToString -> + addSingleCorrectDialog( + initialValue = duration, + values = cleanUpIntervals, + title = CommonR.string.cleanup_title, + iconRes = CommonR.drawable.ic_time, + valueToString = valueToString, + onClick = viewModel::setCleanUpInterval + ) + } + autoSync.connect( + titleText = getString(CommonR.string.sync_repositories_automatically), + setting = viewModel.getSetting { autoSync }, + map = { autoSyncName(it) } + ) { autoSync, valueToString -> + addSingleCorrectDialog( + initialValue = autoSync, + values = AutoSync.entries, + title = CommonR.string.sync_repositories_automatically, + iconRes = CommonR.drawable.ic_sync_type, + valueToString = valueToString, + onClick = viewModel::setAutoSync + ) + } + installer.connect( + titleText = getString(CommonR.string.installer), + setting = viewModel.getSetting { installerType }, + map = { installerName(it) } + ) { installerType, valueToString -> + addSingleCorrectDialog( + initialValue = installerType, + values = InstallerType.entries, + title = CommonR.string.installer, + iconRes = CommonR.drawable.ic_apk_install, + valueToString = valueToString, + onClick = viewModel::setInstaller + ) + } + proxyType.connect( + titleText = getString(CommonR.string.proxy_type), + setting = viewModel.getSetting { proxy.type }, + map = { proxyName(it) } + ) { proxyType, valueToString -> + addSingleCorrectDialog( + initialValue = proxyType, + values = ProxyType.entries, + title = CommonR.string.proxy_type, + iconRes = CommonR.drawable.ic_proxy, + valueToString = valueToString, + onClick = viewModel::setProxyType + ) + } + proxyHost.connect( + titleText = getString(CommonR.string.proxy_host), + setting = viewModel.getSetting { proxy.host }, + map = { it } + ) { host, _ -> + addEditTextDialog( + initialValue = host, + title = CommonR.string.proxy_host, + onFinish = viewModel::setProxyHost + ) + } + proxyPort.connect( + titleText = getString(CommonR.string.proxy_port), + setting = viewModel.getSetting { proxy.port }, + map = { it.toString() } + ) { port, _ -> + addEditTextDialog( + initialValue = port.toString(), + title = CommonR.string.proxy_port, + onFinish = viewModel::setProxyPort + ) + } + + forceCleanUp.title.text = getString(CommonR.string.force_clean_up) + forceCleanUp.content.text = getString(CommonR.string.force_clean_up_DESC) + + importSettings.title.text = getString(CommonR.string.import_settings_title) + importSettings.content.text = getString(CommonR.string.import_settings_DESC) + exportSettings.title.text = getString(CommonR.string.export_settings_title) + exportSettings.content.text = getString(CommonR.string.export_settings_DESC) + + importRepos.title.text = getString(CommonR.string.import_repos_title) + importRepos.content.text = getString(CommonR.string.import_repos_DESC) + exportRepos.title.text = getString(CommonR.string.export_repos_title) + exportRepos.content.text = getString(CommonR.string.export_repos_DESC) + + creditFoxy.title.text = getString(CommonR.string.special_credits) + creditFoxy.content.text = FOXY_DROID_TITLE + droidify.title.text = DROID_IFY_TITLE + droidify.content.text = BuildConfig.VERSION_NAME + } + setChangeListener() + viewLifecycleOwner.lifecycleScope.launch { + repeatOnLifecycle(Lifecycle.State.RESUMED) { + launch { + viewModel.snackbarStringId.collect { + Snackbar.make(binding.root, it, Snackbar.LENGTH_LONG).show() + } + } + launch { + viewModel.settingsFlow.collect(::updateSettings) + } + } + } + return binding.root + } + + override fun onDestroyView() { + super.onDestroyView() + _binding = null + } + + private fun setChangeListener() { + with(binding) { + dynamicTheme.checked.setOnCheckedChangeListener { _, checked -> + viewModel.setDynamicTheme(checked) + } + homeScreenSwiping.checked.setOnCheckedChangeListener { _, checked -> + viewModel.setHomeScreenSwiping(checked) + } + notifyUpdates.checked.setOnCheckedChangeListener { _, checked -> + viewModel.setNotifyUpdates(checked) + } + autoUpdate.checked.setOnCheckedChangeListener { _, checked -> + viewModel.setAutoUpdate(checked) + } + unstableUpdates.checked.setOnCheckedChangeListener { _, checked -> + viewModel.setUnstableUpdates(checked) + } + incompatibleUpdates.checked.setOnCheckedChangeListener { _, checked -> + viewModel.setIncompatibleUpdates(checked) + } + forceCleanUp.root.setOnClickListener { + viewModel.forceCleanup(it.context) + } + importSettings.root.setOnClickListener { + openImportFileForSettings.launch(arrayOf(BACKUP_MIME_TYPE)) + } + exportSettings.root.setOnClickListener { + createExportFileForSettings.launch(SETTINGS_BACKUP_NAME) + } + importRepos.root.setOnClickListener { + openImportFileForRepos.launch(arrayOf(BACKUP_MIME_TYPE)) + } + exportRepos.root.setOnClickListener { + createExportFileForRepos.launch(REPO_BACKUP_NAME) + } + creditFoxy.root.setOnClickListener { + openLink(FOXY_DROID_URL) + } + droidify.root.setOnClickListener { + openLink(DROID_IFY_URL) + } + } + } + + private fun updateSettings(settings: Settings) { + with(binding) { + val allowProxies = settings.proxy.type != ProxyType.DIRECT + proxyHost.root.isVisible = allowProxies + proxyPort.root.isVisible = allowProxies + forceCleanUp.root.isVisible = settings.cleanUpInterval == Duration.INFINITE + } + } + + private val cleanUpIntervals = + listOf(6.hours, 12.hours, 18.hours, 1.days, 2.days, Duration.INFINITE) + + private fun translateLocale(locale: Locale?): String { + val country = locale?.getDisplayCountry(locale) + val language = locale?.getDisplayLanguage(locale) + val languageDisplay = if (locale != null) { + ( + language?.replaceFirstChar { it.uppercase(Locale.getDefault()) } + + ( + if (country?.isNotEmpty() == true && country.compareTo( + language.toString(), + true + ) != 0 + ) { + "($country)" + } else { + "" + } + ) + ) + } else { + getString(CommonR.string.system) + } + return languageDisplay + } + + private fun openLink(link: String) { + try { + startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(link))) + } catch (e: IllegalStateException) { + viewModel.createSnackbar(CommonR.string.cannot_open_link) + } + } + + @Suppress("DEPRECATION") + private fun Context.getLocaleOfCode(localeCode: String): Locale? = when { + localeCode.isEmpty() -> if (SdkCheck.isNougat) { + resources.configuration.locales[0] + } else { + resources.configuration.locale + } + + localeCode.contains("-r") -> Locale( + localeCode.substring(0, 2), + localeCode.substring(4) + ) + + localeCode.contains("_") -> Locale( + localeCode.substring(0, 2), + localeCode.substring(3) + ) + + localeCode == "system" -> null + else -> Locale(localeCode) + } + + private fun EnumTypeBinding.connect( + titleText: String, + setting: Flow, + map: Context.(T) -> String, + dialog: View.(T, valueToString: Context.(T) -> String) -> AlertDialog + ) { + title.text = titleText + viewLifecycleOwner.lifecycleScope.launch { + repeatOnLifecycle(Lifecycle.State.RESUMED) { + setting.collect { + with(root.context) { + content.text = map(it) + } + root.setOnClickListener { _ -> + root.dialog(it, map).show() + } + } + } + } + } + + private fun SwitchTypeBinding.connect( + titleText: String, + contentText: String, + setting: Flow + ) { + title.text = titleText + content.text = contentText + root.setOnClickListener { + checked.isChecked = !checked.isChecked + } + viewLifecycleOwner.lifecycleScope.launch { + repeatOnLifecycle(Lifecycle.State.RESUMED) { + setting.collect { + checked.isChecked = it + } + } + } + } + + private fun View.addSingleCorrectDialog( + initialValue: T, + values: List, + @StringRes title: Int, + @DrawableRes iconRes: Int, + onClick: (T) -> Unit, + valueToString: Context.(T) -> String + ) = MaterialAlertDialogBuilder(context) + .setTitle(title) + .setIcon(iconRes) + .setSingleChoiceItems( + values.map { context.valueToString(it) }.toTypedArray(), + values.indexOf(initialValue) + ) { dialog, newValue -> + dialog.dismiss() + post { + onClick(values.elementAt(newValue)) + } + } + .setNegativeButton(CommonR.string.cancel, null) + .create() + + private fun View.addEditTextDialog( + initialValue: String, + @StringRes title: Int, + onFinish: (String) -> Unit + ): AlertDialog { + val scroll = NestedScrollView(context) + val customEditText = TextInputEditText(context) + customEditText.id = android.R.id.edit + val paddingValue = context.resources.getDimension(CommonR.dimen.shape_margin_large).toInt() + scroll.setPadding(paddingValue, 0, paddingValue, 0) + customEditText.setText(initialValue) + customEditText.hint = customEditText.text.toString() + customEditText.text?.let { editable -> customEditText.setSelection(editable.length) } + customEditText.requestFocus() + scroll.addView( + customEditText, + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.WRAP_CONTENT + ) + return MaterialAlertDialogBuilder(context) + .setTitle(title) + .setView(scroll) + .setPositiveButton(CommonR.string.ok) { _, _ -> + post { onFinish(customEditText.text.toString()) } + } + .setNegativeButton(CommonR.string.cancel, null) + .create() + .apply { + window!!.setSoftInputMode( + WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE + ) + } + } +} diff --git a/app/src/main/kotlin/com/leos/droidify/ui/settings/SettingsViewModel.kt b/app/src/main/kotlin/com/leos/droidify/ui/settings/SettingsViewModel.kt new file mode 100644 index 0000000..8965d05 --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/ui/settings/SettingsViewModel.kt @@ -0,0 +1,197 @@ +package com.leos.droidify.ui.settings + +import android.content.Context +import android.net.Uri +import androidx.annotation.StringRes +import androidx.appcompat.app.AppCompatDelegate +import androidx.core.os.LocaleListCompat +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.leos.core.common.extension.toLocale +import com.leos.core.datastore.Settings +import com.leos.core.datastore.SettingsRepository +import com.leos.core.datastore.get +import com.leos.core.datastore.model.AutoSync +import com.leos.core.datastore.model.InstallerType +import com.leos.core.datastore.model.ProxyType +import com.leos.core.datastore.model.Theme +import com.leos.droidify.database.Database +import com.leos.droidify.database.RepositoryExporter +import com.leos.droidify.work.CleanUpWorker +import com.leos.installer.installers.shizuku.ShizukuPermissionHandler +import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.cancel +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.MutableSharedFlow +import kotlinx.coroutines.flow.asSharedFlow +import kotlinx.coroutines.flow.first +import kotlinx.coroutines.flow.flow +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.launch +import javax.inject.Inject +import kotlin.time.Duration +import com.leos.core.common.R as CommonR + +@HiltViewModel +class SettingsViewModel +@Inject constructor( + private val settingsRepository: SettingsRepository, + private val shizukuPermissionHandler: ShizukuPermissionHandler, + private val repositoryExporter: RepositoryExporter +) : ViewModel() { + + private val initialSetting = flow { + emit(settingsRepository.getInitial()) + } + val settingsFlow get() = settingsRepository.data + + private val _snackbarStringId = MutableSharedFlow() + val snackbarStringId = _snackbarStringId.asSharedFlow() + + fun getSetting(block: Settings.() -> T): Flow = settingsRepository.get(block) + + fun getInitialSetting(block: Settings.() -> T): Flow = initialSetting.map { it.block() } + + fun setLanguage(language: String) { + viewModelScope.launch { + val appLocale = LocaleListCompat.create(language.toLocale()) + AppCompatDelegate.setApplicationLocales(appLocale) + settingsRepository.setLanguage(language) + } + } + + fun setTheme(theme: Theme) { + viewModelScope.launch { + settingsRepository.setTheme(theme) + } + } + + fun setDynamicTheme(enable: Boolean) { + viewModelScope.launch { + settingsRepository.setDynamicTheme(enable) + } + } + + fun setHomeScreenSwiping(enable: Boolean) { + viewModelScope.launch { + settingsRepository.setHomeScreenSwiping(enable) + } + } + + fun setCleanUpInterval(interval: Duration) { + viewModelScope.launch { + settingsRepository.setCleanUpInterval(interval) + } + } + + fun forceCleanup(context: Context) { + viewModelScope.launch { + CleanUpWorker.force(context) + } + } + + fun setAutoSync(autoSync: AutoSync) { + viewModelScope.launch { + settingsRepository.setAutoSync(autoSync) + } + } + + fun setNotifyUpdates(enable: Boolean) { + viewModelScope.launch { + settingsRepository.enableNotifyUpdates(enable) + } + } + + fun setAutoUpdate(enable: Boolean) { + viewModelScope.launch { + settingsRepository.setAutoUpdate(enable) + } + } + + fun setUnstableUpdates(enable: Boolean) { + viewModelScope.launch { + settingsRepository.enableUnstableUpdates(enable) + } + } + + fun setIncompatibleUpdates(enable: Boolean) { + viewModelScope.launch { + settingsRepository.enableIncompatibleVersion(enable) + } + } + + fun setProxyType(proxyType: ProxyType) { + viewModelScope.launch { + settingsRepository.setProxyType(proxyType) + } + } + + fun setProxyHost(proxyHost: String) { + viewModelScope.launch { + settingsRepository.setProxyHost(proxyHost) + } + } + + fun setProxyPort(proxyPort: String) { + viewModelScope.launch { + try { + settingsRepository.setProxyPort(proxyPort.toInt()) + } catch (e: NumberFormatException) { + createSnackbar(CommonR.string.proxy_port_error_not_int) + } + } + } + + fun setInstaller(installerType: InstallerType) { + viewModelScope.launch { + settingsRepository.setInstallerType(installerType) + if (installerType == InstallerType.SHIZUKU) handleShizuku() + } + } + + fun exportSettings(file: Uri) { + viewModelScope.launch { + settingsRepository.export(file) + } + } + + fun importSettings(file: Uri) { + viewModelScope.launch { + settingsRepository.import(file) + } + } + + fun exportRepos(file: Uri) { + viewModelScope.launch { + val repos = Database.RepositoryAdapter.getAll() + repositoryExporter.export(repos, file) + } + } + + fun importRepos(file: Uri) { + viewModelScope.launch { + val repos = repositoryExporter.import(file) + Database.RepositoryAdapter.importRepos(repos) + } + } + + fun createSnackbar(@StringRes message: Int) { + viewModelScope.launch { + _snackbarStringId.emit(message) + } + } + + private fun handleShizuku() { + viewModelScope.launch { + val state = shizukuPermissionHandler.state.first() + if (state.isAlive && state.isPermissionGranted) cancel() + if (state.isInstalled) { + if (!state.isAlive) { + createSnackbar(CommonR.string.shizuku_not_alive) + } + } else { + createSnackbar(CommonR.string.shizuku_not_installed) + } + } + } +} diff --git a/app/src/main/kotlin/com/leos/droidify/ui/tabsFragment/TabsFragment.kt b/app/src/main/kotlin/com/leos/droidify/ui/tabsFragment/TabsFragment.kt new file mode 100644 index 0000000..7b0f19e --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/ui/tabsFragment/TabsFragment.kt @@ -0,0 +1,635 @@ +package com.leos.droidify.ui.tabsFragment + +import android.animation.ValueAnimator +import android.content.Context +import android.content.res.ColorStateList +import android.os.Build +import android.os.Bundle +import android.view.Gravity +import android.view.MenuItem +import android.view.View +import android.view.ViewGroup +import android.view.animation.DecelerateInterpolator +import android.widget.FrameLayout +import android.widget.TextView +import androidx.appcompat.widget.SearchView +import androidx.core.view.isVisible +import androidx.fragment.app.Fragment +import androidx.fragment.app.viewModels +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.lifecycleScope +import androidx.lifecycle.repeatOnLifecycle +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import androidx.viewpager2.adapter.FragmentStateAdapter +import androidx.viewpager2.widget.ViewPager2 +import com.google.android.material.elevation.SurfaceColors +import com.google.android.material.shape.MaterialShapeDrawable +import com.google.android.material.shape.ShapeAppearanceModel +import com.google.android.material.tabs.TabLayoutMediator +import com.leos.core.common.R as CommonR +import com.leos.core.common.R.string as stringRes +import com.leos.core.common.device.Huawei +import com.leos.core.common.extension.dp +import com.leos.core.common.extension.getMutatedIcon +import com.leos.core.common.extension.selectableBackground +import com.leos.core.common.extension.systemBarsPadding +import com.leos.core.common.sdkAbove +import com.leos.core.datastore.extension.sortOrderName +import com.leos.core.datastore.model.SortOrder +import com.leos.core.domain.ProductItem +import com.leos.droidify.R +import com.leos.droidify.databinding.TabsToolbarBinding +import com.leos.droidify.service.Connection +import com.leos.droidify.service.SyncService +import com.leos.droidify.ui.ScreenFragment +import com.leos.droidify.ui.appList.AppListFragment +import com.leos.droidify.utility.extension.resources.sizeScaled +import com.leos.droidify.utility.extension.screenActivity +import com.leos.droidify.widget.DividerConfiguration +import com.leos.droidify.widget.FocusSearchView +import com.leos.droidify.widget.StableRecyclerAdapter +import com.leos.droidify.widget.addDivider +import dagger.hilt.android.AndroidEntryPoint +import kotlin.math.abs +import kotlin.math.roundToInt +import kotlinx.coroutines.launch + +@AndroidEntryPoint +class TabsFragment : ScreenFragment() { + + private var _tabsBinding: TabsToolbarBinding? = null + private val tabsBinding get() = _tabsBinding!! + + private val viewModel: TabsViewModel by viewModels() + + companion object { + private const val STATE_SEARCH_FOCUSED = "searchFocused" + private const val STATE_SEARCH_QUERY = "searchQuery" + private const val STATE_SHOW_SECTIONS = "showSections" + } + + private class Layout(view: TabsToolbarBinding) { + val tabs = view.tabs + val sectionLayout = view.sectionLayout + val sectionChange = view.sectionChange + val sectionName = view.sectionName + val sectionIcon = view.sectionIcon + } + + private var favouritesItem: MenuItem? = null + private var searchMenuItem: MenuItem? = null + private var sortOrderMenu: Pair>? = null + private var syncRepositoriesMenuItem: MenuItem? = null + private var layout: Layout? = null + private var sectionsList: RecyclerView? = null + private var sectionsAdapter: SectionsAdapter? = null + private var viewPager: ViewPager2? = null + + private var showSections = false + set(value) { + if (field != value) { + field = value + val layout = layout + layout?.tabs?.let { + (0 until it.childCount) + .forEach { index -> it.getChildAt(index)!!.isEnabled = !value } + } + layout?.sectionIcon?.scaleY = if (value) -1f else 1f + if (((sectionsList?.parent as? View)?.height ?: 0) > 0) { + animateSectionsList() + } + } + } + + private var searchQuery = "" + + private val syncConnection = Connection( + serviceClass = SyncService::class.java, + onBind = { _, _ -> + viewPager?.let { + val source = AppListFragment.Source.entries[it.currentItem] + updateUpdateNotificationBlocker(source) + } + } + ) + + private var sectionsAnimator: ValueAnimator? = null + + private var needSelectUpdates = false + + private val productFragments: Sequence + get() = if (host == null) { + emptySequence() + } else { + childFragmentManager.fragments.asSequence().mapNotNull { it as? AppListFragment } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + _tabsBinding = TabsToolbarBinding.inflate(layoutInflater) + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + syncConnection.bind(requireContext()) + + sectionsAdapter = SectionsAdapter { + if (showSections) { + viewModel.setSection(it) + sectionsList?.scrollToPosition(0) + showSections = false + } + } + + screenActivity.onToolbarCreated(toolbar) + toolbar.title = getString(R.string.application_name) + // Move focus from SearchView to Toolbar + toolbar.isFocusable = true + + val searchView = FocusSearchView(toolbar.context).apply { + maxWidth = Int.MAX_VALUE + queryHint = getString(stringRes.search) + setOnQueryTextListener(object : SearchView.OnQueryTextListener { + override fun onQueryTextSubmit(query: String?): Boolean { + clearFocus() + return true + } + + override fun onQueryTextChange(newText: String?): Boolean { + if (isResumed) { + searchQuery = newText.orEmpty() + productFragments.forEach { it.setSearchQuery(newText.orEmpty()) } + } + return true + } + }) + } + + toolbar.menu.apply { + if (!Huawei.isHuaweiEmui) { + sdkAbove(Build.VERSION_CODES.P) { + setGroupDividerEnabled(true) + } + } + + searchMenuItem = add(0, R.id.toolbar_search, 0, stringRes.search) + .setIcon(toolbar.context.getMutatedIcon(CommonR.drawable.ic_search)) + .setActionView(searchView) + .setShowAsActionFlags( + MenuItem.SHOW_AS_ACTION_ALWAYS or MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW + ) + + syncRepositoriesMenuItem = add(0, 0, 0, stringRes.sync_repositories) + .setIcon(toolbar.context.getMutatedIcon(CommonR.drawable.ic_sync)) + .setOnMenuItemClickListener { + syncConnection.binder?.sync(SyncService.SyncRequest.MANUAL) + true + } + + sortOrderMenu = addSubMenu(0, 0, 0, stringRes.sorting_order) + .setIcon(toolbar.context.getMutatedIcon(CommonR.drawable.ic_sort)) + .let { menu -> + menu.item.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_ALWAYS) + val menuItems = SortOrder.entries.map { sortOrder -> + menu.add(context.sortOrderName(sortOrder)) + .setOnMenuItemClickListener { + viewModel.setSortOrder(sortOrder) + true + } + } + menu.setGroupCheckable(0, true, true) + Pair(menu.item, menuItems) + } + + favouritesItem = add(1, 0, 0, stringRes.favourites) + .setIcon( + toolbar.context.getMutatedIcon(CommonR.drawable.ic_favourite_checked) + ) + .setOnMenuItemClickListener { + view.post { screenActivity.navigateFavourites() } + true + } + + add(1, 0, 0, stringRes.repositories) + .setOnMenuItemClickListener { + view.post { screenActivity.navigateRepositories() } + true + } + + add(1, 0, 0, stringRes.settings) + .setOnMenuItemClickListener { + view.post { screenActivity.navigatePreferences() } + true + } + } + + searchQuery = savedInstanceState?.getString(STATE_SEARCH_QUERY).orEmpty() + productFragments.forEach { it.setSearchQuery(searchQuery) } + + val toolbarExtra = fragmentBinding.toolbarExtra + toolbarExtra.addView(tabsBinding.root) + val layout = Layout(tabsBinding) + this.layout = layout + + showSections = (savedInstanceState?.getByte(STATE_SHOW_SECTIONS)?.toInt() ?: 0) != 0 + + val content = fragmentBinding.fragmentContent + + viewPager = ViewPager2(content.context).apply { + id = R.id.fragment_pager + adapter = object : FragmentStateAdapter(this@TabsFragment) { + override fun getItemCount(): Int = AppListFragment.Source.entries.size + override fun createFragment(position: Int): Fragment = AppListFragment( + AppListFragment.Source.entries[position] + ) + } + content.addView(this) + registerOnPageChangeCallback(pageChangeCallback) + offscreenPageLimit = 1 + } + + viewPager?.let { + TabLayoutMediator(layout.tabs, it) { tab, position -> + tab.text = getString(AppListFragment.Source.entries[position].titleResId) + }.attach() + } + + viewLifecycleOwner.lifecycleScope.launch { + repeatOnLifecycle(Lifecycle.State.CREATED) { + launch { + viewModel.sections.collect(::updateSections) + } + launch { + viewModel.sortOrder.collect(::updateOrder) + } + launch { + viewModel.currentSection.collect(::updateSection) + } + launch { + viewModel.allowHomeScreenSwiping.collect { + viewPager?.isUserInputEnabled = it + } + } + } + } + + val backgroundPath = ShapeAppearanceModel.builder() + .setAllCornerSizes( + context?.resources?.getDimension(CommonR.dimen.shape_large_corner) ?: 0F + ) + .build() + val sectionBackground = MaterialShapeDrawable(backgroundPath) + val color = SurfaceColors.SURFACE_3.getColor(requireContext()) + sectionBackground.fillColor = ColorStateList.valueOf(color) + val sectionsList = RecyclerView(toolbar.context).apply { + id = R.id.sections_list + layoutManager = LinearLayoutManager(context) + isMotionEventSplittingEnabled = false + isVerticalScrollBarEnabled = false + setHasFixedSize(true) + adapter = sectionsAdapter + sectionsAdapter?.let { addDivider(it::configureDivider) } + background = sectionBackground + elevation = 4.dp.toFloat() + content.addView(this) + val margins = 8.dp + (layoutParams as ViewGroup.MarginLayoutParams).setMargins(margins, margins, margins, 0) + visibility = View.GONE + systemBarsPadding(includeFab = false) + } + this.sectionsList = sectionsList + + var lastContentHeight = -1 + content.viewTreeObserver.addOnGlobalLayoutListener { + if (this.view != null) { + val initial = lastContentHeight <= 0 + val contentHeight = content.height + if (lastContentHeight != contentHeight) { + lastContentHeight = contentHeight + if (initial) { + sectionsList.layoutParams.height = if (showSections) contentHeight else 0 + sectionsList.isVisible = showSections + sectionsList.requestLayout() + } else { + animateSectionsList() + } + } + } + } + } + + override fun onDestroyView() { + super.onDestroyView() + + favouritesItem = null + searchMenuItem = null + sortOrderMenu = null + syncRepositoriesMenuItem = null + layout = null + sectionsList = null + sectionsAdapter = null + viewPager = null + + syncConnection.unbind(requireContext()) + sectionsAnimator?.cancel() + sectionsAnimator = null + + _tabsBinding = null + } + + override fun onSaveInstanceState(outState: Bundle) { + super.onSaveInstanceState(outState) + + outState.putBoolean(STATE_SEARCH_FOCUSED, searchMenuItem?.actionView?.hasFocus() == true) + outState.putString(STATE_SEARCH_QUERY, searchQuery) + outState.putByte(STATE_SHOW_SECTIONS, if (showSections) 1 else 0) + } + + override fun onViewStateRestored(savedInstanceState: Bundle?) { + super.onViewStateRestored(savedInstanceState) + + (searchMenuItem?.actionView as FocusSearchView).allowFocus = true + if (needSelectUpdates) { + needSelectUpdates = false + selectUpdatesInternal(false) + } + } + + override fun onBackPressed(): Boolean { + return when { + viewModel.currentSection.value != ProductItem.Section.All -> { + viewModel.setSection(ProductItem.Section.All) + true + } + + searchMenuItem?.isActionViewExpanded == true -> { + searchMenuItem?.collapseActionView() + true + } + + showSections -> { + showSections = false + true + } + + else -> { + super.onBackPressed() + } + } + } + + internal fun selectUpdates() = selectUpdatesInternal(true) + + private fun updateUpdateNotificationBlocker(activeSource: AppListFragment.Source) { + val blockerFragment = if (activeSource == AppListFragment.Source.UPDATES) { + productFragments.find { it.source == activeSource } + } else { + null + } + syncConnection.binder?.setUpdateNotificationBlocker(blockerFragment) + } + + private fun selectUpdatesInternal(allowSmooth: Boolean) { + if (view != null) { + val viewPager = viewPager + viewPager?.setCurrentItem( + AppListFragment.Source.UPDATES.ordinal, + allowSmooth && viewPager.isLaidOut + ) + } else { + needSelectUpdates = true + } + } + + private fun updateOrder(sortOrder: SortOrder) { + sortOrderMenu!!.second[sortOrder.ordinal].isChecked = true + } + + private fun updateSections( + sectionsList: List + ) { + sectionsAdapter?.sections = sectionsList + layout?.run { + sectionIcon.isVisible = sectionsList.any { it !is ProductItem.Section.All } + sectionLayout.setOnClickListener { showSections = isVisible && !showSections } + } + } + + private fun updateSection(section: ProductItem.Section) { + layout?.sectionName?.text = when (section) { + is ProductItem.Section.All -> getString(stringRes.all_applications) + is ProductItem.Section.Category -> section.name + is ProductItem.Section.Repository -> section.name + } + productFragments.filter { it.source.sections }.forEach { it.setSection(section) } + } + + private fun animateSectionsList() { + val sectionsList = sectionsList!! + val value = if (sectionsList.visibility != View.VISIBLE) { + 0f + } else { + sectionsList.height.toFloat() / (sectionsList.parent as View).height + } + val target = if (showSections) 0.98f else 0f + sectionsAnimator?.cancel() + sectionsAnimator = null + + if (value != target) { + sectionsAnimator = ValueAnimator.ofFloat(value, target).apply { + duration = (250 * abs(target - value)).toLong() + interpolator = DecelerateInterpolator(2f) + addUpdateListener { + val newValue = animatedValue as Float + sectionsList.apply { + val height = ((parent as View).height * newValue).toInt() + val visible = height > 0 + if ((visibility == View.VISIBLE) != visible) isVisible = visible + if (layoutParams.height != height) { + layoutParams.height = height + requestLayout() + } + } + if (target <= 0f && newValue <= 0f) { + sectionsAnimator = null + } + } + start() + } + } + } + + private val pageChangeCallback = object : ViewPager2.OnPageChangeCallback() { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + val layout = layout!! + val fromSections = AppListFragment.Source.entries[position].sections + val toSections = if (positionOffset <= 0f) { + fromSections + } else { + AppListFragment.Source.entries[position + 1].sections + } + val offset = if (fromSections != toSections) { + if (fromSections) 1f - positionOffset else positionOffset + } else { + if (fromSections) 1f else 0f + } + assert(layout.sectionLayout.childCount == 1) + val child = layout.sectionLayout.getChildAt(0) + val height = child.layoutParams.height + assert(height > 0) + val currentHeight = (offset * height).roundToInt() + if (layout.sectionLayout.layoutParams.height != currentHeight) { + layout.sectionLayout.layoutParams.height = currentHeight + layout.sectionLayout.requestLayout() + } + } + + override fun onPageSelected(position: Int) { + val source = AppListFragment.Source.entries[position] + updateUpdateNotificationBlocker(source) + sortOrderMenu!!.first.apply { + isVisible = source.order + setShowAsActionFlags( + if (!source.order || + resources.configuration.screenWidthDp >= 300 + ) { + MenuItem.SHOW_AS_ACTION_ALWAYS + } else { + 0 + } + ) + } + syncRepositoriesMenuItem!!.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_ALWAYS) + if (showSections && !source.sections) { + showSections = false + } + } + + override fun onPageScrollStateChanged(state: Int) { + val source = AppListFragment.Source.entries[viewPager!!.currentItem] + layout!!.sectionChange.isEnabled = + state != ViewPager2.SCROLL_STATE_DRAGGING && source.sections + if (state == ViewPager2.SCROLL_STATE_IDLE) { + // onPageSelected can be called earlier than fragments created + updateUpdateNotificationBlocker(source) + } + } + } + + private class SectionsAdapter( + private val onClick: (ProductItem.Section) -> Unit + ) : StableRecyclerAdapter() { + enum class ViewType { SECTION } + + private class SectionViewHolder(context: Context) : + RecyclerView.ViewHolder(FrameLayout(context)) { + val title: TextView = TextView(context) + + init { + with(title) { + gravity = Gravity.CENTER_VERTICAL + setPadding(16.dp, 0, 16.dp, 0) + layoutParams = FrameLayout.LayoutParams( + FrameLayout.LayoutParams.WRAP_CONTENT, + FrameLayout.LayoutParams.MATCH_PARENT + ) + } + with(itemView as FrameLayout) { + layoutParams = RecyclerView.LayoutParams( + RecyclerView.LayoutParams.MATCH_PARENT, + 48.dp + ) + background = context.selectableBackground + addView(title) + } + } + } + + var sections: List = emptyList() + set(value) { + field = value + notifyDataSetChanged() + } + + fun configureDivider( + context: Context, + position: Int, + configuration: DividerConfiguration + ) { + val currentSection = sections[position] + val nextSection = sections.getOrNull(position + 1) + when { + nextSection != null && currentSection.javaClass != nextSection.javaClass -> { + val padding = context.resources.sizeScaled(16) + configuration.set( + needDivider = true, + toTop = false, + paddingStart = padding, + paddingEnd = padding + ) + } + + else -> { + configuration.set( + needDivider = false, + toTop = false, + paddingStart = 0, + paddingEnd = 0 + ) + } + } + } + + override val viewTypeClass: Class + get() = ViewType::class.java + + override fun getItemCount(): Int = sections.size + override fun getItemDescriptor(position: Int): String = sections[position].toString() + override fun getItemEnumViewType(position: Int): ViewType = ViewType.SECTION + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: ViewType + ): RecyclerView.ViewHolder { + return SectionViewHolder(parent.context).apply { + itemView.setOnClickListener { onClick(sections[absoluteAdapterPosition]) } + } + } + + override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { + holder as SectionViewHolder + val section = sections[position] + val previousSection = sections.getOrNull(position - 1) + val nextSection = sections.getOrNull(position + 1) + val margin = holder.itemView.resources.sizeScaled(8) + val layoutParams = holder.itemView.layoutParams as RecyclerView.LayoutParams + layoutParams.topMargin = if (previousSection == null || + section.javaClass != previousSection.javaClass + ) { + margin + } else { + 0 + } + layoutParams.bottomMargin = if (nextSection == null || + section.javaClass != nextSection.javaClass + ) { + margin + } else { + 0 + } + holder.title.text = when (section) { + is ProductItem.Section.All -> holder.itemView.resources.getString( + stringRes.all_applications + ) + + is ProductItem.Section.Category -> section.name + is ProductItem.Section.Repository -> section.name + } + } + } +} diff --git a/app/src/main/kotlin/com/leos/droidify/ui/tabsFragment/TabsViewModel.kt b/app/src/main/kotlin/com/leos/droidify/ui/tabsFragment/TabsViewModel.kt new file mode 100644 index 0000000..6b229a4 --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/ui/tabsFragment/TabsViewModel.kt @@ -0,0 +1,67 @@ +package com.leos.droidify.ui.tabsFragment + +import androidx.lifecycle.SavedStateHandle +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.leos.core.common.extension.asStateFlow +import com.leos.core.datastore.SettingsRepository +import com.leos.core.datastore.get +import com.leos.core.datastore.model.SortOrder +import com.leos.core.domain.ProductItem +import com.leos.droidify.database.Database +import dagger.hilt.android.lifecycle.HiltViewModel +import javax.inject.Inject +import kotlinx.coroutines.flow.catch +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.launch + +@HiltViewModel +class TabsViewModel @Inject constructor( + private val settingsRepository: SettingsRepository, + private val savedStateHandle: SavedStateHandle +) : ViewModel() { + + val currentSection = + savedStateHandle.getStateFlow(STATE_SECTION, ProductItem.Section.All) + + val sortOrder = settingsRepository + .get { sortOrder } + .asStateFlow(SortOrder.UPDATED) + + val allowHomeScreenSwiping = settingsRepository + .get { homeScreenSwiping } + .asStateFlow(false) + + val sections = + combine( + Database.CategoryAdapter.getAllStream(), + Database.RepositoryAdapter.getEnabledStream() + ) { categories, repos -> + val productCategories = categories + .asSequence() + .sorted() + .map(ProductItem.Section::Category) + .toList() + + val enabledRepositories = repos + .map { ProductItem.Section.Repository(it.id, it.name) } + enabledRepositories.ifEmpty { setSection(ProductItem.Section.All) } + listOf(ProductItem.Section.All) + productCategories + enabledRepositories + } + .catch { it.printStackTrace() } + .asStateFlow(emptyList()) + + fun setSection(section: ProductItem.Section) { + savedStateHandle[STATE_SECTION] = section + } + + fun setSortOrder(sortOrder: SortOrder) { + viewModelScope.launch { + settingsRepository.setSortOrder(sortOrder) + } + } + + companion object { + private const val STATE_SECTION = "section" + } +} diff --git a/app/src/main/kotlin/com/leos/droidify/utility/PackageItemResolver.kt b/app/src/main/kotlin/com/leos/droidify/utility/PackageItemResolver.kt new file mode 100644 index 0000000..28173b4 --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/utility/PackageItemResolver.kt @@ -0,0 +1,153 @@ +package com.leos.droidify.utility + +import android.Manifest +import android.content.Context +import android.content.pm.PackageItemInfo +import android.content.pm.PermissionInfo +import android.content.res.Resources +import android.os.Build +import com.leos.core.common.SdkCheck +import java.util.Locale + +object PackageItemResolver { + class LocalCache { + internal val resources = mutableMapOf() + } + + private data class CacheKey(val locales: List, val packageName: String, val resId: Int) + + private val cache = mutableMapOf() + + private fun load( + context: Context, + localCache: LocalCache, + packageName: String, + nonLocalized: CharSequence?, + resId: Int + ): CharSequence? { + return when { + nonLocalized != null -> { + nonLocalized + } + + resId != 0 -> { + val locales = if (SdkCheck.isNougat) { + val localesList = context.resources.configuration.locales + (0 until localesList.size()).map(localesList::get) + } else { + @Suppress("DEPRECATION") + listOf(context.resources.configuration.locale) + } + val cacheKey = CacheKey(locales, packageName, resId) + if (cache.containsKey(cacheKey)) { + cache[cacheKey] + } else { + val resources = localCache.resources[packageName] ?: run { + val resources = try { + val resources = + context.packageManager.getResourcesForApplication(packageName) + @Suppress("DEPRECATION") + resources.updateConfiguration(context.resources.configuration, null) + resources + } catch (e: Exception) { + null + } + resources?.let { localCache.resources[packageName] = it } + resources + } + val label = resources?.getString(resId) + cache[cacheKey] = label + label + } + } + + else -> { + null + } + } + } + + fun loadLabel( + context: Context, + localCache: LocalCache, + packageItemInfo: PackageItemInfo + ): CharSequence? { + return load( + context, + localCache, + packageItemInfo.packageName, + packageItemInfo.nonLocalizedLabel, + packageItemInfo.labelRes + ) + } + + fun loadDescription( + context: Context, + localCache: LocalCache, + permissionInfo: PermissionInfo + ): CharSequence? { + return load( + context, + localCache, + permissionInfo.packageName, + permissionInfo.nonLocalizedDescription, + permissionInfo.descriptionRes + ) + } + + fun getPermissionGroup(permissionInfo: PermissionInfo): String? = + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + when (permissionInfo.name) { + Manifest.permission.READ_CONTACTS, + Manifest.permission.WRITE_CONTACTS, + Manifest.permission.GET_ACCOUNTS + -> Manifest.permission_group.CONTACTS + + Manifest.permission.READ_CALENDAR, + Manifest.permission.WRITE_CALENDAR + -> Manifest.permission_group.CALENDAR + + Manifest.permission.SEND_SMS, + Manifest.permission.RECEIVE_SMS, + Manifest.permission.READ_SMS, + Manifest.permission.RECEIVE_MMS, + Manifest.permission.RECEIVE_WAP_PUSH, + "android.permission.READ_CELL_BROADCASTS" + -> Manifest.permission_group.SMS + + Manifest.permission.READ_EXTERNAL_STORAGE, + Manifest.permission.WRITE_EXTERNAL_STORAGE, + Manifest.permission.ACCESS_MEDIA_LOCATION + -> Manifest.permission_group.STORAGE + + Manifest.permission.ACCESS_FINE_LOCATION, + Manifest.permission.ACCESS_COARSE_LOCATION, + Manifest.permission.ACCESS_BACKGROUND_LOCATION + -> Manifest.permission_group.LOCATION + + Manifest.permission.READ_CALL_LOG, + Manifest.permission.WRITE_CALL_LOG, + @Suppress("DEPRECATION") + Manifest.permission.PROCESS_OUTGOING_CALLS + -> Manifest.permission_group.CALL_LOG + + Manifest.permission.READ_PHONE_STATE, + Manifest.permission.READ_PHONE_NUMBERS, + Manifest.permission.CALL_PHONE, + Manifest.permission.ADD_VOICEMAIL, + Manifest.permission.USE_SIP, + Manifest.permission.ANSWER_PHONE_CALLS, + Manifest.permission.ACCEPT_HANDOVER + -> Manifest.permission_group.PHONE + + Manifest.permission.RECORD_AUDIO -> Manifest.permission_group.MICROPHONE + Manifest.permission.ACTIVITY_RECOGNITION -> + Manifest.permission_group.ACTIVITY_RECOGNITION + Manifest.permission.CAMERA -> Manifest.permission_group.CAMERA + Manifest.permission.BODY_SENSORS -> Manifest.permission_group.SENSORS + else -> null + } + } else { + permissionInfo.group + } +} diff --git a/app/src/main/kotlin/com/leos/droidify/utility/ProgressInputStream.kt b/app/src/main/kotlin/com/leos/droidify/utility/ProgressInputStream.kt new file mode 100644 index 0000000..fd07d92 --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/utility/ProgressInputStream.kt @@ -0,0 +1,36 @@ +package com.leos.droidify.utility + +import java.io.InputStream + +fun InputStream.getProgress(callback: (Long) -> Unit): InputStream = + ProgressInputStream(this, callback) + +private class ProgressInputStream( + private val inputStream: InputStream, + private val callback: (Long) -> Unit +) : InputStream() { + private var count = 0L + + private inline fun notify(one: Boolean, read: () -> T): T { + val result = read() + count += if (one) 1L else result.toLong() + callback(count) + return result + } + + override fun read(): Int = notify(true) { inputStream.read() } + override fun read(b: ByteArray): Int = notify(false) { inputStream.read(b) } + override fun read(b: ByteArray, off: Int, len: Int): Int = + notify(false) { inputStream.read(b, off, len) } + + override fun skip(n: Long): Long = notify(false) { inputStream.skip(n) } + + override fun available(): Int { + return inputStream.available() + } + + override fun close() { + inputStream.close() + super.close() + } +} diff --git a/app/src/main/kotlin/com/leos/droidify/utility/extension/Android.kt b/app/src/main/kotlin/com/leos/droidify/utility/extension/Android.kt new file mode 100644 index 0000000..9f589ad --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/utility/extension/Android.kt @@ -0,0 +1,14 @@ +@file:Suppress("PackageDirectoryMismatch") + +package com.leos.droidify.utility.extension.android + +import android.os.Build + +object Android { + val name: String = "Android ${Build.VERSION.RELEASE}" + + val platforms = Build.SUPPORTED_ABIS.toSet() + + val primaryPlatform: String? = Build.SUPPORTED_64_BIT_ABIS?.firstOrNull() + ?: Build.SUPPORTED_32_BIT_ABIS?.firstOrNull() +} diff --git a/app/src/main/kotlin/com/leos/droidify/utility/extension/Connection.kt b/app/src/main/kotlin/com/leos/droidify/utility/extension/Connection.kt new file mode 100644 index 0000000..a54721d --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/utility/extension/Connection.kt @@ -0,0 +1,37 @@ +package com.leos.droidify.utility.extension + +import com.leos.core.domain.InstalledItem +import com.leos.core.domain.Product +import com.leos.core.domain.Repository +import com.leos.core.domain.findSuggested +import com.leos.droidify.service.Connection +import com.leos.droidify.service.DownloadService +import com.leos.droidify.utility.extension.android.Android + +fun Connection.startUpdate( + packageName: String, + installedItem: InstalledItem?, + products: List> +) { + if (binder == null || products.isEmpty()) return + + val (product, repository) = products.findSuggested(installedItem) ?: return + + val compatibleReleases = product.selectedReleases + .filter { installedItem == null || installedItem.signature == it.signature } + .ifEmpty { return } + + val selectedRelease = compatibleReleases.singleOrNull() ?: compatibleReleases.run { + filter { Android.primaryPlatform in it.platforms }.minByOrNull { it.platforms.size } + ?: minByOrNull { it.platforms.size } + ?: firstOrNull() + } ?: return + + requireNotNull(binder).enqueue( + packageName = packageName, + name = product.name, + repository = repository, + release = selectedRelease, + isUpdate = installedItem != null + ) +} diff --git a/app/src/main/kotlin/com/leos/droidify/utility/extension/Fragment.kt b/app/src/main/kotlin/com/leos/droidify/utility/extension/Fragment.kt new file mode 100644 index 0000000..ea9d188 --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/utility/extension/Fragment.kt @@ -0,0 +1,7 @@ +package com.leos.droidify.utility.extension + +import androidx.fragment.app.Fragment +import com.leos.droidify.ScreenActivity + +inline val Fragment.screenActivity: ScreenActivity + get() = requireActivity() as ScreenActivity diff --git a/app/src/main/kotlin/com/leos/droidify/utility/extension/ImageUtils.kt b/app/src/main/kotlin/com/leos/droidify/utility/extension/ImageUtils.kt new file mode 100644 index 0000000..acae45e --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/utility/extension/ImageUtils.kt @@ -0,0 +1,46 @@ +package com.leos.droidify.utility.extension + +import android.view.View +import com.leos.core.common.Singleton +import com.leos.core.common.extension.dpi +import com.leos.core.domain.Product +import com.leos.core.domain.ProductItem +import com.leos.core.domain.Repository + +object ImageUtils { + private val SUPPORTED_DPI = listOf(120, 160, 240, 320, 480, 640) + private var DeviceDpi = Singleton() + + fun Product.Screenshot.url( + repository: Repository, + packageName: String + ): String { + val phoneType = when (type) { + Product.Screenshot.Type.PHONE -> "phoneScreenshots" + Product.Screenshot.Type.SMALL_TABLET -> "sevenInchScreenshots" + Product.Screenshot.Type.LARGE_TABLET -> "tenInchScreenshots" + } + return "${repository.address}/$packageName/$locale/$phoneType/$path" + } + + fun ProductItem.icon( + view: View, + repository: Repository + ): String? { + if (packageName.isBlank()) return null + if (icon.isBlank() && metadataIcon.isBlank()) return null + if (repository.version < 11 && icon.isNotBlank()) { + return "${repository.address}/icons/$icon" + } + if (icon.isNotBlank()) { + val deviceDpi = DeviceDpi.getOrUpdate { + (SUPPORTED_DPI.find { it >= view.dpi } ?: SUPPORTED_DPI.last()).toString() + } + return "${repository.address}/icons-$deviceDpi/$icon" + } + if (metadataIcon.isNotBlank()) { + return "${repository.address}/$packageName/$metadataIcon" + } + return null + } +} diff --git a/app/src/main/kotlin/com/leos/droidify/utility/extension/PackageInfo.kt b/app/src/main/kotlin/com/leos/droidify/utility/extension/PackageInfo.kt new file mode 100644 index 0000000..4f58227 --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/utility/extension/PackageInfo.kt @@ -0,0 +1,17 @@ +package com.leos.droidify.utility.extension + +import android.content.pm.PackageInfo +import com.leos.core.common.extension.calculateHash +import com.leos.core.common.extension.singleSignature +import com.leos.core.common.extension.versionCodeCompat +import com.leos.core.domain.InstalledItem + +fun PackageInfo.toInstalledItem(): InstalledItem { + val signatureString = singleSignature?.calculateHash().orEmpty() + return InstalledItem( + packageName, + versionName.orEmpty(), + versionCodeCompat, + signatureString + ) +} diff --git a/app/src/main/kotlin/com/leos/droidify/utility/extension/Resources.kt b/app/src/main/kotlin/com/leos/droidify/utility/extension/Resources.kt new file mode 100644 index 0000000..bfd055b --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/utility/extension/Resources.kt @@ -0,0 +1,16 @@ +@file:Suppress("PackageDirectoryMismatch") + +package com.leos.droidify.utility.extension.resources + +import android.content.res.Resources +import android.graphics.Typeface +import kotlin.math.roundToInt + +object TypefaceExtra { + val medium = Typeface.create("sans-serif-medium", Typeface.NORMAL)!! + val light = Typeface.create("sans-serif-light", Typeface.NORMAL)!! +} + +fun Resources.sizeScaled(size: Int): Int { + return (size * displayMetrics.density).roundToInt() +} diff --git a/app/src/main/kotlin/com/leos/droidify/utility/serialization/ProductItemSerialization.kt b/app/src/main/kotlin/com/leos/droidify/utility/serialization/ProductItemSerialization.kt new file mode 100644 index 0000000..1c7a69f --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/utility/serialization/ProductItemSerialization.kt @@ -0,0 +1,55 @@ +package com.leos.droidify.utility.serialization + +import com.fasterxml.jackson.core.JsonGenerator +import com.fasterxml.jackson.core.JsonParser +import com.leos.core.common.extension.forEachKey +import com.leos.core.domain.ProductItem + +fun ProductItem.serialize(generator: JsonGenerator) { + generator.writeNumberField("serialVersion", 1) + generator.writeNumberField("repositoryId", repositoryId) + generator.writeStringField("packageName", packageName) + generator.writeStringField("name", name) + generator.writeStringField("summary", summary) + generator.writeStringField("icon", icon) + generator.writeStringField("metadataIcon", metadataIcon) + generator.writeStringField("version", version) + generator.writeStringField("installedVersion", installedVersion) + generator.writeBooleanField("compatible", compatible) + generator.writeBooleanField("canUpdate", canUpdate) + generator.writeNumberField("matchRank", matchRank) +} + +fun JsonParser.productItem(): ProductItem { + var repositoryId = 0L + var packageName = "" + var name = "" + var summary = "" + var icon = "" + var metadataIcon = "" + var version = "" + var installedVersion = "" + var compatible = false + var canUpdate = false + var matchRank = 0 + forEachKey { + when { + it.number("repositoryId") -> repositoryId = valueAsLong + it.string("packageName") -> packageName = valueAsString + it.string("name") -> name = valueAsString + it.string("summary") -> summary = valueAsString + it.string("icon") -> icon = valueAsString + it.string("metadataIcon") -> metadataIcon = valueAsString + it.string("version") -> version = valueAsString + it.string("installedVersion") -> installedVersion = valueAsString + it.boolean("compatible") -> compatible = valueAsBoolean + it.boolean("canUpdate") -> canUpdate = valueAsBoolean + it.number("matchRank") -> matchRank = valueAsInt + else -> skipChildren() + } + } + return ProductItem( + repositoryId, packageName, name, summary, icon, metadataIcon, + version, installedVersion, compatible, canUpdate, matchRank + ) +} diff --git a/app/src/main/kotlin/com/leos/droidify/utility/serialization/ProductPreferenceSerialization.kt b/app/src/main/kotlin/com/leos/droidify/utility/serialization/ProductPreferenceSerialization.kt new file mode 100644 index 0000000..186a3a1 --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/utility/serialization/ProductPreferenceSerialization.kt @@ -0,0 +1,24 @@ +package com.leos.droidify.utility.serialization + +import com.fasterxml.jackson.core.JsonGenerator +import com.fasterxml.jackson.core.JsonParser +import com.leos.core.common.extension.forEachKey +import com.leos.core.domain.ProductPreference + +fun ProductPreference.serialize(generator: JsonGenerator) { + generator.writeBooleanField("ignoreUpdates", ignoreUpdates) + generator.writeNumberField("ignoreVersionCode", ignoreVersionCode) +} + +fun JsonParser.productPreference(): ProductPreference { + var ignoreUpdates = false + var ignoreVersionCode = 0L + forEachKey { + when { + it.boolean("ignoreUpdates") -> ignoreUpdates = valueAsBoolean + it.number("ignoreVersionCode") -> ignoreVersionCode = valueAsLong + else -> skipChildren() + } + } + return ProductPreference(ignoreUpdates, ignoreVersionCode) +} diff --git a/app/src/main/kotlin/com/leos/droidify/utility/serialization/ProductSerialization.kt b/app/src/main/kotlin/com/leos/droidify/utility/serialization/ProductSerialization.kt new file mode 100644 index 0000000..caa5269 --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/utility/serialization/ProductSerialization.kt @@ -0,0 +1,208 @@ +package com.leos.droidify.utility.serialization + +import com.fasterxml.jackson.core.JsonGenerator +import com.fasterxml.jackson.core.JsonParser +import com.fasterxml.jackson.core.JsonToken +import com.leos.core.common.extension.collectNotNull +import com.leos.core.common.extension.collectNotNullStrings +import com.leos.core.common.extension.forEachKey +import com.leos.core.common.extension.writeArray +import com.leos.core.common.extension.writeDictionary +import com.leos.core.domain.Product +import com.leos.core.domain.Release + +fun Product.serialize(generator: JsonGenerator) { + generator.writeNumberField("repositoryId", repositoryId) + generator.writeNumberField("serialVersion", 1) + generator.writeStringField("packageName", packageName) + generator.writeStringField("name", name) + generator.writeStringField("summary", summary) + generator.writeStringField("description", description) + generator.writeStringField("whatsNew", whatsNew) + generator.writeStringField("icon", icon) + generator.writeStringField("metadataIcon", metadataIcon) + generator.writeStringField("authorName", author.name) + generator.writeStringField("authorEmail", author.email) + generator.writeStringField("authorWeb", author.web) + generator.writeStringField("source", source) + generator.writeStringField("changelog", changelog) + generator.writeStringField("web", web) + generator.writeStringField("tracker", tracker) + generator.writeNumberField("added", added) + generator.writeNumberField("updated", updated) + generator.writeNumberField("suggestedVersionCode", suggestedVersionCode) + generator.writeArray("categories") { categories.forEach(::writeString) } + generator.writeArray("antiFeatures") { antiFeatures.forEach(::writeString) } + generator.writeArray("licenses") { licenses.forEach(::writeString) } + generator.writeArray("donates") { + donates.forEach { + writeDictionary { + when (it) { + is Product.Donate.Regular -> { + writeStringField("type", "") + writeStringField("url", it.url) + } + + is Product.Donate.Bitcoin -> { + writeStringField("type", "bitcoin") + writeStringField("address", it.address) + } + + is Product.Donate.Litecoin -> { + writeStringField("type", "litecoin") + writeStringField("address", it.address) + } + + is Product.Donate.Flattr -> { + writeStringField("type", "flattr") + writeStringField("id", it.id) + } + + is Product.Donate.Liberapay -> { + writeStringField("type", "liberapay") + writeStringField("id", it.id) + } + + is Product.Donate.OpenCollective -> { + writeStringField("type", "openCollective") + writeStringField("id", it.id) + } + }::class + } + } + } + generator.writeArray("screenshots") { + screenshots.forEach { + writeDictionary { + writeStringField("locale", it.locale) + writeStringField("type", it.type.jsonName) + writeStringField("path", it.path) + } + } + } + generator.writeArray("releases") { releases.forEach { writeDictionary { it.serialize(this) } } } +} + +fun JsonParser.product(): Product { + var repositoryId = 0L + var packageName = "" + var name = "" + var summary = "" + var description = "" + var whatsNew = "" + var icon = "" + var metadataIcon = "" + var authorName = "" + var authorEmail = "" + var authorWeb = "" + var source = "" + var changelog = "" + var web = "" + var tracker = "" + var added = 0L + var updated = 0L + var suggestedVersionCode = 0L + var categories = emptyList() + var antiFeatures = emptyList() + var licenses = emptyList() + var donates = emptyList() + var screenshots = emptyList() + var releases = emptyList() + forEachKey { it -> + when { + it.string("repositoryId") -> repositoryId = valueAsLong + it.string("packageName") -> packageName = valueAsString + it.string("name") -> name = valueAsString + it.string("summary") -> summary = valueAsString + it.string("description") -> description = valueAsString + it.string("whatsNew") -> whatsNew = valueAsString + it.string("icon") -> icon = valueAsString + it.string("metadataIcon") -> metadataIcon = valueAsString + it.string("authorName") -> authorName = valueAsString + it.string("authorEmail") -> authorEmail = valueAsString + it.string("authorWeb") -> authorWeb = valueAsString + it.string("source") -> source = valueAsString + it.string("changelog") -> changelog = valueAsString + it.string("web") -> web = valueAsString + it.string("tracker") -> tracker = valueAsString + it.number("added") -> added = valueAsLong + it.number("updated") -> updated = valueAsLong + it.number("suggestedVersionCode") -> suggestedVersionCode = valueAsLong + it.array("categories") -> categories = collectNotNullStrings() + it.array("antiFeatures") -> antiFeatures = collectNotNullStrings() + it.array("licenses") -> licenses = collectNotNullStrings() + it.array("donates") -> donates = collectNotNull(JsonToken.START_OBJECT) { + var type = "" + var url = "" + var address = "" + var id = "" + forEachKey { + when { + it.string("type") -> type = valueAsString + it.string("url") -> url = valueAsString + it.string("address") -> address = valueAsString + it.string("id") -> id = valueAsString + else -> skipChildren() + } + } + when (type) { + "" -> Product.Donate.Regular(url) + "bitcoin" -> Product.Donate.Bitcoin(address) + "litecoin" -> Product.Donate.Litecoin(address) + "flattr" -> Product.Donate.Flattr(id) + "liberapay" -> Product.Donate.Liberapay(id) + "openCollective" -> Product.Donate.OpenCollective(id) + else -> null + } + } + + it.array("screenshots") -> + screenshots = + collectNotNull(JsonToken.START_OBJECT) { + var locale = "" + var type = "" + var path = "" + forEachKey { + when { + it.string("locale") -> locale = valueAsString + it.string("type") -> type = valueAsString + it.string("path") -> path = valueAsString + else -> skipChildren() + } + } + Product.Screenshot.Type.entries.find { it.jsonName == type } + ?.let { Product.Screenshot(locale, it, path) } + } + + it.array("releases") -> + releases = + collectNotNull(JsonToken.START_OBJECT) { release() } + + else -> skipChildren() + } + } + return Product( + repositoryId, + packageName, + name, + summary, + description, + whatsNew, + icon, + metadataIcon, + Product.Author(authorName, authorEmail, authorWeb), + source, + changelog, + web, + tracker, + added, + updated, + suggestedVersionCode, + categories, + antiFeatures, + licenses, + donates, + screenshots, + releases + ) +} diff --git a/app/src/main/kotlin/com/leos/droidify/utility/serialization/ReleaseSerialization.kt b/app/src/main/kotlin/com/leos/droidify/utility/serialization/ReleaseSerialization.kt new file mode 100644 index 0000000..8d43652 --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/utility/serialization/ReleaseSerialization.kt @@ -0,0 +1,160 @@ +package com.leos.droidify.utility.serialization + +import com.fasterxml.jackson.core.JsonGenerator +import com.fasterxml.jackson.core.JsonParser +import com.fasterxml.jackson.core.JsonToken +import com.leos.core.common.extension.collectNotNull +import com.leos.core.common.extension.collectNotNullStrings +import com.leos.core.common.extension.forEachKey +import com.leos.core.common.extension.writeArray +import com.leos.core.common.extension.writeDictionary +import com.leos.core.domain.Release + +fun Release.serialize(generator: JsonGenerator) { + generator.writeNumberField("serialVersion", 1) + generator.writeBooleanField("selected", selected) + generator.writeStringField("version", version) + generator.writeNumberField("versionCode", versionCode) + generator.writeNumberField("added", added) + generator.writeNumberField("size", size) + generator.writeNumberField("minSdkVersion", minSdkVersion) + generator.writeNumberField("targetSdkVersion", targetSdkVersion) + generator.writeNumberField("maxSdkVersion", maxSdkVersion) + generator.writeStringField("source", source) + generator.writeStringField("release", release) + generator.writeStringField("hash", hash) + generator.writeStringField("hashType", hashType) + generator.writeStringField("signature", signature) + generator.writeStringField("obbMain", obbMain) + generator.writeStringField("obbMainHash", obbMainHash) + generator.writeStringField("obbMainHashType", obbMainHashType) + generator.writeStringField("obbPatch", obbPatch) + generator.writeStringField("obbPatchHash", obbPatchHash) + generator.writeStringField("obbPatchHashType", obbPatchHashType) + generator.writeArray("permissions") { permissions.forEach { writeString(it) } } + generator.writeArray("features") { features.forEach { writeString(it) } } + generator.writeArray("platforms") { platforms.forEach { writeString(it) } } + generator.writeArray("incompatibilities") { + incompatibilities.forEach { + writeDictionary { + when (it) { + is Release.Incompatibility.MinSdk -> { + writeStringField("type", "minSdk") + } + + is Release.Incompatibility.MaxSdk -> { + writeStringField("type", "maxSdk") + } + + is Release.Incompatibility.Platform -> { + writeStringField("type", "platform") + } + + is Release.Incompatibility.Feature -> { + writeStringField("type", "feature") + writeStringField("feature", it.feature) + } + }::class + } + } + } +} + +fun JsonParser.release(): Release { + var selected = false + var version = "" + var versionCode = 0L + var added = 0L + var size = 0L + var minSdkVersion = 0 + var targetSdkVersion = 0 + var maxSdkVersion = 0 + var source = "" + var release = "" + var hash = "" + var hashType = "" + var signature = "" + var obbMain = "" + var obbMainHash = "" + var obbMainHashType = "" + var obbPatch = "" + var obbPatchHash = "" + var obbPatchHashType = "" + var permissions = emptyList() + var features = emptyList() + var platforms = emptyList() + var incompatibilities = emptyList() + forEachKey { it -> + when { + it.boolean("selected") -> selected = valueAsBoolean + it.string("version") -> version = valueAsString + it.number("versionCode") -> versionCode = valueAsLong + it.number("added") -> added = valueAsLong + it.number("size") -> size = valueAsLong + it.number("minSdkVersion") -> minSdkVersion = valueAsInt + it.number("targetSdkVersion") -> targetSdkVersion = valueAsInt + it.number("maxSdkVersion") -> maxSdkVersion = valueAsInt + it.string("source") -> source = valueAsString + it.string("release") -> release = valueAsString + it.string("hash") -> hash = valueAsString + it.string("hashType") -> hashType = valueAsString + it.string("signature") -> signature = valueAsString + it.string("obbMain") -> obbMain = valueAsString + it.string("obbMainHash") -> obbMainHash = valueAsString + it.string("obbMainHashType") -> obbMainHashType = valueAsString + it.string("obbPatch") -> obbPatch = valueAsString + it.string("obbPatchHash") -> obbPatchHash = valueAsString + it.string("obbPatchHashType") -> obbPatchHashType = valueAsString + it.array("permissions") -> permissions = collectNotNullStrings() + it.array("features") -> features = collectNotNullStrings() + it.array("platforms") -> platforms = collectNotNullStrings() + it.array("incompatibilities") -> + incompatibilities = + collectNotNull(JsonToken.START_OBJECT) { + var type = "" + var feature = "" + forEachKey { + when { + it.string("type") -> type = valueAsString + it.string("feature") -> feature = valueAsString + else -> skipChildren() + } + } + when (type) { + "minSdk" -> Release.Incompatibility.MinSdk + "maxSdk" -> Release.Incompatibility.MaxSdk + "platform" -> Release.Incompatibility.Platform + "feature" -> Release.Incompatibility.Feature(feature) + else -> null + } + } + + else -> skipChildren() + } + } + return Release( + selected, + version, + versionCode, + added, + size, + minSdkVersion, + targetSdkVersion, + maxSdkVersion, + source, + release, + hash, + hashType, + signature, + obbMain, + obbMainHash, + obbMainHashType, + obbPatch, + obbPatchHash, + obbPatchHashType, + permissions, + features, + platforms, + incompatibilities + ) +} diff --git a/app/src/main/kotlin/com/leos/droidify/utility/serialization/RepositorySerialization.kt b/app/src/main/kotlin/com/leos/droidify/utility/serialization/RepositorySerialization.kt new file mode 100644 index 0000000..3a666c4 --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/utility/serialization/RepositorySerialization.kt @@ -0,0 +1,63 @@ +package com.leos.droidify.utility.serialization + +import com.fasterxml.jackson.core.JsonGenerator +import com.fasterxml.jackson.core.JsonParser +import com.leos.core.common.extension.collectNotNullStrings +import com.leos.core.common.extension.forEachKey +import com.leos.core.common.extension.writeArray +import com.leos.core.domain.Repository + +fun Repository.serialize(generator: JsonGenerator) { + generator.writeNumberField("serialVersion", 1) + generator.writeNumberField("id", id) + generator.writeStringField("address", address) + generator.writeArray("mirrors") { mirrors.forEach { writeString(it) } } + generator.writeStringField("name", name) + generator.writeStringField("description", description) + generator.writeNumberField("version", version) + generator.writeBooleanField("enabled", enabled) + generator.writeStringField("fingerprint", fingerprint) + generator.writeStringField("lastModified", lastModified) + generator.writeStringField("entityTag", entityTag) + generator.writeNumberField("updated", updated) + generator.writeNumberField("timestamp", timestamp) + generator.writeStringField("authentication", authentication) +} + +fun JsonParser.repository(): Repository { + var id = -1L + var address = "" + var mirrors = emptyList() + var name = "" + var description = "" + var version = 0 + var enabled = false + var fingerprint = "" + var lastModified = "" + var entityTag = "" + var updated = 0L + var timestamp = 0L + var authentication = "" + forEachKey { + when { + it.string("id") -> id = valueAsLong + it.string("address") -> address = valueAsString + it.array("mirrors") -> mirrors = collectNotNullStrings() + it.string("name") -> name = valueAsString + it.string("description") -> description = valueAsString + it.number("version") -> version = valueAsInt + it.boolean("enabled") -> enabled = valueAsBoolean + it.string("fingerprint") -> fingerprint = valueAsString + it.string("lastModified") -> lastModified = valueAsString + it.string("entityTag") -> entityTag = valueAsString + it.number("updated") -> updated = valueAsLong + it.number("timestamp") -> timestamp = valueAsLong + it.string("authentication") -> authentication = valueAsString + else -> skipChildren() + } + } + return Repository( + id, address, mirrors, name, description, version, enabled, fingerprint, + lastModified, entityTag, updated, timestamp, authentication + ) +} diff --git a/app/src/main/kotlin/com/leos/droidify/widget/CursorRecyclerAdapter.kt b/app/src/main/kotlin/com/leos/droidify/widget/CursorRecyclerAdapter.kt new file mode 100644 index 0000000..8745ffc --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/widget/CursorRecyclerAdapter.kt @@ -0,0 +1,36 @@ +package com.leos.droidify.widget + +import android.database.Cursor +import androidx.recyclerview.widget.RecyclerView + +abstract class CursorRecyclerAdapter, VH : RecyclerView.ViewHolder> : + EnumRecyclerAdapter() { + init { + super.setHasStableIds(true) + } + + private var rowIdIndex = 0 + + var cursor: Cursor? = null + set(value) { + if (field != value) { + field?.close() + field = value + rowIdIndex = value?.getColumnIndexOrThrow("_id") ?: 0 + notifyDataSetChanged() + } + } + + final override fun setHasStableIds(hasStableIds: Boolean) { + throw UnsupportedOperationException() + } + + override fun getItemCount(): Int = cursor?.count ?: 0 + override fun getItemId(position: Int): Long = moveTo(position).getLong(rowIdIndex) + + fun moveTo(position: Int): Cursor { + val cursor = cursor!! + cursor.moveToPosition(position) + return cursor + } +} diff --git a/app/src/main/kotlin/com/leos/droidify/widget/DividerItemDecoration.kt b/app/src/main/kotlin/com/leos/droidify/widget/DividerItemDecoration.kt new file mode 100644 index 0000000..8de2dd7 --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/widget/DividerItemDecoration.kt @@ -0,0 +1,139 @@ +package com.leos.droidify.widget + +import android.content.Context +import android.graphics.Canvas +import android.graphics.Rect +import android.view.View +import androidx.recyclerview.widget.RecyclerView +import com.leos.core.common.extension.divider +import com.leos.droidify.R +import kotlin.math.roundToInt + +fun RecyclerView.addDivider( + configure: ( + context: Context, + position: Int, + configuration: DividerConfiguration + ) -> Unit +) { + addItemDecoration( + DividerItemDecoration( + context = context, + configure = configure + ) + ) +} + +fun interface DividerConfiguration { + fun set(needDivider: Boolean, toTop: Boolean, paddingStart: Int, paddingEnd: Int) +} + +private class DividerItemDecoration( + context: Context, + private val configure: ( + context: Context, + position: Int, + configuration: DividerConfiguration + ) -> Unit +) : RecyclerView.ItemDecoration() { + + private class ConfigurationHolder : DividerConfiguration { + var needDivider = false + var toTop = false + var paddingStart = 0 + var paddingEnd = 0 + + override fun set(needDivider: Boolean, toTop: Boolean, paddingStart: Int, paddingEnd: Int) { + this.needDivider = needDivider + this.toTop = toTop + this.paddingStart = paddingStart + this.paddingEnd = paddingEnd + } + } + + private val View.configuration: ConfigurationHolder + get() = getTag(R.id.divider_configuration) as? ConfigurationHolder ?: run { + val configuration = ConfigurationHolder() + setTag(R.id.divider_configuration, configuration) + configuration + } + + private val divider = context.divider + private val bounds = Rect() + + private fun draw( + c: Canvas, + configuration: ConfigurationHolder, + view: View, + top: Int, + width: Int, + rtl: Boolean + ) { + val divider = divider + val left = if (rtl) configuration.paddingEnd else configuration.paddingStart + val right = width - (if (rtl) configuration.paddingStart else configuration.paddingEnd) + val translatedTop = top + view.translationY.roundToInt() + divider.alpha = (view.alpha * 0xff).toInt() + divider.setBounds(left, translatedTop, right, translatedTop + divider.intrinsicHeight) + divider.draw(c) + } + + override fun onDraw(c: Canvas, parent: RecyclerView, state: RecyclerView.State) { + val divider = divider + val bounds = bounds + val rtl = parent.layoutDirection == View.LAYOUT_DIRECTION_RTL + for (i in 0 until parent.childCount) { + val view = parent.getChildAt(i) + val configuration = view.configuration + if (configuration.needDivider) { + val position = parent.getChildAdapterPosition(view) + if (position == parent.adapter!!.itemCount - 1) { + parent.getDecoratedBoundsWithMargins(view, bounds) + draw(c, configuration, view, bounds.bottom, parent.width, rtl) + } else { + val toTopView = if (configuration.toTop && position >= 0) { + parent.findViewHolderForAdapterPosition(position + 1)?.itemView + } else { + null + } + if (toTopView != null) { + parent.getDecoratedBoundsWithMargins(toTopView, bounds) + draw( + c, + configuration, + toTopView, + bounds.top - divider.intrinsicHeight, + parent.width, + rtl + ) + } else { + parent.getDecoratedBoundsWithMargins(view, bounds) + draw( + c, + configuration, + view, + bounds.bottom - divider.intrinsicHeight, + parent.width, + rtl + ) + } + } + } + } + } + + override fun getItemOffsets( + outRect: Rect, + view: View, + parent: RecyclerView, + state: RecyclerView.State + ) { + val configuration = view.configuration + val position = parent.getChildAdapterPosition(view) + if (position >= 0) { + configure(view.context, position, configuration) + } + val needDivider = position < parent.adapter!!.itemCount - 1 && configuration.needDivider + outRect.set(0, 0, 0, if (needDivider) divider.intrinsicHeight else 0) + } +} diff --git a/app/src/main/kotlin/com/leos/droidify/widget/EnumRecyclerAdapter.kt b/app/src/main/kotlin/com/leos/droidify/widget/EnumRecyclerAdapter.kt new file mode 100644 index 0000000..e56f37a --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/widget/EnumRecyclerAdapter.kt @@ -0,0 +1,29 @@ +package com.leos.droidify.widget + +import android.util.SparseArray +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView + +abstract class EnumRecyclerAdapter, VH : RecyclerView.ViewHolder> : + RecyclerView.Adapter() { + abstract val viewTypeClass: Class + + private val names = SparseArray() + + private fun getViewType(viewType: Int): VT { + return java.lang.Enum.valueOf(viewTypeClass, names.get(viewType)) + } + + final override fun getItemViewType(position: Int): Int { + val enum = getItemEnumViewType(position) + names.put(enum.ordinal, enum.name) + return enum.ordinal + } + + final override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VH { + return onCreateViewHolder(parent, getViewType(viewType)) + } + + abstract fun getItemEnumViewType(position: Int): VT + abstract fun onCreateViewHolder(parent: ViewGroup, viewType: VT): VH +} diff --git a/app/src/main/kotlin/com/leos/droidify/widget/FocusSearchView.kt b/app/src/main/kotlin/com/leos/droidify/widget/FocusSearchView.kt new file mode 100644 index 0000000..2df5c39 --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/widget/FocusSearchView.kt @@ -0,0 +1,39 @@ +package com.leos.droidify.widget + +import android.content.Context +import android.util.AttributeSet +import android.view.KeyEvent +import androidx.appcompat.widget.SearchView + +class FocusSearchView : SearchView { + constructor(context: Context) : super(context) + constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super( + context, + attrs, + defStyleAttr + ) + + var allowFocus = true + + override fun dispatchKeyEventPreIme(event: KeyEvent): Boolean { + // Always clear focus on back press + return if (hasFocus() && event.keyCode == KeyEvent.KEYCODE_BACK) { + if (event.action == KeyEvent.ACTION_UP) { + clearFocus() + } + true + } else { + super.dispatchKeyEventPreIme(event) + } + } + + override fun setIconified(iconify: Boolean) { + super.setIconified(iconify) + + // Don't focus view and raise keyboard unless allowed + if (!iconify && !allowFocus) { + clearFocus() + } + } +} diff --git a/app/src/main/kotlin/com/leos/droidify/widget/StableRecyclerAdapter.kt b/app/src/main/kotlin/com/leos/droidify/widget/StableRecyclerAdapter.kt new file mode 100644 index 0000000..becba8d --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/widget/StableRecyclerAdapter.kt @@ -0,0 +1,28 @@ +package com.leos.droidify.widget + +import androidx.recyclerview.widget.RecyclerView + +abstract class StableRecyclerAdapter, VH : RecyclerView.ViewHolder> : + EnumRecyclerAdapter() { + private var nextId = 1L + private val descriptorToId = mutableMapOf() + + init { + super.setHasStableIds(true) + } + + final override fun setHasStableIds(hasStableIds: Boolean) { + throw UnsupportedOperationException() + } + + override fun getItemId(position: Int): Long { + val descriptor = getItemDescriptor(position) + return descriptorToId[descriptor] ?: run { + val id = nextId++ + descriptorToId[descriptor] = id + id + } + } + + abstract fun getItemDescriptor(position: Int): String +} diff --git a/app/src/main/kotlin/com/leos/droidify/work/CleanUpWorker.kt b/app/src/main/kotlin/com/leos/droidify/work/CleanUpWorker.kt new file mode 100644 index 0000000..98f8914 --- /dev/null +++ b/app/src/main/kotlin/com/leos/droidify/work/CleanUpWorker.kt @@ -0,0 +1,74 @@ +package com.leos.droidify.work + +import android.content.Context +import android.util.Log +import androidx.hilt.work.HiltWorker +import androidx.work.CoroutineWorker +import androidx.work.ExistingPeriodicWorkPolicy +import androidx.work.ExistingWorkPolicy +import androidx.work.OneTimeWorkRequestBuilder +import androidx.work.PeriodicWorkRequestBuilder +import androidx.work.WorkManager +import androidx.work.WorkerParameters +import com.leos.core.common.cache.Cache +import com.leos.core.datastore.SettingsRepository +import dagger.assisted.Assisted +import dagger.assisted.AssistedInject +import kotlin.time.Duration +import kotlin.time.toJavaDuration +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext + +@HiltWorker +class CleanUpWorker @AssistedInject constructor( + @Assisted context: Context, + @Assisted workerParams: WorkerParameters, + private val settingsRepository: SettingsRepository +) : CoroutineWorker(context, workerParams) { + companion object { + private const val TAG = "CleanUpWorker" + + fun removeAllSchedules(context: Context) { + val workManager = WorkManager.getInstance(context) + workManager.cancelUniqueWork(TAG) + } + + fun scheduleCleanup(context: Context, duration: Duration) { + val workManager = WorkManager.getInstance(context) + val cleanup = PeriodicWorkRequestBuilder(duration.toJavaDuration()) + .build() + + workManager.enqueueUniquePeriodicWork( + TAG, + ExistingPeriodicWorkPolicy.UPDATE, + cleanup + ) + Log.i(TAG, "Periodic work enqueued with duration: $duration") + } + + fun force(context: Context) { + val cleanup = OneTimeWorkRequestBuilder() + .build() + + val workManager = WorkManager.getInstance(context) + workManager.enqueueUniqueWork( + "$TAG.force", + ExistingWorkPolicy.KEEP, + cleanup + ) + Log.i(TAG, "Forced cleanup enqueued") + } + } + + override suspend fun doWork(): Result = withContext(Dispatchers.IO) { + try { + Log.i(TAG, "doWork: Started Cleanup") + settingsRepository.setCleanupInstant() + Cache.cleanup(applicationContext) + Result.success() + } catch (e: Exception) { + Log.i(TAG, "doWork: Failed to clean up", e) + Result.failure() + } + } +} diff --git a/app/src/main/res/anim/slide_right_fade_in.xml b/app/src/main/res/anim/slide_right_fade_in.xml new file mode 100644 index 0000000..678b7e8 --- /dev/null +++ b/app/src/main/res/anim/slide_right_fade_in.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/slide_right_fade_out.xml b/app/src/main/res/anim/slide_right_fade_out.xml new file mode 100644 index 0000000..abebebe --- /dev/null +++ b/app/src/main/res/anim/slide_right_fade_out.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/animator/slide_in.xml b/app/src/main/res/animator/slide_in.xml new file mode 100644 index 0000000..719d8b0 --- /dev/null +++ b/app/src/main/res/animator/slide_in.xml @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/app/src/main/res/animator/slide_in_keep.xml b/app/src/main/res/animator/slide_in_keep.xml new file mode 100644 index 0000000..6a65126 --- /dev/null +++ b/app/src/main/res/animator/slide_in_keep.xml @@ -0,0 +1,3 @@ + + diff --git a/app/src/main/res/animator/slide_out.xml b/app/src/main/res/animator/slide_out.xml new file mode 100644 index 0000000..5d29ac1 --- /dev/null +++ b/app/src/main/res/animator/slide_out.xml @@ -0,0 +1,19 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/favourite_icon.xml b/app/src/main/res/drawable/favourite_icon.xml new file mode 100644 index 0000000..6f092a0 --- /dev/null +++ b/app/src/main/res/drawable/favourite_icon.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..e009ebe --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 0000000..ae4f8e1 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,53 @@ + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_launcher_monochrome.xml b/app/src/main/res/drawable/ic_launcher_monochrome.xml new file mode 100644 index 0000000..a443a3f --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_monochrome.xml @@ -0,0 +1,53 @@ + + + + + + + + + + diff --git a/app/src/main/res/drawable/tv_banner.xml b/app/src/main/res/drawable/tv_banner.xml new file mode 100644 index 0000000..94a3fed --- /dev/null +++ b/app/src/main/res/drawable/tv_banner.xml @@ -0,0 +1,209 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/app_detail_header.xml b/app/src/main/res/layout/app_detail_header.xml new file mode 100644 index 0000000..6de90b9 --- /dev/null +++ b/app/src/main/res/layout/app_detail_header.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/download_status.xml b/app/src/main/res/layout/download_status.xml new file mode 100644 index 0000000..e23853d --- /dev/null +++ b/app/src/main/res/layout/download_status.xml @@ -0,0 +1,24 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/edit_repository.xml b/app/src/main/res/layout/edit_repository.xml new file mode 100644 index 0000000..444c08f --- /dev/null +++ b/app/src/main/res/layout/edit_repository.xml @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/enum_type.xml b/app/src/main/res/layout/enum_type.xml new file mode 100644 index 0000000..f7b2651 --- /dev/null +++ b/app/src/main/res/layout/enum_type.xml @@ -0,0 +1,22 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/expand_view_button.xml b/app/src/main/res/layout/expand_view_button.xml new file mode 100644 index 0000000..3902db0 --- /dev/null +++ b/app/src/main/res/layout/expand_view_button.xml @@ -0,0 +1,10 @@ + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment.xml b/app/src/main/res/layout/fragment.xml new file mode 100644 index 0000000..b1270ad --- /dev/null +++ b/app/src/main/res/layout/fragment.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/install_button.xml b/app/src/main/res/layout/install_button.xml new file mode 100644 index 0000000..ba39268 --- /dev/null +++ b/app/src/main/res/layout/install_button.xml @@ -0,0 +1,8 @@ + + \ No newline at end of file diff --git a/app/src/main/res/layout/link_item.xml b/app/src/main/res/layout/link_item.xml new file mode 100644 index 0000000..8090f00 --- /dev/null +++ b/app/src/main/res/layout/link_item.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/permissions_item.xml b/app/src/main/res/layout/permissions_item.xml new file mode 100644 index 0000000..6b51742 --- /dev/null +++ b/app/src/main/res/layout/permissions_item.xml @@ -0,0 +1,29 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/product_item.xml b/app/src/main/res/layout/product_item.xml new file mode 100644 index 0000000..17a0599 --- /dev/null +++ b/app/src/main/res/layout/product_item.xml @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/recycler_view_with_fab.xml b/app/src/main/res/layout/recycler_view_with_fab.xml new file mode 100644 index 0000000..16596c0 --- /dev/null +++ b/app/src/main/res/layout/recycler_view_with_fab.xml @@ -0,0 +1,22 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/release_item.xml b/app/src/main/res/layout/release_item.xml new file mode 100644 index 0000000..d935656 --- /dev/null +++ b/app/src/main/res/layout/release_item.xml @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/repository_item.xml b/app/src/main/res/layout/repository_item.xml new file mode 100644 index 0000000..2d29b5d --- /dev/null +++ b/app/src/main/res/layout/repository_item.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/repository_page.xml b/app/src/main/res/layout/repository_page.xml new file mode 100644 index 0000000..e409086 --- /dev/null +++ b/app/src/main/res/layout/repository_page.xml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/section_item.xml b/app/src/main/res/layout/section_item.xml new file mode 100644 index 0000000..8a46987 --- /dev/null +++ b/app/src/main/res/layout/section_item.xml @@ -0,0 +1,25 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/settings_page.xml b/app/src/main/res/layout/settings_page.xml new file mode 100644 index 0000000..5d4dfde --- /dev/null +++ b/app/src/main/res/layout/settings_page.xml @@ -0,0 +1,183 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/switch_item.xml b/app/src/main/res/layout/switch_item.xml new file mode 100644 index 0000000..325d7fd --- /dev/null +++ b/app/src/main/res/layout/switch_item.xml @@ -0,0 +1,8 @@ + + \ No newline at end of file diff --git a/app/src/main/res/layout/switch_type.xml b/app/src/main/res/layout/switch_type.xml new file mode 100644 index 0000000..ef4b04e --- /dev/null +++ b/app/src/main/res/layout/switch_type.xml @@ -0,0 +1,39 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/tabs_toolbar.xml b/app/src/main/res/layout/tabs_toolbar.xml new file mode 100644 index 0000000..8f77d5c --- /dev/null +++ b/app/src/main/res/layout/tabs_toolbar.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/title_text_item.xml b/app/src/main/res/layout/title_text_item.xml new file mode 100644 index 0000000..25a199d --- /dev/null +++ b/app/src/main/res/layout/title_text_item.xml @@ -0,0 +1,22 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/navigation_menu_main.xml b/app/src/main/res/menu/navigation_menu_main.xml new file mode 100644 index 0000000..dbce94a --- /dev/null +++ b/app/src/main/res/menu/navigation_menu_main.xml @@ -0,0 +1,15 @@ + +

+ + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..c4a603d --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..c4a603d --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/app/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..6f5906325031280f14a8435d0728be7201f9228a GIT binary patch literal 3660 zcmV-S4zux6Nk&FQ4gdgGMM6+kP&iCC4gdfzN5ByfO*m*9Ns^T6{VT_xa36<={!ak^ ztw4!obP}7USB#rg!!+(7@di7Fja;PguA5+ttU9*fjQq{AM z?4xL5+jd5hp5%|ayENUUnYC@(w!M31+qP}n=F!-;J=5+ag`hi?pVqc*h9v2Uh;(LM zmC-DWZQEGe-aWGM3%p0(Q`@$^J3O*&yOa*ecRrY{1%7`9?!F4X4jH}~ zfDWJwC`UR9hye{Bl)~JjFTsvqJwP?ixyE*i8g0Gn6P9F4Cf>F!+)xiWZ2-lKVChw` zD=GHg8U4=cgsZEOfgt>^LT2EjdU>r|BnzHtX!uR(rESUJxnHjrEcJkTqXv5iLCV%CsXM~>yMK1osQ6_5fn zS-y)m_AC6^0T#-hL6J}xx4<_yED8SGc;1>>zj^r9f+{lUGJbri592dMu8ZOpFm-mu zHZAxH3`anwWPt`0;aiDZdtt-q+Y0wr!#J$b$WbuqrABt#caHmOmf>4{7nk~nBrk&8 z7$!`}4M7e85g-JD0+2vN6o(2Fha!OP0uck@GYR;B01ybPAq&H_J`fU=6JhcT^w#l1 zcYAN%#a9u=z0Ne>Q$yjj+g$)rgk$?e62w0?fVVYNZZ;I<4_pbRB9HM{-^JCb3 zVe`3-B>8xf>()f?j7=I6jLS^)IS?)hV4?2+ClW{_RURu<7u{mXI(5s#2hWG;MA;E) zPjTq-oMhqTvcDnBq|*l1oiqs&=%3Ic^eM0;h=}6WP3C?ADY zwus(4P#(Cw1h1u;w3{|Xe|hMaISE+Es6?DR)(XM1lgslR*xaZ(c5hu6B0&biar14w zacQ~xtaD|!Ikkc12H072~4eQxORy)N;HQ8xaMK>GZn2yP7GE+8v_GN6R# zc~G@!`}P~~t4C*iTMfF&rT4R#%_$^7kwM_MTb{lxdh-xL!mr4y-Gtd>bF`=j(C&c_vmk0MHY;&f%nS9rCZLr{}4n$f#&(MucMGtgAAOxuq07S$S$3V>MuX~;cN`M{#E~?@i5w$vwX{xm9 za<`?dRH|Y)h$YpAB!mPYz>@k&P5772D{3eTg8b|Bd!cFz=`Y@+|SOKK0N}vi5^(}-5l1cOk z;DsP9B8}aey&d72WPJgj#5`A;PI>MKR9Wy_}=nOpjyUND^`K$%9r?5e*m6;?xS z{kb&R^*6Tr*)lCN?;^Tc?6V8ci-r~kxKyeNNVy~knt)zFzXO6INP7Vq*3>HB{833g zeQp;AjxyPd6TUtlv(NTNtgqAQrBSAp62GHF1w9N~F(Cf&dsC`q$DPpDOq4aNN&aJZ zLh!5l=(MiTA$@(RO2yKkWr%_i1w0K#dg*$tf|M-KP?oa9)sO^$06DFkrGqLQ3j?$k z(lSlPgMWa46k)JKxJ6F1%y(#xB%q>FW=2)Dm*z?VwX6^Y(gm`F=ej_nqbw*w2@OL# zl2%ewG5|1u16B_aS=3WeEmK$Nz+ds<6#Uu1TdMwE@KpJ>e;7p&6 z68ID6A*?R;pYlwYl|*GLsLmNMy?;%&j4X~M zmaXv61K-WtFkmqzg_>>wM*LnO8s%$u~en{&O0(NhXK--7X9Uc7L4oe*PDK2 z`0Q`$x=la)x|I(Gz>oxIRPEUC2eUuEZ!tzZF@Jd54r)|hgh`>3nA4;n$v{>*DPwHX zBuGF4h`}gHWNmrFmZ$OmH{Ug2^B@?B)*j+JqRfvnKKQ;s{p-s4GM5Yj(W15FQSJiR z`dG!Pjolg?!@r5pf^q%K#QWmY-{h=Vdsop9?>t+wdUHlGNie}`n>+eG{pAnl%CCA% z$&UR|6Z59YQ3oyDX;hYN%gK<4m=tc_74_e8m#@At|Nl?U&3XB;+Zum*_xll1eb^43 zViyHuC2`FK3v7AlZ{wX@SjnQ5SotBI`s(%eu^aymhPjW&u$v#kwV@;fi*N15t*ZQA zhZ3|F+`cO9XfJ5&4)qswS`*TXy3&15zp=dN4lDO9aCQGRlTJqkrejo#YKQWHUEj~P z&79vBJoNX^XT7#ftp5(hF!u@;{MOaUK261>+*S+|2PFftXMi{a=YX_`Q>AYmttS8R z>HY$T!6X1;>3?@^neV#9nEh=Boh@J;0~`SC$96t^8Po1)u>i$3SHg@3=70K1%AB@$ zZLkl=E|z-+HHYPkZV%NMD+jm6=D%NDEnWVX?Krl*bF%H{J#FTqSm$_{Y?%w@9(cxQ z4=mPco^{|j*8CgywC_0UtH&M)c_-$IK_ALRtKIwAtvh}8^!}4sOdhw>o>=nfqR*{8 z>pRe;nCGqi4zC_`#9tRL-PT@!-&;;!de>QN8rM?nz4L&nmiYKvWA=XGs;;T7 zy>`{R4Idpo_!(G20< eoc$j_9K~$~1n<4yE1cc?ezY$_@niZkDg*#f^7_dD literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..453a5c9cf486f7fafdc71376ce854651929048ef GIT binary patch literal 5524 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 W)p!$;SapEHyRic0|NX~*r6K^E=59Oy literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..b7c66db78bc7dc8cb0d850fb163a9afdfbead07a GIT binary patch literal 4892 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 A7XSbN literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..3432518e71fe9c674a18f60759a765c46a2e12fe GIT binary patch literal 3164 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 C{3?b3 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..cc62746e6cdccb3ddee90620bf0e3a0947ea53fd GIT binary patch literal 5230 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⁢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 Ij@}Rv0QiozrT_o{ literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..9e6cb05532e83b43540edafac32102570efbce99 GIT binary patch literal 8682 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 I(DUjE0O~5+KmY&$ literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..3d15e56f56293eab94d02579a53f7a6c2f5c6fa1 GIT binary patch literal 14464 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..1b9bb30cbbbea61d322108c5eea4053da2e3ff56 GIT binary patch literal 12674 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..44b3d4420b6a89ae90aefdc0f78f1acb8aa83976 GIT binary patch literal 23134 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 J{D03|0RTPdajF0S literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..6b4fd360cd5dd9a4813b0529d5732383753c2eb7 GIT binary patch literal 17552 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 r42@9kyeh*&&{*C$&CR1`&sy+H5IHWxVL9fM + + #191C1A + \ No newline at end of file diff --git a/app/src/main/res/values/ids.xml b/app/src/main/res/values/ids.xml new file mode 100644 index 0000000..ed0f374 --- /dev/null +++ b/app/src/main/res/values/ids.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/app/src/main/res/xml/locales_config.xml b/app/src/main/res/xml/locales_config.xml new file mode 100644 index 0000000..13a5712 --- /dev/null +++ b/app/src/main/res/xml/locales_config.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/xml/network_security_config.xml b/app/src/main/res/xml/network_security_config.xml new file mode 100644 index 0000000..1a54ed7 --- /dev/null +++ b/app/src/main/res/xml/network_security_config.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/build-logic/gradle.properties b/build-logic/gradle.properties new file mode 100644 index 0000000..6977b71 --- /dev/null +++ b/build-logic/gradle.properties @@ -0,0 +1,3 @@ +org.gradle.parallel=true +org.gradle.caching=true +org.gradle.configureondemand=true \ No newline at end of file diff --git a/build-logic/settings.gradle.kts b/build-logic/settings.gradle.kts new file mode 100644 index 0000000..3c5b3d0 --- /dev/null +++ b/build-logic/settings.gradle.kts @@ -0,0 +1,15 @@ +dependencyResolutionManagement { + repositories { + gradlePluginPortal() + google() + mavenCentral() + } + versionCatalogs { + create("libs") { + from(files("../gradle/libs.versions.toml")) + } + } +} + +rootProject.name = "build-logic" +include(":structure") \ No newline at end of file diff --git a/build-logic/structure/build.gradle.kts b/build-logic/structure/build.gradle.kts new file mode 100644 index 0000000..dac79a4 --- /dev/null +++ b/build-logic/structure/build.gradle.kts @@ -0,0 +1,57 @@ +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + +plugins { + `kotlin-dsl` +} + +group = "buildlogic" + +java { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 +} +tasks.withType().configureEach { + kotlinOptions { + jvmTarget = JavaVersion.VERSION_17.toString() + } +} + +dependencies { + compileOnly(libs.android.gradlePlugin) + compileOnly(libs.kotlin.gradlePlugin) + compileOnly(libs.kotlin.ktlint) + compileOnly(libs.ksp.gradlePlugin) +} + +gradlePlugin { + plugins { + register("lintPlugin") { + id = "looker.lint" + implementationClass = "AndroidLintPlugin" + } + register("serializationPlugin") { + id = "looker.serialization" + implementationClass = "AndroidSerializationPlugin" + } + register("hiltPlugin") { + id = "looker.hilt" + implementationClass = "AndroidHiltPlugin" + } + register("hiltWorkPlugin") { + id = "looker.hilt.work" + implementationClass = "AndroidHiltWorkerPlugin" + } + register("roomPlugin") { + id = "looker.room" + implementationClass = "AndroidRoomPlugin" + } + register("androidApplicationPlugin") { + id = "looker.android.application" + implementationClass = "AndroidApplicationPlugin" + } + register("androidLibraryPlugin") { + id = "looker.android.library" + implementationClass = "AndroidLibraryPlugin" + } + } +} diff --git a/build-logic/structure/src/main/kotlin/AndroidApplicationPlugin.kt b/build-logic/structure/src/main/kotlin/AndroidApplicationPlugin.kt new file mode 100644 index 0000000..9a253a5 --- /dev/null +++ b/build-logic/structure/src/main/kotlin/AndroidApplicationPlugin.kt @@ -0,0 +1,38 @@ +import com.android.build.api.dsl.ApplicationExtension +import com.leos.droidify.configureKotlinAndroid +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.kotlin.dsl.configure +import org.gradle.kotlin.dsl.dependencies +import org.gradle.kotlin.dsl.embeddedKotlin + +class AndroidApplicationPlugin : Plugin { + override fun apply(target: Project) { + with(target) { + with(pluginManager) { + apply("com.android.application") + apply("org.jetbrains.kotlin.android") + } + + extensions.configure { + configureKotlinAndroid(this) + buildToolsVersion = DefaultConfig.buildTools + defaultConfig { + targetSdk = DefaultConfig.compileSdk + applicationId = DefaultConfig.appId + versionCode = DefaultConfig.versionCode + versionName = DefaultConfig.versionName + } + buildFeatures { + aidl = false + renderScript = false + shaders = false + } + } + dependencies { + add("implementation", embeddedKotlin("stdlib")) + add("implementation", embeddedKotlin("reflect")) + } + } + } +} diff --git a/build-logic/structure/src/main/kotlin/AndroidHiltPlugin.kt b/build-logic/structure/src/main/kotlin/AndroidHiltPlugin.kt new file mode 100644 index 0000000..3280557 --- /dev/null +++ b/build-logic/structure/src/main/kotlin/AndroidHiltPlugin.kt @@ -0,0 +1,21 @@ +import com.leos.droidify.getLibrary +import com.leos.droidify.libs +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.kotlin.dsl.dependencies + +class AndroidHiltPlugin : Plugin { + override fun apply(target: Project) { + with(target) { + with(pluginManager) { + apply("com.google.dagger.hilt.android") + apply("com.google.devtools.ksp") + } + + dependencies { + add("implementation", libs.getLibrary("hilt.android")) + add("ksp", libs.getLibrary("hilt.compiler")) + } + } + } +} diff --git a/build-logic/structure/src/main/kotlin/AndroidHiltWorkerPlugin.kt b/build-logic/structure/src/main/kotlin/AndroidHiltWorkerPlugin.kt new file mode 100644 index 0000000..76c1827 --- /dev/null +++ b/build-logic/structure/src/main/kotlin/AndroidHiltWorkerPlugin.kt @@ -0,0 +1,21 @@ +import com.leos.droidify.getLibrary +import com.leos.droidify.libs +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.kotlin.dsl.dependencies + +class AndroidHiltWorkerPlugin : Plugin { + override fun apply(target: Project) { + with(target) { + with(pluginManager) { + apply("looker.hilt") + } + + dependencies { + add("implementation", libs.getLibrary("androidx.work.ktx")) + add("implementation", libs.getLibrary("hilt.ext.work")) + add("ksp", libs.getLibrary("hilt.ext.compiler")) + } + } + } +} diff --git a/build-logic/structure/src/main/kotlin/AndroidLibraryPlugin.kt b/build-logic/structure/src/main/kotlin/AndroidLibraryPlugin.kt new file mode 100644 index 0000000..4ac7302 --- /dev/null +++ b/build-logic/structure/src/main/kotlin/AndroidLibraryPlugin.kt @@ -0,0 +1,42 @@ +import com.android.build.api.variant.LibraryAndroidComponentsExtension +import com.android.build.gradle.LibraryExtension +import com.leos.droidify.configureKotlinAndroid +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.kotlin.dsl.configure +import org.gradle.kotlin.dsl.dependencies +import org.gradle.kotlin.dsl.embeddedKotlin + +class AndroidLibraryPlugin : Plugin { + override fun apply(target: Project) { + with(target) { + with(pluginManager) { + apply("com.android.library") + apply("org.jetbrains.kotlin.android") + } + + extensions.configure { + configureKotlinAndroid(this) + defaultConfig.targetSdk = DefaultConfig.compileSdk + buildFeatures { + aidl = false + renderScript = false + shaders = false + resValues = false + } + } + extensions.configure { + beforeVariants { + it.enableAndroidTest = it.enableAndroidTest + && project.projectDir.resolve("src/androidTest").exists() + } + } + dependencies { + add("implementation", embeddedKotlin("stdlib")) + add("implementation", embeddedKotlin("reflect")) + add("testImplementation", embeddedKotlin("test")) + add("androidTestImplementation", embeddedKotlin("test")) + } + } + } +} diff --git a/build-logic/structure/src/main/kotlin/AndroidLintPlugin.kt b/build-logic/structure/src/main/kotlin/AndroidLintPlugin.kt new file mode 100644 index 0000000..9d9db7f --- /dev/null +++ b/build-logic/structure/src/main/kotlin/AndroidLintPlugin.kt @@ -0,0 +1,27 @@ +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.kotlin.dsl.configure +import org.jlleitschuh.gradle.ktlint.KtlintExtension +import org.jlleitschuh.gradle.ktlint.reporter.ReporterType + +class AndroidLintPlugin : Plugin { + override fun apply(target: Project) { + with(target) { + with(pluginManager) { + apply("org.jlleitschuh.gradle.ktlint") + } + + extensions.configure { + android.set(true) + ignoreFailures.set(true) + debug.set(true) + reporters { + reporter(ReporterType.HTML) + } + filter { + exclude("**/generated/**") + } + } + } + } +} diff --git a/build-logic/structure/src/main/kotlin/AndroidRoomPlugin.kt b/build-logic/structure/src/main/kotlin/AndroidRoomPlugin.kt new file mode 100644 index 0000000..f4d00a2 --- /dev/null +++ b/build-logic/structure/src/main/kotlin/AndroidRoomPlugin.kt @@ -0,0 +1,46 @@ +import com.google.devtools.ksp.gradle.KspExtension +import com.leos.droidify.getLibrary +import com.leos.droidify.libs +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.api.tasks.InputDirectory +import org.gradle.api.tasks.PathSensitive +import org.gradle.api.tasks.PathSensitivity +import org.gradle.kotlin.dsl.configure +import org.gradle.kotlin.dsl.dependencies +import org.gradle.process.CommandLineArgumentProvider +import java.io.File + +class AndroidRoomPlugin : Plugin { + + override fun apply(target: Project) { + with(target) { + pluginManager.apply("com.google.devtools.ksp") + + extensions.configure { + // The schemas directory contains a schema file for each version of the Room database. + // This is required to enable Room auto migrations. + // See https://developer.android.com/reference/kotlin/androidx/room/AutoMigration. + arg(RoomSchemaArgProvider(File(projectDir, "schemas"))) + } + + dependencies { + add("implementation", libs.getLibrary("room.ktx")) + add("implementation", libs.getLibrary("room.runtime")) + add("ksp", libs.getLibrary("room.compiler")) + } + } + } + + /** + * https://issuetracker.google.com/issues/132245929 + * [Export schemas](https://developer.android.com/training/data-storage/room/migrating-db-versions#export-schemas) + */ + class RoomSchemaArgProvider( + @get:InputDirectory + @get:PathSensitive(PathSensitivity.RELATIVE) + val schemaDir: File, + ) : CommandLineArgumentProvider { + override fun asArguments() = listOf("room.schemaLocation=${schemaDir.path}") + } +} diff --git a/build-logic/structure/src/main/kotlin/AndroidSerializationPlugin.kt b/build-logic/structure/src/main/kotlin/AndroidSerializationPlugin.kt new file mode 100644 index 0000000..91fb16d --- /dev/null +++ b/build-logic/structure/src/main/kotlin/AndroidSerializationPlugin.kt @@ -0,0 +1,19 @@ +import com.leos.droidify.getLibrary +import com.leos.droidify.libs +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.kotlin.dsl.dependencies + +class AndroidSerializationPlugin : Plugin { + override fun apply(target: Project) { + with(target) { + with(pluginManager) { + apply("org.jetbrains.kotlin.plugin.serialization") + } + + dependencies { + add("implementation", libs.getLibrary("kotlinx.serialization.json")) + } + } + } +} diff --git a/build-logic/structure/src/main/kotlin/DefaultConfig.kt b/build-logic/structure/src/main/kotlin/DefaultConfig.kt new file mode 100644 index 0000000..5235411 --- /dev/null +++ b/build-logic/structure/src/main/kotlin/DefaultConfig.kt @@ -0,0 +1,9 @@ +object DefaultConfig { + // Update [release_build.yml] along with this + const val buildTools: String = "34.0.0" + const val appId = "com.leos.droidify" + const val compileSdk = 34 + const val minSdk = 23 + const val versionCode = 666 + const val versionName = "v01.6.4" +} diff --git a/build-logic/structure/src/main/kotlin/Modules.kt b/build-logic/structure/src/main/kotlin/Modules.kt new file mode 100644 index 0000000..41e6ced --- /dev/null +++ b/build-logic/structure/src/main/kotlin/Modules.kt @@ -0,0 +1,21 @@ +import org.gradle.kotlin.dsl.DependencyHandlerScope +import org.gradle.kotlin.dsl.project + +object Modules { + const val app = ":app" + const val coreCommon = ":core:common" + const val coreData = ":core:data" + const val coreDatabase = ":core:database" + const val coreDatastore = ":core:datastore" + const val coreDI = ":core:di" + const val coreDomain = ":core:domain" + const val coreNetwork = ":core:network" + const val installer = ":installer" +} + +fun DependencyHandlerScope.modules(vararg module: String) { + val modules = module.toList() + modules.forEach { + add("implementation", project(it)) + } +} diff --git a/build-logic/structure/src/main/kotlin/com/looker/droidify/KotlinAndroid.kt b/build-logic/structure/src/main/kotlin/com/looker/droidify/KotlinAndroid.kt new file mode 100644 index 0000000..5fe7266 --- /dev/null +++ b/build-logic/structure/src/main/kotlin/com/looker/droidify/KotlinAndroid.kt @@ -0,0 +1,66 @@ +package com.leos.droidify + +import DefaultConfig +import com.android.build.api.dsl.CommonExtension +import org.gradle.api.JavaVersion +import org.gradle.api.Project +import org.gradle.kotlin.dsl.dependencies +import org.gradle.kotlin.dsl.provideDelegate +import org.gradle.kotlin.dsl.withType +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + +// Taken from NIA sample app by Google + +/** + * Configure base Kotlin with Android options + */ +internal fun Project.configureKotlinAndroid( + commonExtension: CommonExtension<*, *, *, *, *>, +) { + commonExtension.apply { + compileSdk = DefaultConfig.compileSdk + + defaultConfig { + minSdk = DefaultConfig.minSdk + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } + + compileOptions { + // Up to Java 11 APIs are available through desugaring + // https://developer.android.com/studio/write/java11-minimal-support-table + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + isCoreLibraryDesugaringEnabled = true + } + } + + configureKotlin() + + dependencies { + add("coreLibraryDesugaring", libs.getLibrary("android.desugarJdkLibs")) + } +} + +/** + * Configure base Kotlin options + */ +private fun Project.configureKotlin() { + // Use withType to workaround https://youtrack.jetbrains.com/issue/KT-55947 + tasks.withType().configureEach { + kotlinOptions { + // Set JVM target to 11 + jvmTarget = JavaVersion.VERSION_11.toString() + // Treat all Kotlin warnings as errors (disabled by default) + // Override by setting warningsAsErrors=true in your ~/.gradle/gradle.properties + val warningsAsErrors: String? by project + allWarningsAsErrors = warningsAsErrors.toBoolean() + freeCompilerArgs = freeCompilerArgs + listOf( + "-opt-in=kotlin.RequiresOptIn", + // Enable experimental coroutines APIs, including Flow + "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi", + "-opt-in=kotlinx.coroutines.FlowPreview", + "-Xcontext-receivers" + ) + } + } +} diff --git a/build-logic/structure/src/main/kotlin/com/looker/droidify/ProjectExtensions.kt b/build-logic/structure/src/main/kotlin/com/looker/droidify/ProjectExtensions.kt new file mode 100644 index 0000000..936b391 --- /dev/null +++ b/build-logic/structure/src/main/kotlin/com/looker/droidify/ProjectExtensions.kt @@ -0,0 +1,18 @@ +package com.leos.droidify + +import org.gradle.api.Project +import org.gradle.api.artifacts.MinimalExternalModuleDependency +import org.gradle.api.artifacts.VersionCatalog +import org.gradle.api.artifacts.VersionCatalogsExtension +import org.gradle.api.provider.Provider +import org.gradle.kotlin.dsl.getByType +import org.gradle.plugin.use.PluginDependency + +val Project.libs + get(): VersionCatalog = extensions.getByType().named("libs") + +fun VersionCatalog.getLibrary(alias: String): Provider = + findLibrary(alias).get() + +fun VersionCatalog.getPlugin(alias: String): Provider = + findPlugin(alias).get() diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 0000000..eb89d1e --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,9 @@ +plugins { + alias(libs.plugins.android.application) apply false + alias(libs.plugins.android.library) apply false + alias(libs.plugins.kotlin.jvm) apply false + alias(libs.plugins.ktlint) apply false + alias(libs.plugins.ksp) apply false + alias(libs.plugins.hilt) apply false + alias(libs.plugins.kotlin.serialization) apply false +} diff --git a/core/common/.gitignore b/core/common/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/core/common/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/core/common/build.gradle.kts b/core/common/build.gradle.kts new file mode 100644 index 0000000..cf32480 --- /dev/null +++ b/core/common/build.gradle.kts @@ -0,0 +1,58 @@ +import com.android.build.gradle.internal.tasks.factory.dependsOn + +plugins { + alias(libs.plugins.looker.android.library) + alias(libs.plugins.looker.lint) +} + +android { + namespace = "com.leos.core.common" + defaultConfig { + vectorDrawables.useSupportLibrary = true + } + + buildTypes { + release { + isMinifyEnabled = true + proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt")) + } + create("alpha") { + initWith(getByName("debug")) + isMinifyEnabled = true + } + } + buildFeatures { + buildConfig = true + } +} + +dependencies { + implementation(libs.kotlinx.coroutines.android) + implementation(libs.android.material) + implementation(libs.androidx.activity.ktx) + implementation(libs.androidx.fragment.ktx) + implementation(libs.androidx.core.ktx) + implementation(libs.androidx.lifecycle.viewModel.ktx) + implementation(libs.androidx.recyclerview) + implementation(libs.coil.kt) + implementation(libs.jackson.core) +} + +// using a task as a preBuild dependency instead of a function that takes some time insures that it runs +task("detectAndroidLocals") { + val langsList: MutableSet = HashSet() + + // in /res are (almost) all languages that have a translated string is saved. this is safer and saves some time + fileTree("src/main/res").visit { + if (this.file.path.endsWith("strings.xml") && + this.file.canonicalFile.readText().contains(" + if (size >= BYTE_SIZE) { + Pair(size / BYTE_SIZE, index + 1) + } else { + null + } + }.take(sizeFormats.size).last() + return sizeFormats[index].format(Locale.US, size) + } +} diff --git a/core/common/src/main/java/com/looker/core/common/Deeplinks.kt b/core/common/src/main/java/com/looker/core/common/Deeplinks.kt new file mode 100644 index 0000000..33dd203 --- /dev/null +++ b/core/common/src/main/java/com/looker/core/common/Deeplinks.kt @@ -0,0 +1,80 @@ +package com.leos.core.common + +import android.content.Intent +import com.leos.core.common.extension.get + +private const val PERSONAL_HOST = "droidify.eu.org" + +private val httpScheme = setOf("http", "https") +private val fdroidRepoScheme = setOf("fdroidrepo", "fdroidrepos") + +private val supportedExternalHosts = setOf( + "f-droid.org", + "www.f-droid.org", + "staging.f-droid.org", + "apt.izzysoft.de" +) + +val Intent.deeplinkType: DeeplinkType? + get() = when { + data?.scheme == "package" || data?.scheme == "fdroid.app" -> { + val packageName = data?.schemeSpecificPart?.nullIfEmpty() + ?: throw InvalidDeeplink("Invalid packageName: $data") + DeeplinkType.AppDetail(packageName) + } + + data?.scheme in fdroidRepoScheme -> { + val repoAddress = + if (data?.scheme.equals("fdroidrepos")) { + dataString!!.replaceFirst("fdroidrepos", "https") + } else if (data?.scheme.equals("fdroidrepo")) { + dataString!!.replaceFirst("fdroidrepo", "https") + } else { + throw InvalidDeeplink("No repo address: $data") + } + DeeplinkType.AddRepository(repoAddress) + } + + data?.scheme == "market" && data?.host == "details" -> { + val packageName = + data["id"]?.nullIfEmpty() ?: throw InvalidDeeplink("Invalid packageName: $data") + DeeplinkType.AppDetail(packageName) + } + + data != null && data?.scheme in httpScheme -> { + when (data?.host) { + PERSONAL_HOST -> { + val repoAddress = data["repo_address"] + if (data?.path == "/app/") { + val packageName = + data["id"] ?: throw InvalidDeeplink("Invalid packageName: $data") + DeeplinkType.AppDetail(packageName, repoAddress) + } else { + throw InvalidDeeplink("Unknown intent path: ${data?.path}, Data: $data") + } + } + + in supportedExternalHosts -> { + val packageName = data?.lastPathSegment?.nullIfEmpty() + ?: throw InvalidDeeplink("Invalid packageName: $data") + DeeplinkType.AppDetail(packageName) + } + + else -> null + } + } + + else -> null + } + +val Intent.getInstallPackageName: String? + get() = if (data?.scheme == "package") data?.schemeSpecificPart?.nullIfEmpty() else null + +class InvalidDeeplink(override val message: String?) : IllegalStateException(message) + +sealed interface DeeplinkType { + + data class AddRepository(val address: String) : DeeplinkType + + data class AppDetail(val packageName: String, val repoAddress: String? = null) : DeeplinkType +} diff --git a/core/common/src/main/java/com/looker/core/common/Exporter.kt b/core/common/src/main/java/com/looker/core/common/Exporter.kt new file mode 100644 index 0000000..5979cc5 --- /dev/null +++ b/core/common/src/main/java/com/looker/core/common/Exporter.kt @@ -0,0 +1,10 @@ +package com.leos.core.common + +import android.net.Uri + +interface Exporter { + + suspend fun export(item: T, target: Uri) + + suspend fun import(target: Uri): T +} diff --git a/core/common/src/main/java/com/looker/core/common/PackageName.kt b/core/common/src/main/java/com/looker/core/common/PackageName.kt new file mode 100644 index 0000000..654b373 --- /dev/null +++ b/core/common/src/main/java/com/looker/core/common/PackageName.kt @@ -0,0 +1,6 @@ +package com.leos.core.common + +@JvmInline +value class PackageName(val name: String) + +fun String.toPackageName() = PackageName(this) diff --git a/core/common/src/main/java/com/looker/core/common/SdkCheck.kt b/core/common/src/main/java/com/looker/core/common/SdkCheck.kt new file mode 100644 index 0000000..25c825b --- /dev/null +++ b/core/common/src/main/java/com/looker/core/common/SdkCheck.kt @@ -0,0 +1,36 @@ +package com.leos.core.common + +import android.os.Build +import androidx.annotation.ChecksSdkIntAtLeast + +@ChecksSdkIntAtLeast(parameter = 0, lambda = 1) +inline fun sdkAbove(sdk: Int, onSuccessful: () -> Unit) { + if (Build.VERSION.SDK_INT >= sdk) onSuccessful() +} + +object SdkCheck { + + val sdk: Int + get() = Build.VERSION.SDK_INT + + // Allows auto install if target sdk of apk is one less then current sdk + fun canAutoInstall(targetSdk: Int) = targetSdk >= sdk - 1 && isSnowCake + + @get:ChecksSdkIntAtLeast(api = Build.VERSION_CODES.TIRAMISU) + val isTiramisu: Boolean = sdk >= Build.VERSION_CODES.TIRAMISU + + @get:ChecksSdkIntAtLeast(api = Build.VERSION_CODES.R) + val isR: Boolean = sdk >= Build.VERSION_CODES.R + + @get:ChecksSdkIntAtLeast(api = Build.VERSION_CODES.P) + val isPie: Boolean = sdk >= Build.VERSION_CODES.P + + @get:ChecksSdkIntAtLeast(api = Build.VERSION_CODES.O) + val isOreo: Boolean = sdk >= Build.VERSION_CODES.O + + @get:ChecksSdkIntAtLeast(api = Build.VERSION_CODES.S) + val isSnowCake: Boolean = sdk >= Build.VERSION_CODES.S + + @get:ChecksSdkIntAtLeast(api = Build.VERSION_CODES.N) + val isNougat: Boolean = sdk >= Build.VERSION_CODES.N +} diff --git a/core/common/src/main/java/com/looker/core/common/Singleton.kt b/core/common/src/main/java/com/looker/core/common/Singleton.kt new file mode 100644 index 0000000..9baf44c --- /dev/null +++ b/core/common/src/main/java/com/looker/core/common/Singleton.kt @@ -0,0 +1,13 @@ +package com.leos.core.common + +class Singleton { + private var value: T? = null + + /** + * Updates the [value] if its null else it is returned + */ + fun getOrUpdate(block: () -> T): T = value ?: kotlin.run { + value = block() + value!! + } +} diff --git a/core/common/src/main/java/com/looker/core/common/Text.kt b/core/common/src/main/java/com/looker/core/common/Text.kt new file mode 100644 index 0000000..9e4efec --- /dev/null +++ b/core/common/src/main/java/com/looker/core/common/Text.kt @@ -0,0 +1,53 @@ +package com.leos.core.common + +import android.util.Log +import java.util.Locale + +fun T.nullIfEmpty(): T? { + return if (isNullOrBlank()) null else this +} + +/** + * Removes the string between the first [prefix] and last [suffix] + * + * For example: if "xyz_abc_123" is passed with [prefix] = "_" + * + * @return: "xyz_123" + */ +fun String.stripBetween(prefix: String, suffix: String = prefix): String { + val prefixIndex = indexOf(prefix) + val suffixIndex = lastIndexOf(suffix) + val isRangeValid = prefixIndex != -1 && + suffixIndex != -1 && + prefixIndex != suffixIndex + return if (isRangeValid) { + substring(0, prefixIndex + 1) + substring(suffixIndex + 1) + } else { + this + } +} + +private val sizeFormats = listOf("%.0f B", "%.0f kB", "%.1f MB", "%.2f GB") + +fun Long.formatSize(): String { + val (size, index) = generateSequence(Pair(this.toFloat(), 0)) { (size, index) -> + if (size >= 1024f) { + Pair(size / 1024f, index + 1) + } else { + null + } + }.take(sizeFormats.size).last() + return sizeFormats[index].format(Locale.US, size) +} + +fun ByteArray.hex(): String = joinToString(separator = "") { byte -> + "%02x".format(Locale.US, byte.toInt() and 0xff) +} + +fun Any.log( + message: Any?, + tag: String = this::class.java.simpleName + ".DEBUG", + type: Int = Log.DEBUG +) { + Log.println(type, tag, message.toString()) +} diff --git a/core/common/src/main/java/com/looker/core/common/cache/Cache.kt b/core/common/src/main/java/com/looker/core/common/cache/Cache.kt new file mode 100644 index 0000000..27c2bb4 --- /dev/null +++ b/core/common/src/main/java/com/looker/core/common/cache/Cache.kt @@ -0,0 +1,243 @@ +package com.leos.core.common.cache + +import android.content.ContentProvider +import android.content.ContentValues +import android.content.Context +import android.content.pm.PackageManager +import android.database.Cursor +import android.database.MatrixCursor +import android.net.Uri +import android.os.Build +import android.os.ParcelFileDescriptor +import android.provider.OpenableColumns +import android.system.Os +import com.leos.core.common.SdkCheck +import com.leos.core.common.sdkAbove +import java.io.File +import java.util.UUID +import kotlin.concurrent.thread +import kotlin.time.Duration +import kotlin.time.Duration.Companion.hours + +object Cache { + + private const val RELEASE_DIR = "releases" + private const val PARTIAL_DIR = "partial" + private const val IMAGES_DIR = "images" + private const val TEMP_DIR = "temporary" + + private fun ensureCacheDir(context: Context, name: String): File { + return File( + context.cacheDir, + name + ).apply { isDirectory || mkdirs() || throw RuntimeException() } + } + + private fun applyOrMode(file: File, mode: Int) { + val oldMode = Os.stat(file.path).st_mode and 0b111111111111 + val newMode = oldMode or mode + if (newMode != oldMode) { + Os.chmod(file.path, newMode) + } + } + + private fun subPath(dir: File, file: File): String { + val dirPath = "${dir.path}/" + val filePath = file.path + filePath.startsWith(dirPath) || throw RuntimeException() + return filePath.substring(dirPath.length) + } + + fun getImagesDir(context: Context): File { + return ensureCacheDir(context, IMAGES_DIR) + } + + fun getPartialReleaseFile(context: Context, cacheFileName: String): File { + return File(ensureCacheDir(context, PARTIAL_DIR), cacheFileName) + } + + fun getReleaseFile(context: Context, cacheFileName: String): File { + return File(ensureCacheDir(context, RELEASE_DIR), cacheFileName).apply { + sdkAbove(Build.VERSION_CODES.N) { + // Make readable for package installer + val cacheDir = context.cacheDir.parentFile!!.parentFile!! + generateSequence(this) { it.parentFile!! }.takeWhile { it != cacheDir }.forEach { + when { + it.isDirectory -> applyOrMode(it, 0b001001001) + it.isFile -> applyOrMode(it, 0b100100100) + } + } + } + } + } + + fun getReleaseUri(context: Context, cacheFileName: String): Uri { + val file = getReleaseFile(context, cacheFileName) + val packageInfo = + try { + if (SdkCheck.isTiramisu) { + context.packageManager.getPackageInfo( + context.packageName, + PackageManager.PackageInfoFlags.of(PackageManager.GET_PROVIDERS.toLong()) + ) + } else { + @Suppress("DEPRECATION") + context.packageManager.getPackageInfo( + context.packageName, + PackageManager.GET_PROVIDERS + ) + } + } catch (e: Exception) { + null + } + val authority = + packageInfo?.providers?.find { it.name == Provider::class.java.name }!!.authority + return Uri.Builder() + .scheme("content") + .authority(authority) + .encodedPath(file.path.drop(context.cacheDir.path.length)) + .build() + } + + fun getTemporaryFile(context: Context): File { + return File(ensureCacheDir(context, TEMP_DIR), UUID.randomUUID().toString()) + } + + fun cleanup(context: Context) { + thread { + cleanup( + context, + Pair(IMAGES_DIR, Duration.INFINITE), + Pair(PARTIAL_DIR, 24.hours), + Pair(RELEASE_DIR, 24.hours), + Pair(TEMP_DIR, 1.hours) + ) + } + } + + private fun cleanup(context: Context, vararg dirHours: Pair) { + val knownNames = dirHours.asSequence().map { it.first }.toSet() + val files = context.cacheDir.listFiles().orEmpty() + files.asSequence().filter { it.name !in knownNames }.forEach { + if (it.isDirectory) { + cleanupDir(it, Duration.ZERO) + it.delete() + } else { + it.delete() + } + } + dirHours.forEach { (name, duration) -> + val file = File(context.cacheDir, name) + if (file.exists()) { + if (file.isDirectory) { + cleanupDir(file, duration) + } else { + file.delete() + } + } + } + } + + private fun cleanupDir(dir: File, duration: Duration) { + dir.listFiles()?.forEach { + val older = duration <= Duration.ZERO || run { + val olderThan = System.currentTimeMillis() / 1000L - duration.inWholeSeconds + try { + val stat = Os.lstat(it.path) + stat.st_atime < olderThan + } catch (e: Exception) { + false + } + } + if (older) { + if (it.isDirectory) { + cleanupDir(it, duration) + if (it.isDirectory) { + it.delete() + } + } else { + it.delete() + } + } + } + } + + class Provider : ContentProvider() { + companion object { + private val defaultColumns = arrayOf(OpenableColumns.DISPLAY_NAME, OpenableColumns.SIZE) + } + + private fun getFileAndTypeForUri(uri: Uri): Pair { + return when (uri.pathSegments?.firstOrNull()) { + RELEASE_DIR -> Pair( + File(context!!.cacheDir, uri.encodedPath!!), + "application/vnd.android.package-archive" + ) + + else -> throw SecurityException() + } + } + + override fun onCreate(): Boolean = true + + override fun query( + uri: Uri, + projection: Array?, + selection: String?, + selectionArgs: Array?, + sortOrder: String? + ): Cursor { + val file = getFileAndTypeForUri(uri).first + val columns = (projection ?: defaultColumns).mapNotNull { + when (it) { + OpenableColumns.DISPLAY_NAME -> Pair(it, file.name) + OpenableColumns.SIZE -> Pair(it, file.length()) + else -> null + } + }.unzip() + return MatrixCursor(columns.first.toTypedArray()).apply { + addRow( + columns.second.toTypedArray() + ) + } + } + + override fun getType(uri: Uri): String = getFileAndTypeForUri(uri).second + + private val unsupported: Nothing + get() = throw UnsupportedOperationException() + + override fun insert(uri: Uri, contentValues: ContentValues?): Uri = unsupported + override fun delete(uri: Uri, selection: String?, selectionArgs: Array?): Int = + unsupported + + override fun update( + uri: Uri, + contentValues: ContentValues?, + selection: String?, + selectionArgs: Array? + ): Int = unsupported + + override fun openFile(uri: Uri, mode: String): ParcelFileDescriptor? { + val openMode = when (mode) { + "r" -> ParcelFileDescriptor.MODE_READ_ONLY + "w", "wt" -> + ParcelFileDescriptor.MODE_WRITE_ONLY or ParcelFileDescriptor.MODE_CREATE or + ParcelFileDescriptor.MODE_TRUNCATE + + "wa" -> + ParcelFileDescriptor.MODE_WRITE_ONLY or ParcelFileDescriptor.MODE_CREATE or + ParcelFileDescriptor.MODE_APPEND + + "rw" -> ParcelFileDescriptor.MODE_READ_WRITE or ParcelFileDescriptor.MODE_CREATE + "rwt" -> + ParcelFileDescriptor.MODE_READ_WRITE or ParcelFileDescriptor.MODE_CREATE or + ParcelFileDescriptor.MODE_TRUNCATE + + else -> throw IllegalArgumentException() + } + val file = getFileAndTypeForUri(uri).first + return ParcelFileDescriptor.open(file, openMode) + } + } +} diff --git a/core/common/src/main/java/com/looker/core/common/device/Huawei.kt b/core/common/src/main/java/com/looker/core/common/device/Huawei.kt new file mode 100644 index 0000000..3d5affa --- /dev/null +++ b/core/common/src/main/java/com/looker/core/common/device/Huawei.kt @@ -0,0 +1,13 @@ +package com.leos.core.common.device + +object Huawei { + val isHuaweiEmui: Boolean + get() { + return try { + Class.forName("com.huawei.android.os.BuildEx") + true + } catch (e: Exception) { + false + } + } +} diff --git a/core/common/src/main/java/com/looker/core/common/device/Miui.kt b/core/common/src/main/java/com/looker/core/common/device/Miui.kt new file mode 100644 index 0000000..74bf758 --- /dev/null +++ b/core/common/src/main/java/com/looker/core/common/device/Miui.kt @@ -0,0 +1,38 @@ +package com.leos.core.common.device + +import android.annotation.SuppressLint +import android.util.Log + +object Miui { + val isMiui by lazy { + getSystemProperty("ro.miui.ui.version.name")?.isNotEmpty() ?: false + } + + @SuppressLint("PrivateApi") + fun isMiuiOptimizationDisabled(): Boolean { + val sysProp = getSystemProperty("persist.sys.miui_optimization") + if (sysProp == "0" || sysProp == "false") { + return true + } + + return try { + Class.forName("android.miui.AppOpsUtils") + .getDeclaredMethod("isXOptMode") + .invoke(null) as Boolean + } catch (e: Exception) { + false + } + } + + @SuppressLint("PrivateApi") + private fun getSystemProperty(key: String?): String? { + return try { + Class.forName("android.os.SystemProperties") + .getDeclaredMethod("get", String::class.java) + .invoke(null, key) as String + } catch (e: Exception) { + Log.e("Miui", "Unable to use SystemProperties.get()", e) + null + } + } +} diff --git a/core/common/src/main/java/com/looker/core/common/extension/Collections.kt b/core/common/src/main/java/com/looker/core/common/extension/Collections.kt new file mode 100644 index 0000000..2b929d9 --- /dev/null +++ b/core/common/src/main/java/com/looker/core/common/extension/Collections.kt @@ -0,0 +1,16 @@ +package com.leos.core.common.extension + +inline fun Map.updateAsMutable(block: MutableMap.() -> Unit): Map { + return toMutableMap().apply(block) +} + +inline fun Set.updateAsMutable(block: MutableSet.() -> Unit): Set { + return toMutableSet().apply(block) +} + +inline fun MutableSet.addAndCompute(item: T, block: (isAdded: Boolean) -> Unit): Boolean = + add(item).apply { block(this) } + +inline fun List.updateAsMutable(block: MutableList.() -> Unit): List { + return toMutableList().apply(block) +} diff --git a/core/common/src/main/java/com/looker/core/common/extension/Context.kt b/core/common/src/main/java/com/looker/core/common/extension/Context.kt new file mode 100644 index 0000000..808e52b --- /dev/null +++ b/core/common/src/main/java/com/looker/core/common/extension/Context.kt @@ -0,0 +1,84 @@ +package com.leos.core.common.extension + +import android.app.NotificationManager +import android.app.job.JobScheduler +import android.content.ClipData +import android.content.ClipboardManager +import android.content.Context +import android.content.res.ColorStateList +import android.graphics.drawable.Drawable +import android.net.ConnectivityManager +import android.view.inputmethod.InputMethodManager +import androidx.annotation.AttrRes +import androidx.annotation.DrawableRes +import androidx.appcompat.content.res.AppCompatResources +import androidx.core.content.ContextCompat +import androidx.core.content.getSystemService +import com.leos.core.common.R + +inline val Context.clipboardManager: ClipboardManager? + get() = getSystemService() + +inline val Context.connectivityManager: ConnectivityManager? + get() = getSystemService() + +inline val Context.inputManager: InputMethodManager? + get() = getSystemService() + +inline val Context.jobScheduler: JobScheduler? + get() = getSystemService() + +inline val Context.notificationManager: NotificationManager? + get() = getSystemService() + +fun Context.copyToClipboard(clip: String) { + clipboardManager?.setPrimaryClip(ClipData.newPlainText(null, clip)) +} + +val Context.corneredBackground: Drawable + get() = getDrawableCompat(R.drawable.background_border) + +val Context.divider: Drawable + get() = getDrawableFromAttr(android.R.attr.listDivider) + +val Context.homeAsUp: Drawable + get() = getDrawableFromAttr(android.R.attr.homeAsUpIndicator) + +val Context.open: Drawable + get() = getDrawableCompat(R.drawable.ic_launch) + +val Context.selectableBackground: Drawable + get() = getDrawableFromAttr(android.R.attr.selectableItemBackground) + +val Context.camera: Drawable + get() = getDrawableCompat(R.drawable.ic_image) + +val Context.aspectRatio: Float + get() = with(resources.displayMetrics) { + (heightPixels / widthPixels).toFloat() + } + +fun Context.getMutatedIcon(@DrawableRes id: Int): Drawable = getDrawableCompat(id).mutate() + +private fun Context.getDrawableFromAttr(attrResId: Int): Drawable { + val typedArray = obtainStyledAttributes(intArrayOf(attrResId)) + val resId = try { + typedArray.getResourceId(0, 0) + } finally { + typedArray.recycle() + } + return getDrawableCompat(resId) +} + +fun Context.getDrawableCompat(@DrawableRes resId: Int = R.drawable.background_border): Drawable = + requireNotNull(AppCompatResources.getDrawable(this, resId)) { "Cannot find drawable, ID: $resId" } + +fun Context.getColorFromAttr(@AttrRes attrResId: Int): ColorStateList { + val typedArray = obtainStyledAttributes(intArrayOf(attrResId)) + val (colorStateList, resId) = try { + Pair(typedArray.getColorStateList(0), typedArray.getResourceId(0, 0)) + } finally { + typedArray.recycle() + } + return colorStateList ?: ContextCompat.getColorStateList(this, resId)!! +} diff --git a/core/common/src/main/java/com/looker/core/common/extension/Cursor.kt b/core/common/src/main/java/com/looker/core/common/extension/Cursor.kt new file mode 100644 index 0000000..4b287c9 --- /dev/null +++ b/core/common/src/main/java/com/looker/core/common/extension/Cursor.kt @@ -0,0 +1,11 @@ +package com.leos.core.common.extension + +import android.database.Cursor + +fun Cursor.asSequence(): Sequence { + return generateSequence { if (moveToNext()) this else null } +} + +fun Cursor.firstOrNull(): Cursor? { + return if (moveToFirst()) this else null +} diff --git a/core/common/src/main/java/com/looker/core/common/extension/DateTime.kt b/core/common/src/main/java/com/looker/core/common/extension/DateTime.kt new file mode 100644 index 0000000..61015e0 --- /dev/null +++ b/core/common/src/main/java/com/looker/core/common/extension/DateTime.kt @@ -0,0 +1,18 @@ +package com.leos.core.common.extension + +import java.text.SimpleDateFormat +import java.util.Date +import java.util.Locale +import java.util.TimeZone + +private object DateTime { + val HTTP_DATE_FORMAT: SimpleDateFormat + get() = SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.US).apply { + timeZone = TimeZone.getTimeZone("GMT") + } +} + +fun Date.toFormattedString(): String = DateTime.HTTP_DATE_FORMAT.format(this) + +fun String.toDate(): Date = DateTime.HTTP_DATE_FORMAT.parse(this) + ?: throw IllegalStateException("Wrong Date Format") diff --git a/core/common/src/main/java/com/looker/core/common/extension/Exception.kt b/core/common/src/main/java/com/looker/core/common/extension/Exception.kt new file mode 100644 index 0000000..d32677a --- /dev/null +++ b/core/common/src/main/java/com/looker/core/common/extension/Exception.kt @@ -0,0 +1,8 @@ +package com.leos.core.common.extension + +import kotlinx.coroutines.CancellationException + +inline fun Exception.exceptCancellation() { + printStackTrace() + if (this is CancellationException) throw this +} diff --git a/core/common/src/main/java/com/looker/core/common/extension/File.kt b/core/common/src/main/java/com/looker/core/common/extension/File.kt new file mode 100644 index 0000000..61be065 --- /dev/null +++ b/core/common/src/main/java/com/looker/core/common/extension/File.kt @@ -0,0 +1,23 @@ +package com.leos.core.common.extension + +import java.io.File +import java.io.InputStream +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.ensureActive +import kotlinx.coroutines.withContext + +val File.size: Long? + get() = if (exists()) length().takeIf { it > 0L } else null + +suspend infix fun InputStream.writeTo(file: File) = withContext(Dispatchers.IO) { + val buffer = ByteArray(DEFAULT_BUFFER_SIZE) + var bytesRead = read(buffer) + file.outputStream().use { output -> + while (bytesRead != -1) { + ensureActive() + output.write(buffer, 0, bytesRead) + bytesRead = read(buffer) + } + output.flush() + } +} diff --git a/core/common/src/main/java/com/looker/core/common/extension/Fingerprint.kt b/core/common/src/main/java/com/looker/core/common/extension/Fingerprint.kt new file mode 100644 index 0000000..0d39fb5 --- /dev/null +++ b/core/common/src/main/java/com/looker/core/common/extension/Fingerprint.kt @@ -0,0 +1,27 @@ +package com.leos.core.common.extension + +import com.leos.core.common.hex +import java.security.MessageDigest +import java.security.cert.Certificate +import java.security.cert.CertificateEncodingException + +fun Certificate.fingerprint(): String { + val encoded = try { + encoded + } catch (e: CertificateEncodingException) { + null + } + return encoded?.fingerprint().orEmpty() +} + +fun ByteArray.fingerprint(): String = if (size >= 256) { + try { + val fingerprint = MessageDigest.getInstance("sha256").digest(this) + fingerprint.hex() + } catch (e: Exception) { + e.printStackTrace() + "" + } +} else { + "" +} diff --git a/core/common/src/main/java/com/looker/core/common/extension/Flow.kt b/core/common/src/main/java/com/looker/core/common/extension/Flow.kt new file mode 100644 index 0000000..030f372 --- /dev/null +++ b/core/common/src/main/java/com/looker/core/common/extension/Flow.kt @@ -0,0 +1,29 @@ +package com.leos.core.common.extension + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.channels.* +import kotlinx.coroutines.flow.* + +context(ViewModel) +fun Flow.asStateFlow( + initialValue: T, + scope: CoroutineScope = viewModelScope, + started: SharingStarted = SharingStarted.WhileSubscribed(5_000) +): StateFlow = stateIn( + scope = scope, + started = started, + initialValue = initialValue +) + +context(CoroutineScope) +@OptIn(ExperimentalCoroutinesApi::class) +fun ReceiveChannel.filter( + block: suspend (T) -> Boolean +): ReceiveChannel = produce(capacity = Channel.UNLIMITED) { + consumeEach { item -> + if (block(item)) send(item) + } +} diff --git a/core/common/src/main/java/com/looker/core/common/extension/Insets.kt b/core/common/src/main/java/com/looker/core/common/extension/Insets.kt new file mode 100644 index 0000000..de4f115 --- /dev/null +++ b/core/common/src/main/java/com/looker/core/common/extension/Insets.kt @@ -0,0 +1,83 @@ +package com.leos.core.common.extension + +import android.view.View +import android.view.ViewGroup +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.marginLeft +import androidx.core.view.marginTop +import androidx.core.view.updateLayoutParams +import androidx.core.view.updatePadding +import androidx.core.widget.NestedScrollView +import androidx.recyclerview.widget.RecyclerView +import com.leos.core.common.SdkCheck +import com.leos.core.common.extension.InsetSides.BOTTOM +import com.leos.core.common.extension.InsetSides.LEFT +import com.leos.core.common.extension.InsetSides.RIGHT +import com.leos.core.common.extension.InsetSides.TOP + +fun View.systemBarsMargin( + persistentPadding: Int, + allowedSides: List = listOf(LEFT, RIGHT, BOTTOM) +) { + if (SdkCheck.isR) { + ViewCompat.setOnApplyWindowInsetsListener(this) { view, windowInsets -> + val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()) + view.updateLayoutParams { + if (TOP in allowedSides) topMargin = insets.top + marginTop + if (LEFT in allowedSides) leftMargin = insets.left + marginLeft + if (BOTTOM in allowedSides) bottomMargin = insets.bottom + persistentPadding + if (RIGHT in allowedSides) rightMargin = insets.right + persistentPadding + } + WindowInsetsCompat.CONSUMED + } + } +} + +fun RecyclerView.systemBarsPadding( + allowedSides: List = listOf(LEFT, RIGHT, BOTTOM), + includeFab: Boolean = true +) { + if (SdkCheck.isR) { + ViewCompat.setOnApplyWindowInsetsListener(this) { view, windowInsets -> + clipToPadding = false + val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()) + view.updatePadding( + if (LEFT in allowedSides) insets.left else 0, + if (TOP in allowedSides) insets.top else 0, + if (RIGHT in allowedSides) insets.right else 0, + if (BOTTOM in allowedSides) { + insets.bottom + if (includeFab) 88.dp else 0 + } else { + 0 + } + ) + WindowInsetsCompat.CONSUMED + } + } +} + +fun NestedScrollView.systemBarsPadding( + allowedSides: List = listOf(LEFT, RIGHT, BOTTOM) +) { + if (SdkCheck.isR) { + ViewCompat.setOnApplyWindowInsetsListener(this) { view, windowInsets -> + clipToPadding = false + val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()) + view.updatePadding( + if (LEFT in allowedSides) insets.left else 0, + if (TOP in allowedSides) insets.top else 0, + if (RIGHT in allowedSides) insets.right else 0, + if (BOTTOM in allowedSides) insets.bottom else 0 + ) + WindowInsetsCompat.CONSUMED + } + } +} + +enum class InsetSides { + LEFT, + RIGHT, + TOP, + BOTTOM +} diff --git a/core/common/src/main/java/com/looker/core/common/extension/Intent.kt b/core/common/src/main/java/com/looker/core/common/extension/Intent.kt new file mode 100644 index 0000000..06a1d79 --- /dev/null +++ b/core/common/src/main/java/com/looker/core/common/extension/Intent.kt @@ -0,0 +1,23 @@ +package com.leos.core.common.extension + +import android.app.PendingIntent +import android.content.Context +import android.content.Intent +import android.net.Uri +import androidx.core.app.TaskStackBuilder +import com.leos.core.common.SdkCheck + +inline val intentFlagCompat + get() = if (SdkCheck.isSnowCake) { + PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_MUTABLE + } else { + PendingIntent.FLAG_UPDATE_CURRENT + } + +fun Intent.toPendingIntent(context: Context): PendingIntent? = + TaskStackBuilder + .create(context) + .addNextIntentWithParentStack(this) + .getPendingIntent(0, intentFlagCompat) + +operator fun Uri?.get(key: String): String? = this?.getQueryParameter(key) diff --git a/core/common/src/main/java/com/looker/core/common/extension/JarFile.kt b/core/common/src/main/java/com/looker/core/common/extension/JarFile.kt new file mode 100644 index 0000000..7aa6f59 --- /dev/null +++ b/core/common/src/main/java/com/looker/core/common/extension/JarFile.kt @@ -0,0 +1,19 @@ +package com.leos.core.common.extension + +import java.io.File +import java.security.CodeSigner +import java.security.cert.Certificate +import java.util.jar.JarEntry +import java.util.jar.JarFile + +fun File.toJarFile(verify: Boolean = true): JarFile = JarFile(this, verify) + +@get:Throws(IllegalStateException::class) +val JarEntry.codeSigner: CodeSigner + get() = codeSigners?.singleOrNull() + ?: throw IllegalStateException("index.jar must be signed by a single code signer") + +@get:Throws(IllegalStateException::class) +val CodeSigner.certificate: Certificate + get() = signerCertPath?.certificates?.singleOrNull() + ?: throw IllegalStateException("index.jar code signer should have only one certificate") diff --git a/core/common/src/main/java/com/looker/core/common/extension/Json.kt b/core/common/src/main/java/com/looker/core/common/extension/Json.kt new file mode 100644 index 0000000..00773ed --- /dev/null +++ b/core/common/src/main/java/com/looker/core/common/extension/Json.kt @@ -0,0 +1,108 @@ +package com.leos.core.common.extension + +import com.fasterxml.jackson.core.JsonFactory +import com.fasterxml.jackson.core.JsonGenerator +import com.fasterxml.jackson.core.JsonParseException +import com.fasterxml.jackson.core.JsonParser +import com.fasterxml.jackson.core.JsonToken + +object Json { + val factory = JsonFactory() +} + +interface KeyToken { + val key: String + val token: JsonToken + + fun number(key: String): Boolean = this.key == key && this.token.isNumeric + fun string(key: String): Boolean = this.key == key && this.token == JsonToken.VALUE_STRING + fun boolean(key: String): Boolean = this.key == key && this.token.isBoolean + fun dictionary(key: String): Boolean = this.key == key && this.token == JsonToken.START_OBJECT + fun array(key: String): Boolean = this.key == key && this.token == JsonToken.START_ARRAY +} + +fun JsonParser.illegal(): Nothing { + throw JsonParseException(this, "Illegal state") +} + +fun JsonParser.forEachKey(callback: JsonParser.(KeyToken) -> Unit) { + var passKey = "" + var passToken = JsonToken.NOT_AVAILABLE + val keyToken = object : KeyToken { + override val key: String + get() = passKey + override val token: JsonToken + get() = passToken + } + while (true) { + val token = nextToken() + if (token == JsonToken.FIELD_NAME) { + passKey = currentName + passToken = nextToken() + callback(keyToken) + } else if (token == JsonToken.END_OBJECT) { + break + } else { + illegal() + } + } +} + +fun JsonParser.forEach(requiredToken: JsonToken, callback: JsonParser.() -> Unit) { + while (true) { + val token = nextToken() + if (token == JsonToken.END_ARRAY) { + break + } else if (token == requiredToken) { + callback() + } else if (token.isStructStart) { + skipChildren() + } + } +} + +fun JsonParser.collectNotNull( + requiredToken: JsonToken, + callback: JsonParser.() -> T? +): List { + val list = mutableListOf() + forEach(requiredToken) { + val result = callback() + if (result != null) { + list += result + } + } + return list +} + +fun JsonParser.collectNotNullStrings(): List { + return collectNotNull(JsonToken.VALUE_STRING) { valueAsString } +} + +fun JsonParser.collectDistinctNotEmptyStrings(): List { + return collectNotNullStrings().asSequence().filter { it.isNotEmpty() }.distinct().toList() +} + +fun JsonParser.parseDictionary(callback: JsonParser.() -> T): T { + if (nextToken() == JsonToken.START_OBJECT) { + val result = callback() + if (nextToken() != null) { + illegal() + } + return result + } else { + illegal() + } +} + +inline fun JsonGenerator.writeDictionary(callback: JsonGenerator.() -> Unit) { + writeStartObject() + callback() + writeEndObject() +} + +inline fun JsonGenerator.writeArray(fieldName: String, callback: JsonGenerator.() -> Unit) { + writeArrayFieldStart(fieldName) + callback() + writeEndArray() +} diff --git a/core/common/src/main/java/com/looker/core/common/extension/Locale.kt b/core/common/src/main/java/com/looker/core/common/extension/Locale.kt new file mode 100644 index 0000000..7bcce89 --- /dev/null +++ b/core/common/src/main/java/com/looker/core/common/extension/Locale.kt @@ -0,0 +1,17 @@ +package com.leos.core.common.extension + +import java.util.Locale + +fun String.toLocale(): Locale = when { + contains("-r") -> Locale( + substring(0, 2), + substring(4) + ) + + contains("_") -> Locale( + substring(0, 2), + substring(3) + ) + + else -> Locale(this) +} diff --git a/core/common/src/main/java/com/looker/core/common/extension/Network.kt b/core/common/src/main/java/com/looker/core/common/extension/Network.kt new file mode 100644 index 0000000..c07dc23 --- /dev/null +++ b/core/common/src/main/java/com/looker/core/common/extension/Network.kt @@ -0,0 +1,6 @@ +package com.leos.core.common.extension + +import androidx.core.net.toUri + +val String.isOnion: Boolean + get() = toUri().host?.endsWith(".onion") == true diff --git a/core/common/src/main/java/com/looker/core/common/extension/Number.kt b/core/common/src/main/java/com/looker/core/common/extension/Number.kt new file mode 100644 index 0000000..82cc095 --- /dev/null +++ b/core/common/src/main/java/com/looker/core/common/extension/Number.kt @@ -0,0 +1,25 @@ +package com.leos.core.common.extension + +import android.content.res.Resources +import android.util.TypedValue +import android.view.View +import com.leos.core.common.DataSize +import kotlin.math.roundToInt + +infix fun Long.percentBy(denominator: Long?): Int { + if (denominator == null || denominator < 1) return -1 + return (this * 100 / denominator).toInt() +} + +infix fun DataSize.percentBy(denominator: DataSize?): Int = value percentBy denominator?.value + +val Number.px + get() = TypedValue.applyDimension( + TypedValue.COMPLEX_UNIT_DIP, + this.toFloat(), + Resources.getSystem().displayMetrics + ) + +context(View) +val Int.dp: Int + get() = (this * resources.displayMetrics.density).roundToInt() diff --git a/core/common/src/main/java/com/looker/core/common/extension/PackageInfo.kt b/core/common/src/main/java/com/looker/core/common/extension/PackageInfo.kt new file mode 100644 index 0000000..288054a --- /dev/null +++ b/core/common/src/main/java/com/looker/core/common/extension/PackageInfo.kt @@ -0,0 +1,133 @@ +package com.leos.core.common.extension + +import android.content.Intent +import android.content.pm.* +import com.leos.core.common.SdkCheck +import com.leos.core.common.hex +import java.security.MessageDigest + +val PackageInfo.singleSignature: Signature? + get() = if (SdkCheck.isPie) { + val signingInfo = signingInfo + if (signingInfo?.hasMultipleSigners() == false) { + signingInfo.apkContentsSigners + ?.let { if (it.size == 1) it[0] else null } + } else { + null + } + } else { + @Suppress("DEPRECATION") + signatures?.let { if (it.size == 1) it[0] else null } + } + +fun Signature.calculateHash() = MessageDigest.getInstance("MD5") + .digest(toCharsString().toByteArray()) + .hex() + +@Suppress("DEPRECATION") +val PackageInfo.versionCodeCompat: Long + get() = if (SdkCheck.isPie) longVersionCode else versionCode.toLong() + +fun PackageManager.isSystemApplication(packageName: String): Boolean = try { + ( + ( + this.getApplicationInfoCompat(packageName) + .flags + ) and ApplicationInfo.FLAG_SYSTEM + ) != 0 +} catch (e: Exception) { + false +} + +fun PackageManager.getLauncherActivities(packageName: String): List> { + return queryIntentActivities( + Intent(Intent.ACTION_MAIN).addCategory( + Intent.CATEGORY_LAUNCHER + ), + 0 + ) + .asSequence() + .mapNotNull { resolveInfo -> resolveInfo.activityInfo } + .filter { activityInfo -> activityInfo.packageName == packageName } + .mapNotNull { activityInfo -> + val label = try { + activityInfo.loadLabel(this).toString() + } catch (e: Exception) { + e.printStackTrace() + null + } + label?.let { labelName -> + activityInfo.name to labelName + } + } + .toList() +} + +fun PackageManager.getApplicationInfoCompat( + filePath: String +): ApplicationInfo = if (SdkCheck.isTiramisu) { + getApplicationInfo( + filePath, + PackageManager.ApplicationInfoFlags.of(0L) + ) +} else { + @Suppress("DEPRECATION") + getApplicationInfo(filePath, 0) +} + +@Suppress("DEPRECATION") +private val signaturesFlagCompat: Int + get() = ( + if (SdkCheck.isPie) { + PackageManager.GET_SIGNING_CERTIFICATES + } else { + 0 + } + ) or PackageManager.GET_SIGNATURES + +fun PackageManager.getPackageInfoCompat( + packageName: String, + signatureFlag: Int = signaturesFlagCompat +): PackageInfo? = try { + if (SdkCheck.isTiramisu) { + getPackageInfo( + packageName, + PackageManager.PackageInfoFlags.of(signatureFlag.toLong()) + ) + } else { + @Suppress("DEPRECATION") + getPackageInfo(packageName, signatureFlag) + } +} catch (e: Exception) { + null +} + +fun PackageManager.getPackageArchiveInfoCompat( + filePath: String, + signatureFlag: Int = signaturesFlagCompat +): PackageInfo? = try { + if (SdkCheck.isTiramisu) { + getPackageArchiveInfo( + filePath, + PackageManager.PackageInfoFlags.of(signatureFlag.toLong()) + ) + } else { + @Suppress("DEPRECATION") + getPackageArchiveInfo(filePath, signatureFlag) + } +} catch (e: Exception) { + null +} + +fun PackageManager.getInstalledPackagesCompat( + signatureFlag: Int = signaturesFlagCompat +): List? = try { + if (SdkCheck.isTiramisu) { + getInstalledPackages(PackageManager.PackageInfoFlags.of(signatureFlag.toLong())) + } else { + @Suppress("DEPRECATION") + getInstalledPackages(signatureFlag) + } +} catch (e: Exception) { + null +} diff --git a/core/common/src/main/java/com/looker/core/common/extension/SQLiteDatabase.kt b/core/common/src/main/java/com/looker/core/common/extension/SQLiteDatabase.kt new file mode 100644 index 0000000..006ae97 --- /dev/null +++ b/core/common/src/main/java/com/looker/core/common/extension/SQLiteDatabase.kt @@ -0,0 +1,7 @@ +package com.leos.core.common.extension + +import android.database.sqlite.SQLiteDatabase + +fun SQLiteDatabase.execWithResult(sql: String) { + rawQuery(sql, null).use { it.count } +} diff --git a/core/common/src/main/java/com/looker/core/common/extension/Service.kt b/core/common/src/main/java/com/looker/core/common/extension/Service.kt new file mode 100644 index 0000000..1f6b3c9 --- /dev/null +++ b/core/common/src/main/java/com/looker/core/common/extension/Service.kt @@ -0,0 +1,30 @@ +package com.leos.core.common.extension + +import android.app.Service +import android.content.Intent +import com.leos.core.common.SdkCheck + +fun Service.startSelf() { + val intent = Intent(this, this::class.java) + if (SdkCheck.isOreo) { + startForegroundService(intent) + } else { + startService(intent) + } +} + +fun Service.stopForegroundCompat(removeNotification: Boolean = true) { + @Suppress("DEPRECATION") + if (SdkCheck.isNougat) { + stopForeground( + if (removeNotification) { + Service.STOP_FOREGROUND_REMOVE + } else { + Service.STOP_FOREGROUND_DETACH + } + ) + } else { + stopForeground(removeNotification) + } + stopSelf() +} diff --git a/core/common/src/main/java/com/looker/core/common/extension/View.kt b/core/common/src/main/java/com/looker/core/common/extension/View.kt new file mode 100644 index 0000000..34f28ff --- /dev/null +++ b/core/common/src/main/java/com/looker/core/common/extension/View.kt @@ -0,0 +1,54 @@ +package com.leos.core.common.extension + +import android.util.TypedValue +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import coil.request.ImageRequest +import kotlin.math.min +import kotlin.math.roundToInt +import kotlinx.coroutines.channels.awaitClose +import kotlinx.coroutines.flow.* + +fun ImageRequest.Builder.authentication(base64: String) { + addHeader("Authorization", base64) +} + +fun TextView.setTextSizeScaled(size: Int) { + val realSize = (size * resources.displayMetrics.scaledDensity).roundToInt() + setTextSize(TypedValue.COMPLEX_UNIT_PX, realSize.toFloat()) +} + +fun ViewGroup.inflate(layoutResId: Int): View { + return LayoutInflater.from(context).inflate(layoutResId, this, false) +} + +val RecyclerView.firstItemPosition: Flow + get() = callbackFlow { + val listener = object : RecyclerView.OnScrollListener() { + override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) { + val position = (recyclerView.layoutManager as LinearLayoutManager) + .findFirstVisibleItemPosition() + trySend(position) + } + } + addOnScrollListener(listener) + awaitClose { removeOnScrollListener(listener) } + }.distinctUntilChanged().conflate() + +val RecyclerView.isFirstItemVisible: Flow + get() = firstItemPosition.map { it == 0 }.distinctUntilChanged() + +val View.minDimension: Int + get() = ( + min( + layoutParams.width, + layoutParams.height + ) / resources.displayMetrics.density + ).roundToInt() + +val View.dpi: Int + get() = (context.resources.displayMetrics.densityDpi * minDimension) / 48 diff --git a/core/common/src/main/java/com/looker/core/common/result/Result.kt b/core/common/src/main/java/com/looker/core/common/result/Result.kt new file mode 100644 index 0000000..fc020d2 --- /dev/null +++ b/core/common/src/main/java/com/looker/core/common/result/Result.kt @@ -0,0 +1,10 @@ +package com.leos.core.common.result + +sealed interface Result { + data class Success(val data: T) : Result + + data class Error( + val exception: Throwable? = null, + val data: T? = null + ) : Result +} diff --git a/core/common/src/main/java/com/looker/core/common/signature/FileValidator.kt b/core/common/src/main/java/com/looker/core/common/signature/FileValidator.kt new file mode 100644 index 0000000..3623e99 --- /dev/null +++ b/core/common/src/main/java/com/looker/core/common/signature/FileValidator.kt @@ -0,0 +1,11 @@ +package com.leos.core.common.signature + +import java.io.File + +interface FileValidator { + + // Throws error if not valid + suspend fun validate(file: File) +} + +class ValidationException(override val message: String) : Exception(message) diff --git a/core/common/src/main/java/com/looker/core/common/signature/HashChecker.kt b/core/common/src/main/java/com/looker/core/common/signature/HashChecker.kt new file mode 100644 index 0000000..d207fe3 --- /dev/null +++ b/core/common/src/main/java/com/looker/core/common/signature/HashChecker.kt @@ -0,0 +1,70 @@ +package com.leos.core.common.signature + +import com.leos.core.common.extension.exceptCancellation +import com.leos.core.common.hex +import java.io.File +import java.security.MessageDigest +import kotlinx.coroutines.* + +suspend fun File.verifyHash(hash: Hash): Boolean { + return try { + if (!hash.isValid() || !exists()) return false + calculateHash(hash.type) + ?.equals(hash.hash, true) + ?: false + } catch (e: Exception) { + e.exceptCancellation() + false + } +} + +suspend fun File.calculateHash(hashType: String): String? { + return try { + if (hashType.isBlank() || !exists()) return null + MessageDigest + .getInstance(hashType) + .readBytesFrom(this) + ?.hex() + } catch (e: Exception) { + e.exceptCancellation() + null + } +} + +private suspend fun MessageDigest.readBytesFrom( + file: File +): ByteArray? = withContext(Dispatchers.IO) { + try { + if (file.length() < DIRECT_READ_LIMIT) return@withContext digest(file.readBytes()) + val buffer = ByteArray(DEFAULT_BUFFER_SIZE) + file.inputStream().use { input -> + var bytesRead = input.read(buffer) + while (bytesRead >= 0) { + ensureActive() + update(buffer, 0, bytesRead) + bytesRead = input.read(buffer) + } + digest() + } + } catch (e: Exception) { + e.exceptCancellation() + null + } +} + +// 25 MB +private const val DIRECT_READ_LIMIT = 25 * 1024 * 1024 + +@Suppress("FunctionName") +data class Hash( + val type: String, + val hash: String +) { + + companion object { + fun SHA256(hash: String) = Hash(type = "sha256", hash) + fun MD5(hash: String) = Hash(type = "md5", hash) + } + + fun isValid(): Boolean = type.isNotBlank() && hash.isNotBlank() +} diff --git a/core/common/src/main/res/color/favourite_icon_color.xml b/core/common/src/main/res/color/favourite_icon_color.xml new file mode 100644 index 0000000..8c3e81a --- /dev/null +++ b/core/common/src/main/res/color/favourite_icon_color.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/core/common/src/main/res/color/switch_thumb_tint.xml b/core/common/src/main/res/color/switch_thumb_tint.xml new file mode 100644 index 0000000..2ba4d62 --- /dev/null +++ b/core/common/src/main/res/color/switch_thumb_tint.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/core/common/src/main/res/color/switch_track_tint.xml b/core/common/src/main/res/color/switch_track_tint.xml new file mode 100644 index 0000000..a089985 --- /dev/null +++ b/core/common/src/main/res/color/switch_track_tint.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/core/common/src/main/res/drawable/arrow_up.xml b/core/common/src/main/res/drawable/arrow_up.xml new file mode 100644 index 0000000..76f4227 --- /dev/null +++ b/core/common/src/main/res/drawable/arrow_up.xml @@ -0,0 +1,10 @@ + + + diff --git a/core/common/src/main/res/drawable/background_border.xml b/core/common/src/main/res/drawable/background_border.xml new file mode 100644 index 0000000..a8856e9 --- /dev/null +++ b/core/common/src/main/res/drawable/background_border.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/core/common/src/main/res/drawable/ic_add.xml b/core/common/src/main/res/drawable/ic_add.xml new file mode 100644 index 0000000..28e44fc --- /dev/null +++ b/core/common/src/main/res/drawable/ic_add.xml @@ -0,0 +1,10 @@ + + + \ No newline at end of file diff --git a/core/common/src/main/res/drawable/ic_apk_install.xml b/core/common/src/main/res/drawable/ic_apk_install.xml new file mode 100644 index 0000000..2bffe3f --- /dev/null +++ b/core/common/src/main/res/drawable/ic_apk_install.xml @@ -0,0 +1,10 @@ + + + diff --git a/core/common/src/main/res/drawable/ic_arrow_down.xml b/core/common/src/main/res/drawable/ic_arrow_down.xml new file mode 100644 index 0000000..1992fdb --- /dev/null +++ b/core/common/src/main/res/drawable/ic_arrow_down.xml @@ -0,0 +1,10 @@ + + + \ No newline at end of file diff --git a/core/common/src/main/res/drawable/ic_bug_report.xml b/core/common/src/main/res/drawable/ic_bug_report.xml new file mode 100644 index 0000000..b584779 --- /dev/null +++ b/core/common/src/main/res/drawable/ic_bug_report.xml @@ -0,0 +1,10 @@ + + + diff --git a/core/common/src/main/res/drawable/ic_cancel.xml b/core/common/src/main/res/drawable/ic_cancel.xml new file mode 100644 index 0000000..1307bb2 --- /dev/null +++ b/core/common/src/main/res/drawable/ic_cancel.xml @@ -0,0 +1,10 @@ + + + diff --git a/core/common/src/main/res/drawable/ic_cannot_load.xml b/core/common/src/main/res/drawable/ic_cannot_load.xml new file mode 100644 index 0000000..62027e7 --- /dev/null +++ b/core/common/src/main/res/drawable/ic_cannot_load.xml @@ -0,0 +1,13 @@ + + + + + diff --git a/core/common/src/main/res/drawable/ic_check.xml b/core/common/src/main/res/drawable/ic_check.xml new file mode 100644 index 0000000..7f3b4e0 --- /dev/null +++ b/core/common/src/main/res/drawable/ic_check.xml @@ -0,0 +1,10 @@ + + + diff --git a/core/common/src/main/res/drawable/ic_code.xml b/core/common/src/main/res/drawable/ic_code.xml new file mode 100644 index 0000000..a322be7 --- /dev/null +++ b/core/common/src/main/res/drawable/ic_code.xml @@ -0,0 +1,10 @@ + + + diff --git a/core/common/src/main/res/drawable/ic_copyright.xml b/core/common/src/main/res/drawable/ic_copyright.xml new file mode 100644 index 0000000..060299f --- /dev/null +++ b/core/common/src/main/res/drawable/ic_copyright.xml @@ -0,0 +1,10 @@ + + + diff --git a/core/common/src/main/res/drawable/ic_delete.xml b/core/common/src/main/res/drawable/ic_delete.xml new file mode 100644 index 0000000..d8a5a00 --- /dev/null +++ b/core/common/src/main/res/drawable/ic_delete.xml @@ -0,0 +1,10 @@ + + + diff --git a/core/common/src/main/res/drawable/ic_donate.xml b/core/common/src/main/res/drawable/ic_donate.xml new file mode 100644 index 0000000..aadb09d --- /dev/null +++ b/core/common/src/main/res/drawable/ic_donate.xml @@ -0,0 +1,10 @@ + + + diff --git a/core/common/src/main/res/drawable/ic_donate_bitcoin.xml b/core/common/src/main/res/drawable/ic_donate_bitcoin.xml new file mode 100644 index 0000000..08f3181 --- /dev/null +++ b/core/common/src/main/res/drawable/ic_donate_bitcoin.xml @@ -0,0 +1,10 @@ + + + diff --git a/core/common/src/main/res/drawable/ic_donate_flattr.xml b/core/common/src/main/res/drawable/ic_donate_flattr.xml new file mode 100644 index 0000000..62de4a6 --- /dev/null +++ b/core/common/src/main/res/drawable/ic_donate_flattr.xml @@ -0,0 +1,17 @@ + + + + + + diff --git a/core/common/src/main/res/drawable/ic_donate_liberapay.xml b/core/common/src/main/res/drawable/ic_donate_liberapay.xml new file mode 100644 index 0000000..eeeaa6d --- /dev/null +++ b/core/common/src/main/res/drawable/ic_donate_liberapay.xml @@ -0,0 +1,22 @@ + + + + + + diff --git a/core/common/src/main/res/drawable/ic_donate_litecoin.xml b/core/common/src/main/res/drawable/ic_donate_litecoin.xml new file mode 100644 index 0000000..baae98c --- /dev/null +++ b/core/common/src/main/res/drawable/ic_donate_litecoin.xml @@ -0,0 +1,14 @@ + + + + + + diff --git a/core/common/src/main/res/drawable/ic_donate_opencollective.xml b/core/common/src/main/res/drawable/ic_donate_opencollective.xml new file mode 100644 index 0000000..29411bb --- /dev/null +++ b/core/common/src/main/res/drawable/ic_donate_opencollective.xml @@ -0,0 +1,16 @@ + + + + + + diff --git a/core/common/src/main/res/drawable/ic_download.xml b/core/common/src/main/res/drawable/ic_download.xml new file mode 100644 index 0000000..da9de2d --- /dev/null +++ b/core/common/src/main/res/drawable/ic_download.xml @@ -0,0 +1,10 @@ + + + diff --git a/core/common/src/main/res/drawable/ic_email.xml b/core/common/src/main/res/drawable/ic_email.xml new file mode 100644 index 0000000..6d82495 --- /dev/null +++ b/core/common/src/main/res/drawable/ic_email.xml @@ -0,0 +1,10 @@ + + + diff --git a/core/common/src/main/res/drawable/ic_favourite.xml b/core/common/src/main/res/drawable/ic_favourite.xml new file mode 100644 index 0000000..6d49705 --- /dev/null +++ b/core/common/src/main/res/drawable/ic_favourite.xml @@ -0,0 +1,10 @@ + + + diff --git a/core/common/src/main/res/drawable/ic_favourite_checked.xml b/core/common/src/main/res/drawable/ic_favourite_checked.xml new file mode 100644 index 0000000..68b0857 --- /dev/null +++ b/core/common/src/main/res/drawable/ic_favourite_checked.xml @@ -0,0 +1,10 @@ + + + diff --git a/core/common/src/main/res/drawable/ic_gitlab.xml b/core/common/src/main/res/drawable/ic_gitlab.xml new file mode 100644 index 0000000..a4089ea --- /dev/null +++ b/core/common/src/main/res/drawable/ic_gitlab.xml @@ -0,0 +1,9 @@ + + + diff --git a/core/common/src/main/res/drawable/ic_history.xml b/core/common/src/main/res/drawable/ic_history.xml new file mode 100644 index 0000000..025ffd8 --- /dev/null +++ b/core/common/src/main/res/drawable/ic_history.xml @@ -0,0 +1,10 @@ + + + diff --git a/core/common/src/main/res/drawable/ic_image.xml b/core/common/src/main/res/drawable/ic_image.xml new file mode 100644 index 0000000..ded47ba --- /dev/null +++ b/core/common/src/main/res/drawable/ic_image.xml @@ -0,0 +1,10 @@ + + + diff --git a/core/common/src/main/res/drawable/ic_kde.xml b/core/common/src/main/res/drawable/ic_kde.xml new file mode 100644 index 0000000..ffd419f --- /dev/null +++ b/core/common/src/main/res/drawable/ic_kde.xml @@ -0,0 +1,9 @@ + + + diff --git a/core/common/src/main/res/drawable/ic_language.xml b/core/common/src/main/res/drawable/ic_language.xml new file mode 100644 index 0000000..02a15bb --- /dev/null +++ b/core/common/src/main/res/drawable/ic_language.xml @@ -0,0 +1,10 @@ + + + diff --git a/core/common/src/main/res/drawable/ic_launch.xml b/core/common/src/main/res/drawable/ic_launch.xml new file mode 100644 index 0000000..b6c297f --- /dev/null +++ b/core/common/src/main/res/drawable/ic_launch.xml @@ -0,0 +1,10 @@ + + + diff --git a/core/common/src/main/res/drawable/ic_new_releases.xml b/core/common/src/main/res/drawable/ic_new_releases.xml new file mode 100644 index 0000000..1506f84 --- /dev/null +++ b/core/common/src/main/res/drawable/ic_new_releases.xml @@ -0,0 +1,11 @@ + + + + \ No newline at end of file diff --git a/core/common/src/main/res/drawable/ic_perm_device_information.xml b/core/common/src/main/res/drawable/ic_perm_device_information.xml new file mode 100644 index 0000000..8d1a0a0 --- /dev/null +++ b/core/common/src/main/res/drawable/ic_perm_device_information.xml @@ -0,0 +1,10 @@ + + + diff --git a/core/common/src/main/res/drawable/ic_person.xml b/core/common/src/main/res/drawable/ic_person.xml new file mode 100644 index 0000000..cb043c9 --- /dev/null +++ b/core/common/src/main/res/drawable/ic_person.xml @@ -0,0 +1,10 @@ + + + diff --git a/core/common/src/main/res/drawable/ic_proxy.xml b/core/common/src/main/res/drawable/ic_proxy.xml new file mode 100644 index 0000000..9a89c87 --- /dev/null +++ b/core/common/src/main/res/drawable/ic_proxy.xml @@ -0,0 +1,10 @@ + + + diff --git a/core/common/src/main/res/drawable/ic_public.xml b/core/common/src/main/res/drawable/ic_public.xml new file mode 100644 index 0000000..e58467d --- /dev/null +++ b/core/common/src/main/res/drawable/ic_public.xml @@ -0,0 +1,10 @@ + + + diff --git a/core/common/src/main/res/drawable/ic_save.xml b/core/common/src/main/res/drawable/ic_save.xml new file mode 100644 index 0000000..51670ff --- /dev/null +++ b/core/common/src/main/res/drawable/ic_save.xml @@ -0,0 +1,10 @@ + + + diff --git a/core/common/src/main/res/drawable/ic_search.xml b/core/common/src/main/res/drawable/ic_search.xml new file mode 100644 index 0000000..dcb3083 --- /dev/null +++ b/core/common/src/main/res/drawable/ic_search.xml @@ -0,0 +1,10 @@ + + + diff --git a/core/common/src/main/res/drawable/ic_share.xml b/core/common/src/main/res/drawable/ic_share.xml new file mode 100644 index 0000000..10efc62 --- /dev/null +++ b/core/common/src/main/res/drawable/ic_share.xml @@ -0,0 +1,10 @@ + + + diff --git a/core/common/src/main/res/drawable/ic_sort.xml b/core/common/src/main/res/drawable/ic_sort.xml new file mode 100644 index 0000000..077f1d9 --- /dev/null +++ b/core/common/src/main/res/drawable/ic_sort.xml @@ -0,0 +1,11 @@ + + + diff --git a/core/common/src/main/res/drawable/ic_source_code.xml b/core/common/src/main/res/drawable/ic_source_code.xml new file mode 100644 index 0000000..d721608 --- /dev/null +++ b/core/common/src/main/res/drawable/ic_source_code.xml @@ -0,0 +1,10 @@ + + + \ No newline at end of file diff --git a/core/common/src/main/res/drawable/ic_sync.xml b/core/common/src/main/res/drawable/ic_sync.xml new file mode 100644 index 0000000..c4f554e --- /dev/null +++ b/core/common/src/main/res/drawable/ic_sync.xml @@ -0,0 +1,10 @@ + + + diff --git a/core/common/src/main/res/drawable/ic_sync_type.xml b/core/common/src/main/res/drawable/ic_sync_type.xml new file mode 100644 index 0000000..95d0933 --- /dev/null +++ b/core/common/src/main/res/drawable/ic_sync_type.xml @@ -0,0 +1,10 @@ + + + diff --git a/core/common/src/main/res/drawable/ic_themes.xml b/core/common/src/main/res/drawable/ic_themes.xml new file mode 100644 index 0000000..60c05a2 --- /dev/null +++ b/core/common/src/main/res/drawable/ic_themes.xml @@ -0,0 +1,10 @@ + + + diff --git a/core/common/src/main/res/drawable/ic_time.xml b/core/common/src/main/res/drawable/ic_time.xml new file mode 100644 index 0000000..1c918c3 --- /dev/null +++ b/core/common/src/main/res/drawable/ic_time.xml @@ -0,0 +1,10 @@ + + + diff --git a/core/common/src/main/res/drawable/ic_tune.xml b/core/common/src/main/res/drawable/ic_tune.xml new file mode 100644 index 0000000..3672e27 --- /dev/null +++ b/core/common/src/main/res/drawable/ic_tune.xml @@ -0,0 +1,10 @@ + + + diff --git a/core/common/src/main/res/values-ar/strings.xml b/core/common/src/main/res/values-ar/strings.xml new file mode 100644 index 0000000..64d0842 --- /dev/null +++ b/core/common/src/main/res/values-ar/strings.xml @@ -0,0 +1,246 @@ + + + العنوان + تعذر تنزيل %s + الإشادات + الوصف + الحد الأدنى لإصدار واجهة برمجة التطبيقات هو %d. + فاتح + تحريكات القائمة + حسنًا + ليس موقعًا. تعذر التحقق من قائمة التطبيقات. كن حذرًا عند تنزيل التطبيقات من مستودعات غير موقعة. + زامن المستودعات + قيد المزامنة + غير معروف: %s + لم يُوقع + تحديثات غير مستقرة + اعرض أقل + الأحدث + استكشف + فشل الإجراء + أضف مستودعًا + كل التطبيقات + كل التطبيقات مُحدثة + متوفر بالفعل + دائمًا + أسود + مميزات غير مرغوبة + التطبيق + لم يُعثر على ذلك التطبيق + بريد المطور + صفحة المطور + استكشف + لا يمكن تحرير المستودع لأنه قيد المزامنة. + سجل التغييرات + متعقب العلل + ألغِ + التغييرات + جارٍ التحقق من المستودع… + جُمّع من أجل التصحيح + تأكيد + قيد التوصيل… + يحتوي على وسائط غير حرة + تعذرت مزامنة %s + تعذر التحقق من %s + داكن + احذف + حذف المستودع؟ + التفاصيل + التبرع + تم تنزيل %s + قيد التنزيل + قيد تنزيل %s… + حرر المستودع + صيغة الملف غير صالحة. + البصمة + يحتوي على إعلانات + يحتوي على تبعيات غير حرة + يحتوي على ثغرات أمنية + استجابة الخادم غير صحيحة. + تجاهل جميع الإصدارات الجديدة + تجاهل هذا الإصدار + %1$s (إصدار واجهة برمجة التطبيقات %2$d) غير مدعوم. %3$s + الحد الأقصى لإصدار واجهة برمجة التطبيقات هو %d. + مميزات مفقودة. + هذا الإصدار أقدم من ذلك المثبت على جهازك، ألغِ تثبيته أولًا. + وكيل HTTP + منصتك %1$s ليست مدعومة. المنصات المدعومة: %2$s. + هذا الإصدار مُوقَّع بشهادة مختلفة عن تلك المثبَّتة على جهازك. ألغِ تثبيت تلك أولًا. + إصدار غير متوافق + إصدارات غير متوافقة + أظهر إصدارات التطبيقات الغير متوافقة مع الجهاز + غير متوافق مع %s + ثبِّت + طرق التثبيت + المثبِّت + المثبِّت القديم + مثبِّت الجلسة + مثبِّت الجذر + مثبِّت شيزوكو + مثبَّت + تعذر التحقق من التكامل. + عنوان خاطئ + صيغة البصمة خاطئة + بيانات وصفية خاطئة. + صلاحيات خاطئة. + توقيع خاطئ. + صيغة اسم المستخدم خاطئة + شغل + الرخصة + رخصة %s + نُسِخ الرابط + الروابط + أظهر تحريكات القائمة على الصفحة الرئيسة + قيد دمج %s + الاسم + خطأ في الشبكة + أبدًا + توجد إصدارات جديدة + + ليس لدى أيِّ تطبيق إصدار جديد. + لدى تطبيق إصدار جديد. + لدى تطبيقين إصداران جديدان. + لدى %d تطبيقات إصدارات جديدة. + لدى %d تطبيق إصدارات جديدة. + لدى %d تطبيق إصدارات جديدة. + + لا توجد تطبيقات متاحة + لا توجد تطبيقات مثبَّتة + لا يوجد وصف متاح + لم يُعثر على تطبيق كهذا + بدون وسيط + نبِّه بوجود التحديثات + اعرض تنبيهًا عند توفر إصدارات جديدة + عدد التطبيقات + متوافق فقط مع %s + فقط عبر شبكة واي-فاي + افتح %s ؟ + آخر + تعذر تحليل ملف الفهرس. + كلمة المرور + كلمة المرور مفقودة + الصلاحيات + +%d أخرى + الإعدادات + قيد معالجة %1$s… + موقع المشروع + يروج لخدمات شبكة غير حرة + يروج لبرمجيات غير حرة + مقدم بواسطة %s + وسيط + مضيف الوسيط + منفذ الوسيط + نوع الوسيط + حُدث مؤخرًا + يتطلب %s + المستودعات + المستودع + هذا المستودع لم يُستخدم بعد. مكنه لعرض التطبيقات التي يحتويها. + تثبيت صامت + اسمح لصلاحية الجذر لتمكين التثبيت الصامت + احفظ + قيد حفظ التفاصيل… + لقطات الشاشة + ابحث + اختر مرآة + شارك + اعرض المزيد + اعرض إصدارات أقدم + التوقيع %s + مُوَقع باستخدام خوارزمية غير آمنة + الحجم + تخطَّ + وسيط سوكس + ترتيب الفرز + الكود المصدري + الكود المصدري لم يعد متوفرًا + مقترح + زامن المستودعات تلقائيًا + قيد مزامنة %s… + النظام + اضغط للتثبيت. + الهدف + السمة + السمات + يتعقب أو يرفق نشاطك + ألغِ التثبيت + لم يُتحقق منه + حدث + التحديثات + غير معروف + خطأ غير معروف. + اقترح تثبيت التطبيقات غير المستقرة + الكود المصدري ليس حرًا + اسم المستخدم + اسم المستخدم مفقود + تعذر التحقق من صحة الفهرس. + الإصدار + الإصدار %s + الإصدارات + قيد انتظار بدء التنزيل… + ما الجديد + الموقع الإلكتروني + اللغة + التفضيلات + حدث الكل + التطبيقات المثبَّتة + افرز وصفِّ + التطبيقات جديدة + الزمن المار قبل فحص وإزالة الملفات المنزَّلة + مدة تنظيف ملفات APK + + أقل من يوم + يوم + يومان + أيام + يومًا + يوم + + + أقل من ساعة + ساعة + ساعتان + ساعات + ساعةً + ساعة + + فقط على شبكة واي-فاي وعند الشحن + تعذر أداء بعض الإجراءات. + ليس لديك اتصال بالإنترنت + اسمح بتوسيع شريط التطبيقات العلوي + اسمح لشريط التطبيقات العلوي بالتوسع والطي + مَتيريَل يو + استخدم سمة ألوان مَتيريَل يو + المفضَّلات + تعذَّر الوصول للمستودع + افرض التنظيف + ينظِّف الملفَّات المتكرِّرة + مكِّن المستودع + أعد تشغيل LeOS-Droid لرؤية التغييرات + يثبّت + في انتظار بدء التثبيت… + حدِّث التطبيقات تلقائيًّا + حاول تثبيت التحديثات تلقائيًّا + يحتوي على مكونات غير حرة + فشل الخادوم في توفير حزمة جديدة. + لا يمكن الاتصال بالخادم + يحتوي على محتوى غير آمن للعمل + شيزوكو لا يعمل + شيزوكو غير مثبت + شكر خاص + ايماءات الشاشة الرئيسة + اسمح للمستخدم بالتمرير بين الصفحات في الشاشة الرئيسة + انسخ + يجب أن يكون منفذ الوكيل رقمًا صحيحًا + لم يُعثَر على المستودع + استورد إعدادات + استورد\\صدِّر + استورد الإعدادات والمفضلات من ملف + صدِّر الإعدادات + صدِّر كل المستودعات في هيئة ملف + استورد مستودعات + صدِّر الإعدادات والمفضلات في هيئة ملف + صدِّر المستودعات + استورد كل المستودعات التي في ملف + تعذَّر فتح الرابط + \ No newline at end of file diff --git a/core/common/src/main/res/values-az/strings.xml b/core/common/src/main/res/values-az/strings.xml new file mode 100644 index 0000000..1a6040a --- /dev/null +++ b/core/common/src/main/res/values-az/strings.xml @@ -0,0 +1,212 @@ + + + Yeni qaynaq əlavə et + Ünvan + Bütün applikasiyalar + Üst çubuğun genişlədilməsinə izn ver + Üst çubuğun genişləndirilməsinə və sıxılmasına izn ver + Zatən mövcuddur + Hər zaman + Anti-özəlliklər + Applikasiya + Bu applikasiya tapılmadı + Yazarın e-mail ünvanı + Yazarıb vebsaytı + Applikasiyaları avtomatik güncəllə + Kəşf et + Xəta izləmə + Ləğv et + Qaynaq hal-hazırda sinxronizasiya edildiyi üçün düzənlənmir. + Dəyişim günlüyü + Dəyişikliklər + APK cleanup interval + Period to check and remove downloaded files + Xəta tapmaq üçün kompayl edildi + Təsdiq + Bağlanılır… + %s yüklənmədi + %s sinxronizasiya edilə bilmədi + %s doğrulanmadı + Qatqı Edənlər + Tünd + + Gün + Günlər + + Sil + Qaynaq silinsinmi\? + Açıqlama + Detallar + Yardım + Yüklənir + %s yüklənir… + Qaynağı düzənlə + Qaynağı aktivləşdir + Barmaq izi + Təmizlənməyə məcbur et + Lazımsız faylları təmizləyir + Tərkibində reklam var + Azad olmayan qaynaqları var + Güvənlik açığına sahibdir + HTTP proxy + Bütün yeni versiyaları yox say + Bu versiyanı yox say + Sizin %1$s (API versiyası %2$d) dəstəkləmir. %3$s + Minimum API versiyası %d. + Özəlliklər çatışmır. + Bu versiya telefonunuzda olan versiyadan daha köhnədir. Öncə onu silin. + Bu versiya cihazınızda mövcud olan versiyadan fərqli bir sertifikat ilə imzalanmışdır. Öncə onu ləğv edin. + Uyğunsuz versiya + Uyğunsuz versiyalar + Cihazla uyğun olmayan applikasiya versiyalarını göstər + %s ilə uyğunsuzdur + Quraşdırılma Növləri + Quraşdırıcı + Hesab Quraşdırıcısı + Shizuku Quraşdırıcısı + Quraşdırılıb + Quraşdırılır + Bütünlük yoxlanılmadı. + Uyğunsuz ünvan + Uyğunsuz meta bilgisi. + Uyğunsuz icazələr. + Uyğunsuz imza. + Uyğunsuz istifadəçi adı formatı + Bəlirli hadisələr gerçəkləşdirilə bilmədi. + Başlat + Lisenziya + %s lisenziyası + Açıq + Linklər + Siyahı Animasiyaları + Siyahı canlandırmasını ana səhifədə göstər + Material You + Material you rəng temasını istifadə et + %s birləşdirilir + Ad + İnternet xətası + Heç vaxt + + %d applikasiyanın yeni bir versiyası var. + %d applikasiyanın yeni versiyaları var. + + İstifadə edilə bilən applikasiya yoxdur + Açıqlama yoxdur + İnternet bağlantınız yoxdur + Proxy yoxdur + Applikasiyanın yeni versiyaları haqqında bilgiləndir + Applikasiya sayı + Tamam + Sadəcə %s ilə uyğundur + Sadəcə Wi-Fi + Sadəcə Wi-Fi açıq ikən & Batareya Doldurularkən + %s açılsınmı\? + Digər + İndex faylı çözümlənə bilmədi. + Şifrə + İcazələr + +%d daha + %1$s işlənir… + Hadisə uğursuz oldu + Qara + Bütün applikasiyalarınız güncəldir + Güncəlləmələri avtomatik etməyə çalış + Qaynaq yoxlanılır… + Tərkibində azad olmayan media var + %s yükləndi + Sevimlilər + Uyğunsuz fayl formatı. + + Saat + Saatlar + + Uyğunsuz server cavabı. + Maksimum API versiyası %d. + Sizin %1$s cihazınız dəstəklənməməkdədir. Dəstəklənən cihazlar: %2$s. + Quraşdır + Köhnə Quraşdırıcı + Root Quraşdırıcısı + Uyğunsuz barmaq izi forması + Applikasiyanın yeni versiyaları var + Link kopyalandı + Quraşdırılmış applikasiya yoxdur + Belə bir applikasiya tapılmadı + Layihə vebsaytı + Yeni versiyalar istifadə edilə bilən olduğu zaman bildiriş göstər + Şifrə əksikdir + Pulsuz olmayan şəbəkə xidmətlərini təşviq edir + Azad olmayan proqram təminatını təbliğ edir + %s tərəfindən təmin edilmişdir + Proksi + Proksi host + Proksi port + Proksi növü + Bu yaxınlarda yeniləndi + Anbarlar + Repozitoriya + Bu anbardan hələ istifadə olunmayıb. İçindəki proqramlara baxmaq üçün onu yandırın. + İmzasız. Tətbiq siyahısını yoxlamaq mümkün olmadı. İmzasız depolardan proqramları endirərkən diqqətli olun. + Repozitoriya əlçatmazdır + %s tələb edir + Dəyişiklikləri görmək üçün LeOS-Droid-ı yenidən başladın + Səssiz Quraşdırma + Səssiz quraşdırmalar üçün kök icazəsinə icazə verin + Yadda saxla + Detallar yadda saxlanılır… + Ekran görüntüləri + Axtar + Güzgü seçin + Parametrlər + Paylaşın + Daha çox göstər + Köhnə versiyaları göstərin + İmza %s + Təhlükəsiz alqoritmdən istifadə edərək imzalanıb + Ölçü + Keç + SOCKS proksi + Çeşidləmə qaydası + Mənbə kodu + Mənbə kodu artıq mövcud deyil + Təklif olunur + Repozitoriyaları sinxronlaşdırın + Sinxronizasiya + %s sinxronizasiya edilir… + Sistem + Hədəf + Mövzu + Mövzular + Fəaliyyətinizi izləyir və ya hesabat verir + Naməlum + Naməlum xəta. + Naməlum: %s + İmzasız + Qeyri-sabit yeniləmələr + Qeyri-sabit versiyaların quraşdırılmasını təklif edin + Doğrulanmamış + Yeniləyin + Yeniləmələr + İstifadəçi adı + İstifadəçi adı yoxdur + Versiya + Versiya %s + Versiyalar + Endirməyə başlamaq gözlənilir… + Quraşdırmanın başlaması gözlənilir… + Yeniliklər + Veb sayt + Dil + Fərdiləşdirmə + Ən son + Araşdırın + Hamısını yeniləyin + Quraşdırılmış proqramlar + Çeşidləyin və Filtr edin + Yeni tətbiqlər + Daha az göstər + Repozitoriyaları avtomatik sinxronlaşdırın + Silin + Yuxarı mənbə kodu pulsuz deyil + İndeksi doğrulamaq mümkün olmadı. + Quraşdırmaq üçün toxunun. + \ No newline at end of file diff --git a/core/common/src/main/res/values-be/strings.xml b/core/common/src/main/res/values-be/strings.xml new file mode 100644 index 0000000..312f2f5 --- /dev/null +++ b/core/common/src/main/res/values-be/strings.xml @@ -0,0 +1,240 @@ + + + Не атрымалася выканаць дзеянне + Дазволіць верхняй панэлі праграм пашырацца + Не ўдалося знайсці гэтую праграму + Сайт аўтара + Аўтаабнаўленне праграм + Дадаць рэпазітар + Адрас + Усе праграмы + Дазволіць верхнюю панэль праграмы пашыраць і згортваць + Ужо існуе + Заўсёды + Чорная + Антыфункцыі + Праграма + Электронная пошта аўтара + Спрабаваць усталяваць абнаўленні аўтаматычна + Агляд + Адсочванне памылак + Адмяніць + Усе вашыя праграмы абноўлены + Выдаліць + Перыяд для праверкі і выдалення спампаваных файлаў + Апісанне + Дэталі + Спампоўка %s… + Рэдагаваць сховішча + Змены + Інтэрвал ачысткі APK + Праверка сховішча… + Не атрымалася сінхранізаваць %s + + Дзень + дзён + дзён + дзён + + Цёмны + Ахвяраваць + Спампавана %s + Ідзе загрузка + Выбранае + Адбітак пальца + Уключыць рэпазітар + Прымусовая ачыстка + Ачышчае лішнія файлы + Мае рэкламу + Немагчыма рэдагаваць сховішча, бо яно зараз сінхранізуецца. + Журнал змяненняў + Скампілявана для адладкі + Пацверджанне + Падключэнне… + Змяшчае несвабодныя носьбіты + Немагчыма спампаваць %s + Немагчыма праверыць %s + Крэдыты + Выдаліць сховішча\? + Няправільны фармат файла. + Мае несвабодныя залежнасці + Мае ўразлівасці ў бяспецы + Ліцэнзія %s + Несумяшчальная версія + Гэтая версія падпісана іншым сертыфікатам, чым той, які ўсталяваны на вашай прыладзе. Спачатку выдаліце ўсталяваную версію. + Гэтая версія старэйшая за ўсталяваную на вашай прыладзе. Спачатку выдаліце старую версію. + Root ўсталёўшчык + Усталёўшчык + Няправільныя метадзеныя. + Толькі па Wi-Fi + Пароль + Без подпісу. Не ўдалося праверыць спіс прыкладанняў. Будзьце асцярожныя, загружаючы прыкладанні з непадпісаных рэпазітароў. + Мае несвабодныя кампаненты + Рэкламуе несвабодныя сеткавыя сэрвісы + Няправільны подпіс. + Няма ўсталяваных прыкладанняў + Некарэктны адказ сервера. + Паказваць апавяшчэнне, калі з\'явяцца новыя версіі + Правы доступу + Даступныя новыя версіі прыкладанняў + Ўсталяванне + Ваша платформа %1$s не падтрымліваецца. Падтрымліваюцца платформы: %2$s. + Рэпазітар недасяжны + Перазапусціце LeOS-Droid, каб убачыць змены + Адсутныя функцыі. + Няма даступных прыкладанняў + Пароль адсутнічае + Усталявана + Імя + Немагчыма падключыцца да сервера + Порт проксі + Патрабуецца %s + Сумяшчальна толькі з %s + Серверу не ўдалося адправіць новы пакет. + Добра + Немагчыма выканаць пэўныя дзеянні. + Іншае + Спасылка скапіявана + Апрацоўваецца %1$s… + Капіяваць + У вас няма падключэння да інтэрнэту + Порт проксі можа быць толькі цэлым лікам + Колькасць прыкладанняў + Несумяшчальна з %s + Памылка сеткі + Ліцэнзія + Ігнараваць гэтую версію + HTTP проксі + Апісанне адсутнічае + Спасылкі + Адключаныя правы доступу. + Рэкламуе несвабоднае праграмнае забеспячэнне + Запусціць + Віды ўстаноўкі + Састарэлы ўсталёўшчык + + %d прыкладанне мае новую версію. + %d прыкладання маюць новую версію. + %d прыкладанняў маюць новую версію. + %d прыкладанняў маюць новую версію. + + Тып проксі + Сайт праекта + Ніколі + Не ўдалося знайсці такіх прыкладанняў + Мінімальная версія API %d. + Няправільны адрас + Несумяшчальныя версіі + Максімальная версія API %d. + Не ўдалося разабраць індэксны файл. + Усталяваць + Наступны рэпазіторый не знойдзены + Няправільны фармат імя карыстальніка + Паведамляць аб абнаўленнях + Прадастаўлена %s + Паказаць версіі прыкладанняў, несумяшчальныя з прыладай + Хост проксі + Ігнараваць усе новыя версіі + Не атрымалася праверыць цэласнасць. + Проксі + Рэпазіторыі + Абнаўленні + Памер + Сесійны ўсталёўшчык + + Гадзіна + Гадзіны + Гадзін + Гадзін + + Зыходны код больш не даступны + Захаваць + Аўтасінхранізацыя рэпазітараў + Абнавіць усё + Жэсты на галоўным экране + Выкарыстоўваць каляровую тэму Material You + Толькі пры Wi-Fi і зарадцы + Сінхранізацыя рэпазітараў + +%d больш + Налады імпарту + Ваш %1$s (версія API %2$d) не падтрымліваецца. %3$s + Без подпісу + Змяшчае NSFW кантэнт + Выберыце люстэрка + Паказаць анімацыю спісу на галоўнай старонцы + Сінхранізацыя %s… + Імпарт/Экспарт + Адсочвае або паведамляе аб вашай дзейнасці + Вэб-сайт + Аб\'яднанне %s + Чаканне спампоўкі… + Агляд + Рэкамендуецца + Сартаваць і фільтраваць + Адкрыць %s? + Не атрымалася праверыць індэкс. + Shizuku не працуе + Невядомы + Імя карыстальніка адсутнічае + Абнавіць + Паказаць больш + Тэма + SOCKS проксі + Material You + Мэтавы + Чаканне пачатку ўстаноўкі… + Падпісана з выкарыстаннем небяспечнага алгарытму + Зыходны код + Імя карыстальніка + Версія %s + Светлая + Усталяваныя праграмы + Імпарт налад і абранага з файла + Рэпазітар + Прапанова ўсталяваць нестабільныя версіі + Версія + Персаналізацыя + Подпіс %s + Shizuku ўсталёўшчык + Новыя праграмы + Выдаліць + Прапусціць + Налады экспарту + Экспарт усіх рэпазітараў з файла + Імпарт рэпазітараў + Скрыншоты + Нядаўна абноўлены + Парадак сартавання + Неправераныя + Ціхая ўстаноўка + Няправільны фармат адбітка + Захаванне даных… + Што новага + Націсніце, каб усталяваць. + Няма проксі + Сінхранізацыя + Экспарт налад і абранага ў файл + Мова + Пошук + Невядомая памылка. + Тэмы + Анімацыя спісаў + Дазволіць карыстачу гартаць старонкі на галоўным экране + Экспарт рэпазітараў + Паказваць менш + Налады + Зыходны код бацькоўскай праграмы зачынены + Версіі + Гэты рэпазітар яшчэ не выкарыстоўваўся. Вам трэба ўключыць яго для прагляду прымянення ў ім. + Імпарт усіх рэпазітараў з файла + Як у сістэме + Асобнае дзякуй + Падзяліцца + Паказаць старыя версіі + Shizuku не ўстаноўлена + Нестабільнае абнаўленне + Апошнія + Дайце правы root, каб уключыць бясшумную ўстаноўку + Невядома: %s + Немагчыма адкрыць спасылку + \ No newline at end of file diff --git a/core/common/src/main/res/values-bg/strings.xml b/core/common/src/main/res/values-bg/strings.xml new file mode 100644 index 0000000..08b5c95 --- /dev/null +++ b/core/common/src/main/res/values-bg/strings.xml @@ -0,0 +1,234 @@ + + + Неуспешна операция + Добави хранилище + Адрес + Всички Приложения + Всички приложения са актуални + Вече съществува + Винаги + Чернa + Приложение + Приложението не може да бъде намерено + Ел. поща на автора + Налични + Тракер за грешки + Отказ + Списък на промените + Промени + Проверка на хранилището… + Потвърждение + Свързване… + Съдържа несвободна медия + Неуспешно синхронизиране на %s + Неуспешна валидиция на %s + Доброволци + Изтрий + Изтриване на хранилището\? + Описание + Детайли + Дарения + Изтегли се %s + Изтегля се + Изтегля се %s… + Редактирай + Има реклами + Има уязвимости в сигурността + Невалиден отговор от сървъра. + HTTP прокси + Игнорирай всички нови версии + Максималната АПИ версия е %d. + Минималната АПИ версия е %d. + Липсващи функции. + Вашата %1$s платформа не се поддържа. Поддържани платформи: %2$s. + Несъвместима версия + Несъвместими версии + Несъвместим с %s + Инсталирай + Начини на инсталиране + Инсталирани + Невалиден адрес + Невалидни разрешения. + Невалиден подпис. + Стартирай + Лиценз + %s лиценз + Светла + Линкове + Анимирай списъка на главната страница + Сливане на %s + Име + Мрежова грешка + Никога + Няма инсталирани приложения + Няма налично описание + Без прокси + Уведомления за актуализации + Брой приложения + Окей + Само на Wi-Fi + Отвори %s\? + Други + Не може да се прочете индекс файла. + Парола + Липсваща парола + Прокси + Прокси хост + Прокси порт + Прокси тип + Наскоро обновени + Хранилища + Хранилище + Това хранилище все още не е използвано.Включете го, за да видите приложенията в него. + Неподписано. Не може да провери списъка с неподписаните приложения. Внимавайте с тегленето на приложения от неподписани хранилища. + Изисква %s + Безшумна Инсталация + За безшумни инсталации дайте root разрешение + Запази + Запазване на подробности… + Екранни снимки + Избери източник + Сподели + Покажи повече + Покажи по-стари версии + Подпис %s + Подписано с несигурен алгоритъм + Размер + Пропусни + SOCKS прокси + Ред на сортиране + Предложено + Автоматично синхронизиране на хранилищата + Синхронизиране + Цел + Тема + Проследява или отчита вашата дейност + Неизвестно + Неизвестно: %s + Непроверено + Актуализация + Актуализации + Потребителско име + Версия + Версии + В очакване да започне изтеглянето… + Какво е новото + Покажи по-малко + Последни + Разглеждане + Инсталирай всички + Инсталирани приложения + Сортиране & Филтриране + Нови приложения + Антифункции + Уебстраница на автора + Не може да се редактират синхронизиращи се хранилища. + Неуспешно изтегляне на %s + Компилирано за отстраняване на грешки + Тъмнa + Невалиден файлов формат. + Отпечатък + Невалиден формат на отпечатъка + Има несвободни зависимости + Игнорирай тази версия + Вашата %1$s (АПИ версия %2$d) се поддържа. %3$s + Тази версия е по-стара от инсталираната на вашето устройство. Деинсталирайте първо нея. + Невалиден формат на потребителското име + Анимации на списъците + Нестабилни актуализации + Тази версия е подписана със сертификат, различен от този, инсталиран на вашето устройство. Деинсталирайте първо нея. + Показване на версии, несъвместими с устройството + Не може да се провери целостта. + Невалидни метаданни. + +%d повече + Насърчава несвободни мрежови услуги + Търсене + Линка е копиран + Налични нови версии на приложението + Няма налични приложения + + %d приложение има нова версия. + %d приложения имат нова версия. + + Настройки + Не могат да бъдат намерени такива приложения + Покажи известие, при налични нови версии + Съвместим само с %s + Разрешения + Обработка на %1$s… + Уебстраница на проекта + Насърчава несвободен софтуер + Предоставени от %s + Теми + Деинсталиране + Програмен код + Програмният код вече не е наличен + Синхронизиране на %s… + Версия %s + Синхронизирай хранилищата + Системна + Докосни за инсталиране. + Неизвестна грешка. + Предложи инсталирането на нестабилни версии + Неподписано + Актуалният програмен код вече не е със свободен лиценз + Потребителско име липсва + Не може да валидира индексът. + Уебстраница + Език + Персонализация + Инсталатор + Стар Инсталатор + Session Инсталатор + Root Инсталатор + Shizuku Инсталатор + + Ден + Дни + + Само при Wi-Fi и зареждане + Интервал за почистване на APK + Период за проверка и премахване на изтеглените файлове + + Час + Часове + + Нямате интернет връзка + Разрешете горната лента на приложението да се разшири + Невъзможност за извършване на определени действия. + Разрешете горната лента на приложението да се разширява и свива + Използвайте material you цветова тема + Материални Вие + Автоматично актуализиране на приложения + Инсталиране + Опитайте се да инсталирате актуализации автоматично + Рестартирайте LeOS-Droid, за да видите промените + Изчакване за стартиране на инсталацията… + Любими + Активирайте хранилището + Принудително почистване + Почиства излишните файлове + Хранилището е недостъпно + Сървърът не успя да предостави нов пакет. + Има несвободни компоненти + Неуспешно свързване със сървъра + Плъзгане на началния екран + Съдържа неподходящо за работа съдържание + Shizuku не работи + Копирай + Прокси портът може да бъде само цяло число + Позволете на потребителя да плъзга между страниците в началния екран + Следното хранилище не бе намерено + Специални благодарности + Shizuku не е инсталиран + Импортиране/Експортиране + Импортирай Настройки + Импортиране на настройки и любими от файл + Експортирай Настройки + Експортирай всички хранилища във файл + Импортирай хранилища + Експортиране на настройки и любими във файл + Експортирай хранилища + Линкът не може да се отвори + Импортирай всички хранилища от файл + \ No newline at end of file diff --git a/core/common/src/main/res/values-bn/strings.xml b/core/common/src/main/res/values-bn/strings.xml new file mode 100644 index 0000000..4f3c4bc --- /dev/null +++ b/core/common/src/main/res/values-bn/strings.xml @@ -0,0 +1,212 @@ + + + এপিকে পরিষ্কারকরণ বিরতি + নিশ্চিতকরণ + সংযোগ দেওয়া হচ্ছে… + বিনামূল্য নয় এমন ছবি/অডিও/ভিডিও রয়েছে + %s ডাউনলোড করা সম্ভব হয়নি + ক্রেডিট + বিস্তারিত + অকার্যকর ফাইলের ধরণ। + ফিঙ্গারপ্রিন্ট + + দিন + দিন + + ক্রিয়া ব্যর্থ + ভাণ্ডার যোগ করো + ঠিকানা + সব অ্যাপ্লিকেশন + তোমার সব অ্যাপ্লিকেশন হালনাগাদকৃত + আগে থেকেই আছে + সর্বদা + অন্ধকার + অ্যাপের টপ বার সম্প্রসারিত হতে দাও + %s সত্যায়িত করা সম্ভব হয়নি + অনুদান + বর্ণনা + + ঘণ্টা + ঘণ্টা + + সর্বোচ্চ এপিআই সংস্করণ %d। + অ্যাপের টপ বার সম্প্রসারিত ও সংকুচিত হতে দাও + অপবৈশিষ্ট্য + বিজ্ঞাপন আছে + HTTP প্রক্সি + ডিলিট করুন + বিনামূল্য নয় এমন ডিপেন্ডেন্সি আছে + নিরাপত্তার ঝুঁকি রয়েছে + অ্যাপ্লিকেশন + অ্যাপ্লিকেশনটি খুঁজে পাওয়া যায়নি + লেখকের ইমেইল + লেখকের ওয়েবসাইট + %s ডাউনলোড সম্পন্ন হয়েছে + সার্ভারের অকার্যকর প্রতিক্রিয়া। + সকল নতুন সংস্করণ অগ্রাহ্য করুন + অন্বেষণ + বাতিল + আপনার %1$s (এপিআই সংস্করণ %2$d) সাপোর্টেড না। %3$s + সর্বনিম্ন এপিআই সংস্করণ %d। + অনুপস্থিত বৈশিষ্ট্যসমূহ। + এখন রিপোজিটরি সম্পাদনা করা সম্ভব নয় কারণ এটি সিনক্রোনাইজ করা হচ্ছে। + পরিবর্তনসমূহের তালিকা + পরিবর্তনসমূহ + রিপোজিটরি যাচাই করা হচ্ছে… + %s সিনক্রোনাইজ করা সম্ভব হয়নি + গাঢ় + ডাউনলোড করা হচ্ছে + %s ডাউনলোড করা হচ্ছে… + রিপোজিটরি ডিলিট করতে চান\? + রিপোজিটরি সম্পাদনা করুন + এই সংস্করণটি অগ্রাহ্য করো + ডাউনলোড করা নথিগুলো পরীক্ষা এবং অপসারণের সময়কাল + ডিবাগিংয়ের জন্য কম্পাইল করা হয়েছে + বাগ ট্র্যাকার + এই সংস্করণটি আপনার ডিভাইসে ইনস্টল করা একটি থেকে একটি ভিন্ন শংসাপত্রের সাথে স্বাক্ষরিত৷ প্রথমে এটি আনইনস্টল করুন। + বেমানান সংস্করণ + বেমানান সংস্করণ + ডিভাইসের সাথে বেমানান অ্যাপ্লিকেশন সংস্করণগুলি দেখান + ইনস্টলার + Shizuku ইনস্টলার + ইনস্টল করা হয়েছে + সততা পরীক্ষা করা যায়নি. + ভুল ঠিকানা + অবৈধ আঙ্গুলের ছাপ বিন্যাস + ক্লিপবোর্ডে লিঙ্ক কপি করা হয়েছে + লিঙ্ক + লিগ্যাসি ইনস্টলার + অবৈধ অনুমতি. + আপনার রঙ থিম উপাদান ব্যবহার করুন + রুট ইনস্টলার + অবৈধ মেটাডেটা। + নাম + এই সংস্করণটি আপনার ডিভাইসে ইনস্টল করা সংস্করণের চেয়ে পুরানো। প্রথমে এটি আনইনস্টল করুন। + আপনার %1$s প্ল্যাটফর্ম সমর্থিত নয়৷ সমর্থিত প্ল্যাটফর্ম: %2$s। + %s এর সাথে বেমানান + ইনস্টল করুন + ইনস্টলেশন প্রকার + নির্দিষ্ট কর্ম সম্পাদন করতে অক্ষম. + শুরু করা + লাইসেন্স + %s লাইসেন্স + আলো + তালিকা অ্যানিমেশন + প্রধান পৃষ্ঠায় তালিকা অ্যানিমেশন দেখান + %s মার্জ করা হচ্ছে + উপাদান আপনি + সেশন ইনস্টলার + অবৈধ ব্যবহারকারীর নাম বিন্যাস + অবৈধ স্বাক্ষর। + সংগ্রহস্থল সক্রিয় করুন + কোন বর্ণনা নাই + শুধুমাত্র Wi-Fi-এ + অন্যান্য + স্বয়ংক্রিয়ভাবে আপডেট ইনস্টল করার চেষ্টা করুন + + %d অ্যাপ্লিকেশনটির একটি নতুন সংস্করণ রয়েছে৷ + নতুন সংস্করণ সহ %dটি অ্যাপ্লিকেশন। + + কোনো ইনস্টল করা অ্যাপ্লিকেশন নেই + আপনার কোন ইন্টারনেট সংযোগ নেই + এই ধরনের কোনো অ্যাপ্লিকেশন খুঁজে পাওয়া যায়নি + আবেদনের সংখ্যা + স্বয়ংক্রিয়ভাবে অ্যাপ্লিকেশন হালনাগাদ + ইনস্টল করা হচ্ছে + নেটওয়ার্ক ত্রুটি + কখনই না + কোন উপলব্ধ অ্যাপ্লিকেশন + উপলব্ধ অ্যাপ্লিকেশনের নতুন সংস্করণ + শুধুমাত্র %s এর সাথে সামঞ্জস্যপূর্ণ + শুধুমাত্র ওয়াইফাই এবং চার্জিং এ + %s খুলবেন\? + ইনডেক্স ফাইল পার্স করা যায়নি. + অ-মুক্ত সফ্টওয়্যার প্রচার করে + ভান্ডার + %s দ্বারা সরবরাহ করা হয়েছে + প্রক্সি হোস্ট + প্রক্সি টাইপ + প্রক্সি পর্ট + সম্প্রতি আপডেট করা হয়েছে + ভান্ডার + এই সংগ্রহস্থল এখনও ব্যবহার করা হয় নি. এটিতে থাকা অ্যাপ্লিকেশনগুলি দেখতে এটি চালু করুন। + পরিবর্তনগুলি দেখতে LeOS-Droid পুনরায় চালু করুন + পুরানো সংস্করণ দেখান + +%d আরো + প্রিয় + কোনো প্রক্সি নেই + প্রক্সি + জোর করে পরিষ্কার করুন + অপ্রয়োজনীয় ফাইলগুলি পরিষ্কার করে + অ্যাপ্লিকেশনের নতুন সংস্করণ সম্পর্কে অবহিত করুন + নতুন সংস্করণ উপলব্ধ হলে একটি বিজ্ঞপ্তি দেখান + ঠিক আছে + অ-মুক্ত নেটওয়ার্ক পরিষেবা প্রচার করে + পাসওয়ার্ড + পাসওয়ার্ড অনুপস্থিত + অনুমতি + %1$s প্রক্রিয়া করা হচ্ছে… + প্রকল্প ওয়েবসাইট + রিপোজিটরি পৌঁছানো যায় না + %s প্রয়োজন + নীরব ইনস্টল + বিবরণ সংরক্ষণ করা হচ্ছে… + স্ক্রিনশট + নীরব ইনস্টলেশনের জন্য রুট অনুমতির অনুমতি দিন + সংরক্ষণ + অনুসন্ধান করুন + একটি আয়না নির্বাচন করুন + শেয়ার করুন + আরো দেখুন + সেটিংস + স্বাক্ষরবিহীন। আবেদন তালিকা যাচাই করা যায়নি. স্বাক্ষরবিহীন সংগ্রহস্থল থেকে অ্যাপ্লিকেশন ডাউনলোড করার বিষয়ে সতর্ক থাকুন। + স্বাক্ষর %s + যায়গা + SOCKS প্রক্সি + অনিরাপদ উপায়ে স্বাক্ষর করা হয়েছে + এড়িয়ে যান + সাজানোর ক্রম + সোর্স কোড + সোর্স কোড আর উপলব্ধ নেই + সংগ্রহস্থলগুলি স্বয়ংক্রিয়ভাবে সিঙ্ক করুন + সিঙ্ক হচ্ছে + পদ্ধতি + ইনস্টল করতে আলতো চাপুন। + টার্গেট + আনইনস্টল করুন + অজানা + অজানা ত্রুটি. + অজানা: %s + স্বাক্ষরবিহীন + যাচাই করা হয়নি + ব্যবহারকারীর নাম + সংস্করণ %s + ওয়েবসাইট + ব্যক্তিগতকরণ + প্রদর্শন কম + সর্বশেষ + বাছাই এবং ফিল্টার + সিঙ্ক রিপোজিটরি + আপনার কার্যকলাপ ট্র্যাক বা রিপোর্ট + সংস্করণ + অন্বেষণ + %s সিঙ্ক হচ্ছে… + নতুন কি + রঙ + রঙ + সংস্করণ + সব আপডেট + আপডেট + প্রস্তাবিত + অস্থির আপডেট + ব্যবহারকারীর নাম অনুপস্থিত + অস্থির সংস্করণ ইনস্টল করার পরামর্শ দিন + ইনস্টলেশন শুরু করার জন্য অপেক্ষা করা হচ্ছে… + আপস্ট্রিম সোর্স কোড বিনামূল্যে নয় + সূচক যাচাই করা যায়নি. + ইনস্টল করা অ্যাপ্লিকেশন + হালনাগাদ + ডাউনলোড শুরু করার জন্য অপেক্ষা করা হচ্ছে… + ভাষা + নতুন অ্যাপ্লিকেশন + \ No newline at end of file diff --git a/core/common/src/main/res/values-ca/strings.xml b/core/common/src/main/res/values-ca/strings.xml new file mode 100644 index 0000000..5971d33 --- /dev/null +++ b/core/common/src/main/res/values-ca/strings.xml @@ -0,0 +1,212 @@ + + + Acció fallida + Afegeix repositori + Adreça + Ja existeix + Sempre + Negre (AMOLED) + Anti-característiques + No s\'ha pogut trobar aquesta aplicació + Correu electrònic de l\'autor + Lloc web d\'autor + Explorar + Anul·la + No pot editar el repositori des d\'ell perquè està sincronitzant ara mateix. + Canvis + Comprovant repositori… + Interval de neteja de l\'APK + Període per comprovar i eliminar els fitxers descarregats + Compilat per a depuració + Confirmació + Connectant… + Registre de canvis + No podria validar %s + Crèdits + + Dia + Dies + + Elimina + Elimina el repositori\? + Descripció + Detalls + Donar + Descarregat %s + Té dependènciesnolliures + Té vulnerabilitats de seguretat + + Hora + Hores + + Resposta de servidor nul. + proxy d\'HTTP + El max API la versió és %d. + Versió incompatible + Versions incompatibles + Versions d\'aplicació de l\'espectacle incompatibles amb el dispositiu + Incompatible amb %s + Instal·la + Tipus d\'instal·lació + Instal·lador + Instal·lador de llegat + Instal·lador de sessió + Instal·lador d\'arrel + Shizuku Instal·lador + Instal·lat + No podria comprovar enteresa. + Adreça nul·la + Format d\'empremta digital nul·la + Metadada nul·la. + Permisos nuls. + Signatura nul·la. + Nom + Número d\'aplicacions + D\'acord + Només compatible amb %s + Només amb Wi-Fi + Només amb Wi-Fi i carregant + Vols obrir %s\? + Altres + No s\'ha pogut analitzar l\'arxiu d\'índex. + Contrasenya + Falta la contrasenya + Permisos + +%d més + Paràmetres + Processant %1$s… + Lloc web del projecte + Promou serveis de xarxa no lliures + Promou programari no lliure + Proporcionat per %s + Proxy + Amfitrió de proxy + Port de proxy + Tipus de proxy + Recentment actualitzat + Repositoris + Repositori + Aquest repositori no ha estat utilitzat tot i així. Gira\'l damunt per veure les aplicacions en ell. + Sense signar. No podria verificar la llista d\'aplicació. Ser prudent descarregar aplicacions des de repositoris sense signar. + Requereix %s + Silenciós Instal·lar + Permet permís d\'arrel per silenciós instal·la + Salva + Recerca + Selecciona un mirall + Compartir + Mostrar més + Signatura %s + Signat utilitzant un algoritme insegur + Omet + Proxy SOCKS + Ordenant ordre + Codi de font + Codi de font ja no disponible + Sincronitza repositoris + Sincronitza repositoris automàticament + Sincronitzant %s… + Sistema + Copet per instal·lar. + Desconegut + Error desconegut. + Desconegut: %s + Sense signar + Actualitzacions inestables + Suggereix instal·lant versions inestables + Sense verificar + Actualització + Actualitzacions + El codi font no és lliure + Nom d\'usuari + Falta el nom d\'usuari + L\'índex no va poder ser validat. + Versió + Versió %s + Versions + Lloc web + Llengua + Personalització + Mostrar menys + Més recent + Explora + Actualitzar tot + Aplicacions instal·lades + Ordenar i filtrar + Aplicacions noves + Empremta digital + El vostre %1$s el programa no és recolzat. Programes recolzats: %2$s. + Totes les aplicacions + Totes les vostres aplicacions s\'han actualitzat + Aplicació + Rastrejador d\'incidències + Descarregant + No podria descarregar %s + Fosca + Edita repositori + Té publicitat + Ignora aquesta versió + Temes + Segueix o reporta la vostra activitat + Desinstal·la + Conté mitjans de comunicaciónolliures + No podria sincronitzar %s + Esperar per arrencar descàrrega… + Descarregant %s… + Format de fitxer nul. + Ignora tot versions noves + El min API la versió és %d. + Novetats + El vostre %1$s (API versió %2$d) no és recolzat. %3$s + Perdent característiques. + Aquesta versió és més vella que l\'instal·lat en el vostre dispositiu. Uninstall que primer. + Aquesta versió és signada amb un certificat diferent que l\'instal·lat en el vostre dispositiu. Uninstall que primer. + %s llicència + Cap proxy + El nexe va copiar a portapapers + Objectiu + Llicència + Tema + Nul username format + Llanxa + Llum + Nexes + Animacions de llista + Mida + Aplicacions instal·lades no + L\'espectacle llista animació en la pàgina major + Fusionant %s + Error de xarxa + Versions noves de les aplicacions disponibles + Mai + + %d l\'aplicació té una versió nova. + %d aplicacions amb versions noves. + + Cap aplicació disponible + Cap descripció disponible + Mostra una notificació quan les versions noves són disponibles + Salvant detalls… + Captures de pantalla + No podria trobar qualsevol tals aplicacions + Notifica sobre versions noves d\'aplicacions + Mostrar versions més velles + Suggerit + Sincronitzant + No teniu cap connexió a Internet + Permet que la barra d\'aplicacions superior s\'expandeixi i es col·lapsi + Permet que la barra d\'aplicacions superior s\'expandeixi + No es pot realitzar determinades accions. + Actualització automàtica d\'aplicacions + Intenta instal·lar les actualitzacions automàticament + Material tu + Utilitzeu el material del vostre tema + Preferits + Repositori inaccessible + Neteja forçada + Neteja els fitxers redundants + Habiliteu el repositori + S\'està esperant per iniciar la instal·lació… + Reinicieu LeOS-Droid per veure els canvis + Instal·lació + \ No newline at end of file diff --git a/core/common/src/main/res/values-cs/strings.xml b/core/common/src/main/res/values-cs/strings.xml new file mode 100644 index 0000000..96ec1ec --- /dev/null +++ b/core/common/src/main/res/values-cs/strings.xml @@ -0,0 +1,237 @@ + + + Přidat zdroj + Adresa + Všechny vaše aplikace jsou aktuální + Nezdařilo se najít tuto aplikaci + Procházet + Sledování chyb + Zrušit + Instalováno + Tato verze je starší než ta instalovaná na vašem zařízení. Nejdříve odinstalujte ji. + Zobrait nekompatibilní verze aplikace s vaším zařízením + Neplatný podpis. + Odkaz zkopírován + Světlé + Počet aplikací + Zpracovávání %1$s… + Nezdařilo se zpracovat soubor indexu. + Heslo + Chybí heslo + Web projektu + Hostitel proxy + Nedávno aktualizované + Zdroj + Port proxy + Typ proxy + Zdroje + Anti-funkce + Již existuje + Vždy + Nezdařilo se upravit zdroj protože se právě synchronizuje. + Změny + Seznam změn + Kontroluji zdroj… + Potvrzení + Spojuji… + Obsahuje ne-svobodná média + Nepodařilo se stáhnout %s + Nepodařilo se synchronizovat %s + Nepodařilo se ověřit %s + Tmavé + Smazat + Smazat zdroj\? + Popis + Detaily + Přispět + Staženo %s + Stahuji + Stahuji %s… + Upravit zdroj + Neplatný formát souboru. + Otisk prstu + Obsahuje reklamy + Obsahuje nesvobodné závislosti + Obsahuje bezpečnostní zranitelnosti + Neplatná odpověď serveru. + HTTP proxy + Ignorovat všechny nové verze + Ignorovat tuto verzi + Váš %1$s (verze API %2$d) není podporován. %3$s + Maximální verze API je %d. + Minimální verze API je %d. + Kredity + Chybějící funkce. + Vaše %1$s platforma není podporována. Podporované platformy: %2$s. + Nekompatibilní verze + Nekompatibilní verze + Nekompatibilní s %s + Instalovat + Typy Instalace + Nezdařilo se zkontrolovat integritu. + Neplatná adresa + Neplatný formát otisku prstu + Neplatná metadata. + Neplatná oprávnění. + Neplatný formát uživatelského jména + Spustit + Licence + %s licence + Odkazy + List Animací + Zobrazit animaci listu na hlavní stránce + Slučování %s + Název + Chyba sítě + Nikdy + Jsou dostupné nové verze aplikací + + %d aplikace má novou verzi. + %d aplikace mají novou verzi. + %d aplikací má novou verzi. + + Žádné dostupné aplikace + Žádné instalované aplikace + Žádný dostupný popis + Nepodařilo se najít žádné takové aplikace + Žádná proxy + Oznámení o aktualizacích + Zobrazit oznámení když jsou dostupné nové verze + OK + Kompatibilní pouze s %s + Pouze na Wi-Fi + Otevřít %s\? + Ostatní + Tato verze je podepsána jiným certifikátem než ta instalována na vašem zařízení. Nejdříve odisntalujte ji. + Oprávnění + +%d více + Nastavení + Propaguje nesvobodné internetové služby + Propaguje ne-svobodný software + Poskytuje %s + Proxy + Tento zdroj zatím použit. Zapněte jej pro zobrazení aplikací na něm. + Nepodepsáno. Nezdařilo se ověřit seznam aplikací. Buďte opatrní při stahování aplikací z nepodepsaných zdrojů. + Vyžaduje %s + Tichá instalace + Povolit root oprávnění pro tiché instalace + Uložit + Ukládám detaily… + Snímky obrazovky + Hledat + Sdílet + Zobrazit více + Zobrazit starší verze + Podpis %s + Podepsáno za použití nebezpečného algoritmu + Velikost + Přeskočit + Proxy SOCKS + Pořadí řazení + Zdrojový kód + Zdrojový kód již není dostupný + Doporučené + Synchronizovat zdroje + Synchronizovat zdroje automaticky + Synchronizuji + Synchronizuji %s… + Systém + Klikněte pro instalaci. + Cíl + Téma + Témata + Sleduje nebo hlásí vaší aktivitu + Odinstalovat + Neznámé + Neznámá chyba. + Neznámé: %s + Nepodepsáno + Nestabilní aktualizace + Neověřeno + Aktualizovat + Aktualizace + Originální zdrojový kód není svobodný + Uživatelské jméno + Chybí uživatelské jméno + Index nemohl být ověřen. + Verze + Verze %s + Verze + Čekám na zahájení stahování… + Co je nového + Web + Jazyk + Personalizace + Zobrazit méně + Nejnovější + Prozkoumat + Aktualizovat vše + Instalované aplikace + Třídit & Filtrovat + Nové aplikace + Akce se nezdařila + Všechny aplikace + Černá + Aplikace + E-mail autora + Web autora + Zkompilováno pro ladění + Instalátor + Původní instalátor + Instalátor pomocí relací + Root instalátor + Instalátor Shizuku + Navrhnout instalaci nestabilních verzí + Vybrat mirror + + den + dny + dní + + + hodina + hodiny + hodin + + Interval čištění APK + Období pro kontrolu a odstranění stažených souborů + Pouze na Wi-Fi a při nabíjení + Nepodařilo se vykonat některé akce. + Nejste připojeni k internetu + Povolení rozšíření horního panelu aplikací + Povolení rozbalování a sbalování horního panelu aplikace + Použít barevný motiv Material You + Material You + Oblíbené + Vyčistí přebytečné soubory + Vynutit vyčištění + Repozitář nedostupný + Povolit repozitář + Pro zobrazení změn restartujte LeOS-Droid + Čekání na spuštění instalace… + Instalace + Automatická aktualizace aplikací + Pokusit se automaticky nainstalovat aktualizace + Obsahuje nesvobodné součásti + Server neodeslal nový paket. + Nepodařilo se připojit k serveru + Shizuku není spuštěno + Shizuku není nainstalováno + Obsahuje obsah nevhodný do práce + Speciální poděkování + Posouvání na domovské stránce + Umožnit uživateli posouvat mezi stránkami na domovské stránce + Kopírovat + Následující repozitář nebyl nalezen + Port proxy smí být pouze celé číslo + Importovat nastavení + Import/export + Importovat nastavení a oblíbené ze souboru + Exportovat nastavení + Exportovat všechny repozitáře do souboru + Importovat repozitáře + Exportovat nastavení a oblíbené do souboru + Exportovat repozitáře + Importovat všechny repozitáře ze souboru + Nelze otevřít odkaz + \ No newline at end of file diff --git a/core/common/src/main/res/values-de/strings.xml b/core/common/src/main/res/values-de/strings.xml new file mode 100644 index 0000000..4096220 --- /dev/null +++ b/core/common/src/main/res/values-de/strings.xml @@ -0,0 +1,233 @@ + + + Paketquelle hinzufügen + Alle Anwendungen + All deine Anwendungen sind aktuell + Bereits vorhanden + Immer + Adresse + Vorgang fehlgeschlagen + Schwarz + Anwendung + Unerwünschte Merkmale + Entdecken + Abbrechen + Diese Anwendung konnte nicht gefunden werden + Fehlerverwaltung + Änderungsprotokoll + Die Paketquelle kann nicht bearbeitet werden, da sie gerade synchronisiert wird. + Paketquelle wird abgefragt … + Kompiliert für die Fehlersuche + Verbinde … + Bestätigung + Konnte %s nicht validieren + Dunkel + Enthält nicht-freie Medien + Mitwirkende + Beschreibung + Spenden + %s heruntergeladen + Details + Fingerabdruck + Enthält Werbung + Enthält Sicherheitslücken + Ungültige Antwort des Servers. + HTTP-Proxy + Die maximale API-Version ist %d. + Fehlende Funktionen. + Deine %1$s-Plattform wird nicht unterstützt. Unterstützte Plattformen: %2$s. + Installiert + Mit dem Gerät inkompatible Anwendungsversionen anzeigen + Installationstypen + Installieren + Integrität konnte nicht überprüft werden. + Ungültige Metadaten. + Ungültige Signatur. + Öffnen + Hell + Listenanimation auf der Hauptseite anzeigen + Neue Anwendungsversionen verfügbar + Nie + Netzwerkfehler + Über neue Versionen benachrichtigen + Keine Beschreibung vorhanden + Keine derartigen Anwendungen konnten gefunden werden + Keine installierten Anwendungen + Nur bei Wi-Fi + Öffne %s\? + Andere + Anzahl der Anwendungen + OK + Berechtigungen + +%d mehr + Einstellungen + Verarbeitung %1$s … + Bewirbt unfreie Software + Proxy + Paketquellen + Benötigt %s + Stumme Installation + Speichern + Details werden gespeichert … + Bildschirmfotos + Überspringen + Empfohlen + Synchronisierung + Themen + Ziel + Unbekannt + Deinstallation + Unsigniert + Aktualisierung + Version + Versionen + Was gibt es Neues + Warten auf den Downloadbeginn … + Der Index konnte nicht validiert werden. + Webseite + Änderungen + Autor-E-Mail-Adresse + Konnte %s nicht herunterladen + Autor-Webseite + Löschen + Zuletzt aktualisiert + Lizenz + Konnte %s nicht synchronisieren + Nur kompatibel mit %s + %s-Lizenz + Link kopiert + Projekt-Website + Proxy Typ + Paketquelle + Die Indexdatei konnte nicht geparst werden. + Passwort + Eine Benachrichtigung anzeigen, wenn neue Versionen verfügbar sind + Bereitgestellt von %s + Quellcode nicht mehr verfügbar + Ungültiges Benutzernamen-Format + Kein Proxy + Passwort fehlt + Quellcode + Paketquellen synchronisieren + Paketquellen automatisch synchronisieren + Diese Paketquelle wurde noch nicht verwendet. Aktivieren Sie es, um die darin enthaltenen Anwendungen anzuzeigen. + Signatur %s + Enthält nicht-freie Abhängigkeiten + Inkompatible Version + System + Thema + Alle neuen Versionen ignorieren + Diese Version ignorieren + Größe + Aktualisierungen + Benutzername + Version %s + Herunterladen + Teilen + Zeige mehr + Ältere Versionen zeigen + Ungeprüft + Benutzername fehlt + Paketquelle bearbeiten + Ungültiges Dateiformat. + %s wird heruntergeladen … + Inkompatibel mit %s + Inkompatible Versionen + Ungültige Adresse + Ungültiges Fingerabdruckformat + Ungültige Berechtigungen. + Bewirbt unfreie Netzwerkdienste + Unbekannt: %s + Unbekannter Fehler. + Synchronisierung %s … + Diese Version ist mit einem anderen Zertifikat signiert, als die auf Deinem Gerät installierte. Deinstalliere diese zuerst. + Die Paketquelle löschen\? + Diese Version ist älter als die auf deinem Gerät installierte. Deinstalliere diese zuerst. + Deine %1$s (API-Version %2$d) wird nicht unterstützt. %3$s + Die minimale API-Version ist %d. + Nicht signiert. Die Anwendungsliste konnte nicht verifiziert werden. Sei vorsichtig beim Herunterladen von Anwendungen aus nicht signierten Paketquellen. + Installation von instabilen Versionen vorschlagen + Instabile Aktualisierungen + Root-Rechte für stille Installationen zulassen + Proxy Host + Tippe um zu installieren. + Verfolgt oder erfasst deine Aktivitäten + Proxy Port + Suche + Sortierreihenfolge + SOCKS Proxy + Keine Anwendungen verfügbar + + %d Anwendung hat eine neue Version. + %d Anwendungen haben eine neue Version. + + Mit einem unsicheren Algorithmus signiert + Wähle einen Spiegel + Animationen anzeigen + Links + Führe %s zusammen + Name + Der Upstream-Quellcode ist nicht frei + Sprache + Personalisierung + Weniger anzeigen + Neueste + Entdecken + Alle aktualisieren + Installierte Anwendungen + Sortieren und filtern + Neue Anwendungen + + Tag + Tage + + + Stunde + Stunden + + Nur während des Ladevorgangs und aktiviertem WLAN + Installationsmethode + Zeitraum zum Prüfen und Entfernen heruntergeladener Dateien + APK-Bereinigungsintervall + Root-Installation + Alte Installationsmethode + Sitzungs-Installation + Shizuku-Installation + Bestimmte Aktionen können nicht durchgeführt werden. + Sie haben keine Internetverbindung + Erweiterung der oberen Anwendungsleiste zulassen + Das Erweitern und Reduzieren der oberen Anwendungsleiste erlauben + Favoriten + Material You + Material You-Farbschema verwenden + Repository unerreichbar + Aufräumen erzwingen + Repository aktivieren + Entfernt doppelte Dateien + Installation + Starten Sie LeOS-Droid neu, um die Änderungen zu sehen + Warten auf den Beginn der Installation … + Apps automatisch aktualisieren + Versuche, Updates automatisch zu installieren + Hat nicht-freie Komponenten + Server konnte kein neues Datenpaket liefern. + Shizuku läuft nicht + Enthält für den Arbeitsplatz unangemessene Inhalte + Verbindung zum Server nicht möglich + Shizuku ist nicht installiert + Wischgesten + Dem Benutzer erlauben, auf dem Startbildschirm zwischen den Seiten zu wischen + Besonderer Dank + Kopieren + Proxy-Port muss eine natürliche Zahl sein + Folgende Repos konnten nicht gefunden werden + Einstellungen importieren + Importieren/Exportieren + Importiere Einstellung und Favoriten von Datei + Exportiere Einstellungen + Exportiere alle Sammlungen in Datei + Importiere eine Sammlung + Exportiere Einstellungen und Favoriten in Datei + Exportiere Sammlungen + Importiere alle Sammlungen aus Datei + \ No newline at end of file diff --git a/core/common/src/main/res/values-el/strings.xml b/core/common/src/main/res/values-el/strings.xml new file mode 100644 index 0000000..f1bc84e --- /dev/null +++ b/core/common/src/main/res/values-el/strings.xml @@ -0,0 +1,233 @@ + + + Προσθήκη αποθετηρίου + Διεύθυνση + Όλες οι εφαρμογές + Όλες οι εφαρμογές είναι ενημερωμένες + Υπάρχει ήδη + Πάντα + Ανεπιθύμητα χαρακτηριστικά + Εφαρμογή + Η εφαρμογή δε βρέθηκε + Διεύθυνση ηλεκτρονικού ταχυδρομείου συντάκτη + Ιστοσελίδα συντάκτη + Εξερευνήστε + Ινχηλάτης προβλημάτων + Ακύρωση + Δεν μπορείτε να τροποποιήσετε το αποθετήριο καθώς συγχρονίζεται αυτή τη στιγμή. + Κατάλογος αλλαγών + Αλλαγές + Έλεγχος αποθετηρίου… + Προορίζεται για αποσφαλμάτωση + Επιβεβαίωση + Συνδέεται… + Περιέχει μη ελεύθερα μέσα + Αδυναμία λήψης %s + Αδυναμία συγχρονισμού %s + Αδυναμία επικύρωσης %s + Ευχαριστίες + Σκούρο + Διαγραφή αποθετηρίου; + Περιγραφή + Λεπτομέρειες + Δωρεά + Έγινε λήψη %s + Γίνεται λήψη + Γίνεται λήψη %s… + Επεξεργασία αποθετηρίου + Μη έγκυρος τύπος αρχείου. + Αποτύπωμα + Περιέχει διαφημίσεις + Έχει μη ελεύθερες εξαρτήσεις + Μη έγκυρη απόκριση διακομιστή. + HTTP διακομιστής μεσολάβησης + Αγνόηση όλων των ενημερώσεων + Αγνόηση αυτής της ενημέρωσης + Η μέγιστη έκδοση API είναι %d. + Η ελάχιστη έκδοση API είναι %d. + Λείπουν χαρακτηριστικά. + Ασύμβατη έκδοση + Ασύμβατες εκδόσεις + Εμφάνιση εκδόσεων εφαρμογών ασύμβατων με τη συσκευή + Ασύμβατο με %s + Εγκατάσταση + Τύποι Εγκατάστασης + Εγκατεστημένα + Μη έγκυρη διεύθυνση + Μη έγκυρη μορφή αποτυπώματος + Μη έγκυρα μεταδεδομένα. + Μη έγκυρες άδειες. + Μη έγκυρη μορφή ονόματος χρήστη + Εκκίνηση + Άδεια + Άδεια %s + Φωτεινό + Ο σύνδεσμος αντιγράφηκε + Σύνδεσμοι + Κινήσεις Λίστας + Εμφάνιση κινήσεων λίστας στην αρχική σελίδα + Συγχώνευση %s + Όνομα + Σφάλμα δικτύου + Ποτέ + Νέες διαθέσιμες ενημερώσεις + + %d νέα ενημέρωση. + %d νέες ενημερώσεις. + + Δεν υπάρχουν διαθέσιμες εφαρμογές + Δεν υπάρχουν εγκατεστημένες εφαρμογές + Δεν υπάρχει διαθέσιμη περιγραφή + Δε βρέθηκαν αντίστοιχες εφαρμογές + Κανένας διακομιστής μεσολάβησης + Ειδοποίηση για ενημερώσεις + Εμφάνιση ειδοποίησης όταν υπάρχουν διαθέσιμες ενημερώσεις + Αριθμός εφαρμογών + Εντάξει + Συμβατό μόνο με %s + Μόνο με Wi-Fi + Άνοιγμα %s; + Άλλα + Αδυναμία ανάλυσης του αρχείου δείκτη. + Κωδικός + Απουσία κωδικού + Άδειες + Ρυθμίσεις + Επεξεργασία %1$s… + Ιστοσελίδα του πρότζεκτ + Προωθεί μη ελεύθερες υπηρεσίες δικτύου + Προωθεί μη ελεύθερο λογισμικό + Παρέχεται από %s + Διακομιστής μεσολάβησης + +%d περισσότερα + Proxy host + Θύρα διακομιστή μεσολάβησης + Τύπος διακομιστή μεσολάβησης + Αποθετήρια + Αποθετήριο + Μη υπογεγραμμένο. Αδυναμία επαλήθευσης της λίστας εφαρμογών. Προσέχετε όταν κατεβάζετε εφαρμογές από μη υπογεγραμμένα αποθετήρια. + Απαιτεί %s + Σιωπηλή Εγκατάσταση + Αποθήκευση + Αποθήκευση λεπτομερειών… + Στιγμιότυπα οθόνης + Αναζήτηση + Επιλέξτε ένα mirror + Κοινοποίηση + Εμφάνιση περισσοτέρων + Εμφάνιση παλαιοτέρων εκδόσεων + Υπογραφή %s + Μέγεθος + Παράβλεψη + Σειρά ταξινόμησης + Πηγαίος κώδικας + Ο πηγαίος κώδικας δεν είναι πλέον διαθέσιμος + Προτεινόμενο + Συγχρονισμός αποθετηρίων + Αυτόματος συγχρονισμός αποθετηρίων + Συγχρονισμός + Συγχρονισμός %s… + Σύστημα + Πατήστε για εγκατάσταση. + Θέμα + Θέματα + Απεγκατάσταση + Άγνωστο + Άγνωστο σφάλμα. + Άγνωστο: %s + Ασταθείς ενημερώσεις + Πρόταση για εγκατάσταση ασταθών εκδόσεων + Ενημέρωση + Ενημερώσεις + Μη υπογεγραμμένο + Μη επιβεβαιωμένο + Διαγραφή + Πρόσφατα ενημερωμένα + Στόχος + Τι νέο υπάρχει + Upstream source code is not free + Όνομα χρήστη + Απουσία ονόματος χρήστη + Έκδοση + Έκδοση %s + Εκδόσεις + Αναμονή για λήψη… + Ιστοσελίδα + Έχει ευπάθειες ασφαλείας + Το %1$s σας (έκδοση API %2$d) δεν υποστηρίζεται. %3$s + Αυτή η έκδοση είναι παλαιότερη από αυτήν που είναι εγκατεστημένη στη συσκευή σας. Απεγκαταστήστε εκείνη πρώτα. + Η %1$s πλατφόρμα σας δεν υποστηρίζεται. Υποστηριζόμενες πλατφόρμες: %2$s. + Η ενέργεια απέτυχε + Αυτή η έκδοση είναι υπογεγραμμένη με ένα διαφορετικό πιστοποιητικό από αυτή που είναι εγκατεστημένη στη συσκευή σας. Απεγκαταστήστε εκείνη πρώτα. + Αδυναμία ελέγχου ακεραιότητας. + Μη έγκυρη υπογραφή. + Αυτό το αποθετήριο δεν έχει χρησιμοποιηθεί ακόμα. Χρειάζεται να το ενεργοποιήσετε για να δείτε τις εφαρμογές που παρέχει. + Έχει υπογραφεί χρησιμοποιώντας έναν μη ασφαλή αλγόριθμο + SOCKS διακομιστής μεσολάβησης + Καταγράφει ή αναφέρει τη δραστηριότητά σας + Αδυναμία επαλήθευσης δείκτη. + Επιτρέψτε την άδεια root για σιωπηλή εγκατάσταση + Amoled + Εξατομίκευση + Γλώσσα + Πρόσφατα + Ταξινόμηση & Φιλτράρισμα + Εγκατεστημένες εφαρμογές + Πρόγραμμα Εγκατάστασης + Παλιό πρόγραμμα Εγκατάστασης + Πρόγραμμα Εκατάστασης Συνεδρίας + Πρόγραμμα Εγκατάστασης Root + Πρόγραμμα Εγκατάστασης Shizuku + Εμφάνιση Λιγότερων + Εξερεύνηση + Ενημέρωση όλων + Νέες εφαρμογές + Period to check and remove downloaded files + APK cleanup interval + + Ημέρα + Ημέρες + + + Ώρα + Ώρες + + Μόνο σε Wi-Fi και Φόρτιση + Δεν είναι δυνατή η εκτέλεση ορισμένων ενεργειών. + Δεν έχετε σύνδεση στο διαδίκτυο + Να επιτρέπεται η Επέκταση της Γραμμής Κορυφαίων Εφαρμογών + Να επιτρέπεται η επέκταση και σύμπτυξη της επάνω γραμμής εφαρμογών + Χρησιμοποιήστε material you με θέμα το χρώμα σας + Material You + Αγαπημένα + Αποθετήριο μη προσβάσιμο + Αναγκαστική εκκαθάριση + Καθαρίζει τα περιττά αρχεία + Ενεργοποιήστε το αποθετήριο + Επανεκκινήστε το LeOS-Droid για να δείτε αλλαγές + Εγκατάσταση + Αναμονή για έναρξη εγκατάστασης… + Αυτόματη ενημέρωση εφαρμογών + Προσπαθήστε να εγκαταστήσετε αυτόματα ενημερώσεις + Διαθέτει μη-ελεύθερα στοιχεία + Ο διακομιστής απέτυχε να παράσχει νέο πακέτο. + Δε μπόρεσε να συνδεθεί με τον διακομιστή + Περιέχει μη ασφαλές για εργασία περιεχόμενο + Το Shizuku δεν εκτελείται + Ειδικές Πιστώσεις + Το Shizuku δεν είναι εγκατεστημένο + Σύρσιμο Αρχικής Οθόνης + Επιτρέψτε στον χρήστη να συρθεί μεταξύ σελίδων στην αρχική οθόνη + Αντιγραφή + Το παρακάτω αποθετήριο δεν βρέθηκε + Η θύρα Proxy μπορεί να είναι μόνο Ακέραιος + Εισαγωγή Ρυθμίσεων + Εισαγωγή/Εξαγωγή + Εισαγωγή ρυθμίσεων και αγαπημένων από το αρχείο + Εξαγωγή Ρυθμίσεων + Εξαγωγή όλων των αποθετηρίων σε αρχείο + Εισαγωγή Αποθετηρίων + Εξαγωγή ρυθμίσεων και αγαπημένων σε αρχείο + Εξαγωγή Αποθετηρίων + Εισαγωγή όλων των αποθετηρίων από το αρχείο + \ No newline at end of file diff --git a/core/common/src/main/res/values-eo/strings.xml b/core/common/src/main/res/values-eo/strings.xml new file mode 100644 index 0000000..518bed2 --- /dev/null +++ b/core/common/src/main/res/values-eo/strings.xml @@ -0,0 +1,234 @@ + + + Ĝisdatigoj + Grandeco + %s licenco + Sesia Instalilo + Fingrospuro + Nekongrua versio + + Horo + Horoj + + Ne eblis elŝuti %s + Fontkodo ne plu disponebla + Ĉi tiu versio estas subskribita per malsama atestilo ol tiu instalita sur via aparato. Unue malinstalu tion. + Konservi + Sinkronigi deponejojn aŭtomate + Ĝisdatigi ĉion + Hejmekrana Glitado + Ĉi tiu versio estas pli malnova ol tiu instalita sur via aparato. Unue malinstalu tion. + Uzi Material You kolorhaŭton + Nur ĉe Wi-Fi ⳤ Ŝargado + Sinkronigi deponejojn + Radika Instalilo + Ago malsukcesis + +%d pli + Instalilo + Nevalidaj metadatenoj. + Via %1$s (API-versio %2$d) ne estas subtenata. %3$s + Nur sur Wi-Fi + Pasvorto + Nesubskribita + Intervalo de purigado de APK + Nesubskribita. Ne eblis kontroli la aplikliston. Atentu elŝutante aplikaĵojn el nesubskribitaj deponejoj. + Enhavas enhavon ne taŭgan por laboro + Elekti spegulon + Havas neliberajn komponantojn + Promocias ne-liberajn retservojn + Montri listanimacion sur la ĉefpaĝo + Sinkroniganta %s… + Favoratoj + Spuras aŭ raportas vian agadon + Nevalida subskribo. + Retejo + Neniuj instalitaj aplikaĵoj + Kontraŭ-funkcioj + Nevalida servila respondo. + Kunfandi %s + Atendante komenci elŝuton… + Provi instali ĝisdatigojn aŭtomate + Elŝutanta + Esplori + Montri sciigon kiam novaj versioj estas disponebla + Sugestita + Permesoj + Ordigi ⳤ Filtri + Ĉu malfermi %s\? + Indekso ne povis esti validigita. + Novaj versioj de aplikaĵoj disponeblaj + Ĉiuj viaj aplikaĵoj estas ĝisdatigitaj + Havas neliberajn dependecojn + Ŝanĝprotokolo + Shizuku ne kuras + Nekonata + + Tago + Tagoj + + Ne eblis sinkronigi %s + Instalante + Via %1$s platformo ne estas subtenata. Subtenataj platformoj: %2$s. + Deponejo neatingebla + Rekomenci LeOS-Droid por vidi ŝanĝojn + Uzantnomo mankas + Konektanta… + Ĝisdatigi + Montri pli + Mankas funkcioj. + Neniuj disponeblaj aplikaĵoj + Altrudi purigi + Haŭto + SOCKS prokurilo + Pasvorto mankas + Priskribo + Material You + Celo + Atendante komenci instaladon… + Instalita + Nomo + Subskribite per nesekura algoritmo + Ne eblis konekti al servilo + Fontkodo + Uzantnomo + Versio %s + Hela + Ĉiuj aplikaĵoj + Instalitaj aplikaĵoj + Prokura haveno + Postulas %s + Forigi + Deponejo + Nur kongrua kun %s + Servilo malsukcesis provizi novan pakaĵon. + Sugesti instali malstabilajn versiojn + Versio + OK + Ne eblas fari iujn agojn. + Personigo + Havas sekurecajn vundeblecojn + Alia + Subskribo %s + Ligilo kopiita + Prilaboranta %1$s… + Shizuku Instalilo + Novaj aplikaĵoj + Kopii + Malinstali + Vi ne havas interretan konekton + Preterpasi + Elŝutis %s + Ne povas redakti deponejon ĉar ĝi nun sinkronigas. + Prokura haveno povas nur esti Entjero + Nombro de aplikaĵoj + Nekongrua kun %s + Reteraro + Licenco + Aŭtomate ĝisdatigi aplikaĵoj + Ekrankopioj + Lastatempe ĝisdatigita + Jam ekzistas + Aŭtora retejo + Detaloj + Redakti deponejon + Ordo de ordigo + Ignori ĉi tiun version + Nekontrolita + HTTP prokurilo + Aplikaĵo + Ĉiam + Adreso + Silenta Instalo + Neniu priskribo disponebla + Nevalida fingrospura formato + Konservanta detalojn… + Ligiloj + Havas reklamon + Malhela + Kio novas + Premu por instali. + Nuligi + Cimspurilo + Nevalidaj permesoj. + Enhavas neliberajn amaskomunikilojn + Purigas redundajn dosierojn + Promocias neliberan programaron + Lanĉi + Neniu prokurilo + Nigra + Sinkroniganta + Lingvo + Instalaj Tipoj + Malnova-funkcia instalilo + Serĉi + Nekonata eraro. + Haŭtoj + Enlistigi Animacioj + Nevalida dosierformato. + + %d aplikaĵo havas novan version. + %d aplikaĵoj kun novaj versioj. + + Permesi al la uzanto gliti inter paĝoj en la hejmekrano + Prokura tipo + Ĉu forigi la deponejon\? + Ebligi la deponejon + Projekto retejo + Donaci + Aldoni deponejo + Permesi al Supra Aplika Breto Etendi + Ne eblis validigi %s + Esplori + Montri Malpli + Neniam + Ne povis trovi tiajn aplikaĵojn + La minimuma API-versio estas %d. + Permesi al supra aplika breto etendi kaj maletendi + Periodo por kontroli kaj forigi elŝutitajn dosierojn + Agordoj + Nevalida adreso + La kontraŭflua fontkodo ne estas libera + Nekongruaj versioj + Aŭtora retpoŝto + Kontrolanta deponejon… + Versioj + La maksimuma API-versio estas %d. + Ĉi tiu deponejo ankoraŭ ne estis uzata. Ŝaltu ĝin por vidi la aplikaĵojn en ĝi. + Ne eblis analizi la indeksan dosieron. + Instali + Sistemo + Konfirmo + Sekva deponejo ne estis trovita + Specialaj Kreditoj + Kunhavigi + Ŝanĝoj + Nevalida uzantnomo formato + Sciigi pri ĝisdatigoj + Provizite de %s + Montri aplikaĵajn versiojn nekongruajn kun la aparato + Montri malnovajn versiojn + Shizuku ne estas instalita + Malstabilaj ĝisdatigoj + Prokura ĉefkomputilo + Ignori ĉiujn novajn versiojn + Elŝutanta %s… + Ne eblis kontroli integrecon. + Ne eblis trovi tiun aplikaĵon + Prokurilo + Plej lasta + Kreditoj + Deponejoj + Permesi radikan permeson por silenta instalo + Kompilita por sencimigado + Nekonata: %s + Importi Agordojn + Importi/Eksporti + Importi agordojn kaj favoratojn el dosiero + Eksporti Agordojn + Eksporti ĉiujn deponejojn al dosiero + Importi Deponejojn + Eksporti agordojn kaj favoratojn al dosiero + Eksporti Deponejojn + Importi ĉiujn deponejojn el dosiero + Ne povas malfermi ligilon + \ No newline at end of file diff --git a/core/common/src/main/res/values-es/strings.xml b/core/common/src/main/res/values-es/strings.xml new file mode 100644 index 0000000..7cc0f02 --- /dev/null +++ b/core/common/src/main/res/values-es/strings.xml @@ -0,0 +1,237 @@ + + + Acción fallida + Agregar repositorio + Dirección + Todas las aplicaciones + Todas sus aplicaciones están actualizadas + Ya existe + Siempre + Negro (AMOLED) + Anti-funciones + Aplicación + No se pudo encontrar esa aplicación + Correo electrónico del autor + Sitio web del autor + Explorar + Registro de incidencias + Cancelar + No se puede editar el repositorio ya que se está sincronizando ahora mismo. + Registro de cambios + Cambios + Comprobando repositorio… + Compilado para la depuración + Confirmación + Conectando… + Contiene medios no libres + No se ha podido descargar %s + No se ha podido sincronizar %s + No se ha podido validar %s + Créditos + Oscuro + Eliminar + ¿Eliminar repositorio\? + Descripción + Detalles + Donar + %s descargado + Descargando + Descargando %s… + Editar repositorio + Formato de archivo no válido. + Huella digital + Contiene publicidad + Contiene dependencias no libres + Contiene vulnerabilidades de seguridad + Respuesta del servidor no válida. + Proxy HTTP + Ignorar todas las nuevas versiones + Ignorar esta versión + Tu %1$s (versión de la aplicación %2$d) no es compatible. %3$s + La versión máxima de la API es %d. + La versión mínima de la API es %d. + Características que faltan. + Esta versión es más antigua que la instalada en su dispositivo. Desinstala esa primero. + Tu plataforma %1$s no está soportada. Plataformas soportadas: %2$s. + Esta versión está firmada con un certificado diferente al instalado en tu dispositivo. Desinstala ese primero. + Versión incompatible + Versiones incompatibles + Mostrar versiones de aplicaciones incompatibles con el dispositivo + Incompatible con %s + Instalar + Tipos de Instalación + Instalado + No se ha podido comprobar la integridad. + Dirección no válida + Formato de huella digital no válido + Metadatos no válidos. + Permisos no válidos. + Firma inválida. + Formato del nombre de usuario inválido + Ejecutar + Licencia + Licencia %s + Claro + Enlace copiado + Enlaces + Animaciones de la lista + Mostrar la animación de la lista en la página principal + Uniendo %s + Nombre + Error en la red + Nunca + Nuevas versiones de aplicaciones disponibles + No hay aplicaciones disponibles + No hay aplicaciones instaladas + Sin ninguna descripción + No se ha podido encontrar ninguna aplicación de este tipo + Sin proxy + Notificar las actualizaciones + Mostrar una notificación cuando haya nuevas versiones disponibles + Número de aplicaciones + Aceptar + Solo compatible con %s + Solo con Wi-Fi + ¿Quieres abrir %s\? + Otros + No se ha podido analizar el archivo de índice. + Contraseña + Falta la contraseña + Permisos + +%d más + Ajustes + Procesando %1$s… + Página web del proyecto + Promueve servicios de red no libres + Promueve el software no libre + Proporcionado por %s + Proxy + Host del proxy + Puerto del proxy + Tipo de proxy + Actualizado recientemente + Repositorios + Repositorio + Este repositorio no se ha utilizado todavía. Actívalo para ver las aplicaciones que contiene. + Sin firmar. No se ha podido verificar la lista de aplicaciones. Ten cuidado al descargar aplicaciones de repositorios no firmados. + Requiere %s + Instalación silenciosa + Conceder el permiso de root para las instalaciones silenciosas + Guardar + Guardando detalles… + Capturas de pantalla + Buscar + Selecciona un espejo + Compartir + Mostrar más + Mostrar versiones anteriores + Firma %s + Firmado con un algoritmo no seguro + Tamaño + Omitir + Proxy SOCKS + Ordenado + Código fuente + El código fuente ya no está disponible + Sugerencias + Sincronizar repositorios + Sincronización automática de repositorios + Sincronización + Sincronizando %s… + Sistema + Pulse para instalar. + Objetivo + Tema + Temas + Rastrea o informa de tu actividad + Desinstalar + Desconocido + Error desconocido. + Desconocido: %s + No firmado + Actualizaciones inestables + Sugerir la instalación de versiones inestables + No verificado + Actualizar + Actualizaciones + El código fuente no es libre + Nombre de usuario + Falta el nombre de usuario + El índice no pudo ser validado. + Versión + Versión %s + Versiones + A la espera de iniciar la descarga… + Novedades + Página web + + La aplicación %d tiene una nueva versión. + Las aplicaciones %d tienen nuevas versiones. + Las aplicaciones %d tienen nuevas versiones. + + Idioma + Personalización + Mostrar menos + Lo más reciente + Explorar + Aplicaciones instaladas + Ordenar y filtrar + Actualizar todo + Nuevas aplicaciones + Instalador de root + Instalador + Instalador de sesión + Instalador heredado + Instalador de Shizuku + Intervalo de limpieza del APK + Periodo para comprobar y eliminar los archivos descargados + + Día + Días + Días + + + Hora + Horas + Horas + + Solo en Wi-Fi y cargando + No se pueden realizar ciertas acciones. + No hay conexion a internet + Permitir que la barra superior de aplicaciones se expanda + Permitir que la barra superior de la aplicación se expanda y se contraiga + Utiliza el tema de color Material You + Material You + Favoritas + Repositorio inaccesible + Forzar la limpieza + Limpiar archivos redundantes + Habilitar el repositorio + Instalando + Reinicia LeOS-Droid para ver los cambios + Esperando para iniciar la instalación… + Actualización automática de aplicaciones + Intentar instalar actualizaciones automáticamente + Contiene componentes no libres + El servidor no ha podido proporcionar un nuevo paquete. + No se ha podido conectar con el servidor + Shizuku no se está ejectando + Contenido no apto para el trabajo + Shizuku no está instalado + Gracias a + Deslizamiento por la pantalla de inicio + Permitir al usuario pasar de una página a otra en la pantalla de inicio + Copiar + No pudimos encontrar el siguiente repositorio + El puerto proxy sólo puede ser un número entero + Configuración de la importación + Importar/Exportar + Importar los ajustes y los favoritos desde un archivo + Ajustes de la exportación + Exportar todos los repositorios a un archivo + Importar los repositorios + Exportar los ajustes y los favoritos a un archivo + Exportación de los repositorios + Importar todos los repositorios del archivo + No se puede abrir el enlace + \ No newline at end of file diff --git a/core/common/src/main/res/values-fa/strings.xml b/core/common/src/main/res/values-fa/strings.xml new file mode 100644 index 0000000..b4dc18b --- /dev/null +++ b/core/common/src/main/res/values-fa/strings.xml @@ -0,0 +1,212 @@ + + + ناموفق بود + افزودن مخزن + آدرس + همهٔ برنامه‌ها + همهٔ برنامه‌های شما به‌روز هستند + از قبل وجود دارد + سیاه + برنامه + آن برنامه پیدا نشد + همیشه + ایمیل سازنده + وبسایت سازنده + کاوش + ردیاب باگ + لغو + تغییرات + توضیحات + تغییرات + پادویژگی‌ها + بررسی مخزن … + تاییدیه + درحال‌اتصال… + دانلود ناموفق %s + کامپایل‌شده جهت خطایابی + اعتبارسنجی ناموفق %s + دست‌اندرکاران + تاریک + حذف + تبادل ناموفق %s + جزییات + دانلود شده %s + درحال‌دانلود + درحال‌دانلود %s … + فرمت فایل نادرست است. + دارای تبلیغات + ویرایش مخزن + اثرانگشت + پروکسی HTTP + بیخیال این نسخه + چیزت %1$s (نسخهAPIت %2$d) پشتیبانی نمیشه. %3$s + حداکثر نسخهAPI اینه %d. + حداقل نسخهAPI اینه %d. + قابلیت‌هایی را ندارد. + این نسخه قدیمی‌تر از اونی که روی دستگاه شما نصب هست. اول اونو حذف کن. + این نسخه با کلید متفاوتی امضاء شده نسبت به نسخه‌ای که در دستگاه شما نصب شده. اول اونو حذف کن. + انواع نصب + نصب + فراداده نادرست. + دسترسی‌های نادرست. + لینک‌ها + نمایش لیست انیمیشن در صفحه‌اصلی + ادغام %s + نام + خطای شبکه + هرگز + نسخه‌های جدیدی از اپلیکیشن‌ها موجوده + خبرم کن درمورد نسخه جدید برنامه‌ها + تایید + تنها با %s سازگار است + فقط با وایفای + دیگر + فایل ایندکس قابل تحلیل نیست. + باز کردن %s ؟ + این مخزن هنوز استفاده نشده. فعالش کن تا اپلیکیشن‌های داخلشو ببینی. + ناشناس + لغونصب + منتظر شروع دانلود… + نسخه‌ها + وقفه پاکسازی APK + دوره بررسی و حذف فایل های دانلود شده + دارای حفره‌های امنیتی + پاسخ نادرست از مرکز. + نسخه‌های ناسازگار + ناسازگاری با %s + امضای نادرست. + لیست انیمیشن‌ها + هیچ اپلیکیشنی فراهم نیست + هیچ اپلیکیشنی نصب نیست + تعداد اپلیکیشن‌ها + وایفای یا درحال‌شارژ + کلمه‌عبور + کلمه‌عبور نیست + %d+ بیشتر + تنظیمات + درحال‌پردازش %1$s … + اجازه دسترسی روت برای نصب بدون‌پرسش + امضاء %s + با الگوریتم ناامن امضاء شده + حجم + بیخیال + پروکسی socks + سورس کد + پیشنهادات + آپدیت مخازن + آپدیت خودکار مخازن + درحال‌آپدیت + سیستم + بزن نصب شه. + آپدیت + سورس‌کد اصلی رایگان نیست + زبان + شخصی‌سازی + نمایش کمتر + آخرین + اکتشاف + آپدیت همه + ترتیب و فیلتر + نصاب روت + نصاب + نصاب قدیمی + نصاب نشست + نصاب شیزوکو + نصب‌شده + اجرا + ساختار نادرست نام‌کاربری + لایسنس + روشن + %s جواز + پروکسی + ارتقاء خدمات پولی شبکه + ارتقاء برنامه پولی + سرور پروکسی + پورت پروکسی + مخزن‌ها + مخزن + نیازمند %s + نصب بدون‌پرسش + اسکرین‌شات‌ها + جستجو + از کجا دانلود کنم + اشتراک + ذخیره + درحال‌ذخیره جزییات… + نمایش بیشتر + نمایش نسخه‌های قدیمی + هدف + قالب + قالب‌ها + رهگیری یا گزارش فعالیت شما + خطای ناشناخته. + ناشناخته: %s + امضاءنشده + آپدیت‌های ناپایدار + تایید نشده + نام‌کاربری + ایندکس قابل تایید شدن نیست. + چه خبر + وبسایت + نام‌کاربری نیست + + بروزرسانی برای %d برنامه موجود می باشد. + بروزرسانی برای %d برنامه موجود می باشد. + + + روز + روزها + + + ساعت + ساعات + + حمایت‌مالی + این مخزن حذف شود؟ + هنگام یکپارچه‌سازی مخزن نمی‌توان آن را ویرایش کرد. + حاوی محتوای پولی + دارای وابستگی‌های پولی + بیخیال همه نسخه‌های جدید + نسخه ناسازگار + پلتفرم %1$s پشتیبانی نمیشه. پلتفرم پشتیبانی شده: %2$s. + نمایش نسخه‌هایی که با دستگاه من ناسازگار هستند + بررسی صحت ناموفق بود. + ساختار نادرست اثرانگشت + آدرس ناردست + لینک کپی شد + بدون پروکسی + هیچ توضیحاتی موجود نیست + چنین اپلیکیشنی یافت نشد + وقتی نسخه جدیدی منتشر شد، اطلاع بده + دسترسی‌ها + وبسایت پروژه + نوع پروکسی + ارائه توسط %s + اخیرا آپدیت شده + امضاءنشده. لیست اپلیکیشن قابل اعتماد نیست. حین دانلود اپ از مخازن بدون‌امضاء احتیاط کنید. + اولویت ترتیب + پیشنهاد نصب نسخه‌های آزمایشی + سورس‌کد دیگه موجود نیست + درحال‌آپدیت %s … + اپلیکیشن‌های نصب شده + آپدیت‌ها + برنامه‌های جدید + نسخه + نسخه %s + شما هیچ اتصال اینترنتی ندارید + قادر به انجام برخی اقدامات خاص نیست. + به نوار بالای برنامه اجازه دهید تا گسترش یابد + به نوار بالای برنامه اجازه دهید تا گسترده و فشرده شود + Material You + از تم رنگی material you استفاده کنید + مخزن را فعال کنید + پاکسازی اجباری + برای مشاهده تغییرات، LeOS-Droid را مجددا راه اندازی کنید + موارد دلخواه + مخزن قابل دسترسی نیست + به‌روز رسانی خودکار برنامه‌ها + فایل های اضافی را پاک می کند + سعی می‌کند به‌روزرسانی‌ها را به صورت خودکار نصب کند + در حال نصب + در انتظار شروع نصب… + \ No newline at end of file diff --git a/core/common/src/main/res/values-fi/strings.xml b/core/common/src/main/res/values-fi/strings.xml new file mode 100644 index 0000000..26ac1d7 --- /dev/null +++ b/core/common/src/main/res/values-fi/strings.xml @@ -0,0 +1,233 @@ + + + Osoite + Kaikki sovellukset + Kaikki sovelluksesi ovat ajan tasalla + On jo olemassa + Aina + Musta + Anti-ominaisuudet + Sovellus + Toiminta epäonnistui + Lisää ohjelmalähde + Tätä sovellusta ei löytynyt + Tekijän sähköposti + Tekijän verkkosivusto + Tutustu + Vikojen jäljitin + Poista + Tumma + Ei voitu validoida %s + Käännetty virheenkorjausta varten + Vahvistus + Yhdistetään… + Sisältää ei-vapaata mediaa + Ei voitu ladata %s + Ei voitu synkronoida %s + Kiitokset + Peruuta + Arkistoa ei voi muokata, koska se synkronoidaan juuri nyt. + Muutosloki + Muutokset + Tarkistetaan ohjelmavarastoa… + Sormenjälki + Väärä tiedostomuoto. + Muokkaa ohjelmalähdettä + Ladataan %s… + Ladataan + Ladattu %s + Lahjoita + Tiedot + Kuvaus + Poista ohjelmalähde\? + Sisältää mainoksia + Ei-vapaita riippuvuuksia + Sisältää tietoturva-aukkoja + Palvelimen vastaus on virheellinen. + HTTP-välityspalvelin + Jätä kaikki uudet versiot huomiotta + Jätä tämä versio huomiotta + Sinun %1$s (API-versio %2$d) ei ole tuettu. %3$s + Suurin API-versio on %d. + Vähimmäis API-versio on %d. + Puuttuvat ominaisuudet. + Tämä versio on vanhempi kuin laitteeseesi asennettu versio. Poista se ensin. + Yhteensopimaton versio + Yhteensopimattomat versiot + Näytä sovellusversiot, jotka eivät ole yhteensopivia laitteen kanssa + Yhteensopimaton %s + Asenna + Asennustyypit + Asennettu + Eheyttä ei voitu tarkistaa. + Virheellinen osoite + Virheellinen sormenjälkimuoto + Virheelliset metatiedot. + Virheelliset käyttöoikeudet. + Virheellinen allekirjoitus. + Virheellinen käyttäjänimen muoto + Avaa + Lisenssi + %s -lisenssi + Vaalea + Linkki kopioitu + Linkit + Luettelon animaatiot + Näytä luettelon animaatio pääsivulla + Yhdistetään %s + Nimi + Verkkovirhe + Ei koskaan + Uusia versioita sovelluksista saatavilla + + %d sovelluspäivitys saatavilla. + %d sovelluspäivitystä saatavilla. + + Ei saatavilla olevia sovelluksia + Ei asennettuja sovelluksia + Kuvausta ei ole saatavilla + Tällaisia sovelluksia ei löydy + Toimittanut %s + Välityspalvelimen isäntä + Välityspalvelimen portti + Välityspalvelimen tyyppi + Äskettäin päivitetty + Ohjelmavarastot + Ohjelmavarasto + Vaatii %s + Hiljainen asennus + Salli pääkäyttäjän oikeudet hiljaisiin asennuksiin + Tallenna + Tallennetaan tietoja… + Kuvakaappaukset + Vain Wi-Fi verkossa + Avaa %s\? + Muut + Indeksitiedostoa ei voitu jäsentää. + Salasana + Salasana puuttuu + Käyttöoikeudet + +%d lisää + Asetukset + Käsitellään %1$s… + Projektin verkkosivusto + Edistää ei-vapaita verkkopalveluja + Haku + Valitse peilipalvelin + Ei proxya + Ilmoita sovellusten uusista versioista + Näytä ilmoitus, kun uusia versioita on saatavilla + Yhteensopiva vain %s + Jaa + Näytä lisää + Näytä vanhemmat versiot + OK + Seuraa tai raportoi toiminnastasi + Poista + Tuntematon + Tuntematon virhe. + Tuntematon: %s + Allekirjoittamaton + Epävakaat päivitykset + Vahvistamaton + Alkuperäinen lähdekoodi ei ole vapaa + Verkkosivusto + Mitä uutta + Odotetaan latauksen aloittamista… + Käyttäjätunnus puuttuu + Käyttäjänimi + Allekirjoitus %s + Allekirjoitettu turvattomalla algoritmilla + Koko + Ohita + SOCKS-välityspalvelin + Lajittelujärjestys + Lähdekoodi + Lähdekoodia ei ole enää saatavilla + Suositeltu + Synkronoi ohjelmalähteet + Synkronoi ohjelmalähteet automaattisesti + Synkronoidaan + Synkronoidaan %s… + Teemat + Teema + Kohde + Napauta asentaaksesi. + Järjestelmä + Päivitys + Päivitykset + Edistää ei-vapaita ohjelmia + Tätä ohjelmavarastoa ei ole vielä käytetty. Ota se käyttöön nähdäksesi siinä olevat sovellukset. + Välityspalvelin + Allekirjoittamaton. Sovellusluetteloa ei voitu tarkistaa. Ole varovainen ladatessasi sovelluksia allekirjoittamattomista arkistoista. + Versio %s + Indeksiä ei voitu vahvistaa. + Ehdota epävakaiden versioiden asentamista + Tämä versio on allekirjoitettu eri varmenteella kuin laitteeseesi asennettu versio. Poista se ensin. + Alustasi %1$s ei ole tuettu. Tuetut alustat: %2$s. + Versiot + Versio + Sovellusten määrä + Mukauttaminen + Kieli + Näytä vähemmän + Uusimmat + Tutustu + Päivitä kaikki + Asennetut sovellukset + Uudet sovellukset + Lajittele ja suodata + Asentaja + Vanha asentaja + Sessioasentaja + Root-asentaja + Shizuku-asentaja + APK:n puhdistusväli + Aika ladattujen tiedostojen tarkistamiseen ja poistamiseen + + Päivä + Päivää + + + tunti + tuntia + + Vain Wi-Fi verkossa latauksessa ollessa + Tiettyjä toimia ei voida suorittaa. + Salli yläosan sovelluspalkin laajeneminen + Salli yläosan sovelluspalkin laajentua ja tiivistyä + Ei internet yhteyttä + Suosikit + Material You + Käytä Material You -väriteemaa + Ota ohjelmalähde käyttöön + Pakota puhdistus + Puhdistaa tarpeettomat tiedostot + Ohjelmavarasto ei ole tavoitettavissa + Asentaa + Käynnistä LeOS-Droid uudelleen nähdäksesi muutokset + Odotetaan asennuksen aloittamista… + Päivitä sovelluksia automaattisesti + Yritä asentaa päivitykset automaattisesti + Aloitusnäytön pyyhkäisy + Sisältää NSFW-sisältöä + Sisältää ei-vapaita komponentteja + Shizuku ei ole käynnissä + Palvelimeen ei saatu yhteyttä + Palvelin ei pystynyt toimittamaan uutta pakettia. + Kopioi + Välityspalvelimen portti voi olla vain kokonaisluku + Salli käyttäjän pyyhkäistä sivujen välillä aloitusnäytössä + Seuraavaa ohjelmavarastoa ei löytynyt + Erityiskiitokset + Shizuku ei ole asennettu + Tuontiasetukset + Tuo/Vie + Tuo asetukset ja suosikit tiedostosta + Vie asetukset + Vie kaikki tietovarastot tiedostoon + Tuo tietovarastoja + Vie asetukset ja suosikit tiedostoon + Vie tietovarastot + Tuo kaikki tietovarastot tiedostosta + \ No newline at end of file diff --git a/core/common/src/main/res/values-fr/strings.xml b/core/common/src/main/res/values-fr/strings.xml new file mode 100644 index 0000000..91d0544 --- /dev/null +++ b/core/common/src/main/res/values-fr/strings.xml @@ -0,0 +1,237 @@ + + + Adresse + L’action a échoué + Existe déjà + Anti-fonctionnalités + Compilé pour le débogage + Noir + Impossible de trouver cette application + Courriel de l’auteur + Site web de l’auteur + Explorer + Traqueur de bogues + Annuler + Impossible de modifier le dépôt car il est en cours de synchronisation. + Journal des modifications + Changements + Vérification du dépôt… + Confirmation + Connexion… + Contient des médias non libres + Impossible de synchroniser %s + Sombre + Supprimer + Supprimer le dépôt \? + Description + Détails + Faire un don + Téléchargé %s + Téléchargement en cours + Téléchargement %s… + Modifier le dépôt + Format de fichier non valide. + Empreinte + Licence %s + Lancer + Adresse invalide + Installer + Ignorer toutes les nouvelles versions + Ignorer cette version + Autorisations + +%d plus + Paramètres + Ouvrir %s \? + OK + + %d application a une nouvelle version. + %d applications avec de nouvelles versions. + %d applications avec de nouvelles versions. + + Aucune application disponible + Liens + Nom + Erreur réseau + Jamais + Nouvelles versions des applications disponibles + Suit ou signale votre activité + Le code source n’est plus disponible + Suggérée + Synchroniser les dépôts + Code source + Taille + Ignorer + Captures d’écran + Chercher + Sélectionnez un miroir + Partager + Afficher plus + Enregistrer + Enregistrement des détails… + Récemment mis à jour + Dépôts + Inconnu + Toujours + Application + Version + Version %s + Versions + En attente du lancement du téléchargement… + Quoi de neuf + Site web + Mettre à jour + Mises à jour + Non vérifié + Inconnu : %s + Erreur inconnue. + Ajouter un dépôt + Toutes vos applications sont à jour + Dépôt + Promeut des services réseau non libres + Promeut des logiciels non libres + Toutes les applications + Appuyez pour installer. + Fourni par %s + Site web du projet + Impossible de télécharger %s + Thème + Désinstaller + Impossible de valider %s + Système + Cible + Mot de passe manquant + Crédits + Thèmes + Clair + Versions incompatibles + Afficher les versions d’applis incompatibles avec l’appareil + Licence + Mot de passe + Présente des failles de sécurité + Lien copié + Version incompatible + Contient des annonces + Réponse du serveur non valide. + Proxy HTTP + Fonctionnalités manquantes. + Cette version est plus ancienne que celle qui est installée sur votre appareil. Désinstallez-la d’abord. + Afficher une notification quand de nouvelles versions sont disponibles + Ce dépôt n’a pas encore été utilisé. Activez-le pour voir les applications qu’il contient. + Aucune application installée + Non signé. Impossible de vérifier la liste d’applis. Soyez prudents lorsque vous téléchargez des applis de dépôts non signés. + Dépend d’applications qui ne sont pas libres + La version maximale de l’API est %d. + La version minimale de l’API est %d. + Votre plateforme %1$s n’est pas prise en charge. Plateformes prises en charge : %2$s. + Cette version est signée avec un certificat différent de celle installée sur votre appareil. Désinstallez-la d’abord. + Incompatible avec %s + Types d’installation + Installé + Métadonnées invalides. + Permissions invalides. + Signature invalide. + Format du nom d’utilisateur non valide + Aucune description disponible + Impossible de trouver de telles applications + Aucun proxy + Notifier les mises à jour + Nombre d’applications + Compatible seulement avec %s + Seulement avec Wi-Fi + Autre + Proxy + Adresse du proxy + Port du proxy + Type de proxy + Installation silencieuse + Autoriser la permission de l’utilisateur root pour les installations silencieuses + Afficher les versions plus anciennes + Signature %s + Signé avec un algorithme qui n’est pas sécurisé + Proxy SOCKS + Synchroniser les dépôts automatiquement + Synchronisation en cours + Synchronisation de %s en cours… + Non-signé + Mises à jour instables + Le code source n’est pas entièrement libre + Nom d’utilisateur + Nom d’utilisateur manquant + L’index n’a pas pu être validé. + Votre %1$s (API version %2$d) n’est pas pris en charge. %3$s + Impossible de vérifier l’intégrité. + Format d’empreinte digitale non valide + Animations de listes + Traitement de %1$s… + Impossible d’analyser le fichier d’index. + Fusionner %s + Afficher l’animation de la liste sur la page principale + Ordre de tri + Requiert %s + Suggérer l’installation de versions instables + Langue + Personnalisation + Afficher moins + Le plus récent + Trier et filtrer + Nouvelles applications + Explorer + Tout mettre à jour + Applications installées + Installateur de session + Installateur hérité + Installateur + Installateur racine + Installateur Shizuku + Intervalle de nettoyage APK + Période de vérification et de suppression des fichiers téléchargés + + Jour + Journées + Journées + + + Heure + Heures + Heures + + Uniquement sur Wi-Fi et charge + Impossible d’effectuer certaines actions. + Vous n’avez pas de connexion internet + Autoriser l\'expansion et la réduction de la barre supérieure de l\'appli + Autoriser l\'expansion de la barre supérieure de l\'appli + Utiliser le thème couleur Material You + Material You + Favoris + Dépôt inaccessible + Nettoyage forcer + Nettoyer les fichiers redondants + Activer le dépôt + Installation + Redémarrez LeOS-Droid pour voir les changements + En attente du démarrage de l\'installation… + Mise à jour automatique des applis + Essayez d\'installer les mises à jour automatiquement + A des composants non libres + Le serveur n\'a pas fourni de nouveau paquet. + Impossible de se connecter au serveur + Shizuku n\'est pas en fonction + Shizuku n\'est pas installé + Contient des contenus non adaptés pour le travail + Crédits spéciaux + Balayage de l\'écran d\'accueil + Permettre à l\'utilisateur de passer d\'une page à l\'autre dans l\'écran d\'accueil + Copie + Le dépôt suivant n\'a pas été trouvé + Le port proxy ne peut être qu\'un entier + Importer les paramètres + Import/Export + Importer les paramètres et favoris à partir d\'un fichier + Exporter les paramètres + Exporter tous les dépôts vers un fichier + Importer les dépôts + Exporter les paramètres et favoris vers un fichier + Exporter les dépôts + Importer tous les dépôts à partir d\'un fichier + Impossible d\'ouvrir le lien + \ No newline at end of file diff --git a/core/common/src/main/res/values-gl/strings.xml b/core/common/src/main/res/values-gl/strings.xml new file mode 100644 index 0000000..4437fea --- /dev/null +++ b/core/common/src/main/res/values-gl/strings.xml @@ -0,0 +1,216 @@ + + + Acción errada + Todas as túas aplicacións estopanse o día + Sempre + Sitio web do autor + Engadir repositorio + Enderezo + Rastreador de erros + Cancelar + Non se pode editar o repositorio xa que se está sincronizando agora mesmo. + Rexistro de cambios + Cambios + Comprobando o repositorio… + APK cleanup interval + Period to check and remove downloaded files + Compilado para a depuración + Confirmación + Conectando… + Contén medios non ceibes + Non se puido descargar %s + Non se puido sincronizar %s + Créditos + Escuro + + Día + Días + + Eliminar + Queres eliminar o repositorio\? + Descrición + Descargado %s + Baixando + Baixando %s… + Instalar + Formato de impresión dixital non válido + Licenza %s + Claro + A ligazón copiouse no portapapeis + Ligazóns + Lista de animacións + Mostra a animación da lista na páxina principal + Fusionando %s + Nome + Erro na rede + Xamáis + Novas versións das aplicacións dispoñibles + + %d aplicación ten unha nova versión. + %d aplicacións con versións novas. + + Non hai aplicacións dispoñibles + Non hai aplicacións instaladas + Non ten descrición dispoñible + Non se puido atopar ningunha aplicación deste tipo + Sen proxy + Notificar sobre novas versións das aplicacións + Número de aplicacións + Abrir %s\? + Outra + Non se puido analizar o ficheiro de índice. + Contrasinal + Falta o contrasinal + Permisos + +%d máis + Configuración + Procesando %1$s… + Páxina web do proxecto + Promove servizos de rede non gratuítos + Proporcionado por %s + Host proxy + Porto proxy + Tipo de proxy + Actualizado recentemente + Repositorios + Repositorio + Este repositorio aínda non se utilizou. Accéndeo para ver as aplicacións nel. + Require %s + Capturas de pantalla + Procurar + Seleccione un espello + Compartir + Mostrar máis + Sinatura %s + Asinado mediante un algoritmo non seguro + Tamaño + Saltar + Proxy SOCKS + Suxerido + Sincronizar repositorios + Sincronizar repositorios automaticamente + Sincronización + Sistema + Obxectivo + Tema + Temas + Rastrexa ou informa da túa actividade + Desinstalar + Descoñecido + Erro descoñecido. + Descoñecido: %s + Actualizacións inestables + Sen verificar + Actualizar + Actualizacións + O código fonte non é ceibe + Nome de usuario + Non se atopa o nome de usuario + Versión %s + Versións + Agardando para comezar a descarga… + Que hai de novo + Páxina web + Lingua + Personalización + Mostrar menos + Derradeiro + Explora + Actualiza todo + Aplicacións instaladas + Ordear e filtrar + Novas aplicacións + Todas as aplicacións + Negro + Xa existe + Correo electrónico do autor + Anti-características + Aplicacions + Explorar + Versión non valida + Non se puido atopar esa aplicación + Non se puido validar %s + Detalles + Resposta do servidor non válida. + Instalado + Doar + Editar fonte + Formato do ficheiro non válido. + Ten publicidade + Ten dependencias non ceives + + Hora + Horas + + Proxy HTTP + Ten vulnerabilidades de seguridade + Pegada dixital + Ignora esta versión + Faltan funcións. + Ignorar todas as novas versións + A tua %1$s (versión da API %2$d) non é compatible. %3$s + Esta versión é máis antiga que a instalada no teu dispositivo. Desinstala iso primeiro. + A túa plataforma %1$s non é compatible. Plataformas compatibles: %2$s. + Lanzamento + A versión máxima da API é %d. + A versión mínima da API é %d. + Versións non validas + Mostra versións de aplicacións incompatibles co dispositivo + Incompatible con %s + Tipos de instalación + Instalador + Instalador de sesións + Instalador raíz + Instalador Shizuku + Esta versión está asinada cun certificado diferente ao instalado no teu dispositivo. Desinstala iso primeiro. + Instalador Legado + Non se puido comprobar a integridade. + Enderezo non válido + Permisos non válidos. + Sinatura non válida. + Formato do nome do usuario non válido + Metadatos errados. + Licenza + Promove o software non libre + Ok + Mostra unha notificación cando hai novas versións dispoñibles + Só compatible con %s + Só con wifi + Só con wifi e carga + Proxy + Instalación silenciosa + Permitir permiso de root para instalacións silenciosas + Sen asinar. Non se puido verificar a lista de solicitudes. Teña coidado ao descargar aplicacións desde repositorios sen asinar. + Gardar + Orde de clasificación + O código fonte xa non está dispoñible + Sincronizando %s… + Gardando detalles… + Mostrar versións antigas + Código fonte + Preme para instalar. + Sen asinar + Suxire instalar versións inestables + Non se puido validar o índice. + Versión + Non se poden realizar determinadas accións. + Non tes conexión a internet + Permitir ca barra das aplicacións superior se amplíe + Permitir cas barras das aplicacións superior se amplíe e contraiga + Material You + Usalo material que coloree o tema + Favoritas + Repositorio inalcanzable + Limpa ficheiros redundantes + Forzala limpeza + Activalo repositorio + Instalando + Reinicia LeOS-Droid para velos cambios + Agardando para iniciala instalación… + Actualizacións automática das aplicacións + Tenta instalar actualizacións automaticamente + Importalos axustes + Importación/exportación + Importalos axustes e favoritos dende un fixeiro + Non se pode abrir a ligazón + \ No newline at end of file diff --git a/core/common/src/main/res/values-hi/strings.xml b/core/common/src/main/res/values-hi/strings.xml new file mode 100644 index 0000000..f285773 --- /dev/null +++ b/core/common/src/main/res/values-hi/strings.xml @@ -0,0 +1,234 @@ + + + कार्य असफल + पता + रिपोसिट्री जोड़ें + रिपोसिट्री एडिट नहीं कर सकते क्योंकि वह अभी सिंक्रनाइज़ हो रही है। + हमेशा + %s सिंक्रनाइज़ नहीं हो सका + कनेक्ट हो रहा है… + %s मान्य नहीं हो सका + सभी एप्लीकेशन + आपके सभी एप्लीकेशन नवीनतम हैं + पहले से ही मौजूद है + काला + विरोधी-विशेषताएं + एप्लीकेशन + ऑथर वेबसाइट + उपलब्ध + बग ट्रैकर + रद्द करें + बदलाव सूची + बदलाव + रिपोसिट्री की जाँच की जा रही है… + डीबॅग करने के लिए कम्पाईल किया + पुष्टीकरण + गैर-नि: शुल्क मीडिया शामिल है + %s डाउनलोड नहीं कर सका + वह एप्लीकेशन नहीं मिली + ऑथर ई-मेल + श्रेय + गहरा + हटाएं + रिपोसिट्री हटाएं\? + विवरण + उल्लेख + डोनेट + %s डाउनलोड किया + डाउनलोड हो रहा है + डाउनलोड हो रहा है %s… + रिपोसिट्री एडिट करें + अमान्य फाइल प्रारूप। + फिंगरप्रिंट + विज्ञापन हैं + अधिकतम API वर्शन %d है। + न्यूनतम API वर्शन %d है। + नामौजूद विशेषताएं। + इसमें सुरक्षा कमजोरियां हैं + अमान्य सर्वर प्रतिक्रिया। + HTTP प्रॉक्सी + सभी नए वर्शन पर ध्यान न दें + इस वर्शन पर ध्यान न दें + आपका %1$s (API वर्शन %2$d) सपोर्टेड नहीं है। %3$s + यह वर्शन आपके डिवाइस पर इंस्टॉल किए गए वर्शन से पुराना है। पहले उसे अनइंस्टॉल कर दें। + आपका %1$s प्लेटफॉर्म सपोर्टेड नहीं है। सपोर्टेड प्लैटफ़ॉर्म: %2$s. + गैर-मुक्त निर्भरताएँ हैं + यह संस्करण आपके डिवाइस पर इंस्टॉल किए गए प्रमाणपत्र से भिन्न प्रमाणपत्र के साथ हस्ताक्षरित है। उसे पहले अनइंस्टॉल करें। + असंगत संस्करण + डिवाइस के साथ असंगत एप्लिकेशन संस्करण दिखाएं + %s . के साथ असंगत + स्थापित करें + स्थापना प्रकार + अनुचित संस्करण + केवल वाई-फ़ाई पर + %s को खोले\? + इस रिपॉजिटरी का अभी तक उपयोग नहीं किया गया है। इसमें एप्लिकेशन देखने के लिए इसे चालू करें। + सहेजें + साइलेंट इंस्टाल के लिए रूट अनुमति दें + स्क्रीनशॉट + ब्यौरा सहेजा जा रहा है… + छोड़ें + सिंक्रनाइज़ किए जा रहे + %s समन्वयित किया जा रहा है… + व्यवस्था + स्थापित करने के लिए टैप करें। + अपस्ट्रीम सोर्स कोड फ्री नहीं है + अपडेट्स + संस्करण + %s संस्करण + संस्करणों + पर्सनलाइजेशन + भाषा + कम दिखाएं + नए एप्लीकेशंस + इंस्टालर + लीगेसी इंस्टालर + सत्र इंस्टॉलर + रूट इंस्टालर + शिज़ुकु इंस्टालर + स्थापित + अखंडता की जांच नहीं कर सका। + अमान्य मेटाडेटा. + अमान्य अनुमतियां। + अमान्य हस्ताक्षर। + अमान्य उपयोगकर्ता नाम प्रारूप + लांच करें + लाइसेंस + %s लाइसेंस + हल्की + लिंक कॉपी किया गया + एनिमेशन की सूची दिखाए + मुख्य पृष्ठ पर एनीमेशन की सूची दिखाएं + %s . को मर्ज कर रहा है + नाम + नेटवर्क त्रुटि + कभी नहीँ + लिंक्स + एप्लिकेशनस के नए संस्करण उपलब्ध हैं + कोई उपलब्ध एप्लिकेशन नहीं + ऐसा कोई एप्लिकेशन नहीं मिला + कोई प्रॉक्सी नहीं + + %d एप्लिकेशन का एक नया संस्करण है। + %d एप्लीकेशंस के नए संस्करण हैं। + + अपडेटस के बारे में सूचित करें + नए संस्करण उपलब्ध होने पर सूचना दिखाएं + अप्लिकेशन संख्या + ठीक है + केवल %s . के साथ संगत + अनुक्रमणिका फ़ाइल को पार्स नहीं कर सका। + पासवर्ड + पासवर्ड गायब + अनुमतियां + +%d अधिक + सेटिंग + %1$s संसाधित किया जा रहा है… + परियोजना वेबसाइट + गैर-मुक्त नेटवर्क सेवाओं को बढ़ावा देता है + गैर-मुक्त सॉफ़्टवेयर को बढ़ावा देता है + प्रॉक्सी होस्ट + प्रॉक्सी पोर्ट + प्रॉक्सी + प्रॉक्सी प्रकार + हाल ही में अपडेट किया + रिपॉजिटरी + %s . की आवश्यकता है + खोज + शेयर + और दिखाओ + पुराने संस्करण दिखाएं + रिपोजिटरीज + एक मिरर चुनें + %s हस्ताक्षर + असुरक्षित एल्गोरिथम का उपयोग करके हस्ताक्षर किए गए + आकार + सॉक्स प्रॉक्सी + सोर्स कोड + स्रोत कोड अब उपलब्ध नहीं है + सॉर्टिंग क्रम + सुझाव + सिंक रिपॉजिटरी + रिपोजिटरी स्वचालित रूप से सिंक्रनाइज़ करें + लक्ष्य + थीम + स्थापना रद्द करें + अनजान + अज्ञात त्रुटि। + अज्ञात: %s + अहस्ताक्षरित + अस्थिर संस्करण स्थापित करने का सुझाव दें + अपडेट + उपयोगकर्ता नाम + उपयोगकर्ता नाम अनुपलब्ध + रूपरंग + डाउनलोड शुरू होने की प्रतीक्षा की जा रही है… + नया क्या है + वेबसाइट + नवीनतम + इंस्टॉल किए गए एप्लिकेशन + सभी अपडेट करें + एक्सप्लोर करें + कोई इंस्टॉल किए गए एप्लिकेशंनस नहीं + गलत पता + अमान्य फ़िंगरप्रिंट प्रारूप + कोई विवरण उपलब्ध नहीं + अस्थिर अद्यतन + अन्य + अहस्ताक्षरित। आवेदन सूची का सत्यापन नहीं किया जा सका। अहस्ताक्षरित रिपॉजिटरी से एप्लिकेशन डाउनलोड करने में सावधानी बरतें। + %s . द्वारा प्रदान किया गया + साइलेंट इंस्टाल + आपकी गतिविधि को ट्रैक या रिपोर्ट करता है + अनुक्रमणिका सत्यापित नहीं की जा सकी। + असत्यापित + छाँटें और फ़िल्टर करें + एपीके सफाई अंतराल + डाउनलोड की गई फ़ाइलों को जांचने और निकालने की अवधि + केवल वाई-फ़ाई व च्राजिंग पर + + दिन + दिन + + + घंटा + घंटे + + कुछ क्रियाएं करने में असमर्थ। + आपका इंटरनैट कनेक्शन चालू नहीं है + टॉप ऐप बार को विस्तृत होने दें + टॉप ऐप बार को विस्तृत और संक्षिप्त होने दें + पसंदीदा + जबरी साफ करो + अनावश्यक फाइलों को साफ करता है + रिपॉजिटरी तक पहुंच नहीं + मटीरियल यू + मटीरियल यू रंग थीम का प्रयोग करें + स्थापना प्रारंभ करने की प्रतीक्षा की जा रही है… + ऐप्स को ऑटो अपडेट करें + अपडेटस को स्वचालित रूप से इंस्टॉल करने का प्रयास करें + रिपॉजिटरी को सक्षम करें + बदलाव देखने के लिए LeOS-Droid को रीस्टार्ट करें + इंस्टॉल कर रहा है + गैर-मुक्त घटक हैं + सर्वर नया पैकेट प्रदान करने में विफल रहा। + सर्वर से कनेक्ट नहीं हो सका + इसमें कार्य के लिए असुरक्षित सामग्री है + Shizuku नहीं चल रहा है + Shizuku इंस्टाल नहीं है + विशेष श्रेय + होम स्क्रीन स्वाइपिंग + उपयोगकर्ता को होम स्क्रीन में पृष्ठों के बीच स्वाइप करने की अनुमति दें + कापी करें + प्रॉक्सी पोर्ट केवल पूर्णांक हो सकता है + निम्नलिखित रिपॉजिटरी नहीं मिली + आयात सेटिंग्स + आयात निर्यात + फ़ाइल से सेटिंग्स और पसंदीदा आयात करें + निर्यात सेटिंग्स + फ़ाइल में सभी रिपॉजिटरी निर्यात करें + रिपॉजिटरी आयात करें + सेटिंग्स और पसंदीदा फ़ाइल में निर्यात करें + रिपॉजिटरीआं निर्यात करें + फ़ाइल से सभी रिपॉजिटरी आयात करें + लिंक नहीं खुल सका + \ No newline at end of file diff --git a/core/common/src/main/res/values-hr/strings.xml b/core/common/src/main/res/values-hr/strings.xml new file mode 100644 index 0000000..a3c2b6d --- /dev/null +++ b/core/common/src/main/res/values-hr/strings.xml @@ -0,0 +1,236 @@ + + + Ova inačica je starija od one instalirane na Vašem uređaju. Potrebno je deinstalirati onu inačicu na Vašem uređaju kako biste mogli instalirati ovu. + Inačice nisu kompatibilne + Prikaži inačice aplikacije koje nisu kompatibilne s mojim uređajem + Zastarjeo instalacijski program + Instalacijski program sesije + Instalacijski program u Root načinu + Instalacijski program Shizuku + Neispravni metapodaci. + Licenca + Nije moguće provjeriti integritet. + Poveznice + Novije inačice aplikacija su dostupne + Neispravan oblik otiska + Neispravne dozvole. + %s licenca + Svijetlo + Poveznica je kopirana + Opis nije dostupan + Nema instaliranih aplikacija + Nije moguće pronaći slične aplikacije + Bez proxy + Obavijesti za ažuriranja + Samo na Wi-Fi mreži + Samo na Wi-Fi mreži i tijekom Punjenja + Zaporka + Postavke + Promovira mrežne usluge koje nisu besplatne + Još niste koristili ovaj repozitorij. Omogućite ga kako biste vidjeli aplikacije koje sadrži. + Prikaži starije inačice + Nije potpisano. Nemoguće potvrditi liste aplikacija. Budite oprezni prilikom preuzimanja aplikacija s nepotpisanih repozitorija. + SOCKS proxy + Omogućite root dozvole kako bi neometana instalacija funkcionirala + Prati i prijavljuje Vašu aktivnost + Nepoznato: %s + Prikaži više + Potpis %s + Nepotpisano + Potpisano nesigurnosnim algoritmom + Veličina + Preskoči + Način sortiranja + Sinkronizacija %s… + Teme + Predloži instalaciju nestabilnih inačica + Korisničko ime + Inačica + Index nije bilo moguće potvrditi. + Inačice + Internet stranica + Inačica %s + Prilagodba + Dodaj repozitorij + Web adresa + Već postoji + Uvijek + Crna + Anti-značajke + Aplikacija + Nije bilo moguće pronaći tu aplikaciju + E-mail adresa autora + Web stranica autora + Alat za praćenje grešaka + Otkaži + Nije moguće urediti repozitorij jer je u tijeku njegova sinkronizacija. + Popis promjena + Promjene + Provjeravam repozitorij… + APK interval čišćenja + Razdoblje za provjeru i uklanjanje preuzetih datoteka + Stvoreno za ispravljanje pogrešaka + Povezujem… + Sadrži medije koji nisu besplatni + Nemoguće preuzeti %s + Nemoguće sinkronizirati %s + Nemoguće potvrditi ispravnost %s + Zasluge + Tamno + + Dan + Dana + Dana + + Opis + Preuzimanje %s… + Neispravan oblik datoteke. + Otisak + Sadrži reklame + Sadrži ovisnosti koje nisu besplatne + + Sat + Sati + Sati + + Zanemari sve novije inačice + Vaš %1$s (API inačica %2$d) nije podržana. %3$s + Najnovije moguća inačica API-ja je %d. + Najstarije moguća inačica API-ja je %d. + Vaša %1$s platforma nije podržana. Podržane platforme: %2$s. + Ova inačica je potpisana drukčijim certifikatom u odnosu na onu instaliranu na Vašem uređaju. Izbrišite ju kako biste mogli instalirati ovu inačicu. + Inačica nije kompatibilna + Nije kompatibilno s %s + Instaliraj + Načini Instalacije + Instalirano + Neispravna web adresa + Neispravan potpis. + Neispravan oblik korisničkog imena + Pokreni + Animacije popisa + Prikaži animacije popisa na početnoj stranici + Stapanje %s + Naziv + Mrežna greška + + %d aplikacija ima noviju inačicu. + %d aplikacije imaju novije inačice. + %d aplikacije imaju novije inačice. + + Prikaži obavijest kada nove inačice postanu dostupne + Broj aplikacija + U redu + Kompatibilno samo s %s + Otvoriti %s\? + Ostalo + Nemoguće otvoriti index datoteku. + Nedostaje zaporka + Dozvole + +%d više + Procesiramb%1$s… + Web stranica projekta + Promovira program koji nije besplatan + Omogućio/la %s + Proxy + Proxy poslužitelj + Proxy priključak + Proxy vrsta + Nedavno ažurirano + Repozitoriji + Repozitorij + Potrebno %s + Neometana instalacija + Spremi + Spremam detalje… + Snimke zaslona + Traži + Odaberite poslužitelj + Podijeli + Izvorni kod + Izvorni kod više nije dostupan + Predloženo + Sinkroniziraj repozitorije + Automatski sinkroniziraj repozitorije + Sinkroniziram + Sistem + Kliknite kako biste instalirali. + Cilj + Tema + Deinstaliraj + Nepoznato + Nepoznata greška. + Nestabilna ažuriranja + Nepotvrđeno + Ažuriraj + Ažuriranja + Glavni izvorni kod nije besplatan + Nedostaje korisničko ime + Čekam na pokretanje preuzimanja… + Što je Novo + Jezik + Prikaži manje + Najnovije + Otkrij + Ažuriraj sve + Instalirane aplikacije + Sortiraj i filtriraj + Sve Vaše aplikacije su ažurne + Nove aplikacije + Radnja neuspjela + Sve aplikacije + Otkrij + Izbriši + Doniraj + Preuzimanje + Potvrda + Uredi repozitorij + Izbrisati repozitorij\? + Zanemariraj ovu inačicu + Detalji + Instalacijski program + Preuzeto %s + Značajke koje nedostaju. + Nema dostupnih aplikacija + Sadrži sigurnosne probleme + Neispravan odgovor poslužitelja. + HTTP proxy + Nikad + Nije moguće izvršiti određene radnje. + Nemate internetsku vezu + Dozvoli rasklapanje i sklapanje gornje trake aplikacije + Dozvoli rasklapanje gornje trake aplikacije + Instaliranje + Material You + Upotrijebite Material You temu boja + Favoriti + Omogućite repozitorij + Prisiliti + Čisti suvišne datoteke + Repozitorij je nedostupan + Automatsko ažuriranje aplikacija + Pokušajte automatski instalirati ažuriranja + Ponovo pokrenite droid-ify da biste vidjeli promjene + Čekajući da započnete instalaciju … + Sadrži komponente koje nisu besplatne + Nije bilo moguće spojiti se s poslužiteljem + Poslužitelj nije uspio dostaviti novi paket. + Prevlačenje početnim zaslonom + Sadrži sadržaj koji nije siguran za rad + Shizuku nije pokrenut + Kopiraj + Proxy port može biti samo cijeli broj + Dopušta korisniku da prelazi između stranica na početnom zaslonu + Sljedeći repozitorij nije pronađen + Posebne zasluge + Shizuku nije instaliran + Uvezi postavke + Uvezi/Izvezi + Uvezi postavke i favorite iz datoteke + Izvezi postavke + Izvezi sve repozitorije u datoteku + Uvezi repozitorije + Izvezi postavke i favorite u datoteku + Izvezi repozitorije + Uvezi sve repozitorije iz datoteke + \ No newline at end of file diff --git a/core/common/src/main/res/values-hu/strings.xml b/core/common/src/main/res/values-hu/strings.xml new file mode 100644 index 0000000..32383dd --- /dev/null +++ b/core/common/src/main/res/values-hu/strings.xml @@ -0,0 +1,224 @@ + + + Művelet sikertelen + Tároló hozzáadása + Cím + Összes alkalmazás + Fekete + Köszönet + Adományozás + Telepítési típusok + Listaanimációk + + %d alkalmazásnak új verziója van. + %d alkalmazásnak új verziója van. + + Beállítások + Nemrég frissített + Néma telepítés + Engedélyezze a rendszergazdai jogosultságot a néma telepítés érdekében + Megosztás + Méret + Cél + Témák + Frissítések + Verzió + Újdonságok + Nyelv + Az összes alkalmazása naprakész + Már létezik + Mindig + Előnytelen funkciók + Alkalmazás + Az alkalmazás nem található + Szerző e-mail-címe + Szerző weboldala + Elérhető + Hibakövető + Mégse + A tároló most nem szerkeszthető, mert épp szinkronizál. + Változásnapló + Változások + Hibakereséshez fordítva + Megerősítés + Nem szabad médiát tartalmaz + Nem tölthető le: %s + Nem szinkronizálható: %s + Nem ellenőrizhető: %s + Sötét + Törlés + Biztos, hogy törli a tárolót\? + Leírás + Részletek + %s letöltve + Letöltés + Tároló szerkesztése + Ujjlenyomat + Reklámot tartalmaz + Nem szabad függőségei vannak + Biztonsági sérülékenységei vannak + Érvénytelen kiszolgálóválasz. + HTTP proxy + Összes új verzió mellőzése + Ezen verzió mellőzése + A következő verzió nem támogatott: %1$s (API verzió: %2$d). %3$s + A maximális API verzió: %d. + A minimális API verzió: %d. + Hiányzó funkciók. + Nem kompatibilis verzió + Nem kompatibilis verziók + Az eszközzel nem kompatibilis alkalmazásverziók megjelenítése + Nem kompatibilis ezzel: %s + Telepítés + Telepítve + Az épségének ellenőrzése sikertelen. + Érvénytelen cím + Érvénytelen ujjlenyomat-formátum + Érvénytelen metaadatok. + Érvénytelen engedélyek. + Érvénytelen aláírás. + Érvénytelen felhasználónév-formátum + Indítás + Licenc + %s licenc + Világos + Hivatkozás másolva + Hivatkozások + Egyesítés: %s + Név + Hálózati hiba + Soha + Új alkalmazásverziók érhetők el + Nem érhetők el alkalmazások + Nincsenek telepített alkalmazások + Nem érhető el leírás + Nem találhatók ilyen alkalmazások + Nincs proxy + Értesítés a frissítésekről + Értesítés megjelenítése, ha új verziók érhetők el + Alkalmazások száma + OK + Csak ezzel kompatibilis: %s + Csak Wi-Fin + %s megnyitása\? + Egyéb + Az indexfájl nem értelmezhető. + Jelszó + Hiányzik a jelszó + Engedélyek + +%d további + Projekt weboldala + Nem szabad hálózati szolgáltatásokat támogat + Nem szabad szoftvereket támogat + Szállító: %s + Proxy + Proxy kiszolgáló + Proxy port + Proxy típus + Tárolók + Tároló + Szükséges: %s + Mentés + Képernyőképek + Keresés + Válasszon egy tükröt + Továbbiak megjelenítése + Régebbi verziók megjelenítése + Aláírás: %s + Nem biztonságos algoritmussal aláírva + Kihagyás + SOCKS proxy + Rendezési sorrend + Forráskód + A forráskód már nem érhető el + Javasolt + Tárolók szinkronizálása + Tárolók automatikus szinkronizálása + Szinkronizálás + Rendszer + Koppintson a telepítéshez. + Téma + Követi vagy jelenti a tevékenységét + Eltávolítás + Ismeretlen + Ismeretlen hiba. + Ismeretlen: %s + Nem aláírt + Nem stabil frissítések + Nem stabil verziófrissítések javaslata + Nem ellenőrzött + Frissítés + Az upstream forráskód nem szabad + Felhasználónév + Hiányzik a felhasználónév + Az index nem ellenőrizhető. + Verzió: %s + Verziók + Weboldal + Listaanimációk megjelenítése a főoldalon + Érvénytelen fájlformátum. + Testreszabás + Kapcsolódás… + Tároló ellenőrzése… + %s letöltése… + Ez a verzió régebbi mint az eszközre telepített. Előbb távolítsa el azt. + A platform nem támogatott: %1$s. Támogatott platformok: %2$s. + Részletek mentése… + Várakozás a letöltés elindítására… + Ez a verzió a jelenleg az eszközére telepített verziójától eltérő tanúsítvánnyal rendelkezik. Előbb távolítsa el azt. + %1$s feldolgozása… + %s szinkronizálása… + Ez a tároló még nem volt használva. Kapcsolja be, hogy megtekintse a benne lévő alkalmazásokat. + Nincs aláírva. Nem sikerült ellenőrizni az alkalmazáslistát. Legyen óvatos amikor nem aláírt tárolókból tölt le alkalmazásokat. + Kevesebb megjelenítése + Rendezés és szűrés + Csak Wi-Fin és töltés közben + Felfedezés + Összes frissítése + Telepített alkalmazások + Új alkalmazások + A telepítő + Hagyományos telepítő + Munkamenet-alapú telepítő + Rendszergazdai telepítő + Shizuku telepítő + Legújabb + APK takarítás időköze + Letöltött fájlok ellenőrzésének és törlésének időköze + + óra + óra + + + nap + nap + + Felső alkalmazássáv kibontása + Bizonyos műveletek végrehajtása sikertelen. + Felső alkalmazássáv kibontása és összecsukása + Nincs internet-hozzáférés + Próbálja automatikusan telepíteni a frissítéseket + Telepítés… + Indítsa újra a LeOS-Droid-t a változások megtekintéséhez + Várakozás a telepítés megkezdésére … + Kedvencek + Eltakarítja a redundáns fájlokat + Kényszerített takarítás + Material You + A tároló elérhetetlen + Alkalmazások automatikus frissítése + A tároló engedélyezése + A Material You színtéma használata + Nem szabad összetevői vannak + Kezdőképernyő lapozása + Érzékeny tartalmat tartalmaz + A Shizuku nem fut + Nem sikerült kapcsolódni a kiszolgálóhoz + A kiszolgáló nem tudott új csomagot biztosítani. + Másolás + A proxy portja csak egész szám lehet + Engedélyezés, hogy a felhasználó lapozzon a kezdőképernyő lapjai közt + A következő tároló nem található + Külön köszönet + A Shizuku nincs telepítve + \ No newline at end of file diff --git a/core/common/src/main/res/values-ia/strings.xml b/core/common/src/main/res/values-ia/strings.xml new file mode 100644 index 0000000..c1d5467 --- /dev/null +++ b/core/common/src/main/res/values-ia/strings.xml @@ -0,0 +1,169 @@ + + + Non es possibile discargar %s + Falleva le action + Essayar le installation de actualisationes automaticamente + Tote le applicationes es actualisate + + Die + Dies + + Connectente… + Description + Tote le applicationes + Deler + Actualisation automatic de applicationes + Jam existe + Application + Sempre + Adresse + Obscur + Cancellar + Nigre + Deler le repositorio\? + Adder repositorio + Creditos + Actualisationes + Actualisar toto + Non signate + Necun applicationes installate + Discargante + Explorar + Monstrar un notification quando il ha nove versiones disponibile + Nove versiones de applicationes disponibile + Incognite + Repositorio inaccessibile + Actualisation + Installate + Applicationes installate + Repositorio + Suggerer le installation de versiones instabile + Personalisation + Disinstallar + %s discargate + Recentemente actualisate + Modificar repositorio + Ignorar iste version + Non verificate + Lingua + Error incognite. + Themas + Formato de file non valide. + + %d application ha un nove version. + %d applicationes con nove versiones. + + Activar le repositorio + Explorar + Verificante repositorio… + Systema + Notificar le actualisationes + Shizuku non es installate + Actualisationes instabile + Ignorar tote le nove versiones + Discargante %s… + Incognite: %s + Dimension + Le codice fonte jam non es disponibile + Thema + Codice fonte + Parametros + Sito web + Nomine de usator + Version %s + Version + Nove applicationes + Tocca pro installar. + Versiones + Le plus recente + Licentia %s + Salvar + Usar le thema de color Material You + Parametros de importation + Tu %1$s (version de API %2$d) non es supportate. %3$s + Contrasigno + Favoritos + Importar/Exportar + Anti-functionalitates + Suggestiones + Permissiones + Ha dependentias non libere + Monstrar plus + Necun applicationes disponibile + Material You + Nomine + Clar + Importar parametros e favoritos ab un file + Require %s + Ha vulnerabilitates de securitate + Alteres + Ligamine copiate + Copiar + Parametros de exportation + Numero de applicationes + Error de rete + Licentia + Exportar tote le repositorios a un file + Importar le repositorios + Capturas de schermo + Sito web del autor + Detalios + Proxy HTTP + Necun description disponibile + Ligamines + Contine publicitate + Permissiones non valide. + Exportar parametros e favoritos a un file + Sito web del projecto + Facer un donation + Exportar repositorios + Nunquam + e-mail del autor + Importar tote le repositorios ab un file + Creditos special + Compartir + Non poteva trovar ille application + Repositorios + +%d plus + Solmente con Wi-Fi + Aperir %s? + Proxy SOCKS + Solmente compatibile con %s + OK + Tu non ha connexion a Internet + Ignorar + Salvante detalios… + Necun proxy + Typos de installation + Typo de proxy + Monstrar minus + Installar + Monstrar le versiones ancian + + Installante + Adresse non valide + Ordinar e filtrar + Novitates + Lancear + Le codice fonte non es libere + Proxy + Installator de session + Version incompatibile + + Hora + Horas + + Synchronisar repositorios automaticamente + Synchronisar repositorios + Installator + Synchronisante %s… + Responsa de servitor non valide. + Attendente pro le initio del discargamento… + Attendente pro le initio del installation… + Non poteva connecter al servitor + Installator Shizuku + Incompatibile con %s + Synchronisante + Versiones incompatibile + Monstrar versiones de application incompatibile con le apparato + \ No newline at end of file diff --git a/core/common/src/main/res/values-in/strings.xml b/core/common/src/main/res/values-in/strings.xml new file mode 100644 index 0000000..e8271da --- /dev/null +++ b/core/common/src/main/res/values-in/strings.xml @@ -0,0 +1,231 @@ + + + Perubahan + Detail + Format file tidak valid. + Tipe Pemasangan + Semua aplikasi + Memeriksa repositori… + Sudah ada + Hitam + Anti-fitur + Aplikasi + E-mail pengembang + Website pengembang + Jelajah + Pelacak bug + Batal + Tidak dapat mengedit repositori karena sedang disinkronkan sekarang. + Log Perubahan + Tindakan gagal + Semua aplikasimu sudah yang terbaru + Berisi media tidak-bebas + Tidak bisa mengunduh %s + Tidak bisa menyinkronkan %s + Kredit + Gelap + Hapus + Hapus repositori ini\? + Deskripsi + Donasi + Menghubungkan… + Berisi dependensi tidak-bebas + Berisi kerentanan keamanan + Respon server tidak valid. + Proksi HTTP + Abaikan semua versi baru + Abaikan versi ini + %1$smu (versi API %2$d) tidak didukung. %3$s + Versi API minimum adalah %d. + Versi API maksimum adalah %d. + Fitur yang hilang. + Versi ini lebih lama dari yang terpasang di perangkatmu. Copot aplikasi tersebut terlebih dahulu. + Versi ini ditandatangani dengan sertifikat yang berbeda dari yang terpasang di perangkatmu. Copot aplikasi tersebut terlebih dahulu. + Platform %1$smu tidak didukung. Platform yang didukung: %2$s. + Versi tidak kompatibel + Versi tidak kompatibel + Pemasang Sesi + Pemasang Root + Pemasang Shizuku + Terpasang + Tidak bisa memeriksa integritas. + Alamat tidak valid + Format sidik jari tidak valid + Metadata tidak valid. + Perizinan tidak valid. + Tanda tangan tidak valid. + Format nama pengguna tidak valid + Luncurkan + Lisensi + Tampilkan versi aplikasi yang tidak kompatibel dengan perangkatmu + Animasi Daftar + Tampilkan animasi daftar pada halaman utama + Menggabungkan %s + Nama + Tidak pernah + Versi baru aplikasi telah tersedia + + %d aplikasi dengan versi baru. + + Tidak ada aplikasi yang tersedia + Tidak ada aplikasi yang terpasang + Deskripsi tidak tersedia + Tidak bisa menemukan aplikasi tersebut + Tanpa proksi + Beri tahu tentang pembaruan + Tampilkan notifikasi saat versi baru telah tersedia + Jumlah aplikasi + OKE + Hanya kompatibel dengan %s + Buka %s\? + Lainnya + Tidak bisa mengurai berkas indeks. + Sandi + Perizinan + +%d lainnya + Pengaturan + Memproses %1$s… + Situs web proyek + Mempromosikan layanan jaringan tidak-bebas + Mempromosikan perangkat lunak tidak-bebas + Disediakan oleh %s + Proksi + Hos proksi + Porta proksi + Tipe proksi + Baru-baru ini diperbarui + Repositori + Repositori + Repositori ini belum digunakan. Aktifkan untuk melihat aplikasi yang tersedia. + Tanpa tanda tangan. Tidak bisa memverifikasi daftar aplikasi. Hati-hati saat mengunduh aplikasi dari repositori tanpa tanda tangan. + Membutuhkan %s + Pasang Diam-diam + Izinkan akses root untuk pemasangan secara diam-diam + Simpan + Tangkapan Layar + Tanda tangan %s + Ukuran + Lewati + Proksi SOCKS + Urutan penyortiran + Kode sumber + Kode sumber tidak lagi tersedia + Disarankan + Sinkron repositori + Menyinkronkan + Sistem + Tidak diketahui + Galat tidak diketahui. + Tidak diketahui: %s + Tanpa tanda tangan + Pembaruan tidak stabil + Sarankan memasang versi tidak stabil + Tidak terverifikasi + Pembaruan + Kode sumber upstream tidak bebas + Nama pengguna + Nama pengguna tidak ada + Indeks tidak bisa divalidasi. + Perbarui + Yang Baru + Situs Web + Bahasa + Tambah repositori + Alamat + Selalu + Terbaru + Urutan & Filter + Aplikasi baru + Tidak bisa menemukan aplikasi tersebut + Konfirmasi + Tidak bisa memvalidasi %s + Mengunduh + Pemasang Lama + Mengunduh %s… + Tanda tangan + Edit repositori + Berisi iklan + Tidak kompatibel dengan %s + Pasang + Jaringan error + Lisensi %s + Pemasang + Tautan disalin + Terang + Tautan + Hanya pada Wi-Fi + Sandi tidak ada + Tampilkan lebih banyak + Ditanda tangani menggunakan algoritma tidak aman + Menyimpan detail… + Cari + Pilih mirror + Bagikan + Tampilkan versi lama + Menyinkronkan %s… + Sinkron repositori secara otomatis + Ketuk untuk pasang. + Sasaran + Copot + Tema + Tema + Melacak atau melaporkan aktivitas Anda + Tampilkan Sedikit + Jelajahi + Versi + Versi %s + Menunggu memulai mengunduh… + Personalisasi + Versi + Perbarui semua + Aplikasi terpasang + + Hari + + + Jam + + Hanya pada Wi-Fi & Mengisi Daya + Dikompilasi untuk debugging + Tidak bisa melaksanakan tindakan tertentu. + Kamu tidak memiliki akses internet + Izinkan Bilah Atas Apl untuk Diperluas + Izinkan bilah atas aplikasi untuk diperluas dan dikecilkan + Interval pembersihan APK + Interval pengecekan dan penghapusan berkas terunduh + %s Terdownload + Favorit + Material You + Gunakan tema warna Material You + Aktifkan repositori + Paksa pembersihan + Bersihkan file tidak penting + Repositori tidak terjangkau + Memasang + Menunggu untuk memulai pemasangan… + Perbarui aplikasi secara otomatis + Cobalah untuk menginstal pembaruan secara otomatis + Ulang LeOS-Droid untuk melihat perubahan + Memiliki komponen tidak terbuka + Server gagal menyediakan paket baru. + Tidak dapat terhubung ke server + Geser Layar Beranda + Mengandung konten khusus dewasa + Shizuku tidak berjalan + Izinkan pengguna menggeser antar halaman di layar beranda + Kredit Spesial + Shizuku tidak terpasang + Salin + Porta proksi harus bilangan bulat + Repositori berikut tidak ditemukan + Impor Pengaturan + Impor/Ekspor + Impor pengaturan dan favorit dari berkas + Ekspor Pengaturan + Ekspor semua repositori ke berkas + Impor Repositori + Ekspor pengaturan dan favorit ke berkas + Ekspor Repositori + Impor semua repositori dari berkas + Tidak Bisa Membuka Tautan + \ No newline at end of file diff --git a/core/common/src/main/res/values-it/strings.xml b/core/common/src/main/res/values-it/strings.xml new file mode 100644 index 0000000..5369a43 --- /dev/null +++ b/core/common/src/main/res/values-it/strings.xml @@ -0,0 +1,238 @@ + + + Azione fallita + Aggiungi repository + Indirizzo + Tutte le applicazioni + Tutte le applicazioni sono aggiornate + Già esistente + Sempre + Nero + Anti-caratteristiche + Applicazione + Impossibile trovare quell\'applicazione + E-mail dell\'autore + Sito web dell\'autore + Esplora + Tracciamento dei bug + Annulla + Non è possibile modificare il repository perché è in corso la sincronizzazione. + Registro delle modifiche + Cambiamenti + Controllo repository… + Compilato per il debug + Convalida + Connessione in corso… + Contiene media non liberi + Impossibile scaricare %s + Impossibile sincronizzare %s + Impossibile convalidare %s + Crediti + Scuro + Elimina + Eliminare il repository\? + Descrizione + Dettagli + Dona + Scaricato %s + Scaricamento in corso + Scaricamento di %s in corso… + Modifica repository + Formato file non valido. + Fingerprint + Contiene annunci + Contiene dipendenze non libere + Contiene vulnerabilità + Risposta del server non valida. + Proxy HTTP + Ignora tutte le nuove versioni + Ignora questa versione + Il proprio %1$s (versione API %2$d) non è supportato. %3$s + La versione massima API è %d. + La versione minima API è %d. + Caratteristiche mancanti. + Questa versione è più vecchia di quella installata su questo dispositivo. + Elimina prima quella. + La piattaforma %1$s non è supportata. Piattaforme supportate: %2$s. + Questa versione ha una firma diversa da quella installata sul proprio dispositivo. Disinstalla prima quella. + Versione non compatibile + Versioni non compatibili + Mostra le versioni delle applicazioni incompatibili con il dispositivo + Non compatibile con %s + Installa + Tipi di installazione + Installato + Impossibile verificare l\'integrità. + Indirizzo non valido + Fingerprint in un formato non valido + Metadata non validi. + Permessi non validi. + Firma non valida. + Formato nome utente non valido + Avvia + Licenze + Licenza %s + Chiaro + Link copiato + Collegamenti + Elenco animazioni + Mostra l\'animazione della lista nella pagina principale + Unione di %s + Nome + Errore di rete + Mai + Nuove versioni di applicazioni disponibili + + %d applicazione ha una nuova versione. + %d applicazioni hanno una nuova versione. + %d applicazioni hanno una nuova versione. + + Nessuna applicazione disponibile + Nessuna applicazione installata + Nessuna descrizione disponibile + Impossibile trovare tali applicazioni + Senza proxy + Avvisa per gli aggiornamenti + Mostra una notifica quando ci sono nuove versioni disponibili + Numero di applicazioni + OK + Compatibile solo con %s + Solo con Wi-Fi + Aprire %s? + Altro + Impossibile analizzare il file di indice. + Password + Password mancante + Permessi + +%d altro + Impostazioni + Elaborazione %1$s… + Sito web del progetto + Promuove servizi di rete non liberi + Promuove software non liberi + Fornito da %s + Proxy + Host proxy + Porta proxy + Tipo proxy + Aggiornato di recente + Repositories + Repository + Questo repository non è stato ancora utilizzato. Attivalo per vedere le applicazioni in esso contenute. + Senza firma. Impossibile verificare la lista delle applicazioni. È importante stare attenti quando si scaricano le applicazioni dai repository senza firma. + Richiede %s + Installazione silenziosa + Consenti permesso di Root per abilitare installazioni silenziose + Salva + Salvataggio dei dettagli… + Schermate + Cerca + Seleziona alternativa + Condividi + Mostra dettagli + Mostra versioni precedenti + Firma %s + Firmato usando un algoritmo non sicuro + Dimensione + Salta + Proxy SOCKS + Ordinamento + Codice sorgente + Codice sorgente non più disponibile + Suggerito + Sincronizza repository + Sincronizza automaticamente i repository + Sincronizzazione + Sincronizzazione di %s in corso… + Sistema + Tocca per installare. + Obiettivo + Tema + Temi + Traccia o riferisce le tue attività + Disinstalla + Sconosciuto + Errore sconosciuto. + Sconosciuto: %s + Non firmato + Aggiornamenti instabili + Suggerisci l\'installazione di versioni instabili + Non verificato + Aggiorna + Aggiornamenti + Il codice sorgente aggiornato non libero + Nome utente + Nome utente mancante + Non è stato possibile convalidare l\'indice. + Versione + Versione %s + Versioni + In attesa dell\'inizio dello scaricamento… + Novità + Sito web + Lingua + Personalizzazione + Aggiorna tutto + Ordina e filtra + Ultime novità + Mostra meno + Nuove applicazioni + Esplora + Applicazioni installate + Installatore + Installatore Shizuku + Installatore di sessione + Installatore legacy + Installatore root + Periodo per controllare e rimuovere i file scaricati + + Giorno + Giorni + Giorni + + + Ora + Ore + Ore + + Intervallo di pulizia APK + Solo su Wi-Fi e ricarica + Impossibile eseguire determinate azioni. + Non hai connessione internet + Consenti l\'espansione della barra superiore dell\'app + Consenti alla barra superiore dell\'app di espandersi e comprimersi + Material You + Preferiti + Usa il tema material you + Repository irraggiungibile + Pulisce i file ridondanti + Pulizia forzata + Abilita il repository + Installazione + In attesa di avviare l\'installazione… + Riavvia LeOS-Droid per vedere le modifiche + Aggiornamento automatico delle app + Prova a installare gli aggiornamenti automaticamente + Ha componenti non liberi + Impossibile connettersi al server + Contiene contenuti non sicuri per il lavoro + Il server non è riuscito a fornire un nuovo pacchetto. + Importa impostazioni + Importa/Esporta + Importa impostazioni e preferiti da file + Esporta impostazioni + Esporta tutti i repository in file + Importa repository + Esporta impostazioni e preferiti in file + Esporta repository + Importare tutti i repository da file + Shizuku non è in esecuzione + Copia + La porta proxy può essere solo un numero intero + La seguente repository non è stata trovata + Menzione Speciale + Shizuku non è installato + Scorri schermata home + Consente di scorrere (swiping) le pagine nella schermata home + Impossibile aprire il link + \ No newline at end of file diff --git a/core/common/src/main/res/values-iw/strings.xml b/core/common/src/main/res/values-iw/strings.xml new file mode 100644 index 0000000..f82aa05 --- /dev/null +++ b/core/common/src/main/res/values-iw/strings.xml @@ -0,0 +1,218 @@ + + + הצג רשימת אנימציית בעמוד הראשי + כתובות + אנטי-תכונות + בטל + כבר קיים + תמיד + שחור + יישום + לא ניתן היה למצוא את היישום הזה + דואר אלקטרוני של היוצר + עיין + עוקב אחר באגים + לא ניתן לערוך את המאגר מכיוון שהוא מסתנכרן כעת. + יומן שינויים + שינויים + בודק מאגר… + APK cleanup interval + Period to check and remove downloaded files + אישורים + לא ניתן היה להוריד את %s + לא ניתן היה לסנכרן את %s + + יום + ימים + יום + ימים + + מחק + למחוק את המאגר\? + תיאור + פרטים + תרום + מוריד %s + מוריד + ערוך מאגר + מכיל פרצות אבטחה + פרוקסי HTTP + התעלם מהגרסה הזו + ה-%1$s שלך (גרסת API %2$d) אינו נתמך. %3$s + גרסת ה-API המקסימלית היא %d. + גרסת ה-API המינימלית היא %d. + תכונות חסרות. + פלטפורמת %1$s שלך אינה נתמכת. פלטפורמות נתמכות: %2$s. + התקן + מתקין הפעלה + הותקן + מטא נתונים לא חוקיים. + הרשאות לא חוקיות. + חתימה לא חוקית. + פורמט שם משתמש לא חוקי + פתח + רשיון + %s רשיון + מואר + הקישור הועתק ללוח + קישורים + רשימת אנימציות + ממזג %s + היי, זמינות גרסאות חדשות של יישומים + + %d לאפליקציה יש גרסה חדשה. + %d לאפליקציות יש גרסאות חדשות. + %d לאפליקציה יש גרסה חדשה. + %d לאפליקציות יש גרסאות חדשות. + + אין אפליקציות זמינות + אין יישומים מותקנים + אין תיאור זמין + לא הצלחתי למצוא אפליקציות כאלה + אין פרוקסי + הודע על גרסאות חדשות של יישומים + הצג התראה כאשר גרסאות חדשות זמינות + מספר אפליקציות + אוקיי + תואם רק עם %s + רק על וואי-פי + רק ב-Wifi וטעינה + לפתוח %s\? + אחר + לא ניתן לנתח את קובץ האינדקס. + סיסמא + חסרה סיסמא + +%d יותר + מעבד %1$s… + אתר הפרויקט + מקדם שירותי רשת שאינם חופשיים + מקדם תוכנות שאינן חופשיות + מסופק על ידי %s + יציאת פרוקסי + סוג פרוקסי + מאגרים + מאגר + לא חתום. לא ניתן היה לאמת את רשימת היישומים. היזהר בהורדת יישומים ממאגרים לא חתומים. + דורש %s + שומר פרטים… + גודל + דלג + פרוקסי SOCKS + סדר מיון + קוד מקור + קוד המקור אינו זמין יותר + מוצע + סנכרון מאגרים + סנכרון מאגרים באופן אוטומטי + מסנכרן + מסנכרן את %s… + מערכת + הקש כדי להתקין. + יעד + ערכת נושא + ערכות נושא + עוקב או מדווח על הפעילות שלך + לא ידוע + לא מאומת + קוד המקור המלא אינו חינמי + שם משתמש + שם משתמש חסר + שפה + עיין + עדכן הכל + אפליקציות מותקנות + מיון וסינון + יישומים חדשים + פעולה נכשל + הוסף מאגר + כל האפליקציות + כל האפליקציות שלך מעודכנות + אתר היוצר + מכיל קוד שאינו חופשי + לא ניתן היה לאמת את %s + אפל + פורמט קובץ לא חוקי. + הידור עבור ניפוי באגים + מתחבר… + קרדיטים + מוריד את %s… + טביעת אצבע + תלוי בתוספים לא חופשיים + תגובת שרת לא חוקית. + מכיל פרסום + גרסה זו ישנה יותר מזו המותקנת במכשיר שלך. הסר את החדשה קודם. + + שעה + שעות + שעה + שעות + + התעלם מכל הגרסאות החדשות + גרסאות לא תואמות + הצג גרסאות אפליקציה שאינן תואמות למכשיר + מתקין + כתובת לא חוקית + גרסה זו חתומה עם אישור שונה מזה המותקן במכשיר שלך. הסר את המותקן קודם. + גרסה לא תואמת + לא תואם עם %s + סוגי התקנה + מתקין מדור קודם + מתקין שורש + מתקין שיזוקו + שם + לא ניתן היה לבדוק תקינות. + פורמט טביעת אצבע לא חוקי + הצג גירסאות ישנות + גירסא + שגיאת רשת + לעולם לא + הגדרות + ‌פרוקסי + עודכן לאחרונה + עדיין לא נעשה שימוש במאגר זה. הפעל אותו כדי להציג את היישומים שבו. + הרשאות + מארח פרוקסי + צילומי מסך + אפשר הרשאת רוט עבור התקנות שקטות + שמור + התקנה שקטה (רוט) + חתום באמצעות אלגוריתם. לא בטוח + שתף + הצג יותר + חיפוש + בחר מראה + חתימה %s + לא חתום + הצע להתקין גרסאות לא יציבות + עידכונים + גרסה %s + הסר התקנה + גירסאות + שגיאה לא ידועה. + עדכונים לא יציבים + לא ניתן היה לאמת את האינדקס. + לא ידוע: %s + ‌עדכן + מה חדש + אתר אינטרנט + ממתין לתחילת ההורדה… + התאמה אישית + הצג פחות + הכי מאוחר + אפשר לסרגל האפליקציות העליון להתרחב + אפשר לסרגל האפליקציות העליון להתרחב ולהתמוטט + אין לך חיבור לאינטרנט + לא ניתן לבצע פעולות מסוימות. + התקנה + חומר אתה + השתמש בחומר אתה נושא צבע + הפעל מחדש את Droid-iim כדי לראות שינויים + מחכה להתחיל בהתקנה … + מועדפים + מנקה קבצים מיותרים + אפשר את המאגר + כוח לנקות + מאגר בלתי ניתן להשגה + אפליקציות לעדכון אוטומטי + נסה להתקין עדכונים באופן אוטומטי + \ No newline at end of file diff --git a/core/common/src/main/res/values-ja/strings.xml b/core/common/src/main/res/values-ja/strings.xml new file mode 100644 index 0000000..f34a502 --- /dev/null +++ b/core/common/src/main/res/values-ja/strings.xml @@ -0,0 +1,230 @@ + + + 変更履歴 + リポジトリをチェックしています… + %s を検証できませんでした + 概要 + %s をダウンロードしました + このリポジトリを削除しますか? + 詳細 + 不自由な依存関係を含む + ダウンロード中 + %s をダウンロード中… + リポジトリを編集 + 無効なファイル形式です。 + フィンガープリント + 広告を含む + 名前 + ネットワークエラー + %s をマージ中 + しない + アプリの新しいバージョンが利用可能です + リポジトリ + 不明 + 操作に失敗しました + リポジトリを追加 + アドレス + すべてのアプリ + すべてのアプリが最新です + すでに存在します + 常に + ブラック + 好ましくない可能性のある機能 + アプリ + アプリが見つかりませんでした + 作者のメールアドレス + 作者のウェブサイト + バグトラッカー + キャンセル + 変更点 + デバッグ用にコンパイルされています + 確認 + 接続中… + 不自由なメディアを含みます + %s をダウンロードできませんでした + %s を同期できませんでした + ダーク + 削除 + 寄付 + セキュリティ上の脆弱性があります + + 時間 + + サーバーからの応答が無効です。 + HTTP プロキシ + すべての新しいバージョンを無視 + このバージョンを無視 + お使いの %1$s (API バージョン %2$d) はサポートされていません。%3$s + 最大 API バージョンは %d です。 + 最小 API バージョンは %d です。 + このバージョンは、お使いのデバイスにインストール済みのものよりも古いバージョンです。先にアンインストールしてください。 + %1$s プラットフォームはサポートされていません。サポートされているプラットフォーム: %2$s + このバージョンは、お使いのデバイスにインストールされているものと異なる証明書で署名されています。先にアンインストールしてください。 + + + + 互換性のないバージョン + 互換性のないバージョン + デバイスと互換性のないアプリのバージョンを表示する + %s とは互換性がありません + インストール + インストール方式 + インストーラー + インストール済み + 整合性を確認できませんでした。 + 無効なアドレス + 無効なフィンガープリント形式 + 無効なメタデータです。 + 無効な権限です。 + 無効な署名です。 + 無効なユーザー名形式 + 起動 + ライセンス + %s ライセンス + ライト + リンクがコピーされました + リンク + リストのアニメーション + メインページでリストをアニメーションする + + %d 個のアプリに新しいバージョンがあります。 + + 利用可能なアプリはありません + インストール済みのアプリはありません + 説明がありません + そのようなアプリは見つかりませんでした + プロキシなし + アップデート通知 + 新しいバージョンが利用可能になったときに通知を表示する + アプリの数 + OK + %s とのみ互換性があります + Wi-Fi 接続時のみ + Wi-Fi 接続時と充電時のみ + %s を開きますか? + その他 + インデックスファイルを解析できませんでした。 + パスワード + パスワードがありません + 権限 + 設定 + %1$s を処理中… + プロジェクトのウェブサイト + 不自由なネットワークサービスを推奨します + 不自由なソフトウェアを推奨します + 提供: %s + プロキシ + 最近の更新 + リポジトリ + %s が必要 + サイレントインストール + 保存 + 詳細を保存しています… + スクリーンショット + 検索 + ミラーを選択 + 共有 + さらに表示 + 未署名です。アプリのリストを検証できませんでした。署名されていないリポジトリからアプリをダウンロードする際は注意してください。 + 古いバージョンを表示 + 署名 %s + 安全でないアルゴリズムを使用して署名されています + サイズ + スキップ + SOCKS プロキシ + 並べ替え + ソースコード + ソースコードは利用できません + 推奨 + リポジトリを同期 + 自動的にリポジトリを同期 + 同期中 + %s を同期中… + システム + タップしてインストール + ターゲット + テーマ + テーマ + あなたのアクティビティを追跡または報告します + アンインストール + 不明なエラーです。 + 不明: %s + 署名なし + 不安定なアップデート + 不安定なバージョンのインストールを提案する + 未検証 + アップデート + アップデート + アップストリームのソースコードは不自由です + ユーザー名 + ユーザー名がありません + インデックスを検証できませんでした。 + バージョン + バージョン %s + バージョン + ダウンロード開始を待機中… + 最新情報 + ウェブサイト + 言語 + 個人用設定 + 表示を減らす + 最新 + 探索 + すべてアップデート + インストールされているアプリ + 新しいアプリ + 探索 + APK の自動クリーンアップ間隔 + ダウンロード済みファイルの確認と削除をする間隔 + 機能が不足しています。 + 現在同期中のため、リポジトリを編集できません。 + クレジット + レガシーインストーラー + セッションインストーラー + Root インストーラー + Shizuku インストーラー + さらに %d 件 + プロキシホスト + プロキシポート + プロキシタイプ + このリポジトリはまだ使用されていません。アプリケーションを表示するには、オンにしてください。 + サイレントインストールのための root 権限を許可する + 並べ替えとフィルター + トップアプリバーの拡張を許可する + トップアプリバーの拡大・縮小を可能にする + 特定のアクションを実行できません。 + インターネット接続がありません + アプリの自動更新 + アップデートを自動的にインストールします + インストール中 + インストール開始を待機中… + お気に入り + Material You + リポジトリに到達できません + リポジトリを有効化 + 強制的にクリーンアップ + 冗長ファイルをクリーンアップする + Material You カラーテーマを使用する + LeOS-Droid を再起動して変更を確認する + 不自由なコンポーネントを含む + ホーム画面のスワイプ + コンテンツには安全ではないものが含まれています + Shizuku が動作していません + サーバーに接続できませんでした + サーバーから新しいパケットが提供されませんでした。 + コピー + プロキシポートは整数のみです + ホーム画面でページをスワイプして移動する + 指定されたリポジトリは見つかりませんでした + スペシャルクレジット + Shizuku はインストールされていません + 設定をインポート + インポート / エクスポート + ファイルから設定とお気に入りをインポートする + 設定をエクスポート + 全てのリポジトリをファイルにエクスポートする + リポジトリをインポート + 設定とお気に入りをファイルにエクスポートする + リポジトリをエクスポート + ファイルから全てのリポジトリをインポートする + \ No newline at end of file diff --git a/core/common/src/main/res/values-kn/strings.xml b/core/common/src/main/res/values-kn/strings.xml new file mode 100644 index 0000000..f68c825 --- /dev/null +++ b/core/common/src/main/res/values-kn/strings.xml @@ -0,0 +1,212 @@ + + + ಕ್ರಿಯೆ ವಿಫಲವಾಗಿದೆ + ರೆಪೊಸಿಟರಿಯನ್ನು ಸೇರಿಸಿ + ವಿಳಾಸ + ಎಲ್ಲಾ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು + ಈಗಾಗಲೇ ಇದೆ + ಯಾವಾಗಲೂ + ಕಪ್ಪು + ವಿರೋಧಿ ವೈಶಿಷ್ಟ್ಯಗಳು + ಅಪ್ಲಿಕೇಶನ್ + ಡೆವಲಪರ್‌ನ ಇಮೇಲ್ + ಡೆವಲಪರ್ ವೆಬ್‌ಸೈಟ್ + ಅನ್ವೇಷಿಸಿ + ಬಗ್ ಟ್ರ್ಯಾಕರ್ + ರದ್ದುಮಾಡು + ಬದಲಾವಣೆಗಳ ಟಿಪ್ಪಣಿ + ಬದಲಾವಣೆಗಳು + APK cleanup interval + Period to check and remove downloaded files + ಡೀಬಗ್ ಮಾಡಲು ಸಂಕಲಿಸಲಾಗಿದೆ + ದೃಢೀಕರಣ + ಮುಕ್ತವಲ್ಲದ ಮಾಧ್ಯಮವನ್ನು ಒಳಗೊಂಡಿದೆ + %s ಅನ್ನು ಸಿಂಕ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ + ಕ್ರೆಡಿಟ್‌ಗಳು + ಕತ್ತಲು + + ದಿನ + ದಿನಗಳು + + ಅಳಿಸಿ + ರೆಪೊಸಿಟರಿಯನ್ನು ಅಳಿಸುವುದೇ\? + ವಿವರಣೆ + ವಿವರಗಳು + ಕಾಣಿಕೆ ನೀಡಿ + ಡೌನ್‌ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ + %s ಡೌನ್‌ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ… + ರೆಪೊಸಿಟರಿಯನ್ನು ಪರಿಷ್ಕರಿಸು + ಬೆರಳಚ್ಚು + ಜಾಹೀರಾತು ಹೊಂದಿದೆ + ಭದ್ರತಾ ದೋಷಗಳನ್ನು ಹೊಂದಿದೆ + + ಘಂಟೆ + ಘಂಟೆಗಳು + + ಅಮಾನ್ಯ ಸರ್ವರ್ ಪ್ರತಿಕ್ರಿಯೆ. + HTTP ಪ್ರಾಕ್ಸಿ + ಗರಿಷ್ಠ API ಆವೃತ್ತಿಯು %d ಆಗಿದೆ. + ಕನಿಷ್ಠ API ಆವೃತ್ತಿಯು %d ಆಗಿದೆ. + ಕಾಣೆಯಾದ ವೈಶಿಷ್ಟ್ಯಗಳು. + ಈ ಆವೃತ್ತಿಯು ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ಸ್ಥಾಪಿಸಲಾದ ಆವೃತ್ತಿಗಿಂತ ಹಳೆಯದಾಗಿದೆ. ಅದನ್ನು ಮೊದಲು ಅನ್‌ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿ. + ಹೊಂದಾಣಿಕೆಯಾಗದ ಆವೃತ್ತಿ + ಹೊಂದಾಣಿಕೆಯಾಗದ ಆವೃತ್ತಿಗಳು + ಸಾಧನದೊಂದಿಗೆ ಹೊಂದಿಕೆಯಾಗದ ಅಪ್ಲಿಕೇಶನ್ ಆವೃತ್ತಿಗಳನ್ನು ತೋರಿಸಿ + %s ಗೆ ಹೊಂದಿಕೆಯಾಗುವುದಿಲ್ಲ + ಅನುಸ್ಥಾಪಕ + ಲೆಗಸಿ ಸ್ಥಾಪಕ + ಸೆಷನ್ ಸ್ಥಾಪಕ + ರೂಟ್ ಸ್ಥಾಪಕ + ಸ್ಥಾಪಿಸಲಾಗಿದೆ + ಸಮಗ್ರತೆಯನ್ನು ಪರಿಶೀಲಿಸಲಾಗಲಿಲ್ಲ. + ಅಮಾನ್ಯವಾದ ವಿಳಾಸ + ಅಮಾನ್ಯ ಮೆಟಾಡೇಟಾ. + ಅಮಾನ್ಯ ಅನುಮತಿಗಳು. + ಅಮಾನ್ಯವಾದ ಸಹಿ. + ಅಮಾನ್ಯ ಬಳಕೆದಾರಹೆಸರು ಫಾರ್ಮ್ಯಾಟ್ + ಲಾಂಚ್ + %s ಪರವಾನಗಿ + ಬೆಳಕು + ಲಿಂಕ್‌ಗಳು + ಅನಿಮೇಷನ್ ಗಳ ಪಟ್ಟಿ + ಮುಖ್ಯ ಪುಟದಲ್ಲಿ ಅನಿಮೇಷನ್ ಪಟ್ಟಿ ತೋರಿಸಿ + ಹೆಸರು + ನೆಟ್‌ವರ್ಕ್ ದೋಷ + ಎಂದಿಗೂ + + %d ಅಪ್ಲಿಕೇಶನ್ ಹೊಸ ಆವೃತ್ತಿಯನ್ನು ಹೊಂದಿದೆ. + ಹೊಸ ಆವೃತ್ತಿಗಳೊಂದಿಗೆ %d ಅಪ್ಲಿಕೇಶನ್‌ಗಳು. + + ಸ್ಥಾಪಿಸಲಾದ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಲ್ಲ + ಅಂತಹ ಯಾವುದೇ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಕಂಡುಹಿಡಿಯಲಾಗಲಿಲ್ಲ + ಪ್ರಾಕ್ಸಿ ಇಲ್ಲ + ಅಪ್ಲಿಕೇಶನ್ ಗಳ ಸಂಖ್ಯೆ + ಸರಿ + ನಿಮ್ಮ ಎಲ್ಲಾ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ನವೀಕೃತವಾಗಿವೆ + ಸಂಪರ್ಕಿಸಲಾಗುತ್ತಿದೆ… + ಆ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಕಂಡುಹಿಡಿಯಲಾಗಲಿಲ್ಲ + ಹೊಸ ಆವೃತ್ತಿಗಳು ಲಭ್ಯವಿದ್ದಾಗ ಅಧಿಸೂಚನೆಯನ್ನು ತೋರಿಸಿ + ರೆಪೊಸಿಟರಿಯನ್ನು ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ… + ಇದೀಗ ಸಿಂಕ್ ಆಗುತ್ತಿರುವ ಕಾರಣ ರೆಪೊಸಿಟರಿಯನ್ನು ಪರಿಷ್ಕರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. + %s ಅನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ + %s ಅನ್ನು ದೃಢೀಕರಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ + %s ಅನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಲಾಗಿದೆ + ಅಮಾನ್ಯ ಫೈಲ್ ಫಾರ್ಮ್ಯಾಟ್. + ಈಗಿನ ಆವೃತ್ತಿಯನ್ನು ನಿರ್ಲಕ್ಷಿಸಿ + ಮುಕ್ತವಲ್ಲದ ಅವಲಂಬನೆಗಳನ್ನು ಹೊಂದಿದೆ + ಎಲ್ಲಾ ಹೊಸ ಆವೃತ್ತಿಗಳನ್ನು ನಿರ್ಲಕ್ಷಿಸಿ + ನಿಮ್ಮ %1$s (API ಆವೃತ್ತಿ %2$d) ಬೆಂಬಲಿತವಾಗಿಲ್ಲ. %3$s + ನಿಮ್ಮ %1$s ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ಬೆಂಬಲಿತವಾಗಿಲ್ಲ. ಬೆಂಬಲಿತ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್‌ಗಳು: %2$s. + ಈ ಆವೃತ್ತಿಯು ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ಸ್ಥಾಪಿಸಲಾದ ಪ್ರಮಾಣಪತ್ರಕ್ಕಿಂತ ವಿಭಿನ್ನ ಪ್ರಮಾಣಪತ್ರದೊಂದಿಗೆ ಸಹಿ ಮಾಡಲಾಗಿದೆ. ಅದನ್ನು ಮೊದಲು ಅನ್‌ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿ. + ಅನುಸ್ಥಾಪನೆಯ ವಿಧಗಳು + ಸ್ಥಾಪಿಸಿ + ಶಿಜುಕು ಸ್ಥಾಪಕ + %s ಅನ್ನು ವಿಲೀನಗೊಳಿಸಲಾಗುತ್ತಿದೆ + ಅಮಾನ್ಯ ಫಿಂಗರ್‌ಪ್ರಿಂಟ್ ಫಾರ್ಮ್ಯಾಟ್ + ಪರವಾನಗಿ + ಲಿಂಕ್ ಅನ್ನು ಕ್ಲಿಪ್‌ಬೋರ್ಡ್‌ಗೆ ನಕಲಿಸಲಾಗಿದೆ + ಯಾವುದೇ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಲಭ್ಯವಿಲ್ಲ + ಅಪ್ಲಿಕೇಶನ್‌ಗಳ ಹೊಸ ಆವೃತ್ತಿಗಳು ಲಭ್ಯವಿದೆ + ಅಪ್ಲಿಕೇಶನ್‌ಗಳ ಹೊಸ ಆವೃತ್ತಿಗಳ ಕುರಿತು ಸೂಚಿಸಿ + ಯಾವುದೇ ವಿವರಣೆ ಲಭ್ಯವಿಲ್ಲ + ಆವೃತ್ತಿ %s + ರೆಪೊಸಿಟರಿಗಳು + ಅನುಮತಿಗಳು + ಯೋಜನೆಯ ಜಾಲತಾಣ + ಪ್ರಾಕ್ಸಿ ಪೋರ್ಟ್ + ಇತ್ತೀಚೆಗೆ ನವೀಕರಿಸಲಾಗಿದೆ + ಭಂಡಾರ + %s ಅಗತ್ಯವಿದೆ + ಹುಡುಕಿ + ಈ ಭಂಡಾರವನ್ನು ಇನ್ನೂ ಬಳಸಲಾಗಿಲ್ಲ. ಅದರಲ್ಲಿರುವ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ವೀಕ್ಷಿಸಲು ಅದನ್ನು ಆನ್ ಮಾಡಿ. + ಸಹಿ ಮಾಡಿಲ್ಲ. ಅಪ್ಲಿಕೇಶನ್ ಪಟ್ಟಿಯನ್ನು ಪರಿಶೀಲಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ಸಹಿ ಮಾಡದ ರೆಪೊಸಿಟರಿಗಳಿಂದ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡುವಾಗ ಜಾಗರೂಕರಾಗಿರಿ. + ಸೈಲೆಂಟ್ ಇನ್‌ಸ್ಟಾಲ್ + ನಿಶ್ಯಬ್ದ ಸ್ಥಾಪನೆಗಳಿಗೆ ರೂಟ್ ಅನುಮತಿಯನ್ನು ಅನುಮತಿಸಿ + ಉಳಿಸಿ + ವಿವರಗಳನ್ನು ಉಳಿಸಲಾಗುತ್ತಿದೆ… + ಸ್ಕ್ರೀನ್‌ಶಾಟ್‌ಗಳು + ಹಳೆಯ ಆವೃತ್ತಿಗಳನ್ನು ತೋರಿಸಿ + ಕನ್ನಡಿಯನ್ನು ಆಯ್ಕೆಮಾಡಿ + ಹಂಚಿಕೊಳ್ಳಿ + ಇನ್ನು ಹೆಚ್ಚು ತೋರಿಸು + ಸಹಿ %s + ಬಿಟ್ಟುಬಿಡಿ + ಅಸುರಕ್ಷಿತ ಅಲ್ಗಾರಿದಮ್ ಬಳಸಿ ಸಹಿ ಮಾಡಲಾಗಿದೆ + ಗಾತ್ರ + ಮೂಲ ಕೋಡ್ + ಸಾಕ್ಸ್ ಪ್ರಾಕ್ಸಿ + ವಿಂಗಡಿಸುವ ಕ್ರಮ + ಸಿಂಕ್ ಮಾಡಲಾಗುತ್ತಿದೆ + ಮೂಲ ಕೋಡ್ ಇನ್ನು ಮುಂದೆ ಲಭ್ಯವಿಲ್ಲ + %s ಸಿಂಕ್ ಮಾಡಲಾಗುತ್ತಿದೆ… + ವ್ಯವಸ್ಥೆ + ಗುರಿ + ಥೀಮ್ + ಥೀಮ್ಗಳು + ಸ್ಥಾಪಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ. + ಅಜ್ಞಾತ + ಅಸ್ಥಿರ ಆವೃತ್ತಿಗಳನ್ನು ಸ್ಥಾಪಿಸಲು ಸಲಹೆ ನೀಡಿ + ನಿಮ್ಮ ಚಟುವಟಿಕೆಯನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡುತ್ತದೆ ಅಥವಾ ವರದಿ ಮಾಡುತ್ತದೆ + ಅಪ್‌ಸ್ಟ್ರೀಮ್ ಮೂಲ ಕೋಡ್ ಉಚಿತವಲ್ಲ + ಅನ್‌ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿ + ಅಸ್ಥಿರ ನವೀಕರಣಗಳು + ಅಜ್ಞಾತ ದೋಷ. + ಅಜ್ಞಾತ: %s + ಸಹಿ ಮಾಡಿಲ್ಲ + ಪರಿಶೀಲಿಸಲಾಗಿಲ್ಲ + ನವೀಕರಿಸಿ + ನವೀಕರಣಗಳು + ಆವೃತ್ತಿ + ಬಳಕೆದಾರ ಹೆಸರು + ಬಳಕೆದಾರಹೆಸರು ಕಾಣೆಯಾಗಿದೆ + ಸೂಚ್ಯಂಕವನ್ನು ಮೌಲ್ಯೀಕರಿಸಲಾಗಲಿಲ್ಲ. + ಕಡಿಮೆ ತೋರಿಸು + ಆವೃತ್ತಿಗಳು + ಡೌನ್‌ಲೋಡ್ ಪ್ರಾರಂಭಿಸಲು ನಿರೀಕ್ಷಿಸಲಾಗುತ್ತಿದೆ… + ಇತ್ತೀಚಿನ + ಅನ್ವೇಷಿಸಿ + ಎಲ್ಲವನ್ನು ಆಧುನೀಕರಿಸು + ವೈ-ಪೈ ನಲ್ಲಿ ಮಾತ್ರ + ತೆರೆ %s\? + ಪಾಸ್ವರ್ಡ್ + ಪಾಸ್ವರ್ಡ ಅಗತ್ಯವಿದೆ + ಸಂಸ್ಕರಣೆ %1$s… + ಬದಲಿ + +%d ಇನ್ನಷ್ಟುಡ + ಅಳವಡಿಕೆಗಳು + ಉಚಿತವಿಲ್ಲದ ನೆಟ್ವರ್ಕ್ ಸೇವೆಯನ್ನು ಉತ್ತೇಜಿಸುತ್ತದೆ + ಉಚಿತವಿಲ್ಲದ ಸಾಪ್ಟವೇರನ್ನು ಉತ್ತೇಜಿಸುತ್ತದೆ + %s ಇಂದ ಒದಗಿಸಲಾಗಿದೆ + ಬದಲಿ ಹೋಸ್ಟ್ + ಬದಲಿ ಮಾದರಿ + ಕೆಲವು ಕ್ರಿಯೆಗಳನ್ನು ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ. + ಇತರೆ + ಇಂಡೆಕ್ಸ್ ಫೈಲ್ ಅನ್ನು ಪಾರ್ಸ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. + ನೀವು ಯಾವುದೇ ಇಂಟರ್ನೆಟ್ ಸಂಪರ್ಕವನ್ನು ಹೊಂದಿಲ್ಲ + %s ಗೆ ಮಾತ್ರ ಹೊಂದಾಣಿಕೆಯಾಗುತ್ತದೆ + ಉನ್ನತ ಅಪ್ಲಿಕೇಶನ್ ಬಾರ್ ಅನ್ನು ವಿಸ್ತರಿಸಲು ಮತ್ತು ಕುಗ್ಗಿಸಲು ಅನುಮತಿಸಿ + ವೈ-ಪೈ ಮತ್ತು ಚಾರ್ಜಿಂಗ್ ನಲ್ಲಿ ಮಾತ್ರ + ಸೂಚಿಸಲಾಗಿದೆ + ರೆಪೊಸಿಟರಿಗಳನ್ನು ಸಿಂಕ್ ಮಾಡಿ + ರೆಪೊಸಿಟರಿಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸಿಂಕ್ ಮಾಡಿ + ಟಾಪ್ ಅಪ್ಲಿಕೇಶನ್ ಬಾರ್ ಅನ್ನು ವಿಸ್ತರಿಸಲು ಅನುಮತಿಸಿ + ಹೊಸತೇನಿದೆ + ಜಾಲತಾಣ + ಭಾಷೆ + ವೈಯಕ್ತೀಕರಣ + ಸ್ಥಾಪಿಸಲಾದ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು + ವಿಂಗಡಿಸಿ ಮತ್ತು ಫಿಲ್ಟರ್ ಮಾಡಿ + ಹೊಸ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು + ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ನವೀಕರಿಸಿ + ನವೀಕರಣಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸ್ಥಾಪಿಸಲು ಪ್ರಯತ್ನಿಸಿ + ಸ್ಥಾಪಿಸಲಾಗುತ್ತಿದೆ + ಅನುಸ್ಥಾಪನೆಯನ್ನು ಪ್ರಾರಂಭಿಸಲು ನಿರೀಕ್ಷಿಸಲಾಗುತ್ತಿದೆ… + ಮೆಚ್ಚಿನವುಗಳು + ರೆಪೊಸಿಟರಿಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ + ಬಲವಂತವಾಗಿ ಸ್ವಚ್ಛಗೊಳಿಸಿ + ಅನಗತ್ಯ ಫೈಲ್‌ಗಳನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸುತ್ತದೆ + ವಸ್ತು ನೀವು + ವಸ್ತು ನೀವು ಬಣ್ಣದ ಥೀಮ್ ಬಳಸಿ + ರೆಪೊಸಿಟರಿಯನ್ನು ತಲುಪಲಾಗುವುದಿಲ್ಲ + ಬದಲಾವಣೆಗಳನ್ನು ನೋಡಲು LeOS-Droid ಅನ್ನು ಮರುಪ್ರಾರಂಭಿಸಿ + \ No newline at end of file diff --git a/core/common/src/main/res/values-ko/strings.xml b/core/common/src/main/res/values-ko/strings.xml new file mode 100644 index 0000000..3012aa7 --- /dev/null +++ b/core/common/src/main/res/values-ko/strings.xml @@ -0,0 +1,230 @@ + + + 앱 자동 업데이트 + 자동으로 업데이트 설치 시도 + 이 버전은 기기에 설치된 버전보다 이전 버전입니다. 먼저 제거하십시오. + 호환되지 않는 버전 + 호환되지 않는 버전 + 설치 유형 + 레거시 설치 관리자 + 무결성을 확인하지 못했습니다. + 즐겨찾기 + 특정 작업을 수행할 수 없습니다. + 열기 + Material You + %s 병합 + 사용 안 함 + + %d개 애플리케이션을 업데이트할 수 있습니다. + + 사용 가능한 애플리케이션 없음 + 설치된 애플리케이션 없음 + 네트워크 오류 + HTTP 프록시 + 모든 새 버전 무시 + %1$s 플랫폼이 지원되지 않습니다. 지원되는 플랫폼: %2$s. + %s와 호환되지 않음 + 설치 + Shizuku 설치 관리자 + 설치됨 + 잘못된 메타데이터입니다. + 잘못된 권한입니다. + 잘못된 서명입니다. + 잘못된 주소 + 잘못된 지문 형식 + 메인 페이지에 목록 애니메이션 표시 + 프록시 없음 + 새 버전을 사용할 수 있을 때 알림 표시 + 업데이트 알림 + 강제 정리 + 저장소 켜기 + 보안 취약점이 있음 + + 시간 + + 이름 + 이 버전 무시 + 중복 파일 정리 + 잘못된 서버 응답입니다. + 귀하의 %1$s(API 버전 %2$d)는 지원되지 않습니다. %3$s + 기능이 없습니다. + 최대 API 버전은 %d입니다. + 최소 API 버전은 %d입니다. + 이 버전은 기기에 설치된 것과 다른 인증서로 서명되었습니다. 먼저 제거하십시오. + 기기와 호환되지 않는 애플리케이션 버전 표시 + 설치 관리자 + 세션 설치 관리자 + 루트 설치 관리자 + 잘못된 사용자 이름 형식 + Material You 색상 테마 사용 + 인터넷에 연결되어 있지 않습니다 + 새로운 버전의 애플리케이션 사용 가능 + 가능한 설명이 없습니다 + 지원하는 애플리케이션을 찾지 못했습니다. + + + + 삭제 + 저장소를 삭제하시겠습니까\? + 설명 + 애플리케이션 정보 + 기부 + %s 앱을 다운로드했습니다. + 상단 앱 바 확장 허용 + 상단 앱 바 확장 및 축소 허용 + 다운로드한 파일을 확인하고 제거할 시간 간격 + 디버깅용으로 컴파일됨 + 연결 중… + 비자유 미디어 포함 + %s 항목을 다운로드하지 못했습니다. + %s 항목을 동기화하지 못했습니다. + %s 항목을 검증하지 못했습니다. + 크레딧 + 다크 + 다운로드 중 + %s 다운로드 중… + 개발자 이메일 + 개발자 웹사이트 + 둘러보기 + 확인 + 버그 신고 + 취소 + 작업 실패 + 저장소 추가 + 주소 + 모든 애플리케이션 + 모든 애플리케이션이 최신 버전입니다. + 이미 존재함 + 항상 + 블랙 + 안티 기능 + 애플리케이션 + 해당 애플리케이션을 찾지 못했습니다. + 지금은 동기화 중이므로 저장소를 편집할 수 없습니다. + 변경 사항 + 변경 사항 + 저장소 확인 중… + APK 정리 간격 + 저장소 편집 + 잘못된 파일 형식입니다. + 지문 + 광고 있음 + 자유롭지 않은 종속성 있음 + 특허 + %s 라이선스 + 라이트 + 링크를 복사했습니다. + 연결 + 애니메이션 나열 + 설치 중 + %s와만 호환 가능 + Wi-Fi에서만 + 건너뛰기 + 소스 코드 + 더 이상 사용할 수 없는 소스 코드 + 제안 + 저장소 자동 동기화 + 동기화 중 + 설치하려면 탭하세요. + 테마 + 테마 + 활동을 추적하거나 보고합니다 + 알 수 없는 오류가 발생했습니다. + 알 수 없음: %s + 서명되지 않은 + 불안정한 버전 업데이트 + 설치 시작 대기 중… + 개인화 + 모두 업데이트 + 설치된 애플리케이션 + 공유 + 이전 버전 표시 + 정렬 순서 + 알 수 없음 + 버전 %s + 버전 + 간단히 보기 + 정렬 및 필터 + 새로운 애플리케이션 + 확인 + Wi-Fi 및 충전 중일 때만 + 저장 + 스크린샷 + 검색 + 미러 선택 + 서명 %s + 자동 설치를 위해 루트 권한을 허용합니다. + 세부 정보 저장 중… + 크기 + 표적 + 불안정한 버전의 업데이트 설치 제안 + 업데이트 + 업데이트 + 업스트림 소스 코드는 무료가 아닙니다 + 사용자 이름 + 미확인 + 사용자 이름이 비어 있습니다. + 색인을 검증하지 못했습니다. + 버전 + 언어 + 신청 수 + 이 저장소는 아직 사용한 적이 없습니다. 저장소에서 제공하는 애플리케이션을 확인하려면 이 저장소를 켜세요. + 저장소 + 더 보기 + SOCKS 프록시 + 설치 제거 + 새로 등록된 앱 + 다운로드 시작 대기 중… + 웹사이트 + 프로젝트 웹사이트 + 무료가 아닌 네트워크 서비스 홍보 + %s 제공 + 프록시 호스트 + 프록시 포트 + 프록시 유형 + 최근 업데이트 + 저장소 + 저장소에 연결할 수 없음 + %s 필요 + %1$s 처리 중… + 비자유 소프트웨어 홍보 + 최신 + %s를 여시겠습니까\? + 다른 + 비밀번호 누락 + 프록시 + %s 동기화 중… + 서명되지 않았습니다. 애플리케이션 목록을 확인하지 못했습니다. 서명되지 않은 저장소에서 애플리케이션을 다운로드할 때는 주의하세요. + 저장소 동기화 + 시스템 + 탐색 + 색인 파일 구문을 분석하지 못했습니다. + 비밀번호 + 권한 + +%d개 더 + LeOS-Droid를 다시 시작하여 변경 사항 확인 + 자동 설치 + 설정 + 안전하지 않은 알고리즘을 사용하여 서명됨 + 자유롭지 않은 구성 요소를 포함하고 있습니다 + 홈 화면에서 스와이프 사용 + NSFW 컨텐츠를 포함하고 있음 + Shizuku가 실행 중이 아님 + 서버에 연결하지 못했습니다. + 서버에서 새 패킷을 가져오지 못했습니다. + 복사 + 프록시 포트에는 숫자만 입력할 수 있습니다. + 홈 화면에서 스와이프하여 페이지 전환 + 다음 저장소를 찾지 못했습니다. + 스페셜 크레딧 + Shizuku가 설치되어 있지 않음 + 설정 가져오기 + 가져오기/내보내기 + 설정 및 즐겨찾기를 파일에서 가져옵니다. + 설정 내보내기 + 저장소 목록을 파일로 내보냅니다. + 저장소 가져오기 + 설정 및 즐겨찾기를 파일로 내보냅니다. + 저장소 내보내기 + 저장소 목록을 파일에서 가져옵니다. + \ No newline at end of file diff --git a/core/common/src/main/res/values-lt/strings.xml b/core/common/src/main/res/values-lt/strings.xml new file mode 100644 index 0000000..d19910f --- /dev/null +++ b/core/common/src/main/res/values-lt/strings.xml @@ -0,0 +1,215 @@ + + + Veiksmas nepavyko + Adresas + Visos programėlės + Visos jūsų programėlės yra atnaujintos + Juoda + Autoriaus el. paštas + Pakeitimų žurnalas + Pakeitimai + Tamsi + + Diena + Dienos + Dienų + + Ištrinti + Aprašymas + Išsami informacija + Ignoruoti visas naujas versijas + Ignoruoti šią versiją + Ši versija pasirašyta kitu sertifikatu nei jūsų įrenginyje įdiegtas sertifikatas. Pirmiausia jį pašalinkite. + Pranešti apie naujas programėlių versijas + Išsaugoti + Rodyti senesnes versijas + Pirminis kodas + Nepasirašyta + Versijos + Naujausia + Atnaujinti viską + Įdiegtos programėlės + Rūšiavimas ir filtravimas + Naujos programėlės + Rodyti daugiau + Pasirašyta naudojant nesaugų algoritmą + Dalintis + Dydis + Sinchronizuojama + Nežinoma klaida. + Ieškoti + Parašas %s + Praleisti + Sistemos + Temos + Rūšiavimo tvarka + Šaltinio kodas nebepasiekiamas + Siūloma + Naujiniai + Sinchronizuojama %s… + Stebi arba praneša apie jūsų veiklą + Nežinoma + Nežinoma: %s + Nestabilūs atnaujinimai + Siūlyti įdiegti nestabilias versijas + Nepatvirtinta + Atnaujinti + Trūksta vartotojo vardo + Indekso patvirtinti nepavyko. + Versija + Kas naujo + Kalba + Tema + Pašalinti + Vartotojo vardas + Versija %s + Laukiama, kol bus pradėtas atsisiuntimas… + Interneto svetainė + Personalizavimas + Rodyti mažiau + Anti-ypatybės + Nepavyko sinchronizuoti %s + Rodyti pranešimą, kai bus pasiekiamos naujos versijos + Programėlių skaičius + Išsaugoma informacija… + Suderinama tik su %s + Nepavyko išanalizuoti indekso failo. + Apdorojama %1$s… + Projekto svetainė + Ekrano nuotraukos + Visada + Klaidų sekiklis + Patvirtinimas + Jungiamasi… + Nepavyko atsisiųsti %s + Programėlė + Nepavyko rasti šios programėlės + Atsisiunčiama + Netinkamas failo formatas. + Atšaukti + Paaukoti + Kita + Leidimai + Nustatymai + Neseniai atnaujinta + Tylusis diegimas + Suteikti šakninį leidimą tyliajam diegimui + Atsisiųsta %s + Atidaryti %s\? + Slaptažodis + Atsisiunčiama %s… + Turi reklamų + Turi saugumo spragų + + Valanda + Valandos + Valandų + + Gerai + Tik per Wi-Fi + Jūsų %1$s (API versija %2$d) nepalaikoma. %3$s + Minimali API versija yra %d. + Nesuderinama versija + Ši versija yra senesnė už jūsų įrenginyje įdiegtą versiją. Pirmiausia ją pašalinkite. + Maksimali API versija yra %d. + Nesuderinamos versijos + Jau egzistuoja + Autoriaus svetainė + Nepavyko patvirtinti %s + Jūsų %1$s platforma nepalaikoma. Palaikomos platformos: %2$s. + Trūksta slaptažodžio + +%d daugiau + Pridėti repozitoriją + Naršyti + Negalima redaguoti repozitorijos, nes ji dabar sinchronizuojama. + APK cleanup interval + Tikrinama repozitorija… + Ištrinti repozitoriją\? + Nepavyko patikrinti vientisumo. + Neteisingas adresas + Netinkamas pirštų atspaudų formatas + Netinkami metaduomenys. + Netinkami leidimai. + Netinkamas parašas. + Netinkamas vartotojo vardo formatas + Paleisti + Licencija + %s licencija + Šviesi + Nuorodos + Sąrašo animacijos + Rodyti sąrašo animaciją pagrindiniame puslapyje + Sujungiama %s + Pavadinimas + Tinklo klaida + Niekada + Yra naujų programėlių versijų + + %d programėlė turi naują versiją. + %d programėlės turi naujas versijas. + %d programėlių turi naujas versijas. + + Nėra pasiekiamų programėlių + Nėra įdiegtų programėlių + Aprašymo nėra + Nepavyko rasti tokių programėlių + Repozitorija + Nepasirašyta. Nepavyko patikrinti programėlių sąrašo. Būkite atsargūs atsisiųsdami programėles iš nepasirašytų repozitorijų. + Sinchronizuoti repozitorijas + Automatiškai sinchronizuoti repozitorijas + Bakstelėkite, kad įdiegtumėte. + Repozitorijos + Ši repozitorija dar nebuvo naudojama. Įjunkite ją, kad peržiūrėtumėte joje esančias programėles. + Reikalauja %s + Parengta derinimui + Padėkos + Turi ne „libre“ medijos + Period to check and remove downloaded files + Redaguoti repozitoriją + Pirštų atspaudai + Turi ne „libre“ priklausomybių + Netinkamas serverio atsakymas. + HTTP įgaliotasis serveris + Trūkstamos funkcijos. + Įdiegti + Diegimo tipai + Diegimo priemonė + Sesijos diegimo programa + Šakninė diegimo programa + Shizuku diegimo programa + Įdiegta + Rodyti su įrenginiu nesuderinamas programėlės versijas + Nesuderinama su %s + Senoji diegimo programa + Nuoroda nukopijuota į iškarpinę + Nėra įgaliotojo serverio + Tik naudojant Wi-Fi ir prijungus krauti + Skatina ne „libre“ tinklo paslaugas + Įgaliotasis serveris + Įgaliotojo serverio adresas + Įgaliotojo serverio prievadas + Pateikė %s + Skatina ne „libre“ programinę įrangą + Pasirinkite alternatyvų šaltinį + SOCKS įgaliotasis serveris + Tikslas + Pradinis pirminis kodas nėra visiškai „libre“ + Naršyti + Įgaliotojo serverio tipas + Nepavyko atlikti tam tikrų veiksmų. + Neturite interneto ryšio + Leisti viršutinei programėlių juostai išsiskleisti + Leisti viršutinei programėlių juostai išsiskleisti ir susiskleisti + Automatinis programų atnaujinimas + Pabandykite automatiškai įdiegti naujinimus + Diegimas + Iš naujo paleiskite LeOS-Droid, kad pamatytumėte pakeitimus + Laukiama, kol bus pradėtas diegimas… + Mėgstamiausi + Saugykla nepasiekiama + Priversti valyti + Išvalo perteklinius failus + Įgalinti saugyklą + Medžiaga Tu + Naudokite medžiaga tu spalvų temą + \ No newline at end of file diff --git a/core/common/src/main/res/values-lv/strings.xml b/core/common/src/main/res/values-lv/strings.xml new file mode 100644 index 0000000..72a0eed --- /dev/null +++ b/core/common/src/main/res/values-lv/strings.xml @@ -0,0 +1,215 @@ + + + Šī versija ir parakstīta ar citu sertifikātu, nevis jūsu ierīcē instalēto. Vispirms atinstalējiet to. + Instalēšanas veidi + Rādīt paziņojumu, kad ir pieejamas jaunas versijas + Nederīga adrese + Nederīgs pirkstu nospiedumu formāts + Tīkla kļūda + Vai atvērt %s\? + Apvieno %s + Apraksts nav pieejams + Nesen atjaunināts + Meklēt + Nepieciešams %s + Parādīt vairāk + Šis repozitorijs vēl nav izmantota. Ieslēdziet to, lai skatītu tajā esošās lietojumprogrammas. + Atļaut root atļauju klusai instalēšanai + Saglabāt + Ekrānuzņēmumi + Parakstīts, izmantojot nedrošu algoritmu + Paraksts %s + Indeksu nevarēja apstiprināt. + Pievienot repozitoriju + Adrese + Visas aplikācijas + Visas jūsu aplikācijas ir atjauninātas + Jau eksistē + Vienmēr + Melns + Pretīpašības + Aplikācija + Nevarēja atrast šo aplikāciju + Autora e-pasts + Autora vietne + Izpētīt + Kļūdu izsekotājs + Atcelt + Izmaiņu žurnāls + Izmaiņas + Notiek repozitorija pārbaude… + Sastādīts atkļūdošanai + Apstiprinājums + Notiek savienojuma izveide… + Satur nebrīvus medijus + Nevarēja sinhronizēt %s + Nevarēja apstiprināt %s + Kredīts + Tumšs + + dienas + diena + dienas + + Dzēst + Apraksts + Ziedot + Lejupielādēts %s + Lejupielādē + Notiek %s lejupielāde… + Rediģēt repozitoriju + Pirkstu nospiedums + Ir nebrīvas atkarības + Ir drošības ievainojamības + Nederīga servera atbilde. + + Stundas + Stundu + Stundas + + Ignorēt šo versiju + Jūsu %1$s (API versija %2$d) netiek atbalstīta. %3$s + Maksimālā API versija ir %d. + Minimālā API versija ir %d. + Trūkst funkcijas. + Jūsu %1$s platforma netiek atbalstīta. Atbalstītās platformas: %2$s. + Nesaderīga versija + Nesaderīgas versijas + Rādīt aplikācijas versijas, kas nav saderīgas ar ierīci + Nesaderīgs ar %s + Instalēt + Instalētājs + Mantotais instalētājs + Sesijas instalētājs + Sakņu instalētājs + Shizuku instalētājs + Instalēts + Nevarēja pārbaudīt integritāti. + Nederīgi metadati. + Nederīgas atļaujas. + Nederīgs paraksts. + Nederīgs lietotājvārda formāts + Palaist + Licence + %s licence + Gaisma + Saite ir kopēta starpliktuvē + Saites + Animāciju saraksts + Rādīt saraksta animāciju galvenajā lapā + Vārds + Nekad + Pieejamas jaunas aplikācijas versijas + + %d aplikācijām ir jaunas versijas. + %d aplikācijai ir jauna versija. + %d aplikācijām ir jaunas versijas. + + Nav pieejamu aplikāciju + Nav instalētas aplikācijas + Nevarēja atrast nevienu šādu aplikāciju + Nav starpniekservera + Paziņot par jaunām aplikāciju versijām + Aplikāciju skaits + Labi + Saderīgs tikai ar %s + Tikai Wi-Fi tīklā + Tikai Wi-Fi un uzlādes režīmā + Cits + Nevarēja parsēt indeksa failu. + Parole + Trūkst paroles + Atļaujas + +%d vairāk + Iestatījumi + Notiek %1$s apstrāde… + Projekta vietne + Veicina maksas tīkla pakalpojumus + Reklamē maksas programmatūru + Nodrošina %s + Starpniekserveris + Starpniekservera saimniekdators + Starpniekservera ports + Starpniekservera veids + Repozitorijas + Repozitorijs + Neparakstīts. Nevarēja pārbaudīt lietojumprogrammu sarakstu. Esiet piesardzīgs, lejupielādējot lietojumprogrammas no neparakstītām repozitorijiem. + Klusā instalēšana + Notiek informācijas saglabāšana… + Izvēlieties spoguli + Dalīties + Rādīt vecākas versijas + Izmērs + Izlaist + SOCKS starpniekserveris + Šķirošanas secība + Avota kods + Avota kods vairs nav pieejams + Ieteikts + Sinhronizēt repozitorijus + Automātiski sinhronizēt repozitorijus + Sinhronizē + Notiek %s sinhronizēšana… + Sistēma + Pieskarieties, lai instalētu. + Mērķis + Tēma + Tēmas + Izseko vai ziņo par jūsu aktivitātēm + Atinstalēt + Nezināms + Nezināma kļūda. + Nezināms: %s + Neparakstīts + Nestabili atjauninājumi + Ieteikt instalēt nestabilas versijas + Nepārbaudīts + Atjaunināt + Atjauninājumi + Augšējā avota kods nav bezmaksas + Lietotājvārds + Trūkst lietotājvārda + Versija + Versija %s + Versijas + Gaida lejupielādes sākšanu… + Kas jauns + Tīmekļa vietne + Valoda + Personalizēšana + Rādīt mazāk + Jaunākais + Izpētīt + Atjaunināt visu + Instalētās aplikācijas + Kārtot & filtrēt + Jaunas aplikācijas + Darbība neizdevās + Nevar rediģēt repozitoriju, jo tas pašlaik tiek sinhronizēts. + APK cleanup interval + Nevarēja lejupielādēt %s + Period to check and remove downloaded files + Vai dzēst repozitoriju\? + Sīkāka informācija + Šī versija ir vecāka par jūsu ierīcē instalēto. Vispirms atinstalējiet to. + Nederīgs faila formāts. + Ir reklāmas + HTTP starpniekserveris + Ignorēt visas jaunās versijas + Ļaujiet paplašināties augšējā lietotņu joslā + Nespēj veikt noteiktas darbības. + Ļaujiet augšējā lietotņu joslā paplašināties un sabrukt + Jums nav interneta savienojuma + Automātiski atjaunināt lietotnes + Mēģiniet automātiski instalēt atjauninājumus + Instalēšana + Restartējiet LeOS-Droid, lai redzētu izmaiņas + Gaida instalēšanas sākšanu… + Izlase + Iespējot repozitoriju + Piespiedu tīrīšana + Materiāls Tu + Notīra liekos failus + Izmantojiet materiāls tu krāsu motīvu + Repozitorijs nav sasniedzams + \ No newline at end of file diff --git a/core/common/src/main/res/values-ml/strings.xml b/core/common/src/main/res/values-ml/strings.xml new file mode 100644 index 0000000..11ce0da --- /dev/null +++ b/core/common/src/main/res/values-ml/strings.xml @@ -0,0 +1,212 @@ + + + റദ്ദാക്കുക + വിലാസം + + ദിവസം + ദിവസങ്ങൾ + + വിശദാംശങ്ങൾ + സംഭാവനചെയ്യുക + കറുപ്പ് + പര്യവേക്ഷണം ചെയ്യുക + എപ്പോഴും + പ്രവർത്തനം പരാജയപ്പെട്ടു + ഇല്ലാതാക്കുക + ഇരുട്ട് + വിവരണം + സ്ഥിരീകരണം + ബന്ധിപ്പിക്കുന്നു… + മാറ്റങ്ങൾ + റെപ്പോസിറ്റോറി ചേർക്കുക + എല്ലാ ആപ്പ്ലിക്കേഷനുകളും + നിങ്ങളുടെ എല്ലാ അപ്പ്ലിക്കേഷനുകളും പുതിയവ ആണ് + പുതിയ അപ്പ്ലിക്കേഷനുകൾ + ആപ്പുകൾ സ്വയമേവ അപ്ഡേറ്റ് ചെയ്യുക + ബഗ് ട്രാക്കർ + ചേഞ്ച്ലോഗ് + ശേഖരം പരിശോധിക്കുന്നു… + APK cleanup interval + %s സാധൂകരിക്കാൻ കഴിഞ്ഞില്ല + + മണിക്കൂർ + മണിക്കൂറുകൾ + + HTTP പ്രോക്സി + സെഷൻ ഇൻസ്റ്റാളർ + റൂട്ട് ഇൻസ്റ്റാളർ + Shizuku ഇൻസ്റ്റാളർ + ഇൻസ്റ്റാൾ ചെയ്യുന്നു + അസാധുവായ അനുമതികൾ. + അസാധുവായ ഒപ്പ്. + പ്രിയപ്പെട്ടവ + ഇതിനകം നിലവിലുണ്ട് + വിരുദ്ധ സവിശേഷതകൾ + അപേക്ഷ + ആ ആപ്ലിക്കേഷൻ കണ്ടെത്താൻ കഴിഞ്ഞില്ല + ശേഖരം ഇപ്പോൾ സമന്വയിപ്പിക്കുന്നതിനാൽ എഡിറ്റ് ചെയ്യാൻ കഴിയില്ല. + സ്വതന്ത്രമല്ലാത്ത മാധ്യമങ്ങൾ അടങ്ങിയിരിക്കുന്നു + ഡീബഗ്ഗിംഗിനായി സമാഹരിച്ചത് + ശേഖരം ഇല്ലാതാക്കണോ\? + %s ഡൗൺലോഡ് ചെയ്തു + ഡൗൺലോഡ് ചെയ്യുന്നു + അസാധുവായ ഫയൽ ഫോർമാറ്റ്. + പരസ്യമുണ്ട് + വിരലടയാളം + നോൺ-ഫ്രീ ഡിപൻഡൻസികൾ ഉണ്ട് + ഏറ്റവും കുറഞ്ഞ API പതിപ്പ് %d ആണ്. + ഇൻസ്റ്റാൾ ചെയ്തു + സമഗ്രത പരിശോധിക്കാൻ കഴിഞ്ഞില്ല. + മെറ്റാഡാറ്റ അസാധുവാണ്. + അസാധുവായ ഉപയോക്തൃനാമ ഫോർമാറ്റ് + ചില പ്രവർത്തനങ്ങൾ നടത്താൻ കഴിയുന്നില്ല. + ലോഞ്ച് + ലൈസൻസ് + ശേഖരം പ്രവർത്തനക്ഷമമാക്കുക + നിർബന്ധിച്ച് വൃത്തിയാക്കുക + അനാവശ്യ ഫയലുകൾ വൃത്തിയാക്കുന്നു + ഈ പതിപ്പ് നിങ്ങളുടെ ഉപകരണത്തിൽ ഇൻസ്റ്റാൾ ചെയ്തതിനേക്കാൾ പഴയതാണ്. ആദ്യം അത് അൺഇൻസ്റ്റാൾ ചെയ്യുക. + നിങ്ങളുടെ %1$s പ്ലാറ്റ്‌ഫോം പിന്തുണയ്ക്കുന്നില്ല. പിന്തുണയ്ക്കുന്ന പ്ലാറ്റ്‌ഫോമുകൾ: %2$s. + ഈ പതിപ്പ് നിങ്ങളുടെ ഉപകരണത്തിൽ ഇൻസ്‌റ്റാൾ ചെയ്‌തതിൽ നിന്ന് വ്യത്യസ്തമായ ഒരു സർട്ടിഫിക്കറ്റ് ഉപയോഗിച്ചാണ് ഒപ്പിട്ടിരിക്കുന്നത്. ആദ്യം അത് അൺഇൻസ്റ്റാൾ ചെയ്യുക. + അനുയോജ്യമല്ലാത്ത പതിപ്പ് + പൊരുത്തപ്പെടാത്ത പതിപ്പുകൾ + എല്ലാ പുതിയ പതിപ്പുകളും അവഗണിക്കുക + ഈ പതിപ്പ് അവഗണിക്കുക + നിങ്ങളുടെ %1$s (API പതിപ്പ് %2$d) പിന്തുണയ്ക്കുന്നില്ല. %3$s + പരമാവധി API പതിപ്പ് %d ആണ്. + സവിശേഷതകൾ നഷ്‌ടമായി. + %s-മായി പൊരുത്തപ്പെടുന്നില്ല + ഉപകരണവുമായി പൊരുത്തപ്പെടാത്ത ആപ്ലിക്കേഷൻ പതിപ്പുകൾ കാണിക്കുക + ഇൻസ്റ്റാൾ ചെയ്യുക + ഇൻസ്റ്റലേഷൻ തരങ്ങൾ + ഇൻസ്റ്റാളർ + ലെഗസി ഇൻസ്റ്റാളർ + %s സമന്വയിപ്പിക്കാൻ കഴിഞ്ഞില്ല + ക്രെഡിറ്റുകൾ + ശേഖരം എഡിറ്റ് ചെയ്യുക + സുരക്ഷാ പാളിച്ചകൾ ഉണ്ട് + അസാധുവായ സെർവർ പ്രതികരണം. + ടോപ്പ് ആപ്പ് ബാർ വികസിപ്പിക്കാൻ അനുവദിക്കുക + മുകളിലെ ആപ്പ് ബാർ വികസിപ്പിക്കാനും ചുരുക്കാനും അനുവദിക്കുക + രചയിതാവിന്റെ ഇമെയിൽ + രചയിതാവിന്റെ വെബ്സൈറ്റ് + Period to check and remove downloaded files + %s ഡൗൺലോഡ് ചെയ്യാനായില്ല + അപ്ഡേറ്റുകൾ സ്വയമേവ ഇൻസ്റ്റാൾ ചെയ്യാൻ ശ്രമിക്കുക + %s ഡൗൺലോഡ് ചെയ്യുന്നു… + അസാധുവായ വിലാസം + വിരലടയാള ഫോർമാറ്റ് അസാധുവാണ് + ലഭ്യമായ അപ്ലിക്കേഷനുകളൊന്നുമില്ല + പാസ്‌വേഡ് കാണുന്നില്ല + അനുമതികൾ + %s ആവശ്യമാണ് + മാറ്റങ്ങൾ കാണുന്നതിന് LeOS-Droid പുനരാരംഭിക്കുക + സോക്സ് പ്രോക്സി + അടുക്കൽ ക്രമം + സിസ്റ്റം + ഇൻസ്റ്റാൾ ചെയ്യാൻ ടാപ്പ് ചെയ്യുക. + നിങ്ങളുടെ പ്രവർത്തനം ട്രാക്ക് ചെയ്യുകയോ റിപ്പോർട്ടുചെയ്യുകയോ ചെയ്യുന്നു + അജ്ഞാത പിശക്. + അജ്ഞാതം: %s + ഒപ്പിടാത്തത് + ഇൻസ്റ്റാളേഷൻ ആരംഭിക്കാൻ കാത്തിരിക്കുന്നു… + ആരായുക + എല്ലാം അപ്ഡേറ്റ് ചെയ്യുക + ശരി + രക്ഷിക്കും + Material You + വൈ-ഫൈയിൽ മാത്രം + സോഴ്സ് കോഡ് + നിർദ്ദേശിച്ചു + അൺഇൻസ്റ്റാൾ ചെയ്യുക + അസ്ഥിരമായ അപ്ഡേറ്റുകൾ + വെബ്സൈറ്റ് + വ്യക്തിഗതമാക്കൽ + ലിങ്കുകൾ + ലിസ്റ്റ് ആനിമേഷനുകൾ + ലിങ്ക് ക്ലിപ്പ്ബോർഡിലേക്ക് പകർത്തി + പ്രധാന പേജിൽ ലിസ്റ്റ് ആനിമേഷൻ കാണിക്കുക + + %d അപ്ലിക്കേഷനും ഒരു പുതിയ പതിപ്പ് ഉണ്ട്. + %d അപ്ലിക്കേഷനും പുതിയ പതിപ്പുകൾ ഉണ്ട്. + + അപ്ലിക്കേഷനുകളുടെ പുതിയ പതിപ്പുകളെക്കുറിച്ച് അറിയിക്കുക + %s എന്നതുമായി പൊരുത്തപ്പെടുന്നു + ഇൻസ്റ്റാളുചെയ്ത അപ്ലിക്കേഷനുകളൊന്നുമില്ല + പ്രോക്സി ഇല്ല + പുതിയ പതിപ്പുകൾ ലഭ്യമാകുമ്പോൾ ഒരു അറിയിപ്പ് കാണിക്കുക + വൈഫൈയിലും ചാർജിംഗിലും മാത്രം + അടുത്തിടെ അപ്ഡേറ്റ് ചെയ്തത് + ഈ ശേഖരം ഇതുവരെ ഉപയോഗിച്ചിട്ടില്ല. ഇതിലെ ആപ്ലിക്കേഷനുകൾ കാണുന്നതിന് അത് ഓണാക്കുക. + പങ്കിടുക + റിപ്പോസിറ്ററികൾ സ്വയമേവ സമന്വയിപ്പിക്കുക + ഒപ്പിടാത്തത്. ആപ്ലിക്കേഷൻ ലിസ്റ്റ് പരിശോധിക്കാൻ കഴിഞ്ഞില്ല. ഒപ്പിടാത്ത റിപ്പോസിറ്ററികളിൽ നിന്ന് ആപ്ലിക്കേഷനുകൾ ഡൗൺലോഡ് ചെയ്യുന്നത് ശ്രദ്ധിക്കുക. + അജ്ഞാതം + നിശബ്ദ ഇൻസ്റ്റാളേഷൻ + ലക്ഷ്യം + അസ്ഥിരമായ പതിപ്പുകൾ ഇൻസ്റ്റാൾ ചെയ്യാൻ നിർദ്ദേശിക്കുക + നിശബ്ദ ഇൻസ്റ്റാളുകൾക്ക് റൂട്ട് അനുമതി അനുവദിക്കുക + കൂടുതൽ കാണിക്കുക + വിശദാംശങ്ങൾ സംരക്ഷിക്കുന്നു… + തിരയുക + ക്രമീകരണങ്ങൾ + ഒപ്പ് %s + സുരക്ഷിതമല്ലാത്ത അൽഗോരിതം ഉപയോഗിച്ചാണ് ഒപ്പിട്ടത് + ഒരു കണ്ണാടി തിരഞ്ഞെടുക്കുക + പഴയ പതിപ്പുകൾ കാണിക്കുക + ഒഴിവാക്കുക + ഉറവിട കോഡ് ഇനി ലഭ്യമല്ല + റിപ്പോസിറ്ററികൾ സമന്വയിപ്പിക്കുക + %s സമന്വയിപ്പിക്കുന്നു… + തീം + തീമുകൾ + സൂചിക സാധൂകരിക്കാനായില്ല. + അപ്ഡേറ്റ് ചെയ്യുക + അപ്ഡേറ്റുകൾ + പതിപ്പ് + പതിപ്പ് %s + പതിപ്പുകൾ + ഭാഷ + ഇൻസ്റ്റാൾ ചെയ്ത ആപ്ലിക്കേഷനുകൾ + അടുക്കുക & ഫിൽട്ടർ ചെയ്യുക + %s ലൈസൻസ് + ഭാരംകുറഞ്ഞ + മറ്റേതായ + സൂചിക ഫയൽ പാഴ്സുചെയ്യാൻ കഴിഞ്ഞില്ല. + +%d കൂടുതൽ + സ്ക്രീൻഷോട്ടുകൾ + ഡൗൺലോഡ് ആരംഭിക്കാൻ കാത്തിരിക്കുന്നു… + പുതിയതെന്താണ് + വലിപ്പം + സമന്വയിപ്പിക്കുന്നു + അപ്സ്ട്രീം സോഴ്സ് കോഡ് സൗജന്യമല്ല + ഉപയോക്തൃനാമം + ഉപയോക്തൃനാമം കാണുന്നില്ല + Material you കളർ തീം ഉപയോഗിക്കുക + %1$s പ്രോസസ്സ് ചെയ്യുന്നു… + പദ്ധതി വെബ്സൈറ്റ് + നോൺ-ഫ്രീ നെറ്റ്‌വർക്ക് സേവനങ്ങൾ പ്രോത്സാഹിപ്പിക്കുന്നു + സ്വതന്ത്രമല്ലാത്ത സോഫ്റ്റ്‌വെയർ പ്രോത്സാഹിപ്പിക്കുന്നു + %s നൽകിയത് + പ്രോക്സി + പ്രോക്സി ഹോസ്റ്റ് + പ്രോക്സി പോർട്ട് + പ്രോക്സി തരം + ശേഖരങ്ങൾ + സംഭരണിയാണ് + ശേഖരം ലഭ്യമല്ല + കുറവ് കാണിക്കുക + ഏറ്റവും പുതിയ + %s തുറക്കുന്നു\? + %s ലയിപ്പിക്കുന്നു + പേര് + നെറ്റ്വർക്ക് പിശക് + ഒരിക്കലും + ലഭ്യമായ അപ്ലിക്കേഷനുകളുടെ പുതിയ പതിപ്പുകൾ + വിവരണം ലഭ്യമല്ല + നിങ്ങൾക്ക് ഇന്റർനെറ്റ് കണക്ഷനില്ല + അത്തരം അപ്ലിക്കേഷനുകൾ കണ്ടെത്താൻ കഴിഞ്ഞില്ല + അപ്ലിക്കേഷനുകളുടെ എണ്ണം + പാസ്വേഡ് + പരിശോധിച്ചുറപ്പിച്ചിട്ടില്ല + \ No newline at end of file diff --git a/core/common/src/main/res/values-nb-rNO/strings.xml b/core/common/src/main/res/values-nb-rNO/strings.xml new file mode 100644 index 0000000..1ba4d5b --- /dev/null +++ b/core/common/src/main/res/values-nb-rNO/strings.xml @@ -0,0 +1,224 @@ + + + Finnes allerede + Alltid + Svart + Utviklerens e-postadresse + Utviklerens nettside + Endringslogg + Kan ikke redigere pakkebrønnen siden den synkroniseres akkurat nå. + Kontrollerer depotet… + Kompilert for avlusing + Bekreftelse + Kunne ikke laste ned %s + Kobler til… + Inneholder ufri media + Slett depotet\? + Lastet ned %s + Laster ned + Fingeravtrykk + Har reklame + Har ufrie avhengigheter + Har sikkerhetssårbarheter + Ugyldig tjenersvar. + Ignorer alle nye versjoner + Ignorer denne versjonen + Din %1$s (API-versjon %2$d) støttes ikke. %3$s + Maksimal API-versjon er %d. + Denne versjonen er eldre enn den som er installert på enheten din. Avinstaller den først. + Minste tillatte API-versjon er %d. + Din %1$s-plattform støttes ikke. Støttede plattformer er %2$s. + Ukompatible versjoner + Ukompatibelt med %s + Kunne ikke sjekke filens gyldighet. + Lys + Ugyldig brukernavnsformat + %s-lisens + Lenke kopiert + Listeanimasjoner + Vis liste animasjon på hovedsiden + Nye versjoner av programmer tilgjengelig + Ingen programmer tilgjengelig + Ingen programmer installert + Ingen beskrivelse tilgjengelig + Åpne %s\? + Fant ingen slike programmer + Gi merknad om nye versjoner av programmer + Antall programmer + Kun kompatibelt med %s + Andre + Passord mangler + Tilganger + +%d til + Innstillinger + Behandler %1$s … + Promoterer ufrie nettverkstjenester + Tilbudt av %s + Mellomtjenervert + Mellomtjenerport + Mellomtjenertype + Nylig oppdatert + Pakkebrønn + Krever %s + Usignert. Kunne ikke bekrefte programlisten. Vær forsiktig med å laste ned programmer fra usignerte pakkebrønner. + Stille installasjon + Tillat rot-tilganger for stille installasjoner + Skjermavbildninger + Søk + Velg et speil + Del + Vis mer + Vis eldre versjoner + Lagre + Hopp over + SOCKS-mellomtjener + Kildekode + Foreslått + Signert ved bruk av en utrygg algoritme + Synkroniserer + Synkroniserer %s… + System + Mål + Synkroniser pakkebrønner automatisk + Drakter + Sporer eller rapporterer din aktivitet + Ukjent feil. + Ukjent: %s + Usignert + Foreslå installasjon av ustabile versjoner + Ubekreftet + Brukernavn + Kildekoden oppstrøms er ikke helt fri + Nettside + Kunne ikke bekrefte indeksen. + Versjon %s + Venter på å laste ned… + Handlingen mislyktes + Alle appene dine er oppdatert + Kjør + Vis en merknad når nye versjoner er tilgjengelig + Legg til pakkebrønn + Bidragsytere + Laster ned %s … + Nettverksfeil + Ingen mellomtjener + Kun på Wi-Fi + Mellomtjener + Versjon + Versjoner + Detaljer + Manglende funksjoner. + Finner ikke det programmet + Endringer + Kunne ikke synkronisere %s + Mørk + Beskrivelse + Doner + Rediger pakkebrønn + Vis programversjoner som ikke er kompatible med enheten + Installert + Ugyldig metadata. + + %d program har en ny versjon. + %d programmer har nye versjoner. + + Prosjektnettside + Ukjent + Brukernavn mangler + Alle programmer + Feilsporer + Avbryt + Installer + Ugyldig fingeravtrykksformat + Ugyldige tilganger. + Ugyldig signatur. + Lisens + Lenker + Navn + Passord + Adresse + Anti-funksjoner + Program + Utforsk + Kunne ikke bekrefte %s + Slett + Ugyldig filformat. + HTTP-mellomtjener + Ukompatibel versjon + Ugyldig adresse + Fletter %s + Aldri + Installasjonstyper + Sorteringsrekkefølge + Synkroniser kodelagre + Pakkebrønner + Lagrer detaljer … + Størrelse + Trykk for å installere. + Drakt + Avinstaller + %s-signatur + Ustabile oppgraderinger + Denne versjonen er signert med et annet sertifikat enn det som er installert på enheten din. Avinstaller det først. + OK + Kunne ikke tolke indeksfilen. + Promoterer ufri programvare + Kildekoden er ikke lenger tilgjengelig + Oppgraderinger + Seneste + Denne pakkebrønnen har ikke blitt brukt enda. Skru den på for å vise programmene i den. + Oppgradering + Språk + Personalisering + Vis mindre + Sorter og filtrer + Utforsk + APK cleanup interval + Period to check and remove downloaded files + + Dag + Dager + + + Time + Timer + + Installasjonsprogram + Gammeldags + Økt + Rot-tilgang + Shizuku + Kun på Wi-Fi og når innplugget + Nyeste + Oppdater alle + Installerte + Nye + Tillat utvidelse av toppfelt + Du mangler tilkobling til Internett + Noen av handlingene kunne ikke utføres. + Tillat toppfeltet å utvide og folde seg sammen + Bruk «materiell deig»-fargedrakt + Materiell deig + Favoritter + Pakkebrønn kan ikke nås + Skru på pakkebrønnen + Påtving opprenskning + Fjerner overflødige filer + Prøv å installere nye versjoner automatisk + Installer nye versjoner av programmer automatisk + Venter på å starte installasjon … + Installerer + Start LeOS-Droid på ny for å ta i bruk endringene + Har ufrie komponenter + Hjemmeskjermsdragning + Inneholder sensurerbart innhold + Shizuku kjører ikke + Kunne ikke koble til tjener + Tjeneren kunne ikke tilby ny pakke. + Kopier + Mellomtjenerport må være et heltall + Tillat bruker å dra mellom sider på hjemmeskjermen + Følgende pakkebrønner ble funnet + Spesiell takk til + Shizuku er ikke installert + \ No newline at end of file diff --git a/core/common/src/main/res/values-nl/strings.xml b/core/common/src/main/res/values-nl/strings.xml new file mode 100644 index 0000000..1225c15 --- /dev/null +++ b/core/common/src/main/res/values-nl/strings.xml @@ -0,0 +1,215 @@ + + + Adres + Alle apps zijn de nieuwste versie + Bestaat al + Alle apps + Actie mislukt + Bronopslagruimte toevoegen + Altijd + AMOLED + Antifuncties + Applicatie + Website van auteur + Beschikbaar + Gecompileerd voor debugging + Bevestiging + Bijwerken + Niet gecontroleerd + Gebruikersnaam + Upstream broncode is niet vrij + Wachten om te beginnen met downloaden… + Wat is nieuw + Webside + App niet gevonden + E-mail van de auteur + Versies + Bijwerkingen + Annuleer + Kan het archief niet bewerken, omdat het nu aan het synchroniseren is. + Ik controleer de opslagplaats… + Wijzigingen + Wijzigingsoverzicht + Versie + Versie %s + Gebruikersnaam ontbreekt + Stel voor onstabiele versies te installeren + De index kon niet worden gevalideerd. + Onbekend: %s + Niet tekend + Niet stabiele updates + Foutspeurder (bug tracker) + Verbinden… + Bevat niet-vrije media + Kon %s niet opslaan + Kon %s niet gelijkschakelen + Kon %s niet vergunnen + Dankbetuigingen + Donker + Verwijderen + Opslagplaats verwijderen\? + Beschrijving + Details + Vingerafdruk + Heeft reclames + Heeft niet-vrije afhankelijkheden + Heeft kwetsbaarheden in beveiliging + Ongeldige terugkoppeling van server. + HTTP proxy + Alle nieuwe versies negeren + Deze versie overslaan + Uw %1$s (API versie %2$d) wordt niet ondersteund. %3$s + De hoogte API versie is %d. + De laagste API versie is %d. + Ontbrekende onderdelen. + Deze versie is ouder dan die ingestald op uw toestel. Verwijder die eerst. + Deze versie is met een ander certificaat ondertekend dan de versie op uw toestel. Verwijder die eerst. + Onverenigbare versie + Onverenigbare versies + Toon versies die onverenigbaar zijn met dit toestel + Onverenigbaar met %s + Installeren + Installatietypen + Geïnstalleerd + Kon de echtheid niet nagaan. + Ongeldig adres + Ongeldige metadata. + Ongeldig type van vingerafdruk + Ongeldige toestemmingen. + Ongeldige ondertekening. + Opstarten + Licentie + %s licentie + Licht + Link gekopieerd naar klembord + Toon animaties + %s samenvoegen + Nooit + Nieuwe versies van toepassingen beschikbaar + Geen toepassingen beschikbaar + Geen toepassingen geïnstalleerd + Geen beschrijving beschikbaar + Geen proxy + Waarschuw bij nieuwe versies van applicaties + Verzend een vermelding wanneer nieuwe versies beschikbaar zijn + Aantal applicaties + Oké + Werkt alleen met %s + Alleen bij Wi-Fi + Andere + Kon het indexbestand niet ontleden. + Wachtwoord + Wachtwoord ontbreekt + Toestemmingen + %1$s aan het verwerken… + Project webstede + Gebruikt niet-vrije netwerk diensten + Proxy type + Pas bijgewerkt + Opslagruimtes + Opslagplaats + Vereist %s + Geef root-toestemming voor stille installaties + Opslaan + Details worden opgeslagen… + Schermafbeeldingen + Delen + Toon meer + Ondertekening %s + Ondertekend met een onveilig algoritme + SOCKS proxy + Volgorde van rangschikken + Broncode + Broncode niet meer beschikbaar + Voorgesteld + Opslagplaatsen gelijkschakelen + Gelijkschakelen + %s aan het gelijkschakelen… + Systeem + Klik om te installeren. + Doel + Deelt uw gedrag of houdt het bij + Verwijderen + Onbekend + Onbekende fout. + Taal + Eigen voorkeuren + Minder tonen + Geïnstalleerde applicaties + Doneren + Opslagplaats bewerken + Ongeldig bestandstype. + Aan het opslaan + Uw %1$s platform wordt niet ondersteund. Dit zijn de ondersteunde platforms: %2$s. + Koppelingen + + %d toepassing heeft een nieuwe versie. + %d toepassingen hebben nieuwe versies. + + Animatie inschakelen op lijst op voorblad + Kon zulke toepassingen niet vinden + +%d meer + Instellingen + Toon oudere versies + Naam + Grootte + Netwerk fout + %s openen\? + Proxy poort + Stille installatie + Aangeboden door %s + Gebruikt niet-vrije software + Proxy + Proxy gastheer + Overslaan + Niet ondertekend. Kon de applicatie lijst niet bevestigen. Wees voorzichtig met het installeren van applicaties van niet ondertekende opslagplaatsen. + Thema\'s + Verkennen + Ordenen en filteren + Zoeken + Opslagplaatsen vanzelf gelijkschakelen + Thema + Nieuwste + Nieuwe applicaties + Alles bijwerken + Deze opslagplaats is nog niet gebruikt. Schakel het in om de applicaties erin te bekijken. + Ongeldige vorm van gebruikersnaam + Kies een spiegel + %s aan het opslaan… + %s opgeslagen + Shizuku Installatie + Root Installatie + Installatie + Verouderde Installatie + Sessie Installatie + APK cleanup interval + Period to check and remove downloaded files + + Uur + Uren + + + Dag + Dagen + + Je hebt geen internetverbinding + Alleen bij Wi-Fi & Opladen + Niet in staat om bepaalde acties uit te voeren. + Laat de topbalk uitbreiden + Laat de topbalk uitbreiden en instorten + Apps automatisch bijwerken + Installeren + Start LeOS-Droid opnieuw om de wijzigingen te zien + Favorieten + Materiaal jij + Gebruik materiaal jij kleurthema + Schakel de opslagplaats in + Forceer opruimen + Probeer updates automatisch te installeren + Ruimt overbodige bestanden op + Opslagplaats onbereikbaar + Wachten om installatie te starten… + Server heeft nieuw pakket niet geleverd. + Kan geen verbinding maken met server + Heeft niet-vrije afhankelijkheden + \ No newline at end of file diff --git a/core/common/src/main/res/values-nn/strings.xml b/core/common/src/main/res/values-nn/strings.xml new file mode 100644 index 0000000..76f23a1 --- /dev/null +++ b/core/common/src/main/res/values-nn/strings.xml @@ -0,0 +1,217 @@ + + + Adresse + Alle appar + Finst alt + Legg til ei samling + App + Fann ikkje den appen + Ufunksjonar + Stadig + Mistaksporar + Utgjevarnettstad + Gransker samlinga… + Bind saman… + Kunne ikkje stadfeste %s + Om + Gje bort + Henta %s + Slett samlinga\? + Småting + Urett filformat. + Fingermerke + Har reklame + + Time + Timar + + Urett tenarsvar. + Brigde samling + Hopp over nye utgåver + Har ufrie trongar + Hopp over denne utgåva + Høgste stødd API-utgåve er %d. + Lægst stødd API-utgåve er %d. + Saknande funksjonar. + Innleggingsslag + Innleggingsvis + Urett adresse + Urett fingermerkeformat + Gamaldags + Økt + Rot + Shizuku + Innlagd + Kunne ikkje granske filas gildskap. + Urette tilgjenge. + Urett underskrift. + Køyr + Løyve + %s-løyve + Ljos + Lenkja skriven av til utklippstavla + Lenkjer + Listerørsler + Flettar %s + Sambandsmistak + Aldri + Nye utgåver av appar er tilgjengelege + + %d app har ei ny utgåve. + %d appar har nye utgåver. + + Fann ingen slike appar + Mengd appar + Greitt + Høver berre med %s + Berre på Wi-Fi + Berre på Wi-Fi og medan eininga lader + Saknar passord + Tilgjenge + +%d til + Innstillingar + Handsamar %1$s… + Prosjektnettstad + Fremjar ufrie sambandstenester + Fremjar ufri programvare + Tilboden av %s + Mellomtenarvert + Mellomtenarport + Mellomtenarslag + Samlingar + Samling + Opphav ikkje stadfesta. Kunne ikkje stadfeste applista. Ver varsam med å hente appar ifrå samlingar med ustadfesta opphav. + Hugs + Tyst innlegging + Gje rot-tilgjenge for tyste innleggingar + Hugsar småting… + Skjermbilete + Søk + Vis meir + Vis eldre utgåver + Del + Vel ein spegel + Storleik + Hopp over + SOCKS-mellomtenar + Ordningsrekkjefylgd + Kjeldekode + Ikkje stadfesta + Kjeldekoden er ikkje lenger tilgjengeleg + Synkroniser samlingar + Synkroniserer + Synkroniserer %s… + System + Trykk for å leggja inn. + Mål + Utsjånad + Utsjånadar + Slett + Ukjend + Ukjend mistak. + Ukjend: %s + Opphav ikkje stadfesta + Ustø oppdateringar + Gje framlegg om å leggja inn ustø oppdateringar + Oppstraumskjeldekoden er ikkje fri + Tilrådt + Lat samlingar synkronisera av seg sjølv + Sporar eller seier ifrå om kva du gjer + Innlagde appar + Nyaste + Vis mindre + Skriftmål + Nytt + Ventar på å hente… + Utgåve + Utgåve %s + Utgåver + Stell til + Oppdater alle + Sjå omkring + Gjerda mislukkast + Svart + Utgjevar e-post + Avbryt + Slett apk-filer etter + Stadfesting + Inneheld ufri media + Urett brukarnamnsformat + Mørk + + Dag + Dagar + + Slett + Utgreiing + Hentar + Hentar %s … + Nye appar + Skil ut & Sil ut + Brukarnamn + Nettstad + Saknar brukarnamn + Urett metadata. + Gransk + Kan ikkje brigde samlinga, då ho synkroniserer no. + Brigdelogg + Brigde + Kompilert for lysking + Slett henta appinnleggingsfiler etter ei viss stund + Kunne ikkje synkronisera %s + Kunne ikkje hente %s + Har tryggleikshòl + HTTP-mellomtenar + Nyleg oppdaterte + Din %1$s (API-utgåve %2$d) er ikkje stødd. %3$s + Din %1$s-bygnad er ikkje stødd. Stødde bygnadar: %2$s. + Utgåver som ikkje høver + Denne utgåva er eldre enn ho som er innlagd på eininga di. Slett ho først. + Opphavet til denne utgåva er stadfesta med eit anna løyve enn ho som alt er lagd inn på eininga di. Slett ho først. + Utgåva høver ikkje + Oppdateringar + Oppdater + Vis apputgåver som ikkje høver i eininga + Høver ikkje med %s + Legg inn + Vis listerørsler på hovudsida + Namn + Ingen appar er tilgjengelege + Inga utgreiing tilgjengeleg + Ingen mellomtenar + Ingen innlagde appar + Sei ifrå om nye apputgåver + Vis ein merknad når nye utgåver er tilgjengelege + Opne %s\? + Andre + Kunne ikkje granske indeksfila. + Krev %s + Passord + %s-opphavsstadfesting + Mellomtenar + Denne samlinga har ikkje vorte nytta endå. Slå ho på for å visa hennar appar. + Opphav stadfesta ved bruk av ein utrygg algoritme + Alle appane dine er av nyaste utgåve + Kunne ikkje stadfeste indeksen. + Kan ikkje gjere somme gjerder. + Du har inkje internettsamband + Lat applinja få utvide seg + Lat den øvste applinja få utvide og minke seg + Likar + Reins no + Slett uturvande filer + Når ikkje samlinga + Slå på samlinga + Nytt «Material You»-letar + Material You + Byrje om LeOS-Droid for å sjå brigde + Legg inn + Ventar på å leggja inn … + Oppdater appane sjølvverkande + Røyn å leggja inn oppdateringar sjølvverkande + Har ufrie delar + Shizuku køyrer ikkje + Shizuku er ikkje lagt inn + Har vakse innhald + Greidde ikkje å binda saman med tenaren + \ No newline at end of file diff --git a/core/common/src/main/res/values-or/strings.xml b/core/common/src/main/res/values-or/strings.xml new file mode 100644 index 0000000..7b66b20 --- /dev/null +++ b/core/common/src/main/res/values-or/strings.xml @@ -0,0 +1,233 @@ + + + ଠିକଣା + ସମସ୍ତ ଆପ୍ଲିକେସନ୍ ଗୁଡିକ + ସେହି ଅନୁପ୍ରୟୋଗ ଖୋଜି ପାଇଲା ନାହିଁ + ପରିବର୍ତ୍ତନ ଗୁଡିକ + ଅନ୍ଧାର + ଆଙ୍ଗୁଠି ଛାପ + %sମିଶ୍ରଣ ହେଉଛି + ନାମ + ଠିକ ଅଛି + କେବଳ %sସହିତ ସୁସଙ୍ଗତ + କେବଳ ୱାଇ-ଫାଇରେ + +%d ଅଧିକ + ପ୍ରକ୍ସି ପୋର୍ଟ + ସଂଗ୍ରହାଳୟ ଗୁଡ଼ିକ + ନୀରବ ସଂସ୍ଥାପନ ପାଇଁ ମୂଳ ଅନୁମତି ଦିଅନ୍ତୁ + ସ୍କ୍ରିନସଟ୍ + ପଠାନ୍ତୁ + ପୁରାତନ ସଂସ୍କରଣଗୁଡିକ ଦେଖାନ୍ତୁ + ଏକ ଅସୁରକ୍ଷିତ ଆଲଗୋରିଦମ ବ୍ୟବହାର କରି ଦସ୍ତଖତ + ଛାଡିଦିଅ + ପ୍ରସ୍ତାବିତ + ଥିମ୍ ଗୁଡ଼ିକ + ଅଣସଂସ୍ଥାପନ କରନ୍ତୁ + ଅଜଣା + ଉପଯୋଗକର୍ତ୍ତା ନାମ + ଉପଯୋଗକର୍ତ୍ତା ନାମ ନିଖୋଜ + ସଂସ୍କରଣ + ୱେବସାଇଟ୍ + କମ୍ ଦେଖନ୍ତୁ + ଅନୁସନ୍ଧାନ କରନ୍ତୁ + ସମସ୍ତ ଅଦ୍ୟତନ କରନ୍ତୁ + ସଂସ୍ଥାପିତ ପ୍ରୟୋଗଗୁଡ଼ିକ + ଫିଲ୍ଟର୍ ଏବଂ ସର୍ଟ କରନ୍ତୁ + ନୂତନ ପ୍ରୟୋଗଗୁଡ଼ିକ + ବିବରଣୀ + କାର୍ଯ୍ୟ ବିଫଳ ହେଲା + ସଂଗ୍ରହାଳୟ ଯୋଡନ୍ତୁ + ଆପଣଙ୍କର ସମସ୍ତ ଅନୁପ୍ରୟୋଗଗୁଡିକ ଅଦ୍ୟତନ ଅଟେ + ଆଗରୁ ଅଛି + ସର୍ବଦା + କଳା + ଆପ୍ଲିକେସନ୍ + ଖରାପ୍ ବୈଶିଷ୍ଟ୍ୟ ଗୁଡ଼ିକ + ଲେଖାକଙ୍କ ଇମେଲ୍ + ଲେଖକ ଙ୍କ ୱେବସାଇଟ୍ + ସନ୍ଧାନ + ବଗ୍ ଟ୍ରାକର୍ + ସଂଗ୍ରହାଳୟ ସଂପାଦନ କରିପାରିବ ନାହିଁ କାରଣ ଏହା ବର୍ତ୍ତମାନ ସିଙ୍କ କରୁଛି । + ବାତିଲ କରନ୍ତୁ + ବଦଳିଛି + APK କ୍ଲିନଅପ ଅନ୍ତରାଳ + ସଂଗ୍ରହାଳୟ ଯାଞ୍ଚ୍ ହେଉଛି… + ଆହରଣ ହୋଇଥିବା ଫାଇଲଗୁଡ଼ିକୁ ଯାଞ୍ଚ ଏବଂ ଅପସାରଣ କରିବା ପାଇଁ ଅବଧି + ଅଣ-ମୁକ୍ତ ମିଡିଆ ଧାରଣ କରେ + ବର୍ଣ୍ଣନା + ତ୍ରୁଟି ନିବାରଣ ପାଇଁ ସଂକଳିତ + ନିଶ୍ଚିତ କରନ୍ତୁ + ସଂଯୋଗ କରୁଛି … + %s ସଞ୍ଚୟ ହୋଇପାରୁନାହିଁ + ଡାଉନଲୋଡ୍ ଚାଲିଛି + %sସିଙ୍କ ହୋଇପାରୁନାହିଁ + %s ବାଇଧତା ହୋଇପାରିଲା ନାହିଁ + କ୍ରେଡିଟ୍ + + ଦିନ + ଦିନ ଗୁଡ଼ିକ + + ବିଲୋପ + ସଂଗ୍ରହାଳୟ ବିଲୋପ କରନ୍ତୁ \? + %s ଡାଉନଲୋଡ ହୋଇସାରିଛି + ଇଁବେଲିଡ ଫାଇଲ୍ ଫର୍ମାଟ୍ । + ଦାନ କରନ୍ତୁ + ସଂଗ୍ରହାଳୟ ସଂପାଦନ କରନ୍ତୁ + %s ଡାଉନଲୋଡ୍ ଚାଲିଛି… + ବିଜ୍ଞାପନ ଅଛି + ମାଗଣା ମୁକ୍ତ ନିର୍ଭରଶୀଳତା ଅଛି + ସୁରକ୍ଷା ଦୁର୍ବଳତା ଅଛି + + ଘଣ୍ଟାଏ + ଘଣ୍ଟା + + ଇନଭେଲିଡ ସର୍ଭର ପ୍ରତିକ୍ରିୟା । + HTTP ପ୍ରକ୍ସି + ସମସ୍ତ ନୂତନ ସଂସ୍କରଣକୁ ଉପେକ୍ଷା କରନ୍ତୁ + ଏହି ସଂସ୍କରଣକୁ ଅଗ୍ରାହ୍ୟ କରନ୍ତୁ + ଏହି ଡିଭାଇସ୍ ଆପଣଙ୍କ ଡିଭାଇସରେ ସଂସ୍ଥାପିତ ହୋଇଥିବା ଠାରୁ ପୁରାତନ ଅଟେ । ପ୍ରଥମେ ଏହାକୁ ସଂସ୍ଥାପନ କରନ୍ତୁ । + ତୁମର %1$s (API ସଂସ୍କରଣ %2$d) ସମର୍ଥନ କରୁନାହିଁ । %3$s + ସର୍ବାଧିକ API ସଂସ୍କରଣ ହେଉଛି %d । + ସର୍ବନିମ୍ନ API ସଂସ୍କରଣ ହେଉଛି %d । + ନଥିବା ବୈଶିଷ୍ଟ୍ୟଗୁଡିକ । + ତୁମର %1$s ପ୍ଲାଟଫର୍ମ ସମର୍ଥିତ ନୁହେଁ । ସମର୍ଥିତ ପ୍ଲାଟଫର୍ମ:%2$s। + ଏହି ଡିଭାଇସ୍ ଆପଣଙ୍କ ଡିଭାଇସରେ ସଂସ୍ଥାପିତ ହୋଇଥିବା ତୁଳନାରେ ଏକ ଭିନ୍ନ ସାର୍ଟିଫିକେଟ୍ ସହିତ ସାଇନ୍ ହୋଇଛି । ପ୍ରଥମେ ଏହାକୁ ସଂସ୍ଥାପନ କରନ୍ତୁ । + ପୁରୁଣା ସଂସ୍ଥାପକ + ସଂଯୋଗ ନକଲ ହୋଇଛି + ସମ୍ପ୍ରତି ଅଦ୍ୟତନ ହୋଇଛି + ଅସଙ୍ଗତ ସଂସ୍କରଣ + ଡିଭାଇସ୍ ସହିତ ଅସଙ୍ଗତ ପ୍ରୟୋଗ ସଂସ୍କରଣଗୁଡିକ ଦେଖାନ୍ତୁ + ସଂସ୍ଥାପକ + ଅଧିବେଶନ ସଂସ୍ଥାପକ + ସିଜୁକୁ ସଂସ୍ଥାପକ + ଇନଭେଲିଡ ମେଟାଡାଟା । + ଇନଭେଲିଡ ଅନୁମତି। + ଇନଭେଲିଡ ଦସ୍ତଖତ । + ଉଜ୍ଜଳ + ଅସଙ୍ଗତ ସଂସ୍କରଣ ଗୁଡ଼ିକ + %s ସହ ଅସଙ୍ଗତ + ସଂସ୍ଥାପନ କରନ୍ତୁ + ସଂସ୍ଥାପନ ପ୍ରକାର + ମୂଳ ସଂସ୍ଥାପକ + ସଂସ୍ଥାପିତ + ଅଖଣ୍ଡତା ଯାଞ୍ଚ କରିପାରିଲା ନାହିଁ । + ଇନଭେଲିଡ ଠିକଣା + ଇନଭେଲିଡ ଆଙ୍ଗୁଠି ଛାପ + ଆରମ୍ଭ + ଇନଭେଲିଡ ଉପଯୋଗକର୍ତ୍ତା ନାମ ଫର୍ମାଟ୍ + ଲାଇସେନ୍ସ + ମୁଖ୍ୟ ପୃଷ୍ଠାରେ ତାଲିକା ଆନିମେସନ୍ ଦେଖାନ୍ତୁ + %s ଲାଇସେନ୍ସ + ଆନିମେସନ୍ ତାଲିକା କର + ଲିଙ୍କ୍ ଗୁଡ଼ିକ + ନେଟୱର୍କ ତ୍ରୁଟି + କେବେନାହିଁ + ପ୍ରୟୋଗଗୁଡ଼ିକର ନୂତନ ସଂସ୍କରଣ ଉପଲବ୍ଧ + କୌଣସି ସଂସ୍ଥାପିତ ପ୍ରୟୋଗ ନାହିଁ + + %dପ୍ରୟୋଗର ଏକ ନୂତନ ସଂସ୍କରଣ ଅଛି । + %dପ୍ରୟୋଗ ଗୁଡ଼ିକର ନୂତନ ସଂସ୍କରଣ ଅଛି । + + କୌଣସି ଉପଲବ୍ଧ ପ୍ରୟୋଗ ନାହିଁ + କେବଳ ୱାଇ-ଫାଇ ଏବଂ ଚାର୍ଜିଂ ବେଳେ + କୌଣସି ବର୍ଣ୍ଣନା ଉପଲବ୍ଧ ନାହିଁ + ଏହିପରି କୌଣସି ପ୍ରୟୋଗ ଖୋଜି ପାଇଲା ନାହିଁ + କୌଣସି ପ୍ରକ୍ସି ନାହିଁ + ନୂତନ ସଂସ୍କରଣ ଉପଲବ୍ଧ ହେଲେ ଏକ ବିଜ୍ଞପ୍ତି ଦେଖାନ୍ତୁ + ପ୍ରୟୋଗ ସଂଖ୍ୟା + ଅନ୍ୟ + ଅଦ୍ୟତନ ପାଇଁ ବିଜ୍ଞପ୍ତି + ଇଣ୍ଡେକ୍ସ ଫାଇଲ୍ ପାର୍ସ କରିପାରିଲା ନାହିଁ । + %s କୁ ଖୋଲନ୍ତୁ \? + ପାସୱାର୍ଡ + ପାସୱାର୍ଡ ନିଖୋଜ + ଅନୁମତି ଗୁଡ଼ିକ + ସେଟିଂ ଗୁଡ଼ିକ + ପ୍ରକ୍ରିଆରତ %1$s… + ପ୍ରୋଜେକ୍ଟ ୱେବସାଇଟ୍ + ଅଣ-ମୁକ୍ତ ନେଟୱାର୍କ ସେବାକୁ ପ୍ରୋତ୍ସାହିତ କରେ + ଅଣ ମାଗଣା ସଫ୍ଟୱେର୍ କୁ ପ୍ରୋତ୍ସାହିତ କରେ + ଯାଞ୍ଚ ହୋଇନାହିଁ + ପ୍ରକ୍ସି ହୋଷ୍ଟ + %s ଦ୍ଵାରା ପ୍ରଦାନ କରାଯାଇଛି + ପ୍ରକ୍ସି + ପ୍ରକ୍ସି ପ୍ରକାର + ଏହି ସଂଗ୍ରହାଳୟ ଏପର୍ଯ୍ୟନ୍ତ ବ୍ୟବହୃତ ହୋଇନାହିଁ । ଏଥିରେ ଥିବା ପ୍ରୟୋଗଗୁଡ଼ିକୁ ଦେଖିବା ପାଇଁ ଏହାକୁ ଟର୍ନ୍ ଅନ୍ କରନ୍ତୁ । + ଦସ୍ତଖତ ନୁହେଁ । ଆବେଦନ ତାଲିକା ଯାଞ୍ଚ କରିପାରିଲା ନାହିଁ । ସାକ୍ଷରିତ ହୋଇନଥିବା ସଂଗ୍ରହାଳୟରୁ ପ୍ରୟୋଗଗୁଡ଼ିକୁ ଡାଉନଲୋଡ୍ କରିବାକୁ ସାବଧାନ । + ସଞ୍ଚୟ କରନ୍ତୁ + ସଂଗ୍ରହାଳୟ + %s ଦରକାର କରେ + ନୀରବ ସଂସ୍ଥାପନ + ବିବରଣୀ ଗୁଡ଼ିକ ସଞ୍ଚିତ ହେଉଛି… + ସନ୍ଧାନ କରନ୍ତୁ + ଏକ ଦର୍ପଣ ଚୟନ କରନ୍ତୁ + ଅସ୍ଥିର ସଂସ୍କରଣ ସଂସ୍ଥାପନ କରିବାକୁ ପରାମର୍ଶ ଦିଅନ୍ତୁ + ଅଧିକ ଦେଖାନ୍ତୁ + ଦସ୍ତଖତ ନୁହେଁ + ଦସ୍ତଖତ %s + ଆକାର + ଉତ୍ସ କୋଡ୍ + SOCKS ପ୍ରକ୍ସି + ସଜାଇବା କ୍ରମ + ତୁମର କାର୍ଯ୍ୟକଳାପକୁ ଟ୍ରାକ୍ କିମ୍ବା ରିପୋର୍ଟ କରେ + ଉତ୍ସ କୋଡ୍ ଆଉ ଉପଲବ୍ଧ ନାହିଁ + ସଂଗ୍ରହାଳୟଗୁଡିକ ସିଙ୍କ କରନ୍ତୁ + ସିଙ୍କ୍ହେ ହେଉଛି + ସଂସ୍ଥାପନ କରିବାକୁ ଟ୍ୟାପ୍ କରନ୍ତୁ । + ଲକ୍ଷ୍ୟ + ସଂଗ୍ରହାଳୟଗୁଡ଼ିକ ସ୍ୱୟଂଚାଳିତ ଭାବରେ ସିଙ୍କ କରନ୍ତୁ + ସିଷ୍ଟମ୍ + ଅଜ୍ଞାତ ତ୍ରୁଟି । + %s ସିଂଙ୍କ ହେଉଛି… + ଥିମ୍ + ଅଜଣା:%s + ସଂସ୍କରଣ %s + ସଂସ୍କରଣ ଗୁଡ଼ିକ + ଅସ୍ଥିର ଅଦ୍ୟତନଗୁଡ଼ିକ + ଅଦ୍ୟତନ ଗୁଡିକ + ଅଦ୍ୟତନ କରନ୍ତୁ + ଅପଷ୍ଟ୍ରିମ ଉତ୍ସ କୋଡ୍ ମାଗଣା ନୁହେଁ + ସୂଚକାଙ୍କ ବୈଧ ହୋଇପାରିଲା ନାହିଁ । + ଡାଉନଲୋଡ୍ ଆରମ୍ଭ କରିବାକୁ ଅପେକ୍ଷା କରିଛି… + ନୁଆ କଣ + ଭାଷା + ବ୍ୟକ୍ତିଗତକରଣ + ସର୍ବଶେଷ + କିଛି କାର୍ଯ୍ୟ କରିବାକୁ ଅସମର୍ଥ । + ଆପଣଙ୍କର କୌଣସି ଇଣ୍ଟରନେଟ୍ ସଂଯୋଗ ନାହିଁ + ଟପ୍ ଆପ୍ ବାର୍ କୁ ବିସ୍ତାର କରିବାକୁ ଅନୁମତି ଦିଅନ୍ତୁ + ଟପ୍ ଆପ୍ ବାର୍ କୁ ବିସ୍ତାର ଏବଂ ଭୁଶୁଡ଼ିବାକୁ ଅନୁମତି ଦିଅନ୍ତୁ + ତୁମେ ଥିମ୍ ରଙ୍ଗ କରୁଥିବା ପଦାର୍ଥ ବ୍ୟବହାର କର + ତୁମର ରଙ୍ଗ ସାମଗ୍ରୀ + ଅନାବଶ୍ୟକ ଫାଇଲଗୁଡିକ ସଫା କରନ୍ତୁ + ପସନ୍ଦ ଗୁଡିକ + ବଳ ପୂର୍ବକ ସଫା କରନ୍ତୁ + ସଂଗ୍ରହାଳୟ ଅପହଞ୍ଚ ଅଟେ + ସଂଗ୍ରହାଳୟ ସକ୍ଷମ କରନ୍ତୁ + ଅଟୋ ଅପଡେଟ୍ ଆପ୍ସ + ସ୍ୱୟଂଚାଳିତ ଭାବରେ ଅଦ୍ୟତନଗୁଡିକ ସଂସ୍ଥାପନ କରିବାକୁ ଚେଷ୍ଟା କରନ୍ତୁ + ସଂସ୍ଥାପନ କରୁଅଛି + ପରିବର୍ତ୍ତନଗୁଡିକ ଦେଖିବାକୁ LeOS-Droid ପୁନ Rest ଆରମ୍ଭ କରନ୍ତୁ + ସ୍ଥାପନ ଆରମ୍ଭ କରିବାକୁ ଅପେକ୍ଷା କରିଛି… + ଅନାବଶ୍ୟକ ଉପାଦାନଗୁଡ଼ିକ ଅଛି + ସର୍ଭର ନୂତନ ପ୍ୟାକେଟ ପ୍ରଦାନ କରିବାରେ ବିଫଳ ହୋଇଛି । + ସର୍ଭର ସହିତ ସଂଯୋଗ କରିପାରିଲା ନାହିଁ + ମୂଳପୃଷ୍ଠା ପରଦା ସ୍ୱିପିଂ + କାର୍ଯ୍ୟ ବିଷୟବସ୍ତୁ ପାଇଁ ସୁରକ୍ଷିତ ନୁହଁ + Shizuku ଚାଲୁ ନାହିଁ + ହୋମ ସ୍କ୍ରିନରେ ପୃଷ୍ଠାଗୁଡ଼ିକ ମଧ୍ୟରେ ଚାଳକକୁ ସ୍ୱାଇପ୍ କରିବାକୁ ଅନୁମତି ଦିଅନ୍ତୁ + ସ୍ୱତନ୍ତ୍ର କ୍ରେଡିଟ୍ + Shizuku ସ୍ଥାପିତ ହୋଇନାହିଁ + ନକଲ କରନ୍ତୁ + ପ୍ରକ୍ସି ପୋର୍ଟ କେବଳ ଗୋଟିଏ ପୂର୍ଣ୍ଣସଂଖ୍ୟା ହୋଇପାରେ + ନିମ୍ନଲିଖିତ ଭଣ୍ଡାର ମିଳିଲା ନାହିଁ + ସେଟିଂସମୂହ ଆମଦାନୀ କରନ୍ତୁ + ଆମଦାନୀ ଏବଂ ରପ୍ତାନି + ଫାଇଲରୁ ସେଟିଂସମୂହ ଏବଂ ପସନ୍ଦଗୁଡିକ ଆମଦାନୀ କରନ୍ତୁ + ସେଟିଂସମୂହ ରପ୍ତାନି କରନ୍ତୁ + ସମସ୍ତ ସଂଗ୍ରହାଳୟ ଫାଇଲ୍ କରିବାକୁ ରପ୍ତାନି କରନ୍ତୁ + ସଂଗ୍ରହାଳୟ ଆମଦାନି କରନ୍ତୁ + ଫାଇଲ୍ ପାଇଁ ସେଟିଂସମୂହ ଏବଂ ପସନ୍ଦଗୁଡିକ ରପ୍ତାନି କରନ୍ତୁ + ସଂଗ୍ରହାଳୟ ରପ୍ତାନି କରନ୍ତୁ + ଫାଇଲରୁ ସମସ୍ତ ସଂଗ୍ରହାଳୟ ଆମଦାନି କରନ୍ତୁ + \ No newline at end of file diff --git a/core/common/src/main/res/values-pa/strings.xml b/core/common/src/main/res/values-pa/strings.xml new file mode 100644 index 0000000..cc0ae6e --- /dev/null +++ b/core/common/src/main/res/values-pa/strings.xml @@ -0,0 +1,234 @@ + + + ਤੁਹਾਡੀ ਗਤੀਵਿਧੀ ਨੂੰ ਟ੍ਰੈਕ ਜਾਂ ਰਿਪੋਰਟ ਕਰਦਾ ਹੈ + ਇੰਡੈਕਸ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ। + ਅਸਥਿਰ ਅੱਪਡੇਟ + ਅਸਥਿਰ ਸੰਸਕਰਣਾਂ ਨੂੰ ਇੰਸਟਾਲ ਕਰਨ ਦਾ ਸੁਝਾਅ ਦਿਓ + ਡਾਊਨਲੋਡ ਸ਼ੁਰੂ ਕਰਨ ਦੀ ਉਡੀਕ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ… + ਰਿਪੋਜ਼ਟਰੀ ਨੂੰ ਸੰਪਾਦਿਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਕਿਉਂਕਿ ਇਹ ਇਸ ਸਮੇਂ ਸਿੰਕ੍ਰਨਾਈਜ਼ ਹੋ ਰਹੀ ਹੈ। + ਪੁਸ਼ਟੀ + ਡਾਊਨਲੋਡ ਨਹੀਂ ਹੋ ਸਕਿਆ %s + ਅਵੈਧ ਫਾਈਲ ਫਾਰਮੈਟ। + ਰਿਪੋਜ਼ਟਰੀ ਮਿਟਾਓ\? + ਡਾਊਨਲੋਡ ਹੋ ਰਿਹਾ %s… + ਰਿਪੋਜ਼ਟਰੀ ਸੰਪਾਦਿਤ ਕਰੋ + ਸੁਰੱਖਿਆ ਕਮਜ਼ੋਰੀਆਂ ਹਨ + ਸਾਰੇ ਨਵੇਂ ਸੰਸਕਰਣਾਂ ਨੂੰ ਅਣਡਿੱਠ ਕਰੋ + ਇਹ ਸੰਸਕਰਣ ਤੁਹਾਡੀ ਡਿਵਾਈਸ \'ਤੇ ਇੰਸਟਾਲ ਕੀਤੇ ਗਏ ਸੰਸਕਰਣ ਤੋਂ ਪੁਰਾਣਾ ਹੈ। ਪਹਿਲਾਂ ਇਸਨੂੰ ਅਣਇੰਸਟਾਲ ਕਰੋ। + ਨਿਊਨਤਮ API ਸੰਸਕਰਣ %d ਹੈ। + ਅਸੰਗਤ ਸੰਸਕਰਣ + ਇੰਸਟਾਲਰ + ਸ਼ਿਜ਼ੂਕੂ ਇੰਸਟਾਲਰ + ਕੋਈ ਇੰਸਟਾਲ ਕੀਤੀਆਂ ਐਪਲੀਕੇਸ਼ਨਾਂ ਨਹੀਂ ਹਨ + ਪਤਾ + ਸਾਰੀਆਂ ਐਪਲੀਕੇਸ਼ਨਜ਼ + ਪਹਿਲਾਂ ਤੋਂ ਹੀ ਮੌਜੂਦ ਹੈ + ਹਮੇਸ਼ਾਂ + ਕਾਲ੍ਹਾ + ਐਪਲੀਕੇਸ਼ਨ + ਉਹ ਐਪਲੀਕੇਸ਼ਨ ਨਹੀਂ ਲੱਭ ਸਕੀ + ਲੇਖਕ ਈ-ਮੇਲ + ਬੱਗ ਟਰੈਕਰ + ਬਦਲਾਅ-ਲੇਖਾ + ਬਦਲਾਅ + ਰਿਪੋਜ਼ਟਰੀ ਦੀ ਜਾਂਚ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ… + APK ਕਲੀਨਅੱਪ ਅੰਤਰਾਲ + ਡਾਊਨਲੋਡ ਕੀਤੀਆਂ ਫਾਈਲਾਂ ਦੀ ਜਾਂਚ ਕਰਨ ਅਤੇ ਹਟਾਉਣ ਦੀ ਮਿਆਦ + ਡੀਬੱਗਿੰਗ ਲਈ ਕੰਪਾਇਲ ਕੀਤਾ + ਜੁੜ ਰਿਹਾ ਹੈ… + ਗੈਰ-ਮੁਕਤ ਮੀਡੀਆ ਸ਼ਾਮਲ + ਸਿੰਕ ਨਹੀਂ ਕਰ ਸਕਿਆ %s + ਪ੍ਰਮਾਣਿਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ %s + ਕ੍ਰੈਡਿਟ + ਗਹਿਰਾ + + ਦਿਨ + ਦਿਨ + + ਮਿਟਾਓ + ਵਰਣਨ + ਵੇਰਵੇ + ਦਾਨ + ਡਾਊਨਲੋਡ ਹੋਇਆ %s + ਡਾਊਨਲੋਡ ਹੋ ਰਿਹਾ + ਫਿੰਗਰਪ੍ਰਿੰਟ + ਗੈਰ-ਮੁਕਤ ਨਿਰਭਰਤਾ ਹੈ + + ਘੰਟਾ + ਘੰਟੇ + + ਅਵੈਧ ਸਰਵਰ ਜਵਾਬ। + HTTP ਪਰੌਕਸੀ + ਅਧਿਕਤਮ API ਸੰਸਕਰਣ %d ਹੈ। + ਲੁਪਤ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ। + ਤੁਹਾਡਾ %1$s (API ਸੰਸਕਰਣ %2$d) ਸਮਰਥਿਤ ਨਹੀਂ ਹੈ %3$s + ਤੁਹਾਡਾ %1$s ਪਲੇਟਫਾਰਮ ਸਮਰਥਿਤ ਨਹੀਂ ਹੈ। ਸਮਰਥਿਤ ਪਲੇਟਫਾਰਮ: %2$s। + ਇਸ ਸੰਸਕਰਣ ਨੂੰ ਅਣਡਿੱਠ ਕਰੋ + ਵਿਗਿਆਪਨ ਹਨ + ਲੀਗੇਸੀ ਇੰਸਟਾਲਰ + ਅਸੰਗਤ ਸੰਸਕਰਣ + ਡਿਵਾਈਸ ਦੇ ਨਾਲ ਅਸੰਗਤ ਐਪਲੀਕੇਸ਼ਨ ਸੰਸਕਰਣ ਦਿਖਾਓ + ਅਸੰਗਤ ਹੈ %s + ਇੰਸਟਾਲ + ਇੰਸਟਾਲੇਸ਼ਨ ਦੀਆਂ ਕਿਸਮਾਂ + ਸੈਸ਼ਨ ਇੰਸਟਾਲਰ + ਰੂਟ ਇੰਸਟਾਲਰ + ਇੰਸਟਾਲਡ + ਅਵੈਧ ਪਤਾ + ਅਵੈਧ ਫਿੰਗਰਪ੍ਰਿੰਟ ਫਾਰਮੈਟ + ਅਵੈਧ ਅਨੁਮਤੀਆਂ। + ਅਵੈਧ ਹਸਤਾਖ਼ਰ। + ਅਵੈਧ ਉਪਭੋਗਤਾ ਨਾਮ ਫਾਰਮੈਟ + ਲਾਂਚ ਕਰੋ + ਲਾਈਸੈਂਸ + %s ਲਾਈਸੈਂਸ + ਸਫ਼ੈਦ + ਲਿੰਕ ਕਾਪੀ ਹੋਇਆ + ਲਿੰਕ + ਐਨੀਮੇਸ਼ਨਾਂ ਦੀ ਸੂਚੀ ਵਿਖਾਓ + ਮੁੱਖ ਪੰਨੇ \'ਤੇ ਸੂਚੀ ਐਨੀਮੇਸ਼ਨ ਦਿਖਾਓ + %s ਨੂੰ ਮਿਲਾਇਆ ਜਾ ਰਿਹਾ ਹੈ + ਨਾਮ + ਨੈੱਟਵਰਕ ਤਰੁੱਟੀ + ਕਦੇ ਨਹੀਂ + ਐਪਲੀਕੇਸ਼ਨਾਂ ਦੇ ਨਵੇਂ ਸੰਸਕਰਣ ਉਪਲਬਧ ਹਨ + + %d ਐਪਲੀਕੇਸ਼ਨ ਦਾ ਨਵਾਂ ਸੰਸਕਰਣ ਹੈ। + %d ਐਪਲੀਕੇਸ਼ਨਾਂ ਦਾ ਨਵਾਂ ਸੰਸਕਰਣ ਹੈ। + + ਕੋਈ ਉਪਲਬਧ ਐਪਲੀਕੇਸ਼ਨ ਨਹੀਂ + ਕੋਈ ਵਿਵਰਣ ਉਪਲਬਧ ਨਹੀਂ ਹੈ + ਅਜਿਹੀ ਕੋਈ ਐਪਲੀਕੇਸ਼ਨ ਨਹੀਂ ਲੱਭ ਸਕੀ + ਕੋਈ ਪ੍ਰੌਕਸੀ ਨਹੀਂ + ਅੱਪਡੇਟਾਂ ਬਾਰੇ ਸੂਚਿਤ ਕਰੋ + ਨਵੇਂ ਸੰਸਕਰਣ ਉਪਲਬਧ ਹੋਣ \'ਤੇ ਇੱਕ ਸੂਚਨਾ ਦਿਖਾਓ + ਐਪਲੀਕੇਸ਼ਨਾਂ ਦੀ ਗਿਣਤੀ + ਠੀਕ ਹੈ + ਸਿਰਫ਼ %s ਨਾਲ ਅਨੁਕੂਲ + ਸਿਰਫ਼ ਵਾਈ-ਫਾਈ \'ਤੇ + ਸਿਰਫ਼ ਵਾਈ-ਫਾਈ ਅਤੇ ਚਾਰਜਿੰਗ \'ਤੇ + %s ਨੂੰ ਖੋਲ੍ਹਣਾ ਹੈ\? + ਹੋਰ + ਇੰਡੈਕਸ ਫਾਈਲ ਨੂੰ ਪਾਰਸ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ। + ਪਾਸਵਰਡ + ਪਾਸਵਰਡ ਗੁੰਮ ਹੈ + ਇਜਾਜ਼ਤਾਂ + +%d ਹੋਰ + ਸੈਟਿੰਗਾਂ + %1$s \'ਤੇ ਪ੍ਰਕਿਰਿਆ ਹੋ ਰਹੀ ਹੈ… + ਪ੍ਰੋਜੈਕਟ ਵੈਬਸਾਈਟ + ਗੈਰ-ਮੁਫ਼ਤ ਨੈੱਟਵਰਕ ਸੇਵਾਵਾਂ ਦਾ ਪ੍ਰਚਾਰ ਕਰਦਾ ਹੈ + ਗੈਰ-ਮੁਫ਼ਤ ਸਾਫਟਵੇਅਰ ਦਾ ਪ੍ਰਚਾਰ ਕਰਦਾ ਹੈ + %s ਦੁਆਰਾ ਪ੍ਰਦਾਨ ਕੀਤਾ ਗਿਆ + ਪ੍ਰੌਕਸੀ + ਪ੍ਰੌਕਸੀ ਹੋਸਟ + ਪ੍ਰੌਕਸੀ ਪੋਰਟ + ਰਿਪੋਜ਼ਟਰੀਆਂ + ਰਿਪੋਜ਼ਟਰੀ + %s ਦੀ ਲੋੜ ਹੈ + ਮੂਕ ਇੰਸਟਾਲ + ਵੇਰਵੇ ਸੁਰੱਖਿਅਤ ਕੀਤੇ ਜਾ ਰਹੇ ਹਨ… + ਸੁਰੱਖਿਅਤ ਕਰੋ + ਸਕਰੀਨਸ਼ਾਟ + ਖੋਜ + ਮੂਕ ਇੰਸਟਾਲ ਲਈ ਰੂਟ ਅਨੁਮਤੀ ਦਿਓ + ਇੱਕ ਮਿਰਰ ਚੁਣੋ + ਸ਼ੇਅਰ ਕਰੋ + ਹੋਰ ਦਿਖਾਓ + ਪੁਰਾਣੇ ਸੰਸਕਰਣ ਦਿਖਾਓ + ਹਸਤਾਖ਼ਰ %s + ਅਸੁਰੱਖਿਅਤ ਐਲਗੋਰਿਦਮ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਦਸਤਖਤ ਕੀਤੇ + ਆਕਾਰ + ਛੱਡੋ + SOCKS ਪ੍ਰੌਕਸੀ + ਛਾਂਟੀ ਦਾ ਕ੍ਰਮ + ਸਰੋਤ ਕੋਡ ਹੁਣ ਉਪਲਬਧ ਨਹੀਂ ਹੈ + ਸਰੋਤ ਕੋਡ + ਸੁਝਾਏ ਗਏ + ਰਿਪੋਜ਼ਟਰੀਆਂ ਨੂੰ ਸਿੰਕ ਕਰੋ + ਰਿਪੋਜ਼ਟਰੀਆਂ ਨੂੰ ਆਟੋਮੈਟਿਕਲੀ ਸਿੰਕ ਕਰੋ + ਸਿੰਕ ਹੋ ਰਿਹਾ ਹੈ + %s ਨੂੰ ਸਿੰਕ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ… + ਇੰਸਟਾਲ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ। + ਟੀਚਾ + ਥੀਮ + ਥੀਮ + ਅਣਇੰਸਟਾਲ ਕਰੋ + ਅਗਿਆਤ + ਅਗਿਆਤ ਤਰੁੱਟੀ। + ਅਗਿਆਤ: %s + ਬਿਨਾਂ-ਦਸਤਖਤ + ਅਸਪਸ਼ਟ + ਅੱਪਡੇਟ + ਅੱਪਡੇਟਾਂ + ਅੱਪਸਟ੍ਰੀਮ ਸਰੋਤ ਕੋਡ ਮੁਫ਼ਤ ਨਹੀਂ ਹੈ + ਵਰਤੋਂਕਾਰ ਦਾ ਨਾਮ + ਵਰਤੋਂਕਾਰ ਨਾਮ ਗੁੰਮ ਹੈ + ਨਵੀਆਂ ਐਪਲੀਕੇਸ਼ਨਾਂ + ਸੰਸਕਰਣ + ਸੰਸਕਰਣ %s + ਸੰਸਕਰਣਾਂ + ਨਵਾਂ ਕੀ ਹੈ + ਵੈੱਬਸਾਈਟ + ਭਾਸ਼ਾ + ਵਿਅਕਤੀਗਤਕਰਨ + ਥੋੜਾ ਦਿਖਾਓ + ਨਵੀਨਤਮ + ਪੜਚੋਲ ਕਰੋ + ਸਭ ਨੂੰ ਅੱਪਡੇਟ ਕਰੋ + ਕ੍ਰਮਬੱਧ ਅਤੇ ਫਿਲਟਰ ਕਰੋ + ਕਾਰਜ ਅਸਫਲ + ਰਿਪੋਜ਼ਟਰੀ ਸ਼ਾਮਿਲ ਕਰੋ + ਤੁਹਾਡੀਆਂ ਸਾਰੀਆਂ ਐਪਲੀਕੇਸ਼ਨਾਂ ਅੱਪਡੇਟ ਹਨ + ਵਿਰੋਧੀ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ + ਲੇਖਕ ਵੈੱਬਸਾਈਟ + ਅਖੰਡਤਾ ਦੀ ਜਾਂਚ ਨਹੀਂ ਕਰ ਸਕਿਆ। + ਅਵੈਧ ਮੈਟਾਡਾਟਾ। + ਕੁਝ ਖਾਸ ਕਾਰਵਾਈਆਂ ਕਰਨ ਵਿੱਚ ਅਸਮਰੱਥ। + ਸਿਸਟਮ + ਬਿਨਾਂ-ਦਸਤਖਤ। ਐਪਲੀਕੇਸ਼ਨ ਸੂਚੀ ਦੀ ਪੁਸ਼ਟੀ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ। ਬਿਨਾਂ-ਦਸਤਖਤ ਕੀਤੇ ਰਿਪੋਜ਼ਟਰੀਆਂ ਤੋਂ ਐਪਲੀਕੇਸ਼ਨਾਂ ਨੂੰ ਡਾਊਨਲੋਡ ਕਰਨ ਵਿੱਚ ਸਾਵਧਾਨ ਰਹੋ। + ਰੱਦ ਕਰੋ + ਪੜਚੋਲ + ਹਾਲ ਹੀ ਵਿੱਚ ਅੱਪਡੇਟ ਕੀਤਾ ਗਿਆ + ਪ੍ਰੌਕਸੀ ਦੀ ਕਿਸਮ + ਇਹ ਰਿਪੋਜ਼ਟਰੀ ਅਜੇ ਤੱਕ ਵਰਤੀ ਨਹੀਂ ਗਈ ਹੈ। ਇਸ ਵਿੱਚ ਐਪਲੀਕੇਸ਼ਨਾਂ ਨੂੰ ਦੇਖਣ ਲਈ ਇਸਨੂੰ ਚਾਲੂ ਕਰੋ। + ਇੰਸਟਾਲ ਕੀਤੀਆਂ ਐਪਲੀਕੇਸ਼ਨਾਂ + ਇਹ ਸੰਸਕਰਣ ਤੁਹਾਡੀ ਡਿਵਾਈਸ \'ਤੇ ਇੰਸਟਾਲ ਕੀਤੇ ਗਏ ਸਰਟੀਫਿਕੇਟ ਨਾਲੋਂ ਵੱਖਰੇ ਪ੍ਰਮਾਣ ਪੱਤਰ ਨਾਲ ਹਸਤਾਖਰਿਤ ਕੀਤਾ ਗਿਆ ਹੈ। ਪਹਿਲਾਂ ਇਸਨੂੰ ਅਣਇੰਸਟਾਲ ਕਰੋ। + ਤੁਹਾਡਾ ਇੰਟਰਨੈੱਟ ਕੁਨੈਕਸ਼ਨ ਜੁੜਿਆ ਹੋਇਆ ਨਹੀਂ ਹੈ + ਸਿਖਰ ਐਪ ਬਾਰ ਦਾ ਵਿਸਤਾਰ ਕਰਨ ਦਿਓ + ਸਿਖਰ ਦੀ ਐਪ ਬਾਰ ਨੂੰ ਫੈਲਾਉਣ ਅਤੇ ਸਮੇਟਣ ਦਿਓ + Material You + Material you ਰੰਗ ਥੀਮ ਦੀ ਵਰਤੋਂ ਕਰੋ + ਮਨਪਸੰਦ + ਜਬਰੀ ਸਾਫ਼ ਕਰੋ + ਰਿਪੋਜ਼ਟਰੀ ਪਹੁੰਚਯੋਗ ਨਹੀਂ ਹੈ + ਬੇਲੋੜੀਆਂ ਫਾਈਲਾਂ ਨੂੰ ਸਾਫ਼ ਕਰਦਾ ਹੈ + ਐਪਸ ਨੂੰ ਆਟੋ ਅੱਪਡੇਟ ਕਰੋ + ਇੰਸਟਾਲ ਕਰ ਰਿਹਾ ਹੈ + ਤਬਦੀਲੀਆਂ ਦੇਖਣ ਲਈ LeOS-Droid ਨੂੰ ਰੀਸਟਾਰਟ ਕਰੋ + ਰਿਪੋਜ਼ਟਰੀ ਨੂੰ ਸਮਰੱਥ ਬਣਾਓ + ਅੱਪਡੇਟਾਂ ਨੂੰ ਸਵੈਚਲਿਤ ਤੌਰ \'ਤੇ ਇੰਸਟਾਲ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ + ਇੰਸਟਾਲੇਸ਼ਨ ਸ਼ੁਰੂ ਕਰਨ ਦੀ ਉਡੀਕ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ… + ਗੈਰ-ਮੁਫ਼ਤ ਭਾਗ ਹਨ + ਸਰਵਰ ਨਾਲ ਕਨੈਕਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ + ਸਰਵਰ ਨਵਾਂ ਪੈਕੇਟ ਪ੍ਰਦਾਨ ਕਰਨ ਵਿੱਚ ਅਸਫਲ। + ਇਸ ਵਿੱਚ ਕੰਮ ਦੇ ਲਈ ਅਸੁਰੱਖਿਅਤ ਸਮੱਗਰੀ ਹੈ + ਸ਼ਿਜ਼ੂਕੂ ਨਹੀਂ ਚੱਲ ਰਿਹਾ ਹੈ + ਸ਼ਿਜ਼ੂਕੂ ਇੰਸਟਾਲ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਹੈ + ਵਿਸ਼ੇਸ਼ ਕ੍ਰੈਡਿਟ + ਹੋਮ ਸਕ੍ਰੀਨ ਸਵਾਈਪਿੰਗ + ਉਪਭੋਗਤਾ ਨੂੰ ਹੋਮ ਸਕ੍ਰੀਨ ਵਿੱਚ ਪੰਨਿਆਂ ਦੇ ਵਿਚਕਾਰ ਸਵਾਈਪ ਕਰਨ ਦਿਓ + ਕਾਪੀ ਕਰੋ + ਪ੍ਰੌਕਸੀ ਪੋਰਟ ਸਿਰਫ਼ ਪੂਰਨ ਅੰਕ ਹੋ ਸਕਦਾ ਹੈ + ਹੇਠ ਦਿੱਤੀ ਰਿਪੋਜ਼ਟਰੀ ਨਹੀਂ ਮਿਲੀ + ਆਯਾਤ ਸੈਟਿੰਗਾਂ + ਆਯਾਤ/ਨਿਰਯਾਤ + ਫ਼ਾਈਲ ਤੋਂ ਸੈਟਿੰਗਾਂ ਅਤੇ ਮਨਪਸੰਦ ਆਯਾਤ ਕਰੋ + ਨਿਰਯਾਤ ਸੈਟਿੰਗਾਂ + ਸਾਰੀਆਂ ਰਿਪੋਜ਼ਟਰੀਆਂ ਨੂੰ ਫ਼ਾਈਲ ਵਿੱਚ ਐਕਸਪੋਰਟ ਕਰੋ + ਰਿਪੋਜ਼ਟਰੀਆਂ ਆਯਾਤ ਕਰੋ + ਸੈਟਿੰਗਾਂ ਅਤੇ ਮਨਪਸੰਦ ਫ਼ਾਈਲ ਵਿੱਚ ਐਕਸਪੋਰਟ ਕਰੋ + ਰਿਪੋਜ਼ਟਰੀਆਂ ਨਿਰਯਾਤ ਕਰੋ + ਫ਼ਾਈਲ ਤੋਂ ਸਾਰੀਆਂ ਰਿਪੋਜ਼ਟਰੀਆਂ ਆਯਾਤ ਕਰੋ + ਲਿੰਕ ਖੋਲ੍ਹਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ + \ No newline at end of file diff --git a/core/common/src/main/res/values-pl/strings.xml b/core/common/src/main/res/values-pl/strings.xml new file mode 100644 index 0000000..ddcbb53 --- /dev/null +++ b/core/common/src/main/res/values-pl/strings.xml @@ -0,0 +1,239 @@ + + + Czarny + Tarcza + Wersja + Indeks nie mógł zostać zatwierdzony. + Strona + Nowe aplikacje + Wersja %s + Brak nazwy użytkownika + Oczekiwanie na rozpoczęcie pobierania… + Niezweryfikowany + Nazwa użytkownika + Aktualizacje + Sugeruj instalację niestabilnych wersji + Niestabilne aktualizacje + Nieoznaczony + Nieznany błąd. + Odinstaluj + Śledzenie lub raportowanie aktywności użytkownika + Motyw + Dodaj repozytorium + Zawsze + Niepożądane funkcje + Nadrzędny kod źródłowy nie jest wolny + Aktualizacja + Nieznany: %s + Adres + Wszystkie twoje aplikacje są aktualne + Już istnieje + Nieznany + Motywy + Stuknij , aby zainstalować. + Automatyczna synchronizacja repozytoriów + Synchronizacja + Synchronizacja %s… + Wersje + System + Działanie nieudane + Wszystkie aplikacje + Podłączenie… + Zawiera media niezawierające substancji wolnych + Nie można zsynchronizować %s + Brak hasła + Obróbka %1$s… + Port proxy + Host proxy + Proxy + Dostarczony przez %s + Promuje niewolne oprogramowanie + Promuje niewolne usługi sieciowe + Typ proxy + Repozytorium + Ostatnio uaktualnione + Cicha instalacja + Wymaga %s + Zrzuty ekranu + Kod źródłowy + Porządek sortowania + Proxy SOCKS + Pomiń + Synchronizacja repozytoriów + Nieważny podpis. + Niezgodna wersja + Niewłaściwa odpowiedź serwera. + Anuluj + Posiada niewolne zależności + Darowizna + Pobieranie %s… + Nieważny format pliku. + Odcisk palca + posiada reklamę + Ignoruj wszystkie aktualizacje + Zignoruj tę aktualizację + Minimalna wersja API to %d. + Powiadamiaj o aktualizacjach + Pobrano %s + Pobieranie + Edytuj repozytorium + Posiada luki w zabezpieczeniach + Twój %1$s (wersja API %2$d) nie jest obsługiwany. %3$s + Przeglądaj + Śledzenie błędów + Maksymalna wersja API to %d. + Nie znaleziono takiej aplikacji + E-mail autora + Strona internetowa autora + Opis + Brak zainstalowanych aplikacji + Podpisane przy użyciu niebezpiecznego algorytmu + Aplikacja + Nie można edytować repozytorium, ponieważ jest ono w tej chwili synchronizowane. + Lista zmian + Ciemny + Brakujące funkcje. + Ta wersja jest starsza niż ta zainstalowana na Twoim urządzeniu. Odinstaluj ją najpierw. + Twoja platforma %1$s nie jest obsługiwana. Obsługiwane platformy: %2$s. + Jasny + Animacje listy + Łączenie %s + Brak dostępnych aplikacji + Nie znaleziono pasujących aplikacji + Zmiany + Sprawdzanie repozytorium… + Skompilowane do debugowania + Potwierdzenie + Nie można pobrać %s + Nie można zatwierdzić %s + Podziękowania + Usuń + Czy na pewno chcesz usunąć repozytorium\? + Szczegóły + Ta wersja jest podpisana innym certyfikatem niż ten, który jest zainstalowany na Twoim urządzeniu. Najpierw odinstaluj ten certyfikat. + Nieprawidłowy format nazwy użytkownika + Licencja %s + Linki + Dostępne są nowe aktualizacje + Brak proxy + Pokaż powiadomienie, gdy dostępne są aktualizacje + Tylko na Wi-Fi + Uruchom + Licencja + Skopiowano link + Włącz animację listy na stronie głównej + Według nazwy + Błąd sieci + Nigdy + Brak dostępnego opisu + Rozmiar + Pokaż starsze wersje + Wybierz lustro + Liczba aplikacji + Zgodne tylko z %s + Zalecana + Kod źródłowy już niedostępny + Pokaż więcej + Szukaj + Zapisywanie danych… + Zapisz + Inne + Nie można sprawdzić spójności. + Podpis %s + Udostępnij + To repozytorium nie jest jeszcze używane. Musisz je włączyć, aby zobaczyć aplikacje, które udostępnia. + OK + Nieprawidłowe uprawnienia. + Niekompatybilne wersje + Pokaż wersje aplikacji niekompatybilne z urządzeniem + Typy instalacji + Zainstalowano + Nieprawidłowy adres + Nieważne metadane. + + %d nowe aktualizacje. + %d nowe aktualizacje. + %d nowych aktualizacji. + %d nowych aktualizacji. + + Zezwól na uprawnienia roota dla cichych instalacji + Repozytoria + Niekompatybilne z %s + Zainstaluj + Hasło + Niepodpisane. Nie można zweryfikować listy aplikacji. Zachowaj ostrożność podczas pobierania aplikacji z niepodpisanych repozytoriów. + Strona projektu + Ustawienia + +%d więcej + Uprawnienia + Nie można przetworzyć pliku indeksu. + Otworzyć %s\? + Nieważny format odcisku palca + Proxy HTTP + Język + Personalizacja + Pokaż mniej + Zainstalowane aplikacje + Sortowanie i filtrowanie + Nowe aplikacje + Instalator + Native (starszy) + Session (nowszy) + ROOT + Shizuku + Najnowsza + Poznaj + Aktualizuj wszystkie + Interwał oczyszczania plików apk + Okres sprawdzania i usuwania pobranych plików + + dzień + dni + dni + dni + + Tylko na Wi-Fi i podczas ładowania + + godzina + godziny + godzin + godzin + + Nie można wykonać niektórych działań. + Nie masz połączenia z internetem + Rozwijalny górny pasek aplikacji + Zezwalaj na rozwijanie i zwijanie górnego paska aplikacji + Motyw kolorystyczny Material You + Silnik motywu Monet + Włącz repozytorium + Instalowanie + Uruchom LeOS-Droid ponownie, aby zastosować zmiany + Oczekiwanie na rozpoczęcie instalacji… + Ulubione + Wymuś oczyszczenie + Repozytorium nieosiągalne + Aktualizuj aplikacje automatycznie + Spróbuj zainstalować aktualizacje automatycznie + Czyści zbędne pliki + Posiada niewolne komponenty + Shizuku nie działa + Shizuku nie jest zainstalowany + Specjalne podziękowania + Zawiera treści NSFW + Serwer nie mógł dostarczyć nowego pakietu. + Nie udało się połączyć z serwerem + Przewijanie ekranu głównego + Pozwala użytkownikowi na przesuwanie palcem między stronami na ekranie głównym + Kopiuj + Port proxy może być tylko liczbą naturalną + Nie znaleziono następującego repozytorium + Przywróć ustawienia + Import/Eksport + Przywróć ustawienia i ulubione z pliku + Eksportuj ustawienia + Zapisz wszystkie repozytoria do pliku + Importuj repozytoria + Zapisz ustawienia i ulubione do pliku + Eksportuj repozytoria + Przywróć wszystkie repozytoria z pliku + \ No newline at end of file diff --git a/core/common/src/main/res/values-pt-rBR/strings.xml b/core/common/src/main/res/values-pt-rBR/strings.xml new file mode 100644 index 0000000..7a2f639 --- /dev/null +++ b/core/common/src/main/res/values-pt-rBR/strings.xml @@ -0,0 +1,240 @@ + + + A ação falhou + Adicionar repositório + Endereço + Todos os aplicativos + Todos os seus aplicativos estão atualizados + Já existe + Sempre + Preto + Características indesejadas + Aplicativo + Não foi possível encontrar esse aplicativo + E-mail do autor + Página do autor + Explorar + Rastreador de erros + Cancelar + Não é possível editar o repositório pois ele está sincronizando no momento. + Lista de mudanças + Mudanças + Checando o repositório… + Compilado para depuração + Confirmação + Conectando… + Contém mídia não livre + Não foi possível baixar %s + Não foi possível sincronizar %s + Não foi possível validar %s + Créditos + Escuro + Excluir + Eliminar o repositório\? + Descrição + Detalhes + Doar + Baixado %s + Baixando + Baixando %s… + Editar repositório + Formato de arquivo inválido. + Fingerprint + Contém anúncio + Possui dependências não livres + Possui vulnerabilidades de segurança + Resposta de servidor inválida. + Proxy HTTP + Ignorar todas as novas versões + Ignorar esta versão + Sua %1$s (Versão da API %2$d) não é suportado. %3$s + A versão máxima da API é %d. + A versão mínima da API é %d. + Funcionalidades que estão faltando. + Esta versão é mais antiga que a instalada no seu dispositivo. + Desinstale a primeiro. + Sua %1$s plataforma não é suportada. + Plataformas suportadas: %2$s. + Esta versão é assinada com um certificado diferente do que está + instalado no seu dispositivo. Desinstale-a primeiro. + Versão incompatível + Versões incompatíveis + Mostrar versões do aplicativo incompatíveis com o dispositivo + Incompatível com %s + Instalar + Tipos de instalação + Instalado + Não foi possível verificar a integridade. + Endereço inválido + Formato de fingerprint inválido + Metadado inválido. + Permissão inválida. + Assinatura inválida. + Formato de nome do usuário inválido + Abrir + Licença + %s licença + Claro + Link copiado + Links + Animação da lista + Mostrar a animação da lista na página principal + Incorporando %s + Nome + Erro da rede + Nunca + Novas versões de aplicativos disponíveis + + %d aplicativo tem uma nova versão. + %d aplicativos possuem novas versões. + %d aplicativos possuem novas versões. + + Nenhum aplicativo disponível + Nenhum aplicativo instalado + Nenhuma descrição disponível + Não foi possível encontrar nenhum desses aplicativos + Sem proxy + Notificar atualizações + Mostrar uma notificação quando novas versões estiverem disponíveis + Número de aplicativos + OK + Somente compatível com %s + Somente no Wi-Fi + Abrir %s? + Outro + Não foi possível analisar o arquivo de índice. + Senha + Falta a senha + Permissões + +%d mais + Configurações + Processando %1$s… + Página do projeto + Promove serviços de rede não livres + Promove software não livre + Disponibilizado por %s + Proxy + Servidor de Proxy + Porta de Proxy + Tipo de Proxy + Atualização recente + Repositórios + Repositório + Este repositório ainda não foi usado. Ative-o para visualizar os aplicativos nele. + Sem assinatura. Não foi possível verificar a lista de aplicativos. Tenha cuidado ao baixar aplicativos de repositórios não assinados. + Requer %s + Instalação Silenciosa + Permitir acesso root para instalações silenciosas + Salvar + Salvando detalhes… + Capturas de tela + Pesquisar + Selecione um mirror + Compartilhar + Mostrar mais + Mostrar versões antigas + Assinatura %s + Assinado usando um algoritmo inseguro + Tamanho + Pular + proxy SOCKS + Ordenar por + Código fonte + Código fonte não está mais disponível + Sugerido + Sincronizar repositórios + Sincronizar repositórios automaticamente + Sincronizando + Sincronizando %s… + Seguir o do sistema + Toque para instalar. + Meta + Tema + Temas + Rastreia ou relata sua atividade + Desinstalar + Desconhecido + Error desconhecido. + Desconhecido: %s + Sem assinatura + Atualizações instáveis + Sugerir instalar versões instáveis + Não verificado + Atualizar + Atualizações + O código-fonte upstream não é gratuito + Nome de usuário + Falta o nome de usuário + O índice não pôde ser validado. + Versão + Versão %s + Versões + Esperando para começar a baixar… + O que há de novo + Página web + Idioma + Personalização + Mostrar Menos + Aplicativos instalados + Mais recentes + Explorar + Atualizar tudo + Ordenar e Filtrar + Novos aplicativos + Instalador + Instalador antigo + Instalador Shizuku + Instalador root + Instalador de sessão + Intervalo de limpeza do APK + Período para verificar e remover arquivos baixados + + Dia + Dias + Dias + + + Hora + Horas + Horas + + Apenas no Wi-Fi e Carregando + Incapaz de executar certas ações. + Você não tem conexão com a internet + Permite que a barra de aplicativos superior seja expandida e recolhida + Permitir que a Barra Superior de Aplicativos se Expanda + Use o tema de material you cores + Material You + Favoritos + Forçar limpeza + Limpa arquivos redundantes + Repositório inacessível + Ativar o repositório + Instalando + Reinicie o LeOS-Droid para ver as alterações + Aguardando para iniciar a instalação… + Atualizar aplicativos automaticamente + Tente instalar atualizações automaticamente + Possui componentes não livres + O servidor não conseguiu fornecer o novo pacote. + Não foi possível conectar ao servidor + Importar/Exportar + Deslizamento na tela principal + Importar configurações + Contém conteúdo não seguro para o trabalho + Shizuku não está em execução + Importar configurações e favoritos de um arquivo + Copiar + Exportar configurações + A Porta Proxy deve ser um inteiro + Exportar todos os repositórios para um arquivo + Importar repositórios + Exportar configurações e favoritos para um arquivo + Permitir que usuário deslize entre páginas na tela inicial + Exportar repositórios + Importar todos os repositórios de um arquivo + O seguinte repositório não foi encontrado + Créditos especiais + Shizuku não está instalado + Não foi possível abrir o link + \ No newline at end of file diff --git a/core/common/src/main/res/values-pt/strings.xml b/core/common/src/main/res/values-pt/strings.xml new file mode 100644 index 0000000..6b84e01 --- /dev/null +++ b/core/common/src/main/res/values-pt/strings.xml @@ -0,0 +1,236 @@ + + + Endereço + Créditos + Falha na ação + Sempre + Explorar + Confirmação + Tem dependências não livres + Já existe + Descrição + Detalhes + Doar + A descarregar + O seu %1$s (versão de API %2$d) não é suportada. %3$s + A versão máxima da API é %d. + A versão mínima da API é %d. + Não foi possível encontrar quaisquer aplicações + Não usar proxy + Notificar para atualizações + Mostrar uma notificação se existirem novas versões + Promove serviços de rede não livres + Promove software não livre + Nome de utilizador + Nome de utilizador em falta + Versão + Site do projeto + Atualizações + Novidades + Personalização + Aplicação não encontrada + Cancelar + Os repositórios estão a ser sincronizados e não podem ser editados. + Versão incompatível + Palavra-passe + Mostrar versões antigas + A sincronizar %s… + Tema + Recentes + Preto + Todas as aplicações + Todas as aplicações estão atualizadas + E-mail do autor + Site do autor + Registo de alterações + A verificar repositório… + Não foi possível descarregar %s + Escuro + A descarregar %s… + Impressão digital + Resposta do servidor inválida. + Anti-funcionalidades + Aplicação + Alterações + Contém multimédia não livre + Não foi possível sincronizar %s + Formato de ficheiro inválido. + Tem publicidade + Procurar + Compilada para depuração + Ignorar todas as novas versões + Funcionalidades em falta. + A sua plataforma %1$s não é suportada. Plataformas suportadas: %2$s. + Incompatível com %s + Instalar + Tipos de instalação + Instaladas + Esta versão está assinada com um certificado diferente do que está instalado no seu dispositivo. Desinstale essa primeiro. + Mostrar versões incompatíveis com o dispositivo + Licença + Licença %s + Claro + Ligação copiada + Ligações + Animação de listas + Animar lista da página principal + Nunca + Novas versões disponíveis + + %d aplicação tem uma nova versão. + %d aplicações têm novas versões. + %d aplicações têm novas versões. + + Abrir + +%d + Definições + A processar %1$s… + Disponibilizado por %s + Proxy + Servidor + Porta + Tipo + Atualizadas recentemente + Repositórios + Este repositório ainda não foi usado. Ative-o para ver as aplicações existentes. + Guardar + Não assinada + O código fonte principal não é livre + Versão %s + Versões + À espera para descarregar… + Site + Aplicações instaladas + Ordenar e filtrar + Novas aplicações + Adicionar repositório + Remover este repositório\? + Editar repositório + Assinatura inválida. + Assinatura %s + Tamanho + Ignorar + Atualizar + Rastreio de erros + A estabelecer ligação… + Não foi possível validar %s + Remover + %s descarregada + Tem vulnerabilidades de segurança + Proxy HTTP + Ignorar esta versão + Versões incompatíveis + A combinar %s + Sem aplicações disponíveis + Não foi possível verificar a lista de aplicações. Tenha cuidado ao descarregar aplicações de repositórios não assinados. + Esta versão é anterior à que tem instalada no seu dispositivo. Desinstale essa primeiro. + Não foi possível verificar a integridade. + Endereço inválido + Meta-dados inválidos. + Nome + Sem descrição + Abrir %s\? + Permissões + Formato de impressão digital inválido + Permissões inválidas. + Formato de nome de utilizador inválido + Erro de rede + Sem aplicações instaladas + Número de aplicações + OK + Apenas compatível com %s + Apenas por Wi-Fi + Outro + Não foi possível processar o ficheiro de índice. + Palavra-passe em falta + Repositório + Requer %s + Instalação silenciosa + A guardar detalhes… + Usar root para instalações sem interação + Selecione um espelho + Partilhar + Proxy SOCKS + Sugeridas + Imagens + Mostrar mais + Ordenação + Código fonte + Código fonte indisponível + Sincronizar repositórios + A sincronizar + Sistema + Toque para instalar. + Rastreia ou reporta a sua atividade + Idioma + Mostrar menos + Assinada com um algoritmo inseguro + Sincronizar repositórios automaticamente + Destino + Desinstalar + Temas + Não foi possível validar o índice. + Desconhecido + Erro desconhecido. + Desconhecido: %s + Atualizações instáveis + Não verificada + Sugerir instalação de versões instáveis + Explorar + Atualizar tudo + Instalador antigo + Instalador + Instalador root + Instalador Shizuku + Instalador da sessão + Intervalo de limpeza de APK + Período para verificar e remover ficheiros descarregados + + Dia + Dias + Dias + + Apenas em Wi-Fi e a carregar + + Hora + Horas + Horas + + Permitir expansão da barra de aplicações + Não foi possível executar algumas ações. + Permitir recolha/expansão da barra superior de aplicações + Não existe qualquer ligação à Internet + Usar tema de cores Material You + Material You + Favoritos + Não foi possível contactar com o repositório + Impor limpeza + Limpar ficheiros redundantes + Ativar repositório + À espera para começar a instalação… + A instalar + Reiniciar LeOS-Droid para ver as alterações + Atualizações automáticas + Tentar atualizar aplicações automaticamente + Tem componentes não livres + O servidor não conseguiu fornecer um novo pacote. + Não foi possível ligar ao servidor + Shizuku não está instalado + Shizuku não está em execução + Contém conteúdo não seguro para o trabalho + Créditos especiais + Deslize no ecrã principal + Permitir deslize para trocar de páginas no ecrã principal + Copiar + Apenas pode usar um número inteiro para a porta do proxy + Não foi possível encontrar o repositório seguinte + Importar definições + Importar/Exportar + Importar definições e favoritos de um ficheiro + Exportar definições + Exportar todos os repositórios para um ficheiro + Importar repositórios + Exportar definições e favoritos para um ficheiro + Exportar repositórios + Importar todos os repositórios de um ficheiro + \ No newline at end of file diff --git a/core/common/src/main/res/values-ro/strings.xml b/core/common/src/main/res/values-ro/strings.xml new file mode 100644 index 0000000..622b23d --- /dev/null +++ b/core/common/src/main/res/values-ro/strings.xml @@ -0,0 +1,215 @@ + + + Șterge + Donează + Ștergi depozitul\? + Descriere + Detalii + Se descarcă + Descărcat %s + Versiunea maximă API este %d. + Această versiune este mai veche decât cea instalată pe dispozitivul tău. Dezinstalează mai întâi pe aceea. + Platforma dvs. %1$s nu este acceptată. Platforme acceptate: %2$s. + Arată versiuni incompatibile ale aplicațiilor cu acest dispozitiv + Această versiune este semnat cu un certificat diferit ca cea instalată pe dispozitivul tău. Dezinstalează mai întâi pe aceea. + Versiuni incompatibile + Luminos + Se fuzionează %s + Instalator cu sesiune + Nu s-a putut verifica integritatea. + Licență %s + Format invalid al numelui de utilizator + Nicio aplicație instalată + Nu s-a putut găsi astfel de aplicații + Nu s-a putut analiza fișierul index. + Host proxy + Nesemnat. Nu se poate verifica lista de aplicații. Ai grijă când descarci aplicații din depozite nesemnate. + Salvează + Se salvează detalii… + Capturi de ecran + Semnătură %s + Nesemnat + Nume de utilizator + Aplicații noi + + Aplicația %d are o nouă versiune. + %d aplicații cu versiuni noi. + %d aplicații cu versiuni noi. + + Proxy SOCKS + Urmărește sau raportează activitatea ta + Arată o notificare când versiunile noi sunt disponibile + Acțiune eșuată + Adaugă depozit + Adresă + Toate aplicațiile + Toate aplicațiile tale sunt la zi + Permiteți extinderea barei superioare a aplicației + Permiteți ca bara superioară a aplicației să se extindă și să se prăbușească + Există deja + Negru + Funcții-Anti + Aplicație + Nu s-a putut găsi această aplicație + E-mailul autorului + Site-ul autorului + Urmăritor de bug-uri + Anulează + Jurnal de schimbări + Schimbări + Se verifică depozitul… + APK cleanup interval + Compilat pentru depanare + Conține media care nu sunt libere + Nu se poate sincroniza %s + Nu se poate valida %s + Credite + Întunecat + + Zi + Zile + Zile + + Editează depozitul + Activează depozitul + Favorite + Format de fișier invalid. + Amprentă + Forțează curățarea + Curăță fișiere redundante + Are reclame + Are dependențe non-libere + Are vulnerabilități de securitate + + Oră + Ore + Ore + + Se descarcă %s… + Răspuns server invalid. + Ignoră toate versiunile noi + Ignoră această versiune + Versiunea %1$s (versiunea API %2$d) nu este acceptată. %3$s + Proxy HTTP + Versiunea minimă API este %d. + Funcții lipsă. + Versiune incompatibil + Incompatibil cu %s + Instalează + Tipuri de Instalare + Instalator + Instalator moștenit + Instalator prin Root + Instalator Shizuku + Instalat + Adresă invalidă + Format de amprentă invalid + Metadata invalid. + Semnătură invalidă. + Imposibil de a efectua anumite acțiuni. + Lansează + Licență + Permisiuni invalide. + Link copiat în clipboard + Link-uri + Listă de Animații + Afișează lista de animații pe pagina principală + Material tu + Folosește tema de culoare Material You + Nume + Eroare de Rețea + Niciodată + Noi versiuni de aplicații disponibile + Nicio aplicație disponibilă + Nicio descriere disponibilă + Nu ai conexiune la internet + Fără proxy + Notifică despre noi versiuni ale aplicațiilor + Număr de aplicații + Compatibil numai cu %s + Numai pe Wi-Fi + Numai pe Wi-Fi și Încărcare + Deschizi %s\? + Altele + Parolă + Lipsește o parolă + Permisiuni + Încă +%d + Setări + OK + Se procesează %1$s… + Site-ul proiectului + Promovează servicii de rețea care nu sunt la liber + Promovează software care nu este la liber + Furnizat de %s + Port proxy + Tip de proxy + Actualizat recent + Depozite + Depozit + Acest depozit nu a fost utilizat încă. Activează-l pentru a vedea aplicațiile din el. + Depozit inaccesibil + Necesită %s + Instalare silențioasă + Acordă permisiunea root pentru instalații silențioase + Proxy + Caută + Selectează o oglindă + Distribuie + Arată mai multe + Arată versiuni vechi + Semnat folosind un algoritm nesigur + Mărime + Treci peste + Ordinea de sortare + Codul sursă + Codul sursă nu mai este disponibil + Sugerat + Sincronizează depozitele + Sincronizează depozitele automat + Se sincronizează + Se sincronizează %s… + Sistem + Apasă pentru a instala. + Țintă + Temă + Teme + Dezinstalează + Necunoscut + Eroare necunoscută. + Necunoscut: %s + Actualizări instabile + Sugerează instalarea de versiuni instabile + Neverificat + Actualizează + Actualizări + Codul sursă din amonte nu este gratuit + Lipsește numele de utilizator + Index-ul nu poate fi validat. + Versiune + Versiunea %s + Versiuni + În așteptare pentru a începe descărcarea… + Ce este nou + Limbă + Site + Personalizare + Arată mai puțin + Ultima + Explorează + Actualizează tot + Aplicații instalate + Sortează și filtrează + Întotdeauna + Explorează + Nu se poate edita depozitul când se sincronizează acum. + Period to check and remove downloaded files + Confirmație + Se conectează… + Nu se poate descărca %s + Actualizare automată a aplicațiilor + Se așteaptă începerea instalării… + Încercați să instalați actualizările automat + Reporniți LeOS-Droid pentru a vedea modificările + Instalarea + \ No newline at end of file diff --git a/core/common/src/main/res/values-ru/strings.xml b/core/common/src/main/res/values-ru/strings.xml new file mode 100644 index 0000000..929dd57 --- /dev/null +++ b/core/common/src/main/res/values-ru/strings.xml @@ -0,0 +1,241 @@ + + + Действие не выполнено + Добавить репозиторий + Адрес + Все приложения + Все приложения обновлены + Уже существует + Всегда + Чёрная + Анти-функционал + Приложение + Невозможно найти это приложение + Эл. почта автора + Сайт автора + Обзор + Трекер ошибок + Отмена + Невозможно редактировать репозиторий, так как он сейчас синхронизируется. + Список изменений + Изменения + Проверка репозитория… + Скомпилировано для отладки + Подтверждение + Подключение… + Содержит несвободные материалы + Невозможно скачать %s + Невозможно синхронизировать %s + Невозможно проверить %s + Авторы + Тёмная + Удалить + Удалить репозиторий\? + Описание + Подробности + Пожертвовать + Скачано %s + Скачивание + Скачивание %s… + Редактировать репозиторий + Неправильный формат файла. + Отпечаток + Содержит рекламу + Имеет несвободные зависимости + Имеет уязвимости безопасности + Некорректный ответ сервера. + HTTP-прокси + Игнорировать все новые версии + Игнорировать эту версию + Ваш %1$s (версия API %2$d) не поддерживается. %3$s + Максимальная версия API - %d. + Минимальная версия API - %d. + Отсутствующие функции. + Эта версия старше той, которая установлена на вашем устройстве. Сначала удалите её. + Ваша платформа %1$s не поддерживается. +Поддерживаемые платформы: %2$s. + Эта версия подписана сертификатом, отличным от установленной на вашем устройстве. Сначала удалите её. + Несовместимая версия + Несовместимые версии + Показать версии приложений, несовместимые с устройством + Несовместимо с %s + Установить + Типы установки + Установлено + Невозможно проверить целостность. + Неправильный адрес + Неправильный формат отпечатка + Неправильные метаданные. + Неправильные разрешения. + Неправильная подпись. + Неправильный формат имени пользователя + Открыть + Лицензия + Лицензия %s + Светлая + Ссылка скопирована + Ссылки + Анимация списков + Показывать анимацию списка на главной странице + Слияние %s + Имя + Ошибка сети + Никогда + Доступны новые версии приложений + + %d обновление. + %d обновления. + %d обновлений. + %d обновлений. + + Нет доступных приложений + Нет установленных приложений + Описание отсутствует + Не найдено таких приложений + Без прокси + Уведомлять об обновлениях + Отображать уведомление о доступности новых версий + Количество приложений + ОК + Совместимо только с %s + Только по Wi-Fi + Открыть %s? + Прочее + Невозможно разобрать индексный файл. + Пароль + Пароль отсутствует + Разрешения + +%d больше + Настройки + Обработка %1$s… + Сайт проекта + Продвигает несвободные веб-службы + Продвигает несвободное ПО + Предоставлено %s + Прокси + Узел прокси + Порт прокси + Тип прокси + Недавно обновлённые + Репозитории + Репозиторий + Этот репозиторий ещё не использовался. Вам необходимо включить его для просмотра находящиеся в нем приложений. + Подпись отсутствует. Невозможно проверить список приложений. Будьте осторожны, загружая приложения из неподписанных репозиториев. + Требуется %s + Тихая установка + Предоставьте root-права для включения тихой установки + Сохранить + Сохранение данных… + Снимки экрана + Поиск + Выберите зеркало + Поделиться + Показать больше + Показать старые версии + Подпись %s + Подписано с небезопасным алгоритмом + Размер + Пропустить + SOCKS-прокси + Сортировка + Исходный код + Исходный код более не доступен + Рекомендуется + Синхронизировать репозитории + Автоcинхронизация репозиториев + Синхронизация + Синхронизация %s… + Как в системе + Нажмите, чтобы установить. + Целевой + Тема + Темы + Отслеживает и передаёт информацию о вашей активности + Удалить + Неизвестно + Неизвестная ошибка. + Неизвестно: %s + Неподписанный + Нестабильные обновления + Предлагать установить нестабильные версии + Непроверенный + Обновить + Обновления + Вышестоящий исходный код несвободен + Имя пользователя + Имя пользователя отсутствует + Индекс не может быть проверен. + Версия + Версия %s + Версии + Ожидание скачивания… + Что нового + Сайт + Язык + Персонализация + Показать меньше + Установщик + Устаревший установщик + Установщик через Root + Установщик через Shizuku + Новое + Обзор + Обновить все + Установленные приложения + Сортировать и фильтровать + Новые приложения + Сессионный установщик + Период удаления скачанных файлов + Интервал удаления APK + + день + дня + дней + дней + + + час + часа + часов + часов + + Только по Wi-Fi и на зарядке + Невозможно выполнить определённые действия. + Отсутствует подключение к интернету + Расширение верхней панели + Верхняя панель приложения будет сворачиваться и разворачиваться + Material You + Использовать цветовую тему Material You + Избранное + Репозиторий недоступен + Произвести очистку + Удаление лишних файлов + Включить репозиторий + Перезапустите LeOS-Droid для применения изменений + Установка + Ожидание начала установки… + Автообновление приложений + Пытаться установить обновления автоматически + Содержит несвободные компоненты + Сервер не смог предоставить новый пакет. + Невозможно соединиться с сервером + Содержит NSFW-материал + Shizuku не запущен + Shizuku не установлен + Особая благодарность + Жесты на главном экране + Разрешить использование жестов на главном экране + Копировать + Эти репозитории не были найдены + Порт прокси должен быть целым числом + Импорт настроек + Импорт/Экспорт + Импортировать настройки и избранное из файла + Экспорт настроек + Экспортировать все репозитории в файл + Импорт репозиториев + Экспортировать настройки и избранное в файл + Экспорт репозиториев + Импортировать все репозитории из файла + Невозможно открыть ссылку + \ No newline at end of file diff --git a/core/common/src/main/res/values-ryu/strings.xml b/core/common/src/main/res/values-ryu/strings.xml new file mode 100644 index 0000000..2859cfb --- /dev/null +++ b/core/common/src/main/res/values-ryu/strings.xml @@ -0,0 +1,224 @@ + + + かんしんりりき + リポジトリチェックそーいびーん… + %s かくにんなやびらんたん + しちめい + %s ダウンロードさびたん + くぬリポジトリさくじょさびーが? + しょうさい + ふじゆーいんねーんどーんかんけいくくまびーん + ダウンロードちゅう + %s ダウンロードちゅう… + リポジトリへんしゅう + んーかやーファイルけいしきやいびーん。 + フィンガープリント + かんくちゅんくくまびーん + やーまい + ネットワークエラー + %s マージちゅう + さん + アプリぬみーさるバージョンがいようがのうやいびーん + リポジトリ + ふめいうぅい + あしっさんかいしっぺーさびたん + リポジトリちちが + アドレス + まじりぬアプリ + まじりぬアプリーさいしさぁ + しでぃにすんじぇーさびーん + ちゃー + ブラック + くぬましこーねーんがのうゆいぬあるちぬー + アプリ + アプリぬみちかやびらんたん + さくしゃぬメールアドレス + さくしゃぬウェブサイト + バグトラッカー + キャンセル + へんかんねーんよう + デバッグぐとぅコンパイルさりとーいびーん + かくにん + しちずくちーゅう… + ふじゆーるなメディアくくまびーん + %s ダウンロードなやびらんたん + %s ちゃーちーなやびらんたん + ダーク + さくじょ + ちーふ + セキュリティじょうぬしちじゃいちゅるゆいがあいびーん + + じがん + じがん + + サーバーぬういんとうがんーかやいびーん。 + HTTPプロキシ + まじりぬみーさるバージョンむしすん + くぬバージョンむしすん + うちかいぬ %1$s (APIバージョン %2$d) ーサポートさりやびらん。%3$s + さいだいぬAPIバージョンー %d やいびーん。 + さいしょうぬAPIバージョンー %d やいびーん。 + くぬバージョンーうちかいぬデバイスんかいインストールさりとーるバージョンやかふるさるバージョンやいびーん。さきんかいすちらアンインストールしみそーれー。 + うんじゅが %1$s プラットフォームーサポートさりやびらん。サポートさりとーるプラットフォーム: %2$s 。 + くぬバージョンー,デバイスんかいインストールさりとーるアプリぬしーょうめいしょとぅはくとぅなるしょうめいしょでぃしょめいさりとーいびーん。さきんかいすちらアンインストールしみそーれー。 + + ふぃい + ふぃい + + ぐかんゆいぬねーんバージョン + ぐかんゆいぬねーんバージョン + デバイスとぅぐかんせいぬねーんアプリぬバージョンひょうじさびーん + %s んでーぐかんせいがあいびらん + インストール + インストールほうしき + インストーラー + インストールじみ + せいごうゆいかくにんなやびらんたん。 + んーかやーアドレス + んーかやーフィンガープリントけいしき + んーかやーメタデータやいびーん。 + んーかなかりーるぎんやいびーん。 + んーかやーしょめいやいびーん。 + んーかやーユーザーめいけいしき + きどう + ライセンス + %s ライセンス + ライト + リンクぬコピーさりやびたん + リンク + リストアニメーション + メインページっしリストアニメーションすん + + %d くぬアプリっしみーさるバージョンがいようかのうやいびーん。 + %d くぬアプリっしみーさるバージョンがいようかのうやいびーん。 + + りようかのうやーアプリーあいびらん + インストールじみぬアプリーあいびらん + しちめいがあいびらん + うぬぐとーるアプリーみちかやびらんたん + プロキシなし + アップデートちうちすん + みーさるバージョンがりようかのうなたるとぅちにちうちひょうじさびーん + アプリぬかじ + OK + %s んでぃぬみぐかんせいがあいびーん + Wi-Fi ぬみ + Wi-Fi しちずくじとぅじゅうでぃんじぬみ + %s ふぃらちゃびーが\? + うぬふか + インデックスファイルこーいしちなやびらんたん。 + パスワード + パスワードぬあいびらん + きんぎん + しってい + %1$s しーょりちゅう… + プロジェクトぬウェブサイト + ふじゆーるなネットワークサービスすいしょうさびーん + ふじゆーるなソフトウェアすいしょうさびーん + %s ていきょう + プロキシ + さいきんぬこうしん + リポジトリ + %s やしがふぃちよう + サイレントインストール + ふずん + しーょうさいふずんそーいびーん… + スクリーンショット + きんさく + ミラーしんたく + ちゅーゆーいん + さらにひょうじ + みさみちやいびーん。アプリぬリストきんしょうなやびらんたん。しょめいさりてぃうぅらんリポジトリからアプリダウンロードしーんさいんかえーちゅういしみそーれー + ふるさるバージョンひょうじ + しょめい %s + あんさんやあらんアルゴリズムやしめいさりとーいびーん + サイズ + スキップ + SOCKSプロキシ + ならべいがい + ソースコード + ソースコードはりようならんなやびたん + すいしょう + リポジトリちゃーき + じちゃーてぃきんかいリポジトリちゃーき + ちゃーきちゅう + %sちゃーきちゅう… + システム + タップしインストールさびーん。 + ターゲット + テーマ + テーマ + うんじゅがこうどうちいしきまたーほうくーくさびーん + アンインストール + ふめいうぅいなエラーやいびーん。 + ふめいうぅい: %s + しょめいなし + ふあんていなアップデート + ふあんていなバージョンぬインストールていあんさびーん + みきんしょう + アップデート + アップデート + アップストリームぬソースコードーふじゆーいんやいびーん + ユーザーめい + ユーザーめいぬあいびらん + インデックスきんしょうなやびらんたん。 + バージョン + バージョン %s + バージョン + ダウンロードかいしまっちょーいびーん… + しじちゃいちゅんぬアプリ + ウェブサイト + ぎんぐ + くじーるしってい + ひょうじふぃならすん + さいしん + たんさく + まじりアップデート + インストールさりとーるアプリ + みーさるアプリ + たんさく + APK ぬじちゃークリーンアップかんかく + ダウンロードじみファイルぬかくにんとぅさくじょうくなうかんかく + ちぬーはんたくちくそーいびーん。 + ちゃーきちゅうなぬでぃリポジトリへんしゅうなやびらん。 + クレジット + レガシーインストーラー + セッションインストーラー + Rootインストーラー + Shizukuインストーラー + +%d しょうさい + プロキシホスト + プロキシポート + プロキシタイプ + くぬリポジトリーなーらささりやびらん。オンなしねー、リポジトリねーんぬアプリかくにんなやびーん。 + サイレントインストールじぬrootきんぎんちーょかする + ならべいがいとぅフィルター + トップアプリバーぬかくはべるきょかしーん + トップアプリバーぬかくだい・しゅくさかのうなさびーん + とぅくていぬアクションじっこうなやびらん。 + インターネットしちずくがあいびらん + アプリじちゃーっしアップデートすん + アップデートじちゃーてぃきんかいインストールするぐとぅさびーん + インストール + インストールかいしすしまっちょーいびーん… + うきーがいー + Material You + リポジトリんかいとうたちゅっしちゃびらん + リポジトリゆうこうなさびーん + ちゅーしちちーがクリーンアップさびーん + じょうはべるファイルクリーンアップさびーん + Material Youぬカラーテーマしーようさびーん + LeOS-Droidさいきぬーんちへんかんかくにんすん + ふじゆーるなコンポーネントくくまびーん + ホームやしがみんぬスワイプ + コンテンツんかえーあんさんやあらんむんがくくまっとーいびーん + Shizukuがんじゅちゃびらん + サーバーなさちどーくなやびらんたん + サーバーやみーさるパケットていきょうなやびらんたん。 + コピー + プロキシポートーせいするうぬみやいびーん + ホームやしがみんっしページかんスワイプないるぐとぅすん + ちぎぬリポジトリぬみちかやびらんたん + スペシャルクレジット + Shizukuやしがインストールさりやびらん + \ No newline at end of file diff --git a/core/common/src/main/res/values-si/strings.xml b/core/common/src/main/res/values-si/strings.xml new file mode 100644 index 0000000..a6b3dae --- /dev/null +++ b/core/common/src/main/res/values-si/strings.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/core/common/src/main/res/values-sl/strings.xml b/core/common/src/main/res/values-sl/strings.xml new file mode 100644 index 0000000..f61d25e --- /dev/null +++ b/core/common/src/main/res/values-sl/strings.xml @@ -0,0 +1,218 @@ + + + Dodaj skladišče + Vse aplikacije + Vse posodobljene aplikacije + Že obstaja + Vedno + Naslov + Dejanje ni uspelo + Amoled + Aplikacija + Neželjene funkcije + Na voljo + Prekliči + Aplikacije ni bilo mogoče najti + Sledilnik hroščev + Dnevnik sprememb + Skladišča ni mogoče urejati, ker se trenutno sinhronizira. + Preverjanje skladišča … + Prevejeno za odpravljanje napak + Povezovanje … + Potrditev + Ni bilo mogoče potrditi %s + Temno + Vsebuje neproste medije + Krediti + Opis + Doniraj + Prenešeno %s + Podrobnosti + Prstni odtis + Vsebuje oglaševanje + Vsebuje varnostne ranljivosti + Neveljaven odgovor strežnika. + HTTP proksi + Največja različica API-ja je %d. + Manjkajoče funkcije. + Vaša platforma %1$s ni podprta. Podprte platforme: %2$s. + Nameščeno + Oglejte si različice aplikacij, ki niso združljive z napravo + Vrste namestitve + Namesti + Celovitosti ni bilo mogoče preveriti. + Neveljavni metapodatki. + Neveljaven podpis. + Zaženi + Svetlo + Prikaži animacijo seznama na glavni strani + Na voljo so nove posodobitve + Nikoli + Napaka omrežja + Obvesti o posodobitvah + Opis ni na voljo + Takih aplikacij ni bilo mogoče najti + Ni nameščenih aplikacij + Samo Wi-Fi + Odpri %s\? + Ostalo + Število aplikacij + Vredu + Dovoljenja + + še %d + Nastavitve + Obravnavanje %1$s … + Oglašuje neprosto programsko opremo + Proksi + Skladišča + Potrebuje %s + Tiha namestitev + Shrani + Shranjevanje podrobnosti … + Posnetki zaslona + Preskoči + Predlagano + Sinhronizacija + Teme + Tarča + Neznano + Odstrani + Nepodpisan + Posodobitev + Različica + Različice + Kaj je novega + Čakanje na začetek prenosa … + Indeksa ni bilo mogoče potrditi. + Spletna stran + Spremembe + Email avtorja + %s ni bilo mogoče prenesti + Spletna stran avtorja + Izbriši + Nedavno posodobljeno + Licenca + Ni bilo mogoče sinhronizirati %s + Združljivo samo z %s + %s licenca + Povezava je bila kopirana v odložišče + Spletna stran projekta + Vrsta proksija + Skladišče + Indeksne datoteke ni bilo mogoče razčleniti. + Geslo + Pokaži obvestilo, ko so na voljo nove različice + Poganja ga %s + Izvorna koda ni več na voljo + Neveljavna oblika uporabniškega imena + Brez proksija + Manjka geslo + Izvorna koda + Sinhroniziraj skladišča + Avtomatično sinhroniziraj skladišča + To skladišče še ni bilo uporabljeno. Aktivirajte ga, da vidite aplikacije, ki jih vsebuje. + Podpis %s + Vsebuje neproste odvisnosti + Nezdružljiva različica + Sistem + Tema + Ignoriraj vse posodobitve + Ignoriraj to posodobitev + Velikost + Posodobitve + Uporabniško ime + Različica %s + Prenešanje + Deli + Pokaži več + Pokaži starelše različice + Nepreverjeno + Manjka uporabniško ime + Uredi skladišče + Neveljavna oblika datoteke. + Prenašanje %s … + Nezdružljivo z %s + Nezdružljive verzije + Neveljaven naslov + Nevelavna oblika prstnega odtisa + Neveljavna dovoljenja. + Oglašuje neproste omrežne storitve + Neznano: %s + Neznana napaka. + Sinhroniziranje %s … + Ta različica je podpisana z drugačnim podpisom kot tista, ki je nameščeno v vaši napravi. To najprej odstranite. + Izbriši skladišče? + Ta različica je starejša od tiste, ki je nameščena v vaši napravi. To najprej odstranite. + Vaš %1$s (API različica %2$d) ni podprt. %3$s + Najmanjša različica API-ja je %d. + Ni podpisano. Seznama prijav ni bilo mogoče preveriti. Bodite previdni pri prenašanju aplikacij iz nepodpisanih skladišč. + Predlagajte namestitev nestabilnih posodobitev + Nestabilne posodobitve + Dovolite korenske pravice za tihe namestitve + Proksi gostitelj + Tapnite za namestitev. + Sledi ali beleži vašo dejavnost + Proksi vrata + Išči + Vrstni red + SOCKS Proksi + Na voljo ni nobenih aplikacij + + Aplikacija %d ima nove posodobitev. + Aplikaciji %d imata nove posodobitev. + Aplikacije %d imajo nove posodobitve. + Aplikacije %d imajo nove posodobitve. + + Podpisano z nevarnim algoritmom + Izberite ogledalo + Prikaži animacije + Povezave + Spajanje %s + Ime + Izvorna koda navzgor ni brezplačna + Jezik + Personalizacija + Pokaži manj + Najnovejše + Razišči + Posodobi vse + Nameščene aplikacije + Razvrsti in filtriraj + Nove aplikacije + + Dan + Dneva + Dni + Dni + + + Ura + Uri + Ure + Ur + + Samo med polnjenjem in aktiviranim Wi-Fi-jem + Namestitveni program + Časovno obdobje za preverjanje in odstranitev prenesenih datotek + Interval čiščenja APK datotek + Korenski namestitveni program + Stari namestitveni program + Sejni namestitveni program + Shizuku namestitveni program + Določenih dejanj ni mogoče izvesti. + Nimate internetne povezave + Dovoli razširitev zgornje vrstice aplikacij + Dovoli razširitev in strnitev zgornje vrstice aplikacij + Priljubljene + Material You + Uporabite barvno shemo Material You + Skladišče nedosegljivo + Prisilno čiščenje + Aktiviraj skladišče + Odstrani podvojene datoteke + Nameščanje + Znova zaženite LeOS-Droid, da vidite spremembe + Čakanje na začetek namestitve … + Samodejno posodobite aplikacije + Poskusite samodejno namestiti posodobitve + \ No newline at end of file diff --git a/core/common/src/main/res/values-sr/strings.xml b/core/common/src/main/res/values-sr/strings.xml new file mode 100644 index 0000000..3c2ec55 --- /dev/null +++ b/core/common/src/main/res/values-sr/strings.xml @@ -0,0 +1,237 @@ + + + Ажурирања + Величина + %s лиценца + Програм за инсталацију „Сесија“ + Отисак прста + Некомпатибилна верзија + + сат + сата + сати + + Није могуће преузети %s + Изворни кôд више није доступан + Ова верзија је потписана другачијим сертификатом од верзије која је инсталирана на вашем уређају. Прво то деинсталирајте. + Сачувај + Аутоматска синхронизација репозиторијума + Ажурирај све + Превлачење почетног екрана + Ова верзија је старија од верзије инсталиране на вашем уређају. Прво то деинсталирајте. + Користите Material You тему боја + Само на Wi-Fi мрежи и током пуњења + Синхронизуј репозиторијуме + Програм за инсталацију „Root“ + Радња није успела + +%d више + Програм за инсталацију + Неважећи метаподаци. + Ваш %1$s (верзија API-ја %2$d) није подржан. %3$s + Само на Wi-Fi мрежи + Лозинка + Непотписано + Интервал чишћења APK-а + Непотписано. Није могуће проверити листу апликација. Будите пажљиви при преузимању апликација из непотписаних репозиторијума. + Садржи садржај који није безбедан за рад + Изаберите резервни извор + Има неслободне компоненте + Промовише неслободне мрежне услуге + Приказује анимацију листе на главној страници + Синхронизација %s… + Омиљено + Прати или пријављује вашу активност + Неважећи потпис. + Веб-сајт + Нема инсталираних апликација + Непоуздане функције + Неважећи одговор сервера. + Спајање %s + Чека се почетак преузимања… + Покушајте да аутоматски инсталирате ажурирања + Преузимање + Истражи + Приказује обавештење када су нове верзије доступне + Предложено + Дозволе + Сортирај и филтрирај + Отворити %s\? + Није могуће потврдити индекс. + Доступне су нове верзије апликација + Све ваше апликације су ажуриране + Има неслободне зависности + Евиденција промена + Shizuku није покренут + Непознато + + дан + дана + дана + + Није могуће синхронизовати %s + Инсталирање + Ваша платформа %1$s није подржана. Подржане платформе: %2$s. + Репозиторијум је недоступан + Рестартујте LeOS-Droid да бисте видели промене + Недостаје корисничко име + Повезивање… + Ажурирање + Прикажи више + Недостају функције. + Нема доступних апликација + Присилно чишћење + Тема + SOCKS прокси + Недостаје лозинка + Опис + Material You + Циљ + Чека се почетак инсталације… + Инсталирано + Назив + Потписано коришћењем небезбедног алгоритма + Није могуће повезати се на сервер + Изворни кôд + Корисничко име + Верзија %s + Светла + Све апликације + Инсталиране апликације + Порт проксија + Захтева %s + Избриши + Репозиторијум + Компатибилно само са %s + Сервер није успео да обезбеди нови пакет. + Предлаже инсталирање нестабилних верзија + Верзија + У реду + Није могуће извршити одређене радње. + Персонализација + Има безбедносне пропусте + Остало + Потпис %s + Линк је копиран + Обрада %1$s… + Програм за инсталацију „Shizuku“ + Нове апликације + Копирај + Деинсталирај + Немате интернет везу + Прескочи + Преузета је апликација %s + Није могуће изменити репозиторијум, јер се тренутно синхронизује. + Порт проксија може бити само цео број + Број апликација + Некомпатибилно са %s + Мрежна грешка + Лиценца + Аутоматско ажурирање апликација + Снимци екрана + Недавно ажурирано + Већ постоји + Веб-сајт аутора + Детаљи + Измени репозиторијум + Редослед сортирања + Игнориши ову верзију + Неверификовано + HTTP прокси + Апликација + Увек + Адреса + Тиха инсталација + Опис није доступан + Неважећи формат отиска прста + Чување детаља… + Линкови + Има огласе + Тамна + Шта је ново + Додирните да бисте инсталирали. + Откажи + Програм за праћење грешака + Неважеће дозволе. + Садржи неслободне медије + Чисти сувишне фајлове + Промовише неслободни софтвер + Покрени + Без проксија + Црна + Синхронизација + Језик + Врсте инсталације + Програм за инсталацију „Застарело“ + Претрага + Непозната грешка. + Теме + Анимације листе + Неважећи формат фајла. + + %d апликација има нову верзију. + %d апликације имају нове верзије. + %d апликација има нове верзије. + + Дозвољава кориснику да прелази између страница на почетном екрану + Врста проксија + Избрисати репозиторијум\? + Омогући репозиторијум + Веб-сајт пројекта + Донација + Додај репозиторијум + Дозволи да се горња трака апликације прошири + Није могуће потврдити %s + Истражи + Прикажи мање + Никада + Није могуће пронаћи ниједну такву апликацију + Минимална верзија API-ја је %d. + Дозволите да се горња трака апликације прошири и скупи + Период за проверу и уклањање преузетих фајлова + Подешавања + Неважећа адреса + Оригинални изворни кôд није слободан + Некомпатибилне верзије + Имејл аутора + Провера репозиторијума… + Верзије + Максимална верзија API-ја је %d. + Овај репозиторијум још није коришћен. Укључите га да бисте видели апликације у њему. + Није могуће рашчланити фајл индекса. + Инсталирај + Системски + Потврда + Следећи репозиторијум није пронађен + Посебни кредити + Дели + Промене + Неважећи формат корисничког имена + Обавештење за ажурирања + Обезбеђује %s + Приказује верзије апликација које нису компатибилне са уређајем + Прикажи старије верзије + Shizuku није инсталиран + Нестабилна ажурирања + Хост проксија + Игнориши све нове верзије + Преузимање %s… + Није могуће проверити интегритет. + Није могуће пронаћи ту апликацију + Прокси + Најновије + Кредити + Репозиторијуми + Дозволите root дозволу за тихе инсталације + Састављено за отклањање грешака + Непознато: %s + Увоз подешавања + Увоз/Извоз + Увезите подешавања и омиљене из фајла + Извоз подешавања + Извезите све репозиторијуме у фајл + Увоз репозиторијума + Извезите подешавања и омиљене у фајл + Извоз репозиторијума + Увезите све репозиторијуме из фајла + Није могуће отворити линк + \ No newline at end of file diff --git a/core/common/src/main/res/values-sv/strings.xml b/core/common/src/main/res/values-sv/strings.xml new file mode 100644 index 0000000..3c64af5 --- /dev/null +++ b/core/common/src/main/res/values-sv/strings.xml @@ -0,0 +1,234 @@ + + + Osignerad. Det gick inte att verifiera applikationslistan. Var försiktig när du laddar ner applikationer från osignerade arkiv. + Kräver %s + Tyst installation + Spara + Skärmdumpar + Välj en mirror + Signatur %s + Källkod + Synkroniseras + Synkronisera arkiv + Synkroniserar %s… + Sortera & Filtrera + Synkronisera arkiv automatiskt + Tryck för att installera. + Teman + Avinstallera + Uppströmskällkoden är inte gratis + Användarnamn + Version + Personalisering + Visa mindre + Senast + Instabila uppdateringar + Uppdatera + Versioner + Användarnamn saknas + Index kunde inte valideras. + Vad är nytt + Språk + Root Installerare + Det gick inte att kontrollera integriteten. + Ogiltig metadata. + Licens + Ljus + Länken har kopierats + Länkar + Listanimationer + Ogiltigt fingeravtrycksformat + Ogiltiga behörigheter. + Ogiltig signatur. + Material You + Sammanfogar %s + Namn + Aldrig + Visa ett meddelande när nya versioner är tillgängliga + Nya versioner av applikationer tillgängliga + Det gick inte att hitta några sådana applikationer + Avisera om uppdateringar + + %d applikation har en ny version. + %d applikationer med nya versioner. + + Du har ingen internetanslutning + Ingen proxy + Endast kompatibel med %s + Antal applikationer + Endast på Wi-Fi + Övrig + Det gick inte att analysera indexfilen. + Lösenord + Inställningar + Bearbetar %1$s… + Projektets hemsida + Främjar icke-fria nätverkstjänster + Tillhandahålls av %s + Proxyport + SOCKS proxy + Föreslagen + Okänt fel. + Okänd: %s + Marknadsför icke-fri programvara + Sök + Visa mer + Skippa + Källkoden är inte längre tillgänglig + Proxy + Typ av proxy + Nyligen uppdaterad + Storlek + Proxyvärd + Dela + Visa äldre versioner + Sorteringsordning + Arkiv + Arkiv + Det här arkivet har inte använts ännu. Slå på den för att se applikationerna i den. + Åtgärd misslyckades + Lägg till arkiv + Adress + Alla applikationer + Alltid + Svart + Anti-funktion + Applikation + Det gick inte att hitta den applikationen + Författarens e-post + Författarens webbplats + Utforska + Felsökare + Avbryt + Ändringslogg + Kontrollerar arkivet … + APK cleanup interval + Period to check and remove downloaded files + Bekräftelse + Innehåller icke-fria media + Kunde inte ladda ner %s + Kunde inte synkronisera %s + Kunde inte validera %s + Erkännande + Mörk + Radera + Ta bort arkivet\? + Beskrivning + Detaljer + Laddar ner %s… + Redigera arkiv + Ogiltigt filformat. + Ogiltigt serversvar. + HTTP proxy + Ignorera alla nya versioner + Ignorera den här versionen + Den maximala API-versionen är %d. + Inga tillgängliga applikationer + Inga installerade applikationer + Endast på Wi-Fi och laddning + Lösenord saknas + Tillåt rotbehörighet för tysta installationer + Signerad med en osäker algoritm + Tema + Spårar eller rapporterar din aktivitet + Osignerad + Föreslå att du installerar instabila versioner + Ej verifierad + Version %s + Väntar på att börja ladda ner… + Hemsida + Utforska + Uppdatera alla + Installerade applikationer + Nya applikationer + Behörigheter + +%d till + Uppdateringar + Alla dina applikationer är uppdaterade + Låt toppverktygsfältet expandera + Låt toppverktygsfältet expandera och dras ihop + Donera + Installerare + Existerar redan + Det går inte att utföra vissa åtgärder. + %s licens + Visa listanimering på huvudsidan + Okej + Öppna %s\? + Sparar detaljer… + Sammanställd för felsökning + Har icke-fria beroenden + Laddade ned %s + + Dag + Dagar + + + Timme + Timmar + + Laddar ner + Ingen beskrivning finns tillgänglig + Saknade funktioner. + Har säkerhetsbrister + Ansluter… + Det går inte att redigera arkivet eftersom det synkroniseras just nu. + Ändringar + Din %1$s-plattform stöds inte. Plattformar som stöds: %2$s. + Installationstyper + Din %1$s (API-version %2$d) stöds inte. %3$s + Fingeravtryck + Har reklam + Min API-version är %d. + Den här versionen är signerad med ett annat certifikat än det som är installerat på din enhet. Avinstallera den först. + Inkompatibel version + Inkompatibla versioner + Visa programversioner som är inkompatibla med enheten + Inkompatibel med %s + Installera + Äldre installationsprogram + Den här versionen är äldre än den som är installerad på din enhet. Avinstallera den först. + Session Installerare + Shizuku Installerare + Ogiltig adress + Ogiltigt användarnamnsformat + Starta + Använd Material You-färgtema + Nätverksfel + Installerad + System + Mål + Okänd + Favoriter + Rensar upp överflödiga filer + Arkivet kan inte nås + Tvinga städning + Aktivera arkivet + Installerar + Starta om LeOS-Droid för att se ändringarna + Väntar på att starta installationen… + Uppdatera appar automatiskt + Försök att installera uppdateringar automatiskt + Har icke-fria komponenter + Kunde inte ansluta till server + Servern misslyckades att tillhandahålla nytt paket. + Innehåller innehåll som inte är säkert för arbete + Shizuku körs inte + Shizuku är inte installerat + Svep på hemskärmen + Tillåt användare att svepa mellan sidor på hemskärmen + Särskilda tack + Kopiera + Importera inställningar + Import/Export + Importera inställningar och favoriter från fil + Exportera inställningar + Proxyport kan bara vara ett heltal + Exportera alla arkiv till fil + Importera arkiv + Exportera inställningar och favoriter till fil + Exportera arkiv + Importera alla arkiv från fil + Följande arkiv hittades inte + Kan inte öppna länk + \ No newline at end of file diff --git a/core/common/src/main/res/values-tl/strings.xml b/core/common/src/main/res/values-tl/strings.xml new file mode 100644 index 0000000..a86fe4a --- /dev/null +++ b/core/common/src/main/res/values-tl/strings.xml @@ -0,0 +1,212 @@ + + + Ang lahat ng aplikasyon ay nasa pinakabagong bersyon + Mayroon na + Hindi kanais-nais na features + Aplikasyon + Hindi mahanap ang aplikasyon + Website ng awtor + E-mail ng awtor + Magdagdag ng repository + Lahat ng mga aplikasyon + Awtomatikong i-update ang mga app + Subukang awtomatikong mag-install ng mga update + Hindi ma-download ang %s + Hindi ma-validate ang %s + Period to check and remove downloaded files + Huwag pansinin ang bersyon na ito + Mga nawawalang feature. + Ang iyong %1$s (bersyon ng API %2$d) ay hindi suportado. %3$s + Ang max na bersyon ng API ay %d. + Ang min na bersyon ng API ay %d. + Hindi tugmang bersyon + Taga-install ng Session + Root Installer + Naka-install + Hindi masuri ang integridad. + Di-wastong address + Di-wastong format ng fingerprint + Di-wastong metadata. + Di-wastong lagda. + Ipakita ang animation ng listahan sa pangunahing pahina + Pinagsasama ang %s + Pangalan + Walang magagamit na mga application + Walang naka-install na application + Mga paborito + %s lisensya + Pilitin ang paglilinis + Nililinis ang mga redundant na file + Mas luma ang bersyong ito kaysa sa naka-install sa iyong device. I-uninstall muna yan. + + Araw + Mga araw + + I-install + Di-wastong format ng username + Mga Uri ng Pag-install + Ilunsad + Lisensya + Materyal Ikaw + Gumamit ng materyal ikaw kulay na tema + Hindi kailanman + Available ang mga bagong bersyon ng mga application + + May bagong bersyon ang %d application. + %d application na may mga bagong bersyon. + + Wala kang koneksyon sa internet + Walang available na paglalarawan + Hindi mahanap ang anumang ganoong mga application + Walang proxy + Abisuhan ang tungkol sa mga bagong bersyon ng mga application + Changelog + Mga pagbabago + Sinusuri ang repositoryo… + Naipon para sa pag-debug + Kumpirmasyon + Itim + Galugarin + Kumokonekta… + Naglalaman ng hindi libreng media + Address + Palagi + Tanggalin + Paglalarawan + Mga Detalye + Mag-donate + Na-download ang %s + Nagda-download + Dina-download ang %s… + I-edit ang repository + Di-wastong format ng file. + Fingerprint + May advertising + + Oras + Oras + + Paganahin ang repositoryo + Ang bersyon na ito ay nilagdaan gamit ang isang certificate na iba kaysa sa naka-install sa iyong device. I-uninstall muna yan. + Mga hindi tugmang bersyon + Ipakita ang mga bersyon ng application na hindi tugma sa device + APK cleanup interval + Mga kredito + Tanggalin ang repositoryo\? + Madilim + Hindi ma-sync ang %s + Nabigo ang pagkilos + Hindi ma-edit ang repository dahil nagsi-sync ito ngayon. + Bug tracker + Kanselahin + Mga di-wastong pahintulot. + Di-wastong tugon ng server. + Ang iyong %1$s platform ay hindi suportado. Mga sinusuportahang platform: %2$s. + Huwag pansinin ang lahat ng mga bagong bersyon + Hindi tugma sa %s + installer + Pag-install + Legacy na Installer + Shizuku Installer + Liwanag + Error sa network + Nakopya ang link sa clipboard + Mga link + Listahan ng mga animation + Hindi magawa ang ilang partikular na pagkilos. + Payagan ang Nangungunang App Bar na Palawakin + Payagan ang nangungunang app bar na lumawak at bumagsak + May mga hindi libreng dependencies + May mga kahinaan sa seguridad + HTTP proxy + Nagtataguyod ng hindi libreng software + Iba pa + Nawawala ang kontrasenyas + +%d higit pa + Proxy + mabuti + Magpakita ng isang abiso kapag magagamit ang mga bagong bersyon + Sa wifi at singilin lamang + Katugma lamang sa %s + Kontrasenyas + Bukas %s\? + Hindi ma -parse ang index file. + Pagproseso %1$s … + Website ng proyekto + Mga Pahintulot + Proxy port + Proxy host + Mga Repositori + Repositoryo + Sa Wi-Fi lamang + Ibinigay ng %s + Kamakailan lamang na -update + Bilang ng mga aplikasyon + Nagtataguyod ng mga serbisyo na hindi libre sa network + Uri ng proxy + I-restart ang LeOS-Droid para makita ang mga pagbabago + Magpakita ng higit pa + Nilagdaan gamit ang hindi ligtas na algorithm + Pag-uuri ng pagkakasunud-sunod + Hindi na available ang source code + Sini-sync ang %s… + I-tap para i-install. + Hindi alam: %s + Hindi nakapirma + Mga hindi matatag na update + Naghihintay upang simulan ang pag-install… + Website + Wika + Personalization + Nangangailangan ng %s + Nagsi-sync + Ibahagi + Tahimik na Pag-install + Source code + Sistema + Tema + Mga setting + Hindi pa nagagamit ang repositoryong ito. I-on ito para tingnan ang mga application sa loob nito. + Hindi nakapirma. Hindi ma-verify ang listahan ng aplikasyon. Mag-ingat sa pag-download ng mga application mula sa mga hindi naka-sign na repository. + Payagan ang pahintulot sa ugat para sa mga tahimik na pag-install + Mga screenshot + Hindi maabot ang repository + Maghanap + Pumili ng salamin + Ipakita ang mga mas lumang bersyon + Lagda %s + Sinusubaybayan o iniuulat ang iyong aktibidad + I-uninstall + Hindi kilala + Hindi kilalang error. + Magmungkahi ng pag-install ng mga hindi matatag na bersyon + Hindi na-verify + Update + Mga update + Ang upstream source code ay hindi libre + Username + Nawawala ang username + Hindi ma-validate ang index. + Bersyon + Bersyon %s + Mga bersyon + Magpakita ng Mas Kaunti + Pinakabago + I-save + Mga bagong application + Sine-save ang mga detalye… + I-sync ang mga repository + Awtomatikong i-sync ang mga repositoryo + Sukat + Laktawan + proxy na SOCKS + Mga tema + Naghihintay upang simulan ang pag-download… + Anong bago + Galugarin + Update lahat + Mga naka-install na application + Pagbukud-bukurin at Salain + Iminungkahi + Pantarget + \ No newline at end of file diff --git a/core/common/src/main/res/values-tr/strings.xml b/core/common/src/main/res/values-tr/strings.xml new file mode 100644 index 0000000..291d144 --- /dev/null +++ b/core/common/src/main/res/values-tr/strings.xml @@ -0,0 +1,235 @@ + + + Eylem başarısız oldu + Yeni depo eklenm + Depo adresi + Tüm uygulamalar + Tüm uygulamalarınız güncel + Zaten mevcut + Her zaman + Siyah + Karşıt özellikler + Uygulama + Bu uygulama bulunamadı + Yazarın e-posta adresi + Yazarın web sitesi + Gözat + Hata izleme + İptal et + Depo şuan senkronize edildiği için düzenlenemiyor. + Değişim Günlüğü + Değişiklikler + Depo denetleniyor… + Hata ayıklama için derlendi + Onay + Bağlanıyor… + Özgür olmayan içerik içerir + %s indirilemedi + %s senkronize edilemedi + %s doğrulanamadı + Katkı Sağlayanlar + Koyu + Sil + Depo silinsin mi\? + Açıklama + Ayrıntılar + Bağış + %s indirildi + İndiriliyor + %s indiriliyor… + Depoyu düzenle + Geçersiz dosya biçimi. + Parmak izi + Reklam içerir + Özgür olmayan bağımlılıklar içerir + Güvenlik açığına sahip + Geçersiz sunucu yanıtı. + HTTP proxy + Tüm yeni sürümleri yoksay + Bu sürümü yoksay + Sizin %1$s (API sürümü %2$d) desteklenmemektedir. %3$s + En yüksek API sürümü %d. + En düşük API sürümü %d. + Özellikleri eksik. + Bu sürüm aygıtınızda kurulu olandan daha eski. Önce onu kaldırın. + Sizin %1$s platformunuz desteklenmemektedir. + Desteklenen platformlar: %2$s. + Bu sürüm aygıtınızda kurulu olan sürümden farklı bir sertifika ile imzalanmış. Önce onu kaldırın. + Uyumsuz sürüm + Uyumsuz sürümler + Aygıtla uyumlu olmayan uygulama sürümlerini göster + %s ile uyumsuz + Kur + Kurulum Türleri + Kurulu + Bütünlük kontrol edilemedi. + Geçersiz adres + Geçersiz parmak izi biçimi + Geçersiz metaveri. + Geçersiz izinler. + Geçersiz imza. + Geçersiz kullanıcı adı biçimi + Başlat + Lisans + %s lisansı + Açık + Bağlantı kopyalandı + Bağlantılar + Liste Animasyonu + Liste canlandırmasını ana sayfada göster + %s birleştiriliyor + İsim + Ağ hatası + Asla + Uygulamaların yeni sürümleri var + + %d uygulamanın yeni bir sürümü var. + %d uygulamanın sürümleri var. + + Kullanılabilir uygulama yok + Kurulu uygulama yok + Açıklama yok + Böyle bir uygulama bulunamadı + Proxy yok + Güncellemeleri bildir + Yeni sürümler kullanılabilir olduğunda bir bildirim göster + Uygulama sayısı + Tamam + Yalnızca %s ile uyumlu + Yalnızca Wi-Fi + %s açılsın mı? + Diğer + Dizin dosyası çözümlenemedi. + Parola + Parola eksik + İzinler + +%d daha + Ayarlar + %1$s işleniyor… + Proje web sitesi + Özgür olmayan ağ hizmetlerini destekler + Özgür olmayan yazılımı destekler + %s tarafından sağlandı + Proxy + Proxy sağlayıcısı + Vekil bağlantı noktası + Proxy türü + Son güncelleme + Depolar + Depo + Bu depo henüz kullanılmadı. İçindeki uygulamaları görüntülemek için etkinleştirin. + İmzalanmamış. Uygulama listesi doğrulanamadı. İmzalanmamış depolardan uygulama indirirken dikkatli olun. + %s gerektirir + Sessiz Kurulum + Sessiz kurulumlar için root iznine izin ver + Kaydet + Ayrıntılar kaydediliyor… + Ekran görüntüleri + Arama + Bir yansı seç + Paylaş + Daha fazla göster + Eski sürümleri göster + İmza %s + Güvenli olmayan bir algoritma ile imzalanmış + Boyut + Atla + SOCKS vekili + Sıralama düzeni + Kaynak kodu + Kaynak kodu artık mevcut değil + Önerilen + Depoları senkronize et + Depoları otomatik senkronize et + Senkronize ediliyor + %s senkronize ediliyor… + Sistem + Kurmak için dokunun. + Hedef + Tema + Temalar + Etkinliğinizi takip eder ya da raporlar + Kaldır + Bilinmeyen + Bilinmeyen hata. + Bilinmeyen: %s + İmzalanmamış + Kararsız güncellemeler + Kararsız sürümleri kurmayı öner + Doğrulanmamış + Güncelleştir + Güncellemeler + Yukarı akış kaynak kodu özgür değil + Kullanıcı adı + Kullanıcı adı yok + Dizin doğrulanamadı. + Sürüm + Sürüm %s + Sürümler + İndirmenin başlaması bekleniyor… + Ne var ne yok + Web sitesi + Dil + Kişiselleştirme + Daha Az Göster + En son + Gözat + Tümünü güncelle + Sırala ve Filtrele + Yüklü uygulamalar + Yeni uygulamalar + Kurucu + Eski Kurucu + Oturum Kurucusu + Root Kurucusu + Shizuku Kurucusu + APK temizleme aralığı + + Gün + Günler + + Sadece Wi-Fi açık ve Şarj Olurken + İndirilen dosyaları kontrol etme ve kaldırma süresi + + Saat + Saatler + + Belirli eylemler gerçekleştirilemiyor. + İnternet bağlantınız yok + Üst Uygulama Çubuğunun Genişletilmesine İzin Ver + Üst uygulama çubuğunun genişletilmesine ve daraltılmasına izin verin + Material you renk temasını kullan + Material You + Favoriler + Depoya ulaşılamıyor + Temizlemeye zorla + Gereksiz dosyaları temizler + Depoyu etkinleştir + Kuruluyor + Değişiklikleri görmek için LeOS-Droid\'ı yeniden başlatın + Kurulumun başlatılması bekleniyor… + Uygulamaları otomatik güncelle + Güncellemeleri otomatik olarak kurmaya çalış + Özgür olmayan bileşenlere sahip + Ana Ekranda Kaydırma + Uygunsuz içerik barındırır + Shizuku çalışmıyor + Sunucuya bağlanılamadı + Sunucu yeni paketi sağlayamadı. + Kopyala + Proxy kapısı (port) sadece tam sayı olabilir + Kullanıcı ana ekrandayken sayfalar arası kaydırabilmesini sağlar + İlgili depo bulunamadı + Teşekkürler + Shizuku kurulu değil + İçe aktarma seçenekleri + Al/Aktar + Ayarları ve favorileri dosyadan içe aktar + Dışa Aktarma Seçenekleri + Tüm depoları dosyaya aktar + Depo ekle + Ayarları ve favorileri dosyaya aktar + Depoları Dışa Aktar + Tüm depoları dosyadan içe aktar + Bağlantı açılamıyor + \ No newline at end of file diff --git a/core/common/src/main/res/values-uk/strings.xml b/core/common/src/main/res/values-uk/strings.xml new file mode 100644 index 0000000..e1d557e --- /dev/null +++ b/core/common/src/main/res/values-uk/strings.xml @@ -0,0 +1,240 @@ + + + Деталі + Невірний підпис. + Невірні дозволи. + Не вдалося перевірити %s + Ця версія підписана сертифікатом, що відрізняється від того, що встановлений на вашому пристрої. Спершу видаліть встановлену. + Немає доступний застосунків + Не вдалося знайти ні одного подібного застосунку + Відсутні функції. + Всі застосунки + Скасувати + Зміни + Перевіряю розпозиторії… + Застосунок + Завжди + Дія не вдалася + Додати репозиторій + Адреса + Усі ваші застосунки оновлені + Уже існує + Чорна + Анти-функції + Пошта автора + Вебсайт автора + Огляд + Баг-трекер + Не можу редагувати репозиторії, оскільки він зараз синхронізується. + Список змін + Скомпільовано для відладки + Приєднуюся… + Мість невільні матеріали + Не вдалося завантажити %s + Видалити репозиторій\? + Опис + Пожертвувати + Завантажено %s + Завантаження + Завантажую %s… + Редагувати репозиторій + Невірний формат файла. + Містить рекламу + Містить невільні залежності + Некоректна відповідь сервера. + HTTP проксі + Ігнорувати всі нові версії + Ігнорувати цю версію + Ваш %1$s (версія API %2$d) не підтримується. %3$s + Максимальна версія API %d. + Мінімальна версія API %d. + Поточна версія старіша за встановлену на вашому пристрої. Спершу видаліть встановлену. + Ваша %1$s платформа не підтримується. Платформи, що підтримуються: %2$s. + Несумісна версія + Показати версії застосунку, що не сумісні з цим пристроєм + Несумісно з %s + Встановити + Типи встановлення + Встановлено + Невірна адреса + Запустити + Ліцензія + Ліцензія %s + Посилання скопійовано + Посилання + Анімація Списків + Показувати анімацію списку на головній сторінці + Злиття %s + Ім\'я + Помилка мережі + Доступні нові версії застосунків + Немає встановлених застосунків + Опис відсутній + Без проксі + Сповіщати про оновлення + Відображати повідомлення про доступність нових версій + Кількість застосунків + ОК + Лише по Wi-Fi + Відкрити %s\? + Інше + Пароль відсутній + Дозволи + +%d більше + Налаштування + Сайт проєкту + Просуває невільні мережеві сервіси + Просуває невільне ПЗ + Надано %s + Проксі + Хост проксі + Порт проксі + Тип проксі + Нещодавно оновлено + Цей репозиторій іще не використовувався. Вам потрібно увімкнути його для перегляду застосунків у ньому. + Потребує %s + Тихе встановлення + + %d застосунок має нову версію. + %d застосунки мають нову версію. + %d застосунків мають нову версію. + %d застосунків мають нову версію. + + Персоналізація + Надати root права для увімкнення тихого встановлення + Зберегти + Збереження даних… + Скріншоти + Пошук + Показати старіші версії + Для підпису використано не безпечний алгоритм + Розмір + Пропустити + SOCKS проксі + Порядок сортування + Вихідний код + Рекомендується + Синхронізація репозиторіїв + Автосинхронізація репозиторіїв + Синхронізація + Синхронізація %s… + Тема + Теми + Відслідковує або повідомляє про вашу активність + Видалити + Невідомо + Невідома помилка. + Невідомо: %s + Не підписаний + Нестабільне оновлення + Пропонувати встановити нестабільні версії + Не перевірений + Оновити + Оновлення + Вихідний код батьківського застосунку не відкритий + Ім\'я користувача + Ім\'я користувача відсутнє + Не можу перевірити індекс. + Версія %s + Версії + Що нового + Вебсайт + Мова + Не вдалося знайти цей застосунок + Підтвердження + Не вдалося синхронізувати %s + Автори + Темна + Видалити + Відбиток + Невірні метадані. + Ніколи + Сумісно тільки з %s + Оберіть дзеркало + Містить вразливості безпеки + Несумісні версії + Невірний формат відбитку + Невірний формат імені користувача + Не вдалося розібрати індексний файл. + Репозиторії + Показати більше + Підпис %s + Не вдалося перевірити цілісність. + Світла + Пароль + Обробка %1$s… + Репозиторій + Підпис відсутній. Не вдалося перевірити список застосунків. Будьте обережні, завантажуючи застосунок із не підписаних репозиторіїв. + Поділитися + Вихідний код більше не доступний + Як у системі + Натисніть щоб встановити. + Цільовий + Версія + Очікування завантаження… + Показати менше + Останні + Огляд + Оновити все + Встановлені застосунки + Сортувати та фільтрувати + Нові застосунки + Застарілий інсталятор + Інсталятор + Root інсталятор + Shizuku інсталятор + Сесійний інсталятор + + Година + Години + Годин + Годин + + + День + Дні + Днів + Днів + + Тільки при Wi-Fi та зарядці + Інтервал очищення APK + Період для перевірки та видалення завантажених файлів + Неможливо виконати певні дії. + Дозволити розширення верхньої панелі застосунку + Дозволити верхній панелі застосунку розгортатися та згортатися + У вас немає підключення до Інтернету + Material You + Використовуйте кольорову тему Material You + Обране + Провести очищення + Видалення зайвих файлів + Репозиторій недоступний + Автооновлення застосунков + Намагатися встановити оновлення автоматично + Встановлення + Перезапустіть LeOS-Droid, щоб побачити зміни + Увімкніть репозиторій + Очікування початку встановлення… + Має невільні компоненти + Жести на головному екрані + Містить NSFW вміст + Shizuku не працює + Не вдалося з’єднатися з сервером + Сервер не зміг надати новий пакунок. + Копіювати + Порт проксі може бути тільки цілим числом + Дозвольте користувачеві перегортати сторінки на головному екрані + Наступний репозиторій не знайдено + Особлива подяка + Shizuku не встановлено + Налаштування імпорту + Імпорт/Експорт + Імпорт налаштувань та обраного з файлу + Налаштування експорту + Експорт всіх репозиторіїв до файлу + Імпорт репозиторіїв + Експорт налаштувань та обраного до файлу + Експорт репозиторіїв + Імпорт всіх репозиторіїв з файлу + Неможливо відкрити посилання + \ No newline at end of file diff --git a/core/common/src/main/res/values-ur/strings.xml b/core/common/src/main/res/values-ur/strings.xml new file mode 100644 index 0000000..a6b3dae --- /dev/null +++ b/core/common/src/main/res/values-ur/strings.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/core/common/src/main/res/values-v31/dimen.xml b/core/common/src/main/res/values-v31/dimen.xml new file mode 100644 index 0000000..85a5e4b --- /dev/null +++ b/core/common/src/main/res/values-v31/dimen.xml @@ -0,0 +1,5 @@ + + + @android:dimen/system_app_widget_inner_radius + @android:dimen/system_app_widget_background_radius + \ No newline at end of file diff --git a/core/common/src/main/res/values-v31/styles.xml b/core/common/src/main/res/values-v31/styles.xml new file mode 100644 index 0000000..6209322 --- /dev/null +++ b/core/common/src/main/res/values-v31/styles.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + diff --git a/core/common/src/main/res/values-vi/strings.xml b/core/common/src/main/res/values-vi/strings.xml new file mode 100644 index 0000000..fce4f61 --- /dev/null +++ b/core/common/src/main/res/values-vi/strings.xml @@ -0,0 +1,231 @@ + + + Địa chỉ + Tất cả ứng dụng của bạn đã được cập nhật + Đã tồn tại + E-mail của tác giả + Website của tác giả + Có sẵn + Theo dõi lỗi + Nhật kí thay đổi + Kiểm tra kho… + Biên dịch để gỡ lỗi + Xác nhận + Đang kết nối… + Không thể tải về %s + Không thể đồng bộ %s + Không thể xác thực %s + Ghi nhận + Tối + Xóa kho\? + Mô tả + Đang tải về + Sửa kho + Fingerprint + Có quảng cáo + HTTP proxy + Bỏ qua tất cả các phiên bản mới + %1$s của bạn (Phiên bản API %2$d) không được hỗ trợ. %3$s + Phiên bản API nhỏ nhất là %d. + Phiên bản không tương thích + Các phiên bản không tương thích + Hiển thị các phiên bản ứng dụng không tương thích với thiết bị + Cài đặt + Đã cài đặt + Đang gộp %s + Tên + Không bao giờ + + %d ứng dụng có phiên bản mới. + + Không có ứng dụng đã cài + Hiển thị thông báo khi có phiên bản mới + Số lượng ứng dụng + OK + Chỉ trên Wi-Fi + Mật khẩu + Không thể phân tích cú pháp tệp chỉ mục. + Quyền + +%d nhiều hơn + Thiết đặt + Website của dự án + Thúc đẩy phần mềm không tự do + Cung cấp bởi %s + Cổng Proxy + Kho + Yêu cầu %s + Cài đặt nền + Cho phép quyền root để cài đặt nền + Lưu + Ảnh chụp màn hình + Chọn một mirror + Chữ kí %s + Đã ký bằng thuật toán không an toàn + Bỏ qua + Xếp theo + Mã nguồn không khả dụng nữa + Gợi ý + Đồng bộ kho + Đang đồng bộ + Đang đồng bộ %s… + Đích + Chủ đề + Các chủ đề + Theo dõi hoặc báo cáo hoạt động của bạn + Không rõ: %s + Chưa kí + Chưa xác minh + Cập nhật + Các cập nhật + Mã nguồn ngược dòng không tự do + Tên người dùng + Tên người dùng bị thiếu + Phiên bản %s + Phiên bản + Hành động thất bại + Hủy + Phụ thuộc cái không tự do + Trang web + Mới nhất + Khám phá + Cập nhật tất cả + Ứng dụng đã cài đặt + Sắp xếp & Lọc + Ứng dụng mới + Không thể chỉnh sửa kho khi đang đồng bộ. + Thêm kho lưu trữ + Không tìm thấy ứng dụng + Chi tiết + Luôn luôn + Đen + Tính năng không mong muốn + Ứng dụng + Thay đổi + Không chứa phương tiện tự do + Định dạng sai. + Xóa + Ủng hộ + Đang tải về %s… + Có lỗ hổng bảo mật + Đã tải về %s + Máy chủ không phản hồi. + Bỏ qua phiên bản này + Phiên vản API tối đa là %d. + Tính năng bị thiếu. + Không tương thích với %s + Phiên bản này cũ hơn phiên bản được cài đặt trên thiết bị của bạn. Hãy gỡ cài đặt đó trước. + Nền tảng %1$s của bạn không được hỗ trợ. Nền tảng hỗ trợ: %2$s. + Phiên bản này được ký bằng chứng chỉ khác với phiên bản được cài đặt trên thiết bị của bạn. Hãy gỡ cài đặt đó trước. + Loại cài đặt + Không thể kiểm tra tính nguyên vẹn. + Giấy phép %s + Sai định dạng fingerprint + Đã sao chép liên kết + Hiện hiệu ứng danh sách trên trang chính + Lỗi mạng + Sai địa chỉ + Dữ liệu không hợp lệ. + Quyền không hợp lệ. + Sai chữ ký. + Sại định dạng người dùng + Mở + Giấy phép + Liên kết + Hiệu ứng danh sách + Không có mô tả + Các kho + Tìm kiếm + Chia sẻ + Sáng + Đã có các phiên bản mới của ứng dụng + Không có ứng dụng nào + Mật khẩu bị thiếu + Không tìm thấy ứng dụng nào + Không proxy + Cập nhật gần đây + Thông báo các bản cập nhật + Chỉ tương thích với %s + Mở %s\? + Máy chủ Proxy + Lưu chi tiết… + Khác + Đang xử lý %1$s… + Loại Proxy + Quảng cáo các dịch vụ mạng không tự do + Kho này vẫn chưa được sử dụng. Bật nó lên để xem các ứng dụng trong đó. + Hiện phiên bản cũ + Chưa kí. Không thể xác minh danh sách ứng dụng. Cận thẩn với kho chưa kí. + Hiện thêm + Đồng bộ kho tự động + Dung lượng + Lỗi không rõ. + Có gì mới nè + Mã nguồn + Ngôn ngữ + Proxy + SOCKS Proxy + Nhấn để cài. + Phiên bản + Cá nhân hóa + Hệ thống + Gỡ cài đặt + Không rõ + Bản cập nhật không ổn định + Chỉ mục không thể được xác thực. + Gợi ý cài đặt các phiên bản không ổn định + Chờ để tải về… + Ẩn bớt + Tất cả ứng dụng + Khoảng thời gian dọn dẹp APK + Khoảng thời gian kiểm tra và xóa các tệp đã tải xuống + + Ngày + + + Giờ + + Trình cài đặt + Trình cài đặt cũ + Trình cài đặt phiên + Trình cài đặt Root + Cho phép mở rộng thanh công cụ + Cho phép mở rộng thanh công cụ và sụp đổ + Không thể thực hiện một số hành động nhất định. + Trình cài đặt Shizuku + Bạn không có kết nối internet + Chỉ trên wifi và sạc + Material You + Sử dụng chủ đề màu Material You + Tự động cập nhật ứng dụng + Cố gắng cài đặt các bản cập nhật tự động + Cài đặt + Đang đợi để bắt đầu cài đặt… + Yêu thích + Buộc dọn dẹp + Dọn dẹp các tệp dư thừa + Kho lưu trữ không thể truy cập + Kích hoạt kho lưu trữ + Khởi động lại LeOS-Droid để xem thay đổi + Vuốt màn hình chính + Chứa nội dung không an toàn cho công việc + Có các thành phần không tự do + Shizuku không chạy + Không thể kết nối tới máy chủ + Máy chủ không cung cấp được gói mới. + Sao chép + Cổng proxy chỉ có thể là Số nguyên + Cho phép người dùng vuốt giữa các trang trong màn hình chính + Không tìm thấy kho lưu trữ sau + Công trạng đặc biệt + Shizuku chưa được cài đặt + Nhập thiết đặt + Nhập/Xuất + Nhập thiết đặt và mục yêu thích từ tệp + Xuất thiết đặt + Xuất mọi kho lưu trữ sang tệp + Nhập kho lưu trữ + Xuất thiết đặt và mục yêu thích sang tệp + Xuất kho lưu trữ + Nhập mọi kho lưu trữ từ tệp + Không thể mở liên kết + \ No newline at end of file diff --git a/core/common/src/main/res/values-zh-rCN/strings.xml b/core/common/src/main/res/values-zh-rCN/strings.xml new file mode 100644 index 0000000..1906560 --- /dev/null +++ b/core/common/src/main/res/values-zh-rCN/strings.xml @@ -0,0 +1,230 @@ + + + 操作失败 + 添加存储库 + 地址 + 所有应用 + 所有应用已是最新 + 已经存在 + 总是 + 黑色(AMOLED) + 负面特征 + 应用 + 找不到应用 + 作者邮箱 + 作者网站 + 探索 + 错误追踪器 + 取消 + 存储库正在同步时无法编辑。 + 更新日志 + 更新内容 + 检查存储库… + 用于调试的版本 + 确认 + 连接中… + 包含非自由媒体 + 无法下载 %s + 无法同步 %s + 无法验证 %s + 鸣谢 + 深色 + 删除 + 确定要删除此存储库吗? + 描述 + 详情 + 捐助 + 已下载 %s + 下载中 + 正在下载 %s… + 编辑存储库 + 文件格式无效。 + 指纹 + 包含广告 + 包含非自由依赖 + 包含安全漏洞 + 服务器响应无效。 + HTTP 代理 + 忽略所有新版本 + 忽略此版本 + 您的 %1$s(API 版本 %2$d)不受支持。%3$s + 最高 API 版本为 %d。 + 最低 API 版本为 %d。 + 缺少的功能。 + 此版本比您设备上安装的版本旧。请先卸载现有的版本。 + 您的 %1$s 平台不受支持。支持的平台:%2$s。 + 此版本和您设备上安装的版本使用了不同的证书来签名。请先卸载现有的版本。 + 版本不兼容 + 不兼容的版本 + 显示与设备不兼容的应用版本 + 与 %s 不兼容 + 安装 + 安装类型 + 已安装 + 无法检查完整性。 + 地址无效 + 指纹格式无效 + 元数据无效。 + 权限无效。 + 签名无效。 + 用户名格式无效 + 启动 + 许可证 + 许可证 %s + 浅色 + 链接已复制 + 链接 + 列表动画 + 在主页上显示列表动画 + 合并 %s + 名称 + 网络错误 + 从不 + 有应用的新版本可用 + + %d 个应用有新版本。 + + 没有可用的应用 + 没有已安装的应用 + 没有描述可用 + 找不到任何这样的应用 + 无代理 + 通知更新 + 有新版本可用时显示通知 + 应用数量 + 好的 + 仅与 %s 兼容 + 仅在连接 Wi-Fi 时 + 打开 %s? + 其他 + 无法解析索引文件。 + 密码 + 缺少密码 + 权限 + +%d 个 + 设置 + 正在处理 %1$s… + 项目网站 + 推广非自由网络服务 + 推广非自由软件 + 由 %s 提供 + 代理 + 代理主机 + 代理端口 + 代理类型 + 最近更新 + 存储库 + 存储库 + 您还未启用此存储库。您需要启用它以查看其中的应用。 + 未签名,无法验证应用列表。从未签名的存储库下载应用时需谨慎。 + 需要 %s + 后台安装 + 授予 Root 权限以启用后台安装 + 保存 + 保存详情中… + 截图 + 搜索 + 选择一个镜像 + 分享 + 显示更多 + 显示旧版本 + 签名 %s + 使用不安全的算法签名 + 大小 + 跳过 + SOCKS 代理 + 排序依据 + 源代码 + 源代码不再可用 + 建议 + 同步存储库 + 自动同步存储库 + 同步中 + 正在同步 %s… + 跟随系统 + 点击安装。 + 目标 + 主题 + 主题 + 跟踪或报告您的活动 + 卸载 + 未知 + 未知错误。 + 未知:%s + 未签名 + 不稳定的更新 + 安装不稳定的版本 + 未验证 + 更新 + 更新 + 上游源代码不是自由的 + 用户名 + 缺少用户名 + 无法验证索引。 + 版本 + 版本 %s + 版本 + 等待开始下载… + 更新日志 + 网站 + 语言 + 个性化 + 收起 + 已安装应用 + 排序 & 过滤 + 最新 + 探索 + 全部更新 + 安装器 + 传统安装器 + 会话安装器 + Root 安装器 + Shizuku 安装器 + 新应用 + + + + 仅在连接 Wi-Fi 和充电时 + APK 清理间隔 + 检查并删除已下载文件的周期 + + 小时 + + 您没有连接互联网 + 无法执行某些操作。 + 允许顶部应用栏展开和折叠 + 允许顶部应用栏展开 + 自动更新应用 + 尝试自动安装更新 + 正在安装 + 收藏夹 + 使用 Material You 配色 + 存储库无法访问 + 强制清除缓存 + 清理冗余文件 + 启用此存储库 + Material You 设计 + 等待开始安装… + 重新启动 LeOS-Droid 使更改生效 + 包含非自由组件 + 服务器未能提供新数据包。 + 无法连接服务器 + 含有工作场所不宜(NSFW)的内容 + Shizuku 未运行 + Shizuku 未安装 + 特别鸣谢 + 主屏幕滑动 + 允许用户在页面之间进行滑动切换 + 复制 + 未找到以下仓库 + 代理的端口号只能是整数 + 导入设置 + 导入/导出 + 从文件导入设置和收藏夹 + 导出设置 + 导出所有存储库到文件 + 导入存储库 + 导出设置和收藏夹到文件 + 导出存储库 + 从文件导入所有存储库 + \ No newline at end of file diff --git a/core/common/src/main/res/values-zh-rTW/strings.xml b/core/common/src/main/res/values-zh-rTW/strings.xml new file mode 100644 index 0000000..afad3dc --- /dev/null +++ b/core/common/src/main/res/values-zh-rTW/strings.xml @@ -0,0 +1,231 @@ + + + 新增儲存庫 + 位址 + 操作失敗 + 已經存在 + 確認 + 連線中…… + 包含非自由媒體 + 無法下載 %s + 無法同步 %s + 安裝 + 舊版安裝程式 + Session 安裝程式 + Root 安裝程式 + 已安裝 + 無法檢查完整性。 + 位址無效 + 指紋格式無效 + 中繼資料無效。 + Shizuku 安裝程式 + 簽名無效。 + 無法解析索引檔案。 + 密碼 + 缺少密碼 + 權限 + +%d 個 + 設定 + 儲存庫 + 您還未啟用此儲存庫。您需要啟用它以檢視其中的應用程式。 + 需要 %s + 背景安裝 + 顯示舊版本 + 簽名 %s + 未知 + 最新 + 探索 + 更新全部 + 已安裝的應用程式 + 排序和過濾 + 新的應用程式 + 所有應用程式 + 所有應用程式已是最新 + 總是 + 黑色 + 負面特色 + 應用程式 + 找不到應用程式 + 作者信箱 + 作者網站 + 探索 + Bug 追蹤器 + 取消 + 無法編輯正在同步的儲存庫。 + 更新日誌 + 更新內容 + 檢查儲存庫…… + 為除錯而編譯構建 + 無法驗證 %s + 鳴謝 + 暗色 + 刪除 + 您確定要刪除此儲存庫嗎? + 描述 + 詳細資訊 + 贊助 + 已下載 %s + 下載中 + 正在下載 %s…… + 編輯儲存庫 + 檔案格式無效。 + 指紋 + 包含廣告 + 包含安全漏洞 + 伺服器回應無效。 + 包含非自由依賴 + HTTP 代理 + 忽略所有新版本 + 忽略此版本 + 您的 %1$s(API 版本 %2$d)不受支援。 %3$s + 最高 API 版本為 %d。 + 缺少的功能。 + 此版本比您裝置上安裝的版本舊。 請先解除安裝您已有的版本。 + 您的 %1$s 平台不受支援。支援的平台:%2$s。 + 此版本和您裝置上安裝的版本使用了不同的簽名檔。請先解除安裝現有的版本。 + 最低 API 版本為 %d。 + 版本不相容 + 不相容版本 + 顯示與裝置不相容的應用版本 + 與 %s 不相容 + 安裝類型 + 權限無效。 + 使用者名稱格式無效 + 啟動 + 授權 + %s 授權 + 亮色 + 已複製連結 + 連結 + 清單動畫 + 在主頁上顯示清單動畫 + 合併 %s + 名稱 + 網路錯誤 + 從不 + 有應用程式的新版本可用 + + %d 個應用程式有新版本。 + + 沒有可用的應用程式 + 沒有已安裝的應用程式 + 沒有可用的描述 + 有更新時顯示通知 + 找不到應用程式 + 無代理 + 通知更新 + 應用程式數量 + 好的 + 僅與 %s 相容 + 僅連到 Wi-Fi 時 + 開啟 %s? + 其他 + 正在處理 %1$s…… + 專案網站 + 推廣非自由網路服務 + 推廣非自由軟體 + 由 %s 提供 + 代理 + 代理主機 + 代理埠 + 儲存詳細資訊中…… + 截圖 + 搜尋 + 選擇一個鏡像 + 代理類型 + 最近更新 + 儲存庫 + 未簽名,無法驗證應用程式列表。從未簽名的儲存庫下載應用程式時要小心。 + 開啟 Root 權限以啟用背景安裝 + 儲存 + 分享 + 顯示更多 + 使用不安全的演算法簽名 + 大小 + 跳過 + SOCKS 代理 + 排序 + 原始碼 + 原始碼不再可用 + 建議 + 正在同步 %s…… + 同步儲存庫 + 系統 + 自動同步儲存庫 + 同步中 + 點選安裝。 + 目標 + 主題 + 主題 + 追蹤或報告您的活動 + 解除安裝 + 未知錯誤。 + 未簽名 + 未知: %s + 不穩定的更新 + 建議安裝不穩定的版本 + 未驗證 + 更新 + 更新 + 上游原始碼不自由 + 使用者名稱 + 缺少使用者名稱 + 無法驗證索引。 + 版本 + 版本 %s + 版本 + 等待開始下載…… + 最近上架 + 網站 + 語言 + 個人化 + 顯示較少 + 安裝程式 + APK 清理時間間隔 + 檢查和刪除下載檔案的期限 + + 小時 + + + 天數 + + 僅在連到 Wi-Fi 和充電時 + 無法執行某些特定操作。 + 允許頂部工具列展開 + 允許頂部工具列展開和折疊 + 您沒有網路連線 + Material You 設計 + 使用 material you 顏色主題 + 我的最愛 + 移除不必要檔案 + 存儲庫無法訪問 + 啟用存儲庫 + 強迫清理 + 自動更新程式 + 嘗試自動安裝更新 + 安裝 + 重新啟動 LeOS-Droid 查看更變 + 等待開始安裝… + 具有非自由元件 + 無法連線至伺服器 + 伺服器未能提供新封包。 + Shizuku 未在執行中 + Shizuku 未安裝 + 包含不適宜工作環境內容 + 特別感謝 + 首頁畫面滑動 + 允許使用者在首頁畫面之間進行滑動切換 + 複製 + 代理端口只能設定為整數 + 未找到下列儲存庫 + 匯入設定 + 匯入 / 匯出 + 從檔案中匯入設定和我的最愛 + 匯出設定 + 將所有軟體庫匯出至檔案 + 匯入軟體庫 + 將設定和我的最愛匯出至檔案 + 匯出軟體庫 + 從檔案中匯入所有軟體庫 + 無法開啟連結 + \ No newline at end of file diff --git a/core/common/src/main/res/values/colors.xml b/core/common/src/main/res/values/colors.xml new file mode 100644 index 0000000..d452123 --- /dev/null +++ b/core/common/src/main/res/values/colors.xml @@ -0,0 +1,68 @@ + + + + #000000 + #2C2C2C + + #006D3E + #006D3E + #FFFFFF + #5EFF97 + #00210F + #924C00 + #FFFFFF + #FFDCC4 + #2F1400 + #3B6470 + #FFFFFF + #BEEAF7 + #001F26 + #BA1A1A + #FFDAD6 + #FFFFFF + #410002 + #FBFDF8 + #191C1A + #E8F5E9 + #191C1A + #DCE5DB + #414942 + #717971 + #F0F1EC + #2E312E + #7ADA9D + #000000 + #006D3E + #006D3E + + #7ADA9D + #00391E + #00522D + #DAFFE7 + #FFB780 + #4E2600 + #6F3800 + #FFDCC4 + #A3CDDB + #023640 + #214C57 + #BEEAF7 + #FFB4AB + #93000A + #690005 + #FFDAD6 + #191C1A + #E1E3DE + #262B27 + #191C1A + #E1E3DE + #414942 + #C0C9C0 + #8A938B + #191C1A + #E1E3DE + #006D3E + #000000 + #7ADA9D + #7ADA9D + diff --git a/core/common/src/main/res/values/dimen.xml b/core/common/src/main/res/values/dimen.xml new file mode 100644 index 0000000..94de393 --- /dev/null +++ b/core/common/src/main/res/values/dimen.xml @@ -0,0 +1,10 @@ + + + 16dp + 4dp + 8dp + 16dp + 4dp + 8dp + 16dp + \ No newline at end of file diff --git a/core/common/src/main/res/values/strings.xml b/core/common/src/main/res/values/strings.xml new file mode 100644 index 0000000..62e7680 --- /dev/null +++ b/core/common/src/main/res/values/strings.xml @@ -0,0 +1,237 @@ + + + Action failed + Add repository + Address + All applications + All your applications are up to date + Allow Top App Bar to Expand + Allow top app bar to expand and collapse + Already exists + Always + Black + Anti-features + Application + Could not find that application + Author e-mail + Author website + Auto update apps + Try to install updates automatically + Explore + Bug tracker + Cancel + Cannot Open Link + Cannot edit repository since it is syncing right now. + Changelog + Changes + Checking repository… + APK cleanup interval + Period to check and remove downloaded files + Compiled for debugging + Confirmation + Connecting… + Contains non-free media + Could not download %s + Could not sync %s + Could not validate %s + Credits + Dark + + Day + Days + + Delete + Delete the repository? + Description + Details + Donate + Downloaded %s + Downloading + Downloading %s… + Edit repository + Import/Export + Import Settings + Import settings and favourites from file + Export Settings + Export settings and favourites to file + Import Repositories + Import all repositories from file + Export Repositories + Export all repositories to file + Enable the repository + Favourites + Invalid file format. + Fingerprint + Force clean up + Cleans up redundant files + Has advertising + Has non-free dependencies + Has non-free components + Has security vulnerabilities + Home Screen Swiping + Allow user to swipe between pages in home screen + + Hour + Hours + + Invalid server response. + Server failed to provide new packet. + Could not connect to server + HTTP proxy + Ignore all new versions + Ignore this version + Your %1$s (API version %2$d) is not supported. %3$s + The max API version is %d. + The min API version is %d. + Missing features. + This version is older than the one installed on your device. + Uninstall that first. + Your %1$s platform is not supported. + Supported platforms: %2$s. + This version is signed with a different certificate than the one + installed on your device. Uninstall that first. + Incompatible version + Incompatible versions + Show application versions incompatible with the device + Incompatible with %s + Install + Installation Types + Installer + Legacy Installer + Session Installer + Root Installer + Shizuku Installer + Shizuku is not running + Shizuku is not installed + Installed + Installing + Could not check integrity. + Invalid address + Invalid fingerprint format + Invalid metadata. + Invalid permissions. + Invalid signature. + Invalid username format + Unable to perform certain actions. + Copy + Launch + License + %s license + Light + Link copied + Links + List Animations + Show list animation on the main page + Material You + Use material you color theme + Merging %s + Name + Network error + Never + New versions of applications available + + %d application has a new version. + %d applications with new versions. + + No available applications + No installed applications + No description available + You have no internet connection + Could not find any such applications + No proxy + Notify for updates + Show a notification when new versions are available + Number of applications + OK + Only compatible with %s + Only on Wi-Fi + Only on Wi-Fi & Charging + Open %s? + Other + Could not parse the index file. + Password + Password missing + Permissions + +%d more + Processing %1$s… + Project website + Promotes non-free network services + Promotes non-free software + Provided by %s + Proxy + Proxy host + Proxy port + Proxy port can only be a Integer + Proxy type + Recently updated + Repositories + Repository + This repository has not been used yet. Turn it on to view the applications in it. + Following repository was not found + Unsigned. Could not verify the application list. Be careful downloading applications from unsigned repositories. + Repository unreachable + Requires %s + Restart LeOS-Droid to see changes + Silent Install + Allow root permission for silent installs + Save + Saving details… + Screenshots + Search + Select a mirror + Settings + Share + Show more + Show older versions + Signature %s + Signed using an unsafe algorithm + Size + Skip + SOCKS proxy + Sorting order + Source code + Source code no longer available + Special Credits + Suggested + Sync repositories + Sync repositories automatically + Syncing + Syncing %s… + System + Tap to install. + Target + Theme + Themes + Tracks or reports your activity + Uninstall + Unknown + Unknown error. + Unknown: %s + Unsigned + Unstable updates + Suggest installing unstable versions + Unverified + Update + Updates + The upstream source code is not free + Username + Username missing + Index could not be validated. + Version + Version %s + Versions + Waiting to start download… + Waiting to start installation… + What\'s New + Website + Language + Personalization + Show Less + Latest + Explore + Update all + Installed applications + Sort & Filter + New applications + Contains not safe for work content + diff --git a/core/common/src/main/res/values/styles.xml b/core/common/src/main/res/values/styles.xml new file mode 100644 index 0000000..0f3d39e --- /dev/null +++ b/core/common/src/main/res/values/styles.xml @@ -0,0 +1,197 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/common/src/test/java/com/looker/core/common/signature/HashCheckerTest.kt b/core/common/src/test/java/com/looker/core/common/signature/HashCheckerTest.kt new file mode 100644 index 0000000..71f6ed4 --- /dev/null +++ b/core/common/src/test/java/com/looker/core/common/signature/HashCheckerTest.kt @@ -0,0 +1,59 @@ +package com.leos.core.common.signature + +import java.io.File +import kotlin.test.Test +import kotlin.test.assertEquals +import kotlin.test.assertFalse +import kotlin.test.assertNotNull +import kotlin.test.assertTrue +import kotlinx.coroutines.runBlocking + +class HashCheckerTest { + + companion object { + private val sampleFile = HashCheckerTest::class.java.classLoader?.getResource("sample.txt") + private const val md5Value = "ed076287532e86365e841e92bfc50d8c" + private const val sha256Value = + "7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069" + } + + @Test + fun checkHashClass() { + val sha256 = Hash.SHA256("") + val md5 = Hash.MD5("") + val emptyHash = Hash("", "") + assertFalse(emptyHash.isValid()) + assertFalse(sha256.isValid()) + assertFalse(md5.isValid()) + } + + @Test + fun verifySha256Hash() = runBlocking { + assertNotNull(sampleFile) + val file = File(sampleFile.toURI()) + assertTrue(file.verifyHash(Hash.SHA256(sha256Value))) + } + + @Test + fun calculateSha256Hash() = runBlocking { + assertNotNull(sampleFile) + val file = File(sampleFile.toURI()) + val calculatedSha256 = file.calculateHash("sha256") + assertEquals(calculatedSha256, sha256Value) + } + + @Test + fun verifyMd5Hash() = runBlocking { + assertNotNull(sampleFile) + val file = File(sampleFile.toURI()) + assertTrue(file.verifyHash(Hash.MD5(md5Value))) + } + + @Test + fun calculateMd5Hash() = runBlocking { + assertNotNull(sampleFile) + val file = File(sampleFile.toURI()) + val calculatedMd5 = file.calculateHash("md5") + assertEquals(calculatedMd5, md5Value) + } +} diff --git a/core/common/src/test/resources/sample.txt b/core/common/src/test/resources/sample.txt new file mode 100644 index 0000000..c57eff5 --- /dev/null +++ b/core/common/src/test/resources/sample.txt @@ -0,0 +1 @@ +Hello World! \ No newline at end of file diff --git a/core/data/.gitignore b/core/data/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/core/data/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/core/data/build.gradle.kts b/core/data/build.gradle.kts new file mode 100644 index 0000000..34574a0 --- /dev/null +++ b/core/data/build.gradle.kts @@ -0,0 +1,36 @@ +plugins { + alias(libs.plugins.looker.android.library) + alias(libs.plugins.looker.hilt.work) + alias(libs.plugins.looker.lint) +} + +android { + namespace = "com.leos.core.data" + + buildTypes { + release { + // TODO: Enable once using + isMinifyEnabled = false + proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt")) + } + create("alpha") { + initWith(getByName("debug")) + isMinifyEnabled = true + } + } +} + +dependencies { + modules( + Modules.coreCommon, + Modules.coreDatabase, + Modules.coreDatastore, + Modules.coreDI, + Modules.coreDomain, + Modules.coreNetwork + ) + + implementation(libs.kotlinx.coroutines.android) + implementation(libs.fdroid.index) + implementation(libs.fdroid.download) +} diff --git a/core/data/src/main/AndroidManifest.xml b/core/data/src/main/AndroidManifest.xml new file mode 100644 index 0000000..8c4c982 --- /dev/null +++ b/core/data/src/main/AndroidManifest.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/core/data/src/main/java/com/looker/core/data/di/DataModule.kt b/core/data/src/main/java/com/looker/core/data/di/DataModule.kt new file mode 100644 index 0000000..2c8bdd4 --- /dev/null +++ b/core/data/src/main/java/com/looker/core/data/di/DataModule.kt @@ -0,0 +1,32 @@ +package com.leos.core.data.di + +import com.leos.core.data.fdroid.repository.AppRepository +import com.leos.core.data.fdroid.repository.RepoRepository +import com.leos.core.data.fdroid.repository.offline.OfflineFirstAppRepository +import com.leos.core.data.fdroid.repository.offline.OfflineFirstRepoRepository +import com.leos.core.data.fdroid.sync.IndexDownloader +import com.leos.core.data.fdroid.sync.IndexDownloaderImpl +import dagger.Binds +import dagger.Module +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent + +@Module +@InstallIn(SingletonComponent::class) +interface DataModule { + + @Binds + fun bindsAppRepository( + appRepository: OfflineFirstAppRepository + ): AppRepository + + @Binds + fun bindsRepoRepository( + repoRepository: OfflineFirstRepoRepository + ): RepoRepository + + @Binds + fun bindIndexDownloader( + indexDownloader: IndexDownloaderImpl + ): IndexDownloader +} diff --git a/core/data/src/main/java/com/looker/core/data/di/DataModuleSingleton.kt b/core/data/src/main/java/com/looker/core/data/di/DataModuleSingleton.kt new file mode 100644 index 0000000..2ac6196 --- /dev/null +++ b/core/data/src/main/java/com/looker/core/data/di/DataModuleSingleton.kt @@ -0,0 +1,22 @@ +package com.leos.core.data.di + +import com.leos.core.data.fdroid.sync.IndexDownloader +import com.leos.core.data.fdroid.sync.IndexManager +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import org.fdroid.index.IndexConverter + +@Module +@InstallIn(SingletonComponent::class) +object DataModuleSingleton { + + @Provides + fun provideIndexManager( + downloader: IndexDownloader + ): IndexManager = IndexManager( + indexDownloader = downloader, + converter = IndexConverter() + ) +} diff --git a/core/data/src/main/java/com/looker/core/data/fdroid/Mapper.kt b/core/data/src/main/java/com/looker/core/data/fdroid/Mapper.kt new file mode 100644 index 0000000..6cd4ca5 --- /dev/null +++ b/core/data/src/main/java/com/looker/core/data/fdroid/Mapper.kt @@ -0,0 +1,132 @@ +package com.leos.core.data.fdroid + +import com.leos.core.database.model.AntiFeatureEntity +import com.leos.core.database.model.AppEntity +import com.leos.core.database.model.CategoryEntity +import com.leos.core.database.model.PackageEntity +import com.leos.core.database.model.PermissionEntity +import com.leos.core.database.model.RepoEntity +import org.fdroid.index.v2.PackageV2 +import org.fdroid.index.v2.PackageVersionV2 +import org.fdroid.index.v2.RepoV2 + +fun PackageV2.toEntity( + packageName: String, + repoId: Long, + allowUnstable: Boolean = false +): AppEntity = + AppEntity( + repoId = repoId, + packageName = packageName, + categories = metadata.categories, + summary = metadata.summary ?: emptyMap(), + description = metadata.description ?: emptyMap(), + changelog = metadata.changelog ?: "", + translation = metadata.translation ?: "", + issueTracker = metadata.issueTracker ?: "", + sourceCode = metadata.sourceCode ?: "", + binaries = "", + name = metadata.name ?: emptyMap(), + authorName = metadata.authorName ?: "", + authorEmail = metadata.authorEmail ?: "", + authorWebSite = metadata.authorWebSite ?: "", + donate = metadata.donate.firstOrNull() ?: "", + liberapayID = metadata.liberapayID ?: "", + liberapay = metadata.liberapay ?: "", + openCollective = metadata.openCollective ?: "", + bitcoin = metadata.bitcoin ?: "", + litecoin = metadata.litecoin ?: "", + flattrID = metadata.flattrID ?: "", + suggestedVersionCode = versions.values.firstOrNull()?.manifest?.versionCode ?: -1, + suggestedVersionName = versions.values.firstOrNull()?.manifest?.versionName ?: "", + license = metadata.license ?: "", + webSite = metadata.webSite ?: "", + added = metadata.added, + icon = metadata.icon?.mapValues { it.value.name } ?: emptyMap(), + lastUpdated = metadata.lastUpdated, + phoneScreenshots = metadata.screenshots?.phone?.mapValues { it.value.map { it.name } } + ?: emptyMap(), + tenInchScreenshots = metadata.screenshots?.tenInch?.mapValues { it.value.map { it.name } } + ?: emptyMap(), + sevenInchScreenshots = metadata.screenshots?.sevenInch + ?.mapValues { it.value.map { it.name } } ?: emptyMap(), + tvScreenshots = metadata.screenshots?.tv?.mapValues { it.value.map { it.name } } + ?: emptyMap(), + wearScreenshots = metadata.screenshots?.wear?.mapValues { it.value.map { it.name } } + ?: emptyMap(), + featureGraphic = metadata.featureGraphic?.mapValues { it.value.name } ?: emptyMap(), + promoGraphic = metadata.promoGraphic?.mapValues { it.value.name } ?: emptyMap(), + tvBanner = metadata.tvBanner?.mapValues { it.value.name } ?: emptyMap(), + video = metadata.video ?: emptyMap(), + packages = versions.values.map(PackageVersionV2::toPackage).checkUnstable( + allowUnstable, + versions.values.firstOrNull()?.manifest?.versionCode ?: -1 + ) + ) + +private fun List.checkUnstable( + allowUnstable: Boolean, + suggestedVersionCode: Long +): List = filter { + allowUnstable || (suggestedVersionCode > 0L && it.versionCode >= suggestedVersionCode) +} + +fun PackageVersionV2.toPackage(): PackageEntity = PackageEntity( + added = added, + hash = file.sha256, + features = manifest.features.map { it.name }, + apkName = file.name, + hashType = "SHA-256", + minSdkVersion = manifest.minSdkVersion ?: -1, + maxSdkVersion = manifest.maxSdkVersion ?: -1, + signer = manifest.signer?.sha256?.firstOrNull() ?: "", + size = file.size ?: -1, + usesPermission = manifest.usesPermission.map { + PermissionEntity(name = it.name, maxSdk = it.maxSdkVersion) + } + manifest.usesPermissionSdk23.map { + PermissionEntity(name = it.name, maxSdk = it.maxSdkVersion, minSdk = 23) + }, + versionCode = manifest.versionCode, + versionName = manifest.versionName, + srcName = src?.name ?: "", + nativeCode = manifest.nativecode, + antiFeatures = antiFeatures.keys.toList(), + targetSdkVersion = manifest.usesSdk?.targetSdkVersion ?: -1, + sig = signer?.sha256?.firstOrNull() ?: "", + whatsNew = whatsNew +) + +fun RepoV2.toEntity( + id: Long, + fingerprint: String, + etag: String, + username: String, + password: String, + enabled: Boolean = true +) = RepoEntity( + id = id, + enabled = enabled, + fingerprint = fingerprint, + mirrors = mirrors.map { it.url }, + address = address, + name = name, + description = description, + timestamp = timestamp, + etag = etag, + username = username, + password = password, + antiFeatures = antiFeatures.mapValues { + AntiFeatureEntity( + name = it.value.name, + icon = it.value.icon.mapValues { it.value.name }, + description = it.value.description + ) + }, + categories = categories.mapValues { + CategoryEntity( + name = it.value.name, + icon = it.value.icon.mapValues { it.value.name }, + description = it.value.description + ) + } +) diff --git a/core/data/src/main/java/com/looker/core/data/fdroid/repository/AppRepository.kt b/core/data/src/main/java/com/looker/core/data/fdroid/repository/AppRepository.kt new file mode 100644 index 0000000..62af12a --- /dev/null +++ b/core/data/src/main/java/com/looker/core/data/fdroid/repository/AppRepository.kt @@ -0,0 +1,24 @@ +package com.leos.core.data.fdroid.repository + +import com.leos.core.common.PackageName +import com.leos.core.domain.newer.App +import com.leos.core.domain.newer.Author +import com.leos.core.domain.newer.Package +import kotlinx.coroutines.flow.Flow + +interface AppRepository { + + fun getApps(): Flow> + + fun getApp(packageName: PackageName): Flow> + + fun getAppFromAuthor(author: Author): Flow> + + fun getPackages(packageName: PackageName): Flow> + + /** + * returns true is the app is added successfully + * returns false if the app was already in the favourites and so it is removed + */ + suspend fun addToFavourite(packageName: PackageName): Boolean +} diff --git a/core/data/src/main/java/com/looker/core/data/fdroid/repository/RepoRepository.kt b/core/data/src/main/java/com/looker/core/data/fdroid/repository/RepoRepository.kt new file mode 100644 index 0000000..f875e6f --- /dev/null +++ b/core/data/src/main/java/com/looker/core/data/fdroid/repository/RepoRepository.kt @@ -0,0 +1,19 @@ +package com.leos.core.data.fdroid.repository + +import com.leos.core.domain.newer.Repo +import kotlinx.coroutines.flow.Flow + +interface RepoRepository { + + suspend fun getRepo(id: Long): Repo + + fun getRepos(): Flow> + + suspend fun updateRepo(repo: Repo) + + suspend fun enableRepository(repo: Repo, enable: Boolean) + + suspend fun sync(repo: Repo): Boolean + + suspend fun syncAll(): Boolean +} diff --git a/core/data/src/main/java/com/looker/core/data/fdroid/repository/offline/OfflineFirstAppRepository.kt b/core/data/src/main/java/com/looker/core/data/fdroid/repository/offline/OfflineFirstAppRepository.kt new file mode 100644 index 0000000..415a124 --- /dev/null +++ b/core/data/src/main/java/com/looker/core/data/fdroid/repository/offline/OfflineFirstAppRepository.kt @@ -0,0 +1,85 @@ +package com.leos.core.data.fdroid.repository.offline + +import com.leos.core.common.PackageName +import com.leos.core.data.fdroid.repository.AppRepository +import com.leos.core.database.dao.AppDao +import com.leos.core.database.dao.InstalledDao +import com.leos.core.database.model.AppEntity +import com.leos.core.database.model.InstalledEntity +import com.leos.core.database.model.PackageEntity +import com.leos.core.database.model.toExternal +import com.leos.core.datastore.SettingsRepository +import com.leos.core.datastore.get +import com.leos.core.domain.newer.App +import com.leos.core.domain.newer.Author +import com.leos.core.domain.newer.Package +import javax.inject.Inject +import kotlinx.coroutines.async +import kotlinx.coroutines.coroutineScope +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.launch + +class OfflineFirstAppRepository @Inject constructor( + installedDao: InstalledDao, + private val appDao: AppDao, + private val settingsRepository: SettingsRepository +) : AppRepository { + + private val localePreference = settingsRepository.get { language } + + private val installedFlow = installedDao.getInstalledStream() + + override fun getApps(): Flow> = + appDao.getAppStream().localizedAppList(localePreference, installedFlow) + + override fun getApp(packageName: PackageName): Flow> = + appDao.getApp(packageName.name).localizedAppList(localePreference, installedFlow) + + override fun getAppFromAuthor(author: Author): Flow> = + appDao.getAppsFromAuthor(author.name).localizedAppList(localePreference, installedFlow) + + override fun getPackages(packageName: PackageName): Flow> = + appDao.getPackages(packageName.name) + .localizedPackages(packageName, localePreference, installedFlow) + + override suspend fun addToFavourite(packageName: PackageName): Boolean = coroutineScope { + val isFavourite = + async { + settingsRepository + .getInitial() + .favouriteApps + .any { it == packageName.name } + } + launch { + settingsRepository.toggleFavourites(packageName.name) + } + !isFavourite.await() + } +} + +private fun Flow>.localizedAppList( + preference: Flow, + installedFlow: Flow> +): Flow> = + combine(this, preference, installedFlow) { appsList, locale, installedList -> + appsList.toExternal(locale) { + it.findInstalled(installedList) + } + } + +private fun Flow>.localizedPackages( + packageName: PackageName, + preference: Flow, + installedFlow: Flow> +): Flow> = + combine(this, preference, installedFlow) { packagesList, locale, installedList -> + packagesList.toExternal(locale) { + InstalledEntity(packageName.name, it.versionCode, it.sig) in installedList + } + } + +private fun AppEntity.findInstalled(list: List): PackageEntity? = + packages.find { + InstalledEntity(packageName, it.versionCode, it.sig) in list + } diff --git a/core/data/src/main/java/com/looker/core/data/fdroid/repository/offline/OfflineFirstRepoRepository.kt b/core/data/src/main/java/com/looker/core/data/fdroid/repository/offline/OfflineFirstRepoRepository.kt new file mode 100644 index 0000000..3d2aa88 --- /dev/null +++ b/core/data/src/main/java/com/looker/core/data/fdroid/repository/offline/OfflineFirstRepoRepository.kt @@ -0,0 +1,115 @@ +package com.leos.core.data.fdroid.repository.offline + +import com.leos.core.common.extension.exceptCancellation +import com.leos.core.data.fdroid.repository.RepoRepository +import com.leos.core.data.fdroid.sync.IndexManager +import com.leos.core.data.fdroid.toEntity +import com.leos.core.database.dao.AppDao +import com.leos.core.database.dao.RepoDao +import com.leos.core.database.model.toExternal +import com.leos.core.database.model.update +import com.leos.core.datastore.SettingsRepository +import com.leos.core.di.ApplicationScope +import com.leos.core.di.DefaultDispatcher +import com.leos.core.domain.newer.Repo +import javax.inject.Inject +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.coroutineScope +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.first +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.launch +import kotlinx.coroutines.runBlocking +import kotlinx.coroutines.supervisorScope +import kotlinx.coroutines.withContext + +class OfflineFirstRepoRepository @Inject constructor( + private val appDao: AppDao, + private val repoDao: RepoDao, + private val settingsRepository: SettingsRepository, + private val indexManager: IndexManager, + @DefaultDispatcher private val dispatcher: CoroutineDispatcher, + @ApplicationScope private val scope: CoroutineScope +) : RepoRepository { + + private val preference = runBlocking { + settingsRepository.getInitial() + } + + private val locale = preference.language + + override suspend fun getRepo(id: Long): Repo = withContext(dispatcher) { + repoDao.getRepoById(id).toExternal(locale) + } + + override fun getRepos(): Flow> = + repoDao.getRepoStream().map { it.toExternal(locale) } + + override suspend fun updateRepo(repo: Repo) { + scope.launch { + val entity = repoDao.getRepoById(repo.id) + repoDao.upsertRepo(entity.update(repo)) + } + } + + override suspend fun enableRepository(repo: Repo, enable: Boolean) { + scope.launch { + val entity = repoDao.getRepoById(repo.id) + repoDao.upsertRepo(entity.copy(enabled = enable)) + if (enable) sync(repo) + } + } + + override suspend fun sync(repo: Repo): Boolean = coroutineScope { + val index = try { + indexManager.getIndex(listOf(repo))[repo] ?: throw Exception("Empty index returned") + } catch (e: Exception) { + e.exceptCancellation() + return@coroutineScope false + } + val updatedRepo = index.repo.toEntity( + id = repo.id, + fingerprint = repo.fingerprint, + username = repo.authentication.username, + password = repo.authentication.password, + etag = repo.versionInfo.etag ?: "", + enabled = true + ) + repoDao.upsertRepo(updatedRepo) + val apps = index.packages.map { + it.value.toEntity(it.key, repo.id, preference.unstableUpdate) + } + appDao.upsertApps(apps) + true + } + + override suspend fun syncAll(): Boolean = supervisorScope { + val repos = repoDao.getRepoStream().first().filter { it.enabled } + val indices = try { + indexManager + .getIndex(repos.toExternal(locale)) + .filter { (_, index) -> index != null } + } catch (e: Exception) { + e.exceptCancellation() + return@supervisorScope false + } + if (indices.isEmpty()) return@supervisorScope true + indices.forEach { (repo, index) -> + val updatedRepo = index!!.repo.toEntity( + id = repo.id, + fingerprint = repo.fingerprint, + username = repo.authentication.username, + password = repo.authentication.password, + etag = repo.versionInfo.etag ?: "", + enabled = true + ) + repoDao.upsertRepo(updatedRepo) + val apps = index.packages.map { + it.value.toEntity(it.key, repo.id, preference.unstableUpdate) + } + appDao.upsertApps(apps) + } + true + } +} diff --git a/core/data/src/main/java/com/looker/core/data/fdroid/sync/IndexDownloader.kt b/core/data/src/main/java/com/looker/core/data/fdroid/sync/IndexDownloader.kt new file mode 100644 index 0000000..f3f4ec5 --- /dev/null +++ b/core/data/src/main/java/com/looker/core/data/fdroid/sync/IndexDownloader.kt @@ -0,0 +1,33 @@ +package com.leos.core.data.fdroid.sync + +import com.leos.core.domain.newer.Repo +import org.fdroid.index.v1.IndexV1 +import org.fdroid.index.v2.Entry +import org.fdroid.index.v2.IndexV2 + +interface IndexDownloader { + + suspend fun downloadIndexV1(repo: Repo): IndexDownloadResponse + + suspend fun downloadIndexV2(repo: Repo): IndexV2 + + suspend fun downloadIndexDiff(repo: Repo, name: String): IndexV2 + + suspend fun downloadEntry(repo: Repo): IndexDownloadResponse + + suspend fun determineIndexType(repo: Repo): IndexType +} + +data class IndexDownloadResponse( + val index: T, + val fingerprint: String, + val lastModified: Long?, + val etag: String? +) + +fun Repo.indexUrl(parameter: String): String = + buildString { + append(address.removeSuffix("/")) + append("/") + append(parameter.removePrefix("/")) + } diff --git a/core/data/src/main/java/com/looker/core/data/fdroid/sync/IndexDownloaderImpl.kt b/core/data/src/main/java/com/looker/core/data/fdroid/sync/IndexDownloaderImpl.kt new file mode 100644 index 0000000..4fa3671 --- /dev/null +++ b/core/data/src/main/java/com/looker/core/data/fdroid/sync/IndexDownloaderImpl.kt @@ -0,0 +1,134 @@ +package com.leos.core.data.fdroid.sync + +import com.leos.core.common.signature.FileValidator +import com.leos.core.data.fdroid.sync.signature.EntryValidator +import com.leos.core.data.fdroid.sync.signature.IndexValidator +import com.leos.core.domain.newer.Repo +import com.leos.network.Downloader +import com.leos.network.NetworkResponse +import java.io.File +import java.io.InputStream +import java.util.Date +import java.util.UUID +import javax.inject.Inject +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext +import org.fdroid.index.IndexParser +import org.fdroid.index.parseV2 +import org.fdroid.index.v1.IndexV1 +import org.fdroid.index.v2.Entry +import org.fdroid.index.v2.IndexV2 + +class IndexDownloaderImpl @Inject constructor( + private val downloader: Downloader +) : IndexDownloader { + + companion object { + private val parser = IndexParser + + private fun InputStream.parseIndexV2(): IndexV2 = parser.parseV2(this) + + private const val INDEX_V1_FILE_NAME = "index-v1.jar" + private const val INDEX_V2_FILE_NAME = "index-v2.json" + private const val ENTRY_FILE_NAME = "entry.jar" + } + + override suspend fun downloadIndexV1( + repo: Repo + ): IndexDownloadResponse = withContext(Dispatchers.IO) { + var repoFingerprint: String? = null + var fileIndex: IndexV1? = null + val validator = IndexValidator(repo) { index, fingerprint -> + repoFingerprint = fingerprint + fileIndex = index + } + val (_, response) = downloadIndexFile(repo, INDEX_V1_FILE_NAME, validator) + val isFingerprintAndIndexValid = repoFingerprint == null || + fileIndex == null || + repoFingerprint?.isBlank() == true || + response is NetworkResponse.Error + if (isFingerprintAndIndexValid) { + throw IllegalStateException("Fingerprint: $repoFingerprint, Index: $fileIndex") + } + IndexDownloadResponse( + index = fileIndex!!, + fingerprint = repoFingerprint!!, + lastModified = fileIndex?.repo?.timestamp, + etag = (response as NetworkResponse.Success).etag + ) + } + + override suspend fun downloadIndexV2( + repo: Repo + ): IndexV2 = withContext(Dispatchers.Default) { + val (file, _) = downloadIndexFile(repo, INDEX_V2_FILE_NAME) + file.inputStream().parseIndexV2() + } + + override suspend fun downloadIndexDiff( + repo: Repo, + name: String + ): IndexV2 = withContext(Dispatchers.Default) { + val (file, _) = downloadIndexFile(repo, name) + file.inputStream().parseIndexV2() + } + + override suspend fun downloadEntry( + repo: Repo + ): IndexDownloadResponse = withContext(Dispatchers.IO) { + var repoFingerprint: String? = null + var fileEntry: Entry? = null + val validator = EntryValidator(repo) { entry, fingerprint -> + repoFingerprint = fingerprint + fileEntry = entry + } + val (_, response) = downloadIndexFile(repo, ENTRY_FILE_NAME, validator) + val isFingerprintAndIndexValid = repoFingerprint == null || + fileEntry == null || + repoFingerprint?.isBlank() == true || + response is NetworkResponse.Error.Validation + require(isFingerprintAndIndexValid) { "Empty Fingerprint" } + IndexDownloadResponse( + index = fileEntry!!, + fingerprint = repoFingerprint!!, + lastModified = fileEntry?.timestamp, + etag = (response as NetworkResponse.Success).etag + ) + } + + override suspend fun determineIndexType(repo: Repo): IndexType { + val isIndexV2 = downloader.headCall(repo.indexUrl(ENTRY_FILE_NAME)) + return if (isIndexV2 is NetworkResponse.Success) { + IndexType.ENTRY + } else { + IndexType.INDEX_V1 + } + } + + private suspend fun downloadIndexFile( + repo: Repo, + indexParameter: String, + validator: FileValidator? = null + ): Pair = withContext(Dispatchers.IO) { + val tempFile = File.createTempFile(repo.name, UUID.randomUUID().toString()) + val response = downloader.downloadToFile( + url = repo.indexUrl(indexParameter), + target = tempFile, + validator = validator, + headers = { + if (repo.shouldAuthenticate) { + authentication( + repo.authentication.username, + repo.authentication.password + ) + } + if (repo.versionInfo.timestamp > 0L) { + ifModifiedSince( + Date(repo.versionInfo.timestamp) + ) + } + } + ) + tempFile to response + } +} diff --git a/core/data/src/main/java/com/looker/core/data/fdroid/sync/IndexManager.kt b/core/data/src/main/java/com/looker/core/data/fdroid/sync/IndexManager.kt new file mode 100644 index 0000000..2095092 --- /dev/null +++ b/core/data/src/main/java/com/looker/core/data/fdroid/sync/IndexManager.kt @@ -0,0 +1,52 @@ +package com.leos.core.data.fdroid.sync + +import com.leos.core.domain.newer.Repo +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext +import org.fdroid.index.IndexConverter +import org.fdroid.index.v2.EntryFileV2 +import org.fdroid.index.v2.IndexV2 + +class IndexManager( + private val indexDownloader: IndexDownloader, + private val converter: IndexConverter +) { + + suspend fun getIndex( + repos: List + ): Map = withContext(Dispatchers.Default) { + repos.associate { repo -> + when (indexDownloader.determineIndexType(repo)) { + IndexType.INDEX_V1 -> { + val response = indexDownloader.downloadIndexV1(repo) + repo.update( + fingerprint = response.fingerprint, + timestamp = response.lastModified, + etag = response.etag + ) to converter.toIndexV2(response.index) + } + + IndexType.ENTRY -> { + val response = indexDownloader.downloadEntry(repo) + val updatedRepo = repo.update( + fingerprint = response.fingerprint, + timestamp = response.lastModified, + etag = response.etag + ) + if (response.lastModified == repo.versionInfo.timestamp) { + return@associate updatedRepo to null + } + val diff = response.index.getDiff(repo.versionInfo.timestamp) + updatedRepo to downloadIndexBasedOnDiff(repo, diff) + } + } + } + } + + private suspend fun downloadIndexBasedOnDiff(repo: Repo, diff: EntryFileV2?): IndexV2 = + if (diff == null) { + indexDownloader.downloadIndexV2(repo) + } else { + indexDownloader.downloadIndexDiff(repo, diff.name) + } +} diff --git a/core/data/src/main/java/com/looker/core/data/fdroid/sync/IndexType.kt b/core/data/src/main/java/com/looker/core/data/fdroid/sync/IndexType.kt new file mode 100644 index 0000000..a1b225f --- /dev/null +++ b/core/data/src/main/java/com/looker/core/data/fdroid/sync/IndexType.kt @@ -0,0 +1,6 @@ +package com.leos.core.data.fdroid.sync + +enum class IndexType { + INDEX_V1, + ENTRY +} diff --git a/core/data/src/main/java/com/looker/core/data/fdroid/sync/signature/EntryValidator.kt b/core/data/src/main/java/com/looker/core/data/fdroid/sync/signature/EntryValidator.kt new file mode 100644 index 0000000..e44d9cd --- /dev/null +++ b/core/data/src/main/java/com/looker/core/data/fdroid/sync/signature/EntryValidator.kt @@ -0,0 +1,55 @@ +package com.leos.core.data.fdroid.sync.signature + +import com.leos.core.common.extension.certificate +import com.leos.core.common.extension.codeSigner +import com.leos.core.common.extension.fingerprint +import com.leos.core.common.extension.toJarFile +import com.leos.core.common.signature.FileValidator +import com.leos.core.common.signature.ValidationException +import com.leos.core.domain.newer.Repo +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext +import org.fdroid.index.IndexParser +import org.fdroid.index.parseEntry +import org.fdroid.index.v2.Entry +import java.io.File + +class EntryValidator( + private val repo: Repo, + private val fingerprintBlock: (Entry, String) -> Unit +) : FileValidator { + override suspend fun validate(file: File) = withContext(Dispatchers.IO) { + val (entry, fingerprint) = getEntryAndFingerprint(file) + if (repo.fingerprint.isNotBlank() && + !repo.fingerprint.equals(fingerprint, ignoreCase = true) + ) { + throw ValidationException( + "Expected Fingerprint: ${repo.fingerprint}, Acquired Fingerprint: $fingerprint" + ) + } + fingerprintBlock(entry, fingerprint) + } + + companion object { + const val JSON_NAME = "entry.json" + } + + private suspend fun getEntryAndFingerprint( + file: File + ): Pair = withContext(Dispatchers.IO) { + val jar = file.toJarFile() + val jarEntry = requireNotNull(jar.getJarEntry(JSON_NAME)) { + "No entry for: $JSON_NAME" + } + + val entry = jar + .getInputStream(jarEntry) + .use(IndexParser::parseEntry) + + val fingerprint = jarEntry + .codeSigner + .certificate + .fingerprint() + entry to fingerprint + } +} diff --git a/core/data/src/main/java/com/looker/core/data/fdroid/sync/signature/IndexValidator.kt b/core/data/src/main/java/com/looker/core/data/fdroid/sync/signature/IndexValidator.kt new file mode 100644 index 0000000..1a4ffcd --- /dev/null +++ b/core/data/src/main/java/com/looker/core/data/fdroid/sync/signature/IndexValidator.kt @@ -0,0 +1,55 @@ +package com.leos.core.data.fdroid.sync.signature + +import com.leos.core.common.extension.certificate +import com.leos.core.common.extension.codeSigner +import com.leos.core.common.extension.fingerprint +import com.leos.core.common.extension.toJarFile +import com.leos.core.common.signature.FileValidator +import com.leos.core.common.signature.ValidationException +import com.leos.core.domain.newer.Repo +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext +import org.fdroid.index.IndexParser +import org.fdroid.index.parseV1 +import org.fdroid.index.v1.IndexV1 +import java.io.File + +class IndexValidator( + private val repo: Repo, + private val fingerprintBlock: (IndexV1, String) -> Unit +) : FileValidator { + override suspend fun validate(file: File) = withContext(Dispatchers.IO) { + val (index, fingerprint) = getIndexAndFingerprint(file) + if (repo.fingerprint.isNotBlank() && + !repo.fingerprint.equals(fingerprint, ignoreCase = true) + ) { + throw ValidationException( + "Expected Fingerprint: ${repo.fingerprint}, Acquired Fingerprint: $fingerprint" + ) + } + fingerprintBlock(index, fingerprint) + } + + companion object { + const val JSON_NAME = "index-v1.json" + } + + private suspend fun getIndexAndFingerprint( + file: File + ): Pair = withContext(Dispatchers.IO) { + val jar = file.toJarFile() + val jarEntry = requireNotNull(jar.getJarEntry(JSON_NAME)) { + "No entry for: $JSON_NAME" + } + + val entry = jar + .getInputStream(jarEntry) + .use(IndexParser::parseV1) + + val fingerprint = jarEntry + .codeSigner + .certificate + .fingerprint() + entry to fingerprint + } +} diff --git a/core/data/src/main/java/com/looker/core/data/fdroid/sync/workers/DelegatingWorker.kt b/core/data/src/main/java/com/looker/core/data/fdroid/sync/workers/DelegatingWorker.kt new file mode 100644 index 0000000..0852843 --- /dev/null +++ b/core/data/src/main/java/com/looker/core/data/fdroid/sync/workers/DelegatingWorker.kt @@ -0,0 +1,48 @@ +package com.leos.core.data.fdroid.sync.workers + +import android.content.Context +import androidx.hilt.work.HiltWorkerFactory +import androidx.work.CoroutineWorker +import androidx.work.Data +import androidx.work.ForegroundInfo +import androidx.work.WorkerParameters +import dagger.hilt.EntryPoint +import dagger.hilt.InstallIn +import dagger.hilt.android.EntryPointAccessors +import dagger.hilt.components.SingletonComponent +import kotlin.reflect.KClass + +@EntryPoint +@InstallIn(SingletonComponent::class) +interface HiltWorkerFactoryEntryPoint { + fun hiltWorkerFactory(): HiltWorkerFactory +} + +private const val WORKER_CLASS_NAME = "RouterWorkerDelegateClassName" + +internal fun KClass.delegatedData() = + Data.Builder() + .putString(WORKER_CLASS_NAME, qualifiedName) + .build() + +internal class DelegatingWorker( + appContext: Context, + workerParams: WorkerParameters +) : CoroutineWorker(appContext, workerParams) { + + private val workerClassName = + workerParams.inputData.getString(WORKER_CLASS_NAME) ?: "" + + private val delegateWorker = + EntryPointAccessors.fromApplication(appContext) + .hiltWorkerFactory() + .createWorker(appContext, workerClassName, workerParams) + as? CoroutineWorker + ?: throw IllegalArgumentException("Unable to find appropriate worker") + + override suspend fun getForegroundInfo(): ForegroundInfo = + delegateWorker.getForegroundInfo() + + override suspend fun doWork(): Result = + delegateWorker.doWork() +} diff --git a/core/data/src/main/java/com/looker/core/data/fdroid/sync/workers/SyncWorkHelper.kt b/core/data/src/main/java/com/looker/core/data/fdroid/sync/workers/SyncWorkHelper.kt new file mode 100644 index 0000000..c2b43e7 --- /dev/null +++ b/core/data/src/main/java/com/looker/core/data/fdroid/sync/workers/SyncWorkHelper.kt @@ -0,0 +1,42 @@ +package com.leos.core.data.fdroid.sync.workers + +import android.app.Notification +import android.app.NotificationChannel +import android.app.NotificationManager +import android.content.Context +import androidx.core.app.NotificationCompat +import androidx.work.ForegroundInfo +import com.leos.core.common.R as CommonR +import com.leos.core.common.SdkCheck +import com.leos.core.common.extension.notificationManager + +private const val SyncNotificationID = 12 +private const val SyncNotificationChannelID = "SyncNotificationChannelID" + +fun Context.syncForegroundInfo() = ForegroundInfo( + SyncNotificationID, + syncWorkNotification() +) + +private fun Context.syncWorkNotification(): Notification { + if (SdkCheck.isOreo) { + val channel = NotificationChannel( + SyncNotificationChannelID, + getString(CommonR.string.sync_repositories), + NotificationManager.IMPORTANCE_LOW + ).apply { + description = getString(CommonR.string.sync_repositories) + } + // Register the channel with the system + notificationManager?.createNotificationChannel(channel) + } + + return NotificationCompat.Builder( + this, + SyncNotificationChannelID + ) + .setSmallIcon(CommonR.drawable.ic_sync) + .setContentTitle(getString(CommonR.string.syncing)) + .setPriority(NotificationCompat.PRIORITY_LOW) + .build() +} diff --git a/core/data/src/main/java/com/looker/core/data/fdroid/sync/workers/SyncWorker.kt b/core/data/src/main/java/com/looker/core/data/fdroid/sync/workers/SyncWorker.kt new file mode 100644 index 0000000..47c38c0 --- /dev/null +++ b/core/data/src/main/java/com/looker/core/data/fdroid/sync/workers/SyncWorker.kt @@ -0,0 +1,81 @@ +package com.leos.core.data.fdroid.sync.workers + +import android.content.Context +import android.util.Log +import androidx.hilt.work.HiltWorker +import androidx.work.Constraints +import androidx.work.CoroutineWorker +import androidx.work.ExistingPeriodicWorkPolicy +import androidx.work.ExistingWorkPolicy +import androidx.work.ForegroundInfo +import androidx.work.NetworkType +import androidx.work.OneTimeWorkRequestBuilder +import androidx.work.OutOfQuotaPolicy +import androidx.work.PeriodicWorkRequestBuilder +import androidx.work.WorkManager +import androidx.work.WorkerParameters +import com.leos.core.data.fdroid.repository.RepoRepository +import dagger.assisted.Assisted +import dagger.assisted.AssistedInject +import java.util.concurrent.TimeUnit +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext + +@HiltWorker +class SyncWorker @AssistedInject constructor( + @Assisted private val appContext: Context, + @Assisted workParams: WorkerParameters, + private val repoRepository: RepoRepository +) : CoroutineWorker(appContext, workParams) { + + override suspend fun getForegroundInfo(): ForegroundInfo = + appContext.syncForegroundInfo() + + override suspend fun doWork(): Result = withContext(Dispatchers.IO) { + Log.i(SYNC_WORK, "Start Sync") + setForegroundAsync(appContext.syncForegroundInfo()) + val isSuccess = try { + repoRepository.syncAll() + } catch (e: Exception) { + e.printStackTrace() + return@withContext Result.failure() + } + if (isSuccess) Result.success() else Result.failure() + } + + companion object { + private const val SYNC_WORK = "sync_work" + + fun cancelSyncWork(context: Context) { + WorkManager.getInstance(context).cancelUniqueWork(SYNC_WORK) + } + + fun scheduleSyncWork(context: Context, constraints: Constraints) { + WorkManager.getInstance(context).apply { + val work = PeriodicWorkRequestBuilder(12L, TimeUnit.HOURS) + .setConstraints(constraints) + .setInputData(SyncWorker::class.delegatedData()) + .build() + enqueueUniquePeriodicWork(SYNC_WORK, ExistingPeriodicWorkPolicy.REPLACE, work) + } + } + + fun startSyncWork(context: Context) { + WorkManager.getInstance(context).apply { + val netRequired = Constraints( + requiredNetworkType = NetworkType.CONNECTED + ) + val work = OneTimeWorkRequestBuilder() + .setExpedited(OutOfQuotaPolicy.RUN_AS_NON_EXPEDITED_WORK_REQUEST) + .setConstraints(netRequired) + .setInputData(SyncWorker::class.delegatedData()) + .build() + beginUniqueWork( + SYNC_WORK, + ExistingWorkPolicy.REPLACE, + work + ).enqueue() + } + } + } +} diff --git a/core/data/src/main/java/com/looker/core/data/utils/ConnectivityManagerNetworkMonitor.kt b/core/data/src/main/java/com/looker/core/data/utils/ConnectivityManagerNetworkMonitor.kt new file mode 100644 index 0000000..294f995 --- /dev/null +++ b/core/data/src/main/java/com/looker/core/data/utils/ConnectivityManagerNetworkMonitor.kt @@ -0,0 +1,55 @@ +package com.leos.core.data.utils + +import android.content.Context +import android.net.ConnectivityManager +import android.net.Network +import android.net.NetworkCapabilities +import android.net.NetworkRequest +import com.leos.core.common.extension.connectivityManager +import dagger.hilt.android.qualifiers.ApplicationContext +import javax.inject.Inject +import kotlinx.coroutines.channels.awaitClose +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.callbackFlow +import kotlinx.coroutines.flow.conflate + +class ConnectivityManagerNetworkMonitor +@Inject constructor( + @ApplicationContext context: Context +) : NetworkMonitor { + override val isOnline: Flow = callbackFlow { + val callback = object : ConnectivityManager.NetworkCallback() { + override fun onAvailable(network: Network) { + channel.trySend(true) + } + + override fun onLost(network: Network) { + channel.trySend(false) + } + } + + val connectivityManager = context.connectivityManager + + connectivityManager?.registerNetworkCallback( + NetworkRequest.Builder() + .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) + .build(), + callback + ) + + channel.trySend(connectivityManager.isCurrentlyConnected()) + + awaitClose { + connectivityManager?.unregisterNetworkCallback(callback) + } + }.conflate() + + private fun ConnectivityManager?.isCurrentlyConnected() = when (this) { + null -> false + else -> + activeNetwork + ?.let(::getNetworkCapabilities) + ?.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) + ?: false + } +} diff --git a/core/data/src/main/java/com/looker/core/data/utils/NetworkMonitor.kt b/core/data/src/main/java/com/looker/core/data/utils/NetworkMonitor.kt new file mode 100644 index 0000000..e6f4363 --- /dev/null +++ b/core/data/src/main/java/com/looker/core/data/utils/NetworkMonitor.kt @@ -0,0 +1,7 @@ +package com.leos.core.data.utils + +import kotlinx.coroutines.flow.Flow + +interface NetworkMonitor { + val isOnline: Flow +} diff --git a/core/data/src/main/java/com/looker/core/data/utils/SyncStatusMonitor.kt b/core/data/src/main/java/com/looker/core/data/utils/SyncStatusMonitor.kt new file mode 100644 index 0000000..1dc44ed --- /dev/null +++ b/core/data/src/main/java/com/looker/core/data/utils/SyncStatusMonitor.kt @@ -0,0 +1,7 @@ +package com.leos.core.data.utils + +import kotlinx.coroutines.flow.Flow + +interface SyncStatusMonitor { + val isSyncing: Flow +} diff --git a/core/database/.gitignore b/core/database/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/core/database/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/core/database/build.gradle.kts b/core/database/build.gradle.kts new file mode 100644 index 0000000..86b204e --- /dev/null +++ b/core/database/build.gradle.kts @@ -0,0 +1,28 @@ +plugins { + alias(libs.plugins.looker.android.library) + alias(libs.plugins.looker.room) + alias(libs.plugins.looker.hilt) + alias(libs.plugins.looker.serialization) +} + +android { + namespace = "com.leos.core.database" + + buildTypes { + release { + isMinifyEnabled = true + proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt")) + } + create("alpha") { + initWith(getByName("debug")) + isMinifyEnabled = true + } + } +} + +dependencies { + modules(Modules.coreCommon, Modules.coreDomain) + + implementation(libs.kotlinx.coroutines.android) + implementation(libs.androidx.core.ktx) +} diff --git a/core/database/schemas/com.looker.core.database.DroidifyDatabase/1.json b/core/database/schemas/com.looker.core.database.DroidifyDatabase/1.json new file mode 100644 index 0000000..c5e1c26 --- /dev/null +++ b/core/database/schemas/com.looker.core.database.DroidifyDatabase/1.json @@ -0,0 +1,381 @@ +{ + "formatVersion": 1, + "database": { + "version": 1, + "identityHash": "b01a8fae755b8b96d36459e885dea04b", + "entities": [ + { + "tableName": "apps", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`packageName` TEXT NOT NULL, `repoId` INTEGER NOT NULL, `categories` BLOB NOT NULL, `summary` TEXT NOT NULL, `description` TEXT NOT NULL, `changelog` TEXT NOT NULL, `translation` TEXT NOT NULL, `issueTracker` TEXT NOT NULL, `sourceCode` TEXT NOT NULL, `binaries` TEXT NOT NULL, `name` TEXT NOT NULL, `authorName` TEXT NOT NULL, `authorEmail` TEXT NOT NULL, `authorWebSite` TEXT NOT NULL, `donate` TEXT NOT NULL, `liberapayID` TEXT NOT NULL, `liberapay` TEXT NOT NULL, `openCollective` TEXT NOT NULL, `bitcoin` TEXT NOT NULL, `litecoin` TEXT NOT NULL, `flattrID` TEXT NOT NULL, `suggestedVersionName` TEXT NOT NULL, `suggestedVersionCode` INTEGER NOT NULL, `license` TEXT NOT NULL, `webSite` TEXT NOT NULL, `added` INTEGER NOT NULL, `icon` TEXT NOT NULL, `phoneScreenshots` TEXT NOT NULL, `sevenInchScreenshots` TEXT NOT NULL, `tenInchScreenshots` TEXT NOT NULL, `wearScreenshots` TEXT NOT NULL, `tvScreenshots` TEXT NOT NULL, `featureGraphic` TEXT NOT NULL, `promoGraphic` TEXT NOT NULL, `tvBanner` TEXT NOT NULL, `video` TEXT NOT NULL, `lastUpdated` INTEGER NOT NULL, `packages` TEXT NOT NULL, PRIMARY KEY(`repoId`, `packageName`))", + "fields": [ + { + "fieldPath": "packageName", + "columnName": "packageName", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "repoId", + "columnName": "repoId", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "categories", + "columnName": "categories", + "affinity": "BLOB", + "notNull": true + }, + { + "fieldPath": "summary", + "columnName": "summary", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "description", + "columnName": "description", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "changelog", + "columnName": "changelog", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "translation", + "columnName": "translation", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "issueTracker", + "columnName": "issueTracker", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "sourceCode", + "columnName": "sourceCode", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "binaries", + "columnName": "binaries", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "name", + "columnName": "name", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "authorName", + "columnName": "authorName", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "authorEmail", + "columnName": "authorEmail", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "authorWebSite", + "columnName": "authorWebSite", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "donate", + "columnName": "donate", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "liberapayID", + "columnName": "liberapayID", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "liberapay", + "columnName": "liberapay", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "openCollective", + "columnName": "openCollective", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "bitcoin", + "columnName": "bitcoin", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "litecoin", + "columnName": "litecoin", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "flattrID", + "columnName": "flattrID", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "suggestedVersionName", + "columnName": "suggestedVersionName", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "suggestedVersionCode", + "columnName": "suggestedVersionCode", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "license", + "columnName": "license", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "webSite", + "columnName": "webSite", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "added", + "columnName": "added", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "icon", + "columnName": "icon", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "phoneScreenshots", + "columnName": "phoneScreenshots", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "sevenInchScreenshots", + "columnName": "sevenInchScreenshots", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "tenInchScreenshots", + "columnName": "tenInchScreenshots", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "wearScreenshots", + "columnName": "wearScreenshots", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "tvScreenshots", + "columnName": "tvScreenshots", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "featureGraphic", + "columnName": "featureGraphic", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "promoGraphic", + "columnName": "promoGraphic", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "tvBanner", + "columnName": "tvBanner", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "video", + "columnName": "video", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "lastUpdated", + "columnName": "lastUpdated", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "packages", + "columnName": "packages", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "repoId", + "packageName" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "repos", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `enabled` INTEGER NOT NULL, `fingerprint` TEXT NOT NULL, `etag` TEXT NOT NULL, `username` TEXT NOT NULL, `password` TEXT NOT NULL, `address` TEXT NOT NULL, `mirrors` BLOB NOT NULL, `name` TEXT NOT NULL, `description` TEXT NOT NULL, `antiFeatures` TEXT NOT NULL, `categories` TEXT NOT NULL, `timestamp` INTEGER NOT NULL)", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "enabled", + "columnName": "enabled", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "fingerprint", + "columnName": "fingerprint", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "etag", + "columnName": "etag", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "username", + "columnName": "username", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "password", + "columnName": "password", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "address", + "columnName": "address", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "mirrors", + "columnName": "mirrors", + "affinity": "BLOB", + "notNull": true + }, + { + "fieldPath": "name", + "columnName": "name", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "description", + "columnName": "description", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "antiFeatures", + "columnName": "antiFeatures", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "categories", + "columnName": "categories", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "InstalledEntity", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`packageName` TEXT NOT NULL, `versionCode` INTEGER NOT NULL, `signature` TEXT NOT NULL, PRIMARY KEY(`packageName`))", + "fields": [ + { + "fieldPath": "packageName", + "columnName": "packageName", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "versionCode", + "columnName": "versionCode", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "signature", + "columnName": "signature", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "packageName" + ] + }, + "indices": [], + "foreignKeys": [] + } + ], + "views": [], + "setupQueries": [ + "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'b01a8fae755b8b96d36459e885dea04b')" + ] + } +} \ No newline at end of file diff --git a/core/database/src/main/assets/repo.db b/core/database/src/main/assets/repo.db new file mode 100644 index 0000000000000000000000000000000000000000..584449a8639c50ff2fdddc395cea47dd8ced1b2a GIT binary patch literal 36864 zcmeHw-H#ksc3%&_NwGNMDr@dq)^3T4CDP*b)c1!3WnG^XEe?m`kX8sr(N=fY%#^0P ztJPJ_;Yisi-Sj$d!3IGd{1Cu^vH1f6ad$V1@3KoBGj;LS@OoZq=s zx4NcgMmscD>(#0$XlA z|MU2t|NA@m;}rjZ-%GW>kNWeKR{MMZS-7;*I&m>RbLpjv@rB1n4P6{xP+&oU1qBuq zSWsX=fdvH?6!=O|;L^^?|8!+_b?G0U&7)2~&OYgPKFZ_4=p**=Bjvz>6W+Z57yS#m z==awSy-03eB%i@W&iz2V@3^-E@#=x|SH)`=&R

SI^(Nb3eEl+`EB~@sOTqeoVZx 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: ByteArray = + list.joinToString(STRING_DELIMITER).toByteArray() + + @TypeConverter + fun stringToList(byteArray: ByteArray): List = String(byteArray).split(STRING_DELIMITER) +} + +class LocalizedConverter { + + @TypeConverter + fun localizedStringToJson(localizedEntity: LocalizedString): String = + json.encodeToString(localizedStringSerializer, localizedEntity) + + @TypeConverter + fun jsonToLocalizedString(jsonObject: String): LocalizedString = + json.decodeFromString(localizedStringSerializer, jsonObject) + + @TypeConverter + fun localizedListToJson(localizedEntity: LocalizedList): String = + json.encodeToString(localizedListSerializer, localizedEntity) + + @TypeConverter + fun jsonToLocalizedList(jsonObject: String): LocalizedList = + json.decodeFromString(localizedListSerializer, jsonObject) +} + +class PackageEntityConverter { + + @TypeConverter + fun entityToString(packageEntity: PackageEntity): String = + json.encodeToString(packageEntity) + + @TypeConverter + fun stringToPackage(jsonString: String): PackageEntity = + json.decodeFromString(jsonString) + + @TypeConverter + fun entityListToString(packageEntity: List): String = + json.encodeToString(packageListSerializer, packageEntity) + + @TypeConverter + fun stringToPackageList(jsonString: String): List = + json.decodeFromString(packageListSerializer, jsonString) +} + +class RepoConverter { + + @TypeConverter + fun antiFeaturesToString(map: Map): String = + json.encodeToString(antiFeatureSerializer, map) + + @TypeConverter + fun stringToAntiFeatures(string: String): Map = + json.decodeFromString(antiFeatureSerializer, string) + + @TypeConverter + fun categoryToString(map: Map): String = + json.encodeToString(categorySerializer, map) + + @TypeConverter + fun stringToCategory(string: String): Map = + json.decodeFromString(categorySerializer, string) +} diff --git a/core/database/src/main/java/com/looker/core/database/DroidifyDatabase.kt b/core/database/src/main/java/com/looker/core/database/DroidifyDatabase.kt new file mode 100644 index 0000000..4135a0c --- /dev/null +++ b/core/database/src/main/java/com/looker/core/database/DroidifyDatabase.kt @@ -0,0 +1,34 @@ +package com.leos.core.database + +import androidx.room.Database +import androidx.room.RoomDatabase +import androidx.room.TypeConverters +import com.leos.core.database.dao.AppDao +import com.leos.core.database.dao.InstalledDao +import com.leos.core.database.dao.RepoDao +import com.leos.core.database.model.AppEntity +import com.leos.core.database.model.InstalledEntity +import com.leos.core.database.model.RepoEntity + +@Database( + version = 1, + entities = [ + AppEntity::class, + RepoEntity::class, + InstalledEntity::class + ] +) +@TypeConverters( + CollectionConverter::class, + LocalizedConverter::class, + PackageEntityConverter::class, + RepoConverter::class +) +abstract class DroidifyDatabase : RoomDatabase() { + + abstract fun appDao(): AppDao + + abstract fun repoDao(): RepoDao + + abstract fun installedDao(): InstalledDao +} diff --git a/core/database/src/main/java/com/looker/core/database/dao/AppDao.kt b/core/database/src/main/java/com/looker/core/database/dao/AppDao.kt new file mode 100644 index 0000000..170d353 --- /dev/null +++ b/core/database/src/main/java/com/looker/core/database/dao/AppDao.kt @@ -0,0 +1,50 @@ +package com.leos.core.database.dao + +import androidx.room.Dao +import androidx.room.Insert +import androidx.room.OnConflictStrategy +import androidx.room.Query +import androidx.room.Upsert +import com.leos.core.database.model.AppEntity +import com.leos.core.database.model.PackageEntity +import kotlinx.coroutines.flow.Flow + +@Dao +interface AppDao { + + @Query(value = "SELECT * FROM apps") + fun getAppStream(): Flow> + + @Query( + value = """ + SELECT * FROM apps + WHERE authorName = :authorName + """ + ) + fun getAppsFromAuthor(authorName: String): Flow> + + @Query(value = "SELECT * FROM apps WHERE packageName = :packageName") + fun getApp(packageName: String): Flow> + + @Query( + value = """ + SELECT packages FROM apps + WHERE packageName = :packageName + """ + ) + fun getPackages(packageName: String): Flow> + + @Insert(onConflict = OnConflictStrategy.IGNORE) + suspend fun insertOrIgnore(apps: List) + + @Upsert + suspend fun upsertApps(apps: List) + + @Query( + value = """ + DELETE FROM apps + WHERE repoId = :repoId + """ + ) + suspend fun deleteApps(repoId: Long) +} diff --git a/core/database/src/main/java/com/looker/core/database/dao/InstalledDao.kt b/core/database/src/main/java/com/looker/core/database/dao/InstalledDao.kt new file mode 100644 index 0000000..244a7c3 --- /dev/null +++ b/core/database/src/main/java/com/looker/core/database/dao/InstalledDao.kt @@ -0,0 +1,18 @@ +package com.leos.core.database.dao + +import androidx.room.* +import com.leos.core.database.model.InstalledEntity +import kotlinx.coroutines.flow.Flow + +@Dao +interface InstalledDao { + + @Query("SELECT * FROM installedentity") + fun getInstalledStream(): Flow> + + @Upsert + suspend fun upsertInstalled(installedEntity: InstalledEntity) + + @Delete + suspend fun deleteInstalled(installedEntity: InstalledEntity) +} diff --git a/core/database/src/main/java/com/looker/core/database/dao/RepoDao.kt b/core/database/src/main/java/com/looker/core/database/dao/RepoDao.kt new file mode 100644 index 0000000..d210801 --- /dev/null +++ b/core/database/src/main/java/com/looker/core/database/dao/RepoDao.kt @@ -0,0 +1,28 @@ +package com.leos.core.database.dao + +import androidx.room.Dao +import androidx.room.Query +import androidx.room.Upsert +import com.leos.core.database.model.RepoEntity +import kotlinx.coroutines.flow.Flow + +@Dao +interface RepoDao { + + @Query(value = "SELECT * FROM repos") + fun getRepoStream(): Flow> + + @Query(value = "SELECT * FROM repos WHERE id = :id") + suspend fun getRepoById(id: Long): RepoEntity + + @Upsert + suspend fun upsertRepo(repoEntity: RepoEntity) + + @Query( + value = """ + DELETE FROM repos + WHERE id = :id + """ + ) + suspend fun deleteRepo(id: Long) +} diff --git a/core/database/src/main/java/com/looker/core/database/di/DaoModule.kt b/core/database/src/main/java/com/looker/core/database/di/DaoModule.kt new file mode 100644 index 0000000..aedb81a --- /dev/null +++ b/core/database/src/main/java/com/looker/core/database/di/DaoModule.kt @@ -0,0 +1,34 @@ +package com.leos.core.database.di + +import com.leos.core.database.DroidifyDatabase +import com.leos.core.database.dao.AppDao +import com.leos.core.database.dao.InstalledDao +import com.leos.core.database.dao.RepoDao +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import javax.inject.Singleton + +@Module +@InstallIn(SingletonComponent::class) +object DaoModule { + + @Provides + @Singleton + fun provideRepoDao( + database: DroidifyDatabase + ): RepoDao = database.repoDao() + + @Provides + @Singleton + fun provideAppDao( + database: DroidifyDatabase + ): AppDao = database.appDao() + + @Provides + @Singleton + fun provideInstalledDao( + database: DroidifyDatabase + ): InstalledDao = database.installedDao() +} diff --git a/core/database/src/main/java/com/looker/core/database/di/DatabaseModule.kt b/core/database/src/main/java/com/looker/core/database/di/DatabaseModule.kt new file mode 100644 index 0000000..2a148b2 --- /dev/null +++ b/core/database/src/main/java/com/looker/core/database/di/DatabaseModule.kt @@ -0,0 +1,26 @@ +package com.leos.core.database.di + +import android.content.Context +import androidx.room.Room +import com.leos.core.database.DroidifyDatabase +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.android.qualifiers.ApplicationContext +import dagger.hilt.components.SingletonComponent +import javax.inject.Singleton + +@Module +@InstallIn(SingletonComponent::class) +object DatabaseModule { + + @Provides + @Singleton + fun provideDroidifyDatabase( + @ApplicationContext context: Context + ): DroidifyDatabase = Room.databaseBuilder( + context, + DroidifyDatabase::class.java, + "droidify-database" + ).createFromAsset("repo.db").build() +} diff --git a/core/database/src/main/java/com/looker/core/database/model/AppEntity.kt b/core/database/src/main/java/com/looker/core/database/model/AppEntity.kt new file mode 100644 index 0000000..df7d65e --- /dev/null +++ b/core/database/src/main/java/com/looker/core/database/model/AppEntity.kt @@ -0,0 +1,132 @@ +package com.leos.core.database.model + +import androidx.room.ColumnInfo +import androidx.room.Entity +import com.leos.core.common.nullIfEmpty +import com.leos.core.common.toPackageName +import com.leos.core.database.utils.localizedValue +import com.leos.core.domain.newer.App +import com.leos.core.domain.newer.Author +import com.leos.core.domain.newer.Donation +import com.leos.core.domain.newer.Graphics +import com.leos.core.domain.newer.Links +import com.leos.core.domain.newer.Metadata +import com.leos.core.domain.newer.Screenshots + +internal typealias LocalizedString = Map +internal typealias LocalizedList = Map> + +@Entity(tableName = "apps", primaryKeys = ["repoId", "packageName"]) +data class AppEntity( + @ColumnInfo(name = "packageName") + val packageName: String, + @ColumnInfo(name = "repoId") + val repoId: Long, + val categories: List, + val summary: LocalizedString, + val description: LocalizedString, + val changelog: String, + val translation: String, + val issueTracker: String, + val sourceCode: String, + val binaries: String, + val name: LocalizedString, + val authorName: String, + val authorEmail: String, + val authorWebSite: String, + val donate: String, + val liberapayID: String, + val liberapay: String, + val openCollective: String, + val bitcoin: String, + val litecoin: String, + val flattrID: String, + val suggestedVersionName: String, + val suggestedVersionCode: Long, + val license: String, + val webSite: String, + val added: Long, + val icon: LocalizedString, + val phoneScreenshots: LocalizedList, + val sevenInchScreenshots: LocalizedList, + val tenInchScreenshots: LocalizedList, + val wearScreenshots: LocalizedList, + val tvScreenshots: LocalizedList, + val featureGraphic: LocalizedString, + val promoGraphic: LocalizedString, + val tvBanner: LocalizedString, + val video: LocalizedString, + val lastUpdated: Long, + val packages: List +) + +fun AppEntity.toExternal(locale: String, installed: PackageEntity? = null): App = App( + repoId = repoId, + categories = categories, + links = links(), + metadata = metadata(locale), + screenshots = screenshots(locale), + graphics = graphics(locale), + author = author(), + donation = donations(), + packages = packages.toExternal(locale) { it == installed } +) + +fun List.toExternal( + locale: String, + isInstalled: (AppEntity) -> PackageEntity? +): List = map { + it.toExternal(locale, isInstalled(it)) +} + +private fun AppEntity.author(): Author = Author( + name = authorName, + email = authorEmail, + web = authorWebSite +) + +private fun AppEntity.donations(): Donation = Donation( + regularUrl = donate.nullIfEmpty(), + bitcoinAddress = bitcoin.nullIfEmpty(), + flattrId = flattrID.nullIfEmpty(), + liteCoinAddress = litecoin.nullIfEmpty(), + openCollectiveId = openCollective.nullIfEmpty(), + librePayId = liberapayID.nullIfEmpty(), + librePayAddress = liberapay.nullIfEmpty() +) + +private fun AppEntity.graphics(locale: String): Graphics = Graphics( + featureGraphic = featureGraphic.localizedValue(locale) ?: "", + promoGraphic = promoGraphic.localizedValue(locale) ?: "", + tvBanner = tvBanner.localizedValue(locale) ?: "", + video = video.localizedValue(locale) ?: "" +) + +private fun AppEntity.links(): Links = Links( + changelog = changelog, + issueTracker = issueTracker, + sourceCode = sourceCode, + translation = translation, + webSite = webSite +) + +private fun AppEntity.metadata(locale: String): Metadata = Metadata( + name = name.localizedValue(locale) ?: "", + packageName = packageName.toPackageName(), + added = added, + description = description.localizedValue(locale) ?: "", + icon = icon.localizedValue(locale) ?: "", + lastUpdated = lastUpdated, + license = license, + suggestedVersionCode = suggestedVersionCode, + suggestedVersionName = suggestedVersionName, + summary = summary.localizedValue(locale) ?: "" +) + +private fun AppEntity.screenshots(locale: String): Screenshots = Screenshots( + phone = phoneScreenshots.localizedValue(locale) ?: emptyList(), + sevenInch = sevenInchScreenshots.localizedValue(locale) ?: emptyList(), + tenInch = tenInchScreenshots.localizedValue(locale) ?: emptyList(), + tv = tvScreenshots.localizedValue(locale) ?: emptyList(), + wear = wearScreenshots.localizedValue(locale) ?: emptyList() +) diff --git a/core/database/src/main/java/com/looker/core/database/model/InstalledEntity.kt b/core/database/src/main/java/com/looker/core/database/model/InstalledEntity.kt new file mode 100644 index 0000000..7188432 --- /dev/null +++ b/core/database/src/main/java/com/looker/core/database/model/InstalledEntity.kt @@ -0,0 +1,12 @@ +package com.leos.core.database.model + +import androidx.room.Entity +import androidx.room.PrimaryKey + +@Entity +data class InstalledEntity( + @PrimaryKey + val packageName: String, + val versionCode: Long, + val signature: String +) diff --git a/core/database/src/main/java/com/looker/core/database/model/PackageEntity.kt b/core/database/src/main/java/com/looker/core/database/model/PackageEntity.kt new file mode 100644 index 0000000..31a3200 --- /dev/null +++ b/core/database/src/main/java/com/looker/core/database/model/PackageEntity.kt @@ -0,0 +1,70 @@ +package com.leos.core.database.model + +import com.leos.core.database.utils.localizedValue +import com.leos.core.domain.newer.ApkFile +import com.leos.core.domain.newer.Manifest +import com.leos.core.domain.newer.Package +import com.leos.core.domain.newer.Permission +import com.leos.core.domain.newer.Platforms +import com.leos.core.domain.newer.SDKs +import kotlinx.serialization.Serializable + +@Serializable +data class PackageEntity( + val added: Long, + val apkName: String, + val hash: String, + val hashType: String, + val minSdkVersion: Int, + val maxSdkVersion: Int, + val targetSdkVersion: Int, + val sig: String, + val signer: String, + val size: Long, + val srcName: String, + val usesPermission: List, + val versionCode: Long, + val versionName: String, + val nativeCode: List, + val features: List, + val antiFeatures: List, + val whatsNew: LocalizedString +) + +@Serializable +data class PermissionEntity( + val name: String, + val minSdk: Int? = null, + val maxSdk: Int? = null +) + +fun PackageEntity.toExternal(locale: String, installed: Boolean): Package = Package( + installed = installed, + added = added, + apk = ApkFile( + name = apkName, + hash = hash, + size = size + ), + manifest = Manifest( + versionCode = versionCode, + versionName = versionName, + usesSDKs = SDKs(minSdkVersion, targetSdkVersion), + signer = setOf(signer), + permissions = usesPermission.map(PermissionEntity::toExternalModel) + ), + platforms = Platforms(nativeCode), + features = features, + antiFeatures = antiFeatures, + whatsNew = whatsNew.localizedValue(locale) ?: "" +) + +fun List.toExternal( + locale: String, + installed: (PackageEntity) -> Boolean +): List = map { it.toExternal(locale, installed(it)) } + +fun PermissionEntity.toExternalModel(): Permission = Permission( + name = name, + sdKs = SDKs(min = minSdk ?: -1, max = maxSdk ?: -1) +) diff --git a/core/database/src/main/java/com/looker/core/database/model/RepoEntity.kt b/core/database/src/main/java/com/looker/core/database/model/RepoEntity.kt new file mode 100644 index 0000000..502679c --- /dev/null +++ b/core/database/src/main/java/com/looker/core/database/model/RepoEntity.kt @@ -0,0 +1,89 @@ +package com.leos.core.database.model + +import androidx.room.Entity +import androidx.room.PrimaryKey +import com.leos.core.database.utils.localizedValue +import com.leos.core.domain.newer.AntiFeature +import com.leos.core.domain.newer.Authentication +import com.leos.core.domain.newer.Category +import com.leos.core.domain.newer.Repo +import com.leos.core.domain.newer.VersionInfo +import kotlinx.serialization.Serializable + +@Entity(tableName = "repos") +data class RepoEntity( + @PrimaryKey(autoGenerate = true) + val id: Long? = null, + val enabled: Boolean, + val fingerprint: String, + val etag: String, + val username: String, + val password: String, + val address: String, + val mirrors: List, + val name: LocalizedString, + val description: LocalizedString, + val antiFeatures: Map, + val categories: Map, + val timestamp: Long +) + +fun RepoEntity.update(repo: Repo) = copy( + username = repo.authentication.username, + password = repo.authentication.password, + timestamp = repo.versionInfo.timestamp, + enabled = repo.enabled, + mirrors = repo.mirrors, + fingerprint = repo.fingerprint +) + +fun RepoEntity.toExternal(locale: String): Repo = Repo( + id = id!!, + enabled = enabled, + address = address, + name = name.localizedValue(locale) ?: "", + description = description.localizedValue(locale) ?: "", + fingerprint = fingerprint, + authentication = Authentication(username, password), + versionInfo = VersionInfo(timestamp = timestamp, etag = etag), + mirrors = mirrors, + categories = categories.values.toCategoryList(locale), + antiFeatures = antiFeatures.values.toAntiFeatureList(locale) +) + +fun List.toExternal(locale: String): List = + map { it.toExternal(locale) } + +@Serializable +data class CategoryEntity( + val icon: LocalizedString, + val name: LocalizedString, + val description: LocalizedString +) + +private fun CategoryEntity.toCategory(locale: String) = + Category( + name = name.localizedValue(locale) ?: "", + icon = icon.localizedValue(locale) ?: "", + description = description.localizedValue(locale) ?: "" + ) + +fun Collection.toCategoryList(locale: String): List = + map { it.toCategory(locale) } + +@Serializable +data class AntiFeatureEntity( + val icon: LocalizedString, + val name: LocalizedString, + val description: LocalizedString +) + +private fun AntiFeatureEntity.toAntiFeature(locale: String) = + AntiFeature( + name = name.localizedValue(locale) ?: "", + icon = icon.localizedValue(locale) ?: "", + description = description.localizedValue(locale) ?: "" + ) + +fun Collection.toAntiFeatureList(locale: String): List = + map { it.toAntiFeature(locale) } diff --git a/core/database/src/main/java/com/looker/core/database/utils/Localization.kt b/core/database/src/main/java/com/looker/core/database/utils/Localization.kt new file mode 100644 index 0000000..7b84236 --- /dev/null +++ b/core/database/src/main/java/com/looker/core/database/utils/Localization.kt @@ -0,0 +1,53 @@ +package com.leos.core.database.utils + +import androidx.core.os.LocaleListCompat +import com.leos.core.common.stripBetween +import java.util.Locale + +internal fun localeListCompat(tag: String): LocaleListCompat = + LocaleListCompat.forLanguageTags(tag) + +/** + * Find the Localized value from [Map] using [locale] + * + * Returns null if none matches or map or [locale] is empty + */ +fun Map?.localizedValue(locale: String): T? { + val localeList = localeListCompat(locale) + if (isNullOrEmpty() || localeList.isEmpty) return null + val suitableLocale = localeList.suitableLocale(keys) + return get(suitableLocale) + ?: get("en_US") + ?: get("en-US") + ?: get("en") + ?: values.firstOrNull() +} + +/** + * Retrieve the most suitable Locale from the [keys] using [LocaleListCompat] + * + * Returns null if none found + */ +internal fun LocaleListCompat.suitableLocale(keys: Set): String? = (0..): String? { + if (keys.isEmpty()) return null + val currentLocale = this ?: return null + val tag = currentLocale.toLanguageTag() + val soloTag = currentLocale.language + val strippedTag = tag.stripBetween("-") + + return if (tag in keys) tag + else if (strippedTag in keys) strippedTag + else if (soloTag in keys) soloTag + // try children of the language + else keys.find { it.startsWith(soloTag) } +} diff --git a/core/database/src/test/java/com/looker/core/database/LocalizationTest.kt b/core/database/src/test/java/com/looker/core/database/LocalizationTest.kt new file mode 100644 index 0000000..77b70d7 --- /dev/null +++ b/core/database/src/test/java/com/looker/core/database/LocalizationTest.kt @@ -0,0 +1,195 @@ +package com.leos.core.database + +import androidx.core.os.LocaleListCompat +import androidx.core.os.LocaleListCompat.getEmptyLocaleList +import com.leos.core.database.utils.localeListCompat +import com.leos.core.database.utils.localizedValue +import com.leos.core.database.utils.suitableLocale +import com.leos.core.database.utils.suitableTag +import org.junit.Test +import java.util.Locale +import kotlin.test.assertEquals +import kotlin.test.assertNull + +/** + * + * This code is copyrighted to (F-Droid.org), I merely rewrote it. + * Tests based on F-Droid's BestLocaleTest [https://gitlab.com/fdroid/fdroidclient/-/blob/680a1154cf3806390c2e4a9e95a7c6d6107b470f/libs/index/src/androidAndroidTest/kotlin/org/fdroid/BestLocaleTest.kt] + * + * https://developer.android.com/guide/topics/resources/multilingual-support#resource-resolution-examples + */ +class LocalizationTest { + + @Test + fun `Get correct localeList`() { + assertEquals( + LocaleListCompat.create(Locale.ENGLISH, Locale.US), + localeListCompat("en,en-US") + ) + } + + @Test + fun `Return empty locale on none match`() { + assertNull(emptyMap().localizedValue("en-US,de-DE")) + assertNull(getMap("en-US", "de-DE").localizedValue("")) + } + + @Test + fun `Fallback to english`() { + assertEquals( + "en", + getMap("de-AT", "de-DE", "en").localizedValue("fr-FR") + ) + assertEquals( + "en-US", + getMap("en", "en-US").localizedValue("zh-Hant-TW,zh-Hans-CN") + ) + } + + @Test + fun `Use the first selected locale, en_US`() { + assertEquals( + "en-US", + getMap("de-AT", "de-DE", "en-US").localizedValue("en-US,de-DE") + ) + } + + @Test + fun `Use the first en translation`() { + assertEquals( + "en-US", + getMap("de-AT", "de-DE", "en-US").localizedValue("en-SE,de-DE") + ) + } + + @Test + fun `Use the first full match against a non-default locale`() { + assertEquals( + "de-AT", + getMap( + "de-AT", + "de-DE", + "en-GB", + "en-US" + ).localizedValue("de-AT,de-DE") + ) + assertEquals( + "de", + getMap("de-AT", "de", "en-GB", "en-US").localizedValue("de-CH,en-US") + ) + } + + @Test + fun `Stripped locale tag`() { + assertEquals( + "zh-TW", + getMap( + "en-US", + "zh-CN", + "zh-HK", + "zh-TW" + ).localizedValue("zh-Hant-TW,zh-Hans-CN") + ) + } + + @Test + fun `Google specified test`() { + assertEquals( + "fr-FR", + getMap("en-US", "de-DE", "es-ES", "fr-FR", "it-IT") + .localizedValue("fr-CH") + ) + + assertEquals( + "it-IT", + getMap("en-US", "de-DE", "es-ES", "it-IT") + .localizedValue("fr-CH,it-CH") + ) + } + + @Test + fun `Check null for suitable locale from list`() { + assertNull(localeListCompat("en-US").suitableLocale(keys("de-DE", "es-ES"))) + assertNull(localeListCompat("en-US").suitableLocale(keys())) + assertNull(getEmptyLocaleList().suitableLocale(keys("de-DE", "es-ES"))) + } + + @Test + fun `Find suitable locale from wrong list`() { + assertNull(localeListCompat("en-US").suitableLocale(keys("de-DE", "es-ES"))) + } + + @Test + fun `Find suitable locale from list without modification`() { + assertEquals( + "en-US", + localeListCompat("en-US").suitableLocale(keys("en", "en-US", "en-UK")) + ) + } + + @Test + fun `Find suitable locale from list only with language`() { + assertEquals( + "en", + localeListCompat("en-US").suitableLocale(keys("de-DE", "fr-FR", "en-UK", "en")) + ) + } + + @Test + fun `Find stripped locale from the list`() { + assertEquals( + "zh-TW", + localeListCompat("zh-Hant-TW").suitableLocale( + keys( + "en", + "de-DE", + "fr-FR", + "zh-TW", + "zh" + ) + ) + ) + } + + @Test + fun `Check null for suitable locale`() { + val locale: Locale? = null + assertNull(locale.suitableTag(keys("en-US", "de-DE", "es-ES", "it-IT"))) + assertNull(Locale.ENGLISH.suitableTag(keys())) + } + + @Test + fun `Find suitable locale from wrong keys`() { + assertNull(Locale.ENGLISH.suitableTag(keys("de-DE", "es-ES"))) + } + + @Test + fun `Get suitable locale without modification`() { + assertEquals("en-US", Locale("en", "US").suitableTag(keys("en", "en-US", "en-UK"))) + } + + @Test + fun `Get suitable locale with only language`() { + assertEquals("en", Locale("en", "US").suitableTag(keys("en", "de-DE", "fr-FR"))) + } + + @Test + fun `Get suitable locale with stripped parts`() { + assertEquals( + "zh-TW", + localeListCompat("zh-Hant-TW")[0].suitableTag( + keys( + "en", + "de-DE", + "fr-FR", + "zh-TW", + "zh" + ) + ) + ) + } + + private fun keys(vararg tag: String): Set = tag.toSet() + + private fun getMap(vararg locales: String): Map = locales.associateWith { it } +} diff --git a/core/datastore/.gitignore b/core/datastore/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/core/datastore/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/core/datastore/build.gradle.kts b/core/datastore/build.gradle.kts new file mode 100644 index 0000000..fb2675d --- /dev/null +++ b/core/datastore/build.gradle.kts @@ -0,0 +1,29 @@ +plugins { + alias(libs.plugins.looker.android.library) + alias(libs.plugins.looker.hilt) + alias(libs.plugins.looker.lint) + alias(libs.plugins.looker.serialization) +} + +android { + namespace = "com.leos.core.datastore" + + buildTypes { + release { + isMinifyEnabled = true + proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt")) + } + create("alpha") { + initWith(getByName("debug")) + isMinifyEnabled = true + } + } +} + +dependencies { + modules(Modules.coreCommon, Modules.coreDI) + implementation(libs.androidx.dataStore.core) + implementation(libs.androidx.dataStore.proto) + implementation(libs.kotlinx.coroutines.android) + implementation(libs.kotlinx.datetime) +} diff --git a/core/datastore/src/main/java/com/looker/core/datastore/DataStoreSettingsRepository.kt b/core/datastore/src/main/java/com/looker/core/datastore/DataStoreSettingsRepository.kt new file mode 100644 index 0000000..03726d6 --- /dev/null +++ b/core/datastore/src/main/java/com/looker/core/datastore/DataStoreSettingsRepository.kt @@ -0,0 +1,158 @@ +package com.leos.core.datastore + +import android.net.Uri +import android.util.Log +import androidx.datastore.core.DataStore +import com.leos.core.common.Exporter +import com.leos.core.common.extension.updateAsMutable +import com.leos.core.datastore.model.AutoSync +import com.leos.core.datastore.model.InstallerType +import com.leos.core.datastore.model.ProxyType +import com.leos.core.datastore.model.SortOrder +import com.leos.core.datastore.model.Theme +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.catch +import kotlinx.coroutines.flow.first +import kotlinx.datetime.Clock +import java.io.IOException +import kotlin.time.Duration + +class DataStoreSettingsRepository( + private val dataStore: DataStore, + private val exporter: Exporter +) : SettingsRepository { + private companion object { + const val TAG: String = "SettingsRepository" + } + + override val data: Flow = dataStore.data + .catch { exception -> + if (exception is IOException) { + Log.e(TAG, "Error reading preferences.", exception) + } else { + throw exception + } + } + + override suspend fun getInitial(): Settings { + return dataStore.data.first() + } + + override suspend fun setLanguage(language: String) { + dataStore.updateData { settings -> + settings.copy(language = language) + } + } + + override suspend fun enableIncompatibleVersion(enable: Boolean) { + dataStore.updateData { settings -> + settings.copy(incompatibleVersions = enable) + } + } + + override suspend fun enableNotifyUpdates(enable: Boolean) { + dataStore.updateData { settings -> + settings.copy(notifyUpdate = enable) + } + } + + override suspend fun enableUnstableUpdates(enable: Boolean) { + dataStore.updateData { settings -> + settings.copy(unstableUpdate = enable) + } + } + + override suspend fun setTheme(theme: Theme) { + dataStore.updateData { settings -> + settings.copy(theme = theme) + } + } + + override suspend fun setDynamicTheme(enable: Boolean) { + dataStore.updateData { settings -> + settings.copy(dynamicTheme = enable) + } + } + + override suspend fun setInstallerType(installerType: InstallerType) { + dataStore.updateData { settings -> + settings.copy(installerType = installerType) + } + } + + override suspend fun setAutoUpdate(allow: Boolean) { + dataStore.updateData { settings -> + settings.copy(autoUpdate = allow) + } + } + + override suspend fun setAutoSync(autoSync: AutoSync) { + dataStore.updateData { settings -> + settings.copy(autoSync = autoSync) + } + } + + override suspend fun setSortOrder(sortOrder: SortOrder) { + dataStore.updateData { settings -> + settings.copy(sortOrder = sortOrder) + } + } + + override suspend fun setProxyType(proxyType: ProxyType) { + dataStore.updateData { settings -> + settings.copy(proxy = settings.proxy.update(newType = proxyType)) + } + } + + override suspend fun setProxyHost(proxyHost: String) { + dataStore.updateData { settings -> + settings.copy(proxy = settings.proxy.update(newHost = proxyHost)) + } + } + + override suspend fun setProxyPort(proxyPort: Int) { + dataStore.updateData { settings -> + settings.copy(proxy = settings.proxy.update(newPort = proxyPort)) + } + } + + override suspend fun setCleanUpInterval(interval: Duration) { + dataStore.updateData { settings -> + settings.copy(cleanUpInterval = interval) + } + } + + override suspend fun setCleanupInstant() { + dataStore.updateData { settings -> + settings.copy(lastCleanup = Clock.System.now()) + } + } + + override suspend fun setHomeScreenSwiping(value: Boolean) { + dataStore.updateData { settings -> + settings.copy(homeScreenSwiping = value) + } + } + + override suspend fun export(target: Uri) { + val currentSettings = getInitial() + exporter.export(currentSettings, target) + } + + override suspend fun import(target: Uri) { + val importedSettings = exporter.import(target) + val updatedFavorites = importedSettings.favouriteApps + + getInitial().favouriteApps + val updatedSettings = importedSettings.copy(favouriteApps = updatedFavorites) + dataStore.updateData { updatedSettings } + } + + override suspend fun toggleFavourites(packageName: String) { + dataStore.updateData { settings -> + val newSet = settings.favouriteApps.updateAsMutable { + if (!add(packageName)) remove(packageName) + } + settings.copy(favouriteApps = newSet) + } + } +} diff --git a/core/datastore/src/main/java/com/looker/core/datastore/Settings.kt b/core/datastore/src/main/java/com/looker/core/datastore/Settings.kt new file mode 100644 index 0000000..ed26c97 --- /dev/null +++ b/core/datastore/src/main/java/com/looker/core/datastore/Settings.kt @@ -0,0 +1,66 @@ +package com.leos.core.datastore + +import androidx.datastore.core.Serializer +import com.leos.core.datastore.model.AutoSync +import com.leos.core.datastore.model.InstallerType +import com.leos.core.datastore.model.ProxyPreference +import com.leos.core.datastore.model.SortOrder +import com.leos.core.datastore.model.Theme +import java.io.IOException +import java.io.InputStream +import java.io.OutputStream +import kotlin.time.Duration +import kotlin.time.Duration.Companion.hours +import kotlinx.datetime.Instant +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.Serializable +import kotlinx.serialization.SerializationException +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.decodeFromStream +import kotlinx.serialization.json.encodeToStream + +@Serializable +data class Settings( + val language: String = "system", + val incompatibleVersions: Boolean = false, + val notifyUpdate: Boolean = true, + val unstableUpdate: Boolean = false, + val theme: Theme = Theme.SYSTEM, + val dynamicTheme: Boolean = false, + val installerType: InstallerType = InstallerType.Default, + val autoUpdate: Boolean = false, + val autoSync: AutoSync = AutoSync.WIFI_ONLY, + val sortOrder: SortOrder = SortOrder.UPDATED, + val proxy: ProxyPreference = ProxyPreference(), + val cleanUpInterval: Duration = 12.hours, + val lastCleanup: Instant? = null, + val favouriteApps: Set = emptySet(), + val homeScreenSwiping: Boolean = true +) + +@OptIn(ExperimentalSerializationApi::class) +object SettingsSerializer : Serializer { + + private val json = Json { encodeDefaults = true } + + override val defaultValue: Settings = Settings() + + override suspend fun readFrom(input: InputStream): Settings { + return try { + json.decodeFromStream(input) + } catch (e: SerializationException) { + e.printStackTrace() + defaultValue + } + } + + override suspend fun writeTo(t: Settings, output: OutputStream) { + try { + json.encodeToStream(t, output) + } catch (e: SerializationException) { + e.printStackTrace() + } catch (e: IOException) { + e.printStackTrace() + } + } +} diff --git a/core/datastore/src/main/java/com/looker/core/datastore/SettingsRepository.kt b/core/datastore/src/main/java/com/looker/core/datastore/SettingsRepository.kt new file mode 100644 index 0000000..b77a6a6 --- /dev/null +++ b/core/datastore/src/main/java/com/looker/core/datastore/SettingsRepository.kt @@ -0,0 +1,61 @@ +package com.leos.core.datastore + +import android.net.Uri +import com.leos.core.datastore.model.AutoSync +import com.leos.core.datastore.model.InstallerType +import com.leos.core.datastore.model.ProxyType +import com.leos.core.datastore.model.SortOrder +import com.leos.core.datastore.model.Theme +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.map +import kotlin.time.Duration + +interface SettingsRepository { + + val data: Flow + + suspend fun getInitial(): Settings + + suspend fun export(target: Uri) + + suspend fun import(target: Uri) + + suspend fun setLanguage(language: String) + + suspend fun enableIncompatibleVersion(enable: Boolean) + + suspend fun enableNotifyUpdates(enable: Boolean) + + suspend fun enableUnstableUpdates(enable: Boolean) + + suspend fun setTheme(theme: Theme) + + suspend fun setDynamicTheme(enable: Boolean) + + suspend fun setInstallerType(installerType: InstallerType) + + suspend fun setAutoUpdate(allow: Boolean) + + suspend fun setAutoSync(autoSync: AutoSync) + + suspend fun setSortOrder(sortOrder: SortOrder) + + suspend fun setProxyType(proxyType: ProxyType) + + suspend fun setProxyHost(proxyHost: String) + + suspend fun setProxyPort(proxyPort: Int) + + suspend fun setCleanUpInterval(interval: Duration) + + suspend fun setCleanupInstant() + + suspend fun setHomeScreenSwiping(value: Boolean) + + suspend fun toggleFavourites(packageName: String) +} + +inline fun SettingsRepository.get(crossinline block: suspend Settings.() -> T): Flow { + return data.map(block).distinctUntilChanged() +} diff --git a/core/datastore/src/main/java/com/looker/core/datastore/di/DatastoreModule.kt b/core/datastore/src/main/java/com/looker/core/datastore/di/DatastoreModule.kt new file mode 100644 index 0000000..a35e753 --- /dev/null +++ b/core/datastore/src/main/java/com/looker/core/datastore/di/DatastoreModule.kt @@ -0,0 +1,80 @@ +package com.leos.core.datastore.di + +import android.content.Context +import androidx.datastore.core.DataStore +import androidx.datastore.core.DataStoreFactory +import androidx.datastore.dataStoreFile +import androidx.datastore.preferences.core.PreferenceDataStoreFactory +import androidx.datastore.preferences.core.Preferences +import androidx.datastore.preferences.preferencesDataStoreFile +import com.leos.core.common.Exporter +import com.leos.core.datastore.DataStoreSettingsRepository +import com.leos.core.datastore.Settings +import com.leos.core.datastore.SettingsRepository +import com.leos.core.datastore.SettingsSerializer +import com.leos.core.datastore.exporter.SettingsExporter +import com.leos.core.datastore.migration.ProtoDataStoreMigration +import com.leos.core.di.ApplicationScope +import com.leos.core.di.IoDispatcher +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.android.qualifiers.ApplicationContext +import dagger.hilt.components.SingletonComponent +import javax.inject.Singleton +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.CoroutineScope +import kotlinx.serialization.json.Json + +private const val OLD_PREFERENCES = "preferences_file" +private const val PREFERENCES = "settings_file" + +@Module +@InstallIn(SingletonComponent::class) +object DatastoreModule { + + @Singleton + @Provides + fun provideDatastore( + @ApplicationContext context: Context + ): DataStore = PreferenceDataStoreFactory.create { + context.preferencesDataStoreFile(OLD_PREFERENCES) + } + + @Singleton + @Provides + fun provideProtoDatastore( + @ApplicationContext context: Context, + oldDataStore: DataStore + ): DataStore = DataStoreFactory.create( + serializer = SettingsSerializer, + migrations = listOf( + ProtoDataStoreMigration(oldDataStore) + ) + ) { + context.dataStoreFile(PREFERENCES) + } + + @Singleton + @Provides + fun provideSettingsExporter( + @ApplicationContext context: Context, + @ApplicationScope scope: CoroutineScope, + @IoDispatcher dispatcher: CoroutineDispatcher + ): Exporter = SettingsExporter( + context = context, + scope = scope, + ioDispatcher = dispatcher, + json = Json { + encodeDefaults = true + prettyPrint = true + } + ) + + @Singleton + @Provides + fun provideSettingsRepository( + dataStore: DataStore, + exporter: Exporter + ): SettingsRepository = DataStoreSettingsRepository(dataStore, exporter) +} diff --git a/core/datastore/src/main/java/com/looker/core/datastore/exporter/SettingsExporter.kt b/core/datastore/src/main/java/com/looker/core/datastore/exporter/SettingsExporter.kt new file mode 100644 index 0000000..d6c6f98 --- /dev/null +++ b/core/datastore/src/main/java/com/looker/core/datastore/exporter/SettingsExporter.kt @@ -0,0 +1,57 @@ +package com.leos.core.datastore.exporter + +import android.content.Context +import android.net.Uri +import com.leos.core.common.Exporter +import com.leos.core.datastore.Settings +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.cancel +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.SerializationException +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.decodeFromStream +import kotlinx.serialization.json.encodeToStream +import java.io.IOException + +@OptIn(ExperimentalSerializationApi::class) +class SettingsExporter( + private val context: Context, + private val scope: CoroutineScope, + private val ioDispatcher: CoroutineDispatcher, + private val json: Json +) : Exporter { + + override suspend fun export(item: Settings, target: Uri) { + scope.launch(ioDispatcher) { + try { + context.contentResolver.openOutputStream(target).use { + if (it != null) json.encodeToStream(item, it) + } + } catch (e: SerializationException) { + e.printStackTrace() + cancel() + } catch (e: IOException) { + e.printStackTrace() + cancel() + } + } + } + + override suspend fun import(target: Uri): Settings = withContext(ioDispatcher) { + try { + context.contentResolver.openInputStream(target).use { + checkNotNull(it) { "Null input stream for import file" } + json.decodeFromStream(it) + } + } catch (e: SerializationException) { + e.printStackTrace() + throw IllegalStateException(e.message) + } catch (e: IOException) { + e.printStackTrace() + throw IllegalStateException(e.message) + } + } +} diff --git a/core/datastore/src/main/java/com/looker/core/datastore/extension/Preferences.kt b/core/datastore/src/main/java/com/looker/core/datastore/extension/Preferences.kt new file mode 100644 index 0000000..4dd96e5 --- /dev/null +++ b/core/datastore/src/main/java/com/looker/core/datastore/extension/Preferences.kt @@ -0,0 +1,123 @@ +package com.leos.core.datastore.extension + +import android.content.Context +import android.content.res.Configuration +import com.leos.core.common.R +import com.leos.core.common.R.string as stringRes +import com.leos.core.common.R.style as styleRes +import com.leos.core.common.SdkCheck +import com.leos.core.datastore.model.AutoSync +import com.leos.core.datastore.model.InstallerType +import com.leos.core.datastore.model.ProxyType +import com.leos.core.datastore.model.SortOrder +import com.leos.core.datastore.model.Theme +import kotlin.time.Duration + +fun Configuration.getThemeRes(theme: Theme, dynamicTheme: Boolean) = when (theme) { + Theme.SYSTEM -> { + if ((uiMode and Configuration.UI_MODE_NIGHT_YES) != 0) { + if (SdkCheck.isSnowCake && dynamicTheme) { + styleRes.Theme_Main_DynamicDark + } else { + styleRes.Theme_Main_Dark + } + } else { + if (SdkCheck.isSnowCake && dynamicTheme) { + styleRes.Theme_Main_DynamicLight + } else { + styleRes.Theme_Main_Light + } + } + } + + Theme.SYSTEM_BLACK -> { + if ((uiMode and Configuration.UI_MODE_NIGHT_YES) != 0) { + if (SdkCheck.isSnowCake && dynamicTheme) { + styleRes.Theme_Main_DynamicAmoled + } else { + styleRes.Theme_Main_Amoled + } + } else { + if (SdkCheck.isSnowCake && dynamicTheme) { + styleRes.Theme_Main_DynamicLight + } else { + styleRes.Theme_Main_Light + } + } + } + + Theme.LIGHT -> if (SdkCheck.isSnowCake && dynamicTheme) { + styleRes.Theme_Main_DynamicLight + } else { + styleRes.Theme_Main_Light + } + Theme.DARK -> if (SdkCheck.isSnowCake && dynamicTheme) { + styleRes.Theme_Main_DynamicDark + } else { + styleRes.Theme_Main_Dark + } + Theme.AMOLED -> if (SdkCheck.isSnowCake && dynamicTheme) { + styleRes.Theme_Main_DynamicAmoled + } else { + styleRes.Theme_Main_Amoled + } +} + +fun Context?.toTime(duration: Duration): String { + val time = duration.inWholeHours.toInt() + val days = duration.inWholeDays.toInt() + if (duration == Duration.INFINITE) return this?.getString(R.string.never) ?: "" + return if (time >= 24) { + "$days " + this?.resources?.getQuantityString( + R.plurals.days, + days + ) + } else { + "$time " + this?.resources?.getQuantityString(R.plurals.hours, time) + } +} + +fun Context?.themeName(theme: Theme) = this?.let { + when (theme) { + Theme.SYSTEM -> getString(stringRes.system) + Theme.SYSTEM_BLACK -> getString(stringRes.system) + " " + getString(stringRes.amoled) + Theme.LIGHT -> getString(stringRes.light) + Theme.DARK -> getString(stringRes.dark) + Theme.AMOLED -> getString(stringRes.amoled) + } +} ?: "" + +fun Context?.sortOrderName(sortOrder: SortOrder) = this?.let { + when (sortOrder) { + SortOrder.UPDATED -> getString(stringRes.recently_updated) + SortOrder.ADDED -> getString(stringRes.whats_new) + SortOrder.NAME -> getString(stringRes.name) +// SortOrder.SIZE -> getString(stringRes.size) + } +} ?: "" + +fun Context?.autoSyncName(autoSync: AutoSync) = this?.let { + when (autoSync) { + AutoSync.NEVER -> getString(stringRes.never) + AutoSync.WIFI_ONLY -> getString(stringRes.only_on_wifi) + AutoSync.WIFI_PLUGGED_IN -> getString(stringRes.only_on_wifi_with_charging) + AutoSync.ALWAYS -> getString(stringRes.always) + } +} ?: "" + +fun Context?.proxyName(proxyType: ProxyType) = this?.let { + when (proxyType) { + ProxyType.DIRECT -> getString(stringRes.no_proxy) + ProxyType.HTTP -> getString(stringRes.http_proxy) + ProxyType.SOCKS -> getString(stringRes.socks_proxy) + } +} ?: "" + +fun Context?.installerName(installerType: InstallerType) = this?.let { + when (installerType) { + InstallerType.LEGACY -> getString(stringRes.legacy_installer) + InstallerType.SESSION -> getString(stringRes.session_installer) + InstallerType.SHIZUKU -> getString(stringRes.shizuku_installer) + InstallerType.ROOT -> getString(stringRes.root_installer) + } +} ?: "" diff --git a/core/datastore/src/main/java/com/looker/core/datastore/migration/ProtoDataStoreMigration.kt b/core/datastore/src/main/java/com/looker/core/datastore/migration/ProtoDataStoreMigration.kt new file mode 100644 index 0000000..443bc97 --- /dev/null +++ b/core/datastore/src/main/java/com/looker/core/datastore/migration/ProtoDataStoreMigration.kt @@ -0,0 +1,100 @@ +package com.leos.core.datastore.migration + +import androidx.datastore.core.DataMigration +import androidx.datastore.core.DataStore +import androidx.datastore.preferences.core.Preferences +import androidx.datastore.preferences.core.booleanPreferencesKey +import androidx.datastore.preferences.core.edit +import androidx.datastore.preferences.core.intPreferencesKey +import androidx.datastore.preferences.core.longPreferencesKey +import androidx.datastore.preferences.core.stringPreferencesKey +import androidx.datastore.preferences.core.stringSetPreferencesKey +import com.leos.core.datastore.Settings +import com.leos.core.datastore.model.AutoSync +import com.leos.core.datastore.model.InstallerType +import com.leos.core.datastore.model.ProxyPreference +import com.leos.core.datastore.model.ProxyType +import com.leos.core.datastore.model.SortOrder +import com.leos.core.datastore.model.Theme +import kotlin.time.Duration.Companion.hours +import kotlinx.coroutines.flow.first +import kotlinx.datetime.Instant + +class ProtoDataStoreMigration( + private val oldDataStore: DataStore +) : DataMigration { + override suspend fun cleanUp() { + oldDataStore.edit { it.clear() } + } + + override suspend fun shouldMigrate(currentData: Settings): Boolean = + oldDataStore.data.first().asMap().isNotEmpty() + + override suspend fun migrate(currentData: Settings): Settings { + return oldDataStore.data.first().mapSettings() + } + + // TODO: Remove after next update + private companion object { + val LANGUAGE = stringPreferencesKey("key_language") + val INCOMPATIBLE_VERSIONS = booleanPreferencesKey("key_incompatible_versions") + val NOTIFY_UPDATES = booleanPreferencesKey("key_notify_updates") + val UNSTABLE_UPDATES = booleanPreferencesKey("key_unstable_updates") + val THEME = stringPreferencesKey("key_theme") + val DYNAMIC_THEME = booleanPreferencesKey("key_dynamic_theme") + val INSTALLER_TYPE = stringPreferencesKey("key_installer_type") + val AUTO_UPDATE = booleanPreferencesKey("key_auto_updates") + val AUTO_SYNC = stringPreferencesKey("key_auto_sync") + val SORT_ORDER = stringPreferencesKey("key_sort_order") + val PROXY_TYPE = stringPreferencesKey("key_proxy_type") + val PROXY_HOST = stringPreferencesKey("key_proxy_host") + val PROXY_PORT = intPreferencesKey("key_proxy_port") + val CLEAN_UP_INTERVAL = longPreferencesKey("clean_up_interval") + val LAST_CLEAN_UP = longPreferencesKey("last_clean_up_time") + val FAVOURITE_APPS = stringSetPreferencesKey("favourite_apps") + val HOME_SCREEN_SWIPING = booleanPreferencesKey("home_swiping") + + private fun Preferences.mapSettings(): Settings { + val defaultSetting = Settings() + + val language = this[LANGUAGE] ?: defaultSetting.language + val incompatibleVersions = this[INCOMPATIBLE_VERSIONS] + ?: defaultSetting.incompatibleVersions + val notifyUpdate = this[NOTIFY_UPDATES] ?: defaultSetting.notifyUpdate + val unstableUpdate = this[UNSTABLE_UPDATES] ?: defaultSetting.unstableUpdate + val theme = Theme.valueOf(this[THEME] ?: Theme.SYSTEM.name) + val dynamicTheme = this[DYNAMIC_THEME] ?: defaultSetting.dynamicTheme + val installerType = + InstallerType.valueOf(this[INSTALLER_TYPE] ?: defaultSetting.installerType.name) + val autoUpdate = this[AUTO_UPDATE] ?: false + val autoSync = AutoSync.valueOf(this[AUTO_SYNC] ?: defaultSetting.autoSync.name) + val sortOrder = SortOrder.valueOf(this[SORT_ORDER] ?: defaultSetting.sortOrder.name) + val type = ProxyType.valueOf(this[PROXY_TYPE] ?: defaultSetting.proxy.type.name) + val host = this[PROXY_HOST] ?: defaultSetting.proxy.host + val port = this[PROXY_PORT] ?: defaultSetting.proxy.port + val proxy = ProxyPreference(type = type, host = host, port = port) + val cleanUpInterval = this[CLEAN_UP_INTERVAL]?.hours ?: defaultSetting.cleanUpInterval + val lastCleanup = this[LAST_CLEAN_UP]?.let { Instant.fromEpochMilliseconds(it) } + val favouriteApps = this[FAVOURITE_APPS] ?: defaultSetting.favouriteApps + val homeScreenSwiping = this[HOME_SCREEN_SWIPING] ?: defaultSetting.homeScreenSwiping + + return Settings( + language = language, + incompatibleVersions = incompatibleVersions, + notifyUpdate = notifyUpdate, + unstableUpdate = unstableUpdate, + theme = theme, + dynamicTheme = dynamicTheme, + installerType = installerType, + autoUpdate = autoUpdate, + autoSync = autoSync, + sortOrder = sortOrder, + proxy = proxy, + cleanUpInterval = cleanUpInterval, + lastCleanup = lastCleanup, + favouriteApps = favouriteApps, + homeScreenSwiping = homeScreenSwiping + ) + } + } +} diff --git a/core/datastore/src/main/java/com/looker/core/datastore/model/AutoSync.kt b/core/datastore/src/main/java/com/looker/core/datastore/model/AutoSync.kt new file mode 100644 index 0000000..28b9e86 --- /dev/null +++ b/core/datastore/src/main/java/com/looker/core/datastore/model/AutoSync.kt @@ -0,0 +1,8 @@ +package com.leos.core.datastore.model + +enum class AutoSync { + ALWAYS, + WIFI_ONLY, + WIFI_PLUGGED_IN, + NEVER +} diff --git a/core/datastore/src/main/java/com/looker/core/datastore/model/InstallerType.kt b/core/datastore/src/main/java/com/looker/core/datastore/model/InstallerType.kt new file mode 100644 index 0000000..b11e6a4 --- /dev/null +++ b/core/datastore/src/main/java/com/looker/core/datastore/model/InstallerType.kt @@ -0,0 +1,19 @@ +package com.leos.core.datastore.model + +import com.leos.core.common.device.Miui + +enum class InstallerType { + LEGACY, + SESSION, + SHIZUKU, + ROOT; + + companion object { + val Default: InstallerType + get() = if (Miui.isMiui) { + if (Miui.isMiuiOptimizationDisabled()) SESSION else LEGACY + } else { + SESSION + } + } +} diff --git a/core/datastore/src/main/java/com/looker/core/datastore/model/ProxyPreference.kt b/core/datastore/src/main/java/com/looker/core/datastore/model/ProxyPreference.kt new file mode 100644 index 0000000..4e8cee7 --- /dev/null +++ b/core/datastore/src/main/java/com/looker/core/datastore/model/ProxyPreference.kt @@ -0,0 +1,20 @@ +package com.leos.core.datastore.model + +import kotlinx.serialization.Serializable + +@Serializable +data class ProxyPreference( + val type: ProxyType = ProxyType.DIRECT, + val host: String = "localhost", + val port: Int = 9050 +) { + fun update( + newType: ProxyType? = null, + newHost: String? = null, + newPort: Int? = null + ): ProxyPreference = copy( + type = newType ?: type, + host = newHost ?: host, + port = newPort ?: port + ) +} diff --git a/core/datastore/src/main/java/com/looker/core/datastore/model/ProxyType.kt b/core/datastore/src/main/java/com/looker/core/datastore/model/ProxyType.kt new file mode 100644 index 0000000..e4586d7 --- /dev/null +++ b/core/datastore/src/main/java/com/looker/core/datastore/model/ProxyType.kt @@ -0,0 +1,7 @@ +package com.leos.core.datastore.model + +enum class ProxyType { + DIRECT, + HTTP, + SOCKS +} diff --git a/core/datastore/src/main/java/com/looker/core/datastore/model/SortOrder.kt b/core/datastore/src/main/java/com/looker/core/datastore/model/SortOrder.kt new file mode 100644 index 0000000..a527724 --- /dev/null +++ b/core/datastore/src/main/java/com/looker/core/datastore/model/SortOrder.kt @@ -0,0 +1,8 @@ +package com.leos.core.datastore.model + +// todo: Add Support for sorting by size +enum class SortOrder { + UPDATED, + ADDED, + NAME +} diff --git a/core/datastore/src/main/java/com/looker/core/datastore/model/Theme.kt b/core/datastore/src/main/java/com/looker/core/datastore/model/Theme.kt new file mode 100644 index 0000000..04914f1 --- /dev/null +++ b/core/datastore/src/main/java/com/looker/core/datastore/model/Theme.kt @@ -0,0 +1,9 @@ +package com.leos.core.datastore.model + +enum class Theme { + SYSTEM, + SYSTEM_BLACK, + LIGHT, + DARK, + AMOLED +} diff --git a/core/di/.gitignore b/core/di/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/core/di/.gitignore @@ -0,0 +1 @@ +/build diff --git a/core/di/build.gradle.kts b/core/di/build.gradle.kts new file mode 100644 index 0000000..902d8ca --- /dev/null +++ b/core/di/build.gradle.kts @@ -0,0 +1,20 @@ +plugins { + alias(libs.plugins.looker.android.library) + alias(libs.plugins.looker.hilt) + alias(libs.plugins.looker.lint) +} + +android { + namespace = "com.leos.core.di" + + buildTypes { + release { + isMinifyEnabled = true + proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt")) + } + create("alpha") { + initWith(getByName("debug")) + isMinifyEnabled = true + } + } +} diff --git a/core/di/src/main/kotlin/com/looker/core/di/CoroutinesModule.kt b/core/di/src/main/kotlin/com/looker/core/di/CoroutinesModule.kt new file mode 100644 index 0000000..a994bb6 --- /dev/null +++ b/core/di/src/main/kotlin/com/looker/core/di/CoroutinesModule.kt @@ -0,0 +1,41 @@ +package com.leos.core.di + +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import kotlinx.coroutines.* +import javax.inject.Qualifier +import javax.inject.Singleton + +@Retention(AnnotationRetention.RUNTIME) +@Qualifier +annotation class IoDispatcher + +@Retention(AnnotationRetention.RUNTIME) +@Qualifier +annotation class DefaultDispatcher + +@Retention(AnnotationRetention.RUNTIME) +@Qualifier +annotation class ApplicationScope + +@Module +@InstallIn(SingletonComponent::class) +object CoroutinesModule { + + @Provides + @IoDispatcher + fun providesIODispatcher(): CoroutineDispatcher = Dispatchers.IO + + @Provides + @DefaultDispatcher + fun providesDefaultDispatcher(): CoroutineDispatcher = Dispatchers.Default + + @Provides + @Singleton + @ApplicationScope + fun providesCoroutineScope( + @DefaultDispatcher dispatcher: CoroutineDispatcher + ): CoroutineScope = CoroutineScope(SupervisorJob() + dispatcher) +} diff --git a/core/domain/.gitignore b/core/domain/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/core/domain/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/core/domain/build.gradle.kts b/core/domain/build.gradle.kts new file mode 100644 index 0000000..0d186ee --- /dev/null +++ b/core/domain/build.gradle.kts @@ -0,0 +1,24 @@ +plugins { + alias(libs.plugins.looker.android.library) + alias(libs.plugins.looker.lint) + id("kotlin-parcelize") +} + +android { + namespace = "com.leos.core.domain" + + buildTypes { + release { + isMinifyEnabled = true + proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt")) + } + create("alpha") { + initWith(getByName("debug")) + isMinifyEnabled = true + } + } +} + +dependencies { + modules(Modules.coreCommon) +} diff --git a/core/domain/src/main/kotlin/com/looker/core/domain/InstalledItem.kt b/core/domain/src/main/kotlin/com/looker/core/domain/InstalledItem.kt new file mode 100644 index 0000000..e9a6643 --- /dev/null +++ b/core/domain/src/main/kotlin/com/looker/core/domain/InstalledItem.kt @@ -0,0 +1,8 @@ +package com.leos.core.domain + +class InstalledItem( + val packageName: String, + val version: String, + val versionCode: Long, + val signature: String +) diff --git a/core/domain/src/main/kotlin/com/looker/core/domain/Product.kt b/core/domain/src/main/kotlin/com/looker/core/domain/Product.kt new file mode 100644 index 0000000..d64bb16 --- /dev/null +++ b/core/domain/src/main/kotlin/com/looker/core/domain/Product.kt @@ -0,0 +1,102 @@ +package com.leos.core.domain + +data class Product( + var repositoryId: Long, + val packageName: String, + val name: String, + val summary: String, + var description: String, + val whatsNew: String, + val icon: String, + val metadataIcon: String, + val author: Author, + val source: String, + val changelog: String, + val web: String, + val tracker: String, + val added: Long, + val updated: Long, + val suggestedVersionCode: Long, + val categories: List, + val antiFeatures: List, + val licenses: List, + val donates: List, + val screenshots: List, + val releases: List +) { + data class Author(val name: String, val email: String, val web: String) + + sealed class Donate { + data class Regular(val url: String) : Donate() + data class Bitcoin(val address: String) : Donate() + data class Litecoin(val address: String) : Donate() + data class Flattr(val id: String) : Donate() + data class Liberapay(val id: String) : Donate() + data class OpenCollective(val id: String) : Donate() + } + + class Screenshot(val locale: String, val type: Type, val path: String) { + enum class Type(val jsonName: String) { + PHONE("phone"), + SMALL_TABLET("smallTablet"), + LARGE_TABLET("largeTablet") + } + + val identifier: String + get() = "$locale.${type.name}.$path" + } + + // Same releases with different signatures + val selectedReleases: List + get() = releases.filter { it.selected } + + val displayRelease: Release? + get() = selectedReleases.firstOrNull() ?: releases.firstOrNull() + + val version: String + get() = displayRelease?.version.orEmpty() + + val versionCode: Long + get() = selectedReleases.firstOrNull()?.versionCode ?: 0L + + val compatible: Boolean + get() = selectedReleases.firstOrNull()?.incompatibilities?.isEmpty() == true + + val signatures: List + get() = selectedReleases.mapNotNull { it.signature.ifBlank { null } }.distinct().toList() + + fun item(): ProductItem { + return ProductItem( + repositoryId, + packageName, + name, + summary, + icon, + metadataIcon, + version, + "", + compatible, + false, + 0 + ) + } + + fun canUpdate(installedItem: InstalledItem?): Boolean { + return installedItem != null && compatible && versionCode > installedItem.versionCode && + installedItem.signature in signatures + } +} + +fun List>.findSuggested( + installedItem: InstalledItem? +): Pair? = maxWithOrNull( + compareBy( + { (product, _) -> + product.compatible && + (installedItem == null || installedItem.signature in product.signatures) + }, + { (product, _) -> + product.versionCode + } + ) +) diff --git a/core/domain/src/main/kotlin/com/looker/core/domain/ProductItem.kt b/core/domain/src/main/kotlin/com/looker/core/domain/ProductItem.kt new file mode 100644 index 0000000..4418e4f --- /dev/null +++ b/core/domain/src/main/kotlin/com/looker/core/domain/ProductItem.kt @@ -0,0 +1,30 @@ +package com.leos.core.domain + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +data class ProductItem( + var repositoryId: Long, + var packageName: String, + var name: String, + var summary: String, + val icon: String, + val metadataIcon: String, + val version: String, + var installedVersion: String, + var compatible: Boolean, + var canUpdate: Boolean, + var matchRank: Int +) { + sealed class Section : Parcelable { + + @Parcelize + data object All : Section() + + @Parcelize + data class Category(val name: String) : Section() + + @Parcelize + data class Repository(val id: Long, val name: String) : Section() + } +} diff --git a/core/domain/src/main/kotlin/com/looker/core/domain/ProductPreference.kt b/core/domain/src/main/kotlin/com/looker/core/domain/ProductPreference.kt new file mode 100644 index 0000000..dc8b549 --- /dev/null +++ b/core/domain/src/main/kotlin/com/looker/core/domain/ProductPreference.kt @@ -0,0 +1,7 @@ +package com.leos.core.domain + +data class ProductPreference(val ignoreUpdates: Boolean, val ignoreVersionCode: Long) { + fun shouldIgnoreUpdate(versionCode: Long): Boolean { + return ignoreUpdates || ignoreVersionCode == versionCode + } +} diff --git a/core/domain/src/main/kotlin/com/looker/core/domain/Release.kt b/core/domain/src/main/kotlin/com/looker/core/domain/Release.kt new file mode 100644 index 0000000..845cb7c --- /dev/null +++ b/core/domain/src/main/kotlin/com/looker/core/domain/Release.kt @@ -0,0 +1,46 @@ +package com.leos.core.domain + +import android.net.Uri + +data class Release( + val selected: Boolean, + val version: String, + val versionCode: Long, + val added: Long, + val size: Long, + val minSdkVersion: Int, + val targetSdkVersion: Int, + val maxSdkVersion: Int, + val source: String, + val release: String, + val hash: String, + val hashType: String, + val signature: String, + val obbMain: String, + val obbMainHash: String, + val obbMainHashType: String, + val obbPatch: String, + val obbPatchHash: String, + val obbPatchHashType: String, + val permissions: List, + val features: List, + val platforms: List, + val incompatibilities: List +) { + sealed class Incompatibility { + object MinSdk : Incompatibility() + object MaxSdk : Incompatibility() + object Platform : Incompatibility() + data class Feature(val feature: String) : Incompatibility() + } + + val identifier: String + get() = "$versionCode.$hash" + + fun getDownloadUrl(repository: Repository): String { + return Uri.parse(repository.address).buildUpon().appendPath(release).build().toString() + } + + val cacheFileName: String + get() = "${hash.replace('/', '-')}.apk" +} diff --git a/core/domain/src/main/kotlin/com/looker/core/domain/Repository.kt b/core/domain/src/main/kotlin/com/looker/core/domain/Repository.kt new file mode 100644 index 0000000..18434c1 --- /dev/null +++ b/core/domain/src/main/kotlin/com/looker/core/domain/Repository.kt @@ -0,0 +1,407 @@ +package com.leos.core.domain + +import com.leos.core.domain.newer.isOnion +import java.net.URL + +data class Repository( + var id: Long, + val address: String, + val mirrors: List, + val name: String, + val description: String, + val version: Int, + val enabled: Boolean, + val fingerprint: String, + val lastModified: String, + val entityTag: String, + val updated: Long, + val timestamp: Long, + val authentication: String +) { + + /** + * Remove all onion addresses and supply it as random address + * + * If the list only contains onion urls we will provide the default address + */ + val randomAddress: String + get() = (mirrors + address) + .filter { !it.isOnion } + .randomOrNull() ?: address + + fun edit(address: String, fingerprint: String, authentication: String): Repository { + val isAddressChanged = this.address != address + val isFingerprintChanged = this.fingerprint != fingerprint + val shouldForceUpdate = isAddressChanged || isFingerprintChanged + return copy( + address = address, + fingerprint = fingerprint, + lastModified = if (shouldForceUpdate) "" else lastModified, + entityTag = if (shouldForceUpdate) "" else entityTag, + authentication = authentication + ) + } + + fun update( + mirrors: List, + name: String, + description: String, + version: Int, + lastModified: String, + entityTag: String, + timestamp: Long + ): Repository { + return copy( + mirrors = mirrors, + name = name, + description = description, + version = if (version >= 0) version else this.version, + lastModified = lastModified, + entityTag = entityTag, + updated = System.currentTimeMillis(), + timestamp = timestamp + ) + } + + fun enable(enabled: Boolean): Repository { + return copy(enabled = enabled, lastModified = "", entityTag = "") + } + + @Suppress("SpellCheckingInspection") + companion object { + + fun newRepository( + address: String, + fingerprint: String, + authentication: String + ): Repository { + val name = try { + URL(address).let { "${it.host}${it.path}" } + } catch (e: Exception) { + address + } + return defaultRepository(address, name, "", 0, true, fingerprint, authentication) + } + + private fun defaultRepository( + address: String, + name: String, + description: String, + version: Int = 21, + enabled: Boolean = false, + fingerprint: String, + authentication: String = "" + ): Repository { + return Repository( + -1, address, emptyList(), name, description, version, enabled, + fingerprint, "", "", 0L, 0L, authentication + ) + } + + val defaultRepositories = listOf( + + defaultRepository( + address = "http://62.178.96.192:3000/JoJo/apps/raw/branch/master/fdroid/repo", + name = "LeOS ungooled Apps", + description = "The respository includes goolge and trackerfree FOSS apps ", + enabled = true, + fingerprint = "020480A56FD52E6358FAFEFACE2261FFCFD5C6962B245B0244C9257EEFBDFF5C" + ), + defaultRepository( + address = "https://gitlab.com/harvey186/apps/-/raw/master/fdroid/repo", + name = "Alternativ Server for LeOS ungooled Apps", + description = "Alternativ Server for LeOS ungooled Apps", + enabled = false, + fingerprint = "020480A56FD52E6358FAFEFACE2261FFCFD5C6962B245B0244C9257EEFBDFF5C" + ), + + defaultRepository( + address = "https://f-droid.org/repo", + name = "F-Droid", + description = "The official F-Droid Free Software repos" + + "itory. Everything in this repository is always buil" + + "t from the source code.", + enabled = true, + fingerprint = "43238D512C1E5EB2D6569F4A3AFBF5523418B82E0A3ED1552770ABB9A9C9CCAB" + ), + defaultRepository( + address = "https://f-droid.org/archive", + name = "F-Droid Archive", + description = "The archive of the official F-Droid Free" + + " Software repository. Apps here are old and can co" + + "ntain known vulnerabilities and security issues!", + fingerprint = "43238D512C1E5EB2D6569F4A3AFBF5523418B82E0A3ED1552770ABB9A9C9CCAB" + ), + defaultRepository( + address = "https://guardianproject.info/fdroid/repo", + name = "Guardian Project Official Releases", + description = "The official repository of The Guardian " + + "Project apps for use with the F-Droid client. Appl" + + "ications in this repository are official binaries " + + "built by the original application developers and " + + "signed by the same key as the APKs that are relea" + + "sed in the Google Play Store.", + fingerprint = "B7C2EEFD8DAC7806AF67DFCD92EB18126BC08312A7F2D6F3862E46013C7A6135" + ), + defaultRepository( + address = "https://guardianproject.info/fdroid/archive", + name = "Guardian Project Archive", + description = "The official repository of The Guardian Pr" + + "oject apps for use with the F-Droid client. This con" + + "tains older versions of applications from the main repository.", + fingerprint = "B7C2EEFD8DAC7806AF67DFCD92EB18126BC08312A7F2D6F3862E46013C7A6135" + ), + defaultRepository( + address = "https://apt.izzysoft.de/fdroid/repo", + name = "IzzyOnDroid F-Droid Repo", + description = "This is a repository of apps to be used with" + + " F-Droid the original application developers, taken" + + " from the resp. repositories (mostly GitHub). At thi" + + "s moment I cannot give guarantees on regular updates" + + " for all of them, though most are checked multiple times a week ", + enabled = true, + fingerprint = "3BF0D6ABFEAE2F401707B6D966BE743BF0EEE49C2561B9BA39073711F628937A" + ), + defaultRepository( + address = "https://microg.org/fdroid/repo", + name = "MicroG Project", + description = "The official repository for MicroG." + + " MicroG is a lightweight open-source implementation" + + " of Google Play Services.", + fingerprint = "9BD06727E62796C0130EB6DAB39B73157451582CBD138E86C468ACC395D14165" + ), + defaultRepository( + address = "https://repo.netsyms.com/fdroid/repo", + name = "Netsyms Technologies", + description = "Official collection of open-source apps created" + + " by Netsyms Technologies.", + fingerprint = "2581BA7B32D3AB443180C4087CAB6A7E8FB258D3A6E98870ECB3C675E4D64489" + ), + defaultRepository( + address = "https://fdroid.bromite.org/fdroid/repo", + name = "Bromite", + description = "The official repository for Bromite. " + + "Bromite is a Chromium with ad blocking and enhanced p" + + "rivacy.", + fingerprint = "E1EE5CD076D7B0DC84CB2B45FB78B86DF2EB39A3B6C56BA3DC292A5E0C3B9504" + ), + defaultRepository( + address = "https://molly.im/fdroid/foss/fdroid/repo", + name = "Molly", + description = "The official repository for Molly. " + + "Molly is a fork of Signal focused on security.", + fingerprint = "5198DAEF37FC23C14D5EE32305B2AF45787BD7DF2034DE33AD302BDB3446DF74" + ), + defaultRepository( + address = "https://archive.newpipe.net/fdroid/repo", + name = "NewPipe", + description = "The official repository for NewPipe." + + " NewPipe is a lightweight client for Youtube, PeerTube" + + ", Soundcloud, etc.", + fingerprint = "E2402C78F9B97C6C89E97DB914A2751FDA1D02FE2039CC0897A462BDB57E7501" + ), + defaultRepository( + address = "https://www.collaboraoffice.com/downloads/fdroid/repo", + name = "Collabora Office", + description = "Collabora Office is an office suite based on LibreOffice.", + fingerprint = "573258C84E149B5F4D9299E7434B2B69A8410372921D4AE586BA91EC767892CC" + ), + defaultRepository( + address = "https://fdroid.libretro.com/repo", + name = "LibRetro", + description = "The official canary repository for this great" + + " retro emulators hub.", + fingerprint = "3F05B24D497515F31FEAB421297C79B19552C5C81186B3750B7C131EF41D733D" + ), + defaultRepository( + address = "https://cdn.kde.org/android/fdroid/repo", + name = "KDE Android", + description = "The official nightly repository for KDE Android apps.", + fingerprint = "B3EBE10AFA6C5C400379B34473E843D686C61AE6AD33F423C98AF903F056523F" + ), + defaultRepository( + address = "https://calyxos.gitlab.io/calyx-fdroid-repo/fdroid/repo", + name = "Calyx OS Repo", + description = "The official Calyx Labs F-Droid repository.", + fingerprint = "C44D58B4547DE5096138CB0B34A1CC99DAB3B4274412ED753FCCBFC11DC1B7B6" + ), + defaultRepository( + address = "https://divestos.org/fdroid/official", + name = "Divest OS Repo", + description = "The official Divest OS F-Droid repository.", + fingerprint = "E4BE8D6ABFA4D9D4FEEF03CDDA7FF62A73FD64B75566F6DD4E5E577550BE8467" + ), + defaultRepository( + address = "https://fdroid.fedilab.app/repo", + name = "Fedilab", + description = "The official repository for Fedilab. Fedilab is a " + + "multi-accounts client for Mastodon, Peertube, and other free" + + " software social networks.", + fingerprint = "11F0A69910A4280E2CD3CCC3146337D006BE539B18E1A9FEACE15FF757A94FEB" + ), + defaultRepository( + address = "https://store.nethunter.com/repo", + name = "Kali Nethunter", + description = "Kali Nethunter's official selection of original b" + + "inaries.", + fingerprint = "7E418D34C3AD4F3C37D7E6B0FACE13332364459C862134EB099A3BDA2CCF4494" + ), + defaultRepository( + address = "https://secfirst.org/fdroid/repo", + name = "Umbrella", + description = "The official repository for Umbrella. Umbrella is" + + " a collection of security advices, tutorials, tools etc.", + fingerprint = "39EB57052F8D684514176819D1645F6A0A7BD943DBC31AB101949006AC0BC228" + ), + defaultRepository( + address = "https://thecapslock.gitlab.io/fdroid-patched-apps/fdroid/repo", + name = "Patched Apps", + description = "A collection of patched applications to provid" + + "e better compatibility, privacy etc..", + fingerprint = "313D9E6E789FF4E8E2D687AAE31EEF576050003ED67963301821AC6D3763E3AC" + ), + defaultRepository( + address = "https://mobileapp.bitwarden.com/fdroid/repo", + name = "Bitwarden", + description = "The official repository for Bitwarden. Bitward" + + "en is a password manager.", + fingerprint = "BC54EA6FD1CD5175BCCCC47C561C5726E1C3ED7E686B6DB4B18BAC843A3EFE6C" + ), + defaultRepository( + address = "https://briarproject.org/fdroid/repo", + name = "Briar", + description = "The official repository for Briar. Briar is a" + + " serverless/offline messenger that focused on privacy, s" + + "ecurity, and decentralization.", + fingerprint = "1FB874BEE7276D28ECB2C9B06E8A122EC4BCB4008161436CE474C257CBF49BD6" + ), + defaultRepository( + address = "https://guardianproject-wind.s3.amazonaws.com/fdroid/repo", + name = "Wind Project", + description = "A collection of interesting offline/serverless apps.", + fingerprint = "182CF464D219D340DA443C62155198E399FEC1BC4379309B775DD9FC97ED97E1" + ), + defaultRepository( + address = "https://nanolx.org/fdroid/repo", + name = "NanoDroid", + description = "A companion repository to microG's installer.", + fingerprint = "862ED9F13A3981432BF86FE93D14596B381D75BE83A1D616E2D44A12654AD015" + ), + defaultRepository( + address = "https://releases.threema.ch/fdroid/repo", + name = "Threema Libre", + description = "The official repository for Threema Libre. R" + + "equires Threema Shop license. Threema Libre is an open" + + "-source messanger focused on security and privacy.", + fingerprint = "5734E753899B25775D90FE85362A49866E05AC4F83C05BEF5A92880D2910639E" + ), + defaultRepository( + address = "https://fdroid.getsession.org/fdroid/repo", + name = "Session", + description = "The official repository for Session. Session" + + " is an open-source messanger focused on security and privacy.", + fingerprint = "DB0E5297EB65CC22D6BD93C869943BDCFCB6A07DC69A48A0DD8C7BA698EC04E6" + ), + defaultRepository( + address = "https://www.cromite.org/fdroid/repo", + name = "Cromite", + description = "The official repository for Cromite. Cromite" + + " is a Chromium with ad blocking and enhanced privacy.", + fingerprint = "49F37E74DEE483DCA2B991334FB5A0200787430D0B5F9A783DD5F13695E9517B" + ), + defaultRepository( + address = "https://fdroid.twinhelix.com/fdroid/repo", + name = "TwinHelix", + description = "TwinHelix F-Droid Repository, used for Signa" + + "l-FOSS, an open-source fork of Signal Private Messenger.", + fingerprint = "7b03b0232209b21b10a30a63897d3c6bca4f58fe29bc3477e8e3d8cf8e304028" + ), + defaultRepository( + address = "https://fdroid.typeblog.net", + name = "PeterCxy's F-Droid", + description = "You have landed on PeterCxy's F-Droid repo. T" + + "o use this repository, please add the page's URL to your F-Droid client.", + fingerprint = "1a7e446c491c80bc2f83844a26387887990f97f2f379ae7b109679feae3dbc8c" + ), + defaultRepository( + address = "https://s2.spiritcroc.de/fdroid/repo", + name = "SpiritCroc.de", + description = "While some of my apps are available from" + + " the official F-Droid repository, I also maintain my" + + " own repository for a small selection of apps. These" + + " might be forks of other apps with only minor change" + + "s, or apps that are not published on the Play Store f" + + "or other reasons. In contrast to the official F-Droid" + + " repos, these might also include proprietary librarie" + + "s, e.g. for push notifications.", + fingerprint = "6612ade7e93174a589cf5ba26ed3ab28231a789640546c8f30375ef045bc9242" + ), + defaultRepository( + address = "https://s2.spiritcroc.de/testing/fdroid/repo", + name = "SpiritCroc.de Test Builds", + description = "SpiritCroc.de Test Builds", + fingerprint = "52d03f2fab785573bb295c7ab270695e3a1bdd2adc6a6de8713250b33f231225" + ), + defaultRepository( + address = "https://static.cryptomator.org/android/fdroid/repo", + name = "Cryptomator", + description = "No Description", + fingerprint = "f7c3ec3b0d588d3cb52983e9eb1a7421c93d4339a286398e71d7b651e8d8ecdd" + ), + defaultRepository( + address = "https://divestos.org/apks/unofficial/fdroid/repo", + name = "DivestOS Unofficial", + description = "This repository contains unofficial builds of open source apps" + + " that are not included in the other repos.", + fingerprint = "a18cdb92f40ebfbbf778a54fd12dbd74d90f1490cb9ef2cc6c7e682dd556855d" + ), + defaultRepository( + address = "https://cdn.kde.org/android/stable-releases/fdroid/repo", + name = "KDE Stables", + description = "This repository contains unofficial builds of open source apps" + + " that are not included in the other repos.", + fingerprint = "13784ba6c80ff4e2181e55c56f961eed5844cea16870d3b38d58780b85e1158f" + ), + defaultRepository( + address = "https://julianfairfax.gitlab.io/fdroid-repo/fdroid/repo", + name = "Julian's F-Droid Repo (Proton, GrapheneOS)", + description = "Repository for installing apps more easily.", + fingerprint = "83ABB548CAA6F311CE3591DDCA466B65213FD0541352502702B1908F0C84206D" + ), + defaultRepository( + address = "https://zimbelstern.eu/fdroid/repo", + name = "Zimbelstern's F-Droid repository", + description = "This is the official repository of apps from zimbelstern.eu," + + " to be used with F-Droid.", + fingerprint = "285158DECEF37CB8DE7C5AF14818ACBF4A9B1FBE63116758EFC267F971CA23AA" + ), + defaultRepository( + address = "https://app.simplex.chat/fdroid/repo", + name = "SimpleX Chat F-Droid", + description = "SimpleX Chat official F-Droid repository.", + fingerprint = "9F358FF284D1F71656A2BFAF0E005DEAE6AA14143720E089F11FF2DDCFEB01BA" + ) + ) + + val newlyAdded = listOf( + defaultRepository( + address = "https://repo.samourai.io/fdroid/repo", + name = "Samourai Wallet", + description = "Samourai Bitcoin Wallet official F-Droid repository.", + fingerprint = "5318AFA280284855CF5D0027AA54517769F461D735980B1FB0854CEAE8E072A5" + ), + defaultRepository( + address = "https://f-droid.monerujo.io/fdroid/repo", + name = "Monerujo Wallet", + description = "Monerujo Monero Wallet official F-Droid repository.", + fingerprint = "A82C68E14AF0AA6A2EC20E6B272EFF25E5A038F3F65884316E0F5E0D91E7B713" + ), + defaultRepository( + address = "https://fdroid.cakelabs.com/fdroid/repo", + name = "Cake Labs", + description = "Cake Labs official F-Droid repository for Cake Wallet and Monero.com", + fingerprint = "EA44EFAEE0B641EE7A032D397D5D976F9C4E5E1ED26E11C75702D064E55F8755" + ), + ) + } +} diff --git a/core/domain/src/main/kotlin/com/looker/core/domain/Syncable.kt b/core/domain/src/main/kotlin/com/looker/core/domain/Syncable.kt new file mode 100644 index 0000000..e11ab41 --- /dev/null +++ b/core/domain/src/main/kotlin/com/looker/core/domain/Syncable.kt @@ -0,0 +1,14 @@ +package com.leos.core.domain + +import com.leos.core.domain.newer.App +import com.leos.core.domain.newer.Repo + +interface Syncable { + + val repo: Repo + + suspend fun getApps(): List + + suspend fun getUpdatedRepo(): Repo + +} diff --git a/core/domain/src/main/kotlin/com/looker/core/domain/newer/App.kt b/core/domain/src/main/kotlin/com/looker/core/domain/newer/App.kt new file mode 100644 index 0000000..b762fee --- /dev/null +++ b/core/domain/src/main/kotlin/com/looker/core/domain/newer/App.kt @@ -0,0 +1,76 @@ +package com.leos.core.domain.newer + +import com.leos.core.common.PackageName + +data class App( + val repoId: Long, + val categories: List, + val links: Links, + val metadata: Metadata, + val author: Author, + val screenshots: Screenshots, + val graphics: Graphics, + val donation: Donation, + val preferredSigner: String = "", + val packages: List +) + +data class Author( + val name: String, + val email: String, + val web: String +) + +data class Donation( + val regularUrl: String? = null, + val bitcoinAddress: String? = null, + val flattrId: String? = null, + val liteCoinAddress: String? = null, + val openCollectiveId: String? = null, + val librePayId: String? = null, + val librePayAddress: String? = null +) + +data class Graphics( + val featureGraphic: String = "", + val promoGraphic: String = "", + val tvBanner: String = "", + val video: String = "" +) + +data class Links( + val changelog: String = "", + val issueTracker: String = "", + val sourceCode: String = "", + val translation: String = "", + val webSite: String = "" +) + +data class Metadata( + val name: String, + val packageName: PackageName, + val added: Long, + val description: String, + val icon: String, + val lastUpdated: Long, + val license: String, + val suggestedVersionCode: Long, + val suggestedVersionName: String, + val summary: String +) + +data class Screenshots( + val phone: List = emptyList(), + val sevenInch: List = emptyList(), + val tenInch: List = emptyList(), + val tv: List = emptyList(), + val wear: List = emptyList() +) + +data class AppMinimal( + val name: String, + val summary: String, + val icon: String +) + +fun App.minimal(): AppMinimal = AppMinimal(metadata.name, metadata.summary, metadata.icon) diff --git a/core/domain/src/main/kotlin/com/looker/core/domain/newer/DataFile.kt b/core/domain/src/main/kotlin/com/looker/core/domain/newer/DataFile.kt new file mode 100644 index 0000000..e38de2f --- /dev/null +++ b/core/domain/src/main/kotlin/com/looker/core/domain/newer/DataFile.kt @@ -0,0 +1,7 @@ +package com.leos.core.domain.newer + +interface DataFile { + val name: String + val hash: String + val size: Long +} diff --git a/core/domain/src/main/kotlin/com/looker/core/domain/newer/Package.kt b/core/domain/src/main/kotlin/com/looker/core/domain/newer/Package.kt new file mode 100644 index 0000000..85b5211 --- /dev/null +++ b/core/domain/src/main/kotlin/com/looker/core/domain/newer/Package.kt @@ -0,0 +1,41 @@ +package com.leos.core.domain.newer + +data class Package( + val installed: Boolean, + val added: Long, + val apk: ApkFile, + val platforms: Platforms, + val features: List, + val antiFeatures: List, + val manifest: Manifest, + val whatsNew: String +) + +data class ApkFile( + override val name: String, + override val hash: String, + override val size: Long +) : DataFile + +data class Manifest( + val versionCode: Long, + val versionName: String, + val usesSDKs: SDKs, + val signer: Set, + val permissions: List +) + +@JvmInline +value class Platforms(val value: List) + +data class SDKs( + val min: Int = -1, + val max: Int = -1, + val target: Int = -1 +) + +// means the max sdk here and any sdk value as -1 means not valid +data class Permission( + val name: String, + val sdKs: SDKs +) diff --git a/core/domain/src/main/kotlin/com/looker/core/domain/newer/Repo.kt b/core/domain/src/main/kotlin/com/looker/core/domain/newer/Repo.kt new file mode 100644 index 0000000..d9cc263 --- /dev/null +++ b/core/domain/src/main/kotlin/com/looker/core/domain/newer/Repo.kt @@ -0,0 +1,50 @@ +package com.leos.core.domain.newer + +data class Repo( + val id: Long, + val enabled: Boolean, + val address: String, + val name: String, + val description: String, + val fingerprint: String, + val authentication: Authentication, + val versionInfo: VersionInfo, + val mirrors: List, + val antiFeatures: List, + val categories: List +) { + val shouldAuthenticate = + authentication.username.isNotEmpty() && authentication.password.isNotEmpty() + + fun update(fingerprint: String, timestamp: Long? = null, etag: String? = null): Repo { + return copy( + fingerprint = fingerprint, + versionInfo = timestamp?.let { VersionInfo(timestamp = it, etag = etag) } ?: versionInfo + ) + } +} + +val String.isOnion: Boolean + get() = endsWith(".onion") + +data class AntiFeature( + val name: String, + val icon: String = "", + val description: String = "" +) + +data class Category( + val name: String, + val icon: String = "", + val description: String = "" +) + +data class Authentication( + val username: String, + val password: String +) + +data class VersionInfo( + val timestamp: Long, + val etag: String? +) diff --git a/core/network/.gitignore b/core/network/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/core/network/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/core/network/build.gradle.kts b/core/network/build.gradle.kts new file mode 100644 index 0000000..fe00407 --- /dev/null +++ b/core/network/build.gradle.kts @@ -0,0 +1,28 @@ +plugins { + alias(libs.plugins.looker.android.library) + alias(libs.plugins.looker.hilt) + alias(libs.plugins.looker.lint) +} + +android { + namespace = "com.leos.network" + + buildTypes { + release { + isMinifyEnabled = true + proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt")) + } + create("alpha") { + initWith(getByName("debug")) + isMinifyEnabled = true + } + } +} + +dependencies { + modules(Modules.coreCommon) + + implementation(libs.kotlinx.coroutines.android) + implementation(libs.ktor.core) + implementation(libs.ktor.okhttp) +} diff --git a/core/network/src/main/java/com/looker/network/Downloader.kt b/core/network/src/main/java/com/looker/network/Downloader.kt new file mode 100644 index 0000000..4f15c7c --- /dev/null +++ b/core/network/src/main/java/com/looker/network/Downloader.kt @@ -0,0 +1,32 @@ +package com.leos.network + +import com.leos.core.common.DataSize +import com.leos.core.common.signature.FileValidator +import com.leos.network.header.HeadersBuilder +import java.io.File +import java.net.Proxy + +interface Downloader { + + fun setProxy(proxy: Proxy) + + suspend fun headCall( + url: String, + headers: HeadersBuilder.() -> Unit = {} + ): NetworkResponse + + suspend fun downloadToFile( + url: String, + target: File, + validator: FileValidator? = null, + headers: HeadersBuilder.() -> Unit = {}, + block: ProgressListener? = null + ): NetworkResponse + + companion object { + internal const val CONNECTION_TIMEOUT = 30_000L + internal const val SOCKET_TIMEOUT = 15_000L + } +} + +typealias ProgressListener = suspend (bytesReceived: DataSize, contentLength: DataSize) -> Unit diff --git a/core/network/src/main/java/com/looker/network/KtorDownloader.kt b/core/network/src/main/java/com/looker/network/KtorDownloader.kt new file mode 100644 index 0000000..d3eb4f8 --- /dev/null +++ b/core/network/src/main/java/com/looker/network/KtorDownloader.kt @@ -0,0 +1,152 @@ +package com.leos.network + +import com.leos.core.common.DataSize +import com.leos.core.common.extension.exceptCancellation +import com.leos.core.common.extension.size +import com.leos.core.common.signature.FileValidator +import com.leos.core.common.signature.ValidationException +import com.leos.network.Downloader.Companion.CONNECTION_TIMEOUT +import com.leos.network.Downloader.Companion.SOCKET_TIMEOUT +import com.leos.network.header.HeadersBuilder +import com.leos.network.header.KtorHeadersBuilder +import io.ktor.client.HttpClient +import io.ktor.client.HttpClientConfig +import io.ktor.client.engine.okhttp.OkHttp +import io.ktor.client.engine.okhttp.OkHttpConfig +import io.ktor.client.network.sockets.ConnectTimeoutException +import io.ktor.client.network.sockets.SocketTimeoutException +import io.ktor.client.plugins.HttpTimeout +import io.ktor.client.plugins.onDownload +import io.ktor.client.request.head +import io.ktor.client.request.headers +import io.ktor.client.request.prepareGet +import io.ktor.client.request.request +import io.ktor.client.request.url +import io.ktor.client.statement.HttpResponse +import io.ktor.client.statement.bodyAsChannel +import io.ktor.http.HttpStatusCode +import io.ktor.http.URLParserException +import io.ktor.http.etag +import io.ktor.http.isSuccess +import io.ktor.http.lastModified +import io.ktor.utils.io.ByteReadChannel +import io.ktor.utils.io.core.ByteReadPacket +import io.ktor.utils.io.core.isEmpty +import io.ktor.utils.io.core.readBytes +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.isActive +import kotlinx.coroutines.withContext +import java.io.File +import java.io.IOException +import java.net.Proxy + +internal class KtorDownloader : Downloader { + + private var client = HttpClient(OkHttp) { timeoutConfig() } + set(newClient) { + field.close() + field = newClient + } + + override fun setProxy(proxy: Proxy) { + client = HttpClient(OkHttp) { + timeoutConfig() + engine { this.proxy = proxy } + } + } + + override suspend fun headCall( + url: String, + headers: HeadersBuilder.() -> Unit + ): NetworkResponse { + val headRequest = createRequest( + url = url, + headers = headers + ) + return client.head(headRequest).asNetworkResponse() + } + + override suspend fun downloadToFile( + url: String, + target: File, + validator: FileValidator?, + headers: HeadersBuilder.() -> Unit, + block: ProgressListener? + ): NetworkResponse { + return try { + val request = createRequest( + url = url, + headers = { + inRange(target.size) + headers() + }, + fileSize = target.size, + block = block + ) + client.prepareGet(request).execute { response -> + response.bodyAsChannel() saveTo target + validator?.validate(target) + response.asNetworkResponse() + } + } catch (e: SocketTimeoutException) { + NetworkResponse.Error.SocketTimeout(e) + } catch (e: ConnectTimeoutException) { + NetworkResponse.Error.ConnectionTimeout(e) + } catch (e: IOException) { + NetworkResponse.Error.IO(e) + } catch (e: ValidationException) { + target.delete() + NetworkResponse.Error.Validation(e) + } catch (e: Exception) { + e.exceptCancellation() + NetworkResponse.Error.Unknown(e) + } + } + + companion object { + + private fun HttpClientConfig.timeoutConfig() = install(HttpTimeout) { + connectTimeoutMillis = CONNECTION_TIMEOUT + socketTimeoutMillis = SOCKET_TIMEOUT + } + + private fun createRequest( + url: String, + headers: HeadersBuilder.() -> Unit, + fileSize: Long? = null, + block: ProgressListener? = null + ) = request { + url(url) + headers { + KtorHeadersBuilder(this).headers() + } + onDownload { read, total -> + if (block != null) { + block(DataSize(read + (fileSize ?: 0L)), DataSize(total + (fileSize ?: 0L))) + } + } + } + + private suspend infix fun ByteReadChannel.saveTo(target: File) = + withContext(Dispatchers.IO) { + while (!isClosedForRead && isActive) { + val packet = readRemaining(DEFAULT_BUFFER_SIZE.toLong()) + packet.appendTo(target) + } + } + + private suspend fun ByteReadPacket.appendTo(file: File) = withContext(Dispatchers.IO) { + while (!isEmpty && isActive) { + val bytes = readBytes() + file.appendBytes(bytes) + } + } + + private fun HttpResponse.asNetworkResponse(): NetworkResponse = + if (status.isSuccess() || status == HttpStatusCode.NotModified) { + NetworkResponse.Success(status.value, lastModified(), etag()) + } else { + NetworkResponse.Error.Http(status.value) + } + } +} diff --git a/core/network/src/main/java/com/looker/network/NetworkResponse.kt b/core/network/src/main/java/com/looker/network/NetworkResponse.kt new file mode 100644 index 0000000..c07158f --- /dev/null +++ b/core/network/src/main/java/com/looker/network/NetworkResponse.kt @@ -0,0 +1,28 @@ +package com.leos.network + +import com.leos.core.common.signature.ValidationException +import java.util.Date + +sealed interface NetworkResponse { + + sealed interface Error : NetworkResponse { + + data class ConnectionTimeout(val exception: Exception) : Error + + data class SocketTimeout(val exception: Exception) : Error + + data class IO(val exception: Exception) : Error + + data class Validation(val exception: ValidationException) : Error + + data class Unknown(val exception: Exception) : Error + + data class Http(val statusCode: Int) : Error + } + + data class Success( + val statusCode: Int, + val lastModified: Date?, + val etag: String? + ) : NetworkResponse +} diff --git a/core/network/src/main/java/com/looker/network/di/NetworkModule.kt b/core/network/src/main/java/com/looker/network/di/NetworkModule.kt new file mode 100644 index 0000000..e959189 --- /dev/null +++ b/core/network/src/main/java/com/looker/network/di/NetworkModule.kt @@ -0,0 +1,18 @@ +package com.leos.network.di + +import com.leos.network.Downloader +import com.leos.network.KtorDownloader +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import javax.inject.Singleton + +@Module +@InstallIn(SingletonComponent::class) +object NetworkModule { + + @Singleton + @Provides + fun provideDownloader(): Downloader = KtorDownloader() +} diff --git a/core/network/src/main/java/com/looker/network/header/HeadersBuilder.kt b/core/network/src/main/java/com/looker/network/header/HeadersBuilder.kt new file mode 100644 index 0000000..b13ae7a --- /dev/null +++ b/core/network/src/main/java/com/looker/network/header/HeadersBuilder.kt @@ -0,0 +1,20 @@ +package com.leos.network.header + +import java.util.Date + +interface HeadersBuilder { + + infix fun String.headsWith(value: Any?) + + fun etag(etagString: String) + + fun ifModifiedSince(date: Date) + + fun ifModifiedSince(date: String) + + fun authentication(username: String, password: String) + + fun authentication(base64: String) + + fun inRange(start: Number?, end: Number? = null) +} diff --git a/core/network/src/main/java/com/looker/network/header/KtorHeadersBuilder.kt b/core/network/src/main/java/com/looker/network/header/KtorHeadersBuilder.kt new file mode 100644 index 0000000..57e4c38 --- /dev/null +++ b/core/network/src/main/java/com/looker/network/header/KtorHeadersBuilder.kt @@ -0,0 +1,44 @@ +package com.leos.network.header + +import com.leos.core.common.extension.toFormattedString +import io.ktor.http.HttpHeaders +import io.ktor.util.encodeBase64 +import java.util.Date + +internal class KtorHeadersBuilder( + private val builder: io.ktor.http.HeadersBuilder +) : HeadersBuilder { + + override fun String.headsWith(value: Any?) { + if (value == null) return + with(builder) { + append(this@headsWith, value.toString()) + } + } + + override fun etag(etagString: String) { + HttpHeaders.ETag headsWith etagString + } + + override fun ifModifiedSince(date: Date) { + HttpHeaders.IfModifiedSince headsWith date.toFormattedString() + } + + override fun ifModifiedSince(date: String) { + HttpHeaders.IfModifiedSince headsWith date + } + + override fun authentication(username: String, password: String) { + HttpHeaders.Authorization headsWith "Basic ${"$username:$password".encodeBase64()}" + } + + override fun authentication(base64: String) { + HttpHeaders.Authorization headsWith base64 + } + + override fun inRange(start: Number?, end: Number?) { + if (start == null) return + val valueString = if (end != null) "bytes=$start-$end" else "bytes=$start-" + HttpHeaders.Range headsWith valueString + } +} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..8a72728 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,22 @@ +## For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html +# +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +# Default value: -Xmx1024m -XX:MaxPermSize=256m +# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 +# +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +#Sun Sep 11 10:12:12 IST 2022 +org.gradle.daemon=true +org.gradle.jvmargs=-Xmx6g -Dfile.encoding=UTF-8 -XX:+UseParallelGC -XX:MaxMetaspaceSize=1g +android.useAndroidX=true +org.gradle.parallel=true +android.nonFinalResIds=true +android.enableJetifier=false +android.enableR8.fullMode=true +android.nonTransitiveRClass=true +org.gradle.unsafe.configuration-cache=true +android.defaults.buildfeatures.buildconfig=false diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 0000000..0b8bac0 --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,111 @@ +# Taken from NIA sample app by Google +[versions] +androidDesugarJdkLibs = "2.0.4" +androidGradlePlugin = "8.2.0" +androidMaterial = "1.10.0" +androidxActivity = "1.8.2" +androidxAppCompat = "1.6.1" +androidxCore = "1.12.0" +androidxDataStore = "1.0.0" +androidxFragment = "1.6.2" +androidxEspresso = "3.5.1" +androidxLifecycle = "2.6.2" +androidxNavigation = "2.7.5" +androidxRecyclerView = "1.3.2" +androidxSqlite = "2.4.0" +androidxTestCore = "1.5.0" +androidxTestExt = "1.1.5" +androidxTestRules = "1.5.0" +androidxTestRunner = "1.5.2" +androidxWork = "2.9.0" +coil = "2.5.0" +fdroid = "0.1.1" +hilt = "2.49" +hiltExt = "1.1.0" +junit4 = "4.13.2" +jackson = "2.16.0" +kotlin = "1.9.21" +kotlinxCoroutines = "1.7.3" +kotlinxDatetime = "0.5.0" +kotlinxSerializationJson = "1.6.2" +ksp = "1.9.21-1.0.15" +ktlint = "12.0.3" +ktor = "2.3.7" +libsu = "5.2.2" +room = "2.6.1" +shizuku = "13.0.0" +image-viewer = "v1.0.1" + +[libraries] +android-desugarJdkLibs = { group = "com.android.tools", name = "desugar_jdk_libs", version.ref = "androidDesugarJdkLibs" } +android-material = { group = "com.google.android.material", name = "material", version.ref = "androidMaterial" } +androidx-activity-ktx = { group = "androidx.activity", name = "activity-ktx", version.ref = "androidxActivity" } +androidx-fragment-ktx = { group = "androidx.fragment", name = "fragment-ktx", version.ref = "androidxFragment" } +androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "androidxAppCompat" } +androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "androidxCore" } +androidx-dataStore-core = { group = "androidx.datastore", name = "datastore-preferences", version.ref = "androidxDataStore" } +androidx-dataStore-proto = { group = "androidx.datastore", name = "datastore", version.ref = "androidxDataStore" } +androidx-lifecycle-livedata-ktx = { group = "androidx.lifecycle", name = "lifecycle-livedata-ktx", version.ref = "androidxLifecycle" } +androidx-lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "androidxLifecycle" } +androidx-lifecycle-viewModel-ktx = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-ktx", version.ref = "androidxLifecycle" } +androidx-navigation-ktx = { group = "androidx.navigation", name = "navigation-ktx", version.ref = "androidxNavigation" } +androidx-navigation-testing = { group = "androidx.navigation", name = "navigation-testing", version.ref = "androidxNavigation" } +androidx-recyclerview = { group = "androidx.recyclerview", name = "recyclerview", version.ref = "androidxRecyclerView" } +androidx-sqlite-ktx = { group = "androidx.sqlite", name = "sqlite-ktx", version.ref = "androidxSqlite" } +androidx-test-core = { group = "androidx.test", name = "core", version.ref = "androidxTestCore" } +androidx-test-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "androidxEspresso" } +androidx-test-ext = { group = "androidx.test.ext", name = "junit-ktx", version.ref = "androidxTestExt" } +androidx-test-rules = { group = "androidx.test", name = "rules", version.ref = "androidxTestRules" } +androidx-test-runner = { group = "androidx.test", name = "runner", version.ref = "androidxTestRunner" } +androidx-work-ktx = { group = "androidx.work", name = "work-runtime-ktx", version.ref = "androidxWork" } +androidx-work-testing = { group = "androidx.work", name = "work-testing", version.ref = "androidxWork" } +coil-kt = { group = "io.coil-kt", name = "coil", version.ref = "coil" } +coil-kt-svg = { group = "io.coil-kt", name = "coil-svg", version.ref = "coil" } +fdroid-index = { group = "org.fdroid", name = "index", version.ref = "fdroid" } +fdroid-download = { group = "org.fdroid", name = "download", version.ref = "fdroid" } +hilt-android = { group = "com.google.dagger", name = "hilt-android", version.ref = "hilt" } +hilt-compiler = { group = "com.google.dagger", name = "hilt-android-compiler", version.ref = "hilt" } +hilt-ext-work = { group = "androidx.hilt", name = "hilt-work", version.ref = "hiltExt" } +hilt-ext-compiler = { group = "androidx.hilt", name = "hilt-compiler", version.ref = "hiltExt" } +hilt-android-testing = { group = "com.google.dagger", name = "hilt-android-testing", version.ref = "hilt" } +junit4 = { group = "junit", name = "junit", version.ref = "junit4" } +jackson-core = { group = "com.fasterxml.jackson.core", name = "jackson-core", version.ref = "jackson" } +kotlinx-coroutines-android = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-android", version.ref = "kotlinxCoroutines" } +kotlinx-coroutines-guava = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-guava", version.ref = "kotlinxCoroutines" } +kotlinx-coroutines-test = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-test", version.ref = "kotlinxCoroutines" } +kotlinx-datetime = { group = "org.jetbrains.kotlinx", name = "kotlinx-datetime", version.ref = "kotlinxDatetime" } +kotlinx-serialization-json = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version.ref = "kotlinxSerializationJson" } +ktor-core = { group = "io.ktor", name = "ktor-client-core", version.ref = "ktor" } +ktor-okhttp = { group = "io.ktor", name = "ktor-client-okhttp", version.ref = "ktor" } +libsu-core = { group = "com.github.topjohnwu.libsu", name = "core", version.ref = "libsu" } +room-compiler = { group = "androidx.room", name = "room-compiler", version.ref = "room" } +room-ktx = { group = "androidx.room", name = "room-ktx", version.ref = "room" } +room-runtime = { group = "androidx.room", name = "room-runtime", version.ref = "room" } +shizuku-api = { group = "dev.rikka.shizuku", name = "api", version.ref = "shizuku" } +shizuku-provider = { group = "dev.rikka.shizuku", name = "provider", version.ref = "shizuku" } +image-viewer = { module = "com.github.stfalcon-studio:StfalconImageViewer", version.ref = "image-viewer" } + +# Dependencies of the included build-logic +android-gradlePlugin = { group = "com.android.tools.build", name = "gradle", version.ref = "androidGradlePlugin" } +kotlin-gradlePlugin = { group = "org.jetbrains.kotlin", name = "kotlin-gradle-plugin", version.ref = "kotlin" } +kotlin-ktlint = { group = "org.jlleitschuh.gradle", name = "ktlint-gradle", version.ref = "ktlint" } +ksp-gradlePlugin = { group = "com.google.devtools.ksp", name = "com.google.devtools.ksp.gradle.plugin", version.ref = "ksp" } + +[plugins] +android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" } +android-library = { id = "com.android.library", version.ref = "androidGradlePlugin" } +android-test = { id = "com.android.test", version.ref = "androidGradlePlugin" } +hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" } +ktlint = { id = "org.jlleitschuh.gradle.ktlint", version.ref = "ktlint" } +kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } +kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } +ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } + +# Plugins defined by this project +looker-android-application = { id = "looker.android.application", version = "unspecified" } +looker-android-library = { id = "looker.android.library", version = "unspecified" } +looker-hilt = { id = "looker.hilt", version = "unspecified" } +looker-hilt-work = { id = "looker.hilt.work", version = "unspecified" } +looker-lint = { id = "looker.lint", version = "unspecified" } +looker-room = { id = "looker.room", version = "unspecified" } +looker-serialization = { id = "looker.serialization", version = "unspecified" } diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..d64cd4917707c1f8861d8cb53dd15194d4248596 GIT binary patch literal 43462 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 literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..1af9e09 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100644 index 0000000..1aa94a4 --- /dev/null +++ b/gradlew @@ -0,0 +1,249 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# 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. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..93e3f59 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,92 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/installer/.gitignore b/installer/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/installer/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/installer/build.gradle.kts b/installer/build.gradle.kts new file mode 100644 index 0000000..74731de --- /dev/null +++ b/installer/build.gradle.kts @@ -0,0 +1,30 @@ +plugins { + alias(libs.plugins.looker.android.library) + alias(libs.plugins.looker.hilt) + alias(libs.plugins.looker.lint) +} + +android { + namespace = "com.leos.installer" + + buildTypes { + release { + isMinifyEnabled = true + proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt")) + } + create("alpha") { + initWith(getByName("debug")) + isMinifyEnabled = true + } + } +} + +dependencies { + modules(Modules.coreCommon, Modules.coreDatastore) + + implementation(libs.kotlinx.coroutines.android) + implementation(libs.kotlinx.coroutines.guava) + implementation(libs.libsu.core) + implementation(libs.shizuku.api) + api(libs.shizuku.provider) +} diff --git a/installer/src/main/java/com/looker/installer/InstallManager.kt b/installer/src/main/java/com/looker/installer/InstallManager.kt new file mode 100644 index 0000000..9f00fb6 --- /dev/null +++ b/installer/src/main/java/com/looker/installer/InstallManager.kt @@ -0,0 +1,123 @@ +package com.leos.installer + +import android.content.Context +import com.leos.core.common.Constants +import com.leos.core.common.PackageName +import com.leos.core.common.extension.addAndCompute +import com.leos.core.common.extension.filter +import com.leos.core.common.extension.notificationManager +import com.leos.core.common.extension.updateAsMutable +import com.leos.core.datastore.SettingsRepository +import com.leos.core.datastore.get +import com.leos.core.datastore.model.InstallerType +import com.leos.installer.installers.Installer +import com.leos.installer.installers.LegacyInstaller +import com.leos.installer.installers.root.RootInstaller +import com.leos.installer.installers.session.SessionInstaller +import com.leos.installer.installers.shizuku.ShizukuInstaller +import com.leos.installer.model.InstallItem +import com.leos.installer.model.InstallState +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.channels.Channel +import kotlinx.coroutines.channels.consumeEach +import kotlinx.coroutines.coroutineScope +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.collectLatest +import kotlinx.coroutines.flow.update +import kotlinx.coroutines.launch +import kotlinx.coroutines.sync.Mutex +import kotlinx.coroutines.sync.withLock + +// TODO: Fix the stuck state, and other installer +class InstallManager( + private val context: Context, + settingsRepository: SettingsRepository +) { + + private val installItems = Channel() + private val uninstallItems = Channel() + + val state = MutableStateFlow>(emptyMap()) + + private var _installer: Installer? = null + set(value) { + field?.cleanup() + field = value + } + private val installer: Installer get() = _installer!! + + private val lock = Mutex() + private val installerPreference = settingsRepository.get { installerType } + + suspend operator fun invoke() = coroutineScope { + setupInstaller() + installer() + uninstaller() + } + + fun close() { + _installer = null + uninstallItems.close() + installItems.close() + } + + suspend infix fun install(installItem: InstallItem) { + installItems.send(installItem) + } + + suspend infix fun uninstall(packageName: PackageName) { + uninstallItems.send(packageName) + } + + infix fun remove(packageName: PackageName) { + updateState { remove(packageName) } + } + + private fun CoroutineScope.setupInstaller() = launch { + installerPreference.collectLatest(::setInstaller) + } + + private fun CoroutineScope.installer() = launch { + val currentQueue = mutableSetOf() + installItems.filter { item -> + currentQueue.addAndCompute(item.packageName.name) { isAdded -> + if (isAdded) { + updateState { put(item.packageName, InstallState.Pending) } + } + } + }.consumeEach { item -> + if (state.value.containsKey(item.packageName)) { + updateState { put(item.packageName, InstallState.Installing) } + val success = installer.install(item) + installer.cleanup() + updateState { put(item.packageName, success) } + context.notificationManager?.cancel( + "download-${item.packageName.name}", + Constants.NOTIFICATION_ID_DOWNLOADING + ) + currentQueue.remove(item.packageName.name) + } + } + } + + private fun CoroutineScope.uninstaller() = launch { + uninstallItems.consumeEach { + installer.uninstall(it) + } + } + + private suspend fun setInstaller(installerType: InstallerType) { + lock.withLock { + _installer = when (installerType) { + InstallerType.LEGACY -> LegacyInstaller(context) + InstallerType.SESSION -> SessionInstaller(context) + InstallerType.SHIZUKU -> ShizukuInstaller(context) + InstallerType.ROOT -> RootInstaller(context) + } + } + } + + private inline fun updateState(block: MutableMap.() -> Unit) { + state.update { it.updateAsMutable(block) } + } +} diff --git a/installer/src/main/java/com/looker/installer/InstallModule.kt b/installer/src/main/java/com/looker/installer/InstallModule.kt new file mode 100644 index 0000000..7858f48 --- /dev/null +++ b/installer/src/main/java/com/looker/installer/InstallModule.kt @@ -0,0 +1,34 @@ +package com.leos.installer + +import android.content.Context +import com.leos.core.datastore.SettingsRepository +import com.leos.installer.installers.root.RootPermissionHandler +import com.leos.installer.installers.shizuku.ShizukuPermissionHandler +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.android.qualifiers.ApplicationContext +import dagger.hilt.components.SingletonComponent +import javax.inject.Singleton + +@Module +@InstallIn(SingletonComponent::class) +object InstallModule { + + @Singleton + @Provides + fun providesInstaller( + @ApplicationContext context: Context, + settingsRepository: SettingsRepository + ): InstallManager = InstallManager(context, settingsRepository) + + @Singleton + @Provides + fun provideShizukuPermissionHandler( + @ApplicationContext context: Context + ): ShizukuPermissionHandler = ShizukuPermissionHandler(context) + + @Singleton + @Provides + fun provideRootPermissionHandler(): RootPermissionHandler = RootPermissionHandler() +} diff --git a/installer/src/main/java/com/looker/installer/installers/Installer.kt b/installer/src/main/java/com/looker/installer/installers/Installer.kt new file mode 100644 index 0000000..75e1c01 --- /dev/null +++ b/installer/src/main/java/com/looker/installer/installers/Installer.kt @@ -0,0 +1,14 @@ +package com.leos.installer.installers + +import com.leos.core.common.PackageName +import com.leos.installer.model.InstallItem +import com.leos.installer.model.InstallState + +interface Installer { + + suspend fun install(installItem: InstallItem): InstallState + + suspend fun uninstall(packageName: PackageName) + + fun cleanup() +} diff --git a/installer/src/main/java/com/looker/installer/installers/LegacyInstaller.kt b/installer/src/main/java/com/looker/installer/installers/LegacyInstaller.kt new file mode 100644 index 0000000..0fafdba --- /dev/null +++ b/installer/src/main/java/com/looker/installer/installers/LegacyInstaller.kt @@ -0,0 +1,70 @@ +package com.leos.installer.installers + +import android.content.Context +import android.content.Intent +import android.util.AndroidRuntimeException +import androidx.core.net.toUri +import com.leos.core.common.PackageName +import com.leos.core.common.SdkCheck +import com.leos.core.common.cache.Cache +import com.leos.installer.model.InstallItem +import com.leos.installer.model.InstallState +import kotlin.coroutines.resume +import kotlinx.coroutines.suspendCancellableCoroutine + +@Suppress("DEPRECATION") +internal class LegacyInstaller(private val context: Context) : Installer { + + companion object { + private const val APK_MIME = "application/vnd.android.package-archive" + } + + override suspend fun install( + installItem: InstallItem + ): InstallState = suspendCancellableCoroutine { cont -> + val (uri, flags) = if (SdkCheck.isNougat) { + Cache.getReleaseUri( + context, + installItem.installFileName + ) to Intent.FLAG_GRANT_READ_URI_PERMISSION + } else { + val file = Cache.getReleaseFile(context, installItem.installFileName) + file.toUri() to 0 + } + try { + context.startActivity( + Intent(Intent.ACTION_INSTALL_PACKAGE).setDataAndType(uri, APK_MIME).setFlags(flags) + ) + cont.resume(InstallState.Installed) + } catch (e: AndroidRuntimeException) { + context.startActivity( + Intent(Intent.ACTION_INSTALL_PACKAGE).setDataAndType(uri, APK_MIME) + .setFlags(flags or Intent.FLAG_ACTIVITY_NEW_TASK) + ) + cont.resume(InstallState.Installed) + } catch (e: Exception) { + cont.resume(InstallState.Failed) + } + } + + override suspend fun uninstall(packageName: PackageName) = + context.uninstallPackage(packageName) + + override fun cleanup() {} +} + +internal suspend fun Context.uninstallPackage(packageName: PackageName) = + suspendCancellableCoroutine { cont -> + try { + startActivity( + Intent( + Intent.ACTION_UNINSTALL_PACKAGE, + "package:${packageName.name}".toUri() + ).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + ) + cont.resume(Unit) + } catch (e: Exception) { + e.printStackTrace() + cont.resume(Unit) + } + } diff --git a/installer/src/main/java/com/looker/installer/installers/root/RootInstaller.kt b/installer/src/main/java/com/looker/installer/installers/root/RootInstaller.kt new file mode 100644 index 0000000..9a430c9 --- /dev/null +++ b/installer/src/main/java/com/looker/installer/installers/root/RootInstaller.kt @@ -0,0 +1,78 @@ +package com.leos.installer.installers.root + +import android.content.Context +import com.leos.core.common.PackageName +import com.leos.core.common.SdkCheck +import com.leos.core.common.cache.Cache +import com.leos.installer.installers.Installer +import com.leos.installer.installers.uninstallPackage +import com.leos.installer.model.InstallItem +import com.leos.installer.model.InstallState +import com.topjohnwu.superuser.Shell +import kotlinx.coroutines.suspendCancellableCoroutine +import java.io.File +import kotlin.coroutines.resume + +internal class RootInstaller(private val context: Context) : Installer { + + companion object { + private const val ROOT_INSTALL_PACKAGE = "cat %s | pm install --user %s -t -r -S %s" + private const val DELETE_PACKAGE = "%s rm %s" + + private val getCurrentUserState: String + get() = if (SdkCheck.isOreo) { + Shell.cmd("am get-current-user").exec().out[0] + } else { + Shell.cmd("dumpsys activity | grep -E \"mUserLru\"") + .exec().out[0].trim() + .removePrefix("mUserLru: [").removeSuffix("]") + } + + private val String.quote + get() = "\"${this.replace(Regex("""[\\$"`]""")) { c -> "\\${c.value}" }}\"" + + private val getUtilBoxPath: String + get() { + listOf("toybox", "busybox").forEach { + val shellResult = Shell.cmd("which $it").exec() + if (shellResult.out.isNotEmpty()) { + val utilBoxPath = shellResult.out.joinToString("") + if (utilBoxPath.isNotEmpty()) return utilBoxPath.quote + } + } + return "" + } + + private val File.install + get() = String.format( + ROOT_INSTALL_PACKAGE, + absolutePath, + getCurrentUserState, + length() + ) + + private val File.deletePackage + get() = String.format( + DELETE_PACKAGE, + getUtilBoxPath, + absolutePath.quote + ) + } + + override suspend fun install( + installItem: InstallItem + ): InstallState = suspendCancellableCoroutine { cont -> + val releaseFile = Cache.getReleaseFile(context, installItem.installFileName) + Shell.cmd(releaseFile.install).submit { shellResult -> + val result = if (shellResult.isSuccess) InstallState.Installed + else InstallState.Failed + cont.resume(result) + Shell.cmd(releaseFile.deletePackage).submit() + } + } + + override suspend fun uninstall(packageName: PackageName) = + context.uninstallPackage(packageName) + + override fun cleanup() {} +} diff --git a/installer/src/main/java/com/looker/installer/installers/root/RootPermissionHandler.kt b/installer/src/main/java/com/looker/installer/installers/root/RootPermissionHandler.kt new file mode 100644 index 0000000..9923497 --- /dev/null +++ b/installer/src/main/java/com/looker/installer/installers/root/RootPermissionHandler.kt @@ -0,0 +1,12 @@ +package com.leos.installer.installers.root + +import com.topjohnwu.superuser.Shell + +class RootPermissionHandler { + + val isGranted: Boolean + get() { + Shell.getCachedShell() ?: Shell.getShell() + return Shell.isAppGrantedRoot() ?: false + } +} diff --git a/installer/src/main/java/com/looker/installer/installers/session/SessionInstaller.kt b/installer/src/main/java/com/looker/installer/installers/session/SessionInstaller.kt new file mode 100644 index 0000000..3255fd0 --- /dev/null +++ b/installer/src/main/java/com/looker/installer/installers/session/SessionInstaller.kt @@ -0,0 +1,108 @@ +package com.leos.installer.installers.session + +import android.annotation.SuppressLint +import android.app.PendingIntent +import android.content.Context +import android.content.Intent +import android.content.pm.PackageInstaller +import android.os.Build +import android.os.Handler +import android.os.Looper +import android.util.Log +import com.leos.core.common.PackageName +import com.leos.core.common.SdkCheck +import com.leos.core.common.cache.Cache +import com.leos.core.common.log +import com.leos.core.common.sdkAbove +import com.leos.installer.installers.Installer +import com.leos.installer.model.InstallItem +import com.leos.installer.model.InstallState +import kotlinx.coroutines.suspendCancellableCoroutine +import kotlin.coroutines.resume + +internal class SessionInstaller(private val context: Context) : Installer { + + private val installer = context.packageManager.packageInstaller + private val intent = Intent(context, SessionInstallerService::class.java) + + companion object { + private var installerCallbacks: PackageInstaller.SessionCallback? = null + private val flags = if (SdkCheck.isSnowCake) PendingIntent.FLAG_MUTABLE else 0 + private val sessionParams = + PackageInstaller.SessionParams(PackageInstaller.SessionParams.MODE_FULL_INSTALL).apply { + sdkAbove(sdk = Build.VERSION_CODES.S) { + setRequireUserAction(PackageInstaller.SessionParams.USER_ACTION_NOT_REQUIRED) + } + } + } + + override suspend fun install( + installItem: InstallItem + ): InstallState = suspendCancellableCoroutine { cont -> + val cacheFile = Cache.getReleaseFile(context, installItem.installFileName) + val id = installer.createSession(sessionParams) + val installerCallback = object : PackageInstaller.SessionCallback() { + override fun onCreated(sessionId: Int) {} + override fun onBadgingChanged(sessionId: Int) {} + override fun onActiveChanged(sessionId: Int, active: Boolean) {} + override fun onProgressChanged(sessionId: Int, progress: Float) {} + override fun onFinished(sessionId: Int, success: Boolean) { + if (sessionId == id) cont.resume(InstallState.Installed) + } + } + installerCallbacks = installerCallback + + installer.registerSessionCallback( + installerCallbacks!!, + Handler(Looper.getMainLooper()) + ) + + val session = installer.openSession(id) + + session.use { activeSession -> + val sizeBytes = cacheFile.length() + cacheFile.inputStream().use { fileStream -> + activeSession.openWrite(cacheFile.name, 0, sizeBytes).use { outputStream -> + if (cont.isActive) { + fileStream.copyTo(outputStream) + activeSession.fsync(outputStream) + } + } + } + + val pendingIntent = PendingIntent.getService(context, id, intent, flags) + + if (cont.isActive) activeSession.commit(pendingIntent.intentSender) + } + + cont.invokeOnCancellation { + try { + installer.abandonSession(id) + } catch (e: SecurityException) { + e.printStackTrace() + } + } + } + + @SuppressLint("MissingPermission") + override suspend fun uninstall(packageName: PackageName) = + suspendCancellableCoroutine { cont -> + intent.putExtra(SessionInstallerService.ACTION_UNINSTALL, true) + val pendingIntent = PendingIntent.getService(context, -1, intent, flags) + + installer.uninstall(packageName.name, pendingIntent.intentSender) + cont.resume(Unit) + } + + override fun cleanup() { + installerCallbacks?.let { + installer.unregisterSessionCallback(it) + installerCallbacks = null + } + try { + installer.mySessions.forEach { installer.abandonSession(it.sessionId) } + } catch (e: SecurityException) { + log(e.message, type = Log.ERROR) + } + } +} diff --git a/installer/src/main/java/com/looker/installer/installers/session/SessionInstallerService.kt b/installer/src/main/java/com/looker/installer/installers/session/SessionInstallerService.kt new file mode 100644 index 0000000..7ab6afe --- /dev/null +++ b/installer/src/main/java/com/looker/installer/installers/session/SessionInstallerService.kt @@ -0,0 +1,123 @@ +package com.leos.installer.installers.session + +import android.app.Service +import android.content.Intent +import android.content.pm.PackageInstaller +import android.content.pm.PackageManager +import android.os.IBinder +import android.view.ContextThemeWrapper +import androidx.core.app.NotificationCompat +import com.leos.core.common.Constants.NOTIFICATION_CHANNEL_DOWNLOADING +import com.leos.core.common.Constants.NOTIFICATION_ID_DOWNLOADING +import com.leos.core.common.R as CommonR +import com.leos.core.common.extension.notificationManager + +class SessionInstallerService : Service() { + companion object { + const val ACTION_UNINSTALL = "action_uninstall" + } + + override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int { + val status = intent.getIntExtra(PackageInstaller.EXTRA_STATUS, -1) + + if (status == PackageInstaller.STATUS_PENDING_USER_ACTION) { + // prompts user to enable unknown source + val promptIntent: Intent? = intent.getParcelableExtra(Intent.EXTRA_INTENT) + + promptIntent?.let { + it.putExtra(Intent.EXTRA_NOT_UNKNOWN_SOURCE, true) + it.putExtra(Intent.EXTRA_INSTALLER_PACKAGE_NAME, "com.android.vending") + it.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + + startActivity(it) + } + } else { + notifyStatus(intent) + } + + stopSelf() + return START_NOT_STICKY + } + + override fun onBind(intent: Intent?): IBinder? = null + + /** + * Notifies user of installer outcome. + */ + private fun notifyStatus(intent: Intent) { + // unpack from intent + val status = intent.getIntExtra(PackageInstaller.EXTRA_STATUS, -1) + val name = intent.getStringExtra(PackageInstaller.EXTRA_PACKAGE_NAME) + val message = intent.getStringExtra(PackageInstaller.EXTRA_STATUS_MESSAGE) + val isUninstall = intent.getBooleanExtra(ACTION_UNINSTALL, false) + + // get application name for notifications + val appLabel = try { + if (name != null) { + packageManager.getApplicationLabel( + packageManager.getApplicationInfo( + name, + PackageManager.GET_META_DATA + ) + ) + } else { + null + } + } catch (_: Exception) { + null + } + + val notificationTag = "download-$name" + + // start building + val builder = NotificationCompat + .Builder(this, NOTIFICATION_CHANNEL_DOWNLOADING) + .setAutoCancel(true) + + when (status) { + PackageInstaller.STATUS_SUCCESS -> { + if (isUninstall) { + // remove any notification for this app + notificationManager?.cancel(notificationTag, NOTIFICATION_ID_DOWNLOADING) + } else { + val notification = builder + .setSmallIcon(CommonR.drawable.ic_check) + .setColor( + ContextThemeWrapper(this, CommonR.style.Theme_Main_Light) + .getColor(CommonR.color.md_theme_light_primaryContainer) + ) + .setContentTitle("Installed") + .setContentText(appLabel) + .build() + notificationManager?.notify( + notificationTag, + NOTIFICATION_ID_DOWNLOADING, + notification + ) + } + } + + PackageInstaller.STATUS_FAILURE_ABORTED -> { + // do nothing if user cancels + } + + else -> { + // problem occurred when installing/uninstalling package + val notification = builder + .setSmallIcon(android.R.drawable.stat_notify_error) + .setColor( + ContextThemeWrapper(this, CommonR.style.Theme_Main_Light) + .getColor(CommonR.color.md_theme_dark_errorContainer) + ) + .setContentTitle("Unknown Error") + .setContentText(message) + .build() + notificationManager?.notify( + notificationTag, + NOTIFICATION_ID_DOWNLOADING, + notification + ) + } + } + } +} diff --git a/installer/src/main/java/com/looker/installer/installers/shizuku/ShizukuInstaller.kt b/installer/src/main/java/com/looker/installer/installers/shizuku/ShizukuInstaller.kt new file mode 100644 index 0000000..a95a594 --- /dev/null +++ b/installer/src/main/java/com/looker/installer/installers/shizuku/ShizukuInstaller.kt @@ -0,0 +1,91 @@ +package com.leos.installer.installers.shizuku + +import android.content.Context +import com.leos.core.common.PackageName +import com.leos.core.common.SdkCheck +import com.leos.core.common.cache.Cache +import com.leos.installer.installers.Installer +import com.leos.installer.installers.uninstallPackage +import com.leos.installer.model.InstallItem +import com.leos.installer.model.InstallState +import java.io.BufferedReader +import java.io.InputStream +import kotlin.coroutines.resume +import kotlinx.coroutines.suspendCancellableCoroutine +import rikka.shizuku.Shizuku + +@Suppress("DEPRECATION") +internal class ShizukuInstaller(private val context: Context) : Installer { + + companion object { + private val SESSION_ID_REGEX = Regex("(?<=\\[).+?(?=])") + } + + override suspend fun install( + installItem: InstallItem + ): InstallState = suspendCancellableCoroutine { cont -> + var sessionId: String? = null + val uri = Cache.getReleaseUri(context, installItem.installFileName) + val releaseFileLength = + Cache.getReleaseFile(context, installItem.installFileName).length() + val packageName = installItem.packageName.name + try { + val size = + releaseFileLength.takeIf { it >= 0 } ?: run { + cont.cancel() + throw IllegalStateException() + } + if (cont.isCompleted) return@suspendCancellableCoroutine + context.contentResolver.openInputStream(uri).use { + val createCommand = + if (SdkCheck.isNougat) { + "pm install-create --user current -i $packageName -S $size" + } else { + "pm install-create -i $packageName -S $size" + } + val createResult = exec(createCommand) + sessionId = SESSION_ID_REGEX.find(createResult.out)?.value + ?: run { + cont.cancel() + throw RuntimeException("Failed to create install session") + } + if (cont.isCompleted) return@suspendCancellableCoroutine + + val writeResult = exec("pm install-write -S $size $sessionId base -", it) + if (writeResult.resultCode != 0) { + cont.cancel() + throw RuntimeException("Failed to write APK to session $sessionId") + } + if (cont.isCompleted) return@suspendCancellableCoroutine + + val commitResult = exec("pm install-commit $sessionId") + if (commitResult.resultCode != 0) { + cont.cancel() + throw RuntimeException("Failed to commit install session $sessionId") + } + if (cont.isCompleted) return@suspendCancellableCoroutine + cont.resume(InstallState.Installed) + } + } catch (e: Exception) { + if (sessionId != null) exec("pm install-abandon $sessionId") + cont.resume(InstallState.Failed) + } + } + + override suspend fun uninstall(packageName: PackageName) = + context.uninstallPackage(packageName) + + override fun cleanup() {} + + private data class ShellResult(val resultCode: Int, val out: String) + + private fun exec(command: String, stdin: InputStream? = null): ShellResult { + val process = Shizuku.newProcess(arrayOf("sh", "-c", command), null, null) + if (stdin != null) { + process.outputStream.use { stdin.copyTo(it) } + } + val output = process.inputStream.bufferedReader().use(BufferedReader::readText) + val resultCode = process.waitFor() + return ShellResult(resultCode, output) + } +} diff --git a/installer/src/main/java/com/looker/installer/installers/shizuku/ShizukuPermissionHandler.kt b/installer/src/main/java/com/looker/installer/installers/shizuku/ShizukuPermissionHandler.kt new file mode 100644 index 0000000..166de21 --- /dev/null +++ b/installer/src/main/java/com/looker/installer/installers/shizuku/ShizukuPermissionHandler.kt @@ -0,0 +1,81 @@ +package com.leos.installer.installers.shizuku + +import android.content.Context +import android.content.pm.PackageManager +import com.leos.core.common.extension.getPackageInfoCompat +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.channels.awaitClose +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.callbackFlow +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.conflate +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.flowOf +import kotlinx.coroutines.flow.flowOn +import rikka.shizuku.Shizuku +import rikka.shizuku.ShizukuProvider + +class ShizukuPermissionHandler( + private val context: Context +) { + + fun isInstalled(): Boolean = + context.packageManager.getPackageInfoCompat(ShizukuProvider.MANAGER_APPLICATION_ID) != null + + val isBinderAlive: Flow = callbackFlow { + send(Shizuku.pingBinder()) + val listener = Shizuku.OnBinderReceivedListener { + trySend(true) + } + Shizuku.addBinderReceivedListener(listener) + val deadListener = Shizuku.OnBinderDeadListener { + trySend(false) + } + Shizuku.addBinderDeadListener(deadListener) + awaitClose { + Shizuku.removeBinderReceivedListener(listener) + Shizuku.removeBinderDeadListener(deadListener) + } + }.flowOn(Dispatchers.Default).distinctUntilChanged().conflate() + + private val isGranted: Flow = callbackFlow { + if (Shizuku.pingBinder()) { + send(Shizuku.checkSelfPermission() == PackageManager.PERMISSION_GRANTED) + } else { + send(false) + } + val listener = Shizuku.OnRequestPermissionResultListener { requestCode, grantResult -> + if (requestCode == SHIZUKU_PERMISSION_REQUEST_CODE) { + trySend(grantResult == PackageManager.PERMISSION_GRANTED) + } + } + Shizuku.addRequestPermissionResultListener(listener) + awaitClose { + Shizuku.removeRequestPermissionResultListener(listener) + } + }.flowOn(Dispatchers.Default).distinctUntilChanged().conflate() + + fun requestPermission() { + if (Shizuku.shouldShowRequestPermissionRationale()) { + } + Shizuku.requestPermission(SHIZUKU_PERMISSION_REQUEST_CODE) + } + + val state: Flow = combine( + flowOf(isInstalled()), + isBinderAlive, + isGranted + ) { isInstalled, isAlive, isGranted -> + State(isGranted, isAlive, isInstalled) + }.distinctUntilChanged() + + companion object { + private const val SHIZUKU_PERMISSION_REQUEST_CODE = 87263 + } + + data class State( + val isPermissionGranted: Boolean, + val isAlive: Boolean, + val isInstalled: Boolean + ) +} diff --git a/installer/src/main/java/com/looker/installer/model/InstallItem.kt b/installer/src/main/java/com/looker/installer/model/InstallItem.kt new file mode 100644 index 0000000..07a42f6 --- /dev/null +++ b/installer/src/main/java/com/looker/installer/model/InstallItem.kt @@ -0,0 +1,11 @@ +package com.leos.installer.model + +import com.leos.core.common.PackageName +import com.leos.core.common.toPackageName + +data class InstallItem( + val packageName: PackageName, + val installFileName: String +) + +infix fun String.installFrom(fileName: String) = InstallItem(this.toPackageName(), fileName) diff --git a/installer/src/main/java/com/looker/installer/model/InstallState.kt b/installer/src/main/java/com/looker/installer/model/InstallState.kt new file mode 100644 index 0000000..517f983 --- /dev/null +++ b/installer/src/main/java/com/looker/installer/model/InstallState.kt @@ -0,0 +1,6 @@ +package com.leos.installer.model + +enum class InstallState { Failed, Pending, Installing, Installed } + +inline val InstallState.isCancellable: Boolean + get() = this == InstallState.Pending diff --git a/metadata/en-US/changelogs/42.txt b/metadata/en-US/changelogs/42.txt new file mode 100644 index 0000000..d247e29 --- /dev/null +++ b/metadata/en-US/changelogs/42.txt @@ -0,0 +1,6 @@ +- More of Material Design 3 +- Fix: Root and default installer +- Fix: Delete Cached File After Uninstall +- Fix: Crash on pressing download when offline +- Update translations of over 17 languages +- Many small fixes and tweaks… diff --git a/metadata/en-US/changelogs/43.txt b/metadata/en-US/changelogs/43.txt new file mode 100644 index 0000000..e386bc0 --- /dev/null +++ b/metadata/en-US/changelogs/43.txt @@ -0,0 +1,4 @@ +- Fix: Screenshot placeholder icon +- Fix: Soft crash when starting AppDetails +- Fix: Run only one instance of root installer +- Fix: Root installer diff --git a/metadata/en-US/changelogs/47.txt b/metadata/en-US/changelogs/47.txt new file mode 100644 index 0000000..13467a8 --- /dev/null +++ b/metadata/en-US/changelogs/47.txt @@ -0,0 +1,12 @@ +- Add Shizuku Installer +- Bump Minimum Android Version to Android 6 +- Fix "Show Less" (#15) +- Localized Date Format (#24) +- Remove UnifiedPush Repository (#23) +- New App Info Header +- Top Bar is rounded +- Notification will open app page +- Lightweight Downloader +- Revert Cache to save data +- Drop Edge-to-Edge Support (#27) +- Some minor improvements \ No newline at end of file diff --git a/metadata/en-US/changelogs/48.txt b/metadata/en-US/changelogs/48.txt new file mode 100644 index 0000000..9b29ee8 --- /dev/null +++ b/metadata/en-US/changelogs/48.txt @@ -0,0 +1,5 @@ +- New Settings backend (Your old settings would be erased) +- Add option to add Cleanup duration +- Fixed blank screenshots +- Fixed crash on the bottom of the screen +- Fix `Installed` notification \ No newline at end of file diff --git a/metadata/en-US/changelogs/49.txt b/metadata/en-US/changelogs/49.txt new file mode 100644 index 0000000..2d3fc00 --- /dev/null +++ b/metadata/en-US/changelogs/49.txt @@ -0,0 +1,2 @@ +- Fix weird icon transformation #83 +- Fix crash if the repository provides a corrupt index #77 \ No newline at end of file diff --git a/metadata/en-US/changelogs/50.txt b/metadata/en-US/changelogs/50.txt new file mode 100644 index 0000000..b87b4f3 --- /dev/null +++ b/metadata/en-US/changelogs/50.txt @@ -0,0 +1,50 @@ +- App needs to be reinstalled (This is totally my fault sorry) +- Android 13 is now supported +- Add Android 13 Themed icon +- Fix some animations and other UI/UX changes +- Fix cache cleanup +- Fix navigation bar color +- Replace "Available" -> "Explore" +- Added "Source code" to `Links` section +- Fix Root/Shizuku Installer (Shizuku Installer is really buggy for now) +- Fix the random crash on returning to app +- Remove Alefvanoon repository +- Fix double prompt for installation +- App Header will highlight if the app needs to be updated +- Add "Scroll to Top" button +- Added Languages: + Bengali + Catalan + Croatian + Galician + Hebrew + Japanese + Lithuanian + Odia + Swedish +- Updated Languages: + Arabic + Bulgarian + Chinese (Simplified) + Chinese (Traditional) + Czech + Finnish + French + Galician + German + Greek + Hindi + Hungarian + Italian + Norwegian Bokmal + Persian + Polish + Portuguese + Portuguese (Brazil) + Russian + Spanish + Tagalog + Turkish + Ukrainian +- Update dependencies +- Cleanup some code \ No newline at end of file diff --git a/metadata/en-US/changelogs/51.txt b/metadata/en-US/changelogs/51.txt new file mode 100644 index 0000000..ff1062f --- /dev/null +++ b/metadata/en-US/changelogs/51.txt @@ -0,0 +1,6 @@ +- Scroll to Top will scroll smoothly +- Some languages have been updated +- + Odia + Japanese + Croatian \ No newline at end of file diff --git a/metadata/en-US/changelogs/52.txt b/metadata/en-US/changelogs/52.txt new file mode 100644 index 0000000..7b62470 --- /dev/null +++ b/metadata/en-US/changelogs/52.txt @@ -0,0 +1,34 @@ +## UI Changes +- Add: Material You support +- Add: Edge-to-Edge support (Android 11+) +- Add: Snackbar if the address is not valid +- Add: Snackbar to represent Internet Connectivity +- Add: Indicator for installed apps +- Add: Favourites list [In menu] +- Add: App bar controls +- Add: New Error icon +- Improve: `Repository Details` page +- Improve: `Repository List` page +- Fix: Theme Changing +- Fix: App bar not scrolling +- Fix: Navigation bar color + +## Core +- Add: Favourites list in menu +- Add: `Never` cleanup option +- Add: Session and FluffyChat Repository +- Remove: Some dead repositories +- Remove: Support for legacy `index.xml` (For security purposes) +- Fix: Many installer bug +- Fix: App not visible in Android TV +- Fix: A very annoying random crash +- Fix: Shizuku and Root Installer + +## Misc +- Better Install notification icon +- Click App Icon to switch Author and Package name +- Use legacy installer on first time MiUi users +- Shizuku dropped support for pre-Android 11 +- Fix: Install dialog not visible when notification is clicked +- Fix: Crash on bad repository address +- Fix: No back button in settings page \ No newline at end of file diff --git a/metadata/en-US/changelogs/53.txt b/metadata/en-US/changelogs/53.txt new file mode 100644 index 0000000..d248665 --- /dev/null +++ b/metadata/en-US/changelogs/53.txt @@ -0,0 +1,5 @@ +- Shizuku is not deprecated on pre-Android 11 +- Fix icons for many apps +- Some UI changes to repository page +- Fix a weird behaviour caused by Material You switch +- Check out old changelog at - https://github.com/Iamlooker/Droid-ify/releases/tag/v0.5.2 \ No newline at end of file diff --git a/metadata/en-US/changelogs/54.txt b/metadata/en-US/changelogs/54.txt new file mode 100644 index 0000000..5a63190 --- /dev/null +++ b/metadata/en-US/changelogs/54.txt @@ -0,0 +1,3 @@ +- Fix the crash when going back from Settings page +- Allow Shizuku on Android 7+ +- Some UI improvements to Repository page \ No newline at end of file diff --git a/metadata/en-US/changelogs/55.txt b/metadata/en-US/changelogs/55.txt new file mode 100644 index 0000000..5a63190 --- /dev/null +++ b/metadata/en-US/changelogs/55.txt @@ -0,0 +1,3 @@ +- Fix the crash when going back from Settings page +- Allow Shizuku on Android 7+ +- Some UI improvements to Repository page \ No newline at end of file diff --git a/metadata/en-US/changelogs/56.txt b/metadata/en-US/changelogs/56.txt new file mode 100644 index 0000000..d0a5a64 --- /dev/null +++ b/metadata/en-US/changelogs/56.txt @@ -0,0 +1,10 @@ +Add: Update All button +Improve: Re-wrote installer +Improve: Auto-Install Apps if possible +Improve: Allow user to remove `Tap to Install` +Improve: Color-logic in Material You +Improve: Favourites Icon +Fix: Sort-order issue +Fix: Skipping installation with root installer +Fix: Summary in Favourites List +Fix: Memory Leak \ No newline at end of file diff --git a/metadata/en-US/changelogs/57.txt b/metadata/en-US/changelogs/57.txt new file mode 100644 index 0000000..c435914 --- /dev/null +++ b/metadata/en-US/changelogs/57.txt @@ -0,0 +1,14 @@ +### Improvements: +- Reduce app size a little +- Allow removal of `Tap to Install` notification +- Remove Large header +- Better downloader logic +- Better State handling +- Improve Shizuku and Root Installer + +### Fixes: +- Background crash due to session installer +- Redundant `Update All` button visibility +- Overlapping buttons +- Language changelist +- Empty Notifications \ No newline at end of file diff --git a/metadata/en-US/changelogs/58.txt b/metadata/en-US/changelogs/58.txt new file mode 100644 index 0000000..b6ad10c --- /dev/null +++ b/metadata/en-US/changelogs/58.txt @@ -0,0 +1,14 @@ +## New +- Downloader Implementation +- Material You Switches +- Need restart after setting `Proxy` +- Padding for Floating Button +- Localized Metadata for apps (Thanks @BLumia) + +## Improved +- Enabled Repositories at top +- Responsive "Update All" button +- Live Installer change +- Faster page opening + +- Many more changes which I forgot \ No newline at end of file diff --git a/metadata/en-US/changelogs/581.txt b/metadata/en-US/changelogs/581.txt new file mode 100644 index 0000000..2d2cfbf --- /dev/null +++ b/metadata/en-US/changelogs/581.txt @@ -0,0 +1,15 @@ +## New +- Downloader Implementation +- Material You Switches +- Need restart after setting `Proxy` +- Padding for Floating Button +- Localized Metadata for apps (Thanks @BLumia) + +## Improved +- Favourites List Crash +- Enabled Repositories at top +- Responsive "Update All" button +- Live Installer change +- Faster page opening + +- Many more changes which I forgot \ No newline at end of file diff --git a/metadata/en-US/changelogs/582.txt b/metadata/en-US/changelogs/582.txt new file mode 100644 index 0000000..02697d3 --- /dev/null +++ b/metadata/en-US/changelogs/582.txt @@ -0,0 +1,5 @@ +## Fixes +- Category Resetting on page change +- Proxy Change Causing Crash +- Update All Crash +- Android 7 Crash \ No newline at end of file diff --git a/metadata/en-US/changelogs/583.txt b/metadata/en-US/changelogs/583.txt new file mode 100644 index 0000000..fb9e7a5 --- /dev/null +++ b/metadata/en-US/changelogs/583.txt @@ -0,0 +1,13 @@ +## Improvements + +- Brand new Shizuku Permission Handling +- Display "NSFW" Anti-feature +- Faster APK validation +- Better download-state handling +- Optimized Layout for Arabic languages + +## Fixes + +- App not installing ** + +** Apps were not installing after 20 seconds of wait. \ No newline at end of file diff --git a/metadata/en-US/changelogs/584.txt b/metadata/en-US/changelogs/584.txt new file mode 100644 index 0000000..1332316 --- /dev/null +++ b/metadata/en-US/changelogs/584.txt @@ -0,0 +1,15 @@ +Improvements: +- Shizuku permission handling +- User detection with root +- Add setting to block swiping between pages +- Update Droid-ify last in list +- Misc. changes + +Fixes: +- Sui permission handling +- Category clickable area +- Cleanup crash +- Chinese translation selection +- Crash on screenshot +- Cleanup interval +- False install state on different pages \ No newline at end of file diff --git a/metadata/en-US/changelogs/590.txt b/metadata/en-US/changelogs/590.txt new file mode 100644 index 0000000..25f4e4a --- /dev/null +++ b/metadata/en-US/changelogs/590.txt @@ -0,0 +1,16 @@ +Brand New Sharing Feel: +- Universal sharing with `droidify.eu.org` +- New missing app page +- Add missing repository from the detail page + +Improvements: +- Add back icon to screenshot +- Improve database performance +- Improve settings page performance + +Fixes: +- Crash when validating +- Crash after download cancellation +- Crash related to Shizuku +- Fix setting switches +- Fix calls for empty icons \ No newline at end of file diff --git a/metadata/en-US/changelogs/591.txt b/metadata/en-US/changelogs/591.txt new file mode 100644 index 0000000..479993b --- /dev/null +++ b/metadata/en-US/changelogs/591.txt @@ -0,0 +1,16 @@ +Improvements: +- Improve icons based on usage +- Replace screenshot placeholder +- Improvements to title of link items +- Add ability to toggle switch by clicking the whole item +- Improve background updates +- Load icons from different mirrors +- Cleanup after changing proxy + +Fixes: +- Monet theme switch +- Screenshot Size +- Fix Tor/Onion Repositories +- Fix Shizuku permission issue +- Fix Installer reverting indefinitely +- Fix calls to tor repositories \ No newline at end of file diff --git a/metadata/en-US/changelogs/592.txt b/metadata/en-US/changelogs/592.txt new file mode 100644 index 0000000..6cb7a88 --- /dev/null +++ b/metadata/en-US/changelogs/592.txt @@ -0,0 +1,18 @@ +Installer Improvements: +- You can now remove apps from install queue +- Cleanup some memory after using installer + +Improvements: +- Add initial support for Android 14 +- Added 11 New Repositories +- Pressing back will clear categories before exiting +- Faster Icon/Screenshot loading +- Faster Selection of Download File + +Fixes: +- Repeated Loading of images +- Install button not working one second click +- Crashes with syncing +- Crashes related to system service +- Improve performance of App Detail Screen +- Improve performance of Home Screen \ No newline at end of file diff --git a/metadata/en-US/changelogs/593.txt b/metadata/en-US/changelogs/593.txt new file mode 100644 index 0000000..ded8a56 --- /dev/null +++ b/metadata/en-US/changelogs/593.txt @@ -0,0 +1,19 @@ +Installer Improvements: +- You can now remove apps from install queue +- Cleanup some memory after using installer + +Improvements: +- Add initial support for Android 14 +- Added 11 New Repositories +- Pressing back will clear categories before exiting +- Faster Icon/Screenshot loading +- Faster Selection of Download File + +Fixes: +- Crash on Android 14 +- Repeated Loading of images +- Install button not working one second click +- Crashes with syncing +- Crashes related to system service +- Improve performance of App Detail Screen +- Improve performance of Home Screen \ No newline at end of file diff --git a/metadata/en-US/changelogs/594.txt b/metadata/en-US/changelogs/594.txt new file mode 100644 index 0000000..70b7155 --- /dev/null +++ b/metadata/en-US/changelogs/594.txt @@ -0,0 +1,2 @@ +Fixes: +- Duplicate Repositories \ No newline at end of file diff --git a/metadata/en-US/changelogs/595.txt b/metadata/en-US/changelogs/595.txt new file mode 100644 index 0000000..85872a5 --- /dev/null +++ b/metadata/en-US/changelogs/595.txt @@ -0,0 +1,9 @@ +💾 Backup Arsenal +- Add support for Exporting/Importing Repos and Settings + +# Improvements +- App details page performance + +# Fixes +- Theme not applying on startup +- Root Installer stuck \ No newline at end of file diff --git a/metadata/en-US/full_description.txt b/metadata/en-US/full_description.txt new file mode 100644 index 0000000..fea1c34 --- /dev/null +++ b/metadata/en-US/full_description.txt @@ -0,0 +1,31 @@ +A quick material F-Droid client + +Features: + +* Material F-Droid style +* No cards or inappropriate animations +* Fast repository syncing +* Standard Android components and minimal dependencies + +Available in: + +- Brazillian Portugese +- English +- Finnish +- French +- German +- Greek +- Hungarian +- Italian +- Norwegian Bokmål +- Peninsular Arabic +- Polish +- Russian +- Simplified Chinese +- Spanish +- Turkish + +A direct adaptation/modification of Foxy-Droid + +Copylefted libre software, licensed GPLv3+. \ +Use, study, change, and share; with all. diff --git a/metadata/en-US/images/featureGraphic.png b/metadata/en-US/images/featureGraphic.png new file mode 100644 index 0000000000000000000000000000000000000000..9640bb7e0b4e0b1e06490673b7276cdb705ee2d0 GIT binary patch literal 36773 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�F!{?UU}K^M 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 literal 0 HcmV?d00001 diff --git a/metadata/en-US/images/icon.png b/metadata/en-US/images/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..be7d161aa23d67dd361d9dcb2a37382c72f2ce71 GIT binary patch literal 8154 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 A%K!iX literal 0 HcmV?d00001 diff --git a/metadata/en-US/images/phoneScreenshots/1.png b/metadata/en-US/images/phoneScreenshots/1.png new file mode 100644 index 0000000000000000000000000000000000000000..1de1e4bbcd05c600cbb905ad0fb3c2c979414251 GIT binary patch literal 602815 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

Gbkci#i-=L0+?ah*U;P+ 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

x<7!4)~)nx4^E;OC?t; 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

tC~0NCDG~T2EUia z_&6pkHu@5h0%luRu6NWDO*a1QrhBH${6?578_&&0b_Tm~XUXCC=GM!Z;KH1}&Z}ky z3WVu*|H3qLR(-hNaFx3`491FBTR0HBS`n{OS0HeAjZuVp2*#{&T5+JK;!UTBc|$jN z))lmSu*XOhMz0e4mf^L-ftgL)k!t*=TJZa50?QrkuX~*$qv;|eONZ?FCabU;W@grG zuN_Xo`V%A-BVuplp8a;K-%G;;1rd}ct`e1)I6fXQtU)s-Q7Fa8d`cC8L2k;ZCSYZ zFSF)jV}64fff16#x_U`DZ4i7RXdQLCBuu%1(ZtQzM-Da#^7d5`xy^Z9*dTmtRlN^+G*e_`{a&m{ zQ=RnH8rn!|eTCJS;cK^Or}Av1*q(Wj2uhJ|_$dwWZb!jAy#cPueCstzir%7DEoy90 z$h#Hq2PY)E)koX62KBhPo70jKW9RE)W~|8STcaZGyQZAZP9`+2oBGiFirlH_F12-- z7jVJvRnmuuscw`Qt=%un70N-_ODcd@tEc0s7ht9ILiW7j`Vp0dnR6sc5`SQ@Q|zSm zO!Ut#@1@GflH(#J{Jss7>9zA_Wb+&^DJ8|~W+nabsB)|_15Sz@H$irO+jnx?w&czj z-pE+Ra1V%mhLE9mh$G!-_Z%}gc79JG!|Pldjb9l_@*dmA@B3HP)$jB$*ZzfDnX~#+ z|4YE#Mz4KgR8c=OsR)VEe9Z3g5RyHll;B7I#>q>(e%b9CSQ_`!g)J8uN29Q3@Y8E5Ky=^nEjyBsltE0ce*1cI zt|~dqfLI|vMtMwml0n*n6~W|ZeNZHJTTuR<*!|oF0b!!(?c}339q!Jxn&b<0yDpXb z@tL+|#LTA3fwqTjcqP5^kMJnvR~>P1zvqKPtb|W9GqnE45q+Jo@$qMnWzTxJ0A2s(JRE-W-ULJ>q`IFV1v!L}tE*+cy zk+Or3^h5|ldHa2gJai>OlB5Qqmf(re^d0c14CIw@ejFOgeTir=8@x$eQDn{MVcSHy zOspfD>Bu{fh5gjMyGj#3EwJQpBAzDhkPrbg*U{DMtcWm}2B3gC&@o;6&;EgMWY52` zp zfWq=;F%01jTe;%t_-@=0+O+XIaF(}D!1&{rB=g5DZT8_2Iy=JhxR{PMLscq~VWIX1 zYnz4}!3yFrEzXF?6)G(vvuOmalw1uK6nFQi6uUF}yikc~Ms+l~KvdkBuBjDD*o(v%Qa~b@*Vp!Iow`&W>mD^HbJikR z>`O@~eu>S=$r%j0*xzV7PSU%LzqkgQXWSBoIaG&oW}G29I;HQ_flju|Jlel+!~7tx zwBjb#5XBtgiJ_J;HR=8~bNu-O-KR9-2E@SxM3rKoo}RKWEstOhF1;yrxuwG?B(|CV@CWIco5Y7cuL_5$LcO33!tM33!~hDA7gui4ZSNJ zJdhFmHBZOJhEFfbeFla%8|bA3Z85Pg9F8|%9J}q}+JNkS_aq8Lz|ZN#4R)e`kJK+m z@T>6ClI$LQ_I96`??_bV72)aF>}JRx2ls5C9hz!#^N0>ksy)W^2*5pmwkHBC|MT7Y zwvm@YP=wbmX`d$WR?nho-J3Y0jDGGq6~VFxWuLuCBtEAm`2w%_M$hwO}8kXTAXBwMxO$!yFxJeCep;*lK@18ls?{W*Ellk>8nsd1l1as zH{6s=uvU1KH7ZwK!M&L)I--X=@B6clf0$c|x#(W8(sg8q5l3LQHk5huQ(n0chn096 zxnD+EJ1R~T5!kjrvdTwN^+YtOHwcmLo@{+IXY#qOe)>T*%NZv}X=1NbyN&V$=kp5pVP-XLod#m#?F_1)Q7)-5}&c2>fc2H1i8>ex*l83CG&< zH(wr_TDaAWw3*Z=!Q$|!93Sf*T8;brm+5@n@dG|WEdso z{qoo&Uz_oG7nhZA?abQPze@4Rw%$<2;S%uawweiB?T;^48xRpL+gNuO)K2^hT6i#> z4vln}c-YLktbh;Z^?sF4W?Fw*>|JV%WjYJ$Je+Gy%va$+@-qR--bTA^20jgZ%nRp9 zr$-7PXImR#<(g!{YJ(A(M^bhb+&~ta!a0C>!bUp7ONacFJEP+cMPc;Rl)2s;aw$T# z&7pjcgL4^aBpZ81Pcc1>BEX&qfwqO+_A>f2CZ(mVb|z~mM?{>DT9xBr`ddI-iL>s~ zudv0=NqFNoFG5T&42~JOxH3T}jX^&N^~xBrcUz|h0)XN2p58Vsmx8Rn4#u6R1uicW zcy>f(C^k^H{B@I(*OQr^lHWLnWM=~d&=zF8Oz|a*zJ(0%aHfg$?2glLiC<%WH;w`l z46%)#v)@X&8;(_bE&P&0R$PzY^X7F!m6YZit+>dA1n@BflhR0brYh-wV7;{4%<jEHuxe1T?qo$q#abMpL&^txM=kx6y>|js5(ene{-~kt5HEZa1}%qJ#9c!@ zg7z0g1#PVW9&C!EsH~5g5HVL8JyH012gnwf$fxw#x-_=B6Z{IknqI#v=0%oSR$Y`A zUkY-5_f}Jxze)L|hqH+@t>EeW^CNtzTI}(G8h0>ECjum3NFTo*u#*8igK1!fOfR8j zWosFFiOk5eN}kaSvA^3sb?XyW-d0}C(cI@hECGGANY;F6-Aj1?n84W%rx}e}Pc0MuT-`hu^Kb{iiO!La* zKQLcL|6uALiX5Mt+B~eWninC*u?%@NRT*+TiqUe{YeiDT@V>V8aIP_E@R#0%TxiFm zA+X3Jo%a;w4`;|3@JH;T!m`S9H}rG508bbQ8lV{(x#ANP5@J6%$kuR>;SrsJ-L-B+ z8y}rohu5%h?>F4C%qU}|ce==%52viUjAQ|f2OrwFP3%nqH44y(CLnHDnWZr)Gd-&&JLYQHqp)}p4IFsO>2P(yLbPq} z_PAH@FO(Gid?xeBK%_a)Te(1Ecx>!BSrZr7#DvEcKSR&T(AGmnk>4@irC%KlA<|(m zSyE-k>+XtfWX4Bp^u-tR(EM#$<&Lc|V%N(aC_PV6QMozbBBE(ih{8ZGz zo8fb7bh9`1Xig{+C*b2N1@`khX_b+drmb~)xk*g4jva6o(D{vqD*Sx(pq!gearrex8r4Sp&652ARqlq7Eu5tb--Sl3&S zZ#h+=61ms3$G54hMoRJj^qG*b^bbwyo!MN-zh4__)*4`u48; zgpoo9)bSQK3}Ec4*xiN3uxf+@JO|st()yM9+aHvTRn~W^{K|mk>+Vt88ybp_N_SZ2 zN{Sr2geZ8G%#`M%Kp|&gX_*DF0;&FNszr1D0SY=%&V_v4p0YP9V0?ihvjqE%_yt;v zomKpSO2xXgrl#(6{lt5yf0YIm>XsT9$mqFN5ntW?IK~*HL>!`U-NP9e7$`OA3O{4A zuz8P#i8Ce0Ki*IjVstP0Bm^`{Cz&GtEY(eS6hPMggs=8zx2NxZeR)r>*(rf!(FEYg zw%aox?6;cg+2Y-d@>(A3j4c*wxu zaLxrVzsW7rL&k{-%x9#!J8sV@ta{q(z0voXvS2gsetrKaszQeLS*mrxFPTXyq>siB=Tm_z`XXY*3bF)KleI&sR zcaL}T9+TE!6$)6FprJ)Qs`#LxlUsmc~K4%|M zg)Izm`T947hXZ@uSZK-H88cSgol)Q~U1HqYCBTZ$;&&gTepRfO6c0&#z@&Mz7keKGk&@cqZ zzM7hv5m80*NYipQMD+m&%WAtmY!NGTXKPN+oOfe;zk%rHZM0a;x5OtT2m%$>ta5nd zS;wO7d3U7uN0BgE67)Z9ro^Il+uiRNnV5n%W#=ldQIrp8V#pz%mVYtK&StI#%*s%Y zOk}R0VHLLu6<~ELVwM!8;WXPeBm;Y8WDB@0M?hb{9+(6pF|vC~)4EKo(3_3adBa?g z920hvOsZ(zXtCf=IX|_uAZIB3{BO-@+9l&?r1>?=V^z>Uot}a3yjz(Z&`0OS`FEM{ zXJYS-%X~82YGU+ef1qJ#x){zBT%quE-N6>>iz($NOhFpZ^mQ;F!!rm`fBT`+6neuM z|GpN?hAn66z(z>Udh=kLK}Qw-^>#|(xMjyXQDW57ESr{@oqhYP9sYd!k{m$7z+qSF zDXRR$zh?}ZU00*~0927hx8u`nM(h3Fkq}TH(<>FY+kl3Wt`8w<;cAE|D0dz-jaBQ$Yf-xuI|nef7YaLJ(@z6y_s%gWi!&`u$t-lJIY$`8a7t$-aq1E zv?Yw_!@Ky}O&ndLGL#G$Os{d#-Yb@Qz7J!& zC=TOjnH?N3VI$lTM3{1E9Yx)_9@9KwzpCD+r0?^cvaWZ2I*v&A1#R;XT68{^yGG@a zGI+=0NS3OH7C?_?46*M}425iHd_C-^)k;W2^MAec)DNVN=RD74@JXa{eN8YUbs1M@OO8XGOT6!KoeS?YUvO9UMVj**Dl_6i3}i_Sbl1;&IF-A8W;dk( zDc$$u`XBV)Lw=V03Iq~}tQ*hau~A+Dkt}z@jGj7KwaKjVP8q<~@LCd%gDrk83`pN; z1xAYGE#ea1Pb@8As`K*juKTmO_npYuH9Rb=tyqbSAzh6&430+|>2y-MK$T1&B8+5= zWP$moBEsWibK^8AIEQo9i7DZ!n!f57J{A%SE=P>zKch5R2Y{B89BY7eiGqfnFtO)G zRuBt2i#&RGO;4sfO@Da(QGv55VhT>0sQa5&FEpd!6rg+B%3bu%g0qo6YNj-!!rd1% z{NoQbC-Z&z30j(Q6ZQ$)I}|t1lhTu)L$dE21qJ!(1Pnx6_yuOdQ}rO0izVkR781%D zO{XAu_r}s`e~yYdn|(=Bm9DX3*i&v1+|v~&>qXtkQr_2aw2^gcDcC#1_d^EPlHcMC zC9XwD#V%M`P1;qsvP?dU%c4oskeKz28h}|ysVPm|yjT9DvPvJ~b;)!ksZX?75xdjG ztt~}y%DX*siZ~sj0mUi}Kb0q3KQ2!Dqu$qFyQ?{s))@6mZm2XOK988Dru10%`JX?K z3qlo(BBB*WVvJ^1$Jiedv#6KdQy*G;>0{m>wQA!m!sFE6YL>tyb>3P~I=>T<4jmjU zDl11-p0JMxPXyXp{51MA6%)45tMYA~EktTxqV8nDbU;>2gR|vUL`jkkur`l>qmAa9 z_4CqO&>Qno8$!d~!9V`Wm@LA(W(W66>%la!E)3<$qoKz>VxNoy@De%6vi zD$96@iVtd;tWfy~u!{7>cyEKGxL21LV^s4>`DTbDUiy_`?BF8Q9nDGiQ&)}7_;Fi% zDghR3Xn`X0 z{aimwvSR|~NzKgi6&Thxkr8IT`G=uq(ei)BgpX60YJ&&b$ZghpI;55PM#lS}y;K5=s_?#hGd{S+iwMuG`KU||U<8#Oczo~*$;U-Ui6$y% zidB$5?voD;kq0){(>M1lot9GG($4`OC-z}g9zH%5UQ(vbYmlAAd^AY|uFT5%%%UoP zEcVj{6<;j=jFHNcIE4ai+Zs53pUSvZIPnV!CZWJOlt*@WUa=1{g28pQ*O(y_LNAiP zzoTeYglaM#U;LX{C%{p5{SW4Y1t|9LMR8#R63Dk#NoW$xGc}6=uB$y^;7ZG+J;{$6 zRG^#Uc&*;#Caj#5rPM6%(Nc%_#;f61UBrG$6Xs1^z5;7H$|OxV!|JtP9MJqy)>!Mg zST(A4DA|>Gy=F(`#n4oSkA@V-H^Hw^pz(WW>*RmHh9X1!jN-Z{Wn7BJ^GlY0+4)k> z>3$4l$5~@n<6Dr5kr`IRWk#!3iTLPY`q1GOx{otoB(5p7kyJKbAnW}Cv@-r^sZ*>{ z2h$`)S?vcmByOH`wwY+@=nyJsrVBVpzX^-2=)M9vAQLo#rxTJ8jz z+)wUb5twu{7+|c*cWlR}K8U@}Vh^5!fo%?)PHTgq{7@vP@Wue-&C; z z+_S9NQ$m!t1g|7?`XZ)N5K_HYoJJDR(^K=sCI@!!Hku(a@Ew)281xQPS#;FsPj zbKS-Ob~m`#t^Iqf2u#lpluwJQFE2~Jp3Dtuh`4>ZAp~m-1nl+qn23&MR>LRFaPU?9 zdUWI8Is>gW115GrY5ZCk7M}V{X9U!gPtU*_gE&h{6K#>Q3M4Q3 zy5qUhizXTEka4@T&=m@W6o+7qY5o6l0mORZ<=MrObnjbhxYb{5#$p-=aUpN@33-*4;(0KpEhskb8tCFkkFW}+*Qr~w=w7{ zn49W{XufI@7oXdZ{{{93GpuJ% zf+VbVW>pIt$ezmhI#I?CD9H8?)~?&VQUE}~oO)*4#hhu%s$1a%&VFx2RWS7a6kjk+ zP)zrd455n~T%b;)tX{;hGnW3YH~P0|yY1OGn5{Igbz!<122@>7l|GewCO19W;+-Nw z2aR`T=BEXkx+-7BxOW!vZvh&NsN)EC%sc1+#!i-%=nDv5cn^DtQWS#9_1Uh=qi@Xm zM=YO<=lG^MKraU38ni)~K!-k%) z$YDA^ALtKra@hI%uu-m(mG2k77M1oQhOF2zW^@P^!fX#n<>x!|x3$m*m8L&V)Xa8Y zt*dj~D6&+&P zex8{hXzMjLTzLKBz%C>%DgXK0UErq(E6RJ1^jDwWtbmbXD%YeRPnY=EM~B}UX!j*p zg9>de7$n=DEuY9F#ayp=#>33VN**INlxg|sR$1Xgf@WWKB9f=en_+0+mp54a;e{=( z3;~>+Tx~N4Vz9}_$Yv^0#N=`dRxFb{b^`ZKyDTM$b0=934bR-R>H4V3BW}w!HtlxJ zL{Af}3-hafB@CSLjHXFQA8ZSXj-|_hnK{aTHZ@V1BzvtaYE-$zRIE;Lc-McH`ZLl6 zoj`{Q#cRkb#>1r6j5Ka&TSmLs#V_10a_A#F9oVhoaoZ)HFg&azihWYEK5Q)I7r#e> zBPw$8ACM&1+$_(?=c~tMwRn2c24J)Jr>^2V5CWN`+A9#Ducp}O`8r)z_QwO^IN$P8 zFOOb$AgVi1oD=Yp%81%oMtBxFr|@wqvA(TGnn!=D)5uWLPwV)*n_oqh@*%0-$O}1I zaBga*H^CY}=ZfBAaTzeR)pT2NJ$(POW|Br{aBntjR97uK30A^i?o28>z!Fy(^E8%! zhOW}!bG^&*++tL0bB!y^20@^#`)gc5=KZTK#0P?Sg6cdkR3JMgNKC*xMIJ{=6Lt0n z(k;WlXlWF$erBt)#GD99uc!BV|E&_TR-6ajTYhC0m6#KkZe8@pA5?ErP|Vuf6L%F4 z2}G_|#0|3Upk)3`Yx{Zo!`_rDf7ZqpB#o5OqnF_D`%!?BN!rXO8vLd<*0*$VVZPp{ z-QnPSBHhHobl>eS)2VXA%(6Q)l+GF5V*;RPbwieQCH7P0F|jctiULBDxvbq>m<}q> z==v0ShY6RvH5y;|@F4{S=hBVV=C?p&6O-te(3dj}OXJ8cJ1c?oux3HI{;OfcJ}l~w z-e!U8F?aypZKSUE4*A#u=NlKnsb^m=_6!d(#t>CO*ZZ@?aHgHvKxj|q_>^iD0S;DB z}SFy&%5*`*P+r9b}k-Cp}rdpCJ~2qwB>Y4 z0wO|(6Pd_WY?MluAJ*<3o^I$ilX=CaHM*w@_eFP}NPg1%Z%{Hl_Eu{WW9H|b;9`D; z6TV&R^nD^sl=p%30bjm+`Dp3+Bf8@`ky-w(m=6{$(q*`ce;VaE+b(rjrc6iF27hQ- zNt9{*uqCpP-Cgv)k`}7l?ZM zA_(TXS$P8B$*H0lpD*chHMKu1x}(f0q=-K)K!-AXI&jV9z1LvpF8|1(PxYGRBDV(j z^K`;rw+=ME))xY?xuiC!anD>3uP#Q>MqYw_OnJTcu3uX1}c z@_M3e7Eabz6d^RoAKE-$un6EtD67cp)hB|pI!p4L?w(};^JlBVF;rmh^t1xUh-s3+ z+&mHyEkl*-4<9M=#CuzI?elI=Y9GedKG#)&Q*w&xv+t~Ab1UFn)OFu1Z3nM0IsJ)`p`DFb!?1bTaTxr$k^KleiaKx zd=8|pl-}Gw_%$~0f4s!5!v4~itoArM%#|){^R;Ef z<4_d#&b&aKBt)!fO#Y}>?sXP0pODupk(0Lc1BF$q?SYGmFD0&T9IG#aCPQ4@AnxZR zs-4K7NJ`{jKl#*h0MCv!-Jmg6x>KbKkloiwi0{@|8;VVusZOff>b;5WBeehp;0`K~ zjt&*%<`QJ>T{yWkztj@((**5+%3Kz6Y(L9+`CdSCR^VHH@k)y-JJU4^ zr?*&R!&1!N{opt%Rc$@v{XgoQ$hBvH`DDmp^{iKB>j$MfX6?3=|4>qkk+g_UKHlgN z)C%)R(xL_pyFY&1pLT7H`r30vii`B|;r}u9l~GZKUDpx{0!m4jlr$*a-6{Lx6kuFYkj}?!5VJnT<1R5iM{thgtAN(#VFXj+HV>Y z0_}Ygbffk^a?TTs@pim3E)S^$szVFEe=XXjPPcs3eXXM<%K-yKFbs)r7ra!!f?d1j+Qy?a-Zz18p!-PO}xLQ`>CZur^3qAzSjl>(DR z|3{9(k77?F`EHhYcCOKP+=AcYwL;qrFB`#G)jrV&+Om}w@ z2w?Z-x;F!16%17;Bn-M+QqfMpGK-H>4SS6SrnXoZ@vag~|1mutZ9a>=e&I{k-9HX1 z+|Xpx4jTg#MDvCt3U8Npn{Jn3kGhuxt6A%_mwZqE2=K<|n99;6tX)PBvMZ!wZtrSC zC%?VgX@%2TTC2a*#=2g0p(pr}mcC^^s4x2r9vNHekw{NNDO>zP+84jE-r0M-(ZG`Z zVC()2O#Z0&EYP97dh_U32Yx!7TA)w?{db1G_yp&I0Qev=QlZk1`<9K&d%Gtg-Qm%` z+s0gOT1m-W1v^ET@5{j54AcI;aNI9Hmn*h~2mv+v7`t7%uQ*~R?>~OSLpAHU{Nqy$ zM^#K(U#Fd2Ete4U;VS~hC823Jx0NXG1o-;laEE8cC>{?6bl6VzPs;b~4n&q7rcB*Z+Ha6fL45a zTv{}}4m(;a@BZn@#^qFjBE1>_dmy4HV`p37i_4_a-k(NME3mc@dri7`yxlXj8Lysi z_BGAgGB=eZ+y8rM&AWJlUI1b)$NvJuU}@hq1s>Y)(L2kaJWCo=N^M0xeW~$vQDIv_ zFfKF@n;u{8HOGAh`#3P*!-nhv(4CEiytsEbz0z-~ZNh=MTD!XUuJ4GDb-o#asma=y zo~fm^HF=)hvfD$JZF*%DAJE`e+YVzbw7VE!;{rfjab4(k`OlRce6zhx!J+2~_`G@U z4?+IVw@V8+ioZy{?%Uy5l2n$ze-QNEAT3P7wENljEo|ua_b)fP=gce|jCeTK>m!K* zac~wmD?D7hTQgU{7!()&rpl!0kBFQQ8PDFh&6D|(+cLJ{ zemYz5_p&yN+J2HmQjwXRwYa9`>6aoo&!myC1A}2!)@0SH8I!wX?kkzY9bg3PD3zWl z(ec1fGM*{Pqt+$+DN(uNY~9~^#`T09Gsf@+DyQihF>=$aj={v#$2T3v|6oHp@Ai0Z z`~oR*=9ftmJA=hYlEJ^^=GvWtUAkALl2in6Ui{a+MUh7kx1-5HMS8~wxi|1e9u3U( zWov@bsIwRaYQ`U_fG{&wb>}T=_{&ZJLmbVi>Y<%aKV_BPQtBE@gZN=dhmtP;Iyc|l zA+Ra0I9>8>2;SK`#%Z0PK(O@?jdf(FN>=;bfy&o3~#B0-pIJ)PdPWP3?zIZN!7`W3Cig(lW9)wi4prYCrFiRjB0^=@+SnNPFvH zNS6huNc-*R*<{uDA%1Uh#Vr!11;DJT|MwDx!8ZW+)PZZq}O6; zY}`C|N@4_z4JZRD%0*qhW6w_BS{*sCZXXyoScQ$0dTmqiyDU+8!{*qyczE7*Cn4b) zyiE?p060pk^i>uW)u`%Eyq!jlC1w_u0TWABA2s`$%+k>*&lB*iS=h4&QVQ~om8R9T zzHE%>))TixM*TxuhlNFBby()Rzi9bDtLgQ=6f`kvmFM?dZr{C#My>-3?-#> znV*`){7HwApm!MJM1@lL79}f-s=n#8iw5)Uq}={^;A(oR-HLBl%65)1ir} z4|ici7!cv-l8$tz&O#X)*=Qg!`4r%g3`X>WOB`YUwq>T}

Zk=_j6(5_BWbFcw+^OWcc!Bhd3)*H$0) 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

pb5y^p_rs)mPlCX$u_a@t<$Emo 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 z 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

M{0mhi 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%0DMiWBVYL1`sz$ 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%0Dce#$ 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ßs-+UcN`~`o#veO}k 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%0AbCvU76J%d*yF}AK`$z|@ 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 z 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 aow@J3v^cak!6t1F_%qTs(JR+=2>(CPL6ph> literal 0 HcmV?d00001 diff --git a/metadata/en-US/images/phoneScreenshots/3.png b/metadata/en-US/images/phoneScreenshots/3.png new file mode 100644 index 0000000000000000000000000000000000000000..47bbaea8ddbca37a566ad44b07544296839ea8b9 GIT binary patch literal 674622 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�#x7v6J^t=KBxZ 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%0A2K$F->yZ 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≶%bB#;K>Z@6sNAS-@P_-kHf_ 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 z zkx;D2W@WFaqF%MsMl62tS(|oHf-HVH-q%7FK@DWg=(Fg;KL5Goo6;NLwF-Ma1l1VK zE3!5Yr9d(*xz)LEldJezw(S4V(>8w*aqYO?(p<$xbW>_r;R<&@2?_OsN_DTr#TC>p z@KAs|2ppNz)F|d27YIS(9&$Jc}8$8SxJJ&c-EemWjHUYZ#nVK7gAIcf+m#sBywM4QrpNf|C9rUFC2aCGO zLck>6xTg7Qdwx5lrz#eOb>JyIZQBnAI^sFIP}Wr(e$H}OQYoI1%g&e;T%Ru zQaY|4`#_Bx5<-y2>tf^^Re_(5rcK^ z@9uN?E~D_L>WjqN8v-IPDxp~7&$%g$KK|(J^w=`q#d@k!3-t%DrbBhh<-x2DOxczY zNEYx~Nh7`oz1Gj+dU$w%?iEbxk=FR*?3=p9LrKxP%m*owQ{vyG(A|nBwcihBJB9E=^cA7Tej_+CWGvE&(w_pQkc0p-@Zn;;6 zpS+%0ntr|R>$Ge$^S5sc%zmT9vJub!?W)8pqK>q3uKu{<6!0iHJ+4J$@Uw9KAl{mM z)JC9@SY^_hwV(_pJzm8>jQj|(;G(X@R$CQN#0zzeqkOND#D;BRrk}fmeoU#o)i8c7 zSU-*yE|~Lald*tgU^t1}UsCvHWt!(Tu}nOFi{*Q#1SWuW14Rt{L{k zK7CT8PyB9Fo1#9|K>zs-oBFmpe+*-dDxyQFpg+g+0JLP~WI?r8+S{Fq7HSDT72Qig zA{5aShw6#KF&LqSQX9&0jpg4(yAdWND_h!WEXbZJ*!YG$Q>;oQR2sY!o}P+NEdI}@C(q{3Hb9_k@yMd z!k%z2un+iPFd!44p81$yxnKHV$gsTwx`zM(-ic^Dz+ zZ;L8Yi1Y}NtLrtD2te#lNqMpjVcUC?^w%AgHJtf|UzB_#f_b}zgZR&NjZ#{E)u-u} z_qug@#WephP%xu}Ca5(0@U)`^n<3DP1T~A8daa{?fD1q{0y_x6CJ^f#g}$meJ&5ww z+27r4N(fb|NO#WE27ADUf~aCN-rPmy^9>`>|Nq2$gl5Y7J9BQfHC>rYCnM5Z?9IoW z88{CR9r&*hzBJ?D{jEB+oK1QfieG2Q1%Hh;xiA7%+IvCZPSF*R_>rxj!6a7etL0;S zb1kDJV10493W1bGA^c7nI~gfd!7_T1w{ z)}r0GN(JXsLgaS#sQLC<6RJzAMtX^`1XDN0X1E2$PbR4Ur$QvF&DJ}m$&Rl`hn}vl)CB^I?O=hcu!LU>{s@7+#I)KGZO^b*zG^6Po*QM+pP_aEN z?E4-UFms(jaqr2%`KGa+Eoq9IF^CTU04w+ZJbjOukxy5w0a)l!se~3euf}q$Y_B^KhykG ziwALI*l(62q@cfKo4nN2>2 z#*!@E6#9iSnq~~zuI-KV>1U3`^-tX`G{r`CUZxzyA=YsoRK=T>!mjAo-u5rPg5OpB zn<#MuZvCQzPdg1fpV&!MstwgC86ZokbZ5uOPt=>84V+>}qw2(Y|5*Lh#3zBK@0C%l%erPt z#rk1cG-G=xh>c{(GEi2FZ1~HyKwW?T;A@Z`0TMJ<5XjGl62AX2H|Jaq%hEZkV0QA@ zO+`&A(j$r!l4k!N6cp6(r{`;l=pv?g4H zm$mUa8Nmww5T2+&sk_Ak-;n5A>HqaG5CB1ar(m>Me_wdt9m&Q>j29y+9FO^wRJ&?}Atl8pFmEPLe5ji&R^33g zbG5x2ivz+%Y|TNet8HXTjP2qe?03cc^@Rgwd|xWZyQiXNr3pLDkx6Ev1TSy6hiedA z!F2^#A$i9|eU%mw3cNf4R7_FNiIPHV4dkp!ZEoW>x-eWW-&V1KXSaZ0w6fvQ5ulI5) zF$||*tj4hX(Ovdtlzlv2J&f+YYS`l$WygUcM9IbA zohp2paMj^74m{-EbA!sn0O=owikmV|vV!pL4yEz-4{nsVA}NGLF+0oi_`Rz_*2gfdk0Vv)6$IeLKTs{zp?2nRLaF zU)?|9GO5h^4wd}L0)dr0HtfhqlN!~;ZIM;~EejS_78%i*GEKw-;65!0bHCFLrfZm-1b<*Ela?S=bfa>ijkR`BcKCn#G&WGj zFpV?Rt%-|?siUp$8BiV{zc*r1m81H$BkA9^=chvHNgiy_yr(;DFSvI}Dl%)bwR+$A z81_xCJz{?4lmc>3`}m^swoX`gDK#*X(z8mQe~t2CX*H{nCQE?{-zi@UXY7e9V^{G0;m)I(PATSo7;rWIW@m zb%#eO-?Wg?nDWFmYO6+gKTmqJbP;2Qo7%q9P_c0` zcHxXM7-w3w2a=WYCIypfPaSM^Xq{IE$fd<}$A=8GYi{ec&R8*?E{P^kW#@lX0Iq0| zT=YNB0k9;>p|=T&tN+CRI7l2>>-QO-Be=rLxecgD?-r`=Dd1qmX#$aC1BZ z`n|wBEft)mGb8QX7o{hT1q@`*D)?4V+7?aT^0HOW8O-HvqT7YoMhd7Q!OhLyl8@KpK&3k9(75~$ z#YR45JNfog>|~D(FBvcR^K4jFJ+Y7azo>c(x2n3R>zfczQjksokvgPGNwBDm(D2iHbsxiM0)v6>p*Nku=vWs7_se3=op}7tASnE3Voh7`Zh30ooxTQ z`8RS0nXPx)1kde1fEYNKkF?JqgI>U6D+oRn;HiM;`KK4xHuDE+TlaSPR?gEM3RReA zt$OM>YA#sTdF%gqM=xo_noh23UIj(0YbOui(Rw$Rk|idM6@HtZaJ^Dng*S9{j_2)M zB7G+>{$cdB$Aur8oK|^?H{oa2&Lw$+3prR7x@OgTqSU%#hyt)p8GGjZ+U5p6b|AmY z0O|}d1*Z$SM>y8^nsA$d_sbmCv$pn3&eC$a@p#~1J{Jtsag-)q#Gs(=NS=RG~sjSf^` z`wdP_92KKtg6SXgxv%b@G-=hS{mW_J+fyWgN3owo$3OxGzz-QFEL|PN#<#XWl8LEJ z23vB#%SQ?JbiKe%&eo~VoX4!g$@MMM<)nHhm4c6RRI1gU=Q>n{@RhUs2cIEVTI%BU zPkAM1)G024It0;?YU#0uV)zuo#GutX_P#QP&mr3za0y-NmB+^#YLEg<6Rt7B{!X z@~B1qQjxprNE!?HV}i_jqYuFv4p&roH8v|~nWPPQU%rel5t%Swe< zd`s3kETIpgT4`ON!(|ynt2BbX{&=CJnhQxtcoOh$0m51)x?S47?pQ0*?^T zCYHfU{gJj#Z#}Tf-`_3XUq5bm2Tm9uDbN3#ZhX;-z!eJWsnm(Aj>nECLzH1 zL%{tnF(3j17Vx)%0zsFRmpb;1A^qWxp!&`L6L044yxYgDrJ3n4V>C4v5GY=~&0App zet}fM7_1a_oC(jIDz%CIejjfB0arWm6OhE-HeGA?USWC z+`B*CU?cpwk7&e<=<8DUjZL_@{Vv&!*GCEPU2omXu}>NtcV9;O55|3AR4msYl&l}z z{$Rr*f3zjRfSvYRne+8}GHd2QzCUyW%2L3R^X-fafe{- zUR*SUmX)TJ^Bpj=o!E7@(0ud#LY3sr=Y}|V!TfsQtj*dUCMe*deJkJXQJOqh{r^4j z@s`6xp?Qvig6BRQ9R{CSzb#Uv7Cl7ouQy#aa#mBnVcX+U6nRx7`R3HG=sJ>{cqEcL zYg5o_V z_9s{nh#Sn{AK*U$Is}JzX2K>#vbpMGrZ+kPuh)gJZON+dhYMPB^PZh1EuV|)vHiBq zV48x_`F7z0hb@EuWTuEcz02wi06M2FUjJC!tiS7bdUv}(<#n94_!DtAm1PAe@W>kD z=TGWYfXoW?lA{dchx_tJ2jD-8h|~RUkrv6r*QG?b-j~YzP|-+)ww+)&A?aXI@$YP(yZ6Utc2hi1HF0v`eHODee8-ed>b2Qjj05cAfn?R9M-tAYfrVrJ-h{Hn zvjy)R-HJNZ^CqxqLI%k@@h#@aI0kDRj*KrPuZB;xI@3Tn7@w z3V@GVbk--Y|AFilAdnzIKUILwaCb9uKR3kuaJC~e@Xk9?-ET{Z&J+;efa(SgA1pP? z3aop}(fKDCH{fPN~+D* z8P&tWD3X_`%1QSS<&7!L#NpmW8EYRmHKck+h^D64=v=z2gG-L`y+kHt~{wdeMA6F>IKJ> zCuXA0LJvIRA`=4xgaSHnNZ_n4`c$uC#O@yGb$-N~QYXgnJu?`|p`*6!d_J_c_5ha5 z!y_u;U1|ZU3wszM+Q>8bvhjstnIVq##zs@gm#;nKGSz=9e|_VDkmebX5^h#5MbY&4?2_UY8jQy;q*f_Bp;e}NHXfMamuuN_^4WfYA*A2$o`?ja9f$rnj>B`FHN za^p^i`qt!d*-shze5haX>Y?2|E*@ibNyV|GpEzq*t)+cFPX$}*$tc7%I zQ~N4^$r-KtYB0XmWE6KG1dG-$mdk&;+-vIf!mw_^o5?=z^{1l=cs-B#lfeyG1(~i0 zV61~wCYF5BlL}l4>9>T*+88cfgolS?qvRy!PS}oFzmydBH&e_WsnKi`2~W)&_5bm^ zy|qY9eZvqtxB2d|Xk~m=dcd>nneMSn?Ll^}|0;M*(q+9uuCMGKn@1&6&w|lY+;FrQ z-+!*2VD6B)5G}0?n3bE}XP)xj_{xBoocSu#y}zkB9M3WZ?}dt~kL4u<{0^^plB8Tp z3^G~3H=8F213tMX%J)I{p^**02VB#cT@i!Ejsx6eii(P=#2EL7Vs~;t9nZSxV!lWa zyL|E=1LNjy|6UZiO(@{E^%(pnfR-{|KAUyg1k7j=?}dXydeh47`YTR`)o6W+< z*Ow>T7^GyrIsQl@(}b-SN)((7@!iiD^3(|qM-#ocheNZxq#N=ySP~~Ych5Ugd7edj zpHix|&iUrKs$uQumGVs))<+g(`b6mb_-nh@u!@g_pwW1?1d|#0#RZ<<-@FF5@N|ne z&bHB!bQ8hJ{+gL5XGRJUs$t^OKbEU)MCW)b_&W{ZKNph@2x!o1z9nb9ydJiWRIOcb z7*Wqb90{w8GREK0d}~+JAJ>j#FN>5N8GP$gYFQnz`bxOoo!5Bfol%o%X{0|g#btV$ z9GU!#V|;;zxZ6PtYv~wvUt9>#0fRlzN{(;JK|Ujr3gW(_?eoJZ`w~Q(UV}K~|F+4I zCe^k8iyDKg__HBAKPZdP@72P5M4FofMr z;vea=Ypl1MCjT+0X`s;$g_ihUiIjok^S!*-Jo~o%t4&BF$MqKZ-qe3lU zSJ@>2krv6pt`h3ikn^R00e!E zEE@m+`t9^$u;tN?7nU4bVQ9v>99;d7Oku)zBnsMWx0ktn{#!&eq(j1uiey=!wna0k zn;25~$neeeT2o?S#H+s-hpRt_hO|tbb)5_eQTa%Uj0(r?`J{XYs>}flaq+5j(G>LA z0P>lv;{R8Jey@i_zy1g;!zUmvA`$;dt|@_+DFA449C!rwE)O)sPBoC0R{6hOdPF4B z1(nGWs_?}8!e62jhAEfcDIO)iwkrZ|g^uRn-)OY{CNF#4F?jx#VKb#5UWRV#c$3lu$DJ(gL z- z6XlB_6u$2d+~VD}ec{bbd$I(XC}r<=c@A3?6&2?C$bE!zo_LDF%8`0s5N@GduQLL# zcS&9%Pm`63#JbV6P&87#A<@E{73X5qyL?VB>qoEGIv-`H{ZgRT=+t#Hg%s$~JVD(vp4_X~x*SoTLvS6t&jtt4zZHqpj-))7w;Drx;wMCa-a>uOR!f0Kp( zafX#73Qvux&%DsL$rFyKm67=0@YQYYU@@5hXT(eS4nRDDP z!`5~RFkEq)=X!#cqwYMt!tya3>58kp3jCCbx3r%Xe~nUnBOkS~O{|-)l2f2^h4XxQ z6#1PMuSY0`n!nu~p*&umnVIw|Q7Er%l-w@w2=iTJYB#-rKJj+yo*=AmH!N#g} z2I2o#!fK(Vj&5wxRQ-O?S-^W!5Gmi7S9E5W*N2jnng#$oW%+lptYSpn<1F@?cEcF%Aaa0hkcM zf#8kkx*C4U`m+$I%v)rW6&V?6U25Ygr07ki)A-y6A9Cn#MZc<36eu@g^#wcVqnALC z?k$N>k|IDf&DtIr$6|A<&e_M+50V5%eV5Y#RCW1%d^}_(HTe@?fe+CKM{OeB zd-^9%Z-A`U%m|1Y9~WMbbZU!U4^)VI>GB z&4BAPg7UoSr}7$||CgF3`UHt6<(8)`fwwy#$?YiGvn3Sp7eQCttG{qW z>WH}YnA!E{Q$G9@c<~986@lG3QlI|AlnsG>;EK{+gI2B*eWP%)10FnX+aLULu;lho zGx=@pyd-j_O)38g)974GPOsMW&C00alEpqx&BWNZDp5EabPAAX3f@Msb6her`dAWw zZ(mf=C8%S`3}Y$MT+-09Q%hWW?vI%y`YA7My0oO%XRzXV=SiqFaNvCzrYYCLwu@Zz z)o8Uf`-u~m5}(&bMq)uSwyY&gnGi&eZ6;!EIZsMr!O`RU&jPAJ*>@Bb0IQm22X`gE z@y!a^pJrbIC`CM;AX*OF#|GHYOZs33)(vWd@9OrBlgZEL(=Y2 zS)jrq*KIqB8J>5i?9p3V3BG)J8=P;VENjB;$dZrk$J*>dGcWGf9+?uqFKXUuCMdMtqObGXp);U?q+Fn zjar$-QgxHOCtseVJ1mXycmxMgGerGH55s$*w)??3j@aQMjwMce&JPbbTAnZ~JD+T+ z0at9KI@>=RT1w{O;drg1J*J&cP%Z24WM;UZ2bP?N6S<{^zvHI9jr%#Y^L^R%!_ zEwA9w6;On+Ds+ZFVFonO;?zu|PAt&_)PM>6N>uhrUa zr6)(t7ODCOXK3h%sYj4lembr zgUB9&e};=Qx`l@=Kp9&--*2|`x|2sBw@Rkr&d=1j>-yt}v2|R4>ptU2irg!|&^fHG z9n<@o8HbI{P4JN;e_dz1J$Wr%NWDjfD1~4o)Or!Hln|tbw}(F6_UuVjcg#LMpq50S zv2}j!7?i`@-Nsq3i?La6k@EdP3-op?a9e`%qv3+B|Gd$Cz}FRJl0|X*>R|@YB716T zX8z(X+Sih0VYaAoTIVpg7c4Yerb!C(`ns!C^(@>2<6H{d7FR=h*CXuKqysm$dsN!Drl@1%Ld zLc^5oS6nNY1v&^v@Lykj# z*%6cxwPka#muVAd`DIq85$MXGnjz0siCh<|6=*uMoNyt$zp{N15}OrW+<;SnFhr#0 z$K*bS5&MJ5cQ?py7z7410@d#X1M^xOp9Z>TBG<)*v**P|@TLOw-YMWX4H;jwZbo-a4qE6NVw$jIzS_1btK{Ti zfH7s$XD1AUJ|m zd%mFoCC@w4*PFBiOa4evBN_NN+D*&pCZE(Z4P%%)Z8Q=nvOSGD(%ccrDv`9HkQF>I zwz%_sQD54tJ390nu0Fhqv1=NCu?h7JWsVXc|C^uHolsg~onZ#;%r+h$#Y6lkmVRc< zPSGqCWStar70#?6i6t3BrYGy|4C(%)Wq`sWLM^rH1MB_FV?JO}4Q;PWN?bq51v-}) z^?zoA!NI@n%W)U<&Qhek@b{4xJA=CAxgVwj4Rh@&sHN)O9!73r;D!(6r>l^iHyzNQ zj>k-fG}Pi8M`dC>+kAA&`fKm}I$hX19zbp{Oq{(1daj=xzxP{th*|39ATaL{R0XNv zld`i)N^!#2tmEH0mvY;I3?kDXknwAm8~liVaL6wD>8OR`gT-RO5#Fip=M?k?o&g4WT3l#hg%&HvM4RuSmrLu^WHfRd zItyZh4i=jCTbmiW>h(&O3pB;W)i_&-3QcWg>=Yn9a&z^xT`ySdMnn8{WistRs2(U? zMKdfV7@gA7TwO`;c%gma$3nCk3f0t~gwbxshUn@0PG}e*+CHpzU&k+PDYUvY2DRTG zcr7G7Btn;ecopC87>_`Q$IbWGCd>_Pi73++FvY?!EGG4vS)Kk7tG{ytBgvh?I}7_mlM z(>caSblX(M%rg_OrE@k%JHiTsne9xbfg0#WdD{7g@I|NkX-5G(pLJW#A(H0oLbV-R zEd`5>M?fYlG!DX60KcWW1QeTr+#rAibGRd@Hl=AXA@Jy;wMh?Fs{j5#9RP)ti z;oH{ha_r)E@)R#E{fZgWLDVlE3vfJMN+BtIvigo)eAclU^{=R@&*9s7KZCUSdi)SL zU(o4%K7>H>Y|QMNKGuO--pvuuDJ#>>t6raIu;g@^Sv30OOJ2H)h!9&Q&G$ay zTRMg)tuKx~{`S2G?wu4w$)*cE86!Xlnz zL2)LNDf;ds$gYceVKsap2fn*tdouuhM!x`fd+>iD1{_Y_I3r^B!USSB+$ezME(V&M z3Wr%f(euWULr@mQ0097SjxY2BcbpFYj07Zu$okVaq0-i+->fyUBdW{;-UhGs#<=|b z{U##UWauj^xb}L1e*IaNQSEEzX2!2`g!-w1$tQ7=pRtM$_GrPtoE)F_im1k^p|z|F z=eFxuSwit_MSCx1R#93&MWYApk$;MEA4DP0Sdq$(emkY3p!V5`!ogC5{LQN5wF=XK z-i#BJb)W;@$N}|)C_F(?<-gZLQDRJ0d)?Y`a^0!Ng{^spJ zaWkH$O;$7583p^s>H?pzwbhLS6S0buurU8`I;3}UB@i(J{`Cexx?T(%rz7*p?#~wQ zsF2SE*?kDU+rTx;z(>+rr^*ab00rz_iQ(&^k9bsbo{-tVS4_|8&)r0=zMMJUeeLd+ z0fiXqGS$(D_LV~G3yfxTIUNOq{Y5hRZ-0f#Y-!k_ikhvQtu1i?%#cY|nUSD79_cZzUmH;3cHkZ51ZS9JJ}K>Z@7inqC}scMl8j7i)kJBVW~)xC*qL0(h$@@s z^AhfukL4hp`h|2Gbc|PnzM0m=eI+S8i4yu&4{GWjtcwiPP^~^ao7_%#V6L$JoFeuZj=-jw z+VUa3NN*Lx;KOBEGRY=A+BH%Ex1-RbUm7IJS%Uic)OL!EOO6f=5ff+QI<0vW` zeAb;`Gp;aU-6SnaoV|KyxrYlJ?>K`LtE*-&F`%1{|LX-vQ?{n7qZYDtJxS#J%ZPG0 zHa$P6jd%j3E7C zpIL%<9txo5qq4~~P<9gxrvy%~6JEXB7K7Wat_DWJMTO}dXDJN-KJ6834XnKj`P*&A zrHfKqb{Iqa&)H9`w3;+RvhK1!IpL*mY*|ZSzAL-BwK>D-ecj@a*CmnP#(&)V}PZ;Pe1 zhz;-mMrXIIb0yusyz~Zy2P~$9OTGR8qIS%TAb1Yq_CXaX9g6M-$J;ci>AfK6ObW}` zGg|7th~;R7-X#IgJ3<7*as=N|bHpLb&z)s*YF7DJpVo{aQ$sagcGu{l7L&`%O3fci zJrarLhNb5Z($DO$KR#WAn-X*%FV)Q^AM#7y$7LmN?-QO95*JUHv6kk{+p3d(n5BT% z9uJI02oGADQ+#vNSC29-UpWsUxpT<#vkAI0UGxUou--ae*&3>kQDsU(7EFQ$Ue(nQ ze|t9gjxI{HpkCGa=7P2E=lNTO=-iXtm}7d&O9ezs&OY59-3JAKqf*b2+P*Wz64&5^ z+tiQV7Tqs;o@NK1afP|b{yXQ!?!^7)w_T35NAbjK;rpd3#%n2=5(18s+n_#}hnw$6 zHKc&<5xJL3O~J$wH0l2x1r$MP`PlEX+K;ttB|ij_Y{Ce}%uJ`%ACtZH%qUhVj~RSM zVwb7@%yF%AUyb`F6Mj|dkFy6t)u=dbvu%ab{T~GyZ|-!9U2w^ zEr?a2_5H_lx3PGW2Ivfn$U@0zq`L*F>>`V6q`?!3d-Yxl#u9K{dkAXoz(j(;tx#Yi zLgRiV*bUNtZR(I@`Xk}JnBgki(i{j5W++;Qg*i<2+p8Z&?S&dvsb2&KKuVCd9jscJaCN!pg>Gukojnh1 z-Un&E)j>A=0Z>??D=q67V;kl{ufOMMgPu_nQT3WvK$(1xT7(3UbVCGMm&BWhy)Xzf z8DsSBZmo*ThqEAd*=^oXYo*N18okoT&Yn557WVd0Q^5G@2jckFkOBaRt46ME&pOl} zHjem5`!3vhfKeJSs?GvufH9_hadOV9KG~5M@S;C`2KF(+KOGtar!~xU8_x;kAopso zNMq5;&GF7vv}`C^MOprku^8h{aOI?9s4`jSja#^TKdoa=(s_^%8+c;Ab;%e|-tw$M z3Ge-*Q&h!RGa-VaBOUU6)qUYJww~~TTeWaRtWW97-Io5jbo5!w?jT3ccEl9#76JJQ z7BD-S@_`dZ@*pXj7je==1ZXiP6O7@gMTJ=>_!O?13**>FqyMTy> znQ{Inwp8b3i!eG!&L_w=Yf?y6j{DP__UBi<(Anm>me-L^bGD6&14UT976!u;p{u5l zOa|&cqt4^`<0b=t`*I4~bC$Q_XtHmXhElHv4XvUcMbWuUcc^`i=InjBu0>-`|6!)H z(($u$(kwE;$o@~q^t5h;t9K?`X1a`^H~+I8dx0l4ZJMmb##w9@ zWHNWEoiI)5Lf$v``F<_5p?NFY+$)WYA_BIXoxWUbeQ~W*R%&q&XtN^N9Un_)t3SV4lBu6P zwOP)?S!o8{<&crt2!nIqtZR{gyF5B~*pjmm>7;z%wdxl+D%^A z?+VS;3fY;-uJpsR|Ef0+T+4z8=p@=Ne?G33HA|Bddc*K{X3g zx_L2#q@7>(IRBgG@z|T&HVjLfIDFbf$oXfa_T7->6Ep0urKCV<@w@1x+xS41xtWl4 z^DOIjesLYii3e)`5^~fy3?h7xDlSr+9j3c!r#pai`G*gs@xR+CEjP2Z{k&tmO}7Ji z45a`Y+V5K(>hvV!Sq8pOb8((+d61z1aU1NcK)=vy0^w)Y6MXdZ>?$j>*8$UilU#!_cWz$@N82D`RC5zMFz`t=4HNs78V^(B#}$~mDv)hVIHH@h?zUNe$SaG9CY$pqv`v| z3)|afY5(x$?S+liTKS6MW$rk=GmTG9n_@ZCVZ( z_?OVfQZ1@dqNEO;+NwM<7{l^w z)=^KMinKqvpKxtV9-Pg;Vl-kf6*2JSY5#oUJ=nX{(6(swCXTU7#x-BAJM36XLB+>L z>jD}$Ri3h$pDm-+r$OSJH{1nCA1)zA<(t21Nl6A{C|&&5ZyARlJJ+tf}a*cx28zdL^iOyD3IejU+?G3A>4slzwb ze64ZNBj=T_nZe^X`x7Ey?H#mfTc@O{spMvzAKj64s%7>1RX=~zLRR}{VKvEN?cqA} zABm@g`3x*O%cAQKjufrvzb_BYw^mQh#+^>u$@WasH<36?qJ=d1Zzxa8hw?{MV4&GH zoU1*Nl$=ovR9 z+f!+Ps%VaEmtq%If$vo9SD5>ku^&tI5 zj+gIuJ4G96Ou1QFg5`SmPmZ7nu_dZSuh?$KEMdFcM9cd-^p?#Z`^!J}eYr?e)AUVT z?bEv*M_w%ihN;D==(I;9oy8<=lLdt|73fmyDA+>W&N<)&n(ZY?iSUb{8mFyuqTrjt zQFy6=(;JB`9InCOaCd^?30Lpr|ElKq{bHu1(N)}~`MOym@RfG@j?flnlIO$KMyZ(DBAZ*M#Y6C!z zHB8%Lu!6|kwG$gM;g=)tCQH8L{;`eU6ofrwDOA(rLOkqS@slvV8z-xjor&m`RXk-| zwap>2%e{(ZrzBO#^oo}9@pj@^aG>pTbLj+ay3g#A zMhn~{-i{{c^Oa>0{(c&Og~oPqHux_7(G!jVw(VDfJ(t7SYmqruOyXfaMbi%>Cd$b; zG=>NLJDqZ6EvxAQQLAmP_iMZ6Vxt~0 zgvYV1a+T*6Lh$sh#%^UI_3%SP`i+2~rHQoz#E@Veq-^3FWGIsOC#js3_e zzfT*Zm1>ulI`3$!{uT$Pdh$p1@|k|m)?*swETLdlrn}@Ehylt-F8Qc!d9XyV+Q*-G z->pWCL=Dvf^W`=rJ}Ylk@j10*uVg;y;SXVwEUyxQZPCwjw#K{i5#UdW^xu3RN%$=@ zQqTR9t32@gC@Q<%zN^oeEp9Yj^#7Cy7N<+%Zz)h6`&Jqfon6XKQRB4w7Hl_pi1O5$ zcj?(4>NBjx7~vMlm1-<^?xOO2ySmX#6NLQbt3 zk3UcYXnQ&`y9k*{W_$%VM#dL`N$nkg$fY2|N6+dJA}x6k>>70iG0j>a z@>{>|N#8axXxcq<^{vq*z+o+0@P0~8*J||sxXE?YmT%ilNaAgTIDC~pn5!fx(14dO zxoDX0!Az6LFT$rpOdSq5M55aB&Bj9;v3^#&n=#7Xg{Y;!9lkmzo_2mtJKdc3;Pia( zD2Tj1@B6^*=1Y@T@TVLT5ON!g&7UT#Ey^O;Ns(_=i6NXGV>9rmp<{>vy$KcR-y!*W zMtP|RKfk}F@9Usyr!3dJygO`y;pJ*AvrMHOFA*qA7BiVT{~j)Il@`JL!~)|JoNUMb zcp;v9GqK?7()M{Ef$&f@O0ZAh!+HN{;mvAmdD$A?gj|%>$t{^~OfYV@Cv89~Fvo>W z-A~i7EaiM^?bKg9N&t5G>g)4ghX2O@)>J^>Dp3=J=j5s;_LwBC_ZMVtEM#56pk_R9 zcuvm#bu%PVJaGK_vt?wh-4rjMsO)M4hprv0-h(3sKp8&EA_1Cwd-mQcItt%VP+^ew z2_r452fEV^R8aeuTr*&qt3@4MlL2rH$!Eodag*4;lcucj~UGA^D*~y3#>FJ zMZOpV*2svlSEJXlL#;v4|4d-OZDJ6`@N=Chyq)m*Ls|32A9%exlYgtw+V;a} z+`vx3rz+k#G12N(R(%H$PIxRI3cO?r@xw!Hl+Sk7Zz3`}Y z!}S_WIkjG3ee$APmUI?A8(6pRE3@+%Z;@Dn&$v`;>-wo;e$xPa^bYD@WD%+QI1ooL zl7yd)p7-N`??xE6y8DCz&-F;O}qBW($S<72jxcDWQ|gU}<-3 zee|7nuRLm%`(CBE_!N_@ts3ey7`S+FyffgtUEL1>tsNygDI(dcNg6Gjv-^JhnC&Ds zh;U-ZFm%=3g?1{->5!Is88!KF+evOel`Tv5)@9F9SP$WAH-zr@Uz?hcKSx@&j|ifx z2e1?-n9rGm-7Ky#?#Ll4Nv9kkw5Wd2tIZA(!r@zfJvH*q@LvT$3PG=aA@^so4@oH* z0LUAqf)~SkBEB{+-<8xRPMVgI>O4~6ceHc1&oSBH+0VRh1ylB3mO>_AQs z1eQh0y@%{BcCcD|x~8A;FL*INDdkfUxuph8?&@Ci{>J4W@0yg?p;FRKinbq3omtE( zGqdcnySo3Wl15?PoQB}*c}J7@yes@cP51p*9)hb{!m;xCW!cx3lJC!ZX!Yc{g6`OS z>}K#D*R#?`VN!MK6>Yxek#dM*Ai2A5zrZ2hy7=v2G_1SKO&VBb)PhlpSwfdRrIu=fHXN0NNm}gf zogW&RqsC!~xei}*%a6cB__67wcwviqfVqB8H@O^TMfEOWW;aNjsV5K3_Lp~sg+OCs#$4lrdE>Uk7PV%J_; zI4D-WISL4eF_3-*{q@1m9O6;N%l6A7g60;b`y|RNX`E8_z;<+{D`UBXB3F57jFRICqwXdFej+r{xTPSwY<`awwk5v6vG)%Z z_xtb3GL@OEqq7TI{Z)dpM2m1zf>%3}r$E-JFUIc6H$frYZzoK$fSZc3jNfVI&2s$F zdQ4MM^in|#qw=|ohM#W;RxkD%L5lu^dv>jk2Z`}6VXI6gj^jU;8#~WqR7EM02Q?d< z-nS%28B;nNq6wr}z;YHfDclwwXmPVQ^13-EA23hNrS{C%R43)tSnT6X<&}J!w~2q{8qx8{A=)w{UH2=m7p^JE z52GwFReb)OxpERSrbBpS8xNb`a>gVn4F}FPrsp!WXE)v8z~1OMKKzdI%f{{gJxXXt ztmn+lpRD`9wIXT#FTU6comfIc)NVPNACwadsB(NYlcEzTWpsG$*?!{uNsb@jpBxz> zh7gt0Hb1D2D`*uZSLd?a?At~xJe4NgW;_iDhu(CfV{us$ zGCf7n;u|k~VoPkphrTJhUxgtk^y<-V|4nfS-L?lwiGs~G!|b`_M~pDwPOq<#6ApX! zRFdRfJgAuKT1OFP)COx`bzQWWd5kuxsrblF*`1(2&aeO_XiL-F3ao#>!HOc4=xZqPudnSEZT1O7hx6H#*{J*z3S(9)aw$ z^r9pFqCNp~VCtI%VgO`x=e)lL-{e!I%EngJA8TH2CRp+d7OWgZhK`i1pmTdS9;Zb; zNAS;3VxhbmI28&!W5o#qL(!sfHmU8iD73=Ug|n27R-(dr@=c(x>Qrlu8AM*DIZ%F1 zP6>oYacn6@VX2l?kmgZ~;A6rgU-Pka%vCI`dI8l~WXd>Z;KjgrtVJ2!k!&>QhcfEt zntD>-puJA+J<}KDGkj`rJM-p@U#gtq+dbQ?&-E#xPt=E!*W!4l*-~>7al|Rbh1ACV z12Kej^6KBpWHZ2-y=gh`K4E<5(dChCy!QFgdfe4*RonSls$5KblcI-`(i^|7WVC?i zBVf*$a6feMm5!!?>);M0%s8QL|Gj5BrdOA~$oNZF0%!spo4Wt=@s@GxGH6L%!jx7B z)3!q8fBz-R%HK9e_wVbB*t*2W%OXPGL#Vga-Yaq$e;`Lc`cSr*TLIhU*Lp2!C?Cf# zD+wlHNTMEcI}cdIl?$E_w-K+&&mR`a5Qre=9e+92%e9hGlQS%;CRcII1yjF!hXa8? zM)%JvCjo@M9jtu}S>k_x))asjPIs88P@Z3C%~9pw<4wgEqH4)?zgi=|M~ ziu}5QQ3$EA5?E@{GMfV(*{~bZTfMxfH3DLj)pi1~<=Noeq9&e*MXP{-1$HWY;v|#e zv3GfxJ$Q!-e%B1vZ^L)gE)1JR4Rs9tuWAqdE&}|1mLv_(g$qA*O1zFz5}{iWF6mtg zqs8jKwVhTs+%A~$ZghlM49-0M=L>k5;6D#6zC2l74W@f|U>}tW!K|6#XeuBZoqnrj5^ynncjd6gIu38pX=3|slhGyS)kD7ip z@yDpsbAycXMC~_KZbN<5QAUBW!g64GLd31x=po1<7S-H~rYidyi@f+T0ZE*%yCt`! zcmdpdHKSZ+JIdgcduIM$!mtl_$5?fps_oRy7p=qrZ(6o{{)SY>J*OPcMp`IWx!ysJ z2!!*SMioBGCeKE4ux8n?YT`>OyjIuy6z{uBsl-rGP)@F#%^HpTK6%NkoVn8X6L-qc zm%~aqYi%?~3Te;*PMS1eT}HA1s>QBffC{zi_2Q*+n}dEb%9>;ziBS1Lp|mnxPD)pv zy+Y)Uw$MFBBB82v{>nRA3vb5Bn2wOMPUHVx>X!fUwAb(m$m;W|=Zrn$A{*tRb zU4@<8ch0_E->h5kJABr2et@XirtnTruP_2?PD}~%(FDLG*>1Ar(PHwZAe;vX1%CHi z%Zf9)^-Ii>%x?l*)~h&)W%{#OU;?$`<(nmLPo6vhQ|DOU$dBlf1_LjBNqYkLl8%zT zm*eD2+=ZEZ^dd5_-4&adWaB-VO)aG^Y&%Jc_zaGAzn?Qt#?W8dwzEVSWo zOOHy+Lk;eE@=idR2d<>Ib{2k~0|XDKh;;p?lY@;e>)` zZenoHBHr@NFFD~sM`7Qm+PueKpGzfSLr1j}3aRZrFA`0w(=&JiScNET&Sx{gzwI(iJx$s_{#8{ZETdrUKAXl69aHpxQZb8cdhW8$ ziQ>t(Ub$?r$|I5DzfNpZOr&<6&*vDACB=8xwjT0SSblYX>hGuoGuoI<|FEce z_AAArzoVn0s!9^2KmLqejn{3$EN?|H|E7*ODSujfOe1f>bS!SYBuTl*Z_$-UVEDE^ zjc&W{*K`)EvEtN(8jrw=aOA3=D38GSc{Cb-Tj{KmS0|MKU~eF?#^t{AJ1h|);0S|V z{Vwp_z&ufswHtstq%tiGJcnw9ujgI}A9k752sza4PZM5ol^h=h*kobc@MS1=L&<#c z{tr!O6&BU|cHtq1?rx+zM7q06kuK@(L6B~wr9~P9rIGHE?w0O`p*z0K?|*$~oNzER zd%y1!YuziF?TN(v$;a8Ogtaq6K|Fij1qb|QU(CyYj{=wU+cgJ$thVpQo!=C*RGmeN zg+vMy0l|)MfE{?H=T37oql?nFodpx3qn}qQYdVp9Y}5Nigz3CxBnR5@@X4gVdTF9@ zgeJez?|ll9Vd-iQ4Oen0IQ83Vyo|v3RLQjd;R0huYo0qZ1+~J<19Z?0-H1XM_+&+@ znU*eoSt=QP4Q0}W+o6O;Yhk2L1+3@~H_+WdmWnN~*ewhoRt6{)F2}WVpUN&)@G#d3 zg((l#Rv5ii{aGRc{mRhIvA5Tl{nho%jLV70J`6b48u9h5?63=~1T)DHMVf>ekA8#3w3h_lFMSgF?QiZtvC^hlwTvDUY_5o{ zB%l~7G7lhqc7T~7D0O&x$pN|9` zzB1b6{kLVt;o0QVxS=@Jv060!wg^FqvR=SD{nKkl=T`vwgdA zo3ij+d77+>=GA_ES+Iq${2LpI-ZV0Uan$K^HXu#ri_GLfLi|dat2O7tFDRVM$OSOVMX0lHgl%d0ZZiORe-+@0cTitaJUNly>Cjh=fD)qx zH|I2H;t(mDu#fTNCz0jJ`IGiNIVVaX{(_YP*EhDmI#wTkIh3T#3kHhDEE0SeU{4wR zi#U#A!K%oIw1}(FiIvV@t={AHF^Nvw&;#ENh;wnf$6Eyud|u0kj#j3ofdEI~J3xc_ zl=?cI18R(kd^v&7r&NiFiCbP2b=Aoh3hk?yXSD|wN#H)$oUCy(+vyL*Lej*6|Jf=C=U#KCw zFL_?JQDz#Q&rnty<(8{;yK*VW(6hMJ*u}>R>#ktT!OniZ|~O4 zJ`0TB5VE5lmyM7R z5X?6>I0-434LMqIL1A}shKfY2ytEKEc``6rxCu_P z*;E~FAK-fPJGoi0D-$R=crGT<%C{Y@y`DN=8D+M)IS{ZL{eDFjS0Nh%;NV&j)OW}< zzlc&v`U)4XI|&sMM3<`{&--@T+W8L9J`!S}DXc_w;8h$QiMJIGsci-3p#4-7vGcEC zZ@?k$AUqk0SW)s9$-daMU>-Z`xq|@vpFjUDJ3ds*z0UTlS-XK#qOzqW8knP++WVkM zf?{Ofo`=)I3s|Qbt>k37YlbCj_Mg*}j3Aa9G#}wv;f@fOsaT5zZc(t-C#9Ere2crh z1Dq*0f6#pNbpzlKs6OMuavf6>>p zi`$wvMnHl~uuu>1a7Ka2N03f|Ir$tP_=gsMnqrX*4t7Mkf%nYACc2$6t9~0Nb7HzZ zEPx-qO?M4EIZ`P+L`4;k94Q2C!Ig`p_^ZO8YGUh60$?>?yFCnYVI)w$+aZw;1VYdk zM+uk)K>;x_=%702x$sTw`Qc>Foe}uJ#Vd|Ly0|TI^+}Mrsl&(l=$jh)pEaVwIav}I zvIl;deyeZSI7^_l$SB@U`*9Q+%bPj;+@KEh+sASC6+a-anlY3tDZ*3ow-6yy7a0Yg z5jU!3&!q7edgRLc-kfNYDwqnx=CIIE1W+;m1#K?11LYY6$2B;I9Dd%YB0MI>qqMyI zKC=OsK>@x_V1=@jSweu{v1pXY=dh@~RYCpq+)>kaCxN{7WSb{u+pIO3q<#JiU2>ei z`$RtXr?GM2^-SS{?O6=-O#nV~a#UE*cQ15a|9?KRj5GwZX4HV~`G=4v#;cqN&}2O2 zuMRv-P(Eq=XxXO++zp9f&aN+rVN8DuXw{UJZ=s3Kqq{=Jd|xEQAWJWNpWB9|MJBZ# zM1Lg&#GTWYL5Nv~j^@TlA;SUYDrR|JfSvSuA=cNsU9)w>ypOcy#Y^-UZ%CP+l5at9 zVTMF8nSC$-RzM4$C+Va5AT#ohvfB-j`Mq*no8j2((^$dAZdK}tHZ9xY5W0ghNuuq>&epfI^2C zUD*+dO+u&0m}?@9oXBLY(G`J1LRa%ao$;}D056F#H#8_PEP+Iind&WPdRRYCNKJxk zlI9+v2omz8cdH50KH|68WY@lU(*QXNFZj7~qrZ0-9HwSwa5B2$NTxLB3W1h?A^|34 z%jKj}!{@U%B*2%#z))3F69PP=22JkB0NKO3R&UlzU~|*2?cD3f@Zn`69#3dKq3PAx z6)|Y@bnT=gQspY2t=}o%-K=N=JK6U~oo#0o;lP`cNQ7`?>0(HcxzJr(n+p;b6QZ2< znbEjzi|D6Gk0+B6x%3KTs)c`RPZrU*y$zh^l0th=MBEAoyGat%@L%&fLQx4h4`Y7; zm}W|m&;y%8T$t1HRdh!4QmndV3*EfM<4?Z6=9#SkBwe*Jll~ zo2rtQIJHr>pQ5&dnCKiEuRa2C<*aOM)I;1q zM12K+qYHOJ>{I>H){&k{MB4at{94{C7pKNF;j(61`ywYP z(j;;pb$HW7vg{hEl=%6f?yba3iv^z#RZC}CvAf2LIB{5n zj#wiF(v4uu(W-9g{aof-2KnMlDXiq*F7(GlBD8rk~>R zvn=1n2h9wF)*Dd4xLEg{+5=1F*pXT9&>} zIPlZxmv&Ykk?K(c$C8UA+)zsZyS!MnE<`6+Iq~*N>s~Cotn@g2NJ)Rx~7yp zjO@IhDYXupSk!Lw#JpykXAW`$=QTQ#DcjG%>JUvjKyb)At9|--vDzo(cO>^OtbvNu z8IrsUq;*#DXkWE7agO76k3IzhpK@Rl154#X2v({XK}mWhX8BPAkqYj5W<;c<;rq7Q zn41Vls5(1)^bjOUHHnoZK!K{8&RaM~rFB>5-?k{Ms^31>6L#fn-Jt}<5 zAwY5F-fUP}S_(kNTDIAoBKMGVncsgEcZZTypwK(#u-&c&fboM2M)rbXLN>Lr)*~~2 zn%--;A6X?`JN$ROILri@y)SS@jm!?bki;aUxa9!D)uoLsCO%IRf5`KG6b)^feiJX# zL;L_=j9C>)d72@NFlMso{y^bzd`K#yF%+kX#(fnqnnvI~x)S7jGdUp{SS` z3V8TlLGsd4wpT0?xZrfXYnhPwJgTl!2!yny3n!a8zF^{Qi2>%j|Gbk9UEiw$9zST# z@&QOz!V=!H!I}YHRieY1lsQG5365b^{pG?Kts#3yiJzsnEhClJTmbEKA&hDt{4tKV9L~#Sh<;=}p&qrpEZ_&sh!KI(M z#NE}Ykz5y}4yD@r>fMt#*@|}v3RJ7d~fU!sIM0h9?49tPQWiHbQH{hDJP zB-6OQhI3wCUI0hnyuBgw!)uwChm@EbBxze(=8&^Y5!~-;H&KXgX=TMFA`&B9f5T`y z1{8dr?1L7ED8_0~OkGT}#|!UhXdl&>i$G_XGsPWHU6mDLcT~kqePrW@pgMw1mBTgy zG4UuO2Auf(ks8+7_~rY#@I(rklQ3z2z6ro%O2cO5{&qu*Ljg4pz4`Shu?eTM&OPSF zSm=B=i0>&n-SDTp5g%up%3>q{0&h*I$`tysB($mu!#oAfXaK+T$1qcSAhH})M@c~< zTH>k~pEo$t1j9IU62X)_8oAB|4>bd{$l_x`a*jfa6S!Ymj&S%xx1oN}MKJ&^N4C-# zB`1)LdDyrK&A7T*_xelk@yb&0%k%0BEG3XMm7CNBKthNg?<-yq0b$GdzWZsUnhzOZ z^K1ZYI(e0SrdGx#uC6$miWSO#LCW%QoiPrRaZebwhGQQP2vw56@P!`)Ef^5_Kws#E zV?||Zc57qYbf%tSVzS$kaZ24jmM458MSorEVjR^-&*7(93vuXZe0qz()qfDkR`2xW>lZ9PGwGo))23 z6ZSjSb*@P1>phWX4c^Dh0HfQ+y_poSaPoXNXF7nKOH~BCX%e(Uc!MICJ3C`YK(cz^ zi)v~2{>>1=xq&!S%*>2ODQg8#q~QbJK>$9sf=m=FobQL;4k5#@E?p;UZ9c<;?NcM` zet52U32DDuRD&TM;=5BLI zvGyZ66?JZCAU155P80?mf@9k@?emn{3lDuSNx+Ge68Zh=m_OB68QJHxQwaloy{;-L zut`!7vm%gPVwS%sC1pv#Os8qwgy%7~d zf_G_M&sJNc>_8<9Up5A>vuVw)Ehu4-{36UMiMk-amT)Jr@YkfSDiH?VYV+O^#X2`gbwiJKr=vChw^# z%*f4YZX+qAP9%8=ehY0K1{;V8IrlbHRXfO+#}#!Hdo^r}KE2$j&N3n)X^ zBN;|FwEeHN0hn6kz%QoDFCsTjoPf7Ts%Ywr{tQyDFSkanZ3Iyh`z<8EcW}FcbXSAD zw+o+$9UK}5$1JVruaHjj-7*4KLgK{PDgMWKuLO@>gH@=2#8EY$VvXtO1t)VFC(V&Rf(-{^Qt-`Ot48qy%YJD%a zOS$pO=1i%(0!^(H-@V{;Q*tL9a~GFStHa{yqf_ZR#)I-SJI*v>Ad3{)#{$_#Wf0U0 zw+nvAB~jBdg^}Mr&g_Gsd$S#5vLwyeQ-e4uQo>zeQVlW!`f)x8h7-P=Q;@yucJZZW z4AqA1eN-MQH8-&S+1RVf=NI8xH;0R{%!eriLM)30dKrfK1XV5Ks9BU_>Ybs7(2nII z$L`4)8G~kT{D2T_;-z$4Br_`XoEYc6kII!bCIke@cRP!etE)#|NCarJ>3+JJzn#}k z(J&~|>Ign<3oc|5+>3lEm7fyya4VUxmM9TrH*5$12(zeP-(@f=hUT#X1jP6OG*VJh z>w3Mt8&*!sxb1&;vMIf@360YAi&t``U?+Nvw40;vrTxOoQaZa_WYUK)2e{00KuzRvbg5~R6liZm)L?DxNgK1vR1Y3*U*=PBKkY{yR; zFITyUpsje&3q*-VJR(!Kq*quJL*(?44y&Hew})Oa7$0;cg)AjwGxmsJv7PLGvXqXm zc}E`%Ah$T9L?#j2#AyhX#yh+KPC-KN=(?X-y7Wt$oYRfBVU-lg0t%$4e(>Wm{Y9*%`8R8JB=SD42pjvcB~g#xAtro%eEi zhFUL+@|IIR@KVnmdL70fqK1>zW}CMdj>k!)P%n~aQ>HwARqk)%VASGzx`5ut3QbfHlC|PIGXbQ%53zAS64-@$kvR@_q5+vk0HJd6DCYdIUgd=B3&p4g-tj< zBBLv2hRsd}>peDqRG5-rN{m&Lf>l-c>ZPr|6I#=zM74xXXcH%f&QwM3)U~}#(foed`&HE(g%?NnwxE}A{t&D{PUcP{9DBbGXLeEUVYtK+r z6sTtL?5XJEd;*yjT275`Dlq$TsW%&oJHVPRe(;TcM=L$sJKUoIj8k}`;U4fB+42_V z;w!X|1QokLdGOJJ_B^>Lp~7QJJfp&U_R&|Aw5FVVe0F#DOVP%wIIxJYdiwE-jVj1g z(IPNdcp9O+?ADI61OI~k4!7JZA8Hb04uvm6R0u9ybDD@2r1TZL&1FU_WNlu4{&#zL z)UG*Cynlm=fkUB5EBHj7ZsJ0hs?Er*DfHq=ZU!O)2ohxD9n4kU~BP)Eb zy+FbdRnTNbQcx1HqLz0@D8w&XL;ZV=Gx|d9{E#`BTJ=0CjNC`@TtDvKtSY+P5hxk= zg{3jY!S;o=MK;gsm(9sL{A~{M*BAds!qF!=hcj zHYx<|(5CQ40_rq?lrEWNWnD{hdp}1h0c>b^^nukdKNT&|P*M2Zn!Zj&K$T5RUjZ@! znj#Y*13&_36-CBUJ%`_85WnVu%|PjVShtf{r+qBjU1Ir3=LxZECy-`CKpY2LN;g@j z+obvSmniTE>iy#3jpx{`LLuO{M;w?os4qq>dheA`;D~_J4CwB{C<1Hsi!i0mRn`^* zF%hEZ7A}ye+?W|YJ7gu}-uq+eXfVW~SFZufH`rgB(>l+89{a_0R%ivtcXCo%Q(DO2 z@8n1jCrf^}FogvCPD=F&XC=D~czE{G(#II#%TT+~xQi9xl~NR#cS}*zANuGZ0Vmid z84y)L8B=k2&fptR9$Gi|^|l`OgZoCe!}vq+d5kf5L2vK;T0zdU5S@#ZH#lhNgm2{W zG0zLS0~ZZ;uKR|#kLy7|*3C=aneBNw@;u&=kYqMjcGbvt-pQq?uS64IMp<-d+iCiD znz>;;bRMSb@5l3Z7su-n2F~Vvo+pvkdX#8_3mPt;wAtQncfC8r3|7Z*c=I`MAw*MT z&D8b)cW`$TC#!z=J6VGQQx!0x4*e@bCgKV&qoH%!+e3lyW~Z+EEPt*b$(qNNgFjp3 z3&8?W%X4`%umL|-jl)v!j#@PQG?m1n%KHtxZM|FA-UQdXxcRkt9cOn{_I(L$R}~XF zyADimu=3UgRe<2|gyCh3bpKAfa>M4$p+xLj=IZ?#79&awFc2YTP$dJr7Z-BMjHO&m zCYrWHG#V+_ZLVw7>DA|%f4u`UA+|v6;y9ds+MRwBD=NN;3ep2R$3cr-v0`7cr?eEA z?v&hXwS`^YA7T36cJq6lkhPsBR{$2eyKI-8VdB>_7qHX?XriczT;aXKz8+7Y&+Hgv z`~i8ZeTizKkpS0=;I-)hZqd_MQ&NM^HVVb(Lwz6^Wc^9Vu)!JT^*>*OZh`bBJl)w- zs$dZUftIW!4l+p$1Z1O7Ms0cTMr6)8&ML z7egth%e}DwUkjjx3ENPeU=+U5?K_Fz$;uCr5)&?tKX*B?3udX+q9o&77hz^VVClFY zxq+K76>|(u?#QIudwn%|^VWx_bbv2P7K`+DK^1PLnucPVAx0UP`ykwO`p*0bu=ftlG^Q&qIeK$7vo|{%e=731j@n zbPX_Ai9Vq|&a~1AQT2X(WA&+70iHbHQJB`z-p;EkAEhPX=<3OPW-Y;ys#@o(e_wxi z^wmI6`HZ7F;enQjCrb@qZqyhAcX5FwY2xd}=9j_w;uRB6cGGsl9sl6lMfx94|6=fIs`c~xU}k4;7a{d*g8e#4)=M{|4>#p!Po zoVu<`@Axh^etBTl`5BIo(Is?QnV@0eOzBEDvFx?CUW`fSlqb^;3}$EJOH>#{Qd z3{4KqZunfzw-kI%+_Jmlp627$v%Z|T^tDIl$Cw&o{%%KjWBM?g)_-30&wisY)kv~_ zQKn)pip*;9xt{84pIH`5e~XDA5{S3>WizN6U&kCLT?75Mw^My!#sK` z(i}xJ(Lpc`Vq%G+-pse8b|@c{dSUal=;nRxY!FQ@G?|ApyA^6k&;Su4Q7gtietdYo zI{vrtZY1$@>zgLk{O}_WzlIgRC$KTn{UM$n6Vr!NK4BTEF?=(yzr%{k+F!OVwDYw=v&rj!R@9@o4gpAzn4C zR{XZo1D0!YtB&!Z$LkT2{f6zyu8a^OI6c06LyiL#Mp$P=RDF|^ zIOoE0?W;Fd?D-HhEhEUcF;4>!(I&aJ1+gyo2R2jI_a*6DUyRz9cf+6axjc?J3GAy0 zu(*+P4_1nix`PKXpS1DW4gO+<#0feFzi3V_WX(A7blvGMBBI(eYI%#n^g0h=ES6j5 zcS>5!W=q`6eUTJ{w28{zeaUvh5wwgB8$OC?jCqcDMxmw-)mlQJt*I8z(3B9^4RF(8 zD0no=zW(=aqOxW&uqVb6_Z3BO3cwsu!5Cy6fHXnn@uB@ih~2O$>!%zapyprN z7QI$_@5L2MyqLI~7PrPa68;7eO5)^pp-L?dVM<~#K$sTl^ZYRtvW_jm9t2{7E>yLqsFm$A|ZLw7h`t~~sS zPfd>{$%0Z%%opRed&dVb62VD09Ifs!fMNJ0#{Z$-zx&JTgVBE=_-CMxrPMJtjw4G$ zcjIiD+1l1GP>fq9&V5ecW_-LxKsJL%EBzbBW!{LLw&JHykYiI;8bpmiqH@T}S?gFi zrXL#AE>^tsRp(QG^vctlVL9)t;iF*PIu2}F_N5mbOyRM^A67gqRICGe6k;c>H%5<8|3^7ME^OlE zMf?ge1DvM`R>UOeUxew#-fjt8*@3*m3ITOGT_6_wIbmgGLqs)etD8pk3M_wXsxWcVFp(|B0`2Dnf#HFr0$IF5OkVR9MMu;&Sid z(|rD@G&ZoK>wD5rl2yd~cbP8yM(8u*RKvlbeT%wUH5T*zF@OgZQMG55Y?}Rn#kV=6 zQdB_R>rHNGMDvqBKdCYbFPGOBu}6d+;b)2~coDTZ7XbquB{um_Z`vy>0UaMSlm8oC zpK79(FzW8~hmEs7%04-Q>C_64~iPT-fBLyPdbRiW&tN*r+v0;Ji`nb~fw+mYyH*1uLjFgK7l=&hl zq+$-C1rt2E9;zu65K&~$>xC2x-!>4;QG~?yUR;tDpA$sVC|Jh$(f=#iv^9@2z!cw{ z^M9H<>+^r?yB!Y~4XLet=X3oh`!Doq1uDQ$aQ%4$xJ|#0{KWhV#Lbw#ZjhE8&43}X zo}KXhUOu46i~y6@4|U%O&W?WK9CIrzD@PRncf}@+-VpD@!l+Q7TqRsYrXVP!Rw%!p z>_rt)9E$Y#ZCCs5?czE@KA%t$2lHKsmYyV~yEg%8b$;ZJN zwH4$lm@VpKsM-2Uc!ad(g2!h$X6x&m>v2EctNPu8S5?iOO|lO3_tguiTCxY=HdxBTh6o`CK}C zu;d6HotTFDsJ!SSN~S6p01Y&sEw(=`-p==lhPmxN!#R0Rwd&~Wce{;=gbRp{y>wAC`woy!;G`O4#KAuoCzTX{?z z`_Tk)R!)8~l5BUQgh|Ss&oYd1L^QWA;jT}r_FL9twowNC3`6K0<@&JvAX*LQgF|R& zvf*T0jha))9oOLMkk9TWokm-5XzJM^WEjy0t{bA|MnqyTO1BH^p|pV z697NC&0M`B2X?4=tV%#%2yEalAADag@2>jxCx;(E-||Ywt^!_(_eH9?z|&x3gUr$X z$nDsA^%1n5mgcl-dG)rFi8-*WhF$yPM^Fc4eFC>yo|bdAI1~TCT~5Am0*=(7z|K?~ z*+zSB*mrzqlaKJQ0bHs@?p$4o`j79)he%$Op>(uxTW}yXB zc0D|Lc^k`PBRgERAL*cd!uqSt(^!t{EidkOx1H*8cW%LxF~X=PvjB}ytWfh%HV2MX zV7Bz1+8#Kl*XtG?yD|Mv;pCZI008oTk$b@Isg?NJ(nRO`&`8>Qi*&emZ;*Wj)dz^~ zueAAAL7?~X_D}DUn0=+Osc8#_mquBRQxN4EGYVBGqfiuglTD#QRdo1+8XO_>#+e3- zuF+C1d&L1BoG5rQ$c1>XS|QtfGqdMr`yZ{&wS<>u{v+9QK7JyzZ6)V1*rN>L0azru z^zjy#AB6prC)sTyBK?BX%&0UpN3D><%7f zhrW)&xx~cc+;&ITfs2RlwQnOb8$Z0N1mqYD**=p~HW-2^rhyqMhYUf%p9DYB7ocl3 z*VXMDj@)I{v*IC23Z9UjiELz;TFpFDc9sgm$O!95jtL0-l{Iw1_wdJV#V&9R&D1wm zJIZXqzOB}V;#ja=GQ{{KbHFjRw{;_Us>?H*&8 zT4d-sx2r@%6W)diXKwjr^{uPCD5{N}oB-n?+%BC5yi)LGnCX2Fgq8pPN%U)8#2j2| z#&RvExaHD)>NgV2Ur@+Y<%qG`F61gy!@G8h@#~SEQ}JX^oSN{q*WHQtesLE5~f z=q(4XWdCkBXBQVXj^d{%(2D9;0@#k;>+1#?)@dZBoaER829so$?aih|M$nn6_R>pL zp$w~gcOYM2dYI4ts9XDK*Xs-?1dIFJv?F^_G4Hwmg6tRqepP{uX8R+*;!d2`yAS{f z;ve9S7Y+DWvYnL*EJ_>+r)PnTM4pW90m_(SaoZnll*qKX<2W zKS>B$ueB=QlU?)2e4rXlQ|AyJR=9Y@d|zTzwowyjPd6_K6%q2;kB$6u=jz)T6(pN( z%gHK&QMpLyA~J2ahhWzKZVZFGI6RM-TY)PE=v>dFB)m8Ay+3D!hBiiRJMY)QSlo%1 z22tVF3z+eiBJWn-a#L&3&R|TVEVu!;8J9m3JJOm)lG@fke4Jbxzxf-_woo3RQZKuu zU|PzGpWW%*l_!>jm`r^6eY|^xd4)<9CL-F4{H`p@oB&<(Iq@#DJW672-sQ{lwfMbC%N5u-Zk zwDD5^9txHk?=K%jSUEV%yuEv&-{ges^p$@o@R6thb8dJjP=Yu=92YqQJhl8)4q)?7 z4IhXJE4hOOs%8zJWro$xJG1KYM`BVG4ht3t;F1_9GLr}^KpU04LGJ4GB$~Qbq&A_g zvcNtwfJ3dEkR5?|Sz;NbspH{)06X?vMTN!`TPpaWrC=3XAtaatjqUzPO4nXsL>RAS zo(_R&Av$ORnpM7r*(KhMD`5sfV>FqX)AF{3}sCOTV;_N>ou5 z5{hMH0)}n>CMhnUr~1(wK8)uaFtoYd0+}#guVF+$ymik&B7;c4nuucL2n@#WY^(rg zC2NQLHlqBhwzi!lzQc&73G4d^qqZ0j9D1Z^h#3na$W*%K{3zYaTl9IRR}klNI`lSO zTwOHydOvGZG4;^%)MX*vM+58)A3nszKei2Kr##)v3)%wFXLroKUEV4Vk^$vU!X_eT)7#>k?QGaMB?lNl;TEGzW=~*gEF>&c z8ZxqokkqZajvn~;6lQds1dc}{`MUms)C|+9bA2d_-venWYOrt?80QV;bLLnof$P1o zQTNgtp<1{iWV1x&gV?Mwo)_&H-O5>P{bom?fHgV~AhV63e?NI#VXo+vvQ6bYz|uY) zrK*8xwSerS5Jv;QGV&mxb#naKG027X_zT@dE$;*d@L_!FXNkC>y#3WWL>o|z>OZv< zA!HxLV38%KVQ(a16?L-tL14B|xgywundfqc5eK&Tl(D1m>!EKD<_#^-%MiYHg%R+| z=1tj1Az?$g-3kjawm`U!5M{BT?#%^v^4&4U7yMDafU`jo@jlfWm`_R+#Nx8`Xp+Sz zAJppy+dY*>lEt(^WzY`)J)s&3tdR#+JLwCNp$J($PW8d1GW`8rw=96TnBGmg%CDVE zDHZBGD+WmvfACQHxhl&8EJDr1P%+C6pHERXp1f>CU!Avf4qY^H2y8_ ztvofO&;cuy1&xfLL_Ai#_uI{}fOkYHS~7{-LWdRjrt)oG8!uJvw+UCO+U@7Fb7fbt z72R;S7(^ZC+xxI{pGIk8T|XYKJzwsv3s-_GA(rfzLkJt4V~rgVI*b{cCpjbadIy+^ zss;{SB~rOTUM!wMewveWazOl>_{37!=WtL+Sg0iI3k+Ix6}E)?n~8XYs;8Df*$7GN zg1`v^P$;+cSF}M!Yl(CDQw6z0Iidwt*qS9te|`!lgG=nPchR%`uAt#+BBN2{6c;UZ z4n(mKv>eRrm;FcOIfUdHYo1T-PMVT7+dfyEs9e~rsx>nBzIV+E83%H3J#`ujV*ibn z-iwQtcG69pHm!l?7m%YR*~!#Nrf=H{pWIBedZnkzr7&{41Wc*+ zj*NTeb60&FBBKun|7Fd}C8|L)1mDiiuD=@1LgTa3jTBAEG$WX22Pn92R=!l!qnL85 z6}K1fV&gG?u=`{*`Vw@5jq~<>*5tYLh-d!e{UY4rjpCMFna>xWlt?y0Yths3uFD3? zo$}=8dDACrIjI5;X*$e7E2{8_U7DxftGV1`)nW}r0lLU`LP!^BOc=V$lC8ubt1CZ= z_AkHZ6ZEHI+>^}{qV4vu^K@=CoB0P=u1tniQfd8As`bVDF?9=Mv;H|{q$it-f$Fj3 zV_#LOJBvq&5E6{Vf6)gm10G3v&zweH=q9DIDX%5AU%RnJ^9wJ-Bq!Nj&F3bwyEg;i=CR~{Dn6NPk1M4P)c1Tw-4A@pL)MSByHYXd z{rJPo{-TZg0`SicFI9~jut&t)RBtxEvDw}A6*qdEC{=9y~N0Wpt)1$pwk*q{A zF{0wH3H7&(zjPvzg1KLuu{KR?A1> zpJxTnoU$~Y2}F9wbr*fPKJr641Gu$^4o-W0@{hNs%KC-jXn%r5QmkIGEnp?P%53;4 zB@iXeD=m+R<*%x? zC>G=Wi#Cs6)!O-`Glp)?W@)a3te*~tFz4X)G@6;jCRJ`U{Hh1GwSU$0*@k+I|0)a! z48d*`%QEZ4Lf?tF6;tg1Oe4?f#S65K62_JrX8^r z3$A!Gaj{boXtQtFboBZQC=VVO>h|ItmlyBM*hG^xpZC7v&GKRB>YeS;lN}X2^z0sL zTKHj%OQ8iaGc~L)CX6~U^Ia!YXYioWawS9KCjFHETf~*=IUf=1!>@(H4GeeHd+d1p z@ga~2^=k|b!E9veepibt9+47MX~qDLT+wOQQhIi;Dx?*}QbmjA>ZW(ys!mZ4k9>u9 z^rh`ZnK2yCs!(yuE0%T0`D|kd7|MW5RH6?hOE8o^uJi6en#UIeLwFERh|rU9$*%w1 z(`_Ds$oI*zCXM&}k(t)h$gn`T6g2So{9XA5<#t4Ctu_9CPn!W~{(R5(f{=<)QjKT_v7KLR0W@3WCxd5o~0*g{- z(^KLY;xLxK^Wbm1amkK;G!h&=bM-gD1S*W?0mG(LFg#Sz&Z1oKwA^2!32`L10{Tsl z1&%5R1b8M0z!dYvlmX*g>~rF%aByaE|755Fs>Z*@GlquXq!)_52@VUu#tDlP3ThE+ z@b7w@(bG5P*A4rT*VOp#y8y$DZkEL0@B=2G*&DrUxpo7hIK9NAp8UiFo4Ve!%@53x zj;VEgXm|YQZAI6-OM6jRBh+cfFVFpr#R&DkBc&((8pl)o!b4l{!q@(BWs0r(Q zoY&6AoCWpF!Y+Y5zw=!DL&!7mhC#R}8~4u6p(hvQ!S2HLzOX?QH|=L*dWY!x5M2Vs zudsyd1}2JirC4X6^1RP)Le~__TPtd1HRdae3IOuc$-{e6 zxU&6Q*+)ZtKa-U%>a*USQd^ycqeh4AxiZxIvYNRdiRqP`OQh9n9V9~g7UT4L?YXkz z=+&G@bu}XjFrVZ!h&f7faiMWPwv1MYTaQUxCo13a&wl3QIaYUYh|h{BTwN?gLX0^_ zZGldKWc%fGYszPCp&{RI)+!wTQN{e1#a$qRVBv7f-xMtKGm~UkGuDQp52xE7ZiE{A zx+&*vfT$zP&8|sis{!p#fR{wGcS?OUFg7aUr*uj(m9rGpw$ld=Om}+s1b+@k|Kzx$ zr|$jmZJIAMPVlGnh}aFn_`!3(WMr3~o9<^PIt9I=S?rb+Xt2mce3)${1!O zj4>gya0s+0aF?}VI0RcYDP%k^Y)G(JW99@B<=wu%)G)iJNnuqy1OXbboRWDw0TQvA zaJ@*@FhtZj@FQw}3ZIc(vwH6rNC?W=Ol)ihWIy0s^V?29%`7bb1!n*XF3|(ctlgES z&!(m@igr9CRoT>82RkfJIK|jI8O2+DhrjO8RZ=*=ctrHxBm{X8uUahDU$L}gR9$@e>Z!WAh3`-BTICr3#2{ktg^rO@TA!oq&h z+iq8#&&?FWkt`feqoR8)rD^11bEftI@xA{}l^+n8zUJjWemAoA`5j_he^C&6Br2m! zAJ;*$)+)4(Y%|Gpvy(FaUCnyJNBEH8oMhG5n(3kuomt2^y3kun$F47Li?~Q;jf}W! zg^oCNhA=RAk8GY;4rfu6Otb#nSc}pyda!rPNg*FHmEwMVHbWb^SbI-PHf4IKj>HE( zG60~o~w>esoP z84pzfW|_j=G{@OPpsMrp0eR9-0;AnM`KZYl#uFbZ1P{N(u#7aZjXy?DFLyx)c^l4mTw%%E z7EA6MpKHpKxcbRj%y)?edTOSILDxE8n?LGNJMmOCRfi3wmczUnvnH(HRn=5~9T>1N zX!JqmBNvPKnAJ%U1DC{3PCi&SPAN|R)?F*oN$i>b#H-s-$Iz(va+p??ObiA+aArme zD0tEP)P8hqET9>EUg+ds@$BhW#f0iOx`Nbn#Tw4=;)V8{u#ETop zZJ2we+8IDpTGjk{fQwAJpG$ro&gTQ7L>ETunABvi38L*Gr8vBiag*HDH|~q=i6=ly z4J2_S71lE6(7e${_|>wexDx@ew^(w>DI8cUJ3Zetf_e~4vJO}Y7|rv!0ww{69aa~h zZ_8&?+HI*=DL6}3oVGf{$O)RILkpV3_~6MCPKRNsz937xdQA6{d#nB7r0=-a%=)F& zOy^L37}lwvhYKqn8Fe2c57N~Jh9Rf=fQJA$>5aNr8PsSzF5=|xCD6$& z=&avJ{fT+6w|S;0QLuMc{HXIwiBDmJyX^fg@D06=@qpnSaF;y!Q7${q$qj47&XSs` z6VL%@6zA(BT%h{6ZXWgwM95&|Va6I#;L2VVo0|=f#R}kr(3EStpY_wktxXmx-4<0m z;{Ln*TpV$4x044bmVWk1l6G1%Kb`%WLvrqR?x(z`1L9Fm?L{1J#-Flw(;HvRQX$ER0_g@T`!P!qzu4|J5 z7G_-n>xLR-?GgP7Sa!M8FG-hUHw~M6f8w%D66;ZsGkDcPu zH&WKRb@>Mr=($|o_v>r&_h5Lt_(}@Ed?boNmgeau=UDQhUSxk1;dk1auR&6H&l4eg zLa!SY5-|viWEaaq9yV*H8OGHcm=8ZwX!5)h$?}#Asc1DhIl1_&1RvJPL#JF4-Jbck zUSH+LNBAB*q{n{BUDL+(dF#ClP*dO2&N%En>z~W`=o6F0OH-4!B7cJwXLl~x&64vl zs3-XW?n$4Cf{z%?TZ0wL3=Lqh3@{EuHBo?9fFJPep9}Y0jETh+7Sa)!0SO&0_W#Gz zS4KtsMQhVTcT0z)gtT-cASEGPQqo;RgMgA!(jd|T(w!omf;0?LLk|o&z00v1kk@6t!-(Di#QV)Dwe7ID_cnRlB4RE6=Rh-r!lIEFz?-s z7g>|kM5tMFw3#;W&||s!-!4y4J^S_7arB+x(Z9Z8^z%=iev_JyXpu?m-eI-^^5$es zxR?}7fm)9(=FK~RaL+8{YPBU`oAZgnQKX!R@^j7%AXEw%r5rwD1M^j)M-B zL=H0|c>@!ngW@A|-x!}Koa398PNuNR6Jn!tfsSuia+>x- ztLRo#VkA(K8{x(M`}>@8^Yh3II&wz>VOU5kIk+mgx1Z9$fw|C3&$?*p^S9Inar&CkEUc`+o%{5D@N8ctXgc>a@0jQ8~7iuy>DwGh{h!h%LWjE zT94Y*2iomNw=IJAVeRY?YotDzpVArz@EjT=)JsYrQjPi~poE(p8C(-8pbq44(nVhj-gN2c|5O z3U!U$-lChrS;Bt37i};A4pCyJn-@Yb}xlw8RR}hv-AzW;4gbl6nOzM)Pl77K}R*U zIDCu+&OHcdb@lb<4+GLsu!(ag(4Idpao^rYY3n4`v0dZMb}m@Zc^n#3Qkfnx`odAQ zBJneLj>oJc21xyR&!h7>l^D3DzX2HDEEr)k2^pT278HDVJUB(g7J%s5}#>#C$pI`j;$SvGldXu9Z0S;q$er+^#VGeD%!m&RrA zv!fvnP__d;3Y69oCuB_44Cm2>0sWhVrm!L~gF<(cmd!G6ebYt}&!{b_-2d zSl|6>)%V{qed{xTV;7~5Uh>@dI(Z)Qac!UJ`CzsvpJdo17(U~-VGP00rN2Msd^lAj z*r;_4CQ)@T>F^_ZJO~NGu$v4XJkylQ!(f`7jKKHVNwWz907enIi5#)`Ck=kc7e`85b}yIB>N<{-VSJM(TcIR;%STwD~T{`iyt_!=jqsG)({V!vJ*0 zHEd?aV^^xwOdDfS=%JZ(B}X98i~VJKxoYZnu)kyK=4gHD3A2Km)WU*kR@>88<$0G~ zjg*+S)nIVkPJb>A#maQ%NxSP4V6`y0w^qClg-ITwMLnrh9_+W=ml zYh8C-=)f;}M`Vuj0j@Tn)BrSS2Y?H4_uKrA^(j`NXt53&)xOHJbaXiZrLVN>6Auc$ zZv5vv%;jeTMJ|+X05Fahb^P;HW-VEXpB&X{8U;Sets1brjaW-V1OiNZj!n zy7i~a)wTw;)BtVL(ODh$kvV=_5^75zhwf>3JkZb<8#6^7!sYE(r&H$Mlk)d323Sn+Q~uUE8ySZn=ou^xc5d;70NpB~WNT}HqK+RELX zD7Tg$sTY!(p|+B<4tD-Z(?kz1Motn5Q)eQS*JaKA>1%K@<;BLs&u0S^|c8`Nb?Cvw6&bQqwegT1qN4R)* zguZ|>^JtP94o}-6E~5bZWwTlR2;O#SoiP2;m;(@J}?R4Xl!}>`ppalU`8KPdhgn(L<3jBBr83alTaGgkU7C&OC<5lfH ziv^EBy*QgcT0?Rs5F&)TCSWJ$Qirc*g0nBZQZL{9UyW{F$3WtxQK`jhL9RUlEA*K& zOuP@y4yUw)ijouiZH&AEiCJxPDI^!b4}Jg1uV!u`NO1|7eBM!EX?jiCh6bY?CH7(x zyX=WSaS1f?rSOVLsa@tj`gk1r_TdLuV4qXmC}WC3buV^Bv24y0;!CU!3L7!JkkG7p zRIIG6X@LZtM9E9aClv|c6!4@R>AnhlL=SwubSfAGqI7nen348s_;k9Y^CC#62>4>S-oV9iFF7w zJVt6m-MYirD4)eYUv$E>cq!sZ5TpoOmfn|s`%kPXVL5~M!(3^-n`c+Z;x<^dGb$6juS zLzWFj&K<|zc1XzGh(9jPL9{{ANi==@^&>T#ynr>$nXk)zXzS@X8lRA`t&JFpcY!6^ z)C9FmDKfL*6k$^Qa|^*pzi&cYN^wS_9yGfZ5m@P5}m0K%N2l^b}JF zkP8O^7UG}y)%etfcZ0(exwKN4W<4)*s);vi$r`rolx+E6;Isk1f|%BEeJ z%l4(|U<0(^uX&lW$3I?Io3;aC*FbOIb+;YT*S>aPEegJ7f4FpgBv<9Q`$zx4_^?j! zfCT&no>Y6s8QA~jfZp1iEB~y0fgof~IkTXI^;!C98ZFfafkH&uY5%>~` z106Y1i%bjEf*~*8*GqbhYL-aGhIucN7xWo#|812Tf!Avep!WnKrSXy2M~VGi3}f^( zSS)e~_eNena|yxxzVzbW&A9W2a?R*<99$WJO1JVFu_x*1PBa(o{wWpYyXt94D;{i5 zYLAEdG-7BQrhb<$$BXlHrHul0SKSx=7m zrdn)6-ns2XgZLytzHe3Y&7Gf=dE^Ga#`BnksQXsdvL zr7$BZpp>tje5Bek#5X11B{y9OIN&%>!{I%U!H2giVEc8PZ>N&+ZJj`f*&r8yUMQ9gpP?KCiA|WY~RWcO#AM>S_QA4MI{(7oDxb&)S|^D>{|!9 zOx?URK2GFLNkR%Zcm~Az4gQn&9EwcKCZLfBRa$H4phK}f!cQNS0*cjD*HWQx{$K5+byGdXmRS8&Up2eU+w~X5Q`m*Jd(1Sg6a~+el-6d$p%}Y zD62VR9fQ}kg&-l<{Pt32ftJCC*5^YdgOboEELsBhu|fa#X7zp!#RpMLY5l%1{L+uH zC#C@!*jRYS0+FHdKW}vhXJeWMN9>Rs4jVsO^yTSb8&sP-WwziwJD8CCGL`kb9w^OD z6U2wfUw=9R+*!b#3GgIilSaH=0l1xhqsD9DK>h`0BCyc|dP|KQ(J)}{=s4;73^)k* z04n^=z0&-FTgYQDcvqgj4=}Xc9{>LPxe#S~WmP^mnx~UpCc{yt+eUK^0?4dr`(Z4S zJ^Q}-zP$=elrT?eT|k-{g~9ml6(|HS!GTvzDHdSTypt_J*Mj!UJsADuO8EJ$@e&D? zslFWGM$a{jj{~}3&z~Ev-c|NSsyP4-Ux?^g^v{{x)JfQHFy`?*8ffm&u*=NB8Qbzj zL)&UKNHmqRli8u>E=-Ijs_`AEj29jeJnC=ckuej^+t|G5&(9hCTDMM~O`mnFsFZ8& zd1GT7W_HM~V?ew4ub)Ny^0rXX>-v;7#<|eDO)8b(oh^9UEI3kkZX-;M2fQapZq`mg zPJ-0V!1wQ8%2(Pv5^ylAw9=0%A7Xs;(6$)Tta_2fHF|qa9RU{#jT^S+f2Sv&&>;c( zu$u+@1<>z9SiRuGVQBP zUEqdTrh}@gDn#pm%@;wvIp3EsgeOal(pfMjy3j}PhAA68%|cFI;-C0jrRc9$?oTW& zGJLCa@izlvDDi*++~JhMy!cRJDwFIL(W(fOa0u=BGyl(aawgaDvAJiSZ!b{T5 zS`1D0{ZjJ^p}(%mXqz4h?*~*F_%jzQ?ed^40T-Neb8|lkH_>Pg7zAkZO$h^qB~=z# zA@nwea+qNNt@cUyW;dDldt?M#>NHk!9Voo?!KV}5qIg9+$oYe)JiSO`@P3cM&E4x#U89+NSOq^!2Sv>ri*#-`3M&YDA(V8>{^ z%(;URKDwctWy1E#$v$zz;SrIRbm1O=d7H5pX4ajX^fwIMDlh2&U!T^5jgQki|9A$OU{cX&CLcVEb19+dVkv|7I~j~eBD z@yHACEcU_#mJU(ErEA&*hditS65By`wenB%NJm+QzeAuwcIOxWajB{+(LrdqU)VWK z-mL?N0CY>%Fw;lq*v3l~fr%Vh#+Dx8qk%%n=$J=A$HK^DL{Ore>@|X8w!g_rZV&!o z%f@M`57=dOLk1CN(9R^ePr){Jl}hYO9#(QT+UGx8TI_wp>VU+TFt$9=&#;ikTR&i9 z8>5!N^AE6v1y1h(u>S!Ji+olBVVzH%WiY^>BxzppzyV6izua$YL07BS<@q<|VP{@5 zq+z`2TsW3RJ`1an3uxkae*=Two|JU0rq1bO@*&I1j!fA;3RQi}?etUr1be?2{5fbG z)5lyHHq-H3_T$Z$9n+%eP+@ZW>4{cqF}_9!1Xs68Ti8cMS}Bmb=-fyxEV1V-@|BHP z@SsA$CVb@OPz}C?EKaYVohUhVDr3m6Z}j*-+zOQT#UmtPy?EVpQ8mgZkBkct3n@xK z7e+OT42VHEuN2cBJ>2>(I2~>O>Y!?9{BxKR{d@HO*`*1m`N?~lDps4f98rL{VzhQz z^w2yHnv|fl41fQXf;>4kQK;2NMgHE2P|m&Wa5tD6hN-)qul-<)Al}L@&EhrfiibDN zz-F$gt+zj#HGlqQUacFHk2m^AGCznqYZVW6}zA z&KG4)a5K&DstWnp+!HZ3^>`)i^G^9TVC_^~Y;$+e{lKNKuV0Yb_oS@dtR1BLRVsb& z@RU#Zw2|$4xTx8L1|LIDqIki`PX;?rlE;=!e83h27r>``et)Jo?Yiom4E&dulLfaP zFSTCD-wVo?J12;jnCxJnSR%y9B|2NhecQ@|I3>|n@!G^}u@^-)(Nb-93oUl#GIaW0 zQdpQP+fr*0l`t_pFruW+ZDkqLhXwNV_4uH6);hDda64?|@%IFet+>1^BwVKf;FbGs z3XITiL;Mf}J=35|zY3Q2Mr8&J1EqBGjJ{e`fCr7r-@6xYDPF6ez;{f;a4K<>SmwT+ zKF`L^kwf5l7I5pNn*Vlm$LH2>`2I|Jm1+)k&8(IO^PSE*v_EzDk4#q_Di-B;`Rk(w3v{O z8ju>-#g}coS9ESDMHi0pAFLAAS<)d@ET9*MbmnR} z3BX*-o`z|+{hI+Qfs}@EC<1Sj;Z#;u!m_yond{*&cpeXF8LQ zJ!vqctUzzFK5}?4Ce%U}14QjtZ4dp!1MCqWQ0Iii zXP5k`(!jtE!oN#mE~Ui?Zw8Mebgn$o(%GwlAr-JN0A@?CHkTlLTc#cM-&=2_xE~z z_M)j0rn>hxrGY~M3+lqcS*lTMn+McI7yEkb&@v;;1Mnhe8wQ`tYK!-Qd>8cs;Viz% z)wHo_z5;HYTNkS}3Snv>1gSmmEsi+;^M!+{2@5-7$TAKBm5{GsJWEzew5OjaEcbey z@DR}=jhdgh9o6!i>4@}70+}`q`g+YGQu~)-C}n(UUI2D6XQ6JaQjxU?0q$SsxD;3E z&9_B&_vx-|KgU?|ZW14VCT}A_SQLv^I?szq%}oB4uxYoO`z(|7lfeE zE#Sp>5xF~)(~?G#RZ)#9DG*eKlw%s6Y){{sWNwnPp6AHCX)U;MXEM?gE?+hKM9rse znEns&_FUsm6OUbqkJ8Xiy>@*(di*Ug38s)fB>}b~lc%SNA^(x0m*%?woAM_^Dt|bd z%PV)3C(9FMDL4^e^GN-aXbZH_@xZ=K2J>LW1+YQ1-rTeoqy`w1K>8xRZ|pJwCG!gX z5j9%Pd581bJgVFk{?cB6_gm^krGkWheOYmg=L`)Zxr66mJu1vesu0@LL?o-oE9;-~ zqJ@mJ$v$olpd=Z<8lclRzVWDRLZMsRv%1lIu*MpECqrpZm%f=qNJHJn%(SY+^4x1T z`}6ZDfG#q4a7p)knB-CQg5T-v@g$DLS5N((7yPip=`)Gu;KBhNTyJk5mCa*24qXWO z+4YAsxqHxNUd^@`@4%27wcCqgl8ZUEbY3RoL?^EDS4Yi#8WdpJ<_;LBNMTsQ=a6!4 zZeCnQxf&OiQ&BO1V|IcfalIbVa`EIM>5lnyo^m`}E|(ln7bkKu-(LO(06S z8yV?IJo@ws%@z^uw+-Cf1iW%rln~Z8&|lB_X`Iu8im)Q)rsFiN^Y^%Nqf%QRpz zsYi9{K8aHQuHg*gj~$>arKZ&e2Q?Mi+XJ1D+ZE;8-a78?mJC?r%cO|J;`*yU8W?$7 z=D{N)_JVykH?NT1*UAuj6xs%Ad56Jk)gJg4-eI)q42S=_M~G3XD}2=`6%D*}GJ=U} zXzcdGRSq&{E(kH*CCBDvcf@meF5cIQsRy8_#npWYtLP1o`{sF67ta)u2v=mwZ-Zkj ze0bG&t(0nr+V25)d)M9SpACPJAu2AwNYfLt*%$ygVjm7+h1xWCJ?!1=pDNy%P`e7 zkr;qMAJ$e~e@#~ofzy^iPa8wP?C_NPv&00#+4+0MkRjIns(^sb9$?a>#16;zu96*$O6Z394S{v^r+pJhXO>~$Fn(6wXk0Sgoc!fKn`e%g8`c+g9-MoTjE(6ewYW=$Xp!Z2=mcZ={&da1IF277(VC!e9Zg3L#?)uM^4P$V7DOkugS+XJ=EKj0q@f&-3IKFor2Lb~&#VA=;}Q0c*MS zT-cqj-&V4++tsRcltK56hWc}omEhYWKY&jZo0difY=El#razmJYMz#9>k+?RwiKk! zcAu?<9zFljZ=e?yAehy?D=X<-F`~$7EFr#S-{2Qj;ymAN0|mL9Tj6|sK~Fk_C4-I2 zm9C9ogXsHX$D&uYRCi3?r_1=eP>k)?eOb(UhF#MC_-dBGhi8}m(sYw$g?1boVuFbjhWv#3H&AU8~Xg}0iwXU5|^(trN=PCJpL z6BhhPKE^Q5YXFNPrwS>i9sL@QDj6t5c|79lY+%BTx9I zrL<4ZW%GMgFVjT2z8)b#XO_wCotfigJPpwnPAJ}fN0CoR1^|aIqS|P-80wZkrW`10>*n?yR5VVvG> z;vSVf>pa*vzJpghIE$?h!{&2qQ0S^>MPJg|+25v0`mx>ijLTu7NU2~7=jCq>Sq-!{ zfcbaIaAZUpk+%$f;Ml1Tb1Th*yFZu$70-*~^-j$d9b-Vma8_e$Yi3wd*F{;S(Th@@ z*H*enXzv-c&HPJ>{i~Mr2Yj!g`=<=f^`*&+LdFT|K+s+I5?RGaA@Pa9R_HZa?v+P3 z+5^#H+X}iE-Sz_Zf!`j*u{krKlU}lss8FUGA zJ3gnzd zvK9D2P#8yar3#!|Ls4sfInS*3g1TdQ!4IBaHJY^y(4ca!-bBl4kt{nU+;tdd+4V2s z&(@z!kMJU;=C_m)h;D1%7Ai6fcO1P!rRAp9&=%|QdMzm`gUPO;UE3Gl39**iuwq&EErHso>iDSXNdF+$%57)gH_ zadIBt2yY3}b@mTz+dboQHm=1@|LovPbF8tEAe*<;&Dsqy?Sc$d6Cj8R# z5{f0JVo8@IJs(aYw($IDsxp-MzAsur1l76&f%4`q{?spS(J4L1uGp=s{;f+uYP=*o zv3KC*lxNtM8ZR^(DH(OTkDgl^G0J4GS3TCeEe(=Y9akf3zJoT#!MUJaiMfrqd{l|SU zN(|?_;(F;-v(=p2+}SfHKmm5dMu?8VM^jk0N#86qXsTqNMc&(deIwEZ!16l+qJjG? zfxah|XbcdWe2L~jX2aM1(mMx?w5`2Ed-@Y2aZ-#T$0q6o31QW^)JO@a>aiT>W79U_ z&t%>U@na~Xh+(q^OJ5}iQq3}cqEoz$z?3f!+19SyPX3V`o6HFzZ@_$^NTrshubAZQ ze?hZn)3s}tz6vMTlST37-j*XY|7~q0oV~F-UFyE-J#Q&tCVR4mQ8|?9gN&cnUz#I` zgnqZ1_`qH=!?E9{WLjVP@e0}7RPlG`VZOj73yh-&gb{u{B&)y6Wq`c(`BVs^S88)3 z>2_-~_UVfbB8#?&0+^Z$4M31Or=hcSS>iq>dIOF_c*By10gy&e@4NHAtEP z>3%&b35_%tl*EhD||zX&%1 zFZ1U42+-#hA3jM6?#Vxx!MPL&s0I-{*p$7Bt-r*QpfAR}^$IeV||U^wjO33P--+)x336N%FJ(6sB1;feZE zO9al9^kf@jGN8n#dEl)TwPd~9A~`a-@SQNfC^qB!Z17j`-%DJQtpucxvCn<)beXW< z#A3DmfNWv*dLH7@>-r^obokxw7WR67`tv%KtC;mqPNa0=LW0S=x(n!JJc?$3D^4Vf zR$L@3B|PZzPz=c8po=D`d0wnb9(@?ZYm~#l_Eq7)oE3!&HqYw80M(k;lbGnx^dtMH zZmkfx{!Z+<{s%5)?ru5M=p`XVNM*@q!h)mx`V^OBk7v=||K_`+@0|SVnVtWtVsC|v zUiHJK&K3E1$Rf@Leb>yfjCT4OFo!+9XJJ!xwZLz+Mc(0rD`19bHd)#>Yu@Lj?2MN(j#t^rlx>aEi z#h<^+7r!}+`dn|P>vDZpdMr zG(k7)fY-HDjCk+~e#ZvLJnW!aJnru_d#5M9JwBRf0t!)#c{WAN^RDiOag?1kS*iCt zH3yn1>q)b02ikmBuYTTNEQ5_7&4RnLZ+!m*i%U(+=4WIirvU?H4*BVQ0MeF>GY(VY z2i-zvqp=bJUGFHvnRNhC>YEu%*f=x4emvQgCn%&#yl##Zgk9YPZR_}pKy(H)-?^z@ z(Vl4T6O1SauvE{Y(D~qrcAH;YCI^4N8I}QM{_l91{%@F3E}WnZ;#+NOZ)LW;mF-cd z(idPMlUV@LLN6$O_jYS7=zc5`y=KHbfdMKPkIjV!^)psP;eYv0o`N5W>Fjv6X@%eT zBkd>|`nCD%(l0qXMBbLzn;Yllrl%N4eA+f_(ii*06pX=?VxRb;7hX!Etn;ld#UU#= zin6UM%eXNr-_Kkl*L{paYRE&*CS0Pd58Ei`)8G9(>HSAab$m=FQEJ%isW+p=lM4^;<2FIeqAI!SFo3jJcXw*PuYLNiupaL&Y0typ^0 zU#Mhhb_`Oyk{;OPw|zrmU00@~hkYg4dGIEi;;ps8oi!$-(3EG=A-IW+I#<*kg%pW` ziN#6AXNR6Aj75fSQ*~bkbNUz4cV>%WZ72f8XRE*~)@A2vxQqcjUTv^=moV^Yq9cD( ztj+F$aUDaAa;}IOl-#bG^~27TAb}^w@&HFsa{JbVCl*>PKO^Xn?T87^5tpH{YH;Sy z6uj<}2Gaq=7^H+1H)eeLE_~%YU)1W(n-5d=sXhLVnVL#8#A@Ju3!tHiobi^dPY?Wh z(?a(Z4*nOwSNb3!Sz~T)ZbtB;{NZTHJYn)1d?-DLKA+y{cIIjXqqwT-$w``YFhMc` zFl_ z#TYq3LhH}b1cziZ!T$A@m-a}a_bYBN%^KvBG z_u!aio^siKZ^Zou6x!F&O1`(0uv^|sujiyp`XypuhCRv+5!~sz>C1kmAmQe8e{*!= zAYOU0X6@*R0|51>zN>Fd$+6T*wt%2PkvnTFxd|CmS~Ox_srCUZh}VSW%gpt@_kDDq zk>s%Z+0rd{2ohA9g_La6QhV1GmuJ8zht<riUyWz4<%Tk;H} z9p$J0F%6xRH+CX1>n0WoC@9fgsEQ|VPF%Y$HsH@F{11$&^X^`&JDAre8w2<;-i|rE z3~dUfjJ=Bw8~0n!#JEY9slwr~%vbt+`M3Zvw?9`oNf->@o7j=ECs9Y~kpe$tWBu%! zMAWrBMwqy>PFbLc_k33`%AU6&zhx$uF$w;Jeeq7|GJrmcLvJd)tf$q@Vk+m)W}*24 z;XrktK3F|jvvbd=2AOfpZ2Kic`EIw46s0ZCQ2pGpzyxhcRYB~_`_MhFPk@&U@sl*b z>DBfOZwF+KSkU#g#pe#em_Om{_eo8vUWmmXd*|_x=&HB$?9TO&$_{8-wU*u?_UN)T zX38*&bL_&>QXddP_eA9eyq4~epO)x!+1bYS%jCe%Zy%bC;pEU1e_xe#8BE3m*X+w4 zHGe8`uJ0<)00=AxS^{03)j(J5D(4;d-Gb=R_^*2*Z)XIbyyPI! zl5uPdNg%n=B5Dbl)4b~;9hCf&unnoS zXggL~8qILI^+3)8C?sNuc8-3O;))~03_&{|!oLI&$omb8l_0EPJgJWWC>>&^VjyJ| zSd9`AI>EQ3;i`0>huotC>u~|$3jQV)^LM_@t5SZszPGcEJR_5gyzH*$AV&D|s9fn0#Us0z}f+;njF|bGLL9TjhLqYIV<8zceB_ zbRfN)ce!t(_Tbq@hcKa?{*-kRdF0Pj=gS>;yU;WEcYV6~7o>!8?fAxLNyP?wKHIAA(+&w|DB1l_dO@c} zHNir{*5`Mt9nc0P%BsbeLBs1?a?!^>-Jl3j=um6;u*YMcTRK8M@MFeK)a){ zI`0CT8)hJ?nN4Rwlc=zr;c}+=u}wC{v-Jh}45vzpUB%YYMHx^U2G%Lk4C}>uj4BxP z^uGTN2R~@0wG-w8b9Q|sQzd)#hj){S11Vn__ZPLWows37#wj?jvd^Nme3SwaOD;1Z z%apB3BDp5IarfQYTs~L5O`u@U=3>2_JG>uD6gt&()I>*IY2lNoh`b9PfbcQm_;G|_0;XBdC?r|5*w^Ie0>4Y^|-Qd(TL=cUXbk?Ty1 zmC%O{Qeg|Y-|d^Os^Rb#3XwqW;;i>7k=6)8d#?LUVscM>&z|CMYcln!4a@Y-{<@_JaOTjaO%M zYX&9LUU0^prAsgdr&{|>59mF@usb|W8Saj(HETUsxiwRmkuPPO+LKN>MZA8sKGZ9A z`KoNQc{2x9HVif*mc%S-aO#?a8m47)P_9-Qr&le#x(E-ffRJ4n7~VV_nCst`mj+kW z%miDBDRvdUr(r>PAE?H{!+bi^<{=QlviqH@bq(_3n-s!7S@|u!HzIaIJhrzGYzOn2 z?(GlD^Zsw`z}fG0mX76uq|!I=(%Q|f)2ek3L4~cxOJ#e^fzND}79h7Q;%388G z`TZg`hkLMM$)`Uo90iRyCJue5Blz6nt^cD_JJD?stkHp5*ZT>RRoK6_1N==|m>=i?`gkWGIF9SP;tm3QiOdx+WlZPom#Hd7 ziZ6Y|Tkv`aZx1^0zV0z1>FMe1t;QxXuobb}PgTuX$baT&tl^RbsEo3Ew^2w}OYe}q5YgLq4tHvVVq6gPTvb*c(mkrL$U-saVN-nFu;St^3fA!G&$7*2 z-zZ1JyzYrK6ZAiUv=}6r8sn{PXHYY>=*77bP1CzQ4hRhW{pbxQg*9@L!rSZP%Fq6w zD`>JHb5 zJO6^wy#E^uWzlSTK3lt`rl**0l``+0Q_CdBj!5FzeS3e_y>iye8Rmambz++*4Km~z z91o{ogsJ4O3ox=8JbX79$cb<^aI!&|oVY4tHIA^hvjhUs6E6)jV&Q-F5}+sLnnBnK zkxvjt$MtXCK4Zv@{u2TYxtVJ|ZEC*9%>%<F6Kw~GXsOYm7l$#M$yls?@ zL{i3WI1wR6`qPC-PwXSx4h=D2<@$7Kdc$R4xCOG)C7kOgHQ^%>SEm9Q3Jr>0(t@P|S~NE4LUu%W#Ai;lQe{|Fj~Nb! z<1(=bJXq{LWpUoJRfXk(03rFG{=V+*4s=PXIK9kL^BkTPdoba zx*sn4%A@W2dmT&^PSOfXt3Pr@W$NZre)oAL^AE2jZo<*^nM{V{f6!L-m#S3Wx!e2_ z2bdKf9ntenh)&%ZSkd8}lRWp22g*6*b3t)w*pTRO+M|W9G^&rnKU~Gu)CBm|$PcU= ziADT~E_abO`_?y#e@3C-eIk+uF)eMp1*w5I{%NXOsI_*R0KR99GL<0oQSJ?8mt59r zvbo{5pR^SKpssJ9P_CAij6Oh~9+~@#=u=>^4KkUj^Z#Eiz<-{}z#8K>X1;JdxQXl@2oBFDr&f zW3^9a=`p}yIF;W%x zd%#bQy-YhjK@8|zK0lB-|cJ`gzW&g^eHvsnQI3TP^sO2AXQWtojkP5et#wB(fY{=C+DoT zX2v1AgA1qyO-)TtNH-WUYCb^Gea_l(&dS^CdN<&@4jA_L4oY3}-vQiz;pZth*MP0@ z%l&{z10cNO`b_%q>45YGR+l;(KNSzT<$&1>cFto)=eNUIR1gX-RH<<4!nYqKDI4=4`FCUOOh45V^Kf5#JXErwsM*fuiD@R4o;Kxk^io7oiQ=c=M5UrI6} z5i%&5R|7u$5`x=zEi(yN=b2nrc;Y`1^>%iihniSWXmTs>`~NPGKR&g$e(Rpe^idCm zOHi_AkWt0x2eS-!4H`ulN#N3_uNY`FuMg-fWYko*8zi8&rYF&@h$xz#J1x|5obtjJ zuITe&19G%XyV~P$rqPrcjDQ3p_ntq&G4j@B?^^l8o^h;Rr81&jw{+c}b9H9C+IeQZ zl@$bWm-CjHzedut`{d6HW(Ar(Tc@VN-yUlW1}0d7er_}tZ4GoZ++*AV7|Qvq!Vr>C z4l20gS)tQU?)*sJWh@;WLZUIV_jnAMWQlU$$aVxfN%7Tos^xM8CTqK!$Bfa`TbnPo zkEZE{=fbA#BY`c&sl7hpDL9HdPX$rKaDt z)`KS@554s3^T9{+C$lq}n~=Lc-t|iJd(P_C9qRwWbpYCH^i!%0U_?tlfG4sNI^TKh z4ctY_MCGsJC19^ZudFO!CymBRqv{$Bc+wW8ei>9c;R&PJGC5yyTfCh*VmnK^S5z)> z?%v^fAmkrwyHUJT`|K@1w zxXg$ma;W(o_T?wZq-S$_5Hdwa#;KxyKCJ=Xd5jq1o;;5j%qb~+lUFLKZ^FlH+d zH)suT(l=WGD1?tLF{RFkuCQ(Oi$z$P2i|a$KqE@3ocoL*Ku}|e0d_I}*^!SAxwYL?Q*PtyE1wrA8Fx!y(JF+RSW z(4^CsG8GXKDWnVcF@tN)q86DL$fFz!nF0k&Hc={xc^EYTNXYWQ-2E3r27RxfLOUk= zCGHR|RSMX&nIU9PHgojZQYRvh_Dm*qo4N=i;F!=R z#G3`QMPmaB2p#iO5EC1RTpJ^#{DinzS^ zVs|lS=tgPc2{X8@xkWE=GT^s5R2RSXW~!92L&pw6Uj)d6{+gT9#~$D)E&t98k>h*Z z02By29i;Vr4eid$x~?-5e3>Ra)`^lBu&@#bX1?k5XOL?Qsq;dDe~AyfiGZ@3U?bhw zr5AWYfz&m_8jzz>RKdC8w;AsT1YRUe+ox_g#3>c|m9(RYR<4&R>HRfa zi3f79O%33U_R_s{+<)dOJjyturx$F92GjaInb&O0Xop6Qe1}H|q;~^f!}zhL$({Hi z6hEdIVEMh=r+rCHOE9gxUTfkw)_2|FK`@D|g9AsT*|)FvcU`RO&TQBkxF7gq=uu7m zb;I#rCx0Bkr;b+wNMeSe+7%W3?T4=@!hfI^sx;FD^RF&nu$%L4`G%q!qO7BaXL#gg zxX_0Z{^4Mk8s=aO%Q2xJyGgIv#QwPNT?1DP=G}Bc&Dn2~JV1PNs#4Zqte*UWE=lh1 zc1|Vf)T*ZJ^X!)lC<3L8pHFp>CBSWfw?SYsMH>ytB$aVfn#qr_bg)8_MovPHm0Rl> z)ZZobOm-`AOaL$0oTXLrk~^FV_hbJIWM@~hy-;xg61?YE5TS(H;~u*ACBQ9|P%G!# z7jEX?_jK?y<4i}ZzSTQ49?Hm!$M5|eB*Zz${rW1yA-wD8GS92!8?L_RYge#g+3ZO{ zZ2Ju2gC|Ey8rpLL>N*Qd;%@#QRbLquWz?=scS?se(v5UCs5H_I0@B?Lf^>&SNGc%R z-7PKMFbv%_#PB`%p7%TJ{NoP`*4i_B-`90tac{^ChLNGa1#V~9Ah&Ny=5etgE>5Xq zkzI#)?O?_R%t$yX>*{82*p6#J8bH!^+kOgkvx9*!1YMEKG1Qmw+88pTeU_BohTv|v z{n9z1zji_BcafY67&3*7fQ}t=U{rf4r#AFl4F}$WvWga^iLd<2ayzdzQ{lICYUiV* zL8W#gI2ZPWZRl-L9KcGcWZgr=&og@AEgy_L7U{c{`{U~5&4SJJ7ti2Bk;N6n+2Z%2N$|MQqsNp9`fS4mecz8NX(1JrUfMb9RIe z=Rl%-->D=>_p@j|u6B|J8|#>|=9bIL38RjmIk?n|IgSBgg8TKTyWa>}?m)h_YODm7 z46T^p;9nHYU{z`_DG5wUa*?Z9!h@QK<{YwUk#8oKipsPxkCK61m&Q8+@KPtKNb$c| za=)-KBWHLVbXQ}%+TA) zS1?2r4bK=SjxuMT6{*_49VUI@Hr0{2nPH2961>VoM2bfE7~mZ6XflNM2W}wqn1XKk zdrKNFCEM!@!*0J$8EW{qN=5R}ugH-*m$xTe*~-8qKVNcd6902-P5N7BgR$_T_+|3b z1vaKv+sZA^i)hTK!}1|b94&+CQq2r+c&bXhH@C%a&2Qs)*nvT zT4N^`~u5DuH;FL-7G0FL9z zPb5|tL+-UN=0mBSdO?!ZQh%BV~PvQ0N6JVCJ)%dkr zO;5=qCs$nY-YP7Q4(rNLi}6UO)WG6fxXVYH(YfRG2997nDjb6Aey{=$E6+#EztmxT z%<xZBR>C%{U}DR!ATu>ll?4>E|I zqdp$5L)j`?4wzRwmhJBrbDwm9sQ|d%5q9d<%xAYz6V^PDS74~Xm3Y)%QLx-(gkxV- zwcdW`c|t34vdL+bfGC`LDnmUwjlWmImrIG4lsQo!6Hw~~qr!>?B`6Q$R{cR+{b)UB zJKtklx#kPx4Q(8hRVtT2bu8tVWq&<+cQUqS&p&&o{arnemmRN(&Uw)craJ}||sRY@=spN34Euy&u{N~Q2u&OVl_#1lGH-f?5Uj-^_5+^*oc!x8v1HUoo939gPvk~=J6PmHvrE!5QeHi*s*Zw=O^id9uE__M@_z2rf)c|0N7gE%ug^S%Z=KTdsq4LHVuPuD+7Nk8yNYc*S(*AuQj1($q= zEK)ubd+1=ffz&87RvSo-OI*ku_g9)-ZAK|1&MlZ=#nCN$%L(|h=W$~H7IdP^`fx%j zewGMG&6RWX zP;`7TIq?l+@^!ZeESbQi*B)RYi-PHO3-?w}V_%Hx!{iU7=)ZEypWlr`ZA`Q?)jDVhwVS1K@hXedq^S<4Lu}ca zeN#E`SE>$+fAQ;gw(fh7Uv-QkKS;#3K}8Hlj^lH&cvZ#gWisl+bjhj&(K8ytGLhk8 zC-bD<5$I{2X%-+3E}Wf5ZES@0y3Lu*A=rJ;A0v(b^P6yn&{{8oPZMR08X<8sSX~)U z&;WE^@yJfMAp54XkNkWCWjNG4(7e`b4fFC`DGwHaSaoFBaZgE{=|}hk2h}l0=SI27 z=!jcIT}pPA<*MFd5{Y1tlFs07-m=`v;R|d;78L3noJts3EkP_pCJ^EZ4u1eF*H)0C z7?rg!{bCh@>W*XUAkiM0bXrp!-(N|SvmU{XvCJ8PKqzZz6lbEzukz+^SCo?C~f*FoiatdVM`Xe8>36PnZ&Sp8rP10&1ug<_cDpSCLR= zxNu@`EQIsXdu1~J-7hOgm9G--(~oOGeX$UfGqDQKwv$8=^l)4%AAcPunK{ehS`e;o ztL5x#RX2`D+Uw})mcB#GN)^kN24fH^V$nl)RLA)de70RP`!j`g-V+Y2<`2}ak0=?u z6ty^$NL{U@JTSrJq&OnDcXn^%nm4bOG!2Vp21p6hYx@13TK-1f|W*L z7wC#$j2Osp4aWJNI64YR+<`P<64LzMaS`5O?{CwnvY4Q?=w8Iqb+XJ0Rq7>7g@2zu z8!DahJ)BG6CLlLwM$-1DZx(gioceFV9093fF{Rtj!)no{(y}wa<00N_%^MZfoYe{?Hd&v| zy;Vu^mFZ5(RoN)=6hjhk!KD<2ZT&B)LWI?Hk$78Zw!L&KU%XoHU--h*5;FwPVlLWf6 zOpky#d5wIWF*_EB%zMvtP9*uoj$kbE|0*2*M}0qJ_ndQ|4JNC0IIpi_wS>T_CzvLu zpc6qv@AzqwgK;g-_p07!6pG}lD;2&^xHx7B(H!;nE-Xe#mukp4uDB4p2Cv?-n7abx z<@*wVOxa#ZV&IY;ip%{?)mfxtWjOD(dT0~@tT%sq?PlTuWs++_K%M$;0Js8gY{s8Y zOcKk=;(}mGGU>8kDV z_Ob%FkA)zjRPaJ_VeBZ0>Dppt`5FXX~t#F8^Jh>eLb>{&GDP?vyANKnjHWC zl-B=B;H5k2_gGudoR+Ojzn!-J4# zuNO0b!P~a~K|F506M9Xa!7X>s10^B^@EF;PpQ)t>T9YA>X0T$8vk%b{+|+n|bExPe=5KgOS? zqZ93Dfg#MYW)OEp5^h3W-CPadkmBTGj+RdpVQx<6YTjRP~W|l?y(VkOmvo zzvM(QRwZwR%0IC(NK(#N-dD$Po|^5a4Za4zeksARnbNWhW9wlK(O{ zR-Lfml9q{fQ8u>Qox!_v}{;TXz#5@CQ{LMFL-aj55uTtPp z63mJ?Gvyokqv5F!b9MGhqYzEyv4CtU0X}|ySZfp2U!jBYKL@30f(1lA+Aj~7>)6h^ zho5`l$LG2`Rg5(77QV$nj|>6~1r3D)rK-(n<3Mgp*d)!JL!HlZhwL>`?&w-zXW?Um zWhJIBnu^baqTuE^{u%7Xt!2B8i&JG_N11%Y2kc))zNy4i+o`F0iM2_voWBCdj@Na( z)FV83#hU4@J0H#YxBmf;zyLjzByg&oC!GsGeBxJ%A+g5y*CW-8DDO8ftmc?q)?;a% z5Us)wr6v{5;vd#CO|-{c@-y);Uf3gwQjq%Y5V7<4^esI|e7OsdnI0M)z1JLJXnsW$ z<)$B~PQkWkdU$yDf;y?ip-fdFPjS*H7)#V6*joLRzcs27c7)S>Xo^b?Yj;Q6`?j3V z@d?-Kg1%Q+gPBmhm^$Mhv~lu+PwWHHy!qg<|AtBvkN!iR1;=;)2X};qHM7P6z*G4j z@Dz%Kd#sZB&Mmp`h)OziX;;74gg{rsWiPDQ`%CIg5%_{9Ntiuz?yIW&!8nlgF36K^vsvizWWc4Zv`Ek)20lzK`I~I=E?y^WfTi^6y_Y=ej&Xe z!c0qk1je#-p%x`Cz0-`vokQCdAbCPlFFxs&<&wF&oqu`cSA3JDQN;S!jF9d%NJP18 z&+Wa)8}A?yoWT*&mRyT#iP6JTw1nO@j-5(GOvuFkW2Efadf~F4tdZUF$MhYl z;L+=*{i`SW=GszbJ9~ReZfdf(X2KZOif~~9ak@lsN$1kLzmSREUslOujo%YpxNRa2 zE8so+`Z)^Sh>*R<^-Z(y?L=-l`j0>h5ag0jMWCRH+4t^M{~Q7~bou3rEZoPMVI0TC znGS3UrH{WBW*vi>!_izhAQk9B3nj^*d+rl;cDGy&y_3t^*>y1r{*0?~L>pYE@uCa@ z>N6V8`zw<7Z?aHf_F+h1V6c~Vd4`vZ)(|iX6@>bi@HrFx^s#YIF+F9dAnl`-r6d6dZ@aq2u#p|hPCMOCF$3SA$Y)ThB=aZnCw5Qwe%sXv9gh)@? zGoJ5<*W{ypP>^aOF#A^A58REwl?)6jMs%-Oin;9>K*Ez74Xp*hqFwTlcyEM8_jlO* z!p5YQ){BGQr$?#K&#+1<#L(F6=?mqMKN2$n2wSg{`Eap?`7reuCQ(pnO^THI`dz#x zf4T0QYKA)}R5>sn*quTe`0$_jwP%dyuCD&zAO;yCHflzCOMpv23;& z4(c$z)2bU-EYYo^2*+JgwZ z1k3}r=#$=TB^hUr1d_c*vrXwct9h4%h{hwrlOW1{=E3THw*P7YjyZw3JX(@9$FtY3 z?bSa`yP+O7)~A=(D?(P;6{LLscb?n4xq(VbJ)}^~wmb1&>0ML^afpTdUZ^N8)do`k zJtj(GzN-Ekhxi?hs!)Z-1O>yQs>M?XY$}_1{P9ET9afOc1lVz-?O{u8m@T#bN+@Xe(2V`~?0o1iUrty)L%ya~MT{Fm zMO^gC^7$r2dpzPKu@bHhhW_pcpmQtR7U+q#gU?oUr~^EhyW5_ruxT>y>f|FSdaxL)|CoES{@(IF-eQCx?E zIpUlnT&3u`Wzc-YjS3uSz}bpzWbQOZAmOPH9os3K%z)g|_U~RZRL73fnb;yG_w7`f zs5Xhfee*uJ#`2f{#X|yDzf|NtE|m2vIGh!3I2o=-15@gQ1*_5LseFu`$)Hc(LY5+W ztj>n21rwot4vTvo>tds8nLJib7dwi;1WpWJFr42r@p_GBp8fM>M`^K5@;p*MS1I!# zA#Ckx#HHuuqYLia{Q;?l)zkD$6^Vx2tYtX7PN{Vj&!&fsq(`GcdDdiwE@>=>A=g=r z;&n{n-QL~^LRhvo$LfZLFMsQ~^wxvOyC3*qEu_T4><6q`{YW~2OYDTm>(}}-a4;Ni zJ2OtvxRL&;p6jM2hwdz z9@kPDgu|Kjfh(GO(@m&<&Mm6J#%x2?q7z8>h|VC-HQ#;reNb_{|2rhX6Xph1Ffj75 z&#;G>-0}fQ$cdL6&o{`19~deT1*NW5&MfoPGQc{fX6X=S-psN*G(J%n=I;tEmLCrW zCW2sjEGZMpO{(QHYgpeRCM&yem>@fE&=Cz%_xa$4lL{c;5mMub5Zhph1$~z$6JhMT z!J!8kOJK!f#m+)`9pa{OJr;dqwv+XX;jVaz*u=B`I9=_j833f<)MrXnEv+Tn%maEB zq~+Vn?LXT`)F&a2m4{4SCSQU`Ymj-+DqUtBO!7k8#SBDxQuHV93Ej15sZ4BLdHN$% zM|CBD%7bg`lHBt+#W>4Z=&tSO6B1LAK$<*rHr#uPT|aQPA3YLn69p{W-NSkRI+1mtG$4%E&qNbHqocE|nYF&OSn7VaT?6*rJ3N6Q7i% zKgT$_fZwdVhzI*d1J;IO`>KwHFZ*ua?mUWlk=@MX1o4`5z3|iLgBG|OK@`FBY_Oo= zat`kK@V zK#BJXaLe`7&l`l&@~=e#Sr1SC-xvt%lEFi_@x1YkS=h4D^*Lq~41)ZBmIKs>5u3#wYqO`Yqpniqx5Bqp@4rjoes9 z%J-`^z?rJI?oBf4N$aWD%X*>-vYX|6bELcC)QgEiZNf`>%kQz?cltp^@T>c`u!|Knp5c=0{_*JgPBuu%xzvf|6xc--q2E_;U8CB@2E7hQGUfXfG!i+WRGw)$~Ol`!bw8C-iqp-@v{L@v+t3p!iJkd#!csWOKF!5pjqt^Ue zEJJq!KNRavJiN6?Wo2bAE1Urq79D*z&-{(BQLkTXjSXk;Ym=p4$b;Mp8KXcTiRl!nX})*oh{rWkG;}l z^}BEy1lXy3*#T}uV(P>|#_jILDRnIrXQpB##vJ}N(I+W3PeU04LR4XqIZ;Aqzdq31 z%|rmvbVq~z`K*Qty=pLln`>PgYMAwfGtl&xq@%@20&NX}_mhE$yd&69^GFNsuQpn0C zL{aT072W9XC$S&FXGM^Jm=v29blRrC)`rfbt1F9V#kDp%H zRYGur%O6ODp_NaHld{4nX7Kb>Jc@d!A%`ik71sE`i6z9_+n=Jw`+Gcb?tqrq%azSI z@BVSh~E>B9qIo7pP-5^SXVa$0pkSHAbTkKlCQlp zguCK5%BG`lJot9rC|W<~+0VfB&s$b2lqR)01`-C#7OM2YnMWMXzPd^TNMXp)B{<|F zlrchnVvjxuZ}~ue`TR7P-S?l`8`wwaAfdVfDI^7T-;YGZ1Cy?>5${Y>$~5)*xted# zNqR&t?~9~hC1*(qQk#hdW|3g%b*Q-;!+uo_lLpL(q*D4W5t&PO;U}##P~__GQf=d1 zKy8t)JEBU;Ui|vN^EN8Z| z+WcGK>jda5r@4w|7FiLk+n;Wh&#x;3U(19w0(+>tA$hS79Jp`AT*q1KP$)S4Nux%} zT8Kl;M|p@pA^5}c?D}w|_}IE$Bh8_+CRD7?N`F%zEJ#&{oB-qeR~w>&+%^~R2a>Gh z;bMbkCyZ{V^U{`9Zvq7$X^-xnumDXLD7|vM(v|%;%PXC_wiQQ(tYYFj~D#XtC0+b}%! zoVde&^E*J!PT$wu5Km495zq|oENdj}8ZUN~2R3`7Sn@UO8?$IDb02|(cu zZ~k|EoB%8jIjX6tl$<*szz&yM%{?V#9 z(aG&2MT2r4q)~|S>H(;q_q6bp@-M_HXP|LetLy70se$ti6z+!RLfKn@=ypFProlcr zfnGl3I?+x(v0rv+pZo_m1;!TFqaakLk*?m(8e zdU^@_8palUR;B-NaSegfvp7bvY?+-wWEY9{>C@V9=N0{R!S@|bzi)TIA zm|j_{=PQ<6Agxq^>M1g=I(#lK=D0PJ(BAo`Eqlo*;Ci8(%)qBBP$fcR3# z+m`k(XN(u?S3dP@Ail~d1lgHLp?}t~Ed0rkimvOu*m&9wXe;$R$SqYy8;O)XWYJUN z4gVAMA^Bz+@i&igf2gznA`K0EJMzeRs%F^)=) zS}7^7r?%`5d=5VGW1o8#eZh-ZLqX*M505w|cgE}yZlVIajG5tsUy3Y!maupe=pk$6 zR|q^<&s<-=QbV(xwzg% zoNuV&IRD>mpPP-SKt{8{5ivQT;IUo~j9UKh66t;Fsb&VVQ}ja;+@L6AX3E^5F(zmn zL1))gNg_|bx|im}7c?2H6cORO=9=~&bxp8+T>@XjjoOg?)Me_8Dj04rCWD-cz!AT- z1B3x_4X_~)0IQ2&k)?Lhf$vr|EHy7FR;SVY0Y=Nd#QGZ(jvs(807(bV-B2%%C=wuw z4%m?oKmfuLyf%W7&x$zwQ3G#110!-FnYo)cZ!tRnxw9D{n&R+X9CZSmvH!FiAY*6| zR#TPNAG{w%uxaYQtiOHfri5`fw4xvz2T`#5>vXk&m%Wz=LZp#Xs;DyUb7Sk(LX19I zH?AijrqHRfc5&&-72pCFYtVu*y3cS1=s334Tv@&`S+IPv1_P=l=4>@V30NYm#B(v4 za^Mi8y@STO8vw7n0Ss=*FjqCZH}S5LrZ$%3V+__bt5VwL^xb6p(uMAWj|Aq6OBU!z$_u`c zYR~C(HY&MJVQ;hU0D&<^Ud9SZShoxFqZ}F%k5$#5{08ec5G3!(?gu30N;#dMn zFU%+a_pvCddurz2-sfKu+y6#%?F$ZtW4WEwiwd`+!C~~#o>8SaR3#9NwKGu`itPJS zTGOTRB5GZ=qYP1j?!y^Q7+4;e%Ma?;;pqZ9XZ4i_IK*j)fT3Flj;!tWoHsTAy#vMd zqOuWkQP*?_kbXZ(nR!2i{{H>PA~9v}8JO6boHpSoyf$F{t_mpow^c-ffyB0YuNR}F ztN5)eQ1~Mr4}^9Bzqtv0I30Wm3~s;v*mh`m+JpUkhRtAUVCJ;PIL-hL8UdZ6!hG|B zw#FpGs6hlg4o|Z_qNlG2O4;q}PJft~DqKOA3x~6vvK0JsTI2}l5ozfK*eu-L-!5B~ z<=H@A?_y@H_aDn(;RdGlinm}cE?&L}W-o?3NpjV&g&+;tt}p-Uo8%AMT$6_Ucl;MH zQ8{TX(5nh<3a9h0`R^?bznmpsk=H^MScEX70w=`zCt^WNf6V=rT|7DDex3%1UwmPd z_gJxb{L5|EZF%tTG-EFQ9(Hrd2V^v^y};L>*mSh{2u7R&c{#)lZG9&2QI#vjc%a+y zUn>-rn3Q15Uh?y2i(S)ozp89bxx7A43~{vcW|Y0L%JxZ`1R2QG|D;?bGt;iN75O^J zOvH|b!bgqWoO-W%2UHe?P3Eq-)~7l8Qs$-6A$Rp>putKweN^~?A1W259II&B1s|p0 z{ffdK1Jfbc&X!3M$=0Se=XDah{L{6!*O;qq{q~?NLizCMJK?P2uf8o4n?NeZ7oNc^ zy?23>;V7VFwrRByeXn&B-ct2kJ-jL6;tkGjdWJrnZxMA80~XhJ=ezu!BphDd=<1y%GfbVe-V7OeEWXG)`sRgfgmfE1 zs4@@wA`dyn0mym|6d8FNsa_5XwCH~eXm2O0=G$@~A5sY6fJ(6$-|F>E5zaU6=Ekg+ zx{u~K;z&XZDWO^He{45rWWt6mLjL^u(96L4Ny93e-^4060x$3I9h`QdW^v!o#qJP} zxmCk%C5s8BnOa+eh+|jcE5>&VYRY7IhpDoDzEm#ujbOvZKm$cjp;Hez@G z6qCMN^^|)7#xSqMsbm~6TttLps+A=^WInSOkG8Wh+$wLPE62$-Z}=l{{J5;7Eupb> zl(PWBox86wxdf1w1ph7*k?gq?y*ucJm6C9dQmTo;zx5qDtxp+yciN1G&Hk37^)`N@ znIq+WsE2-$Vn!M5Ij1x3506g<{@`Z(B1TxjJKTo0AZ9}x=1!qAxLu!hb3Ip@y%hcN zi;E+Yo*tK(hP=Jq#}|EiahAh>%wlp=hIiC^;JJrYt@GQqYoG;@5;n0H-S`f!&OSOm z@NxTYM7txz_oNv)@NqCOW*w5f-u=6AEy^+QVfhX?wn#v36MlD~-5K>#{Pa?+a?*A= zZfA-gkBOSm($a$T;C=W2GcvK(=)5=r=Y*tLf7HGS_F9i^t|mHA7KUXRarx2MhJZf{ z-PuU>^Sp$M;wFAIrq<}Uu7vOY;!1?2LO$Fv>g=`D_z`my`XA`YoH`PTXiU$Ciwo#u zd7g?n@~lx{wLnx9LCr3|4>1|k)Z$@Thz;eD4n~E(cRjyy8H$Cu$vKU(Rc~RW=qkOY z{cHY92YkzD>^A+CJ6?{)h;YPhv$FlLa{k7;B}6G&M8NH_#idIE{y65MelfsNq*EUO zp-wR8e2L z{Tsx4N_pL(|4BAYlk72I_rQo7do^oLy|{H&Z5pdu{ZW3$!pPnJ1Pv+zh`~=QXrp;gbUcj z0AUfRC!6HCqw=St{n^@fPdNJB0Ds5V=bLpXHc;f`hXQO60B-g!Ssa2#4)jva8+yJL zgPzB4zj%pGp(m&Lz!wsbvfr(M#Ug}H+wlGc^Zpaa0dlw)e@w1Y{@h0{(pbO{p*HUh zei;8|Y!V1~ZyG+Jn``xJsEv7cZI@nt-aJ}-(8fQ`||;GoATQVEns&<`j_9~W86l&eV%NDY053a5}3*kPIfE#;+pw_C)sh7 zg;&?-8~&j|Vuy$~ZJ>jVTLM<`H3$ANC+Kn$eNiXxE}rE&T+MauYXz_xy(LE`rTUV`=ub-YQyPW96cxZM}C~Ms~MF7 zd(d4sp_rG~x)TXy5Xu*)-v_UT1p*i?^#qV#F4#`!{Oz_Shp!-XJMa-3V1>vw+Xn&H zk<+q$ULnUFV(=cK5FGr`HPI7IlY zz&Tr5DukZ$+JQ35He6Y7DUARLIUkM5>CKiDn>pc#8i#e(<4N6E_yUfI2|^N%*Bgrs znU?w65fEIP%+<-v(n6M7y4oWc+#&CO_pja;7{`#d&mZe#iylrZ<3m+0jrD4!ST( z+xB}+OH+psM%SPk(W#qH;}2LDGO=AhY@5z$Oo4tj8dH<0BpP2?pP&4)aGk#`?~pQD zNbAIeNO!brd8=D&N1^QK=h<&$F&S8^(FRSzbs)-8^j#RB3t+2I?1(Jn_7+@YdYyhn zR)guL<<&>|L--j1hV5DGjt=Y9IiEK2bcV2~i}zfo)CP{A2()Xq72e4VxlTcx=12lc zwpUZ~Pc!%8B@7~`q4RQ{k5RC%)ZYUVjbGQzuk_M*#2}XUOw%cFQ0IJu>y>#OpKS!m&Ely>yIDWj_nUjUH zh5-$mNcf_?1qO4_bT}E(!ccGCj~Xa6%%#=oARk8;k3P({ z-`=#s-`y#kc+Q(~$72I^tDIh%Hf;}8w|%x#94tljws;O#eeqa z&7?zqK2pVn6Tw851dKE}v-~8vXyL6dgD)!NErKR&&@HYX#zWf7{~};Bz;pPIVI)++ z#roct#~6;}yDAM(OUW!&4aQ8b^Y8b)sPwvpH>643?}zP#HLcKjEy$i)o5uCv8*DH0!~bqG z0>}$#G!a_v@e+|*Zul9sQ9vKb9d98#9RIWszX{}9!@Q8kkASY7M6LksrJm(qA;ZkegT?2D2R)WUk{2B>6t&BXjRdl17^2j(Wz}#!mB+Zgo7ds0 zrKD2J7`FGxLE^s9edq9Z5NPjgrp8Y#et4oH`gQ^gICS1d7d?Dp4|-mG9sRD_gM{jNE&O{E&h*TuKPATFFvrY0*ryT{i%Q7pm# z;shLkjJ@M=#E(7gtHn~`oYnEZ{>q(}{kx-Un>B$SQxS=~KhiVOZPG}rXlFJjo3^xX zr?DCh4P@=s(=u<2|9}xEm$LqmLx4M$ck(a|Woc5Qxc(f@N)U3qwI!5BS9Ue;9$Rel zLJq%-a=TfM19k%pc|(^i+v~JrdQtw(n_tMzqC4+Ky{@L@&we}lqXTo9A@HsHXB&R8 zl-gFd^C3>R0_QyK3dD&ms}??gTH!I}r$UGm><)Z5LgC7z^jlJlDwM?Grdv|Szs*~Sp)Gqd1^JTLmr zo4kwLGPoK&FtR-st+kSK{Awy7VnL0uOTCEF$0ZfiySs!yY%F~8wTt>OvKMT{ty(@g#`Cb4jWN5tEsp0 zTAwVnZhejhF_v0b2nyE9%351WTZDKHN6X)Tz$=U8JQh`W2B+&6fv6s(Yub;Vo+?J? zLF=b35AAT1r+6>`w)gP#tgfxayCZG8h$a6?gd;6sZ~Za!M}`W9%!K6SlZ712`HC3= zvN5gryM*NxN693Fik*!x_LCxV#SV3#|HLmq9IJ<;yd&{Y_F^HYjZwnNcg=|7`d;up z&3{mOBVsj9AaJU__$?a)m|Vz9;Ek8pEQ-E!HktX{*oLqaIFw>UY%ezQve8@)@zVc3 z&oRutz1z3J14|2Wmdhdik5GCgzr{mz=KQWOOjITF1tp3x&m*h}C$1kjTy0Ey`eR}L zVSez<@BN`EpXd?X;gc@}E$*{^ZfM6D$Eh(T_?C>VGFs(%tJFde_a#TE^h7h5eY^NS8)0#REHK|x@xmpLf?YhN$x zX`lzHg|tZ8Jh)R&c|RPvluKRrOp0)v=_5`~w0V zTs`NpsBw-lRe~NFvt5O6X0;;MwPb_fQPy`SMcBdZlX)G9Tp3B?s#}!g6O>MdwJ7gr zkG+t6dcJk6*WGLg^tfq>3YgvC8zYgvu1QH5BpCT!G(_Qh94Fp?k?pn0>`*ogw?nee zuV%n2w<81{A5_WN=21a|3nrg*PxFr0`%BfAK=>*0XZObPul<}?OiQ9JV!h$LNgs2aS#I6^W_xbid2{$;kak*i zFM$cm^RB^3x5xJ|J^3EJ|M{UZo6&vpp^mfCpy>1iJ0be>?aWgnN9gh6)=`_kv5;|$ z3m~Zb?z$&bNx=td8%jNO6NjNH91KUG|KiP?2n$_KaORISS1HuT$az>*Y^+OB=D@>Y z_jDzD!iI49b4p#0RWXP>HIYotNP~JWyJU**=e_G82ocf&0kf#U(Wybe?RCSov;WFz zV$%!+eJkU*5YBIQTU3JUi|*Op0ZeIr4?zckeB^Qi3IdS?UOL%)l9Aw!&G*B2*K01N zhzsG5&|W5_LCL8IS)WZIq`}(IIhaA*HHEy6FTqo+&)4a__g z)@(nks_!(4=+V>75gp+2FGJ0o*A#}lM!rp+Ons1-*-Ru%cWG~!X-ofc`1h0S=Fhad zp&dLg?s7kG$3vn`>C&SSxJDb&m&qS^rC(|+)U+hM6!qrR1#7Rb*EMib%=x82p8*mS zyYKQx91!^gGwJh{u2ylnbkrxaKt2R{tC*&#RNYdHmr0jXBL>f6uZRV|iQ(yBd zR~Tq@Lv{H+W3nMWz#u433wXX}H|`K|GTb2gYFPY$NPxqcEeg+mF^VE*v8+Mm$8dod zR*nuM+vskQrwAjN#2{;7P@U6MB0i!4u@_fK)tEjBm%kdP6`QC00+od467adu?uvza zAFH6|PbLwQhku{*WVjYAkwa&Cx1r%2VA#RV51NEz?CR35+rI`I5=g$KY%KcNBOB)8 zRvXpUjaQcX6@^N3lN}`gmX6VXI$rvBz7>1Xkn)$i;ImkmU7CZ-(K3U(CYIv$^8HLH z+n{ZfWVBIw3i1d5yjQqk#O-tkqv#d7NIGS6i&nRxxMD}YiRhyDR&FMM+o)<(X)3ZD zhtu3K3FGX?fzKDoy&>1bq1Fil7R&ZfVOF^rqeGlpX_0r+-pD0V(zoi|*cASC86bb9 z=+CeMKtjZfig@fxMcOypie5ms0yrOhNAyr#ym+3bIg#j_D@;dRe=r2TBOBo+Asog? z!k2XQ|4Zbu=y+|CDXraRuj3O?s^}_T`|>`*hxTgq4K$igI(y zRBLp%Ki`nZl2L)hh#eoxu6Z|yTMqfn-Hy@%6e5r2<=1qqpI$jyDJ7V<9$den{W5HD z2hp;9ewCY=vi>TR7QreGCOqgB(swFVg~cI+V&VcN35>!+gB0&!FOzQbUhEy2fzCzN zkn(^e)@nV<7(WUaHgGCsTn86jWi&B4og6~Op)16Y6t|pSf331jTu|w0j9hY$YGPQ> z?E{bYT18-GAjbn6p6*}H^?gsf>&}+aty@K^LDBXpZc>^M9usN}w62Nlv0EqaGxp=j z1~x!1J=I`;^C#sn>Ain+{M&=Td+4=T<*_g$U$vXRjO@dl+m7||Hef#EDhSXWCJMO0ZmDAT>i+7>eA*8bv{ia;vbur8^)xZXm zXG5Bjf~qb29-g;wCB3H^f!|_ngvJ;;C%SWUPahp|8YoBvqDetKQhdTK>Z%RGyAh4B z{W`Ql8Rkz+>1}{PjO5)Z39AyUD7x@3QcA3I{a#%+U-p&R`nIdiV*&Yk?|&Y;qR|3b zKK3Y3ZuEYor>Cd${&W#*0~X9vRwR{)oIozJPMYYQzc&sUQpnmk`FOu<=tVNnRCxlk zVAGAJC5`57Fankez!-LfJgYW`;34l&a>|oXB8FO=r=T`L&4xw}&-4f4YtPwZ;pQUE zL`iJ%W+c{~sVPS<)C0tlN7A3xJfC*S7|jzzlkYoo&xh5SP79#C#yAxWL{QnY+Nfm} zKXf;?UQY_c?M-31Wsg0fJR4zN!-$4+YhkRwMnI>;n>|==+pXpas8Oyz(MS=^7~tWu z8?{AFSr>}fMb^}YO9>WsE_V$@SAEs8p1NlYs(yF(@Ga;3-+NftekjQ<1t?*7VtisR100VSO{Tj6t-$qF+qKPOS=F%d6BN3PN zkm(I_qRtjd5*uO=6ZS;e?4{HVvk=bklVO{&m#^N~t0FMNE^C@7B_c+IW?+EMFQr@L z8O?e3pND#t!k#DOK!U#9i|nYiwN=35(aXt|6*u70WBR+kDFvp14BeuPNE>$a1!spO z=Uf4rN$y&76BD~1R*Y4cA9ntN#@ZQ+1X{kcSUgB{G3ZBk()@tzJ9YJPhKTwzqz#&< zhCzH)URJ%nT6mK`dahf2sC5@>OhxDvuWsJp4^b!irGKpi%x2~1khib3(9pRd4y`D= zNHD9L00r2ehElT8ijdJ@f*h)5BXPj^yv2u0)>8i;*j*E9LdAO zLu`FEf==<<3IEoiu=dg8uPP7vG994=pP3x+v) z{rD2HgPQ7asEmfIR_sS_*d+%(y2a5oThsyRVTXmpoYL~c!ct*+e~mV z5xaZ8toSsAJ@KyNa%ReBI6RRJK zRAAs3m#4jSnHEMfwO+?7foDXd1UgZmj$F0<5spVY1VIE{GvwW7dXr-mLo_2YH>Jf? zZ-PA&6JUTPg!@)_=|3sW%ChDQKr|C`SG5s7LJ+f*(8pEvbqA}i@% z4XW?Fel5K~AkXam@ED>vMvg&PU;Jx9P~uHi6$Ol>vaCt(HRug@GhMKx?1}o0%H$;t zl`K2_g=NX%J3*1t$H}R=%3JBKGx!5aUYyX-BB+*`)73SLzGJf&8)z43bzcK`W9DZf z5-OXv;n{g%iaNgyMtG;91M%6L3AXrE0h6a2QN!#Tco{5;*W9X(Mh`Rt8;MJYsHP7j zNfGtPs{N{fLj#svK|&p!fs^=1Duzr@1!jXJ2dAO^*UGV`itLV64#~Kd3DQ!Wdu!BK zAYa}PRpu>!yrV%oF}ZE~)}qAAqpR^s`Kd;d+5_g*t_!`nlg_(8ZR>mwih3*byT5w$ zy0J6@VU>mibPxQ9Qu8z&NntT`W@VeBf2&(sp;#zg4~stCrW|-$qzb}2RB=9Ewar%e zIcMFQrZnBPjcA2VE$8|iFxfdeZUahk>u+y#?#&Seo3_W6xh^eESfhHl{vT6k85dO> zcKaDZkOrlcM(Hl;?vRk~?(Xh%fT2U_F6ox;l9Wa|L_oUh?D0A8d(H=cer9IRzVB;Y zYyFqLcy$oltCA##LE8I7VbXnv<_}&1notC{M|UQgYnfn->Du=$Rh`&|vUDPJO>3D= z=dY9;MUCsR!nEkJ@C9GkP2KUB&h7^pS=Kojjdx@5*^fm7Yo`&Oo91gBVM@QM_NzUz zLH$9C<`o)7q)k$5XWs3rZ@^R!;{8kPL=4bWAlMVJ#{bE%kc4X+m!Z z&)fP?W{sx%C769g!rt4tRBHHg|5_LggDKktukcU9tDD>cOZ;jdBLO6uronL^ylG$`HrqBnP*dv2qzP(25t_Ty)b`YIb7^j zwJYA0W($CIgRqVB_BVw_ZsW|DIAs6g3w%IRO*q$kd&&DT2eDt%kvz`oM7&b>F#B5M z%b=zM@Xjnbz+Sg@RW&-lDLN|^!Fm}kZR{hiZ^_@6WN?#~8OJjtcO?dym#}^6EXtSt zcO{c>mE)Cn?44`k1}@zGgL|+4!oyKNT6^f#@G6nhM`@B z;(|Z%noM57Z+RmWp=80WPqVBGJKgKflVaZIr(Js^D&LXledctXH2Xo(zW7FO-qqC# z-I2(s7IK*o9>4jRxLq~D&n@m%EzSNSmOjbk_d^0Dg7S;-(fFkHhXn%$9n=^GDt1&v z6||T`UbU>YTjILxzQLV&M$xmx;6+v&8{+p9(PR!|m#>o`8>;nJO@YFA_3{31N0E>Q z2dJ|=;Vi~8l>3cnW>XDq%3p#pt37q!jhd;!z@*(u%9VivAA5mMazVq>538@ zw^nj8G6eSc`GFX6IG`A*&T;m@0*yGtL_sPsiP{lqBD%=xweRZcs>nP5Yfif#=lNAf zx-C{BhCj$;(8r_olc#u|ot-AQLv82v81nUS9yKEs+o)B2foS)u)a(z=3di(2TM6f= zJN#&A)ryaKm_-%Fj5%Ea0 zqs8Tu`e28D+tSaU`svpA^_!n6Pf@<(cL9-7=76E}Q;wKO;0?c2H+(}GGR#kg#z2yQ zuxr@oq*ll}YztcG75qF!X-jP8s`tgQ&*{6<-Q)(P(t7v$Z?A(4u|bTimot?iQb-fv zb<5Thf8C2_5J3TN?#y+mH{`=v7LDvYQ;L)Zwp5^n5@Ix6gz}M6w*<5nul622Ud%PJ z6_exbk*JbLXJ;C*EcfeSzcLHz_I$H_Yz)txk0U1#kIZ4rXQ&Bl4KnrPI;ky+c0I<#K@w z>&hjsro+xHGqx6^TT{$a+x=F+2gF(GvL6}J2&;U49XOtDN&wAvhd^K&;MiPSE^{?2 z>Vs97onm|9Kj9IO(Yy@Z&NarTKZ_sx|azReKqW?O{A9b z1~WF~1e1<`KKPsI$wM0fk>O|ri>AYEhn(M7hXrCm6tGjqU7!&O?xivZvT)OTs6*td z(A-RSK5OevPtPG;0;psO-Spv`tF>eb(&e>A#-+wtcSvRKyw^CJH_PBrxms9j8L*Yk zx(tyG*zBdGPX+h<{rg&PzQ+f=xan4)UQ6({H)y!~)ubo1^4yYFa!YLB)r;;yo36+z zx`%k-A57|59rU-v)rc*%awSM$B8U9Bd_o@8ES5?lDza!@bgCClNa09M5$ifC`6LLv z;V&ej*_9MIE)hOGZQum(uGgBAFVq%UAbtbKQp%TmI}!nYW1cYrqE+mnh(nsF^vigi zNyipz(weaLdqi;-$Zfr}{8qvBTcv#63u?gyB*Y%pAl#n7BOk2V6f*q5Pxts?GDE>Q z$|rgL%F~hkcFc%)3XuJRizQ8RuK;DuoQfS95Zphf;`xsc@PS27C=)KcOsKTOl99{# zE0~&46#5EPIw`ZPJ;AWZdObBYBM;twA^)fIX3tZKj@us&o3NE2K#^yPBLT_;R>~jnURC2QSoN)d%0fPJ&y&Pyig?>m@%Sa? zU9hOyMHlkXZjOi2O5X5GTkKn%c}^f|@n>oO+IV>Rs+3Is+hf;*MExISIBZ%VOLU|KlL|IR16 zpLj2{QH~oz*|=v2)ttFbpA+o(ZvsL?k)LLUA+F9=(}xb^Wo zw&5b(ysz1!h+lbM+27RpX!kQ;`OSo_AfwTcCc`{l5Ej|=L`O&lClc1sZ1*_!*Att5%%|#Zx|6X8)I3}g_fka8-GAHTOBD`yL6&0FU zI={t%`n)95%`VE$n0c=dP>wsb9 z?_c|(oGQ`Uk_lW^eB3)MJ`>)rxmIu7IMFZJ0gcp_3mz*toJ%1Dg3lbBehS!PwqV}w ze;k-C(tCn`4q=!T4Nzsg|8>R#;5U)6FXoj^J+-@gWGQMz+u6;R;kHQPp#ZWm9vrsK zyNg9FUODekP)a(yLb?1g!I^4Z{MH{l$3tVaXqqM4HCt)p1OzETxqjl^cgf#P_UyQ; zU$6$KVnzj2%tASdiDi8QIVD_CA{UJKNw#VRN!SfbH3-Qcg6-z$5f*_MU*wTkXqS}f z_s{SmcwT{l7*2m*rDI+b3Z4EvATL_QrJ*rn_j-!{K z6Pi=>Rgu9M<6cIAkl*(zHK1zM^hqc?0c|UNf6%5XS9_k>mTMyJ|O;3s;7{pfKr-WJyV0^6Un`7mktH=KzO-S=|Xq9jt5%(5e zN4CKE`N(}rHlmdNk@xGttoL+vU7CfAq=U62JXI-|75tqJ`i~z)(48Qvk$k_TTFhuO zi}fGR@5yDWh$DUm7!Kj!CM^NOI}q_k*_+6O2cgf=iZsi+Xyh2Fv!}~XHX3!>5{pCv zA(xnmR^Qv&R+|q_%8na7Ui>FrO)y`TFVHVL2ov@@A4WU-{@E{9eUAU}$zc2hSKlm9K5H&(&bhkM7(Ad%Zup&CS$~oAVo-J_#bjf=UT_3u zoSh>0Cw`816+C@TP{dAXi$0>HB;CG$ljPF!Aa_W)qVeODEXm#6*&FlBxARV-s%;Wd z@AW$y|5h`Yuy94!RCU@Z@RCLvvd(bTD>xKe1%iWf{OJbtnzlLXrDsG3is)%*r?ioW zFe#}e4N-#y5G)Bl+o{Z13t(3XyEkxAAu5W0Fp zh9i!?8Qu_t^!D}+9`SAPhTg)5Lzj)Y{i`q#j7uWIeH&MKJXKFhrr3;{PSYAm4y|2@ z8Z`l4)BL89Bm9HNElF@kM#rE4+UevL-XDSgm7fw(eg!$4o(OQmxx}a86~4dB=?q#x zKd{PC9OxJU81M|Aw>{S2diyV(-{B~U@{`b@Hp{5exm4^;cdG2mEo)QQ$EOaG@WQ+Q z7R7^~$2T0~#}dCwoPd<5N`>V^K1%>qfj(CiaDvy z`3D@Hb{&jyeyJU_uA1CW>#OgcR2?MXL)*|T_*r&m4T4{bO`zt=t0Ml77oe(_;X|Go z=fhEq*@sz;U=}uYXX38kt$2g6#2OOQ+6bdpyPfz=9@W|O$$)*r5MYXIZqz#fJGM@o zom=C~Zp-EBobobQ+P3~o15_d(CoXmCjziUj+DX&(Y3H2vtVTAB?YnF- z2ni8Wi3_-Mjx5lW%KbDqJ_^ufxDsLO#Z_B2f~78`mBgwMb4ugSQa@-JuOR!mKzCKS zNN%W;pWEXu(>MVA6YWH>$E$Q(8sX(|TUwkd6XpBxlBm@j;6nP6ChC$s;)WJ35N-e0 z`N2FUO|+ct2doYas)*Pis~Lol@V-|YLuzTt*p#NY7i3qbZP2=GF#bBa(u2b7aoiWK z;9^1HvOW@A7vw`ZH2eUKu@d7)dGcy2q@Jsa{*R--*Vju$M?-U@3VDP)_}TnwAD;3% zcB<6TF#a|PqE+q1^{3d{47n!N(d}SSshvx0rahkT z%!oH*gEGeQzY{8}5t6|QuV|EMO5=nz@{)MI)v1oiz9-9^2(x?k!fvZokFeBRSy|}= zL}JJN>G!ZMlD@qY5;q3}d!D6U)f7mr4xF>`6asb@zYkt2lU@&uOTU2`K+v@2&-b(( za4+yM=kSQ9f4?+u?Bny6^ywtR2^cstcwAlpWIdrm`^G#=X%-bVroDR35Z~HkDjF6& z*BXowq};jf7pIRyXE`8_1QnaT_xKZ|gA&!Fro(3K6OB~}9}ay|TY(ino1+-C$nNoa zhP1G~V{PLMz^DnFLj?`^GX80x8hQL)O#Ru0;oc>BZJtwsui$KzDmc6z!p=Vi!N*gd z(iQY`f3>A$nnn7JqShS6M8$Dp)H)u#_)>K&h8i!);{H1l%ImY`k;21kN1kp|WuCZ> z_?!HCxw@}b>gDf9M-R-JEBxO>DjAflrW||(c#!aSX6V)>E&CJB7X0^!nDjcLTgw~| z7i#J?^*5e!UEK8gfA)Xei7eOMb=y?9f~qYu>&pZAGpOJl4M5}oBy)f)Y0fDh`H=FB zuY9iR$n|5>0v1?J4FKcV*}PC;wC}M0CE&Cf+Ia7SDG)lE%4`DM5dbzt>ksK@=0d>_ z;%FF#h+)mQU{#8-))$OEU216!dSgjAT`yQ`u?C-=qz9KI+Sw6kVtn6GsX3kUrBpa< zOS4WJGN9ktO`d;$SIqf|BWUB&M--tc4S8I{vK6B)rG^zlvi1#P08J;v`1NkUb9_~E z`Bry4As~a9{?j&=AV`BEA{a73U(A%TcSN#GV5?9-1Or1`aMYQudYfy2yF3#`e;6yN zkd7jo;|@f`r=5OPEHY}+ici!WLbR=19_|-Vx>zP|zGbt<{@w@=>q0kOPF9PX8e*~+ zoEqN1=5>7fJ0H3UEVEzw47NuU$IUrLCa5%93WgnI$XV$y>ox}hEmI8*g+5x@+&*~E zdj=1PAVUuie2>n*Za3F}b8VdGVUxK7HT!<$8Dap~*!uuz9An#|8FMdY$3-E5)G?G} zAeU5O#*ja2=%i0MTBUWqqaL|t>oAhTTvB?LVDGEq@sD7vGq#?aQLl)wMU}XuoywsU zHZ*(3W51D0J$!y=V0#=gJ1DZIW5Cm?y{X&ri6}0hf*5Q50xh3ssB{PQtQ~1}DYq=R zI0KHT55&LzrLc(tC) zy01Di8YUVByU&-t`;FW`o?@@%&c=hgkp-@FXdpX?m(c&09kF)0^wcMvibscmywO$ ze3(0{n)HBRU>m&JIZ%=go&RcbGZ|bw1UO~BT>abm%&1+i3k%!({M+Nvr_dYwlt_I? z=9s_++lJ~8P?TpDQDR&4%=%RA%=MTs{yxJvJby{T#AYE?DgaWFC=50l_45W176`23 zUVYq^&F~WpQRq~vC)K*oOaxgWbd{eixuJuAt>_+bJL7?^YxU+O7KJi+y&_r*i}3t|DXf_~G|_BA)nyHU`$kx3STaKaZu7-GMFuujhrs z5sKe7cF8{`DBr(*0?BW3Q4_J?jB!RNb{}-u+r+Rh3NK9GLL5b4jnnvs!SkiTX_TTb-1RRH zQrNe!3FGlsJuX#kG*tO9{ssJn0v&R2iGf$IvqP|uJIW_Ld+Lo`?Gad%_`o|1H)P)O z)9ge%)tJj4LrLH1aSK8PB44g}sk)U>o4SH;cdt_SyX))+mwb`jVs& zr#G4T(yC+m=u@sw6@C9IKf9;B8`Sz#ViQrvIEHRr`$1zRgZHK!vbZZ6Y#M=hz6BMEEwY+)`^FT<4pHavHXSt3&RTj2 z2hb~_&yPT{lfukq!0m8$pG)?=uJ8HRwLT=l6Yz@DAaO|<3an{a|LH7s3-%$wz9@k1 z=+FZ@v|9JgSKQ|HzNk+~2BZd5Y!R(Gj0D3A>=6a|DVZ)eip|ug*AlK?gFMA(LMssa zX@YR1$us~T7-=T86M~uUj@NYTc0A=V2V=@RdJ#CG9!_9`ZD&`=TH2Fk<%ey~bUjob z(Cmw)qnDeZO3RD(zVO5BOh!{zra9uKosF}sS?^)GhdU=WOXfIzb$A;qe7^dcsQ{9F31O^?eteD_8mWMS_ITtJFE>$N4v3>9hVTld7{vrAu_Wf$p|! zL%-k++1Sf{ar`x>*^a(3to{0h2>M5R|K+jvZEp{;T~}3z@RsaI z{WvkL9VuxSvSQK{Uyl)xo`1_L2F_SkEsKf4b(J-sG8 zseGY*3yH?b$`$3Gm<>O##kZ^}O%EnSAd6Qe1x!!eJcWWuUT0{w3Th8L&tF6rb9Om} zS^<~JUVu*dU!&dZD0`v&9X@X!U+eU8??`XXOd_$QiSNO0qQQG(A zqe-%cL*Euilmkg|au|`M7?ct#XWUuNlIj;-MxK;awP%j&Sn(u5vaR|o)hyeRrLz*> zl~ky9_Fx&KBhGo)ht`WeZva*FKTG8HyW`M53C7Pk;QglzeqDPo_xTNEMD zwSHQ5r=jRXUy@E#tbXfAnssDwJ5gvllp9xh96!FUuWx(MR%aAqcycQIZ&@nIBUQQ$ zMmVMmL@g97aQ?Nph_Scz!Tys6YPOQUkgMx!{Lx2eQIZ^vpCId-lkny`6F?N4HQ`<_NS}wEdP~7FAPQ`1R|*lm>vG@SK9^ zCuP-%-uFD~9n-A2L||m`u~3>*=k?*&-ll{QD~C<3#ljnIw1^$)BJ1j6)1h>0@{ywP z>0OW|a+{bvzSJv>)8-N!4K5W%prn0{^;r|ad@X-hxl%k&{$~(ve<5K?PaZNS6$E9> zHn8zFpZVu3?|XM=mSV*qL8n2cjMGN8UdUzy<;byRpdFlaL*fq)s;R-O-P!)UM+nXx zPwra3+Q-UMO8je$9C=gYYf$SKW#hHGR;vUHm zcfAY#-o(1>pSb(+Z#sDvCW)fp?K_~JBkJgg*w!wSg?4MYeH1Q8>kZWAVW>QSp!4)? zXV9`kC;GAf^>?7Rg%E~*?=BX+r2SXs@_p^m-tRBqq6By&S65uX?7`taOqaxOOQTIw z5HMwzpj&O+%p0qi=g9cp@9WIrpNZ5b3NmPS{NK=)&ZNbCfzbPO#s%zT+#h8W%lW?U z4r*#?@>G^z@bZ;2+b#U=$WJ2L<9&+>p8Pd-No{=n6{I2#KTwev=PRR6L<8rs>UjT= zWj7ly1xm(nAa-c8W?@O_D;xs5u9z0X$cK<*?-$}U+Yxp?XMvFrW|!p8^tXbu@Ju6$ z?N5d<0j59C`QCo|3U{9ypd0^DuGn*XZ52j9L;&K!NPm{aOWqoU0@M;XVa1Q6p*=R4 zotfs$lAQb30|Vg$!#BV=8v~S@Aiy*xwQw2UtM)nO`BV}Pz4^;%`SQ8<=_;Zp(7WucBQxjgdEX@6lH8<_1Bn##2``CExh09 zY|!?B3o!qy^6F_^PsrVOy!lJiRtI@Tksbm8n6 zfAmt)cPtsym7#ChDBDYPwlr}lI1jp|3Qxo9-hULIq-aG&!O3jd(Q>4y<1Pp+@a{}9 z3-q8}841*_21H%^fC{_6Eqf&Ym;}H>6H6)-3;bZU!khuo#%U7)STt~0{-#Sx$}kl{r1^XN z9uZ$Wa)cnsP>~>7R1@B6Rzs3C(;v3Q%1OnauoJp zRyKY}e$v;*)vV$maPnQ2djyj6kb2*uZ4s>kBXOw7=P@+HC_etlcUPI|PB5u*9iFrc zRy7La&w+9vhmQNJI-NryCROiN-{QS%xt!BE{Rg6gg@o50f35X50B|OawoP0l?`$^3 zG{T>(bXas40|XO+`E>hHh$T}(%r$NN1krV{66>`9A?eQD6SKCP_f5e3yBAEzid8PN zWn(f~Dwv3LsNqN%?7M9;#xr!+Z8-sdv|D0;bY*lSg&>r$8hz9K*T++=3V%GLLI2b? zr{U!x@{B$|H-;?W%GO1TT|l=XpQ1J~*b#%LocQ5`cU){br5p#>a+WYcd(U`}KYABT z^5(vHq=;;$SGGVOlctV3;r^2WWE8cKQ{xMpS@a|y)L1vc_Tygr^}^y}H_&NsVtTHA zFtob}m#aKd0GN9K3d#4s-keXj+0TT4XNimg23xxcGq^zne0!mwPq9E*(4?DQinqdR zXGH4HcdsnF4JFa~2nYBJGEwJRbJ}F72#ZZNQRUQB&NSP#w@YOfNz**wN2&#i4j44! zJCW{vm#YxmrE^rQ@WT#i<7!3(?80e;_%0q9ie^V-2KRIRKl!b8XZ8N(8(X7CBYYRR zuj)G;z@eVB{bDdM-uA{P3A0u}f))kqGiHheyu1J&|L?)LKch0V9=f55xSa1ArQj%m z{-)P&Xm^_QwyTu1N#F4QTlmNnEDEbbd%A%>6BH|E4=k@exvQ!bg4;AW=k^Z? zE$8+BW=py09S}6xK>%+%tkVjXCOsVoimV-cmX}Y`CwyPjE!v)Fo&T|j)yG)$7|229 zRgYaSTi<{CM@Eu0>3p2X3=WkF#PVekZSDTAiRY%zTK^W*4`0#unw9_Q*We^4BT-;H zg31SPJwbo8YRokuYSOtlRi@v{7}%jZOdt{>WB)Pu%h$TN{$`gxl)#rP6CkkOYJTc# zc>WC7X0?3)V^Ayb>Z!@>}TOqc{?$ zCOGqJE+HcXw>A#X4=BbTsS5R&I0}f()bRzp|7Kza z45Y-@3k7RuHT?yKTp^Ft!_N65GQv}0hkP3nKWK`!f z9aT8nnnfxV>VkvQtrkyHdo~d>9d5U+4<{pLS)Y?t@T3!DY%DC0>J~Xb<&i6q6f{`) z@2$awu0QYEkuqjfXIAC7aA_9e;ItzwkQe?Ugnn?gQJ#2x!)eF`cmdC-03AR6#(JGH zWw}BB#N*1u24DjHGJ*&CGi5pX-Awth zo1Ic$Dzx$lwAPKCOEs{-+KeuVuQ8jRWfG%$<$(tuOZ>+>ntj5D#Q&+|K6o%}NEt2- zSq;}%SGD#V;_q4L%~x(SMAI32I1^PqthPTsg_Yzcw0HI>w%Pn2E=tHsJ-r>TvaaPI z(Vgj2ZVFNmIwyg{D zkw7n7TPt6z{V)p3DW5Sqg*M#P6j=x+Lkv$>0M~T-4`6Qr|M|K5%pM5Fa4-s*eI~sH3;0k+s|?(+Jhx zSEE0%p;YX4gN3&~x=yhL5Ny+Ua@pJ4nr4aA%*qYFLE3JrR|8=T-L?XkC>w*C5V9Vk8%Hb3?7K1;!s7#OBbRIow4mtPNLhB%bGyfxk#Rq z<>(L=Wc-l2@2xNBkUo@&u%c!L=CwR=7e5W7&E&xh0< z8{FpF`p7)kch*}9p2`}Ge97AX-@u=+;cG3`idw^f<9uC4t_ZKOQ2WY@ozC+tjLfE# zjM^+BdD$R_OTo93!-xpHYBch{%q}AvL58hx+i3XZZZW{Y9gEDxyMOi^>XI#UckrtoZ zP{E)6@Me(4SRelV+rxwUCTZ<0W)`!M)b8&rYn6qfrz-(Lga_;$1-R<>4#{ylyMTX| z04gT?z4aq4sh8pMkJ-YY{sF<;!KDGfF2%dp|K3G5S6X~w@mD`^)zZZUnMQSk(HX4& zh;&4bi|8ck1%YZrtks#|xvCK==FX#>y{vW!(!EuDrYY$3{C+#H2qF!HY>_>Lya4K_ z`j(I%ngaB@4#(h=KeYocED)H#sq_b?sCqbz3kGY`jeCoHr3AI3W;fybYStwjNAKqT zm=$Av$_GoQ0=StV2mkZ0+Jm0_a~4XzyTIGR)L7bXtu&TmOHX0~%j%i#owtaZS~CpW zNDmad-i%oYhQKg6Kxv8RvCkSLwQc)-I`toG09MAC-Ysr;JT+!6{IjXdJK9O1gdS-P zERUP^y#RB`$zY=?T2YGxb$1n$%+!Q-gq|YKL0K(yxH-H$*q_e(laP(!lR$wx?f~Zw zv$Jbn%+*Cn`?L{Z!2HEnA#A{>6;nY49MJH>#!Osl47ek`V1IaZEi5xx2Ksx3;)0*s z0yUlCBln#%EW7K-gU#sgOUNdSBrzlxZ0Wa!^@@9Xuyajl;;`Vv(!Dd`?;QogmN&kG zVzJ&gE&c4{Kaj2T9m@0WmV>UNVZmvrtA!Q4WMwg*A!Gs+d!ToRb@}=redhQ6Jtr>S zWrVPv4Dh=)f76GmJZaH0Ifv6={dub|&^-U8tiC40Li_&W9@Zel)=l~LI!js2Gzn;2 z1wKNU5A8hjc)fAiepEP*O-Ht)m`jW1!aE(h`}huu)yK%%OD3+w#;34|O7_AZ{qNko zu8Zs-Bh5rEDSaYC(Qb-K_Ku_#57x6Z7>e2CcW~x*Ym}s;l*l<3$bl*G7>W4l$bk*KLVZE=d|(gz{sf2@P`JSU=m4}uYC+m7W>;~Y>iM&i^1}c)(%n?RRG!@7|7cZZv~+;>LKm08 zhBlxLc~-M(w^R|ip`*!Dz=gMJ0(vaaWU1uqUb}tC=vPE4>Gc=zCvUggy;WG8b7KVN z&*T0^zDo+S`)ITkkn0NVBN0@pHQAUqvkWfxIu%_t=yhn;wTMytxd?f}7!!rK)^qZY zsi_>*1{w!o6Sus)3|!ikSe@9mRwM=$8JM%1|C} z^#o7n$>DYD&2N^X;w#PP+vcL#kDkFErOZUt03NFR+$h;~c1y44*Lz#q3Jb=q76{hbXOBS!}sI!jQ3 zaN#F~UZ**yU#X`+27?Qth@pdoC5?yvWQcUhh~_gK0y)B6;Q(ClE2sAa-K9=KG&78D zZOYaS?VHWBfJsLuQxrUA?6$Dk{3|IyYI=8f+)Ywbbj<$$T(m>vvcaaw zX-(Ari&?j|x_Ep8bKtrA?Nr^=*tVX_b0~)+Nyt3CW)K3A^oU^J7rOlIQf<1eHPp!0 zf2EX}-;zs=mr98$Y4;v45O5}IHFcU6%Ao4Oq1SivCzuBg9}J7cpHNHO?oYXqC(;E7s_2bNvP08&F0|@8hKLkQw*62k)^BP|ocI(XuoUBJuL+klYXdBvhB-BY zF(CiUW&-CWs+(r4G){P?K?@DU=2OYU87pgb$4SVond10Ac(_HJlqqF9li|gV5+sy8 zZEGy?33B6*Ub-Tg-bXWhL`am;o$!|2eo)Ld7&=#ro$e5u65`$?9g}#JM5hr!rHwmx z_mz8Et?EQbR&l34*6KdMd3`V%zd?yjTS7hnBr;8FW4@_F)K+=*aDB_%v zboGq+NBm!C?!UDeH2k9em;s7YS&=1kDs|u|iEwfGi$6Ij$lS-Z@2dZ~E%B=9+x!AG z+!gvPJ9hxBDfKHdNi?*rQ-ZPX#D+4upKk3HJ&x#PLMl5M?KtE~D6W)up-8ND>L< zGH{YD-$ZiWi<^Z?EiC2~nG!B|O%@5vMZ-pAoUaEFw7Kjp(a?Eh-w*0p^BsHQs9-({ z1G=u0e4T(C#hi}nzb#MAB)W|R&Q2F$(}~CqxW3BSCRb)6B+I}x3Ga?)?_P?88;Ur; zw?!+z*u#Ng#TP_lR;!mU?fmCT=~IC14&2JPu48ZBo20^Y*}2gC217g z?+nBfdC9yNMZb$_)ujM_-DUwZ&3f+88#>GU+*E^}?7D~6%eKqXS)BysjhTOP&4e6T0RO}AZUA|Mj%=UXPH-uUWWHkid?tL69Z97=f ztQsu+L>-JMEmC1tqg+Wf*KTt*CI~2k0|9*cEoW7@q z+l9F3ZXv)*5bTFKgc0|Og)f6y;Dc-&ix)-85y7fhHi7%t9by-gY)&V7K=g;hOPZte zh}-}rXK1Q@Xul)N=EC_oaIrh}X|cy{PP%C$o{!-pLhcFU(HQI$bI35c88_jw>#F%x$nXj)8n0fgwg#E;vlN?yK6o-smHe;d(_>ib z;f0Q+4rU&PIIeCo-n@wE`TBVz&5YA_i`l*1i)3;Zb7`StUdb6(%P$zh2%MBRYW?=y zRNQbYB?D;aM1e&%lexj=^xV~dgjU%Xlvm7cy9bej2?W#%ST&#FJYF8YiW3!9VCfA} z<}*}%#U+VLh2gjo)GQ`}F{Vr!Rde4n^P@TWE?01mWDVKZ@&=cKohaS z1X2XB6Zl(g^9m}hOO2Lli4w`x?XvM2hpBx!$7lJ)fb>$dMR?QJNgt^)UKx z6qWKvF*2TZ3G9Qk+KHWG`u(_GS!zR(#1m7khgZqV8sTwH%g-J4G>oe0lOmB6Pm^Mp zM!-x@gzNTQLt`oR*P4&)N83B}0)cTAiy=DEGRs3w8Xa>H;aa6A(b-1EEFd%qth+n6 zP6tT`->#m#cmT989{=0a0K$JW)$Oq2x}Ag1TVS(D1&jxlbR89mHqqe5V+wX#=;8qe8BanwvZC?)?Dx#w?7hn6Qnle6#8`S!@1N6c)OXI=YK}* zdf?#g8>&(s0W(wjeOe78mpci#RKO?>iPthm?ey3Zcq*z#*sm?ho@Z z-FzY^-DRYkzI{hp+D!i3-g(wL`JvB*BQ;-UHF>W=Kwy$0)d3PMD+Y1e_`a__T|qaq zUy-V3mi2HfU?D7&=HaJRHIxMi51AiluCQiVRle^WuTL%JT4|4&v)9+^&Hj`tddhXu zy1dSFigQ2ySj;+PL4Hi&#Q(_vuwIOhW4Jdq&BD*x>+o3m;5U#4{*eP%Ds@`-!yIJ#Jn8-6W4qyxp;&Kh(($zcuhAZh3EJzKLLWC}{(iul*iYb5@O2I#wPNL#X zRGqU38cev2qltu1$j-0hmE#ASDQsiuiIxdAZcL+{aR0vl8|;ejN7Kk>g!_0b zF-|{(ZII&s9G+c$9fe8cs8zRcqf;q1=la^}sM{%Yzs%b)PBRVG1pVwl#^_%k(0_bV zzHRNpY;hB|^SCC{LJ4$1qo(M72$V0*Hx-i!%Hsas;p?E{r_Dc6_2G#GnJjrNJ5O5& z6Z1R4#GTF<>HV?~6jrw!ghbLMr+=1!EbLl_HY~IpYqkvVgRF084x~k5JBlTdoVIk6 zUsQ1%`NKHBVa&c@g_-r-2$G(1gGXyvf9K8Jd}r+QL$*N#rvFKZ=XSi*iNVw8bNKVE z&@&40N8K$C0MNWvJl3Z z32im){a=q6c;~dNJ^=798tAW{>qf4*>djj&<0%@nCjHH?ZYG8vbW2o&7PfmHJXq09 zv=7tmB6mOftX3k|cjSq+tkj&v)rwWEHMYAunc(O4yNT^+s(j2D3;rJ97xJ1Y1e4MhGX4x}#l`xcKy4Tb<^@>?vBbKMGe%RY`F^g@TV1-p2m2@7VjOfo4f!!#98mIK0%>oV1 zg$l@W%ia2g+F5)5hT|14A(!M4k+9QDneJYovIKz|t}gn|LuD^gxVpi+1?9kZL*PRS zOTM`F7-XVB0i?a@>nd;h99GfFdL*f{cLp=cMgR89%p^oeh&+8b+oQtyEE6>&eI%pj z5?8a_DG;Bd{fC2)pE07Nw$B8=BTR*&rs?ilBpu1=K8eIh8NE#|JDKRW#h1A&u%p}X z&H6Kw;uDAZH?~v&BSD2hk@oE!y{uN=&o$jr@^<~MXy8@B|8%qE`PU^Il1Qy+zP~U8 z!a)s->PH~c@q_aOqnRR+DP!dkyz%x6nV{_q0TlpmpiKZyHK6d}SLidKO?PQ@oZ-Tt z?gO{yd;g3iRRNC&ryc-59Cp-3edsuifsI)Jy#w(3DD++AY!A0plf0GTNjW{BpXZvj zdBYsBojX-3`pyJF6Ooa|-EMgkkPiREupw|=5?@y~5~LoJauYmj@{v{U6Uv9zEIPOX zMj_xX2n;7OIy=a}jWaT_JQHS7#hSi_ehyx49l|BRWc0F?=al={#>F6Q%y2MN<84)3 zRQBU0m9>ar@`Fm}8+9=T8pL$Od$r3=+Ldw-}ztwz-60 z)G~gmOyvG#RKs`hqul6(Jlg{@@{ONK#0`-ejfJ{K^abNFHa{{+ihf;|v;ZNa)tZve z`>)z-k#XC_h&K=<(LFyZBwB`5y-BF44a79OCJTB`yhi@`Jz6ax`mK@gr@1DuKoXzo ziQ!teM(7uqjsFM8y2~dRpYxsn{Wj4$A(4;`Qm_*E+m=Cgm*u;(V@1tvDw*qS`AUcd89a{uxqoZiwBE8iLHo)knVVvQBK z<3C4JKhC%^5$6JPX~U8AG%##_!AcV>U4p$G#Uqd3#7S zTGBtdPnb8};t{1!jMtsh%}?^l3hgE{^8sC{NE=02HEf zXgOjh31q6tfglV+I9-sU-p(YseWy_lWiVvo92_3Gm){ibax#uIJLBWp2d;EP!-S%s zo$1+9Jy}A1mj^JoHM;yhHyT!Cxz87GUUUPCO^0@;s9%89btiIy7GTdX-NtF9xby*)(Nj#d}BF&E~Uuk5%}% z(&7Tsc>pizETq@|do{{eyT6kc=(6fc>hFYYPM1_qEii&E*`m=ZawKQuyOF(is1skd zT?2X$o8bN8#3qm!>OC-c_6F`3E6$^gH-HHY|KvrsHH%FRARod8}3b=X^dopKYpp8)^b6=?oM#RG1g9)i}%G?4&4gP8Nzr_ zUI0(sd{-D8R|&sZ#|;P#xfFuCZTNy5kwoKGM5O@LQtNO5C49td_z_ir{i?u0^ET^C zvK@2Ork-Tpg|1;=VEoX8#k|>h9s}mtOzc-(eBgHeLfs8<`peiPvrfivo|8yRv{U+S za{4ERw5OQT_NjahPvU0VCy4xkk7~tgM{V0r3p4-frX1B!q-KP|Lw;N@BK&KrQF$N+ zYkM`-A@TE^0PeMTd{T9*fb4y|PezII*!Q>{1hhDKK2fQ_W8PWRE|3?dv!L(wpCF@- ztv*8##Z8G~5TQKA;rE3TNNH;%82QX1#wnR*%iSZ1A2bkixpa7(IskNM4$ z12ug&(rCiL>`wOr2Z}pM^w9C&$0g(FtpP?KW&lHxABp8q`u+F0S@JHI&CH8Q%I|&5 zu~%fCww2;^5!F8i>cD??Yvb)~!)_;%V;cbd3i!M(`Vs-?g8wk@A7PslwmvNU_bpRf zzkQB=UzqvcnKhpS0SwpgbH2*p^k5PT{GTW^0(9(=-40*mJ+1q04P^sJim6j-Zb944 zs#KcGyDbab#?QQI6aSIJ8)%VTc+XxOwwYOdop3s{0u!fpU_JLp+TG$u?<;&yuHL(T z|Hl3crQ-n@+pSw z{cfF#!DEYVKF>$6a;Zk51{e_y<_ z@$LMl?f>uMQRCEakjx>AqMna2mzf62Qp?-J(**()<3%OvsL=HrbbD=P#fNS4E&l_XVO= zbUMB8fRXm`GAK;sUu> zGt?{U^eBxa*Dn}4 z^%jLE)B!8#b}E@9U7k3TJes_U7Fhuie~;_w(PH|qo~_X0n4>yZDVClPxvIkVp*QZ+ z^R6Pj4{^dr{p;Q2SJaj7>CI#PF*M(mBEEguESHc_tGwd6JZMGE9yCuV3M1ksPB?Xh zMy)E9W@(nh#ya;-n$&%&+JwP%{(M%6NwJyhYm%mZHq`#cQs)s0SB)ZA7fWGB?n|;B z?zM}n!aD5MHej0Qa+)|V7!aeSHaiA@O>>WUTN}SIu0vHPpQA#RTDYOeu3)!WhYv!2 zL#Zz7&IEHHT|tN3<^1_IO~9um^GB!gj4gLGGA2Zn_^V0Lt$ByU0k_rs7gME@ZcIM@ zB}hymWZHdSevk!}?1rmV)gF~Nip%$^6#)h&EABGp(l+>@*~LhPCPK^ zP2~T#=g!nM;mzG?Z)h1zED^3nuOO`pAp&J8xfy(dIOP^dA692YlTw=k(Z}^0B3+A= zke5?3{o6MzIXL^7FA>mvm4*`B03(}$*-Fb4}R3WgNDxBrUB=aRa{Q#cc3!kmVSOQ zJp3Oh7nZRd<_ncSIiisrNZ(4E+#eSbux9{%-LZZRumom}ZATpXH+8PRF2ft(I`G`T z{9ukeCNn>Q8r_3tiWja$cD$zVO6}!t@i~_Ml~&G-vvAEp#R;` zThZ@y<&vkwh-e2K*O+p~CklfxAT}Z`6j>gFw#(!Oz)IfCtQEBh16E2n%^Zr`4_hY9!qH2AeYg`lD6l#y*V?fNT>`mwcAV_FGAm_Z@K2vHHUrQRKKyg-3g`LP3`z1d9byN#4|YO) z4ny7q?$+6sYRgJVUL#u;)}PbmTX~N1d8XY#Vn%Rsihbk;5Rb5M(UPROCQw*d@9T6x zBss+)PP?9s=6dU!SoJ81;xKGr5N)10I&lGZRkCjY$REo6GX+KAocm4N6qo0D!+tZ# zAfaPa%fjF1)9XX|tZFK!g=Nc1HUP6z!A0D~ypId!$1=$Y`B58Yt6`k;O>!NigGJ>J zpR%KxFFwb{j;yQyBI-?{3U4o3n)~UHEi8x84rp!sTOc-#t70k}kzS#yPeVRcjI^3rD_ulTKCvXBo4-AM!43YcA zUFfk2!XpYphAyk#JehBNhJc&FfKs#zs(pf^g(;w+g~u~p$+nezkzZ-J>B~g5$kf(r zQOc@3uRQp3T!ZFexEEPCTWTO4-&vG$n3OjQC4Nz`)B2@AqvJkE0OW>tqm=YxRj#0u zjxvca%xm`TP3_z4El&+|9qT3~njvo`7-uNAwK6)aqEOQ;tIV}$>Oxn_F+mM`Yd3|Q zk_-qbguK|WnBMcEGmb+nNDr__(u~lt49p+<_&B~+nPi^5>Mn8}OrPHi8(bo+!@B$R z`{geyB@IRFl@1oeSbXVsBsbk8jh$;Bw8Y5!K7r&Qrg2VI6hjBK%T%TlS9N%=5@bb3 zHq-;{9z@t4Uq)Byhkrq5Jpb9yFefAcFG%a~H_WivGarce7kMbU2QnM-(Ua{AV%3Uz zea7wYBM-E+_sKCe21h?*#NWfb+-h5<0R)X5M}Uw0ork~ZGr#iA;@}CMoQ&)}u)jo4 z-ZJt&ZqiGn%RsXId_@kcA`-EZcv{nVzBbKoL)zs1{q>*h)!%Nr_!L z4-QcL^gWYOQkoXe#G8{a?D@7ABKb3N2m(JdnC0qQZf)7oIp%Fn=^&U6cB1YIKM2qXpBv|oxN z!9f0+L2C>Sou<^3#m2z_^5n0tGOr%XPj(B-(sd3RQf>tggoF^?1=Qfo+ih!?zm4Bf znRBmUmKihQisoQ~g~5A03lV1G9iQ#jwDOxI#rzi1C^%#B*s1C)}C7ska)ahU(0tFh4?2_GU&NNzN zHoSiq1r_R5oZxq44z5u5vT)g`R%b%TM`;l%jhCACKocnB!cVW9gyjy`hM2#g93Vu9 z8$W0Tq(NfV6$~U3Y!UBG+~GC)HfnVDa)oS-O5Z$Tu46Y^23avoG~?pA&DN|9J`;=Q zwO-QybQC*ujlFFvTPv@2tLHq}W(lP(_^$qlFub1DvC+8Ug(Iff9egth==DIC?Se{R zyVa+7GJkM)Qa49}Zw zBpr=S(~EiCbn^63VNBr9hvKvv9owN!V#^^x@+a-#dNGbah-?)rQucdRg^1lteH^X%3{YtZa?H)I1|w)T9Amgj7~ z%47aSwR`RwDKT27TC@bQUB?z2c`CvOS09lTvH;9OK}ISm6*#T#NKx)w9bvN`G78?q zcES`t8lGSIfA*1%)(WnEBc8>fmXrfgG)l&DFJzK?J5XL2pM7>rjG5eAAm&XUF1QWM z4niAu-qK`t3E3KwlB#=QRXUVJiG2wA7i)X9234EwnNfA$O#Czx6Rr{!X7lV`TZd$9F70HlI(~)tzgmFmZ_%w^guAa<&&7ner~~2sMDvz3 zD7Y8#gVH5u3j*+*FLJGDXXgIm?5*Wd6E1P7OiHCAa%wuy_g%S(b$<%VK2y?D-1$aS zH_Dahc*|o9`*S!W|3I#huSL4H!fn_E6Tu*WO57jxF5W>t9e?q<2%?X)jGPeI6I)XZQA(3lu!x@<&1HB1~-uKbBhPLNvhub-A(523XOgAZR{^a^MQ~??za8} z8e+}KHT>}KX`T^D6po@hO?-n#`Tw5$U_i`c(-e69DZsH)#LN5<X$W$nZ|6eCx^s^fA%10s>p;rB${w=CQl--%&hXI zsw0%NR9Kf9_<`ljX4N-eu%R4YCu8@X{FR99D{LbfVPwAu5|d-`u~4H9Zc}TP_;(NJuvsWGst_erLzO=jR&Myl zeav}aflDIjQX%y8FhQ8Df)GBUul|O6m@zn#!F+^JyQmI3Th#Rm$|z)RsL6!iujz9t z1Mh1K2xy;0Yno_CG+Xe^E8aN;zC46~_NZO|IuU5Bmx*WcuLro>%83cnl*sJ4MwmIj zhQk@|+}bNtsD>Fi3+IY>OH=k{+=dwhMi#-qD}Q0;P;NwP`;8$aB#%vRe@lS^hAi7F zYjMI(a6pqW5+o-qOJvC)eDsLP3oiWL=j@_j3-!ZkUOX8C1uDE)dkT~5sW|`S^=gPb znl}Il)HX0Nfu3yn1+l7vr5Y>~`c(iw@)DTWpaBZEPnFHvW_B~dI9nfxm=E9|5W53K zM@RQip#SvwKUu&I!A9tZ%n*<`e*`(roZl;9LRYq5Nn33I7GF^9M8VOW#X+ARRQiJU zRs99taKgGmYR)_|UXwyfJ>hta@6q}0ue{fo`;^?pF(n9Go0Ud}6%jsnpR=bF>o<<3 zbw6{0T#_Gc^Cf2=wO^MIJG=+V#Ne9 z$+!hqp#FQqnv(D-0!i}tk%K__V-Q4zE}`hUJH=2Yb8`~{a*T`Ly11^yYvIP)5MJg7 zH$kA99c1@XkvH=xeQw(mXPr~Nu%7Hh=l=DLTW`6%bKp$^=t#Q#Az?27Jk-|J7~@o< z%F@@wclP5n?|MxMdN%=?cVj-5K|qHGgc%WX+JOo)&QV~RPamg-Ds|h)B=c5u&8+pi z4#@IL|2)$l)}+R*Sm~e7(VHAwUrh(17y$tnz~CKrl5;2GPza;IUv~ZYpD#eLVn{Lp z$46tmU3X(eSTXjOAbM#L>17 z)PMEN)TfW@WeG^Zh9d8oMBXMW!47#WScrTs5n?T=BR1D?GYH}ZV>Z!m9MXgai|e+{ z&%|jl6K~HNezDXygGN}q*bME>!SaA#Mnhv|ekBvS&6rCF994;<3Y}DVYrJ}-BEt;s z+aeFKKb+1<7Ir}=PkD02-|OM(HJI+3%vb@wEtFvL%lEa(w+DbMz+QHod!w8KOd0#l zZt#zB^x>_?$6x77=Y!GdN)w7%rn{*MzRT$nxVpLM6NJe!j9xO^g*F6M`+c!D^v`Gz zDhQj(0m@-D)t2WQHifc`dTM83l&Ku}^wqrN(3hu7-kYyumUplb z4xszJQ5PF#8(ImiRN|zhbx*K$-mdsjr>l+I#VYkq^MyXbxrZ~}?3^_hY7wHV5LMbU z^HyHYCC}zu!5^3xh3$>0Hw)!vNw{bVyq8cPmF%k1oE$E4NQSo3!ffZA95~GD;!Uaf zn_h*t=^#*l^1mJ_>?~;84s^XgcLAE=f8FXp@Fh@m0B((eg0Vnj6+wiz1 z@taZyzwEt}g)D%EE_C{4BjJvNT~nKeV!CUwzcUT8N{b5^!FY=6Mk;xtzyuQcw`~0w z7q_vQArdL758NugVjg-f>TFdVV||qzY94Lgy`_ zp2JuZE)iMMDBzdENb@}Xi%5TahD*5hzGV}R>v}5ynp(bXDHt2D?}Z|?ZrtF+HyrOg zDAdl?TAdG=wxZG{(KI(l0&yB2;c)Eybwl_LkU5_vccwRfWL|Ic<=G+M18y%LU>2jL z_*yF5rJvsh;h2`_&m_~@3G89MAT+a;t%G09dEQ=xp)Q+ zS@U6T`1b4ZZHft7&))=jUEjZEYpLkp&MRl&s9}QZ*=_)j>zB9VsyBqLx09|Yx~lfC z9`)r-!>%J+o{n~vV6j#*hUa-`rHF)w{7<+KtWjx&zExivF%|XdHkGdVF$IT9<9Qi( z_0IWlO*8}&Is_tf(6H4?r`9Db7-7}hbEr--O~KYqSSN)-ba)uGtHwX~Gw7J!ZY}}T zeF~Y-Jk{<`)2+vm6$am;F%w6foaA!@;vFxGl@7tNgq0CS_g_7TE#N^vrqFs~!_WMw zTi3wFHTS9+dIFH_^-&w+c=?AMH6{X$T@$sCGHx!e1o4ASifQ;JKaYkQ#ths52Ru$v~b zVF~EIbw{$zMz=(o=*c(bT1Iz7KVSWVlZYlBaN|unb0B?2mu$)@QJ$&S*jHippp43Ed#%(idYl z8e2eYp_6Z;0E#m8m~2DwZADDKLLvk@lSR=0#$-jWs)iQmkj+`cc<%(>uLUk|t9*&h z-KRW_{$5N_PjX?B>UwBmR~Y15(%d}(8sV+OnLMC^c)mX$!T@r&6B84WR@M32)huiu zGa!f%gjpfIrv7F^D8r%<_kZk%wp&js`{?v85rAeY)z;A3QP}Y8kfWd$I(9Pwzqonh zoQjEl^quR$V9Ii3-7}rjhj8O{(v^w5MyT8h4D4gn{^7Yo3h7&FqBMtqGzA5G!aOk3 ziIk&9C(`GHP+G6w@I0=XjUIf8zL_@BOkh_obhjJd3o{e{@A7i608niIm1=Pk5_h}K ziz^$nI>jD;RN~6bgrp7kcuwGRBWdR%MVBzHcNSrT($>s<`vHCC-lW zSm0d~7o(qt#UZXV3-ed5BpL(|8a;e0&B}cWuiokF2!1K}va-Omr0O9b?6k;!OJx}t zF7vTg?HCfw>tRn0_GWt)VKA=d(7s92dbiU;C)e%Y=*Zb6-Nx?NSnC`+$aE$-nX%elrC4LEiev9b8$zW2dL5?`H^~cviRcRem?g{jU98J!=u5^?tmt zjrX^E`#CudL*VOm&ku+}?}xb- z3PwC#axuTsEeFPBpn}M~Bb*EZar>P*LMMC=Ov?WM5adiYx~JxCuO{rqoMSmhy&oR{-hHM~Qj^glq6z2kcnO4E=+z;fVf5IG9Li(5mvsw_>L#!flg& zglNW6-~|y5jGhz|sM#FFsMZ_4ZpcM%8e0m{xuL%~-7Y{$Nl8q&NQ#SWVR2i{8B=;; zX&@ca2nn*X^S{o>dVpI$k6K#g5AHZ|V2@zJ&*6w20z~h6gE-#sz^{tx?4KD24%iMT z8-lIgX5FFNBBs-$DLP@jvyw(utf{Ve>M>F}QM9d;{a6KO`|h40kAj!S);_Nu-E)+b zQ?gjechuzDg!W5Ck(Ih*K;sZweBY|Lu%hz>s)Hzo|-?!Yu2WE?XzV0J0h#=xqk+V z`_8-TqQ*`SJ}~%pi^h^A{;CG=1Hwt(YuW$MBH?;BWW2y_*B6Mw9~$j_YP{6p$+3R% zlfy4GcdjNqFeIF@6ZhjXoZ#4q z5P0bm=ucGFYx(j^8~~a8!axI1%_U`FW$zF@DVFU|J&3gCEX9=kDbL0RS%QXq{|KoAp5bxqr$KD zG?Py?S>W6*)L@FAY!aD!UF$qXxVhB(xvraIw9wNosG}|gHUt6XiI7gVyk>ogk`hR@ z&_Cn${9bQt=S1|aY~o4kApR?zFe+q<7#Fl#L^c?OMaOq-=1n*>3KA}e;!TI|EA2zY z*$&@mP;TkR6>77fB40T_AS*F_z|+P8SJhU^mzSZ|0BY^aGxo z`Me4k^oz@Atv(&ePjNp!8{c?%mzUG0oohbnEMkSm+SD8_9wLuX?uB5|R>=oO%b&zF!4kFuooGLo!Pyp7 zvMx?}91VGe?6s%+i0K}8-1qd-*gROs;Y3FvMA3IBqmt3sr3_W-OePmZBF_RbF;OqHJPhJwW-~yZYkD$jESd+)yX|{(ZR{uVD0i zccy7Dew);A=h*NSKeF0viui*f^sC)<%Kc!AXX6pM6ChsiuvNK#^61cma$NYN@sfO|U~q*M*xvywj36h5shk zu(|HWIR#3TPgnF_0jbN`-{6hMjExaNlEflaWZLw;^^PgzYwM@76EaJEhfWJ5WGJp$ zdW7MHhVLq)&qt`nearUagn{HEYXmfNH)NJh8NVyE_rZWJ^J7F7K;P8;shmt_Tw|m9 z)`{4xV^S{*qQ1gK^uRsUPA{>(T>n!6$Nj}{usSYTW@snv0DG`HOM#`^#*Bzabcs`KnwT#Cq17j;%7W@oV^)P81QLDO{e;^a&<8J0J-E@ga@D2vIgeG zcn`X9j*1I9bL_rHt(Syyn!?U+hPNLB7zM^Gs~k0axF}JP(1+&(}v`Dw1eC=OGW;9ingYTnx$?e$s`xB zQ8`^}!&zyx4nKJaqpR%hdR^)A*PQ)}Erw8zTyFDSF)!IiLRHnDPZ1kgj8w?KELCU{ zQYXm88&d^d3=9q0i#i> zVHJb+e8Ym1dz%LJRIh@7M+1A)L?vVF7h)jLPW3Sa4RRkE;&{^$5#x z6T=UTl!@4ZUK;=y3Hys4VBnK1w$N^rFIOjnBTGx*X0LDT;*65)@ycWg{aO!sy69(r zr*M+pqr2j-X|G{of^zONVJGsKymwzSlnzks&I^GW# zYj6jDGVy}HKjo;|HtDVb6)n?k8~$T50wm1ij@I^nq{4q#!fv_ms0GmNWQ`7&RxM|e^5vZ_NtF2l4 zky2V-@yCr7mpYX^e^yy0sAMZZW9z_k;P=$va0^A)^NCl~nn95ubcb_PRpE)vM7a-c z1uo{9{iK3ugP=y3hf-PZ3+z@2N|;7w!$>By0K!It(-{Q=FOGlIVBOM8M3hDQ8 zpjeM7z_~wF#$jn(5l=WQ6P(4|o<}e6mc7n@MR_In(`c%rj+>O~XXSPnFO4VK+r7eYRB@yZ&6fWf|iiWu(;h7im)2yYEt)H~pCPe0UiLBwa% zGxzG8lu-)(-CtuYVeIrYV@`qRq|?bqNs`79nR?F7Pw721{>gBuo_t5jFZ!MhSaH>Q zFHP8rOf{r%rCiEUQ&sq&^J&n%ZXUtC&arp8zeWQQA8?hkSb)TUwVYlCSf(NMZ82FD zAeP`G79mMK_|KY9t$ZdzJ;LlJMJ?e+*F;&fb!o|Xnl_Uuv%Kcm126}w_PqaRF8YyW&Wwv>x1ece$b{>(-u3t1Iuc|7 z2vY$5cqW-h*<5mq|&3*8UaFJkUKt_DvYL@!n zQT+G-D1T#cV<|1?V))nY`AgRu^_AxBFgm+~4A*TApB)an3AV+}Z&^>6lLGHvFC$qm zQe(rYi~1sz3cl`4>Qd{**_9T4M5spP44l2VP&nNRC@}FbtT5EyuXY4U`bk;cPsxUP zv>30nHAp6fsByYQN3K&MXBei_xXW=Ma_peth@&98g|@Agv7wh1r8+00#O29G0sXeK z&0)eSu8$>BR6X&ccHxl(Yq%FHW07|XB%yZm_;F7SUM3+eg`0f8xtyn-dWnSm0(W#o zIyHx}B_|ek-ybn?`l1`yctA|!Glv3^m%TX#`3~mAhV@HKzO>VUZpx>qhfrIL9dafXmh856GlnM_c{BK7SZ6 znl}Rw^8^sxjR$1iu9P^u4mPzzNZPE1!A5bC@(RhYQ>5l32IU@W` zt$Ht7v1be%V+Yn+|Ln)dqP-14Vkv?VSWJYKf*pN8o5V~U4Gt#Svwd#DlO0ea&Cxx9 zOPC-STAkb?nGLP<*Jm3J!lVC;8cyPRg*qY_Z6M;nTp6$UD zmPGf2c{b8{7-#O-WC?+rW3K>8>yQwkYj`u4bE-wD&x;a!9{Dz@5hX+fsCTTwgu+4r zA*(&`0N(h9t^nTy+7`90Jew>ocbB_gpO~|e^_}&!RupCD8_BEz9+ZBfFCA)_Av3c z-%|>%uYrnvRb<(Oc-RyLCD{Jy6RM4`CYK6;5+<4q#BhskH*B{S460-j+ap4vpoCq+PdU8(OjxDtsWaq*QJ$_D(CDHsRTKOmg5NyCk z(9s$0=7M6K=MOf!ca4p(rC)S*mdX{9a*ibOJG{$uHcq1pajhqlweGf&@W;jZh;@+q z6NH=gm^tHSGY1*Rk;Z3s$OpFJh}kc_0=Y~U5m|O)S{OYA(E3MvzG|3O;QoxNGfb(i z5dz!%a2`G$=z}?X|LJJp{z9k1zHy(A9_+K=9%sMMfO4(wm!2<(5gy4OXw;P^JW;=w z+ncmzDpJV=!Xa~0@#M*Ly4i2NWA+o<_d*b)4T!N(FuVg+8=jD>)0dcj?)pXQDG)a0 zu|DJ0^w(ET*odVN?A^uvaHW>f1qB6a*l@^yBL)$qL84*c`3Rb&9IFg|1f%aX*PBed zMSTGlj~d&q_JY5Vk1((>rz*32>Zg{=^X?XHf4&IK8C%3;gvdtKibu{f(tsnSVh2KU zbu4nij`LzY=p(vipPjFF5F7v&lGGjD|gzNAaHrl4&mB% znk9tEL%m#mF&LlzH`0-^r1ky{QtfaLbL)KBcliT{0hXL`IRowH@_|6(ywB*r;|T-v zBGcLFN%vi&ZvJk#d$;RRQZ|Z4-l-m?s@a~yPFK%|JVy-3u8@;8Q|` z=a(Pf(vFYPjHW0yPsW;%r6cyh`JeXQ2JK>3Ock8^d|!k&RuE3Tqe&x?p8E6b?2%4R z&%m%XLX|bHBd;yZU-;Y9dnq^$-k1;!JVgR4F0K}pfl@Zon&<4ULa<0JskO4Ewl-jI z&xDZMY1j)x3irPDya+n1#tHlG`BxDL8;3|HHS3E4iUAWY@R5xmq`l(b{`bVE;@Z>U zxMI4N`DvyQr6~9P`pMnw3MNfc0rBzjd zfkzCw$?`)Lpf-__T8#a%K@0DnDS_I1(>X%IP%MXWtls8}al)anZXWnImeI^9o+r9Q z`w>Y#u8BS?{N=Be{`7p_$uIaBRZKTfE-tl0((?}Wr!KtcAtG&1!P$SS4$Ln1*G|(j zU){wcy?r>&boc#~WkF!&jC=X^ke zn_#O(;M@9pOEG{C7|a>6;!AMl*j=rC+y=&vvk8ZK_OyXPmrambANsL`)-W&7fSs*Ur$7KmHB(DmN#h%yFQ*D3wB z^wcN#qy@IQXm(v5zCn(vcl*+&(Mno11X1Al0P@TDH7UY2T|;9{Tws(|6cI&Rn)4!e z#EVWOF?nBszC#uou%wr}{qvos=cl*cc9Z72us43ktGC1dlf8Lq9rSsO78u7Noig7a z4$DxjO$fdtw_1mR#t~Tk>xNTphn=XA5a2p)a|NzUrP?c1i5m>!iuqp@Iz>FE`Gf-+z5H{`(Ax z%Exlkg3yTs6UZsh0l!Z9{a>AR*~^~g2Y9LyFL=)2$RXpNEv&X*_~LK2VPvZ1{KW;7 z-Ak;=2mj|#Z?-Y4&yES4eA9MlnJDY-c~g}2#3#-Q4DnLE{#;srlF*nkXLKWi9FWbeM>TG26%YFHNS@iS+ z6HG1aCW1L5QS2mJS3z=@Eggg$D!)6bhOGQSxSp_-%}a6mE0j2+^^U5obAZo^+}WG>pDhwD4*db!?13e! zC#RdACFdRJF8d-aS%i`j<$#ZH(IKJ>Z`YD@9(2A1!b_KC3bn*6R^sfamJ0Yjd9BFqB6U?-(E!~n!sdW50`NhSTGFc z1tK-mY*dj)HpF6X!71m~RHD&`&%{j(8*_Y~5>(}l-xKJ;U3MquKXeCET4sXcZDc{r zTICeTocV?Rv9Xh!yLBF$^NG2jt=u!g4oONC@;*8MEqSZVi(3=x|$h9&@K5I5;28H!)CHF1vax6z)pV#PB3&Ut%! zrwKBk^7vW?J7k(5sbf{DVF8Ci@UZ5lj0^gEo6a&Y&H^6RzJH5`XG1Nf*+JG{w`wa0 zeQQ4Q^htC(ZT0=?+E40I8tT(9eEy}oaKzV&-fz0DfkgSTEQQ6!-6MAxL^4oj^ei*? zF}H!^CKlj`))W)Gg;*G%-U#(@@Vr^Jpbz-NbdJb}pusej76BR>&QDv{HL}mC;<5S` zk9)2;%X_IzJKVXPUd-^Kvlm#^1Q7AKY!1hgb2{w8>D`v9ZzXBl^Z@J#^qXgIAlgd5 z2Z$#K0Td1Bd0VKJoOHA}MkCgRQ3c<7;G}&r{)D^!MDe~_mne(VqCfsC0k${JGSxjh zt4#Nxl?tm0P04wDbiicdqafdbro}EQpxnJPXX$nQL=xhm)QFL#sHL}vm9E_lq-Fu? zPK-!)5Uby?1W`j`{tNZH(iFm;n3R-cCbpo+kx|lF1UE%i;|}cM)HLDTTiG?Prb`I-bG60)bCEfgNMhk5Ys1-j#)~cj*w( zT2%sL=e6fGq~{fTO;?7VP~Q=yWeu(N<$4&2LSW7tGeHcBQ^R-!XH~Bi_PjSOKMMM24uQQp8&dmyia@6fu{ za)$hMOjssgT8ar#eh;H~cZk96?Ju~Ed{{?3P>hjKLPwB5qo)D$v(&Vve=USDPaZi* z5M)Dk8ohG-`Z}$S%eQ2(aqA2Qh=2ZvLw zARJ^v$_12Fz?8jRC;5s^ISIr2{TsqFr^1B093yIciwfs?$55{U>J!8HcE|av2rBc> zKC}-eG24zuzdl2YvKX&Bvu>6buX)9wsO|77@9JDfgKq zpPeg+<2@@N@MxVZDUZ@PaY#%b2_Z}Ma(dB{u{%ewD|^YYsi*ddr*lpl-(qSB*DQ8>&{Lcd)&M>s`- zhP&#P50#H233DX&f>WI(=3>nTk#fs3{_M8@xMlB5pj}5_k=jLd3Ma30pji!@uQ{_%I7cziYbO)jCAi!W^c;loK+Vv`#L%D0%FR14UWR=@*v+=I zxY_zMBtInhkx~jL=K9FhcvV`U7MJknmzowm&-@i#m4B;}DR=8oDq6t;<6}Sc_nCpB zUMk7YMYl-I6H+WVsQ5d%JFkqSONSF;%# zd;@JIT1gvennYvpJ*)4LyI5>MR*8DhdKosI;oZ?21)_^1%V_3CrkTx4=1nFt34g># z?%98|tVJMH05GQdKmZvvz5zhF)zSeWDR_`%nIz88psghk$bxn}IndOOO>rI-0o zfSYA`vnS(?jg8rsD8B~7 zvBfH!(~{q0l;qtxIXF?{ul-xR_Z^t`xdYb6Z40l&#i5WQBIk7uu{U!+3LD zh!KwrzWo=9%Q5zi1Gig?QM==4H?+f~U#9d3uhvcePDDk2AR(ek)D5Z@$NZ8;u8cc7 zB-}M`I9WG;PY&h#lsCNN=k=MU)$M>!4@b>Hm*!tLej=*FMP}#k(gno(juLMp*WN_z z2BLV3rac8Bbst9Gd8lIbm^ z)+Fu-E*~+T7L)Ix&?&~E))i_{JbY1Gb7L^>1ZzpJ#%b6p_+gRk95Ap%FopOCQ4`kG z=;5;H<(Xcua{4aY)lp(t*Q^8+zHC)-p*ZAI^KuUxh3UUzj_0|2_#kLTZmtB%9S=ZA_74_Lrs75FFQvs@WMUI+29xHKPlK)vs3D%DY5 z!^^UtKk+zQvL$@bF&|8zSb~W^u;7}erV*>XXX9lHAcXIX+o1>7Q7}!(^#W#H>HOIf z?Ywn}mitnW0RF-axo=32O#DhC%z?jvbYf7|;m)fc)ui0fU9Q%p!)}aFun*1m2 zRI9b0X7?eS^7ql=E4DCcn44C+^>lWL6Dc&U{d56Q)b9GKY{9#g8)KHJD}B6o@jVo8 zlB489Q)KKSdR;YAxq)_l4Uf#Z&$ZXK|I|S}0ods_2nLBFU1)tqED>ro8!5RApy13! ze#*{-wUQ3_>x9ACm&MvuTjj3crbSI&Mre$<_SuMrTu^{VTA{OusGS%yv*e-aZCVN- zjn!WyQ?O4y*yMu5jzQlI)akCNs-2YP#Pp-vvg}?&nnKK@tqH1S}{ z8!c!SAW^M{)BSV$T9C@3IY1E;*+diUqSza&5f*xiWXRA{ooSLf*>pV+nj<$I0TNyK z7TKFSn|Xps=v?!}Gr2u#|G(iDcoc&U`qgsfiSkzt<%H(+Q(QvpF{{dcjp*q4sAYD; z*i9JbEWIkVFV|kG+!Z?EUi{X+Jc&WHwjO|Efum2ioJUeo{dDl1(OQ@4exsnk1UMEeHf^7PN*>4O90-xZ(Q_mH$h!F5 zacc7L+|>mQgwpW%{5z-|;^=ym``AUF158!LBt9e0c9Q!uq; zwHS%u)YEowKG7eeCnv4Ffc$>j*7*~5Po=qcwA?o6nnlx2`_tE@^rw76>jGeow( z0?V&ii|=lKsO-pLF;uvuu{9Zh)Wp)kltkv&j0Yw3o#3uf=bmH`6h5I4q`&5stYt0h2`tC7uSm0CAg02D{+in z!EM)+uQmsL}TMEwQx$ElVe|QdS8KJ{wQke8lbd)T8Lm z7yYQyg6?v7-39Gp;G40x+8x-bnOFq6SrZ2=EWkAE^u&!f$}i;qFm={JRexc(r@I?z zq)SSqyQD)xI;Fe2r5h>fZjcV)&@C+>2#0Q@IW+fse(!zn+!+RD`~zliv-cBgeHP%| z1BJ>F?1VI1P9h5^^0e!Umyw2<^E@~$Mf5nG1)#7^;F&9G4mZAWO8Gm2K~RTmhAbOm zd$4I&P!|SUiTCmkQ&(=McOfZJYf8-*j!18i`Ic19hvb~@TK=C^5+J(4@`%T2t7)*H zb=2G=2!Gr24xOO|uql$b&MsRmfgrV4$L#Yrw0y6C@ zK}q5;L-c;^#k9hY$(|+sS|*q|d!G@92c`Xe1Jknc<`u`w5&AV7q!_DEzf|zAw%Rkh z$r8B7gwkqK#mjo17b0J1zI&)-%1N{QV;1`7x}|4-4^r44)*cTP#Q<}RkyZyQ6Tsr< zyfcdX-~9$SV`8qR!Lbt@T^RW<*X1q%S9wd>$roSrGWmaesDRlj9++ZNLdAp7JvOim z3?+_gk00l$DNTU6<4=4L?duppO41m1^-q+o04|yDJF|tb3)kI%W|tIjFaRB%gnByE zW60+2pXfkp@;-TEVL`Q_xh^ZP`Eccs3s`~jROjj65S6t4;Rl?B0OcQ;{l<-GVer-v z?Xs;iBC3Tk6?>TsIOY0&ITR!2M2(T->~EDEKTt;?>rC^K+HVoMXhX#0X;`09)gQwN z{MHz<^W+KlYG^KEs)v!#GD?Pk#c@MATIfE8q3YvsOCc?qHh`G!xSDd+G>C2Q>vWR_ z%tI#kW3RG=51V}V5aGL20=7z97ZTwT^^tuhNj~L#bo?WF!}WM_ER7BWk~xoHAE>TD>e8 ze6cS7Jo@c~;cDvJXWo&KLqXaUCFW6ZF=x5Ka!Wc6S(tRa&X)p?X=)FbPY^5ou(#;) zRt6=^hS>8xb|}*ynY4|ApZsro`WtE^=KraS_#aRMRAWlbuH8xv`tQ-~^L>I}kx=Pf zp%F=8KvLP4rzv`mW7IRP((|;DN>A>5jizcy0 zV8J|0pCOD5FyKD~qX4IiBwkiRZ7#6nR1{7$yq*D`P$0orBBK>q70Y*2xJtiyVn2)? zv(zy$`iG`GyYd2mUY%vr!N{TLl#fptajD#xEgQlXu!y?IMv+7oJmMAoI;W!uX}aos zo}|>YPar8SPOjp<#z3>5I84Ko3UrlaZ};f=1!_FDfAppJq#}O&^o3%H)wua6%u?vr z_e*feQ^aA^*>pO`3pS#<9`#Q|_0C?d!~yoN6G!_OJEaDPB-~Kk2utkp&uBFmsmMTu4#MC z!-^ecvu-I4)L;KW{7BfYB@+57=)L)`^SwU?Q~2+48kl~PlGG9yGw#PaaclTS4ZG99 zrAkzz0D?6mhM$TpCkfI077*&~E&)S8Kz*$ikNTU0gdKhWx42F-(L-dEKeb$z@13@h z?M$`*+S@r|xzw9Hz;-xnJbZF&ZKMMJPq(p~=Ib2XYi*(aqd)YyJK>?#bumE6?~?Cz z`TlQ3Y}r*uQVNeDx3nI+n2o=EIK7V(OFzHVPO(0Xeq!u-bFlY5kyx0u&^V57K%SnU ze1DGWlc*jglQc6cn#RT~uaPp*DuHPBRd9m{1D8h!sQ2YLakD6vL(*`GDF!Z&R3;Lq z%~ySxWq11JWcnOA=o}fkAcwXFz`6yR7!N4JsBTYJBcWL6Az%y&g?tHL&qx8*M<8U7 zB9j!bK}m;iI+GacOf(|HQdFU!Fgw#saOSrOT4>2fTtSG^(g&Y@H%av+w{kYOx09?# zCldAW${9*R4s`|7;yvaP=cy*MGOS!@TTrNd%V5I+D9UQJS$a4*8{Y=EtFIgls|3%C zHRE!PJ4F<%JfXeJ4t$zA@^SL4;B@P7bMZB~#32{aQfgmfR|3#<${s}eI6Wlb4Ce}y zSrE}x>IQc2o>i83T3u|+fU7byFtMW;n9N{3{CfVpl*}Do%zCR_`5dX+#AE+@f%tZ3 z`XI^|M0S6f^XHAdd9pT|-$k86(7(>H|AxD6u;lUdl~*WkFfqx2`8LbdZ}?oX5|KY~DJ&PGl*QvQ@o>&xb(TSE(4fnxebA{nV`O#T#vngxgf ziHdoA8(ESJqM6>N0^Q?lz6&yGqrERj&L?2Kn>*?a`cN-@bavh9Lp zG_-f7c@rlo&A+YuR~z1uHBUXY)CNUjQ5x5Nje<5*f`gfCh00%*-pNP=Q!& zecfdI-WOz52^RJ#Hh&@oVX4OZ3;RqCI=1Yjw$4)D_Q0n#xPOlVm>TA}P9*O;V-ST; zKno-8b)@=qM&>I{NbtYsj&Eqsri8I!+KVz#9CbISky9tH$O4o$@LG<9`bbMUezP+O z=64&t8-_z&Y4>&v@6a|6xlN2(+0YpAw<=ID@9ElW6EH%Qyzx~e%Orgc#O^ji4K`nt z3>NU9`0;ogv3Ki2hT1}6n|hr({0%iW)~Zpa$S7B^puzNoyviB+@OOEX zUHMPpUW9>esK)s192>`QTQ(ZOYJ(Ro!XGC6kM8A1nvGcIZcv{2TrXt*Ke-q(Ft*70 z4HS7Xcp1PpGCMu>&+!%GAxtVxhV7U(<01UmT+{kP-G1AnWrV_yUUc!9)=BGbMA*xv z!d?lqbE35`%CB3em<@gDUyk^zrKS2%PBS{*hmdMlI3j-cN znx%TirS#ds1+M!I;=oPf8T3`rD3q{`mCp8dl(Ue=6JXsK))yK#A#jk6gKEMsou-5) z8p`WA5q-$N<4Miqa9zLU7u)*bwWv!yr0TYfTipFWocxwzn3zU3?r(EbuP0~tt3Z|CEx%_J?J zMFC7Q{N%EM3udw|+N;k^jS)y|pWY3VV6*rWz{5Kp+!&rJkIS1q3cbNn|Bqm7ayW>J z@88t#Ej(qWvwSoAjayqRx33_wk!@Q(H+7Qth`G>i6iLS6O{Dz=;Q6g$YFj9D8rZ}E zJ^%svh1b%v;hD}31`rhIVC;#UjZ)V#3dUqLZnU3>KMfThJU8*C zEWCWXAdEy9_r@Ifq8UFvA;6Fb{e;be@;*`BFIj>-=3I&RFuV9XAXu#+91>o2S#jK) zhqfeDBDB{vhf9OA~c>0fLtd>?4Xe8ezrBl^ikHG|ZYm8I6=As*>U ze$>;|icgY_F)=HBi1W4{(|7P~;f-PG{+`H^O;q~mu$MKv8n)OIXE02tg~F?Ed#3$J z$Hg#s;29D`^$Hxw(9%+RD47F_KY(iK{!8Y3_pnb zs$M^rKzF5H9C-St@wIa&d~iSe`mZm7#WmT%F)Op*xv z|IRj9i%d%#H2F#|gBKO0CfF{^cJrmf0Z|83TOtR*k)$HAWX{XjCbTy$TCVjUw%wz{ z1$eSX%Kk2CMQP}*6eY2-Lm?$E&yOxZ`}0YQurK8cIo_)5q8N-cQB6j0d3TD++5DeLL9R@iHn3*^P$9WkK12AF4jSyyvpvhGn17JLoV)ckk=kQr;l>Ok{QhaBX z*1g-uZWC&r;|K~IVOf&{-DPq*N(LIO+R@nfWirpaZ;mn|4COla4?6d}0Q;K>lE2r- z^_$1ts8uOz;se#)&T6&z zQcLAYPfPA)jsw&MEz%2vt=r6O+e>&KdlBSsUHuYC=EIm&ZOTzP8eV3crfbib0+F*% z>8p`bMidTO)z`bidy1Ggx<@WAxo^+FiQRsXVV{MEmOzj+7J8WILpL6P+cMsgqI%#2 zTo&~k#6cJA-WQ5Sp%M-27NM5=u^%OCv~f#&^I3Y8R=(StXDs_V8aVB%M>NdDNJn9V z7q_-(AHpQ!wC3_MniCiTtjgv7XWaEa(k{ZTK&{UJ-3RbDN`k=CjW*J;poupq*ObHT z!sTZijb7t*iIt`|Kiw{Tmyb=q*{UpQroNUwGF-?N%KR(20Dr#Yi3qgUeJMyFAvcx% z{?z8vJ+nw27~@n=j~uSe{Z?{{apCQ>QJdcEensS0H!P^D4O#3?0+{sy4jcM1)$YA) zJAnSt<5A|>m1q9=`RfVG%Kq)`C2C`T$_~{o|dg$e-x_%hoqaPjQ znra?Sam%%W>!{m{g6r+1o#JKfzwZUiuh7#12e6O{&HvQScwk@b)d#RA5&&2dD8I9= zV=w!FhI?#u`G(vt*B=`%(_8owhNnuMV#_7UDl*Ww#+6>T@!yYO_bbz%BIE-8Bwf?1 z5#@QpaZUkO`ge-~5IE=A`5Gn^%lck#{{A6imKzSwtr~kHTq1p$T|(c~XAMcKjffCdVU4vZMH`s8Joq?4gY}gEbHJzkTI@-C!s= zEnP>_hrcpk@=)=~?sD_ynR{c6h-L_54S~a-70qpTj-tG(UBR@689}fr*ermdXU>G&6Q3eKnwPb|o+63i3YHAjKWCvN|2oqZ5)szr6)m<-gFUIww zr94%+lA*@<&EqqhbM+}GR8v}jBw6^w5!1DGKqnUID6T}@!aR!YvIC26vo;!lVFPFq z1aW+milW#Kg>3EAmWi)%+cWs2Knh;YG^nIZclGNm(1V5zUSga@LVIY6cfef#I|1&lG8jExTB{GF%oSuS_yrv6*_`Mqv=SL9EBr=Q7t z?teLLZBxDSbF^>38TcNS_NAKgIZLg!J+-ru+sd8yMVGQo7|iCGKIvUQa{yHb)DHs< zVm9zQZSmejH;#Hd15pJ5Q|)-b(PQB8TMO5Fyf>fuRPHVQ$G;f+@)>+E1$81n83|N+ z(XoyP`$*d0Dvn60iOoE|VOcqf;mcuB4FCiM7{{(>zNg99dhz;`kkP_7iR!ls7(@^J z{&y%Zkk=k)v}mdK?Rs}bH*z70iL^BsmxQw5jR~U(F1$GG*GNdpk&&>I0Svt9dLjHq z;~C%F016u8eM;lSedQ%sZ`{3mRKez|QR_b^9<;X%_XHdPy02$L$5E7}ya8#6t`K&L9p|BUwvXFWg=S-qBAu73PaI*O7dgtxs2YLa^%Ps*k= zZjdWcrVvVJiy~KK1_^md3#kK5(?3~{c$vvzWT%g=^q}Ya(i2)yT^!$TQD6`o^EMLO zv|(S^4TSa>58(~zu&K{s4fW_RW&-S+T}z%V;*N*ik%eR;57=~Q~iLG zkPkt8f8r5d^`_i`Wy%zgUjG0arZ;_FzObe3tE|j7u`%R%woZgxlYoD|WEp^q+!*+J zQ&mNyhlUUVh8clnGAubcS0qxmbiwiHlG`9h+7yei_~nWGX*+_iyFq>k`Cf;Bw@H5f z(#VTy^>kot#vV)|0*C>Y!@@G|OfpZW@e_mjFYVerE~ zC8*t_lQ-t8Jt^;S)(yLSKL$M=gSLLx2VffAk5@wppQcN7ZZoWk!kw?`0DV9J=;jko zgD@s0SeYg${n?-8H<xziX375ZxKUY`TrJi<{t#=i~St@Pf z;^!+{Qqp&Nc#4-`0tCky07Q)4U~#MO$80~1pF+9};%JoJQ+I-IFSl4Gm^?8GvcJzr zapRi_Hr%f)UT2BTR?NL7iEg%;#?zNKn zg&+dVtO74Nmig;7*fv7`uUc%8IJjhOUL~#1wQ!M#@S%yAB&Hok(S&PlZ z21Z5+$LXPSw8x?$t7#}D=Mi7Ke(suAS>Q*14{%*l^&b=<_LhNzZ4RJrIfE0K`_$O! z>z?0z8TtACcsPOLDG&}ky=R^alysu0u^8Zm<9OWA3Pn=e2~;(lQmK1eU*~0zo0^^A zX6q?a1E7)Q2`7{RQcApG@}DQI&WAtzgcSl{HVqio-AJ(RVJBJS-1>n22`a6FLO6=4 zp8sPxm?w&S1xh>UQ3}ja>~io}d|7!!%b4K(zG?jmDH~9@&Yd??raCYI!mi=W2rQEH+y!jV<6f zAe2Q(enmn)9rynxVklXFVz#EiB&fbT4}n12P}CH~A}>E7b2G{#uWbZ@vSfZNtT2EA zW&zhi{Qof%?6B~&v$>H^*y~E@l<#`7|a`|Q+(~-_j_Di&NZI{Jn z)9K2wd5}rC8*fQ9EOjm>v|oJG z1jfREA=ZJe2T%CjmJcS1!(oMhQ?Mp%?7%l|=7L_Qt^185$|>|r8aZ_$ytUNwv5vZJ zy}L8sp1(U+7LT|~evqr@HwObHzH)u87$q>#DaVg7(sXL6_4<|Wi*L}5zj!EQ%0AO_JaWb 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

BqfPDZsx6kI5~u!wkJ66arBnB^z0wde0>SQh zlK^)Y3CmJs0J<+G(}5>aehv|r)wY1crnb=Sgp2v4EQ+iy5K38^^1EmRx#?`qSCEkw z-G$!1TM{Rwehh66I+1PCoEVv^G_)Fi%=f@UoI$@ZwU0Y-a~6)lF!Say

b=BZRdm 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 z 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≀nKJ z@JrPw*Q~J|r+UJez_~|IgcC(YEf}*ZHuFA5$Z`K47l76{$l3Sj;7int{XX*T&aUU+ zilVFF3->zG8RgQ;HhFxwx0yY`tkS=fzu6i#U1XXDnULY#v4TfUS=Lo;$;cSbns)L* zjuRsz8Xb`n4Wg6M~`2kX)RQ}3a=z|ECpgv zSvp;SBo~}^aDq(1EdWBbvukQ<%zVx0-^OHJPmDXaAU17}xF0A6fK#70y-)n-|2_3; zKVoxK=oa-b{P1;pG@l zR~p#N{DT8&A+gx+EdH<;g`hcf$*>QGq=~k}=-~2kuRIl^Y6^GR6oT=ox!Kk3sG06c zc(+Dii48?nDFc#2QQ!IgIzD&Fsw1dbNQQOt7XAeB@rNWOm*_F3W@GQu62DpZ#&v#X zdqYON*I54|bs^(W`DF&R(q%>+RyR~iE2+8fce@uY!>v%k5IQ^w??e2P4he*R#Y;yL z9Ipi7ICUWt0wV=qyS8&pY%-yKP+5N$z0XJ$?I2gl9Rs#PIvu{k>r;&FusUGY=IgMJ z({$J{4^ATyWg#-jFkn6PnQ%5uW$CNKN}4nW6Stz7T$;Sch!*eymR{^^Cn+1v%0R{R)FRbCUhTJW5=9m)}n(X+c2F*P;4yRd)c z(b9KB22%@(T~mPhVDfPnjxR{)tYlfs0x;tY3P-H}m(VCLA^&17ZYfAq?2G68^2H5J zsrZ##zeJ<(KbRE=bq&)0o-L@|TlJTmt9^+Ui&jFdrU!c;GQ@*t@(6pVT-x6i&09PX z?Bn4}mK)%E`c(AM861=A{f-A~5NBX?{1Z>P+UM47V3QLD@>QRzRP$;miGQkQxm=r}#r@4W zCN_5MXUi|3^%glVRp#L2%r`yZM(ZJP#2>e$e<=IY7&^JH@g{rSoMvL) whamLsT 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

u>i3Z$=~g>o`d-7!J|_ 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%0Aq5#K*vJsc^Lz7X&|XVFKAJIugi^xdl7nOta`gsO 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%0DWmo-kTJE_LH1U{- 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

  • ql8umnyTI8v0%88W9X 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 Z@k{5Jq_ol<(v75mbmvGnL-)*lFT6g# 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�F!{?UU}K^M zR*AEq}0$Tro;>_jf=x~@-}#La^v*#c&aU*W1ZkE6C5ky!=IrOaH9j$l&thuo^~p%YtoAAUcU8;sZip zK=gf^H+OT}1g&J={P;9=Wli;$f~kUU>(30_oka)V7yZ2SP&Rjq3l05BGd4E1ZRzwp zD_U7u*`C;D&+ryGue_Y4cwQyhp=qFIk^ecFUwD3BpWjv&&~lb~K0dQMrIEi$AmMTW zgu+5chi5VtAnL6tqE%!t2}|J@o{{3AO9aBVmOF)ak5Xf!T29HBy^oy8Kf|?KU+&#- z833tnTQhdKRbC;x-JYYD*ekQ=lcsh4s6fJ2Sa77hP$1rsyy={_El}ZGuE<~cfc+jl*PBQw3gmH zqbW_Emaw+cZl?1TG#oT7&kkSE-E~g(wv9Wp0_st<; zgVsk^o=;#>7rtG+ZZGJ@GYXM*e>o8`qR`p0>0|9KSFD0>`C!U#Z9+9`ytO7sk)5;>m&WtjCC-i=u^{jTRvVu$rE@!}&r#hv`Pq zwCJZ3;Db52xy5y&H*RcfR1NXe812Bj`SGH3erzMHn0xO3Y)J8CjV{hFRRn`aj~+<^ z5T)I6Q)QjLe~UeK!>!!xBDuFDS2gj$v#xezH3~UByXeo6iz#7ecvq(#&~Q=Y0EA2S4o4Ru9+AAV z%Al4!hNiCUGO=^?JMp&aRMuKPI4>cMrA#ppslEhcHU#6y(a%$;l zUDakf?uLLFI6cvNfqrUtGoy_GH(OdjX3(&|*n%sCd%s22{D_wfT`zr=m3|1v#XsSz zfLd2q_rzIyi)#mYhveJ4R|f2f1;u@h+Y1L5R>1nOsm(4(r#7~C73Y5c>(?w=&lw+t zbje=uQ*nT9OGbbfSw|D)%+2q-MuubL@Vrj~-nL^n2zA+cv|IP*IDTso4M8Zx5`^3$ zS3GvabhT91r>&hoR9VNt$r=03L{^`sEPjNCFUuDDKI>*ic?`8iO4YcU$QwHvtXtuC zDvxV)U->}5O1*?#CZk1Yjn2EVk2OYWI$lCz zmO$9M<&czUPe##L47N$P>kg!-m(o_p;M|g+cjnUJAfq=2rl|e>&^CQN`0KFRQLPo3M zDXSCB#xcL5piqP42d5296#e3QwG8h+d@vPRvPJj=4l{+5wQ13&Yx@|jz%|*Y@C{A9@+adR!mKU|=(5azVr`X; zF}ywqF!%{JB?FxYn@HY}5}mP8ymoPqrjh=cO9V36b69i92~#nBuGZtU=&h zS7;U{TsK61s?~mPHpv!h9$)R;EHC*aD;lp%kwBjg1M+d-u>UE`;U`(AgRjXP<45XM zCCLpr7ow2HoOAJv<$U)>&d17n57Emci7?JDk~burR3>KKhVc4x2?lu9R4xt{Y9@(C z0J3717sa~$@n}w?+mcnuXk}t*;-rC)0M5+9bgc8(e}xNEZ^RfFlTfsLamb9y1&tjE zPy-07yqeZab!2PFB>H|H!;uGN0}1*-B`JpWAC^t>)RkLSiqzPK`$!kF0tth21(0Y8 z8Zz^5CUKN%p7z(^p((;X{yu(qM6^ zbuS*aB1i9kOMF-fje5tmO^3oR@B4e*Iv;%bo`sec^J!Xg-=ys9`uMNUSFdpIG_xo4 z??qak=}D-nsdW>wgX{ov>NJ~j*bd98(F}mZB|Nz|EW^Ws`(RshVngNdbaKt8fwLcA z6U49W#rxi0XJ=dB`EK}TQ82s4n8cYB6xh-Vjh=dI%y>?JZ#-XcrfZJ;RH==SI`{Mo zB}WYoWdxOr`l1Dtj-}y%?0qr}$43YTihhj2NJPQ@kpnpbQPS4tf#|>?BTe+?MG-{Fw0CJ%$aKy{%9CrJ@@dD@_rK8lku)!e5Y zo*e{8ho;8XdXAYX%ESyy3flA66rF)SAExU3hnYulA~^59rS=_htQ{oI=MCFQ2%#wZO zEy-pSGQZo1zq7yfEfn+qsgO9^w_1ie^`E+OXH`y~w@cUnf$QwYB{y0zLVP$L0Bf$3 zQ(HeIA}=p5aUYI5uilCd)lyMOD6V?&%qt zeh$;R3VQHlQc04UrY_fuL#jL6hEN3Z0DKC;cTuq*Pgm%pmfoAQ=Ykv)Fa4c5GRP&_ z%IiGBfza}BKG5(eF32zZ4gV(fYM;##4hJX5>T+mkFz+fqAd~HcG?rQP#Rwv60*R^{ z@<%~y4nkCaA^5W4zJ9EWj-Q9&n3^2k6(K@zX(&DBE~t3bhX;o8>uj}ws}ff*P<1|x z7WipsaM)&>b=TRWof#X=&Mw%~Vbd095K=@fTc&8KF;-T~+b<|U<~XV;+dH0g?Pw+j z*;ACw1dnNGhQpAW4WujjvLiy;VSX2e|(GbzF6%O|6ldIeKoNQADNHLh2w`uZkc3BH1;%n|8TU9kx zUyi2my70CLH~X)c*H3P$E+viCH1IiVgHkrQ!nk(B{2)IMmKL$qMHG4f>ei|D7C_PS zw;zv$s*Zx*RRNDYqy)@^6)vu4Yz9x6MCb3{>Dl?)v#-OP6OsT7{JtTrcu`%^kv4fF z0`f5p-%1xBLbf_IHB47#a+k9?fG&H`*g%I()zvfV2SXx@PhQh}?EVHt8YU#Y_*L2U zFx1pBvA?jFOyNxHW4NmL0v|i>DcEa}GrY>)>nFoO^F1L&X4)*&;~a6$=Dj{Po9!K^ z5MqSMJpXYKh}dW3y)esB3&*rpYB4Fx|651@Kusu(?UxTC3~r%ShSmt>wcoiWpxEu4b+yyuU|x`&@J)4j zekMnH9i;;zgcv0Jf}Xz>OC(})V#4$`sUTkxAutg0V`%;C>-(Q=Zw<3!C;&DOeP^p; zV_?nXRmbkZDiuO#1EI(pb%7eDgu&CEw2sjrqnD?8Cx(H`Zpq5^bXQOgVNv#&ukr+X|dZphsjmaWd($@Pb@Yu2Cq2#?AWcQ(sLFH}WYo>6JDxzs_ z8ZncfSkJpVe{=K2!PQpcBJT>~p9zfsa?=y)a5pVVR8?g;?KxUm@e1kr>`&dWL_(P% z2rZw;CrRGujgm`bK0`gFW36DdG^T84%YK@?5d_vND4x0kaKCpIez)o1;4o#OQ+0_^ z$`8CCkbaO?FbF?D#p?8pn;RfaQEwyCmdQGyDgvFrWnuyur`W;U)mS|)IY}XEsuvSJ zq8mXnkTFW8E0z7Lvam<{tf>P}q z7?-LBo3xJaglL-%DFdf@6H!)pIlX%)A!*S`K@rh2zpVaPCu@*ybiKW>VOeq=9fP^G*@E;9jfLY z?7#^xx5MUVWi_pm(6CVI6J+H4#7gT=6NXtJZtm&i#ICnb%c%?#m7i~H(3aEryh03( z_}Kwpt(>W;+2prVu+l5%*M7U|rW%RVaxmfr9wk46EV8<%NhP_vh!=3rf1g73vgQ^d z@jPL9HK0!|ZIpSFQbGe#_5B-bde8>x%Wod+VK(3dp8<~{GDn|MZh0ZNm!<^sIRwZi z&2{>f$bvGYxcvOgnie(w+J|4WQo<6EoA*sOKkh&bAcQ$RpH>1VJ}+NVS;eH_)0i|$ zC<+}2OtsXjw~!*P9=5$5UH%mKnZ7?{g{z)m;PRHAfg1vBJrFTm9m`2h9a7wwW&H}o z(#`ok*2Uh!O8|*H3+3NMwBtw!q7J_Py2^=x2v>O&^rVX4mO-*%aEMsIUHZl9@=}q7 zW*>V6h?%ptpYmsj>vl6L0snM4;%Qb+iP>1FfBD)_6HobqtyaS8{&z&sXb`~#8`6g? z-)Eu1_-oW<>V=66B2Ej3o1a;>&P>mWZhJOAD*`LFzmKHogISgOR@$S-B0}P`8}wax z5hiX*Q-RiaLjhksa|&*3 zMt4-YySm@csY2dTZbEvC?`AGcWQGm~w}v zd;d6GhFwBMOR6pP847$2pAfpgkhKNPyNDaZLl4kdu<8AFr@@b!x z_@UyQE;jjaR{zoxuak)$jb2W1=_^QXIdo>5xPZg~w-Xh>s&v)X>70N1B?~u=M>u89m37n1A*FIUx-8wvj$=f3J-?YwzJWrsCsC*`I22PyJBhS3o%b~&V5M9InpVz%lzPuy$Kj2vZHx1^ z+VfutvElE1$?}-}wXdRL*ESwbQHtoK|o71_B@Vl&_*SMJ)yuCYfO^N;s7O zYwh>p`1m1uJxR~e4mQpwkc4oo$du~@qOv;-$InsxE8EiEn0OlQScO2dESBxRJ5{=T zo^*=;oSPr-3=Y{OzaW{93KR>B0bpQRw);w66Yw4Y`YsD3$mzi8Y_w6vPqt9)CTE7( z$w?}X{YCOjLPUTNf?)UA*+uUb>|57)OA$>90+arJGLVd83L<&=AXVTLV<#+`Bi{U!zBRyVjQ#Dkxn%N*ZS8f>BIkcS9-#^1_#Nx9#ReP5VuK_Ar?O^TQa z2IT^f?}|D<{={#TQTo)Gg98J+s%|uhuxaneM+QAzfRPRoBobv`f}9XUgOILOJgp#M zb+D&YRaIFQpAdC7U1($_O0Xy>L?d=9yy!;?5+=8{u#i9o!QIuf@=+VL+xI*|i2bV@ zicdu%Fpf7jW%kb#!e)%qCnnfE5WHJ!gRiBY4p0oeI<@u_8>1#%vhu z;!ZM2oUx{gq*heG&dautR=_SNLaP8M8axO!jNM2bH=Bi&oxyfkCwYKr265OKYYtio z%oyPa^LS|Ljr@s_iuVf2U#(imlBv0ct*fBFDxu9 z71V!cv!?`UN`=Kh`Dzi;c;fTmQ+9EeGyI*m+o6KwSFpej-Mhh-AhO#}Nxx=Oyycw7 z>vK2M9fyRDKw(JZ`JCPtvfD>Jq1v)Kqfq$Cv}br~#SBM;3@a+iGTVy2nR9w!l!K+K z$53CPUvw=p+u}#d=2Ur^_ljlKw6g%H&|XAF%@#)^44NX|c zF6!w%=rgH}4bs+qi)W<4Q>OD9xlnX4Yxw~AO=Ph$}&=geu6uFbD(>PkR(x=kmfy8e>5nI*6Va*80 z45`q?0o88$OAiwd_-E*Yzl2bEK7yjHv!$zs=^tm!iOLe9Z=as`wLB!`miQoT{7vB& zgaH*6JONY%tGCZ@-|qJLJS5WxRxot{>2f*Su-)Hsnbk9T`H^gK6~0WgA zUO-n-{MnS?5xT6^(%l-P$c6_M#-FQbKx#UoG)w?-&W4s+Oc^rzI0!|xOrPGqNyg$3 zKz7(~t93r{X{M4}!WZp<;rRyG>(aZGPj2K-O}>snmm1Q+AuPs^4kJ+NX=-Unoxf{v z`FR9tlEIVO3Q8e}X&Nz%L0*hv;Yo>J4#RV<_5(L}fdlKp-_)`E4~UF#Gt*hNPKQ-I z+q<8b;e6zoKsC>7jlhLjMAruT(T#wUD795#Uu`{4HId1kz^?KEI1nE*Sx1PH{!br* zFhXE5G+k|j7OuMH`jYG#i^Nq~8SDzOR9$EoXlfKB5rY`SdXMKZ!NI~+Yg>?ZRBHA3 z{KyY#uP4Aim5pRtO^_E|GOslpv+v+IiS!s};DtfHsOqy=jh-E&6EEGtIqpoE#Z5JK zc+}XxdD}?%u!7WhWow8D+eGxa;UyC*nR0tYYdhK;nznRl<@se>ohGAvTVspfOnC@u zhVFKTZA?MD+zYxL#0yHDD%=C(s)p&vZ8#i+h!tNJbocf*8?#N`6*XyV5+xga>0tfd z4a)kVj~@n{FC?JDG5U5BYw(t_$zI&to@Z2cEm|eC(alc#ZslMx@}}_%4|yC*>b4@? z-K`iJGGns&Zz&40HKJp^hfQXd7Hm_WJJs0ZiJJOooWh8|1sM`hN9fOy<6(0Uew?Ce=Q5+I-4CmUb zZ?-&KzB{TIc1CPDk8v?nyUso|`BUKoX$=cM5;}r}YsnoHtm$62i%G}%`5d{1MW(1$ z!y7{&=&%yPZ%v{;>(B$i}rWDvNYy=Eyh{bNL8j-4d1 z>*TjuXIPtm@A7~^5CG^Q_?RebRXgw{BaTrg0qi>KEy!7Ga$3_49n(}^`cqK`Zhk|7 z4)~|~UTU5C4P%nw4qD=#ZA)BgbU1lvOl|hxS{&bH{ZgdVPnN{AouJ5B{1u_Mb!MLh z&E~Ii)g0xT`nRpw1WIyV!4-oNJ zd}8j`Cjd@-Wfv{J7&dpe{STqP4O{WZ?3PmG&lbaybf1_;QZPgLzUaCy0Uf)k=C2@tkm5iaZ6%ym#M+^3>B5Wm3>Cn!DXxL& zKQEr%Pj7pVX^fjcS6qT57$7wu#CP|cC4DQ%Z{8LX)+o`!gsNWQhV||)dF>_PjkSFL za{&`*N(m*4zRc+sP@$E?qAdY$cz+EVupy^NiOz*oObs-*>O-)&7C^ z*{6UfFm7Ry0{3}2s47<%T6!&bH|sIppdRec^Jl-Hz>?`(B0l{61ycPO^!R}kPTKGA zZ=DWA{{~7IMW{9KAFTp0ehdqQ42vbA`nMd6@C~ki=s`3<5TZ5J7H!Bp<>o}qX!-j) zp;m#bII}Fz+hWE>S8d_T|A?t@V(?8-cHJLB&Xs&D6D3;-a@ZMhe6Ozg2;cnE#vcM$ zX~Va9ZC@t%-``+iNL$f-F_>EZVMdVb4Fs|DEh*dp`af*Qn*)w_NfBWjk(dA0(?GCa z!1+RWz#!)TM+yl_$`6C7;eVvS!6c<`$>0Xi{!3~TN=hFQrsnZ~Nj-v+A`)sX`Y)%Q zfGeQ85o@{sna9-cpe&0T0}+Px(?9bVj0!903;Pkn-s``O@W3vnWzlRv0vlsH#WTfo^ zkUx*F7#In5kl_=Ur~feyAQV8s$_pd${p&R@(3wcK{9D0)CIFHL?M%r3+5b8dM+ZDc z&_-im{KI4GHI#N)(!V&G#)C3Yqx3IIao|HicwYUlw{ULIn;_y0_rJItgf_AY`8OqA z&?>w&_g{^QppCvVYa)LBXL9v-00)ASqW>D5H9D*yL|p3NUu>R(vG_V|;rwqb(86Iz zX_{xC??1B(DF-_MVoag;ul{zyL_zTTo&MJ!DRfh`X0OuzYczylN$Zc56aR}kRMM1E zay~YzOu2eq@&k5xvsy?{Lutm&bB`FzFanlBv`os}^7qIuGJiI)uMM;(EoUQrRga@D zOF?L^xK%~BjRM#PDR*OPhTv)hFz3E)()4~D#1Pr*k6QJAMX;bPbYwR8NvP#teU5lW z1a609xW_D8bJNR98qa<`*d2JQRu=z;pbdY;?W$yhw-6T%b%y^Gn@YX?LYqd{ADnaN zpL+3&QussF=l9Efp`WSSfBELUMG0oVH`pYOzt}^_P7~T%>o_SK{!qc4fWFaxb#ltN z6lTX*@&tkDlP$07b;-f{-~;rc9M=bM7BRZb?NT6w;Cw$hg{SVl>-*a;ogfS>zcN-TZ`J&82pD z0S5as{hVVd2LdzKM?;KST3CBP4w}Y+&jKC;QD5kHB9(?f4R&89aK0OO+TjGD{~=;Q t{_l_fHwpi@68>*H{GUwt|57mCAUA(q;t>75X$RE@5+bs~#X|ZY{~zTTDx3fS literal 0 HcmV?d00001 diff --git a/metadata/en-US/short_description.txt b/metadata/en-US/short_description.txt new file mode 100644 index 0000000..ff151f0 --- /dev/null +++ b/metadata/en-US/short_description.txt @@ -0,0 +1 @@ +Material-ify with LeOS-Droid. diff --git a/metadata/es-AR/changelogs/4.txt b/metadata/es-AR/changelogs/4.txt new file mode 100644 index 0000000..1218c1d --- /dev/null +++ b/metadata/es-AR/changelogs/4.txt @@ -0,0 +1 @@ +* ¡Español agregado! ;) diff --git a/metadata/es-AR/full_description.txt b/metadata/es-AR/full_description.txt new file mode 100644 index 0000000..874a2b5 --- /dev/null +++ b/metadata/es-AR/full_description.txt @@ -0,0 +1,10 @@ +Cliente F-Droid no oficial con Diseño Material. + +Esta app es una Adaptación/Modificación Directa de Foxy-Droid. + +Características: + +* Estilo F-Droid Material +* Sin cartas o animaciones inapropiadas +* Sincronización rápida de repositorios +* Componentes Android estándar y dependencias mínimas diff --git a/metadata/es-AR/short_description.txt b/metadata/es-AR/short_description.txt new file mode 100644 index 0000000..0766f85 --- /dev/null +++ b/metadata/es-AR/short_description.txt @@ -0,0 +1 @@ +¡Droid-ificá con Droid-ify! diff --git a/renovate.json b/renovate.json new file mode 100644 index 0000000..ac43d2a --- /dev/null +++ b/renovate.json @@ -0,0 +1,7 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": [ + "config:base" + ], + "ignoreDeps": ["shizuku"] +} diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 0000000..dd314b4 --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,30 @@ +pluginManagement { + includeBuild("build-logic") + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { + google() + mavenCentral() + maven(url = "https://jitpack.io") + } +} + +rootProject.name = "LeOS-Droid" +include( + ":app", + ":core:common", + ":core:data", + ":core:database", + ":core:datastore", + ":core:di", + ":core:domain", + ":core:network", + ":installer" +) +include(":sync:fdroid") diff --git a/sync/fdroid/.gitignore b/sync/fdroid/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/sync/fdroid/.gitignore @@ -0,0 +1 @@ +/build diff --git a/sync/fdroid/build.gradle.kts b/sync/fdroid/build.gradle.kts new file mode 100644 index 0000000..7eee77b --- /dev/null +++ b/sync/fdroid/build.gradle.kts @@ -0,0 +1,35 @@ +plugins { + alias(libs.plugins.looker.android.library) + alias(libs.plugins.looker.hilt) + alias(libs.plugins.looker.lint) +} + +android { + namespace = "com.leos.sync.fdroid" + + buildTypes { + release { + isMinifyEnabled = true + proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt")) + } + create("alpha") { + initWith(getByName("debug")) + isMinifyEnabled = true + } + } +} + +dependencies { + modules( + Modules.coreCommon, + Modules.coreDomain, + Modules.coreNetwork, + ) + + implementation(libs.kotlinx.coroutines.android) + implementation(libs.fdroid.index) + implementation(libs.fdroid.download) + testImplementation(libs.junit4) + androidTestImplementation(libs.androidx.test.ext) + androidTestImplementation(libs.androidx.test.espresso.core) +} diff --git a/sync/fdroid/src/androidTest/kotlin/com/looker/sync/fdroid/ExampleInstrumentedTest.kt b/sync/fdroid/src/androidTest/kotlin/com/looker/sync/fdroid/ExampleInstrumentedTest.kt new file mode 100644 index 0000000..04a6ca9 --- /dev/null +++ b/sync/fdroid/src/androidTest/kotlin/com/looker/sync/fdroid/ExampleInstrumentedTest.kt @@ -0,0 +1,24 @@ +package com.leos.sync.fdroid + +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.ext.junit.runners.AndroidJUnit4 + +import org.junit.Test +import org.junit.runner.RunWith + +import org.junit.Assert.* + +/** + * Instrumented test, which will execute on an Android device. + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +@RunWith(AndroidJUnit4::class) +class ExampleInstrumentedTest { + @Test + fun useAppContext() { + // Context of the app under test. + val appContext = InstrumentationRegistry.getInstrumentation().targetContext + assertEquals("com.leos.sync.fdroid.test", appContext.packageName) + } +} diff --git a/sync/fdroid/src/main/AndroidManifest.xml b/sync/fdroid/src/main/AndroidManifest.xml new file mode 100644 index 0000000..8bdb7e1 --- /dev/null +++ b/sync/fdroid/src/main/AndroidManifest.xml @@ -0,0 +1,4 @@ + + + + diff --git a/sync/fdroid/src/main/kotlin/com/looker/sync/fdroid/FdroidSyncable.kt b/sync/fdroid/src/main/kotlin/com/looker/sync/fdroid/FdroidSyncable.kt new file mode 100644 index 0000000..55b4e9e --- /dev/null +++ b/sync/fdroid/src/main/kotlin/com/looker/sync/fdroid/FdroidSyncable.kt @@ -0,0 +1,13 @@ +package com.leos.sync.fdroid + +import com.leos.core.domain.Syncable +import com.leos.core.domain.newer.App +import com.leos.core.domain.newer.Repo + +class FdroidSyncable(override val repo: Repo) : Syncable { + + override suspend fun getApps(): List = emptyList() + + override suspend fun getUpdatedRepo(): Repo = repo + +} diff --git a/sync/fdroid/src/main/kotlin/com/looker/sync/fdroid/IndexValidator.kt b/sync/fdroid/src/main/kotlin/com/looker/sync/fdroid/IndexValidator.kt new file mode 100644 index 0000000..b9f8440 --- /dev/null +++ b/sync/fdroid/src/main/kotlin/com/looker/sync/fdroid/IndexValidator.kt @@ -0,0 +1,70 @@ +package com.leos.sync.fdroid + +import com.leos.core.common.extension.certificate +import com.leos.core.common.extension.codeSigner +import com.leos.core.common.extension.fingerprint +import com.leos.core.common.extension.toJarFile +import com.leos.core.common.signature.FileValidator +import com.leos.core.common.signature.ValidationException +import com.leos.core.domain.newer.Repo +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext +import org.fdroid.index.IndexParser +import org.fdroid.index.parseEntry +import org.fdroid.index.parseV1 +import org.fdroid.index.v1.IndexV1 +import org.fdroid.index.v2.Entry +import java.io.File +import java.io.InputStream + +class IndexValidator( + private val repo: Repo, + private val config: ValidatorConfig, + private val block: (T, String) -> Unit +) : FileValidator { + override suspend fun validate(file: File) = withContext(Dispatchers.Default) { + val (entry, fingerprint) = getEntryStream(file, config.parser, config.jsonName) + if (repo.fingerprint.isNotBlank() && + !repo.fingerprint.equals(fingerprint, ignoreCase = true) + ) { + throw ValidationException( + "Expected Fingerprint: ${repo.fingerprint}, " + + "Acquired Fingerprint: $fingerprint" + ) + } + block(entry, fingerprint) + } + + companion object { + private suspend fun getEntryStream( + file: File, + getIndexValue: (InputStream) -> T, + entryName: String + ): Pair = withContext(Dispatchers.IO) { + val jar = file.toJarFile() + val jarEntry = jar.getJarEntry(entryName) + ?: throw ValidationException("No entry for: $entryName") + + val entry = jar + .getInputStream(jarEntry) + .use(getIndexValue) + + val fingerprint = jarEntry + .codeSigner + .certificate + .fingerprint() + entry to fingerprint + } + } +} + +sealed class ValidatorConfig( + val jsonName: String, + val parser: (InputStream) -> T +) { + + data object EntryConfig : ValidatorConfig("entry.json", IndexParser::parseEntry) + + data object IndexConfig : ValidatorConfig("index-v1.json", IndexParser::parseV1) + +} diff --git a/sync/fdroid/src/test/kotlin/com/looker/sync/fdroid/ExampleUnitTest.kt b/sync/fdroid/src/test/kotlin/com/looker/sync/fdroid/ExampleUnitTest.kt new file mode 100644 index 0000000..5634b8c --- /dev/null +++ b/sync/fdroid/src/test/kotlin/com/looker/sync/fdroid/ExampleUnitTest.kt @@ -0,0 +1,17 @@ +package com.leos.sync.fdroid + +import org.junit.Test + +import org.junit.Assert.* + +/** + * Example local unit test, which will execute on the development machine (host). + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +class ExampleUnitTest { + @Test + fun addition_isCorrect() { + assertEquals(4, 2 + 2) + } +} diff --git a/update.sh b/update.sh new file mode 100644 index 0000000..6ebc015 --- /dev/null +++ b/update.sh @@ -0,0 +1,86 @@ +#!/bin/bash + +# Default values +version="" +changelog_directory="./metadata/en-US/changelogs" +kotlin_file="./build-logic/structure/src/main/kotlin/DefaultConfig.kt" + +# Pull commits from origin +echo "Pulling commits from GitHub" +git pull --rebase + +# Parse command-line arguments +while [[ $# -gt 0 ]]; do + case $1 in + -v=*|--version=*) + version="${1#*=}" + shift + ;; + *) + echo "Invalid argument: $1" + exit 1 + ;; + esac + shift +done + +# Validate version format +if [[ ! "$version" =~ ^[0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?$ ]]; then + echo "Invalid version format. Please use X.Y.Z or X.Y.Z.W" + exit 1 +fi + +# Extract major, minor, release, and patch numbers +IFS='.' read -r -a version_parts <<< "$version" +major="${version_parts[0]}" +minor="${version_parts[1]}" +release="${version_parts[2]}" +patch="${version_parts[3]-0}" + +# Calculate version code +version_code="$((major * 1000 + minor * 100 + release * 10 + patch))" + +# Generate version name +if [ -z "$patch" ]; then + version_name="$major.$minor.$release" + changelog_file="$changelog_directory/$version_code" + git_tag="v$version" +else + if [ "$patch" -eq 0 ]; then + version_name="$major.$minor.$release" + else + version_name="$major.$minor.$release Patch $patch" + fi + changelog_file="$changelog_directory/$version_code.txt" + git_tag="v$version" +fi + +# Update the Kotlin file with new version code and name +sed -i "s/const val versionCode = [0-9]*/const val versionCode = $version_code/" "$kotlin_file" +sed -i "s/const val versionName = \"[^\"]*\"/const val versionName = \"$version_name\"/" "$kotlin_file" + +# Line ending to CRLF +sed -i ':a;N;$!ba;s/\n/\r\n/g' "$kotlin_file" + +# Create a changelog file +mkdir -p "$changelog_directory" +touch "$changelog_file" + +echo "Version Code: $version_code" +echo "Version Name: $version_name" +echo "Changelog file name: $changelog_file" +echo "Git tag: $git_tag" + +code $changelog_file + +# Ask for confirmation before creating a Git tag +read -p "Do you want to create a Git tag for version $git_tag? (y/n): " -r +if [[ $REPLY =~ ^[Yy]$ ]]; then + git add -A + git commit -m "Release $version_name" + # Create a Git tag + git tag "$git_tag" + echo "Git tag '$git_tag' created." +else + echo "Git tag not created." +fi