From 78f5b73bf2f760b5ef89cee096d998a14eb09ecc Mon Sep 17 00:00:00 2001 From: Fabio Manganiello Date: Sat, 24 Apr 2021 01:27:23 +0200 Subject: [PATCH] New app version based on native Kotlin implementation --- .gitignore | 34 +- CHANGELOG.md | 10 +- app/.gitignore | 1 + app/build.gradle | 46 ++ app/proguard-rules.pro | 21 + app/src/main/AndroidManifest.xml | 26 + app/src/main/assets/web/css/style.css | 292 ++++++++++ .../src/main/assets/web}/icon/icon.png | Bin .../src/main/assets/web}/icon/plus.svg | 0 app/src/main/assets/web/img/icon.png | 1 + app/src/main/assets/web/img/trash.png | Bin 0 -> 5397 bytes app/src/main/assets/web/index.html | 101 ++++ app/src/main/assets/web/js/main.js | 167 ++++++ .../src/main/assets/web}/js/vue.min.js | 0 app/src/main/ic_launcher-playstore.png | Bin 0 -> 22700 bytes .../java/tech/platypush/platypush/JSON.kt | 54 ++ .../tech/platypush/platypush/MainActivity.kt | 30 ++ .../java/tech/platypush/platypush/Services.kt | 249 +++++++++ .../platypush/platypush/WebAppInterface.kt | 67 +++ .../java/tech/platypush/platypush/WebView.kt | 27 + .../res/drawable/ic_launcher_foreground.xml | 26 + app/src/main/res/layout/activity_main.xml | 20 + .../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 -> 14655 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 16665 bytes app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 13010 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 14664 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 16490 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 18859 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 20767 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 23919 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 25585 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 29716 bytes app/src/main/res/navigation/nav_graph.xml | 4 + app/src/main/res/values-night/themes.xml | 16 + app/src/main/res/values/colors.xml | 10 + app/src/main/res/values/dimens.xml | 3 + .../res/values/ic_launcher_background.xml | 4 + app/src/main/res/values/strings.xml | 6 + app/src/main/res/values/themes.xml | 25 + assets/css/style.css | 121 ----- assets/icon/courses-icon-10.png | Bin 28193 -> 0 bytes assets/icon/ic_launcher.png | Bin 9490 -> 0 bytes assets/js/androidjs.js | 306 ----------- build.gradle | 26 + .../android/en-US/changelogs/1000100.txt | 3 + gradle.properties | 21 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 54329 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 172 ++++++ gradlew.bat | 84 +++ main.js | 21 - package-lock.json | 501 ------------------ package.json | 30 -- settings.gradle | 2 + views/index.html | 96 ---- 57 files changed, 1540 insertions(+), 1099 deletions(-) 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/assets/web/css/style.css rename {assets => app/src/main/assets/web}/icon/icon.png (100%) rename {assets => app/src/main/assets/web}/icon/plus.svg (100%) create mode 120000 app/src/main/assets/web/img/icon.png create mode 100644 app/src/main/assets/web/img/trash.png create mode 100644 app/src/main/assets/web/index.html create mode 100644 app/src/main/assets/web/js/main.js rename {assets => app/src/main/assets/web}/js/vue.min.js (100%) create mode 100644 app/src/main/ic_launcher-playstore.png create mode 100644 app/src/main/java/tech/platypush/platypush/JSON.kt create mode 100644 app/src/main/java/tech/platypush/platypush/MainActivity.kt create mode 100644 app/src/main/java/tech/platypush/platypush/Services.kt create mode 100644 app/src/main/java/tech/platypush/platypush/WebAppInterface.kt create mode 100644 app/src/main/java/tech/platypush/platypush/WebView.kt create mode 100644 app/src/main/res/drawable/ic_launcher_foreground.xml create mode 100644 app/src/main/res/layout/activity_main.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.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_graph.xml create mode 100644 app/src/main/res/values-night/themes.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 delete mode 100644 assets/css/style.css delete mode 100644 assets/icon/courses-icon-10.png delete mode 100644 assets/icon/ic_launcher.png delete mode 100644 assets/js/androidjs.js create mode 100644 build.gradle create mode 100644 fastlane/metadata/android/en-US/changelogs/1000100.txt 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 delete mode 100644 main.js delete mode 100644 package-lock.json delete mode 100644 package.json create mode 100644 settings.gradle delete mode 100644 views/index.html diff --git a/.gitignore b/.gitignore index dda9ca6..5d8b128 100644 --- a/.gitignore +++ b/.gitignore @@ -1,24 +1,12 @@ +*.iml +.gradle +/local.properties +/.idea .DS_Store -node_modules -/dist -/npm - - -# local env files -.env.local -.env.*.local - -# Log files -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* - -# Editor directories and files -.idea -.vscode -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? +/build +/captures +.externalNativeBuild +.cxx +local.properties +/platypush/build +/app/release diff --git a/CHANGELOG.md b/CHANGELOG.md index d76bc8e..27e655c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,15 @@ # Changelog All notable changes to this project will be documented in this file. -## [Unreleased] +## [1.0.1] - 2021-04-28 +### Added +- Support for saved/favourite hosts and services. + +### Changed +- App migrated from AndroidJS to native Kotlin+webview (and APK size dropped to ~4MB). + +### Fixed +- Improved speed and stability of services scan. ## [1.0.0] - 2021-02-26 ### Added diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..ba3ca21 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,46 @@ +plugins { + id 'com.android.application' + id 'kotlin-android' + id 'kotlin-android-extensions' +} + +android { + compileSdkVersion 29 + buildToolsVersion "30.0.3" + + defaultConfig { + applicationId "tech.platypush.platypush" + minSdkVersion 23 + targetSdkVersion 29 + versionCode 1000100 + versionName "1.0.1" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + kotlinOptions { + jvmTarget = '1.8' + } +} + +dependencies { + implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" + implementation 'androidx.core:core-ktx:1.3.2' + implementation 'androidx.appcompat:appcompat:1.2.0' + implementation 'com.google.android.material:material:1.3.0' + implementation 'androidx.constraintlayout:constraintlayout:2.0.4' + implementation 'androidx.navigation:navigation-fragment-ktx:2.3.5' + implementation 'androidx.navigation:navigation-ui-ktx:2.3.5' + testImplementation 'junit:junit:4.+' + androidTestImplementation 'androidx.test.ext:junit:1.1.2' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' +} 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..c7a0ad1 --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/assets/web/css/style.css b/app/src/main/assets/web/css/style.css new file mode 100644 index 0000000..e0a3d95 --- /dev/null +++ b/app/src/main/assets/web/css/style.css @@ -0,0 +1,292 @@ +html, body { + width: 100%; + height: 100%; + margin: 0; +} + +#app { + width: 100%; + height: 100%; + background: #e0eae8; + font-size: 20px; + display: flex; + justify-content: center; + font-family: Avenir, Helvetica, Arial, sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + color: #2c3e50; +} + +.services { + width: 60%; + height: max-content; + min-width: 17em; + max-width: 22.5em; + background: white; + margin-top: 2em; + box-shadow: 1px 1px 2px 2px #bbb; + border-radius: 1.5em; +} + +.services h3 { + width: 100%; + text-align: center; +} + +.no-items { + text-align: center; + padding: 2em 1em; +} + +.service { + width: 100%; + padding: 1em .5em; + border-bottom: 1px solid #ccc; + cursor: pointer; + position: relative; +} + +.service:first-child { + border-radius: 1.5em 1.5em 0 0; +} + +.service:last-child { + border-radius: 0 0 1.5em 1.5em; +} + +.service:hover { + background: #bef6da; +} + +.service .remove { + position: absolute; + right: 1.5em; +} + +.service .remove img { + width: 1.2em; + height: 1.2em; +} + +.name { + font-weight: bold; +} + +.add-btn { + width: 2.5em; + height: 2.5em; + background: url('../icon/plus.svg'); + position: fixed; + bottom: 1em; + right: 1em; + cursor: pointer; +} + +.add-btn:hover { + opacity: .75; +} + +/* Add host modal */ +.add-modal-container { + width: 100%; + height: 100%; + position: fixed; + display: flex; + justify-content: center; + align-items: center; + z-index: 2; +} + +.add-modal-background { + width: 100%; + height: 100%; + background: black; + position: absolute; + opacity: .87; +} + +.add-modal { + width: 80%; + height: max-content; + max-width: 22.5em; + background: #f0f0f0; + display: flex; + flex-direction: column; + font-size: 1.2em; + padding: 1em; + border-radius: 1em; + z-index: 3; +} + +.add-modal .header { + display: flex; + align-items: center; + justify-content: center; + padding-bottom: .5em; +} + +.add-modal form, +.add-modal form label { + width: 100%; +} + +.add-modal form input { + border-radius: .25em; + padding: .25em; +} + +.add-modal form input[type=text], +.add-modal form input[type=number] { + width: 95%; + font-size: 1.05em; + margin-bottom: .5em; +} + +.add-modal form input[type=submit] { + font-size: 1.05em; +} + +.add-modal .buttons { + width: 100%; + display: flex; + align-items: center; +} + +.add-modal .buttons .button { + width: 50%; +} + +/* Splash screen */ +.splash { + width: 100vw; + height: 100vh; + position: absolute; + background: white; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + font-size: 1.2em; + z-index: 1000; +} + +.splash .icon { + width: 150px; + height: 150px; + display: flex; + margin-bottom: .5em; +} + +.splash .icon img { + width: 100%; + height: 100%; +} + +/* Fade in/out animations */ +.fade-in { + animation-duration: 0.5s; + -webkit-animation-duration: 0.5s; + animation-fill-mode: both; + animation-name: fadeIn; + -webkit-animation-name: fadeIn; +} + +.fade-out { + animation-duration: 0.5s; + -webkit-animation-duration: 0.5s; + animation-fill-mode: both; + animation-name: fadeOut; + -webkit-animation-name: fadeOut; +} + +@keyframes fadeIn { + 0% {opacity: 0;} + 100% {opacity: 1;} +} + +@keyframes fadeOut { + 0% {opacity: 1;} + 100% { + opacity: 0; + display: none; + } +} + +/* Loading animation */ +.loading { + display: flex; + align-items: center; + justify-content: center; + font-size: 3em; + position: absolute; + top: 0; + left: 0; + width: 100vw; + height: 100vh; + background: #909090; + opacity: 0.5; +} + +.icon { + display: inline-block; + position: relative; + width: 80px; + height: 80px; +} + +.icon div { + position: absolute; + top: 33px; + width: 13px; + height: 13px; + border-radius: 50%; + background: #fff; + animation-timing-function: cubic-bezier(0, 1, 1, 0); +} + +.icon div:nth-child(1) { + left: 8px; + animation: lds-ellipsis1 0.6s infinite; +} + +.icon div:nth-child(2) { + left: 8px; + animation: lds-ellipsis2 0.6s infinite; +} + +.icon div:nth-child(3) { + left: 32px; + animation: lds-ellipsis2 0.6s infinite; +} + +.icon div:nth-child(4) { + left: 56px; + animation: lds-ellipsis3 0.6s infinite; +} + +@keyframes lds-ellipsis1 { + 0% { + transform: scale(0); + } + 100% { + transform: scale(1); + } +} + +@keyframes lds-ellipsis3 { + 0% { + transform: scale(1); + } + 100% { + transform: scale(0); + } +} + +@keyframes lds-ellipsis2 { + 0% { + transform: translate(0, 0); + } + 100% { + transform: translate(24px, 0); + } +} diff --git a/assets/icon/icon.png b/app/src/main/assets/web/icon/icon.png similarity index 100% rename from assets/icon/icon.png rename to app/src/main/assets/web/icon/icon.png diff --git a/assets/icon/plus.svg b/app/src/main/assets/web/icon/plus.svg similarity index 100% rename from assets/icon/plus.svg rename to app/src/main/assets/web/icon/plus.svg diff --git a/app/src/main/assets/web/img/icon.png b/app/src/main/assets/web/img/icon.png new file mode 120000 index 0000000..9ca39a4 --- /dev/null +++ b/app/src/main/assets/web/img/icon.png @@ -0,0 +1 @@ +../../../res/mipmap-xxxhdpi/ic_launcher.png \ No newline at end of file diff --git a/app/src/main/assets/web/img/trash.png b/app/src/main/assets/web/img/trash.png new file mode 100644 index 0000000000000000000000000000000000000000..447f99ddc233c05e04becc574879b45dbef8b329 GIT binary patch literal 5397 zcmeHLc~leU77r?g;({VzMT#M~u_T#--L`9#Vfb>g1#Pj-(=e)kZm~&<_^L@YjyZ8R? z{l1f#yx<_e$tG4N1Oj0)-=8M{zn;3&cs#i7s$Q)n5XQYq6Go^7NGegGluPhLjHq6z zz=)UzmkAOMD}xBF3)|K>sTN>{@uM7KmSo_zdz=gW6YuF{bJLeiR<~zO>Z8( z>CU?G*pgYaad+m_?v#_v-7B^weD->Vt^2G<$EbnK&kGj&_hxu)_vBPtsFM1QuS1Ka zS=xrn3oACZJV;^HxzFdmsukHFHr{3-N6J(Nhh-*$-}yg8PTG7>=+;;Da_;)<42$o3 zk+3@jO|7MJEj4(~p4WtW74)(-6Q958rxiKKhTi&%SGsoW(a!5JU*fgAr?|Dg_}=Z9 zz?rs}uJ5;5c9X-jF|N@fGaD6-Z>tu2y~x%|J=@StMvF?lCpmp%mRt_w+NzLxv+1Uv znMq`XV~JCE>xvo(-{KZK69r{!W-K1Re09OIW6is(wU4b>^SUN1nU_1wR}t~=_66-G zmudvN7rgz_v0~Fw2{Loj?eaT@M0obfvW2I&bf=Lk$K}-4Yj1q@k8}1(3u0<4Qs~s? zaehAOnF-*dKS%cP*3MD>P=gTe)Xv3v1AVVjjJNd8meVHm>h* zH-2`9;Z%pnNpTy6|BN!4)qO7CZbSLTd1060|A;y&Id7lv+s$rve|g^A&#D*?dAxa0#h#`^p`}JHZDoa} ztyiI|T3fFt%-AFIsuyva_A9tMd|TTgyc;PN_7$2ivkT zpL_JS{uo(YtoY^(fA7P_Di7b)&6MW&8?SqQl2!+0pLSO4OYT254|>T@D=lr@oV{Aw zaksYgeER7JQ=tB`#q00;8|-{1nx^q6l{bxFQ|;Nlvt?QO?C(uI3u_m(6O1;Tj>tQF zozvFZ(%MoNduw2TP?4`Z<(YQkEZC>4aIham1O~8Cxs-y4Dh@o5)l`3NK0J;p+E%}i^KiXlvrq5kPuBvKv`mvhr5ZJh7Aa$m>MB! zq=_;WTf-sgdD-AzH%uiF^$>LehZGSQOytUy7!jtx6o~Aj!BglYcN3zUQY>K$c)r6F z;E6+uQ>zthDm67Vm6GaAkt<`VG!~0Rh3Hf|oeU6U)k>Kf(U4^-I~~Ok2M<%BN?f7F z@0y?Tv!-9ii$5&sSz29>8JoX1qVD#kqBbI zOlL9!qOr&@9g~m|SCNG5BBG-r8bWhLG4UvhB}yE0C6YKgDjk&=P%#*EmP8~*$ux)# zq7jMcWF{S!keLh@kqZimVHesEl^A9F%9T*|hXm1; zg$f4r$phHenNXoFBz;0*?jYDLy7+BxK4fTE;|BGTVBrr`(r=etL1acw6 zt|(9#a)rsxFb!hRVOWHU==wB9*i~|gIu%i3Ua=rkkPT=ceKy1edMWKcMyJMMI-MXo zjSRtLIztFSY?#T0U`L3~h9DAkIAN-8Rlm>Jjrw1jxak3-wgF%_GzPX8uv<|_wyR;y zbTa;p$8atFMh}2`%*iL|J0{ndT%V-CCxOShYfP?BQs9%oW8L*Xlgs483lAm(|AJD% z>&(fe%iO?M8%1z{&`1ALGE}8@d&ww zU;2ZG&lUcWDguFGr#lTa`#e&>pplv%=wtL?f|VsSA^VMW4j78#^Sp!+^-r%~FgXnw z^FkgDX4M{a_ve;PsWR`XxUDg^-J3@|_$aq!g?VB}Us2JyraC8tH#+gj!4&2emTdPi79|(Z92WB4T+$8v<8&ZP?DrV_Ge4ij* JrT14ke*!IW4$lAp literal 0 HcmV?d00001 diff --git a/app/src/main/assets/web/index.html b/app/src/main/assets/web/index.html new file mode 100644 index 0000000..a0d6069 --- /dev/null +++ b/app/src/main/assets/web/index.html @@ -0,0 +1,101 @@ + + + + Platypush + + + + + + +
+
+
+ +
+
+ Platypush +
+
+ +
+
+
+
+
+ +
+
+

