From 000721ff69f414539334164d860f41f0cddb3a97 Mon Sep 17 00:00:00 2001 From: Mina Mikhail Date: Tue, 17 Aug 2021 19:17:23 +0200 Subject: [PATCH] + Initial Commit --- .gitignore | 40 +++ README.md | 29 ++ app/.gitignore | 1 + app/build.gradle | 87 ++++++ app/proguard-rules.pro | 21 ++ app/src/main/AndroidManifest.xml | 30 ++ app/src/main/ic_launcher-playstore.png | Bin 0 -> 25918 bytes .../newsapp/core/MyApplication.kt | 40 +++ .../core/data_source/BaseRemoteDataSource.kt | 58 ++++ .../core/di/module/NetworkServicesModule.kt | 20 ++ .../newsapp/core/di/module/RetrofitModule.kt | 91 ++++++ .../newsapp/core/di/module/RoomModule.kt | 21 ++ .../newsapp/core/local/MyDatabase.kt | 20 ++ .../newsapp/core/network/FailureStatus.kt | 11 + .../newsapp/core/network/NetworkUtils.kt | 36 +++ .../newsapp/core/network/Resource.kt | 13 + .../newsapp/core/network/ResponseStatus.kt | 9 + .../newsapp/core/utils/DateUtils.kt | 81 ++++++ .../EndlessRecyclerViewScrollListener.kt | 84 ++++++ .../newsapp/core/utils/KeyboardUtils.kt | 22 ++ .../core/utils/SearchEditTextListener.kt | 56 ++++ .../newsapp/core/utils/SingleLiveEvent.kt | 58 ++++ .../core/utils/SwipeToDeleteCallback.kt | 87 ++++++ .../mina_mikhail/newsapp/core/utils/Utils.kt | 61 ++++ .../newsapp/core/view/BaseActivity.kt | 48 ++++ .../newsapp/core/view/BaseFragment.kt | 84 ++++++ .../view/extensions/ActivityExtensions.kt | 34 +++ .../view/extensions/FragmentExtensions.kt | 66 +++++ .../view/extensions/NavigationExtensions.kt | 239 ++++++++++++++++ .../core/view/extensions/ViewExtensions.kt | 97 +++++++ .../data/data_source/local/ArticlesDao.kt | 36 +++ .../data_source/local/NewsLocalDataSource.kt | 15 + .../remote/NewsRemoteDataSource.kt | 15 + .../data/data_source/remote/NewsServices.kt | 23 ++ .../news/data/repository/NewsRepository.kt | 22 ++ .../features/news/domain/Converters.kt | 22 ++ .../news/domain/entity/model/Article.kt | 23 ++ .../domain/entity/response/NewsResponse.kt | 9 + .../news/presentation/NewsActivity.kt | 32 +++ .../features/news/presentation/NewsAdapter.kt | 70 +++++ .../breaking_news/BreakingNewsFragment.kt | 191 +++++++++++++ .../breaking_news/BreakingNewsViewModel.kt | 22 ++ .../news_details/NewsDetailsFragment.kt | 56 ++++ .../news_details/NewsDetailsViewModel.kt | 18 ++ .../saved_news/SavedNewsFragment.kt | 74 +++++ .../saved_news/SavedNewsViewModel.kt | 24 ++ .../search_news/SearchNewsFragment.kt | 262 ++++++++++++++++++ .../search_news/SearchNewsViewModel.kt | 23 ++ .../splash/presentation/SplashActivity.kt | 27 ++ app/src/main/res/anim/anim_list_fall_down.xml | 14 + app/src/main/res/anim/anim_list_slide_in.xml | 14 + app/src/main/res/anim/anim_slide_in_left.xml | 10 + app/src/main/res/anim/anim_slide_in_right.xml | 10 + app/src/main/res/anim/anim_slide_out_left.xml | 10 + .../main/res/anim/anim_slide_out_right.xml | 10 + .../anim/layout_list_fall_down_animation.xml | 5 + .../anim/layout_list_slide_in_animation.xml | 5 + app/src/main/res/drawable/bg_gray.xml | 8 + app/src/main/res/drawable/bg_no_data.xml | 106 +++++++ app/src/main/res/drawable/bg_no_image.png | Bin 0 -> 8366 bytes app/src/main/res/drawable/bg_no_internet.xml | 185 +++++++++++++ .../main/res/drawable/bg_rounded_white.xml | 8 + app/src/main/res/drawable/bg_toast.xml | 30 ++ .../main/res/drawable/btn_white_circle.xml | 13 + .../main/res/drawable/ic_breaking_news.xml | 28 ++ .../drawable/ic_breaking_news_selected.xml | 16 ++ app/src/main/res/drawable/ic_dismiss.xml | 13 + .../res/drawable/ic_launcher_foreground.xml | 63 +++++ app/src/main/res/drawable/ic_no_internet.xml | 27 ++ app/src/main/res/drawable/ic_saved_news.xml | 10 + .../res/drawable/ic_saved_news_selected.xml | 10 + app/src/main/res/drawable/ic_search.xml | 13 + .../main/res/drawable/ic_search_selected.xml | 19 ++ .../drawable/nav_breaking_news_selector.xml | 8 + .../res/drawable/nav_saved_news_selector.xml | 8 + .../res/drawable/nav_search_news_selector.xml | 8 + app/src/main/res/font/rubik_bold.ttf | Bin 0 -> 136068 bytes app/src/main/res/font/rubik_medium.ttf | Bin 0 -> 136332 bytes app/src/main/res/font/rubik_regular.ttf | Bin 0 -> 133376 bytes app/src/main/res/layout/activity_news.xml | 25 ++ app/src/main/res/layout/activity_splash.xml | 16 ++ .../res/layout/fragment_breaking_news.xml | 23 ++ .../main/res/layout/fragment_news_details.xml | 28 ++ .../main/res/layout/fragment_saved_news.xml | 19 ++ .../main/res/layout/fragment_search_news.xml | 108 ++++++++ app/src/main/res/layout/item_news.xml | 82 ++++++ app/src/main/res/layout/list_general.xml | 112 ++++++++ app/src/main/res/layout/progress_dialog.xml | 36 +++ app/src/main/res/layout/toast.xml | 63 +++++ .../main/res/menu/menu_bottom_navigation.xml | 19 ++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 2394 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 4410 bytes app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1621 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 2896 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 3195 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 6130 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 5095 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 10217 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 7644 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 15223 bytes .../main/res/navigation/nav_breaking_news.xml | 32 +++ .../main/res/navigation/nav_saved_news.xml | 32 +++ .../main/res/navigation/nav_search_news.xml | 32 +++ app/src/main/res/values/colors.xml | 16 ++ app/src/main/res/values/dimens.xml | 61 ++++ .../res/values/ic_launcher_background.xml | 4 + app/src/main/res/values/strings.xml | 29 ++ app/src/main/res/values/themes.xml | 39 +++ build.gradle | 60 ++++ gradle.properties | 21 ++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59203 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 185 +++++++++++++ gradlew.bat | 89 ++++++ settings.gradle | 10 + 117 files changed, 4316 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 app/.gitignore create mode 100644 app/build.gradle create mode 100644 app/proguard-rules.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/java/com/mina_mikhail/newsapp/core/MyApplication.kt create mode 100644 app/src/main/java/com/mina_mikhail/newsapp/core/data_source/BaseRemoteDataSource.kt create mode 100644 app/src/main/java/com/mina_mikhail/newsapp/core/di/module/NetworkServicesModule.kt create mode 100644 app/src/main/java/com/mina_mikhail/newsapp/core/di/module/RetrofitModule.kt create mode 100644 app/src/main/java/com/mina_mikhail/newsapp/core/di/module/RoomModule.kt create mode 100644 app/src/main/java/com/mina_mikhail/newsapp/core/local/MyDatabase.kt create mode 100644 app/src/main/java/com/mina_mikhail/newsapp/core/network/FailureStatus.kt create mode 100644 app/src/main/java/com/mina_mikhail/newsapp/core/network/NetworkUtils.kt create mode 100644 app/src/main/java/com/mina_mikhail/newsapp/core/network/Resource.kt create mode 100644 app/src/main/java/com/mina_mikhail/newsapp/core/network/ResponseStatus.kt create mode 100644 app/src/main/java/com/mina_mikhail/newsapp/core/utils/DateUtils.kt create mode 100644 app/src/main/java/com/mina_mikhail/newsapp/core/utils/EndlessRecyclerViewScrollListener.kt create mode 100644 app/src/main/java/com/mina_mikhail/newsapp/core/utils/KeyboardUtils.kt create mode 100644 app/src/main/java/com/mina_mikhail/newsapp/core/utils/SearchEditTextListener.kt create mode 100644 app/src/main/java/com/mina_mikhail/newsapp/core/utils/SingleLiveEvent.kt create mode 100644 app/src/main/java/com/mina_mikhail/newsapp/core/utils/SwipeToDeleteCallback.kt create mode 100644 app/src/main/java/com/mina_mikhail/newsapp/core/utils/Utils.kt create mode 100644 app/src/main/java/com/mina_mikhail/newsapp/core/view/BaseActivity.kt create mode 100644 app/src/main/java/com/mina_mikhail/newsapp/core/view/BaseFragment.kt create mode 100644 app/src/main/java/com/mina_mikhail/newsapp/core/view/extensions/ActivityExtensions.kt create mode 100644 app/src/main/java/com/mina_mikhail/newsapp/core/view/extensions/FragmentExtensions.kt create mode 100644 app/src/main/java/com/mina_mikhail/newsapp/core/view/extensions/NavigationExtensions.kt create mode 100644 app/src/main/java/com/mina_mikhail/newsapp/core/view/extensions/ViewExtensions.kt create mode 100644 app/src/main/java/com/mina_mikhail/newsapp/features/news/data/data_source/local/ArticlesDao.kt create mode 100644 app/src/main/java/com/mina_mikhail/newsapp/features/news/data/data_source/local/NewsLocalDataSource.kt create mode 100644 app/src/main/java/com/mina_mikhail/newsapp/features/news/data/data_source/remote/NewsRemoteDataSource.kt create mode 100644 app/src/main/java/com/mina_mikhail/newsapp/features/news/data/data_source/remote/NewsServices.kt create mode 100644 app/src/main/java/com/mina_mikhail/newsapp/features/news/data/repository/NewsRepository.kt create mode 100644 app/src/main/java/com/mina_mikhail/newsapp/features/news/domain/Converters.kt create mode 100644 app/src/main/java/com/mina_mikhail/newsapp/features/news/domain/entity/model/Article.kt create mode 100644 app/src/main/java/com/mina_mikhail/newsapp/features/news/domain/entity/response/NewsResponse.kt create mode 100644 app/src/main/java/com/mina_mikhail/newsapp/features/news/presentation/NewsActivity.kt create mode 100644 app/src/main/java/com/mina_mikhail/newsapp/features/news/presentation/NewsAdapter.kt create mode 100644 app/src/main/java/com/mina_mikhail/newsapp/features/news/presentation/breaking_news/BreakingNewsFragment.kt create mode 100644 app/src/main/java/com/mina_mikhail/newsapp/features/news/presentation/breaking_news/BreakingNewsViewModel.kt create mode 100644 app/src/main/java/com/mina_mikhail/newsapp/features/news/presentation/news_details/NewsDetailsFragment.kt create mode 100644 app/src/main/java/com/mina_mikhail/newsapp/features/news/presentation/news_details/NewsDetailsViewModel.kt create mode 100644 app/src/main/java/com/mina_mikhail/newsapp/features/news/presentation/saved_news/SavedNewsFragment.kt create mode 100644 app/src/main/java/com/mina_mikhail/newsapp/features/news/presentation/saved_news/SavedNewsViewModel.kt create mode 100644 app/src/main/java/com/mina_mikhail/newsapp/features/news/presentation/search_news/SearchNewsFragment.kt create mode 100644 app/src/main/java/com/mina_mikhail/newsapp/features/news/presentation/search_news/SearchNewsViewModel.kt create mode 100644 app/src/main/java/com/mina_mikhail/newsapp/features/splash/presentation/SplashActivity.kt create mode 100644 app/src/main/res/anim/anim_list_fall_down.xml create mode 100644 app/src/main/res/anim/anim_list_slide_in.xml create mode 100644 app/src/main/res/anim/anim_slide_in_left.xml create mode 100644 app/src/main/res/anim/anim_slide_in_right.xml create mode 100644 app/src/main/res/anim/anim_slide_out_left.xml create mode 100644 app/src/main/res/anim/anim_slide_out_right.xml create mode 100644 app/src/main/res/anim/layout_list_fall_down_animation.xml create mode 100644 app/src/main/res/anim/layout_list_slide_in_animation.xml create mode 100644 app/src/main/res/drawable/bg_gray.xml create mode 100644 app/src/main/res/drawable/bg_no_data.xml create mode 100644 app/src/main/res/drawable/bg_no_image.png create mode 100644 app/src/main/res/drawable/bg_no_internet.xml create mode 100644 app/src/main/res/drawable/bg_rounded_white.xml create mode 100644 app/src/main/res/drawable/bg_toast.xml create mode 100644 app/src/main/res/drawable/btn_white_circle.xml create mode 100644 app/src/main/res/drawable/ic_breaking_news.xml create mode 100644 app/src/main/res/drawable/ic_breaking_news_selected.xml create mode 100644 app/src/main/res/drawable/ic_dismiss.xml create mode 100644 app/src/main/res/drawable/ic_launcher_foreground.xml create mode 100644 app/src/main/res/drawable/ic_no_internet.xml create mode 100644 app/src/main/res/drawable/ic_saved_news.xml create mode 100644 app/src/main/res/drawable/ic_saved_news_selected.xml create mode 100644 app/src/main/res/drawable/ic_search.xml create mode 100644 app/src/main/res/drawable/ic_search_selected.xml create mode 100644 app/src/main/res/drawable/nav_breaking_news_selector.xml create mode 100644 app/src/main/res/drawable/nav_saved_news_selector.xml create mode 100644 app/src/main/res/drawable/nav_search_news_selector.xml create mode 100644 app/src/main/res/font/rubik_bold.ttf create mode 100644 app/src/main/res/font/rubik_medium.ttf create mode 100644 app/src/main/res/font/rubik_regular.ttf create mode 100644 app/src/main/res/layout/activity_news.xml create mode 100644 app/src/main/res/layout/activity_splash.xml create mode 100644 app/src/main/res/layout/fragment_breaking_news.xml create mode 100644 app/src/main/res/layout/fragment_news_details.xml create mode 100644 app/src/main/res/layout/fragment_saved_news.xml create mode 100644 app/src/main/res/layout/fragment_search_news.xml create mode 100644 app/src/main/res/layout/item_news.xml create mode 100644 app/src/main/res/layout/list_general.xml create mode 100644 app/src/main/res/layout/progress_dialog.xml create mode 100644 app/src/main/res/layout/toast.xml create mode 100644 app/src/main/res/menu/menu_bottom_navigation.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.png create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/navigation/nav_breaking_news.xml create mode 100644 app/src/main/res/navigation/nav_saved_news.xml create mode 100644 app/src/main/res/navigation/nav_search_news.xml create mode 100644 app/src/main/res/values/colors.xml create mode 100644 app/src/main/res/values/dimens.xml create mode 100644 app/src/main/res/values/ic_launcher_background.xml create mode 100644 app/src/main/res/values/strings.xml create mode 100644 app/src/main/res/values/themes.xml create mode 100644 build.gradle create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..66a629e --- /dev/null +++ b/.gitignore @@ -0,0 +1,40 @@ +# Built application files +*.apk +*.ap_ + +# Files for the ART/Dalvik VM +*.dex + +# Java class files +*.class + +# Generated files +bin/ +gen/ +out/ + +# Gradle files +.gradle/ +build/ + +# Local configuration file (sdk path, etc) +local.properties + +# Proguard folder generated by Eclipse +proguard/ + +# Log Files +*.log + +# Android Studio Navigation editor temp files +.navigation/ + +# Android Studio captures folder +captures/ + +# Intellij +*.iml +.idea + +# External native build folder generated in Android Studio 2.2 and later +.externalNativeBuild \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..223efa1 --- /dev/null +++ b/README.md @@ -0,0 +1,29 @@ +## Tech stack & News App libraries + +- Navigation component - navigation graph for navigating and replacing screens/fragments +- ViewBinding - allows to more easily write code that interacts with views and replaces ```findViewById```. +- ViewModel - UI related data holder, lifecycle aware. +- LiveData - Build data objects that notify views when the underlying database changes. +- Dagger-Hilt for dependency injection. Object creation and scoping is handled by Hilt. +- Kotlin Coroutines + Flow - for managing background threads with simplified code and reducing needs for callbacks +- Retrofit2 & OkHttp3 - to make REST requests to the web service integrated. +- Room for database +- Recyclerview animation +- Coil - for image loading + +## Architecture: + +- MVVM Architecture +- Repository pattern +- Applying SOLID principles, each class has a single job with separation of concerns by making classes independent + of each other and communicating with interfaces. + +## Features + ++ Get breaking news ++ Save news to local ++ Search for specific news + +## License + +This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..c57dda0 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,87 @@ +plugins { + id 'com.android.application' + id 'kotlin-android' + id 'kotlin-kapt' + id 'androidx.navigation.safeargs' + id 'dagger.hilt.android.plugin' +} + +android { + compileSdk compile_sdk_version + + defaultConfig { + applicationId "com.mina_mikhail.newsapp" + minSdk min_sdk_version + targetSdk compile_sdk_version + versionCode version_code + versionName version_name + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + debug { + buildConfigField("String", "API_BASE_URL", "\"https://newsapi.org/v2/\"") + buildConfigField("String", "API_KEY", "\"5c203f74fdcc4265bca981fd059fee2c\"") + } + + release { + minifyEnabled true + shrinkResources true + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + + buildConfigField("String", "API_BASE_URL", "\"https://newsapi.org/v2/\"") + buildConfigField("String", "API_KEY", "\"5c203f74fdcc4265bca981fd059fee2c\"") + } + } + + buildFeatures { + viewBinding true + } +} + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + + // Support + implementation "androidx.appcompat:appcompat:$appcompat" + implementation "androidx.core:core-ktx:$core_ktx" + implementation "androidx.legacy:legacy-support-v4:$support_version" + + // Arch Components + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version" + implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version" + implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version" + + // Kotlin Coroutines + implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$kotlin_coroutines" + implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlin_coroutines" + + // Room + implementation "androidx.room:room-runtime:$room_version" + kapt "androidx.room:room-compiler:$room_version" + implementation "androidx.room:room-ktx:$room_version" + + // Networking + implementation "com.squareup.retrofit2:retrofit:$retrofit" + implementation "com.squareup.retrofit2:converter-gson:$retrofit" + implementation "com.google.code.gson:gson:$gson" + implementation "com.squareup.okhttp3:logging-interceptor:$interceptor" + implementation "com.mocklets:pluto:$pluto" + + // UI + implementation "com.google.android.material:material:$material_design" + implementation "androidx.navigation:navigation-fragment-ktx:$android_navigation" + implementation "androidx.navigation:navigation-ui-ktx:$android_navigation" + implementation "com.github.ybq:Android-SpinKit:$loading_animations" + implementation "com.tapadoo.android:alerter:$alerter" + implementation "io.coil-kt:coil:$coil" + + // Utils + implementation "androidx.datastore:datastore-preferences:$datastore_preferences" + + // Hilt + implementation "com.google.dagger:hilt-android:$hilt_version" + kapt "com.google.dagger:hilt-android-compiler:$hilt_version" +} \ No newline at end of file diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ 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..80af570 --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png new file mode 100644 index 0000000000000000000000000000000000000000..09c6aded2bf29f6826ebe740afc386be078f6897 GIT binary patch literal 25918 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

