From 3330014fa99bcae6f32563bcd86b3c30a73a7a75 Mon Sep 17 00:00:00 2001 From: "Alinson S. Xavier" Date: Fri, 21 Mar 2025 20:38:12 -0500 Subject: [PATCH] Remove unused project dirs (uhabits-core-legacy, uhabits-ios, etc) --- docs/GUIDELINES.md | 11 - tools/androidStringsToKt.sh | 30 - tools/convertAllStrings.sh | 46 - .../assets/main/databases/template.db | Bin 462848 -> 0 bytes .../assets/main/fonts/FontAwesome.ttf | Bin 204528 -> 0 bytes .../assets/main/fonts/NotoSans-Bold.ttf | Bin 397972 -> 0 bytes .../assets/main/fonts/NotoSans-Regular.ttf | Bin 398284 -> 0 bytes .../assets/main/migrations/001.sql | 0 .../assets/main/migrations/002.sql | 0 .../assets/main/migrations/003.sql | 0 .../assets/main/migrations/004.sql | 0 .../assets/main/migrations/005.sql | 0 .../assets/main/migrations/006.sql | 0 .../assets/main/migrations/007.sql | 0 .../assets/main/migrations/008.sql | 0 .../assets/main/migrations/009.sql | 5 - .../assets/main/migrations/010.sql | 3 - .../assets/main/migrations/011.sql | 1 - .../assets/main/migrations/012.sql | 3 - .../assets/main/migrations/013.sql | 4 - .../assets/main/migrations/014.sql | 14 - .../assets/main/migrations/015.sql | 3 - .../assets/main/migrations/016.sql | 2 - .../assets/main/migrations/017.sql | 5 - .../assets/main/migrations/018.sql | 3 - .../assets/main/migrations/019.sql | 1 - .../assets/main/migrations/020.sql | 3 - .../assets/main/migrations/021.sql | 12 - .../assets/main/migrations/022.sql | 11 - .../assets/main/migrations/023.sql | 1 - .../test/components/BarChart/2-series.png | Bin 17239 -> 0 bytes .../test/components/BarChart/axis-monthly.png | Bin 18816 -> 0 bytes .../test/components/BarChart/axis-weekly.png | Bin 17794 -> 0 bytes .../test/components/BarChart/axis-yearly.png | Bin 16469 -> 0 bytes .../assets/test/components/BarChart/base.png | Bin 17335 -> 0 bytes .../test/components/CalendarChart/base.png | Bin 37881 -> 0 bytes .../test/components/CalendarChart/scroll.png | Bin 36152 -> 0 bytes .../assets/test/components/CanvasTest.png | Bin 24849 -> 0 bytes .../components/CheckmarkButton/explicit.png | Bin 350 -> 0 bytes .../components/CheckmarkButton/implicit.png | Bin 345 -> 0 bytes .../components/CheckmarkButton/unchecked.png | Bin 424 -> 0 bytes .../test/components/HabitListHeader/light.png | Bin 4278 -> 0 bytes .../components/NumberButton/render_above.png | Bin 1653 -> 0 bytes .../components/NumberButton/render_below.png | Bin 1341 -> 0 bytes .../components/NumberButton/render_zero.png | Bin 1322 -> 0 bytes .../assets/test/components/Ring/draw1.png | Bin 3606 -> 0 bytes uhabits-core-legacy/assets/test/hello.txt | 2 - uhabits-core-legacy/build.gradle | 136 - uhabits-core-legacy/gradle.properties | 2 - uhabits-core-legacy/settings.gradle | 9 - .../src/main/c_interop/sqlite3.def | 25 - .../isoron/platform/concurrency/Observable.kt | 36 - .../common/org/isoron/platform/gui/Canvas.kt | 52 - .../common/org/isoron/platform/gui/Colors.kt | 45 - .../org/isoron/platform/gui/Component.kt | 24 - .../org/isoron/platform/gui/FontAwesome.kt | 27 - .../common/org/isoron/platform/gui/Image.kt | 64 - .../common/org/isoron/platform/io/Database.kt | 107 - .../common/org/isoron/platform/io/Files.kt | 98 - .../main/common/org/isoron/platform/io/Log.kt | 46 - .../common/org/isoron/platform/io/Strings.kt | 24 - .../common/org/isoron/platform/time/Dates.kt | 173 - .../main/common/org/isoron/uhabits/Config.kt | 22 - .../org/isoron/uhabits/backend/Backend.kt | 136 - .../uhabits/backend/MainScreenDataSource.kt | 74 - .../org/isoron/uhabits/components/BarChart.kt | 164 - .../uhabits/components/CalendarChart.kt | 125 - .../uhabits/components/CheckmarkButton.kt | 40 - .../uhabits/components/HabitListHeader.kt | 56 - .../isoron/uhabits/components/NumberButton.kt | 71 - .../org/isoron/uhabits/components/Ring.kt | 53 - .../org/isoron/uhabits/components/Themes.kt | 70 - .../org/isoron/uhabits/i18n/LocaleHelper.kt | 24 - .../common/org/isoron/uhabits/i18n/Strings.kt | 190 - .../org/isoron/uhabits/models/Checkmark.kt | 47 - .../isoron/uhabits/models/CheckmarkList.kt | 204 - .../uhabits/models/CheckmarkRepository.kt | 59 - .../org/isoron/uhabits/models/Frequency.kt | 34 - .../common/org/isoron/uhabits/models/Habit.kt | 33 - .../isoron/uhabits/models/HabitRepository.kt | 100 - .../org/isoron/uhabits/models/HabitType.kt | 25 - .../org/isoron/uhabits/models/Preferences.kt | 40 - .../uhabits/models/PreferencesRepository.kt | 69 - .../common/org/isoron/uhabits/models/Score.kt | 39 - .../org/isoron/uhabits/models/ScoreList.kt | 70 - .../org/isoron/uhabits/models/Streak.kt | 34 - .../org/isoron/uhabits/models/StreakList.kt | 34 - .../platform/concurrency/UIDispatcher.kt | 33 - .../ios/org/isoron/platform/gui/IosCanvas.kt | 149 - .../ios/org/isoron/platform/gui/IosImage.kt | 55 - .../ios/org/isoron/platform/io/IosDatabase.kt | 111 - .../ios/org/isoron/platform/io/IosFiles.kt | 68 - .../ios/org/isoron/platform/io/Strings.kt | 46 - .../ios/org/isoron/platform/time/IosDates.kt | 55 - .../ios/org/isoron/uhabits/IosLocaleHelper.kt | 37 - .../js/org/isoron/platform/gui/JsCanvas.kt | 143 - .../js/org/isoron/platform/gui/JsImage.kt | 72 - .../js/org/isoron/platform/io/JsDatabase.kt | 80 - .../main/js/org/isoron/platform/io/JsFiles.kt | 165 - .../js/org/isoron/platform/io/JsStrings.kt | 32 - .../js/org/isoron/platform/time/JsDates.kt | 38 - .../jvm/org/isoron/platform/gui/JavaCanvas.kt | 168 - .../jvm/org/isoron/platform/gui/JavaImage.kt | 48 - .../org/isoron/platform/io/JavaDatabase.kt | 101 - .../jvm/org/isoron/platform/io/JavaFiles.kt | 83 - .../jvm/org/isoron/platform/io/Strings.kt | 29 - .../jvm/org/isoron/platform/time/JavaDates.kt | 52 - .../src/test/common/org/isoron/AsyncTests.kt | 26 - .../common/org/isoron/DependencyResolver.kt | 36 - .../platform/concurrency/ObservableTest.kt | 46 - .../org/isoron/platform/gui/CanvasTest.kt | 71 - .../org/isoron/platform/io/DatabaseTest.kt | 64 - .../org/isoron/platform/io/FilesTest.kt | 59 - .../org/isoron/platform/io/StringsTest.kt | 37 - .../org/isoron/platform/time/DatesTest.kt | 142 - .../common/org/isoron/uhabits/BaseViewTest.kt | 71 - .../isoron/uhabits/components/BarChartTest.kt | 79 - .../uhabits/components/CalendarChartTest.kt | 48 - .../uhabits/components/CheckmarkButtonTest.kt | 46 - .../uhabits/components/HabitListHeaderTest.kt | 34 - .../uhabits/components/NumberButtonTest.kt | 58 - .../org/isoron/uhabits/components/RingTest.kt | 39 - .../uhabits/models/CheckmarkListTest.kt | 184 - .../uhabits/models/CheckmarkRepositoryTest.kt | 57 - .../uhabits/models/HabitRepositoryTest.kt | 91 - .../models/PreferencesRepositoryTest.kt | 44 - .../isoron/uhabits/models/ScoreListTest.kt | 91 - .../test/ios/org/isoron/DependencyResolver.kt | 58 - .../src/test/ios/org/isoron/IosAsyncTests.kt | 28 - .../test/js/org/isoron/DependencyResolver.kt | 68 - .../src/test/js/org/isoron/JsAsyncTests.kt | 28 - .../test/jvm/org/isoron/DependencyResolver.kt | 60 - .../src/test/jvm/org/isoron/JavaAsyncTests.kt | 28 - uhabits-ios/Application/AppDelegate.swift | 54 - .../AppIcon.appiconset/Contents.json | 100 - .../AppIcon.appiconset/loop-120.png | Bin 6481 -> 0 bytes .../AppIcon.appiconset/loop-180.png | Bin 11688 -> 0 bytes .../Application/Assets.xcassets/Contents.json | 6 - .../ic_more.imageset/Contents.json | 23 - .../baseline_more_horiz_black_24pt_1x.png | Bin 116 -> 0 bytes .../baseline_more_horiz_black_24pt_2x.png | Bin 156 -> 0 bytes .../baseline_more_horiz_black_24pt_3x.png | Bin 199 -> 0 bytes uhabits-ios/Application/BridgingHeader.h | 20 - .../Frontend/AboutScreenController.swift | 23 - .../Frontend/DetailScreenController.swift | 115 - .../Frontend/EditHabitController.swift | 87 - .../Frontend/MainScreenController.swift | 271 - uhabits-ios/Application/Info.plist | 49 - uhabits-ios/Application/Launch.storyboard | 7 - .../Application/Platform/ComponentView.swift | 44 - uhabits-ios/Tests/Info.plist | 26 - uhabits-ios/uhabits.xcodeproj/project.pbxproj | 584 -- .../contents.xcworkspacedata | 7 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../xcshareddata/WorkspaceSettings.xcsettings | 5 - uhabits-server/.gitignore | 7 - uhabits-server/Dockerfile | 11 - uhabits-server/build.gradle.kts | 62 - .../org/isoron/uhabits/sync/SyncData.kt | 35 - .../org/isoron/uhabits/sync/SyncException.kt | 28 - .../org/isoron/uhabits/sync/app/LinkModule.kt | 55 - .../isoron/uhabits/sync/app/MetricsModule.kt | 44 - .../uhabits/sync/app/RegistrationModule.kt | 37 - .../isoron/uhabits/sync/app/StorageModule.kt | 62 - .../uhabits/sync/app/SyncApplication.kt | 53 - .../org/isoron/uhabits/sync/links/Link.kt | 36 - .../isoron/uhabits/sync/links/LinkManager.kt | 49 - .../uhabits/sync/repository/FileRepository.kt | 73 - .../uhabits/sync/repository/Repository.kt | 46 - .../uhabits/sync/server/AbstractSyncServer.kt | 81 - .../sync/server/RepositorySyncServer.kt | 94 - .../org/isoron/uhabits/sync/utils/String.kt | 31 - .../src/main/resources/application.conf | 9 - uhabits-server/src/main/resources/logback.xml | 31 - .../uhabits/sync/app/BaseApplicationTest.kt | 35 - .../uhabits/sync/app/LinksModuleTest.kt | 91 - .../sync/app/RegistrationModuleTest.kt | 51 - .../uhabits/sync/app/StorageModuleTest.kt | 111 - .../uhabits/sync/links/LinkManagerTest.kt | 44 - .../sync/repository/FileRepositoryTest.kt | 53 - .../sync/server/RepositorySyncServerTest.kt | 60 - uhabits-web/.babelrc | 6 - uhabits-web/Makefile | 35 - uhabits-web/package-lock.json | 6080 ----------------- uhabits-web/package.json | 34 - uhabits-web/src/main/index.js | 1 - uhabits-web/src/test/index.html | 51 - uhabits-web/src/test/index.js | 3 - 188 files changed, 14927 deletions(-) delete mode 100755 tools/androidStringsToKt.sh delete mode 100755 tools/convertAllStrings.sh delete mode 100644 uhabits-core-legacy/assets/main/databases/template.db delete mode 100644 uhabits-core-legacy/assets/main/fonts/FontAwesome.ttf delete mode 100755 uhabits-core-legacy/assets/main/fonts/NotoSans-Bold.ttf delete mode 100755 uhabits-core-legacy/assets/main/fonts/NotoSans-Regular.ttf delete mode 100644 uhabits-core-legacy/assets/main/migrations/001.sql delete mode 100644 uhabits-core-legacy/assets/main/migrations/002.sql delete mode 100644 uhabits-core-legacy/assets/main/migrations/003.sql delete mode 100644 uhabits-core-legacy/assets/main/migrations/004.sql delete mode 100644 uhabits-core-legacy/assets/main/migrations/005.sql delete mode 100644 uhabits-core-legacy/assets/main/migrations/006.sql delete mode 100644 uhabits-core-legacy/assets/main/migrations/007.sql delete mode 100644 uhabits-core-legacy/assets/main/migrations/008.sql delete mode 100644 uhabits-core-legacy/assets/main/migrations/009.sql delete mode 100644 uhabits-core-legacy/assets/main/migrations/010.sql delete mode 100644 uhabits-core-legacy/assets/main/migrations/011.sql delete mode 100644 uhabits-core-legacy/assets/main/migrations/012.sql delete mode 100644 uhabits-core-legacy/assets/main/migrations/013.sql delete mode 100644 uhabits-core-legacy/assets/main/migrations/014.sql delete mode 100644 uhabits-core-legacy/assets/main/migrations/015.sql delete mode 100644 uhabits-core-legacy/assets/main/migrations/016.sql delete mode 100644 uhabits-core-legacy/assets/main/migrations/017.sql delete mode 100644 uhabits-core-legacy/assets/main/migrations/018.sql delete mode 100644 uhabits-core-legacy/assets/main/migrations/019.sql delete mode 100644 uhabits-core-legacy/assets/main/migrations/020.sql delete mode 100644 uhabits-core-legacy/assets/main/migrations/021.sql delete mode 100644 uhabits-core-legacy/assets/main/migrations/022.sql delete mode 100644 uhabits-core-legacy/assets/main/migrations/023.sql delete mode 100644 uhabits-core-legacy/assets/test/components/BarChart/2-series.png delete mode 100644 uhabits-core-legacy/assets/test/components/BarChart/axis-monthly.png delete mode 100644 uhabits-core-legacy/assets/test/components/BarChart/axis-weekly.png delete mode 100644 uhabits-core-legacy/assets/test/components/BarChart/axis-yearly.png delete mode 100644 uhabits-core-legacy/assets/test/components/BarChart/base.png delete mode 100644 uhabits-core-legacy/assets/test/components/CalendarChart/base.png delete mode 100644 uhabits-core-legacy/assets/test/components/CalendarChart/scroll.png delete mode 100644 uhabits-core-legacy/assets/test/components/CanvasTest.png delete mode 100644 uhabits-core-legacy/assets/test/components/CheckmarkButton/explicit.png delete mode 100644 uhabits-core-legacy/assets/test/components/CheckmarkButton/implicit.png delete mode 100644 uhabits-core-legacy/assets/test/components/CheckmarkButton/unchecked.png delete mode 100644 uhabits-core-legacy/assets/test/components/HabitListHeader/light.png delete mode 100644 uhabits-core-legacy/assets/test/components/NumberButton/render_above.png delete mode 100644 uhabits-core-legacy/assets/test/components/NumberButton/render_below.png delete mode 100644 uhabits-core-legacy/assets/test/components/NumberButton/render_zero.png delete mode 100644 uhabits-core-legacy/assets/test/components/Ring/draw1.png delete mode 100644 uhabits-core-legacy/assets/test/hello.txt delete mode 100644 uhabits-core-legacy/build.gradle delete mode 100644 uhabits-core-legacy/gradle.properties delete mode 100644 uhabits-core-legacy/settings.gradle delete mode 100644 uhabits-core-legacy/src/main/c_interop/sqlite3.def delete mode 100644 uhabits-core-legacy/src/main/common/org/isoron/platform/concurrency/Observable.kt delete mode 100644 uhabits-core-legacy/src/main/common/org/isoron/platform/gui/Canvas.kt delete mode 100644 uhabits-core-legacy/src/main/common/org/isoron/platform/gui/Colors.kt delete mode 100644 uhabits-core-legacy/src/main/common/org/isoron/platform/gui/Component.kt delete mode 100644 uhabits-core-legacy/src/main/common/org/isoron/platform/gui/FontAwesome.kt delete mode 100644 uhabits-core-legacy/src/main/common/org/isoron/platform/gui/Image.kt delete mode 100644 uhabits-core-legacy/src/main/common/org/isoron/platform/io/Database.kt delete mode 100644 uhabits-core-legacy/src/main/common/org/isoron/platform/io/Files.kt delete mode 100644 uhabits-core-legacy/src/main/common/org/isoron/platform/io/Log.kt delete mode 100644 uhabits-core-legacy/src/main/common/org/isoron/platform/io/Strings.kt delete mode 100644 uhabits-core-legacy/src/main/common/org/isoron/platform/time/Dates.kt delete mode 100644 uhabits-core-legacy/src/main/common/org/isoron/uhabits/Config.kt delete mode 100644 uhabits-core-legacy/src/main/common/org/isoron/uhabits/backend/Backend.kt delete mode 100644 uhabits-core-legacy/src/main/common/org/isoron/uhabits/backend/MainScreenDataSource.kt delete mode 100644 uhabits-core-legacy/src/main/common/org/isoron/uhabits/components/BarChart.kt delete mode 100644 uhabits-core-legacy/src/main/common/org/isoron/uhabits/components/CalendarChart.kt delete mode 100644 uhabits-core-legacy/src/main/common/org/isoron/uhabits/components/CheckmarkButton.kt delete mode 100644 uhabits-core-legacy/src/main/common/org/isoron/uhabits/components/HabitListHeader.kt delete mode 100644 uhabits-core-legacy/src/main/common/org/isoron/uhabits/components/NumberButton.kt delete mode 100644 uhabits-core-legacy/src/main/common/org/isoron/uhabits/components/Ring.kt delete mode 100644 uhabits-core-legacy/src/main/common/org/isoron/uhabits/components/Themes.kt delete mode 100644 uhabits-core-legacy/src/main/common/org/isoron/uhabits/i18n/LocaleHelper.kt delete mode 100644 uhabits-core-legacy/src/main/common/org/isoron/uhabits/i18n/Strings.kt delete mode 100644 uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/Checkmark.kt delete mode 100644 uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/CheckmarkList.kt delete mode 100644 uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/CheckmarkRepository.kt delete mode 100644 uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/Frequency.kt delete mode 100644 uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/Habit.kt delete mode 100644 uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/HabitRepository.kt delete mode 100644 uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/HabitType.kt delete mode 100644 uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/Preferences.kt delete mode 100644 uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/PreferencesRepository.kt delete mode 100644 uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/Score.kt delete mode 100644 uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/ScoreList.kt delete mode 100644 uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/Streak.kt delete mode 100644 uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/StreakList.kt delete mode 100644 uhabits-core-legacy/src/main/ios/org/isoron/platform/concurrency/UIDispatcher.kt delete mode 100644 uhabits-core-legacy/src/main/ios/org/isoron/platform/gui/IosCanvas.kt delete mode 100644 uhabits-core-legacy/src/main/ios/org/isoron/platform/gui/IosImage.kt delete mode 100644 uhabits-core-legacy/src/main/ios/org/isoron/platform/io/IosDatabase.kt delete mode 100644 uhabits-core-legacy/src/main/ios/org/isoron/platform/io/IosFiles.kt delete mode 100644 uhabits-core-legacy/src/main/ios/org/isoron/platform/io/Strings.kt delete mode 100644 uhabits-core-legacy/src/main/ios/org/isoron/platform/time/IosDates.kt delete mode 100644 uhabits-core-legacy/src/main/ios/org/isoron/uhabits/IosLocaleHelper.kt delete mode 100644 uhabits-core-legacy/src/main/js/org/isoron/platform/gui/JsCanvas.kt delete mode 100644 uhabits-core-legacy/src/main/js/org/isoron/platform/gui/JsImage.kt delete mode 100644 uhabits-core-legacy/src/main/js/org/isoron/platform/io/JsDatabase.kt delete mode 100644 uhabits-core-legacy/src/main/js/org/isoron/platform/io/JsFiles.kt delete mode 100644 uhabits-core-legacy/src/main/js/org/isoron/platform/io/JsStrings.kt delete mode 100644 uhabits-core-legacy/src/main/js/org/isoron/platform/time/JsDates.kt delete mode 100644 uhabits-core-legacy/src/main/jvm/org/isoron/platform/gui/JavaCanvas.kt delete mode 100644 uhabits-core-legacy/src/main/jvm/org/isoron/platform/gui/JavaImage.kt delete mode 100644 uhabits-core-legacy/src/main/jvm/org/isoron/platform/io/JavaDatabase.kt delete mode 100644 uhabits-core-legacy/src/main/jvm/org/isoron/platform/io/JavaFiles.kt delete mode 100644 uhabits-core-legacy/src/main/jvm/org/isoron/platform/io/Strings.kt delete mode 100644 uhabits-core-legacy/src/main/jvm/org/isoron/platform/time/JavaDates.kt delete mode 100644 uhabits-core-legacy/src/test/common/org/isoron/AsyncTests.kt delete mode 100644 uhabits-core-legacy/src/test/common/org/isoron/DependencyResolver.kt delete mode 100644 uhabits-core-legacy/src/test/common/org/isoron/platform/concurrency/ObservableTest.kt delete mode 100644 uhabits-core-legacy/src/test/common/org/isoron/platform/gui/CanvasTest.kt delete mode 100644 uhabits-core-legacy/src/test/common/org/isoron/platform/io/DatabaseTest.kt delete mode 100644 uhabits-core-legacy/src/test/common/org/isoron/platform/io/FilesTest.kt delete mode 100644 uhabits-core-legacy/src/test/common/org/isoron/platform/io/StringsTest.kt delete mode 100644 uhabits-core-legacy/src/test/common/org/isoron/platform/time/DatesTest.kt delete mode 100644 uhabits-core-legacy/src/test/common/org/isoron/uhabits/BaseViewTest.kt delete mode 100644 uhabits-core-legacy/src/test/common/org/isoron/uhabits/components/BarChartTest.kt delete mode 100644 uhabits-core-legacy/src/test/common/org/isoron/uhabits/components/CalendarChartTest.kt delete mode 100644 uhabits-core-legacy/src/test/common/org/isoron/uhabits/components/CheckmarkButtonTest.kt delete mode 100644 uhabits-core-legacy/src/test/common/org/isoron/uhabits/components/HabitListHeaderTest.kt delete mode 100644 uhabits-core-legacy/src/test/common/org/isoron/uhabits/components/NumberButtonTest.kt delete mode 100644 uhabits-core-legacy/src/test/common/org/isoron/uhabits/components/RingTest.kt delete mode 100644 uhabits-core-legacy/src/test/common/org/isoron/uhabits/models/CheckmarkListTest.kt delete mode 100644 uhabits-core-legacy/src/test/common/org/isoron/uhabits/models/CheckmarkRepositoryTest.kt delete mode 100644 uhabits-core-legacy/src/test/common/org/isoron/uhabits/models/HabitRepositoryTest.kt delete mode 100644 uhabits-core-legacy/src/test/common/org/isoron/uhabits/models/PreferencesRepositoryTest.kt delete mode 100644 uhabits-core-legacy/src/test/common/org/isoron/uhabits/models/ScoreListTest.kt delete mode 100644 uhabits-core-legacy/src/test/ios/org/isoron/DependencyResolver.kt delete mode 100644 uhabits-core-legacy/src/test/ios/org/isoron/IosAsyncTests.kt delete mode 100644 uhabits-core-legacy/src/test/js/org/isoron/DependencyResolver.kt delete mode 100644 uhabits-core-legacy/src/test/js/org/isoron/JsAsyncTests.kt delete mode 100644 uhabits-core-legacy/src/test/jvm/org/isoron/DependencyResolver.kt delete mode 100644 uhabits-core-legacy/src/test/jvm/org/isoron/JavaAsyncTests.kt delete mode 100644 uhabits-ios/Application/AppDelegate.swift delete mode 100644 uhabits-ios/Application/Assets.xcassets/AppIcon.appiconset/Contents.json delete mode 100644 uhabits-ios/Application/Assets.xcassets/AppIcon.appiconset/loop-120.png delete mode 100644 uhabits-ios/Application/Assets.xcassets/AppIcon.appiconset/loop-180.png delete mode 100644 uhabits-ios/Application/Assets.xcassets/Contents.json delete mode 100644 uhabits-ios/Application/Assets.xcassets/ic_more.imageset/Contents.json delete mode 100644 uhabits-ios/Application/Assets.xcassets/ic_more.imageset/baseline_more_horiz_black_24pt_1x.png delete mode 100644 uhabits-ios/Application/Assets.xcassets/ic_more.imageset/baseline_more_horiz_black_24pt_2x.png delete mode 100644 uhabits-ios/Application/Assets.xcassets/ic_more.imageset/baseline_more_horiz_black_24pt_3x.png delete mode 100644 uhabits-ios/Application/BridgingHeader.h delete mode 100644 uhabits-ios/Application/Frontend/AboutScreenController.swift delete mode 100644 uhabits-ios/Application/Frontend/DetailScreenController.swift delete mode 100644 uhabits-ios/Application/Frontend/EditHabitController.swift delete mode 100644 uhabits-ios/Application/Frontend/MainScreenController.swift delete mode 100644 uhabits-ios/Application/Info.plist delete mode 100644 uhabits-ios/Application/Launch.storyboard delete mode 100644 uhabits-ios/Application/Platform/ComponentView.swift delete mode 100644 uhabits-ios/Tests/Info.plist delete mode 100644 uhabits-ios/uhabits.xcodeproj/project.pbxproj delete mode 100644 uhabits-ios/uhabits.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 uhabits-ios/uhabits.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 uhabits-ios/uhabits.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings delete mode 100644 uhabits-server/.gitignore delete mode 100644 uhabits-server/Dockerfile delete mode 100644 uhabits-server/build.gradle.kts delete mode 100644 uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/SyncData.kt delete mode 100644 uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/SyncException.kt delete mode 100644 uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/app/LinkModule.kt delete mode 100644 uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/app/MetricsModule.kt delete mode 100644 uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/app/RegistrationModule.kt delete mode 100644 uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/app/StorageModule.kt delete mode 100644 uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/app/SyncApplication.kt delete mode 100644 uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/links/Link.kt delete mode 100644 uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/links/LinkManager.kt delete mode 100644 uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/repository/FileRepository.kt delete mode 100644 uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/repository/Repository.kt delete mode 100644 uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/server/AbstractSyncServer.kt delete mode 100644 uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/server/RepositorySyncServer.kt delete mode 100644 uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/utils/String.kt delete mode 100644 uhabits-server/src/main/resources/application.conf delete mode 100644 uhabits-server/src/main/resources/logback.xml delete mode 100644 uhabits-server/src/test/kotlin/org/isoron/uhabits/sync/app/BaseApplicationTest.kt delete mode 100644 uhabits-server/src/test/kotlin/org/isoron/uhabits/sync/app/LinksModuleTest.kt delete mode 100644 uhabits-server/src/test/kotlin/org/isoron/uhabits/sync/app/RegistrationModuleTest.kt delete mode 100644 uhabits-server/src/test/kotlin/org/isoron/uhabits/sync/app/StorageModuleTest.kt delete mode 100644 uhabits-server/src/test/kotlin/org/isoron/uhabits/sync/links/LinkManagerTest.kt delete mode 100644 uhabits-server/src/test/kotlin/org/isoron/uhabits/sync/repository/FileRepositoryTest.kt delete mode 100644 uhabits-server/src/test/kotlin/org/isoron/uhabits/sync/server/RepositorySyncServerTest.kt delete mode 100644 uhabits-web/.babelrc delete mode 100644 uhabits-web/Makefile delete mode 100644 uhabits-web/package-lock.json delete mode 100644 uhabits-web/package.json delete mode 100644 uhabits-web/src/main/index.js delete mode 100644 uhabits-web/src/test/index.html delete mode 100644 uhabits-web/src/test/index.js diff --git a/docs/GUIDELINES.md b/docs/GUIDELINES.md index c24b375cb..8876b0805 100644 --- a/docs/GUIDELINES.md +++ b/docs/GUIDELINES.md @@ -12,17 +12,6 @@ Please see `docs/BUILD.md` and `docs/TEST.md` -## Directory Layout - -* `docs` Documentation for developers. -* `landing` Source code for our [landing page](http://loophabits.org/). -* `uhabits-android` Android-specific code. -* `uhabits-core` Common code used by all platforms (Android, iOS). -* `uhabits-core-legacy` Proof-of-concept module, developed to evaluate the feasibility of using Kotlin multiplatform for the app; not currently used, and it will be removed soon, once all useful code is ported to the other modules. -* `uhabits-ios` Experimental iOS port of Loop. Not currently used in production. -* `uhabits-server` Source code for any server-side components the app (for example, device sync). -* `uhabits-web` Experimental web port of Loop. Not currently used in production. - ## Branching Policy This repository uses the [git-flow branching model](https://nvie.com/posts/a-successful-git-branching-model/). Basically, there are two main branches, `dev` and `master`. All the development takes place in the `dev` branch. After the new features have been implemented and tested, they are merged into the `master` branch and a new version of the app is released. Please submit your pull requests against the `dev` branch. diff --git a/tools/androidStringsToKt.sh b/tools/androidStringsToKt.sh deleted file mode 100755 index b1ed51dcf..000000000 --- a/tools/androidStringsToKt.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash -input=$1 -locale_name=$2 - -cat <\([^<]*\)<.*/ '"$prefix"'val \1 = "\2"/' - -echo "}" diff --git a/tools/convertAllStrings.sh b/tools/convertAllStrings.sh deleted file mode 100755 index fba8830b9..000000000 --- a/tools/convertAllStrings.sh +++ /dev/null @@ -1,46 +0,0 @@ -#!/bin/bash - -INPUT_DIR=../android/uhabits-android/src/main/res/ -OUTPUT_DIR=../core/src/commonMain/kotlin/org/isoron/uhabits/i18n/ - -convert() { - ./androidStringsToKt.sh $INPUT_DIR/$1/strings.xml "$2" > $OUTPUT_DIR/Strings$2.kt -} - -#convert values "" -convert values-ar Arabic -convert values-bg Bulgarian -convert values-ca Catalan -convert values-cs Czech -convert values-da Danish -convert values-de German -convert values-el Greek -convert values-eo Esperanto -convert values-es Spanish -convert values-eu Basque -convert values-fa Persian -convert values-fi Finnish -convert values-fr French -convert values-hi Hindi -convert values-hr Croatian -convert values-hu Hungarian -convert values-in Indonesian -convert values-it Italian -convert values-iw Hebrew -convert values-ja Japanese -convert values-ko Korean -convert values-nl Dutch -convert values-no-rNO Norwegian -convert values-pl Polish -convert values-pt-rBR PortugueseBR -convert values-pt-rPT PortuguesePT -convert values-ro Romanian -convert values-ru Russian -convert values-sl Slovak -convert values-sr Serbian -convert values-sv Swedish -convert values-tr Turkish -convert values-uk Ukrainian -convert values-vi Vietnamese -convert values-zh-rCN ChineseCN -convert values-zh-rTW ChineseTW diff --git a/uhabits-core-legacy/assets/main/databases/template.db b/uhabits-core-legacy/assets/main/databases/template.db deleted file mode 100644 index 5e920e8d7d83a18cbfb1fe56e31612f416f3310c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 462848 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

@1K}NSt&Ys7Ew?Enr+Vgmj6Btd- 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 #((9fAj-L`m^awbs{1?XHz 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

    `a1~~Lz1TchW$g5 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 diff --git a/uhabits-core-legacy/assets/main/fonts/FontAwesome.ttf b/uhabits-core-legacy/assets/main/fonts/FontAwesome.ttf deleted file mode 100644 index bc640928c36e0d678aa1d199dd128602f4c7f97c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 204528 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 N@t^#^6n6Z>e*u;g-iH7H diff --git a/uhabits-core-legacy/assets/main/fonts/NotoSans-Bold.ttf b/uhabits-core-legacy/assets/main/fonts/NotoSans-Bold.ttf deleted file mode 100755 index 987da8c9b420895d5776aef858a0f99b35c567be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 397972 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 y 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�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

    NB#0Q=G*zy#1W=cL#il5RAtmd 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 z z^wpow%BH?brGCm)oZWgo(d-j6+5 zD|cqAjO;R7smHE3R`#i!p?wnHn&4zj%R^X>!OBGWQ=hG5WMiyZ$x=?wMhBvLBwu7T zu*5ophP)wi`n1p4(OaqAoNT5xJHc627g>|2;lEJR;|-K=Wu^Hbk%R1Ka4Q+jJ^a== zDSCQxS~4f8%hjVzNv0+Qj{0fI%w%>lPtTMt#;a)4!)7Zja`OPEWwhsQ z8$c9=(aZ+Zy&B>uv~;Ql{ElHP^BxKMszcX0^fiaBb7)VHo}g#irenHbc6SJ=JUtJh zjYCN1X`Q?g@)i_`ewQI;JUMNgI_A3+$sB6y&UR>JirVKR87qIiRX9*0W7H;RC+8%q JlGVwY{{t(7(P97q diff --git a/uhabits-core-legacy/assets/main/migrations/001.sql b/uhabits-core-legacy/assets/main/migrations/001.sql deleted file mode 100644 index e69de29bb..000000000 diff --git a/uhabits-core-legacy/assets/main/migrations/002.sql b/uhabits-core-legacy/assets/main/migrations/002.sql deleted file mode 100644 index e69de29bb..000000000 diff --git a/uhabits-core-legacy/assets/main/migrations/003.sql b/uhabits-core-legacy/assets/main/migrations/003.sql deleted file mode 100644 index e69de29bb..000000000 diff --git a/uhabits-core-legacy/assets/main/migrations/004.sql b/uhabits-core-legacy/assets/main/migrations/004.sql deleted file mode 100644 index e69de29bb..000000000 diff --git a/uhabits-core-legacy/assets/main/migrations/005.sql b/uhabits-core-legacy/assets/main/migrations/005.sql deleted file mode 100644 index e69de29bb..000000000 diff --git a/uhabits-core-legacy/assets/main/migrations/006.sql b/uhabits-core-legacy/assets/main/migrations/006.sql deleted file mode 100644 index e69de29bb..000000000 diff --git a/uhabits-core-legacy/assets/main/migrations/007.sql b/uhabits-core-legacy/assets/main/migrations/007.sql deleted file mode 100644 index e69de29bb..000000000 diff --git a/uhabits-core-legacy/assets/main/migrations/008.sql b/uhabits-core-legacy/assets/main/migrations/008.sql deleted file mode 100644 index e69de29bb..000000000 diff --git a/uhabits-core-legacy/assets/main/migrations/009.sql b/uhabits-core-legacy/assets/main/migrations/009.sql deleted file mode 100644 index 5a4afd962..000000000 --- a/uhabits-core-legacy/assets/main/migrations/009.sql +++ /dev/null @@ -1,5 +0,0 @@ -create table Habits ( id integer primary key autoincrement, archived integer, color integer, description text, freq_den integer, freq_num integer, highlight integer, name text, position integer, reminder_hour integer, reminder_min integer ) -create table Checkmarks ( id integer primary key autoincrement, habit integer references habits(id), timestamp integer, value integer ) -create table Repetitions ( id integer primary key autoincrement, habit integer references habits(id), timestamp integer ) -create table Streak ( id integer primary key autoincrement, end integer, habit integer references habits(id), length integer, start integer ) -create table Score ( id integer primary key autoincrement, habit integer references habits(id), score integer, timestamp integer ) diff --git a/uhabits-core-legacy/assets/main/migrations/010.sql b/uhabits-core-legacy/assets/main/migrations/010.sql deleted file mode 100644 index afae84e20..000000000 --- a/uhabits-core-legacy/assets/main/migrations/010.sql +++ /dev/null @@ -1,3 +0,0 @@ -delete from Score -delete from Streak -delete from Checkmarks \ No newline at end of file diff --git a/uhabits-core-legacy/assets/main/migrations/011.sql b/uhabits-core-legacy/assets/main/migrations/011.sql deleted file mode 100644 index 6ea4e2390..000000000 --- a/uhabits-core-legacy/assets/main/migrations/011.sql +++ /dev/null @@ -1 +0,0 @@ -alter table Habits add column reminder_days integer not null default 127 \ No newline at end of file diff --git a/uhabits-core-legacy/assets/main/migrations/012.sql b/uhabits-core-legacy/assets/main/migrations/012.sql deleted file mode 100644 index afae84e20..000000000 --- a/uhabits-core-legacy/assets/main/migrations/012.sql +++ /dev/null @@ -1,3 +0,0 @@ -delete from Score -delete from Streak -delete from Checkmarks \ No newline at end of file diff --git a/uhabits-core-legacy/assets/main/migrations/013.sql b/uhabits-core-legacy/assets/main/migrations/013.sql deleted file mode 100644 index dbb9b4438..000000000 --- a/uhabits-core-legacy/assets/main/migrations/013.sql +++ /dev/null @@ -1,4 +0,0 @@ -create index idx_score_habit_timestamp on Score(habit, timestamp) -create index idx_checkmark_habit_timestamp on Checkmarks(habit, timestamp) -create index idx_repetitions_habit_timestamp on Repetitions(habit, timestamp) -create index idx_streak_habit_end on Streak(habit, end) \ No newline at end of file diff --git a/uhabits-core-legacy/assets/main/migrations/014.sql b/uhabits-core-legacy/assets/main/migrations/014.sql deleted file mode 100644 index 6eecfc046..000000000 --- a/uhabits-core-legacy/assets/main/migrations/014.sql +++ /dev/null @@ -1,14 +0,0 @@ -update habits set color=0 where color=-2937041 -update habits set color=1 where color=-1684967 -update habits set color=2 where color=-415707 -update habits set color=3 where color=-5262293 -update habits set color=4 where color=-13070788 -update habits set color=5 where color=-16742021 -update habits set color=6 where color=-16732991 -update habits set color=7 where color=-16540699 -update habits set color=8 where color=-10603087 -update habits set color=9 where color=-7461718 -update habits set color=10 where color=-2614432 -update habits set color=11 where color=-13619152 -update habits set color=12 where color=-5592406 -update habits set color=0 where color<0 or color>12 \ No newline at end of file diff --git a/uhabits-core-legacy/assets/main/migrations/015.sql b/uhabits-core-legacy/assets/main/migrations/015.sql deleted file mode 100644 index afae84e20..000000000 --- a/uhabits-core-legacy/assets/main/migrations/015.sql +++ /dev/null @@ -1,3 +0,0 @@ -delete from Score -delete from Streak -delete from Checkmarks \ No newline at end of file diff --git a/uhabits-core-legacy/assets/main/migrations/016.sql b/uhabits-core-legacy/assets/main/migrations/016.sql deleted file mode 100644 index 059f2016b..000000000 --- a/uhabits-core-legacy/assets/main/migrations/016.sql +++ /dev/null @@ -1,2 +0,0 @@ -alter table Habits add column type integer not null default 0 -alter table Repetitions add column value integer not null default 2 \ No newline at end of file diff --git a/uhabits-core-legacy/assets/main/migrations/017.sql b/uhabits-core-legacy/assets/main/migrations/017.sql deleted file mode 100644 index 15430d771..000000000 --- a/uhabits-core-legacy/assets/main/migrations/017.sql +++ /dev/null @@ -1,5 +0,0 @@ -drop table Score -create table Score ( id integer primary key autoincrement, habit integer references habits(id), score real, timestamp integer) -create index idx_score_habit_timestamp on Score(habit, timestamp) -delete from streak -delete from checkmarks \ No newline at end of file diff --git a/uhabits-core-legacy/assets/main/migrations/018.sql b/uhabits-core-legacy/assets/main/migrations/018.sql deleted file mode 100644 index 4cdc9cc8d..000000000 --- a/uhabits-core-legacy/assets/main/migrations/018.sql +++ /dev/null @@ -1,3 +0,0 @@ -alter table Habits add column target_type integer not null default 0 -alter table Habits add column target_value real not null default 0 -alter table Habits add column unit text not null default "" \ No newline at end of file diff --git a/uhabits-core-legacy/assets/main/migrations/019.sql b/uhabits-core-legacy/assets/main/migrations/019.sql deleted file mode 100644 index 0569ea531..000000000 --- a/uhabits-core-legacy/assets/main/migrations/019.sql +++ /dev/null @@ -1 +0,0 @@ -create table Events ( id integer primary key autoincrement, timestamp integer, message text, server_id integer ) \ No newline at end of file diff --git a/uhabits-core-legacy/assets/main/migrations/020.sql b/uhabits-core-legacy/assets/main/migrations/020.sql deleted file mode 100644 index 254bb7b80..000000000 --- a/uhabits-core-legacy/assets/main/migrations/020.sql +++ /dev/null @@ -1,3 +0,0 @@ -drop table checkmarks -drop table streak -drop table score diff --git a/uhabits-core-legacy/assets/main/migrations/021.sql b/uhabits-core-legacy/assets/main/migrations/021.sql deleted file mode 100644 index 547b6759d..000000000 --- a/uhabits-core-legacy/assets/main/migrations/021.sql +++ /dev/null @@ -1,12 +0,0 @@ -update habits set color=19 where color=12 -update habits set color=17 where color=11 -update habits set color=15 where color=10 -update habits set color=14 where color=9 -update habits set color=13 where color=8 -update habits set color=10 where color=7 -update habits set color=9 where color=6 -update habits set color=8 where color=5 -update habits set color=7 where color=4 -update habits set color=5 where color=3 -update habits set color=4 where color=2 -update habits set color=0 where color<0 or color>19 \ No newline at end of file diff --git a/uhabits-core-legacy/assets/main/migrations/022.sql b/uhabits-core-legacy/assets/main/migrations/022.sql deleted file mode 100644 index b9ca2ba5a..000000000 --- a/uhabits-core-legacy/assets/main/migrations/022.sql +++ /dev/null @@ -1,11 +0,0 @@ -delete from repetitions where habit not in (select id from habits) -delete from repetitions where timestamp is null -delete from repetitions where habit is null -delete from repetitions where rowid not in ( select min(rowid) from repetitions group by habit, timestamp ) -alter table Repetitions rename to RepetitionsBak -create table Repetitions ( id integer primary key autoincrement, habit integer not null references habits(id), timestamp integer not null, value integer not null) -drop index if exists idx_repetitions_habit_timestamp -create unique index idx_repetitions_habit_timestamp on Repetitions( habit, timestamp) -insert into Repetitions select * from RepetitionsBak -drop table RepetitionsBak -pragma foreign_keys=ON \ No newline at end of file diff --git a/uhabits-core-legacy/assets/main/migrations/023.sql b/uhabits-core-legacy/assets/main/migrations/023.sql deleted file mode 100644 index 456a4d071..000000000 --- a/uhabits-core-legacy/assets/main/migrations/023.sql +++ /dev/null @@ -1 +0,0 @@ -create table Preferences(key text unique not null, value text not null) \ No newline at end of file diff --git a/uhabits-core-legacy/assets/test/components/BarChart/2-series.png b/uhabits-core-legacy/assets/test/components/BarChart/2-series.png deleted file mode 100644 index 833e4b19c90a31bbdf9e91975e1dd541d776e0a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17239 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≠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 I;KhIbKl8ZW`~Uy| diff --git a/uhabits-core-legacy/assets/test/components/BarChart/axis-monthly.png b/uhabits-core-legacy/assets/test/components/BarChart/axis-monthly.png deleted file mode 100644 index 1313b4f94f386eaae862515e46ac1a8ee75b1276..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18816 zcmcJ%cOaE*{6CH;l!!{1hYpG|vMS*iWfK*}L9(;69V^MGj0oA0nN{{YO3L2jWM^ld z%wzjr_d!ojpXc-aegFCSr_Qh4dSm0#AYs;9v;@y5_8)aL%G`9cPT0=zCokKmS%hS`LA3tQCC-YZPC`$tS^O@ z0Xy=Iw!M=v!ena~%3dtL$ju$)<8#>d$EPP_SF=x^Iu)6ck|HQ>wY#%z)=a^vTj@T2 z2t0;B5Wu(_o13HDHdjf=Yrnprotp`H9u-B`(bHo}?eAUkcwBxlY7>V|McS?}8s1h_ zJ#nu&Ufe3DuL9-xfCrKb3`RgDQQy#Dq2famU`H4k8Oc{ssscPfw3fHsXdnuw1a2kB(R!)Ie+Nt!_-rb?0^+elf9T zU$6yWD}upkX(Ax(NS)_|9^>yt!}lqtBDbV`-q7NMm*K?H|EQ* zvkWim>f|;xTd6V?U%q_#-ArCyezv9YFvm4IA4pb!+tr>E6GmKwxcLDEbV}VY{RyfS z1BPpMwL0&To%1AU2JO-6oex*I_SSv)X$F&H(NdFsJ5|l)Qa241nath0VcNsfwXe=O zjFjx`j0TAtZ4X8@X5(7p_erjPWi5Lh4x>K7Geaip=;&C#!$=)`l$QIusC4dG_m%Mm z+Opp8?AYk&(J$Z$NEFj1mB+~t`ud|$`aQ=#hnSlbEvKr)M|GsC^qDosiI&X=zwho= zM_C#gvN01^2SVy`Qbgk7#fxutcHAMwKv@bs%qgZnbLPXs+Sa=5()yCIr4U|3$ASFK zTYQr~2L&_}p6HcsmGcW0>oT*52Q`6y;Ly(%S*UTZg^;+fcOx>sp42%d1>+uj46f|71Wfpfg&*^XthP}3% zim|HP4yPn~`0TXK_aZCZx1Mln|1mxaQ*$%3yquD*kvpB|LYiOD@`Tjn=vG?hr03+Q z9JjrLB!Wl{))07deVfcIC2=Y5GutisH(pmfcFIL%zI=eF6oQjTG$1{;*4kpO+I}lC z{*aLHS;uyy+F!5+8T8Oa(bQI@A{*Bz(0>&82|`Z`V^h;QcDTfNe~GP-P20W4+gg*x zPiO9z*o^vMZ7iJ9MteV4+t|DUv_AD=dp|Gk^y`!B?lz8|X(a869VKzOZDzkwoaW&^ z%9WebPAHTJGoD5&9j^&blk+mcFRwcmIJvpD;x-9u#-ZmO5AnR@y`_L zy?&mgw7Qx%niFoo`&+rhU0hsdZA2OH;(q&sxLV2lE~T83Qb39GQp)!2FOtZ|NeQg( zKgqJQyRLS0bo3kek!V&-mtoO)FT@m;m3uK>J`W75Ec!3JTFCahtF3LJi*Y?6e)Hzd z*#%%oi+XrZ@QefIh#eHH31rmbmyxau`&MK|)(YznoY737g>e_Vcwh%B>_@q1=t{>i z9m6iS1(5BO6!vy}Q=ZIM*JZ0yp#VqmDF?ib=BXipo>kb{+xK9=z2>J+pT3ONFg8vV z#Z7l*pld{~UHg87n1BjA1~63uz|Ij74_YJ97j5d6kvoB~~?!jg6&PL2+@b z79LK{%MA?;W`Sk6ha7f$EO{v3%0Oj7m)3Oc#fukB)z#A7;w?>w(las?oVAxEV`5x) zwj${%A&&%vwA?h1>|&CTq%qc-EfDLu*1H}q0>MBIt*^ z%Y~If9;;Sn4vJ#P^$ri)COgrXv4eP_ytoiLlrd<$mA85t>p$0j z&5-F`ISsLph~UJ;45o`QcIj19Ofb(2-Sr3HYal^CR{Mw}Qs)_)C?Ny^9zUPR zJlFRlLWU;Qr?E^wzf%Nfa@w(VGkt3hz@s70@CF#Qjs<+d3 za@NasT`;R#+Y6ODhRO?z9Yd9-laKE*%@lI=5<>b(CGWn<;V8)klTRT?^z)(Z);-(X zJscErwki4H`E&R?IA14u-$g7-)50E^)Xl^q?Uh5mw0Be4t7~WgUGbipnc;7V6Xk#U z^r?}d;a6OLa&mI!3)<~+#Yt`+o^vn)f}XccyH%VpP6Aa)sdtMXhXPkIdZ8+QtU%dP zfNx~DV*P2hw}31800Urv@p?3sNQ}>5hAxo}egFPup&tZ%V4E=ds*B8|q|!=a?u)1{ z=ND|E<_JmHBV@T#8~bhuIT-?&g&drEqCSjEj<48b*S%gaf=5^A)TvWX#<$j&R!axU z98;GQJG;AkF)Fdw#!&-bd?`=h%?-w2^8K!ui`bTn z9Yd|o_O$*=3k*Dt(zds^ubaH^PG?K07u7yz^e)xH? z0+l6jjDo_@t*I`QV@_~%bo4?_#-zbJ@uP%zU*r%|+VC{t1y@!e2^9z7S$g`0>8-Xl zRg}A_=~R@yadXVan!!qsmVg@wNDoMP`bs+IjlzE#I_vmdJ9qA!`WXl@aNh5+o@!@9 z1^DPC-$o+MgA6zGAYVXC{Gg_d{i$9+)_mawF__=Q>AEX+KZ8#lzSI;=k(ZaZ>Y9}{ zuDxBKPy**vi5C;Ju&|hDjulBME9+BK`pO>;)&P1YSvyW6nh=n+-e_WphD zl0YEC)rU7EJa!jqnDchdMm2I1w#84G2xclO{E8ECY%WLPj_;jtv7u#WOxZ+Vfo7C2 z(aVLkToOiDVm<8Ty!=yDT`C3by8aMH(Nxu)zQ?_nkxwl z3!`^$dG?IN_SX-IAyJuqZpgGvcvRCO+*?0f;9!}tpmy3?vq261`em(*O^!RkA+om% z!u5nM)omsK6uu&sB)rZrFyv3VZq5~5tqk(fFF92NEk+F|7o6C z&6YOaOk`Uy&-SsEVkknuWeKWj7fATVfi9{av+OS(Mr}1k3$GRnT|^?0jq7fY9zB|E zDRJf(v&{gD!X$`bXg?l5M!JUu`T1k0S)ej?cRzlssc~y5v7ZSS%@*h9Ba3lx4hQzlBpNjJmcBl(ZFIEj(rzPD5goKRx&nVX= zFuQ1KBa!7sEq=vpL8`;^17#E6KkA!_?E>qI21uJLN$OUIe>r=?l~TSf=D%ofhL;W;gdAn?nvkgSVw z2wkPG!G8Od;mhhK8|L%*=NpHl=F>$Osf|Z6QOrMFkOCKvKyDc?oQHI}nz6Evc?ASs zFP5&_|3ZoSLB_h1Am!^CR2GjJ98~^F0!+q}n9OtSd70sMYh07oHZ3TCqvw8F2hZ?C}mgR=??3twXGfdX@K zL-7L7^8OJ8sT2XEyxQAj=Z>~=s#BMexzdYmCj+PE=Y?+HzKs@F5z(75o^ln>r;E@M zCHqY}E0ZpD;QRNSBD7MdOS0U{j#=if1J#-8^NDj-y`6CL+Vz5(XBBGlvA)cjH|n%= zD)BHHzo+-8LIv#<$`)B{{rS4fa;@W=u<*_tjWD_bZz|VEuPs&X{LrB17T=xHUh>#2ZR^i; zwbWT|w$=x}A1~ZQI$eM1s^?GCKh~e77-|=s7PYZ+aOlNk>r_mmlw@R%Yb(_P7xb&Xy`}J|5A&dX)SqMZm_Ucv*%1;&A=YwrR!G zOw>&fGGv2+noIie6pdxOz&dRcbdGL2gDfOTRzN@?2?-gvF2*l`7hIzEUtH(g1{t;txulwdIwl%k`)Y8&2@VVwE z6Y4eP=Ji@5<=P0Ih3_(lL8RGt$lu%U2vgIoTi?ilmOb#mCk#X)dIuV*D{St?(f)Ju zy#%GhU)Y(mmmMp?iSW$g89ACLJutr0N?seVq^>Q z0;mSkDS%AyR?mut$(t-yejxXgA0ru?>nrk+Ot|&G zTDBGytKduls^aHvRdK^qD|Z2;CHR(hh)VaBKaa)8>IZi_E#b%xVxzfxjJ_13iSpk` z;ET41G_QT_WkIvo4EC@oI&#Xr9xLC{ds6@069xlZ2!^r1fSbC61{U+CayPF}B<}pq zKzw&JI@^@j_4dX+JR$z zJu=hU5+xaZ{n5kg(2)@60$rYo~Fbv1(>*SgNUq?`9M)55wfroRKKrM=~mN{!EbrsLk%m01fa{r-WyNx z%p+KM<{6A2+FzQO82HxxrSX1;1qKiPy)iMdAJ51OV(K(;yyRZNz`>!*M3UQkhD%5| z@*ku@H=H8I8xnL?8nOR8B>59y0R;5)o{>LHh{1*Cu(DoPQtT6n^WrM-_e$$4> zEzq-nT!o>jsHkP%{$3j*-P3cQFMuo1)!%Cq5kWlP;|kt~|8=#RmPm4+=d!_&FXW+? zMI4+9aD|lgH_IgfAOKhK8}FGnc+~%36|QHd_SsDzSfypQP&zVRTg-Le2M!cAEJ5rJA8QlI#|FezIp(+L{f(I|J z5iERVp!)WU|A_ZSp6x&G;(u2Tw(eqa3Qis{5)q7xHYH+x5G zf{MoIfCBtuuhcAJ?pr3!F<13{k;xsctq;EbsP?BZ3uF{`?`JZzuuyV#b9L=UbEmHX z#FX;a-h2|5f4E!}u=>Jx?b;(<5s=DZ?Llr^Sku?nCu~mvxc-kp_@7lqfZQs?HS6O? zzN;_mgW}?tP+K4oi7q`10u>=42FiGU-^PAWfFu9Bylhwh@%eLduA{wQ zzEC#N%EgO>H2k&d;mpj;Hy~}%JX;JFiy8&>1Nv}(cpL9!}v$3O zf-k#GwzRbLExmaD95fjgqeds2W3}=!oVhXhxO(6!g8dRG2ynAK`p@?ZaF~*-jG)YL zA;&DxmnNVEB$yk29fAca!|il~GTivc*B2Ksrfce%#j z8MRQzfsH`vqDGv>~c&2aTG+&Vb}`Ip88ODp_5PDvSEQc_}3@o&8$0L1UR z(Ely4;PYQH_}@%G%=$8U!^Ex&UXT?nK<`dgXt;d1>_23N+!*E~#0_InPfG$?Bn z$Dz}MBl_(spm4!=DtNs|r7-njS@pRJ*~b$`V$^eZw6hnSU@)5uYdSjnZC6ZSoi7)r zc_%cIA)aI8$-m4@PR#xOV9Ds>uzZ)e9gO9~Fyx~^*&k>=aojuoYaD48d3cPs)(;&z zG%?kYId8>B& z_9*JWja_xzb7RjSQi#3xL4z9UKL8q&!zJxOxcKAq)02F)a2P1zuEyL>RgQfA{JG#b z&~~$I=Y^3Qi^iZAHvp$5139)8xHM}P#4OGZxl=-xeLvzI`*{$P@QP9c;QN!u>4@w> zCyt8{7_vI7nSsVTY}MYs7L;!wTz~)pa4!Js8STUM zi!EAL(u5_6tcR;exXuA<)7C)5d@!k17XopucZrhm+UteMf})~O08b$twx>*0&xOt& zi*_x(yz=9>frU&BvJK+kS*=~MTj)&Zv?c^@4{*~3Yp9wkn@Cgc`Rz7+XfG*a_i9srw#3Xh;SwI^U}z=Ga3idp;;YF)}jJ5B^^Wd2&j%=j0Xxl#M*eq76RC#1(C?_Zut%l}u)^T|!JxPrK&4igD6tX8o5~@R`KJ z($dn|g>y22-x-^`Iudj!i#oIA6%-nxX3Dt?K&3LWx3_of@H0+->EhKumVZHi7>tUD zFfuN#kpAeSukV+YNI~1C>Bo-;KU(5qV+%6$opWB*5@!Y8_?HGr07LqanVlUK8F?0h zM81X=2D`^Em1WFKOib)4`2p0$tHQrB7YPJ__5!#|4I~o-*N!R!7aaG2;o1g?BzLo`2gV)Fa3=!R7c-Jdw=>Azc7z|bcSK<)vjlM zIrV?}HYgSSrKPT+-t@vaM@jo`OJNs9UE@+U*QUP^qgD1mB}+Z^bsYdxj_DJ7&Zqz^ve?0-%NsMq|X z!5As2x7@mDbGEnn`JH#}+{xsE)dVpYP39LCrj(0`iCOAK+;QDlHtjf|3XjIv#7Y|(zh(JUi^C_5DtU%)9 zFCa`7#=kiH<%lil1&>u`ynlb0TvlIS|M8iy-(FkD{`V2yLLPgjIkeE`x7T_smB|4E z1?*KPEv;zm!mC#&P+K6@MVI;jrwLgnvGrzeUTZg_(#wAwYLOa(Tf5XC$n31P_-R_& zxdl+Pwwk5`xjLj>RGt%>-UaiW>g>M*M(w3j!7J?PX7Q9oyCu;NQhMu6x4Z2;N|6pIHsZA&21pqv=74V(cK6^Y>` z2H6gRI4P8KQVRrS0VPm!YVftaJ!A@tEedVyw7zsPv+`JGoXfFe$KW|_bYpn^BJ5=b z>U=qd2%rM}AYozQO(sW?I23McZxQG?Ga&XK0?<3ofc8DtqgpQqp{~&2k&%(tODp`E znwoe@iSoq(0x=*ZNy^LXV8Zx3bGNgz%k1em_xmIU()4H2hrd^PRGONYe9)cUpcZ%E zDt6m$jO2f!BGUg&8kAQ5%!|??2JA0eOKjloKFFj|4ggTjRrmS+62Y>l$pg&{MhM(* z6m^by^G5b+%J4DJD=)0cuM4J)U^r02IP)a0IHVfh985fbZPsp)`dQmv15Q~@2Xlyk zR%%L$ZjY@%;(k1!OkOzLdh4)w=fL|>5S8mNp!LijxMCM@=S`gVEf3jX&sDrp1P>)% zRqri8P98XEqoz_~ZB6(AFf8|vgqFt!ub@Q7(I??MTlz0aejId;yyY336%f@mevS$a%FzkoGIhQLeLA^c( zz`Aj|EKN|c-_tSARbP-n^t*rbSb5xRS4c4qr|&sg*Vyp!?557aa#1BESIbWCf>@Jh zd2iWH4f9j;5B^6oi=lP%MNjpyF-_eFSsK>9;wu6f?jG*nD>IY?n3#0F`?kXvN~zJy zv>aU$iQ8YC2)N4&7fpmMDfr1b-MOw_&CkGrrl#}8a{9n}85O(wA)tei%tFTmJ^BBc+qE9#Wt zdq6MuDtfZ!B+^_0a!ksx*9SAI|j zN`!#%&F!7r9*No>RdFy29JcaQvC@){k5BG3U2HUZvuLQL?|CfR^k1vp(&|`hC6n!Y zD#m~LvgGy!&yBp;@o3Phq8SIJ#LLsT_zjx54VqPA(=w0UtRKLStDhOHY_ar8iRMpC z&~RT~Uj9C+k&WzG-VG4)T&p*B&C&pbOl&B#ciC>n*cBsv2u^YZ;N-mmWRJ8+#``*kj0xWu>l3$@x|%!812he zWppsXK%N?-TqYN&(4P4HP$HXsbX1gikdJy50A2hbcM>{soZ$nt&GOH-*A$0AGyNP7 z3?Ev@CctEZ-YKe6cw2$NE|_#A#v+B0ayQ=yaU|{p!=8=Q?N)ik*08*SMp_nE@ZD2s z(TmRxLz4It?SpOqNY9@Ql`HN$-N!T>ZN7&P0NA1?)@FUNP8#_7#R5#WP+9v z%WvHzLEeZb9geU5Pz9d>shsH8Xx+P^&{|#!-?xD1ahj&1uM}g%+^(%_f~g$0IcQi7 z1E7O>j~M>kcszwSy^>2N)Dy~qCCx^PtM&Dq!0q~1?5Acs*{KiQ2hr+x?ihqeL|~Bb z!tx3qao7Q5a}2HrM`mWB^e5kgp;0f>ccu{V*y~KdV0;R&f;x?R^r=O8P?(iXA~A4r z>9xF=b}FM?m<7Nb;ipeON82|wH}`gZEXT+ic&XQrpZhmE*@NGG$&u>2vdw$t22iJm zd`F~J`izZ?8h`!zz!+ZeYFi|KHaj~yI-09^HS%9a`9i!Xw@H~`5hK7C20%l#Gqp=+ z0zNw7`%NIN;eFD1Z}NkX@?6tXeDw9_{d@0T*B6JM@44 z2QS#9Cy@FBc(Jc5;8vC=Nl(CP!Np{MnD&Rwhxz?84bDU47IDItmwOvq-0;vDCTLM+pC?}IjJZ1D&hDw3 zH~wt+h8kd{5<);=T2+5Hutv4-sXM>$64QU(bprus&cek{UJ7RtT7IT1xrbv$UhF3! z6emGsGo^3+km0)Qy0+r&ZF=Q2-mc|bRrj*I1Uwro_@ao>p|)bVku%d)57Rl!F<->KJ|J;S8*MJvHSvjm8 z`Y*PhXOo3AlU_^wm~z`cQig&!-FYYks(CFZZTq%<3uph<@n6?(c_o#c219AU1^4bH z!T8RXB$3>qX8?Jr$_MAKGcVl0J11&g{277~?Fdx>%t4n8(h=ya_#~+v!Lp}i)_5KL z%}}6}EE25fVvx4{<74Cw-2mV2>mkb%I9@OIFOyL(e8roH|K1J$a_)Q^k2$09VkwDcwYF)gs?U7IHzc#Y7-;UH_fg4?3h2W3viA-CgJTy0s(oWf7k&*^b@-MP%;Qr&>{Zesgv@OcHQS76+|6W zf8V>jPaQA_j%K38)j2H)7Z5b!wx{Olj@c*dc$e+O4DRxFK3gMqgpQrl^ct%oe%zh~ zUB#%|8NU^NFwc8ye*#!~-3VlP`=7u+^~$enTL=jWz@H~o6X7s46$}1AvmE*ZP!Rw3 zfBgu9?cKD0^M8K?gP8;b2;`ZwXZgN-`2uwY`;QSI5QQP*wC7y|zTv7`(~?rne$N(2N`$)B#g-wo4l;GxvsQ3a&~?Nv+1E9XozJ3JguE z-rtD?wea3CM;Di<=vS%O+zJ#f3RG=Q8B~mw4eXXFc(ja{77xnwvJe~e6$8{_@gQEz zO`c+H_l|}}-{!Ce$P4wsYZGRm3Mka+cVl4?Owb!$*HAfTKe)5KsjnUXx_E0sxRP&k zb#5u^woDL{U=Wk&^H`_;GDn_Yaj(O}HCg;c-V2v9gVZuXuernVKFd+kp}CzQZCY+* z?KGXJ0Oy4ZaypoS0VNS)Qqq9VRpC3J6eR?z;dP0dpse%S{N-^lR1W40_51wd!7D97 zt)#NN{QUfdZ4S6uFfTYU(G)!aM)+1+u;@*0=gi#P#|la6b#6Cq+(?^AF|&2R4q9X* zOCDMdlo~dG5>FGDhnxLK%cE0W%Gf^nQ^|dqn3{?T-6xD2NEVXuXl`lAK`H6#>efGf zb%mUCj*3X~T$r!Vd(dFR75lUmSF5U6du%P#d>^34zyyVaSYd=|4LTL{rAI2)zVbAJ zq|deG_EUE-7>62MnZXEeqv?8+%)PO(ZGe?dhHJDuiP4@^LlH$$B_?g}8cKj2jlj zC=%X<4R5Hh#a+5s_ohr3OqtcCf-G24m=*Tyj(F}3sh7)}3fuxdLNp+IRTR^!Pnl%B zT~TZ^dNYkgx4CZcyqm&W?ciKTxYm8&ag?h;*;Qu!Qa?OevY zf)jC^CsuCmo{`rX=&*GhT0SW{r1GG@qV4vq878}@61=(Q97}t z)LW&Fph@y%w=zBb0xHmFVazr#&~f$`NN|PitX7PHKC@m6vGB89RFgT+_-;xg@hkkH{Cx%=vK~&xvv)H&xSyu-R^1Shn=mA;BmXzmybq zl(LMB%wkzHcGL0P)sSA}ifo7TP)i#XIC5!duKgz9USUzGI+A)^dp4n~JpM&a`!DBF6^3&E2N984VE3*w_@!2y~G^O->(IY}h;J{Z^CF7kOlHMFtKUx${b zvNVa))xM=QJOA!sZxhOP$)>-e!|Yj<^`whOA}1`mg!$Rp_B^_586|gS+0o78NJ91f zxu?A+9kb#+&EYbSv0Q}Yl9c0KkDq@il8Uylvd@|hW=bj9OtlT8^)8TMChWOMcw#zN zG3O#s4HY4wsnC#e6~cCn-1|tRq8MLWJ^3?kSgEmuTp{XFqFmu1x3r)MXmsb*EK7fG z0I$x)o4;L_zPxQJjn)`^j7zBm@8)P#oS3h>xk0PUPH0n^YQS1ynciIN?=^Uph*`{4 z7M(qBBi`?gbya!YK^vwu%&E1!SyC()4=Z`)GCXoMlcKP+Q*i6^K)m^GJkYcvQMCbR z_HZe`t?R64asSdEwxbDKHEXr(2!T=)lg)yvSj%QjR*V%6D z2rl-$jyN`^T#+dE6@#3@dRf@6mk)PYp(lc zE8C^tkR+X);_k&96_Ig7C!c$oBr{d|AfHUc8EuM&-5nieA1Pf(j7pkyA@-u4xk>NyvClHZ-DNY)K`2doKv6P%JRkEy z2D9k{0L8P7?YNzRaVC?s08Z<3^vkiJg$d-`{>Z~c>C4Ry8_~(>XN@?9Ok^))AoH4T z%+)s0hlmXh6(i(xOtPs-*bv;R$2y9aktEV8LP)833tmvG$Hbb<%!ktZzAqu#D5BTZ zI!~0C^u6iXg3yEn(TIDCV%@vR&rZKT7+cfySS=U-7;0eg@#u#zcL0CB97rIhB2X9 zq;suCeOitd8z@#7-)XA*?>R%`>bUq63Z>jP`eqMfZbj`a({-b_NFa-jxT&r-MO-F zQPf`?<6x3EmsQria-9XnM@w~=S2$4hl$w5F*d5dJjV?sgoeyN>5dBHH%WT`_(M%+b?{_qLFx?{EWejwDz>H z8h83_qI6F==A2YMPa9e)<59e1eiNL=L#bJ)!TGF4%o)#V91qYxA zRa7}YkQ*O49r4XTMjPQZuYx3jV>VS~iCB>>6)wF4$W*&FQtDu&Eqr*w*Tg-#`UY8r zJUZggkm5gQSn!hw^^akzQAG$Cbp|ls<&nK+Suv}~)sXbgpjULA!i*rB0~SJ36j77o zzQVOxmUPq)RsVVlXGdn-8qCSTC*M5~Qsh#}JIt<}@lnY`{^WALD(krRB5wrbpN}#UynyQ+N9 zQ9+bbWH`#qzxBRZY3$Pe4mG0QMXnhpi@RM{Ix$!*dO6=)@4NNpZIgRpLml>AgrcT) zd^F2&i*qZID!E^-zgE#LlrZ~Y)?YyLeL3vGV}A}SRFZfHCL7aYqtG~U`@ulHNDp`7 zk8j~9oSwCPwG|1YFvkTGQWj@3rD_r>#Q* zdsxx3Rx%|vhK-#YVP9#7j^j2dxi_FfaaMj;5;INf!h<1s?;|%kqq!}lh z&@o+a(`?iaz4LGFVSoF`8yVzZbly}MPK{Q1QsH0BRjTVg>8pxZhJR&y;Z8IX=aV+? z6fahyR%Aquwx@SGhxCP&O~aLhjc`Q*Gsu4jiUg;MjJYT|&6EStt}PjG;S`1CMbk*t01&juui= z#J5%~%qN6ia=DytReyhc-vZrripvVI|H@{@VU(6#7G_Ya@X>vO3Rz)q#918(1m$o#fh zl0c=`^NE7Mlc)OE+hJ?V5SM$aJ;P-$H&2itDet0%5y=%d5Dv$R>|(ey?b++4T*2Fq z!$_JZed3ZmW4`YhaQ3}=1-{Av z3Jw4L@$YJetlozYA07y^yR6Peo@HWce)N=e&QFAw_d%SP+auvC8=%_IjZHNxIKB*q zN4_oDAty;rWvMVvZqj(~1aX?L9s)agdU`(xqrIS4h&D3r`ycbmH$|KZ^Yb$|<3P1y z;?t8ut8{D=ktSf|x%g0yP}TFL?FFgmvn4nN1_t;es0c$9Y#l5M5AmOVc9d2T%u2W^ zmE9@DtW=A~f;=7`1dadc{5kx0+_eRoE`g8FuziPy2Fw2(8vKYBpW6Su4i*?#oPbmo zyvMZg?yBv?OUC!1${=-7dH|ZWA1A&;Kke|bySw`}rlzK5Zbm-8!*|DIt!=y^Vr~Ka zVg?sw5Bxhczj2+yV`L{Y$i-}ViASg0&l6e|fZV6l2Dp>jOD7nhpV%mn@;$z;Ga2%8 zb#?VMri3-xPr@cRIQ8N_|t*C`Z6b_{M-NR-~JI6vgE3%$h%aq;A7?$0}m;|hy{ z!W>d$dB5jM)O2?L92~sQ_8kNwXOR0$?il<4Z*dxdk(7zCx=?k$eqKIeVu&8X3#0-O z2(ru&P3&_OOWD^GQfqvdFFy=ozV5_3+R`HQ*@31c@4h`}AWr7zcID>0NFL~0f%m#h zb@fT{=d2oWaX} z=GY*o?TvzM50fxnE0tphtRR-(0P~_{6aJ-ATmo|jURi7w_y(5O?*^9gd??htqOkZy zo4k2$IM_)R0cUk*_4b6$4}&F4fC+6Oo4Z6a_z7(?hZOB{;cIo*80QqTolkC@1wHMc z@$EKjmaV{oDC2LcdoQ-kNhOq!yB8Z86m%3ZTRQh<#f(yUyWCvn?>u*+X!G4w-i@=M zXtgRDc(Btqwk7b>5qSz#hgHFBOG`(!v3NiC4~fkO=E;0FL8H6CoMwk+cL3jLPCUqjuRk@Z%o*f}aHOrQ1AMAP?y_~c|Z zkr=MDV%)2wsiAB8o0cakE#%ku2yI5cc~iS_O}Hf?JDYplz6oVrhjZb&ZFmm0Azl)& z(r$xIUIb06dxPD0#9rOjlpZxgi(Dx5Ulwlh4%&knkR*};bcxMudx z4pQ;>j@6m{j#UxVvHDm6Mm?YMpE*^@W(@v9H}#5HRY^6sFGLV)MQ=@2un~ar z8K{m~sAPX}2YmZ~xsRE-yBhH#=cf(7tjvl%=yJA9(#Ahf;3+GKELn%NB6$Y>x}1oJjW^MmXhpIayoJt40cprPD&L9BZ9+V1QDc% zz%LrC#QZRrw7k5OxVj5=CVo>{*CHWtlPUPbg{K<9&zX|%KQ~C0;+n~FdLE@AZ(5+r ze?y}*k1q2>s5{YFcU#mG)a7#TnM0I<{#V+%_3slMYBaGU5Il6G>FXh*Bd4G6+&yBu zEJn!hamUocWq{9icy|KY2* z_uioW!To8_|eEj3;Z4Hfu!{8+(5(eiKbz7}tgP(Jvb41H*73cq1QKeu zOqR}-=har(@eoYfPjPGJ*c$dnxTk3jSSyAFgYDk^Fa&JI>EiM_4= z8F!p&+4wBNt$pB4sw}PXo%+N zMM&|U@mwBlpe@C|n2nE%8x9AD1pG&Kw|Fv8d;9zQJK}g5d{}#$Z6=fxuM6P5$LFo; z7CpFE#eDnX#fvN0++5xrDynP#0Rh%3(`z{&Ki=Kg+-%A-!%P>%1fqv*?%w@eGrWky zG~qCbuHE>lFTae9%|$Rp9^w%cIV@#PBhJpO-73V8rWBvsbs>i^kb07Jsdrq>oaEX} z?X&Kx@l(#XFmIU9X!P6HukY$%jP33DC>bEKb))*ek5V7Xl#0@RK0WSkXP2`*S5s5- z#M4GcCl0N=D86;8HPxzodqoFq@k0Ku$|T7EcM_IUAzv{Taz<8G?-64fA!;h&a-2N+ zWr2wmu8VKcX<1p9t~aXKkwIJioRCa5l3}aWc2X~q?9wCE%8}aCo6*w(bp9k%tnGQs z7k=rCZ4B3jk8Q0lCLkU!FE6ho03FE|!MUAKGrAFnnk>4`*Z+VA&o`%6qoXEq5o=K) zv^>~qX`}k(!IJAVx|na7I)$Pbt18L(E`Pt9H*an+!+FiMk|%fe#j#?7IV@OmRRV4o z7S-FR)^HbFJ~d1dtxV;FF>*zdo~V$Fd}RGbJ9W38i1r?jM%EbLUPCp@cFkWXNDJW@Ags zZ!7NRZPf}U4rBAgt{4Bg*pkt~jl7#yCV$S3k>Hf&CGXdubT3F`WRkgItF|@R_ zy}LH|@9VDeIVg0Qw**i!U0?Hjp^?<)7&|@d*UQ>(n@EKh3>duj0uPTtp{j04@)XU) z>Q0S1gBVuQd z+1c4yD`(*2WN+}bKbU+3Y$d;lMjx$7bE%>=-3!C-+Lp7zLmi`Rlv+#DR2X=rH9 z?1~CerhNJ&I8ij_clFx();b?0BYp`O@d%}PT~yrVEC$SWu#>8?R8@Yv(a>0wx~68W z5QjRj$f6FgZbkyv)!F!@TO23I{c=l9(uk`Sl?KyYF4l{Ph|mx6R7U~r*vtxxI<`}D zg8XZ?JD;$yB^Yax_HBD`Id+bmF{Wa>t#{08Ym;-)Yg`d`03#>B-nY?%ELdV7n*bCh0D^vx}f=QG@Sd2wahB8x!QGfe*Q?in6|Z zdEw``%n;0a75EJZ8Q5j~xBRLs2~J{Q*x`t2(dG2#C4{{1BMJE%w@9RH9SAD@Uz80r-Nvz8jq#361al7 zdAt5};hSy8?h%^Gy4KdnjO=V7paO!MD>FAaU0q$@=H%G*Bi7f~r?Qs03@Uc+$*%!t zli#Ir`!+Ki28*FGUPmI~_ZQ}$iM{K~(`s!v#6nzI6UC)@e}N|>0_Nc46syH;%E`$& zWccgHm&YlnEWJ|G8#ixyG(Z;GV{>&*c~UwfE9+A&04Y#siV@A6Jt9&HSAYs_1gOTt>3;)K67(# zQGyZdM8fBq&Qzl-J4hLcq1jZX&oMPZl1o529gj1Y|glXVBfbX5En2HJ!@4MgC$`zQ^ioz_vfIyb^K# z9{k0Rf>ty@owc>K)iC=a7gz6+*(Gl7m*-`}TxPHN?CqsASaA1zIc(+7(YS}yxh-su z@WA3IC8gQ&oyjwHxsUgTRnyLs98b;6Yzlrf_IT|I5bEspm0sJtowG-4A9C3+!(lKM zIT(Hv>#2}CSDF_}JatPP>h<5;)9OiPHrO~bX(x_^!Q>)ffjmPL=Wa+#`<;BOQ)uIw z;I+AuiO4=m5&hyt?#`=s?>IN@EiIGz3dw;uP_w{>Le_lhl9)9b8X6LC38Jpl1}ClD z-TM|}dkbxQ7dOm=+1S_`M@CX`#RCHaYq&DcZ94EGT$~VI{*bvm-|cCnXlSa}%5)4v zbhdo8=lCmX<%-VIFpffLVaA*~pNwr7Teta-DfUsW}sdx0+-QHY{i;Se^ ziuL3d5HKlw7)6|#pWnXI*N$n$$-R7Y2*@o&TTP{!E=Z%PqZ1QtQZ8Le)w zXru$h#eGjeSkY9q4;4(m6O6PMTO4bOTd|*>({SOJj3Gnl9M#`mzI{g7wI-gAR8V5C!jJo{v`Y9)2C~*t#qiw zz&N=Cw?0ZCr+HhY?o>X-jL>^ zOx5wxL`jr+?OvZ?%zTn+k6o>z$V?uY?W!R9eU8B4n`qh$l)Y}bdylB+R=54js2A-W zjLefQ%{R0rSz9c%ZN#3^uq&}xUmh2HB8h~28(drh>AiNYd`M0(|3p^xP+zhAeCQBw zl#ibuiAeZ)$K41Zl}|`mzM(`QyN2{3M!HK2ma`BlNt6kmT9QPZ&k)fqHE}ASDWQ#I z9P{2ARLw*hm>pOf?Zh5^S`N-DU6s=}dFR+nZk7>7uj}hWx0Po zyZiNg-kj}Z)8MXa=DLB`La$=9!Ol{`dWBclUCVC?akOYYQLO_CeXP;sK9y(q`t}Df zaiK%FoATNC`1qCX<*6>j+{F0!U8abLj~k9nqVMPhT*XikQTL5iS@@O<{in^C;d=%_ zGjQmp1pG>oS1ehtNQ(XZWwwV6`geK5Fq~Al+ z9vEq6<9)BGqLo1V&tSPE#Y2zTn6j3fE2NRXjdi8eOu^1)^195M9zZ?uS|{x;{_^U^ zV$EmrK(?Cmf6Oakf6<2%Ua>WS07B$VOa@6jz&DE(ugL>%jFXJ?mpc1PB;CrrAg&y- zMy~>VL5RdWr}zuXsE=a1wlcD^NBty{jMaP+;PXPsR0h?wenYo?F2V14?F=?zF!bbp z67_G15#mF(Qq1Ma3;kT0y!>=tY9$IXuC^y^L!C2+pIJArLsxVsEUG-RuTf9Pp z5|!CLB2HG~?Yq6s2V#QLZ;m0|{n*O$gL>bTv@rA=E780xFmgO0_=JK>oHn8vLy$yH zxMy7a*J972Y@;vtXR@e7E>6~xaB>m)c;nU6*BdqujE`H3h|$h`_UyD<@>)p62R;wI zHg%vt1i;yW;}Z}JadFPGuCE0oZhbVXPk!Mb4P*s8hWN9C1R4%6=byIZal2mTCUH8< z4@`Yv0hz;i{=rTQCQ;u){&;xrNp=nP>1Wn3Z3c?p^8sb?oiBKHbH>IbNdE;+8VNnw zw{>5;9t_^U`>b|nwov`<@9lZ7k*m3P=uc7JUvQaHWjc8pZ2LfzD^D26dJUZJ9#H`( z<&WPbP8h^m9d93*j}}AAlF0nA$mOrm082a~-aj5*0Ewx=tLb6~hax2)?UEX)i?x*s=Si9l}Sxe|mIOYoSAYLar_^-&r8cWX#6;2nI=A3;wECHCHj zxEiu{?h!HmZM>#FMV3k?7C+yPYpWrsrcse+ea=-oe_!po_s_Gymvk%C;zQzYT5Y4ulf_ z=X2nk{*UK=*Wj?vryT*6ufd=EG&@GRY_>Y)eT#$uZ|k5v9{*FQ{uWBWnSZna63YKl zh~QuJ`$MSkjQ>aEpm+ax`dj4W?%vVTy1c!;JqA*qrYn9*OJ3BvJTm>5S zkG@7w&Cd_Z+V5<+ii~hZZEU!49RdN2zVmE*hT4iQNbt4J&(GVTbXDg8BELBJ_tNKl zj6W}HnGg6IIXJX4inuMM<2<^u^zv}My}gAFlt2Ui5#pfJO2~5eb!xHB=4L7;nNewF z<#2?7ib_r@3aH&biX-Ry61Zm72Ov&P`ER1G?!_ztgyeqPuH!>Ls{#_xr)+#mUbHM5 zT3FO43|4sU{%6=dJG+(<98QP%WkQ0Iu%@=QrHMGo#U*L|T!y`DZt-EfvpCQZDesPs z+x9;zNw|ns=LQX&%hS`%+jyTgA%LL-rgUHLSP1)y?5cvj-7c1KaB($gv9a*={F^sn zf`^_Hr`Jj>@|HcgIcBM8&(pVn4qCkS?-hMt*3`&w5wI&K@H1U^|Ao#1nN9t!_Vy9i zff<*CBAl$?zt|Sh+Rg^DX`xhhXnh$v&K6dsp2?>d*q2amV&AwM*SS&VW zICl7_6qF^`DgT>nzNANsA3m!n7%ny_emHug)r0PBDkDw5j;`+gckka1#~poFZJ6Vj z81-*DN`V?f4GCOtUOUp+$w{!>AdsszoM}~Wg0uJUEs<8YP?uCyRhin@*vQWPEeQXM z6Z_L_?Kv^B-&zYB`j?yf|8ru0*o*%s2g|B+ z1|&S1$&Qv{LlP*n6R7-+Mg=7$CC7gKtTG)e_s}@DWo~Z%v1=^~ zBor{4ZYY$ZxVU(00VGdNO-;~N;P8Fx9HEPR_SxC~yDXc%M7gIP>xO*<$i1-zi3<}z zDY33s2vq0u7ca87Kv1jgi~-U*B(@2{YqnE>m?gr`qNB~i3knLJ{q}TTvl4jJf7G`5c`FihdJoYimV_OUKujCTJkL zMM`?W&ARCk)l!{1$(_J@~cR)Uo93chjeHj>)@LgwD*L8owhrsfpnudl9WfFgmJ&|)N z8=siS!EteNLN*aXKzndOJT-0m_Fa+@`KhZHkztWR-bFzpR#q{~4#mtmnVFdhI9VB) z>2;7z!fsH9chzPj;JIn+gNL3AwKt()UHX_5J(#2s&-D_u1JP5O=ee2h@QiTBP9V_DO9(=ifl5-p+@c ziBztLq&gfQl}oOQx%`5AmVNlZZA2hnNF?$HV-k@Rb*0X83NLRqldw!<#Kui{h^5la zq*e`z9x!`0Ud($R-;8eFVTy|<%5B5&jFVA2zKU${Tf1T4lYmqWc&wK$hSDi-86diM z2?QM=`gt9VrlvYt+qw-r@4V6N+qYM=)YP8g5H`^c6&@00-4i(4CE_4qrTS3`_f#Hn zWq3x_mrL!5=!;Nf6n8oLHHBPvqE~Z+K3U+H-}ny5(tZthbaKKPVMm%n!otE7=l+k4 zydx%_k$WqabQL?S2#`nXNVd*#YK zP_0E^EW!ff6n20_rr6ss%2``y;t-L~s-yD$79v1uAMcl-WQf{d|%MR&XRTm51 zxAygw&6Zc6%nc3+QFL^4bbl-nrNymMS^2`4im}JbGocv79_H<6<(au^bcozJJWk&P>BGsf62f(sQxBnz4f4mTll~ z0|`Zdo*3+8tn2)AXvW34o}3cq7*|G=wO9xgoD%!)hcOU8kDGX|Je$er&J;dZ9}~AO zho_+IDBpZSG^Y^M-V90E4*ndqOOdBahF3gf>Q>@|iGF94t> zZy2G3)Gu>6UNQS$18&{$dzOGN145793u!a#k%<^YlYOLr7;!ai?UE$#SHh0p^xHtW z#sMUy`WU0t-8Ysj8djkY7K(wHoE~QMXL7gD`;NNGLwRrNy1VQVlc5nXC~x?!4y4iA z$m_<((-B@v<0_a%B~vUOw(gOe>X&%jkwXQu3TSP-lLm*AgSUZ09Jb%x*HVc`?drJ$haA$niPNJK<5kIFxE4Np?i{_N8Wm?-@e_m2<1m{{b9Hul&7&h z<-Uj?bzS?FbnU?pWEn-rNdaR|k+?}kIS4o`Z=3T_l2-E`RJ4O2LSEIfp})~YZlMETAEVNFn}=a&0Z}Cd1(x`>2mVI2VLkR( zV~*p|XY=#(Ss0j@n8JlrJ#8;#fP@PnVZImuI3ok3fe-A3L2C3_*c6F(NK!j<$hgq^z?|bT?W9e|`t0oNT24z#OTH08@BGOWA?9`_YL?e~0yVN~9v0v^i-Am-!X}KK4HrK@FBme@Y5%^9nquF z&93MRd-B@61L43g(p4t|0s@-)`uf5K_Rqya7K*;^Fdnhp+R1Y3Vn9Y#JLnF{Ms1F- zYVd*vtJKe#hm{~{!$L-b`O%YOfCaw9yoXQI(}yUpIgDynY(&Mk$K0^6u&5D9o*evx zp7`_?cuQVlSV$mD%>X-VZG7+Ez19(BSrwJz5N?5v3YkQ_cVK?hc+8q`Oe3o0<#$lM zC@o9v9hm~HUh-YhK*nFe%wrVs>H*t(XJ3H0v-Q!r2JLjVnXD_+Ej5y}nJG@FF@x-p4B|)lVTh8 zm$qeh44+N?gZ!wf+OMp=YB_2{PqkUDF%2BHFFFsb5Hmil=(Cp;6bbZ~LD-BBf+9xh z^1X_fxI0kNau3+E0J~IbXZ7-_!Mt{TeUcvf@S#JEfax>e2a7M~&_Uh?{WSc=VT`lh zbzN8WLE5WiklO6w@^f79qeqX*FP=~hVbet=6(7l1JeSWT1A4_CL1|`|2)o}|X&?Tx zA$SuD!GNF--sXO6^;ICXq-bF=QL-@J^2TwssK4xXKJRl4$5z#RZGFN1@-q-gTW-Jw zG%ba2?#8_A#*PA~Y1%TxP~7mj0W=?gyvp#ZovjS9pIKs{65zD4I(V$l6a}(YX9nMR zTyap|PyEcUU8l{s*=9;)4Qi9o^93qoZiHuih51F-IH7iske%p9E`oRr462T?00Xl} zfKoww;)AY4kp2_d-n2bz(^i(0l=LL43-@+*XJ&cvlTn&27B*zXGi>#SdWo2q)G@ta z-t`A@%JRL$GiS~u?TjF|d+HaOKvxi%J+#~kPI;Tmd7I45C%>&?*XaQWn7EFFgv2N| zJJ`$cFMR_>juBO!oNU;zYnx9{-KAgCCBr&SHli<19N{u)t;GQgVB0N0iefcm;iP4&Dz#y>(((~-A}~lGC|on1w~gcaRanl2f2UN>Ot~JjNl0%|8XUFV*c)FErOP6 z7hqzb+*M*~f3!Jqz=BF;8?R3ip-+`9Q_(JzF z-oN)TLNOc^X~5y~=H`|9(=XpKsNzgd;f;8tx0?(LHSHzcKqmW!X-jqop8Q?etnUO# z+sq(8jnCcscuOfDmqrH{?#^`{(R8+Jj)dW9pZrrRGN`h$axDj>6i^>BGU^u@3vZST zUS|g7t34BmPu`Ns`4UT2F|G_Xz3GapgC7le4K_W)8cTaF=Bo3o?v@s4QbRaxZ#ZI5 z062WIW}*TwQ$PqCGPVF{9_J^s7pm1Y<7GoRI)(z>lhQ}(+R7>_HZi%8kKtwj&=Ji8 z*^ybs%vS|^B1vt)5AGirGGk$v*B=VHl%|9=0aF#xOi>5gk7HiFS`tmW#%RO44svwQ zz8AZ~LB=9sRZfXo^E){&p74A14XOxI@;aqUj>S=|ypKPMvMmP?Td+fQ(aHx~Yj&ko z#csmwQ$Jr|Z(G>d=sO$yRU5s*eX1cwFc!~-z2XZYbq=v=oI6Q@otw}mRLk+zM!ro; zo2l{9&f#>VsRV5gd{@US?sS3H8$AZDdB&h8gOgg~zJE>eh4`Vvn&MshG^WF8AW0?1 zGUh#Qy$L#zpf2mGT){lAfEWE89`^S3*SfAl#Mn=aizCmyL|(Vpz49^i8QWV`KnxCL z2}+T_56c!oH+8nXCIf8|fp;Cu{{LEAHO{sLsRGca_X@iU-b?Qlsfbygld&8<0q8?! zz6bdC3SH2Tc;N#qfubjBgMFtCRh!7DA>a59v-T(0W4k8o9`uzZ zg8$YZc#Ie?YtWBiHfjNaJ1(m&PmU_bY1M{189W)=^tdyplhm{b)cWOmG3EY>)wFmI zgLfjt1nUSZE32{P_t)Bbg!7GZ&d0b42pWMdEW9N8;C0V%%2me`S1&Gv3<;09{zD+AK&hyzLZB2AY#7EDyNL~I&%NMg`w#G^qh)S4yvVg zTiVj4>>1I&+4`1PK5qB8!Jfo|N*^Al?8!_JsMX;O#($&^14TK%2?3QIsab|XaFQVC z+GogtDB*bskz)w*@X+LdKoRic2BJ`e6S=nnkjg{BAZn93c%KRqXy{k+eMtdR{~_k) zuhYd?`GHh%9=4sHQ{-CrHpD3*EYgX4mzHX@KG0Yc1Bbr+10Ae1MP2I%}8s8#+) z%Ag(oa)&_T?>*ynFlcRPeg6QziG*EeDSmg5 zH`reuzdLz%6|dyq@P+a-+Vgt9-s49g19!J8(SALgP%kk1ZY^|d?2YvuU7gny^Czc) z5=~pLn}X^TzULQoK5(4)X7k*342Odn9rk~mmLc0d3z}2FhqU=D6(a%upKv(-57g)c zeg5ySpo|TD4hH|vUqMa@{~^p}1>t4mUOFcAkntCgoZ<8IEXk^<7zEug?V?^gecasK zzuZ4fBwU7aW(^<%FVQxT@`A^p{8zvLv871+3sKZcV`nIcX@;!gyt*!b)ngk}jCpZ6 z9}(xu_HlVd7RS!UreI)@h&FrhAY#s$xcVhXBgA@auJojw7OZV@LH+nbKW!fXJHw$dJ~@SjT_C9xcM!CPFD>?bL)~ksQVl=v09i@2Yxl2$Jv8MPA*H~G3GqxMn}5fGu1hty{?#)6CKh5~~H^q75V#<}%XL z0|ys>d?8}I1jN#~5@ZjojWW$N)YXmYaSjF#EI;UB0!rX&UN5LG#?zlU6Ew0|zmmZ5 zT1fH6H@)+WYy`k*FNkIf-5>N=jYrGK{{R+pfjsYDPWkk%b56a#JYW8dRN5+r+|{>!=bx3%;HJ-@VB z+j`2jn-RrW>$q=CaYDnkuq6}c?TzJpg9mDAYAf#I;*W5y&R%R)?3HWoxoGxj=-$wE zB6R)s&gR_t^YAS619@=Mft}A%B-bKNw=_Ryokm=`>gu+Coz#W$PaCEF0<)ij-Ht4A zKP=X4EkJ;b&HTWtiHV7e6ml;Y;^NJ{TJaZ;!u@Z8bgdk9uBv0qgkr>dj@hFUAO&sx zL#>70LyzaV`qaherOE^b8XBepWvKDuLqVI;^S+Og*~IW@=j-HX-=wk zlCoXs7#?G_i0ys*DI+bdc6C>ohs&`E6mjfxWj|+c*GnPW7ej$blsDIk*!0o3J24YE zz)_ro)&KIIJT-Y%QK(aObvy)#hFwYrox&3HTfFN&Z7$AwZ)~Qe_>U`LG%#xYarao_ zjM={tCKt}r`J}l0WV<0_L8@`CqoZR*d)eP5Xd47_GwVRldK2G29I1QilKY&KIrz#d znFQNp_9nJ(sd@!mUXnNu@8yO|ynmFk z;=q0BQjN(uN71{6%JP%GESZ5n+@w6$eg@RJf3cVih-**JiM;WI|9C^@k>g|QLZo$L z52}c$2Zu`Rrd4RDzWNzZ{}{My$!la7U12x{;*}L$Jw3fvgpFKi&6TuEj}T&FiEYCX z{V7&xmUHETyQTh!*-x=rlck(p0cVOo$u`uIFUu5lyi_#^d`m;s6;^c5Gl&ECw0d$2 zpyc7&4nABMsO1kV0@kROJ$(1EKuiK{IXTgS(2k|0icsvw)nGs6=ev;0DJq8IJl@^E zr@elmjpwT4l@c;s)_ACVx8{a8l2=xeW|=irXfw#xH<=R-U7o59)>LK5Sf#T}wdYj=&MYA$HFeF3Y-N&GJ74o$Ixfx2?CEi07A}HfkIheLWqa{5 z;_B=#%F|9Esy>;i&i(Yqy67V(u-l|^Ybrx;h~+|ECeLQ1lLrnE3lqpI903g!GgpqH zew}x`ZwIc2ZQBZoUF4Sg$p4&sc?K~b)iXyIRn%}Obkw;jv+A-j7PPwaRyGOTJS#ZL z4$opxK`)$FQKjy^xVmtA`Qk~TK6M1yz58CzaVfLwDU2+kAMdT5Bpl*`zq>n`t3F!d zIQ8PFAxWY}nmjw4SD)uOm6Re>Yd&w5n!5`EHG22-xL8bSbou7MpT|7&3sEk;u zNReHjQ9&}bl`L>2w=RXjt}3%#Cyt}kWvY^rfq(12+#6N0Fz0$i&ZtGRJE zxjgtZ;Se)i+oOiHo}5Fmvz=bbG2WU5?pcbGRYdBe-A>x}mDR+T>L0I&@}!FR^`=Al zgn?xQI`Ex02b)8t;PleQ88=g#7K)0Y8dNDtwfDWQjJgXhmbc{X*}Int_cceIPTug^H?>>jRz9S0hV1+ot@F5ku*;iOSAF|0Sno9*KHbMRhHDQ95 zvsb#T-bJ5sQ>$P=z&DCBTHg=HQpUzU9&P1x*Rk-Twv)t`X$VUp&vC=)64Qo3mONp# z7%7Ep^@=GCGV|m@n2$0Du~8EQz4a~{6l#mK*|O6jmg1@{9u#uCnzp&1Mi_I!=CpB% z>-l1zg!r3=s;JvR*^ORZ9AEoQTY6oxrA;e2;g!}5uZvpgJ>;d{d7IY{gkl*B<@{$? zV+Vg|5Z*3*E6wi^?|*mn+vSwZPhvsl0=KrgN0R`Qq^?D8+ew~QZJ|dI8xQl?ca7IC zp_^kDZ9Ks@j73*4?2-QfI{|at>tkh>) zebNVGdkZpxYN0_lR+4{c7F?d zeATDgRxaw<%fang=lS}cjk5H7v7jRTx^{gVVwNGoA%8KJu-gviJQS-Mqy+N2CJ9%= z5C!j5(M(xs7aTE!#4IHuNomwk*WlU+8Of9V-$dwkes-bfUSQNC$2&SXVs7!=I5*q$ z=0)uicJcf;4YI)Jb;`}f1ywI0V&hG(uJrE&c3ist)?fTXf$-D%WVy@`4ao?kGsw>r z+|n(%U64OqLTj1bK9%(9^UQ@viiQ@`ww>{>?-Prx>S9pe?+u2*2zpYyi>|>hHRr4P zb`o~E++iinbtY!XGhw`WYCEu_9FK1DY4=a zjCHSQQLO^J8ww~7=+g~USb0ts=S?b9EZna&o;A}_DQYR%?lf*)9=Dm(Qhp(*YB&GA z+ocG_&0)89%gJ&xnOO7fw$RshaePFCxwEfI$m5$z&k?lf5N0NZdK<5hqzS>G9B($q zSa3pAf-e0mKILRWqd7sVY@6ZwZsPm0#U;Aq%7t@NgEnV=o=#$c93(+T_M^ zaUo6Gb~xtjFuXbG+Z`cy3KfJwINkTr*TMD|>sf83OA5o{tK>%)oAcUxwFG|p_t5J0c+t1l~N|dTwuY04oi3?qHiJ#JqN1&EqBp z_S$=5SA^rc96`0g#7~dCzb@Aie69kLG=|1B8)V%^+TDu=#?!I09K#{^rJ+_1ltMcF6X^XJd6Y&|_M+q$!*Km!wM z;eU494hCo?(#w>D*_|z&Yuwr1Yy$N?L=6=;L^CIt&>g;I#W$$Mv{atGHlSq_Gy|Ep z#wV2)+=YoE)M}On{TSgM?n5c@Q0> z*wZTxwErT`>!8foZ=H>!&WG<@2G*|S`!w3H!L%Rdq7ozQ}Iaf7`Hw_5&@D?lbJL38ymy(=5&E`S!Uru2W{<0=0K6B=VUv z;nPoxjf18CDhcQ{w?;m4M5 z>M^8&JBfWY1{p;dRoCqe0Rb8yNjklW4wu0_4)8j6OT=NJduqVPoSfN+lN%yery~M~ zVHkuffNO}>YdtY6FdOq4P-vbxRyR3uD?30ZSS_`!Q%U)E! zijNP??wSjh`eN%Cd!HI+E%6qk;S;&BtFEeA87&61Dy#tHu^^cvkRDDvs5^W33lg`j zJ@5$gw@lF)WCGj*6oM=Q^dSa21)u-W R-3VxuytI;3mc(73{}1b^Q>g#| diff --git a/uhabits-core-legacy/assets/test/components/BarChart/axis-yearly.png b/uhabits-core-legacy/assets/test/components/BarChart/axis-yearly.png deleted file mode 100644 index ec97df8a1b5d40c9d645030717eef8749a238130..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16469 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 Pfq$wuZe1@?unPWvs8bJ* diff --git a/uhabits-core-legacy/assets/test/components/CalendarChart/scroll.png b/uhabits-core-legacy/assets/test/components/CalendarChart/scroll.png deleted file mode 100644 index 16744a297e555a4b31aac013d8603bc5da674816..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36152 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 aj*zJZPp>I;adSf8pPG{9jiPIo0sjwh9Y!Gl diff --git a/uhabits-core-legacy/assets/test/components/CanvasTest.png b/uhabits-core-legacy/assets/test/components/CanvasTest.png deleted file mode 100644 index 75b3d8f2095e497c76b49afa0430113e497ff909..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24849 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 N44$rjF6*2UngH#{jKcr` diff --git a/uhabits-core-legacy/assets/test/components/CheckmarkButton/explicit.png b/uhabits-core-legacy/assets/test/components/CheckmarkButton/explicit.png deleted file mode 100644 index c2b66f74ecef65a31519752ebf2ab34b1c37609e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 350 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7Ro>U{v*VaSW-r_4bCL*Wmz};~&jC zwikTm>eI7r=x*+q+&oe+Q9Jnx@gM&x zJUzUC1|qZq4}}^8NeK_f~aNE2lBwl&9s4U&QAB9AN3}O-gbTTKhh0Ub3pJ2zYLHP-~6L-{)&BNyZ+|}&RH6`&pWhI e0Te)R;84XnYeI4HU*$KQATdu@KbLh*2~7aK@Ri*F diff --git a/uhabits-core-legacy/assets/test/components/CheckmarkButton/implicit.png b/uhabits-core-legacy/assets/test/components/CheckmarkButton/implicit.png deleted file mode 100644 index acc067024e8b6b82671a930b56788ecf266a3f70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 345 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7Ro>U{vsQaSW-r_4bCL*I@>c;}3Zr z>F%mxbrb*lled{{*7q;9#(!V>P`tN;~?aYsAr5*p=+oqj0h&mTd#e?sV9fV)aSW-r_4d|!ujW9R;|~?t zCMOu&J|b<6ISe*gVfImcF2ynDawM>*v>OUvym z%OBr+xxD)P;fEg_E>?Y9zI?LeeGc!Qc*{dQKip0TPRx7eGRM-%_0LO5?HJnwu}&xS zl~s=Yx5!V8T({EZ|JNdkg>gadCpzMf?GWc${#R5cwP!*}(hBcXX(`7)Z0-X44+TliyPe;w_TKZmW8G=EErbOTAPf!nKk-?7JLs>MTXPd6?CI*~vd$@? F2>=h$z83%h diff --git a/uhabits-core-legacy/assets/test/components/HabitListHeader/light.png b/uhabits-core-legacy/assets/test/components/HabitListHeader/light.png deleted file mode 100644 index c146b916d3c5581b0b880643845b388caa4628f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4278 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 E095lBwEzGB diff --git a/uhabits-core-legacy/assets/test/components/NumberButton/render_above.png b/uhabits-core-legacy/assets/test/components/NumberButton/render_above.png deleted file mode 100644 index 4673ef0f355df5f3966d86caa94dc0a83cc6f0e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1653 zcmV-*28#KKP);Xn* zd+s_8000000000000000000000000Q#@xBboSy$qsb}7OxtQ#kLr%v#E1pZ@b61?M zx8(G^51fnb1LgW?Nlq>4`A5VH?UZ^t{^cB_J}cT?&ydk~x~^AXaM+PkYr6ilRRhrM z=z9Mbly!CFa_T<=ykpi3&~EP&f4@^s9y5Y%$!W+8IBCrQqy)CTcTIfHg82Ow^Y?*s z!Fy^XavDL$y^wkt3bgI^WX3aLFu*-VX=k(<_cPOGb|i9|VE~a?=r2-bB=uTvFmB-< zo6)34?_KM1n&W~*0MlQ@G{UnDd4?I0mki(eU#jhb_l#9J4GO|PXfLrG}D1{q+hWEx5{WQviqksi6NHw&k}-g5HoUwuwz|8_$3=L<}Z;Udg4C&*n zaYosaGj>q$<+d!cbMp6i#rc;R#eHH`&KMeCJ=*~8mxXh3F4qs0Y)j5qp|YhxW^km% zT9JKvldLeSvL&Yxm=;yVwygV!Hgr6wGO1*srX$Z}*2O9Kj&(T=aVuge@Bbr%8Lc+s zS&bTHd!Vhkyqm@y&QZx}M5;-?SDpp<({c}9 z1?IhvB$xd1Q0A17w|`gV000000000007X{G6S63a3TMGCK*xMzd)!x#5k46mc5p-` z>?I69v!+Uw_3*Qk*7{#d7FsU`6$k_EK<1X*Atfcu&AcjIPjWkYJ$llL*e{IK(GKv% z?|#p?d8TTPZU!^$q*e^J>2%zSspH6^{jV+R0$e}Z(v>CQvKsF9;3d|Akx#YyD^bC$ zs@YkIo;akWuJ=cDp+d@&GQ(oqHP#49fm^X_Nozq>-b(D`>vqBjMf+c4pS~O@s+Ia1 z?fL8XfR!?`T~JupA3wW|W<_w-luo&L1E|rfm!Z#{doH@JL^Gjk|LbRfK%u6(dsBOp z0i>dWN(pY1le-v}GfuDu=(%4R3_BHF90@;Lw*NJp0lnx>)qLyqM>YVR5$E04jTEhw znnyFhpU(JfKT!CQO8u`L%3t4z1+QOa05qL`Gm26wWl{{I=0P!?4Il2$0vY@j4ujNSRUPje|20qn&E2gBY zxh`f{Dt=w$;s+Vod*sU6ybc)1ekF7IgE1e!Sh@c-T?cGR#mZYI@~Y2bY#ZQ)7G#em zO2x_L&~?yw)DaK^bjHwo}EneVGlJ4X`SMIJKcQ0e!CP{TnFrexfL>Z2#+- z{jm4GHspUJVYdvVpWjOCyXfsGJtSAc-KJ3^^Mug=vMgQZ_sN=nGG6MxsZ{8HO?N@} z$*D>K%XAe~-=(B{ofbcN{+Oz#Nv>);nHvMby&mPN4#|Gy?QoXuKgciu7dHS500RIR zV7yT&>I%xu0RR91000000000000000*i9Y+o&kXm^TF1E00000NkvXXu0mjfG-f0B diff --git a/uhabits-core-legacy/assets/test/components/NumberButton/render_below.png b/uhabits-core-legacy/assets/test/components/NumberButton/render_below.png deleted file mode 100644 index c3ffb68de1ea49a52cd17a8bbd7da136e6c1d2a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1341 zcmV-D1;YA?P)x8bKd8D-rsZnJm=qAR0IG300000 z00000000000000000000fFJ1Y?ym0Y>bld}**Qd#;_Hr%j*ErXb?iap+#qsRiKsn? zER)pdTbCCgvYrQ!^^Xv_kMpI=7xEuuN|;96{it<$0V1G`Nc&|W<~zw4$tcN&na=n0 z_xG1arOPJ=v{?vQB|=WAJOcv*C+WW>3$a~M>GG-hd2MMD?phpGX(4SrDqTL+fOV4$ zy~G-MKUhlm`6zVx%L8I3zj=akj zf_tLS<&y&@EJVDqjBMK-ar{sey1bfxaFFqin*lJ zFp+E+zm#OoAdEZE zvO?5+ePFg%OA1mk;CrfgHvnb;p& z^7#lT8Mq}zFYvs(tV}J*ODs#ihjcwHQ^aazYFde|lS!igK1#kXvIlfRyLZ{<1SXJI z!icm-TD~;vS1V-n`$=~~ruN6V^iRk-YrC1oQ^MvMT_HTM2@(?aWO*@Z)QUMtduDTh zR(czavDZ&A4dl$LL0Np-|VPS6_UPXE9L6Ak&vBmIAF-}?0RieRw9i3acqJH zq{e$tC{nENj?aDX~=u`8XbQ_PaC91yhgK|P

    y7`pFe8aalTGOzs;FQ3zBGs10zyj9vq>wf}!|#AR*Y{`E{9ph8HFfWkW9 zkO*s2^f!dD|9=~xjayE&C_)8@Gg4#5|ypg{} z>*&(bkLVBk-l;mhApa#rHCq5}3ZesmkC2d3BGnB3Uv5bCP zUnJpEDz?EClWuID-8J(`c$l&s#^#b~J7ldnfWM+LXdcRA=k@mXo;|Alajgj@TvfTl zA~~1IEG5V5Joq`RJ?3vZuwKcVJgg5;b3M{jT@t&JxwIb$aDcbp0)hkJ05|{+@Y?}X z5>}Ri4FCWD00000000000000000000C=`AJrh#MP=hI$+00000NkvXXu0mjfFNbqq diff --git a/uhabits-core-legacy/assets/test/components/NumberButton/render_zero.png b/uhabits-core-legacy/assets/test/components/NumberButton/render_zero.png deleted file mode 100644 index 235de2f627ba81e14eeef070e39f4a6d0109bcf1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1322 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 - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -plugins { - id 'kotlin-multiplatform' version "1.3.72" -} - -repositories { - mavenCentral() -} - -kotlin { - targets { - def sdkName = System.getenv('SDK_NAME') - def isIphone = sdkName?.startsWith("iphoneos") - def iosPreset = isIphone ? presets.iosArm64 : presets.iosX64 - - fromPreset(iosPreset, 'ios') { - binaries { - framework { - baseName = "LoopHabitTracker" - } - } - compilations.main { - cinterops { - sqlite3 { - defFile project.file("src/main/c_interop/sqlite3.def") - } - } - } - } - - fromPreset(presets.jvm, 'jvm') { - - } - - fromPreset(presets.js, 'js') { - compilations.main.kotlinOptions { - moduleKind = "commonjs" - } - compilations.test.kotlinOptions { - moduleKind = "commonjs" - } - } - } - - sourceSets { - commonMain { - kotlin { srcDir "src/main/common" } - dependencies { - implementation kotlin('stdlib-common') - implementation "$KX_COROUTINES-core-common:$KX_COROUTINES_VERSION" - } - } - - commonTest { - kotlin { srcDir "src/test/common" } - dependencies { - implementation kotlin('test-common') - implementation kotlin('test-annotations-common') - } - } - - jvmMain { - kotlin { srcDir "src/main/jvm" } - dependencies { - implementation kotlin('stdlib-jdk8') - implementation "$KX_COROUTINES-core:$KX_COROUTINES_VERSION" - } - } - - jvmTest { - kotlin { srcDir "src/test/jvm" } - dependencies { - implementation kotlin('test') - implementation kotlin('test-junit') - implementation 'org.xerial:sqlite-jdbc:3.25.2' - } - } - - jsMain { - kotlin { srcDir "src/main/js" } - dependencies { - implementation kotlin('stdlib-js') - implementation "$KX_COROUTINES-core-js:$KX_COROUTINES_VERSION" - } - } - - jsTest { - kotlin { srcDir "src/test/js" } - dependencies { - implementation kotlin('test-js') - } - } - - iosMain { - kotlin { srcDir "src/main/ios" } - dependencies { - implementation "$KX_COROUTINES-core-native:$KX_COROUTINES_VERSION" - } - } - - iosTest { - kotlin { srcDir "src/test/ios" } - dependencies { - implementation "$KX_COROUTINES-core-native:$KX_COROUTINES_VERSION" - } - } - } - - task iosTestCopyResources(type: Copy) { - from 'assets/test/' - from 'assets/main/' - into 'build/bin/ios/debugTest' - } - - if (project.tasks.findByName('iosTest')) { - iosTest.dependsOn(iosTestCopyResources) - } -} diff --git a/uhabits-core-legacy/gradle.properties b/uhabits-core-legacy/gradle.properties deleted file mode 100644 index fae8ffca6..000000000 --- a/uhabits-core-legacy/gradle.properties +++ /dev/null @@ -1,2 +0,0 @@ -KX_COROUTINES_VERSION=1.3.6 -KX_COROUTINES=org.jetbrains.kotlinx:kotlinx-coroutines \ No newline at end of file diff --git a/uhabits-core-legacy/settings.gradle b/uhabits-core-legacy/settings.gradle deleted file mode 100644 index 20ee303a3..000000000 --- a/uhabits-core-legacy/settings.gradle +++ /dev/null @@ -1,9 +0,0 @@ -pluginManagement { - resolutionStrategy { - eachPlugin { - if (requested.id.id == "kotlin-multiplatform") { - useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:${requested.version}") - } - } - } -} diff --git a/uhabits-core-legacy/src/main/c_interop/sqlite3.def b/uhabits-core-legacy/src/main/c_interop/sqlite3.def deleted file mode 100644 index 08646e486..000000000 --- a/uhabits-core-legacy/src/main/c_interop/sqlite3.def +++ /dev/null @@ -1,25 +0,0 @@ -package = sqlite3 -headers = sqlite3.h -headerFilter = sqlite3*.h -compilerOpts = -std=c11 -linkerOpts.ios = -lsqlite3 -excludedFunctions = sqlite3_mutex_held \ - sqlite3_mutex_notheld \ - sqlite3_snapshot_cmp \ - sqlite3_snapshot_free \ - sqlite3_snapshot_get \ - sqlite3_snapshot_open \ - sqlite3_snapshot_recover \ - sqlite3_set_last_insert_rowid \ - sqlite3_stmt_scanstatus \ - sqlite3_stmt_scanstatus_reset \ - sqlite3_column_database_name \ - sqlite3_column_database_name16 \ - sqlite3_column_origin_name \ - sqlite3_column_origin_name16 \ - sqlite3_column_table_name \ - sqlite3_column_table_name16 \ - sqlite3_enable_load_extension \ - sqlite3_load_extension \ - sqlite3_unlock_notify -noStringConversion = sqlite3_prepare_v2 sqlite3_prepare_v3 diff --git a/uhabits-core-legacy/src/main/common/org/isoron/platform/concurrency/Observable.kt b/uhabits-core-legacy/src/main/common/org/isoron/platform/concurrency/Observable.kt deleted file mode 100644 index 9aa11a5e6..000000000 --- a/uhabits-core-legacy/src/main/common/org/isoron/platform/concurrency/Observable.kt +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.platform.concurrency - -class Observable { - private val listeners = mutableListOf() - - fun addListener(listener: T) { - listeners.add(listener) - } - - fun notifyListeners(action: (T) -> Unit) { - for (l in listeners) action.invoke(l) - } - - fun removeListener(listener: T) { - listeners.remove(listener) - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/common/org/isoron/platform/gui/Canvas.kt b/uhabits-core-legacy/src/main/common/org/isoron/platform/gui/Canvas.kt deleted file mode 100644 index b397febb4..000000000 --- a/uhabits-core-legacy/src/main/common/org/isoron/platform/gui/Canvas.kt +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.platform.gui - -enum class TextAlign { - LEFT, CENTER, RIGHT -} - -enum class Font { - REGULAR, - BOLD, - FONT_AWESOME -} - -interface Canvas { - fun setColor(color: Color) - fun drawLine(x1: Double, y1: Double, x2: Double, y2: Double) - fun drawText(text: String, x: Double, y: Double) - fun fillRect(x: Double, y: Double, width: Double, height: Double) - fun drawRect(x: Double, y: Double, width: Double, height: Double) - fun getHeight(): Double - fun getWidth(): Double - fun setFont(font: Font) - fun setFontSize(size: Double) - fun setStrokeWidth(size: Double) - fun fillArc(centerX: Double, - centerY: Double, - radius: Double, - startAngle: Double, - swipeAngle: Double) - fun fillCircle(centerX: Double, centerY: Double, radius: Double) - fun setTextAlign(align: TextAlign) - fun toImage(): Image -} - diff --git a/uhabits-core-legacy/src/main/common/org/isoron/platform/gui/Colors.kt b/uhabits-core-legacy/src/main/common/org/isoron/platform/gui/Colors.kt deleted file mode 100644 index 4161c1218..000000000 --- a/uhabits-core-legacy/src/main/common/org/isoron/platform/gui/Colors.kt +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.platform.gui - -data class PaletteColor(val index: Int) - -data class Color(val red: Double, - val green: Double, - val blue: Double, - val alpha: Double) { - - val luminosity: Double - get() { - return 0.21 * red + 0.72 * green + 0.07 * blue - } - - constructor(rgb: Int) : this(((rgb shr 16) and 0xFF) / 255.0, - ((rgb shr 8) and 0xFF) / 255.0, - ((rgb shr 0) and 0xFF) / 255.0, - 1.0) - - fun blendWith(other: Color, weight: Double): Color { - return Color(red * (1 - weight) + other.red * weight, - green * (1 - weight) + other.green * weight, - blue * (1 - weight) + other.blue * weight, - alpha * (1 - weight) + other.alpha * weight) - } -} diff --git a/uhabits-core-legacy/src/main/common/org/isoron/platform/gui/Component.kt b/uhabits-core-legacy/src/main/common/org/isoron/platform/gui/Component.kt deleted file mode 100644 index d7ab56a68..000000000 --- a/uhabits-core-legacy/src/main/common/org/isoron/platform/gui/Component.kt +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.platform.gui - -interface Component { - fun draw(canvas: Canvas) -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/common/org/isoron/platform/gui/FontAwesome.kt b/uhabits-core-legacy/src/main/common/org/isoron/platform/gui/FontAwesome.kt deleted file mode 100644 index 3791228df..000000000 --- a/uhabits-core-legacy/src/main/common/org/isoron/platform/gui/FontAwesome.kt +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.platform.gui - -class FontAwesome { - companion object { - val CHECK = "\uf00c" - val TIMES = "\uf00d" - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/common/org/isoron/platform/gui/Image.kt b/uhabits-core-legacy/src/main/common/org/isoron/platform/gui/Image.kt deleted file mode 100644 index 044df1c6f..000000000 --- a/uhabits-core-legacy/src/main/common/org/isoron/platform/gui/Image.kt +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.platform.gui - -import kotlin.math.* - -interface Image { - val width: Int - val height: Int - - fun getPixel(x: Int, y: Int): Color - fun setPixel(x: Int, y: Int, color: Color) - - suspend fun export(path: String) - - fun diff(other: Image) { - if (width != other.width) error("Width must match: $width !== ${other.width}") - if (height != other.height) error("Height must match: $height !== ${other.height}") - - for (x in 0 until width) { - for (y in 0 until height) { - val p1 = getPixel(x, y) - var l = 1.0 - for (dx in -2..2) { - if (x + dx < 0 || x + dx >= width) continue - for (dy in -2..2) { - if (y + dy < 0 || y + dy >= height) continue - val p2 = other.getPixel(x + dx, y + dy) - l = min(l, abs(p1.luminosity - p2.luminosity)) - } - } - setPixel(x, y, Color(l, l, l, 1.0)) - } - } - } - - val averageLuminosity: Double - get() { - var luminosity = 0.0 - for (x in 0 until width) { - for (y in 0 until height) { - luminosity += getPixel(x, y).luminosity - } - } - return luminosity / (width * height) - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/common/org/isoron/platform/io/Database.kt b/uhabits-core-legacy/src/main/common/org/isoron/platform/io/Database.kt deleted file mode 100644 index ab0409214..000000000 --- a/uhabits-core-legacy/src/main/common/org/isoron/platform/io/Database.kt +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.platform.io - -interface PreparedStatement { - fun step(): StepResult - fun finalize() - fun getInt(index: Int): Int - fun getLong(index: Int): Long - fun getText(index: Int): String - fun getReal(index: Int): Double - fun bindInt(index: Int, value: Int) - fun bindLong(index: Int, value: Long) - fun bindText(index: Int, value: String) - fun bindReal(index: Int, value: Double) - fun reset() -} - -enum class StepResult { - ROW, - DONE -} - -interface DatabaseOpener { - fun open(file: UserFile): Database -} - -interface Database { - fun prepareStatement(sql: String): PreparedStatement - fun close() -} - -fun Database.run(sql: String) { - val stmt = prepareStatement(sql) - stmt.step() - stmt.finalize() -} - -fun Database.queryInt(sql: String): Int { - val stmt = prepareStatement(sql) - stmt.step() - val result = stmt.getInt(0) - stmt.finalize() - return result -} - -fun Database.nextId(tableName: String): Int { - val stmt = prepareStatement("select seq from sqlite_sequence where name='$tableName'") - if (stmt.step() == StepResult.ROW) { - val result = stmt.getInt(0) - stmt.finalize() - return result + 1 - } else { - return 0 - } -} - -fun Database.begin() = run("begin") - -fun Database.commit() = run("commit") - -fun Database.getVersion() = queryInt("pragma user_version") - -fun Database.setVersion(v: Int) = run("pragma user_version = $v") - -suspend fun Database.migrateTo(newVersion: Int, - fileOpener: FileOpener, - log: Log) { - val currentVersion = getVersion() - log.debug("Database", "Current database version: $currentVersion") - - if (currentVersion == newVersion) return - log.debug("Database", "Upgrading to version: $newVersion") - - if (currentVersion > newVersion) - throw RuntimeException("database produced by future version of the application") - - begin() - for (v in (currentVersion + 1)..newVersion) { - val sv = if (v < 10) "00$v" else if (v < 100) "0$v" else "$v" - val filename = "migrations/$sv.sql" - val migrationFile = fileOpener.openResourceFile(filename) - for (line in migrationFile.lines()) { - if (line.isEmpty()) continue - run(line) - } - setVersion(v) - } - commit() -} diff --git a/uhabits-core-legacy/src/main/common/org/isoron/platform/io/Files.kt b/uhabits-core-legacy/src/main/common/org/isoron/platform/io/Files.kt deleted file mode 100644 index babecf082..000000000 --- a/uhabits-core-legacy/src/main/common/org/isoron/platform/io/Files.kt +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.platform.io - -import org.isoron.platform.gui.* - -interface FileOpener { - /** - * Opens a file which was shipped bundled with the application, such as a - * migration file. - * - * The path is relative to the assets folder. For example, to open - * assets/main/migrations/09.sql you should provide migrations/09.sql - * as the path. - * - * This function always succeed, even if the file does not exist. - */ - fun openResourceFile(path: String): ResourceFile - - /** - * Opens a file which was not shipped with the application, such as - * databases and logs. - * - * The path is relative to the user folder. For example, if the application - * stores the user data at /home/user/.loop/ and you wish to open the file - * /home/user/.loop/crash.log, you should provide crash.log as the path. - * - * This function always succeed, even if the file does not exist. - */ - fun openUserFile(path: String): UserFile -} - -/** - * Represents a file that was created after the application was installed, as a - * result of some user action, such as databases and logs. - */ -interface UserFile { - /** - * Deletes the user file. If the file does not exist, nothing happens. - */ - suspend fun delete() - - /** - * Returns true if the file exists. - */ - suspend fun exists(): Boolean - - /** - * Returns the lines of the file. If the file does not exist, throws an - * exception. - */ - suspend fun lines(): List -} - -/** - * Represents a file that was shipped with the application, such as migration - * files or database templates. - */ -interface ResourceFile { - /** - * Copies the resource file to the specified user file. If the user file - * already exists, it is replaced. If not, a new file is created. - */ - suspend fun copyTo(dest: UserFile) - - /** - * Returns the lines of the resource file. If the file does not exist, - * throws an exception. - */ - suspend fun lines(): List - - /** - * Returns true if the file exists. - */ - suspend fun exists(): Boolean - - /** - * Loads resource file as an image. - */ - suspend fun toImage(): Image -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/common/org/isoron/platform/io/Log.kt b/uhabits-core-legacy/src/main/common/org/isoron/platform/io/Log.kt deleted file mode 100644 index 60c372237..000000000 --- a/uhabits-core-legacy/src/main/common/org/isoron/platform/io/Log.kt +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.platform.io - -interface Log { - fun info(tag: String, msg: String) - fun debug(tag: String, msg: String) - fun warn(tag: String, msg: String) -} - -/** - * A Log that prints to the standard output. - */ -class StandardLog : Log { - override fun warn(tag: String, msg: String) { - val ftag = format("%-20s", tag) - println("W $ftag $msg") - } - - override fun info(tag: String, msg: String) { - val ftag = format("%-20s", tag) - println("I $ftag $msg") - } - - override fun debug(tag: String, msg: String) { - val ftag = format("%-20s", tag) - println("D $ftag $msg") - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/common/org/isoron/platform/io/Strings.kt b/uhabits-core-legacy/src/main/common/org/isoron/platform/io/Strings.kt deleted file mode 100644 index 1a631e131..000000000 --- a/uhabits-core-legacy/src/main/common/org/isoron/platform/io/Strings.kt +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.platform.io - -expect fun format(format: String, arg: String): String -expect fun format(format: String, arg: Int): String -expect fun format(format: String, arg: Double): String \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/common/org/isoron/platform/time/Dates.kt b/uhabits-core-legacy/src/main/common/org/isoron/platform/time/Dates.kt deleted file mode 100644 index ea102004f..000000000 --- a/uhabits-core-legacy/src/main/common/org/isoron/platform/time/Dates.kt +++ /dev/null @@ -1,173 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.platform.time - -import kotlin.math.* - -enum class DayOfWeek(val index: Int) { - SUNDAY(0), - MONDAY(1), - TUESDAY(2), - WEDNESDAY(3), - THURSDAY(4), - FRIDAY(5), - SATURDAY(6), -} - -data class Timestamp(val millisSince1970: Long) { - val localDate: LocalDate - get() { - val millisSince2000 = millisSince1970 - 946684800000 - val daysSince2000 = millisSince2000 / 86400000 - return LocalDate(daysSince2000.toInt()) - } -} - -data class LocalDate(val daysSince2000: Int) { - - var yearCache = -1 - var monthCache = -1 - var dayCache = -1 - -// init { -// if (daysSince2000 < 0) -// throw IllegalArgumentException("$daysSince2000 < 0") -// } - - constructor(year: Int, month: Int, day: Int) : - this(daysSince2000(year, month, day)) - - val dayOfWeek: DayOfWeek - get() { - return when (daysSince2000 % 7) { - 0 -> DayOfWeek.SATURDAY - 1 -> DayOfWeek.SUNDAY - 2 -> DayOfWeek.MONDAY - 3 -> DayOfWeek.TUESDAY - 4 -> DayOfWeek.WEDNESDAY - 5 -> DayOfWeek.THURSDAY - else -> DayOfWeek.FRIDAY - } - } - - val timestamp: Timestamp - get() { - return Timestamp(946684800000 + daysSince2000.toLong() * 86400000) - } - - val year: Int - get() { - if (yearCache < 0) updateYearMonthDayCache() - return yearCache - } - - val month: Int - get() { - if (monthCache < 0) updateYearMonthDayCache() - return monthCache - } - - val day: Int - get() { - if (dayCache < 0) updateYearMonthDayCache() - return dayCache - } - - private fun updateYearMonthDayCache() { - var currYear = 2000 - var currDay = 0 - - while (true) { - val currYearLength = if (isLeapYear(currYear)) 366 else 365 - if (daysSince2000 < currDay + currYearLength) { - yearCache = currYear - break - } else { - currYear++ - currDay += currYearLength - } - } - - var currMonth = 1 - val monthOffset = if (isLeapYear(currYear)) leapOffset else nonLeapOffset - - while (true) { - if (daysSince2000 < currDay + monthOffset[currMonth]) { - monthCache = currMonth - break - } else { - currMonth++ - } - } - - currDay += monthOffset[currMonth - 1] - dayCache = daysSince2000 - currDay + 1 - - } - - fun isOlderThan(other: LocalDate): Boolean { - return daysSince2000 < other.daysSince2000 - } - - fun isNewerThan(other: LocalDate): Boolean { - return daysSince2000 > other.daysSince2000 - } - - fun plus(days: Int): LocalDate { - return LocalDate(daysSince2000 + days) - } - - fun minus(days: Int): LocalDate { - return LocalDate(daysSince2000 - days) - } - - fun distanceTo(other: LocalDate): Int { - return abs(daysSince2000 - other.daysSince2000) - } -} - -interface LocalDateFormatter { - fun shortWeekdayName(date: LocalDate): String - fun shortMonthName(date: LocalDate): String -} - -private fun isLeapYear(year: Int): Boolean { - return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0 -} - -val leapOffset = arrayOf(0, 31, 60, 91, 121, 152, 182, - 213, 244, 274, 305, 335, 366) -val nonLeapOffset = arrayOf(0, 31, 59, 90, 120, 151, 181, - 212, 243, 273, 304, 334, 365) - -private fun daysSince2000(year: Int, month: Int, day: Int): Int { - - var result = 365 * (year - 2000) - result += ceil((year - 2000) / 4.0).toInt() - result -= ceil((year - 2000) / 100.0).toInt() - result += ceil((year - 2000) / 400.0).toInt() - if (isLeapYear(year)) { - result += leapOffset[month - 1] - } else { - result += nonLeapOffset[month - 1] - } - result += (day - 1) - return result -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/Config.kt b/uhabits-core-legacy/src/main/common/org/isoron/uhabits/Config.kt deleted file mode 100644 index fe543e044..000000000 --- a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/Config.kt +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits - -const val LOOP_DATABASE_VERSION = 23 \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/backend/Backend.kt b/uhabits-core-legacy/src/main/common/org/isoron/uhabits/backend/Backend.kt deleted file mode 100644 index 0137d3463..000000000 --- a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/backend/Backend.kt +++ /dev/null @@ -1,136 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.backend - -import kotlinx.coroutines.* -import org.isoron.platform.concurrency.* -import org.isoron.platform.io.* -import org.isoron.uhabits.* -import org.isoron.uhabits.components.* -import org.isoron.uhabits.i18n.* -import org.isoron.uhabits.models.* -import kotlin.coroutines.* - - -open class BackendScope(private val ctx: CoroutineContext, - private val log: Log) : CoroutineScope { - - private val job = Job() - - private val exceptionHandler = CoroutineExceptionHandler { _, throwable -> - log.info("Coroutine", throwable.toString()) - } - - override val coroutineContext: CoroutineContext - get() = ctx + job + exceptionHandler -} - -class Backend(private val databaseName: String, - private val databaseOpener: DatabaseOpener, - private val fileOpener: FileOpener, - private val localeHelper: LocaleHelper, - private val log: Log, - private val scope: CoroutineContext - ) : CoroutineScope by BackendScope(scope, log) { - - - private lateinit var database: Database - private lateinit var habitsRepository: HabitRepository - private lateinit var checkmarkRepository: CheckmarkRepository - lateinit var preferences: Preferences - - lateinit var mainScreenDataSource: MainScreenDataSource - - private val habits = mutableMapOf() - private val checkmarks = mutableMapOf() - private val scores = mutableMapOf() - - var strings = localeHelper.getStringsForCurrentLocale() - var theme: Theme = LightTheme() - - val observable = Observable() - - fun init() { - launch { - initDatabase() - initRepositories() - initDataSources() - observable.notifyListeners { it.onReady() } - } - } - - private fun initRepositories() { - preferences = Preferences(PreferencesRepository(database)) - habitsRepository = HabitRepository(database) - checkmarkRepository = CheckmarkRepository(database) - habits.putAll(habitsRepository.findAll()) - log.info("Backend", "${habits.size} habits loaded") - for ((key, habit) in habits) { - val checks = checkmarkRepository.findAll(key) - checkmarks[habit] = CheckmarkList(habit.frequency, habit.type) - checkmarks[habit]?.setManualCheckmarks(checks) - scores[habit] = ScoreList(checkmarks[habit]!!) - } - } - - private fun initDataSources() { - mainScreenDataSource = - MainScreenDataSource(preferences, habits, checkmarks, scores) - } - - private suspend fun initDatabase() { - val dbFile = fileOpener.openUserFile(databaseName) - if (!dbFile.exists()) { - val templateFile = fileOpener.openResourceFile("databases/template.db") - templateFile.copyTo(dbFile) - } - database = databaseOpener.open(dbFile) - database.migrateTo(LOOP_DATABASE_VERSION, fileOpener, log) - } - - fun createHabit(habit: Habit) { - val id = habitsRepository.nextId() - habit.id = id - habit.position = habits.size - habits[id] = habit - checkmarks[habit] = CheckmarkList(habit.frequency, habit.type) - habitsRepository.insert(habit) - mainScreenDataSource.requestData() - } - - fun deleteHabit(id: Int) { - habits[id]?.let { habit -> - habitsRepository.delete(habit) - habits.remove(id) - mainScreenDataSource.requestData() - } - } - - fun updateHabit(modified: Habit) { - habits[modified.id]?.let { existing -> - modified.position = existing.position - habitsRepository.update(modified) - } - } - - interface Listener { - fun onReady() - } -} diff --git a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/backend/MainScreenDataSource.kt b/uhabits-core-legacy/src/main/common/org/isoron/uhabits/backend/MainScreenDataSource.kt deleted file mode 100644 index 9cadb8cb3..000000000 --- a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/backend/MainScreenDataSource.kt +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.backend - -import org.isoron.platform.concurrency.* -import org.isoron.platform.time.* -import org.isoron.uhabits.models.* -import org.isoron.uhabits.models.Checkmark.Companion.UNCHECKED - -class MainScreenDataSource(val preferences: Preferences, - val habits: MutableMap, - val checkmarks: MutableMap, - val scores: MutableMap) { - - val maxNumberOfButtons = 60 - private val today = LocalDate(2019, 3, 30) /* TODO */ - - data class Data(val habits: List, - val scores: Map, - val checkmarks: Map>) - - val observable = Observable() - - interface Listener { - fun onDataChanged(newData: Data) - } - - fun requestData() { - var filtered = habits.values.toList() - - if (!preferences.showArchived) { - filtered = filtered.filter { !it.isArchived } - } - - val checkmarks = filtered.associate { habit -> - val allValues = checkmarks.getValue(habit).getUntil(today) - if (allValues.size <= maxNumberOfButtons) habit to allValues - else habit to allValues.subList(0, maxNumberOfButtons) - } - - if (!preferences.showCompleted) { - filtered = filtered.filter { habit -> - (habit.type == HabitType.BOOLEAN_HABIT && checkmarks.getValue(habit)[0].value == UNCHECKED) || - (habit.type == HabitType.NUMERICAL_HABIT && checkmarks.getValue(habit)[0].value * 1000 < habit.target) - } - } - - val scores = filtered.associate { habit -> - habit to scores[habit]!!.getAt(today) - } - - observable.notifyListeners { listener -> - val data = Data(filtered, scores, checkmarks) - listener.onDataChanged(data) - } - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/components/BarChart.kt b/uhabits-core-legacy/src/main/common/org/isoron/uhabits/components/BarChart.kt deleted file mode 100644 index ba3f631a2..000000000 --- a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/components/BarChart.kt +++ /dev/null @@ -1,164 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.components - -import org.isoron.platform.gui.* -import org.isoron.platform.time.* -import kotlin.math.* - -class BarChart(var theme: Theme, - var dateFormatter: LocalDateFormatter) : Component { - - // Data - var series = mutableListOf>() - var colors = mutableListOf() - var axis = listOf() - - // Style - var paddingTop = 20.0 - var paddingLeft = 5.0 - var paddingRight = 5.0 - var footerHeight = 40.0 - var barGroupMargin = 4.0 - var barMargin = 4.0 - var barWidth = 20.0 - var nGridlines = 6 - var backgroundColor = theme.cardBackgroundColor - - override fun draw(canvas: Canvas) { - val width = canvas.getWidth() - val height = canvas.getHeight() - - val n = series.size - val barGroupWidth = 2 * barGroupMargin + n * (barWidth + 2 * barMargin) - val safeWidth = width - paddingLeft - paddingRight - val nColumns = floor((safeWidth) / barGroupWidth).toInt() - val marginLeft = (safeWidth - nColumns * barGroupWidth) / 2 - val maxBarHeight = height - footerHeight - paddingTop - var maxValue = series.map { it.max()!! }.max()!! - maxValue = max(maxValue, 1.0) - - canvas.setColor(backgroundColor) - canvas.fillRect(0.0, 0.0, width, height) - - fun barGroupOffset(c: Int) = marginLeft + paddingLeft + - (c) * barGroupWidth - - fun barOffset(c: Int, s: Int) = barGroupOffset(c) + - barGroupMargin + - s * (barWidth + 2 * barMargin) + - barMargin - - fun drawColumn(s: Int, c: Int) { - val value = if (c < series[s].size) series[s][c] else 0.0 - val perc = value / maxValue - val barColorPerc = if (n > 1) 1.0 else round(perc / 0.20) * 0.20 - val barColor = theme.lowContrastTextColor.blendWith(colors[s], - barColorPerc) - val barHeight = round(maxBarHeight * perc) - val x = barOffset(c, s) - val y = height - footerHeight - barHeight - canvas.setColor(barColor) - val r = round(barWidth * 0.33) - canvas.fillRect(x, y + r, barWidth, barHeight - r) - canvas.fillRect(x + r, y, barWidth - 2 * r, r) - canvas.fillCircle(x + r, y + r, r) - canvas.fillCircle(x + barWidth - r, y + r, r) - canvas.setFontSize(theme.smallTextSize) - canvas.setTextAlign(TextAlign.CENTER) - canvas.setColor(backgroundColor) - canvas.fillRect(x - barMargin, - y - theme.smallTextSize * 1.25, - barWidth + 2 * barMargin, - theme.smallTextSize * 1.0) - canvas.setColor(theme.mediumContrastTextColor) - canvas.drawText(value.toShortString(), - x + barWidth / 2, - y - theme.smallTextSize * 0.80) - } - - fun drawSeries(s: Int) { - for (c in 0 until nColumns) drawColumn(s, c) - } - - fun drawMajorGrid() { - canvas.setStrokeWidth(1.0) - if (n > 1) { - canvas.setColor(backgroundColor.blendWith( - theme.lowContrastTextColor, - 0.5)) - for (c in 0 until nColumns - 1) { - val x = barGroupOffset(c) - canvas.drawLine(x, paddingTop, x, paddingTop + maxBarHeight) - } - } - for (k in 1 until nGridlines) { - val pct = 1.0 - (k.toDouble() / (nGridlines - 1)) - val y = paddingTop + maxBarHeight * pct - canvas.setColor(theme.lowContrastTextColor) - canvas.drawLine(0.0, y, width, y) - } - } - - fun drawFooter() { - val y = paddingTop + maxBarHeight - canvas.setColor(backgroundColor) - canvas.fillRect(0.0, y, width, height - y) - canvas.setColor(theme.lowContrastTextColor) - canvas.drawLine(0.0, y, width, y) - canvas.setColor(theme.mediumContrastTextColor) - canvas.setTextAlign(TextAlign.CENTER) - var prevMonth = -1 - var prevYear = -1 - val isLargeInterval = (axis[0].distanceTo(axis[1]) > 300) - - for (c in 0 until nColumns) { - val x = barGroupOffset(c) - val date = axis[c] - if(isLargeInterval) { - canvas.drawText(date.year.toString(), - x + barGroupWidth / 2, - y + theme.smallTextSize * 1.0) - } else { - if (date.month != prevMonth) { - canvas.drawText(dateFormatter.shortMonthName(date), - x + barGroupWidth / 2, - y + theme.smallTextSize * 1.0) - } else { - canvas.drawText(date.day.toString(), - x + barGroupWidth / 2, - y + theme.smallTextSize * 1.0) - } - if (date.year != prevYear) { - canvas.drawText(date.year.toString(), - x + barGroupWidth / 2, - y + theme.smallTextSize * 2.3) - } - } - prevMonth = date.month - prevYear = date.year - } - } - - drawMajorGrid() - for (k in 0 until n) drawSeries(k) - drawFooter() - } -} diff --git a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/components/CalendarChart.kt b/uhabits-core-legacy/src/main/common/org/isoron/uhabits/components/CalendarChart.kt deleted file mode 100644 index 20594df19..000000000 --- a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/components/CalendarChart.kt +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.components - -import org.isoron.platform.gui.* -import org.isoron.platform.time.* -import kotlin.math.* - -class CalendarChart(var today: LocalDate, - var color: Color, - var theme: Theme, - var dateFormatter: LocalDateFormatter) : Component { - - var padding = 5.0 - var backgroundColor = Color(0xFFFFFF) - var squareSpacing = 1.0 - var series = listOf() - var scrollPosition = 0 - private var squareSize = 0.0 - - override fun draw(canvas: Canvas) { - val width = canvas.getWidth() - val height = canvas.getHeight() - canvas.setColor(backgroundColor) - canvas.fillRect(0.0, 0.0, width, height) - squareSize = round((height - 2 * padding) / 8.0) - canvas.setFontSize(height * 0.06) - - val nColumns = floor((width - 2 * padding) / squareSize).toInt() - 2 - val todayWeekday = today.dayOfWeek - val topLeftOffset = (nColumns - 1 + scrollPosition) * 7 + todayWeekday.index - val topLeftDate = today.minus(topLeftOffset) - - repeat(nColumns) { column -> - val topOffset = topLeftOffset - 7 * column - val topDate = topLeftDate.plus(7 * column) - drawColumn(canvas, column, topDate, topOffset) - } - - canvas.setColor(theme.mediumContrastTextColor) - repeat(7) { row -> - val date = topLeftDate.plus(row) - canvas.setTextAlign(TextAlign.LEFT) - canvas.drawText(dateFormatter.shortWeekdayName(date), - padding + nColumns * squareSize + padding, - padding + squareSize * (row+1) + squareSize / 2) - } - } - - private fun drawColumn(canvas: Canvas, - column: Int, - topDate: LocalDate, - topOffset: Int) { - drawHeader(canvas, column, topDate) - repeat(7) { row -> - val offset = topOffset - row - val date = topDate.plus(row) - if (offset < 0) return - drawSquare(canvas, - padding + column * squareSize, - padding + (row + 1) * squareSize, - squareSize - squareSpacing, - squareSize - squareSpacing, - date, - offset) - } - } - - private fun drawHeader(canvas: Canvas, column: Int, date: LocalDate) { - if (date.day >= 8) return - - canvas.setColor(theme.mediumContrastTextColor) - if (date.month == 1) { - canvas.drawText(date.year.toString(), - padding + column * squareSize + squareSize / 2, - padding + squareSize / 2) - - } else { - canvas.drawText(dateFormatter.shortMonthName(date), - padding + column * squareSize + squareSize / 2, - padding + squareSize / 2) - } - } - - private fun drawSquare(canvas: Canvas, - x: Double, - y: Double, - width: Double, - height: Double, - date: LocalDate, - offset: Int) { - - var value = if (offset >= series.size) 0.0 else series[offset] - value = round(value * 5.0) / 5.0 - - var squareColor = color.blendWith(backgroundColor, 1 - value) - var textColor = backgroundColor - - if (value == 0.0) squareColor = theme.lowContrastTextColor - if (squareColor.luminosity > 0.8) - textColor = squareColor.blendWith(theme.highContrastTextColor, 0.5) - - canvas.setColor(squareColor) - canvas.fillRect(x, y, width, height) - canvas.setColor(textColor) - canvas.drawText(date.day.toString(), x + width / 2, y + width / 2) - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/components/CheckmarkButton.kt b/uhabits-core-legacy/src/main/common/org/isoron/uhabits/components/CheckmarkButton.kt deleted file mode 100644 index 5fdf99de0..000000000 --- a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/components/CheckmarkButton.kt +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.components - -import org.isoron.platform.gui.* - -class CheckmarkButton(private val value: Int, - private val color: Color, - private val theme: Theme) : Component { - override fun draw(canvas: Canvas) { - canvas.setFont(Font.FONT_AWESOME) - canvas.setFontSize(theme.smallTextSize * 1.5) - canvas.setColor(when (value) { - 2 -> color - else -> theme.lowContrastTextColor - }) - val text = when (value) { - 0 -> FontAwesome.TIMES - else -> FontAwesome.CHECK - } - canvas.drawText(text, canvas.getWidth() / 2.0, canvas.getHeight() / 2.0) - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/components/HabitListHeader.kt b/uhabits-core-legacy/src/main/common/org/isoron/uhabits/components/HabitListHeader.kt deleted file mode 100644 index f3e401fa4..000000000 --- a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/components/HabitListHeader.kt +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.components - -import org.isoron.platform.gui.* -import org.isoron.platform.time.* - -class HabitListHeader(private val today: LocalDate, - private val nButtons: Int, - private val theme: Theme, - private val fmt: LocalDateFormatter) : Component { - - override fun draw(canvas: Canvas) { - val width = canvas.getWidth() - val height = canvas.getHeight() - val buttonSize = theme.checkmarkButtonSize - canvas.setColor(theme.headerBackgroundColor) - canvas.fillRect(0.0, 0.0, width, height) - - canvas.setColor(theme.headerBorderColor) - canvas.setStrokeWidth(0.5) - canvas.drawLine(0.0, height - 0.5, width, height - 0.5) - - canvas.setColor(theme.headerTextColor) - canvas.setFont(Font.BOLD) - canvas.setFontSize(theme.smallTextSize) - - repeat(nButtons) { index -> - val date = today.minus(nButtons - index - 1) - val name = fmt.shortWeekdayName(date).toUpperCase() - val number = date.day.toString() - - val x = width - (index + 1) * buttonSize + buttonSize / 2 - val y = height / 2 - canvas.drawText(name, x, y - theme.smallTextSize * 0.6) - canvas.drawText(number, x, y + theme.smallTextSize * 0.6) - } - } -} diff --git a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/components/NumberButton.kt b/uhabits-core-legacy/src/main/common/org/isoron/uhabits/components/NumberButton.kt deleted file mode 100644 index 313d6f22d..000000000 --- a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/components/NumberButton.kt +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.components - -import org.isoron.platform.gui.* -import org.isoron.platform.io.* -import kotlin.math.* - -fun Double.toShortString(): String = when { - this >= 1e9 -> format("%.1fG", this / 1e9) - this >= 1e8 -> format("%.0fM", this / 1e6) - this >= 1e7 -> format("%.1fM", this / 1e6) - this >= 1e6 -> format("%.1fM", this / 1e6) - this >= 1e5 -> format("%.0fk", this / 1e3) - this >= 1e4 -> format("%.1fk", this / 1e3) - this >= 1e3 -> format("%.1fk", this / 1e3) - this >= 1e2 -> format("%.0f", this) - this >= 1e1 -> when { - round(this) == this -> format("%.0f", this) - else -> format("%.1f", this) - } - else -> when { - round(this) == this -> format("%.0f", this) - round(this * 10) == this * 10 -> format("%.1f", this) - else -> format("%.2f", this) - } -} - -class NumberButton(val color: Color, - val value: Double, - val threshold: Double, - val units: String, - val theme: Theme) : Component { - - override fun draw(canvas: Canvas) { - val width = canvas.getWidth() - val height = canvas.getHeight() - val em = theme.smallTextSize - - canvas.setColor(when { - value >= threshold -> color - value >= 0.01 -> theme.mediumContrastTextColor - else -> theme.lowContrastTextColor - }) - - canvas.setFontSize(theme.regularTextSize) - canvas.setFont(Font.BOLD) - canvas.drawText(value.toShortString(), width / 2, height / 2 - 0.6 * em) - - canvas.setFontSize(theme.smallTextSize) - canvas.setFont(Font.REGULAR) - canvas.drawText(units, width / 2, height / 2 + 0.6 * em) - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/components/Ring.kt b/uhabits-core-legacy/src/main/common/org/isoron/uhabits/components/Ring.kt deleted file mode 100644 index 806770163..000000000 --- a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/components/Ring.kt +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.components - -import org.isoron.platform.gui.* -import org.isoron.platform.io.* -import kotlin.math.* - -class Ring(val color: Color, - val percentage: Double, - val thickness: Double, - val radius: Double, - val theme: Theme, - val label: Boolean = false) : Component { - - override fun draw(canvas: Canvas) { - val width = canvas.getWidth() - val height = canvas.getHeight() - val angle = 360.0 * max(0.0, min(360.0, percentage)) - - canvas.setColor(theme.lowContrastTextColor) - canvas.fillCircle(width/2, height/2, radius) - - canvas.setColor(color) - canvas.fillArc(width/2, height/2, radius, 90.0, -angle) - - canvas.setColor(theme.cardBackgroundColor) - canvas.fillCircle(width/2, height/2, radius - thickness) - - if(label) { - canvas.setColor(color) - canvas.setFontSize(radius * 0.4) - canvas.drawText(format("%.0f%%", percentage * 100), width / 2, height / 2) - } - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/components/Themes.kt b/uhabits-core-legacy/src/main/common/org/isoron/uhabits/components/Themes.kt deleted file mode 100644 index a2d5eedc0..000000000 --- a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/components/Themes.kt +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.components - -import org.isoron.platform.gui.* - -abstract class Theme { - val toolbarColor = Color(0xffffff) - - val lowContrastTextColor = Color(0xe0e0e0) - val mediumContrastTextColor = Color(0x808080) - val highContrastTextColor = Color(0x202020) - - val cardBackgroundColor = Color(0xFFFFFF) - val appBackgroundColor = Color(0xf4f4f4) - val toolbarBackgroundColor = Color(0xf4f4f4) - val statusBarBackgroundColor = Color(0x333333) - - val headerBackgroundColor = Color(0xeeeeee) - val headerBorderColor = Color(0xcccccc) - val headerTextColor = mediumContrastTextColor - - val itemBackgroundColor = Color(0xffffff) - - fun color(paletteIndex: Int): Color { - return when (paletteIndex) { - 0 -> Color(0xD32F2F) - 1 -> Color(0x512DA8) - 2 -> Color(0xF57C00) - 3 -> Color(0xFF8F00) - 4 -> Color(0xF9A825) - 5 -> Color(0xAFB42B) - 6 -> Color(0x7CB342) - 7 -> Color(0x388E3C) - 8 -> Color(0x00897B) - 9 -> Color(0x00ACC1) - 10 -> Color(0x039BE5) - 11 -> Color(0x1976D2) - 12 -> Color(0x303F9F) - 13 -> Color(0x5E35B1) - 14 -> Color(0x8E24AA) - 15 -> Color(0xD81B60) - 16 -> Color(0x5D4037) - else -> Color(0x000000) - } - } - - val checkmarkButtonSize = 48.0 - val smallTextSize = 12.0 - val regularTextSize = 17.0 -} - -class LightTheme : Theme() \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/i18n/LocaleHelper.kt b/uhabits-core-legacy/src/main/common/org/isoron/uhabits/i18n/LocaleHelper.kt deleted file mode 100644 index a73af82a3..000000000 --- a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/i18n/LocaleHelper.kt +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.i18n - -interface LocaleHelper { - fun getStringsForCurrentLocale(): Strings -} diff --git a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/i18n/Strings.kt b/uhabits-core-legacy/src/main/common/org/isoron/uhabits/i18n/Strings.kt deleted file mode 100644 index 823ac364c..000000000 --- a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/i18n/Strings.kt +++ /dev/null @@ -1,190 +0,0 @@ -package org.isoron.uhabits.i18n - -@Suppress("PropertyName", "unused") -open class Strings() { - open val about = "About" - open val action = "Action" - open val action_settings = "Settings" - open val add_habit = "Add habit" - open val all_time = "All time" - open val any_day = "Any day of the week" - open val any_weekday = "Monday to Friday" - open val app_name = "Loop Habit Tracker" - open val archive = "Archive" - open val behavior = "Behavior" - open val best_streaks = "Best streaks" - open val bug_report_failed = "Failed to generate bug report." - open val by_color = "By color" - open val by_name = "By name" - open val by_score = "By score" - open val calendar = "Calendar" - open val cancel = "Cancel" - open val change_value = "Change value" - open val check = "Check" - open val checkmark = "Checkmark" - open val checkmark_stack_widget = "Checkmark Stack Widget" - open val clear = "Clear" - open val clear_label = "Clear" - open val color_picker_default_title = "Change color" - open val could_not_export = "Failed to export data." - open val could_not_import = "Failed to import data." - open val count = "Count" - open val create_habit = "Create habit" - open val create_stackview_widget_button = "StackView Widget For All Habits" - open val current_streaks = "Current streak" - open val custom_frequency = "Custom …" - open val customize_notification = "Customize notifications" - open val customize_notification_summary = "Change sound, vibration, light and other notification settings" - open val database_repaired = "Database repaired." - open val day = "Day" - open val days = "days" - open val delete = "Delete" - open val delete_habits = "Delete Habits" - open val delete_habits_message = "The habits will be permanently deleted. This action cannot be undone." - open val description_hint = "Question (Did you … today?)" - open val developers = "Developers" - open val discard = "Discard" - open val done_label = "Done" - open val download = "Download" - open val edit = "Edit" - open val edit_habit = "Edit habit" - open val every_day = "Every day" - open val every_week = "Every week" - open val every_x_days = "Every %d days" - open val every_x_months = "Every %d months" - open val every_x_weeks = "Every %d weeks" - open val example_question_boolean = "e.g. Did you exercise today?" - open val example_question_numerical = "e.g. How many steps did you walk today?" - open val example_units = "e.g. steps" - open val export = "Export" - open val export_as_csv_summary = "Generates files that can be opened by spreadsheet software such as Microsoft Excel or OpenOffice Calc. This file cannot be imported back." - open val export_full_backup = "Export full backup" - open val export_full_backup_summary = "Generates a file that contains all your data. This file can be imported back." - open val export_to_csv = "Export as CSV" - open val file_not_recognized = "File not recognized." - open val filter = "Filter" - open val five_times_per_week = "5 times per week" - open val frequency = "Frequency" - open val frequency_stack_widget = "Frequency Stack Widget" - open val full_backup_success = "Full backup successfully exported." - open val generate_bug_report = "Generate bug report" - open val habit = "Habit" - open val habit_not_found = "Habit deleted / not found" - open val habit_strength = "Habit strength" - open val habits_imported = "Habits imported successfully." - open val help = "Help & FAQ" - open val help_translate = "Help translate this app" - open val hide_archived = "Hide archived" - open val hide_completed = "Hide completed" - open val hint_drag = "To rearrange the entries, press-and-hold on the name of the habit, then drag it to the correct place." - open val hint_landscape = "You can see more days by putting your phone in landscape mode." - open val hint_title = "Did you know?" - open val history = "History" - open val history_stack_widget = "History Stack Widget" - open val import_data = "Import data" - open val import_data_summary = "Supports full backups exported by this app, as well as files generated by Tickmate, HabitBull or Rewire. See FAQ for more information." - open val interface_preferences = "Interface" - open val interval_15_minutes = "15 minutes" - open val interval_1_hour = "1 hour" - open val interval_24_hour = "24 hours" - open val interval_2_hour = "2 hours" - open val interval_30_minutes = "30 minutes" - open val interval_4_hour = "4 hours" - open val interval_8_hour = "8 hours" - open val interval_always_ask = "Always ask" - open val interval_custom = "Custom..." - open val intro_description_1 = "Loop Habit Tracker helps you create and maintain good habits." - open val intro_description_2 = "Every day, after performing your habit, put a checkmark on the app." - open val intro_description_3 = "Habits performed consistently for a long time will earn a full star." - open val intro_description_4 = "Detailed graphs show you how your habits improved over time." - open val intro_title_1 = "Welcome" - open val intro_title_2 = "Create some new habits" - open val intro_title_3 = "Keep doing it" - open val intro_title_4 = "Track your progress" - open val last_x_days = "Last %d days" - open val last_x_months = "Last %d months" - open val last_x_weeks = "Last %d weeks" - open val last_x_years = "Last %d years" - open val led_notifications = "Notification light" - open val led_notifications_description = "Shows a blinking light for reminders. Only available in phones with LED notification lights." - open val links = "Links" - open val long_press_to_edit = "Press-and-hold to change the value" - open val long_press_to_toggle = "Press-and-hold to check or uncheck" - open val main_activity_title = "Habits" - open val manually = "Manually" - open val month = "Month" - open val name = "Name" - open val night_mode = "Night mode" - open val no = "No" - open val no_habits_found = "You have no active habits" - open val none = "None" - open val number_of_repetitions = "Number of repetitions" - open val overview = "Overview" - open val pref_rate_this_app = "Rate this app on Google Play" - open val pref_send_feedback = "Send feedback to developer" - open val pref_snooze_interval_title = "Snooze interval on reminders" - open val pref_toggle_description = "Put checkmarks with a single tap instead of press-and-hold. More convenient, but might cause accidental toggles." - open val pref_toggle_title = "Toggle with short press" - open val pref_view_app_introduction = "View app introduction" - open val pref_view_source_code = "View source code at GitHub" - open val pure_black_description = "Replaces gray backgrounds with pure black in night mode. Reduces battery usage in phones with AMOLED display." - open val quarter = "Quarter" - open val question = "Question" - open val reminder = "Reminder" - open val reminder_off = "Off" - open val reminder_sound = "Reminder sound" - open val repair_database = "Repair database" - open val repeat = "Repeat" - open val reverse_days = "Reverse order of days" - open val reverse_days_description = "Show days in reverse order on the main screen." - open val save = "Save" - open val score = "Score" - open val score_stack_widget = "Score Stack Widget" - open val select_habit_requirement_prompt = "Please select at least one habit" - open val select_hours = "Select hours" - open val select_minutes = "Select minutes" - open val select_snooze_delay = "Select snooze delay" - open val select_weekdays = "Select days" - open val settings = "Settings" - open val show_archived = "Show archived" - open val show_completed = "Show completed" - open val snooze = "Later" - open val snooze_interval = "Snooze interval" - open val sort = "Sort" - open val sticky_notifications = "Make notifications sticky" - open val sticky_notifications_description = "Prevents notifications from being swiped away." - open val streaks = "Streaks" - open val streaks_stack_widget = "Streaks Stack Widget" - open val strength = "Strength" - open val target = "Target" - open val time_every = "time in" - open val times_every = "times in" - open val toast_habit_archived = "Habits archived" - open val toast_habit_changed = "Habit changed" - open val toast_habit_changed_back = "Habit changed back" - open val toast_habit_created = "Habit created" - open val toast_habit_deleted = "Habits deleted" - open val toast_habit_restored = "Habits restored" - open val toast_habit_unarchived = "Habits unarchived" - open val toast_nothing_to_redo = "Nothing to redo" - open val toast_nothing_to_undo = "Nothing to undo" - open val toggle = "Toggle" - open val total = "Total" - open val translators = "Translators" - open val troubleshooting = "Troubleshooting" - open val two_times_per_week = "2 times per week" - open val unarchive = "Unarchive" - open val uncheck = "Uncheck" - open val unit = "Unit" - open val use_pure_black = "Use pure black in night mode" - open val validation_at_most_one_rep_per_day = "You can have at most one repetition per day" - open val validation_name_should_not_be_blank = "Name cannot be blank." - open val validation_number_should_be_positive = "Number must be positive." - open val validation_show_not_be_blank = "This field should not be blank" - open val version_n = "Version %s" - open val week = "Week" - open val weekends = "Weekends" - open val year = "Year" - open val yes = "Yes" - open val day_mode = "Day mode" -} diff --git a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/Checkmark.kt b/uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/Checkmark.kt deleted file mode 100644 index f2fd97673..000000000 --- a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/Checkmark.kt +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.models - -import org.isoron.platform.time.* - -data class Checkmark(var date: LocalDate, - var value: Int) { - - companion object { - /** - * Value assigned when the user has explicitly marked the habit as - * completed. - */ - const val CHECKED_MANUAL = 2 - - /** - * Value assigned when the user has not explicitly marked the habit as - * completed, however, due to the frequency of the habit, an automatic - * checkmark was added. - */ - const val CHECKED_AUTOMATIC = 1 - - /** - * Value assigned when the user has not completed the habit, and the app - * has not automatically a checkmark. - */ - const val UNCHECKED = 0 - } -} diff --git a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/CheckmarkList.kt b/uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/CheckmarkList.kt deleted file mode 100644 index 55eda4ae8..000000000 --- a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/CheckmarkList.kt +++ /dev/null @@ -1,204 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.models - -import org.isoron.platform.time.* -import org.isoron.uhabits.models.Checkmark.Companion.CHECKED_AUTOMATIC -import org.isoron.uhabits.models.Checkmark.Companion.CHECKED_MANUAL -import org.isoron.uhabits.models.Checkmark.Companion.UNCHECKED - -class CheckmarkList(val frequency: Frequency, - val habitType: HabitType) { - - private val manualCheckmarks = mutableListOf() - private val computedCheckmarks = mutableListOf() - - /** - * Replaces the entire list of manual checkmarks by the ones provided. The - * list of automatic checkmarks will be automatically updated. - */ - fun setManualCheckmarks(checks: List) { - manualCheckmarks.clear() - computedCheckmarks.clear() - manualCheckmarks.addAll(checks) - if (habitType == HabitType.NUMERICAL_HABIT) { - computedCheckmarks.addAll(checks) - } else { - val computed = computeCheckmarks(checks, frequency) - computedCheckmarks.addAll(computed) - } - } - - /** - * Returns values of all checkmarks (manual and automatic) from the oldest - * entry until the date provided. - * - * The interval is inclusive, and the list is sorted from newest to oldest. - * That is, the first element of the returned list corresponds to the date - * provided. - */ - fun getUntil(date: LocalDate): List { - if (computedCheckmarks.isEmpty()) return listOf() - - val result = mutableListOf() - val newest = computedCheckmarks.first().date - val distToNewest = newest.distanceTo(date) - - var k = 0 - var fromIndex = 0 - val toIndex = computedCheckmarks.size - if (newest.isOlderThan(date)) { - repeat(distToNewest) { result.add(Checkmark(date.minus(k++), UNCHECKED)) } - } else { - fromIndex = distToNewest - } - val subList = computedCheckmarks.subList(fromIndex, toIndex) - result.addAll(subList.map { Checkmark(date.minus(k++), it.value) }) - return result - } - - companion object { - /** - * Computes the list of automatic checkmarks a list of manual ones. - */ - fun computeCheckmarks(checks: List, - frequency: Frequency - ): MutableList { - - val intervals = buildIntervals(checks, frequency) - snapIntervalsTogether(intervals) - return buildCheckmarksFromIntervals(checks, intervals) - } - - /** - * Modifies the intervals so that gaps between intervals are eliminated. - * - * More specifically, this function shifts the beginning and the end of - * intervals so that they overlap the least as possible. The center of - * the interval, however, still falls within the interval. The length of - * the intervals are also not modified. - */ - fun snapIntervalsTogether(intervals: MutableList) { - - for (i in 1 until intervals.size) { - val (begin, center, end) = intervals[i] - val (_, _, prevEnd) = intervals[i - 1] - - val gap = prevEnd.distanceTo(begin) - 1 - if (gap <= 0 || end.minus(gap).isOlderThan(center)) continue - intervals[i] = Interval(begin.minus(gap), - center, - end.minus(gap)) - } - } - - /** - * Converts a list of (manually checked) checkmarks and computed - * intervals into a list of unchecked, manually checked and - * automatically checked checkmarks. - * - * Manual checkmarks are simply copied over to the output list. Days - * that are an interval, but which do not have manual checkmarks receive - * automatic checkmarks. Days that fall in the gaps between intervals - * receive unchecked checkmarks. - */ - fun buildCheckmarksFromIntervals(checks: List, - intervals: List - ): MutableList { - - if (checks.isEmpty()) throw IllegalArgumentException() - if (intervals.isEmpty()) throw IllegalArgumentException() - - var oldest = intervals[0].begin - var newest = intervals[0].end - for (interval in intervals) { - if (interval.begin.isOlderThan(oldest)) oldest = interval.begin - if (interval.end.isNewerThan(newest)) newest = interval.end - } - for (check in checks) { - if (check.date.isOlderThan(oldest)) oldest = check.date - if (check.date.isNewerThan(newest)) newest = check.date - } - - val distance = oldest.distanceTo(newest) - val checkmarks = mutableListOf() - for (offset in 0..distance) - checkmarks.add(Checkmark(newest.minus(offset), - UNCHECKED)) - - for (interval in intervals) { - val beginOffset = newest.distanceTo(interval.begin) - val endOffset = newest.distanceTo(interval.end) - - for (offset in endOffset..beginOffset) { - checkmarks.set(offset, - Checkmark(newest.minus(offset), - CHECKED_AUTOMATIC)) - } - } - - for (check in checks) { - val offset = newest.distanceTo(check.date) - checkmarks.set(offset, Checkmark(check.date, CHECKED_MANUAL)) - } - - return checkmarks - } - - /** - * Constructs a list of intervals based on a list of (manual) - * checkmarks. - */ - fun buildIntervals(checks: List, - frequency: Frequency): MutableList { - - val num = frequency.numerator - val den = frequency.denominator - - val intervals = mutableListOf() - for (i in 0..(checks.size - num)) { - val first = checks[i] - val last = checks[i + num - 1] - - if (first.date.distanceTo(last.date) >= den) continue - - val end = first.date.plus(den - 1) - intervals.add(Interval(first.date, last.date, end)) - } - - return intervals - } - } - - /* - * For non-daily habits, some groups of repetitions generate many - * automatic checkmarks. For weekly habits, each repetition generates - * seven checkmarks. For twice-a-week habits, two repetitions that are close - * enough together also generate seven checkmarks. This group of generated - * checkmarks is represented by an interval. - * - * The fields `begin` and `end` indicate the length of the interval, and are - * inclusive. The field `center` indicates the newest day within the interval - * that has a manual checkmark. - */ - data class Interval(val begin: LocalDate, - val center: LocalDate, - val end: LocalDate) -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/CheckmarkRepository.kt b/uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/CheckmarkRepository.kt deleted file mode 100644 index 0b35bc275..000000000 --- a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/CheckmarkRepository.kt +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.models - -import org.isoron.platform.io.* -import org.isoron.platform.time.* - -class CheckmarkRepository(db: Database) { - - private val findStatement = db.prepareStatement("select timestamp, value from Repetitions where habit = ? order by timestamp desc") - private val insertStatement = db.prepareStatement("insert into Repetitions(habit, timestamp, value) values (?, ?, ?)") - private val deleteStatement = db.prepareStatement("delete from Repetitions where habit=? and timestamp=?") - - fun findAll(habitId: Int): List { - findStatement.bindInt(0, habitId) - val result = mutableListOf() - while (findStatement.step() == StepResult.ROW) { - val date = Timestamp(findStatement.getLong(0)).localDate - val value = findStatement.getInt(1) - result.add(Checkmark(date, value)) - } - findStatement.reset() - return result - } - - fun insert(habitId: Int, checkmark: Checkmark) { - val timestamp = checkmark.date.timestamp - insertStatement.bindInt(0, habitId) - insertStatement.bindLong(1, timestamp.millisSince1970) - insertStatement.bindInt(2, checkmark.value) - insertStatement.step() - insertStatement.reset() - } - - fun delete(habitId: Int, date: LocalDate) { - val timestamp = date.timestamp - deleteStatement.bindInt(0, habitId) - deleteStatement.bindLong(1, timestamp.millisSince1970) - deleteStatement.step() - deleteStatement.reset() - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/Frequency.kt b/uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/Frequency.kt deleted file mode 100644 index f09a32a51..000000000 --- a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/Frequency.kt +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.models - -data class Frequency(val numerator: Int, - val denominator: Int) { - - fun toDouble(): Double { - return numerator.toDouble() / denominator - } - - companion object { - val WEEKLY = Frequency(1, 7) - val DAILY = Frequency(1, 1) - val TWO_TIMES_PER_WEEK = Frequency(2, 7) - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/Habit.kt b/uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/Habit.kt deleted file mode 100644 index 7ddfa6188..000000000 --- a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/Habit.kt +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.models - -import org.isoron.platform.gui.* - -data class Habit(var id: Int, - var name: String, - var description: String, - var frequency: Frequency, - var color: PaletteColor, - var isArchived: Boolean, - var position: Int, - var unit: String, - var target: Double, - var type: HabitType) \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/HabitRepository.kt b/uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/HabitRepository.kt deleted file mode 100644 index 961956f51..000000000 --- a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/HabitRepository.kt +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.models - -import org.isoron.platform.gui.* -import org.isoron.platform.io.Database -import org.isoron.platform.io.PreparedStatement -import org.isoron.platform.io.StepResult -import org.isoron.platform.io.nextId - -class HabitRepository(var db: Database) { - - companion object { - const val SELECT_COLUMNS = "id, name, description, freq_num, freq_den, color, archived, position, unit, target_value, type" - const val SELECT_PLACEHOLDERS = "?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?" - const val UPDATE_COLUMNS = "id=?, name=?, description=?, freq_num=?, freq_den=?, color=?, archived=?, position=?, unit=?, target_value=?, type=?" - } - - private val findAllStatement = db.prepareStatement("select $SELECT_COLUMNS from habits order by position") - private val insertStatement = db.prepareStatement("insert into Habits($SELECT_COLUMNS) values ($SELECT_PLACEHOLDERS)") - private val updateStatement = db.prepareStatement("update Habits set $UPDATE_COLUMNS where id=?") - private val deleteStatement = db.prepareStatement("delete from Habits where id=?") - - fun nextId(): Int { - return db.nextId("Habits") - } - - fun findAll(): MutableMap { - val result = mutableMapOf() - while (findAllStatement.step() == StepResult.ROW) { - val habit = buildHabitFromStatement(findAllStatement) - result[habit.id] = habit - } - findAllStatement.reset() - return result - } - - fun insert(habit: Habit) { - bindHabitToStatement(habit, insertStatement) - insertStatement.step() - insertStatement.reset() - } - - fun update(habit: Habit) { - bindHabitToStatement(habit, updateStatement) - updateStatement.bindInt(11, habit.id) - updateStatement.step() - updateStatement.reset() - } - - private fun buildHabitFromStatement(stmt: PreparedStatement): Habit { - return Habit(id = stmt.getInt(0), - name = stmt.getText(1), - description = stmt.getText(2), - frequency = Frequency(stmt.getInt(3), stmt.getInt(4)), - color = PaletteColor(stmt.getInt(5)), - isArchived = stmt.getInt(6) != 0, - position = stmt.getInt(7), - unit = stmt.getText(8), - target = stmt.getReal(9), - type = if (stmt.getInt(10) == 0) HabitType.BOOLEAN_HABIT else HabitType.NUMERICAL_HABIT) - } - - private fun bindHabitToStatement(habit: Habit, statement: PreparedStatement) { - statement.bindInt(0, habit.id) - statement.bindText(1, habit.name) - statement.bindText(2, habit.description) - statement.bindInt(3, habit.frequency.numerator) - statement.bindInt(4, habit.frequency.denominator) - statement.bindInt(5, habit.color.index) - statement.bindInt(6, if (habit.isArchived) 1 else 0) - statement.bindInt(7, habit.position) - statement.bindText(8, habit.unit) - statement.bindReal(9, habit.target) - statement.bindInt(10, habit.type.code) - } - - fun delete(habit: Habit) { - deleteStatement.bindInt(0, habit.id) - deleteStatement.step() - deleteStatement.reset() - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/HabitType.kt b/uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/HabitType.kt deleted file mode 100644 index a02beff5c..000000000 --- a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/HabitType.kt +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.models - -enum class HabitType(val code: Int) { - BOOLEAN_HABIT(0), - NUMERICAL_HABIT(1), -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/Preferences.kt b/uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/Preferences.kt deleted file mode 100644 index 2c5e51449..000000000 --- a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/Preferences.kt +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.models - -class Preferences(private val repository: PreferencesRepository) { - var showArchived = repository.getBoolean("show_archived", false) - set(value) { - repository.putBoolean("show_archived", value) - field = value - } - - var showCompleted = repository.getBoolean("show_completed", true) - set(value) { - repository.putBoolean("show_completed", value) - field = value - } - - var nightMode = repository.getBoolean("night_mode", false) - set(value) { - repository.putBoolean("night_mode", value) - field = value - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/PreferencesRepository.kt b/uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/PreferencesRepository.kt deleted file mode 100644 index 8c0d77f06..000000000 --- a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/PreferencesRepository.kt +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.models - -import org.isoron.platform.io.* - -class PreferencesRepository(private val db: Database) { - - private val insertStatement = db.prepareStatement("insert into Preferences(key, value) values (?, ?)") - private val deleteStatement = db.prepareStatement("delete from Preferences where key=?") - private val selectStatement = db.prepareStatement("select value from Preferences where key=?") - - fun putBoolean(key: String, value: Boolean) { - putString(key, value.toString()) - } - - fun getBoolean(key: String, default: Boolean): Boolean { - val value = getString(key, "NULL") - return if (value == "NULL") default else value.toBoolean() - } - - fun putLong(key: String, value: Long) { - putString(key, value.toString()) - } - - fun getLong(key: String, default: Long): Long { - val value = getString(key, "NULL") - return if (value == "NULL") default else value.toLong() - } - - fun putString(key: String, value: String) { - deleteStatement.bindText(0, key) - deleteStatement.step() - deleteStatement.reset() - insertStatement.bindText(0, key) - insertStatement.bindText(1, value) - insertStatement.step() - insertStatement.reset() - } - - fun getString(key: String, default: String): String { - selectStatement.bindText(0, key) - if (selectStatement.step() == StepResult.DONE) { - selectStatement.reset() - return default - } else { - val value = selectStatement.getText(0) - selectStatement.reset() - return value - } - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/Score.kt b/uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/Score.kt deleted file mode 100644 index 35382dc8a..000000000 --- a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/Score.kt +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.models - -import org.isoron.platform.time.* - -/** - * A Score is a number which indicates how strong the habit is at a given date. - * - * Scores are computed by taking an exponential moving average of the values of - * the checkmarks in preceding days. For boolean habits, when computing the - * average, each checked day (whether the check was manual or automatic) has - * value as 1, while days without checkmarks have value 0. - * - * For numerical habits, each day that exceeded the target has value 1, while - * days which failed to exceed the target receive a partial value, based on the - * proportion that was completed. For example, if the target is 100 units and - * the user completed 70 units, then the value for that day is 0.7 when - * computing the average. - */ -data class Score(val date: LocalDate, - val value: Double) \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/ScoreList.kt b/uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/ScoreList.kt deleted file mode 100644 index 46fb993d7..000000000 --- a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/ScoreList.kt +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.models - -import org.isoron.platform.time.* -import kotlin.math.* - -class ScoreList(private val checkmarkList: CheckmarkList) { - /** - * Returns a list of all scores, from the beginning of the habit history - * until the specified date. - * - * The interval is inclusive, and the list is sorted from newest to oldest. - * That is, the first element of the returned list corresponds to the date - * provided. - */ - fun getUntil(date: LocalDate): List { - val frequency = checkmarkList.frequency - val checks = checkmarkList.getUntil(date) - val scores = mutableListOf() - val type = checkmarkList.habitType - - var currentScore = 0.0 - checks.reversed().forEach { check -> - val value = if (type == HabitType.BOOLEAN_HABIT) { - min(1, check.value) - } else { - check.value - } - currentScore = compute(frequency, currentScore, value) - scores.add(Score(check.date, currentScore)) - } - return scores.reversed() - } - - fun getAt(date: LocalDate): Score { - return getUntil(date)[0] - } - - companion object { - /** - * Given the frequency of the habit, the previous score, and the value of - * the current checkmark, computes the current score for the habit. - */ - fun compute(frequency: Frequency, - previousScore: Double, - checkmarkValue: Int): Double { - val multiplier = 0.5.pow(frequency.toDouble() / 13.0) - val score = previousScore * multiplier + checkmarkValue * (1 - multiplier) - return floor(score * 1e6) / 1e6 - } - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/Streak.kt b/uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/Streak.kt deleted file mode 100644 index 1bcdc2d37..000000000 --- a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/Streak.kt +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.models - -import org.isoron.platform.time.* - -/** - * A streak is an uninterrupted sequence of days where the habit was performed. - * - * For daily boolean habits, the definition is straightforward: a streak is a - * sequence of days that have checkmarks. For non-daily habits, note - * that automatic checkmarks (the ones added by the app) can also keep the - * streak going. For numerical habits, a streak is a sequence of days where the - * user has consistently exceeded the target for the habit. - */ -data class Streak(val start: LocalDate, - val end: LocalDate) \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/StreakList.kt b/uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/StreakList.kt deleted file mode 100644 index 0d037b6c8..000000000 --- a/uhabits-core-legacy/src/main/common/org/isoron/uhabits/models/StreakList.kt +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.models - -class StreakList(private val checkmarkList: CheckmarkList) { - - /** - * Returns the longest streaks. - * - * The argument specifies the maximum number of streaks to find. The - * returned list is sorted by date (descending). That is, the first element - * corresponds to the most recent streak. - */ - fun getBest(limit: Int): List { - TODO() - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/ios/org/isoron/platform/concurrency/UIDispatcher.kt b/uhabits-core-legacy/src/main/ios/org/isoron/platform/concurrency/UIDispatcher.kt deleted file mode 100644 index d4aece983..000000000 --- a/uhabits-core-legacy/src/main/ios/org/isoron/platform/concurrency/UIDispatcher.kt +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.platform.concurrency - -import kotlinx.coroutines.* -import platform.darwin.* -import kotlin.coroutines.* - -class UIDispatcher : CoroutineDispatcher() { - override fun dispatch(context: CoroutineContext, block: Runnable) { - val queue = dispatch_get_main_queue() - dispatch_async(queue) { - block.run() - } - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/ios/org/isoron/platform/gui/IosCanvas.kt b/uhabits-core-legacy/src/main/ios/org/isoron/platform/gui/IosCanvas.kt deleted file mode 100644 index 085021dc2..000000000 --- a/uhabits-core-legacy/src/main/ios/org/isoron/platform/gui/IosCanvas.kt +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.platform.gui - -import kotlinx.cinterop.* -import platform.CoreGraphics.* -import platform.Foundation.* -import platform.UIKit.* -import kotlin.math.* - -val Color.uicolor: UIColor - get() = UIColor.colorWithRed(this.red, this.green, this.blue, this.alpha) - -val Color.cgcolor: CGColorRef? - get() = uicolor.CGColor - -class IosCanvas(val width: Double, - val height: Double, - val scale: Double = 2.0 - ) : Canvas { - - var textColor = UIColor.blackColor - var font = Font.REGULAR - var fontSize = 12.0 - var textAlign = TextAlign.CENTER - val ctx = UIGraphicsGetCurrentContext()!! - - override fun setColor(color: Color) { - CGContextSetStrokeColorWithColor(ctx, color.cgcolor) - CGContextSetFillColorWithColor(ctx, color.cgcolor) - textColor = color.uicolor - } - - override fun drawLine(x1: Double, y1: Double, x2: Double, y2: Double) { - CGContextMoveToPoint(ctx, x1 * scale, y1 * scale) - CGContextAddLineToPoint(ctx, x2 * scale, y2 * scale) - CGContextStrokePath(ctx) - } - - @Suppress("CAST_NEVER_SUCCEEDS") - override fun drawText(text: String, x: Double, y: Double) { - val sx = scale * x - val sy = scale * y - val nsText = (text as NSString) - val uiFont = when (font) { - Font.REGULAR -> UIFont.systemFontOfSize(fontSize) - Font.BOLD -> UIFont.boldSystemFontOfSize(fontSize) - Font.FONT_AWESOME -> UIFont.fontWithName("FontAwesome", fontSize) - } - val size = nsText.sizeWithFont(uiFont) - val width = size.useContents { width } - val height = size.useContents { height } - val origin = when (textAlign) { - TextAlign.CENTER -> CGPointMake(sx - width / 2, sy - height / 2) - TextAlign.LEFT -> CGPointMake(sx, sy - height / 2) - TextAlign.RIGHT -> CGPointMake(sx - width, sy - height / 2) - } - nsText.drawAtPoint(origin, uiFont) - } - - override fun fillRect(x: Double, y: Double, width: Double, height: Double) { - CGContextFillRect(ctx, - CGRectMake(x * scale, - y * scale, - width * scale, - height * scale)) - } - - override fun drawRect(x: Double, y: Double, width: Double, height: Double) { - CGContextStrokeRect(ctx, - CGRectMake(x * scale, - y * scale, - width * scale, - height * scale)) - } - - override fun getHeight(): Double { - return height - } - - override fun getWidth(): Double { - return width - } - - override fun setFont(font: Font) { - this.font = font - } - - override fun setFontSize(size: Double) { - this.fontSize = size * scale - } - - override fun setStrokeWidth(size: Double) { - CGContextSetLineWidth(ctx, size * scale) - } - - override fun fillArc(centerX: Double, - centerY: Double, - radius: Double, - startAngle: Double, - swipeAngle: Double) { - val a1 = startAngle / 180 * PI * (-1) - val a2 = a1 - swipeAngle / 180 * PI - CGContextBeginPath(ctx) - CGContextMoveToPoint(ctx, centerX * scale, centerY * scale) - CGContextAddArc(ctx, - centerX * scale, - centerY * scale, - radius * scale, - a1, - a2, - if (swipeAngle > 0) 1 else 0) - CGContextClosePath(ctx) - CGContextFillPath(ctx) - } - - override fun fillCircle(centerX: Double, centerY: Double, radius: Double) { - val rect = CGRectMake(scale * (centerX - radius), - scale * (centerY - radius), - scale * radius * 2.0, - scale * radius * 2.0) - CGContextFillEllipseInRect(ctx, rect) - } - - override fun setTextAlign(align: TextAlign) { - this.textAlign = align - } - - override fun toImage(): Image { - return IosImage(UIGraphicsGetImageFromCurrentImageContext()!!) - } -} diff --git a/uhabits-core-legacy/src/main/ios/org/isoron/platform/gui/IosImage.kt b/uhabits-core-legacy/src/main/ios/org/isoron/platform/gui/IosImage.kt deleted file mode 100644 index 33e1c2254..000000000 --- a/uhabits-core-legacy/src/main/ios/org/isoron/platform/gui/IosImage.kt +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.platform.gui - -import platform.UIKit.* -import platform.CoreGraphics.* -import platform.Foundation.* - -class IosImage(val image: UIImage) : Image { - - override val width: Int - get() { - return CGImageGetWidth(image.CGImage).toInt() - } - - override val height: Int - get() { - return CGImageGetHeight(image.CGImage).toInt() - } - - override fun getPixel(x: Int, y: Int): Color { - return Color(1.0, 0.0, 0.0, 1.0) - } - - override fun setPixel(x: Int, y: Int, color: Color) { - } - - @Suppress("CAST_NEVER_SUCCEEDS") - override suspend fun export(path: String) { - val tmpPath = "${NSTemporaryDirectory()}/$path" - val dir = (tmpPath as NSString).stringByDeletingLastPathComponent - NSFileManager.defaultManager.createDirectoryAtPath(dir, true, null, null) - val data = UIImagePNGRepresentation(image)!! - val success = data.writeToFile(tmpPath, true) - if (!success) throw RuntimeException("could not write to $tmpPath") - println(tmpPath) - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/ios/org/isoron/platform/io/IosDatabase.kt b/uhabits-core-legacy/src/main/ios/org/isoron/platform/io/IosDatabase.kt deleted file mode 100644 index 34a12376f..000000000 --- a/uhabits-core-legacy/src/main/ios/org/isoron/platform/io/IosDatabase.kt +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.platform.io - -import kotlinx.cinterop.* -import platform.Foundation.* -import sqlite3.* - -fun sqlite3_errstr(db: CPointer): String { - return "SQLite3 error: " + sqlite3_errmsg(db).toString() -} - -@Suppress("CAST_NEVER_SUCCEEDS") -class IosDatabaseOpener : DatabaseOpener { - override fun open(file: UserFile): Database = memScoped { - val path = (file as IosFile).path - val dirname = (path as NSString).stringByDeletingLastPathComponent - NSFileManager.defaultManager.createDirectoryAtPath(dirname, true, null, null) - - val db = alloc>() - val result = sqlite3_open(path, db.ptr) - if (result != SQLITE_OK) - throw Exception("sqlite3_open failed (code $result)") - - return IosDatabase(db.value!!) - } -} - -class IosDatabase(val db: CPointer) : Database { - override fun prepareStatement(sql: String): PreparedStatement = memScoped { - if (sql.isEmpty()) throw Exception("empty SQL query") - val stmt = alloc>() - val result = sqlite3_prepare_v2(db, sql.cstr, -1, stmt.ptr, null) - if (result != SQLITE_OK) - throw Exception("sqlite3_prepare_v2 failed (code $result)") - return IosPreparedStatement(db, stmt.value!!) - } - override fun close() { - sqlite3_close(db) - } -} - -class IosPreparedStatement(val db: CPointer, - val stmt: CPointer) : PreparedStatement { - override fun step(): StepResult { - when (sqlite3_step(stmt)) { - SQLITE_ROW -> return StepResult.ROW - SQLITE_DONE -> return StepResult.DONE - else -> throw Exception(sqlite3_errstr(db)) - } - } - - override fun finalize() { - sqlite3_finalize(stmt) - } - - override fun getInt(index: Int): Int { - return sqlite3_column_int(stmt, index) - } - - override fun getLong(index: Int): Long { - return sqlite3_column_int64(stmt, index) - } - - override fun getText(index: Int): String { - return sqlite3_column_text(stmt, index)!! - .reinterpret() - .toKString() - } - - override fun getReal(index: Int): Double { - return sqlite3_column_double(stmt, index) - } - - override fun bindInt(index: Int, value: Int) { - sqlite3_bind_int(stmt, index + 1, value) - } - - override fun bindLong(index: Int, value: Long) { - sqlite3_bind_int64(stmt, index + 1, value) - } - - override fun bindText(index: Int, value: String) { - sqlite3_bind_text(stmt, index + 1, value, -1, SQLITE_TRANSIENT) - } - - override fun bindReal(index: Int, value: Double) { - sqlite3_bind_double(stmt, index + 1, value) - } - - override fun reset() { - sqlite3_reset(stmt) - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/ios/org/isoron/platform/io/IosFiles.kt b/uhabits-core-legacy/src/main/ios/org/isoron/platform/io/IosFiles.kt deleted file mode 100644 index 16d189133..000000000 --- a/uhabits-core-legacy/src/main/ios/org/isoron/platform/io/IosFiles.kt +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - - -package org.isoron.platform.io - -import org.isoron.platform.gui.* -import platform.Foundation.* -import platform.UIKit.* - -class IosFileOpener : FileOpener { - override fun openResourceFile(path: String): ResourceFile { - val resPath = NSBundle.mainBundle.resourcePath!! - return IosFile("$resPath/$path") - } - - override fun openUserFile(path: String): UserFile { - val manager = NSFileManager.defaultManager - val basePath = manager.URLsForDirectory(NSDocumentDirectory, NSUserDomainMask) - val filePath = (basePath.first() as NSURL).URLByAppendingPathComponent(path)!!.path!! - return IosFile(filePath) - } -} - -class IosFile(val path: String) : UserFile, ResourceFile { - override suspend fun delete() { - NSFileManager.defaultManager.removeItemAtPath(path, null) - } - - override suspend fun exists(): Boolean { - return NSFileManager.defaultManager.fileExistsAtPath(path) - } - - override suspend fun lines(): List { - if (!exists()) throw Exception("File not found: $path") - val contents = NSString.stringWithContentsOfFile(path) - return contents.toString().lines() - } - - @Suppress("CAST_NEVER_SUCCEEDS") - override suspend fun copyTo(dest: UserFile) { - val destPath = (dest as IosFile).path - val manager = NSFileManager.defaultManager - val destParentPath = (destPath as NSString).stringByDeletingLastPathComponent - NSFileManager.defaultManager.createDirectoryAtPath(destParentPath, true, null, null) - manager.copyItemAtPath(path, destPath, null) - } - - override suspend fun toImage(): Image { - return IosImage(UIImage.imageWithContentsOfFile(path)!!) - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/ios/org/isoron/platform/io/Strings.kt b/uhabits-core-legacy/src/main/ios/org/isoron/platform/io/Strings.kt deleted file mode 100644 index e774348ea..000000000 --- a/uhabits-core-legacy/src/main/ios/org/isoron/platform/io/Strings.kt +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.platform.io - -import kotlinx.cinterop.* - -// Although the three following methods have exactly the same implementation, -// replacing them all by a single format(format: String, arg: Any) breaks -// everything, as of Kotlin/Native 1.3.72. Apparently, Kotlin/Native is not -// able to do proper type conversions for variables of type Any when calling -// C functions. - -actual fun format(format: String, arg: String): String { - val buffer = ByteArray(1000) - buffer.usePinned { p -> platform.posix.sprintf(p.addressOf(0), format, arg) } - return buffer.toKString() -} - -actual fun format(format: String, arg: Int): String { - val buffer = ByteArray(1000) - buffer.usePinned { p -> platform.posix.sprintf(p.addressOf(0), format, arg) } - return buffer.toKString() -} - -actual fun format(format: String, arg: Double): String { - val buffer = ByteArray(1000) - buffer.usePinned { p -> platform.posix.sprintf(p.addressOf(0), format, arg) } - return buffer.toKString() -} diff --git a/uhabits-core-legacy/src/main/ios/org/isoron/platform/time/IosDates.kt b/uhabits-core-legacy/src/main/ios/org/isoron/platform/time/IosDates.kt deleted file mode 100644 index 424d6db92..000000000 --- a/uhabits-core-legacy/src/main/ios/org/isoron/platform/time/IosDates.kt +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.platform.time - -import platform.Foundation.* - -fun LocalDate.toNsDate(): NSDate { - val calendar = NSCalendar.calendarWithIdentifier(NSCalendarIdentifierGregorian)!! - val dc = NSDateComponents() - dc.year = year.toLong() - dc.month = month.toLong() - dc.day = day.toLong() - dc.hour = 13 - dc.minute = 0 - return calendar.dateFromComponents(dc)!! -} - -class IosLocalDateFormatter(val locale: String) : LocalDateFormatter { - - constructor() : this(NSLocale.preferredLanguages[0] as String) - - private val fmt = NSDateFormatter() - - init { - fmt.setLocale(NSLocale.localeWithLocaleIdentifier(locale)) - } - - override fun shortWeekdayName(date: LocalDate): String { - fmt.dateFormat = "EEE" - return fmt.stringFromDate(date.toNsDate()) - } - - override fun shortMonthName(date: LocalDate): String { - fmt.dateFormat = "MMM" - return fmt.stringFromDate(date.toNsDate()) - } - -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/ios/org/isoron/uhabits/IosLocaleHelper.kt b/uhabits-core-legacy/src/main/ios/org/isoron/uhabits/IosLocaleHelper.kt deleted file mode 100644 index 4937339f6..000000000 --- a/uhabits-core-legacy/src/main/ios/org/isoron/uhabits/IosLocaleHelper.kt +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -@file:Suppress("UNCHECKED_CAST") - -package org.isoron.uhabits - -import org.isoron.platform.io.* -import org.isoron.uhabits.i18n.* -import platform.Foundation.* - -class IosLocaleHelper(private val log: Log) : LocaleHelper { - override fun getStringsForCurrentLocale(): Strings { - val pref = NSLocale.preferredLanguages as List - val lang = if (pref.isEmpty()) "en-US" else pref[0] - log.info("IosLocaleHelper", lang) - return when { - else -> Strings() - } - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/js/org/isoron/platform/gui/JsCanvas.kt b/uhabits-core-legacy/src/main/js/org/isoron/platform/gui/JsCanvas.kt deleted file mode 100644 index 33a42a7f5..000000000 --- a/uhabits-core-legacy/src/main/js/org/isoron/platform/gui/JsCanvas.kt +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.platform.gui - -import kotlinx.coroutines.* -import org.w3c.dom.* -import kotlin.js.* -import kotlin.math.* - -class JsCanvas(val element: HTMLCanvasElement, - val pixelScale: Double) : Canvas { - - - val ctx = element.getContext("2d") as CanvasRenderingContext2D - var fontSize = 12.0 - var fontFamily = "NotoRegular" - var align = CanvasTextAlign.CENTER - - private fun toPixel(x: Double): Double { - return pixelScale * x - } - - private fun toDp(x: Int): Double { - return x / pixelScale - } - - override fun setColor(color: Color) { - val c = "rgb(${color.red * 255}, ${color.green * 255}, ${color.blue * 255})" - ctx.fillStyle = c; - ctx.strokeStyle = c; - } - - override fun drawLine(x1: Double, y1: Double, x2: Double, y2: Double) { - ctx.beginPath() - ctx.moveTo(toPixel(x1), toPixel(y1)) - ctx.lineTo(toPixel(x2), toPixel(y2)) - ctx.stroke() - } - - override fun drawText(text: String, x: Double, y: Double) { - ctx.font = "${fontSize}px ${fontFamily}" - ctx.textAlign = align - ctx.textBaseline = CanvasTextBaseline.MIDDLE - ctx.fillText(text, toPixel(x), toPixel(y + fontSize * 0.025)) - } - - override fun fillRect(x: Double, y: Double, width: Double, height: Double) { - ctx.fillRect(toPixel(x), - toPixel(y), - toPixel(width), - toPixel(height)) - } - - override fun drawRect(x: Double, y: Double, width: Double, height: Double) { - ctx.strokeRect(toPixel(x), - toPixel(y), - toPixel(width), - toPixel(height)) - } - - override fun getHeight(): Double { - return toDp(element.height) - } - - override fun getWidth(): Double { - return toDp(element.width) - } - - override fun setFont(font: Font) { - fontFamily = when (font) { - Font.REGULAR -> "NotoRegular" - Font.BOLD -> "NotoBold" - Font.FONT_AWESOME -> "FontAwesome" - } - } - - override fun setFontSize(size: Double) { - fontSize = size * pixelScale - } - - override fun setStrokeWidth(size: Double) { - ctx.lineWidth = size * pixelScale - } - - override fun fillArc(centerX: Double, - centerY: Double, - radius: Double, - startAngle: Double, - swipeAngle: Double) { - val x = toPixel(centerX) - val y = toPixel(centerY) - val from = startAngle / 180 * PI - val to = (startAngle + swipeAngle) / 180 * PI - ctx.beginPath() - ctx.moveTo(x, y) - ctx.arc(x, y, toPixel(radius), -from, -to, swipeAngle >= 0) - ctx.lineTo(x, y) - ctx.fill() - } - - override fun fillCircle(centerX: Double, centerY: Double, radius: Double) { - ctx.beginPath() - ctx.arc(toPixel(centerX), - toPixel(centerY), - toPixel(radius), - 0.0, - 2 * PI) - ctx.fill() - } - - override fun setTextAlign(align: TextAlign) { - this.align = when (align) { - TextAlign.LEFT -> CanvasTextAlign.LEFT - TextAlign.CENTER -> CanvasTextAlign.CENTER - TextAlign.RIGHT -> CanvasTextAlign.RIGHT - } - } - - override fun toImage(): Image { - return JsImage(this, - ctx.getImageData(0.0, - 0.0, - element.width.toDouble(), - element.height.toDouble())) - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/js/org/isoron/platform/gui/JsImage.kt b/uhabits-core-legacy/src/main/js/org/isoron/platform/gui/JsImage.kt deleted file mode 100644 index 66a60f1ef..000000000 --- a/uhabits-core-legacy/src/main/js/org/isoron/platform/gui/JsImage.kt +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.platform.gui - -import org.khronos.webgl.* -import org.w3c.dom.* -import kotlin.browser.* -import kotlin.math.* - -class JsImage(val canvas: JsCanvas, - val imageData: ImageData) : Image { - - override val width: Int - get() = imageData.width - - override val height: Int - get() = imageData.height - - val pixels = imageData.unsafeCast() - - init { - console.log(width, height, imageData.data.length) - } - - override suspend fun export(path: String) { - canvas.ctx.putImageData(imageData, 0.0, 0.0) - val container = document.createElement("div") - container.className = "export" - val title = document.createElement("div") - title.innerHTML = path - document.body?.appendChild(container) - container.appendChild(title) - container.appendChild(canvas.element) - } - - override fun getPixel(x: Int, y: Int): Color { - val offset = 4 * (y * width + x) - return Color(imageData.data[offset + 0] / 255.0, - imageData.data[offset + 1] / 255.0, - imageData.data[offset + 2] / 255.0, - imageData.data[offset + 3] / 255.0) - } - - override fun setPixel(x: Int, y: Int, color: Color) { - val offset = 4 * (y * width + x) - inline fun map(x: Double): Byte { - return (x * 255).roundToInt().unsafeCast() - } - imageData.data.set(offset + 0, map(color.red)) - imageData.data.set(offset + 1, map(color.green)) - imageData.data.set(offset + 2, map(color.blue)) - imageData.data.set(offset + 3, map(color.alpha)) - } - -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/js/org/isoron/platform/io/JsDatabase.kt b/uhabits-core-legacy/src/main/js/org/isoron/platform/io/JsDatabase.kt deleted file mode 100644 index db4c2c992..000000000 --- a/uhabits-core-legacy/src/main/js/org/isoron/platform/io/JsDatabase.kt +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.platform.io - -external fun require(module: String): dynamic - -class JsPreparedStatement(val stmt: dynamic) : PreparedStatement { - - override fun step(): StepResult { - val isRowAvailable = stmt.step() as Boolean - return if(isRowAvailable) StepResult.ROW else StepResult.DONE - } - - override fun finalize() { - stmt.free() - } - - override fun getInt(index: Int): Int { - return (stmt.getNumber(index) as Double).toInt() - } - - override fun getLong(index: Int): Long { - return (stmt.getNumber(index) as Double).toLong() - } - - override fun getText(index: Int): String { - return stmt.getString(index) as String - } - - override fun getReal(index: Int): Double { - return stmt.getNumber(index) as Double - } - - override fun bindInt(index: Int, value: Int) { - stmt.bindNumber(value, index + 1) - } - - override fun bindLong(index: Int, value: Long) { - stmt.bindNumber(value, index + 1) - } - - override fun bindText(index: Int, value: String) { - stmt.bindString(value, index + 1) - } - - override fun bindReal(index: Int, value: Double) { - stmt.bindNumber(value, index + 1) - } - - override fun reset() { - stmt.reset() - } - -} - -class JsDatabase(val db: dynamic) : Database { - override fun prepareStatement(sql: String): PreparedStatement { - return JsPreparedStatement(db.prepare(sql)) - } - - override fun close() { - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/js/org/isoron/platform/io/JsFiles.kt b/uhabits-core-legacy/src/main/js/org/isoron/platform/io/JsFiles.kt deleted file mode 100644 index 7b8257856..000000000 --- a/uhabits-core-legacy/src/main/js/org/isoron/platform/io/JsFiles.kt +++ /dev/null @@ -1,165 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.platform.io - -import kotlinx.coroutines.* -import org.isoron.platform.gui.* -import org.isoron.platform.gui.Image -import org.w3c.dom.* -import org.w3c.xhr.* -import kotlin.browser.* -import kotlin.js.* - -class JsFileStorage { - private val TAG = "JsFileStorage" - private val log = StandardLog() - - private val indexedDB = eval("indexedDB") - private var db: dynamic = null - - private val DB_NAME = "Main" - private val OS_NAME = "Files" - - suspend fun init() { - log.info(TAG, "Initializing") - Promise { resolve, reject -> - val req = indexedDB.open(DB_NAME, 2) - req.onerror = { reject(Exception("could not open IndexedDB")) } - req.onupgradeneeded = { - log.info(TAG, "Creating document store") - req.result.createObjectStore(OS_NAME) - } - req.onsuccess = { - log.info(TAG, "Ready") - db = req.result - resolve(0) - } - }.await() - } - - suspend fun delete(path: String) { - Promise { resolve, reject -> - val transaction = db.transaction(OS_NAME, "readwrite") - val os = transaction.objectStore(OS_NAME) - val req = os.delete(path) - req.onerror = { reject(Exception("could not delete $path")) } - req.onsuccess = { resolve(0) } - }.await() - } - - suspend fun put(path: String, content: String) { - Promise { resolve, reject -> - val transaction = db.transaction(OS_NAME, "readwrite") - val os = transaction.objectStore(OS_NAME) - val req = os.put(content, path) - req.onerror = { reject(Exception("could not put $path")) } - req.onsuccess = { resolve(0) } - }.await() - } - - suspend fun get(path: String): String { - return Promise { resolve, reject -> - val transaction = db.transaction(OS_NAME, "readonly") - val os = transaction.objectStore(OS_NAME) - val req = os.get(path) - req.onerror = { reject(Exception("could not get $path")) } - req.onsuccess = { resolve(req.result) } - }.await() - } - - suspend fun exists(path: String): Boolean { - return Promise { resolve, reject -> - val transaction = db.transaction(OS_NAME, "readonly") - val os = transaction.objectStore(OS_NAME) - val req = os.count(path) - req.onerror = { reject(Exception("could not count $path")) } - req.onsuccess = { resolve(req.result > 0) } - }.await() - } -} - -class JsFileOpener(val fileStorage: JsFileStorage) : FileOpener { - - override fun openUserFile(path: String): UserFile { - return JsUserFile(fileStorage, path) - } - - override fun openResourceFile(path: String): ResourceFile { - return JsResourceFile(path) - } -} - -class JsUserFile(val fs: JsFileStorage, - val filename: String) : UserFile { - override suspend fun lines(): List { - return fs.get(filename).lines() - } - - override suspend fun delete() { - fs.delete(filename) - } - - override suspend fun exists(): Boolean { - return fs.exists(filename) - } -} - -class JsResourceFile(val filename: String) : ResourceFile { - override suspend fun exists(): Boolean { - return Promise { resolve, reject -> - val xhr = XMLHttpRequest() - xhr.open("GET", "/assets/$filename", true) - xhr.onload = { resolve(xhr.status.toInt() != 404) } - xhr.onerror = { reject(Exception()) } - xhr.send() - }.await() - } - - override suspend fun lines(): List { - return Promise> { resolve, reject -> - val xhr = XMLHttpRequest() - xhr.open("GET", "/assets/$filename", true) - xhr.onload = { resolve(xhr.responseText.lines()) } - xhr.onerror = { reject(Exception()) } - xhr.send() - }.await() - } - - override suspend fun copyTo(dest: UserFile) { - val fs = (dest as JsUserFile).fs - fs.put(dest.filename, lines().joinToString("\n")) - } - - override suspend fun toImage(): Image { - return Promise { resolve, reject -> - val img = org.w3c.dom.Image() - img.onload = { - val canvas = JsCanvas(document.createElement("canvas") as HTMLCanvasElement, 1.0) - canvas.element.width = img.naturalWidth - canvas.element.height = img.naturalHeight - canvas.setColor(Color(0xffffff)) - canvas.fillRect(0.0, 0.0, canvas.getWidth(), canvas.getHeight()) - canvas.ctx.drawImage(img, 0.0, 0.0) - resolve(canvas.toImage()) - } - img.src = "/assets/$filename" - }.await() - } -} diff --git a/uhabits-core-legacy/src/main/js/org/isoron/platform/io/JsStrings.kt b/uhabits-core-legacy/src/main/js/org/isoron/platform/io/JsStrings.kt deleted file mode 100644 index 2d583967c..000000000 --- a/uhabits-core-legacy/src/main/js/org/isoron/platform/io/JsStrings.kt +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.platform.io - -actual fun format(format: String, arg: String): String { - return js("vsprintf")(format, arg) as String -} - -actual fun format(format: String, arg: Int): String { - return js("vsprintf")(format, arg) as String -} - -actual fun format(format: String, arg: Double): String { - return js("vsprintf")(format, arg) as String -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/js/org/isoron/platform/time/JsDates.kt b/uhabits-core-legacy/src/main/js/org/isoron/platform/time/JsDates.kt deleted file mode 100644 index 0810d9df2..000000000 --- a/uhabits-core-legacy/src/main/js/org/isoron/platform/time/JsDates.kt +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.platform.time - -import kotlin.js.* - -fun LocalDate.toJsDate(): Date { - return Date(year, month - 1, day) -} - -class JsDateFormatter(private val locale: String) : LocalDateFormatter { - override fun shortWeekdayName(date: LocalDate): String { - val options = dateLocaleOptions { weekday = "short" } - return date.toJsDate().toLocaleString(locale, options) - } - - override fun shortMonthName(date: LocalDate): String { - val options = dateLocaleOptions { month = "short" } - return date.toJsDate().toLocaleString(locale, options) - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/jvm/org/isoron/platform/gui/JavaCanvas.kt b/uhabits-core-legacy/src/main/jvm/org/isoron/platform/gui/JavaCanvas.kt deleted file mode 100644 index 04740b3d3..000000000 --- a/uhabits-core-legacy/src/main/jvm/org/isoron/platform/gui/JavaCanvas.kt +++ /dev/null @@ -1,168 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.platform.gui - -import kotlinx.coroutines.* -import org.isoron.platform.io.* -import java.awt.* -import java.awt.RenderingHints.* -import java.awt.font.* -import java.awt.image.* -import kotlin.math.* - - -class JavaCanvas(val image: BufferedImage, - val pixelScale: Double = 2.0) : Canvas { - override fun toImage(): Image { - return JavaImage(image) - } - - private val frc = FontRenderContext(null, true, true) - private var fontSize = 12.0 - private var font = Font.REGULAR - private var textAlign = TextAlign.CENTER - val widthPx = image.width - val heightPx = image.height - val g2d = image.createGraphics() - - private val NOTO_REGULAR_FONT = createFont("fonts/NotoSans-Regular.ttf") - private val NOTO_BOLD_FONT = createFont("fonts/NotoSans-Bold.ttf") - private val FONT_AWESOME_FONT = createFont("fonts/FontAwesome.ttf") - - init { - g2d.setRenderingHint(KEY_ANTIALIASING, VALUE_ANTIALIAS_ON); - g2d.setRenderingHint(KEY_TEXT_ANTIALIASING, VALUE_TEXT_ANTIALIAS_ON); - g2d.setRenderingHint(KEY_FRACTIONALMETRICS, VALUE_FRACTIONALMETRICS_ON); - updateFont() - } - - private fun toPixel(x: Double): Int { - return (pixelScale * x).toInt() - } - - private fun toDp(x: Int): Double { - return x / pixelScale - } - - override fun setColor(color: Color) { - g2d.color = java.awt.Color(color.red.toFloat(), - color.green.toFloat(), - color.blue.toFloat(), - color.alpha.toFloat()) - } - - override fun drawLine(x1: Double, y1: Double, x2: Double, y2: Double) { - g2d.drawLine(toPixel(x1), toPixel(y1), toPixel(x2), toPixel(y2)) - } - - override fun drawText(text: String, x: Double, y: Double) { - updateFont() - val bounds = g2d.font.getStringBounds(text, frc) - val bWidth = bounds.width.roundToInt() - val bHeight = bounds.height.roundToInt() - val bx = bounds.x.roundToInt() - val by = bounds.y.roundToInt() - - if (textAlign == TextAlign.CENTER) { - g2d.drawString(text, - toPixel(x) - bx - bWidth / 2, - toPixel(y) - by - bHeight / 2) - } else if (textAlign == TextAlign.LEFT) { - g2d.drawString(text, - toPixel(x) - bx, - toPixel(y) - by - bHeight / 2) - } else { - g2d.drawString(text, - toPixel(x) - bx - bWidth, - toPixel(y) - by - bHeight / 2) - } - } - - override fun fillRect(x: Double, y: Double, width: Double, height: Double) { - g2d.fillRect(toPixel(x), toPixel(y), toPixel(width), toPixel(height)) - } - - override fun drawRect(x: Double, y: Double, width: Double, height: Double) { - g2d.drawRect(toPixel(x), toPixel(y), toPixel(width), toPixel(height)) - } - - override fun getHeight(): Double { - return toDp(heightPx) - } - - override fun getWidth(): Double { - return toDp(widthPx) - } - - - override fun setFont(font: Font) { - this.font = font - updateFont() - } - - override fun setFontSize(size: Double) { - fontSize = size - updateFont() - } - - override fun setStrokeWidth(size: Double) { - g2d.stroke = BasicStroke((size * pixelScale).toFloat()) - } - - private fun updateFont() { - val size = (fontSize * pixelScale).toFloat() - g2d.font = when (font) { - Font.REGULAR -> NOTO_REGULAR_FONT.deriveFont(size) - Font.BOLD -> NOTO_BOLD_FONT.deriveFont(size) - Font.FONT_AWESOME -> FONT_AWESOME_FONT.deriveFont(size) - } - } - - override fun fillCircle(centerX: Double, centerY: Double, radius: Double) { - g2d.fillOval(toPixel(centerX - radius), - toPixel(centerY - radius), - toPixel(radius * 2), - toPixel(radius * 2)) - } - - override fun fillArc(centerX: Double, - centerY: Double, - radius: Double, - startAngle: Double, - swipeAngle: Double) { - - g2d.fillArc(toPixel(centerX - radius), - toPixel(centerY - radius), - toPixel(radius * 2), - toPixel(radius * 2), - startAngle.roundToInt(), - swipeAngle.roundToInt()) - } - - override fun setTextAlign(align: TextAlign) { - this.textAlign = align - } - - private fun createFont(path: String) = runBlocking { - val file = JavaFileOpener().openResourceFile(path) as JavaResourceFile - if (!file.exists()) throw RuntimeException("File not found: ${file.path}") - java.awt.Font.createFont(0, file.stream()) - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/jvm/org/isoron/platform/gui/JavaImage.kt b/uhabits-core-legacy/src/main/jvm/org/isoron/platform/gui/JavaImage.kt deleted file mode 100644 index db6d5cb5a..000000000 --- a/uhabits-core-legacy/src/main/jvm/org/isoron/platform/gui/JavaImage.kt +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.platform.gui - -import java.awt.image.* -import java.io.* -import javax.imageio.* - -class JavaImage(val bufferedImage: BufferedImage) : Image { - override fun setPixel(x: Int, y: Int, color: Color) { - bufferedImage.setRGB(x, y, java.awt.Color(color.red.toFloat(), - color.green.toFloat(), - color.blue.toFloat()).rgb) - } - - override suspend fun export(path: String) { - val file = File(path) - file.parentFile.mkdirs() - ImageIO.write(bufferedImage, "png", file) - } - - override val width: Int - get() = bufferedImage.width - - override val height: Int - get() = bufferedImage.height - - override fun getPixel(x: Int, y: Int): Color { - return Color(bufferedImage.getRGB(x, y)) - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/jvm/org/isoron/platform/io/JavaDatabase.kt b/uhabits-core-legacy/src/main/jvm/org/isoron/platform/io/JavaDatabase.kt deleted file mode 100644 index df99f0693..000000000 --- a/uhabits-core-legacy/src/main/jvm/org/isoron/platform/io/JavaDatabase.kt +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.platform.io - -import java.sql.* -import java.sql.PreparedStatement - -class JavaPreparedStatement(private var stmt: PreparedStatement) : org.isoron.platform.io.PreparedStatement { - private var rs: ResultSet? = null - - private var hasExecuted = false - - override fun step(): StepResult { - if (!hasExecuted) { - hasExecuted = true - val hasResult = stmt.execute() - if (hasResult) rs = stmt.resultSet - } - - if (rs == null || !rs!!.next()) return StepResult.DONE - return StepResult.ROW - } - - override fun finalize() { - stmt.close() - } - - override fun getInt(index: Int): Int { - return rs!!.getInt(index + 1) - } - - override fun getLong(index: Int): Long { - return rs!!.getLong(index + 1) - } - - override fun getText(index: Int): String { - return rs!!.getString(index + 1) - } - - override fun getReal(index: Int): Double { - return rs!!.getDouble(index + 1) - } - - override fun bindInt(index: Int, value: Int) { - stmt.setInt(index + 1, value) - } - - override fun bindLong(index: Int, value: Long) { - stmt.setLong(index + 1, value) - } - - override fun bindText(index: Int, value: String) { - stmt.setString(index + 1, value) - } - - override fun bindReal(index: Int, value: Double) { - stmt.setDouble(index + 1, value) - } - - override fun reset() { - stmt.clearParameters() - hasExecuted = false - } -} - -class JavaDatabase(private var conn: Connection, - private val log: Log) : Database { - - override fun prepareStatement(sql: String): org.isoron.platform.io.PreparedStatement { - return JavaPreparedStatement(conn.prepareStatement(sql)) - } - - override fun close() { - conn.close() - } -} - -class JavaDatabaseOpener(val log: Log) : DatabaseOpener { - override fun open(file: UserFile): Database { - val platformFile = file as JavaUserFile - val conn = DriverManager.getConnection("jdbc:sqlite:${platformFile.path}") - return JavaDatabase(conn, log) - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/jvm/org/isoron/platform/io/JavaFiles.kt b/uhabits-core-legacy/src/main/jvm/org/isoron/platform/io/JavaFiles.kt deleted file mode 100644 index 1bb3384e8..000000000 --- a/uhabits-core-legacy/src/main/jvm/org/isoron/platform/io/JavaFiles.kt +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.platform.io - -import org.isoron.platform.gui.* -import java.io.* -import java.nio.file.* -import javax.imageio.* - -class JavaResourceFile(val path: String) : ResourceFile { - private val javaPath: Path - get() { - val mainPath = Paths.get("assets/main/$path") - val testPath = Paths.get("assets/test/$path") - if (Files.exists(mainPath)) return mainPath - else return testPath - } - - override suspend fun exists(): Boolean { - return Files.exists(javaPath) - } - - override suspend fun lines(): List { - return Files.readAllLines(javaPath) - } - - override suspend fun copyTo(dest: UserFile) { - if (dest.exists()) dest.delete() - val destPath = (dest as JavaUserFile).path - destPath.toFile().parentFile?.mkdirs() - Files.copy(javaPath, destPath) - } - - fun stream(): InputStream { - return Files.newInputStream(javaPath) - } - - override suspend fun toImage(): Image { - return JavaImage(ImageIO.read(stream())) - } -} - -class JavaUserFile(val path: Path) : UserFile { - override suspend fun lines(): List { - return Files.readAllLines(path) - } - - override suspend fun exists(): Boolean { - return Files.exists(path) - } - - override suspend fun delete() { - Files.delete(path) - } -} - -class JavaFileOpener : FileOpener { - override fun openUserFile(path: String): UserFile { - val path = Paths.get("/tmp/$path") - return JavaUserFile(path) - } - - override fun openResourceFile(path: String): ResourceFile { - return JavaResourceFile(path) - } -} diff --git a/uhabits-core-legacy/src/main/jvm/org/isoron/platform/io/Strings.kt b/uhabits-core-legacy/src/main/jvm/org/isoron/platform/io/Strings.kt deleted file mode 100644 index edb787583..000000000 --- a/uhabits-core-legacy/src/main/jvm/org/isoron/platform/io/Strings.kt +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.platform.io - -actual fun format(format: String, arg: String): String = - String.format(format, arg) - -actual fun format(format: String, arg: Int): String = - String.format(format, arg) - -actual fun format(format: String, arg: Double): String = - String.format(format, arg) \ No newline at end of file diff --git a/uhabits-core-legacy/src/main/jvm/org/isoron/platform/time/JavaDates.kt b/uhabits-core-legacy/src/main/jvm/org/isoron/platform/time/JavaDates.kt deleted file mode 100644 index ebb0a0862..000000000 --- a/uhabits-core-legacy/src/main/jvm/org/isoron/platform/time/JavaDates.kt +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.platform.time - -import java.util.* -import java.util.Calendar.* - -fun LocalDate.toGregorianCalendar(): GregorianCalendar { - val cal = GregorianCalendar() - cal.timeZone = TimeZone.getTimeZone("GMT") - cal.set(MILLISECOND, 0) - cal.set(SECOND, 0) - cal.set(MINUTE, 0) - cal.set(HOUR_OF_DAY, 0) - cal.set(YEAR, this.year) - cal.set(MONTH, this.month - 1) - cal.set(DAY_OF_MONTH, this.day) - return cal -} - -class JavaLocalDateFormatter(private val locale: Locale) : LocalDateFormatter { - override fun shortMonthName(date: LocalDate): String { - val cal = date.toGregorianCalendar() - val longName = cal.getDisplayName(MONTH, LONG, locale) - val shortName = cal.getDisplayName(MONTH, SHORT, locale) - - // For some locales, such as Japan, SHORT name is exceedingly short - return if (longName.length <= 3) longName else shortName - } - - override fun shortWeekdayName(date: LocalDate): String { - val cal = date.toGregorianCalendar() - return cal.getDisplayName(DAY_OF_WEEK, SHORT, locale); - } -} diff --git a/uhabits-core-legacy/src/test/common/org/isoron/AsyncTests.kt b/uhabits-core-legacy/src/test/common/org/isoron/AsyncTests.kt deleted file mode 100644 index 323e2c234..000000000 --- a/uhabits-core-legacy/src/test/common/org/isoron/AsyncTests.kt +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron - -/** - * Workaround until Kotlin adds support for testing suspend functions - * https://youtrack.jetbrains.com/issue/KT-22228 - */ -expect fun asyncTest(block: suspend () -> Unit) \ No newline at end of file diff --git a/uhabits-core-legacy/src/test/common/org/isoron/DependencyResolver.kt b/uhabits-core-legacy/src/test/common/org/isoron/DependencyResolver.kt deleted file mode 100644 index e7208049c..000000000 --- a/uhabits-core-legacy/src/test/common/org/isoron/DependencyResolver.kt +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron - -import org.isoron.platform.gui.* -import org.isoron.platform.io.* -import org.isoron.platform.time.* - -enum class Locale { - US, JAPAN -} - -expect object DependencyResolver { - val ignoreViewTests: Boolean - suspend fun getFileOpener(): FileOpener - suspend fun getDatabase(): Database - fun getDateFormatter(locale: Locale): LocalDateFormatter - fun createCanvas(width: Int, height: Int): Canvas -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/test/common/org/isoron/platform/concurrency/ObservableTest.kt b/uhabits-core-legacy/src/test/common/org/isoron/platform/concurrency/ObservableTest.kt deleted file mode 100644 index 25fd37659..000000000 --- a/uhabits-core-legacy/src/test/common/org/isoron/platform/concurrency/ObservableTest.kt +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.platform.concurrency - -import kotlin.test.* - -class ObservableTest { - - interface TestListener { - fun onDataChanged(data: Int) - } - - @Test - fun testNotifyListeners() { - var wasCalled = false - - val listener = object : TestListener { - override fun onDataChanged(data: Int) { - assertEquals(42, data) - wasCalled = true - } - } - - val observable = Observable() - observable.addListener(listener) - observable.notifyListeners { it.onDataChanged(42) } - assertTrue(wasCalled) - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/test/common/org/isoron/platform/gui/CanvasTest.kt b/uhabits-core-legacy/src/test/common/org/isoron/platform/gui/CanvasTest.kt deleted file mode 100644 index 1c2065cde..000000000 --- a/uhabits-core-legacy/src/test/common/org/isoron/platform/gui/CanvasTest.kt +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.platform.gui - -import org.isoron.* -import org.isoron.uhabits.* -import kotlin.test.* - -class CanvasTest: BaseViewTest() { - @Test - fun run() = asyncTest{ - val canvas = DependencyResolver.createCanvas(500, 400) - - canvas.setColor(Color(0x303030)) - canvas.fillRect(0.0, 0.0, 500.0, 400.0) - - canvas.setColor(Color(0x606060)) - canvas.setStrokeWidth(25.0) - canvas.drawRect(100.0, 100.0, 300.0, 200.0) - - canvas.setColor(Color(0xFFFF00)) - canvas.setStrokeWidth(1.0) - canvas.drawRect(0.0, 0.0, 100.0, 100.0) - canvas.fillCircle(50.0, 50.0, 30.0) - canvas.drawRect(0.0, 100.0, 100.0, 100.0) - canvas.fillArc(50.0, 150.0, 30.0, 90.0, 135.0) - canvas.drawRect(0.0, 200.0, 100.0, 100.0) - canvas.fillArc(50.0, 250.0, 30.0, 90.0, -135.0) - canvas.drawRect(0.0, 300.0, 100.0, 100.0) - canvas.fillArc(50.0, 350.0, 30.0, 45.0, 90.0) - - canvas.setColor(Color(0xFF0000)) - canvas.setStrokeWidth(2.0) - canvas.drawLine(0.0, 0.0, 500.0, 400.0) - canvas.drawLine(500.0, 0.0, 0.0, 400.0) - - canvas.setFont(Font.BOLD) - canvas.setFontSize(50.0) - canvas.setColor(Color(0x00FF00)) - canvas.setTextAlign(TextAlign.CENTER) - canvas.drawText("HELLO", 250.0, 100.0) - - canvas.setTextAlign(TextAlign.RIGHT) - canvas.drawText("HELLO", 250.0, 150.0) - - canvas.setTextAlign(TextAlign.LEFT) - canvas.drawText("HELLO", 250.0, 200.0) - - canvas.setFont(Font.FONT_AWESOME) - canvas.drawText(FontAwesome.CHECK, 250.0, 300.0) - - assertRenders("components/CanvasTest.png", canvas) - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/test/common/org/isoron/platform/io/DatabaseTest.kt b/uhabits-core-legacy/src/test/common/org/isoron/platform/io/DatabaseTest.kt deleted file mode 100644 index 8e46e0872..000000000 --- a/uhabits-core-legacy/src/test/common/org/isoron/platform/io/DatabaseTest.kt +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.platform.io - -import org.isoron.* -import kotlin.test.* - -class DatabaseTest { - @Test - fun testUsage() = asyncTest{ - val db = DependencyResolver.getDatabase() - - db.setVersion(0) - assertEquals(0, db.getVersion()) - - db.setVersion(23) - assertEquals(23, db.getVersion()) - - var stmt = db.prepareStatement("drop table if exists demo") - stmt.step() - stmt.finalize() - - stmt = db.prepareStatement("create table if not exists demo(key int, value text)") - stmt.step() - stmt.finalize() - - stmt = db.prepareStatement("insert into demo(key, value) values (?, ?)") - stmt.bindInt(0, 42) - stmt.bindText(1, "Hello World") - stmt.step() - stmt.finalize() - - stmt = db.prepareStatement("select * from demo where key > ?") - stmt.bindInt(0, 10) - - var result = stmt.step() - assertEquals(StepResult.ROW, result) - assertEquals(42, stmt.getInt(0)) - assertEquals("Hello World", stmt.getText(1)) - - result = stmt.step() - assertEquals(StepResult.DONE, result) - - stmt.finalize() - db.close() - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/test/common/org/isoron/platform/io/FilesTest.kt b/uhabits-core-legacy/src/test/common/org/isoron/platform/io/FilesTest.kt deleted file mode 100644 index f039abc93..000000000 --- a/uhabits-core-legacy/src/test/common/org/isoron/platform/io/FilesTest.kt +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.platform.io - -import org.isoron.* -import kotlin.test.* - -class FilesTest() { - @Test - fun testLines() = asyncTest { - val fileOpener = DependencyResolver.getFileOpener() - - assertFalse(fileOpener.openUserFile("non-existing-usr.txt").exists(), - "non-existing-usr.txt shouldn't exist") - - assertFalse(fileOpener.openResourceFile("non-existing-res.txt").exists(), - "non-existing-res.txt shouldn't exist") - - val hello = fileOpener.openResourceFile("hello.txt") - assertTrue(hello.exists(), "hello.txt should exist") - var lines = hello.lines() - assertEquals(2, lines.size) - assertEquals("Hello World!", lines[0]) - assertEquals("This is a resource.", lines[1]) - - val helloCopy = fileOpener.openUserFile("copies/hello.txt") - hello.copyTo(helloCopy) - lines = helloCopy.lines() - assertEquals("Hello World!", lines[0]) - assertEquals("This is a resource.", lines[1]) - - assertTrue(helloCopy.exists(), "helloCopy should exist") - helloCopy.delete() - assertFalse(helloCopy.exists(), "helloCopy shouldn't exist") - - - val migration = fileOpener.openResourceFile("migrations/012.sql") - assertTrue(migration.exists(), "migrations/012.sql should exist") - lines = migration.lines() - assertEquals("delete from Score", lines[0]) - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/test/common/org/isoron/platform/io/StringsTest.kt b/uhabits-core-legacy/src/test/common/org/isoron/platform/io/StringsTest.kt deleted file mode 100644 index 1573e620a..000000000 --- a/uhabits-core-legacy/src/test/common/org/isoron/platform/io/StringsTest.kt +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.platform.io - -import kotlin.test.* - -class StringsTest { - @Test - fun testSprintf() { - assertEquals("hello world!", format("hello %s!", "world")) - assertEquals(" 5", format("%3d", 5)) - assertEquals("005", format("%03d", 5)) - assertEquals("005", format("%03d", 5)) - assertEquals(" 45", format("%3d", 45)) - assertEquals("145", format("%3d", 145)) - assertEquals(" 13.42", format("%8.2f", 13.419187263)) - assertEquals("00013.42", format("%08.2f", 13.419187263)) - assertEquals("13.42 ", format("%-8.2f", 13.419187263)) - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/test/common/org/isoron/platform/time/DatesTest.kt b/uhabits-core-legacy/src/test/common/org/isoron/platform/time/DatesTest.kt deleted file mode 100644 index cf64f50de..000000000 --- a/uhabits-core-legacy/src/test/common/org/isoron/platform/time/DatesTest.kt +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.platform.time - -import org.isoron.* -import kotlin.test.* - -class DatesTest { - private val d1 = LocalDate(2019, 3, 25) - private val d2 = LocalDate(2019, 4, 4) - private val d3 = LocalDate(2019, 5, 12) - - @Test - fun testPlusMinusDays() { - val today = LocalDate(2019, 3, 25) - assertEquals(today.minus(28), LocalDate(2019, 2, 25)) - assertEquals(today.plus(7), LocalDate(2019, 4, 1)) - assertEquals(today.plus(42), LocalDate(2019, 5, 6)) - } - - @Test - fun testFormatter() { - var fmt = DependencyResolver.getDateFormatter(Locale.US) - assertEquals("Mon", fmt.shortWeekdayName(d1)) - assertEquals("Thu", fmt.shortWeekdayName(d2)) - assertEquals("Sun", fmt.shortWeekdayName(d3)) - assertEquals("Mar", fmt.shortMonthName(d1)) - assertEquals("Apr", fmt.shortMonthName(d2)) - assertEquals("May", fmt.shortMonthName(d3)) - - fmt = DependencyResolver.getDateFormatter(Locale.JAPAN) - assertEquals("月", fmt.shortWeekdayName(d1)) - assertEquals("木", fmt.shortWeekdayName(d2)) - assertEquals("日", fmt.shortWeekdayName(d3)) - assertEquals("3月", fmt.shortMonthName(d1)) - assertEquals("4月", fmt.shortMonthName(d2)) - assertEquals("5月", fmt.shortMonthName(d3)) - } - - @Test - fun testTimestamps() { - val timestamps = listOf(Timestamp(1555977600000), - Timestamp(968716800000), - Timestamp(946684800000)) - val dates = listOf(LocalDate(2019, 4, 23), - LocalDate(2000, 9, 12), - LocalDate(2000, 1, 1)) - assertEquals(timestamps, dates.map { d -> d.timestamp }) - assertEquals(dates, timestamps.map { t -> t.localDate }) - } - - @Test - fun testIsOlderThan() { - val ref = LocalDate(2010, 10, 5) - assertTrue(ref.isOlderThan(LocalDate(2010, 10, 10))) - assertTrue(ref.isOlderThan(LocalDate(2010, 11, 4))) - assertTrue(ref.isOlderThan(LocalDate(2011, 1, 5))) - assertTrue(ref.isOlderThan(LocalDate(2015, 3, 1))) - - assertFalse(ref.isOlderThan(LocalDate(2010, 10, 5))) - assertFalse(ref.isOlderThan(LocalDate(2010, 10, 4))) - assertFalse(ref.isOlderThan(LocalDate(2010, 9, 1))) - assertFalse(ref.isOlderThan(LocalDate(2005, 10, 5))) - } - - @Test - fun testDistanceInDays() { - val d1 = LocalDate(2019, 5, 10) - val d2 = LocalDate(2019, 5, 30) - val d3 = LocalDate(2019, 6, 5) - - assertEquals(0, d1.distanceTo(d1)) - assertEquals(20, d1.distanceTo(d2)) - assertEquals(20, d2.distanceTo(d1)) - assertEquals(26, d1.distanceTo(d3)) - assertEquals(6, d2.distanceTo(d3)) - } - - @Test - fun testGregorianCalendarConversion() { - fun check(daysSince2000: Int, - expectedYear: Int, - expectedMonth: Int, - expectedDay: Int, - expectedWeekday: Int) { - val date = LocalDate(daysSince2000) - assertEquals(expectedYear, date.year) - assertEquals(expectedMonth, date.month) - assertEquals(expectedDay, date.day) - assertEquals(expectedWeekday, date.dayOfWeek.index) - assertEquals(date, date.timestamp.localDate) - } - - check(0, 2000, 1, 1, 6) - check(626, 2001, 9, 18, 2) - check(915, 2002, 7, 4, 4) - check(2759, 2007, 7, 22, 0) - check(2791, 2007, 8, 23, 4) - check(6524, 2017, 11, 11, 6) - check(7517, 2020, 7, 31, 5) - check(10031, 2027, 6, 19, 6) - check(13091, 2035, 11, 4, 0) - check(14849, 2040, 8, 27, 1) - check(17330, 2047, 6, 13, 4) - check(20566, 2056, 4, 22, 6) - check(23617, 2064, 8, 29, 5) - check(27743, 2075, 12, 16, 1) - check(31742, 2086, 11, 27, 3) - check(36659, 2100, 5, 15, 6) - check(39224, 2107, 5, 24, 2) - check(39896, 2109, 3, 26, 2) - check(40819, 2111, 10, 5, 1) - check(43983, 2120, 6, 3, 1) - check(46893, 2128, 5, 22, 6) - check(51013, 2139, 9, 2, 3) - check(55542, 2152, 1, 26, 3) - check(58817, 2161, 1, 13, 2) - check(63769, 2174, 8, 5, 5) - check(64893, 2177, 9, 2, 2) - check(66840, 2183, 1, 1, 3) - check(68011, 2186, 3, 17, 5) - check(70060, 2191, 10, 26, 3) - check(70733, 2193, 8, 29, 4) - } -} diff --git a/uhabits-core-legacy/src/test/common/org/isoron/uhabits/BaseViewTest.kt b/uhabits-core-legacy/src/test/common/org/isoron/uhabits/BaseViewTest.kt deleted file mode 100644 index 1e9b103e6..000000000 --- a/uhabits-core-legacy/src/test/common/org/isoron/uhabits/BaseViewTest.kt +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits - -import org.isoron.* -import org.isoron.platform.gui.* -import org.isoron.uhabits.components.* -import kotlin.test.* - -open class BaseViewTest { - var theme = LightTheme() - suspend fun assertRenders(width: Int, - height: Int, - expectedPath: String, - component: Component) { - if (DependencyResolver.ignoreViewTests) { - println("WARN: Ignoring BaseViewTest assertion") - return - } - val canvas = DependencyResolver.createCanvas(width, height) - component.draw(canvas) - assertRenders(expectedPath, canvas) - } - - suspend fun assertRenders(path: String, - canvas: Canvas) { - if (DependencyResolver.ignoreViewTests) { - println("WARN: Ignoring BaseViewTest assertion") - return - } - val actualImage = canvas.toImage() - val failedActualPath = "/tmp/failed/${path}" - val failedExpectedPath = failedActualPath.replace(".png", - ".expected.png") - val failedDiffPath = failedActualPath.replace(".png", ".diff.png") - val fileOpener = DependencyResolver.getFileOpener() - val expectedFile = fileOpener.openResourceFile(path) - if (expectedFile.exists()) { - val expectedImage = expectedFile.toImage() - val diffImage = expectedFile.toImage() - diffImage.diff(actualImage) - val distance = diffImage.averageLuminosity * 100 - if (distance >= 1.0) { - expectedImage.export(failedExpectedPath) - actualImage.export(failedActualPath) - diffImage.export(failedDiffPath) - fail("Images differ (distance=${distance})") - } - } else { - actualImage.export(failedActualPath) - fail("Expected image file is missing. Actual image: $failedActualPath") - } - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/test/common/org/isoron/uhabits/components/BarChartTest.kt b/uhabits-core-legacy/src/test/common/org/isoron/uhabits/components/BarChartTest.kt deleted file mode 100644 index 9017f41cf..000000000 --- a/uhabits-core-legacy/src/test/common/org/isoron/uhabits/components/BarChartTest.kt +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.components - -import org.isoron.* -import org.isoron.platform.time.* -import org.isoron.uhabits.* -import kotlin.test.* - -class BarChartTest : BaseViewTest() { - val base = "components/BarChart" - val today = LocalDate(2015, 1, 25) - val dailyAxis = (0..100).map { today.minus(it) } - val weeklyAxis = (0..100).map { today.minus(it * 7) } - val monthlyAxis = (0..100).map { today.minus(it * 30) } - val yearlyAxis = (0..100).map { today.minus(it * 365) } - val fmt = DependencyResolver.getDateFormatter(Locale.US) - val component = BarChart(theme, fmt) - - val series1 = listOf(200.0, 80.0, 150.0, 437.0, 50.0, 80.0, 420.0, - 350.0, 100.0, 375.0, 300.0, 50.0, 60.0, 350.0, - 125.0) - - val series2 = listOf(300.0, 500.0, 280.0, 50.0, 425.0, 300.0, 150.0, - 10.0, 50.0, 200.0, 230.0, 20.0, 60.0, 34.0, 100.0) - - init { - component.axis = dailyAxis - component.series.add(series1) - component.colors.add(theme.color(1)) - } - - @Test - fun testDraw() = asyncTest { - assertRenders(400, 200, "$base/base.png", component) - } - - @Test - fun testDrawWeeklyAxis() = asyncTest { - component.axis = weeklyAxis - assertRenders(400, 200, "$base/axis-weekly.png", component) - } - - @Test - fun testDrawMonthlyAxis() = asyncTest { - component.axis = monthlyAxis - assertRenders(400, 200, "$base/axis-monthly.png", component) - } - - @Test - fun testDrawYearlyAxis() = asyncTest { - component.axis = yearlyAxis - assertRenders(400, 200, "$base/axis-yearly.png", component) - } - - @Test - fun testDrawTwoSeries() = asyncTest { - component.series.add(series2) - component.colors.add(theme.color(3)) - assertRenders(400, 200, "$base/2-series.png", component) - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/test/common/org/isoron/uhabits/components/CalendarChartTest.kt b/uhabits-core-legacy/src/test/common/org/isoron/uhabits/components/CalendarChartTest.kt deleted file mode 100644 index dee24ccf8..000000000 --- a/uhabits-core-legacy/src/test/common/org/isoron/uhabits/components/CalendarChartTest.kt +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.components - -import org.isoron.* -import org.isoron.platform.time.* -import org.isoron.uhabits.* -import kotlin.test.* - -class CalendarChartTest : BaseViewTest() { - val base = "components/CalendarChart" - - @Test - fun testDraw() = asyncTest { - val fmt = DependencyResolver.getDateFormatter(Locale.US) - val component = CalendarChart(LocalDate(2015, 1, 25), - theme.color(4), - theme, - fmt) - component.series = listOf(1.0, // today - 0.2, 0.5, 0.7, 0.0, 0.3, 0.4, 0.6, - 0.6, 0.0, 0.3, 0.6, 0.5, 0.8, 0.0, - 0.0, 0.0, 0.0, 0.6, 0.5, 0.7, 0.7, - 0.5, 0.5, 0.8, 0.9, 1.0, 1.0, 1.0, - 1.0, 1.0, 1.0, 1.0, 1.0, 0.5, 0.2) - assertRenders(400, 200, "$base/base.png", component) - - component.scrollPosition = 2 - assertRenders(400, 200, "$base/scroll.png", component) - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/test/common/org/isoron/uhabits/components/CheckmarkButtonTest.kt b/uhabits-core-legacy/src/test/common/org/isoron/uhabits/components/CheckmarkButtonTest.kt deleted file mode 100644 index 9a325917d..000000000 --- a/uhabits-core-legacy/src/test/common/org/isoron/uhabits/components/CheckmarkButtonTest.kt +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.components - -import org.isoron.* -import org.isoron.uhabits.* -import kotlin.test.* - -class CheckmarkButtonTest : BaseViewTest() { - val base = "components/CheckmarkButton" - - @Test - fun testDrawExplicit() = asyncTest { - val component = CheckmarkButton(2, theme.color(8), theme) - assertRenders(48, 48, "$base/explicit.png", component) - } - - @Test - fun testDrawImplicit() = asyncTest { - val component = CheckmarkButton(1, theme.color(8), theme) - assertRenders(48, 48, "$base/implicit.png", component) - } - - @Test - fun testDrawUnchecked() = asyncTest { - val component = CheckmarkButton(0, theme.color(8), theme) - assertRenders(48, 48, "$base/unchecked.png", component) - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/test/common/org/isoron/uhabits/components/HabitListHeaderTest.kt b/uhabits-core-legacy/src/test/common/org/isoron/uhabits/components/HabitListHeaderTest.kt deleted file mode 100644 index 41c4d9e5b..000000000 --- a/uhabits-core-legacy/src/test/common/org/isoron/uhabits/components/HabitListHeaderTest.kt +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.components - -import org.isoron.* -import org.isoron.platform.time.* -import org.isoron.uhabits.* -import kotlin.test.* - -class HabitListHeaderTest : BaseViewTest() { - @Test - fun testDraw() = asyncTest { - val fmt = DependencyResolver.getDateFormatter(Locale.US) - val header = HabitListHeader(LocalDate(2019, 3, 25), 5, theme, fmt) - assertRenders(600, 48, "components/HabitListHeader/light.png", header) - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/test/common/org/isoron/uhabits/components/NumberButtonTest.kt b/uhabits-core-legacy/src/test/common/org/isoron/uhabits/components/NumberButtonTest.kt deleted file mode 100644 index 7f65a95ac..000000000 --- a/uhabits-core-legacy/src/test/common/org/isoron/uhabits/components/NumberButtonTest.kt +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.components - -import org.isoron.* -import org.isoron.uhabits.* -import kotlin.test.* - -class NumberButtonTest : BaseViewTest() { - val base = "components/NumberButton" - - @Test - fun testFormatValue() = asyncTest{ - assertEquals("0.12", 0.1235.toShortString()) - assertEquals("0.1", 0.1000.toShortString()) - assertEquals("5", 5.0.toShortString()) - assertEquals("5.25", 5.25.toShortString()) - assertEquals("12.3", 12.3456.toShortString()) - assertEquals("123", 123.123.toShortString()) - assertEquals("321", 321.2.toShortString()) - assertEquals("4.3k", 4321.2.toShortString()) - assertEquals("54.3k", 54321.2.toShortString()) - assertEquals("654k", 654321.2.toShortString()) - assertEquals("7.7M", 7654321.2.toShortString()) - assertEquals("87.7M", 87654321.2.toShortString()) - assertEquals("988M", 987654321.2.toShortString()) - assertEquals("2.0G", 1987654321.2.toShortString()) - } - - @Test - fun testRenderAbove() = asyncTest { - val btn = NumberButton(theme.color(8), 500.0, 100.0, "steps", theme) - assertRenders(48, 48, "$base/render_above.png", btn) - } - - @Test - fun testRenderBelow() = asyncTest { - val btn = NumberButton(theme.color(8), 99.0, 100.0, "steps", theme) - assertRenders(48, 48, "$base/render_below.png", btn) - } -} diff --git a/uhabits-core-legacy/src/test/common/org/isoron/uhabits/components/RingTest.kt b/uhabits-core-legacy/src/test/common/org/isoron/uhabits/components/RingTest.kt deleted file mode 100644 index a91c4a056..000000000 --- a/uhabits-core-legacy/src/test/common/org/isoron/uhabits/components/RingTest.kt +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.components - -import org.isoron.* -import org.isoron.uhabits.* -import kotlin.test.* - -class RingTest : BaseViewTest() { - val base = "components/Ring" - - @Test - fun testDraw() = asyncTest { - val component = Ring(theme.color(8), - percentage = 0.30, - thickness = 5.0, - radius = 30.0, - theme = theme, - label = true) - assertRenders(60, 60, "$base/draw1.png", component) - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/test/common/org/isoron/uhabits/models/CheckmarkListTest.kt b/uhabits-core-legacy/src/test/common/org/isoron/uhabits/models/CheckmarkListTest.kt deleted file mode 100644 index b96965066..000000000 --- a/uhabits-core-legacy/src/test/common/org/isoron/uhabits/models/CheckmarkListTest.kt +++ /dev/null @@ -1,184 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.models - -import org.isoron.platform.time.* -import org.isoron.uhabits.models.Checkmark.Companion.CHECKED_AUTOMATIC -import org.isoron.uhabits.models.Checkmark.Companion.CHECKED_MANUAL -import org.isoron.uhabits.models.Checkmark.Companion.UNCHECKED -import kotlin.test.* - -class CheckmarkListTest { - - private val today = LocalDate(2019, 1, 30) - - private fun day(offset: Int): LocalDate { - return today.minus(offset) - } - - @Test - fun buildIntervalsWeekly() { - val checks = listOf(Checkmark(day(23), CHECKED_MANUAL), - Checkmark(day(18), CHECKED_MANUAL), - Checkmark(day(8), CHECKED_MANUAL)) - val expected = listOf( - CheckmarkList.Interval(day(23), day(23), day(17)), - CheckmarkList.Interval(day(18), day(18), day(12)), - CheckmarkList.Interval(day(8), day(8), day(2))) - val actual = CheckmarkList.buildIntervals(checks, - Frequency.WEEKLY) - assertEquals(expected, actual) - } - - @Test - fun buildIntervalsDaily() { - val checks = listOf(Checkmark(day(23), CHECKED_MANUAL), - Checkmark(day(18), CHECKED_MANUAL), - Checkmark(day(8), CHECKED_MANUAL)) - val expected = listOf( - CheckmarkList.Interval(day(23), day(23), day(23)), - CheckmarkList.Interval(day(18), day(18), day(18)), - CheckmarkList.Interval(day(8), day(8), day(8))) - val actual = CheckmarkList.buildIntervals(checks, - Frequency.DAILY) - assertEquals(expected, actual) - } - - @Test - fun buildIntervalsTwoPerWeek() { - val checks = listOf(Checkmark(day(23), CHECKED_MANUAL), - Checkmark(day(22), CHECKED_MANUAL), - Checkmark(day(18), CHECKED_MANUAL), - Checkmark(day(15), CHECKED_MANUAL), - Checkmark(day(8), CHECKED_MANUAL)) - val expected = listOf( - CheckmarkList.Interval(day(23), day(22), day(17)), - CheckmarkList.Interval(day(22), day(18), day(16)), - CheckmarkList.Interval(day(18), day(15), day(12))) - val actual = CheckmarkList.buildIntervals(checks, - Frequency.TWO_TIMES_PER_WEEK) - assertEquals(expected, actual) - } - - @Test - fun testSnapIntervalsTogether() { - val original = mutableListOf( - CheckmarkList.Interval(day(40), day(40), day(34)), - CheckmarkList.Interval(day(25), day(25), day(19)), - CheckmarkList.Interval(day(16), day(16), day(10)), - CheckmarkList.Interval(day(8), day(8), day(2))) - val expected = listOf( - CheckmarkList.Interval(day(40), day(40), day(34)), - CheckmarkList.Interval(day(25), day(25), day(19)), - CheckmarkList.Interval(day(18), day(16), day(12)), - CheckmarkList.Interval(day(11), day(8), day(5))) - CheckmarkList.snapIntervalsTogether(original) - assertEquals(expected, original) - } - - @Test - fun testBuildCheckmarksFromIntervals() { - val checks = listOf(Checkmark(day(10), CHECKED_MANUAL), - Checkmark(day(5), CHECKED_MANUAL), - Checkmark(day(2), CHECKED_MANUAL), - Checkmark(day(1), CHECKED_MANUAL)) - val intervals = listOf(CheckmarkList.Interval(day(10), day(8), day(8)), - CheckmarkList.Interval(day(6), day(5), day(4)), - CheckmarkList.Interval(day(2), day(2), day(1))) - val expected = listOf(Checkmark(day(1), CHECKED_MANUAL), - Checkmark(day(2), CHECKED_MANUAL), - Checkmark(day(3), UNCHECKED), - Checkmark(day(4), CHECKED_AUTOMATIC), - Checkmark(day(5), CHECKED_MANUAL), - Checkmark(day(6), CHECKED_AUTOMATIC), - Checkmark(day(7), UNCHECKED), - Checkmark(day(8), CHECKED_AUTOMATIC), - Checkmark(day(9), CHECKED_AUTOMATIC), - Checkmark(day(10), CHECKED_MANUAL)) - val actual = CheckmarkList.buildCheckmarksFromIntervals(checks, intervals) - assertEquals(expected, actual) - } - - @Test - fun testBuildCheckmarksFromIntervals2() { - val reps = listOf(Checkmark(day(0), CHECKED_MANUAL)) - val intervals = listOf(CheckmarkList.Interval(day(5), day(0), day(0))) - val expected = listOf(Checkmark(day(0), CHECKED_MANUAL), - Checkmark(day(1), CHECKED_AUTOMATIC), - Checkmark(day(2), CHECKED_AUTOMATIC), - Checkmark(day(3), CHECKED_AUTOMATIC), - Checkmark(day(4), CHECKED_AUTOMATIC), - Checkmark(day(5), CHECKED_AUTOMATIC)) - val actual = CheckmarkList.buildCheckmarksFromIntervals(reps, intervals) - assertEquals(expected, actual) - } - - @Test - fun computeAutomaticCheckmarks() { - val checks = listOf(Checkmark(day(10), CHECKED_MANUAL), - Checkmark(day(5), CHECKED_MANUAL), - Checkmark(day(2), CHECKED_MANUAL), - Checkmark(day(1), CHECKED_MANUAL)) - val expected = listOf(Checkmark(day(-1), CHECKED_AUTOMATIC), - Checkmark(day(0), CHECKED_AUTOMATIC), - Checkmark(day(1), CHECKED_MANUAL), - Checkmark(day(2), CHECKED_MANUAL), - Checkmark(day(3), CHECKED_AUTOMATIC), - Checkmark(day(4), CHECKED_AUTOMATIC), - Checkmark(day(5), CHECKED_MANUAL), - Checkmark(day(6), CHECKED_AUTOMATIC), - Checkmark(day(7), CHECKED_AUTOMATIC), - Checkmark(day(8), CHECKED_AUTOMATIC), - Checkmark(day(9), CHECKED_AUTOMATIC), - Checkmark(day(10), CHECKED_MANUAL)) - val actual = CheckmarkList.computeCheckmarks(checks, Frequency(1, 3)) - assertEquals(expected, actual) - } - - @Test - fun testGetUntil() { - val list = CheckmarkList(Frequency(1, 2), HabitType.BOOLEAN_HABIT) - list.setManualCheckmarks(listOf(Checkmark(day(4), CHECKED_MANUAL), - Checkmark(day(7), CHECKED_MANUAL))) - val expected = listOf(Checkmark(day(0), UNCHECKED), - Checkmark(day(1), UNCHECKED), - Checkmark(day(2), UNCHECKED), - Checkmark(day(3), CHECKED_AUTOMATIC), - Checkmark(day(4), CHECKED_MANUAL), - Checkmark(day(5), UNCHECKED), - Checkmark(day(6), CHECKED_AUTOMATIC), - Checkmark(day(7), CHECKED_MANUAL)) - assertEquals(expected, list.getUntil(day(0))) - - val expected2 = listOf(Checkmark(day(3), CHECKED_AUTOMATIC), - Checkmark(day(4), CHECKED_MANUAL), - Checkmark(day(5), UNCHECKED), - Checkmark(day(6), CHECKED_AUTOMATIC), - Checkmark(day(7), CHECKED_MANUAL)) - assertEquals(expected2, list.getUntil(day(3))) - } - - @Test - fun testGetValuesUntil2() { - val list = CheckmarkList(Frequency(1, 2), HabitType.BOOLEAN_HABIT) - val expected = listOf() - assertEquals(expected, list.getUntil(day(0))) - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/test/common/org/isoron/uhabits/models/CheckmarkRepositoryTest.kt b/uhabits-core-legacy/src/test/common/org/isoron/uhabits/models/CheckmarkRepositoryTest.kt deleted file mode 100644 index f5e933760..000000000 --- a/uhabits-core-legacy/src/test/common/org/isoron/uhabits/models/CheckmarkRepositoryTest.kt +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.models - -import org.isoron.* -import org.isoron.platform.io.* -import org.isoron.platform.time.* -import kotlin.test.* - -class CheckmarkRepositoryTest() { - @Test - fun testCRUD() = asyncTest { - val db = DependencyResolver.getDatabase() - - val habitA = 10 - var checkmarksA = listOf(Checkmark(LocalDate(2019, 1, 15), 100), - Checkmark(LocalDate(2019, 1, 7), 500), - Checkmark(LocalDate(2019, 1, 1), 900)) - - val habitB = 35 - val checkmarksB = listOf(Checkmark(LocalDate(2019, 1, 30), 50), - Checkmark(LocalDate(2019, 1, 29), 30), - Checkmark(LocalDate(2019, 1, 27), 900), - Checkmark(LocalDate(2019, 1, 25), 450), - Checkmark(LocalDate(2019, 1, 20), 1000)) - - val repository = CheckmarkRepository(db) - - for (c in checkmarksA) repository.insert(habitA, c) - for (c in checkmarksB) repository.insert(habitB, c) - assertEquals(checkmarksA, repository.findAll(habitA)) - assertEquals(checkmarksB, repository.findAll(habitB)) - assertEquals(listOf(), repository.findAll(999)) - - checkmarksA = listOf(Checkmark(LocalDate(2019, 1, 15), 100), - Checkmark(LocalDate(2019, 1, 1), 900)) - repository.delete(habitA, LocalDate(2019, 1, 7)) - assertEquals(checkmarksA, repository.findAll(habitA)) - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/test/common/org/isoron/uhabits/models/HabitRepositoryTest.kt b/uhabits-core-legacy/src/test/common/org/isoron/uhabits/models/HabitRepositoryTest.kt deleted file mode 100644 index faa234d78..000000000 --- a/uhabits-core-legacy/src/test/common/org/isoron/uhabits/models/HabitRepositoryTest.kt +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.models - -import org.isoron.* -import org.isoron.platform.gui.* -import kotlin.test.* - -class HabitRepositoryTest() { - @Test - fun testCRUD() = asyncTest{ - val db = DependencyResolver.getDatabase() - val original0 = Habit(id = 0, - name = "Wake up early", - description = "Did you wake up before 6am?", - frequency = Frequency(1, 1), - color = PaletteColor(3), - isArchived = false, - position = 0, - unit = "", - target = 0.0, - type = HabitType.BOOLEAN_HABIT) - - val original1 = Habit(id = 1, - name = "Exercise", - description = "Did you exercise for at least 20 minutes?", - frequency = Frequency(1, 2), - color = PaletteColor(4), - isArchived = false, - position = 1, - unit = "", - target = 0.0, - type = HabitType.BOOLEAN_HABIT) - - val original2 = Habit(id = 2, - name = "Learn Japanese", - description = "Did you study Japanese today?", - frequency = Frequency(1, 1), - color = PaletteColor(3), - isArchived = false, - position = 2, - unit = "", - target = 0.0, - type = HabitType.BOOLEAN_HABIT) - - val repository = HabitRepository(db) - - var habits = repository.findAll() - assertEquals(0, repository.nextId()) - assertEquals(0, habits.size) - - repository.insert(original0) - repository.insert(original1) - repository.insert(original2) - habits = repository.findAll() - assertEquals(3, habits.size) - assertEquals(original0, habits[0]) - assertEquals(original1, habits[1]) - assertEquals(original2, habits[2]) - - assertEquals(3, repository.nextId()) - - original0.description = "New description" - repository.update(original0) - habits = repository.findAll() - assertEquals(original0, habits[0]) - - repository.delete(original0) - habits = repository.findAll() - assertEquals(2, habits.size) - assertEquals(original1, habits[1]) - assertEquals(original2, habits[2]) - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/test/common/org/isoron/uhabits/models/PreferencesRepositoryTest.kt b/uhabits-core-legacy/src/test/common/org/isoron/uhabits/models/PreferencesRepositoryTest.kt deleted file mode 100644 index b24b65ecb..000000000 --- a/uhabits-core-legacy/src/test/common/org/isoron/uhabits/models/PreferencesRepositoryTest.kt +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.models - -import org.isoron.* -import org.isoron.platform.io.* -import kotlin.test.* - -class PreferencesRepositoryTest() { - @Test - fun testUsage() = asyncTest{ - val db = DependencyResolver.getDatabase() - val prefs = PreferencesRepository(db) - assertEquals("default", prefs.getString("non_existing_key", "default")) - prefs.putString("ringtone_path", "/tmp") - assertEquals("/tmp", prefs.getString("ringtone_path", "none")) - - assertEquals(42, prefs.getLong("non_existing_key", 42)) - prefs.putLong("times_launched", 130) - assertEquals(130, prefs.getLong("times_launched", 0)) - - assertEquals(true, prefs.getBoolean("non_existing_key", true)) - assertEquals(false, prefs.getBoolean("non_existing_key", false)) - prefs.putBoolean("show_archived", true) - assertEquals(true, prefs.getBoolean("show_archived", false)) - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/test/common/org/isoron/uhabits/models/ScoreListTest.kt b/uhabits-core-legacy/src/test/common/org/isoron/uhabits/models/ScoreListTest.kt deleted file mode 100644 index c9e86f5c5..000000000 --- a/uhabits-core-legacy/src/test/common/org/isoron/uhabits/models/ScoreListTest.kt +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.models - -import org.isoron.platform.time.* -import org.isoron.uhabits.models.Checkmark.Companion.CHECKED_MANUAL -import org.isoron.uhabits.models.Frequency.Companion.DAILY -import org.isoron.uhabits.models.ScoreList.Companion.compute -import kotlin.test.* - -class ScoreListTest { - val today = LocalDate(2019, 1, 1) - - @Test - fun computeWithDailyHabit() { - val freq = DAILY - var check = 1 - assertEquals(compute(freq, 0.0, check), 0.051922) - assertEquals(compute(freq, 0.5, check), 0.525961) - assertEquals(compute(freq, 0.75, check), 0.762980) - - check = 0 - assertEquals(compute(freq, 0.0, check), 0.0) - assertEquals(compute(freq, 0.5, check), 0.474038) - assertEquals(compute(freq, 0.75, check), 0.711058) - } - - @Test - fun computeWithNonDailyHabit() { - var check = 1 - val freq = Frequency(1, 3) - assertEquals(compute(freq, 0.0, check), 0.017615) - assertEquals(compute(freq, 0.5, check), 0.508807) - assertEquals(compute(freq, 0.75, check), 0.754403) - - check = 0 - assertEquals(compute(freq, 0.0, check), 0.0) - assertEquals(compute(freq, 0.5, check), 0.491192) - assertEquals(compute(freq, 0.75, check), 0.736788) - } - - @Test - fun getValueUntilWithBooleanHabit() { - val checks = CheckmarkList(DAILY, - HabitType.BOOLEAN_HABIT) - checks.setManualCheckmarks((0..19).map { - Checkmark(today.minus(it), CHECKED_MANUAL) - }) - val scoreList = ScoreList(checks) - val actual = scoreList.getUntil(today) - val expected = listOf(Score(today.minus(0), 0.655741), - Score(today.minus(1), 0.636888), - Score(today.minus(2), 0.617002), - Score(today.minus(3), 0.596027), - Score(today.minus(4), 0.573903), - Score(today.minus(5), 0.550568), - Score(today.minus(6), 0.525955), - Score(today.minus(7), 0.499994), - Score(today.minus(8), 0.472611), - Score(today.minus(9), 0.443729), - Score(today.minus(10), 0.413265), - Score(today.minus(11), 0.381132), - Score(today.minus(12), 0.347240), - Score(today.minus(13), 0.311491), - Score(today.minus(14), 0.273785), - Score(today.minus(15), 0.234014), - Score(today.minus(16), 0.192065), - Score(today.minus(17), 0.147818), - Score(today.minus(18), 0.101148), - Score(today.minus(19), 0.051922)) - - assertEquals(expected, actual) - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/test/ios/org/isoron/DependencyResolver.kt b/uhabits-core-legacy/src/test/ios/org/isoron/DependencyResolver.kt deleted file mode 100644 index 4cd3fd7ed..000000000 --- a/uhabits-core-legacy/src/test/ios/org/isoron/DependencyResolver.kt +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron - -import org.isoron.platform.gui.* -import org.isoron.platform.io.* -import org.isoron.platform.time.* -import org.isoron.uhabits.* -import platform.CoreGraphics.* -import platform.UIKit.* - -actual object DependencyResolver { - actual val ignoreViewTests = true - - actual suspend fun getFileOpener(): FileOpener = IosFileOpener() - - actual fun getDateFormatter(locale: Locale): LocalDateFormatter { - return when (locale) { - Locale.US -> IosLocalDateFormatter("en-US") - Locale.JAPAN -> IosLocalDateFormatter("ja-JP") - } - } - - actual fun createCanvas(width: Int, height: Int): Canvas { - val scale = 2.0 - UIGraphicsBeginImageContext(CGSizeMake(width * scale, height * scale)) - return IosCanvas(width * scale, height * scale, scale = scale) - } - - actual suspend fun getDatabase(): Database { - val log = StandardLog() - val fileOpener = IosFileOpener() - val databaseOpener = IosDatabaseOpener() - - val dbFile = fileOpener.openUserFile("test.sqlite3") - if (dbFile.exists()) dbFile.delete() - val db = databaseOpener.open(dbFile) - db.migrateTo(LOOP_DATABASE_VERSION, fileOpener, log) - return db - } -} \ No newline at end of file diff --git a/uhabits-core-legacy/src/test/ios/org/isoron/IosAsyncTests.kt b/uhabits-core-legacy/src/test/ios/org/isoron/IosAsyncTests.kt deleted file mode 100644 index 711209fc3..000000000 --- a/uhabits-core-legacy/src/test/ios/org/isoron/IosAsyncTests.kt +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron - -import kotlinx.coroutines.* - -/** - * Workaround until Kotlin adds support for testing suspend functions - * https://youtrack.jetbrains.com/issue/KT-22228 - */ -actual fun asyncTest(block: suspend () -> Unit) = runBlocking { block() } diff --git a/uhabits-core-legacy/src/test/js/org/isoron/DependencyResolver.kt b/uhabits-core-legacy/src/test/js/org/isoron/DependencyResolver.kt deleted file mode 100644 index 3a28427e4..000000000 --- a/uhabits-core-legacy/src/test/js/org/isoron/DependencyResolver.kt +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron - -import org.isoron.platform.gui.* -import org.isoron.platform.io.* -import org.isoron.platform.time.* -import org.isoron.uhabits.* -import org.w3c.dom.* -import kotlin.browser.* - -actual object DependencyResolver { - actual val ignoreViewTests = false - - var fileOpener: JsFileOpener? = null - - actual suspend fun getFileOpener(): FileOpener { - if (fileOpener == null) { - val fs = JsFileStorage() - fs.init() - fileOpener = JsFileOpener(fs) - } - return fileOpener!! - } - - actual suspend fun getDatabase(): Database { - val nativeDB = eval("new SQL.Database()") - val db = JsDatabase(nativeDB) - db.migrateTo(LOOP_DATABASE_VERSION, getFileOpener(), StandardLog()) - return db - } - - actual fun getDateFormatter(locale: Locale): LocalDateFormatter { - return when (locale) { - Locale.US -> JsDateFormatter("en-US") - Locale.JAPAN -> JsDateFormatter("ja-JP") - } - } - - actual fun createCanvas(width: Int, height: Int): Canvas { - val element = document.createElement("canvas") as HTMLCanvasElement - element.width = 2 * width - element.height = 2 * height - element.style.width = "${2 * width}px" - element.style.height = "${2 * height}px" - val canvas = JsCanvas(element, 2.0) - canvas.setColor(Color(0xffffff)) - canvas.fillRect(0.0, 0.0, width.toDouble(), height.toDouble()) - return canvas - } -} diff --git a/uhabits-core-legacy/src/test/js/org/isoron/JsAsyncTests.kt b/uhabits-core-legacy/src/test/js/org/isoron/JsAsyncTests.kt deleted file mode 100644 index 6281be452..000000000 --- a/uhabits-core-legacy/src/test/js/org/isoron/JsAsyncTests.kt +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron - -import kotlinx.coroutines.* - -/** - * Workaround until Kotlin adds support for testing suspend functions - * https://youtrack.jetbrains.com/issue/KT-22228 - */ -actual fun asyncTest(block: suspend () -> Unit): dynamic = GlobalScope.promise { block() } diff --git a/uhabits-core-legacy/src/test/jvm/org/isoron/DependencyResolver.kt b/uhabits-core-legacy/src/test/jvm/org/isoron/DependencyResolver.kt deleted file mode 100644 index 9f5d1c093..000000000 --- a/uhabits-core-legacy/src/test/jvm/org/isoron/DependencyResolver.kt +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron - -import org.isoron.platform.gui.* -import org.isoron.platform.io.* -import org.isoron.platform.time.* -import org.isoron.uhabits.* -import java.awt.image.* - -actual object DependencyResolver { - actual val ignoreViewTests = false - - actual suspend fun getFileOpener(): FileOpener = JavaFileOpener() - - actual suspend fun getDatabase(): Database { - val log = StandardLog() - val fileOpener = JavaFileOpener() - val databaseOpener = JavaDatabaseOpener(log) - - val dbFile = fileOpener.openUserFile("test.sqlite3") - if (dbFile.exists()) dbFile.delete() - val db = databaseOpener.open(dbFile) - db.migrateTo(LOOP_DATABASE_VERSION, fileOpener, log) - return db - } - - actual fun getDateFormatter(locale: Locale): LocalDateFormatter { - return when (locale) { - Locale.US -> JavaLocalDateFormatter(java.util.Locale.US) - Locale.JAPAN -> JavaLocalDateFormatter(java.util.Locale.JAPAN) - } - } - - actual fun createCanvas(width: Int, height: Int): Canvas { - val widthPx = width * 2 - val heightPx = height * 2 - val image = BufferedImage(widthPx, - heightPx, - BufferedImage.TYPE_INT_ARGB) - return JavaCanvas(image, pixelScale = 2.0) - } -} diff --git a/uhabits-core-legacy/src/test/jvm/org/isoron/JavaAsyncTests.kt b/uhabits-core-legacy/src/test/jvm/org/isoron/JavaAsyncTests.kt deleted file mode 100644 index 711209fc3..000000000 --- a/uhabits-core-legacy/src/test/jvm/org/isoron/JavaAsyncTests.kt +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron - -import kotlinx.coroutines.* - -/** - * Workaround until Kotlin adds support for testing suspend functions - * https://youtrack.jetbrains.com/issue/KT-22228 - */ -actual fun asyncTest(block: suspend () -> Unit) = runBlocking { block() } diff --git a/uhabits-ios/Application/AppDelegate.swift b/uhabits-ios/Application/AppDelegate.swift deleted file mode 100644 index df6fc7c0f..000000000 --- a/uhabits-ios/Application/AppDelegate.swift +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -import UIKit - -@UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate, BackendListener { - - var window: UIWindow? - var nav: UINavigationController? - let log = StandardLog() - var backend: Backend? - - func application(_ application: UIApplication, - didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { - - backend = Backend(databaseName: "uhabits.db", - databaseOpener: IosDatabaseOpener(), - fileOpener: IosFileOpener(), - localeHelper: IosLocaleHelper(log: log), - log: log, - scope: UIDispatcher()) - - backend?.observable.addListener(listener: self) - backend?.doInit() - - window = UIWindow(frame: UIScreen.main.bounds) - nav = UINavigationController() - window?.backgroundColor = UIColor.white - window?.rootViewController = nav - window?.makeKeyAndVisible() - - return true - } - - func onReady() { - nav?.viewControllers = [MainScreenController(withBackend: backend!)] - } -} diff --git a/uhabits-ios/Application/Assets.xcassets/AppIcon.appiconset/Contents.json b/uhabits-ios/Application/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 9e5fe95b3..000000000 --- a/uhabits-ios/Application/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "images" : [ - { - "idiom" : "iphone", - "size" : "20x20", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "20x20", - "scale" : "3x" - }, - { - "idiom" : "iphone", - "size" : "29x29", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "29x29", - "scale" : "3x" - }, - { - "idiom" : "iphone", - "size" : "40x40", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "40x40", - "scale" : "3x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "loop-120.png", - "scale" : "2x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "loop-180.png", - "scale" : "3x" - }, - { - "idiom" : "ipad", - "size" : "20x20", - "scale" : "1x" - }, - { - "idiom" : "ipad", - "size" : "20x20", - "scale" : "2x" - }, - { - "idiom" : "ipad", - "size" : "29x29", - "scale" : "1x" - }, - { - "idiom" : "ipad", - "size" : "29x29", - "scale" : "2x" - }, - { - "idiom" : "ipad", - "size" : "40x40", - "scale" : "1x" - }, - { - "idiom" : "ipad", - "size" : "40x40", - "scale" : "2x" - }, - { - "idiom" : "ipad", - "size" : "76x76", - "scale" : "1x" - }, - { - "idiom" : "ipad", - "size" : "76x76", - "scale" : "2x" - }, - { - "idiom" : "ipad", - "size" : "83.5x83.5", - "scale" : "2x" - }, - { - "idiom" : "ios-marketing", - "size" : "1024x1024", - "scale" : "1x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/uhabits-ios/Application/Assets.xcassets/AppIcon.appiconset/loop-120.png b/uhabits-ios/Application/Assets.xcassets/AppIcon.appiconset/loop-120.png deleted file mode 100644 index 1fde279335da261b3a7395cae6b571b59d013d7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6481 zcmV-X8LsAuP)rN1gaYiUq)5e8BpeRJq@Xy04Y)Y$m{8z2HYSt}!CGNCy5d6zV7x2s z8p)D&rPbc=*f*U&W_qT(r@N=;*taVyzbfgy_kBITK0d!brf24@_2z#$PT-pr{BHqz z-QvHsBx&R7DSSwZtI!1>jLvC^^elWxRk?2fmL*dI-6jNpkJ$Y{0EBf2I^lE(I`>iZ z9nuYaMCioR5z@sX1U?|>B#tg>NZ^BnRDb}4D11wF;_2b!u5KFv4L-5;<8&=hh3_;# zxdt`_$`?Tg&H!kVpvV9ybU?$YVKX&Q10`Wy4sHPe6@5tbun+TKnHQiEa8jTW-?k}G zs>cB;4(F+WdT%0u8U;mThjSe`BcQ&Ic)}b7>dIg3As*GVc`N(#_BMU`Yd%D?Rfj zTm+)j)!-Hg&~R$G5AeO;h6IpzY-~La&_wgI;5&GeBq-7k=a~T2fQuIta^0RUpkO~T zzI8w|U9>5|sdT{yqsN(_v+Lz5oj2w*DFsk5twxsujTtO)fQq^f9A5+lPzAWCVByj> zaKUA3doEuCH8|s-SP1iTG|+HRq+GNm8qNjN0S)8#gMuHTxm>8zP|acu=a~Z)eTQ^& za8Wu0T?bUuV*!-_idtByd_&N=ovbW?Qauh(X;47)p%0cg;N}8o2$Ju^bU4pw(I)ir z*gIKsHa~}JtOeSb1(yP-=mV^e#t!FE=gE;fS;4^q48CSsa0_mJ_Kwzp(*otdErj`5 zJ)DPkvUqP^l!$snP|O!l(RWBs5ft+UQ~}P^M|dYo0hH=O&9Yr^i9R5vJq_n)F({05 zK}#_|`#V`oQ~L?i0fny%HBbXJ4vGZ;RP-Uy!#>P|C94IOf10EMt(%8=9lkD28&j8o z%XGm7UWcGZ0yPSX1~0h6nCTGBWGMs6!3UqVAwY?dE&~_V<-uYU6!QgC^v&sdA9fO; zVo)RjDh}t7Kt&%+u{anpgC!17QBMt23r_8uOB>P4?Ib{{F618LbPK*7N~_Ytt=4d$ zT2fQYx)8t7EDHr(?H z@g0JB$G>m_e)^yk-(~(FdawFJ&Cx zVsFl~;OI*lpix7yOyB)V6_r_nro0E484U=4Qo+KNtDA7;>L%13VDHfywhdIVwZDSF zQ71LfRKvNd(Z#e9Jq*rGnFgphY+LKUFhu-Bfg9zJE7gsLZN2Y1uWZMM-csV=%8XyI z0f$c3(Kk>*-#`s}U#bzrLX_|5DgqDI6kB7fCAv=%C43i9=p8< zZA~`pP-*2R!XBM=uh;2mZGTHm;=e#fRZYuxqG>e}7>HJBMmqo?;LE z?B;e{v$p7e9+`6R-!Iqjpnk7LNJVgGOlClQqUIAR|W z)1Xl4`d;quWYMV~j1W|m_%FJR52?=i@KPvzPgV%NvtyD~6PX1!h-i>}bW@2d7F*Iq zEjE^SGo33H z2Vd|l35uUSKZC<#b>S*haz3q#gyOLjv;~~iY2)s9wc`FiYscEf zxy*rbkPLzHMUd}gF&7&k2S=iH2zr`r&uZPlecQcWoB?D4;LzwS9A;0G-BR7K)ZNU} z%?K6(&=)MrQc;mXF31 zwza>i%ya#cys;k&I%fg5T-b#B-rtTDo$O695}@F92zn$?qo7a+i=6~$xaUF-RP+H^ zPz1qp>&8}`)0LAnaXh0?`}!-vXQ7qXEj0&Bjc&%QTaw53Zt1|=Ru&{cy;=!*X4A{f zhw~u(bU@hyBfyylMF5oQwngxF@9M-SFYiFkwore+&;p4{hOStu|Z2+=^OYPZ1Ra9z3xq_ap z17GQz#C6{u!3Q54#SiyPV|3cRI+X;pJ6r>w+uVlpy6Ga3sci#*is#8TmtF#ni8ndW z6utZnOA7e=Yr6c#$;xQ?w)U5U+=)1{R7@-AHd}M97|aozixfavZw1@JJ=b@mxsZOf95Mpb9fH1r z3R`2h9E#pd^_iN3@9&<%`yM!n2lq@T>dlq~tm@9;t}9B$;M97GpdjoJ9RZZjE-q;J zjZ4e^kxgw_y|@r-0ZU-kqX>W(j?{3<8*bTJ0gx`ZM1892;46KT`0Gc;+&MZ1WXt<^ z!-ghoJSVRQ8t!_jfU-Kk4bdrpLev#Lytij}PgSzj}BW-`lCboJas1JTZ&GlVXnx3Y_HT{qZuv z$9{Us@5v@c>-fR9w4j*NEV!6FNeta2DENyF4Onp9wy^`YWtk7n1UNcg$EW_|1STsE z9@;&L;Yt1F#HU{lhG!K}s)uT;(Wj~ecReiG1} z$K92+0c5`yU(^gM0^D58&(fVNao84$A@AiXo$-Cc1+6IL&E{Tu*f)POh66{dTu*%D zg=q|phKEW5;KWoNdyfR^LnY#>rPJZ-V%l9pRXn{dBDL^_RmJ_k~&s z#pisR_VTZ9oAP(PqKr;Qo7XlO0R{V!$x{bZ6%=;Jg|JLa1C;&x-0nQqFDn`WrdfUI zSEo>$C47F~yI&lb#_x~U{G!s=r~ToXFH4pSE&v!S*YW+`Q(WFrcJ-PfY+K=*bHqR* zqHYir%o{r`P@@GGfVZ!5PZdlSR|G)+a1DL^GfLkMA^7UnF~72e0Mk_m&mJnr1{$a5 z`Z|C|_s(FdO3ZpOfUXwXy`Kv*aM=JAlWBIc7(HAJc~CGq?}OmtbDPb2ulMh#FHFjV zg~@tb{|p}6I|au}asRUuDA&T^q(DPC%7Q|ryD#Hqf}ic5F{o7#*l#(z==;tbD8hQ4 zb!!1&9!?5$0p7y;5*NjOb1ldd7yr)O7&%(c`Rzp88rX^{O=ztI63VE=?Nb!Y@<6C z@Z8}lpBB&tMH--VIHvmZM=BUEJLqV(ji#S9y*Vj36;PTd4^9nK3>I6pu+lHMnD(J* zHTud$=C{TW0K13EOn!Wx{D5VqL(nr@Z~>@0z>dLcbj7^tFKNr6R6wL}>5v=JA?SQ7 zfQT0xk^l`CBc#8sr{GsmXY{b$L*o^nnv~HdUl8YtMyxZX{5l z+yr7;`GU(PF^1=)=gF-_^Q*qIb%K*qbve**6@`~1L17A%gmn60aJ0r9rZU zP-uaQ^Rsj(%LfWxR|1U)igL|?srmORQy*Ca71OG8sShFq1>-x0m1p%pd0h^U(?uUl zv4V>YGN2jF&l6?GxEY%0orpo(2Zd*}Xg&BUc~EG8GJ0=oun%Bj(^b0nrVbVrxVZB( zKSa;bf@`AU7zMfo_knD8QKkUbfcZJ@f@?{e*@JS_=Tw#OiUbfK2N$J-)0qqYfgBHL zK-DD>VG94jZXeG|a z!I2u1PGepRtyx?YtCB5Ht}JSBN?izw3(qP<)r`w(Xw(h(Oo57NJw3dWC6q@Tw!x-V z1%;p=I$7l^s4{v#@upSHA)uz0C5?b42?`?kVDyX53VxwSX9U2BDF@?aItNDs6$4QT zRN*7ElcfThW_~_4F^lnXJ-P>bcKPZOY#MrkZ!OS>;XDhVVxzBLRzOdT3n_mX5pTWK z1LgajVNfu7XeY~+!$7GXe|~nq+Ve^oCT0QXY{}u`mCeTBqVzaGMP1qG-lz9o;NC=N zdY9-P`n03YcM71a4#MnYX@PQDlrHzN>(GpNh}7thp#85+t`lYwwzh-_40ds|1{S!DsWMH zsJ0qiyORaTfl@uz{7eWQe{sT1VE~!_RMBUyTa4BwJ80ZS02O@;FB_H>a7T>ZO8~q& zK8sz0mDsyv>E>r)4t8Y^s6K52AADRh( zf7>(RUSLr8=Ht{1s5B@fpu=wkt1(PhB+pl62^4Cb z-^mIUG7F&cRrtNX9LDj9n(=895d2X0yVtkjv5%gM%T|{l1DEVPnb$1~`17~6qO^JS5(ILR_ zWF7B+;3!6>>U@6T7bBf7f=uTtLO)3X`{}X(8WAj?x~dl+zp^)051~e*mJouSgERQa zbK`jOw^Nv|5-B+LMbz7xZM=`O!Xtairsaez=zBe!H z$m6`;0^YEsh|5=(uyJJz3OOq=SRnYpw68vW3iodxYb;QOk4V6N@{EAWdVh1?#t%Mx z4mPeVC58+HkionHfI|pIChM>*pqRH%%voqI*r5hb^5=Z~yb0g{_`%L`eDSGK&aobJ zG&q%y=%A3CCaEhhcMGoatb;oq`XlzeS~mW16PeNZ(zbw{9lX!m7M6D8vA8{t&Xycn zigu9B;{VD@5_3GbkG?pGFFth=+SPgJC1PPk)Vj%n%lwXX>PEXEBBWKV&iOSz0N~V2 z9Uu7aAa)#@N(GrU|L-6&5Pg^_fU-u1<%f5VsW!xisPh-$cd1U5^aon|-HT9p31aHBd3FN|*RZ1vsd1w(~O~ zz`ypLzy}@}!jV%oIL^Z9&2+xq_i6=y`kljg;=m*l55*95Olq=|j ztMJyMjZa+Fi@)5|jeO3EwOyE{(N%J}=HOe~PT{-Hj-kdx9kf=7|JyOQc_D$gD`=)S= zdA2HZpmW^&8wS|TG8$ZzE*s9*E^Wd)Uf+sM=aq2r$`U%7!%zFMhse&ck59~E$DwKL z8Z6_PgVPu~Sqt)`@8SS82506w>2Tgqz%Mn(MG9g zqqS&byi&(>gO`bTQ$AE{z=x~}yt1E+%eL(;QZ_=4I0j+ zy_}pTfT?8)RP><$rv#c=FHZ)P^P%efI1PqqnQ0%d5!0%GYJ(y=SQ-jc^q~SO@qJnX z2K3+>`Ltvl&>^5=S`|>GkLX}IZ2?n@Ge4`rB?Kz^Pz~oQps|C(toO6M{Imy5P2Y0` zjrM+(&S@H;ieQ=V`I$}ongL8L);z2k=I3pfEbVa4=mf8!9?V*!PphaNzvoJ{7{j?q zFMmw}rZ%rYMc+u^BSJSBwqMhLsh!D}CC>=J)K2?tPZdzn2cw@+fC2rmz2LV!Rk~(= zKH~sWTTquJ=kT=Zj0H?>PWQ3rbC>K)9inCCH+o24xZ9poj~dSZA24Idwms(riIj9VqZ}LoA*3J>h+IWkUI+NZ{<}zsfOpAZ zq9?!yp}U-l9trS5lUPLo-*3ApziT;=qp#9tzJrbe*j|yv^NSfxNxF z`D~r+-7U>sUhz4**<|cXKtQ1TAQgF8J)g|IEZ-zH{jAN7qbG|)Uk58I2P?@-V?&B7 zx#bC|9IRv*yKb2qYa?sFBW=_6w;ewmor+}}lqgA#OFDuZ)aH44?+iAHL)C2iYx79o zy~ig+(v_80(%MxIN}gZ@13xuUd0&3#eelEo#jBST$yBZ#2mS}K7YmE6A`f25yByiX zhf(U}R^5`iyh)e&F28Am+lv0y-QC8-wy0+LWfQi6rjKP^L|8rp1?vajuknpqr}<17 z6ohSJ4U=4)MT{!j$tG5!;QlD}-quu0C+jcQYPK*aB=&t1vxZ+!c;sl{Q*g1MPZ$vx ztZ@%=OywJ^lV7jVTiQ{Yc>2OEc&e~gmTb?Oz$LvU{f>z^@hIV3C@PZ&``g4R za;k_)XeMH$+jgN7{wRZZA+O#q%=|8@>ZdxcPWX3}njPZ>AH?vmP1p;SymOmzA$QWR zaEnQmx)bg}L66eNB8Y>E$?Q^(lG)}J3BP|zd%=#HbknmBtl56c*ty~MwRI5V-Xv!~ zHj_IU!eTi7x-|dH1sd_8lOn4?Fu92Y6Kqgck4+&(OQZB-rLokOpWl)r-Gv;@>?KHI znH>nQ>|o9Dk)wKeuNmX}VFHg$P8`lnCj7}v0Ish7F;1>^mU&JOI)Y>0hu7@k(j&M7 zpsL3~2D@FhZfP`6eVe@FVxJ=#a}-pd6t`;sO6P+TtRY*FN+bbFWS1!(*)mJ(pmD?wmb3h!@08U|#5>NZ z0-6V5213WNt1)kQut zVQ|a6jnTI%tm8Aeo>Id$L2w#rb`%QS;bz=boUu)WSz&dk@ua|A%8S7@#QUe`uIOT_ z+t|aK6)Y1YL;E~>O#WwqZqBF=C4>?C?&M8ha|q@U-v9h-xyw|AONa5M(L5o4_OLl1 zOmXlVP7H;5<3e*)YiQTU}_6oJ<9-!u2)A_x= zf_T@4<;5CCmH`7SLk-HHd9|_`1BfwBl@NpK0WOHmAx@JtFMNv7>nZA_DaHv%2-*}K zIs2*y%d#|fkyAg!jPrzT9dLGC@w@ZQN1l0@(HXrsi;ODwnOuG08=Pt;DGwZFGAJmL zxFsRKYTRY;ei(562`opYK%I1%1fvTxu(vv-9C8hZ$Md}3vGzvk`l4VSLgZNwZvmN} zJuT3)7jrx9QzyLe3nGhVtey@gZ<`;9*!+U;_*2>LQ9U`DUPBRe1`)@qo`sP+;p`+O zo+=sT*OoCg`IaVr#!+~QYn`kMw!^gxf(>|;>VFYuR5jr_@b!PHSa=#qjufdG#yufV zlMs)bD$q@oD|QVr;8H>k;Q+(_Ga%+RV8HM&HW&jWgI5hXE?q+OU$oGJjykAQnO`I3 zq3|kwA{47L`(UkXg%7aJHmo5}BgwGEZWggT7qkB*L(Vw*bD?(ld!vssLlRMtH&6;7 z9UY;GpP#S(WDV#vh$BZLjw2w7# zq)>+cGb;>%z5M^@btaJ4R+5(Q?R37t!R=7jmhvg?oSiS+88Cs$nuo z`*%cEWE>}^BU7=szIV@*u`?c)#vWcCVdNe*r8koKDaHw8gvkaB2sfy%MO5g;<7RS) z*H~?n9tAmWF=5haKBs`sNAjkS$6xT~#{Gd(ai6pvA>PM#J*5K5;bJEMZyyv!*@ zkK3G*S!sD1>j~6IT8eGb z8VSZ0{hc|att{vj@ey&i%*;yO@^OKB0Ws)km>@p_F9Y=`UioBjlI`j!`C8PyhD?cr zai+Z^1k=jxv(n4G6T8tr;Z~SVmQm;@|2L|7Mj3YWUPsb`pA7OD!Sy3IVQ`e5-w!uz zg;TBWxX;bEFR5SPqYQZ>T~*x`Iv)0nZwL&3Z5^l_5VV*tqlSJ^<0EP}VQAOnTgkZJ zCwagiS7tQKoZ-0C^aSvlwPK_KI`2F%8J$crFp{CLgX#{HS=!Rk5-yD>iadywB zP+!=iP=h|US2?3^m7LMf;se2UVzeJwlanQX)%;Afs$@^WpNg5fikL_*Ll>Vq*_1>+ z$X%%V_;OTLd|!GLAFZmQWl0oYN+NH*i2DGFnYnVm$vO`AB$i54cQZ&FDDo0_miu*s z^`xW?_&skmUHzoylWq+YAj}rm>7FuqqN=kPV8MU%{)*94?!5$Js?oq@xRFt z>JUSeZ7d^J9f2U5iQw)k);h36Jz_Y0kd_xfJ_8%$z>g+gL#d~>Y{xuk_d0Q@oPI4C z4iX%7C=OlqbYLzs+f}|5&r+H@b>GgZELsDB&KQRhk!R&N;Ee7<(`jGdg+aq2B#7V| zit%QvCFkMk-)9X_C!jxSA{5JY^=u#+StVHNj0kP-xqNeQ`N#Ej2BNFe8@&_bO+u?H75e8kZD0VWIZIi$S|OBJs<9N4Qpuo_)K%hw#T|$B*>Jx zd?h%6bbnF5>qp{Qp&lcaH*SkLcxtG-Ez`kF>5@^po_{TQF9`lIQuah-n*a0Uu0LLr zg00C|7dhw~3&wn?Y6G`+`A|4)qhOoRv5c(g<_h|lg>%U;($2>!ka-iFbE>D+9F7v%6PUA5TtT#v2CJ14!@Bwo`pUp-U{7Q_G2A zY|66*vT|dh?+{QtYl}kdtz%*NcOfVAhV~EqYL<2VF^O`MO$4Je-K#O-CKorvsre=1 z9l&y#7h1I@j)I+IELwKxF#IOEJ&PT$C}qa*JQ3LmcRkUY15fs^J#T%~7pC)+fOw1M zd-Jya{w5`x@f)#wkWj_MIFp!68QONs*vH_6=aat7$C1xBHnyeJLBZMh&^eRZa4ten z)r-YY!zw;f&mwf%dBrsC(ZM(VJW9eD*H3ZCtUArxUi(X}s4)f0XX9VrII}36a=alm zMn^rFK&udlm6vX?mOUF{mCV;qWh}V4q}ToMSfm<%r?118$j&*Aks@8?#&9fex822F#cVQs^x_%z8vT6dw_VDr$vZl$~HQH}BMhYR!A zgtKw!g9CmUJ6q}m-qKHbQ-A!Xkrlz_23Z(VraI&MufBD7~sF&&Nc zcY^jLZ_?bg&tod?r~2dLh-TPN37j5`kOzV1Q%a3e%E46 zZ^}yj9!(5anc3$G`%*#>f8qWvS)uqHOTgi2NjO5~FxOq}u0874GSB(jjre`6y(YYwa(LzqUU}=OASOV{V~r9{Pl5`d9Dr4aMVxbTuHWmV zWA0U8bipdMjL7=QS3H?n^mT*q#|YbK>_OBBI)Qpp!UA=ui^(yeW_&A9MeI*-bp|Xl zzIq=Ke0>M0OAkT1_A;VvPwGO%Wi6yJ}bTB${JT1?FL*;E`O&7); z#SyOh_cX`=^MTxfR=Id|a&S%zRLQW@_g#d)m&bs^a0%%_q{VsthQ9n>jw8vuCjd1_ zUQ@GROuei{_J4m5pTXwOlk#FSOuFD_46(!jAS4sZ83%5=5_t+7>55AZPyyf4^)Hth zBb+N02gndlHEOftcDqtFBPDJ-lUa!2EGBO12^OgNu3yg8z zElhB}>n+n&;Gk`KTj4pP zzJRYih?`(_=~=9UVih=!b|jxWA_%nt3UxcS9#xvr7+XI3h`^mHJg|^i3xRR%M9&O;xxsQ zBYo0J%l|O$Kd0&*LBMi%Lo`Us++azs!U3mBW7Quzqu0}+S7+n{;8$dOA!!xMDJB*k za1Byo)!bKGJwn2Rsu*e z*U#Z;LDc*rJPb;);l&m}EE3Farx}(S_+5N2~QoTY(ic#m}=c zmwLJs%jgGWC#5}NO`M*SaCl_Ql=QH18oYG9c&~qy>&%tn=)I3i*smV7kch&;QmV=# zxwBrO(nRs2It|j3n5{X~ShpE&eW%q{D4oFR~!7g_#Q;oM0*}=J-=Sll6ZzQ|D<%2!jT{xn7LNF7a_gG z9fEH;L~BkUmLL6_@s?JS70`!cQV#*FjF|>e-IjG@-I`GT6NHqi6 zUX=QT{udD$`yBv!koS&57l?KXwJ)2f0HJ}~6EDO24&_RsGn1UN;Fmp8GXtrHpN|_) zZOf(SpY>^Y=XAzrYeWe9szWY?SXeq5Sjbct9`{jFIR2yBv=09mWT!{byJK?*??q-h zj*|guc5->}2?a{6+{SzNP2l0)wCEr8HYxxcY+bn%p=g~|grw#>`~SYe&$${Pv@UQC zl^8JLf`;~r+W6HH|Jt|H;xA-pbM>189 zNAiW6i#}{nsYvVJ4i0)2vYQ3{=h3gs zFZ4TV2J}bi?yANVvhqZzyzf6r8`^z5b(GQZEuVEWgG_h`5VON&A5KITt%X{TM{&0u0o~&B`&-Cy zQZX)Aum--($vfCul|ayr=nf7WX`!mI1>Hgv! zpB=OCpeHZX|DvgAk#*FW8+ib7os%kh*2F<4@UpojDt4%~2bmzFD*qf18v=0L8DieR zHa7?!5ee3Uch|csM~fKaSaN2S8M9^;qEvZ%9RF?-T9>oxKXQsMXn@)^Tn3xGfGWfX4;`g5XmcBxhc1W#=bS2;Ih;|mu$x2O$E5>tR#NwR1LZ{ZAkz7_L0p}nb zHOXC`zB_WDl+r_g9xu((KVrEcNw1Tj)%LvWwYYVm-{|&DmXI9li=1DCqCPUj0q&L< zJoF03YN>){T&1?@>z8Gh9|ZIHxUt&D2<=NgT#F}#uaI}5z8`ARx|E!)LWZBz-iF+3 zb)Bc6BE+_TB;lyaQh%Y=@$*cu9H`NmS;>Te&?u)YVy3~cEp3s(!Khuq5)vU1h>bXq z6drOs(sD562lir}aM1)Va))hEcSUFXSPN?&=F=JM_TEa3=%n#S ziE>=GSvcg9$&qyo1~t90(Z5M&JQRQ1NSxewJ228W;-Zh{$Sj4?yQ#Wz;`j7o1$qp; znll{IrLlhGjT>8CW0LV&1)sn7tYyqd9q42Oe+HYe3&eS$itLJ-iLt#eqB9|(|RNF z@MyRM*=I0mQo4`xSaQci!#Ii=FJ7F+yrYpI+oo+{nc(i*|4+LiHd=yCeSjkC8SL0R zaXXT7#tjXZ@QTWFNA$tKz{a+45t4fbee-7f>CFi^jspP(MfUGrEKCW`5tK)&iP`49 zf^b5dcnRCjCt}#A`At66eZi;*i-5NC^YYjRpTWu_4+|417qqA+O^f=ZLi&>UuRj2~ zYI65$>eQ?(C@O$>;m_A33qFHrBeFy^Xr{r2&iVJTtZ`dAxSr^6)y6vAndrXcee}%P z^>(2W7NS`3l>Bd~5%=FzVs6o=FZ%0(`PQE|72bD4Z>K5Hkl~ddu_>29N2T!$U#ljr zw{3(VQEK^bzPTN~P=&Dr!U8*z2bzL+=^Hdbb*!@PY$n0<#!aXeLL}szQ*uVzwM9;Ddym z`cys)Vj{c}w^l%ugTd0xMTHOdab zfK(_a$Y>Mg(tn$;YAPs0?{CR;o41iz?nNR6a`DL1o;`f7_`Oof=@yT5;7Z@}(bL{! z?R=pbc5vq~f(#JIDKIMTJ`el>`@lXi(a&;Uc?RbW{7=I5EX|;y9w0*^CPbKCbXm%B zy$-W(uoPMmv$TCStljvY1uM%ln*f10a6(Klm06+Vps0gSL+Nxhvqf}O_ip|4z#+eV zh{{j~`{``K?zoPAp?!Buo-Xm=R4-hE{QijV-?VUhTP4(cvyQs z4kus6kau>BLm{7V(MX^>H+0I>+D`W~?8x!y@aMFV$H6I6QPFTzkygS+RaWS!Hkoo( z3)zO-Db6ijd+I`VXlf$seRrY2^pWr;l~NKD1>xMqwFG9H&Jyp21KPbI2vYEnyhu9q_ z_Rf?+hMy|&f(PSFeG2o;dBeOA`@!X|lpkk~5%8QNVc!Xw_&06{BYGo?NT+Aj7iOI8 zOnLI@49_%BNq4|ClN%Kq@ETiiOJ-O5&k|WYd1>(zKtAj##4{RIzN9+@8VxE`Rc1r9 z?fYD%k)RnK)=?~0ugtTl3e)YJwz-Nv*vDJwd5b7 zA=VNve_`D~|2_PLG8kg+Y^MfQe{xa=`m4L28KnD_hM-=MxEEN6ai zPyBf-hKB+8QTnF`e&s6W;(gQpntHHdH?^Nl*S}g`I+_^glCQ_m0IG>=_*5b5Ar&2e z^baKhD{yQ&4@p+q){Z= zcFwoH2czLU{xxn1=mvzae&Gq`=J;2sZW$ zL)9<8WTzF@+3J!2bWCKwlUqC}#srb*{-Hmft#dq%i>Av{6P#vY z24wBh*oG)giPVRTSQX*A5U_-=8PPiOm``f4=fT)uufo;H?|>aq7j3y8(gvvBNrx=N zz#+(}E_(W9dtDegPn{&=yCS9YFVgL%O_<`5L@mr5Qx8^oxc>;h}uK(}&qJ=-_> zQ|4wl89{>onz&Au2c;vYmaWaYJeh_fdgIFkC_|uSI)!qmxat;0=XhtqoMZjJE$Q*OyO)DXGD&5b2cI>PMVe~ zsjEaAFUNAQB|Fc>qyxNKeD5^JEaba#gI{lQJ_7I-g*$`kt_+n#A>|?eH_iOdP@Qai zJ1Nz`({wgY&yP8jMFbgyBeV{fNPxlzyr&B5bnN)}+_pn&#d|0|J8ii^wNqsd3*c3$ zRr^g9b6v|w_`%SYrI4q?EUQ$>tjMiV@BQ*#1@zimRvxUy3vP!6j&Qb*O20?)te$ta z-xOUpq4cGyk9_uBXvO0U&N>q!fx-o0gdj1*utd2{RHcf!aZ6~VY&Y_RzzYk0~}CL&as0_eFEEn_%{o%N5)1bD}?l<#Yg{gRqNsoaFfWxj(6Xv!nk}Gw3eY(# zpbEk;grFpQ*7lY?E8S#j)O`lON+X@mHcrp^(9A$2$KG`Ujn@AdBI{v-A^+#~-8$(< z+06k5Wn7sbQUb(SZvX2JW<%+K{;`7-RyG=4;7S@_?ab2ab1L5bxcd5)>*X0E@!@8* z$qG4dm_DuY7@~k`B0CE)61dtYwcyulwlMP8a+6Y~9=bB3#J)w*hndUOU)38N$zyWg zzMIhJuY-!+B0{a&0sTbXb)x+Mt0dH0Q__$%v%g)m2%m#j(aH!a)p~8iLk)mpX&>9x z@V^+3)-vs&k)^bP*d4Ar2KYfD`*zYdDm-gLa{leX4ZQI}+`BpG=)+-?c};juE=zIz zn9P%GqM-OTbFP5%_p**Ab#i3p`d~*+8(g$%A6te0VXrqIqE?*vL&458BWpXPL-^|i zte$E+HyOqtaSF6oSs{%V`DEiY2GE@H)n9+&mCl6d95rrF;N9$c4!I1`B3#8Vv3=BK z?;|UVCDZKznj{FijR@p)?Hzs8%$SL{GJ9|N3W$%UF*Ajc`xSNrF0IsWz4Dw zogR0eHKsvKw+r}g;0`Uw1RL>z3sIFPQ# zTi-qhNKIb!zf%#usNgs@hCI*F!ab&c%WstaME5=XzDQ~C*8NC_X5Z~=HE?E3;G6wB zUZjVY8f5-0huLbxN5O`?pFeNaTK{BnhiZ@`a`8Z{hc=7S5jj#Kdv^+>i}isrWRPn~ z#^}QQc8ew8OyFkaYzQw35m~7cH)VcrrJZ@a$>t9ybU~Oo3qCO|q9!lx-xQU>_cDr+ z9~l+iX5tDD6^p0ozO%GD-+z>r6Q`4Gk2jM|C5f!}q-fY6^tcj>Y@2ne0gAzKtHFvV zW4g%4&D+AcA><$>cDttYG?lBE& z#L9Db@h>K$UtRt99{CLOk!ZvOl_h}=ijx*e?VFYjYPY~M_5W*UjBW8n_~*U*X80tB zvj)!$=qmhrE#$Kk{vf1#9Ra9(^ zvZ=(Jh^JE!mcpMl_q#SYLY- zPcBiuSUu7H^ScrEvTV&fisQDoy7r3pK?IU`5x-k-Muj}|E`cXRX>9P@5@P!O{s&Sq z39I_GE*|*EZ*KYegAecG62h71;0mY7(P|eXy!JH~<|krKn2>a>t67Cb_Z7UrrJt>W z?iK=C$&5aKrzw`x5F090PproHi>It05tQj)wYt38&I_1RN5L@$hd;#6R}X!Jc3_a3 zcbDv5UPY83lW=PeZkqRwYk$L)86R2R7<^`W5Zr9+xCHKaO{m54RMJ#6{hQ@?^T-ri zw^m>-K_aj)hOwiL-ak&HK&#u>YX1$(AG^QKrk-JfCp``XEG?TP&{-j#4K+1eKr(m0 z;U6z!eU)>TV9j{U{*Aj&T4ddqtY{A|2470}m-;S2%o|!yG$&~yRIH>VUUvKMKaJ}D zr6lb$ECk_!dPJ}QLs9iq%>>N;o375D5kp)3?DkFDacw?6-lqifivp#L=5E=()1#z6 zUQf$Puyp(ZNL7Ac_rtq0+Auu~lE~xZhmp8y4r|7XHu3Z2g9B;0Ps$>ki7MYfqA{g{STi#O&4NKf2u^> zFHyrWBwnUve4y;b+NXQelV@)TK3??1$1gV{)|G`Df%-7R*P@*sM=-2Y!dH+JXuyAS zTCe7M77@I$Dd^o*yw4#9=%(}y*`3}wA1FswfHA1i!na$B&BRzP$&EX>AWN9jGx@-Q zx6lQ@b!y|lE;FXuG<}Zc4ZIE6fE#57ZwZOF!yW1Jv2Apccd>jB@X}M7(M=lMW6xvw zWPLXqdZ{terF)1-5Swenop_1tc&t+*@H>*32D+knZ)NkLP}6S0Gl%bD%$uH%A^u)* zUUv{1kN)@X{VI@Q)^vR1%O(;-=X)~Fjec^R@4V`qX$+TQ|5A-7@_${4{0k5E&&lo_ z9f){dI!5O-a93Fx9Pf4-T_)UeB}NWYYmTWF@`wv>yY*?~6W%8~6X}=rRp8CXd#s)o zzNcQP<6-?Jb~EkXbo1xKOE;S(Vbk(tHK;)npI4-SKEWFbFX-pOgW>#8CPTMDmG>U6 z=x;vm95VQ|vQWg9*;W{)A07R9W?q;%t<-$&`K{JC{lndduN)SILYb9#=A0?=c!@On zBUlxEcg6d;2w-ZLG1cS1xI(&)cM#y3%I7n&T|e;YlG6X4pVMfQ;D6O){7?lG5S;G> zSXgb^Q!kbZvpS~Y2!qnd3%t39MH_mMh^UX*y7y~&V%bsM0x(6(UrFrDGv=qxl=x3S zP-_Tv=#bT}Dl>@3CEd!>-NYqzKhOxGB(c?&O98)wbam(6z9`Zj7V&*_xsYzqUAC>T z^+Ycg1toH9Kh3g9Cu=Mtg+f%eN=JInaqnO2& zHc)pIfWZypA^=~j`EAkTg_RKF9(-)CKb|`J&!^oY5Z!d&-1&ENg6+TJfXZnVwe=!5yaqxV zxDo7RnJ%6>nqVm}61;btcRL|zV?_|`L9A0^stVckegI*VJcUe0Nr62g|2>7BJO+R^ zCof5bd$>qO?;GAtD+s@$u)zPVb#FnYcMvj6!fuA5TsVz+QW`KE{l&_WI0^sPwMFC*b`neDdUatT3(=a44$rjF6*2U FngDC>%KBvGGY& z!zYe~{yoJmF5(t;>C+r%uQ3t)v;F0Dmx4phj6fX>4U0T?uUb{+t94Ip{pDr9%4b`} zPrjZJw)f7OV|P?|RvqMhrk2Rre(#yuLt#EyAlcD=#`lo6OjOKSUb|Oje`2GnCtt|6 sJ-g=BUthnAKdL{ui$;Hr02$1{5TE)r;Av+s&qWZ&)78&qol`;+0Ic^=2><{9 diff --git a/uhabits-ios/Application/BridgingHeader.h b/uhabits-ios/Application/BridgingHeader.h deleted file mode 100644 index 7032ff4f2..000000000 --- a/uhabits-ios/Application/BridgingHeader.h +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -#import "LoopHabitTracker.h" diff --git a/uhabits-ios/Application/Frontend/AboutScreenController.swift b/uhabits-ios/Application/Frontend/AboutScreenController.swift deleted file mode 100644 index f4cbe355b..000000000 --- a/uhabits-ios/Application/Frontend/AboutScreenController.swift +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -import UIKit - -class AboutScreenController : UITableViewController { -} diff --git a/uhabits-ios/Application/Frontend/DetailScreenController.swift b/uhabits-ios/Application/Frontend/DetailScreenController.swift deleted file mode 100644 index c9473c337..000000000 --- a/uhabits-ios/Application/Frontend/DetailScreenController.swift +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -import UIKit - -class DetailScreenController : UITableViewController { - - let theme: Theme - let habit: Habit - let color: Color - var cells = [UITableViewCell]() - - required init?(coder aDecoder: NSCoder) { - fatalError() - } - - init(habit: Habit, backend: Backend) { - self.theme = backend.theme - self.habit = habit - self.color = theme.color(paletteIndex: self.habit.color.index) - super.init(style: .grouped) - } - - override func viewDidLoad() { - self.title = habit.name - self.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .edit, - target: self, - action: #selector(self.onEditHabitClicked)) - cells.append(buildBarChartCell()) - cells.append(buildHistoryChartCell()) - } - - func buildBarChartCell() -> UITableViewCell { - let today = LocalDate(year: 2019, month: 3, day: 15) - let axis = (0...365).map { today.minus(days: $0) } - let component = BarChart(theme: theme, - dateFormatter: IosLocalDateFormatter()) - component.axis = axis - let cell = UITableViewCell() - let view = ComponentView(frame: cell.frame, component: component) - for k in 0...0 { - var series = [KotlinDouble]() - for _ in 1...365 { - series.append(KotlinDouble(value: Double.random(in: 0...5000))) - } - component.series.add(series) - let color = (self.habit.color.index + Int32(k * 3)) % 16 - component.colors.add(theme.color(paletteIndex: color)) - } - view.autoresizingMask = [.flexibleWidth, .flexibleHeight] - cell.contentView.addSubview(view) - return cell - } - - func buildHistoryChartCell() -> UITableViewCell { - let component = CalendarChart(today: LocalDate(year: 2019, month: 3, day: 15), - color: color, - theme: theme, - dateFormatter: IosLocalDateFormatter()) - let cell = UITableViewCell() - let view = ComponentView(frame: cell.frame, component: component) - var series = [KotlinDouble]() - for _ in 1...365 { - series.append(KotlinDouble(value: Double.random(in: 0...1))) - } - component.series = series - view.autoresizingMask = [.flexibleWidth, .flexibleHeight] - cell.contentView.addSubview(view) - return cell - } - - override func viewWillAppear(_ animated: Bool) { - super.viewWillAppear(animated) - self.navigationController?.navigationBar.barStyle = .blackOpaque - self.navigationController?.navigationBar.barTintColor = color.uicolor - self.navigationController?.navigationBar.tintColor = .white - self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white] - } - - override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - return 1 - } - - override func numberOfSections(in tableView: UITableView) -> Int { - return cells.count - } - - override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - return cells[indexPath.section] - } - - @objc func onEditHabitClicked() { - self.navigationController?.pushViewController(EditHabitController(), animated: true) - } - - override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { - return 200 - } -} diff --git a/uhabits-ios/Application/Frontend/EditHabitController.swift b/uhabits-ios/Application/Frontend/EditHabitController.swift deleted file mode 100644 index 5f7d5fc4e..000000000 --- a/uhabits-ios/Application/Frontend/EditHabitController.swift +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -import UIKit - -class EditHabitTableViewController: NSObject, UITableViewDataSource, UITableViewDelegate { - func disclosure(title: String, subtitle: String) -> UITableViewCell { - let cell = UITableViewCell(style: .value1, reuseIdentifier: nil) - cell.textLabel?.text = title - cell.detailTextLabel?.text = subtitle - cell.accessoryType = .disclosureIndicator - return cell - } - - func input(title: String) -> UITableViewCell { - let cell = UITableViewCell() - let field = UITextField(frame: cell.bounds.insetBy(dx: 20, dy: 0)) - field.placeholder = title - field.autoresizingMask = [UIView.AutoresizingMask.flexibleWidth, - UIView.AutoresizingMask.flexibleHeight] - cell.contentView.addSubview(field) - return cell - } - - var primary = [UITableViewCell]() - var secondary = [UITableViewCell]() - var parentController: EditHabitController - - init(withParentController parentController: EditHabitController) { - self.parentController = parentController - super.init() - primary.append(input(title: "Name")) - primary.append(input(title: "Question (e.g. Did you wake up early today?)")) - secondary.append(disclosure(title: "Color", subtitle: "Blue")) - secondary.append(disclosure(title: "Repeat", subtitle: "Daily")) - secondary.append(disclosure(title: "Reminder", subtitle: "Disabled")) - } - - func numberOfSections(in tableView: UITableView) -> Int { - return 2 - } - - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - return section == 0 ? primary.count : secondary.count - } - - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - return indexPath.section == 0 ? primary[indexPath.item] : secondary[indexPath.item] - } - -// func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { -// let alert = UIAlertController(title: "Hello", message: "You selected something", preferredStyle: .alert) -// parentController.present(alert, animated: true) -// } -} - -class EditHabitController: UIViewController { - override func viewWillAppear(_ animated: Bool) { - super.viewWillAppear(animated) - let bounds = UIScreen.main.bounds - let tableController = EditHabitTableViewController(withParentController: self) - let table = UITableView(frame: bounds, style: .grouped) - table.dataSource = tableController - table.delegate = tableController - self.view = table - } - - override func viewDidLoad() { - self.title = "Edit Habit" - } -} diff --git a/uhabits-ios/Application/Frontend/MainScreenController.swift b/uhabits-ios/Application/Frontend/MainScreenController.swift deleted file mode 100644 index 7c4d9136d..000000000 --- a/uhabits-ios/Application/Frontend/MainScreenController.swift +++ /dev/null @@ -1,271 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -import UIKit - -class MainScreenCell : UITableViewCell { - var ring = ComponentView(frame: CGRect(), component: nil) - var label = UILabel() - var buttons: [ComponentView] = [] - - override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { - super.init(style: .default, reuseIdentifier: reuseIdentifier) - } - required init?(coder aDecoder: NSCoder) { - fatalError() - } - - func update(habit: Habit, checkmarks: [Checkmark], score: Score, theme: Theme, nButtons: Int) { - if buttons.count != nButtons { - buttons.removeAll() - for v in contentView.subviews { v.removeFromSuperview() } - - let size = CGFloat(theme.checkmarkButtonSize) - let stack = UIStackView(frame: contentView.frame) - stack.autoresizingMask = [.flexibleWidth, .flexibleHeight] - stack.axis = .horizontal - stack.distribution = .fill - stack.alignment = .center - contentView.addSubview(stack) - - ring.backgroundColor = .white - ring.widthAnchor.constraint(equalToConstant: size * 0.75).isActive = true - ring.heightAnchor.constraint(equalToConstant: size).isActive = true - stack.addArrangedSubview(ring) - - label.backgroundColor = .white - label.heightAnchor.constraint(equalToConstant: size).isActive = true - stack.addArrangedSubview(label) - - for _ in 1...nButtons { - let btn = ComponentView(frame: frame, component: nil) - btn.backgroundColor = .white - btn.widthAnchor.constraint(equalToConstant: size).isActive = true - btn.heightAnchor.constraint(equalToConstant: size).isActive = true - buttons.append(btn) - stack.addArrangedSubview(btn) - } - } - - var color = theme.color(paletteIndex: habit.color.index) - if habit.isArchived { color = theme.mediumContrastTextColor } - label.text = habit.name - label.textColor = color.uicolor - ring.component = Ring(color: color, - percentage: score.value, - thickness: 2.5, - radius: 7, - theme: theme, - label: false) - ring.setNeedsDisplay() - - for i in 0.. Int { - return data?.habits.count ?? 0 - } - - override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! MainScreenCell - let habit = data!.habits[indexPath.row] - cell.update(habit: habit, - checkmarks: data!.checkmarks[habit]!, - score: data!.scores[habit]!, - theme: theme, - nButtons: nButtons) - return cell - } - - override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { - let component = HabitListHeader(today: LocalDate(year: 2019, month: 3, day: 24), - nButtons: Int32(nButtons), - theme: theme, - fmt: IosLocalDateFormatter()) - return ComponentView(frame: CGRect(x: 0, y: 0, width: 100, height: CGFloat(theme.checkmarkButtonSize)), - component: component) - } - - override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { - return CGFloat(theme.checkmarkButtonSize) - } - - override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { - return CGFloat(theme.checkmarkButtonSize) + 3 - } - - override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - let habit = data!.habits[indexPath.row] - self.navigationController?.pushViewController(DetailScreenController(habit: habit, backend: backend), animated: true) - } - - override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { - computeNumberOfButtons(Double(size.width)) - reload() - } - - @objc func onCreateHabitClicked() { - self.navigationController?.pushViewController(EditHabitController(), animated: true) - } - - @objc func onMoreActionsClicked() { - let alert = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet) - - if isThereAnyArchivedHabit() { - if preferences.showArchived { - alert.addAction(UIAlertAction(title: strings.hide_archived, style: .default) { - (action: UIAlertAction) -> Void in - self.preferences.showArchived = false - self.dataSource.requestData() - }) - } else { - alert.addAction(UIAlertAction(title: strings.show_archived, style: .default) { - (action: UIAlertAction) -> Void in - self.preferences.showArchived = true - self.dataSource.requestData() - }) - } - } - - if preferences.showCompleted { - alert.addAction(UIAlertAction(title: strings.hide_completed, style: .default) { - (action: UIAlertAction) -> Void in - self.preferences.showCompleted = false - self.dataSource.requestData() - }) - } else { - alert.addAction(UIAlertAction(title: strings.show_completed, style: .default) { - (action: UIAlertAction) -> Void in - self.preferences.showCompleted = true - self.dataSource.requestData() - }) - } - - if preferences.nightMode { - alert.addAction(UIAlertAction(title: strings.day_mode, style: .default) { - (action: UIAlertAction) -> Void in - self.preferences.nightMode = false - }) - } else { - alert.addAction(UIAlertAction(title: strings.night_mode, style: .default) { - (action: UIAlertAction) -> Void in - self.preferences.nightMode = true - }) - } - - alert.addAction(UIAlertAction(title: strings.help, style: .default) { - (action: UIAlertAction) -> Void in - if let link = URL(string: "http://loophabits.org/faq") { - UIApplication.shared.open(link) - } - }) - alert.addAction(UIAlertAction(title: strings.about, style: .default) { - (action: UIAlertAction) -> Void in - self.navigationController?.pushViewController(AboutScreenController(), animated: true) - }) - alert.addAction(UIAlertAction(title: strings.cancel, style: .cancel) { - (action: UIAlertAction) -> Void in - // Do nothing - }) - present(alert, animated: true, completion: nil) - } - - func onDataChanged(newData: MainScreenDataSource.Data) { - data = newData - reload() - } - - func computeNumberOfButtons(_ width: Double) { - nButtons = Int((width - 220) / theme.checkmarkButtonSize) - nButtons = max(nButtons, 3) - nButtons = min(nButtons, Int(dataSource.maxNumberOfButtons)) - } - - func reload() { - let sections = NSIndexSet(indexesIn: NSMakeRange(0, self.tableView.numberOfSections)) - tableView.reloadSections(sections as IndexSet, with: .automatic) - } - - func isThereAnyArchivedHabit() -> Bool { - return data!.habits.filter({ $0.isArchived }).count > 0 - } -} diff --git a/uhabits-ios/Application/Info.plist b/uhabits-ios/Application/Info.plist deleted file mode 100644 index bb68c7e1f..000000000 --- a/uhabits-ios/Application/Info.plist +++ /dev/null @@ -1,49 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleDisplayName - Loop - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1 - LSRequiresIPhoneOS - - UIAppFonts - - fonts/FontAwesome.ttf - - UILaunchStoryboardName - Launch.storyboard - UIRequiredDeviceCapabilities - - armv7 - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - - diff --git a/uhabits-ios/Application/Launch.storyboard b/uhabits-ios/Application/Launch.storyboard deleted file mode 100644 index f9a048edf..000000000 --- a/uhabits-ios/Application/Launch.storyboard +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/uhabits-ios/Application/Platform/ComponentView.swift b/uhabits-ios/Application/Platform/ComponentView.swift deleted file mode 100644 index 8b111651c..000000000 --- a/uhabits-ios/Application/Platform/ComponentView.swift +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (C) 2016-2019 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -import UIKit - -class ComponentView : UIView { - var component: Component? - - init(frame: CGRect, component: Component?) { - self.component = component - super.init(frame: frame) - } - - required init?(coder aDecoder: NSCoder) { - fatalError() - } - - override func draw(_ rect: CGRect) { - let canvas = IosCanvas(width: Double(rect.width), - height: Double(rect.height), - scale: 1.0) - component?.draw(canvas: canvas) - } - - override func layoutSubviews() { - setNeedsDisplay() - } -} diff --git a/uhabits-ios/Tests/Info.plist b/uhabits-ios/Tests/Info.plist deleted file mode 100644 index 866537f58..000000000 --- a/uhabits-ios/Tests/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - UIAppFonts - - fonts/FontAwesome.ttf - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - BNDL - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1 - - diff --git a/uhabits-ios/uhabits.xcodeproj/project.pbxproj b/uhabits-ios/uhabits.xcodeproj/project.pbxproj deleted file mode 100644 index 75fc10fc7..000000000 --- a/uhabits-ios/uhabits.xcodeproj/project.pbxproj +++ /dev/null @@ -1,584 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 50; - objects = { - -/* Begin PBXBuildFile section */ - 001592642260AE0F00D2814F /* LoopHabitTracker.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C0C6C92246E543003D8AF0 /* LoopHabitTracker.framework */; }; - 005166D12471C02D00C6CFD6 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00A5B42722009F590024E00C /* AppDelegate.swift */; }; - 006EFE50225432B8008464E0 /* AboutScreenController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 006EFE4F225432B8008464E0 /* AboutScreenController.swift */; }; - 00A5B42822009F590024E00C /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00A5B42722009F590024E00C /* AppDelegate.swift */; }; - 00A5B42A22009F590024E00C /* MainScreenController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00A5B42922009F590024E00C /* MainScreenController.swift */; }; - 00A5B42F22009F5A0024E00C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 00A5B42E22009F5A0024E00C /* Assets.xcassets */; }; - 00C0C6BD22465F65003D8AF0 /* fonts in Resources */ = {isa = PBXBuildFile; fileRef = 00C0C6BA22465F65003D8AF0 /* fonts */; }; - 00C0C6BE22465F65003D8AF0 /* databases in Resources */ = {isa = PBXBuildFile; fileRef = 00C0C6BB22465F65003D8AF0 /* databases */; }; - 00C0C6BF22465F65003D8AF0 /* migrations in Resources */ = {isa = PBXBuildFile; fileRef = 00C0C6BC22465F65003D8AF0 /* migrations */; }; - 00C0C6CA2246E543003D8AF0 /* LoopHabitTracker.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C0C6C92246E543003D8AF0 /* LoopHabitTracker.framework */; }; - 00C0C6CC2246E550003D8AF0 /* LoopHabitTracker.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 00C0C6C92246E543003D8AF0 /* LoopHabitTracker.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 00C0C6D122470705003D8AF0 /* ComponentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00C0C6D022470705003D8AF0 /* ComponentView.swift */; }; - 00C0C6E0224A3602003D8AF0 /* DetailScreenController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00C0C6DE224A35FC003D8AF0 /* DetailScreenController.swift */; }; - 00D48BD12200A31300CC4527 /* Launch.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 00D48BD02200A31300CC4527 /* Launch.storyboard */; }; - 00D48BD32200AC1600CC4527 /* EditHabitController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00D48BD22200AC1600CC4527 /* EditHabitController.swift */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 00A5B43922009F5A0024E00C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 00A5B41C22009F590024E00C /* Project object */; - proxyType = 1; - remoteGlobalIDString = 00A5B42322009F590024E00C; - remoteInfo = uhabits; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 00C0C6B522465C47003D8AF0 /* Embed Frameworks */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - 00C0C6CC2246E550003D8AF0 /* LoopHabitTracker.framework in Embed Frameworks */, - ); - name = "Embed Frameworks"; - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 006EFE4F225432B8008464E0 /* AboutScreenController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutScreenController.swift; sourceTree = ""; }; - 00A5B42422009F590024E00C /* uhabits.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = uhabits.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 00A5B42722009F590024E00C /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 00A5B42922009F590024E00C /* MainScreenController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainScreenController.swift; sourceTree = ""; }; - 00A5B42E22009F5A0024E00C /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 00A5B43322009F5A0024E00C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 00A5B43822009F5A0024E00C /* uhabitsTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = uhabitsTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 00A5B43E22009F5A0024E00C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 00C0C6AE224655D8003D8AF0 /* BridgingHeader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BridgingHeader.h; sourceTree = ""; }; - 00C0C6BA22465F65003D8AF0 /* fonts */ = {isa = PBXFileReference; lastKnownFileType = folder; path = fonts; sourceTree = ""; }; - 00C0C6BB22465F65003D8AF0 /* databases */ = {isa = PBXFileReference; lastKnownFileType = folder; path = databases; sourceTree = ""; }; - 00C0C6BC22465F65003D8AF0 /* migrations */ = {isa = PBXFileReference; lastKnownFileType = folder; path = migrations; sourceTree = ""; }; - 00C0C6C92246E543003D8AF0 /* LoopHabitTracker.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = LoopHabitTracker.framework; path = "../uhabits-core-legacy/build/bin/ios/debugFramework/LoopHabitTracker.framework"; sourceTree = ""; }; - 00C0C6D022470705003D8AF0 /* ComponentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComponentView.swift; sourceTree = ""; }; - 00C0C6DE224A35FC003D8AF0 /* DetailScreenController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DetailScreenController.swift; sourceTree = ""; }; - 00D48BD02200A31300CC4527 /* Launch.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Launch.storyboard; sourceTree = ""; }; - 00D48BD22200AC1600CC4527 /* EditHabitController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditHabitController.swift; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 00A5B42122009F590024E00C /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 00C0C6CA2246E543003D8AF0 /* LoopHabitTracker.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 00A5B43522009F5A0024E00C /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 001592642260AE0F00D2814F /* LoopHabitTracker.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 006EFE49224FF41B008464E0 /* Frontend */ = { - isa = PBXGroup; - children = ( - 006EFE4F225432B8008464E0 /* AboutScreenController.swift */, - 00C0C6DE224A35FC003D8AF0 /* DetailScreenController.swift */, - 00D48BD22200AC1600CC4527 /* EditHabitController.swift */, - 00A5B42922009F590024E00C /* MainScreenController.swift */, - ); - path = Frontend; - sourceTree = ""; - }; - 00A5B41B22009F590024E00C = { - isa = PBXGroup; - children = ( - 00C0C6C022465F80003D8AF0 /* Assets */, - 00A5B42622009F590024E00C /* Application */, - 00A5B43B22009F5A0024E00C /* Tests */, - 00A5B42522009F590024E00C /* Products */, - 00C0C6B0224658CD003D8AF0 /* Frameworks */, - ); - sourceTree = ""; - }; - 00A5B42522009F590024E00C /* Products */ = { - isa = PBXGroup; - children = ( - 00A5B42422009F590024E00C /* uhabits.app */, - 00A5B43822009F5A0024E00C /* uhabitsTests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - 00A5B42622009F590024E00C /* Application */ = { - isa = PBXGroup; - children = ( - 00C0C6AE224655D8003D8AF0 /* BridgingHeader.h */, - 00A5B43322009F5A0024E00C /* Info.plist */, - 00D48BD02200A31300CC4527 /* Launch.storyboard */, - 00A5B42722009F590024E00C /* AppDelegate.swift */, - 00A5B42E22009F5A0024E00C /* Assets.xcassets */, - 006EFE49224FF41B008464E0 /* Frontend */, - 00C0C6D622471BA3003D8AF0 /* Platform */, - ); - path = Application; - sourceTree = ""; - }; - 00A5B43B22009F5A0024E00C /* Tests */ = { - isa = PBXGroup; - children = ( - 00A5B43E22009F5A0024E00C /* Info.plist */, - ); - path = Tests; - sourceTree = ""; - }; - 00C0C6B0224658CD003D8AF0 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 00C0C6C92246E543003D8AF0 /* LoopHabitTracker.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - 00C0C6C022465F80003D8AF0 /* Assets */ = { - isa = PBXGroup; - children = ( - 00C0C6BB22465F65003D8AF0 /* databases */, - 00C0C6BA22465F65003D8AF0 /* fonts */, - 00C0C6BC22465F65003D8AF0 /* migrations */, - ); - name = Assets; - path = "../uhabits-core-legacy/assets/main"; - sourceTree = ""; - }; - 00C0C6D622471BA3003D8AF0 /* Platform */ = { - isa = PBXGroup; - children = ( - 00C0C6D022470705003D8AF0 /* ComponentView.swift */, - ); - path = Platform; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 00A5B42322009F590024E00C /* uhabits */ = { - isa = PBXNativeTarget; - buildConfigurationList = 00A5B44122009F5A0024E00C /* Build configuration list for PBXNativeTarget "uhabits" */; - buildPhases = ( - 00C0C6D32247134F003D8AF0 /* Build Core Module */, - 00A5B42022009F590024E00C /* Sources */, - 00A5B42122009F590024E00C /* Frameworks */, - 00A5B42222009F590024E00C /* Resources */, - 00C0C6B522465C47003D8AF0 /* Embed Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = uhabits; - productName = uhabits; - productReference = 00A5B42422009F590024E00C /* uhabits.app */; - productType = "com.apple.product-type.application"; - }; - 00A5B43722009F5A0024E00C /* uhabitsTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 00A5B44422009F5A0024E00C /* Build configuration list for PBXNativeTarget "uhabitsTests" */; - buildPhases = ( - 00A5B43422009F5A0024E00C /* Sources */, - 00A5B43522009F5A0024E00C /* Frameworks */, - 00A5B43622009F5A0024E00C /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 00A5B43A22009F5A0024E00C /* PBXTargetDependency */, - ); - name = uhabitsTests; - productName = uhabitsTests; - productReference = 00A5B43822009F5A0024E00C /* uhabitsTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 00A5B41C22009F590024E00C /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 1010; - LastUpgradeCheck = 1010; - ORGANIZATIONNAME = Loop; - TargetAttributes = { - 00A5B42322009F590024E00C = { - CreatedOnToolsVersion = 10.1; - }; - 00A5B43722009F5A0024E00C = { - CreatedOnToolsVersion = 10.1; - TestTargetID = 00A5B42322009F590024E00C; - }; - }; - }; - buildConfigurationList = 00A5B41F22009F590024E00C /* Build configuration list for PBXProject "uhabits" */; - compatibilityVersion = "Xcode 9.3"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 00A5B41B22009F590024E00C; - productRefGroup = 00A5B42522009F590024E00C /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 00A5B42322009F590024E00C /* uhabits */, - 00A5B43722009F5A0024E00C /* uhabitsTests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 00A5B42222009F590024E00C /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 00C0C6BD22465F65003D8AF0 /* fonts in Resources */, - 00C0C6BE22465F65003D8AF0 /* databases in Resources */, - 00C0C6BF22465F65003D8AF0 /* migrations in Resources */, - 00A5B42F22009F5A0024E00C /* Assets.xcassets in Resources */, - 00D48BD12200A31300CC4527 /* Launch.storyboard in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 00A5B43622009F5A0024E00C /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 00C0C6D32247134F003D8AF0 /* Build Core Module */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - ); - name = "Build Core Module"; - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "cd ../uhabits-core-legacy\n../gradlew linkDebugFrameworkIos\n"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 00A5B42022009F590024E00C /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 00C0C6D122470705003D8AF0 /* ComponentView.swift in Sources */, - 00C0C6E0224A3602003D8AF0 /* DetailScreenController.swift in Sources */, - 00A5B42A22009F590024E00C /* MainScreenController.swift in Sources */, - 00A5B42822009F590024E00C /* AppDelegate.swift in Sources */, - 00D48BD32200AC1600CC4527 /* EditHabitController.swift in Sources */, - 006EFE50225432B8008464E0 /* AboutScreenController.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 00A5B43422009F5A0024E00C /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 005166D12471C02D00C6CFD6 /* AppDelegate.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 00A5B43A22009F5A0024E00C /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 00A5B42322009F590024E00C /* uhabits */; - targetProxy = 00A5B43922009F5A0024E00C /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 00A5B43F22009F5A0024E00C /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - FRAMEWORK_SEARCH_PATHS = ""; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ""; - IPHONEOS_DEPLOYMENT_TARGET = 12.1; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = Debug; - }; - 00A5B44022009F5A0024E00C /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - FRAMEWORK_SEARCH_PATHS = ""; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ""; - IPHONEOS_DEPLOYMENT_TARGET = 12.1; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - SDKROOT = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 00A5B44222009F5A0024E00C /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = R5YTHGE3PS; - ENABLE_BITCODE = NO; - FRAMEWORK_SEARCH_PATHS = ( - "$(PROJECT_DIR)/../uhabits-core-legacy/build/bin/ios/debugFramework/", - "$(PROJECT_DIR)", - ); - HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/../uhabits-core-legacy/build/bin/ios/debugFramework/LoopHabitTracker.framework/Headers/"; - INFOPLIST_FILE = Application/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = org.isoron.uhabits; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_OBJC_BRIDGING_HEADER = Application/BridgingHeader.h; - SWIFT_PRECOMPILE_BRIDGING_HEADER = NO; - SWIFT_VERSION = 4.2; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 00A5B44322009F5A0024E00C /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = R5YTHGE3PS; - ENABLE_BITCODE = NO; - FRAMEWORK_SEARCH_PATHS = ( - "$(PROJECT_DIR)/../uhabits-core-legacy/build/bin/ios/debugFramework/", - "$(PROJECT_DIR)", - ); - HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/../uhabits-core-legacy/build/bin/ios/debugFramework/LoopHabitTracker.framework/Headers/"; - INFOPLIST_FILE = Application/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = org.isoron.uhabits; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_OBJC_BRIDGING_HEADER = Application/BridgingHeader.h; - SWIFT_PRECOMPILE_BRIDGING_HEADER = NO; - SWIFT_VERSION = 4.2; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; - 00A5B44522009F5A0024E00C /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - BUNDLE_LOADER = "$(TEST_HOST)"; - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = R5YTHGE3PS; - FRAMEWORK_SEARCH_PATHS = "$(PROJECT_DIR)/../core/build/bin/ios/mainDebugFramework/"; - HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/../core/build/bin/ios/mainDebugFramework/main.framework/Headers/"; - INFOPLIST_FILE = Tests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = org.isoron.uhabitsTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = ""; - SWIFT_PRECOMPILE_BRIDGING_HEADER = NO; - SWIFT_VERSION = 4.2; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/uhabits.app/uhabits"; - }; - name = Debug; - }; - 00A5B44622009F5A0024E00C /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - BUNDLE_LOADER = "$(TEST_HOST)"; - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = R5YTHGE3PS; - FRAMEWORK_SEARCH_PATHS = "$(PROJECT_DIR)/../core/build/bin/ios/mainDebugFramework/"; - HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/../core/build/bin/ios/mainDebugFramework/main.framework/Headers/"; - INFOPLIST_FILE = Tests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = org.isoron.uhabitsTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = ""; - SWIFT_PRECOMPILE_BRIDGING_HEADER = NO; - SWIFT_VERSION = 4.2; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/uhabits.app/uhabits"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 00A5B41F22009F590024E00C /* Build configuration list for PBXProject "uhabits" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 00A5B43F22009F5A0024E00C /* Debug */, - 00A5B44022009F5A0024E00C /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 00A5B44122009F5A0024E00C /* Build configuration list for PBXNativeTarget "uhabits" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 00A5B44222009F5A0024E00C /* Debug */, - 00A5B44322009F5A0024E00C /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 00A5B44422009F5A0024E00C /* Build configuration list for PBXNativeTarget "uhabitsTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 00A5B44522009F5A0024E00C /* Debug */, - 00A5B44622009F5A0024E00C /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 00A5B41C22009F590024E00C /* Project object */; -} diff --git a/uhabits-ios/uhabits.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/uhabits-ios/uhabits.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 156ec4d58..000000000 --- a/uhabits-ios/uhabits.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/uhabits-ios/uhabits.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/uhabits-ios/uhabits.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003..000000000 --- a/uhabits-ios/uhabits.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/uhabits-ios/uhabits.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/uhabits-ios/uhabits.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings deleted file mode 100644 index 0c67376eb..000000000 --- a/uhabits-ios/uhabits.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/uhabits-server/.gitignore b/uhabits-server/.gitignore deleted file mode 100644 index fae6b746e..000000000 --- a/uhabits-server/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -/.gradle -/.idea -/out -/build -*.iml -*.ipr -*.iws diff --git a/uhabits-server/Dockerfile b/uhabits-server/Dockerfile deleted file mode 100644 index 34d77779a..000000000 --- a/uhabits-server/Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -FROM openjdk:8-jre-alpine -RUN mkdir /app -COPY uhabits-server.jar /app/uhabits-server.jar -ENV LOOP_REPO_PATH /data/ -WORKDIR /app -CMD ["java", \ - "-server", \ - "-XX:MaxGCPauseMillis=100", \ - "-XX:+UseStringDeduplication", \ - "-jar", \ - "uhabits-server.jar"] \ No newline at end of file diff --git a/uhabits-server/build.gradle.kts b/uhabits-server/build.gradle.kts deleted file mode 100644 index 9f2fda06a..000000000 --- a/uhabits-server/build.gradle.kts +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (C) 2016-2021 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar - -plugins { - application - id("kotlin") - id("com.github.johnrengelman.shadow") version "8.1.1" -} - -kotlin { - jvmToolchain(17) -} - - -application { - group = "org.isoron.uhabits" - version = "0.0.1" - mainClass.set("io.ktor.server.netty.EngineMain") -} - -dependencies { - val ktorVersion = "1.6.8" - implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.22") - implementation("io.ktor:ktor-server-netty:$ktorVersion") - implementation("ch.qos.logback:logback-classic:1.4.14") - implementation("io.ktor:ktor-server-core:$ktorVersion") - implementation("io.ktor:ktor-html-builder:$ktorVersion") - implementation("io.ktor:ktor-jackson:$ktorVersion") - implementation("org.jetbrains:kotlin-css-jvm:1.0.0-pre.148-kotlin-1.4.30") - implementation("io.prometheus:simpleclient:0.16.0") - implementation("io.prometheus:simpleclient_httpserver:0.16.0") - implementation("io.prometheus:simpleclient_hotspot:0.16.0") - testImplementation("io.ktor:ktor-server-tests:$ktorVersion") - testImplementation("org.mockito.kotlin:mockito-kotlin:5.2.1") - testImplementation(kotlin("test")) - testImplementation(kotlin("test-junit")) -} - -tasks.withType { - archiveBaseName.set("uhabits-server") - archiveClassifier.set("") - archiveVersion.set("") -} - diff --git a/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/SyncData.kt b/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/SyncData.kt deleted file mode 100644 index d60319d6e..000000000 --- a/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/SyncData.kt +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (C) 2016-2021 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.sync - -import com.fasterxml.jackson.databind.* - -data class SyncData( - val version: Long, - val content: String -) - -data class RegisterReponse(val key: String) - -data class GetDataVersionResponse(val version: Long) - -val defaultMapper = ObjectMapper() -fun SyncData.toJson(): String = defaultMapper.writeValueAsString(this) -fun GetDataVersionResponse.toJson(): String = defaultMapper.writeValueAsString(this) \ No newline at end of file diff --git a/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/SyncException.kt b/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/SyncException.kt deleted file mode 100644 index 30689ad86..000000000 --- a/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/SyncException.kt +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (C) 2016-2021 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.sync - -open class SyncException: RuntimeException() - -class KeyNotFoundException: SyncException() - -class ServiceUnavailable: SyncException() - -class EditConflictException: SyncException() \ No newline at end of file diff --git a/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/app/LinkModule.kt b/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/app/LinkModule.kt deleted file mode 100644 index 32ed88349..000000000 --- a/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/app/LinkModule.kt +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (C) 2016-2021 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.sync.app - -import io.ktor.application.* -import io.ktor.http.* -import io.ktor.request.* -import io.ktor.response.* -import io.ktor.routing.* -import org.isoron.uhabits.sync.* - -data class LinkRegisterRequestData( - val syncKey: String, -) -fun LinkRegisterRequestData.toJson(): String = defaultMapper.writeValueAsString(this) - -fun Routing.links(app: SyncApplication) { - post("/links") { - try { - val data = call.receive() - val link = app.server.registerLink(data.syncKey) - call.respond(HttpStatusCode.OK, link) - } catch (e: ServiceUnavailable) { - call.respond(HttpStatusCode.ServiceUnavailable) - } - } - get("/links/{id}") { - try { - val id = call.parameters["id"]!! - val link = app.server.getLink(id) - call.respond(HttpStatusCode.OK, link) - } catch (e: ServiceUnavailable) { - call.respond(HttpStatusCode.ServiceUnavailable) - } catch (e: KeyNotFoundException) { - call.respond(HttpStatusCode.NotFound) - } - } -} diff --git a/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/app/MetricsModule.kt b/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/app/MetricsModule.kt deleted file mode 100644 index f367dd552..000000000 --- a/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/app/MetricsModule.kt +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (C) 2016-2021 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.sync.app - -import io.ktor.application.* -import io.ktor.http.* -import io.ktor.response.* -import io.ktor.routing.* -import io.prometheus.client.* -import io.prometheus.client.exporter.common.* -import io.prometheus.client.hotspot.* -import java.io.* - - -fun Routing.metrics(app: SyncApplication) { - // Register JVM metrics - DefaultExports.initialize() - - get("/metrics") { - val writer = StringWriter() - TextFormat.write004( - writer, - CollectorRegistry.defaultRegistry.filteredMetricFamilySamples(setOf()), - ) - call.respond(HttpStatusCode.OK, writer.toString()) - } -} diff --git a/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/app/RegistrationModule.kt b/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/app/RegistrationModule.kt deleted file mode 100644 index 1501b243a..000000000 --- a/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/app/RegistrationModule.kt +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (C) 2016-2021 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.sync.app - -import io.ktor.application.* -import io.ktor.http.* -import io.ktor.response.* -import io.ktor.routing.* -import org.isoron.uhabits.sync.* - -fun Routing.registration(app: SyncApplication) { - post("/register") { - try { - val key = app.server.register() - call.respond(HttpStatusCode.OK, RegisterReponse(key)) - } catch (e: ServiceUnavailable) { - call.respond(HttpStatusCode.ServiceUnavailable) - } - } -} diff --git a/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/app/StorageModule.kt b/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/app/StorageModule.kt deleted file mode 100644 index 3e67d359c..000000000 --- a/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/app/StorageModule.kt +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (C) 2016-2021 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.sync.app - -import io.ktor.application.* -import io.ktor.http.* -import io.ktor.request.* -import io.ktor.response.* -import io.ktor.routing.* -import org.isoron.uhabits.sync.* - -fun Routing.storage(app: SyncApplication) { - route("/db/{key}") { - get { - val key = call.parameters["key"]!! - try { - val data = app.server.getData(key) - call.respond(HttpStatusCode.OK, data) - } catch(e: KeyNotFoundException) { - call.respond(HttpStatusCode.NotFound) - } - } - put { - val key = call.parameters["key"]!! - val data = call.receive() - try { - app.server.put(key, data) - call.respond(HttpStatusCode.OK) - } catch (e: KeyNotFoundException) { - call.respond(HttpStatusCode.NotFound) - } catch (e: EditConflictException) { - call.respond(HttpStatusCode.Conflict) - } - } - get("version") { - val key = call.parameters["key"]!! - try { - val version = app.server.getDataVersion(key) - call.respond(HttpStatusCode.OK, GetDataVersionResponse(version)) - } catch(e: KeyNotFoundException) { - call.respond(HttpStatusCode.NotFound) - } - } - } -} \ No newline at end of file diff --git a/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/app/SyncApplication.kt b/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/app/SyncApplication.kt deleted file mode 100644 index 71344b16f..000000000 --- a/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/app/SyncApplication.kt +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (C) 2016-2021 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.sync.app - -import io.ktor.application.* -import io.ktor.features.* -import io.ktor.jackson.* -import io.ktor.routing.* -import org.isoron.uhabits.sync.* -import org.isoron.uhabits.sync.repository.* -import org.isoron.uhabits.sync.server.* -import java.nio.file.* - -fun Application.main() = SyncApplication().apply { main() } - -val REPOSITORY_PATH: Path = Paths.get(System.getenv("LOOP_REPO_PATH")!!) - -class SyncApplication( - val server: AbstractSyncServer = RepositorySyncServer( - FileRepository(REPOSITORY_PATH), - ), -) { - fun Application.main() { - install(DefaultHeaders) - install(CallLogging) - install(ContentNegotiation) { - jackson { } - } - routing { - registration(this@SyncApplication) - storage(this@SyncApplication) - links(this@SyncApplication) - metrics(this@SyncApplication) - } - } -} diff --git a/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/links/Link.kt b/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/links/Link.kt deleted file mode 100644 index 9adf50614..000000000 --- a/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/links/Link.kt +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (C) 2016-2021 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.sync.links - -import org.isoron.uhabits.sync.defaultMapper - -/** - * A Link maps a public URL (such as https://sync.loophabits.org/links/B752A6) - * to a synchronization key. They are used to transfer sync keys between devices - * without ever exposing the original sync key. Unlike sync keys, links expire - * after a few minutes. - */ -data class Link( - val id: String, - val syncKey: String, - val createdAt: Long, -) - -fun Link.toJson(): String = defaultMapper.writeValueAsString(this) diff --git a/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/links/LinkManager.kt b/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/links/LinkManager.kt deleted file mode 100644 index 4b153861c..000000000 --- a/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/links/LinkManager.kt +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (C) 2016-2021 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.sync.links - -import org.isoron.uhabits.sync.* -import org.isoron.uhabits.sync.utils.* - -class LinkManager( - private val timeoutInMillis: Long = 900_000, -) { - private val links = HashMap() - - fun register(syncKey: String): Link { - val link = Link( - id = randomString(64), - syncKey = syncKey, - createdAt = System.currentTimeMillis(), - ) - links[link.id] = link - return link - } - - fun get(id: String): Link { - val link = links[id] ?: throw KeyNotFoundException() - val ageInMillis = System.currentTimeMillis() - link.createdAt - if (ageInMillis > timeoutInMillis) { - links.remove(id) - throw KeyNotFoundException() - } - return link - } -} \ No newline at end of file diff --git a/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/repository/FileRepository.kt b/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/repository/FileRepository.kt deleted file mode 100644 index 1faf93fc7..000000000 --- a/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/repository/FileRepository.kt +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (C) 2016-2021 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.sync.repository - -import org.isoron.uhabits.sync.* -import java.io.* -import java.nio.file.* - -class FileRepository( - private val basepath: Path, -) : Repository { - - override suspend fun put(key: String, data: SyncData) { - // Create directory - val dataPath = key.toDataPath() - val dataDir = dataPath.toFile() - dataDir.mkdirs() - - // Create metadata - val metadataFile = dataPath.resolve("version").toFile() - metadataFile.outputStream().use { outputStream -> - PrintWriter(outputStream).use { printWriter -> - printWriter.print(data.version) - } - } - - // Create data file - val dataFile = dataPath.resolve("content").toFile() - dataFile.outputStream().use { outputStream -> - PrintWriter(outputStream).use { printWriter -> - printWriter.print(data.content) - } - } - } - - override suspend fun get(key: String): SyncData { - val dataPath = key.toDataPath() - val contentFile = dataPath.resolve("content").toFile() - val versionFile = dataPath.resolve("version").toFile() - if (!contentFile.exists() || !versionFile.exists()) { - throw KeyNotFoundException() - } - val version = versionFile.readText().trim().toLong() - return SyncData(version, contentFile.readText()) - } - - override suspend fun contains(key: String): Boolean { - val dataPath = key.toDataPath() - val versionFile = dataPath.resolve("version").toFile() - return versionFile.exists() - } - - private fun String.toDataPath(): Path { - return basepath.resolve("${this[0]}/${this[1]}/${this[2]}/${this[3]}/$this") - } -} \ No newline at end of file diff --git a/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/repository/Repository.kt b/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/repository/Repository.kt deleted file mode 100644 index 651ca679f..000000000 --- a/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/repository/Repository.kt +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (C) 2016-2021 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.sync.repository - -import org.isoron.uhabits.sync.KeyNotFoundException -import org.isoron.uhabits.sync.SyncData - -/** - * A class that knows how to store and retrieve a large number of [SyncData] items. - */ -interface Repository { - /** - * Stores a data item, under the provided key. The item can be later retrieved with [get]. - * Replaces existing items silently. - */ - suspend fun put(key: String, data: SyncData) - - /** - * Retrieves a data item that was previously stored using [put]. - * @throws KeyNotFoundException If no such key exists. - */ - suspend fun get(key: String): SyncData - - /** - * Returns true if the repository contains a given key. - */ - suspend fun contains(key: String): Boolean -} - diff --git a/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/server/AbstractSyncServer.kt b/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/server/AbstractSyncServer.kt deleted file mode 100644 index bd18c7b30..000000000 --- a/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/server/AbstractSyncServer.kt +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright (C) 2016-2021 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.sync.server - -import org.isoron.uhabits.sync.* -import org.isoron.uhabits.sync.links.* - -interface AbstractSyncServer { - /** - * Generates and returns a new sync key, which can be used to store and retrive - * data. - * - * @throws ServiceUnavailable If key cannot be generated at this time, for example, - * due to insufficient server resources, temporary server maintenance or network problems. - */ - suspend fun register(): String - - /** - * Replaces data for a given sync key. - * - * @throws KeyNotFoundException If key is not found - * @throws EditConflictException If the version of the data provided is not - * exactly the current data version plus one. - * @throws ServiceUnavailable If data cannot be put at this time, for example, due - * to insufficient server resources or network problems. - */ - suspend fun put(key: String, newData: SyncData) - - /** - * Returns data for a given sync key. - * - * @throws KeyNotFoundException If key is not found - * @throws ServiceUnavailable If data cannot be retrieved at this time, for example, due - * to insufficient server resources or network problems. - */ - suspend fun getData(key: String): SyncData - - /** - * Returns the current data version for the given key - * - * @throws KeyNotFoundException If key is not found - * @throws ServiceUnavailable If data cannot be retrieved at this time, for example, due - * to insufficient server resources or network problems. - */ - suspend fun getDataVersion(key: String): Long - - /** - * Registers a new temporary link (mapping to the given sync key) and returns it. - * - * @throws ServiceUnavailable If the link cannot be generated at this time due to - * insufficient server resources. - */ - suspend fun registerLink(syncKey: String): Link - - /** - * Retrieves the syncKey associated with the given link id. - * - * @throws ServiceUnavailable If the link cannot be resolved at this time due to - * insufficient server resources. - * @throws KeyNotFoundException If the link id cannot be found, or if it has - * expired. - */ - suspend fun getLink(id: String): Link -} diff --git a/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/server/RepositorySyncServer.kt b/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/server/RepositorySyncServer.kt deleted file mode 100644 index cdde98d91..000000000 --- a/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/server/RepositorySyncServer.kt +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright (C) 2016-2021 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.sync.server - -import io.prometheus.client.* -import org.isoron.uhabits.sync.* -import org.isoron.uhabits.sync.links.* -import org.isoron.uhabits.sync.repository.* -import org.isoron.uhabits.sync.utils.* - -/** - * An AbstractSyncServer that stores all data in a [Repository]. - */ -class RepositorySyncServer( - private val repo: Repository, - private val linkManager: LinkManager = LinkManager(), -) : AbstractSyncServer { - - private val requestsCounter: Counter = Counter.build() - .name("requests_total") - .help("Total number of requests") - .labelNames("method") - .register() - - override suspend fun register(): String { - requestsCounter.labels("register").inc() - val key = generateKey() - repo.put(key, SyncData(0, "")) - return key - } - - override suspend fun put(key: String, newData: SyncData) { - requestsCounter.labels("put").inc() - if (!repo.contains(key)) { - throw KeyNotFoundException() - } - val prevData = repo.get(key) - if (newData.version != prevData.version + 1) { - throw EditConflictException() - } - repo.put(key, newData) - } - - override suspend fun getData(key: String): SyncData { - requestsCounter.labels("getData").inc() - if (!repo.contains(key)) { - throw KeyNotFoundException() - } - return repo.get(key) - } - - override suspend fun getDataVersion(key: String): Long { - requestsCounter.labels("getDataVersion").inc() - if (!repo.contains(key)) { - throw KeyNotFoundException() - } - return repo.get(key).version - } - - override suspend fun registerLink(syncKey: String): Link { - requestsCounter.labels("registerLink").inc() - return linkManager.register(syncKey) - } - - override suspend fun getLink(id: String): Link { - requestsCounter.labels("getLink").inc() - return linkManager.get(id) - } - - private suspend fun generateKey(): String { - while (true) { - val key = randomString(64) - if (!repo.contains(key)) - return key - } - } -} diff --git a/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/utils/String.kt b/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/utils/String.kt deleted file mode 100644 index da043764f..000000000 --- a/uhabits-server/src/main/kotlin/org/isoron/uhabits/sync/utils/String.kt +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (C) 2016-2021 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.sync.utils - -import java.util.* -import kotlin.streams.* - -fun randomString(length: Long): String { - val chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" - return Random().ints(length, 0, chars.length) - .asSequence() - .map(chars::get) - .joinToString("") -} \ No newline at end of file diff --git a/uhabits-server/src/main/resources/application.conf b/uhabits-server/src/main/resources/application.conf deleted file mode 100644 index d5b282277..000000000 --- a/uhabits-server/src/main/resources/application.conf +++ /dev/null @@ -1,9 +0,0 @@ -ktor { - deployment { - port = 8080 - port = ${?PORT} - } - application { - modules = [ org.isoron.uhabits.sync.app.SyncApplicationKt.main ] - } -} diff --git a/uhabits-server/src/main/resources/logback.xml b/uhabits-server/src/main/resources/logback.xml deleted file mode 100644 index 9a9dfca31..000000000 --- a/uhabits-server/src/main/resources/logback.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - %d{YYYY-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n - - - - - - - - diff --git a/uhabits-server/src/test/kotlin/org/isoron/uhabits/sync/app/BaseApplicationTest.kt b/uhabits-server/src/test/kotlin/org/isoron/uhabits/sync/app/BaseApplicationTest.kt deleted file mode 100644 index 3c1aa33dd..000000000 --- a/uhabits-server/src/test/kotlin/org/isoron/uhabits/sync/app/BaseApplicationTest.kt +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (C) 2016-2021 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.sync.app - -import org.mockito.kotlin.mock -import io.ktor.application.* -import org.isoron.uhabits.sync.server.* - -open class BaseApplicationTest { - - protected val server: AbstractSyncServer = mock() - - protected fun app(): Application.() -> Unit = { - SyncApplication(server).apply { - main() - } - } -} diff --git a/uhabits-server/src/test/kotlin/org/isoron/uhabits/sync/app/LinksModuleTest.kt b/uhabits-server/src/test/kotlin/org/isoron/uhabits/sync/app/LinksModuleTest.kt deleted file mode 100644 index 7ee49aa14..000000000 --- a/uhabits-server/src/test/kotlin/org/isoron/uhabits/sync/app/LinksModuleTest.kt +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright (C) 2016-2021 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.sync.app - -import org.mockito.kotlin.whenever -import io.ktor.http.ContentType -import io.ktor.http.HttpHeaders -import io.ktor.http.HttpMethod -import io.ktor.http.HttpStatusCode -import io.ktor.server.testing.TestApplicationCall -import io.ktor.server.testing.TestApplicationEngine -import io.ktor.server.testing.handleRequest -import io.ktor.server.testing.setBody -import io.ktor.server.testing.withTestApplication -import kotlinx.coroutines.runBlocking -import org.isoron.uhabits.sync.KeyNotFoundException -import org.isoron.uhabits.sync.links.Link -import org.isoron.uhabits.sync.links.toJson -import org.junit.Test -import kotlin.test.assertEquals - -class LinksModuleTest : BaseApplicationTest() { - private val link = Link( - id = "ABC123", - syncKey = "SECRET", - createdAt = System.currentTimeMillis(), - ) - - @Test - fun `when POST is successful should return link`(): Unit = runBlocking { - whenever(server.registerLink("SECRET")).thenReturn(link) - withTestApplication(app()) { - handlePost("/links", LinkRegisterRequestData(syncKey = "SECRET")).apply { - assertEquals(HttpStatusCode.OK, response.status()) - assertEquals(link.toJson(), response.content) - } - } - } - - @Test - fun `when GET is successful should return link`(): Unit = runBlocking { - whenever(server.getLink("ABC123")).thenReturn(link) - withTestApplication(app()) { - handleGet("/links/ABC123").apply { - assertEquals(HttpStatusCode.OK, response.status()) - assertEquals(link.toJson(), response.content) - } - } - } - - @Test - fun `GET with invalid link id should return 404`(): Unit = runBlocking { - whenever(server.getLink("ABC123")).thenThrow(KeyNotFoundException()) - withTestApplication(app()) { - handleGet("/links/ABC123").apply { - assertEquals(HttpStatusCode.NotFound, response.status()) - } - } - } - - private fun TestApplicationEngine.handlePost( - url: String, - data: LinkRegisterRequestData - ): TestApplicationCall { - return handleRequest(HttpMethod.Post, url) { - addHeader(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - setBody(data.toJson()) - } - } - - private fun TestApplicationEngine.handleGet(url: String): TestApplicationCall { - return handleRequest(HttpMethod.Get, url) - } -} diff --git a/uhabits-server/src/test/kotlin/org/isoron/uhabits/sync/app/RegistrationModuleTest.kt b/uhabits-server/src/test/kotlin/org/isoron/uhabits/sync/app/RegistrationModuleTest.kt deleted file mode 100644 index 8b5710743..000000000 --- a/uhabits-server/src/test/kotlin/org/isoron/uhabits/sync/app/RegistrationModuleTest.kt +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (C) 2016-2021 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.sync.app - -import org.mockito.kotlin.whenever -import io.ktor.http.HttpMethod -import io.ktor.http.HttpStatusCode -import io.ktor.server.testing.handleRequest -import io.ktor.server.testing.withTestApplication -import kotlinx.coroutines.runBlocking -import org.isoron.uhabits.sync.ServiceUnavailable -import org.junit.Test -import kotlin.test.assertEquals - -class RegistrationModuleTest : BaseApplicationTest() { - @Test - fun `when register succeeds should return generated key`(): Unit = runBlocking { - whenever(server.register()).thenReturn("ABCDEF") - withTestApplication(app()) { - val call = handleRequest(HttpMethod.Post, "/register") - assertEquals(HttpStatusCode.OK, call.response.status()) - assertEquals("{\"key\":\"ABCDEF\"}", call.response.content) - } - } - - @Test - fun `when registration is unavailable should return 503`(): Unit = runBlocking { - whenever(server.register()).thenThrow(ServiceUnavailable()) - withTestApplication(app()) { - val call = handleRequest(HttpMethod.Post, "/register") - assertEquals(HttpStatusCode.ServiceUnavailable, call.response.status()) - } - } -} diff --git a/uhabits-server/src/test/kotlin/org/isoron/uhabits/sync/app/StorageModuleTest.kt b/uhabits-server/src/test/kotlin/org/isoron/uhabits/sync/app/StorageModuleTest.kt deleted file mode 100644 index 36872a194..000000000 --- a/uhabits-server/src/test/kotlin/org/isoron/uhabits/sync/app/StorageModuleTest.kt +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright (C) 2016-2021 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.sync.app - -import org.mockito.kotlin.verify -import org.mockito.kotlin.whenever -import io.ktor.http.* -import io.ktor.server.testing.* -import kotlinx.coroutines.* -import org.isoron.uhabits.sync.* -import org.junit.Test -import kotlin.test.* - -class StorageModuleTest : BaseApplicationTest() { - private val data1 = SyncData(1, "Hello world") - private val data2 = SyncData(2, "Hello new world") - - @Test - fun `when get succeeds should return data`(): Unit = runBlocking { - whenever(server.getData("k1")).thenReturn(data1) - withTestApplication(app()) { - handleGet("/db/k1").apply { - assertEquals(HttpStatusCode.OK, response.status()) - assertEquals(data1.toJson(), response.content) - } - } - } - - @Test - fun `when get version succeeds should return version`(): Unit = runBlocking { - whenever(server.getDataVersion("k1")).thenReturn(30) - withTestApplication(app()) { - handleGet("/db/k1/version").apply { - assertEquals(HttpStatusCode.OK, response.status()) - assertEquals(GetDataVersionResponse(30).toJson(), response.content) - } - } - } - - @Test - fun `when get with invalid key should return 404`(): Unit = runBlocking { - whenever(server.getData("k1")).thenThrow(KeyNotFoundException()) - withTestApplication(app()) { - handleGet("/db/k1").apply { - assertEquals(HttpStatusCode.NotFound, response.status()) - } - } - } - - - @Test - fun `when put succeeds should return OK`(): Unit = runBlocking { - withTestApplication(app()) { - handlePut("/db/k1", data1).apply { - runBlocking { - assertEquals(HttpStatusCode.OK, response.status()) - verify(server).put("k1", data1) - } - } - } - } - - @Test - fun `when put with invalid key should return 404`(): Unit = runBlocking { - whenever(server.put("k1", data1)).thenThrow(KeyNotFoundException()) - withTestApplication(app()) { - handlePut("/db/k1", data1).apply { - assertEquals(HttpStatusCode.NotFound, response.status()) - } - } - } - - @Test - fun `when put with invalid version should return 409 and current data`(): Unit = runBlocking { - whenever(server.put("k1", data1)).thenThrow(EditConflictException()) - whenever(server.getData("k1")).thenReturn(data2) - withTestApplication(app()) { - handlePut("/db/k1", data1).apply { - assertEquals(HttpStatusCode.Conflict, response.status()) - } - } - } - - private fun TestApplicationEngine.handlePut(url: String, data: SyncData): TestApplicationCall { - return handleRequest(HttpMethod.Put, url) { - addHeader(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - setBody(data.toJson()) - } - } - - private fun TestApplicationEngine.handleGet(url: String): TestApplicationCall { - return handleRequest(HttpMethod.Get, url) - } -} diff --git a/uhabits-server/src/test/kotlin/org/isoron/uhabits/sync/links/LinkManagerTest.kt b/uhabits-server/src/test/kotlin/org/isoron/uhabits/sync/links/LinkManagerTest.kt deleted file mode 100644 index d1eb88c24..000000000 --- a/uhabits-server/src/test/kotlin/org/isoron/uhabits/sync/links/LinkManagerTest.kt +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (C) 2016-2021 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.sync.links - -import org.isoron.uhabits.sync.* -import org.junit.Test -import kotlin.test.* - -class LinkManagerTest { - - @Test - fun testUsage() { - val manager = LinkManager(timeoutInMillis = 250) - val originalLink = manager.register(syncKey = "SECRET") - val retrievedLink = manager.get(originalLink.id) - assertEquals(originalLink, retrievedLink) - - Thread.sleep(260) // wait until expiration - assertFailsWith { - manager.get(originalLink.id) - } - - assertFailsWith { - manager.get("INVALID") - } - } -} \ No newline at end of file diff --git a/uhabits-server/src/test/kotlin/org/isoron/uhabits/sync/repository/FileRepositoryTest.kt b/uhabits-server/src/test/kotlin/org/isoron/uhabits/sync/repository/FileRepositoryTest.kt deleted file mode 100644 index 53ce3a8c6..000000000 --- a/uhabits-server/src/test/kotlin/org/isoron/uhabits/sync/repository/FileRepositoryTest.kt +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (C) 2016-2021 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - - -@file:Suppress("BlockingMethodInNonBlockingContext") - -package org.isoron.uhabits.sync.repository - -import kotlinx.coroutines.* -import org.hamcrest.CoreMatchers.* -import org.isoron.uhabits.sync.* -import org.junit.* -import org.junit.Assert.* -import java.nio.file.* - -class FileRepositoryTest { - - @Test - fun testUsage() = runBlocking { - val tempdir = Files.createTempDirectory("db")!! - val repo = FileRepository(tempdir) - - val original = SyncData(10, "Hello world") - repo.put("abcdefg", original) - - val metaPath = tempdir.resolve("a/b/c/d/abcdefg/version") - assertTrue("$metaPath should exist", Files.exists(metaPath)) - assertEquals("10", metaPath.toFile().readText()) - - val dataPath = tempdir.resolve("a/b/c/d/abcdefg/content") - assertTrue("$dataPath should exist", Files.exists(dataPath)) - assertEquals("Hello world", dataPath.toFile().readText()) - - val retrieved = repo.get("abcdefg") - assertThat(retrieved, equalTo(original)) - } -} \ No newline at end of file diff --git a/uhabits-server/src/test/kotlin/org/isoron/uhabits/sync/server/RepositorySyncServerTest.kt b/uhabits-server/src/test/kotlin/org/isoron/uhabits/sync/server/RepositorySyncServerTest.kt deleted file mode 100644 index ca1576bda..000000000 --- a/uhabits-server/src/test/kotlin/org/isoron/uhabits/sync/server/RepositorySyncServerTest.kt +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (C) 2016-2021 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.sync.server - -import kotlinx.coroutines.* -import org.isoron.uhabits.sync.* -import org.isoron.uhabits.sync.repository.* -import org.junit.Test -import java.nio.file.* -import kotlin.test.* - -class RepositorySyncServerTest { - - private val tempdir = Files.createTempDirectory("db") - private val server = RepositorySyncServer(FileRepository(tempdir)) - private val key = runBlocking { server.register() } - - @Test - fun testUsage(): Unit = runBlocking { - val data0 = SyncData(0, "") - assertEquals(server.getData(key), data0) - - val data1 = SyncData(1, "Hello world") - server.put(key, data1) - assertEquals(server.getData(key), data1) - - val data2 = SyncData(2, "Hello new world") - server.put(key, data2) - assertEquals(server.getData(key), data2) - - assertFailsWith { - server.put(key, data2) - } - - assertFailsWith { - server.getData("INVALID") - } - - assertFailsWith { - server.put("INVALID", data0) - } - } -} \ No newline at end of file diff --git a/uhabits-web/.babelrc b/uhabits-web/.babelrc deleted file mode 100644 index e9a907edb..000000000 --- a/uhabits-web/.babelrc +++ /dev/null @@ -1,6 +0,0 @@ -{ - "presets": [ - ["env", { "modules": false }], - "react" - ] -} diff --git a/uhabits-web/Makefile b/uhabits-web/Makefile deleted file mode 100644 index 69e7fb257..000000000 --- a/uhabits-web/Makefile +++ /dev/null @@ -1,35 +0,0 @@ -test_bundle := build/test.js -node_modules := node_modules/.bin/mocha -core_dir := ../uhabits-core-legacy - -all: $(test_bundle) - -$(node_modules): - npm install - -core: - cd $(core_dir); ./gradlew --quiet jsMainClasses jsTestClasses - cp $(core_dir)/build/classes/kotlin/js/*/*.js node_modules/ - mkdir -p build/assets - rsync -a $(core_dir)/assets/main/ build/assets/ - rsync -a $(core_dir)/assets/test/ build/assets/ - -$(test_bundle): src/test/index.js core - mkdir -p build/lib build/test build/css - npx webpack -d --mode development --target web --output $@ $< - cp src/test/*html build/test - cp node_modules/mocha/mocha.css build/lib - cp node_modules/mocha/mocha.js build/lib - cp node_modules/sql.js/js/sql.js build/lib - cp node_modules/sprintf-js/dist/sprintf.min.js build/lib - -serve: - npx serve build/ - -clean: - rm -rf build - -distclean: clean - rm -rf node_modules - -.PHONY: test clean distclean core diff --git a/uhabits-web/package-lock.json b/uhabits-web/package-lock.json deleted file mode 100644 index 1333e8561..000000000 --- a/uhabits-web/package-lock.json +++ /dev/null @@ -1,6080 +0,0 @@ -{ - "name": "loop-habit-tracker", - "version": "2.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@webassemblyjs/ast": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", - "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", - "dev": true, - "requires": { - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", - "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", - "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", - "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", - "dev": true - }, - "@webassemblyjs/helper-code-frame": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", - "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", - "dev": true, - "requires": { - "@webassemblyjs/wast-printer": "1.8.5" - } - }, - "@webassemblyjs/helper-fsm": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", - "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", - "dev": true - }, - "@webassemblyjs/helper-module-context": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", - "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "mamacro": "^0.0.3" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", - "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", - "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", - "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", - "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", - "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", - "dev": true, - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", - "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", - "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/helper-wasm-section": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-opt": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5", - "@webassemblyjs/wast-printer": "1.8.5" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", - "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", - "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", - "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" - } - }, - "@webassemblyjs/wast-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", - "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/floating-point-hex-parser": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-code-frame": "1.8.5", - "@webassemblyjs/helper-fsm": "1.8.5", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", - "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5", - "@xtuc/long": "4.2.2" - } - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "@zeit/schemas": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.6.0.tgz", - "integrity": "sha512-uUrgZ8AxS+Lio0fZKAipJjAh415JyrOZowliZAzmnJSsf7piVL5w+G0+gFJ0KSu3QRhvui/7zuvpLz03YjXAhg==", - "dev": true - }, - "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "dev": true, - "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - } - }, - "acorn": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.3.0.tgz", - "integrity": "sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==", - "dev": true - }, - "ajv": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", - "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true - }, - "ajv-keywords": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", - "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", - "dev": true - }, - "ansi-align": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", - "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", - "dev": true, - "requires": { - "string-width": "^2.0.0" - } - }, - "ansi-colors": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", - "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", - "dev": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "arch": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.1.1.tgz", - "integrity": "sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg==", - "dev": true - }, - "arg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arg/-/arg-2.0.0.tgz", - "integrity": "sha512-XxNTUzKnz1ctK3ZIcI2XUPlD96wbHP2nGqkPKpvk/HNRlPveYrXIVSTk9m3LcqOgDPg3B1nMvdV/K8wZd7PG4w==", - "dev": true - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - }, - "dependencies": { - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - } - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "dev": true, - "requires": { - "object-assign": "^4.1.1", - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - } - } - } - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - } - }, - "babel-core": { - "version": "6.26.3", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", - "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", - "requires": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.1", - "debug": "^2.6.9", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.8", - "slash": "^1.0.0", - "source-map": "^0.5.7" - } - }, - "babel-generator": { - "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", - "requires": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" - }, - "dependencies": { - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=" - } - } - }, - "babel-helper-builder-binary-assignment-operator-visitor": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", - "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", - "requires": { - "babel-helper-explode-assignable-expression": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-builder-react-jsx": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz", - "integrity": "sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA=", - "requires": { - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "esutils": "^2.0.2" - } - }, - "babel-helper-call-delegate": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", - "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", - "requires": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-define-map": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", - "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" - } - }, - "babel-helper-explode-assignable-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", - "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", - "requires": { - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", - "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", - "requires": { - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-get-function-arity": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", - "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-hoist-variables": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", - "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-optimise-call-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", - "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-regex": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", - "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", - "requires": { - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" - } - }, - "babel-helper-remap-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", - "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-replace-supers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", - "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", - "requires": { - "babel-helper-optimise-call-expression": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-loader": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.5.tgz", - "integrity": "sha512-iCHfbieL5d1LfOQeeVJEUyD9rTwBcP/fcEbRCfempxTDuqrKpu0AZjLAQHEQa3Yqyj9ORKe2iHfoj4rHLf7xpw==", - "dev": true, - "requires": { - "find-cache-dir": "^1.0.0", - "loader-utils": "^1.0.2", - "mkdirp": "^0.5.1" - }, - "dependencies": { - "find-cache-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", - "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^2.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "requires": { - "find-up": "^2.1.0" - } - } - } - }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-check-es2015-constants": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", - "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-syntax-async-functions": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", - "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=" - }, - "babel-plugin-syntax-exponentiation-operator": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", - "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=" - }, - "babel-plugin-syntax-flow": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", - "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=" - }, - "babel-plugin-syntax-jsx": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", - "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" - }, - "babel-plugin-syntax-trailing-function-commas": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", - "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=" - }, - "babel-plugin-transform-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", - "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", - "requires": { - "babel-helper-remap-async-to-generator": "^6.24.1", - "babel-plugin-syntax-async-functions": "^6.8.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-arrow-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", - "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-block-scoped-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", - "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-block-scoping": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", - "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", - "requires": { - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" - } - }, - "babel-plugin-transform-es2015-classes": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", - "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", - "requires": { - "babel-helper-define-map": "^6.24.1", - "babel-helper-function-name": "^6.24.1", - "babel-helper-optimise-call-expression": "^6.24.1", - "babel-helper-replace-supers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-computed-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", - "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", - "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-destructuring": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", - "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-duplicate-keys": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", - "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-for-of": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", - "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", - "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", - "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-modules-amd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", - "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", - "requires": { - "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.2", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", - "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", - "requires": { - "babel-plugin-transform-strict-mode": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-types": "^6.26.0" - } - }, - "babel-plugin-transform-es2015-modules-systemjs": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", - "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", - "requires": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-modules-umd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", - "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", - "requires": { - "babel-plugin-transform-es2015-modules-amd": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-object-super": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", - "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", - "requires": { - "babel-helper-replace-supers": "^6.24.1", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-parameters": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", - "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", - "requires": { - "babel-helper-call-delegate": "^6.24.1", - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-shorthand-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", - "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-spread": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", - "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-sticky-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", - "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", - "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-template-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", - "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-typeof-symbol": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", - "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-unicode-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", - "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", - "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "regexpu-core": "^2.0.0" - } - }, - "babel-plugin-transform-exponentiation-operator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", - "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", - "requires": { - "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", - "babel-plugin-syntax-exponentiation-operator": "^6.8.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-flow-strip-types": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", - "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", - "requires": { - "babel-plugin-syntax-flow": "^6.18.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-react-display-name": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz", - "integrity": "sha1-Z+K/Hx6ck6sI25Z5LgU5K/LMKNE=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-react-jsx": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz", - "integrity": "sha1-hAoCjn30YN/DotKfDA2R9jduZqM=", - "requires": { - "babel-helper-builder-react-jsx": "^6.24.1", - "babel-plugin-syntax-jsx": "^6.8.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-react-jsx-self": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz", - "integrity": "sha1-322AqdomEqEh5t3XVYvL7PBuY24=", - "requires": { - "babel-plugin-syntax-jsx": "^6.8.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-react-jsx-source": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz", - "integrity": "sha1-ZqwSFT9c0tF7PBkmj0vwGX9E7NY=", - "requires": { - "babel-plugin-syntax-jsx": "^6.8.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-regenerator": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", - "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", - "requires": { - "regenerator-transform": "^0.10.0" - } - }, - "babel-plugin-transform-strict-mode": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", - "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-preset-env": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz", - "integrity": "sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==", - "requires": { - "babel-plugin-check-es2015-constants": "^6.22.0", - "babel-plugin-syntax-trailing-function-commas": "^6.22.0", - "babel-plugin-transform-async-to-generator": "^6.22.0", - "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoping": "^6.23.0", - "babel-plugin-transform-es2015-classes": "^6.23.0", - "babel-plugin-transform-es2015-computed-properties": "^6.22.0", - "babel-plugin-transform-es2015-destructuring": "^6.23.0", - "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0", - "babel-plugin-transform-es2015-for-of": "^6.23.0", - "babel-plugin-transform-es2015-function-name": "^6.22.0", - "babel-plugin-transform-es2015-literals": "^6.22.0", - "babel-plugin-transform-es2015-modules-amd": "^6.22.0", - "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0", - "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0", - "babel-plugin-transform-es2015-modules-umd": "^6.23.0", - "babel-plugin-transform-es2015-object-super": "^6.22.0", - "babel-plugin-transform-es2015-parameters": "^6.23.0", - "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0", - "babel-plugin-transform-es2015-spread": "^6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "^6.22.0", - "babel-plugin-transform-es2015-template-literals": "^6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0", - "babel-plugin-transform-es2015-unicode-regex": "^6.22.0", - "babel-plugin-transform-exponentiation-operator": "^6.22.0", - "babel-plugin-transform-regenerator": "^6.22.0", - "browserslist": "^3.2.6", - "invariant": "^2.2.2", - "semver": "^5.3.0" - } - }, - "babel-preset-flow": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz", - "integrity": "sha1-5xIYiHCFrpoktb5Baa/7WZgWxJ0=", - "requires": { - "babel-plugin-transform-flow-strip-types": "^6.22.0" - } - }, - "babel-preset-react": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-react/-/babel-preset-react-6.24.1.tgz", - "integrity": "sha1-umnfrqRfw+xjm2pOzqbhdwLJE4A=", - "requires": { - "babel-plugin-syntax-jsx": "^6.3.13", - "babel-plugin-transform-react-display-name": "^6.23.0", - "babel-plugin-transform-react-jsx": "^6.24.1", - "babel-plugin-transform-react-jsx-self": "^6.22.0", - "babel-plugin-transform-react-jsx-source": "^6.22.0", - "babel-preset-flow": "^6.23.0" - } - }, - "babel-register": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", - "requires": { - "babel-core": "^6.26.0", - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "home-or-tmp": "^2.0.0", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "source-map-support": "^0.4.15" - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - } - }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - } - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "base64-js": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", - "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", - "dev": true - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true - }, - "bluebird": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", - "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==", - "dev": true - }, - "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", - "dev": true - }, - "boxen": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", - "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", - "dev": true, - "requires": { - "ansi-align": "^2.0.0", - "camelcase": "^4.0.0", - "chalk": "^2.0.1", - "cli-boxes": "^1.0.0", - "string-width": "^2.0.0", - "term-size": "^1.2.0", - "widest-line": "^2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", - "dev": true, - "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "requires": { - "pako": "~1.0.5" - } - }, - "browserslist": { - "version": "3.2.8", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", - "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", - "requires": { - "caniuse-lite": "^1.0.30000844", - "electron-to-chromium": "^1.3.47" - } - }, - "buffer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", - "dev": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "dev": true - }, - "cacache": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.2.tgz", - "integrity": "sha512-ifKgxH2CKhJEg6tNdAwziu6Q33EvuG26tYcda6PT3WKisZcYDXsnEdnRv67Po3yCzFfaSoMjGZzJyD2c3DT1dg==", - "dev": true, - "requires": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - }, - "dependencies": { - "glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "yallist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", - "dev": true - } - } - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30000957", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000957.tgz", - "integrity": "sha512-8wxNrjAzyiHcLXN/iunskqQnJquQQ6VX8JHfW5kLgAPRSiSuKZiNfmIkP5j7jgyXqAQBSoXyJxfnbCFS0ThSiQ==" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "chokidar": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz", - "integrity": "sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "chownr": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.2.tgz", - "integrity": "sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A==", - "dev": true - }, - "chrome-trace-event": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", - "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "cli-boxes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", - "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", - "dev": true - }, - "clipboardy": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-1.2.3.tgz", - "integrity": "sha512-2WNImOvCRe6r63Gk9pShfkwXsVtKCroMAevIbiae021mS850UkWPbevxsBz3tnvjZIEGvlwaqCPsw+4ulzNgJA==", - "dev": true, - "requires": { - "arch": "^2.1.0", - "execa": "^0.8.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", - "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - } - } - }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "commander": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", - "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "compressible": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz", - "integrity": "sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==", - "dev": true, - "requires": { - "mime-db": ">= 1.40.0 < 2" - } - }, - "compression": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz", - "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==", - "dev": true, - "requires": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.14", - "debug": "2.6.9", - "on-headers": "~1.0.1", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true, - "requires": { - "date-now": "^0.1.4" - } - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", - "dev": true - }, - "convert-source-map": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", - "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "create-ecdh": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.0.0" - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "cyclist": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", - "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", - "dev": true - }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", - "dev": true - }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "requires": { - "repeating": "^2.0.0" - } - }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true - }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "electron-to-chromium": { - "version": "1.3.124", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.124.tgz", - "integrity": "sha512-glecGr/kFdfeXUHOHAWvGcXrxNU+1wSO/t5B23tT1dtlvYB26GY8aHzZSWD7HqhqC800Lr+w/hQul6C5AF542w==" - }, - "elliptic": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.0.tgz", - "integrity": "sha512-eFOJTMyCYb7xtE/caJ6JJu+bhi67WCYNbkGSknu20pmM8Ke/bqOfdnZWxyoGN26JgfxTbXrsCkEw4KheCT/KGg==", - "dev": true, - "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - } - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", - "dev": true - }, - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "enhanced-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", - "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", - "tapable": "^1.0.0" - } - }, - "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", - "dev": true, - "requires": { - "prr": "~1.0.1" - } - }, - "es-abstract": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", - "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.0", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "is-callable": "^1.1.4", - "is-regex": "^1.0.4", - "object-keys": "^1.0.12" - } - }, - "es-to-primitive": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", - "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - }, - "eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", - "dev": true, - "requires": { - "estraverse": "^4.1.0" - } - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" - }, - "events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", - "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==", - "dev": true - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "dev": true - }, - "fast-url-parser": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", - "integrity": "sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0=", - "dev": true, - "requires": { - "punycode": "^1.3.2" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - } - } - }, - "figgy-pudding": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", - "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", - "dev": true - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", - "dev": true, - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - } - }, - "flat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", - "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", - "dev": true, - "requires": { - "is-buffer": "~2.0.3" - } - }, - "flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", - "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", - "dev": true, - "optional": true, - "requires": { - "nan": "^2.12.1", - "node-pre-gyp": "^0.12.0" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "debug": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true, - "optional": true - }, - "minipass": { - "version": "2.3.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.3.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "^4.1.0", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.12.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.4.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.6.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "5.7.0", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "yallist": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "dev": true, - "requires": { - "global-prefix": "^3.0.0" - }, - "dependencies": { - "global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "dev": true, - "requires": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - } - } - } - }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - } - }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" - }, - "graceful-fs": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.1.tgz", - "integrity": "sha512-b9usnbDGnD928gJB3LrCmxoibr3VE4U2SMo5PBuBnokWyDADTqDPXg4YpwKF1trpH+UbGp7QLicO3+aWEy0+mw==", - "dev": true - }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", - "dev": true - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.1" - } - }, - "homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dev": true, - "requires": { - "parse-passwd": "^1.0.0" - } - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, - "ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", - "dev": true - }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", - "dev": true - }, - "import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", - "dev": true, - "requires": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "dev": true - }, - "interpret": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", - "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", - "dev": true - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "requires": { - "loose-envify": "^1.0.0" - } - }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-buffer": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz", - "integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==", - "dev": true - }, - "is-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", - "dev": true - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", - "dev": true - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "dev": true, - "requires": { - "has": "^1.0.1" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", - "dev": true, - "requires": { - "has-symbols": "^1.0.0" - } - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" - }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, - "kotlin": { - "version": "1.3.41", - "resolved": "https://registry.npmjs.org/kotlin/-/kotlin-1.3.41.tgz", - "integrity": "sha512-Lo3++B/8B/Eaht5mV5NFlwSDsRjAOh90haopf9YPP0YJcDWdFpQB9yyEucSfuqBSbioHCHx0+ZjQ4tVJ/mYhug==" - }, - "kotlin-test": { - "version": "1.3.41", - "resolved": "https://registry.npmjs.org/kotlin-test/-/kotlin-test-1.3.41.tgz", - "integrity": "sha512-6y5ANRWCXVXw9O14RXKandwr+PiZl3fGjm/07BfmXwTF5VrD5edJjA8tERUf612T35/dV8BAb6Yr/SJr8Q+X0g==", - "requires": { - "kotlin": "1.3.41" - } - }, - "kotlinx-coroutines-core": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/kotlinx-coroutines-core/-/kotlinx-coroutines-core-1.2.2.tgz", - "integrity": "sha512-03ZIn8jrqY98Ysz5K7JavRW+1KxDnw/P/eISH93SQBhioyKeT5sDxGNpoWcJeShJsY0SWymzbxOgQlKcnDJYWg==" - }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "dev": true, - "requires": { - "invert-kv": "^2.0.0" - } - }, - "loader-runner": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", - "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", - "dev": true - }, - "loader-utils": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^2.0.0", - "json5": "^1.0.1" - }, - "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - }, - "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "dev": true, - "requires": { - "chalk": "^2.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } - }, - "mamacro": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", - "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", - "dev": true - }, - "map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, - "requires": { - "p-defer": "^1.0.0" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - } - }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - } - }, - "mime-db": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", - "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", - "dev": true - }, - "mime-types": { - "version": "2.1.24", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", - "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", - "dev": true, - "requires": { - "mime-db": "1.40.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - }, - "mississippi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", - "dev": true, - "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - } - }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "requires": { - "minimist": "0.0.8" - } - }, - "mocha": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.2.0.tgz", - "integrity": "sha512-qwfFgY+7EKAAUAdv7VYMZQknI7YJSGesxHyhn6qD52DV8UcSZs5XwCifcZGMVIE4a5fbmhvbotxC0DLQ0oKohQ==", - "dev": true, - "requires": { - "ansi-colors": "3.2.3", - "browser-stdout": "1.3.1", - "debug": "3.2.6", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "find-up": "3.0.0", - "glob": "7.1.3", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "3.13.1", - "log-symbols": "2.2.0", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "ms": "2.1.1", - "node-environment-flags": "1.0.5", - "object.assign": "4.1.0", - "strip-json-comments": "2.0.1", - "supports-color": "6.0.0", - "which": "1.3.1", - "wide-align": "1.1.3", - "yargs": "13.2.2", - "yargs-parser": "13.0.0", - "yargs-unparser": "1.5.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, - "supports-color": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", - "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "nan": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", - "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", - "dev": true, - "optional": true - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", - "dev": true - }, - "neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", - "dev": true - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "node-environment-flags": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.5.tgz", - "integrity": "sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ==", - "dev": true, - "requires": { - "object.getownpropertydescriptors": "^2.0.3", - "semver": "^5.7.0" - } - }, - "node-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", - "dev": true, - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - } - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "object.getownpropertydescriptors": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", - "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.1" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" - }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" - }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", - "dev": true - }, - "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "pako": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", - "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==", - "dev": true - }, - "parallel-transform": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", - "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", - "dev": true, - "requires": { - "cyclist": "~0.2.2", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - } - }, - "parse-asn1": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", - "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", - "dev": true, - "requires": { - "asn1.js": "^4.0.0", - "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "path-to-regexp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", - "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==", - "dev": true - }, - "pbkdf2": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", - "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", - "dev": true, - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", - "dev": true - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", - "dev": true - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==" - }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - }, - "regenerator-transform": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", - "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", - "requires": { - "babel-runtime": "^6.18.0", - "babel-types": "^6.19.0", - "private": "^0.1.6" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "regexpu-core": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", - "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", - "requires": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" - } - }, - "registry-auth-token": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", - "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", - "dev": true, - "requires": { - "rc": "^1.1.6", - "safe-buffer": "^5.0.1" - } - }, - "registry-url": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", - "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", - "dev": true, - "requires": { - "rc": "^1.0.1" - } - }, - "regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=" - }, - "regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", - "requires": { - "jsesc": "~0.5.0" - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "requires": { - "is-finite": "^1.0.0" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", - "dev": true, - "requires": { - "resolve-from": "^3.0.0" - } - }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - }, - "dependencies": { - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, - "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - } - } - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", - "dev": true, - "requires": { - "aproba": "^1.1.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, - "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" - }, - "serialize-javascript": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.7.0.tgz", - "integrity": "sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA==", - "dev": true - }, - "serve": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/serve/-/serve-11.1.0.tgz", - "integrity": "sha512-+4wpDtOSS+4ZLyDWMxThutA3iOTawX2+yDovOI8cjOUOmemyvNlHyFAsezBlSgbZKTYChI3tzA1Mh0z6XZ62qA==", - "dev": true, - "requires": { - "@zeit/schemas": "2.6.0", - "ajv": "6.5.3", - "arg": "2.0.0", - "boxen": "1.3.0", - "chalk": "2.4.1", - "clipboardy": "1.2.3", - "compression": "1.7.3", - "serve-handler": "6.1.0", - "update-check": "1.5.2" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "serve-handler": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.0.tgz", - "integrity": "sha512-63N075Tn3PsFYcu0NVV7tb367UbiW3gnC+/50ohL4oqOhAG6bmbaWqiRcXQgbzqc0ALBjSAzg7VTfa0Qw4E3hA==", - "dev": true, - "requires": { - "bytes": "3.0.0", - "content-disposition": "0.5.2", - "fast-url-parser": "1.1.3", - "mime-types": "2.1.18", - "minimatch": "3.0.4", - "path-is-inside": "1.0.2", - "path-to-regexp": "2.2.1", - "range-parser": "1.2.0" - }, - "dependencies": { - "mime-db": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", - "dev": true - }, - "mime-types": { - "version": "2.1.18", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", - "dev": true, - "requires": { - "mime-db": "~1.33.0" - } - } - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", - "dev": true, - "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "requires": { - "source-map": "^0.5.6" - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "sprintf-js": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" - }, - "sql.js": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/sql.js/-/sql.js-0.5.0.tgz", - "integrity": "sha1-+IDeoYKAqEDkHfIgnclnQi36jYE=" - }, - "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", - "dev": true, - "requires": { - "figgy-pudding": "^3.5.1" - } - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "dev": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "stream-each": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", - "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, - "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "dev": true, - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - }, - "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true - }, - "term-size": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", - "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", - "dev": true, - "requires": { - "execa": "^0.7.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - } - } - }, - "terser": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.1.4.tgz", - "integrity": "sha512-+ZwXJvdSwbd60jG0Illav0F06GDJF0R4ydZ21Q3wGAFKoBGyJGo34F63vzJHgvYxc1ukOtIjvwEvl9MkjzM6Pg==", - "dev": true, - "requires": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - } - } - }, - "terser-webpack-plugin": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.1.tgz", - "integrity": "sha512-ZXmmfiwtCLfz8WKZyYUuuHf3dMYEjg8NrjHMb0JqHVHVOSkzp3cW2/XG1fP3tRhqEqSzMwzzRQGtAPbs4Cncxg==", - "dev": true, - "requires": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^1.7.0", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "timers-browserify": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", - "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", - "dev": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" - }, - "tslib": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", - "dev": true - }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } - }, - "unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dev": true, - "requires": { - "unique-slug": "^2.0.0" - } - }, - "unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } - } - }, - "upath": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", - "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==", - "dev": true - }, - "update-check": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/update-check/-/update-check-1.5.2.tgz", - "integrity": "sha512-1TrmYLuLj/5ZovwUS7fFd1jMH3NnFDN1y1A8dboedIDt7zs/zJMo6TwwlhYKkSeEwzleeiSBV5/3c9ufAQWDaQ==", - "dev": true, - "requires": { - "registry-auth-token": "3.3.2", - "registry-url": "3.1.0" - } - }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } - } - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, - "util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "dev": true, - "requires": { - "inherits": "2.0.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - } - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "v8-compile-cache": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz", - "integrity": "sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==", - "dev": true - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "dev": true - }, - "vm-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.0.tgz", - "integrity": "sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw==", - "dev": true - }, - "watchpack": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", - "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", - "dev": true, - "requires": { - "chokidar": "^2.0.2", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" - } - }, - "webpack": { - "version": "4.39.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.39.1.tgz", - "integrity": "sha512-/LAb2TJ2z+eVwisldp3dqTEoNhzp/TLCZlmZm3GGGAlnfIWDgOEE758j/9atklNLfRyhKbZTCOIoPqLJXeBLbQ==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/wasm-edit": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5", - "acorn": "^6.2.1", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.1.0", - "eslint-scope": "^4.0.3", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.4.0", - "loader-utils": "^1.2.3", - "memory-fs": "^0.4.1", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.1", - "neo-async": "^2.6.1", - "node-libs-browser": "^2.2.1", - "schema-utils": "^1.0.0", - "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.1", - "watchpack": "^1.6.0", - "webpack-sources": "^1.4.1" - }, - "dependencies": { - "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - } - } - }, - "webpack-cli": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.6.tgz", - "integrity": "sha512-0vEa83M7kJtxK/jUhlpZ27WHIOndz5mghWL2O53kiDoA9DIxSKnfqB92LoqEn77cT4f3H2cZm1BMEat/6AZz3A==", - "dev": true, - "requires": { - "chalk": "2.4.2", - "cross-spawn": "6.0.5", - "enhanced-resolve": "4.1.0", - "findup-sync": "3.0.0", - "global-modules": "2.0.0", - "import-local": "2.0.0", - "interpret": "1.2.0", - "loader-utils": "1.2.3", - "supports-color": "6.1.0", - "v8-compile-cache": "2.0.3", - "yargs": "13.2.4" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - } - }, - "yargs": { - "version": "13.2.4", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz", - "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==", - "dev": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "os-locale": "^3.1.0", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.0" - } - }, - "yargs-parser": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", - "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "dev": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "widest-line": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", - "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", - "dev": true, - "requires": { - "string-width": "^2.1.1" - } - }, - "worker-farm": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", - "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", - "dev": true, - "requires": { - "errno": "~0.1.7" - } - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true - }, - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", - "dev": true - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - }, - "yargs": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.2.tgz", - "integrity": "sha512-WyEoxgyTD3w5XRpAQNYUB9ycVH/PQrToaTXdYXRdOXvEy1l19br+VJsc0vcO8PTGg5ro/l/GY7F/JMEBmI0BxA==", - "dev": true, - "requires": { - "cliui": "^4.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "os-locale": "^3.1.0", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "yargs-parser": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.0.0.tgz", - "integrity": "sha512-w2LXjoL8oRdRQN+hOyppuXs+V/fVAYtpcrRxZuF7Kt/Oc+Jr2uAcVntaUTNT6w5ihoWfFDpNY8CPx1QskxZ/pw==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "yargs-unparser": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.5.0.tgz", - "integrity": "sha512-HK25qidFTCVuj/D1VfNiEndpLIeJN78aqgR23nL3y4N0U/91cOAzqfHlF8n2BvoNDcZmJKin3ddNSvOxSr8flw==", - "dev": true, - "requires": { - "flat": "^4.1.0", - "lodash": "^4.17.11", - "yargs": "^12.0.5" - }, - "dependencies": { - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" - } - }, - "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - } - } -} diff --git a/uhabits-web/package.json b/uhabits-web/package.json deleted file mode 100644 index 421742cd3..000000000 --- a/uhabits-web/package.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "loop-habit-tracker", - "version": "2.0.0", - "description": "App for creating and maintaining good habits", - "repository": { - "type": "git", - "url": "git@github.com:iSoron/uhabits.git" - }, - "main": "index.js", - "scripts": { - "compile": "webpack", - "test": "mocha" - }, - "keywords": [], - "author": "", - "license": "GPL-3.0-or-later", - "dependencies": { - "babel-core": "^6.26.3", - "babel-preset-env": "^1.7.0", - "babel-preset-react": "^6.24.1", - "kotlin": "^1.3.41", - "kotlin-test": "^1.3.41", - "kotlinx-coroutines-core": "^1.2.2", - "sprintf-js": "^1.1.2", - "sql.js": "^0.5.0" - }, - "devDependencies": { - "babel-loader": "^7.1.5", - "mocha": "^6.2.0", - "serve": "^11.1.0", - "webpack": "^4.39.1", - "webpack-cli": "^3.3.6" - } -} diff --git a/uhabits-web/src/main/index.js b/uhabits-web/src/main/index.js deleted file mode 100644 index a420803c0..000000000 --- a/uhabits-web/src/main/index.js +++ /dev/null @@ -1 +0,0 @@ -console.log('Hello World!'); diff --git a/uhabits-web/src/test/index.html b/uhabits-web/src/test/index.html deleted file mode 100644 index 5bfeb0601..000000000 --- a/uhabits-web/src/test/index.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - Mocha Tests - - - - - - - - - -   -   -   - -

    - - - - - diff --git a/uhabits-web/src/test/index.js b/uhabits-web/src/test/index.js deleted file mode 100644 index c9f32ca2f..000000000 --- a/uhabits-web/src/test/index.js +++ /dev/null @@ -1,3 +0,0 @@ -let assert = require('assert'); -let coreTest = require('uhabits-core-legacy_test'); -document.coreTest = coreTest;

    @Uc@SlQL7H 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≠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