Saved services

+ +
+ + on + : + + Remove + +
+
+ +
+

Scanned services

+ +
+
No Platypush web services found on the network
+
+ +
+ + on + : +
+
+
+ +
+
+
+
+ Connect to a Platypush web service +
+ +
+
+ + + + + + +
+
+ +
+
+ +
+
+
+
+
+
+ +
+
+ + + + + diff --git a/app/src/main/assets/web/js/main.js b/app/src/main/assets/web/js/main.js new file mode 100644 index 0000000..daef38d --- /dev/null +++ b/app/src/main/assets/web/js/main.js @@ -0,0 +1,167 @@ +new Vue({ + el: '#app', + data: function() { + return { + loading: false, + splash: false, + services: { + scanned: [], + saved: [], + }, + addModal: { + visible: false, + host: undefined, + port: 8008, + name: undefined, + save: false, + }, + } + }, + + computed: { + servicesByName: function() { + return Object.values(this.services).reduce((obj, services) => + services.reduce((obj2, srv) => { + obj2[srv.name] = srv + return obj2 + }, obj), {}) + }, + + servicesByHostAndPort: function() { + return Object.values(this.services).reduce((obj, services) => + services.reduce((obj2, srv) => { + obj2[`${srv.host}:${srv.port}`] = srv + return obj2 + }, obj), {}) + }, + }, + + methods: { + refresh: function() { + this.services.scanned = [ + ...this.services.scanned, + ...JSON.parse(app.pollServices()).filter((srv) => !(srv.name in this.servicesByName)), + ] + }, + + onServiceClick: function(service) { + this.connect(service.host, service.port) + }, + + onServiceConnect: function() { + if (!this.addModal.host?.length) { + app.alert('Please specify a host name or IP address') + return + } + + if (this.addModal.save) { + if (!this.saveService(this.addModal.host, this.addModal.port, this.addModal.name || '')) + return + } + + this.connect(this.addModal.host, this.addModal.port) + }, + + saveService: function(host, port, name) { + name = this.addModal.name.trim() + if (!name.length) { + app.alert('Please specify a name') + return false + } + + let overwrite = false + if (name in this.servicesByName) { + if (!confirm(`A service named ${name} already exists. ` + + `Do you want to overwrite it?`)) + return false + + overwrite = true + } else if (`${host}:${port}` in this.servicesByHostAndPort) { + if (!confirm(`A service on ${host}:${port} already exists. ` + + `Do you want to overwrite it?`)) + return false + + overwrite = true + } + + this.loading = true + try { + const rs = app.saveService(host, port, name, overwrite) + if (rs?.error) + throw rs.error + + this.loadServices() + return true + } finally { + this.loading = false + } + }, + + removeService: function(savedIndex, event) { + event.stopPropagation() + const srv = this.services.saved[savedIndex] + if (!(srv && confirm('Are you sure that you want to remove this service?'))) + return false + + this.loading = true + try { + const rs = app.removeService(srv.host, srv.port, srv.name) + if (rs?.error) + throw rs.error + + this.loadServices() + return true + } finally { + this.loading = false + } + }, + + connect: function(host, port) { + this.loading = true + app.stopServicesPoll() + window.location.href = `http://${host}:${port}/` + }, + + splashScreen: function(duration) { + const self = this + this.splash = true + setTimeout(() => { + self.splash = false + }, duration) + }, + + resetAddModal: function() { + this.addModal = { + host: undefined, + port: 8008, + name: undefined, + save: false, + } + }, + + loadServices: function() { + this.services = { + ...this.services, + ...JSON.parse(app.loadServices()) + } + }, + }, + + mounted: function() { + this.splashScreen(1500) + + this.$watch(() => this.addModal.visible, (newValue) => { + if (!newValue) + this.resetAddModal() + }) + + this.$watch(() => this.addModal.save, (newValue) => { + if (newValue) + this.addModal.name = this.addModal.host + }) + + this.loadServices() + app.startServicesPoll() + setInterval(this.refresh, 500) + } +}) diff --git a/assets/js/vue.min.js b/app/src/main/assets/web/js/vue.min.js similarity index 100% rename from assets/js/vue.min.js rename to app/src/main/assets/web/js/vue.min.js diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png new file mode 100644 index 0000000000000000000000000000000000000000..c255832bbaa50ab08f9578344319ed5027b04404 GIT binary patch literal 22700 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 LhS~)u9UuM=FAB}} literal 0 HcmV?d00001 diff --git a/app/src/main/java/tech/platypush/platypush/JSON.kt b/app/src/main/java/tech/platypush/platypush/JSON.kt new file mode 100644 index 0000000..0457fbd --- /dev/null +++ b/app/src/main/java/tech/platypush/platypush/JSON.kt @@ -0,0 +1,54 @@ +package tech.platypush.platypush + +import org.json.JSONArray +import org.json.JSONObject +import java.util.* +import kotlin.collections.HashMap + + +class JSON { + companion object { + private fun toMap(obj: JSONObject): Map { + val ret = HashMap() + val keys = obj.keys() + + while (keys.hasNext()) { + val key = keys.next() + var value = obj[key] + + if (value is JSONObject) + value = toMap(value) + else if (value is JSONArray) + value = toList(value) + + ret[key] = value + } + + return ret + } + + private fun toList(arr: JSONArray): List { + val ret = LinkedList() + for (i in 0 until arr.length()) { + var value = arr[i] + + if (value is JSONObject) + value = toMap(value) + else if (value is JSONArray) + value = toList(value) + + ret.add(value) + } + + return ret + } + + fun load(str: String): Map { + return toMap(JSONObject(str)) + } + + fun dump(obj: Map): String { + return JSONObject(obj).toString() + } + } +} diff --git a/app/src/main/java/tech/platypush/platypush/MainActivity.kt b/app/src/main/java/tech/platypush/platypush/MainActivity.kt new file mode 100644 index 0000000..01ad9cb --- /dev/null +++ b/app/src/main/java/tech/platypush/platypush/MainActivity.kt @@ -0,0 +1,30 @@ +package tech.platypush.platypush + +import android.annotation.SuppressLint +import android.os.Bundle +import android.webkit.WebChromeClient +import androidx.appcompat.app.AppCompatActivity +import kotlinx.android.synthetic.main.activity_main.* + + +class MainActivity : AppCompatActivity() { + @SuppressLint("SetJavaScriptEnabled") + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_main) + webview.webViewClient = WebView() + webview.webChromeClient = WebChromeClient() + webview.settings.javaScriptEnabled = true + webview.settings.javaScriptCanOpenWindowsAutomatically = true + webview.clearCache(true) + webview.addJavascriptInterface(WebAppInterface(this), "app") + webview.loadUrl("file:///android_asset/web/index.html") + } + + override fun onBackPressed() { + if (webview != null && webview.canGoBack()) + webview.goBack() + else + super.onBackPressed() + } +} diff --git a/app/src/main/java/tech/platypush/platypush/Services.kt b/app/src/main/java/tech/platypush/platypush/Services.kt new file mode 100644 index 0000000..257e9be --- /dev/null +++ b/app/src/main/java/tech/platypush/platypush/Services.kt @@ -0,0 +1,249 @@ +package tech.platypush.platypush + +import android.content.ContentValues.TAG +import android.content.Context +import android.net.nsd.NsdManager +import android.net.nsd.NsdServiceInfo +import android.util.Log +import java.io.File +import java.io.FileWriter +import java.lang.RuntimeException +import java.util.* +import java.util.concurrent.locks.ReentrantLock +import kotlin.concurrent.withLock + + +/** + * Service data class + */ +data class Service(val host: String, val port: Int, val name: String?) { + fun toMap(): Map { + return mapOf( + "host" to host, + "port" to port, + "name" to name + ) + } + + override fun toString(): String { + return JSON.dump(toMap()) + } + + companion object { + fun load(obj: Map): Service { + return Service( + host = obj["host"] as String, + port = obj["port"] as Int, + name = obj["name"] as String? + ) + } + } +} + + +/** + * ZeroConf/Bonjour/mDNS event listener + */ +class Listener(private val scanner: Scanner): NsdManager.DiscoveryListener { + val serviceType = "_platypush-http._tcp." + + override fun onDiscoveryStarted(regType: String) { + Log.d(TAG, "Service discovery started") + } + + override fun onServiceFound(service: NsdServiceInfo) { + Log.d(TAG, "Service discovery succeeded: $service") + if (service.serviceType != serviceType) { + Log.d(TAG, "Unknown service type: ${service.serviceType}") + return + } + + scanner.resolveService(service) + } + + override fun onServiceLost(service: NsdServiceInfo) { + Log.w(TAG, "Service lost: $service") + } + + override fun onDiscoveryStopped(serviceType: String) { + Log.i(TAG, "Discovery stopped: $serviceType") + } + + override fun onStartDiscoveryFailed(serviceType: String, errorCode: Int) { + Log.e(TAG, "Discovery start failed: Error code: $errorCode") + scanner.stopScan() + } + + override fun onStopDiscoveryFailed(serviceType: String, errorCode: Int) { + Log.e(TAG, "Discovery stop failed: Error code: $errorCode") + scanner.stopScan() + } +} + + +/** + * ZeroConf/Bonjour/mDNS service scanner and resolver + */ +class Scanner(context: Context) { + private val nsdManager = context.getSystemService(Context.NSD_SERVICE) as NsdManager + private val listener = Listener(this) + private val services = HashMap, Service>() + private val resolverLock = ReentrantLock() + + fun startScan() { + nsdManager.discoverServices(listener.serviceType, NsdManager.PROTOCOL_DNS_SD, listener) + } + + fun stopScan() { + nsdManager.stopServiceDiscovery(listener) + } + + fun getServices(): Collection { + return services.values + } + + fun resolveService(service: NsdServiceInfo) { + // Service resolution is a critical section + resolverLock.lock() + val scanner = this + + nsdManager.resolveService(service, object : NsdManager.ResolveListener { + override fun onResolveFailed(serviceInfo: NsdServiceInfo, errorCode: Int) { + resolverLock.unlock() + val msg = "Resolve of service ${serviceInfo.serviceName} failed" + + // Retry logic + when (errorCode) { + NsdManager.FAILURE_ALREADY_ACTIVE -> { + Thread.sleep(100) + scanner.resolveService(serviceInfo) + Log.w(TAG, "$msg: Resolver already active") + } + + NsdManager.FAILURE_MAX_LIMIT -> { + Thread.sleep(5000) + scanner.resolveService(serviceInfo) + Log.e(TAG, "$msg: Maximum number of resolve requests reached") + } + + NsdManager.FAILURE_INTERNAL_ERROR -> { + Log.e(TAG, "$msg: Internal error") + } + } + } + + override fun onServiceResolved(serviceInfo: NsdServiceInfo) { + services[Pair(serviceInfo.host.hostAddress, serviceInfo.port)] = Service( + serviceInfo.host.hostAddress, serviceInfo.port, serviceInfo.serviceName) + resolverLock.unlock() + Log.i(TAG, "Resolve succeeded: $serviceInfo") + } + }) + } +} + +/** + * Services manager class + */ +class Manager(context: Context) { + private val servicesFile = File(context.filesDir, "services.json") + private val servicesFileLock = ReentrantLock() + private val emptyServices = mapOf>( + "saved" to emptyList(), + "lastConnected" to emptyList() + ) + + private fun initServicesFile(reset: Boolean = false) { + if (reset || !servicesFile.exists()) + saveServices(emptyServices) + } + + fun loadServices(): Map> { + initServicesFile() + var services: Map> = emptyServices + + try { + services = deserializeServices(servicesFile.readText()) + } catch (e: Exception) { + Log.e(TAG, "Error while parsing $servicesFile: resetting it", e) + initServicesFile(reset = true) + } + + return services + } + + private fun saveServices(services: Map>) { + servicesFileLock.withLock { + FileWriter(servicesFile).use { + it.write(serializeServices(services)) + } + } + } + + fun saveService(host: String, port: Int, name: String, overwrite: Boolean = false) { + val service = Service(host, port, name) + val services = this.loadServices().toMutableMap() + val savedServices = services["saved"]?.toMutableList() ?: ArrayList() + val dupIndex = getSavedServiceIndex(service, savedServices) + + if (dupIndex != null && !overwrite) + throw DuplicateServiceException(service) + + savedServices.add(service) + services["saved"] = savedServices + saveServices(services) + } + + fun removeService(host: String? = null, port: Int? = null, name: String? = null) { + val service = Service(host=host ?: "", port=port ?: 0, name=name) + val services = this.loadServices().toMutableMap() + val savedServices = ArrayList(services["saved"] ?: emptyList()) + val srvIndex = getSavedServiceIndex(service, savedServices) + ?: throw NoSuchServiceException(host, port, name) + + savedServices.removeAt(srvIndex) + services["saved"] = savedServices + saveServices(services) + } + + private fun getSavedServiceIndex(service: Service, services: List): Int? { + val matchingSrvIndexes = services.indices.filter { + (services[it].host == service.host && services[it].port == service.port) || + services[it].name == service.name + } + + return if (matchingSrvIndexes.isNotEmpty()) matchingSrvIndexes[0] else null + } + + fun serializeServices(services: Map>): String { + val parsedServices = HashMap>>() + + for (srvType in listOf("saved", "lastConnected")) { + val outputList = LinkedList>() + for (srv in services[srvType] ?: emptyList()) + outputList.add(srv.toMap()) + parsedServices[srvType] = outputList.toList() + } + + return JSON.dump(parsedServices) + } + + private fun deserializeServices(servicesJson: String): Map> { + @Suppress("UNCHECKED_CAST") + val services = JSON.load(servicesJson) as Map>> + val parsedServices = HashMap>() + + for (srvType in listOf("saved", "lastConnected")) { + val outputList = LinkedList() + for (srv in services[srvType] ?: emptyList()) + outputList.add(Service.load(srv)) + parsedServices[srvType] = outputList + } + + return parsedServices + } +} + +class DuplicateServiceException(service: Service) : RuntimeException("Duplicate service: $service") +class NoSuchServiceException(host: String? = null, port: Int? = null, name: String? = null): + RuntimeException("No such host: host=$host, port=$port, name=$name") diff --git a/app/src/main/java/tech/platypush/platypush/WebAppInterface.kt b/app/src/main/java/tech/platypush/platypush/WebAppInterface.kt new file mode 100644 index 0000000..8298335 --- /dev/null +++ b/app/src/main/java/tech/platypush/platypush/WebAppInterface.kt @@ -0,0 +1,67 @@ +package tech.platypush.platypush + +import android.content.ContentValues.TAG +import android.content.Context +import android.util.Log +import android.webkit.JavascriptInterface +import org.json.JSONArray +import java.util.* + + +class WebAppInterface(context: Context) { + private val serviceScanner = Scanner(context) + private val serviceManager = Manager(context) + + @Suppress("unused") + @JavascriptInterface + fun startServicesPoll() { + serviceScanner.startScan() + } + + @Suppress("unused") + @JavascriptInterface + fun stopServicesPoll() { + serviceScanner.stopScan() + } + + @Suppress("unused") + @JavascriptInterface + fun pollServices(): String { + val services = LinkedList>() + for (srv in serviceScanner.getServices()) + services.add(srv.toMap()) + return JSONArray(services).toString() + } + + @Suppress("unused") + @JavascriptInterface + fun loadServices(): String { + return serviceManager.serializeServices(serviceManager.loadServices()) + } + + @Suppress("unused") + @JavascriptInterface + fun saveService(host: String, port: Int, name: String, overwrite: Boolean = false): String? { + try { + serviceManager.saveService(host, port, name, overwrite=overwrite) + } catch (e: Exception) { + Log.e(TAG, e.toString()) + return JSON.dump(mapOf("error" to e.toString())) + } + + return null + } + + @Suppress("unused") + @JavascriptInterface + fun removeService(host: String, port: Int, name: String): String? { + try { + serviceManager.removeService(host, port, name) + } catch (e: Exception) { + Log.e(TAG, e.toString()) + return JSON.dump(mapOf("error" to e.toString())) + } + + return null + } +} diff --git a/app/src/main/java/tech/platypush/platypush/WebView.kt b/app/src/main/java/tech/platypush/platypush/WebView.kt new file mode 100644 index 0000000..d60e130 --- /dev/null +++ b/app/src/main/java/tech/platypush/platypush/WebView.kt @@ -0,0 +1,27 @@ +package tech.platypush.platypush + +import android.webkit.WebResourceRequest +import android.webkit.WebView +import android.webkit.WebViewClient + +class WebView : WebViewClient() { + private fun shouldOverrideUrlLoadingInner(view: WebView, url: String): Boolean { + view.loadUrl(url) + return true + } + + override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean { + if (view == null || request == null) + return super.shouldOverrideUrlLoading(view, request) + + return this.shouldOverrideUrlLoadingInner(view, request.url.toString()) + } + + override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean { + @Suppress("DEPRECATION") + if (view == null || url == null) + return super.shouldOverrideUrlLoading(view, url) + + return this.shouldOverrideUrlLoadingInner(view, url) + } +} 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..230b730 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,26 @@ + + + + + + + + + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..edad1d1 --- /dev/null +++ b/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,20 @@ + + + + + + + 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..7353dbd --- /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..7353dbd --- /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..4499d8841271e64bf35396fb2c17e5ca57c6256a GIT binary patch literal 14655 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 Id>HxP0Bo}b=l}o! literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..49d9e890b00ef7b97ae1e6aabe5ac50ea8c893c7 GIT binary patch literal 16665 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 aoiR9=Kcw0pWM6|VfUKmVM1}YV|NjR_Ih_aq literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..5ddc9d311dceb8a3110a850235b89005c8f4001d GIT binary patch literal 13010 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 Fe*s@Aq`LqB 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..8378865055a2ec68233610e9fe64c47227444ddb GIT binary patch literal 14664 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..e39a18a922f0e753494637a8ee03c3c9b12c48b7 GIT binary patch literal 18859 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 Y038F;8lB+j43uH;boFyt=akR{09<*=vj6}9 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..95817604e4502983a227d944762ea641a811ec54 GIT binary patch literal 20767 zcmeFZWmsL&wk3FQcXxLQ?oQAIx8N2C7TjF|1a}Ee2o^lJyL)g59)i1s5Tq9O-q-Kd ztLm>`cUSeVCg0}l9NTN{HRqUPjJc8sRb@FeWMX6p1cIg@|56=1#y=m3@Zk5Z>{b&5 z0_AHhEv;&8ZVrJkCio?Y%J)i;_8W_Tp~k}!#>E;|&1U@=DPV&asY*4ATp^Tha0jPE zoQO*x*ImD{F=#f|-LI>Ipd*QS4{>sFQFl$ieoDjD>+^K{5$Exn+~X7yP|%~vEr4E< zVeusii7HbcPpS%$I?^B2T-K~ej3JWAGq%d-_STzVS9fjqk+fZL?QNh6WsXIQDV77K zii4ieuHP0Sivsew;CZ?v0j>YfmZJ-j-Os)LIYgXX`(9g!HL6D@%^|wOsu9H>%_G06 zb%-B+>+y=J)hn%;7yX0M>-FB^(;-iId>?fxrBq-v@kmLRRF-xOE{^rGisvl?S*JYv zCj$!(XVyGqyu@vUr;zp4jL=~uex@u)i;>-5b6CV<=<$~K0Te6lm#~N;FgkiG#_u8A zxnCAm^o|hsR^ZtyS2EfV3{D`^42E2^a>!Fx1jt=~iTpIs37g=&=YOo}{T1+oaLsBR zzzYb#%0?x(pPZkZOsqYM&K#T~)Q&rM&seAVfaRbxmseMUK)mT8kiZWR$Q^hpa1R1; z z62VnLNd{pDmJo}9&QeSJC0OkqZ_PKZ>ZTr)j?NC2)^-+@u3nB7l>bgtyV`cI1S2z~`j+V9Z-yV%>%)wDXF0k!So5?LGO;+6$qquT^=N0~T*+YMQ>zC*zUKJJc9kd*^9Rydw#2P)$QyFhu)KGi2K|;; zdNS#v2{-4I_k9R3o+1$pB*P_0GDAJ25-v6!pmt#v45886o_-Y)8gMXW1ktv9f! zm2s=N;pY-s8E2~5UQ^gQ35+QuLi_g|MqEp7 z4MbavfdVE-)rjd(FS#UW;W+4W3}8eZVM^d4gJ!yz@?xQ!p|)uf#^0?;kt3y}*ui%o z^ue64lh-jt#~N)gR}CKw}$p~IB zf(9YYWx4Li%0UQctks0&{HXf0Q}IzBAd`^CO8*fi0X(cO{4SJonuL06#!M)fP27%$ zH&A1>4K=*57bX(cH_q2dN~ThnV}WXm%$sIP1&;O;QAv1Gh_$&)i!rT)j?ytmwmc`g z66s~RRyFFO0#0oE0g5JQlq5LuDtqYTwA$rrJ zqFC3^@XdS>T{&AQwA(}?kyb=R#B(n{eDRwFikO&K<;m7DqBy+#PfX}gy`>2{D{Je` zz6cy#JUldihNR(-v9Xrh12IXl5?hug!9SZ+S>JWxAbu;#=M{=CF3Yv#L8K}vD+BK! z>FwYrj?vWC{ysnd>wq0yy2_~cx^!Db&!eW0uyAQ*rEKwx z?p#M_XYSUP8F)sH)YieF`0LjZ8wjAU2gsAWnIijNt?^kXQ%BlpMeAA^IKdl3(pQXsN62NZey^mDmUg3Ep?%qnKvC^>sC{$1 zG8jX`Keg}bd$aWJXt5?FEDSzsS4T%j!`Rs2CLJ^Q+cz#S8d*_eL`iFFrmFTE;$oHD z0TT{YW8+Dm)Aqsn3VlJx4TxUFyy>K^dKTRh zSD}e4L1{I$X%0gfFo4Iur?s{V?8_@F<2fuJ@>*KFXSX3cJ3BnQyfNNwEiD<1Yu-_l z;!nPdn#Bu;f^G-6?^} z-eTh5n9naR{P;1p;?Ox>oa?XX;qm+9c6)n!a!QJBGA6k7np#?)=H6vwWO)8w^;l~6 zXeI0z+qMA#B_n2T=^IeF`7=LK~0m{;mOIbyX!-mWmk9ii(!V`YM0#!wY0m<&CRhK zQIbz%=hC#R7m{2LtkdRgl4?Hee@8r=Ki_dwWE3f|#TY13etIn{B?X6;xt7>3i z=e}>xLoDdD1sibNOA#1UT2@^h-_|BlY1D3WzAS~PoFg)P>i=8#*F^ScmY|E3gTwCi zg7NP6!dC@3yC)~gmX`ETP*CW8^EId}jf(V2PiV+`E~N{aE^@cXT*YiX#&~|WZGGdcuaIb|WZkUOi}*tJinU#0U{csL-BMiM%_?re6cxm` z-p@fL1xf%&qh(;&K0Q@&ak(rx2JkREK3;!F{_yZn*VyQC@l&B}837J1AuH=>iu7WW zka9v5InJFS$$oZqUBT#*^Pt7{4Zar!(ag8A^D{T~r}FSoBw7V*Zp$%B9-dk1AbM<5 zQ`5eI0ij(lC{t|dBCT}7o5Sh`=@h$=n%t2S_2m)0l9R6{x?{-H_ta`b2EU0JLYKHj zM6&kwtaLnJAcg9~!Eh*Nm$l3}BlM^#g1_iut4kO@#jZ{@CagH7V<_)UP%n zE7QbJTh%Qi?j9bFZuLj0F&eOAo?l#;bqB+hXwHX9#4y~QlYB#^O1+9H)Jy!5FzRQ$ z;nO~){=+FqRA+s=w#=urSuLh}@6A&-uj2^G%)V=KYN{CzaYS@<-@*bxp}OE#Sb* zzw#0~8d0w<##hZJ(8djJX_`d=Eju)=b@D@~sz9j3+}zy##*wr0d`)Fy9f`K#J`%!DIvW*-DwaYIAuXxa;n zH*e(C)Ub4Qb?;X?A4s~pyZL?$f4Tk$RYM(CK6U#mem}~zfjVh|Hi(w?F1p>|fHAMI zF#<08)f?RU57r%6IG;%b@6q)tQh)p~5PQ0J(bLx#bUz|YNJ!}G?@##jNx|D&sI;{7 zrHstx?yej_5D-@k9Wp4W$kgR8M$6{1!6Tu>15^(!+dpUsY&(4nEB z&jo9C_JeY9K~YiI&S+Y#^UeroVf=@U`TkbxNNgGsn$`R7FZqYdd5D{A%#F$9Y%o*{ zD$T4l(MwIOJ(;pIUvE1?&&|%B#Rc4l%+JqDsu^o*%j)V90pO$J;Yt4Tg;rfdV|ZvN zueLU+aoykNdwCZG6r-gMKVk27@^+)iKbN~q?CeEtZCT*sST|q6@X*OchT6O?%hROj zol&`VGmUA#YCf-?PFw1e?mdP)4Go$fFX`7Mx%!sGqjbD6L9JwYDZq%BmG zUO$mmmS$dQuv}7Faz*!mmzQ;a%+hIAU8+r*%!bmf#NhJmjFOu>si{do&giD0E1HNq zo%>y^R?)}q{o%3SG*qlS-(G*nZ<*fJ%Dq_lzM9NqEW2u$do z2_>_x`6IfVnHlwqwlnCZrKP6k7^CXrO!>adPIJSbEj*r;gtJk0Es#9Ul3`o1{>sE` z(yIH!*qobg+=BD2O+{B#Rm?b%3q(+P+Rg_^Xw>bqpi&e=)k|OIt5SZ*>+Gb+R+ck1 z&Yd|Wqo9~n3AocZ>3s74n_VUSD_`v3f~P?YfK`dVbR||dPh=N6kffe z5fLF(QJL(Xi|aPYYi-SJX%U*p6`#zP4j1sgD(Szq*2lue?!i$J>86PjF)M(YhL&X< z{bf)ty%Lp~qpR;gGyUSK#LaNqJwPA^(9MM8#4UQMmKDS<-FSvH5M!*4<9&LlAQO_-Qa z28GE|3o~6%KCzF?<45;oz@rO@_lgWIT7{mOnWVZp9w}+*h>ssP=5&k;o0=9+-d&uX znXIamrngnw`ubiq z_m4ZQkp@yF9_i9q3piVk+Kjkk>72bMg?=wz!m5Zr@H}0-crxSm3hSAijB`7jKi?~e zTh^+VPNb!#rv4Ze<>L6W>x{{b$4Ie&thS3PsLQa(OxXlK)AByur)XVxW7$#liGkJs zb4SM-JDqmEYPHQAvv!ryaXiml>5HX84dGKt2H?lX1~YKNuD;35GNj z=%dMp>>|~oYvVwtbeDg;BNvzVOK!&cRFWL)_U<)dP^Dq3l0_q$Tsn$G=XSiRV;=!}yh4U(X0PS_HTqM#KY_?<*S`TfNR6S`LM zfrM;90$@=G2L}QkCs|9(#Q4I+s@1Oh>RjC1WI`66o}SfqOI+Z`%FeFNT5Eo4O2Wv9 z9LR+aVPRV*C-yGuVO0%bEZ?O=qn14LsCHjjRv|pv2fYnt-Kt!~>$@GKP7|ye%aul= z{UA{`_kDF$$;E{mFvd;56@4GB7kvNhr18DjmX?xg+Kv@QM0NFL*VNR+MIm7Sd3(Oi zC+ODN+Uj*!(b(jEOziS&jEadV;^)twlF~(mL!+BU*PCUf`GaBb-}QgqD9J1{qD8l7 zexY4sh$u`D9E(bis|w%VZgJ>uLYiG)S8;H70gBn|!h*~3GVesTu$+Yj9T-V|O$}Cs zwyoQAN&d&kNNP5=@y`LnMxNf@T<<1GgF`~z=Oh9O@aL=-W2x2S1>mz^zI@^EyL0{a z?VJ4T*B}^z0|OzN%qgGRp7c{sq=N@u4~AD%*dGYUa*sYZ_@^SeqL|sA`KI=>GVoEN z^Z)6y`^>`*O%x*wa7fVqUVwnzATKX3@YgR(AUJ>`+2&gWlmGz4Rx(1`=uXH&qg?Uy zzU!W=P)ke8^KDQpOq`lh?djBqU?L(SHUX_C zUvPV^;i062#>>l#i;oY2N(#{OnwlCKK+wg;qK6B!;330FN=i1h3OlH_wY4E4AxV~MF7x)s!UNC;PzH1f zB2^fU)fHm3esm-aU94+u5Hy|IngT1b@kG{{7ipQ3B7p#&XcIW1Hl3l4ky$;LFTp3DZWrh8oITHZeq(Dylck-RWtPM7F zqLWVaWXOqpbd&_wr|8ASH>od-CjdKnHX6$2VukHs;En9HwD5>y;Ej!UHS?RCw&C5} z+}!05e;^mCM}Xy^q6#W6XYJ|jmE&tkp)J@GgGrQ=jrXDbL^V2`;ZD$2g9?L0&$ut}dBHr&1MAM1OxVHa51BIh!l*cEcAXz!?A-IWs-InXG6kg$QJy zY{i8Q+FLFnpbl>D?yzxidI1TSS5mSVh$aH!1dG^45XP*IkRnKe$qV~9ZKCIFjuv5@ zTxT|qo70|b2;h8Q-^(JE+=)m$7AqT@&y|(2Wja;P=Ue^VUwQyj%AD~eCMITNVWFX; z>))LDqFq+_77qml1-Kd*tqHi&m*V22_;?AB<{&<_iNxrJ>u5H{zjyvX)sRsR zbS5r^8XZENq#6@;R$qv9PiN_^d!=k=#|nZFXg0@nzu(h8e!NytKnnOXYP{GP(5ZAM zYiLO3<>dwNe{6F{8(``1=qPuqQZQXpYwIP*+*;FKcra{b6O)ZRlwR*2HkU+0agIqM z5m(AIG*{$_FuNOtSq3Ei=^-;&rOYYFDT*?VjvNXK3eRZqa|nxv_>iAy|M++Z_&OqI zT`)ik3za(nyJHaC7}B~s+(1%s3)o?Q4=x6tOvh8gVj&5# z2&9Au)p^=DJrx)PCCzBo|$<129UtVyo;HO@I)K`rJ4IF&AEb0+cuc2Kmpad}%)Y zNeeC_FnU0Pmb`uk-9|(8>xRWq2RBRFzQOuSTPsbleSG43+FZa%Mc4fS(;T0%`U41| zvw3|7AfI`FPO<$x3tXXRSuE^+lvh(TU1@uDbMsldZ2ZMEn*=-4nM>SDe;1NURW0V) zkWM)>33?+%W8vPP41)Hl4lDEn5x_q=KdPNX1`Dt8F?pOKMUjs0{W2{wGV%wbs>Wsv zKR>^%s23fWf`Wol>}e~jaiAui14~H}+>ON_;YBBkPG7d-wybt?U%p?^%IDu35U!i( zQ|b3)yXt|0{aRH;@N`b`L=_wyeB^Ik6jxka{Ori}ZT5!Ccz86<`B~Z8;sjB|slh;Nal01e}5s6S2d0cXhP2zxn-jzkhgWKJEB>c1E}=Ubt|G z;E@dYnX;RN3Qv|)9?*{Hqyk;GRqemxQQ=*z-oM}3n=Z%_^}z>pyR%aqYX{<+w(WSauc0I8U7IL?N|TOiAV;hmwJ|v+sGWO6Jijl5LVfo&CSW`=x`DP89ud>utf2U(?%CmEU6&Z*!ch#spaK^>i7MIaN$)w!1`?3&G7+ufiU{X$-{$zk}?pK4tzGfmq3+& z`t<3gtSoSZWdj1lDg1BqHAbeELV#mR9&qoJ1JnyHG8}Lj4B9*s0B4F%OOpfj1%zry zBEXeotuk#i7yO0US;zZZr`lgIRIoZ#MunA?6V@w=O1PxTlpsB|EA;xiLl8J?GV7PzIDT`Of=rR4}oyBmwj;R2rIt zdsA-EoCu6!z)fZC?b(4fV9@EGEfa-b1L$P3BApZ>fT&{S>@8s86s#3jRKx(xsdn6y zD(*{G!Ob#5P*hUd2_-PfD=rQ%FE8&V^BG%G0M{24&91jyaK748OCzAbKu5P6&*1Ir z>zkUN|A!Bm`*_6wR^d&(4c_nd0CC`!FfcH@tG0RxLKt{dvvYF*Qzb!Zr0_ip>X+I% zK0YQD_sWG0!`q}5!Mm9a$ne_QngVC2H4kx1Yb&tjHVfj!%z)ht z{MqTnMS0)_8~gvEE7Ptp16cz!7NFp-_4P?|{cecD(aE;PK5_H#^UuuBTXGr>S@9&M zr42IV`u2dTfQW(7$wrqjV?fmK!PDKt!{vNSCcN)&Gy!o;*sC;lEJDH|U}Fltj&udD z{Td@eMnPF>bf5tE1&ZDo5LGn+PyU&sNXD)1F%|laiJ6(Bzs56lt4*N5h-sFQsNkQ5 zT!mKikU5Ap?%1G-rVzk4WM{mzV!OM$6Y#pAz5F%K?epWy_A~2#4i})DK^?WzDNh0- zwWA})W8E+9^JnTD-wTELO2b$3@`&E;{u~Y!pvEsR>wPUNo3`Q+xj*X#^tZ{oBv3&r z@8aS@p?+1v&5hT{$cWXrBMY!aH9GTvfKEfL1^ZCUU|<11muf#hQ2_Hie0=H#1|sR3 z&rYs`!)YG(P4jLJH%kRQo}HV;A`CzWfJgLzDzdhq;39{9{P+xOs5v>+fNDv1L$Y}L_G4AY zosD`EmjQdwtPL-)+3_pBCDL*RJo=LR9C4z;!=$krZe8uq07Ed=di?tQoC*XRh*(Yl z%0fayo_~)Uo86C>OLnbzh?!YfbX(ooz}nL z+f8Ta`no#D$9u0R|NIXhU>od~dSEa_0$22@M@&#LXY=f?k?`BU?T^IcOY3&w(`3dA3JOZ1E*dHn#gtOj z*MDVUu~YIMP(`nU(&DD)(r|M#08(>kNFJZvK%fXur&KdBBVz>EV2CIvy{oI)d3lun zz~uhsb@@xp??6vUX|l+v;ayX>Q(j!mfP{oZ124qIl?Z}7k=J%U+QyzkH*0%qYiM}5rYttz zfPHX${QcSX$3hRFBEaW!c-S%1luboNMFCDP*)@F4%p?J=2#PrI$EGD;E({C|5JP96 z$nmbst*m73&lG3!TGG?gUyN~2PEAd9JvSYiQ~}2vnw;ES^EstsVL@?la4175WWhxS zy8KxZiHVVWczD$5v8AM>JO?|d?8_FH>ZO{`%#GEs#dQQ77N#Xku@LwcF6psUNyA{Y zn*ewyff%w2MG2LXbamwcjlBYFMqpTjn5*3#-EjulHV7DtJjixXpL=8f{{6dsaw7KT z^^6{g7GR6dm;me!fC*Tnq|w0Rs#=&?ULFCC=%1fSDgurhf#acM&us*te36imGtN9L z2(sFv7xrDZKsRA){pn#{#@F|LBhd|XwYIu~V5Ev`v-sWqTv#Ner0^ajdd?InJ(~$z zygbA)!0ami7#Bwo%|13ZhWm6W{zL;ZR7OK1$@BhvutE_bGA0JEs_i1O1i(74M@46+ zG3fn7tUul~(oo~E`2nw{AFu^_Z*T9c7IzBhh2rZsQAI`cHSZ?LYuu0Zo>Sy}SNv(| zYY-5>H~?6mN=%D7?{{9vfYeQ2uy$}Dc>emKp&?8ak@F7%zPHtT2M5?vhzV(F49^Jt z3x#hdvc91~?|KX%t{E_{sF|5ZzBV0#(h(6EiTtiJGQUamNP+`X<=H#6oXAoDH~}1P z?InJI0rDy;yJwrdG)I!peG__my`3>ML_`xnFP_x{09{a_kVByhriXyO8m!}ENl|?E z4xhce>nm(b%r0=3oBbbz96J6K$xwizOj7%9vOzH0o0@|O5f(=Bowc>~SeD?74cs(O zHMj)L%~yV`p=DbcSy^myaxuG=6X1#f1ReabO+!W1U5RE21ovXKDa>FjSpmq3S@$9X z{%70Z(mmecv_@TDN{Ex3DC#_mFMyCktQ}YJba~rY-ijDLq<++FrDrUR6&nb zHv&*s+=*^p2ic_B2?5I)h&184zL)}zQpC3yKyJ$`D-TRgVi+46`}+AIp`z0A^12yl zje~*&WK97ORA#Lk8z%TKjO>1gaddQauo^T?nNg`x!2$xNy!7DRmd>M*-VOx!W@&Mb z+0IDHo@-0Dx(~pay0VrskkwzmM#3PVSA#xerE#Zyjh~4L<@EHl`-%mqw!qm0?!t5L z^L_E04bVK-Nar^gg zT-m)n&{^r&uR#JVEbu!Y!V+vZFko`*flUWMGJ&;!W^y^AK8(!F--IMymuklP2s7K> zIeh&pzI0YWIpqm@AGaX*hM)VGfO<&E$%QNJX7;=uTnVqKR0AE@2pooVUfa}}hOTc2 zjqTW?MnLo4oUTuTrl$?Jmr2+D^4gkMrQ?s(RQ#wr4AefP;~&jQ&(VutD@sqi?gc%( z;|!YkN3j+AdwY4`zI{K5#x9tax3DPG5|-4_(y9T3+x_H+wMUGc+_ta^CBP+UXy_v& z8G!AeZ*8m7??bp)wGFDh_Ir8O58xXTLHa&ffZ(8sF0SnI$dNz}efEV~U1rhXVSrR1 z=l<%25#id}*erqu2)JPFCs;rs0Q3CmEC_ly6GKx1uvuQf zR%46HE;#jWm84HfNKNH?vzHG>2?`MC+yMLTxwQczJnF;2>FF*28z4F_l5+1qeEf(Q z)j&)I8xs@L2Du9OgJgjbhVd3)bu*zlsJ6*@q!)a1V z%CkfVclq(rA9T~17#TNaRK)4{`4y1H$i(4C98odmp7d{9xlD%ipOgujzV1Q zmmm-cK*!{QCa;;98Q7gcPfPoup@9!91K5W_vcMhz8m@qBUZ;$A&N~!n7?@AO9_)aDFybO>GS6*j9v&XP^7Iq{ znB%^`_!?^nxv9C?X;Snz2%gcC)zgF&Z!jE?>Zb~)?-zKmahKo+`G`|fgxCXNF%#uSoz%+c4qq(9d`+ulZPARFeR zSN@9OZ*6UP0zUAj&GY;VJqEZkefkgbi7|yZ@Ldeze~>W5Za3bm-PuP<@a0ui#Q`~7 zj0cT|g0gM=bZz`+I?n&4qhoa$#R4<U0_26YwG8qpnE1&{utqEEXy)k;Bf~E#%gS@-F-zb$IAo8e8p!~a z2imi?@GWQ_E`g0YBz$&+sGfirP}C%PZ$&Val$M%;4yR?v9-Tr4E9?PWIWkVQYy>+3 zy-JV-K{u`t=(_M&Ata9OytS~X0S!NLub&B=wRC3Y=3XbwyMQuq+P>mCE)_zWLV8oL zQ_73IhYh1{b)jFMg%~Q;-Tr$mDlLrwSP;KvOEta}6|L zuxaH_)zjSz5VN4}faXpS2u>#CchC%hB-)~Jc<;S~CIjmOZKJSNpwpQ<2L=aMvat?# zcKS1TZA&UEe{IK!(~F7afYRv#*p~`CjhV0`q*{?wZ+0WpvQ$#5tEQwl5?JpXzotQ9mLjB(fE zPpB0GqQ60_uZi%<;Pp{#1c`(;;=06@{A%GFFy&$H@ddUH7_x(VO(A0NM(+aUwas5c zubTZ}hIyojKRjT_3GOv{YvS%jWCeRzh_SdEGl^hiBC+HgtM84B1IKp8eunMXpM$c< z^Ji^K7agVn5(mRsNglzp7+uz--=!S3=xaAOXg9xRPn7`u1|kCg1MMXz9yQmed>Ce; z>ce&nT&}(~^EfVtv^xj-fqpW1_-{d>`~m0)zMrU*S@Pd?RcT=)Ll+ZG8IJ~aiyWVq zLl4&blhVBzAwz_2b9fYCY71FcBP2o`-81Xz5&10D=c$B<&Mo1)LUY=oluqkj%=G%7 zd;5wwLjQRhJbwF>&B7vJ8Q@g}fl$4)c%xvcpuh}41RD~;PGcxo2oyMb{sr|P&Y_`T zATZ$RFmPal^XKptA!y(+3mjbF92Y!(1&4L` zKd;pR&ZoeE_>VuN;OzOE|LsvuK}nU8i=C5$or?#2o`Z{1h=WIni-(d^P>7pbh?@hv z8!GSLM+83lJeU74_W#*D_`oG#{x!zu-PG{^;T-Qjj2#O4pJNmO?}z@^IU?orHU4e9 zPm50*5KKi`1zB*zo`(*8J*_~bA&Bts2=H)-2nYyBNQlU&xM-*-D5yl(I2gEO#1!OY z#H6H@wCoI&)T}h5q>TJbtQ?%cbEIGp6cykSVdv)Idj1k9plnc4Pzlk{2)U?8sh%5P z|Mz~Lx*%AH&trmtqJ}_YLBU`_J@r8-z&POm+XO%VoC^3mGz=^pJOUyTG75M@JthRK zI1Dr_3>+LREO^xqybgiIg2Sfbl!V7oGew|w!sQA|$Va4+s_Dj4pFX4IHggU}LdGW` zBqFAxXJBMv=Hcbz7Z4PZekmg>C$FHWp{b><^F~+C{H=xMJ1c7&7gslT4^J=ekPo3@ z;U6O+6O)otQq$5uWqdC9Qdm@6Qu_5qS@XVa2k@0DHHtEivr}mGT{nsWI{QqcX|Hs7s zeO}8DR2V3*craKHamb&?NX9(q$mT+8o#kJp4n@|f-woCb#D+dAmj}c{-X?lNupQz2 z_&1D$ya~e12=wkGD{SOok!ZwTin9|*;Y0{B{4!mV*P@BX$mCf^vt1rI+**&_Ef0K&-7jC((t;J0MSc4~&Bjjr7pwARg&#)}2rjZe69@Ab zomIv|erva(2O=|m21kVonsxP|81r|Y*02PV_V%zf+33J-!=6Mg#0iZ2Jd7`oaJP6O z!kexOCt+@EMs)G;T4Jw>=%A~I|8(n!#BIVtx83#QszS;9$3w=&iL9`$5r=PaTYbzA zQi*&2_RKNq-O7YZY{Xo#7kGzgGeSN`{+}OJ8Dip|cszb) z;&^YO^$wi>c&LSHz1dxfm*r4CD<2HGWWn|~LHK?>e6KuXI_FR18M)@3pvIcBflEm? zjlnBNdEN{WTiTxw6k~n9Ol3${?uF_-?-RsS-}r&JesV!_L*);nKk*Z!x}xeaMh^lK z;W-DvQR`L_@cQgJYR$$&ts6UfCyrrXPwRqU;8lfg2j%+G0Rfi+>}%pxq(4$vvlx|D zFb4tXw{gnnV#yg{pM*wHumwayPW9%_7kb4%@{1uZ;I?w_*H+^U=HwnD-<>MYveoM& zI@s;#nxsgxFpWc;*YVukru|6|7GN*V|Im;*?>bypMIY{~Ec0t#h;SG0e_gbV_+5Ri zMX??Er!r8i&*LK(^-NOB9>~mMPorPRj?)`kb=DR=+{)&v!8M?Gq;lC?vY< z_Ox#{V_tD{c0mU++h**^Fa+Rh#MC!`BVpD|7I3+^`{@ZxPrMuHXa3CO-#F zsY$@$s!5Q}*KX;$9?R zisj5K{n;F)L}mF_pChNL|FN(Eg8>&RBCnnxCS_F*xN}oF;@h2n7;@;q!fGu%M%qAb zgP#|*1p_)@So&N?!IP0WE)&QHJ=1_wtNSXMi zk%tV#wS(h)qH5c=sd$c(-ggQu_3 z*)YdS)m|5`06RiP=mB3og^=r6{3xB|NAO1*Mf-Q8_)kIp>3|edUf%(l+wa#RBb_)@ zHgn%a6g<8(N%^k$@2z&Eq|Tveeb34}#W(x1b&4}zH*Pee6{z4q$#5HgjpyHHw07dd z)Hi>@V=o+e%JYIq+N%NONQPhHA)`Hmuw+ufYT`iP9}nLmWlTnhnrz7~qx*%?>K{t)89u>&fB6JilVuLzGpYY1#E9*+diXZo$=aOGN9k)Rq5} z-I`>G2l0A>{CgnS-xmBUK5%qKx5VRKXpEPgbK#fh72AZC_U$I1XfVr`9J;=p2!DBQ zxRyGK+c)m;@ZF0-@k&Wpvu=(Odqt7Z!)U9`rhLix$NptRMd4eg{iz4r%2;OA?|KDA z|9n_x$vt1cPnyJjf-Ev0K0#!7-<;?QBlVch$KHBWD81@y z;Y%R$IhI|+6mQ#V8yqku^%ccW^0O%7Nz>tyorX7p(3%V8VPvr9{{{bO#U5=(ez?h_ zd%%WS+tPz|kadtY=T~AN@^xp(69i>2(q6oQS5tf`fe)KYe7^BkC*4{bO)&3ZINZLQQ_1gb0Qg`S)x4c^R0?w z-o}I>R}b-CdJL$9ChY0gKj5?Kaz5NMi_azf@X`4`r=m5JH&@r1iIR+gd!B3}>kVii zSLEC|d*U6%$J46?!V7u}3gz`e3ssl`!wY7dm_F1yoyB$3d%U9CSG|tB4NLa+YHw40 zo%`Z;j7hGl3VdPCTcsP$9%4V0dsQ1q1k=!Sk*qHVijG9~f4|qww`FP>)M!jw6d0T+X*1eZ^&U@pCc;1(D+?s4JmAx?Q<<#rN zzK?9(Iic0PKJi0P+zWPi`Ob1R!KlR$rH5ZALbp;fY`uymwK7WT%oShwU3=fmHOf7U zp(+FwD#$2?ltC}oX;lv4=Br=7EeVOA*wXvscxsIKZz3K~5ZcSW&Ku;GC&;vtA)L#j z@Dn7_Ys>gAoMFITQRP*|XW{P+AOBHCO#l0`VVnD(BB>7Q=D}-sz)$^B;S6^HpSumm zL6r<0u}Zqqc(4OUjO%QyMg0dN3Wv$hcZCpNQ#U^kKNbZyC)SBU+E$!#ovK$0{s^~? z@~AgwbXQ*6!y?;jO~Ma28Z$(xHv^u0S!8<>_j}Nxpw^N#_UOMkd8Dtzq6@k{9Q46f3?qCzZ?G;cA}opsz<%OXYQl4%X3ko(HS)hh!fYC_y=gb(Q2yL zX-<|wwL4LPARoCJBM#bYZ~eu7H7mEMz37ee^mn(dhUgb%9=uMP%z=3jA*feIJES5^Z2ZFesxhLCfC@MAA@AP*U#xx}#z)4_ zkr0-=Glu(QakPL%?S&_ZY=z79lqb%kB1Kr|5sU2;q(D1RZ2g&ylsjPUxqA`+lrW{YkjCGLreT1yclp(yOs|thT~9zobtoD`Ta7A zV-q`ziDS+RC)SKm(?ipWiB!D>@EUtEelcgA1CE}ZJ?<9{6n2ejr29FNWQW_{>t}IM z^)C=?nM$lLC={p}b`t#1Ab#C4UcW;g*>64i@uwpg@O6sA!psoF^6qqOc;5>Yo%=a7 zE{qZ8p`?u5OP;@P{2;>O=0_7J8vg|;M>kF}e`_+bgXFBeJhXEDU=Je^QJyw;$C$%& zWso>G=GxrLx1Y+0Dv%(A(iQ@a%gnwqL#A!<{|m*Ta_ zWr|XNw_F(_f2wf;oTWa8q>CEU zM9WQd6j|U3>C_X%F$W44Y8zKg2K?s%&gjfeKJL^Pp|d^WCtl$cDUvb}*hFXL=ljX{ zx!q-By;r_XP598eXr@TNMkY?&uV%t86yilDBuGw#FaM*UbmUtWrtQkL3al^xLj7p= z3)uzjo<}BRSW6OG`wg50^0^UEXyJS{3TTuZux;=UnlC9&uW+G`0^lAge|Xj^CMkEy z*^bgd6%C@dH(zfx__N)Xcp7&Tyui(5Kaop9M@M96*SuBREb+zLNH3fvVmmnr&*o2e z)Di7OKF^JLwviVSg&Oj{$n!FE5f= z`Q5})ZeH5cMbH{WLs7)|!bhvk&2E$qRW*oF*fLe#5-4`)!XzQenFK_5ikI*}&8W%X zLjLXe&+=gJf8Y`jU&&`>`(Hr%e}bw6oM+=PLAhUMFTRjE$EusaJL4Oj++T1$O1@R+ ze|7%`#Nqe9Aw0@Q>E0Vm6i8p7d%bhsh_w}+zG z`S~G2h$D(O@pT-9FUfZ|3N(r%l9vq~4R8g^;`81i5)^C;<@daE*Scclw~aF2i!Le) zBJ9m*QYn85kl(^wRnjF&zZTVq4*YF9rpHchiqe#*auaF z+;F!fPfLufU6Eg{RVerR=W<~Zq3j)VHt-^)f4T+mEz#sBdbY6RkQaS4PiVhnS~c-*Fw+Y7HsjLgXJ~2EuV% zsGGqcU+Z_e?|Fz>t?SB>lZXI#>ozz>oiUM!@mF; zEEZIv9M81JZXM%0rn0>MBrRs4o++aQoGUpjU}``epW{wM0P^|MDvki)2|U zOS-i!5DVR4V;`{^b3tsB|6=mO=`E|BZPS4t!W(MygKeHr-WWOKZ2$5nnEP39%c6-%+2g&!Hmd@tbRV?(WL87a! zJdE@XL0c!AbxgWoIubi`Oah8N?~F^K)^ejKh_$W9?DiY)#Te%_rgy(2wfABw#98%C$pNCxS8*|*&_OyhD zTsQNKONv?S(87cps~J1#B;Na;{S-N^W^2;Zkcga`2R%Ty_=l#{;10&2Kny^aa_p3eD_o}oUc`~ZP$o2oi zoBthH^KY2LZ?-Ee>z{n^4+jk<=r;Ep^%mn*#AY4$j~^E1w40iD8GnrX{F&$OHGCKJ zDrQEOMvDBk?vU?nw_gNbzaX@7ui3YX5p4^NtU2H`=Cu_=IY$qndUedaqb2(~g6J*9 zM^aUIH2oRcH}(1o6er~)D!W>YuptTEc^K_H&G?4Q-(UW%z)tw1)pBtfyv85WM~)x< zx+y)tYKbu>C62uyze+6+x+yNI5o_h1YyR~Y$XT*+>4uJjvBLN|+rzI#%0g zkw(H%=kE7F5#kmM*u(f+m;QO;!XEBk)DTajJo4+wX$cC?ed6}i=A!-pQ=xI#viK33 zYhSms?Jb$#LDwARlYF0;9*$sl9sWvnw9TBF&$`~epoW#>LNJIXC5F^KBl-W19DmO9 z|9Ie$Hk?g_(npY~sP^*G;X+-;4W7bAp=26kTF-a08F=ZS5O!%F1&{|Qo*n$H>eJIo ztpYvklg|^#TT54>^&FvANM; zf&a93XnTvySL>RI4U>^@*xW)-KU}E8HTv7X6$dwQwnZz2!5xzEqz&SQUbHg`PTb?% zwL?E^xk(ePlT{&53@}NCqE)?}1ZzD>`g;U%B!ODN(O7>L4A0^=V+JGY8SDLIsWUWL zi97;E)x`__)JUySUy<72;hI1#sv-<~^LNML8`$6%9jaX9U22ZDJwedD9#{@h^j+)f z!qzxHL_oioLe-r8r={`#;;uJ{F!(tXd5%hVwk3_$*Uz&3`gD_2k1xaOC@28A%EM^h z`vP zursjiI~7uw)fQcQEw)Qmrw3*f0EQp5S%Gt6w_*tnT=cnimve8+g3bLVkim6Qg|i z5AjFy+y9gbblr>Jn3c@9MlaTR1m@~=q$)w7&4DLvi9qgIQ z{zQFzHZ|`;^p9z8FV5L%?lqlv4&z~uH4cxL6<)t`_56?6{Q|&70&t@3q;~y3^SF9f zhAQ?ydiOi(zZd{p8&miHXOLd}PdxvK{V$37PhR)`GxT1cf6+m%5jYgI{gM1%9{ZoF z`TrS?z4*`2dix{)zc%?lleYh7cwGAYO913~z`)ADV9)u3KTtH}=BH$)RpQogc2cDaP=gf6hSZA8G%Kgf zlH!2WqTs~bf}B(a3mpXz5_)T=4pb!wSLK|alV22EkeHmxV8}n4$rC842$ysLIx!?O z7vfB`g%z#g&7h?k!f?f|Kui78(uz|{7z`~9eEL2g0!oX(r9E>K(^Gv?^U_N)7>rEK zUY|augQ6WQAD)>4k+#@=Z6Qz^;hW(6w370~qErUt6(5YXPPc)oRN$7BWR&J6|LDTq@xn>R|f? z3N8&S3cUhc-97V4Qj3x^67$ki-SUfa6H6G34b7s1=CcCz=o7048oCxn1_oxY@6`jf zYGKhDkda@KpPO1zl$i{+73l4f#1gQ-g+#lgfVvd0=z=68P=X4`tVqpaFn)ObY!pzf zG)OJ*h&ij|{DR7&%=C;BhJezfoXlhem;Bts%)D(A4Wog|lwitIQj3#|G7G@=ful01 zG&83}H#1M6ILO_}C*2Wv$Q^?yOm%KzUTIola!F}XY7sc*edbL#1ysNXSCF3qbPPyq Tbb_ZdP=>+N)z4*}Q$iB}K{WUD 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..c54dcd43d6ac43edeb347bf7d2fdf576898d8559 GIT binary patch literal 23919 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 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..4498ead4ac97d2ca6a11dbcedcb9bfea449a6c61 GIT binary patch literal 25585 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 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..4cce3ef5ef68a06986d5c9df527bbe5034da70b2 GIT binary patch literal 29716 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 z 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml new file mode 100644 index 0000000..7775c01 --- /dev/null +++ b/app/src/main/res/navigation/nav_graph.xml @@ -0,0 +1,4 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml new file mode 100644 index 0000000..1b1f0ea --- /dev/null +++ b/app/src/main/res/values-night/themes.xml @@ -0,0 +1,16 @@ + + + + \ 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..f8c6127 --- /dev/null +++ b/app/src/main/res/values/colors.xml @@ -0,0 +1,10 @@ + + + #FFBB86FC + #FF6200EE + #FF3700B3 + #FF03DAC5 + #FF018786 + #FF000000 + #FFFFFFFF + \ 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..125df87 --- /dev/null +++ b/app/src/main/res/values/dimens.xml @@ -0,0 +1,3 @@ + + 16dp + \ 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..c5d5899 --- /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..489382d --- /dev/null +++ b/app/src/main/res/values/strings.xml @@ -0,0 +1,6 @@ + + Platypush + Settings + Next + Previous + \ 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..32ab82f --- /dev/null +++ b/app/src/main/res/values/themes.xml @@ -0,0 +1,25 @@ + + + + + + +