>-KH)t+vhXxe_L;Euh|Ca7V5)UcJ? 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 literal 0 HcmV?d00001 diff --git a/app/src/main/java/com/mina_mikhail/newsapp/core/MyApplication.kt b/app/src/main/java/com/mina_mikhail/newsapp/core/MyApplication.kt new file mode 100644 index 0000000..01bb829 --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/core/MyApplication.kt @@ -0,0 +1,40 @@ +package com.mina_mikhail.newsapp.core + +import android.app.Application +import com.mina_mikhail.newsapp.BuildConfig +import com.mocklets.pluto.Pluto +import com.mocklets.pluto.PlutoLog +import com.mocklets.pluto.modules.exceptions.ANRException +import com.mocklets.pluto.modules.exceptions.ANRListener +import dagger.hilt.android.HiltAndroidApp + +@HiltAndroidApp +class MyApplication : Application() { + + override + fun onCreate() { + super.onCreate() + + initPlutoNetworkInspection() + + initPlutoANRInspection() + } + + private fun initPlutoNetworkInspection() { + if (BuildConfig.DEBUG) { + Pluto.initialize(this) + } + } + + private fun initPlutoANRInspection() { + if (BuildConfig.DEBUG) { + Pluto.setANRListener(object : ANRListener { + override + fun onAppNotResponding(exception: ANRException) { + exception.printStackTrace() + PlutoLog.e("ANR", exception.threadStateMap) + } + }) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/mina_mikhail/newsapp/core/data_source/BaseRemoteDataSource.kt b/app/src/main/java/com/mina_mikhail/newsapp/core/data_source/BaseRemoteDataSource.kt new file mode 100644 index 0000000..5f30154 --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/core/data_source/BaseRemoteDataSource.kt @@ -0,0 +1,58 @@ +package com.mina_mikhail.newsapp.core.data_source + +import com.mina_mikhail.newsapp.core.network.FailureStatus.API_FAIL +import com.mina_mikhail.newsapp.core.network.FailureStatus.NO_INTERNET +import com.mina_mikhail.newsapp.core.network.FailureStatus.OTHER +import com.mina_mikhail.newsapp.core.network.FailureStatus.SERVER_SIDE_EXCEPTION +import com.mina_mikhail.newsapp.core.network.FailureStatus.TOKEN_EXPIRED +import com.mina_mikhail.newsapp.core.network.Resource +import com.mina_mikhail.newsapp.core.network.ResponseStatus +import com.mina_mikhail.newsapp.features.news.domain.entity.response.NewsResponse +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext +import retrofit2.HttpException +import java.net.UnknownHostException +import javax.inject.Inject + +open class BaseRemoteDataSource @Inject constructor() { + + companion object { + const val LIST_PAGE_SIZE = 10 + } + + suspend fun safeApiCall(apiCall: suspend () -> T): Resource { + return withContext(Dispatchers.IO) { + try { + val apiResponse: T = apiCall.invoke() + + if ((apiResponse as NewsResponse).status == ResponseStatus.SUCCESS) { + if ((apiResponse as NewsResponse).totalResults == 0) { + Resource.Empty + } else { + Resource.Success(apiResponse) + } + } else { + Resource.Failure(API_FAIL, 200, "Error from api") + } + } catch (throwable: Throwable) { + when (throwable) { + is HttpException -> { + if (throwable.code() == 401) { + Resource.Failure(TOKEN_EXPIRED, throwable.code(), throwable.response()?.errorBody().toString()) + } else { + Resource.Failure(SERVER_SIDE_EXCEPTION, throwable.code(), throwable.response()?.errorBody().toString()) + } + } + + is UnknownHostException -> { + Resource.Failure(NO_INTERNET, null, null) + } + + else -> { + Resource.Failure(OTHER, null, null) + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/mina_mikhail/newsapp/core/di/module/NetworkServicesModule.kt b/app/src/main/java/com/mina_mikhail/newsapp/core/di/module/NetworkServicesModule.kt new file mode 100644 index 0000000..1a5c61d --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/core/di/module/NetworkServicesModule.kt @@ -0,0 +1,20 @@ +package com.mina_mikhail.newsapp.core.di.module + +import com.mina_mikhail.newsapp.features.news.data.data_source.remote.NewsServices +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import retrofit2.Retrofit +import javax.inject.Singleton + +@Module(includes = [RetrofitModule::class]) +@InstallIn(SingletonComponent::class) +object NetworkServicesModule { + + @Provides + @Singleton + fun provideNewsServices(retrofit: Retrofit): NewsServices { + return retrofit.create(NewsServices::class.java) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/mina_mikhail/newsapp/core/di/module/RetrofitModule.kt b/app/src/main/java/com/mina_mikhail/newsapp/core/di/module/RetrofitModule.kt new file mode 100644 index 0000000..87cfda2 --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/core/di/module/RetrofitModule.kt @@ -0,0 +1,91 @@ +package com.mina_mikhail.newsapp.core.di.module + +import com.google.gson.Gson +import com.google.gson.GsonBuilder +import com.mina_mikhail.newsapp.BuildConfig +import com.mocklets.pluto.PlutoInterceptor +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import okhttp3.HttpUrl +import okhttp3.Interceptor +import okhttp3.OkHttpClient +import okhttp3.logging.HttpLoggingInterceptor +import retrofit2.Retrofit +import retrofit2.converter.gson.GsonConverterFactory +import java.util.concurrent.TimeUnit +import javax.inject.Singleton + +@Module +@InstallIn(SingletonComponent::class) +object RetrofitModule { + + private const val REQUEST_TIME_OUT: Long = 60 + + @Provides + @Singleton + fun provideHeadersInterceptor(): Interceptor = + Interceptor { chain: Interceptor.Chain -> + val original = chain.request() + // Request customization: add request query params + val originalHttpUrl: HttpUrl = original.url + val url = originalHttpUrl.newBuilder() + .addQueryParameter("apiKey", BuildConfig.API_KEY) + .build() + // Request customization: add request headers + val requestBuilder = original.newBuilder() + .url(url) + val request = requestBuilder.build() + chain.proceed(request) + } + + @Provides + @Singleton + fun provideHttpLoggingInterceptor(): HttpLoggingInterceptor { + val logging = HttpLoggingInterceptor() + logging.level = HttpLoggingInterceptor.Level.BODY + return logging + } + + @Provides + @Singleton + fun provideOkHttpClient( + headersInterceptor: Interceptor, + logging: HttpLoggingInterceptor + ): OkHttpClient { + return if (BuildConfig.DEBUG) { + OkHttpClient.Builder() + .readTimeout(REQUEST_TIME_OUT, TimeUnit.SECONDS) + .connectTimeout(REQUEST_TIME_OUT, TimeUnit.SECONDS) + .addNetworkInterceptor(headersInterceptor) + .addNetworkInterceptor(logging) + .addInterceptor(PlutoInterceptor()) + .build() + } else { + OkHttpClient.Builder() + .readTimeout(REQUEST_TIME_OUT, TimeUnit.SECONDS) + .connectTimeout(REQUEST_TIME_OUT, TimeUnit.SECONDS) + .addNetworkInterceptor(headersInterceptor) + .build() + } + } + + @Provides + @Singleton + fun provideGson(): Gson { + return GsonBuilder() + .setLenient() + .serializeNulls() // To allow sending null values + .create() + } + + @Provides + @Singleton + fun provideRetrofit(gson: Gson, okHttpClient: OkHttpClient): Retrofit = Retrofit.Builder() + .client(okHttpClient) + .addConverterFactory(GsonConverterFactory.create(gson)) + .baseUrl(BuildConfig.API_BASE_URL) + .build() + +} \ No newline at end of file diff --git a/app/src/main/java/com/mina_mikhail/newsapp/core/di/module/RoomModule.kt b/app/src/main/java/com/mina_mikhail/newsapp/core/di/module/RoomModule.kt new file mode 100644 index 0000000..cd237fc --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/core/di/module/RoomModule.kt @@ -0,0 +1,21 @@ +package com.mina_mikhail.newsapp.core.di.module + +import android.content.Context +import androidx.room.Room +import com.mina_mikhail.newsapp.core.local.MyDatabase +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 RoomModule { + + @Provides + @Singleton + fun provideDatabase(@ApplicationContext context: Context): MyDatabase = + Room.databaseBuilder(context, MyDatabase::class.java, MyDatabase.DATABASE_NAME).build() +} \ No newline at end of file diff --git a/app/src/main/java/com/mina_mikhail/newsapp/core/local/MyDatabase.kt b/app/src/main/java/com/mina_mikhail/newsapp/core/local/MyDatabase.kt new file mode 100644 index 0000000..d3188a5 --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/core/local/MyDatabase.kt @@ -0,0 +1,20 @@ +package com.mina_mikhail.newsapp.core.local + +import androidx.room.Database +import androidx.room.RoomDatabase +import androidx.room.TypeConverters +import com.mina_mikhail.newsapp.features.news.data.data_source.local.ArticlesDao +import com.mina_mikhail.newsapp.features.news.domain.Converters +import com.mina_mikhail.newsapp.features.news.domain.entity.model.Article + +@Database(entities = [Article::class], version = MyDatabase.DATABASE_VERSION) +@TypeConverters(Converters::class) +abstract class MyDatabase : RoomDatabase() { + + companion object { + const val DATABASE_VERSION = 1 + const val DATABASE_NAME = "NewsDatabase" + } + + abstract fun getArticlesDao(): ArticlesDao +} \ No newline at end of file diff --git a/app/src/main/java/com/mina_mikhail/newsapp/core/network/FailureStatus.kt b/app/src/main/java/com/mina_mikhail/newsapp/core/network/FailureStatus.kt new file mode 100644 index 0000000..4651bad --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/core/network/FailureStatus.kt @@ -0,0 +1,11 @@ +package com.mina_mikhail.newsapp.core.network + +enum class FailureStatus { + + API_FAIL, + SERVER_SIDE_EXCEPTION, + TOKEN_EXPIRED, + NO_INTERNET, + OTHER + +} \ No newline at end of file diff --git a/app/src/main/java/com/mina_mikhail/newsapp/core/network/NetworkUtils.kt b/app/src/main/java/com/mina_mikhail/newsapp/core/network/NetworkUtils.kt new file mode 100644 index 0000000..c31ca89 --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/core/network/NetworkUtils.kt @@ -0,0 +1,36 @@ +package com.mina_mikhail.newsapp.core.network + +import android.content.Context +import android.net.ConnectivityManager +import android.net.NetworkCapabilities +import android.os.Build + +fun isNetworkAvailable(context: Context): Boolean { + var result = false + val connectivityManager = + context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + val networkCapabilities = connectivityManager.activeNetwork ?: return false + val actNw = + connectivityManager.getNetworkCapabilities(networkCapabilities) ?: return false + result = when { + actNw.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) -> true + actNw.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) -> true + actNw.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET) -> true + else -> false + } + } else { + connectivityManager.run { + connectivityManager.activeNetworkInfo?.run { + result = when (type) { + ConnectivityManager.TYPE_WIFI -> true + ConnectivityManager.TYPE_MOBILE -> true + ConnectivityManager.TYPE_ETHERNET -> true + else -> false + } + + } + } + } + return result +} \ No newline at end of file diff --git a/app/src/main/java/com/mina_mikhail/newsapp/core/network/Resource.kt b/app/src/main/java/com/mina_mikhail/newsapp/core/network/Resource.kt new file mode 100644 index 0000000..31511a0 --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/core/network/Resource.kt @@ -0,0 +1,13 @@ +package com.mina_mikhail.newsapp.core.network + +sealed class Resource { + + data class Success(val value: T) : Resource() + + data class Failure(val failureStatus: FailureStatus, val code: Int?, val message: String?) : Resource() + + object Empty : Resource() + + object Loading : Resource() + +} \ No newline at end of file diff --git a/app/src/main/java/com/mina_mikhail/newsapp/core/network/ResponseStatus.kt b/app/src/main/java/com/mina_mikhail/newsapp/core/network/ResponseStatus.kt new file mode 100644 index 0000000..9a2ea60 --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/core/network/ResponseStatus.kt @@ -0,0 +1,9 @@ +package com.mina_mikhail.newsapp.core.network + +class ResponseStatus { + + companion object { + public const val SUCCESS = "ok" + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/mina_mikhail/newsapp/core/utils/DateUtils.kt b/app/src/main/java/com/mina_mikhail/newsapp/core/utils/DateUtils.kt new file mode 100644 index 0000000..e798c91 --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/core/utils/DateUtils.kt @@ -0,0 +1,81 @@ +package com.mina_mikhail.newsapp.core.utils + +import android.text.format.DateUtils +import java.text.ParseException +import java.text.SimpleDateFormat +import java.util.Calendar +import java.util.Date +import java.util.Locale + +class DateUtils { + companion object { + const val API_DATE_FORMAT = "yyyy-MM-dd" + const val UI_DATE_FORMAT = "dd-MM-yyyy" + const val FULL_DATE_TIME_FORMAT = "yyyy-MM-dd'T'HH:mm:ss" + const val MONTH_UI_DATE_FORMAT = "dd MMM yyyy" + const val DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss" + const val TIME_12_FORMAT = "hh:mm a" + const val TIME_24_FORMAT = "HH:mm" + const val TIME_24_FORMAT_WITH_SECONDS = "HH:mm:ss" + const val TIME_HOUR_ONLY = "HH" + const val TIME_MINUTE_ONLY = "mm" + const val DATE_TIME_12_FORMAT = "yyyy-MM-dd hh:mm a" + const val DATE_TIME_UI_FORMAT = "dd MMM yyyy, hh:mm a" + const val DAY_NAME = "EEEE" + const val SHORT_DAY_NAME = "E" + const val DATE_WITH_DAY_NAME = "EEE, dd MMM yyyy" + const val HOUR = "HH" + const val MINUTE = "mm" + const val DAY = "dd" + const val MONTH = "MM" + const val YEAR = "yyyy" + } +} + +fun String.changeDataFormat(oldFormat: String, newFormat: String): String { + val formatView = SimpleDateFormat(oldFormat, getLocale()) + val newFormatView = SimpleDateFormat(newFormat, getLocale()) + var dateObj: Date? = null + try { + dateObj = formatView.parse(this) + } catch (e: ParseException) { + e.printStackTrace() + } + + return if (dateObj == null) "" else newFormatView.format(dateObj) +} + +fun String.convertDateTimeToTimesAgo(format: String): String { + val inputFormat = SimpleDateFormat(format, getLocale()) + val date: Date? + return try { + date = inputFormat.parse(this) + + // the new date style + DateUtils.getRelativeTimeSpanString( + date.time, + Calendar.getInstance().timeInMillis, + DateUtils.MINUTE_IN_MILLIS + ) as String + } catch (e: Exception) { + e.printStackTrace() + "" + } +} + +fun getLocale(): Locale? { + return when (Locale.getDefault().language) { + "en" -> { + Locale.ENGLISH + } + "ar" -> { + Locale("ar") + } + "fr" -> { + Locale.FRENCH + } + else -> { + Locale.ENGLISH + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/mina_mikhail/newsapp/core/utils/EndlessRecyclerViewScrollListener.kt b/app/src/main/java/com/mina_mikhail/newsapp/core/utils/EndlessRecyclerViewScrollListener.kt new file mode 100644 index 0000000..18546a9 --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/core/utils/EndlessRecyclerViewScrollListener.kt @@ -0,0 +1,84 @@ +package com.mina_mikhail.newsapp.core.utils + +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import androidx.recyclerview.widget.StaggeredGridLayoutManager + +abstract class EndlessRecyclerViewScrollListener(private var visibleThreshold: Int = 5) : + RecyclerView.OnScrollListener() { + + private var currentPage = 0 + private var previousTotalItemCount = 0 + private var loading = true + private val startingPageIndex = 0 + + private var mLayoutManager: RecyclerView.LayoutManager? = null + + constructor(visibleThreshold: Int, layoutManager: LinearLayoutManager) : this(visibleThreshold) { + this.mLayoutManager = layoutManager + } + + constructor(visibleThreshold: Int, layoutManager: GridLayoutManager) : this(visibleThreshold) { + this.mLayoutManager = layoutManager + this.visibleThreshold = visibleThreshold * layoutManager.spanCount + } + + constructor(visibleThreshold: Int, layoutManager: StaggeredGridLayoutManager) : this(visibleThreshold) { + this.mLayoutManager = layoutManager + this.visibleThreshold = visibleThreshold * layoutManager.spanCount + } + + fun getLastVisibleItem(lastVisibleItemPositions: IntArray): Int { + var maxSize = 0 + for (i in lastVisibleItemPositions.indices) { + if (i == 0) { + maxSize = lastVisibleItemPositions[i] + } else if (lastVisibleItemPositions[i] > maxSize) { + maxSize = lastVisibleItemPositions[i] + } + } + return maxSize + } + + override fun onScrolled(view: RecyclerView, dx: Int, dy: Int) { + var lastVisibleItemPosition = 0 + val totalItemCount = mLayoutManager?.itemCount ?: 0 + + if (mLayoutManager is StaggeredGridLayoutManager) { + val lastVisibleItemPositions = (mLayoutManager as StaggeredGridLayoutManager).findLastVisibleItemPositions(null) + lastVisibleItemPosition = getLastVisibleItem(lastVisibleItemPositions) + } else if (mLayoutManager is GridLayoutManager) { + lastVisibleItemPosition = (mLayoutManager as GridLayoutManager).findLastVisibleItemPosition() + } else if (mLayoutManager is LinearLayoutManager) { + lastVisibleItemPosition = (mLayoutManager as LinearLayoutManager).findLastVisibleItemPosition() + } + + if (totalItemCount < previousTotalItemCount) { + this.currentPage = this.startingPageIndex + this.previousTotalItemCount = totalItemCount + if (totalItemCount == 0) { + this.loading = true + } + } + + if (loading && totalItemCount > previousTotalItemCount) { + loading = false + previousTotalItemCount = totalItemCount + } + + if (!loading && lastVisibleItemPosition + visibleThreshold > totalItemCount) { + currentPage++ + onLoadMore(currentPage, totalItemCount, view) + loading = true + } + } + + fun resetState() { + this.currentPage = this.startingPageIndex + this.previousTotalItemCount = 0 + this.loading = true + } + + abstract fun onLoadMore(page: Int, totalItemsCount: Int, view: RecyclerView) +} \ No newline at end of file diff --git a/app/src/main/java/com/mina_mikhail/newsapp/core/utils/KeyboardUtils.kt b/app/src/main/java/com/mina_mikhail/newsapp/core/utils/KeyboardUtils.kt new file mode 100644 index 0000000..72d7d88 --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/core/utils/KeyboardUtils.kt @@ -0,0 +1,22 @@ +package com.mina_mikhail.newsapp.core.utils + +import android.app.Activity +import android.content.Context +import android.view.View +import android.view.inputmethod.InputMethodManager +import android.widget.EditText + +fun hideSoftInput(activity: Activity) { + var view = activity.currentFocus + if (view == null) view = View(activity) + val imm = activity.getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager + imm.hideSoftInputFromWindow(view.windowToken, 0) +} + +fun showSoftInput(edit: EditText, context: Context) { + edit.isFocusable = true + edit.isFocusableInTouchMode = true + edit.requestFocus() + val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager + imm.showSoftInput(edit, 0) +} \ No newline at end of file diff --git a/app/src/main/java/com/mina_mikhail/newsapp/core/utils/SearchEditTextListener.kt b/app/src/main/java/com/mina_mikhail/newsapp/core/utils/SearchEditTextListener.kt new file mode 100644 index 0000000..b8bddf9 --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/core/utils/SearchEditTextListener.kt @@ -0,0 +1,56 @@ +package com.mina_mikhail.newsapp.core.utils + +import android.text.Editable +import android.text.TextWatcher +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.LifecycleObserver +import androidx.lifecycle.OnLifecycleEvent +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.Job +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch + +internal class SearchEditTextListener( + lifecycle: Lifecycle, + private val onSearchQueryChange: (String?) -> Unit +) : TextWatcher, LifecycleObserver { + + companion object { + private const val debouncePeriod: Long = 600 + } + + private val coroutineScope: CoroutineScope = CoroutineScope(Dispatchers.Main) + private var currentSearchJob: Job? = null + + init { + lifecycle.addObserver(this) + } + + override + fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) { + + } + + override + fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) { + currentSearchJob?.cancel() + + currentSearchJob = coroutineScope.launch { + p0?.let { + delay(debouncePeriod) + onSearchQueryChange(p0.toString()) + } + } + } + + override + fun afterTextChanged(p0: Editable?) { + + } + + @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY) + private fun destroy() { + currentSearchJob?.cancel() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/mina_mikhail/newsapp/core/utils/SingleLiveEvent.kt b/app/src/main/java/com/mina_mikhail/newsapp/core/utils/SingleLiveEvent.kt new file mode 100644 index 0000000..ceac149 --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/core/utils/SingleLiveEvent.kt @@ -0,0 +1,58 @@ +package com.mina_mikhail.newsapp.core.utils + +import android.util.Log +import androidx.annotation.MainThread +import androidx.lifecycle.LifecycleOwner +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.Observer +import java.util.concurrent.atomic.AtomicBoolean + +/** + * A lifecycle-aware observable that sends only new updates after subscription, used for events like + * navigation and Snackbar messages. + * + * + * This avoids a common problem with events: on configuration change (like rotation) an update + * can be emitted if the observer is active. This LiveData only calls the observable if there's an + * explicit call to setValue() or call(). + * + * + * Note that only one observer is going to be notified of changes. + */ +class SingleLiveEvent : MutableLiveData() { + private val pending = AtomicBoolean(false) + + @MainThread + override fun observe(owner: LifecycleOwner, observer: Observer) { + if (hasActiveObservers()) { + Log.w(TAG, "Multiple observers registered but only one will be notified of changes.") + } + // Observe the internal MutableLiveData + super.observe( + owner, + Observer { t -> + if (pending.compareAndSet(true, false)) { + observer.onChanged(t) + } + } + ) + } + + @MainThread + override fun setValue(t: T?) { + pending.set(true) + super.setValue(t) + } + + /** + * Used for cases where T is Void, to make calls cleaner. + */ + @MainThread + fun call() { + value = null + } + + companion object { + private const val TAG = "SingleLiveEvent" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/mina_mikhail/newsapp/core/utils/SwipeToDeleteCallback.kt b/app/src/main/java/com/mina_mikhail/newsapp/core/utils/SwipeToDeleteCallback.kt new file mode 100644 index 0000000..d82e05d --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/core/utils/SwipeToDeleteCallback.kt @@ -0,0 +1,87 @@ +package com.mina_mikhail.newsapp.core.utils + +import android.content.Context +import android.graphics.Canvas +import android.graphics.Color +import android.graphics.Paint +import android.graphics.PorterDuff +import android.graphics.PorterDuffXfermode +import android.graphics.drawable.ColorDrawable +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.ItemTouchHelper +import androidx.recyclerview.widget.RecyclerView + +abstract class SwipeToDeleteCallback(context: Context) : + ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT) { + + private val deleteIcon = ContextCompat.getDrawable(context, android.R.drawable.ic_menu_delete)!! + private val intrinsicWidth = deleteIcon.intrinsicWidth + private val intrinsicHeight = deleteIcon.intrinsicHeight + private val background = ColorDrawable() + private val backgroundColor = Color.RED + private val clearPaint = Paint().apply { xfermode = PorterDuffXfermode(PorterDuff.Mode.CLEAR) } + + override fun getMovementFlags( + recyclerView: RecyclerView, + viewHolder: RecyclerView.ViewHolder + ): Int { + return super.getMovementFlags(recyclerView, viewHolder) + } + + override fun onMove( + recyclerView: RecyclerView, + viewHolder: RecyclerView.ViewHolder, + target: RecyclerView.ViewHolder + ): Boolean { + return false + } + + override fun onChildDraw( + c: Canvas, recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, + dX: Float, dY: Float, actionState: Int, isCurrentlyActive: Boolean + ) { + + val itemView = viewHolder.itemView + val itemHeight = itemView.bottom - itemView.top + val isCanceled = dX == 0f && !isCurrentlyActive + + if (isCanceled) { + clearCanvas( + c, + itemView.right + dX, + itemView.top.toFloat(), + itemView.right.toFloat(), + itemView.bottom.toFloat() + ) + super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive) + return + } + + // Draw the red delete background + background.color = backgroundColor + background.setBounds( + itemView.right + dX.toInt(), + itemView.top, + itemView.right, + itemView.bottom + ) + background.draw(c) + + // Calculate position of delete icon + val deleteIconTop = itemView.top + (itemHeight - intrinsicHeight) / 2 + val deleteIconMargin = (itemHeight - intrinsicHeight) / 2 + val deleteIconLeft = itemView.right - deleteIconMargin - intrinsicWidth + val deleteIconRight = itemView.right - deleteIconMargin + val deleteIconBottom = deleteIconTop + intrinsicHeight + + // Draw the delete icon + deleteIcon.setBounds(deleteIconLeft, deleteIconTop, deleteIconRight, deleteIconBottom) + deleteIcon.draw(c) + + super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive) + } + + private fun clearCanvas(c: Canvas?, left: Float, top: Float, right: Float, bottom: Float) { + c?.drawRect(left, top, right, bottom, clearPaint) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/mina_mikhail/newsapp/core/utils/Utils.kt b/app/src/main/java/com/mina_mikhail/newsapp/core/utils/Utils.kt new file mode 100644 index 0000000..ed06d7f --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/core/utils/Utils.kt @@ -0,0 +1,61 @@ +package com.mina_mikhail.newsapp.core.utils + +import android.app.Activity +import android.app.Dialog +import android.content.Context +import android.graphics.Color +import android.graphics.drawable.ColorDrawable +import android.view.View +import android.widget.TextView +import android.widget.Toast +import com.mina_mikhail.newsapp.R +import com.mina_mikhail.newsapp.R.id +import com.mina_mikhail.newsapp.R.layout +import com.tapadoo.alerter.Alerter + +fun showMessage(context: Context, message: String?) { + Toast.makeText(context, message ?: context.resources.getString(R.string.some_error), Toast.LENGTH_SHORT) + .show() +} + +fun showNoInternetAlert(activity: Activity) { + Alerter.create(activity) + .setTitle(activity.resources.getString(R.string.connection_error)) + .setText(activity.resources.getString(R.string.no_internet)) + .setIcon(R.drawable.ic_no_internet) + .setBackgroundColorRes(R.color.red) + .enableClickAnimation(true) + .enableSwipeToDismiss() + .show() +} + +fun showLoadingDialog(activity: Activity?, hint: String?): Dialog? { + if (activity == null || activity.isFinishing()) { + return null + } + val progressDialog = Dialog(activity) + progressDialog.show() + if (progressDialog.window != null) { + progressDialog.window!!.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) + } + progressDialog.setContentView(layout.progress_dialog) + val tvHint = progressDialog.findViewById(id.tv_hint) + if (hint != null && !hint.isEmpty()) { + tvHint.visibility = View.VISIBLE + tvHint.text = hint + } else { + tvHint.visibility = View.GONE + } + + progressDialog.setCancelable(false) + progressDialog.setCanceledOnTouchOutside(false) + progressDialog.show() + + return progressDialog +} + +fun hideLoadingDialog(mProgressDialog: Dialog?, activity: Activity?) { + if (activity != null && !activity.isFinishing() && mProgressDialog != null && mProgressDialog.isShowing) { + mProgressDialog.dismiss() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/mina_mikhail/newsapp/core/view/BaseActivity.kt b/app/src/main/java/com/mina_mikhail/newsapp/core/view/BaseActivity.kt new file mode 100644 index 0000000..b42a7d5 --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/core/view/BaseActivity.kt @@ -0,0 +1,48 @@ +package com.mina_mikhail.newsapp.core.view + +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity +import androidx.lifecycle.LiveData +import androidx.navigation.NavController +import androidx.viewbinding.ViewBinding + +abstract class BaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB + protected lateinit var navController: LiveData + + override + fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + initViewBinding() + setContentView(binding.root) + + if (savedInstanceState == null) { + setUpBottomNavigation() + } + + setUpViews() + } + + override + fun onRestoreInstanceState(savedInstanceState: Bundle) { + super.onRestoreInstanceState(savedInstanceState) + + setUpBottomNavigation() + } + + private fun initViewBinding() { + binding = getViewBinding() + } + + abstract fun getViewBinding(): VB + + open fun setUpBottomNavigation() {} + + open fun setUpViews() {} + + override + fun onSupportNavigateUp(): Boolean { + return navController.value?.navigateUp()!! || super.onSupportNavigateUp() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/mina_mikhail/newsapp/core/view/BaseFragment.kt b/app/src/main/java/com/mina_mikhail/newsapp/core/view/BaseFragment.kt new file mode 100644 index 0000000..78ab5d4 --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/core/view/BaseFragment.kt @@ -0,0 +1,84 @@ +package com.mina_mikhail.newsapp.core.view + +import android.app.Dialog +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import androidx.viewbinding.ViewBinding +import com.mina_mikhail.newsapp.core.utils.hideLoadingDialog +import com.mina_mikhail.newsapp.core.utils.showLoadingDialog + +abstract class BaseFragment : Fragment() { + + protected lateinit var binding: VB + private var mRootView: View? = null + private var hasInitializedRootView = false + private var progressDialog: Dialog? = null + + override + fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + if (mRootView == null) { + initViewBinding(inflater, container) + } + + return mRootView + } + + private fun initViewBinding(inflater: LayoutInflater, container: ViewGroup?) { + binding = getViewBinding(inflater, container) + mRootView = binding.root + } + + override + fun onResume() { + super.onResume() + + registerListeners() + } + + override + fun onPause() { + unRegisterListeners() + + super.onPause() + } + + override + fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + if (!hasInitializedRootView) { + setUpViews() + handleClickListeners() + subscribeToObservables(); + + hasInitializedRootView = true + } + } + + abstract fun getViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB + + open fun registerListeners() {} + + open fun unRegisterListeners() {} + + open fun setUpViews() {} + + open fun handleClickListeners() {} + + open fun subscribeToObservables() {} + + fun showLoading() { + hideLoading() + progressDialog = showLoadingDialog(requireActivity(), null) + } + + fun showLoading(hint: String?) { + hideLoading() + progressDialog = showLoadingDialog(requireActivity(), hint) + } + + fun hideLoading() = hideLoadingDialog(progressDialog, requireActivity()) +} \ No newline at end of file diff --git a/app/src/main/java/com/mina_mikhail/newsapp/core/view/extensions/ActivityExtensions.kt b/app/src/main/java/com/mina_mikhail/newsapp/core/view/extensions/ActivityExtensions.kt new file mode 100644 index 0000000..294fc18 --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/core/view/extensions/ActivityExtensions.kt @@ -0,0 +1,34 @@ +package com.mina_mikhail.newsapp.core.view.extensions + +import android.Manifest +import android.app.Activity +import android.content.Context +import android.content.Intent +import android.content.pm.PackageManager +import androidx.core.app.ActivityCompat + +fun Activity.openActivityAndClearStack(activity: Class) { + Intent(this, activity).apply { + flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK + startActivity(this) + finish() + } +} + +fun Activity.openActivity(activity: Class) { + Intent(this, activity).apply { + startActivity(this) + } +} + +fun Context.hasPermission(permission: String): Boolean { + // Background permissions didn't exit prior to Q, so it's approved by default. + if (permission == Manifest.permission.ACCESS_BACKGROUND_LOCATION && + android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.Q + ) { + return true + } + + return ActivityCompat.checkSelfPermission(this, permission) == + PackageManager.PERMISSION_GRANTED +} \ No newline at end of file diff --git a/app/src/main/java/com/mina_mikhail/newsapp/core/view/extensions/FragmentExtensions.kt b/app/src/main/java/com/mina_mikhail/newsapp/core/view/extensions/FragmentExtensions.kt new file mode 100644 index 0000000..e5546b2 --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/core/view/extensions/FragmentExtensions.kt @@ -0,0 +1,66 @@ +package com.mina_mikhail.newsapp.core.view.extensions + +import androidx.fragment.app.Fragment +import com.mina_mikhail.newsapp.R +import com.mina_mikhail.newsapp.core.network.FailureStatus.API_FAIL +import com.mina_mikhail.newsapp.core.network.FailureStatus.NO_INTERNET +import com.mina_mikhail.newsapp.core.network.FailureStatus.OTHER +import com.mina_mikhail.newsapp.core.network.FailureStatus.SERVER_SIDE_EXCEPTION +import com.mina_mikhail.newsapp.core.network.FailureStatus.TOKEN_EXPIRED +import com.mina_mikhail.newsapp.core.network.Resource.Failure +import com.mina_mikhail.newsapp.core.utils.hideSoftInput +import com.mina_mikhail.newsapp.core.utils.showMessage +import com.mina_mikhail.newsapp.core.utils.showNoInternetAlert + +fun Fragment.handleApiError( + failure: Failure, + retryAction: (() -> Unit)? = null, + noDataAction: (() -> Unit)? = null, + noInternetAction: (() -> Unit)? = null +) { + when (failure.failureStatus) { + API_FAIL, SERVER_SIDE_EXCEPTION -> { + noDataAction?.let { + it() + } + + requireView().showSnackBar( + resources.getString(R.string.some_error), + resources.getString(R.string.retry), + retryAction + ) + } + TOKEN_EXPIRED -> { + // TODO : CALL API TO REFRESH TOKEN + // OR (depends on your application business) + // TODO : LOG OUT + } + NO_INTERNET -> { + noInternetAction?.let { + it() + } + + showNoInternetAlert(requireActivity()) + } + OTHER -> { + noDataAction?.let { + it() + } + + requireView().showSnackBar( + resources.getString(R.string.some_error), + resources.getString(R.string.retry), + retryAction + ) + } + } +} + +fun Fragment.hideKeyboard() = hideSoftInput(requireActivity()) + +fun Fragment.showNoInternetAlert() = showNoInternetAlert(requireActivity()) + +fun Fragment.showMessage(message: String?) = showMessage(requireContext(), message) + +fun Fragment.showError(message: String, retryActionName: String? = null, action: (() -> Unit)? = null) = + requireView().showSnackBar(message, retryActionName, action) diff --git a/app/src/main/java/com/mina_mikhail/newsapp/core/view/extensions/NavigationExtensions.kt b/app/src/main/java/com/mina_mikhail/newsapp/core/view/extensions/NavigationExtensions.kt new file mode 100644 index 0000000..7137dfe --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/core/view/extensions/NavigationExtensions.kt @@ -0,0 +1,239 @@ +package com.mina_mikhail.newsapp.core.view.extensions + +import android.content.Intent +import android.util.SparseArray +import androidx.core.util.forEach +import androidx.core.util.set +import androidx.fragment.app.FragmentManager +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import androidx.navigation.NavController +import androidx.navigation.fragment.NavHostFragment +import com.google.android.material.bottomnavigation.BottomNavigationView +import com.mina_mikhail.newsapp.R + +/** + * Manages the various graphs needed for a [BottomNavigationView]. + * + * This sample is a workaround until the Navigation Component supports multiple back stacks. + */ +fun BottomNavigationView.setupWithNavController( + navGraphIds: List, + fragmentManager: FragmentManager, + containerId: Int, + intent: Intent +): LiveData { + + // Map of tags + val graphIdToTagMap = SparseArray() + // Result. Mutable live data with the selected controlled + val selectedNavController = MutableLiveData() + + var firstFragmentGraphId = 0 + + // First create a NavHostFragment for each NavGraph ID + navGraphIds.forEachIndexed { index, navGraphId -> + val fragmentTag = getFragmentTag(index) + + // Find or create the Navigation host fragment + val navHostFragment = obtainNavHostFragment( + fragmentManager, + fragmentTag, + navGraphId, + containerId + ) + + // Obtain its id + val graphId = navHostFragment.navController.graph.id + + if (index == 0) { + firstFragmentGraphId = graphId + } + + // Save to the map + graphIdToTagMap[graphId] = fragmentTag + + // Attach or detach nav host fragment depending on whether it's the selected item. + if (this.selectedItemId == graphId) { + // Update livedata with the selected graph + selectedNavController.value = navHostFragment.navController + attachNavHostFragment(fragmentManager, navHostFragment, index == 0) + } else { + detachNavHostFragment(fragmentManager, navHostFragment) + } + } + + // Now connect selecting an item with swapping Fragments + var selectedItemTag = graphIdToTagMap[this.selectedItemId] + val firstFragmentTag = graphIdToTagMap[firstFragmentGraphId] + var isOnFirstFragment = selectedItemTag == firstFragmentTag + + // When a navigation item is selected + setOnNavigationItemSelectedListener { item -> + // Don't do anything if the state is state has already been saved. + if (fragmentManager.isStateSaved) { + false + } else { + val newlySelectedItemTag = graphIdToTagMap[item.itemId] + if (selectedItemTag != newlySelectedItemTag) { + // Pop everything above the first fragment (the "fixed start destination") + fragmentManager.popBackStack( + firstFragmentTag, + FragmentManager.POP_BACK_STACK_INCLUSIVE + ) + val selectedFragment = fragmentManager.findFragmentByTag(newlySelectedItemTag) + as NavHostFragment + + // Exclude the first fragment tag because it's always in the back stack. + if (firstFragmentTag != newlySelectedItemTag) { + // Commit a transaction that cleans the back stack and adds the first fragment + // to it, creating the fixed started destination. + fragmentManager.beginTransaction() + .setCustomAnimations( + R.anim.nav_default_enter_anim, + R.anim.nav_default_exit_anim, + R.anim.nav_default_pop_enter_anim, + R.anim.nav_default_pop_exit_anim + ) + .attach(selectedFragment) + .setPrimaryNavigationFragment(selectedFragment) + .apply { + // Detach all other Fragments + graphIdToTagMap.forEach { _, fragmentTagIter -> + if (fragmentTagIter != newlySelectedItemTag) { + detach(fragmentManager.findFragmentByTag(firstFragmentTag)!!) + } + } + } + .addToBackStack(firstFragmentTag) + .setReorderingAllowed(true) + .commit() + } + selectedItemTag = newlySelectedItemTag + isOnFirstFragment = selectedItemTag == firstFragmentTag + selectedNavController.value = selectedFragment.navController + true + } else { + false + } + } + } + + // Optional: on item reselected, pop back stack to the destination of the graph + setupItemReselected(graphIdToTagMap, fragmentManager) + + // Handle deep link + setupDeepLinks(navGraphIds, fragmentManager, containerId, intent) + + // Finally, ensure that we update our BottomNavigationView when the back stack changes + fragmentManager.addOnBackStackChangedListener { + if (!isOnFirstFragment && !fragmentManager.isOnBackStack(firstFragmentTag)) { + this.selectedItemId = firstFragmentGraphId + } + + // Reset the graph if the currentDestination is not valid (happens when the back + // stack is popped after using the back button). + selectedNavController.value?.let { controller -> + if (controller.currentDestination == null) { + controller.navigate(controller.graph.id) + } + } + } + return selectedNavController +} + +private fun BottomNavigationView.setupDeepLinks( + navGraphIds: List, + fragmentManager: FragmentManager, + containerId: Int, + intent: Intent +) { + navGraphIds.forEachIndexed { index, navGraphId -> + val fragmentTag = getFragmentTag(index) + + // Find or create the Navigation host fragment + val navHostFragment = obtainNavHostFragment( + fragmentManager, + fragmentTag, + navGraphId, + containerId + ) + // Handle Intent + if (navHostFragment.navController.handleDeepLink(intent) + && selectedItemId != navHostFragment.navController.graph.id + ) { + this.selectedItemId = navHostFragment.navController.graph.id + } + } +} + +private fun BottomNavigationView.setupItemReselected( + graphIdToTagMap: SparseArray, + fragmentManager: FragmentManager +) { + setOnNavigationItemReselectedListener { item -> + val newlySelectedItemTag = graphIdToTagMap[item.itemId] + val selectedFragment = fragmentManager.findFragmentByTag(newlySelectedItemTag) + as NavHostFragment + val navController = selectedFragment.navController + // Pop the back stack to the start destination of the current navController graph + navController.popBackStack( + navController.graph.startDestination, false + ) + } +} + +private fun detachNavHostFragment( + fragmentManager: FragmentManager, + navHostFragment: NavHostFragment +) { + fragmentManager.beginTransaction() + .detach(navHostFragment) + .commitNow() +} + +private fun attachNavHostFragment( + fragmentManager: FragmentManager, + navHostFragment: NavHostFragment, + isPrimaryNavFragment: Boolean +) { + fragmentManager.beginTransaction() + .attach(navHostFragment) + .apply { + if (isPrimaryNavFragment) { + setPrimaryNavigationFragment(navHostFragment) + } + } + .commitNow() + +} + +private fun obtainNavHostFragment( + fragmentManager: FragmentManager, + fragmentTag: String, + navGraphId: Int, + containerId: Int +): NavHostFragment { + // If the Nav Host fragment exists, return it + val existingFragment = fragmentManager.findFragmentByTag(fragmentTag) as NavHostFragment? + existingFragment?.let { return it } + + // Otherwise, create it and return it. + val navHostFragment = NavHostFragment.create(navGraphId) + fragmentManager.beginTransaction() + .add(containerId, navHostFragment, fragmentTag) + .commitNow() + return navHostFragment +} + +private fun FragmentManager.isOnBackStack(backStackName: String): Boolean { + val backStackCount = backStackEntryCount + for (index in 0 until backStackCount) { + if (getBackStackEntryAt(index).name == backStackName) { + return true + } + } + return false +} + +private fun getFragmentTag(index: Int) = "bottomNavigation#$index" diff --git a/app/src/main/java/com/mina_mikhail/newsapp/core/view/extensions/ViewExtensions.kt b/app/src/main/java/com/mina_mikhail/newsapp/core/view/extensions/ViewExtensions.kt new file mode 100644 index 0000000..a48e564 --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/core/view/extensions/ViewExtensions.kt @@ -0,0 +1,97 @@ +package com.mina_mikhail.newsapp.core.view.extensions + +import android.view.View +import android.widget.ImageView +import androidx.constraintlayout.widget.Group +import coil.load +import coil.transform.CircleCropTransformation +import coil.transform.RoundedCornersTransformation +import com.google.android.material.snackbar.Snackbar +import com.mina_mikhail.newsapp.R + +fun View.show() { + visibility = View.VISIBLE + if (this is Group) { + this.requestLayout() + } +} + +fun View.hide() { + visibility = View.GONE + if (this is Group) { + this.requestLayout() + } +} + +fun View.invisible() { + visibility = View.INVISIBLE + if (this is Group) { + this.requestLayout() + } +} + +fun View.enable() { + isEnabled = true + alpha = 1f +} + +fun View.disable() { + isEnabled = false + alpha = 0.5f +} + +fun View.showSnackBar(message: String, retryActionName: String? = null, action: (() -> Unit)? = null) { + val snackBar = Snackbar.make(this, message, Snackbar.LENGTH_LONG) + + action?.let { + snackBar.setAction(retryActionName) { + it() + } + } + + snackBar.show() +} + +fun ImageView.loadImage(imageUrl: String?) { + if (imageUrl != null && imageUrl.isNotEmpty()) { + load(imageUrl) { + crossfade(true) + placeholder(R.color.backgroundGray) + error(R.drawable.bg_no_image) + } + } else { + setImageResource(R.drawable.bg_no_image) + } +} + +fun ImageView.loadCircleImage(imageUrl: String?) { + if (imageUrl != null && imageUrl.isNotEmpty()) { + load(imageUrl) { + crossfade(true) + placeholder(R.color.backgroundGray) + error(R.drawable.bg_no_image) + transformations( + CircleCropTransformation() + ) + } + } else { + setImageResource(R.drawable.bg_no_image) + } +} + +fun ImageView.loadRoundImage(imageUrl: String?) { + if (imageUrl != null && imageUrl.isNotEmpty()) { + load(imageUrl) { + crossfade(true) + placeholder(R.color.backgroundGray) + error(R.drawable.bg_no_image) + transformations( + RoundedCornersTransformation( + resources.getDimension(R.dimen.dimen7) + ) + ) + } + } else { + setImageResource(R.drawable.bg_no_image) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/mina_mikhail/newsapp/features/news/data/data_source/local/ArticlesDao.kt b/app/src/main/java/com/mina_mikhail/newsapp/features/news/data/data_source/local/ArticlesDao.kt new file mode 100644 index 0000000..241dbd9 --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/features/news/data/data_source/local/ArticlesDao.kt @@ -0,0 +1,36 @@ +package com.mina_mikhail.newsapp.features.news.data.data_source.local + +import androidx.lifecycle.LiveData +import androidx.room.Dao +import androidx.room.Delete +import androidx.room.Insert +import androidx.room.OnConflictStrategy +import androidx.room.Query +import com.mina_mikhail.newsapp.features.news.domain.entity.model.Article + +@Dao +interface ArticlesDao { + /** + * Select all articles from the articles table. + * + * @return all articles. + */ + @Query("SELECT * FROM articles") + fun getAll(): LiveData> + + /** + * Insert articles in the database. If the article already exists, replace it. + * + * @param article the city to be inserted. + */ + @Insert(onConflict = OnConflictStrategy.REPLACE) + suspend fun insert(article: Article) + + /** + * Delete article from the articles table. + * + * @param article the city to be inserted. + */ + @Delete + suspend fun delete(article: Article) +} \ No newline at end of file diff --git a/app/src/main/java/com/mina_mikhail/newsapp/features/news/data/data_source/local/NewsLocalDataSource.kt b/app/src/main/java/com/mina_mikhail/newsapp/features/news/data/data_source/local/NewsLocalDataSource.kt new file mode 100644 index 0000000..7e49cbd --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/features/news/data/data_source/local/NewsLocalDataSource.kt @@ -0,0 +1,15 @@ +package com.mina_mikhail.newsapp.features.news.data.data_source.local + +import androidx.lifecycle.LiveData +import com.mina_mikhail.newsapp.core.local.MyDatabase +import com.mina_mikhail.newsapp.features.news.domain.entity.model.Article +import javax.inject.Inject + +class NewsLocalDataSource @Inject constructor(private val myDatabase: MyDatabase) { + + fun getArticlesFromLocal(): LiveData> = myDatabase.getArticlesDao().getAll() + + suspend fun saveArticleToLocal(article: Article) = myDatabase.getArticlesDao().insert(article) + + suspend fun deleteArticleFromLocal(article: Article) = myDatabase.getArticlesDao().delete(article) +} \ No newline at end of file diff --git a/app/src/main/java/com/mina_mikhail/newsapp/features/news/data/data_source/remote/NewsRemoteDataSource.kt b/app/src/main/java/com/mina_mikhail/newsapp/features/news/data/data_source/remote/NewsRemoteDataSource.kt new file mode 100644 index 0000000..30f03da --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/features/news/data/data_source/remote/NewsRemoteDataSource.kt @@ -0,0 +1,15 @@ +package com.mina_mikhail.newsapp.features.news.data.data_source.remote + +import com.mina_mikhail.newsapp.core.data_source.BaseRemoteDataSource +import javax.inject.Inject + +class NewsRemoteDataSource @Inject constructor(private val apiService: NewsServices) : BaseRemoteDataSource() { + + suspend fun getBreakingNews(country: String, page: Int) = safeApiCall { + apiService.getBreakingNews(country, page, LIST_PAGE_SIZE) + } + + suspend fun searchForNews(searchQuery: String, page: Int) = safeApiCall { + apiService.searchForNews(searchQuery, page, LIST_PAGE_SIZE) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/mina_mikhail/newsapp/features/news/data/data_source/remote/NewsServices.kt b/app/src/main/java/com/mina_mikhail/newsapp/features/news/data/data_source/remote/NewsServices.kt new file mode 100644 index 0000000..f67fa6f --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/features/news/data/data_source/remote/NewsServices.kt @@ -0,0 +1,23 @@ +package com.mina_mikhail.newsapp.features.news.data.data_source.remote + +import com.mina_mikhail.newsapp.features.news.domain.entity.response.NewsResponse +import retrofit2.http.GET +import retrofit2.http.Query + +interface NewsServices { + + @GET("top-headlines") + suspend fun getBreakingNews( + @Query("country") country: String, + @Query("page") page: Int, + @Query("pageSize") pageSize: Int + ): NewsResponse + + @GET("everything") + suspend fun searchForNews( + @Query("q") searchQuery: String, + @Query("page") page: Int, + @Query("pageSize") pageSize: Int + ): NewsResponse + +} \ No newline at end of file diff --git a/app/src/main/java/com/mina_mikhail/newsapp/features/news/data/repository/NewsRepository.kt b/app/src/main/java/com/mina_mikhail/newsapp/features/news/data/repository/NewsRepository.kt new file mode 100644 index 0000000..40321da --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/features/news/data/repository/NewsRepository.kt @@ -0,0 +1,22 @@ +package com.mina_mikhail.newsapp.features.news.data.repository + +import com.mina_mikhail.newsapp.features.news.data.data_source.local.NewsLocalDataSource +import com.mina_mikhail.newsapp.features.news.data.data_source.remote.NewsRemoteDataSource +import com.mina_mikhail.newsapp.features.news.domain.entity.model.Article +import javax.inject.Inject + +class NewsRepository @Inject constructor( + private val remoteDataSource: NewsRemoteDataSource, + private val newsLocalDataSource: NewsLocalDataSource +) { + + suspend fun getBreakingNews(country: String, page: Int) = remoteDataSource.getBreakingNews(country, page) + + suspend fun searchForNews(searchQuery: String, page: Int) = remoteDataSource.searchForNews(searchQuery, page) + + fun getArticlesFromLocal() = newsLocalDataSource.getArticlesFromLocal() + + suspend fun saveArticleToLocal(article: Article) = newsLocalDataSource.saveArticleToLocal(article) + + suspend fun deleteArticleFromLocal(article: Article) = newsLocalDataSource.deleteArticleFromLocal(article) +} \ No newline at end of file diff --git a/app/src/main/java/com/mina_mikhail/newsapp/features/news/domain/Converters.kt b/app/src/main/java/com/mina_mikhail/newsapp/features/news/domain/Converters.kt new file mode 100644 index 0000000..af29b3f --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/features/news/domain/Converters.kt @@ -0,0 +1,22 @@ +package com.mina_mikhail.newsapp.features.news.domain + +import androidx.room.TypeConverter +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.mina_mikhail.newsapp.features.news.domain.entity.model.Source +import java.lang.reflect.Type + +class Converters { + + @TypeConverter + fun fromSourceString(value: String): Source { + val modelType: Type = object : TypeToken() {}.type + return Gson().fromJson(value, modelType) + } + + @TypeConverter + fun fromSourceModel(model: Source): String { + val gson = Gson() + return gson.toJson(model) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/mina_mikhail/newsapp/features/news/domain/entity/model/Article.kt b/app/src/main/java/com/mina_mikhail/newsapp/features/news/domain/entity/model/Article.kt new file mode 100644 index 0000000..0eab510 --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/features/news/domain/entity/model/Article.kt @@ -0,0 +1,23 @@ +package com.mina_mikhail.newsapp.features.news.domain.entity.model + +import androidx.room.Entity +import androidx.room.PrimaryKey +import java.io.Serializable + +@Entity(tableName = "articles") +data class Article( + @PrimaryKey(autoGenerate = true) + val id: Int, + val author: String, + val content: String, + val description: String, + val publishedAt: String, + val title: String, + val url: String, + val urlToImage: String, + val source: Source +) : Serializable + +data class Source( + val name: String +) \ No newline at end of file diff --git a/app/src/main/java/com/mina_mikhail/newsapp/features/news/domain/entity/response/NewsResponse.kt b/app/src/main/java/com/mina_mikhail/newsapp/features/news/domain/entity/response/NewsResponse.kt new file mode 100644 index 0000000..f317b65 --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/features/news/domain/entity/response/NewsResponse.kt @@ -0,0 +1,9 @@ +package com.mina_mikhail.newsapp.features.news.domain.entity.response + +import com.mina_mikhail.newsapp.features.news.domain.entity.model.Article + +data class NewsResponse( + val articles: List

, + val status: String, + val totalResults: Int +) \ No newline at end of file diff --git a/app/src/main/java/com/mina_mikhail/newsapp/features/news/presentation/NewsActivity.kt b/app/src/main/java/com/mina_mikhail/newsapp/features/news/presentation/NewsActivity.kt new file mode 100644 index 0000000..95ea363 --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/features/news/presentation/NewsActivity.kt @@ -0,0 +1,32 @@ +package com.mina_mikhail.newsapp.features.news.presentation + +import com.mina_mikhail.newsapp.R +import com.mina_mikhail.newsapp.core.view.BaseActivity +import com.mina_mikhail.newsapp.core.view.extensions.setupWithNavController +import com.mina_mikhail.newsapp.databinding.ActivityNewsBinding +import dagger.hilt.android.AndroidEntryPoint + +@AndroidEntryPoint +class NewsActivity : BaseActivity() { + + override + fun getViewBinding() = ActivityNewsBinding.inflate(layoutInflater) + + override + fun setUpBottomNavigation() { + val graphIds = listOf( + R.navigation.nav_breaking_news, + R.navigation.nav_saved_news, + R.navigation.nav_search_news + ) + + val controller = binding.bottomNavigationView.setupWithNavController( + graphIds, + supportFragmentManager, + R.id.fragment_host_container, + intent + ) + + navController = controller + } +} \ No newline at end of file diff --git a/app/src/main/java/com/mina_mikhail/newsapp/features/news/presentation/NewsAdapter.kt b/app/src/main/java/com/mina_mikhail/newsapp/features/news/presentation/NewsAdapter.kt new file mode 100644 index 0000000..980b309 --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/features/news/presentation/NewsAdapter.kt @@ -0,0 +1,70 @@ +package com.mina_mikhail.newsapp.features.news.presentation + +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.DiffUtil +import androidx.recyclerview.widget.ListAdapter +import androidx.recyclerview.widget.RecyclerView +import com.mina_mikhail.newsapp.R +import com.mina_mikhail.newsapp.core.utils.DateUtils +import com.mina_mikhail.newsapp.core.utils.convertDateTimeToTimesAgo +import com.mina_mikhail.newsapp.core.view.extensions.loadRoundImage +import com.mina_mikhail.newsapp.databinding.ItemNewsBinding +import com.mina_mikhail.newsapp.features.news.domain.entity.model.Article +import com.mina_mikhail.newsapp.features.news.presentation.NewsAdapter.ArticlesViewHolder + +class NewsAdapter(private var itemClick: (Article) -> Unit) : ListAdapter(DIFF_CALLBACK) { + + companion object { + private val DIFF_CALLBACK = object : DiffUtil.ItemCallback
() { + override + fun areItemsTheSame(oldItem: Article, newItem: Article): Boolean = + oldItem.url == newItem.url + + override + fun areContentsTheSame(oldItem: Article, newItem: Article): Boolean = + oldItem == newItem + } + } + + override + fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): ArticlesViewHolder { + val root = LayoutInflater.from(parent.context).inflate(R.layout.item_news, parent, false) + return ArticlesViewHolder(root) + } + + override + fun onBindViewHolder(holder: ArticlesViewHolder, position: Int) { + val item = getItem(position) + holder.bind(item) + } + + fun getItemByPosition(position: Int): Article = getItem(position) + + inner class ArticlesViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + + private val binding = ItemNewsBinding.bind(itemView) + private var currentItem: Article? = null + + init { + binding.item.setOnClickListener { + currentItem?.let { + itemClick(it) + } + } + } + + fun bind(item: Article) { + currentItem = item + + binding.ivArticleImage.loadRoundImage(item.urlToImage) + binding.tvArticleDate.text = item.publishedAt.convertDateTimeToTimesAgo(DateUtils.FULL_DATE_TIME_FORMAT) + binding.tvArticleTitle.text = item.title + binding.tvArticleDescription.text = item.description + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/mina_mikhail/newsapp/features/news/presentation/breaking_news/BreakingNewsFragment.kt b/app/src/main/java/com/mina_mikhail/newsapp/features/news/presentation/breaking_news/BreakingNewsFragment.kt new file mode 100644 index 0000000..6b5c5cc --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/features/news/presentation/breaking_news/BreakingNewsFragment.kt @@ -0,0 +1,191 @@ +package com.mina_mikhail.newsapp.features.news.presentation.breaking_news + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.fragment.app.viewModels +import androidx.navigation.fragment.findNavController +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.mina_mikhail.newsapp.R +import com.mina_mikhail.newsapp.core.data_source.BaseRemoteDataSource +import com.mina_mikhail.newsapp.core.network.Resource.Empty +import com.mina_mikhail.newsapp.core.network.Resource.Failure +import com.mina_mikhail.newsapp.core.network.Resource.Loading +import com.mina_mikhail.newsapp.core.network.Resource.Success +import com.mina_mikhail.newsapp.core.utils.EndlessRecyclerViewScrollListener +import com.mina_mikhail.newsapp.core.view.BaseFragment +import com.mina_mikhail.newsapp.core.view.extensions.handleApiError +import com.mina_mikhail.newsapp.core.view.extensions.hide +import com.mina_mikhail.newsapp.core.view.extensions.show +import com.mina_mikhail.newsapp.databinding.FragmentBreakingNewsBinding +import com.mina_mikhail.newsapp.features.news.domain.entity.model.Article +import com.mina_mikhail.newsapp.features.news.presentation.NewsAdapter +import dagger.hilt.android.AndroidEntryPoint + +@AndroidEntryPoint +class BreakingNewsFragment : BaseFragment() { + + private val viewModel: BreakingNewsViewModel by viewModels() + + private lateinit var articlesAdapter: NewsAdapter + private lateinit var scrollListener: EndlessRecyclerViewScrollListener + + override + fun getViewBinding(inflater: LayoutInflater, container: ViewGroup?) = + FragmentBreakingNewsBinding.inflate(inflater, container, false) + + override + fun setUpViews() { + setUpRecyclerView() + + initSwipeRefreshLayout() + + getBreakingNews() + } + + private fun setUpRecyclerView() { + articlesAdapter = NewsAdapter { onArticleClick(it) } + binding.includedList.recyclerView.apply { + setHasFixedSize(true) + layoutManager = LinearLayoutManager(requireContext()) + adapter = articlesAdapter + + initPaging(layoutManager as LinearLayoutManager) + } + } + + private fun initPaging(layoutManager: LinearLayoutManager) { + scrollListener = object : EndlessRecyclerViewScrollListener(3, layoutManager) { + override + fun onLoadMore(page: Int, totalItemsCount: Int, view: RecyclerView) { + if (viewModel.shouldLoadMore) { + viewModel.shouldLoadMore = false + viewModel.isLoading = true + + getBreakingNews() + } + } + } + binding.includedList.recyclerView.addOnScrollListener(scrollListener) + } + + private fun getBreakingNews() { + viewModel.getBreakingNews("us").observe(this, { + binding.swipeRefresh.isRefreshing = false + + when (it) { + is Loading -> { + if (articlesAdapter.currentList.isNullOrEmpty()) { + showDataLoading() + } else { + showPaginationLoading() + } + } + is Empty -> { + if (articlesAdapter.currentList.isNullOrEmpty()) { + showNoData() + } else { + hidePaginationLoading() + } + } + is Success -> { + if (it.value.articles.size != BaseRemoteDataSource.LIST_PAGE_SIZE) { + viewModel.shouldLoadMore = false + } else { + viewModel.shouldLoadMore = true + viewModel.page += 1 + } + + if (articlesAdapter.currentList.isNullOrEmpty()) { + articlesAdapter.submitList(it.value.articles) + } else { + articlesAdapter.submitList(articlesAdapter.currentList + it.value.articles) + } + + showData() + } + is Failure -> { + if (articlesAdapter.currentList.isNullOrEmpty()) { + handleApiError(it, noDataAction = { showNoData() }, noInternetAction = { showNoInternet() }) + } else { + handleApiError(it) + hidePaginationLoading() + } + } + } + }) + } + + private fun initSwipeRefreshLayout() { + binding.swipeRefresh.setOnRefreshListener { refreshData() } + binding.swipeRefresh.setColorSchemeResources(R.color.colorPrimary, R.color.colorPrimaryDark, R.color.colorAccent) + } + + private fun refreshData() { + initPagingParameters() + + getBreakingNews() + } + + private fun initPagingParameters() { + viewModel.page = 1 + viewModel.isLoading = true + viewModel.shouldLoadMore = false + + articlesAdapter.submitList(null) + + scrollListener.resetState() + } + + private fun onArticleClick(article: Article) { + val bundle = Bundle().apply { + putSerializable("article", article) + } + findNavController().navigate( + R.id.action_open_news_details_fragment, + bundle + ) + } + + private fun showDataLoading() { + binding.includedList.container.show() + binding.includedList.progressBar.show() + binding.includedList.emptyViewContainer.hide() + binding.includedList.internetErrorViewContainer.hide() + binding.includedList.recyclerView.hide() + binding.includedList.paginationProgressBar.hide() + } + + private fun showPaginationLoading() { + binding.includedList.paginationProgressBar.show() + } + + private fun hidePaginationLoading() { + binding.includedList.paginationProgressBar.hide() + } + + private fun showData() { + binding.includedList.recyclerView.show() + binding.includedList.container.hide() + binding.includedList.paginationProgressBar.hide() + } + + private fun showNoData() { + binding.includedList.container.show() + binding.includedList.emptyViewContainer.show() + binding.includedList.internetErrorViewContainer.hide() + binding.includedList.progressBar.hide() + binding.includedList.paginationProgressBar.hide() + binding.includedList.recyclerView.hide() + } + + private fun showNoInternet() { + binding.includedList.container.show() + binding.includedList.internetErrorViewContainer.show() + binding.includedList.emptyViewContainer.hide() + binding.includedList.progressBar.hide() + binding.includedList.paginationProgressBar.hide() + binding.includedList.recyclerView.hide() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/mina_mikhail/newsapp/features/news/presentation/breaking_news/BreakingNewsViewModel.kt b/app/src/main/java/com/mina_mikhail/newsapp/features/news/presentation/breaking_news/BreakingNewsViewModel.kt new file mode 100644 index 0000000..26e2007 --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/features/news/presentation/breaking_news/BreakingNewsViewModel.kt @@ -0,0 +1,22 @@ +package com.mina_mikhail.newsapp.features.news.presentation.breaking_news + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.liveData +import com.mina_mikhail.newsapp.core.network.Resource +import com.mina_mikhail.newsapp.features.news.data.repository.NewsRepository +import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.Dispatchers +import javax.inject.Inject + +@HiltViewModel +class BreakingNewsViewModel @Inject constructor(private val repository: NewsRepository) : ViewModel() { + + var shouldLoadMore = false + var isLoading = false + var page: Int = 1 + + fun getBreakingNews(country: String) = liveData(Dispatchers.IO) { + emit(Resource.Loading) + emit(repository.getBreakingNews(country, page)) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/mina_mikhail/newsapp/features/news/presentation/news_details/NewsDetailsFragment.kt b/app/src/main/java/com/mina_mikhail/newsapp/features/news/presentation/news_details/NewsDetailsFragment.kt new file mode 100644 index 0000000..de4c461 --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/features/news/presentation/news_details/NewsDetailsFragment.kt @@ -0,0 +1,56 @@ +package com.mina_mikhail.newsapp.features.news.presentation.news_details + +import android.annotation.SuppressLint +import android.view.LayoutInflater +import android.view.ViewGroup +import android.webkit.WebViewClient +import androidx.fragment.app.viewModels +import androidx.navigation.fragment.navArgs +import com.mina_mikhail.newsapp.R +import com.mina_mikhail.newsapp.core.view.BaseFragment +import com.mina_mikhail.newsapp.core.view.extensions.showMessage +import com.mina_mikhail.newsapp.databinding.FragmentNewsDetailsBinding +import com.mina_mikhail.newsapp.features.news.domain.entity.model.Article +import dagger.hilt.android.AndroidEntryPoint + +@AndroidEntryPoint +class NewsDetailsFragment : BaseFragment() { + + private val viewModel: NewsDetailsViewModel by viewModels() + + private val args: NewsDetailsFragmentArgs by navArgs() + private lateinit var article: Article + + override + fun getViewBinding(inflater: LayoutInflater, container: ViewGroup?) = + FragmentNewsDetailsBinding.inflate(inflater, container, false) + + override + fun setUpViews() { + getArticleFromArguments() + + setUpWebView() + } + + private fun getArticleFromArguments() { + article = args.article + } + + @SuppressLint("SetJavaScriptEnabled") + private fun setUpWebView() { + binding.webView.apply { + webViewClient = WebViewClient() + settings.javaScriptEnabled = true + + loadUrl(article.url) + } + } + + override + fun handleClickListeners() { + binding.btnSaveArticle.setOnClickListener { + viewModel.saveArticleToLocal(article) + showMessage(resources.getString(R.string.article_saved_to_local)) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/mina_mikhail/newsapp/features/news/presentation/news_details/NewsDetailsViewModel.kt b/app/src/main/java/com/mina_mikhail/newsapp/features/news/presentation/news_details/NewsDetailsViewModel.kt new file mode 100644 index 0000000..667e6a1 --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/features/news/presentation/news_details/NewsDetailsViewModel.kt @@ -0,0 +1,18 @@ +package com.mina_mikhail.newsapp.features.news.presentation.news_details + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.mina_mikhail.newsapp.features.news.data.repository.NewsRepository +import com.mina_mikhail.newsapp.features.news.domain.entity.model.Article +import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.launch +import javax.inject.Inject + +@HiltViewModel +class NewsDetailsViewModel @Inject constructor(private val repository: NewsRepository) : ViewModel() { + + fun saveArticleToLocal(article: Article) = viewModelScope.launch { + repository.saveArticleToLocal(article) + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/mina_mikhail/newsapp/features/news/presentation/saved_news/SavedNewsFragment.kt b/app/src/main/java/com/mina_mikhail/newsapp/features/news/presentation/saved_news/SavedNewsFragment.kt new file mode 100644 index 0000000..8bde569 --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/features/news/presentation/saved_news/SavedNewsFragment.kt @@ -0,0 +1,74 @@ +package com.mina_mikhail.newsapp.features.news.presentation.saved_news + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.fragment.app.viewModels +import androidx.navigation.fragment.findNavController +import androidx.recyclerview.widget.ItemTouchHelper +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.mina_mikhail.newsapp.R +import com.mina_mikhail.newsapp.core.utils.SwipeToDeleteCallback +import com.mina_mikhail.newsapp.core.view.BaseFragment +import com.mina_mikhail.newsapp.core.view.extensions.showError +import com.mina_mikhail.newsapp.databinding.FragmentSavedNewsBinding +import com.mina_mikhail.newsapp.features.news.domain.entity.model.Article +import com.mina_mikhail.newsapp.features.news.presentation.NewsAdapter +import dagger.hilt.android.AndroidEntryPoint + +@AndroidEntryPoint +class SavedNewsFragment : BaseFragment() { + + private val viewModel: SavedNewsViewModel by viewModels() + + private lateinit var articlesAdapter: NewsAdapter + + override + fun getViewBinding(inflater: LayoutInflater, container: ViewGroup?) = + FragmentSavedNewsBinding.inflate(inflater, container, false) + + override + fun setUpViews() { + setUpRecyclerView() + + getSavedNews() + } + + private fun setUpRecyclerView() { + articlesAdapter = NewsAdapter { onArticleClick(it) } + binding.recyclerView.apply { + setHasFixedSize(true) + layoutManager = LinearLayoutManager(requireContext()) + adapter = articlesAdapter + } + + val itemTouchHelper = ItemTouchHelper(object : SwipeToDeleteCallback(requireContext()) { + override + fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) { + val article = articlesAdapter.getItemByPosition(viewHolder.adapterPosition) + viewModel.deleteArticleFromLocal(article) + + showError( + resources.getString(R.string.article_removed), + resources.getString(R.string.undo) + ) { viewModel.saveArticleToLocal(article) } + } + }) + itemTouchHelper.attachToRecyclerView(binding.recyclerView) + } + + private fun getSavedNews() { + viewModel.getArticlesFromLocal().observe(this, { articlesAdapter.submitList(it) }) + } + + private fun onArticleClick(article: Article) { + val bundle = Bundle().apply { + putSerializable("article", article) + } + findNavController().navigate( + R.id.action_open_news_details_fragment, + bundle + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/mina_mikhail/newsapp/features/news/presentation/saved_news/SavedNewsViewModel.kt b/app/src/main/java/com/mina_mikhail/newsapp/features/news/presentation/saved_news/SavedNewsViewModel.kt new file mode 100644 index 0000000..1c86fcc --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/features/news/presentation/saved_news/SavedNewsViewModel.kt @@ -0,0 +1,24 @@ +package com.mina_mikhail.newsapp.features.news.presentation.saved_news + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.mina_mikhail.newsapp.features.news.data.repository.NewsRepository +import com.mina_mikhail.newsapp.features.news.domain.entity.model.Article +import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.launch +import javax.inject.Inject + +@HiltViewModel +class SavedNewsViewModel @Inject constructor(private val repository: NewsRepository) : ViewModel() { + + fun getArticlesFromLocal() = repository.getArticlesFromLocal() + + fun deleteArticleFromLocal(article: Article) = viewModelScope.launch { + repository.deleteArticleFromLocal(article) + } + + fun saveArticleToLocal(article: Article) = viewModelScope.launch { + repository.saveArticleToLocal(article) + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/mina_mikhail/newsapp/features/news/presentation/search_news/SearchNewsFragment.kt b/app/src/main/java/com/mina_mikhail/newsapp/features/news/presentation/search_news/SearchNewsFragment.kt new file mode 100644 index 0000000..24e6d96 --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/features/news/presentation/search_news/SearchNewsFragment.kt @@ -0,0 +1,262 @@ +package com.mina_mikhail.newsapp.features.news.presentation.search_news + +import android.os.Bundle +import android.view.KeyEvent +import android.view.LayoutInflater +import android.view.ViewGroup +import android.view.inputmethod.EditorInfo +import android.widget.TextView +import androidx.fragment.app.viewModels +import androidx.navigation.fragment.findNavController +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.mina_mikhail.newsapp.R +import com.mina_mikhail.newsapp.core.data_source.BaseRemoteDataSource +import com.mina_mikhail.newsapp.core.network.Resource.Empty +import com.mina_mikhail.newsapp.core.network.Resource.Failure +import com.mina_mikhail.newsapp.core.network.Resource.Loading +import com.mina_mikhail.newsapp.core.network.Resource.Success +import com.mina_mikhail.newsapp.core.utils.EndlessRecyclerViewScrollListener +import com.mina_mikhail.newsapp.core.utils.SearchEditTextListener +import com.mina_mikhail.newsapp.core.view.BaseFragment +import com.mina_mikhail.newsapp.core.view.extensions.handleApiError +import com.mina_mikhail.newsapp.core.view.extensions.hide +import com.mina_mikhail.newsapp.core.view.extensions.hideKeyboard +import com.mina_mikhail.newsapp.core.view.extensions.show +import com.mina_mikhail.newsapp.databinding.FragmentSearchNewsBinding +import com.mina_mikhail.newsapp.features.news.domain.entity.model.Article +import com.mina_mikhail.newsapp.features.news.presentation.NewsAdapter +import dagger.hilt.android.AndroidEntryPoint + +@AndroidEntryPoint +class SearchNewsFragment : BaseFragment() { + + private val viewModel: SearchNewsViewModel by viewModels() + + private lateinit var articlesAdapter: NewsAdapter + private lateinit var scrollListener: EndlessRecyclerViewScrollListener + private lateinit var searchTextListener: SearchEditTextListener + + override + fun getViewBinding(inflater: LayoutInflater, container: ViewGroup?) = + FragmentSearchNewsBinding.inflate(inflater, container, false) + + override + fun registerListeners() { + startSearchListener() + } + + override + fun unRegisterListeners() { + stopSearchListener() + } + + override + fun setUpViews() { + initSearchListener() + + setUpRecyclerView() + + handleSearchArea() + } + + private fun initSearchListener() { + searchTextListener = SearchEditTextListener(lifecycle) { searchQuery -> + searchQuery?.let { + if (it.isNotEmpty()) { + hideSearchHintView() + + initPagingParameters() + + viewModel.searchQuery = it + searchForNews() + } else { + showSearchHintView() + } + } + } + } + + private fun setUpRecyclerView() { + articlesAdapter = NewsAdapter { onArticleClick(it) } + binding.includedList.recyclerView.apply { + setHasFixedSize(true) + layoutManager = LinearLayoutManager(requireContext()) + adapter = articlesAdapter + + initPaging(layoutManager as LinearLayoutManager) + } + } + + private fun startSearchListener() { + binding.etSearch.addTextChangedListener(searchTextListener) + } + + private fun stopSearchListener() { + binding.etSearch.removeTextChangedListener(searchTextListener) + } + + private fun handleSearchArea() { + binding.etSearch.setOnEditorActionListener(object : TextView.OnEditorActionListener { + override + fun onEditorAction(p0: TextView?, actionId: Int, p2: KeyEvent?): Boolean { + if (actionId == EditorInfo.IME_ACTION_SEARCH) { + hideKeyboard() + binding.etSearch.clearFocus() + return true + } + + return false + } + }) + } + + private fun initPaging(layoutManager: LinearLayoutManager) { + scrollListener = object : EndlessRecyclerViewScrollListener(3, layoutManager) { + override + fun onLoadMore(page: Int, totalItemsCount: Int, view: RecyclerView) { + if (viewModel.shouldLoadMore) { + viewModel.shouldLoadMore = false + viewModel.isLoading = true + + searchForNews() + } + } + } + binding.includedList.recyclerView.addOnScrollListener(scrollListener) + } + + private fun searchForNews() { + viewModel.searchForNews().observe(this, { + + when (it) { + is Loading -> { + if (articlesAdapter.currentList.isNullOrEmpty()) { + showDataLoading() + } else { + showPaginationLoading() + } + } + is Empty -> { + if (articlesAdapter.currentList.isNullOrEmpty()) { + showNoData() + hideKeyboard() + } else { + hidePaginationLoading() + } + } + is Success -> { + if (it.value.articles.size != BaseRemoteDataSource.LIST_PAGE_SIZE) { + viewModel.shouldLoadMore = false + } else { + viewModel.shouldLoadMore = true + viewModel.page += 1 + } + + if (articlesAdapter.currentList.isNullOrEmpty()) { + articlesAdapter.submitList(it.value.articles) + } else { + articlesAdapter.submitList(articlesAdapter.currentList + it.value.articles) + } + + showData() + } + is Failure -> { + if (articlesAdapter.currentList.isNullOrEmpty()) { + handleApiError(it, noDataAction = { showNoData() }, noInternetAction = { showNoInternet() }) + } else { + handleApiError(it) + hidePaginationLoading() + } + } + } + }) + } + + private fun initPagingParameters() { + viewModel.searchQuery = "" + viewModel.page = 1 + viewModel.isLoading = true + viewModel.shouldLoadMore = false + + articlesAdapter.submitList(null) + + scrollListener.resetState() + } + + override + fun handleClickListeners() { + binding.btnDismissSearch.setOnClickListener { + initPagingParameters() + hideKeyboard() + binding.etSearch.setText("") + binding.etSearch.clearFocus() + } + } + + private fun onArticleClick(article: Article) { + hideKeyboard() + binding.etSearch.clearFocus() + + val bundle = Bundle().apply { + putSerializable("article", article) + } + findNavController().navigate( + R.id.action_open_news_details_fragment, + bundle + ) + } + + private fun showSearchHintView() { + binding.searchHint.show() + binding.listContainer.hide() + binding.btnDismissSearch.hide() + } + + private fun hideSearchHintView() { + binding.listContainer.show() + binding.btnDismissSearch.show() + binding.searchHint.hide() + } + + private fun showDataLoading() { + binding.includedList.container.show() + binding.includedList.progressBar.show() + binding.includedList.emptyViewContainer.hide() + binding.includedList.internetErrorViewContainer.hide() + binding.includedList.recyclerView.hide() + binding.includedList.paginationProgressBar.hide() + } + + private fun showPaginationLoading() { + binding.includedList.paginationProgressBar.show() + } + + private fun hidePaginationLoading() { + binding.includedList.paginationProgressBar.hide() + } + + private fun showData() { + binding.includedList.recyclerView.show() + binding.includedList.container.hide() + binding.includedList.paginationProgressBar.hide() + } + + private fun showNoData() { + binding.includedList.container.show() + binding.includedList.emptyViewContainer.show() + binding.includedList.internetErrorViewContainer.hide() + binding.includedList.progressBar.hide() + binding.includedList.paginationProgressBar.hide() + binding.includedList.recyclerView.hide() + } + + private fun showNoInternet() { + binding.includedList.container.show() + binding.includedList.internetErrorViewContainer.show() + binding.includedList.emptyViewContainer.hide() + binding.includedList.progressBar.hide() + binding.includedList.paginationProgressBar.hide() + binding.includedList.recyclerView.hide() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/mina_mikhail/newsapp/features/news/presentation/search_news/SearchNewsViewModel.kt b/app/src/main/java/com/mina_mikhail/newsapp/features/news/presentation/search_news/SearchNewsViewModel.kt new file mode 100644 index 0000000..12f1c38 --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/features/news/presentation/search_news/SearchNewsViewModel.kt @@ -0,0 +1,23 @@ +package com.mina_mikhail.newsapp.features.news.presentation.search_news + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.liveData +import com.mina_mikhail.newsapp.core.network.Resource +import com.mina_mikhail.newsapp.features.news.data.repository.NewsRepository +import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.Dispatchers +import javax.inject.Inject + +@HiltViewModel +class SearchNewsViewModel @Inject constructor(private val repository: NewsRepository) : ViewModel() { + + var searchQuery: String = "" + var shouldLoadMore = false + var isLoading = false + var page: Int = 1 + + fun searchForNews() = liveData(Dispatchers.IO) { + emit(Resource.Loading) + emit(repository.searchForNews(searchQuery, page)) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/mina_mikhail/newsapp/features/splash/presentation/SplashActivity.kt b/app/src/main/java/com/mina_mikhail/newsapp/features/splash/presentation/SplashActivity.kt new file mode 100644 index 0000000..1651189 --- /dev/null +++ b/app/src/main/java/com/mina_mikhail/newsapp/features/splash/presentation/SplashActivity.kt @@ -0,0 +1,27 @@ +package com.mina_mikhail.newsapp.features.splash.presentation + +import android.os.Handler +import android.os.Looper +import com.mina_mikhail.newsapp.core.view.BaseActivity +import com.mina_mikhail.newsapp.core.view.extensions.openActivityAndClearStack +import com.mina_mikhail.newsapp.databinding.ActivitySplashBinding +import com.mina_mikhail.newsapp.features.news.presentation.NewsActivity +import dagger.hilt.android.AndroidEntryPoint + +@AndroidEntryPoint +class SplashActivity : BaseActivity() { + + override + fun getViewBinding() = ActivitySplashBinding.inflate(layoutInflater) + + override + fun setUpViews() { + decideNavigationLogic() + } + + private fun decideNavigationLogic() { + Handler(Looper.getMainLooper()).postDelayed({ + openActivityAndClearStack(NewsActivity::class.java) + }, 2000) + } +} \ No newline at end of file diff --git a/app/src/main/res/anim/anim_list_fall_down.xml b/app/src/main/res/anim/anim_list_fall_down.xml new file mode 100644 index 0000000..b6a1a5f --- /dev/null +++ b/app/src/main/res/anim/anim_list_fall_down.xml @@ -0,0 +1,14 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/anim_list_slide_in.xml b/app/src/main/res/anim/anim_list_slide_in.xml new file mode 100644 index 0000000..2c408af --- /dev/null +++ b/app/src/main/res/anim/anim_list_slide_in.xml @@ -0,0 +1,14 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/anim_slide_in_left.xml b/app/src/main/res/anim/anim_slide_in_left.xml new file mode 100644 index 0000000..1b86af1 --- /dev/null +++ b/app/src/main/res/anim/anim_slide_in_left.xml @@ -0,0 +1,10 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/anim_slide_in_right.xml b/app/src/main/res/anim/anim_slide_in_right.xml new file mode 100644 index 0000000..ebc5408 --- /dev/null +++ b/app/src/main/res/anim/anim_slide_in_right.xml @@ -0,0 +1,10 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/anim_slide_out_left.xml b/app/src/main/res/anim/anim_slide_out_left.xml new file mode 100644 index 0000000..ef4baad --- /dev/null +++ b/app/src/main/res/anim/anim_slide_out_left.xml @@ -0,0 +1,10 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/anim_slide_out_right.xml b/app/src/main/res/anim/anim_slide_out_right.xml new file mode 100644 index 0000000..83320d2 --- /dev/null +++ b/app/src/main/res/anim/anim_slide_out_right.xml @@ -0,0 +1,10 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/layout_list_fall_down_animation.xml b/app/src/main/res/anim/layout_list_fall_down_animation.xml new file mode 100644 index 0000000..3fdf19a --- /dev/null +++ b/app/src/main/res/anim/layout_list_fall_down_animation.xml @@ -0,0 +1,5 @@ + + \ No newline at end of file diff --git a/app/src/main/res/anim/layout_list_slide_in_animation.xml b/app/src/main/res/anim/layout_list_slide_in_animation.xml new file mode 100644 index 0000000..f2458e9 --- /dev/null +++ b/app/src/main/res/anim/layout_list_slide_in_animation.xml @@ -0,0 +1,5 @@ + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_gray.xml b/app/src/main/res/drawable/bg_gray.xml new file mode 100644 index 0000000..41a717f --- /dev/null +++ b/app/src/main/res/drawable/bg_gray.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_no_data.xml b/app/src/main/res/drawable/bg_no_data.xml new file mode 100644 index 0000000..d8c5fab --- /dev/null +++ b/app/src/main/res/drawable/bg_no_data.xml @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/bg_no_image.png b/app/src/main/res/drawable/bg_no_image.png new file mode 100644 index 0000000000000000000000000000000000000000..8ce2cf584992c2fc0ad4880d667c4a0a9e3900a6 GIT binary patch literal 8366 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/bg_no_internet.xml b/app/src/main/res/drawable/bg_no_internet.xml new file mode 100644 index 0000000..27a9c9a --- /dev/null +++ b/app/src/main/res/drawable/bg_no_internet.xml @@ -0,0 +1,185 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/bg_rounded_white.xml b/app/src/main/res/drawable/bg_rounded_white.xml new file mode 100644 index 0000000..94d0468 --- /dev/null +++ b/app/src/main/res/drawable/bg_rounded_white.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_toast.xml b/app/src/main/res/drawable/bg_toast.xml new file mode 100644 index 0000000..075605c --- /dev/null +++ b/app/src/main/res/drawable/bg_toast.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/btn_white_circle.xml b/app/src/main/res/drawable/btn_white_circle.xml new file mode 100644 index 0000000..94b17af --- /dev/null +++ b/app/src/main/res/drawable/btn_white_circle.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_breaking_news.xml b/app/src/main/res/drawable/ic_breaking_news.xml new file mode 100644 index 0000000..3a08439 --- /dev/null +++ b/app/src/main/res/drawable/ic_breaking_news.xml @@ -0,0 +1,28 @@ + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_breaking_news_selected.xml b/app/src/main/res/drawable/ic_breaking_news_selected.xml new file mode 100644 index 0000000..2a3cd73 --- /dev/null +++ b/app/src/main/res/drawable/ic_breaking_news_selected.xml @@ -0,0 +1,16 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_dismiss.xml b/app/src/main/res/drawable/ic_dismiss.xml new file mode 100644 index 0000000..6e9e6d7 --- /dev/null +++ b/app/src/main/res/drawable/ic_dismiss.xml @@ -0,0 +1,13 @@ + + + + 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..d6b7494 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_no_internet.xml b/app/src/main/res/drawable/ic_no_internet.xml new file mode 100644 index 0000000..50aaf80 --- /dev/null +++ b/app/src/main/res/drawable/ic_no_internet.xml @@ -0,0 +1,27 @@ + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_saved_news.xml b/app/src/main/res/drawable/ic_saved_news.xml new file mode 100644 index 0000000..e9ab299 --- /dev/null +++ b/app/src/main/res/drawable/ic_saved_news.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_saved_news_selected.xml b/app/src/main/res/drawable/ic_saved_news_selected.xml new file mode 100644 index 0000000..d48af7d --- /dev/null +++ b/app/src/main/res/drawable/ic_saved_news_selected.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_search.xml b/app/src/main/res/drawable/ic_search.xml new file mode 100644 index 0000000..f20a83e --- /dev/null +++ b/app/src/main/res/drawable/ic_search.xml @@ -0,0 +1,13 @@ + + + + diff --git a/app/src/main/res/drawable/ic_search_selected.xml b/app/src/main/res/drawable/ic_search_selected.xml new file mode 100644 index 0000000..d5d44a2 --- /dev/null +++ b/app/src/main/res/drawable/ic_search_selected.xml @@ -0,0 +1,19 @@ + + + + + + diff --git a/app/src/main/res/drawable/nav_breaking_news_selector.xml b/app/src/main/res/drawable/nav_breaking_news_selector.xml new file mode 100644 index 0000000..7e3384d --- /dev/null +++ b/app/src/main/res/drawable/nav_breaking_news_selector.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/nav_saved_news_selector.xml b/app/src/main/res/drawable/nav_saved_news_selector.xml new file mode 100644 index 0000000..3cdd49d --- /dev/null +++ b/app/src/main/res/drawable/nav_saved_news_selector.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/nav_search_news_selector.xml b/app/src/main/res/drawable/nav_search_news_selector.xml new file mode 100644 index 0000000..faf5478 --- /dev/null +++ b/app/src/main/res/drawable/nav_search_news_selector.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/font/rubik_bold.ttf b/app/src/main/res/font/rubik_bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..4e77930f42f00a18bd801692652f7b84749127cd GIT binary patch literal 136068 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�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 BZ$bb7 literal 0 HcmV?d00001 diff --git a/app/src/main/res/font/rubik_medium.ttf b/app/src/main/res/font/rubik_medium.ttf new file mode 100644 index 0000000000000000000000000000000000000000..9e358b2f40a26b66a8a08fadb6f4ac3024577908 GIT binary patch literal 136332 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≫N8KIV+$(_c_Nka^lh>^^NH zcB{bYf8d!ot)F8cc1Ndj)fT|YfYo&>`EVd8@}qQjwglbpc<-7fRQF6PB7HqG8gK?W3`IMBID#X=wFSs7$}Svze-m@}4rDe>jR*f%Rk@=PUdF8~! z3Y@7DdWISE3d}gFOy3K~1&S{xTLw$5%)rcHW)377P#Q5){ArF?lP$--J;%mgAq^{s zH(@XBgkvL|0?11)j`nEtJdO>tRZ>m+)}x?^BH0IpCd%r?$>dq0fyTK z9>a%)`;-M9mm)?j4VQ-MYVeNYm<>F(^R0!s{QSiD-4{}l=AvD@E+Vk;g?rM}LqeTO zJFohI*|xUX0|#c|h*iuUm|8up*VXCMt5;9QV$-XMdPyhA{(H9U?-H^v97h&o=E$e9 zLrvsH$s3~2KyB~j+^F-(oWHnezR{O9=SImFlArLSQ=o^6A3R(I9yS9(yFgi%9v|!p zRhDp%02$+4CJOn;M7mvyn}B-uB0{1v2QyA26eY1BG2GFH4~a)QB6eCe&-ziyTiA?( z>|+4g3I}M6=v4-@gf#w-T@_Jj2g68Jop;`;y8k|GS$As1;i)W$bo#?>Ptd0 za`vL)MC%bc^}{^LkiJP?{bU{SDup`V0r09z#I#$|n@kV)YQxY9-VUpa$_VlU%fT}0 zVQ|nynv%P`93?(YlZI)03fmktG%(PGgE|@v4iZRP2B6&o-TkQ~KD?8Pe354VoFkLA z)g`CmC`G+&RWE?5o^y;`K$gMOuh?olx~Z;y<486u*D+XxT^zf8-{z5#nYy}}G0rIk z^o1j}+-PbtW)Jjsb@d*RvP*V#C7rb0ujVWOu1p^uMg6YSso&8qh5B82G3s~K1xbE_ z@k#?u8Ya>zV*+vvZ;+DwWZDb0u<)6=^}D*}h(OEcLBa|OcOmJbDS}yf^*eG)S`Bk( zr&GGy*$=;#)l!0gVktIEWcwd54f5Sgqy2>U%o>%I#`gD4zkxC`7Ztn>i;Ox-_(P*; z_D%338i2UN`oioP=8j{ta_*RvfNAC}t-?u(ieyJ)yQoOM?HP%*5X}dr$bQU+Y}uJ- z=Fi8jUch5kMSAU5Q}fK{^mIHfW|PEhD33xk$(7Y_~Gci zl8#73n%I1#66gFv0Jm{0%JB=c`4drZlBH#jjAVqvWLPa{#7VUV`xp834s3`o(!u5S zC8mL(Cf%QTQToVJ*zR|WSmq_MCp;tV{G8Ee|3ucm8Ic508dB(4@`PW*tH5WoXCP02 zt&u~+skC{J+3*97KxRi$?a`>LD%-`Sib_}+f%HeciN?s&wSysGwJD!V$ZWfz%r|B_ z{oYo9Z7K)5`xe(NPM^H2{p1CU)^}LGnBP-U*&giatynlRv$ALNnBFl|rW-D;uBkaz z-B9H(TQ(RSZ)+VW^O;6jpr|DjsIRulCx_Z5nlV%0b1@^@6MrIR`iydgu<3>4@S!Wja~3|SzVTBY!XGs@l=-uU|wc0 z--e{Jh31!fo$f3pm6auCz1u4a&B>)_L51d?_LuAYZr7X+ zE#2O>L@`OZzVR)jJl>Lz#m;iyxs!0MHHt&wue95J-LQtG})8H-Gb-4jQy>-E;o zJ(HU|6XA2aw@;5#@~3}d#R<#$2u;`d?xjP+r zI+FuK%T1#WKkeyRw0t51dqkRBhJUEy5~Q33_8C!ep*2l7K!iXD?qpAhAPyfRGwNh- z?U*!~6ja(UAzGax9;F%!-1TgYg)%z1>PqL@Q$;Q((S7I_IVyI8r>%rIhwYGSEE&`Ajy zQz!`@U(nwRa6A&q!Dz^&Heh*uDUMa{%~h-lP}2ui5Pd7;zhc8VKuM_sax$Uj1@z}7 zcU>%!$)}0h?q}$M&zJ^kyQhia^POoy!%6lZSAEd%U*ac<8edU|?Wl3sjvC8^#i#rT zo*|3RfP4f`CgAZ~*a;%a)IC8+X}KLf6I>abpy1HKEF*ljN0B$6KV{Ff%kVj(gj1=A zs0-w|SS95mOP8%v*-HdV<;zF_AZC7d8h$Wd1taQLEYL6B&T8n_%x`X6y_AWL50sR~ zrW}uBwvuA9=)V>-d4{rKM~owWI%~es=R{>!eg?%)^cjesC>uEElMz2n&Nuqfw%jPi zPx2Ffgd+;X&4}P;KSiKGN+SI9qQH(Q00A`$yY@P;BT^ht!?)wvVX&>$j--(vBKJik zi?Vs5IXr}UorA;wI-w!KyqQ9tmb#nj9ULS8kg)}Rx2G;1pO?eM8aHE&HvTco4Z=K1 zKL6Oppi16RG$d#KlQU@MO<JO^lBkv$5K{UHDvNIxa!{5yWv^*9;U0#kd=KJGW0 zOh4au4zqMX9{Keyzdusrz2E|GO~gc7LLJ_RJ98Pk$ZJ{N%oXgQ+YoeGW;Hu2bBn;; zOL|Fj{|cgz^~@1mrkrseJx<<;lG9+~>TgAcFvYG~l0qfFC&Fn+`{6 z@^JSBiQpC`J{%pg-A|y;a(EyL%gN>;-76mS*oyKIZ*d28op{Y{ z_}U*p1I42I*dwN!)a6FD7ab=w1o)A z6LO=@XTU}PpTP*-&Yr{Env}M5vnne{7?OK0-uo|O@O^GpnfWJeZVYWA{h8mPg&1~% z%%#}Vyd@gjBAfzC4;$r~kC+A=1W+!i0gVhsob*hQT`da7;qx}rjN~Y4!uHcIC|3$? zLVk>Y4j#o)@{e%H7KeQa#i0SfqIuZrVoR0r(Zvgg3Ce*EM$xe472Ps( z)tT(3o<(yUIpVkk69E5ysJAU z8bqK~055nI))=S83ukKhxB@o;eJOO+>+SH;RHv26r4wUm91L|P>;D%gJ7=D6G2;)A zZ;uK6H2G9#bnvovRhId#5;bol+9kzdj) zyje&z=Uo?QZN30uZ)k0LL2XK$&8KyFGQ5o}t<)UAGm{62NGVxa9UT&J#KJr(-2+5# zUuWcbLG>}&51s@0n#XhSwwHa0wepAIb9O3cr;Ru@A#P%-o1=EqDWUuF@D9>K9^_Bm zDx52M(&sFK?&l8oAa90leh29}pu%1GkF8IaMX`ZKJEI-=qHrn}j(d$Ns$^3IP9E)% zh#rxekR2QioFNH&Kh^FAA2y#+p!Vhz?8R)UsF0_M6C_UlXyHXjUAx z8%~G@2<$5qWM^)Da>qLoTbE`2z})G{i6#GrO#F59hp1tGfA@yonUR%K0|R3j+8>EF z>Z#0uUc(X-zq|3f>`9fSkerxW;l!XPRW#+&vW+;hB#HGzT^QKAD4&;kLLS_fUknV+ zU9uMzzRyjyZdQcvqfP>3bL{U`mto4N^1Glv>g5<0NQoMX#vmX34u(XNQ8yT3x8;+K z0%>bO2qwGlvA;XtPV1QAcuKdr%rw3#Nsz3#01-1+Di2@4KZ3c&kgY~{3Ty|eqOJjg zQMfiWQ|PCnqWk;?gwVCF={TT~@s4;$OEcaOArqO>p)7e|4YK*fj*@I-Pb)4clAh5L zYE`0zK~hC`4@~sshKY7|mI1(6CWX_L?7M#r2CuR7dvxpT54`}pVjTJ!ej`?%f4*-0 zg8T2h?knv!r;gf16}+MrFo?(8wZfW*l_0f#Noi8A1)FR~w@aNR=f^2hpOjEU9btZ4sGQj>YYkAi~vS|H`r)Hlb29 z>Ow4_mZ|6#)2kcqhtCyIxbq%z8w48T&pzZ1bXOW*+bxE7e$A*%1l$ij+vL^#UX3-Q zc8|>(T_<1AynfxQvI&;(y330*KW7Zh9O1^k!B}H)IZnxbKZ77%_R&isLo=dGrI+<# zTcgS05QH1}Pq&KFqm8_k9mgnhUc%V{zNt z$Y!N;nK@}4=%go&Q3&KD^khcwN9Qbbo4!s18Ok-I%eJhWTt=&A$>Qm?Bk2=$cUh0m z&%BqOH@&Mr*4o><_@Y&M*Qx|Z_+zyt#s`N-Eu+b>28Vh^I(y1Z->OZ$>w0=tSJ$i` z9NBAq|kUNXXj`EmDnx$vimf{6kuPdlK}$JVk{gi zZQY-_(p%hZ8T?vWO^5!I2jI`ij-cFg=udvz#$BhL2Q91;+WCjP9>3QKTO`LHqu#tW z&Fh3+z+M(YM}a7^K@b%*5;;_AFTIUYX*B@-2yINjO)O1%v>Hbd^Yze44M~Ng=u<7@ z>!5KZzJ~!%?i8Y1;pveba0WAgZecA7OOlKAp!$>_l{{Mowjg;U~6{@yYeCWxo+zo71`0 z*3T7(uq!#cFm=S@3X1RGnsZ+OhnGaZ1J5FQg>ca;gegdh^GQ4(R*-FI48U#>c$jms zRSI7VMl#Z$8gOY?$j!z{WG>g%>Y?d$2N)?H|30AIKQzHks05JnzZ^I62A8q(=*4FGt~-8hxxc8A>Xhmr5c zH4i5r^GWVri4OjD6S%>F{;tk=3||_qDoa+Cnb`WMXqsz^C8rJyOYU5&*g;gMCswk_ zaY0MimDc+|WWfM``bKI)Y~J`859h{*KL9&ax&3S}WBLzSLdVOV?Pzbk>XOTS<#pC2 z?;fXUZ2aAq)cAZgmtV5VF!{{M8-2wU*1h+dl_lPdCudHza6!1T1M_D!qS66h1P@1)5RUXmJrFRhWJ;;p!X=QjsChZl6c&{I!V1i$eoJ$( zmYp<$W6o%53iksGTdl5n;g@7he>Rcs8U%3FZUPMJefWHSztA(}AmLPS_gYB@PWEtR zBglZB;oq-PctLtY{|1JZkUZ!GY5$T7(Gcmx?vQ-8Q;xy&>0CFHV#Cw~{x z{fA(SUq6IW5Vb>gr~pSm4Ta>QJ+k18`ejhkq2Npbwq~xab(58?nLC<7S?1 z)Lk3F2<#!>gv*2AHo3%oKcfu+iKKXTj@p1g2U9C{;;J94&e*+lE+EAUhJ?L=>ZQ=&^AgKD@e51;B< zYakqQL%xK9J2Te6$a$Au}?&@giZtcdq zVxS#s#emC42{MPT*;P_F0qG4m6R_;d#RnS2dTN1%T5oG{JnC-=ZnYui5Lj=}79sEFS zL2Wp4u|=*;GIPBhS*85a;S&-gh@^_%V(9=YSDO{;K&fzN17?c4)gYm@G; z+z2On);MfL`>}{QB!`Yo8~AgLr%!#q^5p% z&JqvJ%I7vt9AC3R&g#^4<0l%bE@q`)v+JUp2t0e^e!YEFFU`wr?LBW>rI=Uwo}H;y zj37|D>5k5#qV_v(f*hfZqHjM(#*n-{L?O(gsF{AJsF|(IkDBp>(~+ISt0Ml8Mf(`^ zxr^}o0W`S>e^la-dzN(BF>AIe<1JlE2c04#V^(-B)k)_#C&z5D!?lodC)4q$|Ggwl z_9*R#KMU;W+qp+gC_dQJg>Q=@Z<8#iv<>>C#!|8XLpH`)!AS?aOFlDvs`)xIv*$1O z@LO`B+bvwX{Hm+pgJOdF-Pf$1A>pH8>Lx-T&aBqoe{sZb$8y4-$h_gNyXXVAUrbG# z-+9ZL4OKLAkRuHC(?JaPIQXeP8DXuPo$-y zp(Z?CkIURp+a!nI37X-OQArU~M8VNUswFjA!R7G!JIVFY{ny;?EiP*Jn(BupreTa; zUG{!#RqyBDlKZx$|K*Q<3*Ejv|5U3wrO!A*4PR`iKWjF! z^&J)|=JLgL(8Zzu61qrh=N$fkvln2Og8c#}3Rq^3qIo?U-781C0lF;M9&Zcwf|l-< zuFiJ6D=yArioJj$Et}o*lm^K~kR~%(3cwWh-XwdItUusI+lh8ubb#E(L$sPqZ}IDFE9vHJMx&Y_dt7L-J@y%bB`MU zz1f5&or*z@Sy2`YyDYGcQ5W0!{2}A!WM0zP!9XULOku%j?Q(E1IL^xhZmC=Ym1RfDue2NIRQ2WgaZ2 zJR0&S=(?WQ6FKwY&DeR)V)o+B+``mNtJyx$dp*|?`P*k~ZE4wh#-ab%ytTBkv2^QZ ztdtNm>}LKb5DY8QI`j+o*ujZ|!K+6ITq?F=Y-#W~koOi90C9T@VtIfsso{Ch`NR4& zq9A-sU2m#Sq;QS^n%IRNkARyn%lC7JekNt!$1iPMnYM}zuhtl^yxCVv4IovI&k7uR zoPB89x=J)~N-fK@q4GezyQtqf`9_FruoOTrQVX;AV$TMGw}CEOhsY6!E2*q#@4nzA_Pmg0=qPji$Nz(}q4@jh~4jB@d9Lm|}5!$14i}O6FrDO@sx$lLx#oi7aa})%M zp8emm4_x9VBHbsCk1b!k(Kh~0rK4{@`_|6w8@Iu_gvq+BTaxaZc$S{G>n@nlBBCvR z_prJ3d#i*c@n88g&L>~dhWq48}dGjP|TvIRf{Vz-DZW&LAZS+Z!s(4fqH z!-2La`E6Sj(47j$V{tWag&ubfJgGh>YZ1*L>i81jUmZSK#O0=O0eAV{WjE`BjfOxEp&u2Tdc%#>{L2L<~fWh*A}V)FkU$=aD1Em40Mve+m`oH z($HUBnw9RclF>qr6uD9jagbuE6gn9UbW#IF)HWbUs^DOiVir`ufl1S56iurW&{-sp z`VdATJ5rhyVv|Ax@mc8|IgK2aH<_#9@GX`vRpNULj0c2nNzOT2Vq(DZ+=t>#x$9w3 zyeVQGGqg5mGC#^K(adW=AX)kr7AZ!V&Z*dtZ}11qtd$UtG3=`?=m=X#_N64R3dR2*X7I>9Q4)NZh+!J)0{0Y9?vw?vpTZuZ)GI0j zc@#StyAF|Ec?%8dP}&9i=hGlK#RbJx@?P?8YD@AjN(D;TsqMm4P?Y)!|J!o%r1*l#${(tbmA?6L(C-B1(C0#(n^^tp5jzRpV>rQ-AH;v)U- z&~=FDS%8&D_w@GBN-Xk-8yKL)u)ywvAdfBp#L+;yk$j6|dV=Il;SD&QlWHHd>GSgf z`$OKhti0uS?=QT%m!EE_z1t^+!8!Xp3Zaj6f$tlJuXkp#cMn;b-RAY@9reCfva?7O z3H-qkoq@@kI5jxg85r3kB#MsF8MxB=6B-kD7weBb?khoaX7x{4YoaqS+5wv-c4uI; zCq5IMf%Cq*olvY%ieM&@awMCeuvtpl3Y&nmP$U(_jeDiEY7qa)bef%M6gwM*FbD+l zk+qa@2=EQ+Z!5?Vt))e8wc_qAPxQA1H1dyoGUs}+X^0jeFVRoz`h0Rh=Kv)CPGN&_ z9|(FR$@3B%$=n^}U*HDuEwbhZe@yPhFu#<5$9*91DGD}W@*off96cYOj#wiDb@J?%pY?46lzZ=1AU|#%@nfH*?9%{(8)3E#_laJ_tSwni0fsbk-`|_aeE< zM=5L)Evy{ADKAJQF_6l9zL3YbgG&@XD89`cDlB~vRh0I(YjOoy8G%#~HLeO!h8h>Y zAFon#sAkhiXf^a#k+C`~hPnf>Jd$u|E{O0qPX?VzI~{vXA|4UmsE|Q+$0L#jLVn(I z4v&HLJ@y=W=2mnZu3tcQ;ZEIpws3l)6TQGgiFr^kLG!>ahn$ieN7jj9oU%?lAhJ$e zVl`x*3TO_hqf3;>A2{lMm?OnyXTWNPk++6dj?bi!f%;hixQ1)lp_p{Uo`N&G^&5h- zNF>r8X{#hgNIp1mnV5F4H=dV+OD*JB>XqVfBj7Yie4G2KOE0~-)X(n3rREcB{Hme% z;8OG9^Vh!T8ux>zxme~y_pnPsp}vDReenwct0YwX?cPOnt9jzIq4&Kr^S+H+ibMJv zlt}{%?hyzTNL9@G-g$CuN$~`ou%T?+pXWS5{?BzdS0(TTc;W%vcpy+NOrTtB&Rr)y zqsso4zB!*EZ{8yAH`z~AizjUE7ev3f8TUA%-^RxB^2V0N=191_p}fBGn9;8%Kn(vM zihqk68j58ETvA_OBJLrR^chk#hlg1X$tP(3@`-zJJ47B*2t1Te+?ajh8+>fe z6J!&mqzLs*lKRj5C!mky9Z_uCpy0+${0>Fk0u^@QXjDPGh!8uB+d`V&n0pe{0z zdBN-x4wMTwKIMh6hyLJ1NYcx&HQ^F)O;0 zfs6YIxDvye&!6GM-*NSh4~v8dnm!|llBtCpycC~HcM*j}JTIP;j%K;ems8?Z9Tp0<`? zW7GuzNiOjNbFzphDjGRbyr@`c!ZoY($gAinsU>k#{k)jD_U+#L4mX>+>Vvgz&E#I( z@!4|jwm!A$l*G1kT&FRw*8mv-FL$ci<;3D-5c{1xmCTk zdEH5o&WpEp6_xs?Rt1uxj~T*)t2Y2hrz$iq11LG(EvSav%E@UY+l~0(Fk1Q+Mmg znpF}+l&gF2SAlV=voWH$lB5tk>ij{b&W^y37KWF?!(<<@=_8+o=;T*e`bTw>&QnN| zscjQi0*Bwn`@oBs-1X+5N9*Q8kG99#{~PF0ErjoPw-SbafnnkXQS@T~S*UWiv$MW2 zw8u2yxm=^10Vs{0H(Yu?~pPW3*(FjT3#XE zA_S>S5=p~HwgMBC@F7`tvF9%QFe-A`mgVa+ZMdDR4M*9H#eKbFoBL^P_pD0|4kQeB zc`NSj={#+8e0_6ms4cp0v)(z{gj;%zSW{c;T2rsq&GAT2w6)CewvM;9k49P&B_(4$ zlPm2N&nqFlMx`NLi@R>IRSSe$-4x_U5{sf~myK@A#xR5sb-aE`R}g}f`}}l-!^-^1 zC~Cv;Mf#al8AYuer}#2R*J3&C$y{AzdD+YKOXhv-9YwY+0tIA?&Jp_dd;9J)*r zuZuffq>VZx>;d{?L@94xfEKMQK#L}9v?%C}=XA^|Lk5zLGSOzl4wVfSnK#b}T@nX_ zHe96__n`AFyXEs0p5mfszUx>f(-5kH4!=MCe~vvpB<66wn8SSx2|MTzJbw09!ClZw znGC|cz*Le;fU^mXH3#znazu1pMf(c$As?iX<+@lRalh&7Mk0U>k-~z2E!N-_)IxSg^(=6A~+@qq-Aw}U9-e4 zYsTYQGK2=pvy_~=aCPYBWtwGGTb6d2_zf2t6??z`bwPnr9~ zZ$H&=uJS>)nC?>|IhTRLutGetaY|H8ubcAVq<}1=;jckTV9rIG1>{)-QbMYj(`u6E z0B8#&4J^lt&8f_9@w41nu+)+Hb5689^%OQ5Snap!{S__*&(7`rCBd`*+r7VRj*-PJ zK+VF&5-u)#e&a1sv%*QZn#2J&a%q6i8~#chN(iq|oEPU%NF2S2m!5{fG{iS+)z~( zkt_TUWfN9b17hC6)L;&gOJEu2D^cLaxvj$F7W;?gc>o;=7q^R*Q&Uk_Sz7W4(E9Dg z-VfcOl?n^y@@EzX(yIo=N!ilo))w|SZnS|GU(e1ZWGTL`j9M*wZJPBuJKg!(0H+&cI!%6eYR1UqTH^o;_ip_mH7+33ehgiq}gl9UTxc?5i zmR2*`i+$75n{^BS;%C50aNu9J}S z+e6@b%-agZZ0ffkP0Ua^8Mjc3^&%)H6h$Ed7u zBSr^@Ltz{S@<{_H4k!Zkc!Z;8gIV)9%Wk(m+H&Gz9X?-gFNgx9YAFf*;AIO3`WK~% z#cSVn2d)G08(|;1V!Vrj(j340l21Vg$iI3MbjJ%YxCG+JVsPu`U~myU1B2V#-9mRr zM9X^T!Qck+A~K4`Z0AdcaoMx7wioti!E8yoZqaY--<=tVS`m3;Hr7GSpZZCSgpe0!M%!Iyg zcT3CeeO=4r+-G==?&j&09#h9X8J?BX&D{n%pfoQdJU89p^k>YjpO6}aQ0PXTqgNLA z-{SP*5wRy-buOpr#Gba7U}xR(aJX{1NGQTh>X$VD3a~No?M+>{*R};X+|qPUdXhgv z{^BEi3X?5$`wU!C$#~bMrMpEV(0A<7yO+lR#q}Cp%_ppMTfQ3I^sG3cxy!(fAhG4$ z`*!P%4aV+$kn0$vNp}=*dHas&s(&cknO{Xt89*L%+yANEbDpFBKJA?(j*Ua9MJD@BTmOOEF_ zbu4DboIboA9gUafH8Ng34f&5itk1wcq2J{(P`KGBRRIt*h=3WDgX2KqCT$RIMKZ}A z10ir4cb(_*qX&zr?d?r%+4{M$vxa(;$#c0^x{Gihzvw|{2HkgO>8gP>tCqL)w5Le# z;Kx&+zflF*<9<3#Hwm1O##AqL`a@?T`!g%SbUdTu6=;Edf=T+9B7KBvcIi+} z{86gr-uD>r?Wd@h|Ih0zsf zOu_|NU2*SFcQaviq7o&=5^sSk=-k$R*uDZzCyu{iA(*;NFqN+1b@ zDg9y9bzbA**6KTeYGdC;Uh?+J_Qeh7xyuKNjjbi|#+Zn_qmA*Bt;k!l%?IBs_Gn-0 z4nOQczbnJ1X^(`u@9}8GMR(Sfi&gYgdEK2wEc`LbI61ir&h8ajuVYz?L;N8HBks`?RT^bbD;aOUoq~J?Xhm#Sv5T9Cr;Ogir(d`i|6%H zYfkqu5fwMZGoPY_7yc)!7e_<3!caM+%!h1+4rCQR>sL5=QXvCbI=GPNxlouQ;5#fm z37u%6bqr;{4Omv)`VI|$NBsDGI}#jauY*eo@;mcTt+`$*x*<>Gr+v@e(+26;B8U2~+wU;skV`JbbCzju}iSi_;62L;>?-M?k5#oo%~-(%d_X#0)T^gFI*iv?&SQ5)26^b&bT`l)xUL)p5{&23uIDpln4=A z2c4Rj7qKc+2r~VLe(y&|tmdSg+wt?$;7J~~<$1JZ_!VPW@y(wTe^}5B_ET;FHIQ`Q zprE^hA>`nEIY3i%)*NmP=H~%;3iU6dUlbf9QnfE3q-0yzJjHZYUXJ+OKAAraZc;Y? z18$V^kSNOK^zkD>sjex=?ElAFT54;bb{3pzJUUH3Pd|l%kj(OfQi`T8z>LIwgsp^7 z&7Br<(5YEJWgc{D9_MrUNNnxdDg=^s`~sA;vW))-5%Dv_v9yD!nbJ>C!ts;rcW7a% zd#J@~vFXeEUgQtc%^k4@oR-W(rs71A+bvRb4SbqFo@kCt$W$hPsdD!`!UdRzs{5A` z3)TwSPNE-|-FF0qa1Y=T93(OiiXYk2b7*aarL7Zd=a|@3(CgG$uz)CaJwG<}n3?P( zFUo4^5$WuXJWZV^t4-QU`E|-JrU;kX`4+fTP%KO<{zVVJWcfU})YMUNsd=zeS*m7F z!)3v;j}HsXzj4w=5m%v!D2@csiNIVe^>E0yoE)4bD^`ot{HIRgLOg5qk*~ucgCC29 zBkqjk%I8FFi53#w_{Hf4F8p1h3#dALHvWRT3O@_4m_Jr4)fYOBjRwt|IW#cZ8#*=` zG(10+n0*hjS}4|~r4P*!mor;reUZY_t()hRA!rs7OGdNUCTGF^E@mgk2~#1*?_sZq z@$9X`HrC?z>>qd^SGtfNIwUd%?aK1>1fAjW0B->&2%a9iA90(kXl4MSxNUU+Bks+Y#z#S zdS2oO?jc@fBP1HX$o`zy=rtQTl_)h}0^-{ea85<84P3-Q1b6;9M+xh5xK~?ST3Q>f z4K+5D)|6IP#O9oHbSl4eC@M%C#3@JYp-3I#Mk$#%0a`&^`jmMd-cFrNnPgtYYc^jZ zuYI}$_ub&Sr_A~C6|<4`MVh^=FFs&*ev{)gOF4cIdqK>8ZawlF90*)|j;zbk^OxCN zc?z#$Hx`Jqc@djfMNYtWBw`cCYn^b7f;94M$TthhAPsgx_yyuM8=hrucKm^$QN8>w!82 zE5ns*#qUd%U$HCsuo7lZDX&8|9IrI1KKxjY@uY$-Xo*l2N;eLCs9nH^I+W?b;lZTK zTjiY4ip6nMG8-ntvgG=Pmo4Nr6iQ^f;0l+U-VV#pUTtd>H*a=~ZqQ6`d$IXUB#0@+ zb*pRXxedD4EMjbN<4H-_UQ54qa!>nZ1`axxWPTLr?1-Q_hNa)IWOM6B9g5LL9%v_l zHIX-jwu{I^Vv{>W&nF!552X@O59pS79BO$f;$abMH09cI1V^C@EcnHpq!W9Y5~J75 zCSthtmoJEy|NNVH0l#_<{};QJk05>+yRWTEL;FGM#!!nyZwbt`xXwGvx7u_dHwJEZ zkkgT1)9b&US{P3dN29_qipR-JYZ`4_NK?`O>0+F`_@bh+jNNMa+RI#((e7wEqLl>H z<@F6iW~o`*8HMVCx#<&oN*0uPjmirKo2qLyR@_zMWz}V6V-2Sck4Hq4iQd^Y85m-w zVEwVff`^bgC8A|p@^&JyLv#=Q|CoCZ_&BO-fBfE=t+Pd|Rqv~9>b*B>)w?BImSwrg z-QY&E!8SJ7ruS;VbOH&4IAB6Z=%FPL%p;`Hlb9srCA3Efq#1U9-*abnwOY%@@bW(Y zzhQPpQ*J%y+;h%71;gjB_32HK=%F6WdDuP&w4si|R?$f2^1p!_YqH1NDWjv^8vKA- z!}m)~LJblZ$PdCG6a&1rpwTXJasVc01M1wUKM5@<4HOY1(q1O&$DS$-u%YyjN~FPL z_!%Vok}0!p5`%@L(Ii~1;-luVQf*Z1mLY%5_MJzmAwLRY%R0CnSMb}$51LlAAI-2> z{~r8>Xz2+31`i0`657S?LA%1aN{dCVQguY)n5{-OO|u#nzLukSeRI)a)W&bzY z8xXj~=l$1-_Q%Dlg^}8$ z43_3aTt3WkbYLEhSEoUa^zW(NV7D=V`w?#kLrC2`^Gt30iuMPg2BZG=VJ{>g1)$}a z|HI<^3@CC4HzX)u#9@*3o&R!^l9>;4F6N3`UF2oK)srj!;otw`GsAb1QG4 zO`hOOqYLKD&FP&xf`n(#?_2G9yX}lW%AC@8xl3>zeK36`Q*U`rS_YBe`1 zET&@Y=0#xR&j37x6b7Whkrt)3h0f(4p|oU{CL$Pw;a`FVc(A6XTqewmCIM5($FJLe z4Pn#`+NAK01X^v~5rhWBYTYz_A(+2nd@hBo9v#1eVDZ|s&!iwOXP$knNUXeIo;@kiJ_heR zWLZ9Yt35R}ZtL09F8J>7UyFT-Spx^m01YR$T_nB<4T5(fE{iFycRX(LbE5C5uz+0& zk1HctXG#Rai%Ax0dO?UtzYpcEzevi{2$SGws(9o2^0QVKN_wLuIj^hV)fdQ-g>gEf zHx5Zn)u&GGy25Sein-Wnj!R!L*)as4E@eM;31*-wrOFYrp2U!ceF~3gCr^zC4`dQ~ z*pnPdiB6FM+;AkBKv-cyC>ppYcEM~5Rx+#h?@&=``}W`~if#6%`-96cLbM|LP-7m0 zr4v~4e>a0A<_en2<7`>si|qx0JTM|c7Ge3L{2HBq~gB{=S`X&Iv0{%EPX7Uh6B@( z6dGvivPye*z+vzrK_H>_M^8%t5Ua74<}lb$A#9|uFAJ}sfK@@U(Ak=5Uu3n6^l*k1 za<$DI{EQm^V}~AFr9wGh&^wf+Pe?RdM3;hXE!eTay56vA4y}X|>jll~Mvvl|i^b-O zC5MgTD0@*X-NIhf<;+oY#eyhNuvOJ{atb|Y3DEg;2&5wFMm^p&#~j2J$fY7LDrgG!>yPWTBL&? zEVwMI3;s7bDf(jmi+I^&H5-EEnQMmrC1$Ayl}*mA-g?O(z#C@425QoJ=yQ6zKn z^*36qyUqxX(@gSj?x(RJet~$t3c|sXg7jp#Xn~w*9zSCJ5CjycSW%Ye&B;uRCmL~- zHfgIv1S_Iw-7TVt$+kQ+@!?IU5=lFClb{B7cMoF4kcPU?o)?RnH( zB{NGoW0$~_g>#j(RAuf$v^yJP_fxdnMQbqfdTNPoh+7qe9sq_Q!*#VfFgCiVeLOX~ zuqKlk6Nu7zJUq|zIcBdo!Mx#e!8)&9da?ntxx*ptiieqYYVc#ntt)BNPF!<#eDF_k zI+K;!fB}3RZOCJ=w#@{s1)2#$ODnOk4g`wT)%fa(A!P>2_akJg2!AK`OerFGRIB*w zfmtWeY9@^8xFh(y3GAuE^5B?g8Q-!g>$_lY z$%|lsi}Uu=9pf#o$#wXH7|Y;$^Um&&nm6{SZVJIa8s~NHq(1Ckw!_fa%1>Ux9qQ=R zU^@HJdXaq#D8nNw7C9G^c%e2L$+x_|S})jmtXS&60LX~ZG#CV-2ru0!HU8SV2zpBW zVgcFTtC%^WWL-jS7~)1-EnU1SHHkqKW7;}e6Z{ya%{C<)yBM#wj@JlIpXB4t(7!Rl zPct`v8*^!dUBON4M2fD@51feT`bWHBkUkhX#&eb@y~huR{tziC9wj{-`U8r3KvIi5 zqSnYaYS}Y?Q5)JSOmp(N3M(&f1V^>J8`&Kg1hUS6Gq{fB7DJH#DK< z{tHb|0s-wEqN8s9oGAT0_FU)>+B?*CdM7O5y7`Z_cP^X$4pz-6`LT>37I8ok=v}W9 z!R*xJ9D-c|Id-`~;>uhl`93W3BvP7=L!{KHBq#y_M-efD?}3dGA%C-vE^U5hRkDcP z!4LJ0RuYmt-TZmAcf3&aPSR!%?}R=An*C6`^Fka$u&npYv10@pAS63C|0%BUMqTV1 zVOhw{4{G()Paj3p^BE+H?~8g~N)V+uVoM2232y#hYAKl0*muw)!6&%+%i24Cp8gKz zYl`cxWAjzMJ6+?up?pTzC?dNOJi9gi8#(oe|DNI5L?B663DxD-l$T&l5&XFE`1x@u z!WyU=q+{~uzNq;E^%G#_g8r;|6F6 zbBAvJE3KSL@lF)9un2#|U)A1e3caq?^}1FUL7j?suW9degnpsD^9${r@H*}0(2;_! zyvKHh4ruQj2$!R+nQs23R!-s(?Fp|{ZvK{5&hL-tmr4x@3sh<-Xqi@5m=1)gx|{z- zt84WU<)B~Cm%M;-NUda${(E~A%>>-Fg1c^nv=f=F+7wew##!Jrs~#hRRe9U4-P^E0>dx3RG@DrK;lV+1o;|2szkUA1w(GCo zmf6yjvHkkdHA}K;>oOLvUAuVh=#n*9b<@!1#n73iF+@0ka)MS}0(=Go6wVvP^4=tt zclbWl`zRYBE$_r@6N^hWWx|bBi27Wy-eWYGO{se24NII*l_PbHRK44v<2^<- zL@4U505l{?&tttL-51%zQq*DGq!0s0`VKn;5oDoBC^E5X`hC?!TAE(fk}d3L3a$_< zsIc}G!f@CdD|ePH?aluB_SWWZljJbLb5^Q3q5tGlTH1chn}ikuYif2%(i^QKB~2aO zxMelftZdz~uyu9)3swuc+@M|9#gY6NpGsjX4^1cd*Rx1F&&ckBS_!AwMq(okaDO%! zI)tGv%&h!1ez?n0GT)=R%hpXP5Cw+E*`snWtbOQ1 zE-d&l+FndA?+2a3bR$y$paAns!Q#YNd)#<0$LFc{7|p69lPYf3aWWnxrH;muYqo;E zDoS|}d<-q*CHh2br^UL6+PMg}#lg=$vnlX5_t_o%9utfKgA1UHQfyZ%w!?feMz<8B zn~RoJv+h7gp@`0i)f`p|46r~$y#uB-QnXc@7;4ouxkDtkK>%vEuNr&TwPyIfO(nM> z>`=oOL^c5Hu=^i@4w1T>xMqXr^-YbE)l`vWh?`T>xo}~pw>ZTXuaqN`O^%$*7YbN8 zrdS^Yr6Z_6X_)zc#)eS1A21o zZQCJe#DlBF?i`>UZ0!kvc6Hq0LyJYHLmJG)nwnXZS?F~`W0~%6FpAutgk{)N2z!f@ za!+kHHX5Mq!3L+u9$)o`EiGL?;%2+K0ydggr@Q)2YH8U#T-0A&(qDw%;{GC~ZByI) z6TI|rn zA)eOXrFKwBiRQp$6~C*wvZ|$}s;VWp zzqh%$mkxpf>{Uux=#>TodO|pWwL~`8c%(z_5@^sUW-BcRSRG?vAkFV57=UUTgx25@ zN$SJ%uMV+O69vOS@Q6isW2&onLqo$UBO|9a=DD6R+N_lq_ZAlR78Ujs7Iqie%tphj z2HtjJbMuDI_Vq1w^Gbprn=QQE-&IoD?e}+=mUQ{C?)yWBc`sjyRTygoyBGX7lMdXA zMHtU0_uI34DV|~Q)n`2XjMnfv@g3>4#dncs87Q+-d6@m;Za zhSFoc%f+)M@eFh>=DQ@6X&292;b)Pyc<^1lXlHKtnH=r|t%}v+8RUwXGW~pl_exKz zcqDgnLpzV+bSdeLT#lloMi>QNfLtrkx) zQqxNY{QE<55N78QxVjdb30Gc^$^6m@I(E;uj+n!w=1$;)jL>KUB;LVWL-JP{e)^Q8~CfsWeTqcELR& z6tupPk-sWv6j~K~X-#=rZfbHG)TN3k!|84EG<4^*G+jw;{19zSGR0YPeR+5X@v*Zw!llJwZqwD5R5bvSlQB!P&}SF8c<@l3={(d4X!>lyLy7ru=i979i6h=eFQdRYw2}EagT}r$Uy+e5f4MxN$IJ;6Nol!uGTF zQ4GI@kB|5SRUDg16H^(fVqzjd>qQl-^!WUhUc``5h*3LYHnD^eE3XEX4}+{4Y)i0d zC-z}Fv#e$*J~KJX87{Q!5}-EZXEP1qS4_xoIimHU|>w zS{m!;&S`Sx<+*bG{@nZ98@%Ni>*5gU-qt0xH#T&%x--(W-3{HN1- zv=~xV4+ZgiD+$bIml-=#7k#U!}i}U@-k?|=o3kna;M&y|Yb7+LP(Zd5i zTXkH-P;DA0b0l@Nv~(soN(NgqJl^zlcWy>{Q9))_eqqM_E#(#2W`9aiQxoDuD(SUl zEw3dfCMG8*CMDgNmXea1nvx851s>2CyK3|#nYn3yQ6I~Tf!s=a^L$Af zp(Q3Py0M`B)7rYuYHjic^5-@+jpiiH!<^33=JH;_+LcUPUKHg#>>z3z+* zHyxyrI|fgIxz>1!nN}v+#1Q=Bil~*zl1z!6kAG$2OCw8@VvHa$Zpe)Eljmz+|q-K`>&n-*Tz~fn$RQ?I;5nRws5ZqVD z)a=MAV@adz(r7nit^epM!zYewnE@mmgUbUXXj~p>X-6QS68)o*VmJyKxiOO5V1>x; z8%2XH88h|uKS+c5#BmT|^!OOODbYEVH;txqfO#gJi+K}!WGe*ZK{*9Frvg5(R9$Yh z#a7)Ko`KE*td1mfXwlc_czFo6o}9AhB`{YY%L?RF0~0q2BdR80B!J);bu#2rXsxOv zT9rgn9(g=JL0qd3O*U%=qICtGbYU@L_v>P~qT~F<>53Wc!)hwsg*x04%%GV^Dq)|X zR-=@`Hwsw=n=fHGE%XoR(HY*%^-)^)8}XXsmLGMS`! zDc)q7pMbP2wTNGkw7?|E@L`GPW`k)}zd>g%G8k=oU11@der(90`h>xXRON;a_#4KX ztMI+9e7VVFx0_5WDs4&HRhCgbA8I@ttP5-a9@{$tt6oGc}PFec$n zp`T9X5WtN5SdkR5T<|y^zQ-m7zb#u$KBtM#$Jsm2VvuW0*piR`{2-lBP$PShJNRu# zUxK)OD4DZyl*+MVih&%)rG+V8!WNj7fi4S)#Wo$f0U7d!JQbHWP+iv zb`UhA$t)%7QUgXsS8Yzn8L*l!%d!|u=JQiX&(?_!y4cC0Z)L13P%I)^QnobclVF|$ z66JD{DVMro>6q#wsnno|n%2cH`+E))!3g_eSK5&MA?m7~G{o)rUz}(Dp_xEy+5Nyw znhETkU>;P9Lui4IJr}V?h-#D?F-XKoJckz|_e0*>E z-aM;$yOm6PzbAgTQ$(8W>hDaq-=ZuB1TQMiXcnbJM+l~IU)ZP40K){MUDU`fIs*{! z2aPneUHpCMZVN%9)EGT1FQUI^*sVhFE4XOucA#tl0ob+D>GaqI((9Y_gGCUjiyDjS ztIAPAzOSmpWKJO>hTxPKOfrrm%{@sF;oU2unq&iSNW#rnfPK#@Rh4-?GM`;tKVZ=% z7sG3@X?<7Us`AoOzaQBH5-SLjXHf@c-2t!sn%U*P@=Tq%w6>`=*{aknsjHk*Qq^Bk z(BR3mr``eoFM736?W-GJl^;NR7l*zAs_GD}Cj*Kd3F>z}h=v|pbCCFDiTbLl-dhL* zb<5D>R-Fp?jgI=_LZ3S)ON_J$Bdvu(k1%5Z{v_%jbrI4WnVboXL>wYA+ku=c1_n2I zailN&%R5evA>rP9dDm%f8~FR2_GInY>wrIJyvnCxn*n-6)mo>W55~m-XtLrmQWEi= zwT8B2oq3vc0Gz-iRZjnNP>Q#hTVYBXFFCU=i2j4WpM0Ortk{(Ml9TU~6zt&LN9t~B z2fIVG12$D+$rGNe>PClvTB@0rznGe*RTWh_`qqkdcA(@GBS>bQ3cvV{LV1 zCnt)@(o+R7q+Ob}s-Uxz5j@G&78tW!t+!fpv^C7G&>A+bE;k0t`Bn?{Fddx3PXy-> zAHYTrI0vlpoAdp!afA*?Fu>ZzY2*!4B}7}x<6oGov4VGt;pVAKe{4y63&0|c)m^X5()AW zCcrBsl*4|?J_G+w5&v;VUHBtICk*t6FG*ldx5ukjQbaevnSdC20M{wvVpCsVM`}h_ zS4QePC+*z1F*z|s{?TrrWPyy7YYq2=Xg7=XTlm-e?s>6vedTx)X z10ARW&B!DF7{LX3GDYzneV4vNrQh={Dt+V54^UcmXgMF1P1se1-0l;a%478e{@z7} zE^sn>u%_5R1!W?}l!lC$Q=C*Z6~x{yfgc5>LYha~tQPk^7;~p*8SNH}-ISGzHRSgL`Q@qV-i#O>L>Z?}nY$J~xD=%9zv8AwZ%f!-B zjsO%;f1(fR=)=fVAJ7Tp0U}Q$SyJ=%jT5gpNmE86rS>6P?Sm5yo3g|Oreaz&7f|X` z6{*VWsGH~~h%bRg)$aMZ8R0&p=Z*~`*&((_r}{vD$)-prtO?e5vn~;x*wGGUErl&E zT{^KDy;v|wy`X-fY5nL$K6)Yc6tp>54V{E6jS(U)5zs`?3i%b*@p>!~fYnGy2;x+x zw%g}p93LQ{J>?Yoec(1YX>6mbT*dbJzX^;51ZRYnvwubERH19NfG)xiQ74nNI+3$N zt5XcZRAeKp?SfCqpQ?_Kgz7{!vO!d8Q$D{yt+NsRtVf+$UxqbVEHl~XSL-B-FF1Mv zB7!Txl*UsWTwPqedOkLeO$~v}%s_()9MEmcU%LD5gUeAfgq?xAufFE)0Z2aRJH|N; z^(RN_KL$pjet&XwpVd9|Fc^e)*8QltzAZDetsXU-=Zn^$>!Rj+uD&{4^YVjt-~G~Z zNaQ}A$9^h(0hzH6%Zu1wi`w#ykPn6ppIc zsg1mbo-o@yI(m{wae!ELLQkvZz!nuft(Gu)B5@UG1*pv!sV#z?nkSMv&!o%(Vyd+r z1u<(dSErsTa8eKh)OG}7a_|C|@D|jT71cLYjGcli4JAcw$3V$f1QH-Pei$)qcJr1P zl)U<$FiN7Qd8pePsXKy`EE=LUbe!tx%;;D>13IF^GovHv(|w_zvY+zXRD6uF7s$l3 zr^GX|YME}I@V~+1E~HWWA+%;w^7>IY5{=V}a3ga8IALyt>jWnvcoK{u%H;q0x@Ge7 z2{MA)XDIWwuU)3_@(lherp#VmD?Q3D_>#WEQ7E?WW6^!Doz{1h$v^+PWk&jbWSQUi z+GU3O9$lsc>#i{=4<20Uh)LoPcuJglWZr>BkW|0WX5j>piR21CoL!h*po3MN7yMOT zjo21c7d&CiDVQmU6vUCJN2(RzUV@#ST1#OjRgfe?<+hYV=x zGHNoaiwe-=v{I6aYBgR_V;Zq{BK&7aL{b$*lmSKMv*=Mu5;|q@bVd4LwoxDAjQ@zf zBYGNV9788;anuQiHKr5OZfjiz&R{;cIv>!$V=~C76_`$QLDU__Rx}d@B!C=a9%dZu zqYW*J#29jQ484I|Bh7YnokA)hK9z<{(`JIOPahY|_RQmQv@sw_7Ft3+3N4|7<+7|m z`V2sq@5_gk9vO;6s|iVZjlB_89BOji-sxhVrbtwbknB_;Ph6r6)lh+tL5ig|KtBvv z$Er_o4r$gGlC?P_V^5?<$KlAVrH?;#D%t38!kjGR;C)KYLR~+;3GAV6pICFkw*YV3>-vH zJVv{mO-RL3K+rqrk4s!RKr#aXe6;=qKH*_X;r9~Q7m%OmF%XUj-%)5Hw^^Q!lccz( zEl37rQf|0G!EV@RGu)f7JQn9nONe_EFZ!*Z8he#EtKV!n%58$3R`jM(>kYib-M~RX z`;O9=Fx5j}W}3}8DfoXJ4Q1c13{d+;WMf)F(OGtCZJ*IVQ>bAp~ z77vOJsKKnj{*Pt_UY2312eP9Aqw1kgvp~@sjxh@}4)xK7m0%y^2g^dOUJRa~wnx@m zO7$LN#AX_nqYVOTt>-rZM@Pvp5SQlwQHpF-kceg)JXt%?e5j71G86%44hi&tg0Z63fqrx8`Fwbu{7b}Y1 zy}Gdv%ZJ?8SkdX!D@w81?w^PJ0RB~0OONG@W%>Eb&akwQkkxEz?9Mb>&DMppM?9X9 z*@fk}HfQ!U8oQwpkg)&SD=Emp)r38d%LWc4!?r6SHBmCKJdatAyfw9zl5CXwGt|3$ z>aGrVC)5v8U_ya#T6k|IEa+%SlNjqVU}M*XCm1dx%+j%?O7`38PLR6nb;*cRp3>ah zJkZ?V+1^lJQ&m=)nVyp5beN%GBh6Et_zC;ZfGL6=B!%{UMKEUAF9MT901vE`@Ux*G zaixk!5sUvmqp>J2uL$oO&5EI@zO$pgh^~+yt~f8R7_6hwY%~|uc6Ha{zR~<)!0*TZ zZ9ZR{e+~XN7S+HUsSvs3%ur|-=jY=SD#}>c(9u~}WKhf~LAyUE@+B?^^9w>ZOS5Db z>t%z1zPxO}5V1WSfGIA+b61D)5jLI({k{VeLcj&h9ZdI0b0=Vm3z+I<-L=(aCEi?* z@ORJwtipk8Q<9TaOHV%{9T2}11!vKj(P=v&83sGVE(`eLskZLbHP~}1PcWLthR5a= z%$YN^xO5Y=M^N?#7MI~sr72D_%xmo&@eTEjttj7iBBT$1S+}8P7*W*|3tO6N+{Lhz zt?a8GSYz%YpzAi(5BL!mQYorOB#UBqa%y=`{n!a6v16qA3f+&Ddyp*&EW}ov4LqR1 z2w>BlW#=|-bC$jfPl4ij;G6)qv~gN;TG5*Gsj`fXD#K6_$k04WoykgG3#asM|Q!hQV37b#543yyE}FOJt)l&aUP=BlMl z=Rp=nJP8C-fU0B5c}+{e5Lpykp#C0lrZyf2GfP^*s9$kT;tft zLXmE+zRbIu=5zPRr0pG{IH|7T?_gKaVy&DrA!0U_SC)u#Fl%C&3hjTFdNH?)+1$V| zQ_Lo_V#1~vv|X}vmX*Wq!pKZU!~sQIP_n*V%gkoWB(qpBsT9Hx8)Y53!Nm*5MrRN9 zbOvT&Dt*2xug`18gd*F6!5Gm8Oy3+M&9&Gao7$G0@(a%mTS}q;v5}~1REc~^Mk(p-eNW))-AWeb{%b8**VO-~gkXHj-_O&!R&)m$*I zu6(SzHcxy6A`l0bYa90SE3nUq=(Moqg&iRcAqEcSY5)SZnkkCrRA=EPQM9$n8u4A3FV`!!t!-wJ0AmXBr>?^KbHafsXb>oopc#(G@3IY1r-syD-NO2Q0RYC#+eIzi@94yz5uBx3zW!|3!Qxx%*J8 zp$t|>5zU34j}D%Kl%H3>17JbkKGJGL@s^jt=uDPn7?B8nuewZl5f|inbMY<3qEfI4 z00uJL2@R70_*yKgsAt$4h`c9&ozy9BQbsfcoB0l+5EcFqH*kH;esMZ$_Zv_(0Uyph zQ|N}y5n-z^>uadr!JmJJ7ZF+ne{trS1oM@M7qA{an)BH0KWKAGOd&I;JglVkNYoB% z5$p=X+CWl>%$p@<-T?z(6PFZBCzeG4^MHP{nNM0RSnaV5pAl&ODxcyT`ra~WmpbpXfB?U}vfz-(<0v+J~*V%@!aENMdf@saG_uZZX?n zy1s104A_h}| zBM+&b(~}Z_ZZ>$J9;tN$&lsVfVX~tJI`g9o{E&bK*UPr2=|cVUDa4DEPPZzlirr>O zRjglJj3>XQdd`ue5E`&BXfF)zui)wE$P)MIl$p z031Jctzt`o<_JF`=;cLbd&)%@=@1_9BCTf>^b%1&?#@K0lN6^uvoTY$TT&9_%y+5h zzf7mUoci>}belOPL6`mr!h%?6zsZeWcA}TkATo?#k*>7Tuev7E4Qr*i&6k-FASpih zb6$oGcj(c>yZ4gR1H_|f&AI4z9n(D7LEOf{u0vpkXCwACCBfE7g01r)IUQw+AyL7L ziJIz9c)gz9XP#yI8Fl4nzygakatWmPxd>%)kT{Qn;_~NWà_HBGFfZXsPVt|*= zs9WX-smx#v$Bv~~=E6F=~ldW%V~rE>F8oO~1)AH~57?!C)syyhCCG23W18?V_*jC!`wcBYmh3%d;{E8rXKFy8+k|{;q`0qI@$5HvmRI{k@-drVhzH-n1THkK*w}&kk#o0 zD34uJ{guv*5XV=`N9iW_~XsVUk5- zlVZEms^rjulA~Ck!d;pQ{D{@^BK`^gncDh5aoEB#dTSggB*{a9piS8z3L6}?L1DU; z8{1%71JNw}2G6D6@HIb2Gz3jjY}hSFo5Urcp#@gvf08=ElNcV%AV`9u0(2z;u~AoH zK~`kWA@#h+GsS6Pl0BDLWzSqH`qbV>>GWnH)?0WW$=*@g6+Er?F*?0fU~*<9Sz&ZJ zPqgGd@w>_ZCuyB&OtkAh@w)<{0b$kF%YP!Bfn7XkS0lP*)siMFo3w(OX2s|8tAm3$ zY;;yRy@Kh%n~7I^q2@u&<{!j05{oKzNT z@Dpygfj#WCyrzf>Ew6D@UjPG=M;n6& zS!Sro^%t&C1!3k zHW>#+#Plj}MR5T>P${zl%1nS0f%6ESPp8bWgZhPSAK}$LiWY`T06ASApe_hw&fwKR z_M2$ztRnNz^%S7Uc9UYm?FbE)SRdQW|HA*se9+LC9-38@s>gUbX~c+AQ<*WysKT&H z$UrKG2Nus`IIg$)a;h@3N?cj~)THcWz1|#;zrmYj6s0BQBQjdLU!Pgq{2K z{NM0bPh{O{F4`1Y-I#O|o-ynYtK21LLm7c&vF@E4`vB?qz!xMkXN`vfLC`usJq`pY zBLAT+_@E%f=hIr?1~?$FAc(NlawGW@%h1tP$cg+zz|ch($G-C z@2GDqE^KqV+X^doEnT{6PEYR$od-HQ1_z^Q)=56=nWAYoJ{K$X8cND`qbyf^My< z{^HL2LEFfOe^R;@W`xOr{^Ud>Q4@%ESa?K^k`x3yq~#^IE>|vb7~Zt!y+ea2x)R2))aZtfSaI+R337hteLHdmI<@1=>7lRt+wJe67ys^`B!sRh%#&nH!eG;yFFROF|HzdMA(xoqp^CRdL;-AB3|u%ydz42~z9%YcxfF zSQ!xyJu5VaQ{W#4sv4C-3x1u0bnyMs zE}yTflqZS5{PbJm@#kj0PqL&Q5p@17Juf{C9LWQX7-lQEqz*uW3og6$2xzRE%gv@_ zE}M0v$;VwO<}Nh(q_8Nqa=n6NmwM1-12e%vYAvKPwbP9Qc8F>6GMmw&YGp8r6tBDd znBQ2$xYL)$WzhW@5sWA!P(8yZk|ZQR!HG8x%gtTVmDmkANazk95HVy4dQ*6UpO6qz$~8>*ZAg z^y<_n-sl$)ii0odip1dXS`>FnSMbhQ*G7J0VUE`j4$G11%q|Kp>ulyg>I|B5_MaHmP!ZL zBV3aLXfbhvl`9s55)ChjwglN?k(W8m@y0l0+=M1igPGbd`7%yGjrzTjzLzz~X`J!H z>9BK@j{!f8Teq%SH3dUkFWGwWo?WZXSatfQ4abD1r2hkWa?Jo^-Wg!gHN(CC0Nimi z5`~Cu&w@8 zR4JViRf=MO1|>?BLi?O_$7sHnb~vxyOIj5uPJ}9j_BOA*hJH283%Jh!+sfaQx-?D7 z3F;D>b#!$KS+)ca>IT|ZD2-rE8_~NU@#;9175$`8zzk0W(vRj!IW>k6Q7cx;0_PTy z$4Jfa0Vb=3T((*?y$cvM=v^Xr`P){~yV#*&vBG&Vtlo&#yFA7}0e2v@MqfqmGS%S7 zq{lY+sCt)&rdl&y?-GCx>pkgotnC{H4p^|{7BC$GGi+jJ>?fQA1rRi;&;qR?l?UVz zoS^O|Z)=iB^6;+i9K32i_n2>jpJ{4<&eiY1k54g?v*Xv)?qC+K5b7Q9DWu-PNmK7w zB_Fg2Q1A3TPN%mENa@ovqkhMzpQhh23QflVyBq#@$&eR^*l1wHsp(pT(;b9G3rHFE z$-ujqO@?vu$upbuW|HqslW_Pn8BD`@d5q-^J9rd=OcL7nNU(Jnu6(=_94Cev-kG#KbkU0Scc`kF)=&vRHT z4xVRAOtb~xpzGipw!{&hz!QQWQhg1fi@|#BV{_ROaA5~hfk%mMuE;eN4p|R=hwBk2 z+ytIy;6T<9&n((A@rf?-iFSJe3=x%AL%Z{c5P*F?W{{a-Eu;>n=w)TC%_3ogQ)R44 zLp=^#2Jw21tAQ3lI4~{SB_mw#jvQ@EpGQIG% zmCP4hz5NoqEZZ*I(LUzQlI#j(SAE%K8;gres+N~moPOKYS&dC;mw)rNYfDoL5_<=I ziJ5upmoM9xo*Yk<=+%Pan%q=>eE#-rXKzlct;yQF6Tu@S#C0;7Dx0C~X>0GfsCj_& zEe(jZc@rSCnAJn8xh>$RH^Ba@xv4N0@*C(3HbQ9Dy+TC7lw%VYYu%)QSpFul)foPR z_D6DKUc+XI`Vur;V0Syn7%H)$0ekrE4Q*A(UcrhQnu^IATDUN20Xk`%F?vY75E)8n zFKGwGqgp^k#pz6eY?CK~o>skeLSuhNd0y#QUCq4G;r{*kc5YD$5bC$Ux5kuE6R)%{ z*i|;Gz9_#jr?_rz?vvH^qm4@C!iLs~ysCl1;(?N){?eAw!f&@PFvF_12bQZRcBxw)CY7vp9 zQ69vgA;DlmO>F{&EG8w4>fo%xNLXl&SNB{G*(yfM%SS6jcweYghoK~cArim6VzdHJ z;G_zR3+$jj^+kZ>Vt5>cHX|eTPgn;V!~RwC*kDTr zZ016Qu(4FtRo5ohHVjP^45k(@nALvNC+B6RwzoDFWYejk=+dHA7wn=JbJS5c4Pxy8)yKL`*iC*Fs{4JTXp!JD-FOLFU66 zS2y75?`ogbTw7gUlJ7^LjO^58RAKkqAXSlNrp_N3K`~G<#(SFWB*A^eDuI-m!r>!q zo&|~mQ!n29&E?C#xnhO*9XWq^`23NP3xl8B>LGJCVRwCb{lv#5w8X380j{3W9VW-E_xzJsOFqMjul3M3?BM4t=3hZ~3 z^eW1{5Iue^tcz_FBeKTTxb(T7ao$a%_ zTDx2=uBQ6Bn#z1%)G*qQcNilkFho5FCI!V%Q?1ukQk(@((osk7EHKdLv<~@QZ90o3 z-Dzo?ZB;UNcjowpk3M3Xk;$)JvDUZb)z~&5vWhL?Ot{ynKk=wLgr z{^zLcKXD(CeU`A=STt4Wd{w4^EI?@uQM-UIj6g3^dFP2c=UJ;sV*57zR3jkTZ8#@d zY{sT$s}q3@MZ7*QwvVyZWkjySB#yut4~dAD;^!fH<+t=RIhm|oZELc?yryXz>EWs6 z`}wHAlMGfb<`}#TMNpI0g2g5*zzJAD0yZBOTeBICbP+?qE+W>e_Q=zrK5U^zi{ZYG zyu6P5eDUipEOgVs_xsxN;A`&-uQanTJgi*f)-qC4Fq3;irW|c7gm;BEH4)UZaiXTA=MA;DiF~C z0}tzB((uB-2d(u)8CC#zB8EK3ccy_)1ct;y^N4LTRlix-IYur~`L|&6VX^Kby#O}w zU=I>pNMi!)di>mumejEo0|z`9cQ-^Y$X#YK@}Owx>sU?L48}udFa-Y*%!s-=qBAj;d_S{pAz0p`{)+ikI~VRE#`hMiq>AlX z(YdgN4El*1xP1#cE3qc=n5W{!HE3E2nkMh;{AgB^>dc{cG14hcCZQ zjY(g##;;!41pNzm8yibYT`t7o?`!O7Z!K*oh2-oiaTVu@Og%LUqYszq|%IJCjsHBg~heGslNF9Gq;_+B`lSuaFR-mmCYgSiT3mc znz5`&!H1+xp(l|yow)Q$0jqfgsSy|Iumkc8CSe4%EJj~C#aF5PRPbr67S+_I>RWJC zLsvD@rtm#lOVp>}g^-tOR9cPJyaEC5^$6LLvZb(3}$R57dn-tyNG;2g^37Io)W+MO4q*`Y_! z16lfIa5udZO2M5cr1x>>H^EZYwjCX^A`9Q zn@lHJE$Ep!J`Og3cidIZ;q>p0p_aMsLC(1-CkBYlAIuVqK;O#+yw>>J}qU>0_-Hfsy7G--F zV$~fV&Q7c982GwbU}%$yuUXed{pHL?Q)a+d!d;BwRcO`YXjLl931lXMN(D|y1@@dfE!y_Dy=Tj6C zVIN_}heb&k-f)?GVv%mB+FMQ0dI0*G)B;(T9F0_Y4A2<-qERttnH6jZri+Wl4(Z*l zT5<@<^!YOBT-(JY(6c|H=H1M~QiOLL@bD&zjhAp0YeYfet6#-2|Cohzh8k>q98$91lPcSFKv`lZZds}rUzkvo7~x`R!ecrl%_PA6}|L|{^N9O=jOdJz&uj6BoR zbW(vi@Gp|jIp%A$kA$U3yhh&RR2UQ#41x7UO6Lry#>G=Y9m@0qA7J&Zm?}vKquIt* zB{D5|3u(3?G?Dy4!nZ&o(uvX*fVf>H(zX$VKU1TN)9H1I&NydEiqn#%H|t?d<7qCi zrMQdAOWw}1>t#FKUy|Y-31)*+r`J11MoneNK!Q;WuccYcjsBu(;jGK#%8iVzXi^r- zsIC!cO$~}x%n7qo!ZT`yXMcZxn_zYAuKau#WHOuLe0z3VJGA)l5-f7N3&aIQrD7me zXUZ9fO7$c51VZp3a}UoK&Lh^6j$^Ta9LdvX!@}cj(3Tp( ztrQ~M_pxbP3QMl?R8zPPr$}8*7Wf7M8Gd* zUGIoe6U3#d%X*qL8d=sYCRI%U;@=@{;)7pb<^w>6!BF60EU!5XntYrhAK~9>b{{0Z z>2g9$H2ScHSwn|uwNq`g2>)kEtEVD(YnW{nnEhpvBeIXgNRB^0rsPN?ILdd4vcH~G zH$_B_&Lwt4#JH~_)Tvm%jt_hl*(-KNX-sDjy*O(FW`720D2tT~cs*vUUX7M(WQ@@1 z==A)O8$Z?aTK|VmUTVtX7HYkzCtpv0U5inYcF0|7<=R@~)R%sZzLO za&F61&W%hn$i(^RoLl6@09;+Q%wU3J1CKYwvMs}+FY8CNMcm6^Q%NkFMz#RVU&^+5 z{*oGRc1F0i5}z|QUP`vATwAuuT`Wlwb*$nDteh&CPbVUp(l)ZdrvU^tYr4qQ4dI;Yigj(2MgVgAdbH?1 zw8$gYAqY@sLPBCgSow+{z}8+VDRk(6Q}QH= zQc+@B$#Q6a@UQH84YtZyub9skVJfRmrc9Gb2D3;@K^FC4Q`xULtDxZ1NOAEypCD&Xl+Mf1>Al0Eb$#Odh}^A+ZG zB}&es*@ThURQthaaLLXFzDmiltF0~4=IJE^%1r{w)7YrG%2=^_q@ha2Pa<1DCXeAH zGlbuVU=QouRBFz-Gd!B0O?>D~QV<(}bS8uns@Is7PaFdN)GqL5G-wFk%Sg&8P-M2i zj`?&wUquuiyj&U*TH!R-`vXl`qlWK_gK;R-6!Jm|oS6pw$8^u@eyRJN?tR@q zu;g#hf7g&~a2rYujfQT+Wri#f#5 z+veK7X?wu-gzcyHT6?>Fc3frLthoNTU2(sPI~4bUBi~W&2sj2E3mmH)Cp&gHUUU4x z@jvl}@t4Nm5Pw(vf%wOrCTF*Eu5+n#o%3|(qt2f=f8qRX!jgm&6E-KDop5o&-h|r| zeTn6XO^Lrtd_U>Lq=QMXCH+46$>f)l-%Od8@&Dl?8znlH{98*qWjz4Ex&L^%R*Mw`m>vY#1*9WeDXb*ZPcsB}^3+R{5pKQHSpn_ITB?2Yo#^1bDElz+E8SfNx5 zz!-5+#eEfjs`#kl?-jwy?#j89zps3+s;Hon=kyy@NMuIBHxSXx%J+&e32*66IeXN6kV zwjOAGxb?X}W*|S%5ae+x)h*ZCl$eYP+%Rt+o%^K5hHF{mk~? zcQkga>o~pRsm}Dyt)1s~UfKD1*GXLmx*qR(q1)M=-96cTp!>6)zMkDZ7xi4#^L%eY zZ%*$uy*Kr~(^t^9sqfkT%>JeQ_YCL;mJR%9;Q7JY!S4({IQXN%=Z8v$4$PKkZ=3zr z@WAls@V?HzzRX=DGU0<8$}V{d9EY=xw8)%^R3^|GXd0`_a6EWA3rivBt6P zvHfEYk3Bc`%Glduf1ckle|Y|)`D^E&HvjwcpPK)|{8z@^Wi6V&=&nTv7uyyuTzu=|Lra>MoVDb|rLLtTOYfiL zlg>%^Wb@?MGHtxxyx5A zKYjUy%Wqu1fBEApEGv3e+_d70mHjIpUX`?Jc-5n;Q&;;}SFdhgJ+gY~>J6*6ufA~g zb*t}M{ov|nR{wnUq1FGhI=IHRCUZ^En#MI(u6b##Z|!Ys|9rwlC;az`t`pBY@#PbL zvo3AjDeHc@?)U2l*DqSXcl}-KA6)DEnuIO)`rZaCR~^7$vfc=D&GG@Y{glxt4;@hP93I)3V-r+#``>1mrz zyYI9oPJ3x{@#af6KfC$gTk5x*zUAC4S8usv%YiL#o~}E+6#p$aeb4Fp&#;}b`HcI| zczc3gMwb+27_ z=(@jLpL+eG>(9OZzU$wG6lzz3mu#^V5K> zjyPVx{TEm!js-jp*QcmwTw8ct=o1{D;d(C4@8byZZ05u{C~XBlO~-tELr297M+39U zX}JH;QI0#&o?{)4G7F?}3%w)nWv$X~lye>q`sQ++qmK=&NSf(rV`+$$l`YYkj>p;D z<3289xiWI)#U9cbDCazubHp*96<{o;4nOlFF4C7C@^+R-hcuTB;{ECwkGZT;s$ms) zrxHh%REG1H9p$VFQS+SADBh1fCQ;W?z$VV@V_3g`3~O$2K)3#J=npvlhT|>%0X++S zifs;?xc7PJcf5jGc}3_`Fo1*NknrtaQ4S8CBhIC~5ZCc6Ro)6Ndhs!iX7u-1$5LiT zJMHw2d=IM;V>F6-F$NrEYezNC`TTQMG}9pspe-Jj0B_6$ehEwAYt(CS_ua>RGHE@-U8bFdsQ$PMmxLtA;nfM>#cbJXz^ONqv9 z`7OZ6Ivjt*JKJ zFgM0Uk=CG`|IylfGv2)ff2ZJG)GH2Z+i5Hbc$6gFhW1>A<5I-HMm?gh)W$IFBpP=s z=s@fkP+7G1MJ}M;OBt9z>rf0kh#F3D+$Z7aLkbVlE39H}3Kivllh z#CU&%_Ru;8dd6SIE?Ga|I|sRb5vNotVLrg`Z0MS2^NVqR1Dg$x)jsy$c(0bVVIF2n z7W8#3&Kp@R`xNh8$4UU-y;1<@7QEMhdmm$L6L6f2_YfmgdKPA4S7ZF>9DPvT;UlIE zTo?KXZO9b$|2y>AwE8!)x=6jV)H-LXkNP2PW3Bw#fQw%AZ$9R69mZyam4dER0FJVx z?SRE$jKxOmn|*@p^JB<6KE^Wme3p!@(QH1C<#I1#rY&L~cL2>}QR9C&Gt@5c%kzSc_I-|KM*p-e&>u zCzb5qm7bQ9Cd$BPe$S zI*su2Jce_gj-!?1jH4Cz>**c74YAsZk1GYN4ZsR`E!Oxy zp{(0k0^qa&G%8MRL_K$+j4+?E8vUleZUTN?gl8pe7LIm_-gC1Sw5t>ODt(ALID(@c zupaz6#N1oPP-eIEy`L8UrYBsZ~IIpIq? z+k?OFW9@P^#)btSg4Gj!brdu=%2bRL2eNiZG9^|+pk z^UF96;(&=!@G9+i7SHJ0yK#IM*GL(yeM>=eXR{7|HvHP}$GH&)oi7)>N{4v%jQTf6 zlwe+r>nrh$LEFC`I|L&*-;Dpx#d&XNf9T!NRnSD98@xPt6XSr7yF&)-ZtMxBhstzt z$y6Ek@GmeyCzYZ+J!bu4;4;H#iZdd7RdV=rP)MEdKgAeOWd(6#Y+!sgdy28c18N=e z1H8&bnRM|_q8#dsxfto~BplH8A>x;+PfBDuBi(6o4X<%pZ<@{`ZHDW1c zNOjWVh~o1b*n^m4tDG;_=+bo_T_eI_PwH0c*6X(DZqa>H_Z{5>&@nxudr9{Ov`l}| z{Y#&v_vwGAe_a2h{u%vy`cJdZ%l?}y(UtDXcDY@CSGlXv)#*Cfwas;w>mt|Xu6tek zUH7@Z?|RtvL~e4fJGV4wd5MNT06v>JR82M$4bpzoP#ndsp@+t^`-AE7Ro?EpHGl z-|X7y+U2@zhL(@!F49^aKdt4f&~kpb@Nhj^9yr`_xEn3!A;2~VjEa9k)&ry`X@BDs z+84Tvu`e)lUo=hKJ=)b5WsH6PgD(mXBb=D}@AtqV#(tmj`*puBdFL! zKy-oc8y+-#&+vfZfZ=`(cE68;U*QX+Hvv?3Ig#p-ljT%s9}DGD@fUvOWjHRDpOT-E zpOasd|0sVXe=PqUGojNN07))gDQ2S|c!7id=>~Npx`n#MxLT}RCT<<~kFGZQRb6rP zU)r@S&5}B$fV5TGCw&u4K^ zu{+sa?AvTVaPm?11bdb}#}2aButL4be#`#E-ov{7cXpV44#&>{X}>fmT_J6OCiisd zEa?nsxAa}#sA2XSDq`k)uv;VMP*niqz+jjP3`;oohK5Bc~MYgTUvNg7|?PN=B z1t)97&=2Hz>D2sOYWzvw3Eqjc1GMJ!m0i5!kb;m7(IgK>ruaE~J;r%sylcE`y=g2f zTkZYAyUqJK`sX{m>FA{I^&ay6?ES@i(3|Bw=_S0G-hJM?-a>D__kp*_TVU_-KK8cJ z6L0ahdf$6X=%X{eJ84sHXLkLUUV(QHW%_qsGfz&;`z?L#AH5dd{a%sxSFe@#UugIL zn;Gzjz1H3X-l^WB^tFHY+Ix?Ar+NRwZmNHJ#oi2Br`gD7&mgZp<#qR-r4N0Aw(4nW z{0sDzFM4uj^($U)+QGBESG_*oYwV4Gou2tEub=le62rf|dEPnv8~8%+BV^I{Ii2)F z_FpgdF7v+NuK>%u%e|%ERo<6gwYSO}=B@Ou_Ew-_U+;~iueuJoa02q{SZ}j837KO& zGV?@atEu$iKk*KDH+%ody!y|W^1OxFlr_u^{o1?8`@|bge?E#e28-<{_G7!mF0)JR za{IZRZJ)C**q7}q_C@=weTEkHdH%oG#IVoRI3d&2i><)6$$`PBrb#X{LiIHa{{YrW5D-oz7wHHD;6f>~H3L^N8th{%(G39yJ5Z|CkHRV`iYa(9AG{%s59c-R3bIoh! zV)LZA#5`p#H3>7s%rryIEOVK8+FWj)F;|#p&6Q@hxyn3et~Sq`Vde$;sX1o2dC`n8 zFVXJ5Y|b?g+bwpTU2iwojqLQVWwdt#(%BT&kzMb7zLUU6Z|(89v=pZ9VvJU=76@1ZRV6Fmg#F?49*%mBN3Wa3n;+*e_uMBGaR zbMC+)g>W;yx-gMBaL6!h3dJo`pl$+n8`g3dD>GXrOoyREixS?zAvHsXc1%Qy3#$qf z(RS5v7ONOIBoQkrPsEGLiO0}{8P+ioEiQtu!jUs$!^;cBML2F5a3Ie_Y*^KZM5KKi z94iW^7fvUDnI*AyMDoHR!v?mj9yD}F(a<(S3lqIB8iHF(iJA+)VC1!$&2|2)IbZ+ILK(6&DJtSrsFmk9xyFf!W@}h6>8CN@X>@corw` zR8*C>Z<9*SAnqE{b`J(CNwUjhX6t;xPB$wn)QFUbyMAl)v zC)(l* <|J!MM~Dk`6ql^G$kTNbq$+P+Q4L{9NcYpW6?t1CMua*K&TVPPV>;yj5L zKvDV7M2>t7;wy)*j)^?Tsj39r{Iwnk}bXk1K>VygxZN#qrk7gi;*D14bk6u9!jVFdqdqeg~Kth{{su$cw% z4vAlOXn7LJ)P%S-?$9yOw0NeGcQevi-pz|=M&x~5@yw{ak1w7XlXr{anQ?iyES{Mr z?-Pn=rpvok@yrZ)pH@sN1nHiL4KtD=qgVnI8x<`?;h)2Yr z7Pwc&BBAe^`$^3w zEzg}kyCo$0 zAEmHUKr0c&6PSgGVbW;yzHrFXwlGrI@@ac=q{Yy3X-Ly)lL?oQi~3T9$=3Syk;cPx z2>K0MF>GW}B2rO3lD5oNRJQ~kHk1b7U_aHcMe|5djX4ax!~+(NJ`fRP39`uNX40C0%CWnL|6x>|~lyLC>z|I;iEqdak|e zxhDOF=^gB&PjRA0hcH6YQ!>Ev;zZ95(@E{Lg)SF7g{}}hg|3t^D?qzS!W7_Y z2~&V!5~cvvg3}jZxZnsdLU05aDL4YuC|~73qm(a!Mk`+ejZwY?8moK>bdB;Q(6!2! zK;x7zfyR@@r>8P-f_^1>;V>}(&jy?%i7se~-h5q0Hwq{?wE-wNlNCoC1ZN7K&qz_7 zs$c5k`T!IkHw2)d-w2&E0+Kfcpdd^OKtcEkxM!y5-K<|q?>_=i(0>|$g8rZQJTsto zO8^SO&jL^oZUy(O6usN@OX=MnfP((>02K5)@Of51?-v0m2zLgcApElU=?u2^IbpTD zLn6H<5otT{#$-3$k+Q^K=|H*~8NNr}s#2 zALB^LbZ2!<{E~QiymO=toA|KGE`Q~?-i>?b_RgFe?~QsQ1G`4$GH6fUY8UY;XSOwW zUWm|t=a89^k(Dz~majSKx3D6x_njkdE@^)5&bnC za^=&pk*rLtg!`kvE=LD&K3Z4wr8XVSTX|&Wf%ok^PM9h1_Xc0+N|+TuH;yjOzg^uq zfhK_PUFUz^K@{eNXgECY8UGR+wtvBAUh_~q_<0=rI*wk`?>e4DYx}Thbff6N<*zFa zHt1jmI@lsUU*_Nl8lW)_j;bCe@EZf3wn%PfSpR8iu* zX-=mOp6P8eXLv7~Gnt1x%Uf%Dp+O&O&Ze%9^R7Xo*oU$*p1GTHG`4-c1IF_vqF1a$ zce@e2B4?X>lT2UJkKCDT&hf58&vzar?L6-rw2N|v#`$O#FCfQ0<*!5oDH}IJ~-VgF_GQ-j5-t0|7pE%O{ ztEpjq^-OBSR@$hG1AVG@i5ZKAcR%{iYrS8Zar{_Lbf*)U3;3y-#5~&1&;^UGbu!x4 zsmu>tX0A6km>ZeVy&OIBW;4y3V}8O}zc+j9%zv1lqFucOo%L&?TSqs0E81Dn&EA1# zR`j!?g}n={?A=Z)d#`G1|A033k7#25ga-D%(7yf!&Fg=ob^WV(7=7y_=vp5|&-xg; z)fs45A4j+PBs$du`qWwIQlCMOIvXA8^XO0KpgVmDy{YJGMgRJ`dBePE-ZJydzs%d_ z9rLbv&&)UPn-9zav(S8KJ~AJhPs}2-*nDc1n9t1T<_ojbEHlf^mu7`oX;zu9%xbg7 ztTpS*dj6rbk+YsR^H21xW}De=cJSA@U1qo0WA>V_%|7!D|1bK^>^I+=1I#sg{Gi*~ zh>db4aolp|u+88f;8`}?=Ga`DXY*|%TVNa8Cj48anQhJt-|@BuGn6OTR<^Z0(H7b^ z_9Rc?DfU!*nr+Wnj>Wbkb0R;oCCrVKvO>PAE#u6%?#$ElMEiRNb3bP>D|9xq zLVcL^sbGGnidmq3%;21B&tpEOKXW<*bf)M+JIG#S2iuG7CH7Lw>Lq)bz1&`bKKUx< zkA~T5JKT<7j;6+rvZK*2it`%!2G@KIl&}pJe~cDZvlezaSl)&5YA8m}$vlE+xubRGe9@laLu= zNC>R1WG%phtcJRZd5>O*Vp(3ceaQaRK5YMHA7Pg4QD&bWW6o)Y{U`G+v%Gv}sGbnr zIWt-_m~(lRIhJRbk(tfx)|)nAXEOWsG_xAd$~*@%Kree~$N-Nr<1xp+=>448j+edr zSUr}@jL~-Ho(q{HYs1{sADA8b9Wy@F%$42iJz!sD#_3PY1l@1vqH>>SU$d{{g8RGkC}y8 z#9Yj$%*1@gEX)_o#w=q#=1aT6uC%M{S9Y~sW7h_=2h8An!7R{n=CbZ)W~hRhq0gBS zTIPLbH`+~hGqVg^?KZpJ?yx)UF1y?Av3u>;{6qK~`)zc<#r^xo`wXwGxxOZ?&-m&Q zwG$_#^_e(&;)I%O)B03ZkC-~82CdrI+7VO7j~Z8VV`jz3iBqaajHsC~C0;qA8f;#* z6RW4htCU8(N-Z<1QfO&aj%rmvHLG78wd{T)CXOFp9nj0{m+})mXLxmO);V>E_T2O0 z=LSrk>&TrOkc*!?W$d_-HCgA?A!nZ-q8jh7aftUprPhmFlOq6(bct6$B(O?IwkFbfQPILCXcJ0JSHG8$h`tOgFY7R$pI}HMGt#K2)vZm#MeR%TkFSuMQHr+67kaN<(!`5Wt8!8kr;N ze2rB8<2C9zUZY=`H7WPB8b_|i6@$@rWU@zxQX_M8%1?BR6oWB!i1D#X-HyE`ZLA|V z))j-Xng~Jib?KgUO`WIgYeUqtuN_@mQ!`;)^@NdQN5sczjN;>hJR29ni;jbf_=F(F z6RIaooIIs=;-oP(@d*L$gb;3|hD?|knQ zztr(r>i8^m{FFNWN*!ONNxqWwUHGMrzf#9nNfIx~cQXFTa2&rSj(&*?uf&B@;^>qn z`E%iwIR3jO-;REF_ubvm@9DmKCcj-cJstg?&Rr&=U(B`yTZkz(%Dx!zABynO6R}Q@lol*sd9K#j{ho$U*+(t99~~Xx39zR z>+t(J{JsHxS?7Sivd%7?F3w*U$7dJkzl$puWyx}!ba!;SxO^;g{>zf?F1#)-AGt=JLCXOQ*6VA1-~mB)^k*E`D8HzIS!ub#>u&b^LZs^6T)sIzGEPKD#=8x;p;4 zI=;Fl`AX7v;dgcXb#;7|CGnDcC*z+C$MIX{=$EaEM z-F@>%cIhy?_DtqO^4rnpjM%{4`RnQU=;P9-PvEaCS)cnjygn}ca)(#$=#@Kqm2Y`);Sqpmk)g$ex>`a48F@;y(n|_ugvjZ=IUXYi$|IBSC;hW>SvjYUzw|?WiFm& zm99QjI(}UJEpzcNbM?5)r9)X&P=3p*f_Rp>`d#MIr_9y!GM7$euD+MK^eS`pzRaat zS(S$0w>)Tfc`F~hHJ^BE`ta6r$6M36Z+TGfc`F~hHGg?)y7Sib)@i178kr`%A_z0s60NJ3$Z{81C9*4DQedwo5Oyvbv43?np}%&=iXJ)4@b zqsL4M+vHCeTc43!<#fW-@in!=XO8e$_a$7WzVZSdQ{TDDVdzu%OMT`Dcd4(ufVaBu zfV0$huJV=oly;)Dq=%M2-kR^cHQ#w_zVOz3=dJn9Tl0sv)<52wKfE>nOG~;3<+;SQ z8ztpIJ5f^Z=mq^Sc#d9oN3Xl1*WJu{QHhg zRo5a}rzq%WopaMV=TIqa7QzZyH?BiY!wzZQ!r=3#3^-O`PGvq)lR&z&LXdxQARLkQuK_P$x|3o zO{p2FEOhSNEv-5z2^!BXPT=fP(mg{50t`!rXXsc!Acqq)@?D(p*`*}t47<4KbSdeR zp<|DbkDwdk@Wp_F6Q{d4F}h2avTW(T30;|VAKmpMH^oQrnPMi4S|0u=4S!UGKe~lK z`shb)iq)`N*U(34*jH)5RKQ_rz^=xrv^+?KGA9z3Igz5wH3elsQ&3VC6cXNA2zUo+ zQszXDGS`HZIT52Ne6P==agHp}^K1 z7asaFi}otY+F*X=W-?H6W}26QUoo!(zrk)ggXWJJcr<1U*+lfE-NMWOe)yi_S+r%Z z@SKYd%%J^xA9#UX0Q@EUfefo$H}KqoA3`R~Otg55y+~!>{)4?HW6&FTZO2tlnSi!E zDsvI=7U30zqfF17d+DG;^pSzBkqKFaWo{xK!jG_yJk!g%wx)K1cZohL^*J!G8DCv{ ztv4$49OmF_$6xDB8XtOU$dX1@xsbDFWUex>k!M`Lqi`aSCERp)YLanD#by0xT>j>W z(rag3*Xz2~xJVpwqchUm%A_!wdx>3JR;SPPKHyg;?a}B@Ll3?do$-0-R_{PxIty*z z#z>P$uSoyMw8)*2+3ZEw$u5M}>&x*u&pq`(gU~>p9(ggB|FvwuAkZ_7eXqJH-EjJRj_T z&DUPO_ISAzpuPCnWqbPD@v{d%yYRCkjAd`b?RI~iy#u-r_}lD*?43?G`~9u>JV0ps z!QKwd?az&t=08wg_~VXVd1T70d;*9v^?#Mf>wj<4;G z?)PA917jN)Tf9tM)XF2m;{!rV!iyNJ(s{ubi&78JhMeDH{qVc)qWo)N;1 z`b(i$Mt$DzZ!q8cYr))s>q2Uw^|$knoqz&!8vZUQylp*v8Gk;$x8VDG_~@$PtcSvC zhqW9m_O|<9fVB~lfA(Ip0d#&XaF_?{f+8x1OC3k-wvp+a{iX%ZxjBu;cqMc z4k+eoFqeb54a~)0^5_bcajkMp|%zgzGt97?!r@Vim{N=RRT{V^d4w#4US zu-7>*mxI0Bg~T}+He;k(J!$144chR*@x|0P}rsUve}Cf z(n{P{;l35O1-R`|w+%{dA8y-l+l1REN^PUVUJhRp#=nTc9(CD@%SLe5;PN#ti*VVe zw6@Tq`~D|9R_OOuTI=JaZDI~7K^w~6M1Kdk$9VZms6oeg`JegAkI{?AzYtzy@8Ued z``X_{c{_^B|Bx7M^xyVZ39|pCzlSvcHy3-_{>-`Bfsc>zwb$S7zv%zbf6w1d9r^*6 z|A(XXD!t>AmQhzzz!X;_+HL)N! zdA{6`&m-6w?>OckgSp2(ZpJZ~MGWQ;YYv(}oM^A3*UQIG4=+PzEWMcRWBc%Awvs;P zN_#bRq}q<~qRc+lQ2IvO(LBf4G2o14Uw)jq$ZMF1yO#aNapok)0gq=dam-F+ZqhOj zDIr+)oGgujQ zyz-Z?{N*cumig4a*!Q#jh_~>Xqr7G@S2~g%$D`~hp2BOs@|vx@8s#-xc{R#wKJ%y( zILTs?oy7AIcIY)>e)8|^iGGYz5}Gkb`47$)cp7P{DQupqQbAYN6YzUYa_KYwQ_VH@ zRg-hxiaxRMR>r3s%!nVvr7nCI!!*w6FL3=`ZZ=l0M2Ag`Dc@_OWr z%DX*pI$_RM^LE}xdCT*bU{>dC%-f##ZT@lj6AB9R&&=H@8yl;UKp5y!bYnb9S~DcSkRukq@Y*9;DX@=lL{WBG@M2WVkDqDU7N7e z^<3uT2eI;{7whPTc)eMfbT?y&d$=btPyYftB40++%K~hVGpYWzTQOb-g4GsTA?%{1&!O&8_j6QR4-QnHnZ)F{n z^}h3cWWOCqaJvtZB-c0@^h-NK_H=_SW0?eXb0#%P_Pos|q~~ZWUZ8d0G)MZ6TK^j; z``&#}e}Xi_efhzDCXvnRX#^(Jn&Y zja;;oIt@i^H^JZ6$aG&L)9nQ#DY0*cn*@fvNYJ;WL&iZiLkKCW9!?Lht?lofWCwU{ zIAx@*9ZYL`31$dw@8kGB82co!TZ7#S>=Q%SO&i2+4t5i;3&3s)b~?1vp`8hKq&{z? zpNt2?{P#y5L~6xf1b-3y$)4w@GzTQ@(@D)dQZq(uQo@AF1tYA~ZPwf+;{ zWMsZ6n5mfSF*jgt^8fBl!~6tuGv+@qFCh12`hPH4{(ZJPricHmt@PPPj=9Evz>dSr z@E;_6FyTMMD}76MQay%U{Zb(%qJR>y0Zz7(e;X+gTfmASVeTcDw;@f+SWQL_@4C^z zCStvwd|g4#uOjC^w|_@|m$H`!m32^ANLkrWS=k4#``}f^K{DF=3JPCRGFCz1Gbnrp z1sMZyF?Tac{Eh#-cMs;b zn0qn5!~7oe2mb}m6n??GAM+=^|BU%B%mbLeU>?N$H|8PCUoj73{)Vje2>5@;Jc{`r z%ww2;5Y7zDKQT{`Z%_IwU2bQR+j-=6b8L~_32hx_J!S)DqyL7t39}iq z1+x{i4YM7y1G5ve3$q)u$Dix%MZ*0Wvk&tP=3C5nNFDoe`yO)ujA@2rMqox_MqwuSpV~>7#~4rjgHn^tS}^->b47Aw zDXFrW8g>$;ehsDlO?-VuUhX0)#n=K1M6~56si>o(>1Q zUC3#K9HSIPwar-Se@m#omk*yCUEMvnRoM$q+u>;m{2YKE;bkx3AJFh0V?6o~^cQ*5 zqMg*D9i)>Xycdb_Dq<`xvcx!xa0>`Gop7a}SVxTCqjc;f{H3XOBLY^?n@CDp@b*)) zKLHAQm;KuI@Wl30B*i`O{~alm1vlL>J;3iro6;Yy1~4)oNJ`A0rWo57pVF2~>y!$` zWYJ4>M?x+Kqd)Kf%s|Wx@Feu_G;~AgQDlg_vE$4e)&*KE4gci*I9xn|c@pX3Dc&*; zo{5=-c^dN!=2^^ajI{9RJdqzPa)U)`u&gdbV!*tHc^$I^vy@a?0S9OTSw9^`YG}tv zOmSPuIHU^G-|GOU9pJQ>F%MF^a$HEClAY?WB#s$`8o_rIp9Y^2$0$Cd_>21U=iui>%*&WpFt1|fVqU|% zj#+|P%@`}wOCz;2N$um|$P%A)E2qEJ#VHHUvfzwUJ{Yx)mT?_;*YLhp;~0bE0^%6= z+QW4Ot|M?Af$IodN8maF*Acjuo+;w;IRe)axQ>tuB6URII0DBJIF7(^1dbzc9D(Bq z97o_d0>=?Jj>B;}9H+r?1{|lsv7}|Xl`(05>;_;4Vrocd&X$AQD7hhNEAl{$b*Mof znaT~QMxYvlY7D9|s0O9461WP}pL`yG8Hky|nD24YSb9~-g%lN1KAlzcQXcD1B|SxZ_WC z9^^@X|64G=0pmNdLDJ|?n;z&Kw~-PrsNB0){rJ?GHMEC&Xz{*7zU)DZ+K*PZKkdi> z;DJaMGib94IXfoK%G@aHjx$)F3(rvc9b7)Z`!Bp7B)1;I?NQ!OK>JBAn>@LWm<%9K zZYEEDPkz*pA1%m_ACsd+oZym8yrbR%Xe^|y_z=H~fS0nvLuNp>5#|Bhee9a!7J-9w z4Ov2cl3f+gF_u|@jK2oodkFnIYF#F~8?rcWvODLP_24|gUYudZd1$0;l(>CEE?!BA zyMhvTB_-|}@}M^@1@aUjN;%8Yek_pQme5bE#cee{7mzAnkSbr0Dj(A4>?UQtCfr(N zJ*0lH)_@_}-9RHfLp754B^FOHN=T5`Gg%oui@g*Y^n7XXvz)dVGLQ?80cX8|&kHptt#j z{}B`xA`gB@DhNkXM@1fJ=ls&w5tA2mJj7lUWQcsI6hfsXRPsIgIVd%T%2Mrx0xDUK zN(ZQjRFMJSC&A+vP}rmtPJ}`WDC9W`jiB%)6pZ7eAqs6Ag$+tUV$uoojmEmyVhS%YK>&) zk&GIpl@D44Y1JjY(QFeJv6uXiG;QoSkwa~Qn98_SdgyFiPsCNqR3`KeDCN1D&qC`{ z=ty`sQfi-rdJMbe*evyK1XHxY(#l9F*^2E(@c7Sf=xa0erj-2cf+-`EZushfj|4o< zgxV}PkoGv}N7HbTvAE6Y1iqKkBWE=={9LqWqN(2N&*r(tf5HFO--OxVug81^^osuy z_Zt5jf3v^BU*Nxiu6Czlt@an8wSLS0l<&=8yy&m=58!Jnem9{L-a`BOzrMm$;Bf1~ z1S!MJ{2Xi>e3Rl_@UjN8mitR$aR5!@ZqoJ#T%;cJBD7jZyo6(Ns=-Tirns&pCD)N! zEB(*mWe@4K8BHg=HR$OumS{gx7x}Rl^R>_B4G%h_$CYzN=_L{nO)Ep@iU>hM?6 z@8L1(y96O1dmr%ic5M zf0zqjyVX!%k|@WVI{TO%+DYv6#6{}Y7Rtce{=cY2ullQ)59GpbBQ;B;6ZzUe>D@x9 zb+t)TPI7UH@C zUHdwi;W|8~Pz@;8$B}%gSJ%GMy0(kBZGgXR$5z)!eez4vlXAFTN}#K2o1}&v6f!j* zDbR&}kXz6maY{QJNSpbCX6ou_2C)p+HFDsfTE!pMj#$^Eypvn&Fzb1)B1Y%}TuD4A zZgn9a3Xw)T>go<9WxoF~Gk$OQbNx5{hXQf@=n|2+3)CZ+aW`Jf>S03>n1^R-vb1P~1J?0621}VDFf5-m_Y2@Er_3M5e&&mTi z*YHJI+@?laqFuz*C&i@nNy*q>pGw0Nz?1n-H@C%?l$1@B$X%4k9d$iM{r1^kdoVTW z@q$b9U()Go+K5kie<87lGiII-E?b0yHWb%-<%1MlCFR4>dmIXnlWVW}bI7&FUH`d) zw&^`q2HSc)rcogZ^Vc8;J2LEpz*k z7v4ZRlsWT7v^^V11?}C#`9qrTg~!h+ISZI+cJ&3jZD6}T23~fA(=1h2i!RnE#2? zGJL-g@I%`!?Qlq5qHRddy{0%gJn!MWgw8?feRzL$F3El*Dfu0BU90P(Sx+Q<1TD3c zq553ag>`fgW$|Uf^q+GSk16;3dHCGzzkhI8+WIE@c-oX>xsthzB%Z3v2m5a*?Mau- zj4Rwl{n~|D#=RJsi>gHlNsbujQB>Q;mPI{hgwGZax!ZU zqs1HH_?8;9TUhIo)|Nem~_t8-3{#a6aQsXAk)@ zY?gESM0a$ktFd3heFEp}Y#{A6a?WrQoi9I`^Ps;ajbzrmE2m9({JX)JsMlNP&N&SP zt<{N~29o6!>OA@>x?ZQXuGcw7SL&3>A`ku~AuDw%bfr#_uGHzPD|K2i*WO*%AoW1U z+|%~t41QU=Q>kl6O0BFdDz)XdoLS#WTZLX(^kJ1&R`7IYHCuo0RL(>g;I(HBtZ3N> zGY89Gh?s@#V23ad+cC7tCs$Yb$l262{1HIb`efvHM!MoBUsu^Q z(v>Quy5c8W=kib2bwAlUqkp=t{;AT{KYeudPYYfBa}uW%%wRS^)&QO1*-X(EdYQ|! zK4Rv#JGJ#e`r}#jKWnI&%+}C8ETA3vke=c@+K+828?2^>{+91`$vPgYQO5)#M{Yt6 z`Gyv085BikexG(=0TRJC@Ua28VGC^)asy$1ra0^2LB@+m=*ths0&CND`Tu~{YL!Fx z(tmzTD2t@WBc9uVzQ;|*Z~J8ouc7V_`tZZiJiNV1k3XPCJUqptaEVfoP@Sz?*wN?(MND<++FUvl%+W(**P2i+tNkN%;;v z$5%R@*n)hxiI#jRcH7CbMLbt(zM)S6>pOCdc}T)K#=cKNmK<>YsOEaH&WpFK@{-tO z>Qg^>q@z)!|8Yhn1Ch&Bhs10+SDiG8teWZ{liq)5ekc7O+nW)OFS>w`ytkFIzbZNE zmGOb5Bk4vC)#Fy>eHqoMBmnhaApTG*crwfDllLP5UTfXIsZ|SdegbS<`ct448lD5MVefHYqYIWutj4LIdW50}2`Ke0M^XPe{ zq;93%3|cOg{P|9fk=M{euW&TA9D)5mq>sww&i;UuM&jT`wW@*HMm$t9K6ETW`hM$T zMcnb3(hq5gb-5GJKJv_B9mh0g9P>xyqx-odI+}^;XeO?snLHiMWHOq0 zfzjL?Mlk7&U|wOY^D1|gaOMKP&YhuSnoPztix|Nz=8iG0S%QorW12i2(`4(ICP&9K zO>|7tlrhaZ#%{76xEZ6H4Zt$K$-gq49p5z4@l65a8+QL0Zf54W*-@2l zSgXznh#7EVk@940_#-&XL8g~+Y-b%6cGgj0iH-{S3nO=D9Tj%dQK8XMVN)FyX6mTW z>Zq`VjtV0>Dr}~s!V@($+i7Z^rm5LRQ?rwf3fpKpo~G#-)pR^b)3Ke73Qy5dVMiSm zw$o8znT`ri)f6n#QQ>JiDlF4cVLMI1HkyKEnu6^$1?4|=Ye+8{6{cybm1?Rr(Ns&< zR69XaEkjeSwT=p-Ix5W5QDMH0@3M5iNVbmey6E_>P{((zIPb0(qc$1kwbD^ufsXRx zI?5~5QC>?O<>lxo?>HUhHPSKN$vT=V($QR79nBT#Xs)e}=341!uDOopSeIn4Wj}`O zHHqnHu9c40y6PCMv981J;Mv&2WrVrD%oM(ZZxw9f zupVvUJm5WyfA(qXxSAe&uii3(s&}C!XY_gaOXZBc%*K5N)xD(dDkrVU+60*!c~t!B z>`78m@&oBW?UC3>iFeWQe#HAjQaY3l%<(@Fgq&nDr)azf$S(6G_XY8#2lp z{4x{zwD$En$Xteu+#LSw$)O@R(}D3sjDflUdtARdnFZ&@S}=7QJ@{yq*gz`sQZnxGx13 z`J$QXw+ll0?TAVljaAC9DrID;l#!-VhEXXau2M!5l`oE0`J#D9>)c%Bi{n+k$X5B{ zIF%{#Rhnp}(nM>OCR(X9alA?styGR^u5v^xl_LU;a#NKZTBz*MNM(l{l^xPmcF0xP zAx~w8Y|>?zrr-q5QjMvMP8w2<=26B{E0ky-v}H@So|LM(dbooUyV^Dt+ocIFTArmW*6q@aYuut*vgE|?QN%!ILL&9bh&@i`VZ7t+V-`ft@t2*Wt7wZ? z(c*8SrI+1cq8XHud}umlC@neZ_iuzOQe<3nKS;B5&2dS&bVALJtcb${gD1k{oMc%s zD^l23q{Md}ZzW}V ziJ#DZJ%+6E8Fk=u9aTP09M(&&;|s~o`9O9d2U1rcf2gL)r|0Kv18t|#=O=sW097>n zNeu*THe=ir2?gqn0~bIispSxD<7cdC*v5Jh(FJ}=pD?$M|1cGm7x&e(*^L~T?E6F~ zo{R-`jz3G%0&|8ud#CxgWE=J*v@<8O6Z|y8T2sz+@6Nxn`LiS^MjO)@&ADi)gP5mL z@6sqwQgh{&6JvraXq9ERvh2(gBW-=~6b!)(a0RlQDc{Ppf_|YXgo`3m#8bFv&c84_ zW8c+u#b&e_%PxU&{KY%QS?g1QuQ%6ojsxec1K-41>oLxM`3dmNoUIXaFyPDfDrI)cj9 zu~W8=om%VIsg;hM@^$Q#t7E6*b?nqa$4)JEhK!w)_7e6x$_!ak9ZhA@TaI8pO!mR2 z>zFFo4WF)Ks$friwvMTq>6q#S9aA;aG1Un=rpneCvJ9Oe3wFk5=nPo_=`>jCG-t|x zP9H{ZNvpAkx{DTE2IZ4mDG^~T4Od*15y$l(lj$o$@LUa zXGf~sKw9QRmk9=Q^eT026y0O}OKK`DgXplA6QauV;D4{>T2|Do#GMlAaF&H|(EU+^ zH&F{j8_Zk`E34MP^D?BV1+-kLUWpK0?Ub5Xr}rfknLps981AjqKMh^@^IwO~muR1Z zxGx9u8RiV4l%~d<)PJ|vN>1t5dNQtFJ&_v1 zi2~dK6y+VvSxK!BNNP}EL{BCybf7IGAKfK>n9XzZM95i zYiZ8b(wwKIIjZG2qUAWEZq&N2xZ9 zoOXEO(WjQVw**f{r|NeF{u#GO-jmNur0u0NSs*e1@_K$cd|waRpOV+?!oZ!}%}CJ?yf06A9hGkNj&x{-m*le`su=PWD3z z>p{!&C3}a^LK8!om684Yn;DZv%p&DlSGFnT*qvYm1HVnz@YT>W(l`OZb(UP4y2wsSC;cK1NckL}_R|6;Mg>Pkqv`g#RSpyMo?a z%F;21Nz0X@Ei<$d2N%Y%(mE1;sti$okA(NXb<=hbBHCuqHVZvQYp?2?_EO%*a!LDr zNc*-5*$7(Nw$cwsyQcN`Ur52yJ~1{w+At*TB`XC#`92!IN!;Z7aDJq`>#Vl4p{@QW~?c zeM9iU{g>cq|MfW%<@?;yfBmEW%*wI!U&$~f9!XfkaDAG>E}iPRC)e+|chXJTUgZh@ zNEk>ChQ5?Pe(hvE>Ta`_Kh5!9FIEj3^9Cy}MNcdGuWasIOs49q9 z+&nXn(f_~9zmU1!G4G(uc-OoO{GNFa{^y(dUK9Rs_C7ctm=BP;7MKM{as2HJoR7`N zJU=m?fVs#l@(PgG7Gv|N`4pQaW(gy{&&+4&Cq8GCosT5<1+GhtoOrs-ECXIn`s9;7 z>^SGIXlvnTomod%>&<#xH=2#`v&n3N+GevEPPUjWxNbEf|7|nd@XLSGz}!g+M@iw` zJolJAgt(W~&L_3^@%)A~&(P6ba?V#)^XBRpFH^^OnL4^_rdo<%j2F`pol&hrT=flc z9nod#h_0!Q=ps6zYpNrqwokt#V;kW9JH?j{E$hh?@TO)_rTj~;EcaaQ_qd5)G7NPW zDPQsdeW`wbf*!{8w9*@ednD}{Lp`C;kx@)C+*CXbIx_i7U;R@u`?*=Bk?0^of7qk$ z=V|%pEE3xTU7DPcnbdB`3ii0_H8Ql!Th+H2)nWwaA_iKFXlUI6=ai(@EigmPY28qT zH#tkv(2C^}Vh(MOoEMp)?ULAuO}0Ko+bOM8U^012Yb95hLVf=-lIH9a#T0)Q?LRe* zQDb{T5lBmt%D^JGON|j7tmu<6wav5I<{54CBHG$TwQY-N3uLtgGTH(~wC#y%dn5h} zmA=e<$(|7jNqPv$7m;2FMb0b78l9AeWHcnJbdA!r_0n8U^9))HY3*gS&nXdU)3nWh z1)Y#ZOO|cWBdFdPjWXl@h>rDhbd;Z~qkPdmpGFHQqx=H?E!u_lRz~(s%-QB__C!>e zDq6zx_ycGQbAh?oYt3IihkNbJNdDc~Sv7TC823-*gb&dQpRFVN-e~G>^~!Z*Ut#V+ z?_0^gH1GGS_?zaRy}tZU^Fgm4r-wi4oyY$(pXC3c3G*VSA)e;hru2DDKgX=Vti^1` z>~v-yZ`_*^+otHq)3d!uKJ#kLXfd1RW13-3z?_6R)tOGb(P%e29n%|s%=V4C8C;Bl)epSbkf+1N^J9kIQbIwZ6#%$vf6M);0-8uLDl*07dLqz_o^ljC_E_yUmw8YC;D#SGr9`+p(GXHn-2ru8nS;h`grmydS?LVOv#y+ zQ<`%}?o~N=We*_iGm{w5yt`pIdsyr^af!8$l|+Bf8$UU-F)s!9*~_z6XFuck2af(Z zfWu)4=3(RF_&k^&e9Q`Ql!BA|M4wlxuSDM@9w8pWVF{eX59f=((S-r^a9*h2rGdSs zc_<&FTLXK=*&VGqKC6dVhO>*xqxJ^OIlrc$cO1NGAL z;efiP+moS?DF4YjHYW)|e{LvE!twejgtH_BFAu@1LunOGhy4K#J;Ki-H}K5TXL;l{ z;EDXL-k2V0bG<%0s?DF|>D{R~#cETgHv4I(jp@!_H)F1nUV{HIKL+M(#o4OQ0qUzf zuu-^FF^hu`Bb;+>CMrBgpB>evqr$@@_u$$|;ZFP=+nC-O?tc-Q;eWP-7->#_Ys{Yn z2MI#>?_-z3!!miAR+hhQm@Zb%INGH){q)&LY|I$7zfp0F!XKC@_AxXv%)cm3OrIyX zr%?N~;%l#HjHAyVKnO)#TL(|2(^`EsV#S0pjnuxch8`2x+r=6X2nde%McPsH)45M!cVr*1l}`44R>Ew%1pq068k|f(De@&vS#6DtgfM#&AlHp1v3qE3+4{YUC!Lg zTihRH(&2gH{iqjBf0XY>Ff%Zm7nRHTZRp=^E)t8Hw|O(N%l!nyEK1HR_fj+|0tz~Qvou)tE2QF(d%>C%dPOu zA^6r1d}j#0I|Tne1phe%KNNyzIrtUAcs>Nb>ENZ2XkNSftbLzhv2Y%L+~@;KI!NP z{BQ_fgQfM#s@l_yW;o8FHxHZ;{sn1 zf`^CTF(G(D2%Zvxr-k5KLhv0S_fp4@0H&=UpncVEw3i(anJhLA9thmr!M)V}XY!QZ z&JNYyZb0NRY(7>BAFF*6#s9I|+#SHdQ(VoD6@Q@GbW)s&0j%M6a|jwaF7+$J_1eeLI*>E|GmQx`$%Yg!I4;;p|11f zX^vM{{xL7G_VKM0en4F>51wjsxyI{qr7%csey6U3l*2&|mKe2E_&=SE#NtZDzfvhY z7}yJJhiOa)1vEAE-zer3#p$BYe(I}>+TW-)-Gisv2l7W7wYgex9tvRP>S_lISEnj` zm$MPBu8v49U#*;6ubf;hoUp=DQsW+deyI5OxTny$N5dVeHWi94ql0J(S=OjWz{^1sxB%8AfVqPyJT7&pO^2c1{kJphxvh;su%~c9H4m|Y6 zMrN~4@ofAa%s5Of=0?mzGe4VkhPUv?`BaW~jZKODJdhMp%a{_~t;ubRg8O=D(2w4#<=L zAGP7xTy5s?>|yV<_wygHM`8u+cuCmV(NRDz5$m_@2SA_L&+Q7k7HG5GY4?dMe;})k z-WdI9tRT`Xazf;!XbG;RXta8XYvj~Or$|?&Qfbe#1J!O&WJu(y$VgnTiA;)IAGsOm zR{n2xx8hA;#n}~#_xs47BM(I$l`vSJJx1*wkIafZuh1)zHzV&lA5-i!wObfj99gQ+ zs>u4t*2r#nxkdh^rgq=5NF**$G&@=lJx(F{ms)$_Iod6HX0$wdPIN$YaP+e1Fm}4(V^5b< zo>TVG@5obS|86SRPZk@>mei^#IvVJzu3go2n%Ykb?A7np>Uy=h?o+?}6lb5}v{jq! z-ZVmKt2oE2eZJZ+P`~+Vzfo=OR~vrCLg>dS<}kINqxQ|zzF6(c#GX~6GWsb~`(G+% z6S488tIf;$q~>8$uJ#|O-%9mcp?)hB=MKebtvJ6>n^W|;!eb@5IYBW?)TW<2*)u3K zcd30u?E@ZIt&9C9N@s&&_R_G*I3w7Y&Wf3#&-WDbF~xjWG0#xUvy|o;YST(>`g-5s zx0Tw+9tG)Hckyhhbo6P`mD;a3q1c#o#k^iIPgH6rs?FaOXN%etso%5Iexzb9R{Lw! zK24td!BAp)ow`m^*K5?Zi9V+(wV2p@KT(?}dB$mblWp;-KqcP2JhK`9Euh6+VOQE! z_A9&EuCZ(Rm!xQut+>&0d#qaW7}I&|d+<2d#^Wp>kI|dQ7%i|9`+@HJ3R=PQfsHS= zfv%ck@D+vyq05>fffVK`yED+8`y>3e^bKN5>WSwNa9z*_pnW=k1B&NcH z@G~4U1~b8#DZIt~7L1gkyD;}+?#D1}o%Pv`XH&13l$FtPFH*CT)E!7{ zt{^63h{Y7Rp9c4Lz&SZZn2ht`ZXwU1GV=FN)aPmXyvA-)oH;yC7af7$UgRZT_>qvYZ_s`hRGN{y&s+@o|-NN@R^- zoLnkkeOGIG>5h7WZ_>@6Imq!Eqc1oS4L~RQfA-u|^ch^}b^7rI{R_Qw23_#uLdi9y zB3FG!3F*2wX%%kq^xiC?oCIqtjVW^$|ZY zv=xoK=IA4e&_e`i+_SoR+!Qn9$WQqbvl;epo+HLjGNVQu@i}tb*wJR(k)NaZ;j^hd z@)I)E=AM7^oH$~fxo@02AJFH+6Kh9KFpnMiIeF^v$tLmdo|7h<*^{Rp=}Bf&VYR#% zaynU~4f%qygglk`uwWiccJRpjegS2oiDGJtsii6S-)qoT$a(F|XFyYS1IUb4E6&E+ zYi==5nosO;+@0*;=&b1c==xYZc5>_-bOHCq=EPRVo5lOa?~Kn+D^HuA_IP?p`c>%< zIL^}H@-j*fe=0Cp-f(?>WjnH0Z7{plE@9>Ua65w4^AlxHnyve5>qGXh_F?uSy`eb&yl&)Mhg3wDlu5sC0+`-**)cK0=CO6+NWVk4Rv(W|Di%3z`k| z4;vNQ>>z92W(7si#*^aF$LU>)Y+KvTo@`ICr`pqOd)vVl+Y9X=+6^f=nbc{Cr-f!G zd0wl(XWsLD^s>MT1@!IlP)bui&n({MB?0r zc%Ey|)9{_vz73Z75V(o z+qR`gZVPv^#+j62165Y!`9p8nSOrFAQVMK)de$b7rxMxHzsehY? z@cj^ON#D1E)1&^)ET_1pM_Pn$GZLR8Lq5-8w){Z&Hs`3nG-QL+ZHnJqn4CU0*axgrv%^Wm+apT948^Ck8%`_tg|-Ugd-m)c6n<1ak28bxkk!HwEM za(hz09|&RIi3{f$*j}m|U`;e7u01^|@^T1kIQFz7DlstMO|7A)RQV;zUvF02?DcwU zSRyHjkxTQJ{zl{y`7*2?(o(B$`DY#_*Y?xWB_&hwWfsF+f{VCIxvz7%n{Xa6XEx|o zOKWu}cVUCB?B_Ap=q)AxP|A$9nG4t3Th$;&0TSV<$=jRT5RSK%l}h}tJb7z+9}*UM zmCic$@Xbz?LwWM#A0M+1x(76fDLRY04!NmkN>$RhV<;sJeTqSTl9ct32Si?s(Uy6% z@Ey@D47Hch2i2u~(9Q_8_9-9yThm7I!JoVdTiPE=24y3Ua^le#X^lWa;X%MmReFG%74ux8ivHL5)-76rI%`( z>R;ur=>MBOmVHq4sf;jm%}$&(JEK|ScALGE{dn}GUSr)s+?4+GH6)KZE<^nl^H5fM zjwpXG3Lwiol;lg2<3gzA(Tg^s=WI-G*_0l#IW0v;&3{UjDO3MYd7- sLZl1IU)(ZQvl%wiX4!0;V{^3}8o`1?$(#4sEzIA+`KNAZ$FR`-e+ZH=g#Z8m literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/activity_news.xml b/app/src/main/res/layout/activity_news.xml new file mode 100644 index 0000000..036f4fe --- /dev/null +++ b/app/src/main/res/layout/activity_news.xml @@ -0,0 +1,25 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_splash.xml b/app/src/main/res/layout/activity_splash.xml new file mode 100644 index 0000000..ce36ca2 --- /dev/null +++ b/app/src/main/res/layout/activity_splash.xml @@ -0,0 +1,16 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_breaking_news.xml b/app/src/main/res/layout/fragment_breaking_news.xml new file mode 100644 index 0000000..b60dbd1 --- /dev/null +++ b/app/src/main/res/layout/fragment_breaking_news.xml @@ -0,0 +1,23 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_news_details.xml b/app/src/main/res/layout/fragment_news_details.xml new file mode 100644 index 0000000..b510dab --- /dev/null +++ b/app/src/main/res/layout/fragment_news_details.xml @@ -0,0 +1,28 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_saved_news.xml b/app/src/main/res/layout/fragment_saved_news.xml new file mode 100644 index 0000000..a2d5330 --- /dev/null +++ b/app/src/main/res/layout/fragment_saved_news.xml @@ -0,0 +1,19 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_search_news.xml b/app/src/main/res/layout/fragment_search_news.xml new file mode 100644 index 0000000..1dd80a1 --- /dev/null +++ b/app/src/main/res/layout/fragment_search_news.xml @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_news.xml b/app/src/main/res/layout/item_news.xml new file mode 100644 index 0000000..4f3cdc6 --- /dev/null +++ b/app/src/main/res/layout/item_news.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/list_general.xml b/app/src/main/res/layout/list_general.xml new file mode 100644 index 0000000..3ed2453 --- /dev/null +++ b/app/src/main/res/layout/list_general.xml @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/progress_dialog.xml b/app/src/main/res/layout/progress_dialog.xml new file mode 100644 index 0000000..67f79fb --- /dev/null +++ b/app/src/main/res/layout/progress_dialog.xml @@ -0,0 +1,36 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/toast.xml b/app/src/main/res/layout/toast.xml new file mode 100644 index 0000000..2672c1e --- /dev/null +++ b/app/src/main/res/layout/toast.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/menu_bottom_navigation.xml b/app/src/main/res/menu/menu_bottom_navigation.xml new file mode 100644 index 0000000..ce5a4a0 --- /dev/null +++ b/app/src/main/res/menu/menu_bottom_navigation.xml @@ -0,0 +1,19 @@ + + + + + + + + + + \ 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..e25a360 --- /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..e25a360 --- /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.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..94f24332aeb789ae6037636b6f563334b97513d1 GIT binary patch literal 2394 zcmV-g38nUlP)r5r2%WJ1W>SO1q;@;>XcSd9xAr-2vAEQA=C

^UdA8 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 Tds30^00000NkvXXu0mjfsYm$Y literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..2b3ce81dfc1c12aad15755f4972ef4c60e3e9f15 GIT binary patch literal 2896 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 Ef{jDks{jB1 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..e4e74684ad3aff51e1e8d7c6292824196330c206 GIT binary patch literal 5095 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 IsbL@XU&w#0?EnA( literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..705527656e9f60e54c76bb8869e2b8e4c29ef362 GIT binary patch literal 10217 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

!-Pv%Pn>;PL+5^!AIfPSkDB)cFXnUzQ( zS%bm}#><&BV6A>pZC&c{W-C}IB=QHJG4L$cLsrRzs(MY4+3Z`N&)T08EP#wZxeP?N z+~rmmOY){$x+9Fta#Xxetf47}(Wc>X3K!TNsWL;wk~8&&!Zor-l8+#?`|oG^uvE7Na9xv z_Q5E??T24ppU;nI8HB=mMnjzexLa8lS0pbpGqX+ft02Xu11?20q7T(R#yGccJ+=ik zD}_a&gwI{E!%`hn{HQ0f$wUPa+8>FeS+U+i&@4?0V)?7!CB_? zokb&0$b2X^pNE{=py{875G3Bj)j|wP`CT~2GVu^NpfeC29zIm-MHI0C6r9u(Fr4AZ zX19~Sxn?DAV{J${^e$EaG%CG7z3LfZ6=5H9qdq<8U-E^hP-kyPkdXtU#QKcL@^8md zS9`ndbZy=@@bsh~>*4uGO<}>b&K5m=IF$X^;=%6lKNe%B-=QT|0_ak*C%7arZ~`lN zotThtt{zC{_Zv>bQ~_V%VVw>eT?jy*cF!2NaVg~+&c_;KGtf9|FD%&BV6nKD_Vw0T;2Vqo06bY~SZjjnug!_aE z_dUu9Qd8Z2G2&|j&}9xtya4Lu6QeA1g=84>R+Hpdel7U$>9c|9@Nc|zCC~poOBnCL z^PT$Kn)39tTpbX`==YXm>Rkjy1rE|Ij%w36R-&k($-n!Q?t+KIjGUvAh{wPa85Q@E z8yZY2A*aEHo5bF-kDkpH;p>82Li}KkayWsF-R{noh)~QeJv<7nd zdgK!&L*Ao`%F*IsS|CND5FkLfMk4V@2W&q~Drn1pDo$2184&7wARF5zH(UWC!hfeN zop4q$?gu(AF`YxxL(_#M^46F;IUk83e0pr5Idswj8APZQ!GWZ1TY6@Q$h^GdA;o&J z2&N@PN+xs2v9RxZj#yO+ROJ|MMfR%*_k9vh4&ot{Tfa~pzOSdjM=>Vo(^aOx1Jhtl zMS$=sy-7u6XvmSNq?JnFMc$3%IvJFx9I;pM%)V(NjM8HZ)8{RARtl`ar>!B1{TjP4 z_B1ZvJZc|f9GMh)meP-@Y{9ObZCbU!>`ONaLoi5Sq^50cwFM5;f|M21<*Q^(g8v7b CLV`B{ literal 0 HcmV?d00001 diff --git a/app/src/main/res/navigation/nav_breaking_news.xml b/app/src/main/res/navigation/nav_breaking_news.xml new file mode 100644 index 0000000..ec21179 --- /dev/null +++ b/app/src/main/res/navigation/nav_breaking_news.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/navigation/nav_saved_news.xml b/app/src/main/res/navigation/nav_saved_news.xml new file mode 100644 index 0000000..71cb3dc --- /dev/null +++ b/app/src/main/res/navigation/nav_saved_news.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/navigation/nav_search_news.xml b/app/src/main/res/navigation/nav_search_news.xml new file mode 100644 index 0000000..b0aff2a --- /dev/null +++ b/app/src/main/res/navigation/nav_search_news.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..8e72c0c --- /dev/null +++ b/app/src/main/res/values/colors.xml @@ -0,0 +1,16 @@ + + + #0088ff + #136ef1 + #e50027 + #8A031A + #FF000000 + #373737 + #CECECE + #FFFFFFFF + #00FFFFFF + #00ACEE + #FF0000 + #F5F6F8 + + \ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml new file mode 100644 index 0000000..3ecc72f --- /dev/null +++ b/app/src/main/res/values/dimens.xml @@ -0,0 +1,61 @@ + + 16dp + + 1dp + 2dp + -2dp + 3dp + 4dp + 5dp + 6dp + 7dp + 8dp + 9dp + 10dp + 12dp + 13dp + 14dp + 16dp + 18dp + 20dp + 21dp + 24dp + 25dp + 25dp + 28dp + 30dp + 32dp + 34dp + 36dp + 40dp + 45dp + 46dp + 50dp + 56dp + 60dp + 65dp + 70dp + 80dp + 90dp + 100dp + 120dp + 130dp + 150dp + 180dp + 200dp + 220dp + 250dp + 300dp + 350dp + + 12sp + 13sp + 14sp + 15sp + 16sp + 18sp + 20sp + 22sp + 28sp + + \ No newline at end of file diff --git a/app/src/main/res/values/ic_launcher_background.xml b/app/src/main/res/values/ic_launcher_background.xml new file mode 100644 index 0000000..16cdd5a --- /dev/null +++ b/app/src/main/res/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ + + + #FFFFFF + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..ab8bb11 --- /dev/null +++ b/app/src/main/res/values/strings.xml @@ -0,0 +1,29 @@ + + News App + + + Hide + Connection Error + No internet connection please try again later + Retry + Undo + Some error occurred, try again later + Sorry, There are no results here! + + + Breaking News + Saved News + Search News + News Details + + + Search here… + Search for any news you prefer here + + + Article saved to local successfully + + + Article removed from your saved list + + \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml new file mode 100644 index 0000000..95c00ef --- /dev/null +++ b/app/src/main/res/values/themes.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..21918d1 --- /dev/null +++ b/build.gradle @@ -0,0 +1,60 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +buildscript { + ext { + compile_sdk_version = 30 + min_sdk_version = 21 + + version_code = 1 + version_name = '1' + + // Support + appcompat = '1.3.1' + core_ktx = '1.6.0' + support_version = '1.0.0' + + // Arch Components + lifecycle_version = '2.4.0-alpha03' + + // Kotlin Coroutines + kotlin_coroutines = '1.4.1' + + // Room + room_version = '2.3.0' + + // Networking + retrofit = '2.9.0' + gson = '2.8.6' + interceptor = '4.8.1' + pluto = '1.0.2-beta' + + // UI + material_design = '1.4.0' + android_navigation = '2.3.5' + loading_animations = '1.4.0' + alerter = '7.0.1' + coil = '1.3.2' + + // Utils + datastore_preferences = '1.0.0' + + // Hilt + hilt_version = '2.38.1' + } + repositories { + google() + mavenCentral() + } + dependencies { + classpath "com.android.tools.build:gradle:7.0.0" + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.21" + classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$android_navigation" + classpath "com.google.dagger:hilt-android-gradle-plugin:$hilt_version" + + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +task clean(type: Delete) { + delete rootProject.buildDir +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..98bed16 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,21 @@ +# Project-wide Gradle settings. +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. +# 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. +org.gradle.jvmargs=-Xmx2048m -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 +# org.gradle.parallel=true +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app"s APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true +# Automatically convert third-party libraries to use AndroidX +android.enableJetifier=true +# Kotlin code style for this project: "official" or "obsolete": +kotlin.code.style=official \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..e708b1c023ec8b20f512888fe07c5bd3ff77bb8f GIT binary patch literal 59203 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

K7UpUK$>l@ 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 E2O(~oYXATM literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..6974aba --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Sat Aug 14 00:33:07 EET 2021 +distributionBase=GRADLE_USER_HOME +distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip +distributionPath=wrapper/dists +zipStorePath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew new file mode 100755 index 0000000..4f906e0 --- /dev/null +++ b/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or 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 UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# 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"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# 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 + ;; + 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" + which java >/dev/null 2>&1 || 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 + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..107acd3 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,89 @@ +@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=. +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%" == "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%"=="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! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..60591d5 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,10 @@ +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { + google() + mavenCentral() + jcenter() // Warning: this repository is going to shut down soon + } +} +rootProject.name = "News-App" +include ':app'

s@f zjv`9Ok$q{2QWazjBO+&)r{r3c#$9A-y&tiaCt||-Amb`4gNfFq-|6bjo&J@sE*C=~ z(8Y@vvz~wcdF*~zF@eNN#OI!S?&i|cQjaVqGbGSO6O*%Ynf1npbj0yAfiQiMdW-!4 zUR9AZPCx&phI#8AW!_7ahZQsL2(v2#l9`&_VOMYVYtwagxflw8&YU@uGHTSQ?%)QW z&M+21Ai@nLB_(IPGL<0+gkvACq&VgeI`VjuK){th8n4d*k{k77>0SP$`@b4RtG4Ot zRHJCuK4oCA>>OvOGT#1NSC=axrZQq{*u5 zT4iTvZ-e=g zYz)#?>@rkHARM2*f>{If8JSZA63aP2LIXHl&Y?j`XtYjwfQi!f(tSsiv_9*}3A*Dz zM$duWm;I`e^=H6X_c7$*sEn_N)N^|lR;*d`^Kjg4il7}A9Kd17L-Z0 z6^Y8DJ-c@8!fWqZa&9i z#&krPhVEU`s)dx9!!qxG&Q6IK2P*l$NV{@b558ot==!~xdC5jyeTJ}DY)e|(I+?Vvi|WTsWwLh3r*={OfPWY& zy;_UvpEFogZ-BxDYn8RpLXp{6+F>rXD^n72l%=Q$klOx_%$nqQl-mecRG)Uo6FTAm zuu%E)S9^3(eM(9STeN7=zrhKo2=w~vuOka(>h_IP<%$%ty2+&`&r)1r7Y{^DJ*x&mrAPd=$h_;7=^xg@nXq4@4WLMIPvVW z&nmCI({RR45JV%-Z*uqDcXy%y>UU3MVt)7@L<%1h6JzSzw=c$knhYE`5QB&n5(rYa zZQHg@=(BB3PR<@qAh!n6e)uFr28KtQZ))GZJ=|A?V?aUzpL*)4ru5nR_uqg2!V{U8 zAHD^Vf#H?EKm72+3UGmQqQVqjNZ_N7J_@!4hlPdx-6Mgt|Mf0af`?x3a@Axqu>}hj zOaK=+C!8Ws!06GV5lFX~JbCf}tJRw2);Tfd1ydXSFPN$V@PeuQx8^waoPG76%z>Rg zeL8pi`0;-L7x*AzrST6W0KrmlaBy?_-hs^6uWk*b{ja#I7L-@q&F0H%T@M-YPk4AZ zUU7E|xZrF6Eu`+SVZ)lyXS*|J&V1%h0!gpT(J9TBpjDhNA!m&1U$Q9%5Hm9~+4}YC zmk|fr4jD28#>A-rT1emn4?KWOto6#3D<7qbC3lSnVcf=A&v?e&7ob&|FTuQcgRVbo z3Nik3;lc&!gAYC!2M&iO`wJ=w>nr@{jCoA{Y$@XfvdJUkPMz~bp_P!Ywg;#-$3_6hYrQt z>MMRG-hqfX=*BO;_+m6=V;*@*Lk(=UQr~E^l?C>jlGp*8s`$cYE1E5wD&1`59q(_p zBHUMee7uD+@V`O#)ro(Ez~?n=)~wkL^cj+#p6-zaW@=!&r~9h2-P2NobE>o56EL&t z1ggc`Jt^5&XlN+j#?h7Q9`373@sALgtoq!9bqEU!dk?GAa1rf=-3f;q&cVt!+Hem4 z*IFSjZa4>P)cil?oA0Wj>^<*08_vlXJY2kZ@n_Ka;K74Ipem*BTB+NsS1&~1H&P_t zKQ}iw)vbey1|WM^`IeX3{Zd`ELc?`(ott~I{dF05EjJxi- zYY24Sy?b|rFx7HjLKHVPV88&p8>UlCOw2d1LbAK|&2Ru^)7>*NyTOP=aA#l1dJ-9J zx{I>vZNVL(nglZ1bT`0Y(_N4UZqA52%BH(f`aW<+MgkKS)VXu#w)EL0E-r4n zH>?m)OdY%YoC8Y)AkKmE1wrW7tXLgwIRw-dk*KN!QY?yDR}ZXF%gH?Ufy<&g>Q2{_ z41nbUd5SFh`*tVPGw)lsZpGsHE?n1GnOYZn=)w%Q??|frW{-qXoS_|T6aWF> z)-W!l4XD*5(z-KeT-XGjf*X(rG=BW} zC!yO89Xi1J;1w=43ZAthtWcBNZo91meRhkCj9gJvq&&^wH7f*U6v=GHZwA|gI}4C# zp-rh(AyAWd&4%Q03Pji!f00?D2L}nY5Y`7OUZ03lQ9R=ab;(_IqQL&cNSP(%>f7yUh*9SY7cQ_l zbLM;kUAo))2vK4oLd&3_pquHlM{I0t1b1atZ9~0<6tm1`pRxtn0a}t&6$XT;3W68N z>_6c$JDa6%r#HY|mlZ$!9Xoa$CLP|+b%~`rE{}b*QkId0goL!C&n_>$^wJ|qNl8U$ zm~0bWqrCx)UT2rsEYgFa6{P)@!GIK%q2cE;8%F0&KOnQz0^87owtZd%1p8kUj~zP} zfpZskWnPX148<5hb0Sd)eRkixdGkyRgL`_S)mdZ}%WPk&%-%mPvwk~e)^bx7T$}+x zvU8VI@4#*=;-LZc$0(d<*dvZ>`#~3;Tefsnn8W$I5!g><97LW+Q z)CjCoGFgjbnKIjU**41k&M}$2cF2aux7qMl3d~=nEbmJ?7IxXTPA7%jQ$eY1OiEj~ zFF}x}xVV^whli)!e*5izgw9BJ?V&@iOOKI9hzO`#2v;_3+O+2=wO6(Xl5L{989%%N z7A|q)D$pR}}Za`e4G;?SZo+5v~lAZZ~x7*s&XZ_FT7a-RF2E$W>cFRc!N!w zHbs$6@Sf*egMxxE6@`_CUUOYq0fUuk4nj+kPV|ZQ$@Jg9fB!KISYhCb$3=d40AjEZ z8P~RL+kPWmV5_F?TsIgn6w?)6w?0DD@lbHvwr#u6XOC{(x(z*e@ZdRY9qlKPXCTOv zot=%BV_xjirOR;Wg6jk+yVv6$M1#fz7u`T`y7kop#wo4pSM0jL}sR>_k?z>Terpy^`sl@Pif`%Sc}4+ zbd~%hsyc+rB49TiwsPglt<<*z(8s*5v06f%uGbp!2+@+LEg!_Xoo=+>*I$1<7f%8d z78d&BqAEg=2kWqo962J*ojZ2{`V@W3`&d|>T1y@wY7)T@w`tU`;9m5-@5G4{ zUyO{5OvI=)R>=8XTE$SgEE%!nFTea^`q#hy^>2^|eM)_cR2=~``r2m(3SA*0CQ{yd zM!2P2yLKQ^ABtDnE{P7qEHpGUdD^sT(|MNF zhxb(o?>qFN$5#}3TLg(ja1Ha@k$zF#n>1;nSR?Z5e^|9@)whQaAI?urwQZTi{C|9mPvGM*s$SkH{N(-U;5q`oj7jXxTiO4*szNNZ8OX|;sOMg zwb8w)-4s%Cxas8NWQ^&U*REZ=d+gY;<2iBqq7Tp)=o8*I=p*#ib!l}RiPjontuFlg zEil>Ci5Mj7hfYNhxqSKZZ-4#uR})6F^Yin;B0w2Of?|A;Ox)Vo8c6K~`!R@$DG1!l zvSrKGKJ?H-Pjce)!##6%g*80r3-pQK>Qo}?*a+hp$Sz>AJ2h?E^mb$(b+|>M4jwjh z=FE>NYdcKtO|eR5vl)63WD;)9D}>SzM#(18Har;tYjfhn2{YRM@y8#3(xy$D;lkqJ z9&xX@XMXSK1N6mp8|ze6gf&7+3R8_h5euR4_)rM9NW!)CCk%Y@$tTAyTC`~C?%lg% zV`5^8k-fn(L6KTQK?JF48bhh;;B}&UJHo&^!qR{=zy0=GG1`c>ju|uNX|x^pfP29` zaf=he?-loqdq*FL^xRLLDu^Q@DHaKF0R@(QC^La;Q`{Tj&ZnP#`kDFj=YO?z>(>3z z(b4G`Q^LAn5DKw|N`#^nK=B}eAc6R9^gk|T=b|oADaZuEAmBfL{yak)wr$%Mg*H(f z_YZ30Al_DFRsC=eJjM|gM-T_8xt};L5H*p|spwpob*ytiVA+LCeoy>@8#HJjtP&J- zNAKRfADBFO@`NQzmMq)6d2=|)1#)+JP%K;?G9C~MZiT=1QN=G~fki=CJV1$a@pdm* zmx~uK;<>9lTm#p_H78A)^hU2?7?ike7>2QX}p zK{RA0F!`7Z>MF>jvP@-!BHVS~efK>+apJ_+Kl|*nS>Jr~&Fb~**YDi1W5v3X>B`%RHlytbj&U!zCqHpKAc9B;D3Or}s{};|GGT70 zGr5ND6qNRc^5|2cw{0<#Dj3lcuYVhE}4-X$c{80ek@jo2n1Q|@YQ+0kB zS#S+pi(j)h+JLt3HmOM?+!XEs_u?mxhXtLjwMuF-VWbx6FXoEyiwB`@<=LDKd6tbXhTm#qQ*Tl8a2DC*@8m+bQ6UWQqh)i$|7D01c4jEIXD+}pf1#jx^WF$3)jT8(FQ+h zYLTeP1lIti!A&4I#Xua!RA31ZKM7*NLcp~^`3PuXH9!V6@IM?w8I;92f+(m9b)s%u z1J}Yeac#AG@{^_(ikeVrQVC+gGC<+55>P$>t6>Cj9A$A1&J{#alf_S%Yg~kKwd7I* jWKctUTuqYemMs4d4R~`m#%>c?00000NkvXXu0mjf$UUe1 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..540e406178f503cd2abdcc69f52874d4dee73060 GIT binary patch literal 7644 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 NT`dF65(F~hzW~JBLo5IQ literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..5054f906698766961281d599b2f0668f6b0ba685 GIT binary patch literal 15223 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