From b589d487a4b15508ecf53366473835feabb2e15b Mon Sep 17 00:00:00 2001 From: Aaron Leopold <36278431+aaronleopold@users.noreply.github.com> Date: Fri, 9 Feb 2024 18:23:42 -0700 Subject: [PATCH 01/30] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Scanner=20and=20back?= =?UTF-8?q?ground=20task=20rewrite=20(#265)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * :tada: Start stateful job rewrite scuffed * :construction: Restore job state Lots of foundational work * woof * Fix incorrect schema items * Update serde and tokio * Add worker count config variable * Add dunder directory for personal progress * More progress * Further JobManager progress * Additional structuing on new manager. * Additional logic for worker * Update cargo lock * Create thumbnail job example * Add job manager to context and prune context struct. * General cleanup * nothing but scuff * roughing out scanner with new system * comment * little bit by little bit * Tweak scanner logic and add bench * WIP use criterion for benches * Benchmarks work! * WIP subtasks * WIP persist completed state and main run loop * WIP use new impl * WIP progress emitting * WIP convert thumbnail job * Push up last nights marathon * Live log viewer * Add migration * WIP get UI job tracking functional again * WIP cleanup and refactor * WIP pause/resume * WIP cleanup and refactor * Refactor, reorg, clean * Fix warning * WIP: start using jms thumbnail manager * Use the thumbnail manager during job * WIP impl for missing series_job task * WIP: consolidate * WIP: consolidate * Commit and push cleanup from last night, prep for experimental --------- Co-authored-by: Joseph Micheli --- .github/actions/build-docker/action.yml | 2 +- .github/workflows/experimental.yml | 34 + .gitignore | 1 + .prettierignore | 2 +- Cargo.lock | 285 +++++- Cargo.toml | 2 + README.md | 8 +- apps/desktop/package.json | 2 +- apps/desktop/src/App.tsx | 6 +- apps/desktop/tsconfig.json | 6 +- apps/desktop/vite.config.ts | 2 +- apps/server/Cargo.toml | 4 +- apps/server/src/config/jwt.rs | 55 ++ apps/server/src/config/mod.rs | 1 + apps/server/src/config/session/cleanup.rs | 74 +- apps/server/src/config/session/store.rs | 2 +- apps/server/src/errors.rs | 197 ++-- apps/server/src/filter/basic_filter.rs | 19 +- apps/server/src/http_server.rs | 12 +- apps/server/src/middleware/auth.rs | 125 +-- apps/server/src/middleware/logging.rs | 4 +- apps/server/src/routers/api/v1/auth.rs | 30 +- apps/server/src/routers/api/v1/book_club.rs | 106 +-- apps/server/src/routers/api/v1/epub.rs | 30 +- apps/server/src/routers/api/v1/filesystem.rs | 8 +- apps/server/src/routers/api/v1/job.rs | 74 +- apps/server/src/routers/api/v1/library.rs | 180 ++-- apps/server/src/routers/api/v1/log.rs | 192 ++-- apps/server/src/routers/api/v1/media.rs | 108 +-- apps/server/src/routers/api/v1/metadata.rs | 66 +- apps/server/src/routers/api/v1/mod.rs | 10 +- .../server/src/routers/api/v1/reading_list.rs | 32 +- apps/server/src/routers/api/v1/series.rs | 111 ++- apps/server/src/routers/api/v1/smart_list.rs | 80 +- apps/server/src/routers/api/v1/tag.rs | 12 +- apps/server/src/routers/api/v1/user.rs | 106 +-- apps/server/src/routers/mod.rs | 2 +- apps/server/src/routers/opds.rs | 54 +- apps/server/src/routers/utoipa.rs | 8 +- apps/server/src/routers/ws.rs | 5 +- apps/server/src/utils/auth.rs | 26 +- apps/server/src/utils/date.rs | 6 +- apps/server/src/utils/upload.rs | 14 +- apps/web/package.json | 2 +- apps/web/src/App.tsx | 4 +- apps/web/tsconfig.json | 6 +- apps/web/vite.config.ts | 2 +- core/Cargo.toml | 11 +- core/benches/bench_main.rs | 7 + core/benches/benchmarks/library_scanner.rs | 306 +++++++ core/benches/benchmarks/mod.rs | 1 + core/benches/data/book.epub | Bin 0 -> 189886 bytes .../space-book.cbz => benches/data/book.rar} | Bin 31009 -> 30820 bytes core/benches/data/book.zip | Bin 0 -> 463325 bytes core/benches/data/mock-stump.toml | 8 + core/integration-tests/data/book.epub | Bin 591584 -> 189886 bytes core/integration-tests/data/book.rar | Bin 0 -> 30820 bytes core/integration-tests/data/book.zip | Bin 31009 -> 463325 bytes core/integration-tests/data/duck-book.zip | Bin 159567 -> 0 bytes .../migration.sql | 62 ++ .../migration.sql | 2 + core/prisma/schema.prisma | 34 +- core/src/config/logging.rs | 101 ++- core/src/config/stump_config.rs | 83 +- core/src/context.rs | 134 ++- core/src/db/entity/common.rs | 1 + core/src/db/entity/job.rs | 90 ++ core/src/db/entity/log.rs | 66 +- core/src/db/entity/mod.rs | 2 + core/src/db/query/ordering.rs | 52 +- core/src/error.rs | 2 +- core/src/event.rs | 22 + core/src/event/event_manager.rs | 100 --- core/src/event/mod.rs | 93 -- core/src/filesystem/common.rs | 29 +- core/src/filesystem/content_type.rs | 6 +- core/src/filesystem/image/mod.rs | 5 +- .../image/thumbnail/generation_job.rs | 280 ++++++ .../src/filesystem/image/thumbnail/manager.rs | 101 +++ .../image/{thumbnail.rs => thumbnail/mod.rs} | 63 +- core/src/filesystem/image/thumbnail_job.rs | 364 -------- core/src/filesystem/media/epub.rs | 3 +- .../filesystem/scanner/library_scan_job.rs | 639 +++++++++++++ .../src/filesystem/scanner/library_scanner.rs | 334 ------- core/src/filesystem/scanner/mod.rs | 12 +- .../src/filesystem/scanner/series_scan_job.rs | 346 +++++++ core/src/filesystem/scanner/series_scanner.rs | 366 -------- core/src/filesystem/scanner/utils.rs | 402 +++++++-- core/src/filesystem/scanner/walk.rs | 330 +++++++ core/src/job/controller.rs | 139 +++ core/src/job/error.rs | 59 ++ core/src/job/executor.rs | 180 ---- core/src/job/job_manager.rs | 327 ------- core/src/job/manager.rs | 212 +++++ core/src/job/mod.rs | 848 +++++++++++++++--- core/src/job/progress.rs | 118 +++ core/src/job/scheduler.rs | 19 +- core/src/job/task.rs | 92 ++ core/src/job/utils.rs | 98 -- core/src/job/worker.rs | 558 ++++++++++-- core/src/lib.rs | 71 +- core/src/utils.rs | 11 + crowdin.yml | 4 +- docs/pages/contributing.mdx | 2 +- interface/README.md | 11 - interface/src/components/jobs/JobOverlay.tsx | 62 -- .../scenes/onboarding/OnBoardingRouter.tsx | 17 - .../scenes/settings/app/AppSettingsRouter.tsx | 18 - .../settings/server/ServerSettingsRouter.tsx | 20 - interface/tailwind.config.js | 2 - package.json | 9 +- packages/api/src/auth.ts | 8 +- packages/api/src/bookClub.ts | 38 +- packages/api/src/epub.ts | 14 +- packages/api/src/filesystem.ts | 4 +- packages/api/src/index.ts | 4 +- packages/api/src/job.ts | 18 +- packages/api/src/library.ts | 20 +- packages/api/src/log.ts | 24 +- packages/api/src/media.ts | 21 +- packages/api/src/metadata.ts | 24 +- packages/api/src/series.ts | 16 +- packages/api/src/server.ts | 6 +- packages/api/src/smartList.ts | 20 +- packages/api/src/tag.ts | 6 +- packages/api/src/types.ts | 6 +- packages/api/src/user.ts | 30 +- {interface => packages/browser}/package.json | 9 +- .../public/assets/fallbacks/image-file.svg | 0 .../browser}/public/assets/favicon.ico | Bin .../browser}/public/assets/favicon.png | Bin .../browser}/public/assets/icons/archive.svg | 0 .../browser}/public/assets/icons/epub.svg | 0 .../browser}/public/assets/icons/folder.png | Bin .../browser}/public/assets/icons/pdf.svg | 0 .../assets/stump-logo--irregular-lg.png | Bin .../assets/stump-logo--irregular-sm.png | Bin .../assets/stump-logo--irregular-xs.png | Bin .../public/assets/stump-logo--irregular.png | Bin .../public/assets/stump-logo--square.png | Bin .../browser}/public/assets/stump-splash.gif | Bin .../browser}/public/favicon.ico | Bin {interface => packages/browser}/src/App.tsx | 72 +- .../browser}/src/AppLayout.tsx | 7 +- .../browser}/src/AppRouter.tsx | 32 +- .../components/BackgroundFetchIndicator.tsx | 0 .../src/components/DirectoryPickerModal.tsx | 0 .../browser}/src/components/ErrorFallback.tsx | 0 .../src/components/FileStatusBadge.tsx | 0 .../src/components/GenericEmptyState.tsx | 0 .../src/components/HorizontalCardList.tsx | 0 .../browser}/src/components/LazyImage.tsx | 0 .../browser}/src/components/LinkBadge.tsx | 0 .../browser}/src/components/ListItem.tsx | 0 .../browser}/src/components/Notifications.tsx | 0 .../src/components/PagePopoverForm.tsx | 0 .../browser}/src/components/Pagination.tsx | 0 .../browser}/src/components/ReadMore.tsx | 0 .../src/components/RouteLoadingIndicator.tsx | 0 .../components/ServerOwnerRouteWrapper.tsx | 0 .../src/components/ServerStatusOverlay.tsx | 13 +- .../browser}/src/components/ServerUrlForm.tsx | 6 +- .../browser}/src/components/TagSelect.tsx | 0 .../src/components/UpdateAvailableOverlay.tsx | 0 .../browser}/src/components/UserMenu.tsx | 0 .../src/components/container/Container.tsx | 0 .../components/container/ContentContainer.tsx | 0 .../components/container/SceneContainer.tsx | 0 .../src/components/container/index.ts | 0 .../components/container/useSceneContainer.ts | 0 .../src/components/filters/FilterDisplay.tsx | 0 .../src/components/filters/FilterProvider.tsx | 0 .../components/filters/FilterSlideOver.tsx | 0 .../src/components/filters/FilterToolBar.tsx | 0 .../src/components/filters/OrderBy.tsx | 0 .../src/components/filters/Search.tsx | 0 .../src/components/filters/context.ts | 0 .../filters/form/AgeRatingFilter.tsx | 0 .../filters/form/ExtensionSelect.tsx | 0 .../filters/form/GenericFilterMultiselect.tsx | 0 .../filters/form/MediaFilterForm.tsx | 0 .../filters/form/OrderByDirection.tsx | 0 .../components/filters/form/OrderBySelect.tsx | 0 .../filters/form/ReadStatusSelect.tsx | 0 .../filters/form/SeriesFilterForm.tsx | 0 .../src/components/filters/form/index.ts | 0 .../src/components/filters/form/utils.ts | 0 .../browser}/src/components/filters/index.ts | 0 .../src/components/jobs/JobOverlay.tsx | 90 ++ .../browser}/src/components/jobs/utils.ts | 0 .../library/DeleteLibraryConfirmation.tsx | 0 .../components/library/LastVisitedLibrary.tsx | 0 .../src/components/library/LibrariesStats.tsx | 0 .../browser}/src/components/library/index.ts | 0 .../components/markdown/MarkdownEditor.tsx | 0 .../components/markdown/MarkdownPreview.tsx | 0 .../src/components/media/BookSearch.tsx | 0 .../components/media/BookSearchOverlay.tsx | 0 .../src/components/media/MediaCard.tsx | 0 .../src/components/media/MediaList.tsx | 0 .../src/components/navigation/index.ts | 0 .../navigation/mobile/LayoutModeButtons.tsx | 0 .../navigation/mobile/MobileSheet.tsx | 0 .../navigation/mobile/MobileTopBar.tsx | 0 .../navigation/mobile/NavigationButtons.tsx | 0 .../src/components/navigation/mobile/index.ts | 0 .../navigation/sidebar/ApplicationVersion.tsx | 0 .../components/navigation/sidebar/Logout.tsx | 0 .../navigation/sidebar/Settings.tsx | 0 .../components/navigation/sidebar/SideBar.tsx | 7 +- .../navigation/sidebar/SideBarButtonLink.tsx | 0 .../navigation/sidebar/SideBarFooter.tsx | 0 .../components/navigation/sidebar/SignOut.tsx | 0 .../components/navigation/sidebar/index.ts | 0 .../sections/book-club/BookClubEmoji.tsx | 0 .../book-club/BookClubSideBarSection.tsx | 0 .../navigation/sidebar/sections/index.ts | 0 .../sections/library-section/LibraryEmoji.tsx | 0 .../library-section/LibraryOptionsMenu.tsx | 0 .../library-section/LibrarySideBarSection.tsx | 0 .../smart-list/SmartListSideBarSection.tsx | 0 .../components/navigation/topbar/TopBar.tsx | 0 .../navigation/topbar/TopBarButtonItem.tsx | 0 .../navigation/topbar/TopBarLinkListItem.tsx | 0 .../navigation/topbar/TopBarNavLink.tsx | 0 .../src/components/navigation/topbar/index.ts | 0 .../navigation/topbar/sections/UserMenu.tsx | 0 .../book-club/BookClubNavigationItem.tsx | 0 .../topbar/sections/book-club/index.ts | 0 .../navigation/topbar/sections/index.ts | 0 .../library/LibraryNavigationItem.tsx | 0 .../topbar/sections/library/index.ts | 0 .../settings/SettingsNavigationItem.tsx | 4 +- .../topbar/sections/settings/index.ts | 0 .../components/readers/epub/EpubJsReader.tsx | 0 .../readers/epub/EpubReaderContainer.tsx | 0 .../readers/epub/EpubReaderFooter.tsx | 0 .../readers/epub/EpubReaderHeader.tsx | 0 .../readers/epub/EpubStreamReader.tsx | 0 .../src/components/readers/epub/context.ts | 0 .../readers/epub/controls/BookmarkToggle.tsx | 0 .../readers/epub/controls/ControlButton.tsx | 0 .../epub/controls/ControlsContainer.tsx | 0 .../epub/controls/EpubNavigationControls.tsx | 0 .../readers/epub/controls/FontSizeControl.tsx | 0 .../epub/controls/FullScreenToggle.tsx | 0 .../epub/controls/ReadingDirection.tsx | 0 .../readers/epub/controls/ThemeControls.tsx | 0 .../components/readers/epub/controls/index.ts | 0 .../readers/epub/controls/useEpubBookmark.ts | 0 .../readers/epub/locations/Bookmarks.tsx | 0 .../epub/locations/LocationManager.tsx | 0 .../epub/locations/TableOfContents.tsx | 0 .../readers/epub/locations/index.ts | 0 .../src/components/readers/epub/themes.ts | 0 .../image-based/AnimatedPagedReader.tsx | 0 .../readers/image-based/PagedReader.tsx | 0 .../readers/image-based/Toolbar.tsx | 0 .../readers/pdf/NativePDFViewer.tsx | 0 .../src/components/series/SeriesCard.tsx | 0 .../src/components/series/SeriesGrid.tsx | 0 .../src/components/series/SeriesList.tsx | 0 .../src/components/table/Pagination.tsx | 1 + .../src/components/table/SortIcon.tsx | 0 .../browser}/src/components/table/Table.tsx | 8 +- .../src/components/table/TableFilterInput.tsx | 0 .../components/table/TableFilterSelect.tsx | 0 .../browser}/src/components/table/index.ts | 0 .../browser}/src/components/tags/Tag.tsx | 0 .../browser}/src/components/tags/TagList.tsx | 0 .../thumbnail/EditThumbnailDropdown.tsx | 0 .../components/thumbnail/UploadImageModal.tsx | 0 .../browser}/src/context.ts | 0 .../browser}/src/hooks/useIsInView.ts | 0 .../browser}/src/hooks/useLocale.ts | 0 .../browser}/src/hooks/usePageParam.ts | 0 .../browser}/src/hooks/usePagination.ts | 0 .../browser}/src/hooks/usePreloadPage.ts | 0 .../browser}/src/hooks/usePressAndHold.ts | 0 .../browser}/src/hooks/useSyncParams.ts | 0 .../browser}/src/i18n/LocaleProvider.tsx | 0 .../browser}/src/i18n/config.ts | 0 .../browser}/src/i18n/context.ts | 0 .../browser}/src/i18n/index.ts | 0 .../browser}/src/i18n/locales/af.json | 0 .../browser}/src/i18n/locales/ar.json | 0 .../browser}/src/i18n/locales/ca.json | 0 .../browser}/src/i18n/locales/cs.json | 0 .../browser}/src/i18n/locales/da.json | 0 .../browser}/src/i18n/locales/de.json | 0 .../browser}/src/i18n/locales/el.json | 0 .../browser}/src/i18n/locales/en.json | 46 +- .../browser}/src/i18n/locales/es.json | 0 .../browser}/src/i18n/locales/fi.json | 0 .../browser}/src/i18n/locales/fr.json | 0 .../browser}/src/i18n/locales/he.json | 0 .../browser}/src/i18n/locales/hu.json | 0 .../browser}/src/i18n/locales/index.ts | 0 .../browser}/src/i18n/locales/it.json | 0 .../browser}/src/i18n/locales/ja.json | 0 .../browser}/src/i18n/locales/ko.json | 0 .../browser}/src/i18n/locales/nl.json | 0 .../browser}/src/i18n/locales/no.json | 0 .../browser}/src/i18n/locales/pl.json | 0 .../browser}/src/i18n/locales/pt.json | 0 .../browser}/src/i18n/locales/ro.json | 0 .../browser}/src/i18n/locales/ru.json | 0 .../browser}/src/i18n/locales/sr.json | 0 .../browser}/src/i18n/locales/sv.json | 0 .../browser}/src/i18n/locales/tr.json | 0 .../browser}/src/i18n/locales/uk.json | 0 .../browser}/src/i18n/locales/vi.json | 0 .../browser}/src/i18n/locales/zh.json | 0 {interface => packages/browser}/src/index.ts | 4 +- {interface => packages/browser}/src/paths.ts | 2 + .../src/scenes/auth/LoginOrClaimScene.tsx | 0 .../src/scenes/book-club/BookClubRouter.tsx | 21 +- .../scenes/book-club/UserBookClubsScene.tsx | 0 .../create-club/CreateBookClubForm.tsx | 0 .../create-club/CreateBookClubScene.tsx | 0 .../create-club/CreatorPreferences.tsx | 0 .../book-club/create-club/RoleMappingForm.tsx | 0 .../explore/BookClubExploreScene.tsx | 0 .../scenes/book-club/home/BookClubHeader.tsx | 0 .../book-club/home/BookClubHomeLayout.tsx | 0 .../book-club/home/BookClubNavigation.tsx | 0 .../src/scenes/book-club/home/context.ts | 0 .../chat-board/BookClubChatBoardScene.tsx | 0 .../home/tabs/chat-board/ChatMessage.tsx | 0 .../tabs/members/BookClubMembersScene.tsx | 0 .../tabs/overview/BookClubOverviewScene.tsx | 0 .../overview/BookClubScheduleTimeline.tsx | 0 .../overview/BookClubScheduleTimelineItem.tsx | 0 .../tabs/settings/BookClubSettingsScene.tsx | 0 .../home/tabs/settings/MemberSpecDisplay.tsx | 0 .../tabs/settings/scheduler/AddBookCard.tsx | 0 .../scheduler/BookClubSchedulerScene.tsx | 0 .../scheduler/CreateOrAddToScheduleForm.tsx | 0 .../book/BookCompletionToggleButton.tsx | 0 .../src/scenes/book/BookFileInformation.tsx | 0 .../scenes/book/BookLibrarySeriesLinks.tsx | 0 .../src/scenes/book/BookOverviewScene.tsx | 0 .../src/scenes/book/BookReaderLink.tsx | 0 .../src/scenes/book/BookReaderScene.tsx | 0 .../browser}/src/scenes/book/BookRouter.tsx | 18 +- .../src/scenes/book/BookSearchScene.tsx | 0 .../src/scenes/book/BooksAfterCursor.tsx | 0 .../src/scenes/book/DownloadMediaButton.tsx | 0 .../src/scenes/book/EpubReaderScene.tsx | 0 .../src/scenes/book/PDFReaderScene.tsx | 0 .../book/management/BookManagementScene.tsx | 0 .../scenes/book/management/BookPageGrid.tsx | 0 .../book/management/BookThumbnailSelector.tsx | 0 .../browser}/src/scenes/error/FourOhFour.tsx | 0 .../error/ServerConnectionErrorScene.tsx | 13 +- .../src/scenes/home/ContinueReading.tsx | 0 .../browser}/src/scenes/home/HomeScene.tsx | 0 .../browser}/src/scenes/home/NoLibraries.tsx | 0 .../src/scenes/home/RecentlyAddedMedia.tsx | 0 .../src/scenes/home/RecentlyAddedSeries.tsx | 0 .../scenes/library/LibraryOverviewScene.tsx | 0 .../library/LibraryOverviewTitleSection.tsx | 0 .../src/scenes/library/LibraryRouter.tsx | 15 +- .../scenes/library/explorer/FileExplorer.tsx | 0 .../library/explorer/FileExplorerFooter.tsx | 0 .../library/explorer/FileExplorerHeader.tsx | 0 .../explorer/FileExplorerNavigation.tsx | 5 +- .../library/explorer/LibraryExplorerScene.tsx | 0 .../src/scenes/library/explorer/context.ts | 0 .../library/management/CleanLibrary.tsx | 0 .../management/DeleteLibraryThumbnails.tsx | 0 .../library/management/LibraryAdminLayout.tsx | 0 .../management/LibraryAdminSideBar.tsx | 0 .../library/management/LibrarySeriesGrid.tsx | 0 .../management/LibraryThumbnailSelector.tsx | 0 .../library/management/QuickActions.tsx | 0 .../management/RegenerateThumbnails.tsx | 0 .../src/scenes/library/management/context.ts | 0 .../create-or-update/CreateLibraryScene.tsx | 0 .../create-or-update/EditLibraryScene.tsx | 0 .../form/CreateOrUpdateLibraryForm.tsx | 6 +- .../management/create-or-update/form/index.ts | 0 .../form/sections/BasicLibraryInformation.tsx | 0 .../form/sections/FileConversionOptions.tsx | 0 .../form/sections/LibraryPattern.tsx | 0 .../form/sections/ScanMode.tsx | 0 .../form/sections/ThumbnailConfig.tsx | 0 .../create-or-update/form/sections/index.ts | 0 .../scenes/onboarding/OnBoardingRouter.tsx | 14 + .../src/scenes/onboarding/OnBoardingScene.tsx | 0 .../scenes/series/DownloadSeriesButton.tsx | 0 .../browser}/src/scenes/series/MediaGrid.tsx | 0 .../src/scenes/series/SeriesLibraryLink.tsx | 0 .../src/scenes/series/SeriesOverviewScene.tsx | 0 .../series/SeriesOverviewTitleSection.tsx | 0 .../src/scenes/series/SeriesRouter.tsx | 10 +- .../scenes/series/UpNextInSeriesButton.tsx | 0 .../browser}/src/scenes/series/context.ts | 0 .../series/management/SeriesBookGrid.tsx | 0 .../management/SeriesManagementScene.tsx | 0 .../management/SeriesThumbnailSelector.tsx | 0 .../src/scenes/settings/SettingsHeader.tsx | 0 .../src/scenes/settings/SettingsLayout.tsx | 0 .../scenes/settings/SettingsNavigation.tsx | 5 +- .../src/scenes/settings/SettingsRouter.tsx | 4 +- .../src/scenes/settings/SettingsSideBar.tsx | 4 +- .../scenes/settings/SettingsSideBarLink.tsx | 0 .../scenes/settings/app/AppSettingsRouter.tsx | 14 + .../appearance/AppearanceSettingsScene.tsx | 0 .../appearance/DisplaySpacingPreference.tsx | 0 .../app/appearance/DoubleSidebarToggle.tsx | 0 .../app/appearance/HideScrollbarToggle.tsx | 0 .../app/appearance/MaxWidthPreference.tsx | 0 .../app/appearance/PreferColorToggle.tsx | 0 .../app/appearance/PreferenceToggle.tsx | 0 .../PrimaryNavigationPreference.tsx | 0 .../app/appearance/QueryIndicatorToggle.tsx | 0 .../ReplacePrimarySidebarToggle.tsx | 0 .../settings/app/appearance/ThemeSelect.tsx | 0 .../app/desktop/DesktopSettingsScene.tsx | 0 .../app/desktop/DiscordPresenceSwitch.tsx | 7 +- .../settings/app/general/AvatarPicker.tsx | 0 .../app/general/GeneralSettingsScene.tsx | 0 .../app/general/LocalePreferences.tsx | 0 .../settings/app/general/LocaleSelector.tsx | 0 .../settings/app/general/ProfileForm.tsx | 0 .../browser}/src/scenes/settings/app/index.ts | 0 .../browser}/src/scenes/settings/index.ts | 0 .../browser}/src/scenes/settings/routes.ts | 19 +- .../settings/server/ServerSettingsRouter.tsx | 19 + .../settings/server/ServerSettingsScene.tsx | 0 .../general/GeneralServerSettingsScene.tsx | 7 +- .../server/general/ServerInfoSection.tsx | 69 ++ .../src/scenes/settings/server/index.ts | 0 .../settings/server/jobs/DeleteAllSection.tsx | 0 .../settings/server/jobs/JobActionMenu.tsx | 61 +- .../settings/server/jobs/JobDataInspector.tsx | 33 + .../settings/server/jobs/JobScheduler.tsx | 0 .../settings/server/jobs/JobSettingsScene.tsx | 11 +- .../scenes/settings/server/jobs/JobTable.tsx | 27 +- .../server/jobs/RunningJobElapsedTime.tsx | 4 +- .../scenes/settings/server/jobs/context.ts | 4 +- .../settings/server/logs/ServerLogsScene.tsx | 26 + .../server/logs/live-logs/LiveLogsFeed.tsx | 79 ++ .../server/logs/live-logs/LiveLogsSection.tsx | 27 + .../settings/server/logs/live-logs/index.ts | 1 + .../logs/persisted-logs/LogLevelBadge.tsx | 24 + .../persisted-logs/PersistedLogsSection.tsx | 22 + .../persisted-logs/PersistedLogsTable.tsx | 146 +++ .../server/logs/persisted-logs/index.ts | 1 + .../settings/server/users/UsersRouter.tsx | 9 +- .../settings/server/users/UsersScene.tsx | 0 .../settings/server/users/UsersStats.tsx | 0 .../scenes/settings/server/users/context.ts | 0 .../users/create-or-update/AccountDetails.tsx | 0 .../CreateOrUpdateUserForm.tsx | 0 .../create-or-update/CreateUserScene.tsx | 0 .../create-or-update/MaxSessionsAllowed.tsx | 0 .../create-or-update/UpdateUserScene.tsx | 0 .../create-or-update/UserPermissionsForm.tsx | 0 .../create-or-update/UserRestrictionsForm.tsx | 0 .../src/scenes/settings/server/users/index.ts | 0 .../login-activity/ClearActivitySection.tsx | 0 .../login-activity/LoginActivitySection.tsx | 7 +- .../login-activity/LoginActivityTable.tsx | 8 +- .../users/user-table/DeleteUserModal.tsx | 0 .../users/user-table/InspectUserSlideOver.tsx | 0 .../users/user-table/UserActionMenu.tsx | 0 .../server/users/user-table/UserTable.tsx | 0 .../users/user-table/UserTableSection.tsx | 9 +- .../server/users/user-table/UsernameRow.tsx | 0 .../src/scenes/settings/useSettingsRoutes.ts | 0 .../src/scenes/smart-list/SmartListCard.tsx | 0 .../src/scenes/smart-list/SmartListRouter.tsx | 9 +- .../scenes/smart-list/UserSmartListHeader.tsx | 0 .../scenes/smart-list/UserSmartListLayout.tsx | 0 .../smart-list/UserSmartListNavigation.tsx | 0 .../scenes/smart-list/UserSmartListRouter.tsx | 9 +- .../scenes/smart-list/UserSmartListsScene.tsx | 0 .../browser}/src/scenes/smart-list/context.ts | 0 .../CreateSmartListHeader.tsx | 0 .../create-or-update/CreateSmartListScene.tsx | 0 .../create-or-update/form/AccessSettings.tsx | 0 .../create-or-update/form/BasicDetails.tsx | 0 .../form/CreateSmartListForm.tsx | 0 .../form/FilterConfiguration.tsx | 0 .../smart-list/create-or-update/form/index.ts | 0 .../create-or-update/form/schema.ts | 0 .../browser}/src/scenes/smart-list/index.ts | 0 .../items/UserSmartListItemsScene.tsx | 0 .../src/scenes/smart-list/items/index.ts | 0 .../items/list/GroupedSmartListItemList.tsx | 0 .../GroupedSmartListItemListGroupContent.tsx | 0 .../src/scenes/smart-list/items/list/index.ts | 0 .../smart-list/items/table/BookLinksCell.tsx | 0 .../smart-list/items/table/CoverImageCell.tsx | 0 .../items/table/CreateOrUpdateTableView.tsx | 0 .../items/table/FilterBottomDrawer.tsx | 0 .../items/table/GroupedSmartListItemTable.tsx | 0 .../items/table/SavedViewSelector.tsx | 0 .../items/table/SmartListBookTable.tsx | 0 .../items/table/TableColumnsBottomDrawer.tsx | 0 .../items/table/TableHeaderActions.tsx | 0 .../items/table/ViewManagerDropdown.tsx | 0 .../smart-list/items/table/groupColumns.tsx | 0 .../scenes/smart-list/items/table/index.ts | 0 .../smart-list/items/table/mediaColumns.tsx | 0 .../smart-list/settings/AccessSettings.tsx | 0 .../smart-list/settings/DangerSection.tsx | 0 .../settings/DeleteSmartListConfirmation.tsx | 0 .../settings/FilterConfiguration.tsx | 0 .../settings/UserSmartListSettingsScene.tsx | 0 .../browser}/src/scenes/smart-list/utils.ts | 0 .../browser}/src/styles/index.css | 0 .../browser}/src/utils/format.ts | 0 .../browser}/src/utils/misc.ts | 0 .../browser}/src/utils/patterns.ts | 0 .../browser}/src/utils/pluralize.ts | 0 .../browser}/src/utils/prefetch.ts | 0 .../browser}/src/utils/restricted.ts | 0 packages/browser/tailwind.config.js | 2 + {interface => packages/browser}/tsconfig.json | 26 +- packages/client/package.json | 4 +- packages/client/src/Provider.tsx | 97 -- packages/client/src/client.ts | 8 +- packages/client/src/context.ts | 39 - packages/client/src/context.tsx | 48 + packages/client/src/hooks/useCoreEvent.ts | 80 +- packages/client/src/hooks/usePreferences.ts | 2 +- packages/client/src/hooks/useStumpSse.ts | 4 +- packages/client/src/hooks/useStumpWs.ts | 4 +- packages/client/src/hooks/useTheme.ts | 5 +- packages/client/src/index.ts | 3 +- packages/client/src/invalidate.ts | 92 +- packages/client/src/queries/index.ts | 1 + packages/client/src/queries/job.ts | 4 +- packages/client/src/queries/log.ts | 32 + packages/client/src/queries/tag.ts | 6 +- packages/client/src/stores/app.ts | 51 ++ .../src/stores/{useEpubReader.ts => epub.ts} | 0 packages/client/src/stores/index.ts | 8 +- packages/client/src/stores/job.ts | 60 ++ packages/client/src/stores/useFilterStore.ts | 62 -- packages/client/src/stores/useStumpStore.ts | 56 -- .../src/stores/{useUserStore.ts => user.ts} | 4 +- packages/components/README.md | 2 +- packages/components/src/emoji/EmojiPicker.tsx | 2 +- packages/components/tailwind/tailwind.js | 2 +- packages/types/generated.ts | 65 +- packages/types/index.ts | 2 +- pnpm-lock.yaml | 367 ++++---- pnpm-workspace.yaml | 1 - tsconfig.eslint.json | 1 - tsconfig.json | 2 +- tsconfig.options.json | 3 +- 555 files changed, 7606 insertions(+), 4317 deletions(-) create mode 100644 .github/workflows/experimental.yml create mode 100644 apps/server/src/config/jwt.rs create mode 100644 core/benches/bench_main.rs create mode 100644 core/benches/benchmarks/library_scanner.rs create mode 100644 core/benches/benchmarks/mod.rs create mode 100644 core/benches/data/book.epub rename core/{integration-tests/data/space-book.cbz => benches/data/book.rar} (52%) create mode 100644 core/benches/data/book.zip create mode 100644 core/benches/data/mock-stump.toml create mode 100644 core/integration-tests/data/book.rar delete mode 100644 core/integration-tests/data/duck-book.zip create mode 100644 core/prisma/migrations/20240206000410_job_and_scanner_refactor/migration.sql create mode 100644 core/prisma/migrations/20240207232543_add_log_context/migration.sql create mode 100644 core/src/db/entity/job.rs create mode 100644 core/src/event.rs delete mode 100644 core/src/event/event_manager.rs delete mode 100644 core/src/event/mod.rs create mode 100644 core/src/filesystem/image/thumbnail/generation_job.rs create mode 100644 core/src/filesystem/image/thumbnail/manager.rs rename core/src/filesystem/image/{thumbnail.rs => thumbnail/mod.rs} (77%) delete mode 100644 core/src/filesystem/image/thumbnail_job.rs create mode 100644 core/src/filesystem/scanner/library_scan_job.rs delete mode 100644 core/src/filesystem/scanner/library_scanner.rs create mode 100644 core/src/filesystem/scanner/series_scan_job.rs delete mode 100644 core/src/filesystem/scanner/series_scanner.rs create mode 100644 core/src/filesystem/scanner/walk.rs create mode 100644 core/src/job/controller.rs create mode 100644 core/src/job/error.rs delete mode 100644 core/src/job/executor.rs delete mode 100644 core/src/job/job_manager.rs create mode 100644 core/src/job/manager.rs create mode 100644 core/src/job/progress.rs create mode 100644 core/src/job/task.rs delete mode 100644 core/src/job/utils.rs create mode 100644 core/src/utils.rs delete mode 100644 interface/README.md delete mode 100644 interface/src/components/jobs/JobOverlay.tsx delete mode 100644 interface/src/scenes/onboarding/OnBoardingRouter.tsx delete mode 100644 interface/src/scenes/settings/app/AppSettingsRouter.tsx delete mode 100644 interface/src/scenes/settings/server/ServerSettingsRouter.tsx delete mode 100644 interface/tailwind.config.js rename {interface => packages/browser}/package.json (94%) rename {interface => packages/browser}/public/assets/fallbacks/image-file.svg (100%) rename {interface => packages/browser}/public/assets/favicon.ico (100%) rename {interface => packages/browser}/public/assets/favicon.png (100%) rename {interface => packages/browser}/public/assets/icons/archive.svg (100%) rename {interface => packages/browser}/public/assets/icons/epub.svg (100%) rename {interface => packages/browser}/public/assets/icons/folder.png (100%) rename {interface => packages/browser}/public/assets/icons/pdf.svg (100%) rename {interface => packages/browser}/public/assets/stump-logo--irregular-lg.png (100%) rename {interface => packages/browser}/public/assets/stump-logo--irregular-sm.png (100%) rename {interface => packages/browser}/public/assets/stump-logo--irregular-xs.png (100%) rename {interface => packages/browser}/public/assets/stump-logo--irregular.png (100%) rename {interface => packages/browser}/public/assets/stump-logo--square.png (100%) rename {interface => packages/browser}/public/assets/stump-splash.gif (100%) rename {interface => packages/browser}/public/favicon.ico (100%) rename {interface => packages/browser}/src/App.tsx (67%) rename {interface => packages/browser}/src/AppLayout.tsx (95%) rename {interface => packages/browser}/src/AppRouter.tsx (65%) rename {interface => packages/browser}/src/components/BackgroundFetchIndicator.tsx (100%) rename {interface => packages/browser}/src/components/DirectoryPickerModal.tsx (100%) rename {interface => packages/browser}/src/components/ErrorFallback.tsx (100%) rename {interface => packages/browser}/src/components/FileStatusBadge.tsx (100%) rename {interface => packages/browser}/src/components/GenericEmptyState.tsx (100%) rename {interface => packages/browser}/src/components/HorizontalCardList.tsx (100%) rename {interface => packages/browser}/src/components/LazyImage.tsx (100%) rename {interface => packages/browser}/src/components/LinkBadge.tsx (100%) rename {interface => packages/browser}/src/components/ListItem.tsx (100%) rename {interface => packages/browser}/src/components/Notifications.tsx (100%) rename {interface => packages/browser}/src/components/PagePopoverForm.tsx (100%) rename {interface => packages/browser}/src/components/Pagination.tsx (100%) rename {interface => packages/browser}/src/components/ReadMore.tsx (100%) rename {interface => packages/browser}/src/components/RouteLoadingIndicator.tsx (100%) rename {interface => packages/browser}/src/components/ServerOwnerRouteWrapper.tsx (100%) rename {interface => packages/browser}/src/components/ServerStatusOverlay.tsx (88%) rename {interface => packages/browser}/src/components/ServerUrlForm.tsx (95%) rename {interface => packages/browser}/src/components/TagSelect.tsx (100%) rename {interface => packages/browser}/src/components/UpdateAvailableOverlay.tsx (100%) rename {interface => packages/browser}/src/components/UserMenu.tsx (100%) rename {interface => packages/browser}/src/components/container/Container.tsx (100%) rename {interface => packages/browser}/src/components/container/ContentContainer.tsx (100%) rename {interface => packages/browser}/src/components/container/SceneContainer.tsx (100%) rename {interface => packages/browser}/src/components/container/index.ts (100%) rename {interface => packages/browser}/src/components/container/useSceneContainer.ts (100%) rename {interface => packages/browser}/src/components/filters/FilterDisplay.tsx (100%) rename {interface => packages/browser}/src/components/filters/FilterProvider.tsx (100%) rename {interface => packages/browser}/src/components/filters/FilterSlideOver.tsx (100%) rename {interface => packages/browser}/src/components/filters/FilterToolBar.tsx (100%) rename {interface => packages/browser}/src/components/filters/OrderBy.tsx (100%) rename {interface => packages/browser}/src/components/filters/Search.tsx (100%) rename {interface => packages/browser}/src/components/filters/context.ts (100%) rename {interface => packages/browser}/src/components/filters/form/AgeRatingFilter.tsx (100%) rename {interface => packages/browser}/src/components/filters/form/ExtensionSelect.tsx (100%) rename {interface => packages/browser}/src/components/filters/form/GenericFilterMultiselect.tsx (100%) rename {interface => packages/browser}/src/components/filters/form/MediaFilterForm.tsx (100%) rename {interface => packages/browser}/src/components/filters/form/OrderByDirection.tsx (100%) rename {interface => packages/browser}/src/components/filters/form/OrderBySelect.tsx (100%) rename {interface => packages/browser}/src/components/filters/form/ReadStatusSelect.tsx (100%) rename {interface => packages/browser}/src/components/filters/form/SeriesFilterForm.tsx (100%) rename {interface => packages/browser}/src/components/filters/form/index.ts (100%) rename {interface => packages/browser}/src/components/filters/form/utils.ts (100%) rename {interface => packages/browser}/src/components/filters/index.ts (100%) create mode 100644 packages/browser/src/components/jobs/JobOverlay.tsx rename {interface => packages/browser}/src/components/jobs/utils.ts (100%) rename {interface => packages/browser}/src/components/library/DeleteLibraryConfirmation.tsx (100%) rename {interface => packages/browser}/src/components/library/LastVisitedLibrary.tsx (100%) rename {interface => packages/browser}/src/components/library/LibrariesStats.tsx (100%) rename {interface => packages/browser}/src/components/library/index.ts (100%) rename {interface => packages/browser}/src/components/markdown/MarkdownEditor.tsx (100%) rename {interface => packages/browser}/src/components/markdown/MarkdownPreview.tsx (100%) rename {interface => packages/browser}/src/components/media/BookSearch.tsx (100%) rename {interface => packages/browser}/src/components/media/BookSearchOverlay.tsx (100%) rename {interface => packages/browser}/src/components/media/MediaCard.tsx (100%) rename {interface => packages/browser}/src/components/media/MediaList.tsx (100%) rename {interface => packages/browser}/src/components/navigation/index.ts (100%) rename {interface => packages/browser}/src/components/navigation/mobile/LayoutModeButtons.tsx (100%) rename {interface => packages/browser}/src/components/navigation/mobile/MobileSheet.tsx (100%) rename {interface => packages/browser}/src/components/navigation/mobile/MobileTopBar.tsx (100%) rename {interface => packages/browser}/src/components/navigation/mobile/NavigationButtons.tsx (100%) rename {interface => packages/browser}/src/components/navigation/mobile/index.ts (100%) rename {interface => packages/browser}/src/components/navigation/sidebar/ApplicationVersion.tsx (100%) rename {interface => packages/browser}/src/components/navigation/sidebar/Logout.tsx (100%) rename {interface => packages/browser}/src/components/navigation/sidebar/Settings.tsx (100%) rename {interface => packages/browser}/src/components/navigation/sidebar/SideBar.tsx (94%) rename {interface => packages/browser}/src/components/navigation/sidebar/SideBarButtonLink.tsx (100%) rename {interface => packages/browser}/src/components/navigation/sidebar/SideBarFooter.tsx (100%) rename {interface => packages/browser}/src/components/navigation/sidebar/SignOut.tsx (100%) rename {interface => packages/browser}/src/components/navigation/sidebar/index.ts (100%) rename {interface => packages/browser}/src/components/navigation/sidebar/sections/book-club/BookClubEmoji.tsx (100%) rename {interface => packages/browser}/src/components/navigation/sidebar/sections/book-club/BookClubSideBarSection.tsx (100%) rename {interface => packages/browser}/src/components/navigation/sidebar/sections/index.ts (100%) rename {interface => packages/browser}/src/components/navigation/sidebar/sections/library-section/LibraryEmoji.tsx (100%) rename {interface => packages/browser}/src/components/navigation/sidebar/sections/library-section/LibraryOptionsMenu.tsx (100%) rename {interface => packages/browser}/src/components/navigation/sidebar/sections/library-section/LibrarySideBarSection.tsx (100%) rename {interface => packages/browser}/src/components/navigation/sidebar/sections/smart-list/SmartListSideBarSection.tsx (100%) rename {interface => packages/browser}/src/components/navigation/topbar/TopBar.tsx (100%) rename {interface => packages/browser}/src/components/navigation/topbar/TopBarButtonItem.tsx (100%) rename {interface => packages/browser}/src/components/navigation/topbar/TopBarLinkListItem.tsx (100%) rename {interface => packages/browser}/src/components/navigation/topbar/TopBarNavLink.tsx (100%) rename {interface => packages/browser}/src/components/navigation/topbar/index.ts (100%) rename {interface => packages/browser}/src/components/navigation/topbar/sections/UserMenu.tsx (100%) rename {interface => packages/browser}/src/components/navigation/topbar/sections/book-club/BookClubNavigationItem.tsx (100%) rename {interface => packages/browser}/src/components/navigation/topbar/sections/book-club/index.ts (100%) rename {interface => packages/browser}/src/components/navigation/topbar/sections/index.ts (100%) rename {interface => packages/browser}/src/components/navigation/topbar/sections/library/LibraryNavigationItem.tsx (100%) rename {interface => packages/browser}/src/components/navigation/topbar/sections/library/index.ts (100%) rename {interface => packages/browser}/src/components/navigation/topbar/sections/settings/SettingsNavigationItem.tsx (96%) rename {interface => packages/browser}/src/components/navigation/topbar/sections/settings/index.ts (100%) rename {interface => packages/browser}/src/components/readers/epub/EpubJsReader.tsx (100%) rename {interface => packages/browser}/src/components/readers/epub/EpubReaderContainer.tsx (100%) rename {interface => packages/browser}/src/components/readers/epub/EpubReaderFooter.tsx (100%) rename {interface => packages/browser}/src/components/readers/epub/EpubReaderHeader.tsx (100%) rename {interface => packages/browser}/src/components/readers/epub/EpubStreamReader.tsx (100%) rename {interface => packages/browser}/src/components/readers/epub/context.ts (100%) rename {interface => packages/browser}/src/components/readers/epub/controls/BookmarkToggle.tsx (100%) rename {interface => packages/browser}/src/components/readers/epub/controls/ControlButton.tsx (100%) rename {interface => packages/browser}/src/components/readers/epub/controls/ControlsContainer.tsx (100%) rename {interface => packages/browser}/src/components/readers/epub/controls/EpubNavigationControls.tsx (100%) rename {interface => packages/browser}/src/components/readers/epub/controls/FontSizeControl.tsx (100%) rename {interface => packages/browser}/src/components/readers/epub/controls/FullScreenToggle.tsx (100%) rename {interface => packages/browser}/src/components/readers/epub/controls/ReadingDirection.tsx (100%) rename {interface => packages/browser}/src/components/readers/epub/controls/ThemeControls.tsx (100%) rename {interface => packages/browser}/src/components/readers/epub/controls/index.ts (100%) rename {interface => packages/browser}/src/components/readers/epub/controls/useEpubBookmark.ts (100%) rename {interface => packages/browser}/src/components/readers/epub/locations/Bookmarks.tsx (100%) rename {interface => packages/browser}/src/components/readers/epub/locations/LocationManager.tsx (100%) rename {interface => packages/browser}/src/components/readers/epub/locations/TableOfContents.tsx (100%) rename {interface => packages/browser}/src/components/readers/epub/locations/index.ts (100%) rename {interface => packages/browser}/src/components/readers/epub/themes.ts (100%) rename {interface => packages/browser}/src/components/readers/image-based/AnimatedPagedReader.tsx (100%) rename {interface => packages/browser}/src/components/readers/image-based/PagedReader.tsx (100%) rename {interface => packages/browser}/src/components/readers/image-based/Toolbar.tsx (100%) rename {interface => packages/browser}/src/components/readers/pdf/NativePDFViewer.tsx (100%) rename {interface => packages/browser}/src/components/series/SeriesCard.tsx (100%) rename {interface => packages/browser}/src/components/series/SeriesGrid.tsx (100%) rename {interface => packages/browser}/src/components/series/SeriesList.tsx (100%) rename {interface => packages/browser}/src/components/table/Pagination.tsx (96%) rename {interface => packages/browser}/src/components/table/SortIcon.tsx (100%) rename {interface => packages/browser}/src/components/table/Table.tsx (98%) rename {interface => packages/browser}/src/components/table/TableFilterInput.tsx (100%) rename {interface => packages/browser}/src/components/table/TableFilterSelect.tsx (100%) rename {interface => packages/browser}/src/components/table/index.ts (100%) rename {interface => packages/browser}/src/components/tags/Tag.tsx (100%) rename {interface => packages/browser}/src/components/tags/TagList.tsx (100%) rename {interface => packages/browser}/src/components/thumbnail/EditThumbnailDropdown.tsx (100%) rename {interface => packages/browser}/src/components/thumbnail/UploadImageModal.tsx (100%) rename {interface => packages/browser}/src/context.ts (100%) rename {interface => packages/browser}/src/hooks/useIsInView.ts (100%) rename {interface => packages/browser}/src/hooks/useLocale.ts (100%) rename {interface => packages/browser}/src/hooks/usePageParam.ts (100%) rename {interface => packages/browser}/src/hooks/usePagination.ts (100%) rename {interface => packages/browser}/src/hooks/usePreloadPage.ts (100%) rename {interface => packages/browser}/src/hooks/usePressAndHold.ts (100%) rename {interface => packages/browser}/src/hooks/useSyncParams.ts (100%) rename {interface => packages/browser}/src/i18n/LocaleProvider.tsx (100%) rename {interface => packages/browser}/src/i18n/config.ts (100%) rename {interface => packages/browser}/src/i18n/context.ts (100%) rename {interface => packages/browser}/src/i18n/index.ts (100%) rename {interface => packages/browser}/src/i18n/locales/af.json (100%) rename {interface => packages/browser}/src/i18n/locales/ar.json (100%) rename {interface => packages/browser}/src/i18n/locales/ca.json (100%) rename {interface => packages/browser}/src/i18n/locales/cs.json (100%) rename {interface => packages/browser}/src/i18n/locales/da.json (100%) rename {interface => packages/browser}/src/i18n/locales/de.json (100%) rename {interface => packages/browser}/src/i18n/locales/el.json (100%) rename {interface => packages/browser}/src/i18n/locales/en.json (93%) rename {interface => packages/browser}/src/i18n/locales/es.json (100%) rename {interface => packages/browser}/src/i18n/locales/fi.json (100%) rename {interface => packages/browser}/src/i18n/locales/fr.json (100%) rename {interface => packages/browser}/src/i18n/locales/he.json (100%) rename {interface => packages/browser}/src/i18n/locales/hu.json (100%) rename {interface => packages/browser}/src/i18n/locales/index.ts (100%) rename {interface => packages/browser}/src/i18n/locales/it.json (100%) rename {interface => packages/browser}/src/i18n/locales/ja.json (100%) rename {interface => packages/browser}/src/i18n/locales/ko.json (100%) rename {interface => packages/browser}/src/i18n/locales/nl.json (100%) rename {interface => packages/browser}/src/i18n/locales/no.json (100%) rename {interface => packages/browser}/src/i18n/locales/pl.json (100%) rename {interface => packages/browser}/src/i18n/locales/pt.json (100%) rename {interface => packages/browser}/src/i18n/locales/ro.json (100%) rename {interface => packages/browser}/src/i18n/locales/ru.json (100%) rename {interface => packages/browser}/src/i18n/locales/sr.json (100%) rename {interface => packages/browser}/src/i18n/locales/sv.json (100%) rename {interface => packages/browser}/src/i18n/locales/tr.json (100%) rename {interface => packages/browser}/src/i18n/locales/uk.json (100%) rename {interface => packages/browser}/src/i18n/locales/vi.json (100%) rename {interface => packages/browser}/src/i18n/locales/zh.json (100%) rename {interface => packages/browser}/src/index.ts (83%) rename {interface => packages/browser}/src/paths.ts (96%) rename {interface => packages/browser}/src/scenes/auth/LoginOrClaimScene.tsx (100%) rename {interface => packages/browser}/src/scenes/book-club/BookClubRouter.tsx (63%) rename {interface => packages/browser}/src/scenes/book-club/UserBookClubsScene.tsx (100%) rename {interface => packages/browser}/src/scenes/book-club/create-club/CreateBookClubForm.tsx (100%) rename {interface => packages/browser}/src/scenes/book-club/create-club/CreateBookClubScene.tsx (100%) rename {interface => packages/browser}/src/scenes/book-club/create-club/CreatorPreferences.tsx (100%) rename {interface => packages/browser}/src/scenes/book-club/create-club/RoleMappingForm.tsx (100%) rename {interface => packages/browser}/src/scenes/book-club/explore/BookClubExploreScene.tsx (100%) rename {interface => packages/browser}/src/scenes/book-club/home/BookClubHeader.tsx (100%) rename {interface => packages/browser}/src/scenes/book-club/home/BookClubHomeLayout.tsx (100%) rename {interface => packages/browser}/src/scenes/book-club/home/BookClubNavigation.tsx (100%) rename {interface => packages/browser}/src/scenes/book-club/home/context.ts (100%) rename {interface => packages/browser}/src/scenes/book-club/home/tabs/chat-board/BookClubChatBoardScene.tsx (100%) rename {interface => packages/browser}/src/scenes/book-club/home/tabs/chat-board/ChatMessage.tsx (100%) rename {interface => packages/browser}/src/scenes/book-club/home/tabs/members/BookClubMembersScene.tsx (100%) rename {interface => packages/browser}/src/scenes/book-club/home/tabs/overview/BookClubOverviewScene.tsx (100%) rename {interface => packages/browser}/src/scenes/book-club/home/tabs/overview/BookClubScheduleTimeline.tsx (100%) rename {interface => packages/browser}/src/scenes/book-club/home/tabs/overview/BookClubScheduleTimelineItem.tsx (100%) rename {interface => packages/browser}/src/scenes/book-club/home/tabs/settings/BookClubSettingsScene.tsx (100%) rename {interface => packages/browser}/src/scenes/book-club/home/tabs/settings/MemberSpecDisplay.tsx (100%) rename {interface => packages/browser}/src/scenes/book-club/home/tabs/settings/scheduler/AddBookCard.tsx (100%) rename {interface => packages/browser}/src/scenes/book-club/home/tabs/settings/scheduler/BookClubSchedulerScene.tsx (100%) rename {interface => packages/browser}/src/scenes/book-club/home/tabs/settings/scheduler/CreateOrAddToScheduleForm.tsx (100%) rename {interface => packages/browser}/src/scenes/book/BookCompletionToggleButton.tsx (100%) rename {interface => packages/browser}/src/scenes/book/BookFileInformation.tsx (100%) rename {interface => packages/browser}/src/scenes/book/BookLibrarySeriesLinks.tsx (100%) rename {interface => packages/browser}/src/scenes/book/BookOverviewScene.tsx (100%) rename {interface => packages/browser}/src/scenes/book/BookReaderLink.tsx (100%) rename {interface => packages/browser}/src/scenes/book/BookReaderScene.tsx (100%) rename {interface => packages/browser}/src/scenes/book/BookRouter.tsx (53%) rename {interface => packages/browser}/src/scenes/book/BookSearchScene.tsx (100%) rename {interface => packages/browser}/src/scenes/book/BooksAfterCursor.tsx (100%) rename {interface => packages/browser}/src/scenes/book/DownloadMediaButton.tsx (100%) rename {interface => packages/browser}/src/scenes/book/EpubReaderScene.tsx (100%) rename {interface => packages/browser}/src/scenes/book/PDFReaderScene.tsx (100%) rename {interface => packages/browser}/src/scenes/book/management/BookManagementScene.tsx (100%) rename {interface => packages/browser}/src/scenes/book/management/BookPageGrid.tsx (100%) rename {interface => packages/browser}/src/scenes/book/management/BookThumbnailSelector.tsx (100%) rename {interface => packages/browser}/src/scenes/error/FourOhFour.tsx (100%) rename {interface => packages/browser}/src/scenes/error/ServerConnectionErrorScene.tsx (90%) rename {interface => packages/browser}/src/scenes/home/ContinueReading.tsx (100%) rename {interface => packages/browser}/src/scenes/home/HomeScene.tsx (100%) rename {interface => packages/browser}/src/scenes/home/NoLibraries.tsx (100%) rename {interface => packages/browser}/src/scenes/home/RecentlyAddedMedia.tsx (100%) rename {interface => packages/browser}/src/scenes/home/RecentlyAddedSeries.tsx (100%) rename {interface => packages/browser}/src/scenes/library/LibraryOverviewScene.tsx (100%) rename {interface => packages/browser}/src/scenes/library/LibraryOverviewTitleSection.tsx (100%) rename {interface => packages/browser}/src/scenes/library/LibraryRouter.tsx (63%) rename {interface => packages/browser}/src/scenes/library/explorer/FileExplorer.tsx (100%) rename {interface => packages/browser}/src/scenes/library/explorer/FileExplorerFooter.tsx (100%) rename {interface => packages/browser}/src/scenes/library/explorer/FileExplorerHeader.tsx (100%) rename {interface => packages/browser}/src/scenes/library/explorer/FileExplorerNavigation.tsx (88%) rename {interface => packages/browser}/src/scenes/library/explorer/LibraryExplorerScene.tsx (100%) rename {interface => packages/browser}/src/scenes/library/explorer/context.ts (100%) rename {interface => packages/browser}/src/scenes/library/management/CleanLibrary.tsx (100%) rename {interface => packages/browser}/src/scenes/library/management/DeleteLibraryThumbnails.tsx (100%) rename {interface => packages/browser}/src/scenes/library/management/LibraryAdminLayout.tsx (100%) rename {interface => packages/browser}/src/scenes/library/management/LibraryAdminSideBar.tsx (100%) rename {interface => packages/browser}/src/scenes/library/management/LibrarySeriesGrid.tsx (100%) rename {interface => packages/browser}/src/scenes/library/management/LibraryThumbnailSelector.tsx (100%) rename {interface => packages/browser}/src/scenes/library/management/QuickActions.tsx (100%) rename {interface => packages/browser}/src/scenes/library/management/RegenerateThumbnails.tsx (100%) rename {interface => packages/browser}/src/scenes/library/management/context.ts (100%) rename {interface => packages/browser}/src/scenes/library/management/create-or-update/CreateLibraryScene.tsx (100%) rename {interface => packages/browser}/src/scenes/library/management/create-or-update/EditLibraryScene.tsx (100%) rename {interface => packages/browser}/src/scenes/library/management/create-or-update/form/CreateOrUpdateLibraryForm.tsx (98%) rename {interface => packages/browser}/src/scenes/library/management/create-or-update/form/index.ts (100%) rename {interface => packages/browser}/src/scenes/library/management/create-or-update/form/sections/BasicLibraryInformation.tsx (100%) rename {interface => packages/browser}/src/scenes/library/management/create-or-update/form/sections/FileConversionOptions.tsx (100%) rename {interface => packages/browser}/src/scenes/library/management/create-or-update/form/sections/LibraryPattern.tsx (100%) rename {interface => packages/browser}/src/scenes/library/management/create-or-update/form/sections/ScanMode.tsx (100%) rename {interface => packages/browser}/src/scenes/library/management/create-or-update/form/sections/ThumbnailConfig.tsx (100%) rename {interface => packages/browser}/src/scenes/library/management/create-or-update/form/sections/index.ts (100%) create mode 100644 packages/browser/src/scenes/onboarding/OnBoardingRouter.tsx rename {interface => packages/browser}/src/scenes/onboarding/OnBoardingScene.tsx (100%) rename {interface => packages/browser}/src/scenes/series/DownloadSeriesButton.tsx (100%) rename {interface => packages/browser}/src/scenes/series/MediaGrid.tsx (100%) rename {interface => packages/browser}/src/scenes/series/SeriesLibraryLink.tsx (100%) rename {interface => packages/browser}/src/scenes/series/SeriesOverviewScene.tsx (100%) rename {interface => packages/browser}/src/scenes/series/SeriesOverviewTitleSection.tsx (100%) rename {interface => packages/browser}/src/scenes/series/SeriesRouter.tsx (58%) rename {interface => packages/browser}/src/scenes/series/UpNextInSeriesButton.tsx (100%) rename {interface => packages/browser}/src/scenes/series/context.ts (100%) rename {interface => packages/browser}/src/scenes/series/management/SeriesBookGrid.tsx (100%) rename {interface => packages/browser}/src/scenes/series/management/SeriesManagementScene.tsx (100%) rename {interface => packages/browser}/src/scenes/series/management/SeriesThumbnailSelector.tsx (100%) rename {interface => packages/browser}/src/scenes/settings/SettingsHeader.tsx (100%) rename {interface => packages/browser}/src/scenes/settings/SettingsLayout.tsx (100%) rename {interface => packages/browser}/src/scenes/settings/SettingsNavigation.tsx (95%) rename {interface => packages/browser}/src/scenes/settings/SettingsRouter.tsx (86%) rename {interface => packages/browser}/src/scenes/settings/SettingsSideBar.tsx (95%) rename {interface => packages/browser}/src/scenes/settings/SettingsSideBarLink.tsx (100%) create mode 100644 packages/browser/src/scenes/settings/app/AppSettingsRouter.tsx rename {interface => packages/browser}/src/scenes/settings/app/appearance/AppearanceSettingsScene.tsx (100%) rename {interface => packages/browser}/src/scenes/settings/app/appearance/DisplaySpacingPreference.tsx (100%) rename {interface => packages/browser}/src/scenes/settings/app/appearance/DoubleSidebarToggle.tsx (100%) rename {interface => packages/browser}/src/scenes/settings/app/appearance/HideScrollbarToggle.tsx (100%) rename {interface => packages/browser}/src/scenes/settings/app/appearance/MaxWidthPreference.tsx (100%) rename {interface => packages/browser}/src/scenes/settings/app/appearance/PreferColorToggle.tsx (100%) rename {interface => packages/browser}/src/scenes/settings/app/appearance/PreferenceToggle.tsx (100%) rename {interface => packages/browser}/src/scenes/settings/app/appearance/PrimaryNavigationPreference.tsx (100%) rename {interface => packages/browser}/src/scenes/settings/app/appearance/QueryIndicatorToggle.tsx (100%) rename {interface => packages/browser}/src/scenes/settings/app/appearance/ReplacePrimarySidebarToggle.tsx (100%) rename {interface => packages/browser}/src/scenes/settings/app/appearance/ThemeSelect.tsx (100%) rename {interface => packages/browser}/src/scenes/settings/app/desktop/DesktopSettingsScene.tsx (100%) rename {interface => packages/browser}/src/scenes/settings/app/desktop/DiscordPresenceSwitch.tsx (89%) rename {interface => packages/browser}/src/scenes/settings/app/general/AvatarPicker.tsx (100%) rename {interface => packages/browser}/src/scenes/settings/app/general/GeneralSettingsScene.tsx (100%) rename {interface => packages/browser}/src/scenes/settings/app/general/LocalePreferences.tsx (100%) rename {interface => packages/browser}/src/scenes/settings/app/general/LocaleSelector.tsx (100%) rename {interface => packages/browser}/src/scenes/settings/app/general/ProfileForm.tsx (100%) rename {interface => packages/browser}/src/scenes/settings/app/index.ts (100%) rename {interface => packages/browser}/src/scenes/settings/index.ts (100%) rename {interface => packages/browser}/src/scenes/settings/routes.ts (88%) create mode 100644 packages/browser/src/scenes/settings/server/ServerSettingsRouter.tsx rename {interface => packages/browser}/src/scenes/settings/server/ServerSettingsScene.tsx (100%) rename {interface => packages/browser}/src/scenes/settings/server/general/GeneralServerSettingsScene.tsx (84%) create mode 100644 packages/browser/src/scenes/settings/server/general/ServerInfoSection.tsx rename {interface => packages/browser}/src/scenes/settings/server/index.ts (100%) rename {interface => packages/browser}/src/scenes/settings/server/jobs/DeleteAllSection.tsx (100%) rename {interface => packages/browser}/src/scenes/settings/server/jobs/JobActionMenu.tsx (57%) create mode 100644 packages/browser/src/scenes/settings/server/jobs/JobDataInspector.tsx rename {interface => packages/browser}/src/scenes/settings/server/jobs/JobScheduler.tsx (100%) rename {interface => packages/browser}/src/scenes/settings/server/jobs/JobSettingsScene.tsx (90%) rename {interface => packages/browser}/src/scenes/settings/server/jobs/JobTable.tsx (86%) rename {interface => packages/browser}/src/scenes/settings/server/jobs/RunningJobElapsedTime.tsx (94%) rename {interface => packages/browser}/src/scenes/settings/server/jobs/context.ts (90%) create mode 100644 packages/browser/src/scenes/settings/server/logs/ServerLogsScene.tsx create mode 100644 packages/browser/src/scenes/settings/server/logs/live-logs/LiveLogsFeed.tsx create mode 100644 packages/browser/src/scenes/settings/server/logs/live-logs/LiveLogsSection.tsx create mode 100644 packages/browser/src/scenes/settings/server/logs/live-logs/index.ts create mode 100644 packages/browser/src/scenes/settings/server/logs/persisted-logs/LogLevelBadge.tsx create mode 100644 packages/browser/src/scenes/settings/server/logs/persisted-logs/PersistedLogsSection.tsx create mode 100644 packages/browser/src/scenes/settings/server/logs/persisted-logs/PersistedLogsTable.tsx create mode 100644 packages/browser/src/scenes/settings/server/logs/persisted-logs/index.ts rename {interface => packages/browser}/src/scenes/settings/server/users/UsersRouter.tsx (81%) rename {interface => packages/browser}/src/scenes/settings/server/users/UsersScene.tsx (100%) rename {interface => packages/browser}/src/scenes/settings/server/users/UsersStats.tsx (100%) rename {interface => packages/browser}/src/scenes/settings/server/users/context.ts (100%) rename {interface => packages/browser}/src/scenes/settings/server/users/create-or-update/AccountDetails.tsx (100%) rename {interface => packages/browser}/src/scenes/settings/server/users/create-or-update/CreateOrUpdateUserForm.tsx (100%) rename {interface => packages/browser}/src/scenes/settings/server/users/create-or-update/CreateUserScene.tsx (100%) rename {interface => packages/browser}/src/scenes/settings/server/users/create-or-update/MaxSessionsAllowed.tsx (100%) rename {interface => packages/browser}/src/scenes/settings/server/users/create-or-update/UpdateUserScene.tsx (100%) rename {interface => packages/browser}/src/scenes/settings/server/users/create-or-update/UserPermissionsForm.tsx (100%) rename {interface => packages/browser}/src/scenes/settings/server/users/create-or-update/UserRestrictionsForm.tsx (100%) rename {interface => packages/browser}/src/scenes/settings/server/users/index.ts (100%) rename {interface => packages/browser}/src/scenes/settings/server/users/login-activity/ClearActivitySection.tsx (100%) rename {interface => packages/browser}/src/scenes/settings/server/users/login-activity/LoginActivitySection.tsx (66%) rename {interface => packages/browser}/src/scenes/settings/server/users/login-activity/LoginActivityTable.tsx (93%) rename {interface => packages/browser}/src/scenes/settings/server/users/user-table/DeleteUserModal.tsx (100%) rename {interface => packages/browser}/src/scenes/settings/server/users/user-table/InspectUserSlideOver.tsx (100%) rename {interface => packages/browser}/src/scenes/settings/server/users/user-table/UserActionMenu.tsx (100%) rename {interface => packages/browser}/src/scenes/settings/server/users/user-table/UserTable.tsx (100%) rename {interface => packages/browser}/src/scenes/settings/server/users/user-table/UserTableSection.tsx (64%) rename {interface => packages/browser}/src/scenes/settings/server/users/user-table/UsernameRow.tsx (100%) rename {interface => packages/browser}/src/scenes/settings/useSettingsRoutes.ts (100%) rename {interface => packages/browser}/src/scenes/smart-list/SmartListCard.tsx (100%) rename {interface => packages/browser}/src/scenes/smart-list/SmartListRouter.tsx (71%) rename {interface => packages/browser}/src/scenes/smart-list/UserSmartListHeader.tsx (100%) rename {interface => packages/browser}/src/scenes/smart-list/UserSmartListLayout.tsx (100%) rename {interface => packages/browser}/src/scenes/smart-list/UserSmartListNavigation.tsx (100%) rename {interface => packages/browser}/src/scenes/smart-list/UserSmartListRouter.tsx (61%) rename {interface => packages/browser}/src/scenes/smart-list/UserSmartListsScene.tsx (100%) rename {interface => packages/browser}/src/scenes/smart-list/context.ts (100%) rename {interface => packages/browser}/src/scenes/smart-list/create-or-update/CreateSmartListHeader.tsx (100%) rename {interface => packages/browser}/src/scenes/smart-list/create-or-update/CreateSmartListScene.tsx (100%) rename {interface => packages/browser}/src/scenes/smart-list/create-or-update/form/AccessSettings.tsx (100%) rename {interface => packages/browser}/src/scenes/smart-list/create-or-update/form/BasicDetails.tsx (100%) rename {interface => packages/browser}/src/scenes/smart-list/create-or-update/form/CreateSmartListForm.tsx (100%) rename {interface => packages/browser}/src/scenes/smart-list/create-or-update/form/FilterConfiguration.tsx (100%) rename {interface => packages/browser}/src/scenes/smart-list/create-or-update/form/index.ts (100%) rename {interface => packages/browser}/src/scenes/smart-list/create-or-update/form/schema.ts (100%) rename {interface => packages/browser}/src/scenes/smart-list/index.ts (100%) rename {interface => packages/browser}/src/scenes/smart-list/items/UserSmartListItemsScene.tsx (100%) rename {interface => packages/browser}/src/scenes/smart-list/items/index.ts (100%) rename {interface => packages/browser}/src/scenes/smart-list/items/list/GroupedSmartListItemList.tsx (100%) rename {interface => packages/browser}/src/scenes/smart-list/items/list/GroupedSmartListItemListGroupContent.tsx (100%) rename {interface => packages/browser}/src/scenes/smart-list/items/list/index.ts (100%) rename {interface => packages/browser}/src/scenes/smart-list/items/table/BookLinksCell.tsx (100%) rename {interface => packages/browser}/src/scenes/smart-list/items/table/CoverImageCell.tsx (100%) rename {interface => packages/browser}/src/scenes/smart-list/items/table/CreateOrUpdateTableView.tsx (100%) rename {interface => packages/browser}/src/scenes/smart-list/items/table/FilterBottomDrawer.tsx (100%) rename {interface => packages/browser}/src/scenes/smart-list/items/table/GroupedSmartListItemTable.tsx (100%) rename {interface => packages/browser}/src/scenes/smart-list/items/table/SavedViewSelector.tsx (100%) rename {interface => packages/browser}/src/scenes/smart-list/items/table/SmartListBookTable.tsx (100%) rename {interface => packages/browser}/src/scenes/smart-list/items/table/TableColumnsBottomDrawer.tsx (100%) rename {interface => packages/browser}/src/scenes/smart-list/items/table/TableHeaderActions.tsx (100%) rename {interface => packages/browser}/src/scenes/smart-list/items/table/ViewManagerDropdown.tsx (100%) rename {interface => packages/browser}/src/scenes/smart-list/items/table/groupColumns.tsx (100%) rename {interface => packages/browser}/src/scenes/smart-list/items/table/index.ts (100%) rename {interface => packages/browser}/src/scenes/smart-list/items/table/mediaColumns.tsx (100%) rename {interface => packages/browser}/src/scenes/smart-list/settings/AccessSettings.tsx (100%) rename {interface => packages/browser}/src/scenes/smart-list/settings/DangerSection.tsx (100%) rename {interface => packages/browser}/src/scenes/smart-list/settings/DeleteSmartListConfirmation.tsx (100%) rename {interface => packages/browser}/src/scenes/smart-list/settings/FilterConfiguration.tsx (100%) rename {interface => packages/browser}/src/scenes/smart-list/settings/UserSmartListSettingsScene.tsx (100%) rename {interface => packages/browser}/src/scenes/smart-list/utils.ts (100%) rename {interface => packages/browser}/src/styles/index.css (100%) rename {interface => packages/browser}/src/utils/format.ts (100%) rename {interface => packages/browser}/src/utils/misc.ts (100%) rename {interface => packages/browser}/src/utils/patterns.ts (100%) rename {interface => packages/browser}/src/utils/pluralize.ts (100%) rename {interface => packages/browser}/src/utils/prefetch.ts (100%) rename {interface => packages/browser}/src/utils/restricted.ts (100%) create mode 100644 packages/browser/tailwind.config.js rename {interface => packages/browser}/tsconfig.json (50%) delete mode 100644 packages/client/src/Provider.tsx delete mode 100644 packages/client/src/context.ts create mode 100644 packages/client/src/context.tsx create mode 100644 packages/client/src/queries/log.ts create mode 100644 packages/client/src/stores/app.ts rename packages/client/src/stores/{useEpubReader.ts => epub.ts} (100%) create mode 100644 packages/client/src/stores/job.ts delete mode 100644 packages/client/src/stores/useFilterStore.ts delete mode 100644 packages/client/src/stores/useStumpStore.ts rename packages/client/src/stores/{useUserStore.ts => user.ts} (95%) diff --git a/.github/actions/build-docker/action.yml b/.github/actions/build-docker/action.yml index c78951180..529deb2ab 100644 --- a/.github/actions/build-docker/action.yml +++ b/.github/actions/build-docker/action.yml @@ -81,7 +81,7 @@ runs: tags: ${{ env.TAGS }} - name: Discord notification - if: ${{ success() && inputs.push == 'true' }} + if: ${{ success() && inputs.push == 'true' && inputs.discord-webhook != '' }} env: DISCORD_WEBHOOK: ${{ inputs.discord-webhook }} uses: 'Ilshidur/action-discord@0.3.2' diff --git a/.github/workflows/experimental.yml b/.github/workflows/experimental.yml new file mode 100644 index 000000000..b064b7589 --- /dev/null +++ b/.github/workflows/experimental.yml @@ -0,0 +1,34 @@ +name: 'Stump Experimental CI' + +on: + push: + branches: + - experimental + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +env: + DOCKER_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} + DOCKER_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }} + +jobs: + nightly-docker-build: + name: Build docker image + runs-on: [self-hosted] + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Setup and build docker image + uses: ./.github/actions/build-docker + with: + username: ${{ env.DOCKER_USERNAME }} + password: ${{ env.DOCKER_PASSWORD }} + tags: 'experimental' + load: false + push: true + platforms: 'linux/arm64/v8,linux/amd64' + # platforms: 'linux/arm64/v8,linux/arm/v7,linux/amd64' + discord-webhook: '' diff --git a/.gitignore b/.gitignore index 642aed0f8..286e0eee1 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ # Logs logs/ +!packages/browser/**/logs/ *.log # Cache diff --git a/.prettierignore b/.prettierignore index b02ec977c..8f447e367 100644 --- a/.prettierignore +++ b/.prettierignore @@ -10,4 +10,4 @@ build .next # locale files -interface/src/i18n/locales/*.json \ No newline at end of file +packages/browser/src/i18n/locales/*.json \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index 38fd07126..7e4a1c78e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -117,6 +117,12 @@ dependencies = [ "libc", ] +[[package]] +name = "anes" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" + [[package]] name = "anstream" version = "0.6.4" @@ -177,6 +183,19 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" +[[package]] +name = "async-channel" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ca33f4bc4ed1babef42cad36cc1f51fa88be00420404e5b1e80ab1b18f7678c" +dependencies = [ + "concurrent-queue", + "event-listener", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + [[package]] name = "async-stream" version = "0.3.5" @@ -652,6 +671,12 @@ dependencies = [ "toml 0.5.10", ] +[[package]] +name = "cast" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" + [[package]] name = "cbc" version = "0.1.2" @@ -746,6 +771,33 @@ dependencies = [ "windows-targets 0.48.5", ] +[[package]] +name = "ciborium" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" +dependencies = [ + "ciborium-io", + "ciborium-ll", + "serde", +] + +[[package]] +name = "ciborium-io" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" + +[[package]] +name = "ciborium-ll" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" +dependencies = [ + "ciborium-io", + "half", +] + [[package]] name = "cipher" version = "0.4.4" @@ -913,6 +965,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "concurrent-queue" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "connection-string" version = "0.1.14" @@ -1062,6 +1123,44 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "criterion" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f" +dependencies = [ + "anes", + "cast", + "ciborium", + "clap", + "criterion-plot", + "futures", + "is-terminal", + "itertools 0.10.5", + "num-traits", + "once_cell", + "oorandom", + "plotters", + "rayon", + "regex", + "serde", + "serde_derive", + "serde_json", + "tinytemplate", + "tokio", + "walkdir", +] + +[[package]] +name = "criterion-plot" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" +dependencies = [ + "cast", + "itertools 0.10.5", +] + [[package]] name = "crossbeam-channel" version = "0.5.6" @@ -1697,6 +1796,27 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "event-listener" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" +dependencies = [ + "event-listener", + "pin-project-lite", +] + [[package]] name = "exr" version = "1.5.2" @@ -1886,9 +2006,9 @@ dependencies = [ [[package]] name = "futures" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" dependencies = [ "futures-channel", "futures-core", @@ -1901,9 +2021,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ "futures-core", "futures-sink", @@ -1911,15 +2031,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" [[package]] name = "futures-executor" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" dependencies = [ "futures-core", "futures-task", @@ -1928,15 +2048,15 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" [[package]] name = "futures-macro" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", @@ -1945,15 +2065,15 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" [[package]] name = "futures-task" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" [[package]] name = "futures-timer" @@ -1963,9 +2083,9 @@ checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" [[package]] name = "futures-util" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ "futures-channel", "futures-core", @@ -2975,6 +3095,21 @@ dependencies = [ "serde_json", ] +[[package]] +name = "jsonwebtoken" +version = "9.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c7ea04a7c5c055c175f189b6dc6ba036fd62306b58c66c9f6389036c503a3f4" +dependencies = [ + "base64 0.21.5", + "js-sys", + "pem", + "ring 0.17.7", + "serde", + "serde_json", + "simple_asn1", +] + [[package]] name = "keccak" version = "0.1.4" @@ -3123,6 +3258,17 @@ dependencies = [ "safemem", ] +[[package]] +name = "linemux" +version = "0.3.0" +source = "git+https://github.com/jmagnuson/linemux.git?rev=acaafc602afac5d7a9cd3e087dafc937cac1e364#acaafc602afac5d7a9cd3e087dafc937cac1e364" +dependencies = [ + "futures-util", + "notify 6.0.1", + "pin-project-lite", + "tokio", +] + [[package]] name = "link-cplusplus" version = "1.0.8" @@ -3657,6 +3803,23 @@ dependencies = [ "windows-sys 0.42.0", ] +[[package]] +name = "notify" +version = "6.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5738a2795d57ea20abec2d6d76c6081186709c0024187cd5977265eda6598b51" +dependencies = [ + "bitflags 1.3.2", + "crossbeam-channel", + "filetime", + "inotify", + "kqueue", + "libc", + "mio", + "walkdir", + "windows-sys 0.45.0", +] + [[package]] name = "notify-rust" version = "4.7.0" @@ -3845,6 +4008,12 @@ version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +[[package]] +name = "oorandom" +version = "11.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" + [[package]] name = "opaque-debug" version = "0.3.0" @@ -4008,6 +4177,12 @@ dependencies = [ "system-deps 6.0.3", ] +[[package]] +name = "parking" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" + [[package]] name = "parking_lot" version = "0.11.2" @@ -4173,6 +4348,16 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" +[[package]] +name = "pem" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b8fcc794035347fb64beda2d3b462595dd2753e3f268d89c5aae77e8cf2c310" +dependencies = [ + "base64 0.21.5", + "serde", +] + [[package]] name = "percent-encoding" version = "2.3.1" @@ -4389,6 +4574,34 @@ dependencies = [ "xml-rs", ] +[[package]] +name = "plotters" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45" +dependencies = [ + "num-traits", + "plotters-backend", + "plotters-svg", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "plotters-backend" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e76628b4d3a7581389a35d5b6e2139607ad7c75b17aed325f210aa91f4a9609" + +[[package]] +name = "plotters-svg" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38f6d39893cca0701371e3c27294f09797214b86f1fb951b89ade8ec04e2abab" +dependencies = [ + "plotters-backend", +] + [[package]] name = "png" version = "0.17.7" @@ -5750,6 +5963,18 @@ dependencies = [ "libc", ] +[[package]] +name = "simple_asn1" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" +dependencies = [ + "num-bigint", + "num-traits", + "thiserror", + "time", +] + [[package]] name = "siphasher" version = "0.3.10" @@ -5764,18 +5989,18 @@ checksum = "04d2ecae5fcf33b122e2e6bd520a57ccf152d2dde3b38c71039df1a6867264ee" [[package]] name = "slab" -version = "0.4.7" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" dependencies = [ "autocfg", ] [[package]] name = "smallvec" -version = "1.10.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" +checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" [[package]] name = "snafu" @@ -6094,8 +6319,10 @@ name = "stump_core" version = "0.0.0" dependencies = [ "alphanumeric-sort", + "async-channel", "async-trait", "chrono", + "criterion", "cuid", "data-encoding", "dirs 5.0.1", @@ -6162,8 +6389,10 @@ dependencies = [ "cli", "futures-util", "hyper", + "jsonwebtoken", + "linemux", "local-ip-address", - "notify", + "notify 5.1.0", "openssl", "prisma-client-rust", "rand 0.8.5", @@ -6665,6 +6894,16 @@ dependencies = [ "time-core", ] +[[package]] +name = "tinytemplate" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" +dependencies = [ + "serde", + "serde_json", +] + [[package]] name = "tinyvec" version = "1.6.0" diff --git a/Cargo.toml b/Cargo.toml index 465b177b0..269a4e7d8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,6 +15,8 @@ rust-version = "1.72.1" async-trait = "0.1.74" async-stream = "0.3.5" bcrypt = "0.15.0" +futures = "0.3.30" +futures-util = "0.3.30" prisma-client-rust = { git = "https://github.com/Brendonovich/prisma-client-rust.git", tag = "0.6.11", features = [ "sqlite-create-many", "migrations", diff --git a/README.md b/README.md index 055a115a7..41d1947c7 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,6 @@ Stump is a free and open source comics, manga and digital book server with OPDS - [Core](#core) - [Crates](#crates) - [Docs](#docs) - - [Interface](#interface) - [Packages](#packages) - [Similar Projects 👯](#similar-projects-) @@ -159,6 +158,8 @@ Stand-alone applications that can be run independently, at `/apps` in the root o - `server`: An [Axum](https://github.com/tokio-rs/axum) HTTP server - `web`: A React application, the primary UI for both the built-in web app the server serves and the desktop app +The only exception to this is the `docs` app, which is a NextJS application and is located at `/docs` in the root of the project. + ### Core A Rust crate containing Stump's core functionalities, at `/core` in the root of the project @@ -176,10 +177,6 @@ Various Rust crates, at `/crates` in the root of the project: A NextJS application for the Stump documentation site at `/docs` in the root of the project -### Interface - -A React component that is essentially the "main" UI for Stump, at `/interface` in the root of the project. It is used in both the `web` and `desktop` apps - ### Packages Various TypeScript packages, at `/packages` in the root of the project: @@ -187,6 +184,7 @@ Various TypeScript packages, at `/packages` in the root of the project: - `api`: All of the API functions used by the `client` package - `client`: React-query config, hooks, and other client-side utilities - `components`: Shared React components for the web and desktop applications +- `browser`: A React component that is essentially the "main" UI for Stump on browser-based platforms. It is isolated in order to be re-used in the two browser-based apps: `web` and `desktop` - `types`: Shared TypeScript types for interfacing with Stump's core and API diff --git a/apps/desktop/package.json b/apps/desktop/package.json index d8fb12244..7cd1892ca 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -17,7 +17,7 @@ }, "dependencies": { "@stump/client": "workspace:*", - "@stump/interface": "workspace:*", + "@stump/browser": "workspace:*", "@tanstack/react-query": "^4.28.0", "@tauri-apps/api": "^1.2.0", "react": "^18.2.0", diff --git a/apps/desktop/src/App.tsx b/apps/desktop/src/App.tsx index 195825909..afe69a9be 100644 --- a/apps/desktop/src/App.tsx +++ b/apps/desktop/src/App.tsx @@ -1,5 +1,5 @@ +import { StumpWebClient } from '@stump/browser' import { Platform } from '@stump/client' -import StumpInterface from '@stump/interface' import { invoke, os } from '@tauri-apps/api' import { useEffect, useMemo, useState } from 'react' @@ -54,13 +54,13 @@ export default function App() { } }, [platform]) - // I want to wait until platform is properly set before rendering the interface + // I want to wait until platform is properly set before rendering the app if (!mounted) { return null } return ( - APIResult { + let now = Utc::now(); + let iat = now.timestamp() as usize; + let exp = (now + Duration::minutes(60)).timestamp() as usize; + let claims = Claims { + sub: user_id.to_string(), + exp, + iat, + }; + + let token = encode( + &Header::default(), + &claims, + // &EncodingKey::from_secret(jwt_secret.as_ref()), + &EncodingKey::from_secret("FIXME".as_bytes()), + ) + .map_err(|e| { + tracing::error!("Failed to encode JWT: {:?}", e); + APIError::InternalServerError("Failed to encode JWT".to_string()) + })?; + + Ok(token) +} + +/// A function that will take a JWT token and return the user ID +#[allow(dead_code)] // TODO: Remove this once the function is used +pub(crate) fn verify_session_jwt(token: &str) -> APIResult { + let token_data = decode::( + token, + // &DecodingKey::from_secret(jwt_secret.as_ref()), + &DecodingKey::from_secret("FIXME".as_bytes()), + &Validation::default(), + ) + .map_err(|e| { + tracing::error!("Failed to decode JWT: {:?}", e); + APIError::Unauthorized + })?; + + Ok(token_data.claims.sub) +} diff --git a/apps/server/src/config/mod.rs b/apps/server/src/config/mod.rs index f334f75bf..a13c6963e 100644 --- a/apps/server/src/config/mod.rs +++ b/apps/server/src/config/mod.rs @@ -1,3 +1,4 @@ pub mod cors; +mod jwt; pub mod session; pub mod state; diff --git a/apps/server/src/config/session/cleanup.rs b/apps/server/src/config/session/cleanup.rs index 46b85f4c8..238ddc7f4 100644 --- a/apps/server/src/config/session/cleanup.rs +++ b/apps/server/src/config/session/cleanup.rs @@ -1,41 +1,85 @@ +use std::collections::VecDeque; + use prisma_client_rust::chrono::Utc; +use serde::{Deserialize, Serialize}; use stump_core::{ - job::{Job, JobError, JobTrait, WorkerCtx}, + job::{ + error::JobError, JobExecuteLog, JobExt, JobOutputExt, JobTaskOutput, WorkerCtx, + WorkingState, WrappedJob, + }, prisma::session, }; pub const SESSION_CLEANUP_JOB_NAME: &str = "session_cleanup"; +/// The data that is collected and updated during the execution of a library scan job +#[derive(Serialize, Deserialize, Default, Debug)] +pub struct SessionCleanupJobOutput { + /// The number of removed sessions + removed_sessions: u64, +} + +impl JobOutputExt for SessionCleanupJobOutput {} + +#[derive(Clone)] pub struct SessionCleanupJob; impl SessionCleanupJob { - pub fn new() -> Box> { - Job::new(Self) + pub fn new() -> Box> { + WrappedJob::new(Self) } } #[async_trait::async_trait] -impl JobTrait for SessionCleanupJob { - fn name(&self) -> &'static str { - SESSION_CLEANUP_JOB_NAME - } +impl JobExt for SessionCleanupJob { + const NAME: &'static str = SESSION_CLEANUP_JOB_NAME; + + type Output = SessionCleanupJobOutput; + type Task = (); - fn description(&self) -> Option> { + fn description(&self) -> Option { None } - async fn run(&mut self, ctx: WorkerCtx) -> Result { - tracing::trace!("Deleting expired sessions"); + async fn init( + &mut self, + ctx: &WorkerCtx, + ) -> Result, JobError> { + let mut output = Self::Output::default(); + let mut logs = vec![]; - let client = ctx.core_ctx.db.clone(); - let affected_rows = client + let affected_rows = ctx + .db .session() .delete_many(vec![session::expires_at::lt(Utc::now().into())]) .exec() - .await?; + .await + .map_or_else( + |e| { + logs.push(JobExecuteLog::error(format!( + "Failed to delete expired sessions: {:?}", + e.to_string() + ))); + 0 + }, + |count| count as u64, + ); + output.removed_sessions = affected_rows; + tracing::debug!(affected_rows = ?affected_rows, "Deleted expired sessions"); - tracing::trace!(affected_rows = ?affected_rows, "Deleted expired sessions"); + Ok(WorkingState { + output: Some(output), + tasks: VecDeque::default(), + completed_tasks: 0, + logs, + }) + } - Ok(1) + async fn execute_task( + &self, + _: &WorkerCtx, + _: Self::Task, + ) -> Result, JobError> { + unreachable!("SessionCleanupJob does not have any tasks! It should not be executed with any tasks!") } } diff --git a/apps/server/src/config/session/store.rs b/apps/server/src/config/session/store.rs index 721fc23fb..7a650dba1 100644 --- a/apps/server/src/config/session/store.rs +++ b/apps/server/src/config/session/store.rs @@ -45,7 +45,7 @@ impl PrismaSessionStore { interval.set_missed_tick_behavior(MissedTickBehavior::Delay); loop { interval.tick().await; // The first tick completes immediately - if let Err(error) = ctx.dispatch_job(SessionCleanupJob::new()) { + if let Err(error) = ctx.enqueue_job(SessionCleanupJob::new()) { tracing::error!(error = ?error, "Failed to dispatch session cleanup job"); } else { tracing::trace!("Dispatched session cleanup job"); diff --git a/apps/server/src/errors.rs b/apps/server/src/errors.rs index 1abb5df84..995250545 100644 --- a/apps/server/src/errors.rs +++ b/apps/server/src/errors.rs @@ -2,6 +2,7 @@ use axum::{ extract::multipart::MultipartError, http::StatusCode, response::{IntoResponse, Response}, + Json, }; use cli::CliError; use prisma_client_rust::{ @@ -9,8 +10,7 @@ use prisma_client_rust::{ QueryError, }; use stump_core::{ - error::CoreError, event::InternalCoreTask, filesystem::FileError, - job::JobManagerError, + error::CoreError, filesystem::FileError, job::error::JobManagerError, CoreEvent, }; use tokio::sync::mpsc; use tower_sessions::session::SessionError; @@ -19,9 +19,16 @@ use utoipa::ToSchema; use std::{net, num::TryFromIntError}; use thiserror::Error; +/// A type alias for the result of a server operation pub type ServerResult = Result; -pub type ApiResult = Result; +/// A type alias for the result of an API operation, e.g. the response of an axum handler +pub type APIResult = Result; +/// The top-level error type for the Stump server binary. The entry is a CLI app which either +/// performs a given command _or_ starts the server. +/// +/// Note: If there is an invalid configuration, neither of these can happen, so there is a +/// separate error variant for that. #[derive(Debug, Error)] pub enum EntryError { #[error("{0}")] @@ -32,6 +39,8 @@ pub enum EntryError { ServerError(#[from] ServerError), } +/// A generic error type to encapsulate general server errors, which may include API errors, but +/// also includes other errors such as a failure to boot or bind to a port. #[derive(Debug, Error)] pub enum ServerError { // TODO: meh @@ -40,9 +49,11 @@ pub enum ServerError { #[error("Stump failed to parse the provided address: {0}")] InvalidAddress(#[from] net::AddrParseError), #[error("{0}")] - ApiError(#[from] ApiError), + APIError(#[from] APIError), } +/// Authentication errors, emitted during the authentication process and in instances where a user +/// is not authorized to access a resource/action. #[derive(Error, Debug)] pub enum AuthError { #[error("Error during the authentication process")] @@ -84,12 +95,11 @@ impl IntoResponse for AuthError { } } -// TODO: ApiError -> APIError -// TODO: Serialization is really poor, need to fix that - +/// The error representation for API errors. This is a simple enum which will be converted into a +/// JSON response containing the status code and the error message. #[allow(unused)] #[derive(Debug, Error, ToSchema)] -pub enum ApiError { +pub enum APIError { #[error("{0}")] BadRequest(String), #[error("{0}")] @@ -119,130 +129,169 @@ pub enum ApiError { PrismaError(#[from] QueryError), } -impl From for ApiError { +impl APIError { + /// A helper function to get the status code for an APIError + pub fn status_code(&self) -> StatusCode { + match self { + APIError::BadRequest(_) => StatusCode::BAD_REQUEST, + APIError::NotFound(_) => StatusCode::NOT_FOUND, + APIError::InternalServerError(_) => StatusCode::INTERNAL_SERVER_ERROR, + APIError::Unauthorized => StatusCode::UNAUTHORIZED, + APIError::Forbidden(_) => StatusCode::FORBIDDEN, + APIError::NotImplemented => StatusCode::NOT_IMPLEMENTED, + APIError::ServiceUnavailable(_) => StatusCode::SERVICE_UNAVAILABLE, + APIError::BadGateway(_) => StatusCode::BAD_GATEWAY, + APIError::PrismaError(e) => { + if e.is_prisma_error::() { + StatusCode::NOT_FOUND + } else if e.is_prisma_error::() { + StatusCode::UNPROCESSABLE_ENTITY + } else { + StatusCode::INTERNAL_SERVER_ERROR + } + }, + APIError::Redirect(_) => StatusCode::TEMPORARY_REDIRECT, + _ => StatusCode::INTERNAL_SERVER_ERROR, + } + } +} + +impl From for APIError { fn from(error: MultipartError) -> Self { - ApiError::InternalServerError(error.to_string()) + APIError::InternalServerError(error.to_string()) } } -impl From for ApiError { +impl From for APIError { fn from(error: reqwest::Error) -> Self { - ApiError::InternalServerError(error.to_string()) + APIError::InternalServerError(error.to_string()) } } -impl ApiError { - pub fn forbidden_discreet() -> ApiError { - ApiError::Forbidden(String::from( +impl APIError { + pub fn forbidden_discreet() -> APIError { + APIError::Forbidden(String::from( "You do not have permission to access this resource.", )) } } -impl From for ApiError { +impl From for APIError { fn from(e: TryFromIntError) -> Self { - ApiError::InternalServerError(e.to_string()) + APIError::InternalServerError(e.to_string()) } } -impl From for ApiError { +impl From for APIError { fn from(err: CoreError) -> Self { match err { - CoreError::InternalError(err) => ApiError::InternalServerError(err), - CoreError::IoError(err) => ApiError::InternalServerError(err.to_string()), - CoreError::MigrationError(err) => ApiError::InternalServerError(err), - CoreError::QueryError(err) => ApiError::InternalServerError(err.to_string()), - CoreError::Unknown(err) => ApiError::InternalServerError(err), + CoreError::InternalError(err) => APIError::InternalServerError(err), + CoreError::IoError(err) => APIError::InternalServerError(err.to_string()), + CoreError::MigrationError(err) => APIError::InternalServerError(err), + CoreError::QueryError(err) => APIError::InternalServerError(err.to_string()), + CoreError::Unknown(err) => APIError::InternalServerError(err), CoreError::Utf8ConversionError(err) => { - ApiError::InternalServerError(err.to_string()) + APIError::InternalServerError(err.to_string()) }, CoreError::XmlWriteError(err) => { - ApiError::InternalServerError(err.to_string()) + APIError::InternalServerError(err.to_string()) }, - _ => ApiError::InternalServerError(err.to_string()), + _ => APIError::InternalServerError(err.to_string()), } } } -impl From for ApiError { +impl From for APIError { fn from(error: JobManagerError) -> Self { - ApiError::InternalServerError(error.to_string()) + APIError::InternalServerError(error.to_string()) } } -impl From for ApiError { - fn from(error: AuthError) -> ApiError { +impl From for APIError { + fn from(error: AuthError) -> APIError { match error { AuthError::BcryptError(_) => { - ApiError::InternalServerError("Internal server error".to_string()) + APIError::InternalServerError("Internal server error".to_string()) }, AuthError::BadCredentials => { - ApiError::BadRequest("Missing or malformed credentials".to_string()) + APIError::BadRequest("Missing or malformed credentials".to_string()) }, - AuthError::BadRequest => ApiError::BadRequest( + AuthError::BadRequest => APIError::BadRequest( "The Authorization header could no be parsed".to_string(), ), - AuthError::Unauthorized => ApiError::Unauthorized, - AuthError::Forbidden => ApiError::Forbidden("Forbidden".to_string()), + AuthError::Unauthorized => APIError::Unauthorized, + AuthError::Forbidden => APIError::Forbidden("Forbidden".to_string()), } } } -impl From for ApiError { - fn from(error: bcrypt::BcryptError) -> ApiError { - ApiError::InternalServerError(error.to_string()) +impl From for APIError { + fn from(error: bcrypt::BcryptError) -> APIError { + APIError::InternalServerError(error.to_string()) } } -impl From> for ApiError { - fn from(err: mpsc::error::SendError) -> Self { - ApiError::InternalServerError(err.to_string()) +impl From> for APIError { + fn from(err: mpsc::error::SendError) -> Self { + APIError::InternalServerError(err.to_string()) } } -impl From for ApiError { +impl From for APIError { fn from(e: prisma_client_rust::RelationNotFetchedError) -> Self { - ApiError::InternalServerError(e.to_string()) + APIError::InternalServerError(e.to_string()) } } -impl From for ApiError { - fn from(error: FileError) -> ApiError { - ApiError::InternalServerError(error.to_string()) +impl From for APIError { + fn from(error: FileError) -> APIError { + APIError::InternalServerError(error.to_string()) } } -impl From for ApiError { - fn from(error: std::io::Error) -> ApiError { - ApiError::InternalServerError(error.to_string()) +impl From for APIError { + fn from(error: std::io::Error) -> APIError { + APIError::InternalServerError(error.to_string()) } } -impl IntoResponse for ApiError { - fn into_response(self) -> Response { - match self { - ApiError::BadRequest(err) => (StatusCode::BAD_REQUEST, err), - ApiError::NotFound(err) => (StatusCode::NOT_FOUND, err), - ApiError::InternalServerError(err) => { - (StatusCode::INTERNAL_SERVER_ERROR, err) - }, - ApiError::Unauthorized => (StatusCode::UNAUTHORIZED, self.to_string()), - ApiError::Forbidden(err) => (StatusCode::FORBIDDEN, err), - ApiError::NotImplemented => (StatusCode::NOT_IMPLEMENTED, self.to_string()), - ApiError::ServiceUnavailable(err) => (StatusCode::SERVICE_UNAVAILABLE, err), - ApiError::BadGateway(err) => (StatusCode::BAD_GATEWAY, err), - ApiError::PrismaError(e) => { - if e.is_prisma_error::() { - (StatusCode::NOT_FOUND, e.to_string()) - } else if e.is_prisma_error::() { - (StatusCode::UNPROCESSABLE_ENTITY, e.to_string()) - } else { - (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()) - } - }, - ApiError::Redirect(err) => (StatusCode::TEMPORARY_REDIRECT, err), - _ => (StatusCode::INTERNAL_SERVER_ERROR, self.to_string()), +/// The response body for API errors. This is just a basic JSON response with a status code and a message. +/// Any axum handlers which return a Result with an Error of APIError will be converted into this response. +pub struct APIErrorResponse { + status: StatusCode, + message: String, +} + +impl From for APIErrorResponse { + fn from(error: APIError) -> Self { + APIErrorResponse { + status: error.status_code(), + message: error.to_string(), } - .into_response() + } +} + +impl IntoResponse for APIErrorResponse { + fn into_response(self) -> Response { + let body = serde_json::json!({ + "status": self.status.as_u16(), + "message": self.message, + }); + + let base_response = Json(body).into_response(); + Response::builder() + .status(self.status) + .header("Content-Type", "application/json") + .body(base_response.into_body()) + .unwrap_or_else(|error| { + tracing::error!(?error, "Failed to build response"); + (StatusCode::INTERNAL_SERVER_ERROR, error.to_string()).into_response() + }) + } +} + +impl IntoResponse for APIError { + fn into_response(self) -> Response { + APIErrorResponse::from(self).into_response() } } diff --git a/apps/server/src/filter/basic_filter.rs b/apps/server/src/filter/basic_filter.rs index b7dedd043..1dbd15615 100644 --- a/apps/server/src/filter/basic_filter.rs +++ b/apps/server/src/filter/basic_filter.rs @@ -2,10 +2,13 @@ use std::str::FromStr; use serde::{de, Deserialize, Serialize}; use serde_untagged::UntaggedEnumVisitor; -use stump_core::db::{entity::age_rating_deserializer, query::ordering::QueryOrder}; +use stump_core::db::{ + entity::{age_rating_deserializer, LogLevel}, + query::ordering::QueryOrder, +}; use utoipa::ToSchema; -use crate::errors::ApiError; +use crate::errors::APIError; use super::common::{ chain_optional_iter, from_optional_str, read_status_or_seq_read_status, @@ -268,14 +271,14 @@ pub enum ReadStatus { } impl FromStr for ReadStatus { - type Err = ApiError; + type Err = APIError; fn from_str(s: &str) -> Result { match s.to_lowercase().as_str() { "unread" => Ok(ReadStatus::Unread), "reading" => Ok(ReadStatus::Reading), "completed" => Ok(ReadStatus::Completed), - _ => Err(ApiError::BadRequest(format!("invalid read status: {}", s))), + _ => Err(APIError::BadRequest(format!("invalid read status: {}", s))), } } } @@ -315,6 +318,14 @@ pub struct MediaFilter { pub relation_filter: MediaRelationFilter, } +#[derive(Default, Debug, Clone, Deserialize, Serialize, ToSchema)] +pub struct LogFilter { + pub level: Option, + pub job_id: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub timestamp: Option>, +} + #[cfg(test)] mod tests { use super::*; diff --git a/apps/server/src/http_server.rs b/apps/server/src/http_server.rs index f215db342..4e1289685 100644 --- a/apps/server/src/http_server.rs +++ b/apps/server/src/http_server.rs @@ -4,7 +4,7 @@ use axum::{error_handling::HandleErrorLayer, extract::connect_info::Connected, R use hyper::server::conn::AddrStream; use stump_core::{ config::{bootstrap_config_dir, logging::init_tracing}, - event::InternalCoreTask, + job::JobControllerCommand, StumpCore, }; use tokio::sync::oneshot; @@ -39,12 +39,6 @@ pub async fn run_http_server(config: StumpConfig) -> ServerResult<()> { .await .map_err(|e| ServerError::ServerStartError(e.to_string()))?; - // Initialize the job manager - core.get_job_manager() - .init() - .await - .map_err(|e| ServerError::ServerStartError(e.to_string()))?; - // Initialize the scheduler core.init_scheduler() .await @@ -78,9 +72,7 @@ pub async fn run_http_server(config: StumpConfig) -> ServerResult<()> { let _ = core .get_context() - .dispatch_task(InternalCoreTask::Shutdown { - return_sender: shutdown_tx, - }); + .send_job_controller_command(JobControllerCommand::Shutdown(shutdown_tx)); shutdown_rx .await diff --git a/apps/server/src/middleware/auth.rs b/apps/server/src/middleware/auth.rs index 20e7629e0..a5e80b7f6 100644 --- a/apps/server/src/middleware/auth.rs +++ b/apps/server/src/middleware/auth.rs @@ -12,7 +12,7 @@ use prisma_client_rust::{ }; use stump_core::{ db::entity::{User, UserPermission}, - prisma::user, + prisma::{user, PrismaClient}, }; use tower_sessions::Session; @@ -23,6 +23,8 @@ use crate::{ pub struct Auth; +// TODO: Change Response to APIResultResponse + #[async_trait] impl FromRequestParts for Auth where @@ -86,67 +88,78 @@ where return Err((StatusCode::UNAUTHORIZED).into_response()); }; - if !auth_header.starts_with("Basic ") || auth_header.len() <= 6 { - tracing::error!(?auth_header, "Invalid auth header!"); - return Err((StatusCode::UNAUTHORIZED).into_response()); + if auth_header.starts_with("Bearer ") && auth_header.len() > 7 { + let token = auth_header[7..].to_owned(); + return handle_bearer_auth(token).await; + } else if auth_header.starts_with("Basic ") && auth_header.len() > 6 { + let encoded_credentials = auth_header[6..].to_owned(); + return handle_basic_auth(encoded_credentials, &state.db, session).await; } - let encoded_credentials = auth_header[6..].to_string(); - let decoded_bytes = - STANDARD - .decode(encoded_credentials.as_bytes()) - .map_err(|e| { - (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()).into_response() - })?; - let decoded_credentials = - decode_base64_credentials(decoded_bytes).map_err(|e| { - (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()).into_response() - })?; - - let fetched_user = state - .db - .user() - .find_unique(user::username::equals(decoded_credentials.username.clone())) - .with(user::user_preferences::fetch()) - .with(user::age_restriction::fetch()) - .exec() - .await - .map_err(|e| map_prisma_error(e).into_response())?; - - let Some(user) = fetched_user else { - tracing::error!( - "No user found for username: {}", - &decoded_credentials.username - ); - return Err((StatusCode::UNAUTHORIZED).into_response()); - }; - - let is_match = - verify_password(&user.hashed_password, &decoded_credentials.password) - .map_err(|e| e.into_response())?; - - if is_match && user.is_locked { - tracing::error!( - username = &user.username, - "User is locked, denying authentication" - ); - return Err((StatusCode::UNAUTHORIZED, "Your account is locked. Please contact an administrator to unlock your account.").into_response()); - } else if is_match { - tracing::trace!( - username = &user.username, - "Basic authentication sucessful. Creating session for user" - ); - let user = User::from(user); - session.insert(SESSION_USER_KEY, user).map_err(|e| { - tracing::error!("Failed to insert user into session: {}", e); - (StatusCode::INTERNAL_SERVER_ERROR).into_response() - })?; + return Err((StatusCode::UNAUTHORIZED).into_response()); + } +} - return Ok(Self); - } +// TODO: https://github.com/stumpapp/stump/issues/219 +async fn handle_bearer_auth(_: String) -> Result { + Err((StatusCode::NOT_IMPLEMENTED).into_response()) +} +async fn handle_basic_auth( + encoded_credentials: String, + client: &PrismaClient, + session: Session, +) -> Result { + let decoded_bytes = STANDARD + .decode(encoded_credentials.as_bytes()) + .map_err(|e| { + (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()).into_response() + })?; + let decoded_credentials = decode_base64_credentials(decoded_bytes).map_err(|e| { + (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()).into_response() + })?; + + let fetched_user = client + .user() + .find_unique(user::username::equals(decoded_credentials.username.clone())) + .with(user::user_preferences::fetch()) + .with(user::age_restriction::fetch()) + .exec() + .await + .map_err(|e| map_prisma_error(e).into_response())?; + + let Some(user) = fetched_user else { + tracing::error!( + "No user found for username: {}", + &decoded_credentials.username + ); return Err((StatusCode::UNAUTHORIZED).into_response()); + }; + + let is_match = verify_password(&user.hashed_password, &decoded_credentials.password) + .map_err(|e| e.into_response())?; + + if is_match && user.is_locked { + tracing::error!( + username = &user.username, + "User is locked, denying authentication" + ); + return Err((StatusCode::UNAUTHORIZED, "Your account is locked. Please contact an administrator to unlock your account.").into_response()); + } else if is_match { + tracing::trace!( + username = &user.username, + "Basic authentication sucessful. Creating session for user" + ); + let user = User::from(user); + session.insert(SESSION_USER_KEY, user).map_err(|e| { + tracing::error!("Failed to insert user into session: {}", e); + (StatusCode::INTERNAL_SERVER_ERROR).into_response() + })?; + + return Ok(Auth); } + + Err((StatusCode::UNAUTHORIZED).into_response()) } /// Middleware to check the session user is an admin. **Must** be used **after** [Auth] midddleware. diff --git a/apps/server/src/middleware/logging.rs b/apps/server/src/middleware/logging.rs index 54f0f8fad..11136a9c4 100644 --- a/apps/server/src/middleware/logging.rs +++ b/apps/server/src/middleware/logging.rs @@ -5,13 +5,13 @@ use axum::{ response::IntoResponse, }; -use crate::errors::ApiResult; +use crate::errors::APIResult; #[allow(dead_code)] pub(crate) async fn logging_middleware( req: Request, next: Next, -) -> ApiResult { +) -> APIResult { // TODO: Refactor to not rely on global state when re-enabling logging middleware // if get_log_verbosity() < 3 { // return Ok(next.run(req).await); diff --git a/apps/server/src/routers/api/v1/auth.rs b/apps/server/src/routers/api/v1/auth.rs index 6b4ab866f..264bba313 100644 --- a/apps/server/src/routers/api/v1/auth.rs +++ b/apps/server/src/routers/api/v1/auth.rs @@ -20,7 +20,7 @@ use utoipa::ToSchema; use crate::{ config::{session::SESSION_USER_KEY, state::AppState}, - errors::{ApiError, ApiResult}, + errors::{APIError, APIResult}, http_server::StumpRequestInfo, utils::verify_password, }; @@ -53,11 +53,11 @@ pub struct LoginOrRegisterArgs { )] /// Returns the currently logged in user from the session. If no user is logged in, returns an /// unauthorized error. -async fn viewer(session: Session) -> ApiResult> { +async fn viewer(session: Session) -> APIResult> { if let Some(user) = session.get::(SESSION_USER_KEY)? { Ok(Json(user)) } else { - Err(ApiError::Unauthorized) + Err(APIError::Unauthorized) } } @@ -67,7 +67,7 @@ async fn handle_login_attempt( user_agent: UserAgent, request_info: StumpRequestInfo, success: bool, -) -> ApiResult { +) -> APIResult { let login_activity = client .user_login_activity() .create( @@ -86,7 +86,7 @@ async fn handle_remove_earliest_session( client: &PrismaClient, for_user_id: String, session_id: Option, -) -> ApiResult { +) -> APIResult { if let Some(oldest_session_id) = session_id { let _deleted_session = client .session() @@ -124,7 +124,7 @@ async fn login( session: Session, State(state): State, Json(input): Json, -) -> ApiResult> { +) -> APIResult> { if let Some(user) = session.get::(SESSION_USER_KEY)? { if input.username == user.username { return Ok(Json(user)); @@ -163,7 +163,7 @@ async fn login( if db_user.is_locked && verify_password(&db_user.hashed_password, &input.password)? => { - Err(ApiError::Forbidden( + Err(APIError::Forbidden( "Account is locked. Please contact an administrator to unlock your account." .to_string(), )) @@ -201,7 +201,7 @@ async fn login( tracing::debug!(?removed_sessions_count, ?user_id, "Locked user account and removed all associated sessions") } - return Err(ApiError::Unauthorized); + return Err(APIError::Unauthorized); } let existing_sessions = db_user @@ -261,7 +261,7 @@ async fn login( Ok(Json(user)) }, - _ => Err(ApiError::Unauthorized), + _ => Err(APIError::Unauthorized), } } @@ -275,10 +275,10 @@ async fn login( ) )] /// Destroys the session and logs the user out. -async fn logout(session: Session) -> ApiResult<()> { +async fn logout(session: Session) -> APIResult<()> { session.delete(); if !matches!(session.deleted(), Some(SessionDeletion::Deleted)) { - return Err(ApiError::InternalServerError( + return Err(APIError::InternalServerError( "Failed to destroy session".to_string(), )); } @@ -302,8 +302,8 @@ pub async fn register( session: Session, State(ctx): State, Json(input): Json, -) -> ApiResult> { - let db = ctx.get_db(); +) -> APIResult> { + let db = &ctx.db; let has_users = db.user().find_first(vec![]).exec().await?.is_some(); @@ -314,13 +314,13 @@ pub async fn register( // TODO: move nested if to if let once stable if let Some(user) = session_user { if !user.is_server_owner { - return Err(ApiError::Forbidden(String::from( + return Err(APIError::Forbidden(String::from( "You do not have permission to access this resource.", ))); } } else if session_user.is_none() && has_users { // if users exist, a valid session is required to register a new user - return Err(ApiError::Unauthorized); + return Err(APIError::Unauthorized); } else if !has_users { // if no users present, the user is automatically a server owner is_server_owner = true; diff --git a/apps/server/src/routers/api/v1/book_club.rs b/apps/server/src/routers/api/v1/book_club.rs index 328b80050..72fa6688f 100644 --- a/apps/server/src/routers/api/v1/book_club.rs +++ b/apps/server/src/routers/api/v1/book_club.rs @@ -31,7 +31,7 @@ use utoipa::ToSchema; use crate::{ config::state::AppState, - errors::{ApiError, ApiResult}, + errors::{APIError, APIResult}, filter::chain_optional_iter, middleware::auth::{Auth, BookClubGuard}, utils::{ @@ -175,8 +175,8 @@ async fn get_book_clubs( State(ctx): State, QsQuery(params): QsQuery, session: Session, -) -> ApiResult>> { - let client = ctx.get_db(); +) -> APIResult>> { + let client = &ctx.db; let viewer = get_session_user(&session)?; let where_params = if params.all { @@ -225,8 +225,8 @@ async fn create_book_club( State(ctx): State, session: Session, Json(payload): Json, -) -> ApiResult> { - let db = ctx.get_db(); +) -> APIResult> { + let db = &ctx.db; let viewer = get_user_and_enforce_permission(&session, UserPermission::CreateBookClub)?; @@ -284,8 +284,8 @@ async fn get_book_club( State(ctx): State, Path(id): Path, session: Session, -) -> ApiResult> { - let client = ctx.get_db(); +) -> APIResult> { + let client = &ctx.db; let viewer = get_session_user(&session)?; let where_params = book_club_access_for_user(&viewer) @@ -301,7 +301,7 @@ async fn get_book_club( )) .exec() .await? - .ok_or(ApiError::NotFound("Book club not found".to_string()))?; + .ok_or(APIError::NotFound("Book club not found".to_string()))?; Ok(Json(BookClub::from(book_club))) } @@ -330,8 +330,8 @@ async fn update_book_club( Path(id): Path, session: Session, Json(payload): Json, -) -> ApiResult> { - let client = ctx.get_db(); +) -> APIResult> { + let client = &ctx.db; let viewer = get_session_user(&session)?; @@ -348,7 +348,7 @@ async fn update_book_club( ]) .exec() .await? - .ok_or(ApiError::NotFound("Book club not found".to_string()))?; + .ok_or(APIError::NotFound("Book club not found".to_string()))?; let updated_book_club = client .book_club() @@ -377,8 +377,8 @@ async fn update_book_club( #[derive(Deserialize, Type, ToSchema)] pub struct UpdateBookClubSchedule {} -async fn get_book_club_invitations() -> ApiResult>> { - Err(ApiError::NotImplemented) +async fn get_book_club_invitations() -> APIResult>> { + Err(APIError::NotImplemented) } #[derive(Deserialize, Type, ToSchema)] @@ -392,8 +392,8 @@ async fn create_book_club_invitation( Path(id): Path, session: Session, Json(payload): Json, -) -> ApiResult> { - let client = ctx.get_db(); +) -> APIResult> { + let client = &ctx.db; let viewer = get_session_user(&session)?; // I don't check for access control before the query because I am enforcing it when @@ -410,7 +410,7 @@ async fn create_book_club_invitation( ]) .exec() .await? - .ok_or(ApiError::NotFound("Book club not found".to_string()))?; + .ok_or(APIError::NotFound("Book club not found".to_string()))?; let invalid_role = payload .role @@ -419,9 +419,9 @@ async fn create_book_club_invitation( .unwrap_or(false); if invalid_role { - return Err(ApiError::BadRequest("Cannot invite a creator".to_string())); + return Err(APIError::BadRequest("Cannot invite a creator".to_string())); } else if payload.user_id == viewer.id { - return Err(ApiError::BadRequest( + return Err(APIError::BadRequest( "Cannot invite yourself a book club you are already a member of".to_string(), )); } @@ -458,8 +458,8 @@ async fn get_book_club_members( State(ctx): State, Path(id): Path, session: Session, -) -> ApiResult>> { - let client = ctx.get_db(); +) -> APIResult>> { + let client = &ctx.db; let viewer = get_session_user(&session)?; @@ -495,7 +495,7 @@ async fn create_book_club_member( input: CreateBookClubMember, book_club_id: String, client: &PrismaClient, -) -> ApiResult { +) -> APIResult { let created_member = client .book_club_member() .create( @@ -532,8 +532,8 @@ async fn respond_to_book_club_invitation( Path((id, invitation_id)): Path<(String, String)>, session: Session, Json(payload): Json, -) -> ApiResult>> { - let client = ctx.get_db(); +) -> APIResult>> { + let client = &ctx.db; let viewer = get_session_user(&session)?; @@ -546,7 +546,7 @@ async fn respond_to_book_club_invitation( ]) .exec() .await? - .ok_or(ApiError::NotFound("Invitation not found".to_string()))?; + .ok_or(APIError::NotFound("Invitation not found".to_string()))?; if payload.accept { let input = payload.member_details.unwrap_or(CreateBookClubMember { @@ -590,9 +590,9 @@ async fn create_book_club_member_handler( Path(id): Path, session: Session, Json(payload): Json, -) -> ApiResult> { +) -> APIResult> { get_session_server_owner_user(&session)?; - let client = ctx.get_db(); + let client = &ctx.db; let created_member = create_book_club_member(payload, id, client).await?; Ok(Json(created_member)) } @@ -611,8 +611,8 @@ async fn get_book_club_member( State(ctx): State, Path((id, member_id)): Path<(String, String)>, session: Session, -) -> ApiResult> { - let client = ctx.get_db(); +) -> APIResult> { + let client = &ctx.db; let viewer = get_session_user(&session)?; @@ -629,7 +629,7 @@ async fn get_book_club_member( .find_first(where_params) .exec() .await? - .ok_or(ApiError::NotFound("Book club member not found".to_string()))?; + .ok_or(APIError::NotFound("Book club member not found".to_string()))?; Ok(Json(BookClubMember::from(book_club_member))) } @@ -655,13 +655,13 @@ async fn update_book_club_member( Path((_id, member_id)): Path<(String, String)>, session: Session, Json(payload): Json, -) -> ApiResult> { - let client = ctx.get_db(); +) -> APIResult> { + let client = &ctx.db; let viewer = get_session_user(&session)?; if viewer.id != member_id && !viewer.is_server_owner { - return Err(ApiError::Forbidden( + return Err(APIError::Forbidden( "Cannot patch a book club member other than yourself".to_string(), )); } @@ -687,8 +687,8 @@ async fn delete_book_club_member( State(ctx): State, Path((id, member_id)): Path<(String, String)>, session: Session, -) -> ApiResult> { - let client = ctx.get_db(); +) -> APIResult> { + let client = &ctx.db; let viewer = get_session_user(&session)?; let viewer_membership = client @@ -703,7 +703,7 @@ async fn delete_book_club_member( let can_remove_member = viewer_membership.is_some() || viewer.is_server_owner; if !can_remove_member { - return Err(ApiError::Forbidden("Insufficient privileges".to_string())); + return Err(APIError::Forbidden("Insufficient privileges".to_string())); } let deleted_member = client @@ -786,8 +786,8 @@ async fn create_book_club_schedule( Path(id): Path, session: Session, Json(payload): Json, -) -> ApiResult> { - let client = ctx.get_db(); +) -> APIResult> { + let client = &ctx.db; let viewer = get_session_user(&session)?; @@ -802,7 +802,7 @@ async fn create_book_club_schedule( ]) .exec() .await? - .ok_or(ApiError::NotFound("Book club not found".to_string()))?; + .ok_or(APIError::NotFound("Book club not found".to_string()))?; let interval_days = payload.default_interval_days.unwrap_or(30); let books_to_create = payload.books; @@ -890,8 +890,8 @@ async fn get_book_club_schedule( State(ctx): State, Path(id): Path, session: Session, -) -> ApiResult> { - let client = ctx.get_db(); +) -> APIResult> { + let client = &ctx.db; let viewer = get_session_user(&session)?; @@ -911,7 +911,7 @@ async fn get_book_club_schedule( ) .exec() .await? - .ok_or(ApiError::NotFound( + .ok_or(APIError::NotFound( "Book club schedule not found".to_string(), ))?; @@ -928,8 +928,8 @@ async fn add_books_to_book_club_schedule( Path(id): Path, session: Session, Json(payload): Json, -) -> ApiResult>> { - let client = ctx.get_db(); +) -> APIResult>> { + let client = &ctx.db; let viewer = get_session_user(&session)?; @@ -945,8 +945,8 @@ async fn add_books_to_book_club_schedule( .include(book_club_with_schedule::include()) .exec() .await? - .ok_or(ApiError::NotFound("Book club not found".to_string()))?; - let schedule = book_club.schedule.ok_or(ApiError::NotFound( + .ok_or(APIError::NotFound("Book club not found".to_string()))?; + let schedule = book_club.schedule.ok_or(APIError::NotFound( "Book club schedule not found".to_string(), ))?; @@ -961,13 +961,13 @@ async fn add_books_to_book_club_schedule( let books_to_add = payload.books; if books_to_add.is_empty() { - return Err(ApiError::BadRequest( + return Err(APIError::BadRequest( "Cannot add an empty list of books".to_string(), )); } let last_existing_book = existing_books.last().ok_or( - ApiError::InternalServerError("Could not find last existing book".to_string()), + APIError::InternalServerError("Could not find last existing book".to_string()), )?; let last_existing_book_end_at_str = last_existing_book.end_at.to_rfc3339(); let last_existing_book_end_at = @@ -982,7 +982,7 @@ async fn add_books_to_book_club_schedule( start_at < last_existing_book_end_at }); if has_collision { - return Err(ApiError::BadRequest( + return Err(APIError::BadRequest( "Cannot add books that have a start date before the last book's end date" .to_string(), )); @@ -1056,8 +1056,8 @@ async fn get_book_club_current_book( State(ctx): State, Path(id): Path, session: Session, -) -> ApiResult> { - let client = ctx.get_db(); +) -> APIResult> { + let client = &ctx.db; let viewer = get_session_user(&session)?; @@ -1077,18 +1077,18 @@ async fn get_book_club_current_book( ) .exec() .await? - .ok_or(ApiError::NotFound( + .ok_or(APIError::NotFound( "Book club schedule not found".to_string(), ))?; let current_book = book_club_schedule .books - .ok_or(ApiError::NotFound( + .ok_or(APIError::NotFound( "Book club schedule has no books".to_string(), ))? .first() .cloned() - .ok_or(ApiError::NotFound( + .ok_or(APIError::NotFound( "Book club schedule has no books".to_string(), ))?; diff --git a/apps/server/src/routers/api/v1/epub.rs b/apps/server/src/routers/api/v1/epub.rs index ac20e102e..b1a1898d4 100644 --- a/apps/server/src/routers/api/v1/epub.rs +++ b/apps/server/src/routers/api/v1/epub.rs @@ -19,7 +19,7 @@ use utoipa::ToSchema; use crate::{ config::state::AppState, - errors::{ApiError, ApiResult}, + errors::{APIError, APIResult}, middleware::auth::Auth, utils::{get_session_user, http::BufferResponse}, }; @@ -48,7 +48,7 @@ async fn get_epub_by_id( Path(id): Path, State(ctx): State, session: Session, -) -> ApiResult> { +) -> APIResult> { let user_id = get_session_user(&session)?.id; let result = ctx @@ -67,7 +67,7 @@ async fn get_epub_by_id( if let Some(book) = result { Ok(Json(Epub::try_from(book)?)) } else { - Err(ApiError::NotFound(format!( + Err(APIError::NotFound(format!( "Media with id {} not found", id ))) @@ -82,8 +82,8 @@ async fn update_epub_progress( State(ctx): State, session: Session, Json(input): Json, -) -> ApiResult> { - let db = ctx.get_db(); +) -> APIResult> { + let db = &ctx.db; let user_id = get_session_user(&session)?.id; let input_is_complete = input.is_complete.unwrap_or(input.percentage >= 1.0); @@ -150,8 +150,8 @@ async fn get_bookmarks( Path(id): Path, State(ctx): State, session: Session, -) -> ApiResult>> { - let client = ctx.get_db(); +) -> APIResult>> { + let client = &ctx.db; let user = get_session_user(&session)?; @@ -186,8 +186,8 @@ async fn create_or_update_bookmark( State(ctx): State, session: Session, Json(input): Json, -) -> ApiResult> { - let client = ctx.get_db(); +) -> APIResult> { + let client = &ctx.db; let user = get_session_user(&session)?; @@ -232,8 +232,8 @@ async fn delete_bookmark( State(ctx): State, session: Session, Json(input): Json, -) -> ApiResult> { - let client = ctx.get_db(); +) -> APIResult> { + let client = &ctx.db; let user = get_session_user(&session)?; @@ -259,7 +259,7 @@ async fn delete_bookmark( async fn get_epub_chapter( Path((id, chapter)): Path<(String, usize)>, State(ctx): State, -) -> ApiResult { +) -> APIResult { let result = ctx .db .media() @@ -270,7 +270,7 @@ async fn get_epub_chapter( if let Some(book) = result { Ok(EpubProcessor::get_chapter(book.path.as_str(), chapter)?.into()) } else { - Err(ApiError::NotFound(format!( + Err(APIError::NotFound(format!( "Media with id {} not found", id ))) @@ -285,7 +285,7 @@ async fn get_epub_chapter( async fn get_epub_meta( Path((id, root, resource)): Path<(String, String, PathBuf)>, State(ctx): State, -) -> ApiResult { +) -> APIResult { let result = ctx .db .media() @@ -312,7 +312,7 @@ async fn get_epub_meta( Ok(BufferResponse::new(content_type, buffer)) } else { - Err(ApiError::NotFound(format!( + Err(APIError::NotFound(format!( "Media with id {} not found", id ))) diff --git a/apps/server/src/routers/api/v1/filesystem.rs b/apps/server/src/routers/api/v1/filesystem.rs index bea10d045..c22bbc5ed 100644 --- a/apps/server/src/routers/api/v1/filesystem.rs +++ b/apps/server/src/routers/api/v1/filesystem.rs @@ -20,7 +20,7 @@ use tracing::trace; use crate::{ config::state::AppState, - errors::{ApiError, ApiResult}, + errors::{APIError, APIResult}, middleware::auth::{Auth, ServerOwnerGuard}, utils::enforce_session_permission, }; @@ -54,7 +54,7 @@ pub async fn list_directory( session: Session, pagination: Query, input: Json>, -) -> ApiResult>> { +) -> APIResult>> { enforce_session_permission(&session, UserPermission::FileExplorer)?; let input = input.0.unwrap_or_default(); @@ -67,12 +67,12 @@ pub async fn list_directory( let start_path = Path::new(&start_path); if !start_path.exists() { - return Err(ApiError::NotFound(format!( + return Err(APIError::NotFound(format!( "Directory does not exist: {}", start_path.display() ))); } else if !start_path.is_absolute() { - return Err(ApiError::BadRequest(format!( + return Err(APIError::BadRequest(format!( "Path must be absolute: {}", start_path.display() ))); diff --git a/apps/server/src/routers/api/v1/job.rs b/apps/server/src/routers/api/v1/job.rs index 5ef6d9c3c..d85ed06e3 100644 --- a/apps/server/src/routers/api/v1/job.rs +++ b/apps/server/src/routers/api/v1/job.rs @@ -6,28 +6,27 @@ use axum::{ }; use serde::{Deserialize, Serialize}; use serde_qs::axum::QsQuery; +use specta::Type; use stump_core::{ db::{ - entity::JobSchedulerConfig, + entity::{JobSchedulerConfig, PersistedJob}, query::{ ordering::QueryOrder, pagination::{Pageable, Pagination, PaginationQuery}, }, }, - event::InternalCoreTask, - job::JobDetail, + job::{AcknowledgeableCommand, JobControllerCommand}, prisma::{ job::{self, OrderByParam as JobOrderByParam}, job_schedule_config, library, server_config, }, }; use tokio::sync::oneshot; -use tracing::{debug, trace}; use utoipa::ToSchema; use crate::{ config::state::AppState, - errors::{ApiError, ApiResult}, + errors::{APIError, APIResult}, filter::chain_optional_iter, middleware::auth::{Auth, ServerOwnerGuard}, }; @@ -53,13 +52,19 @@ pub(crate) fn mount(app_state: AppState) -> Router { .layer(from_extractor_with_state::(app_state)) } +#[derive(Deserialize, Serialize, ToSchema, Type)] +pub struct GetJobsParams { + #[serde(default)] + pub load_logs: bool, +} + // TODO: support filtering #[utoipa::path( get, path = "/api/v1/jobs", tag = "job", responses( - (status = 200, description = "Successfully retrieved job reports", body = [JobDetail]), + (status = 200, description = "Successfully retrieved job reports", body = [PersistedJob]), (status = 401, description = "No user is logged in (unauthorized)."), (status = 403, description = "User does not have permission to access this resource."), (status = 500, description = "Internal server error."), @@ -69,14 +74,16 @@ pub(crate) fn mount(app_state: AppState) -> Router { async fn get_jobs( order: QsQuery, pagination_query: Query, + relation_query: Query, State(ctx): State, -) -> ApiResult>>> { +) -> APIResult>>> { let pagination = pagination_query.0.get(); let order = order.0; + let load_logs = relation_query.load_logs; - trace!(?pagination, ?order, "get_jobs"); + tracing::trace!(load_logs, ?pagination, ?order, "get_jobs"); - let db = ctx.get_db(); + let db = &ctx.db; let is_unpaged = pagination.is_unpaged(); let order_by_param: JobOrderByParam = order.try_into()?; @@ -87,6 +94,10 @@ async fn get_jobs( .run(|client| async move { let mut query = client.job().find_many(vec![]).order_by(order_by_param); + if load_logs { + query = query.with(job::logs::fetch(vec![])); + } + if !is_unpaged { match pagination_cloned { Pagination::Page(page_query) => { @@ -109,7 +120,7 @@ async fn get_jobs( .exec() .await? .into_iter() - .map(JobDetail::from) + .map(PersistedJob::from) .collect::>(); if is_unpaged { @@ -144,9 +155,9 @@ async fn get_jobs( ) )] /// Delete all jobs from the database. -async fn delete_jobs(State(ctx): State) -> ApiResult<()> { +async fn delete_jobs(State(ctx): State) -> APIResult<()> { let result = ctx.db.job().delete_many(vec![]).exec().await?; - debug!("Deleted {} job reports", result); + tracing::debug!("Deleted {} job reports", result); Ok(()) } @@ -165,10 +176,10 @@ async fn delete_jobs(State(ctx): State) -> ApiResult<()> { async fn delete_job_by_id( State(ctx): State, Path(job_id): Path, -) -> ApiResult<()> { +) -> APIResult<()> { let _ = ctx.db.job().delete(job::id::equals(job_id)).exec().await?; // TODO(aaron): debug why this breaks Axum... - // Ok(JobDetail::from(result)) + // Ok(PersistedJob::from(result)) Ok(()) } @@ -190,19 +201,24 @@ async fn delete_job_by_id( async fn cancel_job_by_id( State(ctx): State, Path(job_id): Path, -) -> ApiResult<()> { +) -> APIResult<()> { let (task_tx, task_rx) = oneshot::channel(); - ctx.dispatch_task(InternalCoreTask::CancelJob { - job_id, - return_sender: task_tx, - }) + ctx.send_job_controller_command(JobControllerCommand::CancelJob( + AcknowledgeableCommand { + id: job_id, + ack: task_tx, + }, + )) .map_err(|e| { - ApiError::InternalServerError(format!("Failed to submit internal task: {}", e)) + APIError::InternalServerError(format!( + "Failed to send command to job manager: {}", + e + )) })?; Ok(task_rx.await.map_err(|e| { - ApiError::InternalServerError(format!("Failed to cancel job: {}", e)) + APIError::InternalServerError(format!("Failed to get cancel confirmation: {}", e)) })??) } @@ -219,8 +235,8 @@ async fn cancel_job_by_id( )] async fn get_scheduler_config( State(ctx): State, -) -> ApiResult> { - let client = ctx.get_db(); +) -> APIResult> { + let client = &ctx.db; let server_config = client .server_config() @@ -231,14 +247,14 @@ async fn get_scheduler_config( ) .exec() .await? - .ok_or(ApiError::InternalServerError( + .ok_or(APIError::InternalServerError( "Server preferences have not been initialized".to_string(), ))?; let config = server_config .job_schedule_config()? .map(|c| c.to_owned()) - .ok_or(ApiError::NotFound( + .ok_or(APIError::NotFound( "Job scheduler config has not been initialized".to_string(), ))?; @@ -265,15 +281,15 @@ pub struct UpdateSchedulerConfig { async fn update_scheduler_config( State(ctx): State, Json(input): Json, -) -> ApiResult>> { - let db = ctx.get_db(); +) -> APIResult>> { + let db = &ctx.db; let should_remove_config = input.excluded_library_ids.is_none() && input.interval_secs.is_none(); tracing::trace!(should_remove_config, ?input, "update_scheduler_config"); - let result: Result, ApiError> = db + let result: Result, APIError> = db ._transaction() .run(|client| async move { let server_config = client @@ -282,7 +298,7 @@ async fn update_scheduler_config( .with(server_config::job_schedule_config::fetch()) .exec() .await? - .ok_or(ApiError::InternalServerError(String::from( + .ok_or(APIError::InternalServerError(String::from( "Server preferences are missing!", )))?; diff --git a/apps/server/src/routers/api/v1/library.rs b/apps/server/src/routers/api/v1/library.rs index b27614fce..0e05cd395 100644 --- a/apps/server/src/routers/api/v1/library.rs +++ b/apps/server/src/routers/api/v1/library.rs @@ -9,7 +9,7 @@ use prisma_client_rust::{chrono::Utc, not, or, raw, Direction}; use serde::{Deserialize, Serialize}; use serde_qs::axum::QsQuery; use specta::Type; -use std::{path, str::FromStr}; +use std::path; use tower_sessions::Session; use tracing::{debug, error, trace}; use utoipa::ToSchema; @@ -29,8 +29,8 @@ use stump_core::{ get_unknown_thumnail, image::{ self, generate_thumbnail, place_thumbnail, remove_thumbnails, - remove_thumbnails_of_type, ImageFormat, ImageProcessorOptions, ThumbnailJob, - ThumbnailJobConfig, + remove_thumbnails_of_type, ImageFormat, ImageProcessorOptions, + ThumbnailGenerationJob, ThumbnailGenerationJobParams, }, read_entire_file, scanner::LibraryScanJob, @@ -48,7 +48,7 @@ use stump_core::{ use crate::{ config::state::AppState, - errors::{ApiError, ApiResult}, + errors::{APIError, APIResult}, filter::{ chain_optional_iter, decode_path_filter, FilterableQuery, LibraryBaseFilter, LibraryFilter, LibraryRelationFilter, MediaFilter, SeriesFilter, @@ -164,7 +164,7 @@ async fn get_libraries( filter_query: QsQuery>, pagination_query: Query, State(ctx): State, -) -> ApiResult>>> { +) -> APIResult>>> { let FilterableQuery { filters, ordering } = filter_query.0.get(); let pagination = pagination_query.0.get(); @@ -219,9 +219,8 @@ async fn get_libraries( async fn get_last_visited_library( State(ctx): State, session: Session, -) -> ApiResult>> { - let client = ctx.get_db(); - +) -> APIResult>> { + let client = &ctx.db; let user = get_session_user(&session)?; let last_visited_library = client @@ -242,9 +241,8 @@ async fn update_last_visited_library( Path(id): Path, State(ctx): State, session: Session, -) -> ApiResult> { - let client = ctx.get_db(); - +) -> APIResult> { + let client = &ctx.db; let user = get_session_user(&session)?; let last_library_visit = client @@ -265,7 +263,7 @@ async fn update_last_visited_library( let library = last_library_visit .library() .ok() - .ok_or(ApiError::NotFound("Library not found".to_string()))?; + .ok_or(APIError::NotFound("Library not found".to_string()))?; Ok(Json(Library::from(library.to_owned()))) } @@ -283,8 +281,8 @@ async fn update_last_visited_library( /// Get stats for all libraries async fn get_libraries_stats( State(ctx): State, -) -> ApiResult> { - let db = ctx.get_db(); +) -> APIResult> { + let db = &ctx.db; // TODO: maybe add more, like missingBooks, idk let stats = db @@ -297,7 +295,7 @@ async fn get_libraries_stats( .next(); if stats.is_none() { - return Err(ApiError::InternalServerError( + return Err(APIError::InternalServerError( "Failed to compute stats for libraries".to_string(), )); } @@ -323,8 +321,8 @@ async fn get_libraries_stats( async fn get_library_by_id( Path(id): Path, State(ctx): State, -) -> ApiResult> { - let db = ctx.get_db(); +) -> APIResult> { + let db = &ctx.db; let library = db .library() @@ -333,7 +331,7 @@ async fn get_library_by_id( .with(library::tags::fetch(vec![])) .exec() .await? - .ok_or(ApiError::NotFound("Library not found".to_string()))?; + .ok_or(APIError::NotFound("Library not found".to_string()))?; Ok(Json(library.into())) } @@ -361,14 +359,14 @@ async fn get_library_series( Path(id): Path, State(ctx): State, session: Session, -) -> ApiResult>>> { +) -> APIResult>>> { let FilterableQuery { ordering, filters, .. } = filter_query.0.get(); let pagination = pagination_query.0.get(); tracing::debug!(?filters, ?ordering, ?pagination, "get_library_series"); - let db = ctx.get_db(); + let db = &ctx.db; let user = get_session_user(&session)?; let age_restrictions = user @@ -441,7 +439,7 @@ async fn get_library_media( pagination_query: Query, Path(id): Path, State(ctx): State, -) -> ApiResult>>> { +) -> APIResult>>> { let FilterableQuery { ordering, filters } = filter_query.0.get(); let pagination = pagination_query.0.get(); let pagination_cloned = pagination.clone(); @@ -502,7 +500,7 @@ pub(crate) fn get_library_thumbnail( first_book: &media::Data, image_format: Option, config: &StumpConfig, -) -> ApiResult<(ContentType, Vec)> { +) -> APIResult<(ContentType, Vec)> { let library_id = library.id.clone(); if let Some(format) = image_format.clone() { @@ -550,8 +548,8 @@ async fn get_library_thumbnail_handler( Path(id): Path, State(ctx): State, session: Session, -) -> ApiResult { - let db = ctx.get_db(); +) -> APIResult { + let db = &ctx.db; let user = get_session_user(&session)?; let age_restriction = user.age_restriction; @@ -580,18 +578,18 @@ async fn get_library_thumbnail_handler( .order_by(series::name::order(Direction::Asc)) .exec() .await? - .ok_or(ApiError::NotFound("Library has no series".to_string()))?; + .ok_or(APIError::NotFound("Library has no series".to_string()))?; let library = first_series .library()? - .ok_or(ApiError::Unknown(String::from("Failed to load library")))?; + .ok_or(APIError::Unknown(String::from("Failed to load library")))?; let image_format = library .library_options() .map(LibraryOptions::from)? .thumbnail_config .map(|config| config.format); - let first_book = first_series.media()?.first().ok_or(ApiError::NotFound( + let first_book = first_series.media()?.first().ok_or(APIError::NotFound( "Library has no media to get thumbnail from".to_string(), ))?; @@ -636,10 +634,10 @@ async fn patch_library_thumbnail( State(ctx): State, session: Session, Json(body): Json, -) -> ApiResult { +) -> APIResult { get_session_server_owner_user(&session)?; - let client = ctx.get_db(); + let client = &ctx.db; let target_page = body .is_zero_based @@ -664,17 +662,17 @@ async fn patch_library_thumbnail( ) .exec() .await? - .ok_or(ApiError::NotFound(String::from("Media not found")))?; + .ok_or(APIError::NotFound(String::from("Media not found")))?; if media.extension == "epub" { - return Err(ApiError::NotSupported); + return Err(APIError::NotSupported); } let library = media .series()? - .ok_or(ApiError::NotFound(String::from("Series relation missing")))? + .ok_or(APIError::NotFound(String::from("Series relation missing")))? .library()? - .ok_or(ApiError::NotFound(String::from("Library relation missing")))?; + .ok_or(APIError::NotFound(String::from("Library relation missing")))?; let thumbnail_options = library .library_options()? .thumbnail_config @@ -702,12 +700,12 @@ async fn replace_library_thumbnail( State(ctx): State, session: Session, mut upload: Multipart, -) -> ApiResult { +) -> APIResult { enforce_session_permissions( &session, &[UserPermission::UploadFile, UserPermission::ManageLibrary], )?; - let client = ctx.get_db(); + let client = &ctx.db; tracing::trace!(?id, ?upload, "Replacing library thumbnail"); @@ -716,7 +714,7 @@ async fn replace_library_thumbnail( .find_unique(library::id::equals(id)) .exec() .await? - .ok_or(ApiError::NotFound(String::from("Library not found")))?; + .ok_or(APIError::NotFound(String::from("Library not found")))?; let (content_type, bytes) = validate_image_upload(&mut upload).await?; @@ -760,8 +758,8 @@ async fn replace_library_thumbnail( async fn delete_library_thumbnails( Path(id): Path, State(ctx): State, -) -> ApiResult> { - let db = ctx.get_db(); +) -> APIResult> { + let db = &ctx.db; let thumbnails_dir = ctx.config.get_thumbnails_dir(); let result = db @@ -770,7 +768,7 @@ async fn delete_library_thumbnails( .include(library_thumbnails_deletion_include::include()) .exec() .await? - .ok_or(ApiError::NotFound("Library not found".to_string()))?; + .ok_or(APIError::NotFound("Library not found".to_string()))?; let thumbnail_config = result.library_options.thumbnail_config; let extension = if let Some(config) = thumbnail_config { @@ -821,7 +819,7 @@ async fn generate_library_thumbnails( Path(id): Path, State(ctx): State, Json(input): Json, -) -> ApiResult> { +) -> APIResult> { let library = ctx .db .library() @@ -829,7 +827,7 @@ async fn generate_library_thumbnails( .with(library::library_options::fetch()) .exec() .await? - .ok_or(ApiError::NotFound("Library not found".to_string()))?; + .ok_or(APIError::NotFound("Library not found".to_string()))?; let library_options = library.library_options()?.to_owned(); let existing_options = if let Some(config) = library_options.thumbnail_config { // I hard error here so that we don't accidentally generate thumbnails in an invalid or @@ -839,30 +837,23 @@ async fn generate_library_thumbnails( None }; let options = input.image_options.or(existing_options).unwrap_or_default(); - let config = ThumbnailJobConfig::SingleLibrary { - library_id: library.id, - force_regenerate: input.force_regenerate, - }; - tracing::trace!(?options, ?config, "Dispatching thumbnail job"); - - ctx.dispatch_job(ThumbnailJob::new(options, config))?; + let config = + ThumbnailGenerationJobParams::single_library(library.id, input.force_regenerate); + ctx.enqueue_job(ThumbnailGenerationJob::new(options, config)) + .map_err(|e| { + error!(?e, "Failed to enqueue thumbnail generation job"); + APIError::InternalServerError( + "Failed to enqueue thumbnail generation job".to_string(), + ) + })?; Ok(Json(())) } -#[derive(Debug, Deserialize, ToSchema)] -pub struct ScanQueryParam { - scan_mode: Option, -} - #[utoipa::path( post, path = "/api/v1/libraries/:id/scan", tag = "library", - params( - ("id" = String, Path, description = "The library ID"), - ("query" = ScanQueryParam, Query, description = "The scan options"), - ), responses( (status = 200, description = "Successfully queued library scan"), (status = 401, description = "Unauthorized"), @@ -875,10 +866,9 @@ pub struct ScanQueryParam { async fn scan_library( Path(id): Path, State(ctx): State, - query: Query, session: Session, -) -> Result<(), ApiError> { - let db = ctx.get_db(); +) -> Result<(), APIError> { + let db = &ctx.db; get_user_and_enforce_permission(&session, UserPermission::ScanLibrary)?; @@ -887,16 +877,18 @@ async fn scan_library( .find_unique(library::id::equals(id.clone())) .exec() .await? - .ok_or(ApiError::NotFound(format!( + .ok_or(APIError::NotFound(format!( "Library with id {} not found", id )))?; - let scan_mode = query.scan_mode.to_owned().unwrap_or_default(); - let scan_mode = LibraryScanMode::from_str(&scan_mode) - .map_err(|e| ApiError::BadRequest(format!("Invalid scan mode: {}", e)))?; - - ctx.dispatch_job(LibraryScanJob::new(library.path, scan_mode))?; + ctx.enqueue_job(LibraryScanJob::new(library.id, library.path)) + .map_err(|e| { + error!(?e, "Failed to enqueue library scan job"); + APIError::InternalServerError( + "Failed to enqueue library scan job".to_string(), + ) + })?; Ok(()) } @@ -928,13 +920,13 @@ async fn clean_library( Path(id): Path, State(ctx): State, session: Session, -) -> ApiResult> { +) -> APIResult> { get_user_and_enforce_permission(&session, UserPermission::ManageLibrary)?; - let db = ctx.get_db(); + let db = &ctx.db; let thumbnails_dir = ctx.config.get_thumbnails_dir(); - let result: ApiResult<(CleanLibraryResponse, Vec)> = db + let result: APIResult<(CleanLibraryResponse, Vec)> = db ._transaction() .run(|client| async move { // This isn't really necessary, but it is more for RESTful patterns (i.e. error @@ -944,7 +936,7 @@ async fn clean_library( .find_unique(library::id::equals(id.clone())) .exec() .await? - .ok_or(ApiError::NotFound("Library not found".to_string()))?; + .ok_or(APIError::NotFound("Library not found".to_string()))?; let delete_media_params = vec![ media::series::is(vec![series::library_id::equals(Some(id.clone()))]), @@ -1076,14 +1068,14 @@ async fn create_library( session: Session, State(ctx): State, Json(input): Json, -) -> ApiResult> { +) -> APIResult> { let user = get_session_server_owner_user(&session)?; - let db = ctx.get_db(); + let db = &ctx.db; debug!(user_id = user.id, ?input, "Creating library"); if !path::Path::new(&input.path).exists() { - return Err(ApiError::BadRequest(format!( + return Err(APIError::BadRequest(format!( "The library directory does not exist: {}", input.path ))); @@ -1096,7 +1088,7 @@ async fn create_library( .await?; if !child_libraries.is_empty() { - return Err(ApiError::BadRequest(String::from( + return Err(APIError::BadRequest(String::from( "You may not create a library that is a parent of another on the filesystem.", ))); } @@ -1104,7 +1096,7 @@ async fn create_library( // TODO: refactor once nested create is supported // https://github.com/Brendonovich/prisma-client-rust/issues/44 let library_options_arg = input.library_options.unwrap_or_default(); - let transaction_result: Result = db + let transaction_result: Result = db ._transaction() .run(|client| async move { let library_options = client @@ -1173,7 +1165,18 @@ async fn create_library( let library = transaction_result?; let scan_mode = input.scan_mode.unwrap_or_default(); - ctx.dispatch_job(LibraryScanJob::new(library.path.clone(), scan_mode))?; + if scan_mode != LibraryScanMode::None { + ctx.enqueue_job(LibraryScanJob::new( + library.id.clone(), + library.path.clone(), + )) + .map_err(|e| { + error!(?e, "Failed to enqueue library scan job"); + APIError::InternalServerError( + "Failed to enqueue library scan job".to_string(), + ) + })?; + } Ok(Json(library)) } @@ -1224,13 +1227,13 @@ async fn update_library( State(ctx): State, Path(id): Path, Json(input): Json, -) -> ApiResult> { +) -> APIResult> { get_user_and_enforce_permission(&session, UserPermission::EditLibrary)?; - let db = ctx.get_db(); + let db = &ctx.db; if !path::Path::new(&input.path).exists() { - return Err(ApiError::BadRequest(format!( + return Err(APIError::BadRequest(format!( "Updated path does not exist: {}", input.path ))); @@ -1293,7 +1296,7 @@ async fn update_library( db._batch(batches).await?; } - let updated = db + let updated_library = db .library() .update( library::id::equals(id), @@ -1311,10 +1314,19 @@ async fn update_library( let scan_mode = input.scan_mode.unwrap_or_default(); if scan_mode != LibraryScanMode::None { - ctx.dispatch_job(LibraryScanJob::new(updated.path.clone(), scan_mode))?; + ctx.enqueue_job(LibraryScanJob::new( + updated_library.id.clone(), + updated_library.path.clone(), + )) + .map_err(|e| { + error!(?e, "Failed to enqueue library scan job"); + APIError::InternalServerError( + "Failed to enqueue library scan job".to_string(), + ) + })?; } - Ok(Json(updated.into())) + Ok(Json(updated_library.into())) } #[utoipa::path( @@ -1338,9 +1350,9 @@ async fn delete_library( session: Session, Path(id): Path, State(ctx): State, -) -> ApiResult> { +) -> APIResult> { get_session_server_owner_user(&session)?; - let db = ctx.get_db(); + let db = &ctx.db; let thumbnails_dir = ctx.config.get_thumbnails_dir(); trace!(?id, "Attempting to delete library"); diff --git a/apps/server/src/routers/api/v1/log.rs b/apps/server/src/routers/api/v1/log.rs index 200aa1605..7e182e555 100644 --- a/apps/server/src/routers/api/v1/log.rs +++ b/apps/server/src/routers/api/v1/log.rs @@ -6,40 +6,57 @@ use axum::{ Json, Router, }; use futures_util::Stream; -use notify::{EventKind, RecursiveMode, Watcher}; +use linemux::MuxedLines; use prisma_client_rust::chrono::{DateTime, Utc}; -use std::{ - convert::Infallible, - fs::File, - io::{Read, Seek, SeekFrom}, +use serde_qs::axum::QsQuery; +use std::fs::File; +use stump_core::{ + db::{ + entity::{Log, LogMetadata, UserPermission}, + query::{ + ordering::QueryOrder, + pagination::{Pageable, Pagination, PaginationQuery}, + }, + }, + prisma::log::{self, OrderByParam as LogOrderByParam, WhereParam}, }; -use stump_core::db::entity::LogMetadata; -use tokio::sync::broadcast; use tower_sessions::Session; use crate::{ config::state::AppState, - errors::{ApiError, ApiResult}, + errors::{APIError, APIResult}, + filter::{chain_optional_iter, LogFilter}, middleware::auth::Auth, routers::sse::stream_shutdown_guard, - utils::get_session_server_owner_user, + utils::enforce_session_permissions, }; pub(crate) fn mount(app_state: AppState) -> Router { Router::new() - .route("/logs", get(get_logs).delete(clear_logs)) - .route("/logs/info", get(get_logfile_info)) + .route("/logs", get(get_logs)) .nest( "/logs/file", - Router::new().route("/tail", get(tail_log_file)), + Router::new() + .route("/", get(delete_log_file)) + .route("/info", get(get_logfile_info)) + .route("/tail", get(tail_log_file)), ) - // FIXME: admin middleware .layer(from_extractor_with_state::(app_state)) } -// TODO: there is a database entity Log. If that stays, I should differenciate between -// the stump.log file operations and the database operations better in this file. For now, -// I'm just going to leave it as is. +pub(crate) fn apply_log_filters(filters: LogFilter) -> Vec { + chain_optional_iter( + [], + [ + filters + .level + .map(|level| log::level::equals(level.to_string())), + filters + .job_id + .map(|job_id| log::job_id::equals(Some(job_id))), + ], + ) +} #[utoipa::path( get, @@ -50,61 +67,98 @@ pub(crate) fn mount(app_state: AppState) -> Router { ) )] /// Get all logs from the database. -async fn get_logs() -> ApiResult<()> { - // TODO: implement - Err(ApiError::NotImplemented) +async fn get_logs( + State(ctx): State, + filters: QsQuery, + order: QsQuery, + pagination: QsQuery, + session: Session, +) -> APIResult>>> { + enforce_session_permissions(&session, &[UserPermission::ManageServer])?; + + let pagination = pagination.0.get(); + let order = order.0; + tracing::trace!(?pagination, ?order, "get_logs"); + + let db = &ctx.db; + let is_unpaged = pagination.is_unpaged(); + let order_by_param: LogOrderByParam = order.try_into()?; + + let pagination_cloned = pagination.clone(); + let where_params = apply_log_filters(filters.0); + + let (logs, count) = db + ._transaction() + .run(|client| async move { + let mut query = client + .log() + .find_many(where_params.clone()) + .order_by(order_by_param); + + if !is_unpaged { + match pagination_cloned { + Pagination::Page(page_query) => { + let (skip, take) = page_query.get_skip_take(); + query = query.skip(skip).take(take); + }, + Pagination::Cursor(cursor_query) => { + // TODO: handle this better + if let Some(Ok(cursor)) = cursor_query.cursor.map(|c| c.parse()) { + query = query.cursor(log::id::equals(cursor)).skip(1); + } + if let Some(limit) = cursor_query.limit { + query = query.take(limit) + } + }, + _ => unreachable!(), + } + } + + let logs = query + .exec() + .await? + .into_iter() + .map(Log::from) + .collect::>(); + + if is_unpaged { + return Ok((logs, None)); + } + + client + .log() + .count(where_params) + .exec() + .await + .map(|count| (logs, Some(count))) + }) + .await?; + + if let Some(count) = count { + return Ok(Json(Pageable::from((logs, count, pagination)))); + } + + Ok(Json(Pageable::from(logs))) } -// FIXME: so this is a cool POC, but it seems to only work with manual file edits. When the -// file appender for the log config writes to the file, notify is not picking it up. I'm not -// sure if this is a result of the recommended_watcher defaults, or perhaps something about how -// the file appender works. I'm going to leave this here for now, as its a cool to have. async fn tail_log_file( State(ctx): State, -) -> Sse>> { + session: Session, +) -> APIResult>>> { + enforce_session_permissions(&session, &[UserPermission::ManageServer])?; + let stream = async_stream::stream! { let log_file_path = ctx.config.get_log_file(); - let mut file = File::open(log_file_path.as_path()).expect("Failed to open log file"); - let file_length = file - .seek(SeekFrom::End(0)) - .expect("Failed to seek to end of log file"); - file.seek(SeekFrom::Start(file_length)) - .expect("Failed to seek to end of log file"); - - println!("file path: {}", log_file_path.as_path().display()); - println!("file_length: {}", file_length); - - let (tx, mut rx) = broadcast::channel::(100); - - let mut watcher = - notify::recommended_watcher(move |res: Result| { - match res { - Ok(event) => { - println!("event: {:?}", event); - if let EventKind::Modify(_) = event.kind { - let mut content = String::new(); - file.read_to_string(&mut content).unwrap(); - for line in content.lines().rev() { - println!("line: {}", line); - if !line.is_empty() && tx.send(line.to_owned()).is_err() { - break; - } - } - } - }, - Err(e) => println!("watch error: {:?}", e), - } - }) - .expect("watcher failed"); - - watcher - .watch(log_file_path.as_path(), RecursiveMode::NonRecursive) - .expect("watch failed"); + let mut lines = MuxedLines::new()?; + lines.add_file(log_file_path.as_path()).await?; loop { - if let Ok(msg) = rx.recv().await { - println!("msg: {}", msg); - yield Ok(Event::default().json_data(msg).expect("Failed to create event")); + if let Ok(Some(line)) = lines.next_line().await { + yield Ok( + Event::default() + .json_data(line.line()) + .map_err(|e| APIError::InternalServerError(e.to_string()))? + ); } else { continue; } @@ -113,7 +167,7 @@ async fn tail_log_file( let guarded_stream = stream_shutdown_guard(stream); - Sse::new(guarded_stream) + Ok(Sse::new(guarded_stream)) } #[utoipa::path( @@ -132,8 +186,9 @@ async fn tail_log_file( async fn get_logfile_info( session: Session, State(ctx): State, -) -> ApiResult> { - get_session_server_owner_user(&session)?; +) -> APIResult> { + enforce_session_permissions(&session, &[UserPermission::ManageServer])?; + let log_file_path = ctx.config.get_log_file(); let file = File::open(log_file_path.as_path())?; @@ -165,8 +220,9 @@ async fn get_logfile_info( // a resource. This is not semantically correct, but I want it to be clear that // this route *WILL* delete all of the file contents. // #[delete("/logs")] -async fn clear_logs(session: Session, State(ctx): State) -> ApiResult<()> { - get_session_server_owner_user(&session)?; +async fn delete_log_file(session: Session, State(ctx): State) -> APIResult<()> { + enforce_session_permissions(&session, &[UserPermission::ManageServer])?; + let log_file_path = ctx.config.get_log_file(); File::create(log_file_path.as_path())?; diff --git a/apps/server/src/routers/api/v1/media.rs b/apps/server/src/routers/api/v1/media.rs index 658c5019e..1ef7047c3 100644 --- a/apps/server/src/routers/api/v1/media.rs +++ b/apps/server/src/routers/api/v1/media.rs @@ -39,7 +39,7 @@ use utoipa::ToSchema; use crate::{ config::state::AppState, - errors::{ApiError, ApiResult}, + errors::{APIError, APIResult}, filter::{ chain_optional_iter, decode_path_filter, FilterableQuery, MediaBaseFilter, MediaFilter, MediaRelationFilter, ReadStatus, @@ -299,13 +299,13 @@ async fn get_media( pagination_query: Query, State(ctx): State, session: Session, -) -> ApiResult>>> { +) -> APIResult>>> { let FilterableQuery { filters, ordering } = filter_query.0.get(); let pagination = pagination_query.0.get(); tracing::trace!(?filters, ?ordering, ?pagination, "get_media"); - let db = ctx.get_db(); + let db = &ctx.db; let user = get_session_user(&session)?; let user_id = user.id.clone(); @@ -395,16 +395,16 @@ async fn get_duplicate_media( pagination: Query, State(ctx): State, _session: Session, -) -> ApiResult>>> { +) -> APIResult>>> { if pagination.page.is_none() { - return Err(ApiError::BadRequest( + return Err(APIError::BadRequest( "Pagination is required for this request".to_string(), )); } let page_params = pagination.0.page_params(); let page_bounds = page_params.get_page_bounds(); - let client = ctx.get_db(); + let client = &ctx.db; let duplicated_media_page = client ._query_raw::(raw!( @@ -438,7 +438,7 @@ async fn get_duplicate_media( page_params, )) } else { - Err(ApiError::InternalServerError( + Err(APIError::InternalServerError( "Failed to fetch duplicate media".to_string(), )) }; @@ -466,7 +466,7 @@ async fn get_in_progress_media( State(ctx): State, session: Session, pagination_query: Query, -) -> ApiResult>>> { +) -> APIResult>>> { let user = get_session_user(&session)?; let user_id = user.id; let age_restrictions = user @@ -558,13 +558,13 @@ async fn get_recently_added_media( pagination_query: Query, session: Session, State(ctx): State, -) -> ApiResult>>> { +) -> APIResult>>> { let FilterableQuery { filters, .. } = filter_query.0.get(); let pagination = pagination_query.0.get(); tracing::trace!(?filters, ?pagination, "get_recently_added_media"); - let db = ctx.get_db(); + let db = &ctx.db; let user = get_session_user(&session)?; let user_id = user.id.clone(); @@ -635,8 +635,8 @@ async fn get_media_by_path( Path(path): Path, State(ctx): State, session: Session, -) -> ApiResult> { - let client = ctx.get_db(); +) -> APIResult> { + let client = &ctx.db; let user = get_session_user(&session)?; let age_restrictions = user @@ -654,7 +654,7 @@ async fn get_media_by_path( .with(media::metadata::fetch()) .exec() .await? - .ok_or(ApiError::NotFound(String::from("Media not found")))?; + .ok_or(APIError::NotFound(String::from("Media not found")))?; Ok(Json(Media::from(book))) } @@ -690,8 +690,8 @@ async fn get_media_by_id( params: Query, State(ctx): State, session: Session, -) -> ApiResult> { - let db = ctx.get_db(); +) -> APIResult> { + let db = &ctx.db; let user = get_session_user(&session)?; let user_id = user.id; let age_restrictions = user @@ -724,7 +724,7 @@ async fn get_media_by_id( let media = query .exec() .await? - .ok_or(ApiError::NotFound(String::from("Media not found")))?; + .ok_or(APIError::NotFound(String::from("Media not found")))?; Ok(Json(Media::from(media))) } @@ -750,8 +750,8 @@ async fn get_media_file( Path(id): Path, State(ctx): State, session: Session, -) -> ApiResult { - let db = ctx.get_db(); +) -> APIResult { + let db = &ctx.db; let user = get_session_user(&session)?; let age_restrictions = user @@ -767,7 +767,7 @@ async fn get_media_file( )) .exec() .await? - .ok_or(ApiError::NotFound(String::from("Media not found")))?; + .ok_or(APIError::NotFound(String::from("Media not found")))?; tracing::trace!(?media, "Downloading media file"); @@ -795,8 +795,8 @@ async fn convert_media( Path(id): Path, State(ctx): State, session: Session, -) -> Result<(), ApiError> { - let db = ctx.get_db(); +) -> Result<(), APIError> { + let db = &ctx.db; let user = get_session_user(&session)?; let age_restrictions = user @@ -812,15 +812,15 @@ async fn convert_media( )) .exec() .await? - .ok_or(ApiError::NotFound(String::from("Media not found")))?; + .ok_or(APIError::NotFound(String::from("Media not found")))?; if media.extension != "cbr" || media.extension != "rar" { - return Err(ApiError::BadRequest(String::from( + return Err(APIError::BadRequest(String::from( "Stump only supports RAR to ZIP conversions at this time", ))); } - Err(ApiError::NotImplemented) + Err(APIError::NotImplemented) } // TODO: ImageResponse as body type @@ -845,8 +845,8 @@ async fn get_media_page( Path((id, page)): Path<(String, i32)>, State(ctx): State, session: Session, -) -> ApiResult { - let db = ctx.get_db(); +) -> APIResult { + let db = &ctx.db; let user = get_session_user(&session)?; let user_id = user.id; @@ -866,10 +866,10 @@ async fn get_media_page( ])) .exec() .await? - .ok_or(ApiError::NotFound(String::from("Media not found")))?; + .ok_or(APIError::NotFound(String::from("Media not found")))?; if page > media.pages { - Err(ApiError::BadRequest(format!( + Err(APIError::BadRequest(format!( "Page {} is out of bounds for media {}", page, id ))) @@ -883,7 +883,7 @@ pub(crate) async fn get_media_thumbnail_by_id( db: &PrismaClient, session: &Session, config: &StumpConfig, -) -> ApiResult<(ContentType, Vec)> { +) -> APIResult<(ContentType, Vec)> { let user = get_session_user(session)?; let age_restrictions = user .age_restriction @@ -930,7 +930,7 @@ pub(crate) async fn get_media_thumbnail_by_id( config, ), (Some(book), None) => get_media_thumbnail(&book, None, config), - _ => Err(ApiError::NotFound(String::from("Media not found"))), + _ => Err(APIError::NotFound(String::from("Media not found"))), } } @@ -938,7 +938,7 @@ pub(crate) fn get_media_thumbnail( media: &media::Data, target_format: Option, config: &StumpConfig, -) -> ApiResult<(ContentType, Vec)> { +) -> APIResult<(ContentType, Vec)> { if let Some(format) = target_format { let extension = format.extension(); let thumbnail_path = config @@ -987,9 +987,9 @@ async fn get_media_thumbnail_handler( Path(id): Path, State(ctx): State, session: Session, -) -> ApiResult { +) -> APIResult { tracing::trace!(?id, "get_media_thumbnail"); - let db = ctx.get_db(); + let db = &ctx.db; get_media_thumbnail_by_id(id, db, &session, &ctx.config) .await .map(ImageResponse::from) @@ -1022,10 +1022,10 @@ async fn patch_media_thumbnail( State(ctx): State, session: Session, Json(body): Json, -) -> ApiResult { +) -> APIResult { get_session_server_owner_user(&session)?; - let client = ctx.get_db(); + let client = &ctx.db; let target_page = body .is_zero_based @@ -1047,17 +1047,17 @@ async fn patch_media_thumbnail( ) .exec() .await? - .ok_or(ApiError::NotFound(String::from("Media not found")))?; + .ok_or(APIError::NotFound(String::from("Media not found")))?; if media.extension == "epub" { - return Err(ApiError::NotSupported); + return Err(APIError::NotSupported); } let library = media .series()? - .ok_or(ApiError::NotFound(String::from("Series relation missing")))? + .ok_or(APIError::NotFound(String::from("Series relation missing")))? .library()? - .ok_or(ApiError::NotFound(String::from("Library relation missing")))?; + .ok_or(APIError::NotFound(String::from("Library relation missing")))?; let thumbnail_options = library .library_options()? .thumbnail_config @@ -1100,19 +1100,19 @@ async fn replace_media_thumbnail( State(ctx): State, session: Session, mut upload: Multipart, -) -> ApiResult { +) -> APIResult { enforce_session_permissions( &session, &[UserPermission::UploadFile, UserPermission::ManageLibrary], )?; - let client = ctx.get_db(); + let client = &ctx.db; let media = client .media() .find_unique(media::id::equals(id.clone())) .exec() .await? - .ok_or(ApiError::NotFound(String::from("Media not found")))?; + .ok_or(APIError::NotFound(String::from("Media not found")))?; let (content_type, bytes) = validate_image_upload(&mut upload).await?; let ext = content_type.extension(); @@ -1157,8 +1157,8 @@ async fn update_media_progress( Path((id, page)): Path<(String, i32)>, State(ctx): State, session: Session, -) -> ApiResult> { - let db = ctx.get_db(); +) -> APIResult> { + let db = &ctx.db; let user_id = get_session_user(&session)?.id; let read_progress = db @@ -1221,8 +1221,8 @@ async fn get_media_progress( Path(id): Path, State(ctx): State, session: Session, -) -> ApiResult>> { - let db = ctx.get_db(); +) -> APIResult>> { + let db = &ctx.db; let user_id = get_session_user(&session)?.id; let result = db @@ -1254,8 +1254,8 @@ async fn delete_media_progress( Path(id): Path, State(ctx): State, session: Session, -) -> ApiResult> { - let client = ctx.get_db(); +) -> APIResult> { + let client = &ctx.db; let user_id = get_session_user(&session)?.id; let deleted_rp = client @@ -1292,8 +1292,8 @@ async fn get_is_media_completed( Path(id): Path, State(ctx): State, session: Session, -) -> ApiResult> { - let client = ctx.get_db(); +) -> APIResult> { + let client = &ctx.db; let user_id = get_session_user(&session)?.id; let result = client @@ -1338,11 +1338,11 @@ async fn put_media_complete_status( State(ctx): State, session: Session, Json(payload): Json, -) -> ApiResult> { - let client = ctx.get_db(); +) -> APIResult> { + let client = &ctx.db; let user_id = get_session_user(&session)?.id; - let result: Result = client + let result: Result = client ._transaction() .run(|tx| async move { let media = tx @@ -1350,7 +1350,7 @@ async fn put_media_complete_status( .find_unique(media::id::equals(id.clone())) .exec() .await? - .ok_or(ApiError::NotFound(String::from("Media not found")))?; + .ok_or(APIError::NotFound(String::from("Media not found")))?; let is_completed = payload.is_complete; let (pages, completed_at) = if is_completed { diff --git a/apps/server/src/routers/api/v1/metadata.rs b/apps/server/src/routers/api/v1/metadata.rs index f943f7f75..04b65581d 100644 --- a/apps/server/src/routers/api/v1/metadata.rs +++ b/apps/server/src/routers/api/v1/metadata.rs @@ -25,7 +25,7 @@ use utoipa::ToSchema; use crate::{ config::state::AppState, - errors::ApiResult, + errors::APIResult, filter::{ chain_optional_iter, FilterableQuery, MediaMetadataBaseFilter, MediaMetadataFilter, MediaMetadataRelationFilter, SeriesMedataFilter, @@ -211,12 +211,12 @@ pub struct MediaMetadataOverview { async fn get_metadata_overview( filter_query: QsQuery>, State(ctx): State, -) -> ApiResult> { +) -> APIResult> { let FilterableQuery { filters, .. } = filter_query.0.get(); trace!(?filters, "get_metadata_overview"); - let db = ctx.get_db(); + let db = &ctx.db; let result = db ._transaction() @@ -255,7 +255,7 @@ async fn get_metadata_overview( async fn get_genres( client: &PrismaClient, where_conditions: &[media_metadata::WhereParam], -) -> ApiResult> { +) -> APIResult> { let result = client .media_metadata() .find_many(where_conditions.to_vec()) @@ -286,17 +286,17 @@ async fn get_genres( async fn get_genres_handler( filter_query: QsQuery>, State(ctx): State, -) -> ApiResult>> { +) -> APIResult>> { let FilterableQuery { filters, .. } = filter_query.0.get(); Ok(Json( - get_genres(ctx.get_db(), &apply_media_metadata_filters(filters)).await?, + get_genres(&ctx.db, &apply_media_metadata_filters(filters)).await?, )) } async fn get_writers( client: &PrismaClient, where_conditions: &[media_metadata::WhereParam], -) -> ApiResult> { +) -> APIResult> { let result = client .media_metadata() .find_many(where_conditions.to_vec()) @@ -327,17 +327,17 @@ async fn get_writers( async fn get_writers_handler( filter_query: QsQuery>, State(ctx): State, -) -> ApiResult>> { +) -> APIResult>> { let FilterableQuery { filters, .. } = filter_query.0.get(); Ok(Json( - get_writers(ctx.get_db(), &apply_media_metadata_filters(filters)).await?, + get_writers(&ctx.db, &apply_media_metadata_filters(filters)).await?, )) } async fn get_pencllers( client: &PrismaClient, where_conditions: &[media_metadata::WhereParam], -) -> ApiResult> { +) -> APIResult> { let result = client .media_metadata() .find_many(where_conditions.to_vec()) @@ -368,17 +368,17 @@ async fn get_pencllers( async fn get_pencillers_handler( filter_query: QsQuery>, State(ctx): State, -) -> ApiResult>> { +) -> APIResult>> { let FilterableQuery { filters, .. } = filter_query.0.get(); Ok(Json( - get_pencllers(ctx.get_db(), &apply_media_metadata_filters(filters)).await?, + get_pencllers(&ctx.db, &apply_media_metadata_filters(filters)).await?, )) } async fn get_inkers( client: &PrismaClient, where_conditions: &[media_metadata::WhereParam], -) -> ApiResult> { +) -> APIResult> { let result = client .media_metadata() .find_many(where_conditions.to_vec()) @@ -409,17 +409,17 @@ async fn get_inkers( async fn get_inkers_handler( filter_query: QsQuery>, State(ctx): State, -) -> ApiResult>> { +) -> APIResult>> { let FilterableQuery { filters, .. } = filter_query.0.get(); Ok(Json( - get_inkers(ctx.get_db(), &apply_media_metadata_filters(filters)).await?, + get_inkers(&ctx.db, &apply_media_metadata_filters(filters)).await?, )) } async fn get_colorists( client: &PrismaClient, where_conditions: &[media_metadata::WhereParam], -) -> ApiResult> { +) -> APIResult> { let result = client .media_metadata() .find_many(where_conditions.to_vec()) @@ -450,17 +450,17 @@ async fn get_colorists( async fn get_colorists_handler( filter_query: QsQuery>, State(ctx): State, -) -> ApiResult>> { +) -> APIResult>> { let FilterableQuery { filters, .. } = filter_query.0.get(); Ok(Json( - get_colorists(ctx.get_db(), &apply_media_metadata_filters(filters)).await?, + get_colorists(&ctx.db, &apply_media_metadata_filters(filters)).await?, )) } async fn get_letterers( client: &PrismaClient, where_conditions: &[media_metadata::WhereParam], -) -> ApiResult> { +) -> APIResult> { let result = client .media_metadata() .find_many(where_conditions.to_vec()) @@ -491,17 +491,17 @@ async fn get_letterers( async fn get_letterers_handler( filter_query: QsQuery>, State(ctx): State, -) -> ApiResult>> { +) -> APIResult>> { let FilterableQuery { filters, .. } = filter_query.0.get(); Ok(Json( - get_letterers(ctx.get_db(), &apply_media_metadata_filters(filters)).await?, + get_letterers(&ctx.db, &apply_media_metadata_filters(filters)).await?, )) } async fn get_editors( client: &PrismaClient, where_conditions: &[media_metadata::WhereParam], -) -> ApiResult> { +) -> APIResult> { let result = client .media_metadata() .find_many(where_conditions.to_vec()) @@ -532,17 +532,17 @@ async fn get_editors( async fn get_editors_handler( filter_query: QsQuery>, State(ctx): State, -) -> ApiResult>> { +) -> APIResult>> { let FilterableQuery { filters, .. } = filter_query.0.get(); Ok(Json( - get_editors(ctx.get_db(), &apply_media_metadata_filters(filters)).await?, + get_editors(&ctx.db, &apply_media_metadata_filters(filters)).await?, )) } async fn get_publishers( client: &PrismaClient, where_conditions: &[media_metadata::WhereParam], -) -> ApiResult> { +) -> APIResult> { let result = client .media_metadata() .find_many(where_conditions.to_vec()) @@ -573,17 +573,17 @@ async fn get_publishers( async fn get_publishers_handler( filter_query: QsQuery>, State(ctx): State, -) -> ApiResult>> { +) -> APIResult>> { let FilterableQuery { filters, .. } = filter_query.0.get(); Ok(Json( - get_publishers(ctx.get_db(), &apply_media_metadata_filters(filters)).await?, + get_publishers(&ctx.db, &apply_media_metadata_filters(filters)).await?, )) } async fn get_characters( client: &PrismaClient, where_conditions: &[media_metadata::WhereParam], -) -> ApiResult> { +) -> APIResult> { let result = client .media_metadata() .find_many(where_conditions.to_vec()) @@ -614,17 +614,17 @@ async fn get_characters( async fn get_characters_handler( filter_query: QsQuery>, State(ctx): State, -) -> ApiResult>> { +) -> APIResult>> { let FilterableQuery { filters, .. } = filter_query.0.get(); Ok(Json( - get_characters(ctx.get_db(), &apply_media_metadata_filters(filters)).await?, + get_characters(&ctx.db, &apply_media_metadata_filters(filters)).await?, )) } async fn get_teams( client: &PrismaClient, where_conditions: &[media_metadata::WhereParam], -) -> ApiResult> { +) -> APIResult> { let result = client .media_metadata() .find_many(where_conditions.to_vec()) @@ -655,9 +655,9 @@ async fn get_teams( async fn get_teams_handler( filter_query: QsQuery>, State(ctx): State, -) -> ApiResult>> { +) -> APIResult>> { let FilterableQuery { filters, .. } = filter_query.0.get(); Ok(Json( - get_teams(ctx.get_db(), &apply_media_metadata_filters(filters)).await?, + get_teams(&ctx.db, &apply_media_metadata_filters(filters)).await?, )) } diff --git a/apps/server/src/routers/api/v1/mod.rs b/apps/server/src/routers/api/v1/mod.rs index b93f77c12..4ed971a8a 100644 --- a/apps/server/src/routers/api/v1/mod.rs +++ b/apps/server/src/routers/api/v1/mod.rs @@ -7,7 +7,7 @@ use serde::{Deserialize, Serialize}; use specta::Type; use utoipa::ToSchema; -use crate::{config::state::AppState, errors::ApiResult}; +use crate::{config::state::AppState, errors::APIResult}; pub(crate) mod auth; pub(crate) mod book_club; @@ -60,8 +60,8 @@ pub struct ClaimResponse { (status = 200, description = "Claim status successfully determined", body = ClaimResponse) ) )] -async fn claim(State(ctx): State) -> ApiResult> { - let db = ctx.get_db(); +async fn claim(State(ctx): State) -> APIResult> { + let db = &ctx.db; Ok(Json(ClaimResponse { is_claimed: db.user().find_first(vec![]).exec().await?.is_some(), @@ -76,7 +76,7 @@ async fn claim(State(ctx): State) -> ApiResult> { (status = 200, description = "Always responds with 'pong'", body = String) ) )] -async fn ping() -> ApiResult { +async fn ping() -> APIResult { Ok("pong".to_string()) } @@ -95,7 +95,7 @@ pub struct StumpVersion { (status = 200, description = "Version information for the Stump server instance", body = StumpVersion) ) )] -async fn version() -> ApiResult> { +async fn version() -> APIResult> { Ok(Json(StumpVersion { semver: env!("CARGO_PKG_VERSION").to_string(), rev: env!("GIT_REV").to_string(), diff --git a/apps/server/src/routers/api/v1/reading_list.rs b/apps/server/src/routers/api/v1/reading_list.rs index f048342e4..4544e1b9b 100644 --- a/apps/server/src/routers/api/v1/reading_list.rs +++ b/apps/server/src/routers/api/v1/reading_list.rs @@ -1,6 +1,6 @@ use crate::{ config::state::AppState, - errors::{ApiError, ApiResult}, + errors::{APIError, APIResult}, utils::get_session_user, }; use axum::{ @@ -120,7 +120,7 @@ async fn get_reading_list( State(ctx): State, pagination_query: Query, session: Session, -) -> ApiResult>>> { +) -> APIResult>>> { let user = get_session_user(&session)?; let user_id = user.id.clone(); @@ -188,8 +188,8 @@ async fn create_reading_list( session: Session, State(ctx): State, Json(input): Json, -) -> ApiResult> { - let db = ctx.get_db(); +) -> APIResult> { + let db = &ctx.db; let user_id = get_session_user(&session)?.id; let created_reading_list = db @@ -253,9 +253,9 @@ async fn get_reading_list_by_id( Path(id): Path, State(ctx): State, session: Session, -) -> ApiResult> { +) -> APIResult> { let user_id = get_session_user(&session)?.id; - let db = ctx.get_db(); + let db = &ctx.db; let rbac_condition = reading_list_rbac_for_user(user_id, 1); @@ -269,7 +269,7 @@ async fn get_reading_list_by_id( .await?; if reading_list.is_none() { - return Err(ApiError::NotFound(format!( + return Err(APIError::NotFound(format!( "Reading list with ID {} not found", id ))); @@ -300,9 +300,9 @@ async fn update_reading_list( Path(id): Path, State(ctx): State, Json(input): Json, -) -> ApiResult> { +) -> APIResult> { let user = get_session_user(&session)?; - let db = ctx.get_db(); + let db = &ctx.db; trace!(?input, "update_reading_list"); @@ -313,7 +313,7 @@ async fn update_reading_list( .await?; if reading_list.is_none() { - return Err(ApiError::NotFound(format!( + return Err(APIError::NotFound(format!( "Reading List with id {} not found", id ))); @@ -322,12 +322,12 @@ async fn update_reading_list( let reading_list = reading_list.unwrap(); if reading_list.creating_user_id != user.id { // TODO: log bad access attempt to DB - return Err(ApiError::Forbidden(String::from( + return Err(APIError::Forbidden(String::from( "You do not have permission to access this resource.", ))); } - Err(ApiError::NotImplemented) + Err(APIError::NotImplemented) // let created_reading_list = db // .reading_list() @@ -366,9 +366,9 @@ async fn delete_reading_list_by_id( session: Session, Path(id): Path, State(ctx): State, -) -> ApiResult> { +) -> APIResult> { let user = get_session_user(&session)?; - let db = ctx.get_db(); + let db = &ctx.db; let reading_list = db .reading_list() @@ -377,7 +377,7 @@ async fn delete_reading_list_by_id( .await?; if reading_list.is_none() { - return Err(ApiError::NotFound(format!( + return Err(APIError::NotFound(format!( "Reading List with id {} not found", id ))); @@ -386,7 +386,7 @@ async fn delete_reading_list_by_id( let reading_list = reading_list.unwrap(); if reading_list.creating_user_id != user.id { // TODO: log bad access attempt to DB - return Err(ApiError::forbidden_discreet()); + return Err(APIError::forbidden_discreet()); } trace!("Attempting to delete reading list with ID {}", &id); diff --git a/apps/server/src/routers/api/v1/series.rs b/apps/server/src/routers/api/v1/series.rs index 1bc4019c2..4a0d102ae 100644 --- a/apps/server/src/routers/api/v1/series.rs +++ b/apps/server/src/routers/api/v1/series.rs @@ -1,7 +1,7 @@ use axum::{ extract::{DefaultBodyLimit, Multipart, Path, State}, middleware::from_extractor_with_state, - routing::get, + routing::{get, post}, Json, Router, }; use axum_extra::extract::Query; @@ -24,7 +24,9 @@ use stump_core::{ generate_thumbnail, place_thumbnail, remove_thumbnails, ImageFormat, ImageProcessorOptions, }, - read_entire_file, ContentType, FileParts, PathUtils, + read_entire_file, + scanner::SeriesScanJob, + ContentType, FileParts, PathUtils, }, prisma::{ library, @@ -40,7 +42,7 @@ use utoipa::ToSchema; use crate::{ config::state::AppState, - errors::{ApiError, ApiResult}, + errors::{APIError, APIResult}, filter::{ chain_optional_iter, decode_path_filter, FilterableQuery, SeriesBaseFilter, SeriesFilter, SeriesQueryRelation, SeriesRelationFilter, @@ -48,7 +50,7 @@ use crate::{ middleware::auth::Auth, utils::{ enforce_session_permissions, get_session_server_owner_user, get_session_user, - http::ImageResponse, validate_image_upload, + get_user_and_enforce_permission, http::ImageResponse, validate_image_upload, }, }; @@ -69,6 +71,7 @@ pub(crate) fn mount(app_state: AppState) -> Router { "/series/:id", Router::new() .route("/", get(get_series_by_id)) + .route("/scan", post(scan_series)) .route("/media", get(get_series_media)) .route("/media/next", get(get_next_in_series)) .route( @@ -197,14 +200,14 @@ async fn get_series( relation_query: Query, State(ctx): State, session: Session, -) -> ApiResult>>> { +) -> APIResult>>> { let FilterableQuery { ordering, filters } = filter_query.0.get(); let pagination = pagination_query.0.get(); let pagination_cloned = pagination.clone(); trace!(?filters, ?ordering, ?pagination, "get_series"); - let db = ctx.get_db(); + let db = &ctx.db; let user = get_session_user(&session)?; let user_id = user.id; let age_restrictions = user @@ -318,8 +321,8 @@ async fn get_series_by_id( Path(id): Path, State(ctx): State, session: Session, -) -> ApiResult> { - let db = ctx.get_db(); +) -> APIResult> { + let db = &ctx.db; let user = get_session_user(&session)?; let user_id = user.id; @@ -352,7 +355,7 @@ async fn get_series_by_id( let series = query .exec() .await? - .ok_or(ApiError::NotFound(String::from("Series not found")))?; + .ok_or(APIError::NotFound(String::from("Series not found")))?; if !load_media { // FIXME: PCR doesn't support relation counts yet! @@ -369,6 +372,42 @@ async fn get_series_by_id( Ok(Json(series.into())) } +#[utoipa::path( + post, + path = "/api/v1/series/:id/scan", + tag = "series", + responses( + (status = 200, description = "Successfully queued series scan"), + (status = 401, description = "Unauthorized"), + (status = 404, description = "Series not found"), + (status = 500, description = "Internal server error") + ) +)] +/// Queue a job to scan the series by ID +async fn scan_series( + Path(id): Path, + State(ctx): State, + session: Session, +) -> Result<(), APIError> { + let db = &ctx.db; + get_user_and_enforce_permission(&session, UserPermission::ScanLibrary)?; + + let series = db + .series() + .find_unique(series::id::equals(id.clone())) + .exec() + .await? + .ok_or(APIError::NotFound("Series not found".to_string()))?; + + ctx.enqueue_job(SeriesScanJob::new(series.id, series.path)) + .map_err(|e| { + error!(?e, "Failed to enqueue series scan job"); + APIError::InternalServerError("Failed to enqueue series scan job".to_string()) + })?; + + Ok(()) +} + // FIXME: This hand written SQL needs to factor in age restrictions! #[utoipa::path( get, @@ -388,9 +427,9 @@ async fn get_recently_added_series_handler( State(ctx): State, pagination: Query, session: Session, -) -> ApiResult>>> { +) -> APIResult>>> { if pagination.page.is_none() { - return Err(ApiError::BadRequest( + return Err(APIError::BadRequest( "Unpaged request not supported for this endpoint".to_string(), )); } @@ -411,7 +450,7 @@ pub(crate) fn get_series_thumbnail( first_book: &media::Data, image_format: Option, config: &StumpConfig, -) -> ApiResult<(ContentType, Vec)> { +) -> APIResult<(ContentType, Vec)> { let thumbnails_dir = config.get_thumbnails_dir(); let series_id = series.id.clone(); @@ -455,8 +494,8 @@ async fn get_series_thumbnail_handler( Path(id): Path, State(ctx): State, session: Session, -) -> ApiResult { - let db = ctx.get_db(); +) -> APIResult { + let db = &ctx.db; let user = get_session_user(&session)?; let age_restriction = user.age_restriction; @@ -485,16 +524,16 @@ async fn get_series_thumbnail_handler( .order_by(series::name::order(Direction::Asc)) .exec() .await? - .ok_or(ApiError::NotFound("Series not found".to_string()))?; + .ok_or(APIError::NotFound("Series not found".to_string()))?; let library = series .library()? - .ok_or(ApiError::NotFound(String::from("Library relation missing")))?; + .ok_or(APIError::NotFound(String::from("Library relation missing")))?; let first_book = series .media()? .first() - .ok_or(ApiError::NotFound(String::from( + .ok_or(APIError::NotFound(String::from( "Series does not have any media", )))?; @@ -539,10 +578,10 @@ async fn patch_series_thumbnail( State(ctx): State, session: Session, Json(body): Json, -) -> ApiResult { +) -> APIResult { get_session_server_owner_user(&session)?; - let client = ctx.get_db(); + let client = &ctx.db; let target_page = body .is_zero_based @@ -567,17 +606,17 @@ async fn patch_series_thumbnail( ) .exec() .await? - .ok_or(ApiError::NotFound(String::from("Media not found")))?; + .ok_or(APIError::NotFound(String::from("Media not found")))?; if media.extension == "epub" { - return Err(ApiError::NotSupported); + return Err(APIError::NotSupported); } let library = media .series()? - .ok_or(ApiError::NotFound(String::from("Series relation missing")))? + .ok_or(APIError::NotFound(String::from("Series relation missing")))? .library()? - .ok_or(ApiError::NotFound(String::from("Library relation missing")))?; + .ok_or(APIError::NotFound(String::from("Library relation missing")))?; let thumbnail_options = library .library_options()? .thumbnail_config @@ -620,19 +659,19 @@ async fn replace_series_thumbnail( State(ctx): State, session: Session, mut upload: Multipart, -) -> ApiResult { +) -> APIResult { enforce_session_permissions( &session, &[UserPermission::UploadFile, UserPermission::ManageLibrary], )?; - let client = ctx.get_db(); + let client = &ctx.db; let series = client .series() .find_unique(series::id::equals(id)) .exec() .await? - .ok_or(ApiError::NotFound(String::from("Series not found")))?; + .ok_or(APIError::NotFound(String::from("Series not found")))?; let (content_type, bytes) = validate_image_upload(&mut upload).await?; let ext = content_type.extension(); @@ -681,8 +720,8 @@ async fn get_series_media( session: Session, Path(id): Path, State(ctx): State, -) -> ApiResult>>> { - let db = ctx.get_db(); +) -> APIResult>>> { + let db = &ctx.db; let user = get_session_user(&session)?; let user_id = user.id; @@ -708,7 +747,7 @@ async fn get_series_media( )) .exec() .await? - .ok_or(ApiError::NotFound(String::from("Series not found")))?; + .ok_or(APIError::NotFound(String::from("Series not found")))?; let (media, count) = db ._transaction() @@ -798,8 +837,8 @@ async fn get_next_in_series( Path(id): Path, State(ctx): State, session: Session, -) -> ApiResult>> { - let db = ctx.get_db(); +) -> APIResult>> { + let db = &ctx.db; let user_id = get_session_user(&session)?.id; let result = db @@ -850,7 +889,7 @@ async fn get_next_in_series( Ok(Json(next_book.map(|data| Media::from(data.to_owned())))) } else { - Err(ApiError::NotFound(format!( + Err(APIError::NotFound(format!( "Series with id {} no found.", id ))) @@ -880,8 +919,8 @@ async fn get_series_is_complete( Path(id): Path, State(ctx): State, session: Session, -) -> ApiResult> { - let client = ctx.get_db(); +) -> APIResult> { + let client = &ctx.db; let user_id = get_session_user(&session)?.id; let media_count = client @@ -916,6 +955,6 @@ async fn get_series_is_complete( } // TODO: implement -async fn put_series_is_complete() -> ApiResult> { - Err(ApiError::NotImplemented) +async fn put_series_is_complete() -> APIResult> { + Err(APIError::NotImplemented) } diff --git a/apps/server/src/routers/api/v1/smart_list.rs b/apps/server/src/routers/api/v1/smart_list.rs index 335f23f2b..8888f9754 100644 --- a/apps/server/src/routers/api/v1/smart_list.rs +++ b/apps/server/src/routers/api/v1/smart_list.rs @@ -1,6 +1,6 @@ use crate::{ config::state::AppState, - errors::{ApiError, ApiResult}, + errors::{APIError, APIResult}, filter::chain_optional_iter, utils::get_user_and_enforce_permission, }; @@ -128,14 +128,14 @@ async fn get_smart_lists( State(ctx): State, session: Session, QsQuery(params): QsQuery, -) -> ApiResult>> { +) -> APIResult>> { let user = get_user_and_enforce_permission(&session, UserPermission::AccessSmartList)?; - let client = ctx.get_db(); + let client = &ctx.db; let query_all = params.all.unwrap_or(false); if query_all && !user.is_server_owner { - return Err(ApiError::Forbidden( + return Err(APIError::Forbidden( "You do not have permission to access this resource.".to_string(), )); } @@ -190,16 +190,16 @@ async fn create_smart_list( State(ctx): State, session: Session, Json(input): Json, -) -> ApiResult> { +) -> APIResult> { let user = get_user_and_enforce_permission(&session, UserPermission::AccessSmartList)?; - let client = ctx.get_db(); + let client = &ctx.db; tracing::debug!(?input, "Creating smart list"); let serialized_filters = serde_json::to_vec(&input.filters).map_err(|e| { tracing::error!(?e, "Failed to serialize smart list filters"); - ApiError::InternalServerError(e.to_string()) + APIError::InternalServerError(e.to_string()) })?; let smart_list = client @@ -251,10 +251,10 @@ async fn get_smart_list_by_id( QsQuery(options): QsQuery, State(ctx): State, session: Session, -) -> ApiResult> { +) -> APIResult> { let user = get_user_and_enforce_permission(&session, UserPermission::AccessSmartList)?; - let client = ctx.get_db(); + let client = &ctx.db; let access_condition = smart_list_access_for_user(&user, AccessRole::Reader.value()); let mut query = client @@ -268,7 +268,7 @@ async fn get_smart_list_by_id( let smart_list = query .exec() .await? - .ok_or_else(|| ApiError::NotFound("Smart list not found".to_string()))?; + .ok_or_else(|| APIError::NotFound("Smart list not found".to_string()))?; Ok(Json(SmartList::try_from(smart_list)?)) } @@ -290,10 +290,10 @@ async fn update_smart_list_by_id( State(ctx): State, session: Session, Json(input): Json, -) -> ApiResult> { +) -> APIResult> { let user = get_user_and_enforce_permission(&session, UserPermission::AccessSmartList)?; - let client = ctx.get_db(); + let client = &ctx.db; let access_condition = smart_list_access_for_user(&user, AccessRole::Writer.value()); let smart_list = client @@ -301,11 +301,11 @@ async fn update_smart_list_by_id( .find_first(vec![smart_list::id::equals(id), access_condition]) .exec() .await? - .ok_or_else(|| ApiError::NotFound("Smart list not found".to_string()))?; + .ok_or_else(|| APIError::NotFound("Smart list not found".to_string()))?; let serialized_filters = serde_json::to_vec(&input.filters).map_err(|e| { tracing::error!(?e, "Failed to serialize smart list filters"); - ApiError::InternalServerError(e.to_string()) + APIError::InternalServerError(e.to_string()) })?; let updated_smart_list = client @@ -349,10 +349,10 @@ async fn delete_smart_list_by_id( Path(id): Path, State(ctx): State, session: Session, -) -> ApiResult> { +) -> APIResult> { let user = get_user_and_enforce_permission(&session, UserPermission::AccessSmartList)?; - let client = ctx.get_db(); + let client = &ctx.db; let access_condition = smart_list_access_for_user(&user, AccessRole::CoCreator.value()); @@ -362,7 +362,7 @@ async fn delete_smart_list_by_id( .find_first(vec![smart_list::id::equals(id.clone()), access_condition]) .exec() .await? - .ok_or_else(|| ApiError::NotFound("Smart list not found".to_string()))?; + .ok_or_else(|| APIError::NotFound("Smart list not found".to_string()))?; let deleted_count = client .smart_list() @@ -374,7 +374,7 @@ async fn delete_smart_list_by_id( .await?; if deleted_count == 0 { - return Err(ApiError::NotFound("Smart list not found".to_string())); + return Err(APIError::NotFound("Smart list not found".to_string())); } else if deleted_count > 1 { tracing::warn!( ?deleted_count, @@ -400,11 +400,11 @@ async fn get_smart_list_items( Path(id): Path, State(ctx): State, session: Session, -) -> ApiResult> { +) -> APIResult> { let user = get_user_and_enforce_permission(&session, UserPermission::AccessSmartList)?; - let client = ctx.get_db(); + let client = &ctx.db; let access_condition = smart_list_access_for_user(&user, AccessRole::Reader.value()); let smart_list: SmartList = client @@ -412,7 +412,7 @@ async fn get_smart_list_items( .find_first(vec![smart_list::id::equals(id.clone()), access_condition]) .exec() .await? - .ok_or_else(|| ApiError::NotFound("Smart list not found".to_string()))? + .ok_or_else(|| APIError::NotFound("Smart list not found".to_string()))? .try_into()?; let (tx, client) = client._transaction().begin().await?; @@ -452,10 +452,10 @@ async fn get_smart_list_meta( Path(id): Path, State(ctx): State, session: Session, -) -> ApiResult> { +) -> APIResult> { let user = get_user_and_enforce_permission(&session, UserPermission::AccessSmartList)?; - let client = ctx.get_db(); + let client = &ctx.db; let access_condition = smart_list_access_for_user(&user, AccessRole::Reader.value()); let smart_list: SmartList = client @@ -463,7 +463,7 @@ async fn get_smart_list_meta( .find_first(vec![smart_list::id::equals(id.clone()), access_condition]) .exec() .await? - .ok_or_else(|| ApiError::NotFound("Smart list not found".to_string()))? + .ok_or_else(|| APIError::NotFound("Smart list not found".to_string()))? .try_into()?; let params = smart_list.into_params(); @@ -524,10 +524,10 @@ async fn get_smart_list_views( Path(id): Path, State(ctx): State, session: Session, -) -> ApiResult>> { +) -> APIResult>> { let user = get_user_and_enforce_permission(&session, UserPermission::AccessSmartList)?; - let client = ctx.get_db(); + let client = &ctx.db; let access_condition = smart_list_access_for_user(&user, AccessRole::Reader.value()); let saved_smart_list_views = client @@ -562,10 +562,10 @@ async fn get_smart_list_view( Path((id, name)): Path<(String, String)>, State(ctx): State, session: Session, -) -> ApiResult> { +) -> APIResult> { let user = get_user_and_enforce_permission(&session, UserPermission::AccessSmartList)?; - let client = ctx.get_db(); + let client = &ctx.db; let access_condition = smart_list_access_for_user(&user, AccessRole::Reader.value()); let smart_list = client @@ -577,7 +577,7 @@ async fn get_smart_list_view( ]) .exec() .await? - .ok_or_else(|| ApiError::NotFound("Smart list not found".to_string()))?; + .ok_or_else(|| APIError::NotFound("Smart list not found".to_string()))?; Ok(Json(SmartListView::try_from(smart_list)?)) } @@ -606,10 +606,10 @@ async fn create_smart_list_view( State(ctx): State, session: Session, Json(input): Json, -) -> ApiResult> { +) -> APIResult> { let user = get_user_and_enforce_permission(&session, UserPermission::AccessSmartList)?; - let client = ctx.get_db(); + let client = &ctx.db; // NOTE: views are currently completely detatched from a user, rather they are tied // only to the smart list. This makes _this_ aspect a bit awkward. For now, to not over @@ -621,11 +621,11 @@ async fn create_smart_list_view( .find_first(vec![smart_list::id::equals(id.clone()), access_condition]) .exec() .await? - .ok_or_else(|| ApiError::NotFound("Smart list not found".to_string()))?; + .ok_or_else(|| APIError::NotFound("Smart list not found".to_string()))?; let serialized_config = serde_json::to_vec(&input.config).map_err(|e| { tracing::error!(?e, "Failed to serialize smart list view config"); - ApiError::InternalServerError(e.to_string()) + APIError::InternalServerError(e.to_string()) })?; let smart_list_view = client @@ -659,10 +659,10 @@ async fn update_smart_list_view( State(ctx): State, session: Session, Json(input): Json, -) -> ApiResult> { +) -> APIResult> { let user = get_user_and_enforce_permission(&session, UserPermission::AccessSmartList)?; - let client = ctx.get_db(); + let client = &ctx.db; let access_condition = smart_list_access_for_user(&user, AccessRole::Writer.value()); let smart_list = client @@ -670,11 +670,11 @@ async fn update_smart_list_view( .find_first(vec![smart_list::id::equals(id.clone()), access_condition]) .exec() .await? - .ok_or_else(|| ApiError::NotFound("Smart list not found".to_string()))?; + .ok_or_else(|| APIError::NotFound("Smart list not found".to_string()))?; let serialized_config = serde_json::to_vec(&input.config).map_err(|e| { tracing::error!(?e, "Failed to serialize smart list view config"); - ApiError::InternalServerError(e.to_string()) + APIError::InternalServerError(e.to_string()) })?; let updated_smart_list_view = client @@ -707,10 +707,10 @@ async fn delete_smart_list_view( Path((id, name)): Path<(String, String)>, State(ctx): State, session: Session, -) -> ApiResult> { +) -> APIResult> { let user = get_user_and_enforce_permission(&session, UserPermission::AccessSmartList)?; - let client = ctx.get_db(); + let client = &ctx.db; let access_condition = smart_list_access_for_user(&user, AccessRole::Writer.value()); let smart_list = client @@ -718,7 +718,7 @@ async fn delete_smart_list_view( .find_first(vec![smart_list::id::equals(id.clone()), access_condition]) .exec() .await? - .ok_or_else(|| ApiError::NotFound("Smart list not found".to_string()))?; + .ok_or_else(|| APIError::NotFound("Smart list not found".to_string()))?; let deleted_smart_list_view = client .smart_list_view() diff --git a/apps/server/src/routers/api/v1/tag.rs b/apps/server/src/routers/api/v1/tag.rs index c54b9bd79..ab73e59cb 100644 --- a/apps/server/src/routers/api/v1/tag.rs +++ b/apps/server/src/routers/api/v1/tag.rs @@ -9,7 +9,7 @@ use tracing::error; use crate::{ config::state::AppState, - errors::{ApiError, ApiResult}, + errors::{APIError, APIResult}, middleware::auth::Auth, }; @@ -31,8 +31,8 @@ pub(crate) fn mount(app_state: AppState) -> Router { )] /// Get all tags for all items in the database. Tags are returned in a flat list, /// not grouped by the items which they belong to. -async fn get_tags(State(ctx): State) -> ApiResult>> { - let db = ctx.get_db(); +async fn get_tags(State(ctx): State) -> APIResult>> { + let db = &ctx.db; Ok(Json( db.tag() @@ -60,8 +60,8 @@ async fn get_tags(State(ctx): State) -> ApiResult>> { async fn create_tags( State(ctx): State, Json(input): Json, -) -> ApiResult>> { - let db = ctx.get_db(); +) -> APIResult>> { + let db = &ctx.db; let already_existing_tags = db .tag() @@ -78,7 +78,7 @@ async fn create_tags( .collect::>() .join(", "); - return Err(ApiError::BadRequest(format!( + return Err(APIError::BadRequest(format!( "Attempted to create tags which already exist: {}", existing_names ))); diff --git a/apps/server/src/routers/api/v1/user.rs b/apps/server/src/routers/api/v1/user.rs index 40173907e..ec23a6b79 100644 --- a/apps/server/src/routers/api/v1/user.rs +++ b/apps/server/src/routers/api/v1/user.rs @@ -30,7 +30,7 @@ use utoipa::ToSchema; use crate::{ config::{session::SESSION_USER_KEY, state::AppState}, - errors::{ApiError, ApiResult}, + errors::{APIError, APIResult}, filter::UserQueryRelation, middleware::auth::Auth, utils::{ @@ -123,7 +123,7 @@ async fn get_users( relation_query: Query, pagination_query: Query, session: Session, -) -> ApiResult>>> { +) -> APIResult>>> { get_session_server_owner_user(&session)?; let pagination = pagination_query.0.get(); @@ -196,10 +196,10 @@ async fn get_users( async fn get_user_login_activity( State(ctx): State, session: Session, -) -> ApiResult>> { +) -> APIResult>> { get_session_server_owner_user(&session)?; - let client = ctx.get_db(); + let client = &ctx.db; let user_activity = client .user_login_activity() @@ -228,10 +228,10 @@ async fn get_user_login_activity( async fn delete_user_login_activity( State(ctx): State, session: Session, -) -> ApiResult> { +) -> APIResult> { get_session_server_owner_user(&session)?; - let client = ctx.get_db(); + let client = &ctx.db; client .user_login_activity() @@ -260,12 +260,12 @@ async fn update_user( for_user_id: String, input: UpdateUser, config: &StumpConfig, -) -> ApiResult { +) -> APIResult { // NOTE: there are other mechanisms in place to effectively disable logging in, // so I am making this a bad request. In the future, perhaps this can change. match input.max_sessions_allowed { Some(max_sessions_allowed) if max_sessions_allowed <= 0 => { - return Err(ApiError::BadRequest( + return Err(APIError::BadRequest( "max_sessions_allowed must be greater than 0 when set".to_string(), )) }, @@ -362,7 +362,7 @@ async fn update_preferences( client: &PrismaClient, preferences_id: String, input: UpdateUserPreferences, -) -> ApiResult { +) -> APIResult { let updated_preferences = client .user_preferences() .update( @@ -426,9 +426,9 @@ async fn create_user( session: Session, State(ctx): State, Json(input): Json, -) -> ApiResult> { +) -> APIResult> { get_session_server_owner_user(&session)?; - let db = ctx.get_db(); + let db = &ctx.db; let hashed_password = bcrypt::hash(input.password, ctx.config.password_hash_cost)?; @@ -500,7 +500,7 @@ async fn create_user( .await }) .await? - .ok_or(ApiError::InternalServerError( + .ok_or(APIError::InternalServerError( "Failed to create user".to_string(), ))?; tracing::trace!(final_user = ?created_user, "Final user result"); @@ -525,8 +525,8 @@ async fn update_current_user( session: Session, State(ctx): State, Json(input): Json, -) -> ApiResult> { - let db = ctx.get_db(); +) -> APIResult> { + let db = &ctx.db; let user = get_session_user(&session)?; let updated_user = @@ -536,7 +536,7 @@ async fn update_current_user( session .insert(SESSION_USER_KEY, updated_user.clone()) .map_err(|e| { - ApiError::InternalServerError(format!("Failed to update session: {}", e)) + APIError::InternalServerError(format!("Failed to update session: {}", e)) })?; Ok(Json(updated_user)) @@ -576,8 +576,8 @@ async fn update_current_user_preferences( session: Session, State(ctx): State, Json(input): Json, -) -> ApiResult> { - let db = ctx.get_db(); +) -> APIResult> { + let db = &ctx.db; let user = get_session_user(&session)?; let user_preferences = user.user_preferences.clone().unwrap_or_default(); @@ -596,7 +596,7 @@ async fn update_current_user_preferences( }, ) .map_err(|e| { - ApiError::InternalServerError(format!("Failed to update session: {}", e)) + APIError::InternalServerError(format!("Failed to update session: {}", e)) })?; Ok(Json(updated_preferences)) @@ -628,12 +628,12 @@ async fn delete_user_by_id( State(ctx): State, session: Session, Json(input): Json, -) -> ApiResult> { - let db = ctx.get_db(); +) -> APIResult> { + let db = &ctx.db; let user = get_session_server_owner_user(&session)?; if user.id == id { - return Err(ApiError::BadRequest( + return Err(APIError::BadRequest( "You cannot delete your own account.".into(), )); } @@ -677,9 +677,9 @@ async fn get_user_by_id( Path(id): Path, State(ctx): State, session: Session, -) -> ApiResult> { +) -> APIResult> { get_session_server_owner_user(&session)?; - let db = ctx.get_db(); + let db = &ctx.db; let user_by_id = db .user() .find_unique(user::id::equals(id.clone())) @@ -689,7 +689,7 @@ async fn get_user_by_id( debug!(id, ?user_by_id, "Result of fetching user by id"); if user_by_id.is_none() { - return Err(ApiError::NotFound(format!("User with id {} not found", id))); + return Err(APIError::NotFound(format!("User with id {} not found", id))); } Ok(Json(User::from(user_by_id.unwrap()))) @@ -715,13 +715,13 @@ async fn get_user_login_activity_by_id( Path(id): Path, State(ctx): State, session: Session, -) -> ApiResult>> { +) -> APIResult>> { let user = get_session_user(&session)?; - let client = ctx.get_db(); + let client = &ctx.db; if user.id != id && !user.is_server_owner { - return Err(ApiError::Forbidden(String::from( + return Err(APIError::Forbidden(String::from( "You cannot access this resource", ))); } @@ -759,12 +759,12 @@ async fn update_user_handler( State(ctx): State, Path(id): Path, Json(input): Json, -) -> ApiResult> { - let db = ctx.get_db(); +) -> APIResult> { + let db = &ctx.db; let user = get_session_user(&session)?; if user.id != id && !user.is_server_owner { - return Err(ApiError::forbidden_discreet()); + return Err(APIError::forbidden_discreet()); } let updated_user = update_user(&user, db, id.clone(), input, &ctx.config).await?; @@ -774,7 +774,7 @@ async fn update_user_handler( session .insert(SESSION_USER_KEY, updated_user.clone()) .map_err(|e| { - ApiError::InternalServerError(format!("Failed to update session: {}", e)) + APIError::InternalServerError(format!("Failed to update session: {}", e)) })?; } else { // When a server owner updates another user, we need to delete all sessions for that user @@ -806,10 +806,10 @@ async fn delete_user_sessions( Path(id): Path, State(ctx): State, session: Session, -) -> ApiResult<()> { +) -> APIResult<()> { get_session_server_owner_user(&session)?; - let client = ctx.get_db(); + let client = &ctx.db; let removed_sessions = client .session() .delete_many(vec![session::user_id::equals(id)]) @@ -846,15 +846,15 @@ async fn update_user_lock_status( State(ctx): State, session: Session, Json(input): Json, -) -> ApiResult> { +) -> APIResult> { let user = get_session_server_owner_user(&session)?; if user.id == id { - return Err(ApiError::BadRequest( + return Err(APIError::BadRequest( "You cannot lock your own account.".into(), )); } - let db = ctx.get_db(); + let db = &ctx.db; let updated_user = db .user() .update( @@ -897,12 +897,12 @@ async fn get_user_preferences( Path(id): Path, State(ctx): State, session: Session, -) -> ApiResult> { - let db = ctx.get_db(); +) -> APIResult> { + let db = &ctx.db; let user = get_session_user(&session)?; if id != user.id { - return Err(ApiError::forbidden_discreet()); + return Err(APIError::forbidden_discreet()); } let user_preferences = db @@ -913,7 +913,7 @@ async fn get_user_preferences( debug!(id, ?user_preferences, "Fetched user preferences"); if user_preferences.is_none() { - return Err(ApiError::NotFound(format!( + return Err(APIError::NotFound(format!( "User preferences with id {} not found", id ))); @@ -944,15 +944,15 @@ async fn update_user_preferences( State(ctx): State, Path(id): Path, Json(input): Json, -) -> ApiResult> { +) -> APIResult> { trace!(?id, ?input, "Updating user preferences"); - let db = ctx.get_db(); + let db = &ctx.db; let user = get_session_user(&session)?; let user_preferences = user.user_preferences.clone().unwrap_or_default(); if user_preferences.id != input.id { - return Err(ApiError::forbidden_discreet()); + return Err(APIError::forbidden_discreet()); } let updated_preferences = update_preferences(db, user_preferences.id, input).await?; @@ -967,7 +967,7 @@ async fn update_user_preferences( }, ) .map_err(|e| { - ApiError::InternalServerError(format!("Failed to update session: {}", e)) + APIError::InternalServerError(format!("Failed to update session: {}", e)) })?; Ok(Json(updated_preferences)) @@ -990,15 +990,15 @@ async fn update_user_preferences( async fn get_user_avatar( Path(id): Path, State(ctx): State, -) -> ApiResult { - let client = ctx.get_db(); +) -> APIResult { + let client = &ctx.db; let user = client .user() .find_unique(user::id::equals(id)) .exec() .await? - .ok_or(ApiError::NotFound("User not found".to_string()))?; + .ok_or(APIError::NotFound("User not found".to_string()))?; match user.avatar_url { Some(url) if url.starts_with("/api/v1/") => { @@ -1010,7 +1010,7 @@ async fn get_user_avatar( let bytes = read_entire_file(local_file)?; Ok(ImageResponse::new(content_type, bytes)) } else { - Err(ApiError::NotFound("User avatar not found".to_string())) + Err(APIError::NotFound("User avatar not found".to_string())) } }, Some(url) => { @@ -1020,7 +1020,7 @@ async fn get_user_avatar( let content_type = ContentType::from_bytes(&magic_bytes); Ok(ImageResponse::new(content_type, bytes.to_vec())) }, - None => Err(ApiError::NotFound("User avatar not found".to_string())), + None => Err(APIError::NotFound("User avatar not found".to_string())), } } @@ -1044,12 +1044,12 @@ async fn upload_user_avatar( State(ctx): State, session: Session, mut upload: Multipart, -) -> ApiResult { +) -> APIResult { let by_user = get_user_and_enforce_permission(&session, UserPermission::UploadFile)?; - let client = ctx.get_db(); + let client = &ctx.db; if by_user.id != id && !by_user.is_server_owner { - return Err(ApiError::forbidden_discreet()); + return Err(APIError::forbidden_discreet()); } tracing::trace!(?id, ?upload, "Replacing user avatar"); @@ -1059,7 +1059,7 @@ async fn upload_user_avatar( .find_unique(user::id::equals(id.clone())) .exec() .await? - .ok_or(ApiError::NotFound("User not found".to_string()))?; + .ok_or(APIError::NotFound("User not found".to_string()))?; let (content_type, bytes) = validate_image_upload(&mut upload).await?; diff --git a/apps/server/src/routers/mod.rs b/apps/server/src/routers/mod.rs index 5e7f0436e..f631ee4ea 100644 --- a/apps/server/src/routers/mod.rs +++ b/apps/server/src/routers/mod.rs @@ -18,7 +18,7 @@ pub(crate) fn mount(app_state: AppState) -> Router { app_router .merge(spa::mount(app_state.clone())) - .merge(ws::mount()) + .merge(ws::mount(app_state.clone())) .merge(sse::mount()) .merge(api::mount(app_state.clone())) .merge(opds::mount(app_state)) diff --git a/apps/server/src/routers/opds.rs b/apps/server/src/routers/opds.rs index cb503c240..d06b6553a 100644 --- a/apps/server/src/routers/opds.rs +++ b/apps/server/src/routers/opds.rs @@ -24,7 +24,7 @@ use tracing::{debug, trace, warn}; use crate::{ config::state::AppState, - errors::{ApiError, ApiResult}, + errors::{APIError, APIResult}, filter::chain_optional_iter, middleware::auth::Auth, utils::{ @@ -74,7 +74,7 @@ fn pagination_bounds(page: i64, page_size: i64) -> (i64, i64) { (skip, page_size) } -async fn catalog() -> ApiResult { +async fn catalog() -> APIResult { let entries = vec![ OpdsEntry::new( "keepReading".to_string(), @@ -187,8 +187,8 @@ async fn catalog() -> ApiResult { Ok(Xml(feed.build()?)) } -async fn keep_reading(State(ctx): State, session: Session) -> ApiResult { - let db = ctx.get_db(); +async fn keep_reading(State(ctx): State, session: Session) -> APIResult { + let db = &ctx.db; let user_id = get_session_user(&session)?.id; let read_progress_conditions = vec![apply_in_progress_filter_for_user(user_id)]; @@ -251,8 +251,8 @@ async fn keep_reading(State(ctx): State, session: Session) -> ApiResul } // TODO: age restrictions -async fn get_libraries(State(ctx): State) -> ApiResult { - let db = ctx.get_db(); +async fn get_libraries(State(ctx): State) -> APIResult { + let db = &ctx.db; let libraries = db.library().find_many(vec![]).exec().await?; let entries = libraries.into_iter().map(OpdsEntry::from).collect(); @@ -283,8 +283,8 @@ async fn get_library_by_id( Path(id): Path, pagination: Query, session: Session, -) -> ApiResult { - let db = ctx.get_db(); +) -> APIResult { + let db = &ctx.db; let library_id = id.clone(); let page = pagination.page.unwrap_or(0); @@ -346,7 +346,7 @@ async fn get_library_by_id( ) .build()?)) } else { - Err(ApiError::NotFound(format!( + Err(APIError::NotFound(format!( "Library {} not found", library_id ))) @@ -359,8 +359,8 @@ async fn get_series( State(ctx): State, pagination: Query, session: Session, -) -> ApiResult { - let db = ctx.get_db(); +) -> APIResult { + let db = &ctx.db; let page = pagination.page.unwrap_or(0); let (skip, take) = pagination_bounds(page.into(), 20); @@ -406,8 +406,8 @@ async fn get_latest_series( State(ctx): State, pagination: Query, session: Session, -) -> ApiResult { - let db = ctx.get_db(); +) -> APIResult { + let db = &ctx.db; let page = pagination.page.unwrap_or(0); let (skip, take) = pagination_bounds(page.into(), 20); @@ -455,8 +455,8 @@ async fn get_series_by_id( State(ctx): State, pagination: Query, session: Session, -) -> ApiResult { - let db = ctx.get_db(); +) -> APIResult { + let db = &ctx.db; let series_id = id.clone(); let page = pagination.page.unwrap_or(0); @@ -511,7 +511,7 @@ async fn get_series_by_id( ) .build()?)) } else { - Err(ApiError::NotFound(format!( + Err(APIError::NotFound(format!( "Series {} not found", series_id ))) @@ -521,7 +521,7 @@ async fn get_series_by_id( fn handle_opds_image_response( content_type: ContentType, image_buffer: Vec, -) -> ApiResult { +) -> APIResult { if content_type.is_opds_legacy_image() { trace!("OPDS legacy image detected, returning as-is"); Ok(ImageResponse::new(content_type, image_buffer)) @@ -544,8 +544,8 @@ async fn get_book_thumbnail( Path(id): Path, State(ctx): State, session: Session, -) -> ApiResult { - let db = ctx.get_db(); +) -> APIResult { + let db = &ctx.db; let user = get_session_user(&session)?; let age_restrictions = user .age_restriction @@ -560,7 +560,7 @@ async fn get_book_thumbnail( )) .exec() .await? - .ok_or(ApiError::NotFound(String::from("Book not found")))?; + .ok_or(APIError::NotFound(String::from("Book not found")))?; let (content_type, image_buffer) = get_page(book.path.as_str(), 1, &ctx.config)?; handle_opds_image_response(content_type, image_buffer) @@ -572,8 +572,8 @@ async fn get_book_page( State(ctx): State, pagination: Query, session: Session, -) -> ApiResult { - let db = ctx.get_db(); +) -> APIResult { + let db = &ctx.db; let user = get_session_user(&session)?; let user_id = user.id; @@ -590,7 +590,7 @@ async fn get_book_page( correct_page = page + 1; } - let result: Result<(media::Data, read_progress::Data), ApiError> = db + let result: Result<(media::Data, read_progress::Data), APIError> = db ._transaction() .run(|client| async move { let book = db @@ -601,7 +601,7 @@ async fn get_book_page( )) .exec() .await? - .ok_or(ApiError::NotFound(String::from("Book not found")))?; + .ok_or(APIError::NotFound(String::from("Book not found")))?; let is_completed = book.pages == correct_page; @@ -638,8 +638,8 @@ async fn download_book( Path((id, filename)): Path<(String, String)>, State(ctx): State, session: Session, -) -> ApiResult { - let db = ctx.get_db(); +) -> APIResult { + let db = &ctx.db; let user = get_session_user(&session)?; let age_restrictions = user .age_restriction @@ -656,7 +656,7 @@ async fn download_book( )) .exec() .await? - .ok_or(ApiError::NotFound(String::from("Book not found")))?; + .ok_or(APIError::NotFound(String::from("Book not found")))?; Ok(NamedFile::open(book.path.clone()).await?) } diff --git a/apps/server/src/routers/utoipa.rs b/apps/server/src/routers/utoipa.rs index d25178efc..d9bc0484d 100644 --- a/apps/server/src/routers/utoipa.rs +++ b/apps/server/src/routers/utoipa.rs @@ -7,13 +7,13 @@ use stump_core::db::query::{ordering::*, pagination::*}; use stump_core::filesystem::{ DirectoryListing, DirectoryListingFile, DirectoryListingInput, }; -use stump_core::job::{JobDetail, JobStatus}; +use stump_core::job::JobStatus; use utoipa::OpenApi; use utoipa_swagger_ui::SwaggerUi; use crate::config::state::AppState; -use crate::errors::ApiError; +use crate::errors::APIError; use crate::filter::{ FilterableLibraryQuery, FilterableMediaQuery, FilterableSeriesQuery, LibraryFilter, MediaFilter, SeriesFilter, SeriesQueryRelation, @@ -139,8 +139,8 @@ use super::api::{ DirectoryListingFile, CursorInfo, PageInfo, PageableLibraries, PageableMedia, PageableSeries, LoginOrRegisterArgs, DirectoryListingInput, PageQuery, FilterableLibraryQuery, PaginationQuery, QueryOrder, LibraryFilter, - Direction, CreateLibrary, UpdateLibrary, ApiError, MediaFilter, SeriesFilter, - FilterableMediaQuery, FilterableSeriesQuery, JobDetail, LibrariesStats, ScanQueryParam, + Direction, CreateLibrary, UpdateLibrary, APIError, MediaFilter, SeriesFilter, + FilterableMediaQuery, FilterableSeriesQuery, LibrariesStats, JobStatus, SeriesQueryRelation, CreateReadingList, UpdateUserPreferences, UpdateUser, CreateTags, CleanLibraryResponse, MediaIsComplete, SeriesIsComplete, PutMediaCompletionStatus, SmartList, SmartListMeta, SmartListItems, SmartListView, CreateOrUpdateSmartList, diff --git a/apps/server/src/routers/ws.rs b/apps/server/src/routers/ws.rs index a80816128..9b8210230 100644 --- a/apps/server/src/routers/ws.rs +++ b/apps/server/src/routers/ws.rs @@ -14,9 +14,8 @@ use stump_core::Ctx; use crate::config::state::AppState; -// TODO: do I need auth middleware here? I think so, but I think the ws:// is -// throwing if off and making it not think there is a session when there is. -pub(crate) fn mount() -> Router { +// FIXME: Auth guard this WS! I think TBH this might something for https://github.com/stumpapp/stump/issues/219 +pub(crate) fn mount(_: AppState) -> Router { Router::new().route("/ws", get(ws_handler)) // .layer(from_extractor_with_state::(app_state)) } diff --git a/apps/server/src/utils/auth.rs b/apps/server/src/utils/auth.rs index daf0b58dd..6296fb466 100644 --- a/apps/server/src/utils/auth.rs +++ b/apps/server/src/utils/auth.rs @@ -3,7 +3,7 @@ use tower_sessions::Session; use crate::{ config::session::SESSION_USER_KEY, - errors::{ApiError, ApiResult, AuthError}, + errors::{APIError, APIResult, AuthError}, }; #[derive(Debug)] @@ -31,21 +31,21 @@ pub fn decode_base64_credentials( Ok(DecodedCredentials { username, password }) } -pub fn get_session_user(session: &Session) -> ApiResult { +pub fn get_session_user(session: &Session) -> APIResult { if let Some(user) = session.get::(SESSION_USER_KEY)? { Ok(user) } else { - Err(ApiError::Unauthorized) + Err(APIError::Unauthorized) } } -pub fn get_session_server_owner_user(session: &Session) -> ApiResult { +pub fn get_session_server_owner_user(session: &Session) -> APIResult { let user = get_session_user(session)?; if user.is_server_owner { Ok(user) } else { - Err(ApiError::Forbidden( + Err(APIError::Forbidden( "You do not have permission to access this resource.".to_string(), )) } @@ -63,24 +63,24 @@ fn user_has_permission(user: &User, permission: UserPermission) -> bool { } /// Enforce that the user has the given permission. If the user does not have the permission, an -/// `ApiError::Forbidden` is returned. -fn enforce_permission(user: &User, permission: UserPermission) -> ApiResult<()> { +/// `APIError::Forbidden` is returned. +fn enforce_permission(user: &User, permission: UserPermission) -> APIResult<()> { if user_has_permission(user, permission) { Ok(()) } else { tracing::error!(?user, ?permission, "User does not have permission"); - Err(ApiError::Forbidden( + Err(APIError::Forbidden( "You do not have permission to access this resource.".to_string(), )) } } /// Enforce that the user in the session has the given permission. If the user does not have the -/// permission, an `ApiError::Forbidden` is returned. +/// permission, an `APIError::Forbidden` is returned. pub fn enforce_session_permission( session: &Session, permission: UserPermission, -) -> ApiResult<()> { +) -> APIResult<()> { let user = get_session_user(session)?; enforce_permission(&user, permission) } @@ -104,7 +104,7 @@ fn user_has_all_permissions(user: &User, permissions: &[UserPermission]) -> bool pub fn enforce_session_permissions( session: &Session, permissions: &[UserPermission], -) -> ApiResult { +) -> APIResult { let user = get_session_user(session)?; let can_proceed = user_has_all_permissions(&user, permissions); @@ -119,12 +119,12 @@ pub fn enforce_session_permissions( } /// Enforce that the user in the session has the given permission. If the user does not have the -/// permission, an `ApiError::Forbidden` is returned. The user is returned if they have the +/// permission, an `APIError::Forbidden` is returned. The user is returned if they have the /// permission. pub fn get_user_and_enforce_permission( session: &Session, permission: UserPermission, -) -> ApiResult { +) -> APIResult { let user = get_session_user(session)?; enforce_permission(&user, permission)?; Ok(user) diff --git a/apps/server/src/utils/date.rs b/apps/server/src/utils/date.rs index e558aed36..a67432935 100644 --- a/apps/server/src/utils/date.rs +++ b/apps/server/src/utils/date.rs @@ -1,12 +1,12 @@ use prisma_client_rust::chrono::{DateTime, Utc}; -use crate::errors::{ApiError, ApiResult}; +use crate::errors::{APIError, APIResult}; /// Attempts to parse a date from a string. -pub fn string_to_date(date: String) -> ApiResult> { +pub fn string_to_date(date: String) -> APIResult> { DateTime::parse_from_rfc3339(&date) .map(|dt| dt.with_timezone(&Utc)) - .map_err(|error| ApiError::BadRequest(error.to_string())) + .map_err(|error| APIError::BadRequest(error.to_string())) } /// Attempts to parse a date from a string, returning the current UTC date if it fails. diff --git a/apps/server/src/utils/upload.rs b/apps/server/src/utils/upload.rs index 39d0f2398..6dbf75a7f 100644 --- a/apps/server/src/utils/upload.rs +++ b/apps/server/src/utils/upload.rs @@ -1,7 +1,7 @@ use axum::extract::Multipart; use stump_core::filesystem::ContentType; -use crate::errors::{ApiError, ApiResult}; +use crate::errors::{APIError, APIResult}; // TODO: it would be a great enhancement to allow hookup of a malware scanner here, e.g. clamav // TODO: Allow configuration of maximum file size @@ -9,9 +9,9 @@ use crate::errors::{ApiError, ApiResult}; /// uploaded image if it is valid. pub async fn validate_image_upload( upload: &mut Multipart, -) -> ApiResult<(ContentType, Vec)> { +) -> APIResult<(ContentType, Vec)> { let field = upload.next_field().await?.ok_or_else(|| { - ApiError::BadRequest(String::from("No file provided in multipart")) + APIError::BadRequest(String::from("No file provided in multipart")) })?; let raw_content_type = field.content_type().map(ContentType::from); @@ -20,7 +20,7 @@ pub async fn validate_image_upload( let file_size = bytes.len(); if bytes.is_empty() || bytes.len() < 5 { - return Err(ApiError::BadRequest("Uploaded file is empty".to_string())); + return Err(APIError::BadRequest("Uploaded file is empty".to_string())); } let mut magic_bytes = vec![0; 5]; @@ -30,7 +30,7 @@ pub async fn validate_image_upload( let content_type = match (raw_content_type, inferred_content_type) { (Some(provided), inferred) if !provided.is_image() && !inferred.is_image() => { - Err(ApiError::BadRequest( + Err(APIError::BadRequest( "Uploaded file is not an image".to_string(), )) }, @@ -42,12 +42,12 @@ pub async fn validate_image_upload( .then_some(inferred) .or_else(|| provided.is_image().then_some(provided)) .ok_or_else(|| { - ApiError::BadRequest("Uploaded file is not an image".to_string()) + APIError::BadRequest("Uploaded file is not an image".to_string()) })?; Ok(content_type) }, (None, inferred) => (inferred.is_image()).then_some(inferred).ok_or_else(|| { - ApiError::BadRequest("Uploaded file is not an image".to_string()) + APIError::BadRequest("Uploaded file is not an image".to_string()) }), }?; diff --git a/apps/web/package.json b/apps/web/package.json index 99ad17272..e38ff8a7c 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -11,7 +11,7 @@ }, "dependencies": { "@stump/client": "workspace:*", - "@stump/interface": "workspace:*", + "@stump/browser": "workspace:*", "react": "^18.2.0", "react-dom": "^18.2.0", "react-router": "^6.17.0", diff --git a/apps/web/src/App.tsx b/apps/web/src/App.tsx index 636178b5b..71d3eba68 100644 --- a/apps/web/src/App.tsx +++ b/apps/web/src/App.tsx @@ -1,4 +1,4 @@ -import StumpInterface from '@stump/interface' +import { StumpWebClient } from '@stump/browser' const getDebugUrl = () => { const { hostname } = window.location @@ -8,5 +8,5 @@ const getDebugUrl = () => { export const baseUrl = import.meta.env.PROD ? window.location.href : getDebugUrl() export default function App() { - return + return } diff --git a/apps/web/tsconfig.json b/apps/web/tsconfig.json index 395607e70..e32a6421e 100644 --- a/apps/web/tsconfig.json +++ b/apps/web/tsconfig.json @@ -9,8 +9,8 @@ "paths": { "@stump/client": ["../../packages/client/src/index.ts"], "@stump/client/*": ["../../packages/client/src/*"], - "@stump/interface": ["../../interface/src/index.ts"], - "@stump/interface/*": ["../../interface/src/*"] + "@stump/browser": ["../../packages/browser/src/index.ts"], + "@stump/browser/*": ["../../packages/browser/src/*"] } }, "include": ["src"], @@ -19,7 +19,7 @@ "path": "../../packages/client" }, { - "path": "../../interface" + "path": "../../packages/browser" } ] } diff --git a/apps/web/vite.config.ts b/apps/web/vite.config.ts index 89ca7acc0..b156c4a16 100644 --- a/apps/web/vite.config.ts +++ b/apps/web/vite.config.ts @@ -16,7 +16,7 @@ export default defineConfig({ pkgJson: { name, version }, }, plugins: [react(), tsconfigPaths()], - publicDir: '../../../interface/public', + publicDir: '../../../packages/browser/public', root: 'src', server: { port: 3000, diff --git a/core/Cargo.toml b/core/Cargo.toml index 032a92bc2..11f066bde 100644 --- a/core/Cargo.toml +++ b/core/Cargo.toml @@ -11,8 +11,9 @@ specta = { workspace = true } ### Async Utils ### rayon = "1.8.0" -futures = "0.3.29" +futures = { workspace = true } async-trait = { workspace = true } +async-channel = "2.1.0" ### Filesystem Utils ### walkdir = "2.4.0" @@ -53,9 +54,15 @@ alphanumeric-sort = "1.5.3" [dev-dependencies] tempfile = { workspace = true } +criterion = { version = "0.5.1", features = ["html_reports", "async_tokio"] } [build-dependencies] chrono = "0.4.31" [target.'cfg(target_os = "linux")'.dependencies] -libc = "0.2.152" \ No newline at end of file +libc = "0.2.152" + +[[bench]] +name = "bench_main" +harness = false + diff --git a/core/benches/bench_main.rs b/core/benches/bench_main.rs new file mode 100644 index 000000000..bb408d193 --- /dev/null +++ b/core/benches/bench_main.rs @@ -0,0 +1,7 @@ +use criterion::criterion_main; + +mod benchmarks; + +criterion_main! { + benchmarks::library_scanner::benches, +} diff --git a/core/benches/benchmarks/library_scanner.rs b/core/benches/benchmarks/library_scanner.rs new file mode 100644 index 000000000..952d691c3 --- /dev/null +++ b/core/benches/benchmarks/library_scanner.rs @@ -0,0 +1,306 @@ +use std::{ + fmt::{Display, Formatter}, + path::PathBuf, + sync::Arc, + time::Instant, +}; + +use criterion::{criterion_group, BenchmarkId, Criterion}; +use stump_core::{ + config::StumpConfig, + db::{ + create_client_with_url, + entity::{Library, LibraryOptions}, + }, + filesystem::scanner::LibraryScanJob, + job::{Executor, WorkerCtx, WrappedJob}, + prisma::{library, library_options, PrismaClient}, +}; +use tempfile::{Builder as TempDirBuilder, TempDir}; +use tokio::{ + runtime::Builder, + sync::{broadcast, mpsc}, +}; +use uuid::Uuid; + +#[derive(Debug)] +struct BenchmarkSize { + series_count: usize, + media_per_series: usize, +} + +impl Display for BenchmarkSize { + fn fmt(&self, f: &mut Formatter) -> std::fmt::Result { + write!( + f, + "{} series with {} media each", + self.series_count, self.media_per_series + ) + } +} + +fn full_scan(c: &mut Criterion) { + static SIZES: [BenchmarkSize; 3] = [ + BenchmarkSize { + series_count: 10, + media_per_series: 10, + }, + BenchmarkSize { + series_count: 100, + media_per_series: 10, + }, + BenchmarkSize { + series_count: 100, + media_per_series: 100, + }, + // Note: This benchmark is a time hog, so I have commented it out for now + // BenchmarkSize { + // series_count: 100, + // media_per_series: 1000, + // }, + ]; + + let mut group = c.benchmark_group("full_scan"); + for size in SIZES.iter() { + group.bench_with_input(BenchmarkId::from_parameter(size), size, |b, size| { + let rt = Builder::new_multi_thread().enable_all().build().unwrap(); + b.to_async(rt).iter_custom(|_| async { + let Setup { + library, + tempdirs, + test_ctx, + } = setup_test(size.series_count, size.media_per_series) + .await + .expect("Failed to set up test"); + + let client = test_ctx.worker_ctx.db.clone(); + + println!("Starting benchmark for {}", size); + let start = Instant::now(); + scan_new_library(test_ctx).await; + let elapsed = start.elapsed(); + + let _ = safe_validate_counts( + &client, + size.series_count, + size.media_per_series, + ) + .await; + + clean_up(&client, library, tempdirs).await; + + elapsed + }); + }); + } +} + +criterion_group!(benches, full_scan); + +struct TestCtx { + job: WrappedJob, + worker_ctx: WorkerCtx, +} + +struct Setup { + test_ctx: TestCtx, + library: Library, + tempdirs: Vec, +} + +async fn create_test_library( + series_count: usize, + books_per_series: usize, +) -> Result<(PrismaClient, Library, Vec), Box> { + let client = create_client_with_url(&format!( + "file:{}/prisma/dev.db", + env!("CARGO_MANIFEST_DIR") + )) + .await; + + let deleted_libraries = client + .library() + .delete_many(vec![]) + .exec() + .await + .expect("Failed to delete libraries before bench"); + tracing::debug!(?deleted_libraries, "Deleted libraries"); + + let library_temp_dir = TempDirBuilder::new().prefix("ROOT").tempdir()?; + let library_temp_dir_path = library_temp_dir.path().to_str().unwrap().to_string(); + + let library_options = client.library_options().create(vec![]).exec().await?; + + let id = Uuid::new_v4().to_string(); + let library = client + .library() + .create( + id.clone(), + library_temp_dir_path.clone(), + library_options::id::equals(library_options.id.clone()), + vec![library::id::set(id.clone())], + ) + .exec() + .await?; + + let library_options = client + .library_options() + .update( + library_options::id::equals(library_options.id), + vec![ + library_options::library::connect(library::id::equals( + library.id.clone(), + )), + library_options::library_id::set(Some(library.id.clone())), + ], + ) + .exec() + .await?; + + let data_dir = PathBuf::from(format!("{}/benches/data", env!("CARGO_MANIFEST_DIR"))); + + let zip_path = data_dir.join("book.zip"); + let epub_path = data_dir.join("book.epub"); + let rar_path = data_dir.join("book.rar"); + + let mut temp_dirs = vec![library_temp_dir]; + for series_idx in 0..series_count { + let series_temp_dir = TempDirBuilder::new() + .prefix(&format!("series_{}", series_idx)) + .tempdir_in(&library_temp_dir_path)?; + + for book_idx in 0..books_per_series { + let book_path = match book_idx % 3 { + 0 => zip_path.as_path(), + 1 => epub_path.as_path(), + _ => rar_path.as_path(), + }; + let book_file_name_with_ext = format!( + "{}_{}", + book_idx, + book_path.file_name().unwrap().to_str().unwrap(), + ); + let book_temp_file_expected_path = + series_temp_dir.path().join(book_file_name_with_ext); + + std::fs::copy(book_path, &book_temp_file_expected_path)?; + } + + temp_dirs.push(series_temp_dir); + } + + tracing::info!("Library created!"); + + let library = Library { + library_options: LibraryOptions::from(library_options), + ..Library::from(library) + }; + + Ok((client, library, temp_dirs)) +} + +async fn setup_test( + series_count: usize, + books_per_series: usize, +) -> Result> { + let (client, library, tempdirs) = + create_test_library(series_count, books_per_series).await?; + let job = WrappedJob::new(LibraryScanJob { + id: library.id.clone(), + path: library.path.clone(), + options: Some(library.library_options.clone()), + }); + + let job_id = Uuid::new_v4().to_string(); + let _db_job = client + .job() + .create(job_id.clone(), job.name().to_string(), vec![]) + .exec() + .await?; + + let config_dir = format!("{}/benches/config", env!("CARGO_MANIFEST_DIR")); + let config = StumpConfig::new(config_dir); + let worker_ctx = WorkerCtx { + db: Arc::new(client), + config: Arc::new(config), + job_id, + job_controller_tx: mpsc::unbounded_channel().0, + core_event_tx: broadcast::channel(1024).0, + commands_rx: async_channel::unbounded().1, + status_tx: async_channel::unbounded().0, + }; + Ok(Setup { + test_ctx: TestCtx { + job: *job, + worker_ctx, + }, + library, + tempdirs, + }) +} + +async fn safe_validate_counts( + client: &PrismaClient, + series_count: usize, + books_per_series: usize, +) -> bool { + let mut passed = true; + + let actual_series_count = client + .series() + .count(vec![]) + .exec() + .await + .expect("Failed to count series"); + + if actual_series_count != series_count as i64 { + println!( + "Series count mismatch (actual vs expected): {} != {}", + actual_series_count, series_count + ); + passed = false; + } + + let actual_media_count = client + .media() + .count(vec![]) + .exec() + .await + .expect("Failed to count media"); + + if actual_media_count != (series_count * books_per_series) as i64 { + println!( + "Media count mismatch (actual vs expected): {} != {}. You probably introduced a bug :)", + actual_media_count, + series_count * books_per_series + ); + passed = false; + } + + passed +} + +async fn clean_up(client: &PrismaClient, library: Library, tempdirs: Vec) { + let deleted_library = client + .library() + .delete(library::id::equals(library.id)) + .exec() + .await + .expect("Failed to delete library"); + + tracing::debug!(?deleted_library, "Deleted library"); + + for tempdir in tempdirs { + let _ = tempdir.close(); + } +} + +async fn scan_new_library(test_ctx: TestCtx) { + let TestCtx { + mut job, + worker_ctx, + } = test_ctx; + + let result = job.execute(worker_ctx).await; + println!("Job result: {:?}", result); +} diff --git a/core/benches/benchmarks/mod.rs b/core/benches/benchmarks/mod.rs new file mode 100644 index 000000000..5b0f809f3 --- /dev/null +++ b/core/benches/benchmarks/mod.rs @@ -0,0 +1 @@ +pub mod library_scanner; diff --git a/core/benches/data/book.epub b/core/benches/data/book.epub new file mode 100644 index 0000000000000000000000000000000000000000..328cb0dc90fbc996942fcc30b157e01456582ab2 GIT binary patch literal 189886 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

W&;y$P)D&y8FZ)due?r!8W}%rfmt{Ms$wM$jaG? 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 E0CC$(G5`Po literal 0 HcmV?d00001 diff --git a/core/integration-tests/data/space-book.cbz b/core/benches/data/book.rar similarity index 52% rename from core/integration-tests/data/space-book.cbz rename to core/benches/data/book.rar index 37bcfd529acdc6a50c9152a439b95d7cc9d4906e..66fd3f6b5e022f933409da8436b897f7cfda9f76 100644 GIT binary patch delta 14432 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%0A6?%jhY%kkH{Jjcd*^B-l4zUwXkGNWw|-r0 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

W&;y$P)D&y8FZ)due?r!8W}%rfmt{Ms$wM$jaG? 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 E0CC$(G5`Po literal 591584 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%0A32>_PDyoawDa8uaX!DagFR?2CAZorgNpD^ zmN1}fPh{+cB-)X{zIPz?zDh#;LGi1i@R!O(MtG7bhUqPQtFBIoi{4ICM~H!*T>%)X zpfOJp86#cA7hpF}BfesW~%C3Vgv0#r6iI(U=rn+Bx1Cw*O3tEcFVU4g{r?v}8p z;MfBtJtt(CeuP2nQKS_dTBT?puJe{|SI6Aa;q_v7LwKdmkh(4nE?E^gDeAH-4~ye~ zR6t--@oqmFiWR`RWN{+MNxuh30^k6R*`QK`;Sh6MWdDZQMXf9gDGOcGXXy)40Nvm~ zHs!z{*bht1fV2^GrWy&h`g?S~IVf(3CZAiw9>7aFAa@_|7)C}`d-RXid(i^5a*S#> zYS(%3{c8VR@y~B(!UUTME6llRzwT3E2^ez;{-aN4-ApC5TX%>AHh@$ht=PMa6y~EF zMM9%8ooJ+DJY5V`Rk|0&M2m>?Q*I zHDgBLld;q+|Dhanjj{BDtC2=whhb)K%#4`q4}x}Md{+g~Eg(u=X#XQiw z^u2eN67w@^#5r@7Y=-x_d=}sR+eu{dC_OG=6|bhZ{t3Ob9d+D1mq#IFf=MGjN#4_* z#pryEyIe}dTA32tUEsl+1~VYTgH}{z96;2T66af|DY325DH&4W5*)04AuaM=8rsSs{tv= zzm-ue&(b1nmx#OqEOVf6@ET*ktE%_8p5TEa>kbK!TBO zP!LgARjm~w%b&g=0uS(7lT_a>oE?e>+m(K-_t73IVNL9ZtTvwmC_iOJ+=c9yTqEG% z<{FHt{b;8bwQmW|DN~Dxk*lWLF_-LaP;GQjHKNx>*kbqHPD(;Lj~i^uL=mFCw=2W@ z+~T(4#?zRC9h2=jaP7b{W}Nd{TP^*(3Z}*#P1G5-3LT4b&$B}o84w>CEftlGjwtv; z4VqZT_=q%n(o#o~8DrQDhdTsg;eVfcziJ9CqOd2@l$A36>FL4Z~ON!Yfe3NG-a)0W^0+HoL?wye_NL>kuPk!GXnK1LCL zvhEN<=ZcKnrxihgsqb@Ry-T2qBwNd|(IIZnSV&iqj2j++CulXO*+Wo=EWT<|RaUzJ zwhM}~HAua5R&XRaZV21uK#43Ou<2F#gf(&L`IHv-xdkR8rk-qRFE3w4J;INv9~WMq zAO~glvet>G^Sk)qar>WE83wZGwsDU&@ZDPC#8d<7NuF*18e$LLH;Wh}x>VswXsHF1 zODo`}o(f<7Yb_2DwBfaq;rGp$EC-Rqpk~dVNoAS29_1xj;Wkjm`;P#%X|NO`L$l_q zN*`_55|QKH;MHtEVS-4Zx_v6BfNADb4=)#(be;#J{tXIYS~YI`Zy{ki6FflFIts}k zl=CIXLxmxKfzF(yvGNGne}>%d)JZAp4}~oPIPmGEj@%w(&HqG5$}#$v;4w_mCs76BFzC;^ z6;oA{S)s!9Sq1=&B~y$EF631C%S(czfGEQ=&~jg_cYYPLrKCIp#&#mI#*t52!#v4| zz0X%Bys1Z#%Sw$V+A%I16v$W6_bqEG23ZpP{qnBlFPUuap3}XW(+yZ8I?g0+dB?y~ zkpr%_W{_E_6S3q8YCMfgCk_9k6UJk$(sYrD7e6pS@)>Dhd7EzT*DDq621qCoKDdz{ zPC1oMtu0c7OZ26|YVY>bdy4ai8`V|=taBLG8ol>twVO~p*2#dYEv$vZOw?Vp$Jz`_ zb*>46&71?97I9G7UCZ&h#Kh_g!QHmFs%9+1cgM8?L$#P30_Bo?8Jq=4_W`6+h!Dku z=sCyqD1zpfW434-0Uv*SQr>FDmLcs`3pJEL*IwsA9NgY zd&+P+FT>UkxA~K$Dx1`#V~@k($4!d6-L~YlKCq^?I28#s?H664Tl=IJWWZF(B^XK3 zmPa;6##pPvXFJZY4YIK{nXX3910`d%ovJyJ6M>g>*SoO4ncG;s5o@`XBy@=dMT-l` zQZA0(m*i?v3?cFNgqvVyX!Xa=ySO%;I<~|b^XBIg-w&gZG89f9(@RaJ!i>2}s!}$p zC@*Q*KuknumPNscV&}{jAb=UU{`>a(r4nC3ft~1zUXlJAg}yW;Hn%Hcoi73Zeee7N2{f0tR}uO3j2*a^}Xb1L2sB~!;W38FG3Z%W#tsX z)&?A8Qc?OyP!$waSW(^}n?BE#9V8V7Dm}G2E2p4Fz!}AxL__38TWmy~p?V02#jlk9 z2o|bnesSUHKJA+*jLF?Y+3`VplH0h%Ho|r44HveIP*Zf}Z;n&1lX8X#Y=SGY6W-uX zPx`2|(dKM`BtAa>gnnn=lH;%&V^ULJQfsj)zF_`Z&8lNhnzZ`YAsh*cEJLoNBza+9KCU*HK1?>Bs~& zuud>Wm(9U8a}BMO1Ky8CLNrOlWl~dJG0P5!JiuOp#!PCCn(ZFzOJrHFke^JzL^A`p zflyb@>KRmGL3TknNE1#qPJTr+vdTr?t>vWQ+BGmOq3cG{jFx{+I5iovgY^=F zo2-Et_o-3A5xdsm15ODBgds(fgmf=-Cix$?tG(1_B21z-v%iAcfk{J7V-eMcw(Jwy zRxSeX6V6|bQ)XtsKF~UIjStIK*X0{GCaosOQ$Hlyrg$?CP~M_kRnA6a>d&WHjt%mR1PCV1fQEu)YP+To+gkp3iZBiTxrxQo-pAgbsPTg=6hSr#+~Sj_ zbT7)&`39vC1aN?zY*Z>~t(5C{s>vwN$Y;NL{yl@6I*&RQGRqccyT&IS?C&*1!yN7- zI|{5F2D1lNP*ZrXO*GuKb3M>xOS^0Tjsx@g=x&}`XESL1t(b&+_ts~x(ekRRpq(KY zWm*IE`42}}V2Oz9sm)?Qi@Z5sIjmz|$AXN~{C*VaYCevn)LY(s#ji=cv9aN-D)p7? zsFoJw$SERzTM7<>CN+y)HYM10u7RE^_yQmKMX9ZLhk$ZVRMNEH?hN zcjKnm`QChsaD3Z_a;*z83NQdx$F*^xdEUgR-gh_dk0;v~R&Yqf(oJ@=3%wfa=f`p2 zLO%C(-=MJr`TQc=w5ve!ql((Oqbg7FHpdtZU6OX^-<0p$^lS^9R&KW(sEo>-zwNsj z{6z_V59kOBR~C~_KFh+LesXLv7W;ZC`V(kL+THN(L`{GV#5PyT8f$BHUUk*5d%Vw~ zWSNkaSLigkdsT^;J%-xvS!qM2Ka@-ttQi@0vBQ~f)GX`h&T0+MKqY>C?NEeyK0Qf5 zxSO~i7}bI3T3rkTjc3GA;}gl-dSFybl&lzcnvdSdx+lBV;P43BX&z6x4|n2=gk*%E zSZQw?bhoPo`*lKzl9GJ{utfk<$hP^)bzg|-kx+IznSZWwH5<`(ITDH@ zs0y{}(kctIkwdDUA>V`Xvz0#u?bB4sEl%$ z+nRg3B+%#S2(xy-y)E{{K?gf99U>+=9;|Y!rl6_^Twrl6C&v0iO-`fk>Rsfmof7$! z5ip*15tg%16=&+0;7E$FCXr00V=2$xU_Ys`j}}`^HGNd02Q91=mak5#W~a9B7n^9h zdaPJF7z$%!se5=-iSA(qi5 zY$wV@|BLf>EmG?#u>z=txTr7cx-8gsASg@ZQsoU}ud2IQ6;zfZOqUSKrfD9aawQ78 z4s>hU8gJxNBRb|T=qj1X0c$@)+rT1jBwd<_>F}YZ;gu_Bb*xw)Er^SE-^Jtvbm4yL zJO{{r6P@AwipIahbBZIjg?axGV`4agUPstDu_{YlrZVC|HybDpE~j%1(GY|lMzI#d@GrI(be^sZOMwkt7f>A*5=Nb_8J(m!AK)u{g4Ze)7fseGaT*6)WkEJ zzGl^BcOW90wJBl~Z$+rKH-1XxH0w6CA?uLrSI^3uqW`JRkjSG3@jAWuRCkzvQlwSt zAG8R3;;=vi23vit#2edZI-afEOxzp1aW`2xk>eXTaO*{;_)vX`kA;27H2U=no~j~3 zB~{^p^JGI-3n_~#a562r+h9pgVZ@=HS`u~WDdzG?7}$&ahj#X^d1c8-4YalB<-GX~ z^@1Xj<;XZ8q?n=hZ(&r%w&Xi1Xhx5qPy zw=5oIMUcQ4DUmDRZGU^nFQhS|8-1?|naZP5kEP7It&WSKI@q2D&?7ZpOnZUPBKm;rzEQLzCVo~vgc6d5 zZH6L#yE9Wq3M~KEjm@JOxZ7td_-EGjBWcOfZ6`EcB)ubcAF9rmm=(!l-BkbYbK?$& zLxJeOAcp4zu7T$(WbRs^b2q|%p-eoEKS?0nUX`*IBDvuk%(3*@nlE|2 z%`_czSW{uW+Pn)CYbp#FdNCqu#BHxV(vM;KKSo#P>yk1@P1z*Z0b2_mSH`BhHFI!{ zVq3p>C%rt{%*PQ}yc<&uqn_Gb&5~4Q;B$(dfZd;UGkxAM7d3-z3_UMjS)t)IN%yLj zd=#t_a!c0Ub#u`j&pbGQ_dAV_{Zh15%ZI88T+Lqw%JSEc%|UGlXX^YyeaBox~ZZLE4yi!fj4mk zpJ?-(MmvW@{Ep z=WkDa!=g7X1Z)D9z#9RO+!Mk$a%#Gih`mN#M^wI27v zLFXqkDTTRU$`x`&1-Dlo4H$dhYM5SHtftC$Aq3aRMyu=Q&Cy5jJv`!+nr909Sn`zc~I zC*7cOs;NmX3%O09|FH(IS98;bTMYDJam~5n<$c5&SefO!DP-ttja2!LavfZ)5!-s% zL$a5%HC@IJKN1wJ{VdjkJV+Pz{q19UEW!hsMjT_`4TPjY+C-FHzsk1ds#BlJT(7uM z(#!nxK#+*O4oXxgS`?%F^-IV12{j3Ls`bNstd}=WVh(aF7UbG=~o?Agf7cNjAb=jOxr|jbeZ}gW4 zyZcufg$}{UP%;2o-Z;9Jo5UqoCS(Eklu7@HXXp8&r9<2$D`W4nzH z&wIxUa)_O^b39)if+HePC7I%AQI*ROy+%&0PQRPSE0b3ur`o>}Q$(pK3qAD4#22`S z;}&{70Cr<7vvv}RSieYN)5e0+KxKQO({#)usvf*4zl7^hj?RS*dvZ|f>^rrZH4}=1 z6e^n!8QS0zv}}3K`0Cm6IlK)|&OqqlPvh$wSDGLXgUjhteQ}pHbJ|MC)QQNM&B)g$ zlJdf`#YLfsIvDenO_DWHa$MMr%2yW z=ky3MyGMCat4wz3oK*cRXC#LoSgw>n(=1AMY8hna7Vt4doJdgHln^aKyIiU(*<5Am zV}}cAB_+vDp6N(~vxEBGp7p#LPJLV#OC$>~wk=l%e4(}1a>V21z4q3bBGcSm4_vUxbw>-V+9VuA#DC7$&nm{jv zq0V-%pU_Nb7r;wHVApt4|67mRC)f1j|0+8<`-koVFaSW+f5AlP|I=>J&f3o2+|KrY z7rjPx;J*0#r%q|oO(-Me}z8{ zuoM$iW4rkjo{bc<(0kn;OvaC=4HX7aqmnhO)(ATE{3%uhDjfznRHtj#GM|hU*ck~G zjaaH2Yqdx2ZCfH;Q{q{Sy49*x?+aV?yXG-AX*e2^3#bFG9u5zjt2HL_PJW=3A9Zfd zS%dD=(O&xBmrm!TlP<6;h`@sGf00)iCMYat1v>Q@`q_ZvVf*T=Ywy z1E71m1jG{bYf1nYQ)m()+Vgi&!xCynpFOoMS{5n8Kbv>Uiah)x^la3ThufR%YoJ7* zL;d!;%=|f^?G#cO1z+Wi865RgMj5M!2Ry`V{Php{4VWA;T)TgnQ zkRCHMC^K5KJty3Fi-!0kp*%IwwG`3wAH#--fAp8ZsBNEtysj6-?X3aNSo4} zsifRf(-w>++liw*?5Vv`iR)S=^IQv*C2}|EOFkqt!Lb1V^X3aD!FBVe9{OcDql9|?imZ|lOi^q5N%GFnAgo;RN_ zeitoopGc^9e)XY$KV~uzVJy*Cyn77CO0B)X2Be|g5kAMiosZ#p3x^rSKcWLpi^p-} zQ?ZUE1!5tdizj_?_GK|m_EcAxw$5a)yrX~<=B5N>J)J^V-H>JTH$9((4!SkT>NxzD zg#@7PqTNc%;ga)g-atc*mub}%`C83j)1u*KbtrhV{GHapTTKCXw?oUzi`qz;zv7y=JQ92C_bUD z-?Uw}uMaGNe=K{{vw>#v0DrP>{W;+tA)mnb3Ja`2Ql~@ z0KoX4WAOiTUH#v4@Wgwn_Wv0*@i;NbmtikB? z;qk~#Mu&UMx4iSUsOt^S*F|mEbty%q>+9SWv+b>~=j(lCPVZJsJ5*}xps4GI9aoo| z7dLJ!?8pwc)A#ND7Yxt){ylbWdqafo&_FX!Maw4~(Ce>^ z4IP=SoBi2AtLN+dmagw(KWML)9JMX208_S8ukV23?(g%VV=MUOi2ilSH2d?toifzi z4W``&T}UgmH~Om93)8u7Ctt)clP(p>{pBgIXM0Tka4)Y1yQ(3!PPdPIH`qn5rQqGC z{4*`?m4)sz}M=z+u1%LAa_Hi}O*Unkb65>A*;^pOrjF6={57eg{96+-|$>#9HWhp&~ibGEmh=1S#0 zj6Q3?(kCpZe^<}pd(?Dk$#=RrQNDjzSf36IuTw)+cCQB1t~kjp=v{`}V&?qlm5iuk z^yf^hN%b)!7IKYM(^ z>cJyTu_$!dQS*bwlPU^oatcPTI^<#h7*E64mgtAwL^g1?3fOO}W_rsD;$2&GAb3tn zZVtnQ(BFnEe?dNDXsj3@EQbrwzv?|Sb>Zn3?n(g{&l@m4eYsxzB1Sw1ad<_=O48}p zk4jytt-hASUOF*v?5^E@p6?$W2+q~b&Ag&p;7Er3`B-!z|JmQah_4NKC**;+kb9$&te-Z3*2>gR0hW>@Yg&x(loxl12~Vt*G;@+$(%M z!_2y*-&W+CAI9Z~ngOEFUvXA@AY`atb&&8P=?F*f@(eAOYI3PKdkA=L(T|qozda6r zY@mr+3PUIy0p&CnTcs~VxLB^t`_QgDBcEIp8FV$|t$n~?`W0KXsL3|%cj9mHip8WD zu01DGwfesdJj2!_LS281D@{Ooyx7U ze8YZz55D>a&ASvL84d#gBatF)*5Yhhw&LR1e`B9ieT5!yn=GQYDp*mVz_H(}PYfD= zB)`^We&E&QdlW>2zy2+I2I~kp$l1#LfuqzlETX(tFNw?q$8Zajx!UV^cl(}~b~cAF zaS!*hDO__}&K1Cx8AoC7t&ZUg98!8$e>Oapv1l){GOOqayujm*wktp2_5S7A89-MR zZaN~mFJ6Y-{eh}fN+w-f>W=hc&B(U5jiB<%43<=LU{O3&_9N*DEysIH#mv|4vpVr6 zw~j(|$qRtf;6_ww`mPyeX1)6#pgl=FQi7U4^>U$ZsmD31rQh-MB;~InSQUL}Q{O0E ziy+C;oHC)-$>ctwX^=G8e#ao`7{rLpdXlUh03-*amVCJng3? z31E$igRsGPRbD!@!)IUw^Ta&ftnLwfYLxGrU$sLZvA7g8i;c^6p;)bxuicC?k6R>@ z3fPdG1&Z(?+jX8WnglSX18rx|Sh?accNUjC5`u}w8?kQ?dRw?^MSCVuA8BpZGA!rhGa@b3uBz~2#&bC= zdJKk63LOR}&A47$s$DBAHI)eg@3|&bd@5N~FZyhlfE2XZ-g zYY3k)2+sWRfb?Nu!8Iy=9D~hNShQ0b&hpf(qbcm)VpboAIJzz@odhgfl1#{m* z^E>k1S7*=XmLLR}k7HoalWn!Q`VJe5?Z~h*IBbs6jwlrwqugjoXN|S?1Gqp4+mtrD zw8kHQ?u%JT&+KWw7y)A+n*nLOZAaB%?3u*xpIXaFfXE*Q*H9M=eg$yY#9Jy4$uqpY zU15wa0MKd1XwS0Kwm>Z$5rLh1!w2fmX@y}sW`Z$=mhH^4Nh4!#uHi>WTi#>cEL(*D)Zb=KEv z5bd=ma7$)88HPTv3cGFG$~@{1MwW6w8_Z%5zZwuWKfT>))1>Rv%eHK^heHT2?bB&M z23@TgeoYM7pIwI9m>g`gBafb0{^RAb>ni#;WV+|#vWI{_E=yj;GD1fdtp2VIVg89e zaa7&j=6Dl)3`Bc+g6%86Y>6I)8N@OVz~8(ef5d}Sq~TBdnPNd2pD{A%@@foiLhjWYQMM0-9vxv){7@)Dt=-)l^FbjK{&QWgoM1>Yw?qMVl%k?3Jgj zghO1pc`9CZA1A>gu;4+BB9V4Mm9&H-N-Wj>85$1l@*U=EAU(Noz5{oYTXXm<{BQS& z`J|d-Ei5opZop9+Jv2EL{v5rMp+Js8n+sfh{WPyx^PsE09pk~ekPH2rO#CHsZtIe| zoq9pEJWe_$xf& z4%HUJ$_VmDxR9FKv-+28)h;EjBPUSkv2(}~JmC4GClR71+#W9Bt{{#3i5iMUkkK?Q z=#?#dfe%2szTk=dhIX|D=}#kXW1kBYQ3wsDMRgIzc~k%*zBSyv+Q zh>ZRPOlhLhY&Fe%T>T6!*-T8AE2pD~DO&0RmT_}I+^NhBffKr2BQF!d5TPB0CN))T1}4AY;57}|J~$^!T5HtF1O)0+XKFTV zgmHkEf#{MjoI;ZYT?Y7jsF@~lzwQHwbYU}8HaaHkXN`=aa#5Hg7l|(E%uro9}cpAtT0Bsk15~_g2;zZ1oX5g za5jQsSw81kAmv&gr<5I0&PSalC$wYEQispLLkRvP-k3nVs0uz&z&LHgN|GA{9&-ta zJcR$9X3;ty4k)ID(8hKjR9A;*meu+-=7ZN4k)a1td>=@{!n}upRuFBb84cPo#7z0N zjR#}_+Rs~~gLe(bl98y#L;h}^Vs(->4WEf?2o`HB2WN2x4aaG=WvG$<7hUHRomsFh z+H}VqcWm3XZQJhHwr$(CZQHi-$97Kc*-!h7aqDf3daU(SHNQDuiH|NirWES|#rg7; zY*31xy|WaJsOrDwY1?@xi-Wm^1&Zv}xr}#A$SDUdm~%;m7}Obv`G?OiS_H!_bXA#Q z1j+kpE&oDtEjoHCH>V(BMuUv+Cn)Mo2Kp8Fn!gZd@?GZjJEu|^YHX719`EtFHx_)c zWP$ho(p(W^x2~u=Qbe*67V({Z(yK-Fm<>6cYUrW=mcZU@y@uOv;DAP;ldKy*VX0b|^P zL`K6V@eY6j9EBnI~0!}jkHL=DAGiGo%#R}F*sTEgF#}aRIIi> ziW>72$SgC?*&2tHNEB2($D3Mrr}tDwKr+i#Alsq~GU5-D!V=9Ua_FpR>s}Uc1gb73?Mg*7Lw;AU^R~HvbVVJAfa+3&+M8K?d7JaP>a!+|I%18*q~iglW6RR6`5|Kt7t~DoL~vG8#<2$3GpU_I=lM^8dhe! zf8q3~_*31#wQJTEiv8O&pBz3Krs7tvGl~QQjk3Sc2qN!;XdkG7b{f@QT6|Fay;;Wd z2Wl#*LyBT8DI0?&lGIDSfyEIdH8U=u>b3uyU9NT98+Ro zahuIMft#5?I z;wpZtq=O;;s(27^Jmm<5-s)dtG#26{3?lwzOaJU`C)19zDfk?;xN3Y7j1Lley@v<& zppQM!!CJS?;9vWMyfrv^Ijsx-GLZoznRknE)vv|5D6)|XFF_h(Tp^}HGED#R?}I;g zUE^A!x*Rk8E+gjr9I?js*gtVbf`)JW*ut4Mu|#WA9Gl?kbda#Pf22g|ODBo{t~buI zENoj0X6Hfb8Lg5KAFSKnhSOhYm_6G}!ARjSi1<2|Ni)CHla%0x9VARbqLS#|6Sy|A9z=Iagz zq$1!fsgcPZQ0NZ2FGSO)t>y{facSThZ=o}LYhEL{f(()ahTIYv4f!w=1BxDQw8k`=LP?&R`B6E?ih z5naZka42(z+i*;qns`Ed0qbdlFF}d`9Z6mG`JlEjS|A zVhvEvRu3#V!~6QnY(-n+^p@B0!JqRKM1?$v|GJ(8HWm6Lo=H(VGSW3e2rDU6C)xXP zzCgoMWA_9^R>EL~X5b&3TpCXk1oqtQEs(VTh*9Xk$&G@*{Hs0iHecSX{zf?!zm%ue zBa8C^GSP7$7nN*31{+)NKsllab6AT59g7VLum!Lg71x)KJYW;u9d;4UaS!|rr|K}Y z7G@w&csnbKVr0k`CYU2$(zE;1v8W1;_HcCoNPqouBwUxQ{!L2iWW=2ifSH2k2J7^r z>~!fARe=1HS1!hT<+R2N`2G&&tsW_v8e`1C%<5CWxTv+o$EAsFe7R+~K%m-eQx=Mx z^U#3k60P*zA;Q;!yMmY4i^JY8;h-`rZEHycOip23RM_p394?AkoS9B})gan<0|&T` z%N){8HVN6d)zMvI5#VY&f1R?a+Oj+dD)wBcr4x(rrdx2x>;a?5${iUEH9!*Y8PUqD*DfmW~a z=Q^)OoMCkMeQ84U^AxrEedLJyEN$uCrKTH%sDTCs-_)5Lu~mKTC;xMQE~_r3Q2fW> zHwUOMFrQ@zMs0f$uY2_O*;;2XQ%oj;W{Dn)z=Cdkrr(0Axs?hpcbN^68z(a(L?6A_ z@8??J?`*EwKJzW*Z`-SvFADlEtJjCljF@|8nu}Yg-PY+v1#5z(5MJki#6815B22;g zm8-iVd0Z~!dHywKu=|-boQn&HF=t^8&YF#mwBrkl$>rx3}3=Q%Hw`GAcw3I@>wo2`vl!LwCr_n;$y zW9IqiJ;+w+wq1?Znt>929p`Y9L?Fj#2E$|K2nCpOo=vXC2PpPBS`up}3Jw zLgQ&v+3$IOtybh{hfw$Nq*YPMkymgwl+^8J_9#16GKKnsK$5v-C6~=U_>YKdj_~mo~_rw zmoJ2g1|(=CU>R5$N-Q2yG4VWN%9a@W3X$0ls}zjA?hT9fgW`_Ydy{(bYFyJM&vPsO zrsoz|k7D_&WV?4zsu~_AE}6*iS5vd!?mMx)j$y(iyWUW(b`HLML^s$?K5A&^q{X)n zQa`XWuvmA?@jC0P9S$zgw>^5OB68LZyvp%g9kqDiO~}!5*jXbKeDzjiu8gM+wAwX~ zo3A5H%uQS9ysj>Kb@lUT;ue*7B3)gz4;@V5eCcs)lHByv)u*1p6g6Jdd_eZxm^_i3 zy9V;nvTP@v4y*sh2^$bIM>-UN#s*=XZeoQoGk!K*QmFEpVPQUI*(_lGRrIF?4Fn{V zZ5s{~Aj9UIC1{k56!;LnwdmRr*(4tffPd2G>D@gN0TA3C^Czh$ma=Vqu}oV94|l&> z3(dRhn)!|QDt+Kw{EM4l8_P;!L=3uJst{Q8r}!0rcF5+g*%!I9(+zEBdpybs@d`MBsEbMenuQHOS0i#(mxvqe8 z%oNU=n*l!^SAdL@X4dP}7>H(I$w@?u2|x`t+HjziwwyGS?(jD63S+JlTpj@p99Rz{ zEah>cMP4M;D6L_l#ZS>r{b*5xy~fIOkXlq4nZJ=O)v)2lQWE;Q zE^U~FYMk)gkrQiqZ#Ve4(qk*l-D0(H9!ATI=J!CWD1iBORRe4?J!YZ7jNz%wU47?G z&_|5HHmVN7AX`u~Koy=S8eAX!;EHxs9!K8rpG=9RamamI{CF6s(Nf$)f}_4bc>W68$0$(*q_%Qj}MirV?6lcx-i zDJn67k!>cZCe&>)*2~mXPdrR_9EB!?jG7`CR^2o>PnH%Q88YOO?)uyv5-+!KWl`&3 zBpk;Z1~eh)$kkwucqsIj4>xHlnOL5jY;lY{E$cw&@#=EzTA4#eoXN$oUQSNy6?{oB zPri!(MQMrCY<#^0t#yr|wT!9PIXA9S-ALmGY?>vJ8)r2#2qfU=6q5j?Rft$$^Izal z4kF(Gx6bUUiesXQFcmzZC77NkG%pborUM>Mm(wyLJ48eF?v4Usk9;8lAQO1z6z>xs&jAd$W6_qq$L%!CT z_diz_Yo1(EM?M#KV$>Q5VN4slp<+(K-t_t|fqiqh?+TqsSr$h{cetsL2%TVg7~xG#KKvs56j;f~ zjcU#T!R1m;R^F3p3VG{kX{RWS2%K=O)v)vUvPq??w!TWI%ZcVgxNu3fUCV_iM9>xj zhJfi>Sz8HGj8)PiV2D3X5h$C6T%|kmVNE=>*y^;fb9q7&>`sZs(;!&y{f%$wCreH* zW$b}*qN8h<6IlF@>MnX`M`Dhy+t$5?Szq(NP?~Z*L}g8m87wKf-9feromUQozfVXR zWm@ccGE1B0N?bpmJ+=8QNHy&9zpOa8O<~lW5i=&&UM8>7+rrdsUUuV{#7uP6eMD#G zPjj`HSxqRHSK|QYJUjkdHa5WtvJU7RSt-UD;Vzle(XP0tR(|9DfOyC4rTb}*{Ho98 z=1kh5e=w5!X_EGKb9NcN()jTAnX|FXo1h3`!UORtW~Qs;x+W(Q-D{a~GWavA9BJcz zTg+{lC0X^C;wNJNb`EVWqLAQ*aHC-0u}(C9UCbRXU^X*qxgzu40jv&ClP#_X<6e(V zWPq5k)h-|3U_ndkYs?=}giTHF0kNy&=@qWFNA?9ipGxb0y4-AnDJ8a=oi^TZ4qa&6cO+i=#h?BxBZk_Ah|ms$)*enI$xWLx9eIEh^ph|z$Eip@0_#)oZVV}b9w$v(YxQ&txQ|f@ zO2gPd!SXOu_FE-+(odpr+7|Fj;>>f%a#)xy`e8PaxNLy$^2rLFFvSAW6LOD^ntKyw z&APf$pIXkUz)4Im^HKvG+e67~(lVK`kX=O+05lNeX4bJ>4d5H&U`smovDY8EJFbCH@fR38aOawWkoPTfm;70zcZ+4h> zsu0X_cT3=_UuJhXS6R!01k%Nki=Qt=S#*gD-4kh{MayoCv4p3GDa%12O>T&R5D&XYFyu7nHz?;WS}~q< zOJ~>RO*P>TH|2EQ+jNzo1+9ABB0tb_i8(ioATa29PY5yr^k`*98*$VF2Jo|x8t+9p zHYAimQCemqrV_9kMZZK4_DUA@oTii0oyp-tQ`{`9Z0)JXeb5v$Mnr$*Uo7S!Dk7=U-iVDH(x0 za`Yu#cW2>NSQRzL0@=HGN3*X!@Bl|ySCJU#?n5)*lZ73<^%^akSEiMBZIvZ>96&5!`Z z!*_yFiEu~VSIuNFL0cm&?eF@d*R|jMDTq6ra%YQ^c|7!($AlV_s zn&`9IJ%jzo$6}UOK$&YM3hx_`Xn4(((b%w4il!R=RA)>`IaR`#6{BjNs%22nUuDHq zp6d$b)?ALR-C=by#ol~By6#c0EljoK4bI0@XhfVb8=*cLRYn%Da6&3*v-D+lH3RNm z>fEi6fED(n=cM5>cA)pcqfed}*DD|>vrq|*9f1$o5l?pr2%B3zy7xW&UwL*_d3|0- zpMR!hU%!F>5A4zzZMsba1Z1c4|ASrF{sX&2c}~=0{lG5mkH~9ks8>sda|FMBg9+r@ zN)wc!LEjPORjt7rXxXlpDFKFzso7KWZRw%urj}`uSRD_4?W{{pkzuA9)WNw>DyS zyEo&G45U0ij~v`yy<~K(USIh<4x#F9`s_2$T;$UZ{4eIB`oEY9t`GClqp zV(Y%AdqmQ1ASHyy5+JL~{XSyT{j%SpixRO>QIGQ<&ZXz=@l$a#5%8{mQ8LB$xaX}5 z-FJmyyFr(%t^A~{HuA!Ds?))rFi6*<1-rXM`*n82lZgEFS(0MN&9b-D^MkW^s(Y@6 z>>IKNf4z>>`?%Tg-sTry;Y4tYd@MC|bi7Z|ZQ2;%Ufql|TJKq>Q);%)iXE#&@R-X&>giyo68vp1m4A{aQwL8 z?QiF6Cb~Fm9XtC;b$wOJn_SPdIn=mm-3N%ZDjhsB;Ga=&Jv1!R?0l@vPP~z=UDo9d z8HR9C6qvYDxEp^3_kJ7x>5-9row|dierQldo#^?F>iY7&{YnW@wQ0^g3$+Mgb5cfV zd6A0-?Y;y!1=Kv-VdO1z7Q+n{Ti$AK@huH}f6jcrosIac96i?FK}8?MdecU~1;ed$ zzReFA<)t-x8+qk$hlp^<3^2uKV>j;VOQ%bcf`YleFhn(2nV}xBz)*#RK@T z`rU6aN3Ax$hkK&D5Z|lWtNv)2Ijlg*@cvYH-K!1e>|oVEKS$M<1?L9!I|mk~bstDQ z-+wez)#2?G0;Lb#(z+oLd&oR}nvDJSAnkdIzZ{~srcqQS(|!8Nd9tql#j2gu1NPM( z9^u2!a*4NvMja!En2N39t=Am>Z#Vb-DLBq2C~=`yV zhwrVG1BNitL2&2n7~MmK_G}Mzn-|7(Lz?Ff8vTNhHr!iMm}=Qx_K`>@?*}{d+h>6`Z5Sxv>cTqSa5Hsgsz|j zC&KrKXL=H)m?eBg^GuC@U7gjH(ZIl1mEm6uh=i$i{a}KCCwbkoF zlV&xw1lt20$-98fy^4gXnbt+kUVV(fH>2~(SXs%-Ef6TW)?9*u+({Xc$J(~Sj2qbv z7o*f`X}Jp+a>|V@5QniB16Fzr!8oTwi?~|YVy@)kL&t1W`!)`7*2cC;+Av^9c<&l9 z`Lxk>2sUTJ`a+fxPNVN4M`9Zq2Ql~#QZYLu!9TKUT_N`Rxz3X4sQ98y0>a1YmSuhz zA<^uRJys={^P$~o)ecrZx4ew&x5Aq^lb|+eC0Qc}&eT>;&^}g2aA4Q8&4}a;3DCHY zNv&WdeS-F@aKlgQU>kWSbqqzesm)y?XyTMUgAM7$LXWu}VI zc8F>=TkW@s=bq*_*W-ZFM4wFP{6jYJ;Gbgj4FQ#mq#iha@C5Wmj)o?aLn=%}46%1E&M8rzbZuOyE@1ePBv6o}1-ty@+k#ggGxt2KxOdvilzd+aT!bpyG5P+Tv($=BA{}wYZH{kb7aj!8*JDj7rwldcimIk2B0S zS^B^d*uHj0m+W`>jRfY_;(S1-*bZFD4#8wd8xhNG@ z;8=JGGJR*%S{e?Be1!(%7ir!1B8%vGnmw6Dwn+6Qjdej^P4LhT;TG*41&`-95bD^q za5_*wj&Nf1!z-40_e;`FF9$FUgAsx8(rLo&(%+Gii(08IH3kUu%m%wWQbfGxl!186 zl-HFfegR+k0Vk{+?Jqo#iAqq>`6N8yZw3tojWbel`@UHH4UQ0WgN}&H#=?tg#D`v3 z_`~nqiZyWIy#RG@IhSMBZcz;v-e(p<(^vvf>fLLPpXwI!Z7Tz~!c5&^!L+|&5=@lO z(DzFnP*kaoQQ-wdelEt0*~?rFEH_>vmY5($DWQ1kJ_B_j{(cmI+qD`f1`(j}yk*z! zbRhE%6@py^?Oa0&O`n1wR5n8(%`H5d_I4mWPP1F!dxp2&#+A^^-8$TErqoPLj{jRs z>0oYlZJqX@p8C7_6*#$7R3Sr}+3VH=*3*ArH&zpxSQ<+8%>&3UtQ%*mFnTh|lHPd^ zfjOCsm_DAE_Yik0?r!9I_u+Xc#I?|WqK0qhcBEUVJWx4E=5fWnS4w#LA2u&$2kvRZ zvhAFoMf*{Ge_ZP7icB36(hwDm+k9C?7#5Q2)Dq4`Q@{S)vheg!tpL83TDZ5;zdm@s-!tm3K$%N_wPu3l zze0Hfn^=~Z)LGs$#9}}Vnt9n`Kc>20NIGmf0mfYS$laF+DGiI8w$_p2BP>tlxfV=2 za|laeyin{Engy}IOdL~mzErlG|I(4O8i>UnO>JWv7T{1Y>rB0rfyyB<^}pocP0`S& znTX>~IN*_q0K@-#geK_7UeZNj^F{#oyYpp)T2Oh+zq>>++t{yi#_BZZAAlTL^A31LAi7HfmJ&f+c znUmj$l5}JB#>VlB2_0fdMhBuIlpI5)l{*@(75|Zod+iG;_HrhEs@WXU<5!QztD&R# z#m*;R2~qVulU zg_!t%mq#K3Yc<3Y%Tj~z|M^wHG)GC;(mN04_fXH=KeGEJ{P%fSSd*LG`!}E2?;I| z2JYT}uv;Y!wsp;w?bM`dgW60Ocgu5`UMIjUi#%ocnb@XAo|fS?bol72MDZmhVCXRV z7lg;&3h{-MLRt}E7pKfCvzUfUqXz3y_I$w54;V2s&hpL!^me}EW2ox7%V{Kxdw+$% z=0H56>z5HNk%Ij;j!bz2pJrDByUh%A75Z+c_vI?W*@!0CCWNw-eDh5mS|)+2FQcfH zE+7kBQn}4S@E8oYOT`-DK_AvxHU=1)(@e6Q3G~8^4b}+?bH-Q4Tdhx;85e)SVJn+(c$u2Z1>if2H#Ojbc!rDwVL{yj(7@Dy< z>-jv$OueMU?=M(6e$*u+_8mhG$>ghRL3;~%eTcw>Q)UQWmFuX~e)EnQqjWs6c`$pn zppS@2UPmD>lkJMtfG7Kh`LsP(hYX<*@!!L#i;>~_wuI*<&ZcuXR5ZK14F;du7taGYhXd$(68$vRsKf%QuNoiz z&vZ6<mK-ce#siGF9e zrn~@19cCPIz={kvUeJYHD%TuX*Y@wKPerW>xzA`N&cxCqj(>ssm zEzciFdWaKIei117wM{4GF6NL9zcg9DpfFJpD3+bLB<5ERu{%4Y-Ow3i9t7;LAv}#f z-LvR#O7!+7vE zXxb|mr#SFS2{j8EuWr?de%$kdT*FK27y*X^stTTXe<~viO};9@vs#(52KtKcl9rpW zCjpd8mh``BWhbY$@UE@~X$M9Oda#3?5>0$> zy6B?^e5lLr@^9LRA9CyK5 z_h7E1P?)umr7cBvGGDZo{`FK5?>7x|KjCfQ;x~|MA}fk{-KZzkXGtA+>Il42K-SjvoiA1&?A@MP9L1s zvW-%^=ONjbXEhQ|8)JECrS+L6=Ey{T;wk(#RoLUuSj$c^BT539YQIO1Yw-C2g zf%7=O7~(uziZv<~1ln6{4Wr+-Bo)gP1^yS}`^H%PhW|>hcqR5z7K0UUOYTfO|D(H& zN8K_UdwU1)PUx9qAD44z0pG}pKjPtMe-}RNxOJWJ#bJQjdvtIoqVCLYZm%TPO8ny| zUvOG$9PF63H6@1EfWzD3ihX8L14(u?W0(N9YIjLDs=UWCWVfz}jjFF7lxIIy6rmFs zn!YUGiiBD!!q3HsMm(D|inL4L=s8KHIi=ErtuC@L=vv@&+NTDoC>GV&GnbJxuPXgF z7fs&~?^ioGNl+acll_Ru>^+|rCX3-4wRF!S-I0nA_WqBY%ThDnxQ>}KI@G1%f{g`F4bJdD;dqtjH{-;hO@Z63b6$x}^019ErIS=6? z8766ei?xJ~&Gfb65cXe|ew)8TL%v8@kJU$;{G-(nf-b5)C~P6#Ee&#hzlT3l)B~s=9{MV!-Xxvde`$XX zI2te8t;TwGh{A+HWPD_ds~%YJe5=JMV^9flj~-)e;_|$E%sh~7f+bFvewsSFJ6Nk1 z27A%9UPr!9aMX!K%O?~jk3D3#+_J3D=d47LkNe=pzo=j3FnjAqey4R^ur%Q|)Rf^F zvctBo1n}}IazcH3ZDMSC0Ln?ww-$t#ZOL(_<4kA*C-zC|X4Mr& z=wcdrO_sdmBl>9EQ&)YEx)=@#@hV3epde8jZ5vQU3}f0gh5iSfN+y+ zjMGd};YB@RpT(+eLRp#XRZ=kpTwj*c)=cPg8Hs@usQS?_q}=llbB+F<&g1HrVD!K^ z2|>)fsi9{5bF!Ln_G0CY!2!L=opi|fe_;*zsqxW-zhiInsDhp-?oTf}r!h5BzhTOW zxY|s2J5KRVKV1*T9R?Hs*(V{q*l(A4^8m{Y=$~g%1H@r9K_J?Ue~*EE$|A#< z=ag@d4CZujU<2>MYWPK{Qun@E)Z9IRQXGN~JYB_Rsz$h!^4^9JTG({bY9)chp0n5Q zz#ZAJ`jHd*(SeG+%wJnVdcHdCnI|l ze#!;CxwEO|G>n*2bnadVhlb+kn+)w~Qr z$vC&1W}<-|19COqzsw2UZ5Yb|_=`SHa;?^O)!=Sm2!ji@}L0v8I@peF63bqI0wCPXrnWNEie_o&edM`^Mz)z`RWxGk9^o5q-<_h?4R zJ@Tbgmu>{L3R0)L31jy{?ieT*JLYK}uLlFi>lw^qE@Y9;)CnHKWNsKl z3#g-OIU2misWcb4V#N(}=*D%4N?N*o@0Sgb8 zcWSw|7$z|9!dlCKLwW)Ou#ow((FqIj)zsMnPFTq*(6G96y0vifAX;KOPKlD7OI2K2 z-IE<5`shy-{4i5!+s9RyqOi(ly{<{AIj3&iuvVkuCT6@j+THi+ypiTyWZdC}yJ9 zZHgqMVKQ>CRZJexEr8@%kKvo7aw1}>Q>K9O`@OG0#JNNAjDYeU>C@mDOv*(U$9mG2 zpjleo0&Fj>dyS5L41S!dwq$i;d=b5^#lxUr>yj1 z&ZI;K({8qWo0h~31%_yMZ-K-DsnEH^8#SiwC^_0j3D;dh((g(gFld2Wgwk68^n(m?pI8|fSIa}%Tc1Yav4g6_4tlC&5=P5Y7 zT0JIEiejlxEb*|o0+n&;x(dq#!q4-1^E!5R`n1W&rq+PhVu}PAEz3Seo8}T-Q-4Yl z60gRdv+~+Ofpp>2*uk8>Zd{i4YXsL933BK7!=Ic-R%zAA8T`5mHqS+4H;E-S-3ngjVOjW9TJF^o#c^9{I;UyahSz2AM?4LY)B>=>n(wxi zUGq@uCmgu!Bz^B5t(Us<)fk;+b&^Q8!XGDju+km-f0cEnJNHQ)TDV?4)!PzQz?Vv1 z-qJnX7IK_vh4xqyo(_=I{?4&IOh^aeY8H|d8)I3n)J9A$g%}%VNcF#Hl8KC38JO1L zUU|$r%cx!T8T88KP|&w2QK~h-9Zq;$a={34CLSOefC327g-0`|Js_RoZ;@r{v&Jgx z6$~j_&4^Rj8Knq4$Pnt1HZ#{IF)&YB5+LeHMrtbh9~PLHVo?($mr;&VVx)zr1kBw7 z7fnZpUD;W?IZZVIacG!ecPcKZb<8`pIS{yAkjB?=HT%srB4VtO7K?h_K-+2%bH?Ez zdWt*~SDD6q8%9??6!~4Yr<6bQq&7^Y8lxc?&ajr%%G2N(=OhmvbE{;{FFZ}}7p(OFejTHj ziUFUSfCx7Pdh6J=I27()fcLW$ITL(^)xg zP`8_8=bUVX7v`y}7T>{-=k*DXVEk{|Tq`w9z}(rJmh6W()pJ>~OG|-(pTfFJix~h0 zYf-Q5jHgflyyrn$;YY!Q4b^GPBzDbX?OsmZHWJK9#zHZ-Ighi*(KYQ@1UZt0DV z;z;`SGhfg(iN1^d`>$O~_#v%#OOKvQuXkIDiG)of8mH;jHd_eP5oOw3I%hQsP5%EtR$uyl5Me)piO zikfWnR&D;Ry@7zF^`$J7*x$6u(h+B{4f!%vqpd3v*)yyigR0Lt)nW2aS+}MA?4$ji zd0|0VcEg;$JHFZq82hmk^-$a6;pSYoyp^3G-X_;<74DS+S{I{Nln;8==`r!F`_UQ2 zga&yX++-zz>x~^OL!IQM$xaxvtoWP8mE-cpC%r14&HR^ku_3=T^o$#-5{B!tPcGDm z7add7rL%u1Pg8TMH4o(=9}Nx5W?X^X_h7;Dg&K=-6xzmB`N>qamhZbT?PU-(_Wkzv zel1cZB;aEkEf#F%^JfaU$%+f@2Q~CI@CPiK(G!Yd9;XyX{+4280w+Pop8k?+I8U`3 zxe3sJ?EZG^O3di(ZO!nSRR*gy1H?sd*b1f6hN6Dy#%Z&*Tv9|ZxnDRGnvci+lJ9_? z6>LypIP9ACA_`VTk(W33V(<`@j^ReDgOJphH~8a%3LJMQBP#!p^4KZ zh%}uQU0;RwWG4xKC16gya_a{RzodhGx(s9HAW2$;jvrRB#AZ0_TpJ71wHQXpp(oEd zAAVNP6i?N_0F4h2HOm z?`#(=Vn#|bDMn^xZI-|P2KG9b0=_8g~Xk5mrDkc z(S1-h7w60P%R&_s*czlwt#1v@-!eRU*Rvt16dJpEFyt&|GU>`oHw#z+wZ${D%WT`D zm}Stjahap=_nX@n&9pVV`dc%;(~-w$)6f))VcDE~898~}I)r!t`gViKyR<7*1kD=| z`ALr^MvVh|rFh>eSO}SS`9iy2k6U&s)8i=nM6y~_?=+MgnNELu+8Y_`&tJG|O@o&w&UF>q~-MBJH;`^B_` zefRTd^}v;-eCcDZNSjccydYDSZ?6-j+=%~?dnP!6e)xBL)0i4a;U*>mw{ z>J+}QfHM+#@ym7fBFfv(Ij%{n;R_;(gXfGxC&jRla}hzFD7-N10VJdBd<>}9loeo@ zLAGn73`crn&c$S|XapzcMNAt-9|4{RE0%W4V!3r$gc)o9$FyuWHUWwd(C!Acp7q}Q zIB&0YY$v(&*yav$x5bt6HMlUBjPjyD)ni94R?Y{JcG~>XX1;;SRu5gtQ%pKki>U*Q zajn_=I?a$(N42SAlC@)l$PZiCe(aCS04UTOlZ=v2a zGL<2so_!@X=ZwEE6x8*w)|yPpcmIU&*$cfcs?}flP26Rcwa9hXFuOHrQy$0heY$C{ z;*Z+QmAlpAdR|@wcvt-Nq$h+RA)Ezi;)-2Prco~+dd!jCM#{@`>Nr|hro5Psh=T_( zTrkn{P-a=ck{x;i0M>N-+p-Ac8|`J1*fIqUKrf9M%y%x%`(al4ZDL=IZAUv7L;{>Z zziqKsv%-Sw>XwmXWyKx?#;Oxeua%*tK{qGryXH8GM}q+xocyI-arca1ZX5~XAe_Rd z4AWZ4a;qOks}axm{AMy~>0%>{7w&5LEQW<0y4&x+4mk2NJ$(NkTEra_;`12s{eKKV znsM&zT|fRi=^y{ye;a@t%^WR_ZS_r!{{uxOB}`av(7_9@+^WKBrQ|13VPGcyMjB<< zY7|~UVoruoB;t?O{d|KZZn4uhnv232a5!-yezecV;uIKXc?n)wN@u(wd02*n;oX(t zx=(Q~5+RC|%faL!7_LezSt#S+R>p^^-?n7A(?aX!(+mx{!kvGzV{M25Jer~#98aDp z0C&FJMuo@gVIp2!wC(j|vt*o5cf>ufA5T=~%#cZblEw6$%9u!j2ZVs!Ax_kmGK?{p z?*JABQTusj)`jWd#I3AtF#oB-nS*RCeDdcBgI_+|N4WzLr|_}cFJG^Td9ies7mlf? z$L8jPPycNVHtl2^B?Ph$PJw_CWi!NY`@j?Yg6oQ3p;1PCo2YLF-6-0%n-7hB(IN}r zw@*SZVO&#@lb7@J0Xvv{O8owOB-!$4Bq}&sbSdflgdE*|(1U4Grq#0S(MmnH-W!@0 z!&SdohpZvhla#`>g6+TQ_?%(|?ZtIrS_R$@m}to%TivpB;7B z!7V{{7!mCSRlOJm@<jTspYN~UxzP%CA(k=;nRwwV2GmjHyLNuB5HAeid{Rr+b;f2>YeYGpDJKfPuRC? zP&?P4@>q_m{;VVF4WzZx^x!&oJ+t&Y_tC)7T834`0DOTW%2Zsmt=0 zhqv?dsU{8wo5nDY+Z3D7yYu?a+otOA)PA)RdO3E*xO&w_V|Z zH?Qp8x1$JS(e}P?)Cr^bqDRqPx{H7{M>F+f)sH!h7G-RPAAP2<`iR;x&+Kowpg%^c z!crcRb%YW@67PO0!ucD6$-=K`5VyQ9v=ihr#zz@mU^E%Z?b}Zr#D9V^5zAz9m6udR zZ-$c{nlo_$>2U6XK@2dhJj$Ax;9f=(etwHbZDD$fT!R%IlgUYsk54Icr0(g#a_pwJ za{+{mpRZj)Zgp6&+f|VCQ-JAJleb_F@E_yMS=aizJhP5frw!7m>NKe^>o84n(W=yw zGFgt36^y3_#L#AJ0orRCFCN^6MDJO_U74V>E*gt7N31z;+}2DYAyRStcK(18+)?SG z8EG)q8~>y+yAjd^V&v;kt+z|B20g9(TveDjam`d>bEgL+rnMnBu z?jl%rszp)LspN%R@8BMiaz+wjcUYVpk&u{m(1cc$VbPGrd;N;Y3BST;q!isa=F-kR zG-PAoetwd@t&l=Q3E$t9WpUayQSTf%dITpz?%C>FWwr$(CZL42I{~r9F-C+)HM4mjk z*V=0<4%q%r9!(fb8MIUv|7plu-bXnyz`o1M}tcSScId_|Yk z13h6dhAH?a_23CdjS;}|@cTs>=o4l8Cg%a&MqW2ljsdF)!Eg8=)Z|*^^wYu4P*v_aKRfx-4sBX&x}3TzfTzSQq;t0+L2SX?UW>M!8Xg;z z=&9XyGJfj8$toOcLSMXCl~(wKS3LK8`XF)q{`RY!$QZHu?I+$b1N$3r!7+*AOZC|W z;B|Zpev>~L;GQt}NvoSJr}>pc6(aMjWfv7rF(Au^6a>t(B>vRnd>YM2@l@{*W()ik ztX=I9`=<_wgPwFw&Lwy2;ZGX=*zSZ5CL_&JLnZkX3fc1x+2dg;Nx4WV)^+@t(_-qL zg7vl@%eKHHCfC`-lWt)I>Hl*gKd3aEE9DpxV96CRrQmSGwHQfY4@25*>$HF=xV{n? zMYjmw-^P4MaT*%q?#BK5Scb4Iblzp&hrq$Tx-^+2t*br>Qh@{f-oMH2N5tdYg01d! z0s?Yj&OIzq;xP1kwiNu4ZVYzxH5(u&T_|~Q+-ERmATriTJvoNvJW+FjkgT$2a+V<7WXv9p>>s2RYO>yi0>)E^E zc{}}`Z;lxqujMK#QnG?lPjrr|B#c@ z?f#mM+$K*QFZTX88n?xH#pm;MVaKtB^X&>Bd|AKc`#38!!~Z*t+Jx;e$&r1pW%=p#m zcz6~n8NMDgO)mBoL?@f`TPFBDo;W>oecVurKTc&t)w*K;xWwz#;AQ*+BZr`A6Uu)5 z-uiV2zg*%h;Z_JKgmwHfw?f7?D!@L`+>%DxcVzZu@6I#+b#x5+?&`a= z%BR)!JN$EO2CwU~s8*=G8_XH4VqFo4eb>K7MfMBbP5sl~TyA+luw(;9Xnp$0u&t~o zCxi;`oouKD9v`f-JUTJf8W~y<56|YK;+)96-dT@jv>XEdF039!CsUKCM)K2bKdu%^ zfAf@SvE5Giq`T7&`yzOCIZYtvh<*EUu}EmGbA4RjprXdt=HsLl%d-c0z0|U{MO(tq zWB|jf5~{OyWlUy+4X>Lj{|P45n0eDx*%Ky|U?p~C5;wVO>lo|1|7oX9b$jyRdL!^t z#z|MD)*ZsguKKw$j(x9yDw6^uke*YW@ z99z6h$M-usQG5}N?JA3hV~^mBT3YWAji4@DPAYH|1@{&kr~A}LuEnD&@#E0I(~8Cr zhZ_;Zu_bd+Q|i;07<+6o-WmAHGAon9d$5?_aeEx~mWuP<9p4>ZKN3>WO<%=50f|3e zvLco*q?d|3Y)Yq#FP z!2=S!@Tz_Jb-XdwzT!fCT&-p!R0f}wiSPUID7cVqkJ2mYDy%pJ)Q5P=;=VvIQ?N+wd~L6Om*pnY6{lT?0t};eh9Wf zDKKmMLUjNm7YFw4s6{6+=vEu!$dFEwh*&<#!M1X4htsWCj}PBaC_rT5(-`twSqKQ0 zs}JU?gc~trc;z(-4&%_;c9)wfh_2hUOHg01Ek5}C6Y)DtWNlCUXh5#Ui%$HP}bXvZ0H*f*5(}kCS7ypgxC*a z3LRM5Yuk$2Aiy9-c{FeCE#+P4R+9z?UkUN+;N%q|vr7RdKb&}OL~VCESLIuxA%1i} zczeZ<1_r3XtDuzL>K%-S(llX#k|FI^`45Z0n8EO=nxFVRllMi;I)Cny~W6NQZI*}dyuOA=t0%BUz}EQcbd8tkdyzE*c&W;Nze$Ud zDFrTYF=#LBD5={eC}gmWa99NmMJD*7Qn^0iRKFA(_>TgS8vq2Ke&T8(&tP>Sr0vN% zF{4klI1VY!A&bc~#8AnYAv7$|Up>^JyOd;w@*u2Rx9muY7_oq-0xdUsp*~@kPwTrw z*X=1GYfzQ)c2@(OMf7y8l#@Ev7|(>D5+q3>h{)am#?gv(a&h}UxAQoCTZo*a25S)u z`=vsvbl(T09zwuMiA9Ii<4W}KL;z;FjvWQthw;h@K+X`Hyj10|2VycWxajnN*C4Ln zis*Bkkp{kF=f@R&X@yKsZ+K@W{awz8%DSsax zf7_ak0)uM>T-wb*VH`nR$@R579TErQg~&*~swPoCiCw5C+Xz4xRQeQ<=6>_oj~^f` zEbf=7L^gzmgl}QIc4=W&t~nE<#uTO$Le(085^$exwCL{+as%Q(o4m zgr4U_(z7#E7OFsz!c;s%b?N@^0n#3#6+vMHGM{~koiTW|5wZdh`ROt+)}R2%Z9!7r za9yIQgPz9|8n=o)6Bkip@DW~7kxMI(;~PM`e;d6@IGaMdk$BN50pLk;DiE-b5`51; z_H>}w{DWPT#4t-F1JoBZc(^b)`7Oao2}G!!EXV4Y!bRD4TA`TB)ANRG&1%X z1@h`Go~NJGEgBxVVuF>Hly!3kT75Jlm2nyp1Cb3t0U>ii% z37@%}ub_9krnche3YVQoGj7uTC@1U_a!jCicEMnUJg`PI5Wb!9Uv^WCnMFRPU zw4Wbt3(qI0T7=-VuC{IJ*FN9`=6l-;(dQ|f1lf-ff3DCLgZ5mPE1OP+6R69EHKaY%IV`b zFBtjkT}n7DojN=(dBPI(RStX%$MZFPwAl=idORA#qy@XPJR0uE7y|zT96{e8G7FJ_ zTD`DAH^v#?9%5+Kb>l5LAOPcR0;r?t=Umi}8ZG=ZKKpe9JX#;b^NpGOAcG`e!d+Z2 z4%D+XKA@LQEo9h;xZJ4LhJ;NCX*iOA0TTx|N}&}NuD>{LJ}&6IzxX-3932D)nryJ& zZd(PXTKnyYf1i1;UJuN-+jZ0*1G&K6zm;)xfLOc_Xhc8=IU~Ti9V#T&Zh#o3U)4^n zRal;6&9k@X!i(ku;$?#8yVQ59Zl2l@8jSAjHW18!C8_T{R$yNXKqu?VKS~~?51U@6 z+p9(Pq~Q?aMg0edIi|9F{YMCK?Fuam*Pa8Q`ask+Zc_Lx{2+)C|>gag3)HM!@ z4UeapFV%AH%B@R&H(PyK33|xD_N0Q917@D--2C>m)n$*h2MJ<%%4GUC6ERSlzt5RJuto*9Inq@Le`AD~a%lH|-a5&RA^H{*nB>TQN$2EGE~mT7`7#}U%UZXm7m zRuFLg$j~kLQV60ma1xatS7hn5`ne3IG;})3^&+=`$Sm%pr{LyUr_lzjo5{mW)SZw; z-a>&)5EXl0>3e$!sege~I}z0d^h8pOoDB8tlKFz5Nam1LxZY-5t%OG~YV$Es9ODQM zmb1x;-zCMD7+oM=-eaRPFwm&bA2k;D>z#?cw zc{}OX|G8e?Krr=hX=z7mlqL&qpb6+i_g zk=u(&IeVaD6QeX zDDw<A232AYnTv`!X@;^6s+$>cx=v!E#hC~u8eLFz$D_3XxS zX?6c%2jbE)n(I&wo(8@!#D=rgHcm+TH&v1QG&foeO5Y?6i2Y0f+`4%xsp4hY<*qK$ zKKA(sVL2U@#9s}at8L8u-9^fCU=3E4##5X&zF=qZs(I0RjYw%y9xP~eMt%J z>u3iP5uXklf;i^KQ;!^iF)zp!0iC}8rn z0Pzr%Td~s38&vgLB&wiMPE(llV(_to*7h4g?8Ul?h<9Qh{$NMohht8dXzCX204l}i z&o#r_<-y&|&V;p)z{0H9{&mT*apnl&Gsy;TfyoZ1A;=;uB>}u0W<4rrFV!6^%G3akpZ|6hipBCgL}dfn zIbdhUtk%~PVe8MC@rYCRqNN*d0 z1OBwpGIha9NICi4VD!ah63q*XIkkY8e^&}0cvju~!z?r%83CcbNeYeg(s)_+?7GRx z^Gm({EZ;7t>j2mkRi4q04SKXGPgWF832=paNt(|RzPbKTA5ikr@%nKwlv2zDPH^)$ z&!sV0NoTpm$SOK&Dy4sU;Mp^wOk574Xah9iZS*6Mg-q(Iaa+*@+PO zyH-El4*79>M{lyI2_<~VdMb5N0I0-TMb+jsC{V9eoGaqJU62C1@mDoq4v|uOeGWOz zoy;-=vMMX%+TmiZiJ55qa}j|>BAI8w!MFna#1IMEkeq)<>nn|`-m)Ztr2t84y%o#@ z*=u#4ib>oG+Nj)sLZS{^V&EZwC$bR^<*14*{!fVfFMGScoZIRGv?CRxCOpa=wzx|Zrs850o!6_(GiYMD$R7sgK$EpeJI9@S z)BMjU9cEWj)01;d>}*C6m+D;%#kU162WnXkGXNISB2=~!q*fVG7i#*nb`idre14kc zL^-MPd$vVQ0*aMC>b5-WOGpGcKFQ;e#>f1#?UPgkaFa9ug(ePI_ke%wYThJs137Ml?ga|kdpJ|=9cDO4_ zQu8a6>JK9^WH#X+kXTT$n*TKNk7$=_wCWis4l%M|&F88k7W<3GpmJ+yfIR@}pWHgO zU4Zi!R+pHGweoR{fO1GN8oW$NHUVh{Dq@UaVrrlQrwpByf}uBl&?%@X)i*+xRom;w zJP>LF9J-T8oj`b=Q?MUy-!c|L!!!_&snv*kB`KZY999tM(vY!62N}Ap^3>#>bT|um z4nRbCDNbm7XW$pVJ5*RNnPC21&=$zWSJW01oXWe4j-5MmLY3^x(hBw9U}tCneDcXj z#%uQB44UD#ty))Brh(gwI4)E5sr~uT7IDUVHnOQk>%wrMSx&ZYmMC>#H4Cnb;wcbL zng2u6ygAS!Wfw5-&&#En-ORg&hbF+Y#hbUJc-@2uW31^16%qe}eiRcW6FCq&iE2FF z<2R?esA5y9jhlAKTGiv&bgVTexN=k-2e2-B|7U5xcQgDpVN6rCoE}Cj38_#L(B3Bq z9#hAC+xCE+7tQSBil6m!;2E++nPhx#Xq$XOIj-1U{&q`&^`{#CS)10!1FL1lT5=Po zZ6Y7_nG@XY@0`mLZI`ONK8AxB@SW!j+hefZRW3H1lsBF* za2T|yS6dQ%!g}}~vFx7$ajD4EQxB(V<26QLrHD6b)qk$)0+vE58mrsqHncJ1Cy8MA zRKvXnlsrS_qBI@`dvPXWYNp;&Nc=gaPs}CIi|JGJ>bj%|-y8(8^UBtL!UebAR9mFA zB0)DK^05-LVp2f$qOGS6F3#xPxX2xLCzLMKMCu<*BpRVW@zIJ8)|zAAhwbaYOIL-p zy1x~vbh|@@Lo3gTybo6HxoNkj#&Oy%n;g*dge8Fw!_Zj0Fj2a(-QsB9F6Bs&Ouq4Yz>1^VS(;I*vqE7M0JFw?n9aHA z%kHEll2HnWE2)`(fM_R2DB18P20SmmId)q7bc=RM1I?+Bx!8=kWB-$G45m&d{QAux zd20pGcHK+~`7jYDmCV<(CR2v1*@WTclA#5szsMVrxvynBZ%u~P`A^t=`rv=jh?FW4pX_&fz?8j2p62bp@HyO z?EJjJm@3<!W18y3unBWHLn+%}5>@DUV^^(Sn{z}P&~1GsvRy?THMX>3%s%Gy z;RY9hSBG6;6rV!t@QgO)ge3#B1wohEiSRF$?agz1Hg0`kbs29|un5LT5Y)M+b5Fjs z6A#R)Mluu|Rb6P$&lMdkQ9vS)kCanIDS!(58PVq{g`#%VEX#7%|2j9rj9zv`P17JY zr}&Q4qs-aABFd5Ps*plf_iZL)7?$HEGPB+5S~bnec=I}ZC$lIHQ7X3#$0|S8RhH7& z!svk)`ibZ3<=^j&5Fg}y$wM`~T3W#))e)BuaI5YEB^h2Z^y+<5Y;;ytCxugPF?BKw z%8M;5NEfmP10LWX+&0@1>Ec+VNO+b)0@~j66 zj@TPf2Tc|;qLT^qCeox;YLR1Nn8ixP-bBj#*tA=hR7M!hCs{|s{z0*Y`Zb>Ks!lg~ z+jnSugh%30!uCMJ>2G<7X$%D0xqtNch30iyc7h!HHP05O%*_yl=zf?xG^aurL*m$( zh03z)@o~*6s`~XPu1q`tU_GrAA(IN0(GeemR17=Je=S+XA&BYWS+_H z;@WWj?f8OulB}`*mC97wE#STWS)KkUi`iuM#0xzBUA;bPE;%h%rQiMRdA)A__z;ns zrC?bwR1rt&7KS^9@Pxen#&fq$y2O z2S8ArYmHWc1r&dzsbXu*ktRQJu8~#cdhBrI8~%|rMA`V!l&cF*i$RgUP0K*)6qFRC zu1F#G%hp@(p)csKAe2H-&!K{u7I*XK((LW&GpPm!s_Us>?(nB)Dmvw$&p(70Jdh8M zTzdR0z6?I_=RV(?iq}1!D5!dJ*z!JibCewys6;K%-92Av4~erHI+&oe@qkN6hbJsR z6#nZFQp*vAar%_q!*IHKe0B5_%Ae~&KwId`NTuQ!UTe~qcmFC5>()rRj@op{`dO7s zZ3znwtG1u0YP_A>_~|LzmQFo!ZS5lhr`c2n3D5H$BgJ}v)N~x+9MQkwSc9Ap9(7Vn zOn?=%BbXOX58O`_gD{B~axox6ACBu=hP|X917VdoeHzXln9}awo|J#J<-R9eBna5< zz0PblN3%|XdcbPp&S}CqWjzlqe=R$~Ne)DtLrnvNe85;qDTfLupV36) z7&$K$#Xv;m%`Y6)-TIT&d}~;akj_zHJ^r*4Ls6s{CT8}N#d})6rXy=HPRv}xN0q(q zvGxbxcY;=Rn2RY4fXGeR04z0yM**}(F~tClDPu5+j_=#at0o`gl4Nem3UUjWK4E{S9pCs}EQ&Uu zv#(0Xb)e$V!pgipnp4o?T57p48i=A%)ggP~nGkdW!R>fQPu^^w7&@I+EUy}E;wPg7 zh=KdSPYNd)UNta#!WX(FLx*t4cU!az*MIQutnAkA=8mX`MHQ{<(ydl1xKXpSm;{8 z+ih7{5MI3krIy6izud$-qkfs%u6)9Vnw=|pHSo{HRd}2I8m{lfOCT8Qi*6rFBC%%*qEtE1x zGD`JJMy~6syp01%;M7sWVZ2YRznqZy|U7ol$~#^ETvTFki(`x3oQokt7yQIL@GsfX@j2;rPeC zv=Fh&+oogXMB&+))3y^`Hh+COtOWFG%&kJ%V)A!d!D)}bVGI`VciQ!_7*TCWf>)0@ zhUy9KC}Pqp%5wgX(I=f_by&`&gH^OD8AH!EHmbtyc_#ix4YKHfc41YNNib2JZ-23D zR|}0Rq$PrTe4=sG*ED}j64Bq0YW*jct=se$RLMRhg{Wx)iQMC&ax`Kt7ZZ+gO#7UK zbJ5meuMs4hq0tDE!Os&@a;n5fSm7a>QbDLf`7Cfb2%hp$5!^-pbqX+4MP8gk|C1?% z`DhmTVQu2rcPEJTa()B&uP=})GKi;WAuz{=VkLnkror46fKsUk+DH(XUaMZzSBM&NEI!wqAuO%j?G6%V65 z*3(a@8yL{4J(JALb9TyBadAB~%tbtGM5;4H0+Ki2KsfN$KEiO^ad5OnK2hu8?sy>3KDZ zp+fK50D&dWy^@7xJM{ZuPqh*h2;ZDB4F=@ohl@Fecsg_u$3HqnFV*DJ`I30b1iW#G z0EIK;-{E}pu32HZ+Cc78-$db}WNW~Hwn}DSE}W{}FOQtq&$`!2VL-Arivrymy$H#o zaLJB1bT1Xs01WUrCG4yfUPX+~dh1r@x4*?2j(w)AGT!xU0XF^mb1!x1NIhdVB)_eqY`z(oOu`73OO-6+?nBC*Q*>BEJ)XW2P# z*`zW)gk!DjQad=5Z-AY|SbZ2M>qGU=jcjZ)lXi~RNT%hHO5?qePCE_!FXJ0?Mj=$vGo0+h-Q);DG_~0$bQbyyK zUTqjy;Bd4jhP&cs0vEy}pHD0g^PmA&ZG6<$<;*P@SN-+t$H{nIU=oz|1Co^pl+2Vt zs}n3M|_OA&;$HBBVwgV;*emE?QvI_ZHc& za%o}qhN~s4d!>*3JV1|LqBS9nub;t*{%U|Uk}J^E*_}62sgP4xb!5JrZTk2y=L(YO zMT;8X@=y$r|M8&?7Jg~zI2R58tXyPN(H&U2tenkc=3&zTK5W3L;5Wbd_ZZ3DbWzrt zum#k~7Ms-}#J0&C+5vyZ!^Dv$KchbyUzFy10`$maay{LG9a~$q6Mxd|DvagN8Qhui z%x>5lJS&!NSXB{!gb_aY>I8>eJ1z%CQ}b*XvCP&A;7vij7hNGB2<-4t+xR>9AG79lQcf zv9Df)EJBtU83J5jyty>jhq(bKR(jCifJ)!ucc8wyMz{y3O+EOgg(BVuQLsc6a|pIT z$LwM?pM90Q%Q@Ppq|~tRG0Nmm#v=_7B4xvpLpK__cifs3)ekpUoXthBlz#Zl299G4B$O*M#iWvZxTA|nx2xbprY++kN#}Y{ zLFYq*gM$>sBj=ifmpv7d16KwAk`y#UiO*JtVOoYQh$@$KxGw%(lDHkI;%sz{UYfbF z#?z}5T6WDkEMy~-tpgU@1-!R^OFdvI^RIX@gm&cw0icByV@ zu1rgh?|wTTnHt5gH0V&4rCPplKbNbKFEKyQkv;Qot`>NxkshQXGk9!!I<+tPV#4x- z!yQcuzZ%29(A8)^k#AiIC<0#h_&EvI6pE`Fon?$NSxE-#b=35-LcGKg5Lt^|hdvo8 z!;|~b2Ox}^%p0P0rB2g{{AM(r4d_U}hDunqly2;49p)K1OJlqW@Gg9Lb-4Rg%a~LN zCpcT0(&U1DbsS>TfJXC~FJ_S+leev()b;%f5ew;^Z%*5&7#y4%ipe4_xy0ZFJzo^Uz4ax{y*G#$%Shq5eI9u11R3 zHO;3V|H@KKeLa9|=GGrlJY%M^u;H$G_=seZmAIwej)rMf4AakxZ85xayJ$$_hTYMP zpIc&ofWgUA6!}smEy!bVmxr{Zk;WES&g z0Vlfqi1rr`>(f{j`Rd2;_;-La=bg+@+7q%d#3tvB7HZ!DiqD{cAO+&uk-u6?gISVI z%a4KlI1BBU8;-^&~FW|bNl-02=Q!?|vkJxz(N9n6&hNcd9;ooVdFCdSly&XEL785@5jQXYIyv_uaX z9T8!D#oo4#ARpFqDwaGA4!IX>em?4B!>;d0FTlRpM4-t}(?*FE#eF6)L-x}imtL@r zh+u%q(>|~t(L&HXP6$NCyKqP@Q1EfqsITjr-UJ_MQ55sQ(BDEz{O@(n_j(?~<8$)@ z0qrRzfa{5%>a{++`G(b*4|LCbfSBns6m87 zZ7kuF66Irahz zipvyA_&5=wcjBh=jW29`)qR#5Qom>U3^0ypP*$4Q^avd6;y@y0?|hO?Sd72^F8MHt zXpX}mRWjQ?qxg~YL;85hHpk?yRCUwp5ZrRm@EDA~IBpZq)$h z$-e0lOR;;ZO{dNA6Ln1v+0=Q5boR&Q%iM6nOlSorh>>N}8r#RaauV(^GR?4>Xm{H; z>R1TsTZr^Y2=B{x`BChsf77Mp@vp8|C4B$q^K|u-FJ|WNa`~4(YFf zz5xRk{L>P-OMIFa1;d%%@QLEbu6Fc!?QtA_yu7JhOw-V02eVoBD3-LlrY59QApxQz z@0H&R(_WA{(X%-b6Mf2E*}mOj1x8%Wkt3}e2eKA@Kotu|uTY@7S zJ=tgZ`+aFfKmW;&(RdRBjHMf0b; z!_(@K_zM}!mM`4;GG+)2o$wIlYBL)ls`RH=i<=%USVgZRE?;qIca`r>h^nOl$ z0sotWnr}ybwk8Dtz&8W{!1^x^>i<&t3=IE?3to%`y`DX&C`0@ zH{y@}tbc#+|83*?`k;mD{FLMSylVV>bvqHo_c-~q@P05Z`=rVJUjAnTe|@c&V^cY# z552YheN!b(M$dT;+zolv+xmK6&GmlCG+RD+-UxO&`uvg+eScDWm9sxwdHqiu-$&(7 zt=%7Yn&_I!ZTU~c@2lKsuj$w%OO6<%io{Zv4TuH}v0+yDE>?*Jalo z8?Q^e@4GKu-+m^UGrY=f>bJ zXS=a(4<|ps#LNvnC%=3{kDglhkIq%Gl7ikazOA-6-|`eRtp-dJkh^~mj^4#kFX(Jp zJy$1tKziusJdAIi`>_Na^BuI>9I!RB_iOpHbxKveq={L2|r3>AQreF@7IrWT_!K9pR^ zY1C&e-L&iSOhAm*{FjT3zh@4?eLFmW$a8xhj!oHitGRMZh)zvnkZ_L1mDx>b)5fU z4^>!88V0U%s`D)0-V%YEs`&nTGz{7=iYQI}d{ovpW#5~fF~QRBDlvQ{fMM_C07cQF z%iEeQUwt=4Sfn|l^kW&DToz*FjKWD$<@Yttv}Z}62L3Gt(xLKmG|SES2BpDh2ZSR&(TyhYoBdswfwzr> zPR)Cef=VrNLrS7p2~%2SUI#P<*r-Vf2@jb<1vN1A!JJ64;iC!R^UtckQpIj$iu4@$ zxZ3WRyPjkKF0Ai&nip(L)81j6aXwP3-m`&FG~=_%?P@`^lB%i&JS>f22r=&7RNwZBKlb9o&FI&Q1_yI5N{Iu=v5Ay#vC-0`N)bO8 zqzqnj=BJh?t~Dv6*zdb?GsolMX!(@+J<^9{1&dq{Bs01*H)UIE&|)SmCMje^smp^Y zv$lq8A+`_d9rAkCYU0@OMF4*&rhq?d7sIwjENCWCV$QM`WMy402i?@Xu}7(e1m)Jq za5@qlZMw;8x9J7c9>eV+Ho;I32Om&acigzo{Gagkp{O zlJ%MApYTTNvB8eG%VA%8x!8c(w5}!S& z&!aGP7a_uf;NuXeMQ5Ir<$Zq6`4mBos#h+ES@|lh#R*ln0^Apwp8_F9i(!$lV(YRB zE*l1-t!S0gh0zW($qUFs`59epD*~<0GQyhiwg7>-BQesQimmJ$;yTb~Q1ievg)*U7 zf-M-9Zvg~@0+0DczN>>$oUe=z3qnhJV#ld^1p*a4Ye3nWESKplC=dOM-8yt-roo4P zZWfGrv!>h#xF$Fz1`U6KK)%@*s-zD>n+E>%!>Z4j-Eu8EBxTLuSNL2ACGr}g)}9g8 z;jQuO%d6n$!5=gC;(7fwi}VI(nKN?L*WO1l&|&jP+$68SRINeHAA*4D+cLa7;0D-- z1{FDKC*FlfRkq8Ux1{SVN8TY(Qha%a7+UE-5sq2ar9N9kHGNCqlehD?U%VGu8XfPA z1abh+>p~2J6ytL+V2*o$8!Kg%T{mazQzTiHE-dU%j|NulaLE+YVI5m|pjXqRc|f29u&X6WK;&n%mDsg?<`OE9&kA->S#Z!D(^|!&2Gc0o8RJx?@58+S1@US?0J-T2b znH`n60rh~X9?CY@RKT?Nd8jOFkLCxk6FR@Utr9GZyd}LaG2Ne)xr2gB4^3QmLDR%} zH7N2SHz(yi&)uhs`mxjkf8*0YZe~i@BV0flo8*3inE5;*Z9aiUAnvF_KXySFh2rS1 z5iw!dhzZ6$V+7Ol4SmxQ$ddl+2c(yJHey4jaB$A~;(-Xcx;w5n)4C8If1jBiPx5Dwr6QKHUuTP= zvfqjas6V-$=#vZrLsY;4MrB@%aCDY>K5NKYhu8EA5D!;c^X_jTNZKl2OD5SEQ|>(L zwTGLdRGRpK=O`#b9x_x4dL3!>J=8*&^RpvvbFKDu7=UXx{$sLYoPVPHGyx+layc3S zKZQW|Jjns-Pv5lu9#xxn;*qPJ(2oYd=@2}-_`KW!+6HefV1PFZg0L#fd`Jn|q|b=I z+;H>HVQYdT?F7PayHo;VGSH$od145?|Uc0+rBV_%zVCGhk|Hi_$$MC+y$%J}Ud>ZSU* z^$xP0pnCub12ADu+fL~vM9ubdff~^%ju3|f6`(_UgGU}K>#AlTg+*j0lgqdqEG;RL zGY)?5ti#(v&}P#LwHt!^B-}hw3)ABkD0sM~U zomTSnqgfUx=FI`f%(m4fWL8$O^qW5G4;>*A&m=bjk_)PymT+9_Uw}WIfa2~BZs;Q}-SL{| zVi#$yr^k!umkUYtO>Af3jCRjR#R_^nm;>i&!{fGB{)wkZ6v1>y5k0$7zbQ2s0<@GC z$(2W&Q+mDqBt>!{XBN+-_>IQ_Wa{tiTj^iUG1V@biwpXyhYkF$M~yE_yr)NwM}pWe{7uYgB^J579=>NIW|y-h2n7{1QSS|5anCjO@sN0au}PAuihU z)Yu?KtEuY!w^yF21mS1Q?{l@D;U4uDf0n2~4%sg?;Wj}e_fo#{XR)rGzqxsg5XFQi zJRgU4x-z^~svAs+;T+DI0LNm0UtGz`Yc~be^46&pozP4EcKuyc!t0MJY@+mADViEF z%fOYShR1_PL{OOXn(d&er6{Z;8_6=UyXD0gF6ULE8txt|wgQvkY&fHzrJ05SEtSza ztn>0?opct-Z5h;Nv0U)8)`0(!)Sui&OXdQO!Hi4R_ns+X2 z-b}J+(8Q3C1sSF@Rfc}9kttd$>L6ln`M{~gAMUfDcu`8c##*NfJYEE>(plfN$XR_= zj4QfH)iQ|{)QjUJ5!2_(0Kk|zfuP4P#YCbN{wvzve}TDXXracr+g@~c)Z}S=Ed!#V z(w>#K@(+XbM1&OKE`*qd0)#ffWP%hF4D3y8>A6+bFtfj}zazija<=xhY5h5fjya?X zadYd^G$S0;gJlm;yM3QhJ|?_qdP__Z>&upifl+g7q?q>oj+F(AHGotcZ)PgUc9|wr$(CZQinN+qP}nwr#U-cfZN|5kDeFIn11$ zv-euIqGCHEY+Axak%p4s^Yu^DETKSEBp?w5XgR_ZTec-X#mB5T<@?~8h?e~X36Ly6 z1A}M#dgL#*FfKUX$3VNXQ6`~gJwa|)%zvBhh^giOl~^_>S?|4Kes z;nRF(K#?amQ`JwmYz9v>gA7l2Z!6jPZV76y;}}GTou;@zhP?$~2+Rfm}7!p{abn^d=Sd zO<6c@l?TNTEPoI2_fa@IGIW(un}dTh(j?Hb&`KFb!NynDmBBwq6>@bKG{s+~i;;k} zkg{>u29$pJ2sB=VFjIAeh3~M4?6J&|5>ZDGNg)9}2+x3FUl}yX^N`kd94%7f;&ury zD~M>4#5<*^6lQ|sez>bfu^?Bd0K6b-u1CI;0s<$4dtXyno8GgDL_{lhUJYGm2laGY zMPkJR%kkOqv_cPBo8oa9@XSvNV=}zYjfj6zy?Wty1T=R`B-vhqU%E}XsrrOQEoKu+EQR51zK zP4(XU7&Q$H?Aq+)=c{Km(DX{J^v{z?Vfbk}Txw!GGYYA7T>_=O(^GK4+2^atE7FnE z5O0Qqs~Uxh0`~w`5>bc!e!0`OioBiZX5^)G-X)`p^9$uSlf4hsJWg7U(b_5Sf^_fdH!!|P_?I4I&EW^FIMjNIirO6e;58Q?49V~mS zY4Zj}qhe_Q!kW&cgCF|HRFZRQaUS(UcEV6$l?$iU{UF2N$T*9-lT zzJCYSc-7BGOcDvxts2g$Hq{k5kW8MFfb));`j9sq{&dpfvz+T6Si{K7EDadCLFKQr zBpWSy5ok;)&`6$DUJW;bfS-qadyGVi8FsIzl`mFk&kj^i>Av?sQKPnb&p^ynlrcoo zcc=j)qWMkmh+?MdGj$*iEgBQqCxTX$hYf%rTrlGCa*o{5bdk_3PhOG?g*8IUxX1c) zj6s_iKD`qT6fxj@z>7El<3n~P0L!U1u`LLBJ;0i(P4VoYJR+=hi;ik_BH~358%GT3 zL$5{GM21m9(_%>jB1^|q0F@z))q~a!-&ylvnSfgaP^r<4SdzJ6g+swg(NJf>Mo6m8 zM+NHq6#%`LTZ@REWC8;*eYTGK62U&qIe6xwLnb6sQ^fy;s_z&(Sz?aJ&AT~EA3DolEC8@(t13+y{C?@&@EB`_0*fJ%qF`}xI>Ml#wLcqs7Svo|1 zw?i4H{4;T{u$_ekh;s~8u@RLl@If7yZ_nc@FE9~ELuR1?WbhHVeRNu7V|UjIhMM>V zAXmqRlcnV?ADp}fQEBO6K8rp{SR1w7j9r^J>`)Mua|9kDRVk&=Sqr*93e)y6FPoX#h>Ra$cM*#tE6%1c#UjL8NmEy;~*yUa4Cr z;hDlAZB*?6DUZ$|@~dJXj~~g0xGLyT?6Xz$UKpGYiF)#llio!qr3C4S+G56CXDS?# z5->Bk7=}6ci{m2Zl#|GV@;gNe0{x+9I}A5sVd<~Cezo_S@%*%JW&rh$-MBdB=JeV9 zPNkEQmz}=goaSDMSwH(DTW1UB*A>bl86NV(wYb_!WK}Dm@%#prtb$eNoR4!jp_v|@M?+dq-< zgZfy2wJMoAd**Q_7Zn>y6Jj!y-eR-dFS)arXy-3u3Y!<904)v}FONR6HzB62o!H*KRDR)k=JZkmr$I8)WLd>Oh#*QvS{`Z8&-?%(jSrKd$(~hD?2a;gX5R0J6 zFkz~g-i>~672x(kh!P7|o$oWPrvp!$uh{g$m2Kje7;?+C)xsRH%i&R!xp0l-#B+wu zwe*h}63C};m}AYmj0>mJdD#30?;WJ603`#iV48D92iN|>mOYMP!#X6%yEL$3heNDd z5;YwZ?Z$oD#*}TusQK4SK0u-cUk}gKg9RB#n?r_ zD>D~t&Z|cev3q3K%H~6iOJX#*mt;=KP>!Mu)P*pK1Z^Y*%tn{Q^qdrToNCNd`$bF} zx_yzzw&FT){81MI?x68a?_xD1oiv7I1ZYQVP*)}QLdqVm$cK;2(~In)Y0PNcGy&RZ z-Ww5j15KhspiaU8F*dHPFRI!f;1MGt*gz)%;(0wnlNePQO`d8+BGP@=;!Y@B-(Z@L znhA1qg&Plwa{4*&P|-5U#7gp*c~#4cGoYrTpuH<8cq^usNEhSW_>yl9LLP=6ae%>KO|{}&9@~raZCS(EZ}3D52%gt z^3g_+s=Ubp%w5?nJ^}ziRo7RG(&#&%QTpe!gRt2p<(WZui^648Qo^8uk`LN)^>eLA z5=Y8cIwyTNwMIfi6L};PZ`KF_mK;nsm~co%Lrqk5fR7r3V@d0?NR7EtL~A?_B+kR26=LSa zAa8tK3n1*+C!{kX6atMR8&)VFfnZ2*l#bFa5z7hZe;gD(YT;M&xIVKt-;&qCyO#u^tt>(j}rsh-+ALG6V@F>d@5jOuFVgjQ% zdn-rcr(`{(*NaA+Q!1mN^b#fs-D*jYfyOZHQx#oS;~dm2VHsxti+~5?_wRzJ#XsGQFN^Cq2{b9BhB&Z8l`pDpdYt-a^Pt$I{^6BnT)5&_ zUXpw6MD1JR*Saz^^>JPYny*Ww{AI)!1Q56C_Y!gVVVzarU#>R+S<%*H*=D(~pZv5# zh$W0w!Y1 zKj;tsPnLq`%j`QPLgqqf?w*PkFZ^%q8-Eu)U;|nZ%5YgfI0^@wf6#F#2V_-ROm(y7 zWCvqH8pMs%z8GzheN_&1gz)0EY9t#iv947?n)-#M1&=J8-wv&p{3<;zcI4YqI zWUv_Yvx*%FT^I-hSp#IU6CW1&RhW#zp;-0aA@GGucoWx1TSZ8I;b{@{RXJ^1%ZTfxdny-bv0TZay%U!^DZ2-^U?pWq`If_Ku`ooFI_$?E6QT9+@i96g*LEkZ{ zR&ax6c=cequ0LNr#dT{1I2r9+8RWT0%h3hpZH4bs;q#n+@1w?ayxP3L0|rWb8FAA0 zQL;HhdWfMqUBD}6?NM>_;$6jy{c{)Y2DBbRTEPjVw-bLSP$H73P|b{<-%n z`D>03R@FY@37gB7_yNJ+QFV!oe-0Y)`qVwQn}F2fd5Y4vxV24j-lS?}`~ zqbZ7ExD*e^huLUIi0Xl;Me<9gnn1LJ(3@$y3;jzpgyK$^!Y|5vF_sdCsceWaz&=yA z26(Rl`$OFwB*1CLwBMiV!y<#0QsZof@Xts(*)xT$lpbdV$AxUy)i`klf3@fNPyB=C zr1JP4xJ(%Nsj1lqvH;Gp_($uj?`>t=Pg#H=Ks0hE_s)2P0>OmVKVcb*PY|h9dM|gZ z7mCC>hO%_+yz8cEBIKiSw@zJqh0{Nt%qLltHj6lAO{_Pwq^CF639_BI z(+E-orI7}upx~)64n)x4(%cEnMZvAFI@L}?nlra@&`MHHJkx4*ClRn+#052-^AYpebdazABSVb?Z;v5U$Q1r*jO=jR{`b-?=dTcTG#urQ@@nY zWM>C!&&_hpg{Z1#Iop^-10VwL@GLWJvNF>w>D2Hx*KjySY^wUF`#pMTZpAZ!CSd#? zocUNDxK_zcjQ+6Mv25|jhsZH@;zjM=0>mO?!*O!nAgTlbV%82alEUZyyLVcQdK1`6 zUxluta|{$sNtPYAS={8NdrQ(ku7NH*f%zVdAmjA?ybN`DoBnVgQAd3(ntKAShM+0x z&3^8c9`f9J%nYBvRrQid+=*GDLhtN&@Y9Vy6lW!ruA)Ic5}xr784=z>s52RhTtl#d zyE#(~z^A9*?+iHWujC}7UuuIok>w$gkwI}R^9T4#rMbW~a;AoBp2iemU_p1F%vq7K zhX^pw!y`X3-w)SOFk5snHSQe5C3%w!Z$!k5*wB3hvZ-Cw0B$&@>+eW?*GbSlLCC07 zYJh5NI+ZfknEEsVxUkJpVTzKLmcPy~eJI7`z*A3ZVe3|~&b@to|1yqAHZy1YDrE>@ za3gxWn9YxpBa=2E5%%*$!k4>+(G$hmHWuylE|hj4ypkr(5)&#B&G5x$nV6dZ%ux$6V1{h5zU!qHAoA5Vr zF|ZNkF;T+4xNc}ug^pP|c2i#Ma}WE=R}O%b4cQ(h-J#5Shv?(Kg~>gIm;pncml`>p zmp2X5gLllFIq^_c#!egl&?x85aa~kZB{O^+>3S@YtF%&M1|A-xeA@=Q_xGP5qm^e9 zzQ{O#*7|Z@g2Squ63$)Jpp_26Huj`-bTIOh@LHp|dPb(KM0?73mWz|cfnror$ zBC5B&_Jr#^{M6jDjhT-r)YuGv3&(LKUo3lCE42%UXT-XFl`freZZS9dYa(NJX&8|| z6*tRc_|Gub-cP6noKlcAz*e6eDNtc<9pSClwJ3C%Ug_&sCM1Ux(p7OpNqk;0`S`+q zVfMW1pbm73^f8@_kIG^*i4-=7F7?B-^NWGtqvD8e69rQkxPujq!vy8iSuFNYw#Y_1 z_-pmfHNdHeE(eq_*UVek!isTREJ& zjrrrzcScffO%#>~qa0q{NExfkf?M}!YK)KiwUJ4VHR2TF)M0I!8YJT_nmQ9$fi0Ufs0~N+Yn0=c9&6Stab3AoDXmNf%IM@3 zm1{GwzD9^Z?zS6b7DCX&;0wBM?#x%&&!)6i>vWL44lP%;UX?PvfTcVR)^o=CumvVz zf(WrwZm~1177}Jf&{8)pT)3xJWVKVcuw!>3*Iw$Li)}oaG`hEop~NDUd+?_OS=#{; z!`bn8r~L#N6($1_bYd)fJ8W%Iy*r$opmYHuFF%>=mztA7o7z~S*hz=CP_$|Qs=saR zn_GCS9!H1@wk=k(c#3#++Pi7Zl$;_AMi-E62C2U<+GC^!jZT@>Zg{&h`#ziz(qRw9 z&f1RR)|2F&7}rc(^y8?kTIb`acjrh9&V_^3*HyeCL_6>g5YaxX(*54S+wP$4_<41c z){XU^^)X(|y>(_zF4S9N^nvXiEHr|s^P1_(#JcB{H&4uQSqlyvqC;Wa0L9Wd7q!SB znra)7$R2tcfQ)s4X{yR>pbJP_eD;#@t?W2S7#TI04H=`81f055jg7gIw(*8aWSWO_ zpAW6))A3j6b8PMFO$-?C7r;6zh1Gd_+jviWuTmH$Rhm)lo>fH3K%WXp+b5TK?&^iX zBc6mpdk0ZN-!)?c*LlupMVp~?g`1Ele${mD32+K!ow!@*i|-Z3R=cxy;0l(9_H-P? zp8{yRlWUcGaR>U|CNj{qX80idsEK>VNe=91fbf1BuxJ&dXp z|N1B%)6O5|Q2#XnJ$F5fT!BpDZO=$W8^oZ@n6L=-IbUuFh^0Ab>v_kK4^MS-7`%SS zp=2QFF}Z4NLR?-S(d_hkaTEw@7vX1);f@08PhDiTdBl2CO`G4 zpvLx`4Mt+gy?^}sc?)>gOAc^&cYr>7dyntrejoV@`rjEftT(C{(SLk)Jscr?uD^jAW_ib-Q2&cT(3)Xht8pW|Yi&3hgR3)r0-aC;q~24`*m-NW4QRnnm$bwp zSdn%lFN9bsCSE-1lA11TD<4@L!icq5hspIA@38cdoZw=OqN_wm^cjDr{Ot>ZL4L%* zuZ_-sTgTp*%vG^CY7@2UH!@;w0w8EW=t5E7Lro+yo=w(eiUez82i) zI1%cyC9%Pgf1DxbQ^bFI?~a*JKK1_l1Mbgqf#uNv03ulbH*_!ae=>qvQVB<*jyj2@ z{HvUm5%}pAYgIQ5f5e!mnS6||&^DW30OBF(fgunO%c$*#pR1ZNG9!A-Iqr((A5ra|SLt@V{b)tm35 z!q}hp75M!M`;gnZ@8{m`VX6DRNrR@%m-FT2*<7EO^;})F%2BJu5RIHvEA`_;Ia_>h zlZj1)(ej8zb2~PXx)0?(Bf^XxRwEm!+gE{{WpLv}gvVn|zg2u6`&D(N!(aFtL+ott z@4LatgWAIW(DD|y)(=v;&X!$tSYvM&7bhpJV0*3i`JKJcO2ej`WtFhT#{7C#T~r6W ztIA6AT%y~qj_+(#9AT&5Hzc=KiM7s!)kaG>yTj9&A@fnelOi&5dXutRpk8x1zEv$h!y|u8^=%EwxC%sb&E?G7kX874bD{aZ0b5!yd_gTvEn&T; z?Dghu8fnD3fcS60)Of8aDd)Ahj{=|E{?n?GI2KBDLm5Ps&Mi&K52)A=2nAwfac?Q5Lq=heI6MbN?7SPz|~w%(JKA)-r3xc{`tiB%P`nZ@$xKWv@_;FTRQGFiV zxZ;v;rCag?os_r(m%};x>Yn@Q&V~Av0YWobMVd#_g=MX@ z*S-I{9U$Yo4-if+Tfg$+^VQWyOw@(Gj*=%*{Tzwxwydp@KHU*qkjJ^Q>-~b-9cX;X zx#WF17{sk{EI%&pa;1RlVubh@dO$K)bedj(?EgCiZs%?F6VXEpEc`t`pHAmTyu+n z^(ODvs&A%+(r)%Pw_5udg)9@mUq`cYuII1z5%X65+!^TUvdjfD^Q(0+XtDnWRxZhq zlpB~G?7#aCY72o*a)m}egyjbxjh>>L?TU;Tl4*K6Pp-8If=7Wx^t>`2EC2_!>58JX z+~^4D(z3IIdR`8^-RG;vDCHHoc|{YPwomrDJ~`0&y&>aI(&p|l4;E>7yZA>U5_LAC zOa0KSx%zU*F7j&IUb}JC2jGGg0t}^h0RAUoT~5zsuIqGO`h&ej^`KJ zOKIE+Otuh%Y)EOdEWZ@%tLIXC6B+_zhD<+_#$~|8&+eq?dCEpjN=XW}I}d_lROu+{ z8SMkwxwQsL_N%mf%D{Xu#&j_$YCFc$=x8ts5}Ic{5iH0g>Q_61;EgD;$qhi?E#=A= z8p(FZE``F8hPxe$4T2yvrjQ&~!-->2CSjYWkrDO*&hfdG3PV2n0DBOPGkP^A9yHix zniyGl)C-1D8Uj{$784GO)=(GVnWhLi@|0aj_0a|Qf)mq!+c`jFZ}eBF>@GpP>szt4 zqt#hzM#Pb*Ht?LoC2P?ynUtlxH})e8&>BM-zIo+-j;Sr)gy%0UodSD*anqeTOPbt^7A?5;FHG4C;#v7i1;r(08QXG0 zXk;gOo@0BaR;)OoXONGvzLr8rtfsj1+t`Pi8pu=-Zs@uS3ZyZ5-Xc4pI`K#0PYZ+< z*fMfW<)@RXN`Zm1y3}TP?V$xWy2?`(AbDo7h0m1P(0m1xTAS*LWOXbY(}C>oc)HMU zZ~5zrp2)=C$-the&QLqkXX?3uKa9xt8Omg?fO~IBH1VrWy9O)}!LdMF4^_D1b?V@N z-CJlfo)`d=MY*Es_56ET#w@{sHE3JU3w}({CqXG=dIcrBYylm@EGo@y)U)3F!O86? zIu}@!d^nN(4y@L$2w8+HVw>lh6oeHO=8iV8BFv>we(4fdnJP1YM8iZZQjyeCxo$ID zI&7%y!4_oCwC1s;%rsp9)m5Xb>vkLAE<50zy^Z;)6WdTZ1_eXWQ|jZoS2xRK9wrDb3o z68XQ16e6Q{Ae{*WhOzm}%yb-O*Hm;~aud~2g*|Ib37jXgr2>-b(_KBX30ca<)CT=J zEIVSyD*5r<#Yken>P%ySjYKYU2A+PyCgU)~eJ zSP-W>$sFitkcml|1NIufwByjruX7dm0LszMm>t0aF8rTev zddGWzy=DDpS?^URCPF`v@dOTSn9&(YTeF)ONwELWQjFR6tmLXdVpT#zqUm&2I$G_w2P6xCr{JrjDhYw9H^JqLdLtU74#Op4dM&ri0%FWDu5`rCPk@B;qxzP&!sIqJ>DI&&Dm$q}iQWQvG35x8D`JG%Z#(ouw-^$PQ34 zoT2WN7xekF!t|Y3#B^U0vLEL7TJWZtJXNGmj(T}OWahnUouJWZnx|#U9(+@ zAqePX(f(Z;VnDDq(WsN-@H9{$YGOi;E5iclh{bkW0x`WO*W> zo$M;{B*Xk}jYardE5HISs+w70lBgw|Z!tPlxF%O_CR5jDX6FwOg(5J7Lvz8;AGD!z0%p}P>p3G)lU=wyvv+MdeST9Ho32^c;mf>3&$yFgIG^z>6;^{hbeL zmpz;F=9qQ6KPbhMQ87uR>~j^2N6Q0&iHZP7r3kNHgZx@wqPmpmh{cJtLor^6>M6~u zqS=!7xjeWL$GG7O&7&aa2(O0ZIf^K=>>ir{YdtgdI{Ahmni^A|a?hzZcD-Vj;6RCd z6rG+(E&C^X6NgBOO!hm6INc<|WBuV{WwIX3Rt@LcKmut=@|A-tf5Ji0eSFm-i?nT^ z)qcq^qz&e59U~+X-c;ZDJWZHAA7!WDX>1$Zi$x-Ov|XvXL_b&UvHy9&MctL%Q>m7p zP}~*%11^TCxXMf=u`Dc+5L7@r&?|V{kZE2)4uP-*{Cc<-6To(MKqGfUH;7@AEGyqP z*W+SCKxu>Xe1q7+m1gl{xb2Jzj{Uo$ck3mh?ZAvckWYrd(a#xW^fg$1zU;jzS1%@^qnY%gVZf*?9m? zH8Q7M-n;Qcp%{h*{n2MbLjEYq+S4In8^xPt>!!BRXhZ^X=Ra5vsVr)(O4vnfcAPmr8AKCcETnPPThu`8b2 zlgVJZx!4QK#^X991$z2n&4FGo4`&;!|)M3~NerK_GbBzz& z3=uHN#$@_9W~#Mr)|P;-{YC=9e$S*)koYrIUxM+pH6<>(= z{0Kntk24nFYcdiHnbJpfA;7k_HoaZVosmK@y4i^O`-8qO5O5<9i*U{>Ml8maAi6q9 zjor(0!(Gm9N62JoO~3|~S$?@@^d|Y-K5fk7q(CZ@;IY=U=RJA@GwXb3cX4$vfh<=+ znDeFFVe&d@Q3o>{I=Ny|15IjsR!*h_8pAh!U#N$0=g!O@L!;B8NCF<5JXwMWEkTNe z8vf@~$+5z~BDVGveYfw_GA{}R4aS%z36Ps{HP!#xTsy-#ecl2G;G7D-DW$4fpBY$? z9ds7ZEAw)bGTIIt??8iP>tQ?@Sa`LBoGdJJpwvkrgG;o*{*yaT+?74YRHKBM3`>uZ z3#U^m=#gif3*J$IB)tIC;G2m?V1*DBg^QUoW|(##}8SdQ9Q_Lf9P-e zPj0n1pI(D2FMB$t8<3IseZpkB&P%Y7EbR6J#xS|p!SwZ63Un&Pz7{Nr`z1D5-tIad zMy`*9LyD0|do3Xdw)}jv(zH92*V?lI4&ly{Yp`k|yy1 zi5X0=fy3mSaczGW`}CRqYGOUGr*q@7oPKqpVLHXqGHt7~?R%@?77E<=^1W?+8mE9} zn~L7pQ_FbWKRmj@eyjS$`tM-tyi1%p*g+~u!h;$V%`f&ga${Z6h~5AW&BQuEVs_)v zN6LOMt1+Od!2ik=!i8q1#**A1*o~Ake=kR!w1)tb&@E^=@pen$vXBK_u5!Xz0@5`w zb3`UGbnM3$_p0mGnIlppJ)UW?xJz(>cLrrRM}aX?XwMr?y?kVY=4MC}^iw~qlQTO2 zsyqQaVFKY=g{kk zNaGo0pg4&_veAxKyimrj-u3210ODMWULt`eUFb;cH-{ zaR}9vkE#S>{KY5M$-fW#WmJhBo0Lu>6m9S7CjKy-cwG!%7vE(cldP88G<9!`nK!&X zA(wv+Fe=Q&VCN*dG!=W~TPa?39Sm|joxFhi(_|}h;1P6D#AQBzf$xmwly*^h{%Sw$ zr@`z{8#SQ&CP6*KzbZ{>XJ5LPm^Gb6hJtC?3{)4`#uYxzv#Oph)>fD$l3+wn3Lh7_kBNM;^A8I{$cp&-iRZ7BleZR2bDbr_@+CMrs<>_cW&@Tj2y zYUjqiEb>BhXu@@2$1xUOy}wQ4Yj^b=`V0TxW9U^U&l@Tb000(9008v= z+5=eF*gIO-{>RsutSaO5&)3N_+G_~joe^{`y}4GLCbZz{IVpW56iZM?q!0)I4nWG( z+XKy?Lhd`&L>9m2)8+l?nt$@RXs#d1Yi`DN)zM?8G4(P zgmd#JR_nXTfRA@)$EPDOxf6+#dY#X=kbITR>$K?1Jh!!}4mCl4=-f{@8o@##1tYVrV)W?@J9h=qQ6g1a8^A^t3(^??C!{7~g&}}Gh z-)%dhzV@x<3znMroN#Qi^T@m8K1yf>lOV6^jOsiz_MiQEQTBIZ2IVJ9=J=CJluUs; z#>UJ+&>Uph7Cx#5@vC4mI?_j#>FK2%cusy*#5tj&gg>_^7I0f=q6X*~TUSD!*oxVI zPx14$^iQX(i5INBvhwAP#b@_Qv~%37?rXXzxHZJcpI%FUUl$ej`|r&ABdm#0_S0ShmUa zi`MgpZKR=`oXM&lDIF2wTFhG&J@xnFB=Eyj4;mkxU^GpX>!CBu5C-7L^OnSJn9&JM z{*_zcM`BfE?x0ZxF_9lTwPLK&HbR*wpSDdTLL@Ev1=bP(vX0u=Md3OYTN=g$?6h8K$!t70n z(u39nN)-X|opZM{Gt9M~3n2j~GMz#@R~&E>Z{%qyqir?)wCALJL}-LAsb8xp*MWRF zHYCM%(Bw>h0NE+gNj{~itfi*)GR>YKhf#`gl2zL*a&~iWLbT~f)V>{Nre5Mr3M|&y zrYr8H$av(8z6I1E$4`PQ&P-c9ZA0=5WBIx^&4Vmn`fHUXU%b_Y*x)?roCp~&MnX5M zQr4w<{_=0Gvy8KXm;9cqdVSgWENcF?4>a9s+hKFAhafj?N%!+V_Kb9E3~Syr008c8 z|J$02@jpi3e}>8<(Ufh^52`**2~&miZ*_BZYE_N+Z~d5z=@#0UD&SQIl8kPr&=z*ura(B>amHazCrv~kDK&%YHrc@5UFGph9SK{h!b>Z*B_HfV zql0cwU^0q9uV$RS%-rwA%aKmapYPIDBMhzIll^^_XPd)Hx@`v-xu555pD5^!xqtq{ zsFz1{H@DZ$q#HMfJGY0yNXxtHQ@RCrTW`xQd_CpE_cK0UhL2d{8ZU?6DP&Dd?axL0 z`;VQFPfzU2#+qE+kXfW!0jb_?#?W@5!(RQAu=Zh2eFy{6ZFs7lIad|vEW1!xt z*|+5fPuj;ww#s5VpW@mcy{^ya_|>HzST44Y3vwweMJ1a}j84j%%AH)#Ttyeh@&wFS z$9syAjaL=Uj*U`SK1s(1?6H-K=K7kzwdvZ82TxME9lo*mxsf4DfTZ4NIg9uGz7&brU+n417Ut*7Agl% zf!Qs7#$Im@=f;!h3mEV^(?k`<8@WZ%`o=9=@c5b+_xIpfKb*2EMtO6b_YdeV49AsO zmnBp~a_t85H%4OJm&@>n9HO?(yqJ7aT`*^4Pdc+VfK&Wi!KjD#VmJq8uJMK`y+^PM zrY^|skjF8*Gmn@&7+p#3Y3l*@$(azd2Np*}g^%)#;%yS9hk*mN(JLuDG%TdMIb{#S zCWpDlm<0J^>2QsF;|#dcQPFimB4#(~BaAP+65$RAJ~uzQs|J~ORD4s8*E!a|Q!39l z61gU=dNaFzby-Dn$mJ5$xKL@U5`HG|Uy{o-KGWV5d{>I2DSGAI_Le{pxfBAF_{J4U z-D>J6O4okh27U2|9ml9>6# zOX`%Be1}?=JdA#kO7maMboXuU*`0WCsR&&U!^8~8wd}CT2E)5o;Z1-tFGlfyMuAT# zJ6Tm9kVk_3Uls6BE3fl5FGi+g`Mxr5PIAzfSZ)6GjEH6&3hBn}l8)Odd(uR4)v)op zspaI2_TUVhnL`?uIN7?wIu1-K@1@Sz+!y7edu~NS>VmPa;-sz6HLq}ddB&y60}W6V zHqSm|4bhML8KdhSpLL$6@hCY-dgr|zI6dQ!$S|YFrri>;2bNS?MAQ;$xt7cj3o77j zJ5g!Yls_B}F9Yok1n9P9)w7sLAr{fz#ToVfer{iWCR4EJu+7Kt9w&Py^p79a<8PBZ zutkK}XfZ)K^iRDDSBzWEBchDDB=DZh3y- zW+`)Mbqb4Gnz;%kP^3)_r*|=YqIj+O#rSgXsl=QB~q`(F(^I!pzJxr{}E@`{(_W1`VRG3E4D}x)%0W6tuDl`_-Vo8sq z-;}*s=#&us$m9*f%F0N~2HASwfhE%LOx}uj?pV8~Txo{$2O_sxRMS&3cQ~|e9URji zRh1<%U{=^JV_9{uekO8JtjPE|R5%dKWkHpDF_oBf7ttiasouY!WRgRAehCZ7a6dW& z;~OAeqMZC&mS$}M**XCZBkAmM8mX!f??VA8@DMdXKzv;7QT@v}4nklrkOINWqX#;u zx5|mTMVSA9SlOW~3a5yB;b`z;*m1ma-o_m3tiULf%R?lrv7|k~FO1?WJw8t4eVrq? z?r;1vObWZWKz?7^MPh#Bpt~L-J0%)@AJ#Mz>GSYs?Pk8xG@Nr1=)7dIP9IlpS|hOc zO1>*2sk%d%HWKC>`qp)tH*EPY)uGPpjg?0adu5Sky8dyiEw=II#F7se`@M(6@yn1p za;4w!&Oo3{_>B{)@o6$UT!U-i4T@V!a$H(UH{1utMd;18s&3FWlUBf4Iwu|NGjM<& zrr|T)37)y0C!d&9Y<|e_`f0b^!Goa9$#PUb5lRU;t=mU$N40f zYi6+iDZ!r70TA&-dZ7(6xKrbG6~(B<6b0lonj*^Cn1Cy|M~rxc^<|;$D0$690nH7c zP7#b&!)$@=q=;vkb|{EG`)o+Ydu|6bmPb7l0^)o(AW*?zdh%+|i~`}a5h?UBUi!d* zx$V2bT$AmEiR9r@q;iwl;=$2vg_~1U7$DD#+upr5IrNT1S2#b*i{tNJ=iI7mDmKl~ z5e>(sM$9phR|4T;jiG6v`qon0ewYZ#x9xYAQP?SgFkHKC0)D!22?+MyhPfdT6eE#P zW@AZmsD$lpEl}_bEJUGj<}ZmW@&Rc_CNXH60xWeP%nT_fbOei7i3HrhBOIURRf0{T z<~VpWC37cHaVMcQ;))OSDkC)2QIf1@tp~YKXl%kJL3x5iWOb>T<=&dH%gCQ?^{mWB z(FzxXWWGLaapMK`mA?kzbTvP~KnStnr(^pe9*LJ{0LNA`L}vl#=?rXDIuVv0NZI8G*Oo&43mIt6N6aHxv{Nz2yyT;B$j4b!4LQux&n^oKeFr(y|+03GKb zXXLNa$xb_1C+ZAWQ)rTgARq-nbQm+k*gsv)Q|l(lu+s<7cDzXQSbpK@B1au#h2hZR z!j3e)@T4^*+t3%8IA|9^r*Nh-%n*Bz18q5Q%Orn110Xt8{Nwc5+5d8J4a|L=?bx{D{4GYza8uCj)gk)Y8rXFFANK|&pK}>qg`mq9l z-I6^bH-fuZBh-OtO)K6;eJwyFdun_UKN9iS%y2I!b#`wop+fS|8+%|wf(@4eNNH)> zZB$;R*Ty7k3i``*iwRsUGGtuT!kgh7jvGHsQ9>azS_ouoa&B$q{EU)z zDCp%_%!JP!m#;E+Pk{H{r3yWk<77IhZuWHxofVeKVQU4rN3DhXPS zmQkijR2H!lBtX(XxMCUUHp8y9L>)P9=te#YQJUKJEytxm>hU=He#inFm8#DG_B?=l^kC2oZO1VY5DMpchbdvbk1 z&V0ALc#srORx}Hw8VXtJjVuEbY{oHZ%*h8Ykeo3QpOLuIja*i_Uc^F{ULIyyC-a&7 znfZGw9)!Ax`8WFlX-mc}8B6GWzw@8i>hxt>wobiJqk=JGPO2QKk))?Altd!ijOW>Y z7Whq6yHSZ|5e8yRXja`zl6XK?S08^ECM5ha%^sm3e%Ognbs09KJnr|)71gYII##mf zGGa}%2wIuo4#b61oO6|;JG+v`N|e}o(SU{+JQNo z%3CtOwejr{AUG8F(kkkGH66m+BI%1%h@RT=D2);spJyaJ5Wka~FC6>_?y*^HU9%kB z>9U1+*bup$*W(WcCVJApooqb zBM_3WLqhm41Ydm_0dEG?uks8F1-c+Q?zSTO@?PK^6}=ZPJ}(xW(E@A3L``NCO_kU3 z=LKvRd(qg|kkF)cgsCqUq>He0vM0}Fg9f=HnnmJOf}T4#f4X{6S>KO_s}NE3V*gpl z5t(HKgyH@rwusq_#TCJDmTs49HJ20?vs6qIrI?|XyS8H6wEQ5x34Z>&DU4oyD06U% zkRwd69=oo)eZ-xlnN2#;3#?E-@|srz(2YH(C#p-6kr6F;twS-vvtU4|2o}-HWOGHG zJofa&jRa6aO1T&0Sixy_3uKh05FjEnQg|rMw=6f{_uJZ!d-brW{Q0UDAWOktl z2E%xM0h}M=2}9DriKxAS*I`+3PySUe2KG)qVJRJf zEG~ZW<~KvwaX!B{5dCaFy}l1`KC6E6W7-tFJqLhOe%zN1rHg;;SziEJ7uP5`C-06BpoB^s@C-9I<&jPc zD;7#K=|b_l;2ZXAal;Y~hHdM!1-z?n;*bW2L#GBWngmsX0mS<;aMPoc*o=5eGmJ8x zq7}Quugl~_rt4yCiMucaWhpzu(u`Ea#gykiT|pIph$pKOi2M^4I#FabyWUt$Kugk1 z0T`TC3AsS00dPT|*An5%mbLVUy=8jlfz_^QJz2+2)FSkjgN1=H$|jeG&Gp>4&8v^h zbJktB^r3`XV6V4clGxSficm8O`Sbjl>L?j$MBueFCDZw3J zq6R0m4_eF-TYJ`YtPL_Yot$J9XU0{fe(XJcSr`lEiYeqtXUNp6%~F{56bBQ)+T^kVRec)e13A-28s z;|VMN9^jbVY?t%acdW?PSLjw+=2i@VRb2gO$cI?Rt1Ru;mK-8N#Sr^aisv#yK$)}O zfX#GLBB4N%3uLVtWD)MG@-j)Uc8}jparBwvB-i;tf041=B2B%S7yM=HU&>mjwYCK) zYnWfcIlb%L_t4JwV;s)q8)b*(_vzGs{Nb-Z{_wYVhMp(&<7P0iCou~bXmM+$L3h=cEun>o2n2>f zHnktEB5(8wEk+N7F_A+*X6a? zj^1dU`(eqkl;7USq8!9y0@W&^-jZ6fcgomK71egLb22$tHw9;S?b^|JDy>6up67ooM4 z=H`0KIPLe9mPx>xi7ljBewkNZ%|JG6=`kF0O8GYjzM(_lAbzFuy(s+#0xF{1MUh}+ zxV^}0K!(4u>he(m5r)ZQvczXJ|xWi#$>Wuh34C8K)CPoX9^1W*}j(X7awJ)T+1 zjA7?8WGJ>$B>JHjn=7IP%550EnoVbmq=B7Zq#v%X+Xd!0AXPrb*rx1i=90hSD*%;H zVG&v0Pbexa67df*E-|8Ezt7O4j8@a%gN4MBM>Q;kDWHa}t@euLWw+76xhuTg#%*G) z(K1Ghh1Ibqa7RV(#0WxA`L58B(>f9sX;2_KxdCj#ahU2{w8YXIU`2lgQV;zt+{-4X z6;sdDbwhXoXkV29_RvEzIG;HyPzobwP48xe!cZ1CT!6Dlr3YWlg3qGIZCI?IYb2 zm0g!4iw;Y1P8<(Yg~8h^>F4N7wV5u&&%uq zj8xyaR$evj8iQ;h5`#O7o1X*KWHV-h4gCi22k1{h!&`A?cDm z>qt?ghn)r@ED~n9f#L)jU1vP1t*Ab z6kb)p0V+p`O#;SA96j_RSNeBe)xgzaNfB159zQ=9vkq`RPvksgQX^1?Tn z!-87Y%%Oq%liA7WTM7~@ZzKsTBd0&B!PwAF&}7JW#3@bz@Z=w&n1N|)xh@1>et>)$ z&2<-t0ig}b-_^U7f|Nc431Hia;fdRc>qrd8^OQy!8O9S@5bo`bn;Z~UPq-z*^}L5% zx|aHrbe|8jG80N74B4TUeda>VAIVzzbW4K16u&1q2Z4(GCbbyv<*7~eu9I+n=Qa#{ z^UJdKw-TAVF*`E#a0#f%7{&<{E(9?PYP2RRFw#%H6)W~rBiL_CAkiwzP+llD9X@T9 znI0t4-YGSICMZ=oQ7%y^sDfpF9Vxd9!QCutg!2=Tr0_Y5Rvc$oF@=DN!BB&^sd1a~%a{-J)=}l#G@EC8 zZMvTMyMD#bp)e`$r$<~3L4Qy=7ZJW8;+HxCzSnIP%ymK%=MDjG4|oT9yI8%#2BRV= zR>IZl{?-j`#a6*zTA^=t4^Y~dsgZ0zR_zw!3}MfZSE5|`jMn~Hn+6dG&+lQbBXK1l zsEd{SLQ(ByC0;A_I!ttLH7I~Lk*zXwLBPt?lAk$3QZ}rzW1AJ_ z(F;-Ra5n?mi(U(-`zp#cSDB!3x0t{0txN^~+E^zbOO)6et@9a{FM(ON==LDHsh}(u zbxSJ}koUVUD89<^vN(d=hz}=a}15Ep}a|hG=SfE)>_i!D4@$BC=>lVEbT)Sj*a2OYG{-n*7*Sa}l*>NcXQ| zly@4t&h6Jq2k|1AP)~xOUo`yfnkYFvB{e66?t=eW)gCz{V)aWKmT48aP+K^G^Gv5y zO4UFMp0OfGv%a3X?u;CYJbFZLwP8^76xSB{Lvwyxatsc_c`~ii$fZ^VO z)Xhdlo5s4~ptM4$WxdghBiH|jH0K{G60h`41$0ri&ds>wY+mtUuh;BbZDTbBQDm~n zeR?D>E62GrLxdp;ovya@EwG=HQaS6e--q4QYI5e4HEm6DWOQ_VM`;)-wBZV!7*(dF zs99Qbg20V->0)v-sfc|QDEIl|jRA+&M$@@if_F>XG80`d(AZ2Y&DlYIo&_4c1?(_p zS@a=aH{NASOKX(#Vo_;}pVH&3)89=pb=ZLgI|B{LAVRpU+!q!9Fb~)(s@P}*AWy=` zmi#*{SW$GLjH_NJ?e=y<5&0&zp?2q#JHD+mL~-U+DbtUfm;HtL!*Zil!+1|wg^1et zkCL#m&~5Ch8Wb(1aLmn8bHsqP&^zJF&?&5sRGGBi0>ba$$Sp2dyz`+nQCEd;b!nzp z3&4iWP#?bo0zc-ev}F#@ahS~ZTIxw2uoY~tLmOR2cJhw77F?dd&F2*sBy4kiItQ(? zh^A!N^=t~JzNEb`Rms?4OJ|_rMWL8o60t<*>I1ctkrkH%JR&nGWp1*Di}eLIQJBw! z2in%<9tjyIODtI~6=PncA?Ee_nh@-Qk9S~an-M|eNufM@wF>4fortP(4@jA)RX>ba z(gkLEQ!X4T!M2q+zgEym4A*{qxr=QCSRijcvokLP7+lH#=G_pZbw=mLYIc}q23K42 zT^l7A@j1AbCCO0e)5Q`&TKCowpXalkf*8wvrjQmdt!da84T;-JmQaqxun5GrTgw6H zgxcB~-m7Mkl-4|#ED5-%`b*;m^tah>tCr6Nj{#GZRoY`ktaY^Pm_nuvI_rAv2q~JN zbRICYtF1;Aj8J0c#v-j-6U8!0hi-K-PNi+WfK=N-0{9-a&M;WgqZ~EsqudRyZf7CL zj24B5wMP>#0sAA^i6QHmbhBA5;(iFjO549tgQRD*4CibkEe37dWx~_A`Am#bp%sC2 z2hadmI4(t5?Fy`;aHEYMOlj|53*(>2_>>IMF%Uo zqyq15^Pr5fx2OQUP$;#GOw_W$l!T3@NHJ>d zn^?eZs7_i=SA$p~gH!}j{_jV?8NHJ8_3)KtKW5ZJHFBP(B?!eDSX|46B04Gr6i0+C z!Ok#wM~0DGbT46PA)BS>!f`Li2U}|l*Gz1wFKRoJtSOEm7=~3b(AA|cS}R&Wa;Lrp zjYN+vVIxi!z#Yp^3wC3)Dtgb7UN(Wd!N?#iX6jHwCaKpVH0NC8%C70`0qZxe>!2j4 zCNL5K-~*O~7-315@PsoNfXY)YGhq63)UF3a5{Pa!kD~SA5A1@>9IG9Sc*yM>%a<#x zy|JQJ5rbVOjx=FDL`MsO?r^Zz5>=9zeX6x~=yKOL^1ardsu^~d6mHb1DOrz!=)v`+ z1xd3jc^g?~Bz;WC_ss3B{VNGSDQKQXD$PO%E^T2^eNc$TA*whO@K1Thh~>lmDnnVbYU+$d;%DjrJAuzyKkJ(tPTk@yETm%QfKGu)Al2A#qx8|3wC%b+RE zfqdyOWO?C;C#>g0bRlS=-TF2!(q`r5El~Xp-fhK@9^QG?xMQ`Bynk02U1@u?r&-9) zH?x)TS?JYO2pSlaJe1=u)&rvnvD*4D_5F2E##R1pIVF?H%t5qUEe5{EgL7jC9`GFT zWrY~84%*_ofxqH*La?{GJBsnhT@`#z6Z7`57MNq9qu=6G8ABf7>;1Uoy@~;?)$7yg z685P}?anfsEE!tv&yTifW6AuOzv_+!ToB1>A6H-UKDCa>Py=)kgUk#CE*g0!Qc3p0*U-Wh%_%dP)e$&I-MDirJxs+t%I*T4-^+QtlTbnYj ziYgV+2jz-tVP?^Li$uX%;ed;4G7op~=+|X9+ApMlh3DIu>g>fIKSxd@Qa@9e&B!f! z##P$&LE|u4ZA7WXmqaZ)h#io)IZODMKrn@-M4J z88J(3I38~d^j(5tJj^JOowKp54K|kG!hO2k5R>|co@t>T{>K_gK{x84T`y{i^aK{n zx%Ii>tWd;C&~5>KAlHcC+tQIE=fC{}KbXf$@_gJn!W$!}Ju z%dRp6YU?X>J7qc8Kl}$!vCH|!+P1sbYd}710KSqtiGTqH=F+CtK^4P|ln6>36 z;$|}1mvDS5gG7g}7y^l0XkNLiz9hk^x1rQG&Z_vmU(kdtakqeHK}}K1w5+d_CB{YN zot6U_YNZ_{q!^c&R}<+2uqpHdELvh1F6e=YiIwjB54MIY$whGeSK{ENVn3YOJ?N4I8I33?BVF@iUE7UV|x7+zU>jx2Lt zVPu#~$3b}rW}cbl)0-&)oEpW#dfcnn=^3mFXKmZK-JVO)I&YsUGfqten^BQOJOad0 zJG3h^--fW=icI1OpIHGPM?I?=^cZk*WtFtINGF$3@r-t2JU0w?X89VToeyR>-~i~$^Kx*M zR}L}^Ue_3RHgDDll*u@(M(5UhJ758MUOv85Vn<&W&SoyRWaz%{<2mngHaR?g&72K# zEIJlDhM0$jX@0@R1ALYtMzou*3vkvxoIsu%u9Du&7t}x+<+VWF_-z|CR+x_f)^LTU z%+3pCs1>uq_LlVJ(?pfNQ5RK&bX0cApwVyjxM39fBy3_YUB>9GYnl+Ig<`{OIOa1d zZV-nvVHl<4mnbE_n8uXQmkkM7ZUY3I1|-C6BISTsdk zs8_bvij)+pP{Swh8RgqCxGFqDw+?L-c+6EvItn&5&&{tAVFW~mU>BG3SgLXy6D#XY zKIRJjU&`CDWB7_Kr$-foJfb$P7w2O`*gi-*YMEQ13EdzBymz_M{=xry6veEcc9cZP z?^x(4@QcR2va80Pn1MA7|0(1JPSE5)3qtY9)|_5U#DDjg;lH`RC5=X>QAV+q3>@1e z`kI;F3Ru@l8690)7p^+mUY?`BmRyjc#5h2Y&SU-Nj&HUaErX+m&cP*ZZwL-x)VZN53q0s^+ahq*>XyR=UL#$&Cn-3sn(q5Gl|Xz9t^6u zM3v8jbXmM)Jugi>0|&8~S9Fr>9H1o6uveSN(;u{kNWT&m5cu^Hewz>GW$eq_%!h3K zVd|fmQsF+i+>y@Pua;55Yb8;kRc+rgaX^{XlQne+gWK;tpK_bF%L5Kwx2P6z#+R0| zShwe!OBUSQjL0r&ugitBAa==m?Rj=T&M7sR9|W&l9gO`V#;d*VM;WL?PYh5$b;Q;7qNr`?p2MZ4*RNUza7YTukX+IgdIC>q2C0YIz*SPF0 zq}woohs>T_vbG!$cZ8i1Y=Ts02tXk9*Xjh825o(oCR=|y&1%+0B7|?P!3>ti^d#rz z<&R2~v)~9&_Id(KIz~NAaH2rvuS%zZ77@u(xirG-hiPPk(!-Rpia!U!WnSY9YH!b4 zaVfPHGv$)fEA`bPMe}n&GD>i&X=>(wX!-Qj)n*i=;wp@!Iop%ZA1HQMualm@Jk#blbO*U5E$dxMZD8!W$j#huCfnHX!dt<8PHdzFrhKzTT z4Mz0ANk06x`qy5P4^cZ`=k#wua94fGJQZ}sqLtM9m&+jIvWumhf0@btK+ENk#um?a z-Y}j>$a||oA&CHwK=ar=mh+;|*p^~Gk>g|xa3+6}@a(7Antf=<5y*2;zWJ!}(hVFI zrS@M(Mu5)#@C=DRxw(|YB0eb}t@+1+aQvSpoFJz_!w`>)GJ|NDSH_{tf{$bmA=oao zQ&+)^o<76##0+6Yz5W)h(=8w$E$Qh&kQ9w2kos1WS1hJBh3|d4e6`L=Er1^9y;&TJ zdGfd)YD9?6o}>Vo0?{}jChtk^&)?=lGRUdbT@t@gzSSN|W$d6t%y3yt>+E2F7vT!# zrY$YWZ7Sc0nda?$(Ux_~(3Vs6N+E`s{iRp8 z(PbKJE?r$lRM)3A1DSlb{8?I5ki7QjU`~y7Eo&mYboFITr^IMqS1cd4uvIj*`VvQM z_w}F$%n(1jX0g)N6YXd8i6fN#iH=T>9Jv6h8HYX}_2h6y^9bg?#(JP=sEuNWW@(04 zkdUkt5;T>UU0}+O5(Vq+yEUiOe`EsYmC&jc2;fDKcetf@BsJ?mc{bAmIvu9|2I|M5 z4C}uVbMsKD&d+~hfK^mC`inzb7iTHZ1a(I@@<@tHxoGSNH!~I%F`Fmisa3e&TAN{A zaWrb9Mfm*1d1HrX&*f}8rR_$r_v>{amUV6d{c2O`8QLU7&1DkRhSlGW(HPnO;)yYY zMRgRU8=L$BtjrByN)IJa@WkmKpSW?lvmM?m;m*s@zf5d>dx^LnzY^muE^MY$*dGA0 zT968FOANMTuiJC>RTIy&QAS!Ws7yD2y5FxJaL1EEt`nQD5x9`tcS({1EQRqmE)NW^EH80nJ?Mgr??w%Xw^L?deyBUXLG$aja^5cs?8R_$x zw7~DuuHV2u8f*CFO^k1!IgC(xKLBS(_D#1J6e7t!uuVx?!hmAY}4} zn@ifVn~VpM!Z_()8Op@uV3C-D#idsWy>R+y%u~!3Aj8nT!3cW|a#paO+p-L_YC;)b_2gYt~0o{q=?ixQ@#fXV7%! z0$254{hNWgM5ClLLs&r7FK2e-3Z*}*M}^Lh+N`+NtV=T9>wEiKt8ehvTJcv|-~8@6aWAK2mpJ%DOHG&8^wt)002mS000>P003ohbz(1cWq5QiV`yP; zbY*faH!gT+bZu;nean&~N0!}s`YWPqjmm1W%``(+k!3}4noLa>NwJEeQ9B310XQ=d zj&_eo6lT?Ht+i=0joGa96I#ejpVB{|U(h}0UiSzDkmPK-i^vFn-p9Gmc=h_jp=%y} z$|3fjJ^SeH56>FkZ(GE7x;y>x zE~ed!k3RY2lNTTG%rkxHQ-2)S7f*)vxaG4S|KSh+_#z(jv!-*H!}rgBd?%C23!fg7 z--ZvLJ^R-`e)7pbecH@kZ(Yb|zR$nOC?9?N;xTUA`b8enxEaReU#yz!^{p(g<-zr> zORZnW_>lRozQ9e&GC!R!;Pc=8!>he_t^EH#yc)vL`Op9B{r#uS`@L`8Jp`YdH_11D za$P4U^Xi2@foJ8vADX=^{Ih3wcP}rv`s`0s-o2A>)|({0!ca?{T^arXR=CbXYD z+w9#@9((?eGG*-K)i!RP+mFxYLzdq#f*jc{#qr30%YS^_Y&w^PM7AO2L0%7Cd+~Bi zLRhY|#iV#}vJ^RI*}=zUkU!2};5k40{E1uG|4~=*Vz!J|$Isv7W{?*+ee!*Clr{NQ zev^lGd;V<~yH@_v#+Y*BnjF*6#BGyLvFqgbt@oIrIqkz{-<(`-)_xcI9={E-Ik*Rp zVM1zf^11oT7zW>r!Z?Sm4CU6HFSELnJFglc#isMy0dF0eQyBI#>t;+Lj=4L_v3ZyH z(0qiAmw$wQILlj(ub!KemjgJAvMPB;_*QOK{@6ET9))CHy{L!q_rLzn`{tEDe7=ce z*S>lo|B~%Cc|7E%k0)JHFMA2XC=Y)1_rLyI^My~na16Gck1}?P&HjrU_MP|rN`8() zkH;?PA8?L-yA>kR^|fyB7`y3Wzms(dH)r1uJbB;bF6{R5fIJtrLWX09eMLFIG+*{x z_ZTwQ_NV0fjr@D-yPU&!(Asi z$~*A$x!KAs$CE8A%KxPN6m{r1$&Y=raR=Z0;Kw!2!hUVu`gCxi)jtaH4|mNw`56m5 zhRuV_F&?o;*>&DP8p&%ebbKGnl;6@BWF^av*bts|>3|)d<0#i7rv?h$yHlrQ=lwY7 zGUdQ^C1J>N>YE4It4=D9r(<_s5X4Vj&qU53Aj@^p$-~dSj88gU^R*k%{_8T{5 z57xkhM<0(um!ao>sa(|)m7yBf38~9L>V9O7otHh0LwTFeS5lVgWhHXI2iIbPm)uB> zhcerNgUXSdg|S+nLsF)Yow(aOW3m-!s;x{E?ZTesom#@>_6ws9mE zO-$R%0p&sD0|wR+a}=qWy_03O3vz}oI8|~yIjFgqFvx3CGWb&F5m+$9;}J)Z$5t5o ziZ9+%eEFmAMV3dCBji3WqIG@NvG1Cn@P9^cxVc@k9}jo}*9KnZHHoMZ(!#tU>knag z-TdS`V>MnhACb3&rAY;|w{0tn`=vb3-t)Xxb$>i-c4y2e)5xzeb#fT@GE=8B^Xe|e?OcZ>e+Yf6 zEOVGI<9pSl-B~B0u94-7KncSDnHZCZv2_Z#*w2ex;<0U2+X-iNs(D)PkG!TY zglNK6H$eHA$WP^(R{RSu0Rv6fZAd}xHVQxiC*W$9{3+A}L8KIvpjTBhL@t0wckruQ zG(?K7VnLhQ|-o zq5305QKP3I;?%bl4jFC6p42G>luYCwh_ar?t?-gdA{nUHO(Rk9%b`#leviM)p9U`y z14@@XzZF}7@}oE4d59UZ!i}OW#!jG60%GI#Nfn`g6pjJqkns{QD=yGA=K{5zAl9>C zaUl+j+6nUryp^E^yuqf-^-4J*kYrB<2`D3)LgzKSv-jOm$?pr3#j$NoQMfgbP{F3W zkE-7bKZ_E6s5sDV<@ipZEk2`YSNG-wyLcOs5?`ci#b|5aW(r4rWV_;W`DFawOSKgOnt6bFk|ZsVbs-;3i3T z(;C*Jz(cU3lJM4v$lHQGWaStQ2*as`NaZJ#Jm#&df)Gh_O53`)e`l7{0?+~KePQXO|kch5B>xon@D~F zZAdXu$-0`(kfOI{Chr8*x^l9ZOi5Mn>eDLUFxo-bY8#aH9mMxmj#)VA@vQtp;i-6% z(voC5_Ufh)%kZmM!SpuK@jx|I_NF&!*tsnjS+xuG7+Ey z9*HLv!b3H*WwC{fF3wiwx;9A9w_I;3si}GtE6n_F@d!VQ9My1!<_lE(J^v)Oxa$l} zh%Rymtb$;IW5H!(4gni7bV?XWmB+A9@SSVVm!gx-l@q*4K+o{YG@AtQp5b(!2sqk$K#UsSHn}fV-08 z=LsBxPaCo$fF+5OnxZ#|2H(bh%qFHT{9V;8O2-!%o3S~gYCn`o&k~%LAO?XWP;2pVU6Vj%e1D2y=yrXRP0F*|P8=h9Rp+p5xi1hUT~B85Y?NU6$aZ>A}9ytGOPz~eTCq%G^)7;LF!iY zgpvyoa$(?RDF#5oLZ}pvtLoXr$mU8Ugr4YzX9`6(9*%za^h%dbT$|k^m&wZ-%|Qo0 zKTNwoG`MlcAv}iROs_xW8fGi#t{$fT{`&=8P}a%$Rj%;*Uox909dJ5i1^ib${0OGp zh%s~mnFwprQk#U3o{)ki9t!BRN`gZX*(yJ_-H2Ef$KA?*Ie`pOY2m@cmFu^;fUwz- zDA*>b_A)v}i8(Hd?;g+VNvjMKDgilG=%L`o%yU^#nZ@7}FotSEI#!E6!8G;cM35sj zQ{Ay`1<)RLGTAvEcCw{h_Q~oXVS+QfT8+PFCP~+Mmmk<*exI&xl^hWsjNY zGml4sR5M?O`Bd(%A$%WKdiWDg+6nU4>opLpE+SftaIoW~lx3i7$udf!l}YFn0WQE; zBt0D{n~xF`MloVLF(~O%QQC8IWXjndE6~WMKn9qu4BJs8ZoH#2ZmNb(KZZ(FE%UY58XXHUNQ)S5cKxGF99F*(jz<& zHH>)x;98II3~Ros%?g56=2-f0onE7yT<<^V85tm) zJM-$k=*_FP@jMbX^WKWQ*HC~60z>k7NUm3nD>rm)g>H#$F-j|{=#uYc$Hb(IrHiq1 z#Ti`Cy-a>++-W;@aF+=io;6@{-)K-tHmoKDu8m;eme+hg;eNWGghRq`(>_zT{{B3R z2+$Dx1!l$Odi3HNJy53mc4mXB{1*zR=NK!a@(xO4BGC4#t%L|}Sd}ujT9u-t6-dxk zQP*4o$3nou$ON_YjaK_+G_;(LF?4FHKjAmfLxyI-OY+E#yAZY3!8+H-A5ZDt+;wguaoq4mTRa7WR9_;)E5EjH17u_Bi$~)S%#FM0A* z1gHHhnr!x68wf%f)JSmf%pNiGY%?B9n7TLIL>y~ISg~#nuJO*_s+DhaQJ7{*gR_r$swmUCJD+ITLipeDsTnt{pya!JMh#RGTRFECx zL&Fyd!z=q=0^zF{99{tc4R8`6Q!9#_(Vu-L3t=z~ z<>0kS|7I!X5FQ4~$)AyDXB!U-h)5^+><{lsBe(Dmf22t}?$ zor3Dke}LIZaVDlFNO-exS>eT7m?iLfXt3~saDgXyHfP0&5p6_dRKNL7Y`X-PfbRez zZ2(2mav}r`7RxyDZA^^u4`LsO9xPc{`fzY#|kuF}W zLX#Jm!GXYvrsSC4T8#n3%E4I3g#n~49*KB3z@6c`=FxRy4P}(w3P@|>8kmaK8#jOh zxXx~QKoC&OC<+2Smx~zLg^!Vn3$l@K947>!6uyalFY{{#kH}7CLDI9}u3U2?Y&3gZ zxtE7Tf)hSI(1_^(5%@2NHwwTS7scf>_{Btoj8MgRB)CRwb(GnVE0$nk6-LAUn|um~ z;(?)D(SMpnUS46;*NpuKH4*5(u~1@VbHE7tvv24@^CIKVv+&8nU=V?w4&B*QAaf^_ z7z5c-{cFVH#lkNJz8Hx#F!unSPAok?C1h34kb2%G4aDeCIgho`4RyynLxsBH;S8`0 z3x;78TjQI4N)(t<3sjfH>gfcF%Ufse1%wUD=XC>Kp*Qh{^Sd~B8P%c55E5OaI*`G0 zvB&Bpa+}u{kdRUKWvwL^uI~DZ{_mQvEZu=5#mq!_wGjLFz~%mR3C!e@jZ-ApU2|!v zIgAef1S#bf6_}~87DhrEq`#3dMt8JI!vd96w-pIjlWR&US{v=i^)22SJ=(8napTD9 z0t??Ti9=t$Yrb(7{ZV5=UP}Jdyg_=Ym<(4)9ArpE3n%eT4aTZKRP&3yl%jeRP2Q;h z%Z_Rt&WSVzbJB|VI>NXlTo4#PsKb8?-Jx-{@MsVvhY$GIP!czo=P80*P2xP|!zc&0 zYDFfMAr{{afQSRwUp<)y4Yo}8*<04*Ar8?p`;w&o?#|)(fH-F5>AeN~*rz*u=q-3jQK|2BYq>(X&$yLRmfx2KR zb8AKcgzhq69+wG87jW-hgJ`yDTDi!;H+3Dsznq3&~ytQZw2xX{Nz-@8M zi#O1WWAjWd0BK!HPx4|h{#42r#~m_0s!T!sY=H1K?u@ zsprH@bWsF4WFUN7SL^*MY`30pjqtYQR{pApeS4-KN!j)HS3^?IiMUkO@gE3%{5)k; z^|D`hhSla$-!OcpWM@W7rrhOF-E_smIUB7k^Treo>BzK*Xw<3;W6WyN(t@(zE)q1Z z&`Pz*W|m=FkFHn8tuki{>tb(DPY4Kh52sji#e>>9d4?5b z3hI*4@~Ym06rO*>qL2bjk?;5Xog9s=W~LLBEJ^s)jC+6aijq%Xa)|PnN)|Q6y(VdH zMe@WhVi7rXj5IUFkWi`zSntNN(``rIQ~v=u@Cab(ii4&_Hq8L5pEWCVd1zYdEY)Ar zTQuk@C_UFz*UitVeuMm1l78z%6>!n>!T~wJqfao7mAYE%!5De`J6{u0S-@4o;G-s}31BOs`KFgb$gC1SSA4 z9+N7Rx#zi^8yqDdV%hi5!&u6##8qey6*F~$Md`^+om<#Q)FIHTK-d$rF=AV*Hv;QS zCfN9Oa)%=+zSR)}yjgkff-K-?jUWYekndq`)_j-dyUh@F5Yg6wIT6K(h7J?R{!moj zw0SBroe&S)bVz+Q%PHO53H5+$C8niSF8Fop6|TbNkwnQUzq*ZJ&uref*s0)f zB9Rju9*80Kz7w4^)Ftaqii`U%qtkr+S#}KcC?n}Bv3L6U6#974co}klX_QRqX0|hM zI96w~%{2*v__u;BPZ2{Ysky>LidoHfsI*+NPD?zNK}JMV#!hp+LnrrsHG9buENM3C zeIgwiDi-2S(-yv!VU&Gw<#Hd2T-0{dKbXZzeroPI*ORLI4wBiF6{NpYvWt8OQu_|aTmf^eyZ zAk3R%id%=|6w8g7J)~lYIXnQMzAu@PCq@{SpzIy3W$@0{pEMz7)%=3o6Jr4|t!Bf_ z$g(mRq?~3uj+=cEf@DlwvF3Rgg6dGMcBZoLS5-VV<3Qi_h6I~q4fDWh$zXljTwt7{ z8gV*n6qAaQ^_DN*;(`aP9HcTJaDw;9-Ige(CsuGXO$SfpKgTNr9=q{Od%I8tA zcVQuG8el@gmt{w3uHRK9uE>bDF1WkqE$AJQH(6BH(x5{PP*7jN7qTyDAx8X+zF0`? zo~JC#NBO*U;i8 z7lvQWBx%eDft%svtM8CDiN&Jh)1lX|igl!hM{f35Rsqx@? zkiT*nSwpTU;W$KbO~yC>^$ux&O92ZGlKVf@8oXLp&eGT&#bM3w=dB*0oR|xYrQU#M z7p|bo>c`uM$s6Uk*Q33+Frexz&zMbX=_4v&H6gLFqVbxAYbhfaX-GK83$t$`k;$N) zk2h_2K7XdES<-0CSf!`iG>Q7PH1wt~S|yc=YfX?%9&+NEK;G>q6Z+SS2~iOT!dEo_ zCn1!QVAU>%M=J&CVc(4FK{+Hbqr^NUC5Lc2$+}xjg58)LxxN)KdN^QNr-C7rf6i_m z=04$?S@~w#!@he*(W=5K#~alGx4geaP3wK60DOl@PQ`TN4d3)_{Ai%X>aeU-@~mrM zfi_eDR;^?{Wem7Z^hud)O7MQ52fb8qPX*lnIqv)BZRm#E{%=dO*(R$h)#Q_6p`Dx- z#Ryoam!k$)*2)xDvKg|$Fsc>Z(YZ?`LV40v->d0OU$$Gi}&^gvcA*u!Ba6{c6n6QV{PLPniF*x7l#)jZ_zJ{K%UfH>MB<2+mOtf0N7 znrX(V<+RlFn9MS4tia_0CMt)u)=a{JXeaac5OxEl-;{clpZA&zu!~o4`eo&nC(1iD z-$S7x7ta+2?Uh2WUj5NA`Rlg*RW)mgh1@cv?yDj-aQ!Rn_VcXM05c$xxvBvobe%(R zCO{g7W81cEW8zF~+qUgwV%v7|$F^-vY}?$a+S4BP+|{SAad`1$gbVR&7`S+f($@00 z##z!7e{zPjL4c`@v4HxT{yAm$VqIQ_Z3!Tgi1fl?bKG3GilQY~Jrh(7>i8BhsNdIJ z;)(szL`PA*27APWd>E;$8Y{ATQ>7G!=TPZg5opNI{%w4}#>g<;5uwXdgE5X&P}jRz zdGuXTPn7se3JStgOg*=S{3rF8&y0}q#C9FekWcPzu4|Rycj!DZo3v=sZw693lhlg6 z(y4sSOwJ=v($(KFrs|RV^_RKHkLGRG(Fqjp(t(a_&15*LsUZ2MC!tt25ZQ5HK|i?eAg_=n~}u_?2vd^`d_)-Cm?TEH#wmI4rw$(=6N zO${m2Jf|X8Z0=exKCb=hMYs#Q0JHkWogKe5fC7zoRtoC7f-~i=7cs>^RQM34EZJ+u zZ9<1gPPG<*HfN6ytGh|sn4=|;-j`l5mZXE9OAQm=N7BR^jzk++~6w@?76~%oX1QtIb0>B#jj67h&bi4$|_j!mV@JoA;qLYdN_1&RN8@Pbsk@? zdb7U{_^S6d@zb<6vz$RI=z*$JCIY+!vR4M~c|cJQtAv}jSb5Leo&Ek@2isV`AWqaP z!2-r7zcQH5k$i|TzzH-w$chv{jBpAB; zg7Wxzizk<6+QtE?uy<>omhsn8YOVYeu_g#?ek&uXm0pG z^Y(d1ed3HO?prLeQGqN=yQn$D;R>UvVW{Kj+#EvOFry; zCaO%X(&4K0m}KrZON`SVE}6MMv3R-l@RTMaoy$|$Xs$W}FjAejPnSB#szuf|>1mH_ zECF|m!|!9Rd|PLR^)!yt*zt4uVa!mRsLF*IRaSU?tCz>;3s-9e%uf$^V3=+#Fttvg zJOH9`O_~f+>iW_!VzvWYn)GwN({32+msZv3Qpm0ra36&{sy}E>TVde%X}$tP4HFZT z2Tkq+gCq}=leNlOD31wNEOURRn@YdigRu%{Goo%53S8t(gMpQPGSN+*spP*4c1ou zcyHU_SmTdIg@%beNnoQxhaAu|EI@zzk1ik9eIwHpZ$TWPBIk~IGqTLHF|anIKjFa* zP9IJ8J>4EQe*}zUsNY3=yUz!iB4On2HLzPdL`-kw7ILFgpvEw#qD>XH-1|Zn+ojuNo%swKRJ)_KSJ6IDWgu;*p0OZs+)IyRI=_vO`+OF0mN0-bKe>s#T;XqJU=oq?%@k^Mrv<$ zk%nexfR6@7`kXV{EKILB5$Xry?BNgy@CbaFhf})HnMjdv>c0jn9ka&;Dtiit;2u{1 z3M}j89brV$75+(=eRM4&6W@3o?WfibL5&7@F)MC}lFcWU$=yOw388xB)Z1wD<_C}~ z-Bi~0Zyepc-af7*fva+7w;ukH=+z9j_929wJ->1J3 zBY)PDyPhS>@9b6nYF4cgzgLhgX%1Jme07@dTb@cJyHKh@%k1N*2MsUV98`!PzgpO_ z$wRIun|)Z_yPSI}(AWKLDa1KF+vY=itm!khnlb%{f5PBkn2*u6_OQIy>ugM8P|5d za7E5r_NArX*6Q^%@P|$BqC~bSZLVP-hTh()@60??GhA0u0YOG#DH*Ms`6wMCuw6=w zR9LTALL|YL`SHMe3Wk-c>>6H{&CxT>2ktL6b(uP$+qv-I(&m5P&Q=`k3YNwIC0X)% zoU4NGBv>`-k|hve21d%Ak4*N&Tww2kXDXmtLRP#OY+9SVb}GzG4I!hcTay2^5dlq7YgwUSCs2 zyq&XFO*N~XqNQRlX;aDAy{cg{7y=NJgZ zHK+I@ex8CxEl=PnVW0E;H43CsP!Wz9sMYh0n|Z6p&xN z#!%Pa)0kQ6F2+nUT*&FF>zN0)yL6wGf4(CZTViRc)_H1qL{7W#-QFY)2GNK@Wx`f3m5!u&UC&IloSCPFi(e?dGbh&Xcr0 zaxSW3X{a}GpvpMae)@r$v@C*j9DlXqZ#ElFuRv@6gXPdPclG(6L^+q4TwMT2S=1XI zgHy6pw{*s&vJi`ilz&Mp7OYwpFCQ*3fdo-tY~nH4(G+KpwrUlnrK{O``!n$0q!-R) zXS;hh0vR&kHLW_>3h=nDo4SRKWf=ABRY{d}E||f+N(MqKR1YR94HWvn?>B;xXUA9( zx;fJfn-28m7DhO0kjJ0O>9R%(H)j3UL%XK8T*gj4`sSXG zad;<7P3?Hr@HV1*2Cbg?iXP|wMF#QIAJGR_Oc7&6!~}L-EtDt4kW8M>xI!-yTLDJt zKOc3&DHQFCP)_uHlW=jYE(RC9F=+|SUu!!CW1^Zo9@RJmInCb*{ddXIml&uHHmjP{ z(bTzgJBwK7Zw@K`THS&m~riUZt(G8pODGOfhs75MZt=dXx zaeYZJ=>S1F%@>vgKo*%x*WRMEV8|bHU=KN)nkTPJUo`Hx(E%yFou5U);-mIn6ID6= zlIuz>1If{@YceS#YAt>CH%N6EZNtmzS7Z;@m(AQtnq3nPS~4krWZT$u(O<4BC0~QH zJ+~^{wmS7;I)rKBM{*y7Rhw%l*S`dB?RY4LR}pN_+9o0vSy+*PduEvDxCLDtUpuU^ zGH|drBBCZy7%K0#WN`^Gu}Jo8^`q9`P!)yB>Z31}ZLHpW6U4Qf<%>6K!FnLAOfd=BEa>~6TMse7r zbE}QlHMM>4$?9n<{^1^hS9+>;GmgBEoUYJmuXttuVJHb1GR6`Fq;aPPp7A8BBp<`} zN_H$JCxC(Nt*NG?e+4Xb^jLp1^)UHLo|W#t1Hv&idhyZ@mMCRpxs}dQ-@=wX5m0ul z7O^*%WF^$cPjgqDr?`K!dZUNyg%Q31G9hRAz-&W#k>Ajwf>>dNW1jN89AKgQ=VB|4 zD~e|XaEpd5yRa`ZEKiYLe~bLSDJg=XJs^0Da!j-AkzSOAJy>E3f@mn_PE5kCP6H`P zp0Fg;m@zhmyH$tcRjBJ;?rm#XR$}2uq?;b4=lktu)EkP+`3l-y$Z0=tPOgG)+uGc_ zdGqwq^uV;U1E#gxD2=$@L)BIX@2`3A*T?dx5lL3~O--(n@-B4zaFeX( z6M)DBnaBQ1{NxDZYRW3m>r>|pNEvh*+E;bp05QnhGZnm*QCJzu4wb{?B zC(?H^;@?MUs-W0T#kpv>7lda=;nIcS_*u?TzIj~fv{G3SIuf5;xmwpH6rt+xzQPBQ z2zeF(N$!EW(_K{=wK2sr*?`OFp^3=o1a_KGJLwGf2`ca&rA4sQJPGP^V(*enN+t|v zKNrWN!2-SKf}?qFo52>qM_0*5F$p1;+qEJ`;*SH(fSVouZX?$!VDumcU@a?6Kg6rD z^Y3syZ53+t|E;+U^%VY~e8!-*9n_S#c1N1*?mQ*wbZ$(1lBcb(0+iLO zvMNIu8;$f4d_nI>gV1=Ld|6n~N+Vh^pO}H$UWdL*!*hz6u3PPUJgLM8MfP&U3f0_r z5cUV&{o&X+>hqlXBKRIH<&5`h#$YG<&=!7@lii>a)DB8& zT++9ChgUIW94O)jt0Z|MT-8XRx2W6gWk?A3gO`UlYThXDvsH!p zdj4_J`|s$?0_ZQx z67WB18OQ=Uy@TyZs}E^6Sv=k_Uka{Q67IcTuSdEV8-=u0ZXfeoYv8vx$G;QWHRSLA>{C6$ z)Ajm39loyK8SjhyPEj{O*z+?P-+i5V`#JA-lH|I4-H4z1HNQ1DXv_>3C$<_6`RSPU zRPcRjhb8Zdvx#s9w*2m9HYAO^G2L2_}-CM*LiOe(lq+oK0eC) zn4##Rj7~c9CWneBMA%UId0M-61j*<2(Hu$SLs2 zLwoK66l_!Jhjr(rnr6=E&c8-e=gaK7dZ;n6YF{6yKg#Ua=%Z)SzBf!-=WKwQs~<+vW8{(EG);%3}30z~Vh3ct?e_C-zGQ86M9>=Y873-W#A0A))> zIQEM&i-@qnz60mrAg+tw6qgQs)|ptgOi+F+*)p0Uy2^$>hNEWtxXaUbN?xQTBMf-I zf-_EcC-2d4YyCkr@6SE|>X-!E$Wm(j9pFOhvT|ql)EYr&^_81&5m$5FvJ?buY6O9I zxKBh~o)r4v!I}=?B4p%G80y$#%c4QmWyCxPVINV8t2gqH%_wS|>11fMDr#7@)te7s zF<=zG4Kdl0MkajuntQm7htT@;bNK*)_S=Ty08@N~)U2P3tH};`A+F%7lovdq2wV8e zL>afg!#FE2D)#EjWvqT_7{hGga|j63!$c0*VS$OtF>O?!#aUAknLl&WBhAl?K97k zt$Fl(xQOoEyw#@Z-e2ewDDmr2rtC-Fp*G7wCO$rYnf<51m!EgnQ`C!qQNP#kx^7bQ7kY{_j^~P64qQojs(VW)9$3p5lnH^|l0dR;Rc$66Ri(D8 z6XG2McwIGjw9>$&eQyG#VQ^E>ZLCE+T>%4h)MUum?}O*1=6pyhFO& zRD!~BW*66@Zw-5HI`)=J#ae?MPcS=BL`Y~dz!L{;!urQ$|3KW{ln4<1Hz58pMv}+c zEHYXz9k~XB4#&!f{08T;8`u+OLByF5c=e6N&(EWlc$Xpd6A&M%5I}i{`MGGy^lsZK zYd5u4wU+5zPZUXsGA2{vlu@DPvky-l{&!;Xv8#DMH#^_NhrWhN%KU%OV`eS{BCNk>9WpkBuswc$r1+{-lY0Cz*l?TWC zm)k%Wdoq++Gv--s=i}- zIT@~r)t{JRQZPGcR0Jaox&aRzjWTv^_5JGl$d!;LpMf(GWSz^mNgxDJkBUoO8m64H zzQGV>W)N2(n*k}f+P~g1;6z|a{A9&P80|-LWlyKkGPn$jJ6P3BBdC6V(jDL%g|CM> zKZ7S!i$S*&eGK_Gsb)~)R&ntt>fKj^oGbGF?w#VC5qkCEOjsbW3W@a<4U(F(K!$=9 z@db?%@%f@NOtU`8^Ei!mhb6b&W`P|* z(Qs`l3{brVO>Tm)t$<19x@L!I_tl*AhcMpfvPQ^@4z5_aqi@Ue{V+cy(TJ`Os||To zgAEgKTbNEf#}IgEGx6Dmf3?VfvQZk0%8EBhunV14KuYoABP(^ zj?Y~lYzRA7XQ`i^qrz4WEdr={-(VAx{Y`NBNy2L(9Gwa})#nvF4|nI>CxX;8^mAyr z`&B_E#kOE2Be}`UEE?hk-SGR;S&DBYq`62j)!rs5iM))2*~0{l6^RQzyfOe8HCJ9c zP!lOwuErw-2G{wwp}z8yI~Fx&bTq8Xf|Im8;;#aBw@+x|52=Zg>K0qE)`+SUKP(=l zYM-{1b9)))&Vh_QsG&w~u{lbJlUC4gkPAr90VVK-Y1o2dgnX8vyjyMuy!>33haMUs z#%>?LaGb=0efIn+>KzEWX^ye%JR|!4mMnb0V7N)qzptNCBYLO*VQnc=QsHPG+3`}u z4c~i)E`i@vUdh;h-rL_b8%VJn25WN>-1NImdtN*dM+Lo*&72p1ciaa=5SU>)pkL3d z?yf5PR$mABVv_md(9U}g98tmuA|5k7j(u0i4xXX(Ok>{0Xqyn?bE;TA&^n; zveZaE$4HN~dl6Uo&D=(qlIW}yQ`%ZA&X{eiaIf?Z!+}j7q*N`ckly)=@pwdI&f}!9 zyO2CENhYbOZr9HZMljpqd)P0)k(rO{0+QF&GK_@q@J8XwK{b9N=_5r9GWDAwePHbz zE5E<*4sqRDfEm@W{G8ulNrQX$odQS<@mLx;o@u~Ah)hfc;aCQ0W*Kz^`itY0zy^2*b)!+BM+rL1hBfG0N9slU1)yv3+2sOD zjHn0G8`f|K_(u9FN#wt_%}F5siGyQnQwou$Qzz?(HqYteu4aMN1AaY$*LAUyn>c_# zf+{jn?Dozd{bJrwQpN=e03B3$#N5K9c=7||ED5F<+I53}#zE4l&$!_zdkM7+FD+EJ zejWN!VO?Y*YJ$Mj`3#>q;1W&Xv!D^=-c^BzPD(QjlTP>@9?uBTw4VjM~P4B2hpef zPU9pA@fQCtYQt`?WKcmo3?~`%`nxc3$B^g}K0lBju?kc)>~5B*!*ha5B;qzD=*0sS zK9^SxGwf6|I{)l1Cq`Zy!HM!W)fhH4nTdFg=s}$U44U7K*1`kO3^t2RTJB(81+J<1 zuU1-2VVCeT*NF0+PjZ1tXXo$1amD%E=}wBulZ1@4 zzb?kkVivo^qy&M+D{T*rho5MyLz?8&N8){dnXjok z_C2J8`TxE6z$5$QPz;SSG!cvL$X1}?OLiZYi%nAzH|S^Aw>`r&_lwc5j38H_)0({# zGZqN)fB~sC)!NDD3D@qR8&~{Y7aR1KnbrNUr}O6B0kV}uAsmlrZqXy-$svQF*W0WH z3c5`hr2yjk({u(ARtkt(fXPRR_AS=*I=H(Bh&Y8W6q}2=0GJTGO@%CyaTvytvj~{w zmRe|`|KPqt+vL%&5f|y|+ohNS84j}Kzho$-%O}`2HUs$WeV)?>o8yJhw~f0U=zaAV zddk&sJ!?}swQ~i6#lPsy4%&%%7#U|lB6#q_!Gi}RNf3=6>r2EO5aX)(iu-;N-wRWX zD1!$XI|yAa|2&g~DHg69Au8)H#F^fv*gb~AcCpwx%$Vmb+U!wBnL02SV?qTgfq{uS z@uElhl3H{*9TmY3Xsi6286X;K<|!f(1LFG%c7t;!ar9Iza6ZiX_$Nf)JQXZtt#w1fC)n?+`1%yf?tyuV&#pf78r1N|U~j%6B&ierKfbi1}z5 zO?}F=-coXwD=}-PN52$2zfjQ5_C$c-R3|BpfQJT=G4WpD|GBKXrE@U@Qx|@lP z4&2TCzi?dZ4SkvsfS&RYzQ^12jkPifoxCn|Bob;a`aXr;#}t?K#gIE-X zy?m#7>v5J6APOnPcZrt$Hr?7X*;F0be- zCtS;8nr$>95i$c&$Y8K-=)0D=7sTpndh;}+}%;t{h<(xz2sJ4?*TXuS`k0h9W zJRwQaPz8$Ny~B8w6J6{Ht2mkAcJ(jAJ*tc=T%ux5Pk2k^hO;TbmaK?Vqt&AZRCKhE zq7%TIjK#1U_YEvr`AP5!rJeefhZWtxxA5Z;0sdhmgwtYjQ8pc z?n%*!d|4UR{Xc%=N*J4K3Ret;;EJm>^Awo*NB7d^+zQ>0_GzBIv%3tdAgmO1dEg|a z@V~=cRSn1sP$t{lbIKF|@Cu=K!GJ}PdFz~acp%}0{pb1Nt}%3*@@89kWOJ>pd_?eodk-Bq?E?^9`acx z0|WP)xV>Uu>bP9?4%8}%*%eJNQC-&0jKha_9`JSj4ZYxA0=+OlQ^GAGP%5d^z?C`& zs$ZK}Kw-XSIQnZPE?^v&C%ulltPcalzQQW(TyXesJO{V7-!y8zsk49VIg@StjgiA6~VFbJ)JhG+w)e~URuIJBn zVcE9I_(A_oL(w(DvS)|^GIgGH0^cZJ%;fmVl*_rn5d382>zkxGeyz(4-uOHT<^bWi zDPvX50A*}|gJf%v?7u=-ZqzJ^cq=_OPuac6;2?V;7WcGH?>6MjvBbfsajLZtA;q~2 ztJ7*Tn-ODGOD~o;TV=!?Uto32js4LH#NJ;YWkv#ZuT zeshCQF{xbomyb`y-Z$rqZ^t(&yoUGXt*BXSXv?Gm^Wp+?-32b1*gMpsu2*H6hfSw0 z7%8bp?T}Z>ub-da*d0d-f5hWh6EOOQCh5uvn677%wg-{l=}Am!(n_*iyKX0;Jw>`T zH5D~1{wU5EK<7Z9yX5wxfNW@&4_TEb(-6&>A=v_J@~nC@g8}7`<&^Ftg{{Av-D1N% zFrnu={0i3%Wg2M{VIKiXpwWi+tH=6-fP&T^%H~^8tf{ZLjOUESuSr=l6D6QF!7d8H zji(Gm%$gYeSr@Se7gmSu2sr>c&6G_*;O9vDbb8H0)M=ejKD^(*q?~tP0c3_tvg)f5 z@>B~nYNhC-p{T2GYS*ij9_PxmMS^X+hi*lEE~E(8d&GRrZLS@cau3ZD#$0!vez{K# zl+}F42|ipTQ6DXbA0k@3e~8asdhF>$SM6336{ieaXJWFxdg-dExF9k$5WBRc^CqIZ=ZOzH$PQJM?F)U~QgmW~IC z@DQXqkOeJGXq?Uqv46RBaXYJBKZVnDRJED`v;wZ5bC}g{95)YXTnuO8Vd<;vzPl`gDGD62t^ zTPr2~XFytL>9IEIPus#E^DB~s&cLx&dhY$WXg5rfj)GR|Z}dZ<{aMwC70!%fBKy6# zNbU5h3LFk_nI|mPrC0b3q0lhCZ9k)FKe(PvhgY*|&6KFZ35_&PQp8(DWw9G8O(m1{ zOx5Tg5A4{5w$ub3Y%IVGly53S32v=!Ns`HWaVzH2Lz2OP?~Y*PuHl4Nob+Cb<-lIm#R6Roq7 z3{;?|HFA#T$P>=AISxP_2{>$oyrDiN<8#wN04Q%W zJudQohEVcQsVJ#ET+i^35FOrHNixVAUn%O;b8r7jZY>H#v0~AX4Pt)nSST;m^Z@@6 z9(A9KUQW7qg{6X&j44PdF8^gu?cHNaLq4gPVccO=bs;XsInupvPbuL9RBJ+XmI7iQ zFL8jkKkZ8`7Uf;_t<1S5XDir+l`OY0oZLSey0;MOPJ+jTOvQJT7N}RR3Wy>;kG~lD zx94g&j|$@Yk6Mhixu!=b&6jHx{A#0&@2j^y&1c~NX5O|U>}lxHimts}it}lG_<{8T zsK0GmB-g)y85ym_wQFCwl3IAIxfOZNTwax!TPMu{iJwHkaJdS=9O-EJPoOg@O})l4 z4Vv0iU_~HwVou_$g6rG?26dm7TJB}$iSjc0@f&Iqx#5Zwsbe&HfNNBv)-ORGDF^r$ zH5YdB^fnt9)RaG81ZILD#s4mQ;@zPUB<;NQf#wOkoRZ(#POyupB$3l;#UCX+HPe4baA=#oBi_QL5nq&PrIKFAP6UrWjtOYe!_z8o5{W;5+$0XR@X+Caj_IGP z7did?`R*V6He6qu1i8Cxo&0U5C!RIlmVU1OVaomrV3iuQ`B!bD3tc>&*>`<&%uI52 zWwzqGA!*-^$@jjSTG4@sR?=5hu$W*EqdG_bh?SYU#hh%!-3q89=0c8WR+vWGjA+AR zsB?MR=C93Bq!b3#U4Q8e1X6_(wevm!ymab)%C(NhSRo`Cw_dlXO9|-8TvnV!Te*w^ zu_V)OI#0Gm* zeO4s8e=z5Qt9g~dSHT0zX_kT0S6{5pxU=Dy$qx)n{Q`12%;iiHyy|z}6}DgSiA(u= z0b0aSrRkG+ofMpGtr*zGZ;Z~Cpn!-Dd3mSY>X#WCP4-MJ<1x&*g?b#czjpL0+P}`! zw@$C*Mv-djyX~MxdC=@tCQ+~PYbvI=FX`+m&oNz>0DKQqvSxiW$JFq|dZzYtu`lB7 zAEtrMM%3NMxsA#9nlv`?>KbCXxj8KBWa2cI+FP?-Gkep_j*K|^QTvjBAfcdF&orEPA7nL(L2NZp3~E?d};vfb=+a&p{VV{g7a<;h)o zG*LJlD`aWUNRp9P$#TKA+?9Hk7&XxC^IUU#3Gjv!4HjWn$vxSOfAr`{3>F|C1;zce zOIll%@)P7Z<__81NV;1*evu9;EvQwk+av?M5Y_92cP!?`aTMda70INbs3aQO+)kyu zc*UN!$b-_UXJS=}J+C9O$#JYMH@izMw6eXC$bk>vD{QmLc1 zOs*XL&LiJi-mQ*(JIXjRbBTapVx*iNqo@)qaRjkC%z=Y=j{eRpU-(&kLAnUN5exW3xq7$u> zTH7a$6*JJ=b(iIMA&Q=Dn-$F~bqJI!OiksUAG!2p^J5eK#Z5*4C zMLf9R?A4OSdZ%`UsQu0F-WuFHnY09$>f~^!A1JA3XAOdyQ&K7Id<`l}WV~O~OL*z! z<9>t#{VOKz7JZ#)jt`(Fn+7;tlJj2F!?Cl+rM(aPV|n{CSS_yaj%9p^@JGHHzH3^F zE$FS~!d)qqe??cvt#Xpnc0&4tVCLAlzhe3sqwCpr?MRluiQ3RyFG(T7yq*+v2E;+! z?+7&PD{FEth}CAqz*a*Vs*U@8h5Gljq?3R+%D5r=a+R~r;RqS42JF?}nU;EO&%;oP zhH0S8Y|;aRx-^MhvdvoU3EH`k_H}wF2mIC#GA!}>%keGN-ey$L2vlU+x5m$cSJ{K3 zJRZ-fB0Biuid9->B_;M@|G)#8v;eJL-}14tf19>ifa1ypAZL8^O(7viX3MB0TRh|T zs;tzNX5f9TTCKsr934j}_*YRmey!wHU_K9%vz8<(zzp84FSL4CCyT}6bza$-xm@rkl3$~1M^F=TAT&Vxi_rQQ?HDnEru{u=m<_jj9SwtV6Hnb zJ-t$nY(`u&0wr`SC|ddW?Hw_29AZuz|GYb4W4&Fzzlv#&pI-4q<=s11-#rNW5)M>Y zXREL3ERIa*XfhJQP(XHn?YXHYDxR|ZN#p|t1&IPnbCPuK8dOqaR&jpxT3=Em<&g1& zl26dbNWALEzP}-#I8L5D6Dy#bT+{MZEHdKnojem?Pukg3RLg?@5JY=7_`~Lj1993I zLED|s(0RHdRY}yExSJ2#CoD{R4LM4d0xFH4Pj11y5QtQ_?y~J$*(7+Fy*Qn>+>>2G zqH4H)x>#C1!UZkB{V_B})XmVlm9GpNC;o&8P59D}>L@$0F|1NPt|=hSG%O9jQb{R` zuihm^$qB=T(O*Bo+nX0M$u@`)RbJTtN9_BSpkygA7Z&Su4&G^z6x|rmrbRn-MQ6nk z&r>AQb>Hp@MUv>nJjDo0z;nBXE{$%KNPhgAI~)WBC!Sw33b%nz*_^mj8#$X3v)W&+ zx;Qh+1w96EeDrbh#O$Bq-tiD6suE>KSyx$?UPkNNtQOjhcQ=a+1Ik^Uf=#>iN+!;N z$*_GfQW*gO^>l=Hm&^|vMPs-8W0>sCUlo}!v_nU+B3v46H`o0St4wpnrGed* z`Eq-LC(w*hW3r{hXE4J#Jji8jzj8ckClwRSe2y_`jM|#;!&7x`tE{{7Y29TlPrwU0 zVuG&6Qg-JAi?B%JcUeXS-p%%9X{H9L>~N4GGNYRkt-`(b!q;J1v(ObGsl!iFO@ZQY z*HCynt9JaUocLnMMY*wl0cLmBB4BS}#tu}IPylq{a3-|edWRCEQon}{Z*O$GPrp=5 z0l}E=_xFs~(n6{)Cb{M?a3QRymumR#7DZa$>0+dTL2Ce2A>M3{=XJR44_c#Zj_NsT zHfpnZzm{^5C#fDU=0=?zdS_ifWj%}3!cE6s-?0hJA&Evtg?_kuU$Kvj-y)K<^Th_< zokrZ?NF5JXZzGg8C*P1YSq;n9=N3z`lM)`yGzhqaD4|BMNQltr)>X*r;(Z(MWaP@Ol^4lXNdrv2b&jgfWDEqDXI%) z0Qv!WByH!sYnDciJ*MimdzLrO)JAjI`7S;Jt3OX9rSZ6ioIVl*lr@QpiNX|GopzaA(lLaY7YtzaGjc03vpG1eW2Qx`X6Lld%#1?2S5K&qh> z1*tia#GceV&@rw*6*(_YLpZr-yD?&RI}4_S7;BK2dFGLPBRAzc0`#|I;Oe00^4)X@ zCmFDq&a(G(^CFL}SN7sbKo{d0(nk0ULx?1G&D2y#DQz!URh~+hCgAg%AFftQv0d$r z*DA>ztw(HA!W>d4Ct^FA?QvXsmNkKCeZ^YbBq^G{?ce+iL1@TlYYdXq!~aAGEoe4= z__OP@(gE6v^%-Pq=3Qf7@eBDl@Ju0>N0MM6(snI?mBy0*;CaHn#`z{a1?8}H-93^$ zVSYSnG#&-B;@oddEL`>tRWVmxPYYybb9F`4Kt7^0r8f0!%+E0i!XVAjEHW;pQUb{+ zSmf1)cweiL0XC(0G8W#rBmoT?NwWry_$A7?aJ3Ea%(hLWPzlbEU6frnGihG6=2#7B z{65^v?Ez$M(pczM;iDjPh^ zgtL2RurL)tTg}WnG0>Fh% zb`e`?=1JeclhH)5#hBmQ)6f%q0k^fTNPlhltQK-uQMQIy>>pIw70Ho%#B2oKFffS- z;6w7)OVi7C^)J3~TNFz+b$4vuIL1eJDLu zyt9F$8kN0s+MzKsdjm%bn4J=XsFIoV)C!#QesK`vL&KPy}Jhi{{G~yt4a>$Uai#_ z$kAA4@2l1bAqvho@Cwvj*r5n@pbQb}T@ZvolCCk6 zLEn}qX9P4XXF9^EDQ~g@k8UiIgk|Dpg3eyiGk0ISZ!#hLr8**7 zrrKM~U3miz!PS&$9&548YJZX_Wnt=t<#w~_3LR`R$CFM19@Y^S*%&d+##u;-c7*?F~?#cXf)VBiJAK-vbJQOxBdB7{okfCO1o#TqYIb#mm_SqxBbaZPRA>CcWT4~o;Z;i&7p>ZiIS@9V})M8-B?*+S8u~ zo4aM7cFDKn^@>w>{j+)Z#>Sfu^E$VFQ%PnnZa1hL>-;MP?mXSwi<~G=%&?=ct;Y$% z-k+0;Ikvp7yN?~6d)FhsNBeV^mi>NJWL#y5xxRnP5>Cdg_&x|(08N>?Z_nGU_x+<) zUOc_MJK|V|t}Ei(6Q5y96bP@)NrKeX-AVUiuWueKo;F{spaf$4>2z@XKd` zd38jG9K7#;U8pBI*NPaF;ywNe&&xqwdzc^E1IWU;c~;%%YsDT49D zd;GB?FbsC}((uytwryS~J7Zo{Wp^E21fm;ASUqF{ON8EtMH449-vnKqA9Di1kvBKD zm=qwsDZaxVJ{Tg%4?z;G>|!pJ-}VQFJ$Hz}7b^vR!4gP>`uBsRZ|llf0|7gIh%Zpq zJ~$ib#X5JA++OG)DeVN|Jh2trZ7?LR6?Ug$>M~uR>zZT;wwL%eB(KCbM9_u^)v(U2 zin<#;N!Te}j=t35NF(gMR#7}x#Hx6IAvm6pUfcfU8o^EyC%5$amiL2zT0`y)I+(X?y_ z(P}qvqVHi%$_b#nu@|918Kd%-04vk!tGw{9hgR%R?nd^07PHZMg^2>rvfW!1QNk7^ z&)~M}h2gp0R$4fVD~4mYUYs`YjzPWA|`Sx}9gC5YM5Ui6L#1!)P)zmrpmBIaN& z;@f`jW5+zP8dJ_dS_osbn!<|r%4F#bI`iCu)-2n{FI)4)%>Qsg;;4I}qUJb}4NM(!vF`^#9 zDR#toXfNuzjk(Pd=c|t{6M#XKaEKry1s7eGYRt2hoLIP483`R`vug!LOK6iqQF6B$ z^W@UFE`stFAna_DGBk)c$00O;sDxrarTzX<7JUw1ZZV?6S;Au2vr5!r%-iRKxP_LVRe8iJ+~^5%RMn^v99)sALUieTwY*! z3n*Q6ODb3&M>Pph2!cA=u2UOqB!o0GczgZVh76myw2=?0oA&;MaJm>hGIk^m{@~GC z*;*Tia(V9T&i!7CWb@o~eFugtsmi>5P_nsM6BC+#^g|5OHUR}#n(T>Xj$y~96_DHNuQ zR_^YvMjc_+AiIk6A;&BG{IL1MSVaO%ReH&Ai8(EPBUO&DRpQBYGq@oT28l@!M*k=y z^l{*J4DlqA<){J#+)W5n#H)hn%&!ci9p%9>0cl9nwi!@*bGk;v`ajV@AYt2Vu*2we z{3c{VuzLM-QTmYCl{!!nQk?~MrU#H7XF_?unv(=C7;|o63>e9$#>$8&=c9t+ZM5=E=Rf${!NR0QvT);qq z4wRE~ycdFYJ;po&FVs@$} z=Pmz5G=Vk*-9|QIpW(@gLr_Kh{0`Pa`5yp) zK!3l+EP65k+PV_F8mLi`Fws&%HKEmIg_`wLAuk-jwQmUq1g320>3%)LluiJfXq+cx z16Pr7qZq@dJU<`>zfg@G-zXI|*H?A&eUF0)IDQEO6rHrb z6EA#su!izgF576}LZaA@+Usx+8*u^wc>CSKBB=a!Ci3UgvGRf}dn8QJ+BXG&mb|>O zs2UEo#tPWRf(;G&&v@F457qeP!E9m;s3WKSd1C=RA z-Lx8luPpjmQo~`ztexZ%mQ3z1+1kV zd{EfQXkTf5YT2)lzTpx8w17U=q1aAv*k>2=U@gU-Y`!M#-h!o~R4LRL(*(Y#Q63!A zn*~n&Q3?UcPu+p-`|FC9v`1uP&E@AGR)fHa7gi^_&?IXcKfgHOr?{9}wOlvr#9d=k zdKdJWZUUUsdhw}M;7-Wrz{b{*7AR{Oy-3#`Le{5dg@m?92fD0c8AuK77#XL+j14IR z>j;Hf{QAv63QhNepi%-q-5k4$#>`W!Uz+`6=t{vvw5&+}2*|lT8Ir&W=eAO~lskXB zh@VEBXy)DdU_dnt>#jsQuNdG<>s|Yra}IgDR7FSDB}xn>JZVjlq_YYdpSz!|IC&sa z(+;n+9)$1qKxZtSC7(;@c3M2~Cg~ovj~2q#*nk=UNbA88Ea{SzCOzh?K`x&TTuut? ztJ4{lw6zQhj=5dYfb1vh7cQhetZN}witGvcQ9`0l1rxNHqj5;=Trrgc|9!9wo{a~} z(Wr)zVv!nHY%d&64s8B2D=wJSrWR9XViBVg)H6v|J6pDh{$fpJ(|znTqF8z!8PyU}9ATboG_hGA zIxB_11G}1LiJBmrpx%V?GKxfb$b6D+W?>gR7X`T|F!p{V|TnJU;SIH_8JW_`B}m*60@EB0tK zNuM$OBVivy`eZFSf#5f-Oq;r0rH_IFs3Nq>B@F1PnwoxM$99tJVyb4vhorSAj}V*A z__QvVLH5!g7x(@%LaR6%%=x4okrM4GpB%cOAyAoX#QlQ2JPETdde0uhwiH)hMtOnYT5OKA{Qb=NVnzKq0e z=64d;#2!_$Vvet**Dl~2+l;6!;oTN&JTsom+E^rKyx*|l^*r#%g({a`$ zwwR+S)v&BZ!Khsnb}{7&swb=3OlL59jTb9ES>XNcwp8m)=x=U=%0FRIzbmP zF-3dnxvjnBQ&e#r$)h%rxVJ1QR(gHb3&QTVI%KKhvC$&BwqR5z3COpE$yd51SK~%W z3}=BuJon|;_sls3=Zg5Mdb0@}m@nMa37+NDRgj=1!>!AR{j2Tdg)^bOVl_K8X38Mq zSmEupMyR`#`BSvK($#Bmm7}LjCAOF><74r~AkjwV^7vvC?FkMWM38J|9&U{cX$2&>BecivpiKiBsd)Br$UDsu1hp|sWbjAgOhA>ggdm5MH*s9)c1=E)&jjvD6OSL6#+fVREQA8--@HHK_h8q|uFJ1gnm;(juny+j?zS ziiOE!a>vovrB^1ZhjP|nVOXt5(4~SWt9*@Z}jXS8#paB zmuOaPmq#3eCW+E%X%P03F0y7OWCBCc>oyCuu0BK<76b0=ib;K?wLt8bRMn5^!xyXQ zD*5?2kJ1RND{G$1-JG5g7Up0#aXxUc`@Y*Yb=u7??2NY7WH&uAifVgn0Y&3a`{!rdrFz@N0%NCc2z1?8e=pE9dBV-7o;?p zEnpO!Nc7V2me#@mekb>R8tH0#^)&6)s<)|?PM)}7FqYwHYT};o$u?D-VVBid5!sx1 zaUA+2U+zK3SaVnIYo&N5-uYx&d$h9=MVVhIfaE<2yO(lQ8MSik|F9u9*c~yFr`RY? zeHgpJGA6w(;1y4@tqRW+Z__}*&fm6)Z>*`DLD|YzH1^BeAtkX3G8LDe3cn_7vTQxO za=~&-c;ST#ftFQ0fHUn?fvgQQ0VVdnhm0G&+QvP6Rau{xh7;f_jitu1v+F6G8v$h_ zJ*J7qRTI~bzl|}6(<_^CbIYrjH+CJfzjmSX*{i5t8OnCTbA%hXpJg_F)aKpspz{k8 z(-_@!;N_y!IJ@yMBXV{rRPT-gSx&c5-$keN=fqS+co0Qr+&2tpNV7AMii2=76l z1QNtCaeZ>XiJ)oFFSEl*q=@fUXuM6l3OTropX+Vs#ZljNO;%a7*X>Jr>E_u#kE@f3 zBcwbd=$go9joY;IrJeBJ7z-A{H^;8-+%V^NT7Q)p^Vtnqj%<00RK|riWG%O^HhTL_S_;zDWCmRYPTdJ= zu^xm%wt@}S9~B+4-yzNCd}anx?7i=%LeZGwT4YG6=u7|CTHzgUTVDr22dntnF&Ql= z!~Iq+ov^>Uo0mhSkdYK?O_|Bl35t2wz(z#1bOolcvkFa(TCn6jg`ZyYvgx9_LgK?r zO-$RR)SOV2IS<TV7WrQDYV7o-DPc&eo1S_E~v$g%WjGyD1^SA;(Kg9J|t@un6*V zC)Hg(-V3a%sjgBjFD4vLHV)QEC|R5ki*n@ygnMxGdIFbgxj_FN)Z!0Ut7)~{hgrL2 z6*h5xH*G3ThtLnvueDpcytI^^%`|ekKK#zs$R$3e!-I7lYw}+zw003(PAl6(D2!ak%1OAk~0GD3W+Bl~c(a{PkF^jGkMlOvf6HidAi6dQ_Ud_CJIQHY-M6 z?Ve_9WjehN`I39N|9e__mARe@9=0^wKuEGXQ|$LVn(00q_s|wR{H9>&sob7=QET0| z;W&Y*1HaNq@ka+fM6I+JPy4SHHrPX^W~nfYo%1LwuivOrAni5!t1>T{W)yqS5LWSu z@w>ssvLxV^=SowWFVigSs;o{yX2jgz**{Imzg=-Y`|Q*EJN~=dvrqpYP)h>@6aWAK z2mpJ%DOG^OpwVwS007LD000>P003ohbz(1cWq5QiV`yP;bY*faGcI^&bZu;nea(&} z$&uc9`4quEt$?iRC3(ZBxC(VNALE{M9cW|L#>4 zyIrnRcli9(JnbL;{?*$re)i@#$z$?pH-7%=I8FU$uV0@|r^nN;9`kT`{fl4!`q!^N z;h9(Z&}Xrqw--;Qy5IBJU;f?S{oB{MA752Xz&B#|@W&7GQF-CBeu(?@>GM}V{_5Ai z{`=3W)$4UgM{P%C(OlfN37f(-5pH&}^vHC+CcXNF6T7QiPn$$g4N15&C zuO1&?@5b@d#;8j-i*w9)2aC%#FNS=iP(- z^3{4s{~bn-_!7qJ~ zU#(x@KEL{6z4gam>8D?>zWt`>BZnb|sru6#N33g8<$blw^DxFubqeGE`(OY2FMs~e z-{-lht8epkluen!bFAd2wwf~jTkX=Yn@4$bs7`!Pc70Q&J^rh|>HhNP|2kFj@)(=_ zGQg&4;-o_zauu4~#kbW5dFdGHDt9}K(p6v1yJumiV`#@?8svAOY4R!7We)PL{C}vX zA-qH(j6>DNE*#>J@bDf789xO%Hu=k5_D^37RWCoM5mO1A#ko4gAy!?UxUxL&j#cQ+ z*byuGnYP?W( zK=?4rz8upi8`Q?CkHbC>Ehc@+&0bF9m~kT2m?3b^Rg>iLAcxg7DLz);+ed6#A=R7e zFMs}T-{lP!DBN<+^X4yq{^yH{Ts-=_<3{!;9gb7%qWmhzX2?r#t3S*gPv=k_v&>9p z{cUL5Ge+uujv;MFs_mIlL(Z8aH(@>;Wtnn_p=$Fu$xq|l@E}g%{8+u4umC5Yh43)e zG0Tsm4J~hsn2!=t7lRyWmu2)y_6U>2q-+P3vPRG*_A<3mx246(c)DBJxA9r`-_Gc< zdfGdI@38%+G#&L|@GFt5V(%TLFB2q z@3WAaEul`vbGy7=%j28Zh4!6TSUo^4btB~6bq(B;HF3P;M@WA(!fqM1mypi|u;Qfu%H zsM4sP5_;CDJwk}^egEw3C)S&mrZNU)!I*~$i?t6dU;i==ov1`E@$;no7 zTS)gJTz-Bz-p3-|rqDcd-}U1n5WA^5K+$)Q$FhU+$NU08ui8QA@(?CSvD6d-n|tAO zQCQX7^d-<(061Yl4hU_UONJURJnfu#A zc&acq6#|7eemKUaFZ;md-_R$d)+x%yo@}>AQCZD-y&~v2N}8<YG&Mj6Y?43B<1B_?*0CmGO%;&a zc+Q=Th!sE|ipAMOjbp;1?~D%h(8jVQ+ZcAoH8p*gPbPEJ$S4{NZ|q4V zi!Wsh!Sm$g-STf6RQ@&gF+6Yh zn!M4LDZ(Z&6N%gu8z}gXAZl#y>3A+C*;(jgDPN38z6D6$3bRtUp-K5&Qn1U@|*T7(xO&!&gr1ZhhCs?yCL3A5< zd@?q8pq{%!%$*skBA$iVRA3INKEUjw_QBgj2Awow`HB<?3yT#A6B7p~*waBH)||%~XZdQj=3uU>d%a5e?=9AjTbqRj_-#KB;~N72<- zZ}F#A1Mh}>s_8h~ZoChOsd8pjz&=7_Z1q3<42>Xui2E<>DH4$%6xr5bpeF7o{rIvV zNC!G(YEn?#1j`i{$6lG{{*F z{)c=vXI6F6nz`P&7`Ro9)IUW%HuR9pC=u!%CQ3}*E!Wu(^431>tJeJ7iWz}1bf0v2yCEl=!kF%{*xFkIQM+?wBkZQuq90Y6rMh;3}QLJ?-E zwc(I<_snJP=SsxesZz4n`ErMGp4??U(z2kpcaC&ZJ^3+lT&LI2jc{vfJ5E2zZETY8 zs*}#BhC!fwpmr+S1?&n2_$Rd@Hp-Sh4$ofpR#_dM!$cjSk|7QJ0Vjt)9}vikQd zR-hq&%(%{q%BeY}Zs$f*2epW==uD=U~H z75>^+`VxlCK8bbiw9rJHU5V>eP8r;b7x{QNm~+XUq_JFFI2cb4`>=~}By&$ow`gfS zHyDKC=nFNB;N^F^xDKY1ams2==8g2D`a`B@_c#@p*9>rss-_vC5n@;AqtiWW0FDNk zh!YWOZqhtf?=ff5xtVi31aQ$Y2P7H9g6KiPj7@9Mka-XUgXcqYe%NKPF(cRu4}oOI zXOl26WG$pknfZs%jy2=8qbQF6srF^g)2QBH^&j)3dh7etOmYJ6#^aX8F!)^5BitP$ z+FcfNW6_`XZQWrtrW;Zgwp-2tKF!$jgJxS}yTH{>8~TzM%sGo4AK_8&5j+kj^EZc1 zV{&HbgDi}z?W8cOk%Y3Xs1;7IPQ!E-EA61a&hVwUY7U$_o%Wu=uo-57hPop>1tX_@ zqb^4=KenAEdz(?X$$VW-X&<`IT1&rbLc(rt=?6YfFXp_|GH?h(xvGW>dF z`9R=9#*JpOFyoL^M>U94(atdOC-ji^X{UA}zaZ3acEU> z=Y&%bNd~X+LQ3uOGzEIE)TZ)%8M{ac{p|>w;V0SrZ&e=r8-4Z#><&dLAD4|pIQE+N z|JIn_-k`lE$4?7pZy^c_My8y{rl zVxS@pPzQ@zndQ6jShH(lOneFUh!F>}Nf(yJu7QI%YNC>PnN=dG^1w^6nPIXgu6!5z zDZQlWe5-JEDX?rhSg~BMDte&?lS)Dn$I)3uOo2Tt(+ulquSo9CZF*I(Jjfm0BH9e?FHbk6}kol_6>O#5JS``Tp)&W&CTU(aXV5IOz}X#u)9#W*S9?1n53ACeqod5p^} zd=MIJ_DUyaD8TTcx|ij5^E4U(sN~o4FWRCW3Vy&%NF$|;$&^*MNZm7n!V1&_%CN0R>4jHNc@*83c{2w?z zRT^opL4OVRtRBH{5sm>?Np^naei}l7zt$Z?paY8*PI`~?9P5O52keQ|#h!-`zafto z5$10J%PCB~TAR8mqIZP-?3}{n@gbWKKAKwb$i^hB{aF20mJEr&=pVrsySYhWXwJ-@ zi(Y$yGCJXdtr+>HB$>5uh5U|iT5L!A)JK~`g!w6AL1n}N`jz$&Wg2lw;gHw682B~} z?=2uf%jt7NDL;g6xCBs)NSNv95nTta)FLb9)&jlIupEtm3s<5?+2+C0Nsw=6G1q1p zN`$u_PuY2m-CbDw>I8CA-K&8~C_ZU~UIpC%nfa{#hApSydLYoANwjD4)|l2g{~W&p zki$Zf3`)}^K+r^Os&HC(On159-hjbs5W(GQn6DQ*0~#IEvacCBi9CmRBR05O@fWk) zxrk=XO^LD)PpdU~i+G!y`LzME6E{nQ>%(|F7eUWhZMv}bV**DbmAs?T4ZcI-bP~s9 z-0)uro}{SoACcma)~DizsbEJ!NY+XEYiL-lwtm!bFhVFNg4b+ng~n*3&|*!K%|Tg^ z;d$|5V9iem;Eswi8YYH<@$#T<5}jd0OOmF#3lGknCPSSlg#R+(?`mdt+xt;@0ZD)=l`$o&-6;#gj3-)bc(o(h=zeI zBVH1s@F&Yxw>H)Y?Oe36$!|5x)i4^H+=FA(i^sHf5jKK>CLrHi9uQ-=Hd_hVM*>_1HVn3E(D)!T1{Zr3L^y!8qAgWc2t+LefcQJit=aguDY-j~ zp=U@>hu^t^9Xj@sd2PkPclq?zp~FRi5r`#xB%V}rW0SoHQ5}OPxN!1xYUh5LhWOWr z!YEP=1pu`Q>dApqPE(fE_Jf2$7&><`IxsvGxT+Pz%pK%yFD~a(jxBTr&mePYU0J#B z36_J+;((JK;Z=#)y8^8H>?ij5v3j3NVyowVL=>j{I)@0S}g;BzIp`h zt2)X_h>@#$5bIH|Y>TMe)$V_}`rd{{+O$r_!t5Wq#-g$lSn$q%uIcYcMbC&dv25f& zxVHe^tH)dvkx-=TnkTA>4ct_Kqd^32+p3F$B$^B^A|yC2XM%nLQ$pD|43(zZXwZP4 zKKYyMH)P9(0mxWpSIwJ1CuM9MStmO3W#&sjWXWSrM9 z^00u&KdxDu=%mSN7&vPdSg8Kl#}=50WrPJ#ma%rrT;Uun%ctOWvEps7NkNSM8?tr78i2Lb&@mF zuMT<3u|1t+nGq25GmA&;4{F%jcU4;OFlaG~qRor|g&ws)#q?X8p_LtWXY$5d6!`Nh zx@K1S^$x1u5eD2E2oL#r`Ch?Ixa+7Nx(q^%S@T4?u6D^8_+L>@aZLcEPjTvL#Q4t0 z`Hu)6TR^%o+77=eN~|KJ21z=1XX1 zT1K`jFfGiQ3*7YWQoG}^CK>R-VGPEo-_uh1~wu{th~_OrQPAVWtEH;7nP^_SpzTz?NC7Jk3XJ87Qz=9Jszg< z(Q=$>Y$C2Q5x!=RwVVeR8)~6ZRP(K%&D+Q@#{zR(1>3}w4KIdb^T`yH-A}VSyVV+*&vq`lZDM`pH;g z+#Pc)2@sRdd^>{cFhf`7 z(+1>xOrjkSNO!mtbUW0o=nk>P4q}nDNya+PwKyD>cM8HAr-}uY8eNa@mtt+uAR@!u zBsz}>NoX#_*l&ku9k2;iDVMP_lvQG47QHxG=nM8Bf}F6}^hC|`MgCx8XE215{@BIS zxS$x+a<@EobsAvk4koaR8bUgVFZ7Bw+MXapS{2H%hL1q(s z8EjQ&hvXEoA>7^v5nGeO;W5EPygEHXF_}iww*`%r43^Kp17a0w+^Rnr+L1opzL6E^ z&Ib)-BRNPYJ(7}QfNoaYYqpupNthS>)!bkU&ASI@_=at?WGxIDOI<8KJL@GL2+?dC zM(^k2&DK}~f~6;7xOPUu(~M9)j0F*3LM%Ya`1dJY#Lc&@{t|ThQI7r{%%HD?QX8!t z|G=!Mam%|QY)1z(Lgg~&#oQ^J!w6YD+O9wh+PpH7o$@Aq&B2OrcF1@*PG8KRh)^sE z1itY}e^@5?aZpF~`&?`x{y0!i6gY+AufAi(NX&q7+~GTjSa(JB<0<&GQKQ6)ntQ*|Ofuw%8tWo>7rRn83S z-7WcD)u^w_TsMmBE~s$=((#Z7a7?gtOWg)zKZ+s{SK$R=M6V<%{+{8TpgYefVX-6t zb5Cy4EcoDnWO*2vg16Z1#L_->2RnYwQhazbE(*}66sGdfVjcRnj^Sh|0JRZ@l_%4s`H32CyS% zFi<0@T8_C2{wVBHy%^PR1zoWV{WVm$Q-kBORG`mtTo$w`BiljN@aEQv%}q-`9vsV6 zF@QKlX^h?`K#Ne0@CH z(D{0sD8o+X@L6Q|1hCSUe*A4Aqhb5J=f{K&BjVKy%~Hn~ms1a6`J6@S7*|!oWs%CL zc^SGSkh8Qf+P?TPK@0e{1B1J$@}g{^PcCkqFyFJ~^~RuO2h}s+1+pnSeqnoF%Lj5P zk4uuu)lY%IvN4M^9rpp-MWoSao% z3eAZjSC?=*sGi>vX4o}IiY=LhZIgG;f0}`oz32**_Ydgp^UC}Eh@l?`{f7|Dy$(WO z0F7IHla?AN|A@6d^7lb+II@pfC|X?n?cAUn3t}%w#(W&mKd3Lyex=GDRRrr_{~l^J zR$u1|)ps8uV%LBE+QnX3>FZ^w>ma!u=m%FBUuLyz_j%p)Cv{fkqv!+&JJJcuH`x$m zw2=2j1|9uuOxLL9>Sb2-WqsU*v}t&FpvDDFgjn-r+SSUXS;1xYU!rPdu$_KAst?{- z?E8^4_@DUy|KoC+j&VbDa_Jjuu>uf^d{6)K!qm~T{<8ruC4C>2PCc`5&NFIN+#osFyFF0d{c~J9( z3Sk7J&BRbfWxevOfrquo_%U@mN}2_k^;`lv=9RsyF}I_}7EuCJM9DhlspAm%h;6@Y zhH%!l6?++DirrGgtr(u|Jg7GyMjlMsQv{%RDB(!B2-J-S1mwi3FD5bT(#?$G++2og zdff`=OS^$GO^wZ2*HHsKbM<}Ubt#cc#oC7EU0$q-&RaH;fjeXwF zip10JnO2xA#~`vkgH;wLepNBxSkKSgk9PgS-jcUWa0j+~ zLRbR;soU-_#9{(_p_~6#)IZw#QT0Et{oeyxO~#A%fZ7&NfA9MCu0ded0*)5T6)m*L zai!TeulYxNa67zSzvE-3U%dL_8}UR`0#Se>Q#&BP!2tSSALffcmh1-$78BtCnE|EH zjm^B%Na>5wv+O5l`p@f8|C$x?UWvQQB0UDx)*n~49^y%!2qCqs9Bn5r;yLL{QtB;o zL|7uU1X`wv@smaLnP4c7I^v&=7*>OCX!z@2wIJfnO?}B-FNOGifGR&;BKy9y z3&NSxRuSU}csKOu-E5Y=I|wf;-i)>l3ti}WBG!vo#=6XgGRSJ{*KwWoW|`(eO+`dZ zPK5gI8jP)wlhZ{I+LZ{s5LE)23Q`c?5L>OPASKeuU{Rm-jKZ9htoW0;LaRE8ZP=a- zPHLigWp!Hd@iTF@&X4e8PeI`x>>(s)a|d>Yzd-g|6M?rt)YA0+KoU+P<+vI&CCEd7 z&04V2W7VAlh)8_aX%-WuV6a=o=^U?`csy&0hIW5wL1NQj;1}&bgHxssdRu9aIL=5T z{zGd!3?f3kNUxv;t?SPsGO*)J_G(Spnc%EZqoOF410K?|z@@Ua6sry5D;8*gS5SFL z?@6=VOV6}A_Q1t2BI;i3l){*RHRQ98>%DlpuGXi|b3<|Pho3CyX|*LTG%i}nZB}UG z)ANayU>ezQ`=#|nO zW-Y76n0-{IM%!Jo>u6~y2|$Wlts3jn#zI0~(*wwyt{qx!X`8)^=B|@A60_D1QH!!` z!{K=j=pqIM*VRHrS5d&F!uPT%g=#2fwir~(28g@dUyrEV3WUmWdTwF3Yljwqc$*>6 zM~VoM2x=Xc@&+C|W8PL*rE3L=X~Aqz?tO61W=EZsuPXY?a#}a_tHqwUWrETu*ML3k zMR$r70jSo~9z%xbw@0*Gq19Fs1vY$QH`>xSNJ|(@w|7-4c%S!lzvPW?($;H^G$nCS zX;b6Cf1tvZo8kGK1S>E=B1p5G&U|RhDtXyanQwex|I;`j&~1~ zFKe+O(kI9fGZu~l%QUnulJHqpH!O%GG|?jJ!@p^aG+IBw@vTiZOe?3Jh$Y|v5o3Gu zu6gGolAczNnWmsHqBop}=hAo#T;LS&kJKO^sKFd;DOSwOQmLfv9SAmp+5%h5aNpQo z5Lgq2JNL~@u|Z6hcFQ30!6hZ}zw zR`1j>Iy|JFg%TrU)aDE$1#obLcHU3WOsDV(HNAQE45$5w-X~ZYEkjmpT7OOvezdU0 z(pHZec$iIjv-MhsB1SXnmv3I=>NJc|f|y^y#-xnZ&O)K~2xg(%_XsZ|DwExahTcnJ zvdA$#b$f`{-w(M?2e$Zow=0d2-Xp2Iq@F*9b_-BJ7ZnX%5Z>j}M26e}{-gbOecKF7 zn=KRKOPaKln#Z`WDsh$D3&8lUlKw8Mo##;Hy9`MjG=gzAz01DgYCLIplPM-4WeXB^ z3q+Px2$U>2Pv?uu8Zeip_^YMTf3d2e!>G-XAKA5mqFNA%^b-BT2=(;mn=)RG@G|6()W~;{XGhR^RakT zs}rd+CEBJay@EjS!8~x~H-h$k~(%KVP@fvskBC!URFn4{v@VmGx-bO|Y^|oWHPKbglO1t{j_bP}0cg0wzG+qTjyc*T< z3ryF>P#aVV+ZzY(+#xg3&e^45aS8nTRF^`YrI8LhAOIf?=bh~!ko8ojaY^HNn_kCb zD$IgNJ;k?D!7ODd)GLMo?nC|1>nS1#&kfg&*P1z@b}Zm_pqm|9L&+M++lsH?}5gwx@*f_9_0k9`x)W~L!LwIenzjYk4ats$0z%vRW2 z6iF<^#}A#zlc&QAXuy9mNX2*4Q(2NEK7qc zW?QhRaMk0*>+5wJH(g5=}?-tIX^IjP*kf5#iN#dU$v9D1+=q5r)ieT+y)gyP1s_RC@lh!j-xi} zZ5_sYLX)XlyJRm|Wrjb{@@F}-5;3q-S~XNhmoxTo$h&#)HdpQ!I%jHZ0#OLHAUtKp zU2wS3Wl4{BA3$j@aN*#(1|o~FK=xJ^XF@+|?L0X%MZzgOqePxNz{nIUmNhc@h0BLpt4#{}Z93X0DxG)eAg*0f@SxToX-7TGR5LGn(bj%gU%Ms$`r;VS z2k8I)&s}b!rAMxI<}U8l~%4SaLZvS-?Yi1=uP@j-m@CLuM%6Di2H<-M3h7im#aq&7yFUWqf%4E z!964#+Trh`Bjq)!>djJE#{f7y@3ImTrRW!&D9dBY%_keDuB#h6K)Hc+f)_n`8}wVS zghZIiB^mNwY_^2B-3xV1EV8kX^tDU-6UNu5;sOC(yu3ohwW(?DUs%MeJsNkOAFHLG zxD#F#EHSTJ`^Ro4QtP8AZjSY2B)>&})PubmJ;#$^xl?)l6{ zGj#p6qt3xFzjyt4{Gp9>se28Aqs?7uQ=k_zp%S!<@ke>!Y7&>t!mn&>=UeRtP(bc2 zS|{&hnP=;yL5s(uk6ykG)He)HzuW@V85-kVO1THqxIQv5DcCF69^bPAO|9BH|tZ7c2?DLt%O~6gkRw1|4oRrA}FH zBUHo%TfP^!&>nfB4lrbo3YSnDj*OkLklz&nCQO?Ryv`x*{02IFr(6h)T#>wM15OlTNV~h2 z%pX_y3_e&qdaAmtBEUC$$l46e_9JvxeO8fiE4@*zECwf`6ti50N^!sHzwRA4nQm0Q zTf&W&y)Eh&5e$`?DoR;7;un6F%<5$-Vsl6IJ(UJ38fLWuyV3&_qU+*YFu))e(J!vV ze@jwHXrs|8PD(VromXuOhH}vVyL*`XQWb9f(2^(rlU{dc4!Qy~y7hHQcRF{8g{Xlv zQ>=;;+n8vDn&e_}hp}y|@`U|e0sDg*6?9mvYt%DZ^kQRw09fj*sYOa{*5F2O7B>y- z0-*NI-V!^3fS|E&6q*TJ;Kv^|UJ=l0u3#}u>dUT|T-vH9GtmUvO#`;rdxT(6MZd#U zHX1SH=eQ!f$uYMED|;sQ7AU$0b#w&oSYlB#Z+Yg`1aWe38hTsd$pF|ASN_`p)r+oH ztjN=)QkRooAH1>>47pgq{=Ax)-BXsBkXMWLY`bYQUS~Z(%7sSPy+CKNi~iGp=n}m9=f7uC%ZJd+)Mf|Dqb=7 zUaTaa4feH@gq_{GSq!i3!;Z3l{O#>yhBQ%@BSBK)teouYDjLi6o2I9x1X-$B_udRt z3mOAY#pxOveF$)O^D84;-m=2)Txnw1@Lm)$x9Pe6Kq6bu(XZk0n_X`r1LcmKRalB0 z6q2>g4Pd>uUh)HUwzZZVrx`W_8aZ^iRW}O`yi&gv1}{l+oblUI5;S?=D$Qz?LAcWZ zQ}U{ZQ*>F)<0jEsqwIQ76hdvnvD3}v#~&^1Mvg}SctD50F9Sqb*++(OCAJI$TGJfg zI-a2PL%B;3&A!WV!6c+e-thUxBS9uYlmT@|vR#ixmUbnzJBEn$ts2=}~*U<5FQqaPf*4T2KMz2OBEL2dCFM}8 zNk#s7nTPeq1b|LNwkJEMV}Z@;De1>bRQB@OJIT(@W6yo^yR~^;$VFq>rCpBGrRDT+ z%2s;12C1tP1eD&qofbf`a7%ZXwARTxRN3FChuFAFG4G@S0?rM7)vOGL$CdWi4rQ86 z&|{*)(>ts+(SksY`TwizvtHV0EWwK=*tx_{OQk2Fp5g%p^;QhiYr?=?Jx%R9Kks9+ z++(22DjB*P7n8%dlL=GJaLHUpI-uW2NoS_EAJWLHOp3mo6>@r&KR1zldh9`chDGn*P;t_*EXZ zOr4=3V*RM2mxt+=t$P_M=5D89kEvvMvtB_&lm_n_Gj+)lh+Z51Uo|rGCKIMr+)sF0 zE(m5+*Yz!GAGMytba$~-CpLN|Mq|q6p*iV0GK5i_wPR$^Z>n1d0Bp1{!`nx(AMqW7 zpBua%2%+)Aqit-?TTr;4mTX*gO&{lNJx6=dfwH4c-Yk(-smGsYP3th+1}LKau{gGd zgxqUaWRwt$TBJYDOiY+}x?IqxTc^7iR~_iJA6f6$SZYWoO&5cSo5efmnIkyHRTVbd zK~cHDw!3F>Ut8vZ0H9Tbz*Lw;fA1cq|QEMPi4>T=%EKII@MVLK{2IBa%x5&izDdq1eHL$C2jPCYz)Kewhpo2p zLR$>lJ;Pbu!kKzVi|k$9C+Y=8CLiwJ)bT#pwJr!~iHNPo(pH+JuVlTdl3k`~oAgD!)5kLVM#E5j}Ri5jz%cF+WCSX`l1pqk}ZL6R2{9&k?YbYZ+NFsK}zgSFBRaKIP{ue{>(NtP47**o})F0 z*)!IQ9{-wW-HW076>38&FF<9PLZ=aQj(oRAb->-&8xnAj9xY9RWhy_ZE9xDFH!F75 zn3ff(4DGn?*lVS}P{`nUO-eH_^YuOJk0B7dqO=t3T#NE0G_{4@K)kkwzLp!h*(4FZ z9h$l^d|=G5>Sb9#$ZOAc;mw~qSBFzB#7wvFkae5ID1!y`6T8cb#o@f%^bnAht^B2O z(fe|rkgMmS-VAb^H>;G1&iJ9p8gZ)~Jzv6e7P_-QG|bNzo~jlk8TxW@FU;CdQ9Ghv zZ@HNTV&4N^>^rsKG}%10=8b}C*rHp{wRreP=4$TN+uQ&V3fLM~y_*tcYAZa6_oG{BCa*%D>|!Hw8}+rk_{8JO2E-oaji?Gt_#Y zNb%>ik*e%Zt<~7 zLS+5a7nVBN)8!Y`XIg7Ay$A|^jk@3+^(8g{_o}fgz;)gpB>(*}d*cp_UFqiL)u#?& z1jefHA-ZNc`hr%gC>+A%iPgh(F_aCXY(f(}!&LU4Uhci^*Vq+wYa*DEEE2628}&KY ztp1TEa3eZ+b@p#wi|~LeCI5Ky8sz)M&)&Q~PHpqW&;CD9O9KQH000080DHYDRlwK> zeIslD0JwGl02u%P0A+A>VlQcJVP|D?FLY^iY-Mm^XJsyMZfES9i8s`5`1e0!4I!1K zY++Ezmh4-0BhhN#vX-66J{TorHxgxyRI(=_gORPtu58&RyX?j`*5{tS&vVZ2`5%7M z>9m}hGoSmuuJ`-(zVB?A{3)@HbhP?>z#)(AeJ4 z(S(l4KXU5cCqvK$2%)KV&p%^n%+LSD{okrWqSD>RStz3U6dtO~3LpuPr>QW_0RQZ;J6H^|u0d9#da>^5lbVWFpPmj-8#hjwU9_#117V zM~V>D!7U4e?;XJ_bM{xgR^+>bA(sDr{qO7lf7MLC(iOhIPkwpJ^O>HizVMxf>JHs68bLlBRk;#sXSnz0UOPB1*%qqw7>l{RQjZ zKyfU!!ic+cE0+67bxEQt6HYtHtz7b5!!x;5DvT&BmfBMaZGXHvGd)d6_o#2|%2f1P zBdFOsI`WH(GQN8C>cVsHnICUZqzzqN-RrNeI^241!2PS#n%8G>K>Ouy83w;*Qmby8S{Ui4h~uciI&u^C_G;1qs~!j7vhr-c&24Q` z0s>Fr%J4$=tFtcffI&+?)5BL0dueiBxkRG>3x_ zoNi$e1vcdFojbeJ$%ft|U)-oezZ~-gxWKI_wKTzN`n2{ZA%vl$qtMjURB>Hcz~6%R z8L}eXkrF%oaCuJxF2@@+`CK@I>zM5uS8DP!q48;PryJPpOl*~fjXtZtc<sbYsdh;SHWv_&2eeYI(fjozCB5rJ?rKNG)iw8C2}UJ`?!&oSIM}Vo=DP%<6C0b&6TrZlr(a46&L?K zqN*^SML-)o;y|&v;#^>?{Rf$plMI-_o*fuJ!hNVLOm@^$quH7lD${>;HRIZ&(}tM} zGjCIGY&;6wuZwh65nG@T$M?Z`1zu@kNF}@0NwVlUL#V`jL z`|sOyr^vOQ)P4f*q`UEq-KuO`Tab@0%&9xeXB_o)m}*&Fp7{cPYjLnPP-Mj@3U~7>`I6GF3iy?*Ay?l0ACsz`$x6 zr6P=fqY-JQ%-fLb^rmoG;Mw%n+p2zar--bK$M{mls^D;B>RUb%E#^I918CBxz^!MU z0+%j5Ki+LqO-oM?T9I!(RXkhwf&mNn;3sh}SeEZ^k9btLk9}o1CRr{;MMqD9U90h1 zwQ|bZKv6pv&$6;4Wj~L8Ou^58C-({sI^=NAlp!rMGp;jTmU28!nL$+Z>n}>^rMNZE zV{}FaSCLiSc_{Ww_ouUvNsV`YCED03K(M4{_B^h(Hc;0{C+4iiX^2Y&HRRj_WQUNK zphAHy<;*LhX@G#Ce3lD2kYf|Gcqsj4;^4*Sn*%}+Zgb(M*Y=XBi<+=u7Ru`21|8lT zVuSp7t{0Gqb9rEmOv-H3!lgt;|1?E0e1z7?dL*tD9FqQ=oe ze?yK)bMt-q4DK~EY)cajs(lNVFWROW4@kt`vIiPU+e3EWJ3HfO*5uF$rn(csK)M|6 zl1=uYm^N_${EJ`3=7VNE_X~~WWoykC_N-Gfy96rqmS((TUWXV%z?5ER!dB{FX$=^8;28Sr;E(;cO^ zGvtwpSy@a_CPL=Rd8Ke&8K?|~%SjeC%ndz0;*fFWi04)1S@;$G*=tJsvvdCsQr#s+ zoAdaF7cb__;fbz{1SI5_C6AZTAI^b)^8+Op}p;87ts>y2U0C&w;*^S>|qAjV4#rI(KA&P)u|)cgWeJ5 za%Du3X+^7+ng82Tvuo70YjgYax_T@1)G+k z;6o4D!tQ-mx$db=scTY?s;Suc`MRS+zavX|gtTE$*r?H5^(06c9bp~3#rpg6qo*w~ z;>D?hv9Tv(Ic1ruCPEawkw_T95ONI9qgF>~c%MaALg!s4>baMHS2l^1Vkr{Z&Mf?T z@)CoY9JR2G_1aNY{tp`i1mxr4$A_z-=8FQxUtCR(Ltf8ZnGIxk}aa!R$1(5`gJP1O&2rz z`O)3)A@4$zD>V9erEkHjl1`d>41+yXm9(z@~=+>DU6=k9F z`3a~!dNV4ta?rLW3WZHU1EPBKw`qjZb0P}{>DmHk?n+g*q&+A-i*r976SMr9<2w8a zTI03rFdU$Wp~Cqs__1Q-0yiJ(wx+2BfBpH}CcKk5lHRLU%Id?5w<=h;BJ3e*zK3t| zFoGK>TZ>b6Fb(t^ig;#!ib3}atnB3V7HS4In>9k?_l}O($7Us>rk|)TUAok@IvWRB z#dzxR&577{Lu;BLA@wz@_4^WDlbVa7#{7T6XnC&Jc+Wtqe=WDh*nxuFCihX7U99{G z8*{*cJ>_|IX0B0tYreFjZe_FLn!*0H6nu*fL60m|ucW5`fNTx3l%8i~WF(#}3)*on zGOuESeo%0nj+WFNpy^o#C7q_|=YBB)y7h@3yXF?M-OA}9m%0(DiI{MWv$uqfX)kyk z9gsNWz3p}91V+EO4nMJ~3*-Y(3awlqnY=~PvtoK7M~Yn^BO^8%#`EFE*1^(!k4$gZ zcsuB4$n}yo)=#_xMI@L;j|IY))`AOora9=k^JmK~0@+e-*H-4UXvE1^?mB#R&QW$E zUCS7in(2G%*s@0dSp{?UQjOk6%#b*;fRM(n7af)({s2}32k=4$jT?P zU73p=j}$SY>Ix=kl*qSZ=IebJ!5g0KqE!|~EtYMm)*;XNG$P~*O?ZXn#roujXKP;* zvLSbbp`p&s%Gi47@lI%xLHqfJ{@R$zK(M-En$%V-ESEY?h0eyunXMi@p%ONSw3#ROL6sr zfB+?=kc1s@bhUmkFLUAZ@;Nm4{M2hMQ2t9X%V@CIVs9xkRf5k~ICgs1Uy)2NPKu>i zlR*n9`Yz$3SOgMNQ`r|js|!g>vl=R`hZAQO;ptjevrp{`qt}OrhpX3HIm^AKT6O2_ zZie;O8d@yX^Yd@CzoRIPiaP7ajlK&2S{-0z5miS=NApWjbI5~toQX}{Y_VanyL9Yn zoDAb7^w?1?CCy1s_Yl|EnuC|=_hYqYD_CNeVpnRz7p{6?bm8{$h||{2X9>X% zI7KG8(qMJnI`Fs#yfe4?R`R%_oFnS&z?kHN?ehkpCp%ZsD;f@q$9E<5WVMl>3XU$0atpYes#B<&(9MPOoY;Q*w3DSJSZ zJ>8wpOZavbREA=v%8wZ+_C$LQ`yX@aqmz(+nglFpXC=;4`_26d$D3Cyzn%p?M2${> zMjymJ2>t4SNoHHpYMV#eV-)R?Bw6UQr>q4na+ZQkM|2D z9`(U-!Mx)yq07O535TjYvKO%j`S0HGtE%$$_V#A#zLadWr#{nGmF^dW88ABA($YeX z5zuw$MllsDoz)OMc5$$@jhy$!dP5A+II zky9Ou{RiZspWBTaH=5Y3QDFcV+hFr22vZj{DyeU|&vj)E(A#7x`uUD8xk*mNfg~`W(DRubv9)<$GnPg`2+_5vZ|+uGyhS z0l3<~1FcMYdC&{1FRth6kB@>F{)mb7QCnf|L!%kl*$Kcm!+n+j)=cH6TB-Mcyq})z z>JU48dVuQ4g#!I$e`j^a!}QeY+qZ95lV;N;AAF;Fyg0yEUalpsq#C?;O@%alrXyXJ znK;{t-14ge(aZ!O>+5TeD4-G8s7-9Sv2y$c>(wP$*geb74_SDEH+!RI?-tw<{PpoZ z1F%0`eSIo|+l`c$FC(Vf63Foi*7obK<-ZhH9x*M0(MKTou!Y)|yqq$wIffqW0iyrm zXnXsy|LiNL46bZs(iAUZgZFqhvJz|M|A$(*)G7K^)BjC!=Ts@IYH$ISWy-e>_qHs% z4S|liz1Iqi@fJLdPte_n;B-HMUwzO>23C1_dHAavpT0gj02KeADdL&nF$mj=sy~0a zBbjON2sjC_fA|cFfk(W4Hy3$y_nY@O>cpb!8z>(n`FY3!I9R-B>Jb*gjV760E^Y zTO-C1-WTzWaGhjq_VhhWy6&tZ^X{KWUjK>U9Z4Y}A;P+yt!=gEA9dkhA()o^Uq$os zsAq6tgN%m`S*V6?d$gOe?zk3)mYK&sUoYj`o|1uq!EABW_>a&dVm5$+Glm&*x2I!v zlLU0CfiI{KJEWEdiaG7<>|(g)3f^aV^VDBVtoiSFi*ydtoji@~R(4wM>;=EfVIKut z{+^+i)X~-5?UZu)zWN4D3CIox@oJ@41!|go*B=5QF|e|Xex>n&9((D5!e2`Q_JYMfxw(uSSE4m*GEhqjuM9Xa4N)In&_3 zG{%M|VfEC*b|^8ZxlBLxBUG_zg^)FBUCYtles|DGN>>a{I)(3o7qSY>DZoA8BrbgE z!BaPoRh0ubPB{ zHNlAiZN0Uhl0dv;HeZ3NeV5IIce)yoLeE9~REeC< zMr@4vO)%mEDm^B~kMA5BE{s7P+T#wo^#&NQCCtj3Jz7M6LKtlZR~KfegeN!X zz{Yy*wO|V<-~-N_>LZTxEav&!ojZ2nYdd9SO&-rCe_cTGszq#HMl*0TuwC)==H=2~ zX}n;XX>Z`}F6J^&bZ#5DtvWe5>A$;H^V+CZBBTE2z?=lacfO}_PhQ&j*Y}3%eKGv* zsf;EM#H?jeb>L!g)m2s1>`kix@0evSRDkAJTr{L0P|T( z4}JA<5pMIK$hewlq5o+p^%t8@b4v@UbiRQ5I?v@bHZ|&TLLxQ-?zcM5-8a$nEgq1r zT(E?c?n_4godm>&Yy;`$5HfVRaxi1=y9Y(5q6z$1Gs1n#Ij8Mk;AxCa%vORhcHeu> zZh{>2W3}OUTt3@RS37b|sTH$1Ju|Zo8c0Dr;plLGpZ!KC=Ql2XBSL;@=XXHJCU4ZA zB`V3%p5(xN{(MdNz4FOPjd`1%{jlNVJiq)hjY7YFCtuAx7(6`S@2>*eRS^FS_DM|Y$7`5Ao!10jMNb5csm%rwid z*?d?mFP_5VGM<0r9#v2*hvYX^up%#!vgToVRjV7fo&RA6-{n3!P^5UrSP~0vdt;_O zPa~4a$hO3^f+ip!0P1-ew)JNj1{D;%Da{U0;wdt#{6YHU1TniY=8TqD)~Y%!vUu1=+bBAI#PzY~7GH}rEK=OJjc!J@3nY+wdiN{?gkFA4dNmmc)Q=VHGiI2KCij?PZ4o{-~>~3!xuDJaj%xN!LHApxsSPP5lqI(6vIW z3&st5td5uv4Mxp};-;!($F&Nig}wMc3;JO_#{Eub8By zFksjekS&brj`Rv0?h;dYhPB#T9f!Dm-!4Ul_vuD!BV+-QR-Nyv!!-uKr_(A1^L-b<&kQwH&p9ZpW~R zs*{h}a{wo|fc0EP1yo7SqALknoXmuKO#Tz8x;t!hm6gM{`lyKgT-wZC>dhjrIm<7+JsX5*E_Fqa(`UC4wx_hU6TB-= znN>VXJRj1@Rxwuu#x?Tz3_FTu*S-Xy8Bid6eEOY|oQ=zwV1JL(}zdv7c?*Hf@ zm}3pQmY>GFKnG=`Ht05pO+*#n?kwe9@JXSZt7v||UZHc8IRa3TRo!nrrjSCvR8BkZ zA}Urd@my*v=t!$wvVNj2cXUOmtJQhHCOm+8l^e1h4?Pa%lJ{=*DFafGwPP*2v9WOw z8p3DVvbgx>w~DYZZ4BG6%OkV8K%ZD%Ri3qN_uwHj0#2W{>?|%7qKU{;)}+dZK70i+ z-1YZoyfXpB<#WasUeu5)m1k)`0VwB#|I#Gh*u>&NtXj58a8a{Gt#9$&4{momRIm>~ zk`%|uFcw2E_V*S``$LVz{8+@-O3bU6K+>Q>|6SXDU3UQk^5M3>Qkp!{QLazqUNt=y zo(GGiUMdQ_V*cey#L06MkS+qz*l%pTtS}3LPDTSvL)XZMdu{GFENc9d1H)A*sbcCn z5J)pwvyWw3T`Sq-pn9W|eiZXgvGT0XxxRf6hpt#u_c-@_aT`(KHOioo_|1{*;sdd; zBuR*LInx5K$C=w;3xF0F?HOk&_|OAdpf;;==cdh3Ml;9^Y;AQd(S(;Cmk5BY4XlF_ zOFhmWT^&SkQ+n*~>U!m?-|7mg=9k_r2Hkk(CW-9xc3+-7;G#2VX23#gv*{j_HFH^% z*g~W#_PeDH>|z~2SMu5Dm6{s6ruqLj3&1KQAV3LnI}n458lPe%TdnMdh>Xy!IRMyS zHUh7qc0FH+7&AdOv5lpnhb~Hc^LZtc*G~jK_dG%1)lUcszuP1i)hb>g`mIV`<+an>p1$>qlw zR2+Qu>!O$lDSUYKsr=l9*@v=-0TA7`4j!+LkKvWE?HvN>X)6r&@5jP#M~Vxfa6v&y zVc|$PQrF7!{uR6^T;6r4ENYek4LBT`C2UN6Z2^|ES~(v^%TtCSf;!B|n7DxF4cQF? z`MG3j{PEA52BRMHhZnkMxlsC;r!#*5%FvI;`id!Fj^M+Ahj4!c>B)ud-uKJeT|vpj~es{d`BaR&veCbm(w?Fm!N$#znALxd{}h zx{5YF_LSz~M7=U(PqE95X2Rp~gWG@m8E(A1;>Eh3 zm!R?uz`^Y*_p!o1briPGMo@>>C~Yb|7SS-ujC9Zun(vZ`;x~eDLHG6DOX`^DcgFm( zk;vDQLStq&E842J;`% zTsHIGI`2dfv`gOX0ctH43zN!$F@J4w#aBDLWORUagYMx>4Wr zBkT<^2a_@4MV6Oq0*H=tckt@6k^<*+t~O1rmubhH9}rI!>*{R?4Ha%P6u&CVoHR{V z_}Et&8B3odzT2=A^NC@S``H-($dN;N<-?1AbO!|R9u0>BTN&r<(z3F;=vgmQaSI3u zMW`NbCQI!s(@&q**|><1@faVyUjpFIR!=W_5t((>Av(Em%TQmpHBsq0CR4%3JJaO> z^2R4NJQgh1C%u%*C2b#W=S3h3j!doIc50)EJ+bhHy}u$Zr8hwqoE)xjLR{_M;nR@_ zNV#VUuVocD_N;p7p8(g1<#@0>=ikIAD`ywNMo2K!)O@S?lU(|A&F7(4px#ByD;#f% zh}<_Wv3PD&Yz7-|M>2@SR#M*b1=TF)zh=`j)!f!bTNmg7wBS1)uV!Ik;evVIn)X?J zWuT>|lrea3)61w+RJN6>Vd++Ly)!y<`{eWI&o6=qv> zprJ>x_{V2NM$?~J>EF3?`t`L(7$`>MgQ)XK$U1l{r4nsf>+9qG)jUM(zZ;HA0yT;7 zws>wA2kFi@+41?Jcc#H%>sc4@saApbemQ2-XIU=TIQnD|9D^R_`MYxPm!jhRq(3j`mj-Yg9~ZGWg&%z?(&;HWvrG&&`>e z4Pj%a>)@oFhT}245J(OfhH#so<+K)N!21)*3K^3WT5Y^Gn`n zG?WnD9#Zbgkbf$VoUQ(Woc^9PH?yey!DtPGrN5p46v7VdeaRHS$SD3Fiq8VUZ zZhdd*%)YoT1QzArNVT1)4~9HhQKclY6l!#bzA=Ma_uVRY%eh&WA3y{mI*BwsS1$(IbLKeRwSg~sB|&DE=$$iKfXIZ>v_`Hx6uXsl|>y8%41 zaQiD`gM;oB8ZnBReLkTOVI5XgHmN~RaFczY0jl8k8+B@E$US!0L-0eC@&G;d{>OVT z!r?8u?}>aRww-B`O*H|vs|{0-X2Z^SkX*oqeUBH&p?)P%rZwIUvX>}MJc@~+gL26i z6Ms?Mc{&N&03RUK!&v$0V`V#iCiE~Q;k#rqXa^FDe!5I2sZZNu@+x|aqLgSsO*nck z-g27<>ihY#nEHz4*UvLZ%YV*3!9}aWch2}6dCQR##xR-SmNEUj~@+A z-ON_uuBoYkJkQ|G#F|oI=%S)4g8}lVPj^|`VBADMSj28oc+_~$WTd~3mHfOrvF~iK`Ta(N*21fWRjutuM@RDkiI^$=9#*|qyIS8A%_=hbHi|_+JEL~l zI+5w+1ol3Xd#NFWI_LL5u{k-U)G!Uy2M1kq9XhpEVkElxRLHKw7?Ked5}KS%4;^@| zWE086{f(9v1^LT{`PN>M<3ab|*q@r3%1r;gc~$8&bU|^%N_ngb!2?Z$T*c3SNBsl& z-lEZjBD{#X^!Sd%;GrL2UX*)(*Vdr*>fh5Y4N8H#he!tK`2>o{7y?3Ij-8_OuMc7G zZl+UQXG2$(P(}|q72_6-B|2qWZFblGluVL}2bLlK5gC7_temMz=l&lH!>^c!OdHc* zzMMVFBa(P!Mj>aA3i4mB94w+Dn%C{WlN8$F_sg^*9F^=AtMIJuuU#>D4>K_}U6Mo2 z#v*?XbnAkit+o#%MjZB zCN$_^Z(nVeG;19mA0MyXoz=KHF;#`B7Di0fjvhE@TNmS}~pf0Wb~X?Y9(2s061 z6QdffdSn8K+IMA?4mUFBL%zS5B+XQuDyw+H4gsE;9DO|YE^JyF`s(QDIJsOk;mgSc z`n|R1jYg(;%xhc~%zkISw<+|@r=0wE?`(ncK({#2={Gd5!pJwWB}nhx%Ahj#dt$R^ zq4&IXtP2YZU6FWJl-o@JxMH0D0x~XE(g`ZM)|%tDI&Ngk))!et3spGxUw$ucck6&2 z%fNu*E?XX{ngW=DuEP0bu4dnbwkA@nU)3UGmeT3-WtOL_eoTBMko4fHqcUw_+( z(kxXzy7-pagBfQT6!E*#MKKuu6Q)E1{d3;$G&9MDDqil}o0jUMbY(w7Wrc)VL!Yg; zfod|Db$N4VyW^FVQS|c=>Yv#VmNsL8D8u1VPZIJ*A}u{i20;FW3ky@?te`^3zNM|r z+?3V15O?D$5AGtA2C$^P2pe5qW2Pnr*>t2yMn!uc57_Q)E*LPx9KoMjvSl#gF5NRP z_n1(bdq@BDflVx)CNVuRkuY&QRLQOAD<_+7{;xME{_71hDyS}KM_XS%cG0HLxYRe$ z;R}&9$-<*-06^B<>{YvtP-v;ts!jovBFp0rieUeAO5Fpnwwd?UNS& z9rO;$l{|EonSQf~Iwg0B5*@hp*OZ|;F}H12NuN8H1srmwQLUKIYFU zX_;&WODv&VOgPO8@I${;6S|AG*_9L?78V<)%QtF5~G zeata-cy@oz4xP!0l`*@Ph-JFo78`rABVD%J$AH`)%7LGW4oc`k3b`K?I6~vo+vT=e zgEd7KHGMTN>e}@R zmQ)uoOuQ=r_Mb|*Gx#ey>bv;xX{Z6v2=CEO=<%RW832txehvHFgy6fYACKMN8)V)p zv5?1^=a71Ly4ztHZs6%qfT=wvo1f>{id)xn4O#^)*C@H2^#>Ij@7VboHhv>-Om>qI zR;5)jSvKr)Tm9Q#8khS1+%}ZxDQMMsc%OWz2%Mv5cwJ@bfW8BHa74Oj6HHy2&c^6R zDdADK#dh`TRg1Z^tgO#Klpgdl$W~capn>!=6<9%3xeAR^U&smJY)w zM|UrxNF4j*&>sHwEqqXm_dRoI#qETN2uGMm(O8(IP|Wn#`T6-3<)H0m#nrP_Ez_hs zckg-u1f_tsSH@iOkKG$W4l`^AgC-9oU#^D@oy-XVo?FD~&n{*WMLv0IP2<#kDb-4K-;{aVBcUNv(QmT6jR(p7 zK79Wy^wnoEVra-@dUn=~Ztrhl=_GkN#?^I60&~pSjJyFLqxs)>%oE30c@6J;$#1X;D4u28LAL<(4ceKQ zG%8YDZ!uIoJZp_wf3}Fy%l-WM+7**BsA|mD{481#c3_C+8-O^5f&RKENAE0;knh;? zTn0-VV6jvZf@yLZkxV|B?YUYp7Ht<7VkIY%M@{Qdq(vbAk~re1lh_7Ba?xMg0+zv2WwBGaHFsA3P)3Tu#M}GR&kAvF+#bb*)k!FLf7{2XgJ$Vh z!QCNjfE1*-d@eUHuQyMJd9FR5z19N(B%Hn}iG6|iLj67^V8aCV-2pD#NVoK9QN@Gb zQXQge#d+89CXEa>6gD2nO3aVdgH}u|Sk8@9u{S>!V3=N*3M%c{lqk;p?ZGp- z9odn0Iy?bXrlzKlMC{u!!hg4rspm1q$A|#lolmy9BT4>gDWecZ^Tc z_WqwIP_J?c={l*NaN{I8iW~2 zi1I=Y+K&7a5XcSyjM^3%8A zkH47`wnoV(eX65nYa$oBFHMi=gb_D<1=D00;q4UF)X=|?n*_`X`KU}Re^u?18k#wq z0TR$2aw}JG8Msnp-N3WPMw4B2{$P@Z^51#((r<^kC(I4o*9A9zP?BTUIY{Dx`gQ3e zevrFP@~VuIa=r+l<-bc}8P~)m9SoMUQmke)FbUO;Q38w8rk8SA z>)OQM{=%PA>xuR<_&(T86w9yNHxHeAZ=v8*h(K>|?|F0Xg}-TvekD@Y&x|H?OZf2S z?lpq04KV=$0q}qbds{xzJwCi$TfFHx4?IS&i^RU4EQFatc=vz2&k{UFzq3vrzeBR# zl1#Bbi5Gwme|~hgP+s~`U-P3mHOz|NO_4o|NyG{t9_)dsd?Y}cKK!v9o}c|lGgs@W z$7rGMtdo;dg>6gpK(_VG*Vq26Pqk%Quq9nF{$&wPk3Wl17Lcxwin93nZz9swgpTmI z(5UzpD7Gk}I~o0Dt!etuB7>_t8w(jUWrFsbIgkpu_$UhtX=wI)l0ez*xg8fD&rJ$H zI+yf_KTVMW3JT{TwsUrU^fm2t5Q#i*K_*^GT&gD=}7xB!`}Xj`XfpTiX10);)TmCJn9= zcb>I3#R{lC(&*3Ivq`JGy50a}Svm(jSo600ip?6$uN4zSRWQW}@Aj9XMp=f|A*6gM z>rOEVtNR#v@B%dA{XLXj)^+ICw6ngG^h1!xEE0AOh~0`)H!pi{)Y(<>)rmyiNV&|~ zJ6NpCW&Xw0YgQyDS`{AwR|ew87r;X*7E{stbKVx90xXucR=x&Qn^1=8>=FnXz4T!nz&v!SCCS^dX26aS%POjcX z)@w?%7EzRaR)0pHcCEl9`#IH8x<|d*{`Rt@+wW^VwSRt}fqWA)PDQJit~N#b!B8|g zKi_CX9t7>HY8Oxb8_Y=Z6fn((C-ACv0a%GDTKh`A`biOAWtEycgb!l_h*8rcZ!~Cy zCrV>v+r!=%t+71^`{@ez5XO^-rUO(mm4gOel`^my=*A0?zn~Gm>9=kex|f{Xu2mW= zT=N=U>%06nu;X@~w!B?e{ZLxHS9_BFj=z#Ca3f8tQvTo-JJdm@*Ilrgze704VCfQ zUaN;zUvg$ zOjMo7&CQjw|9cgDR6^uoTqsCQKl}PJWVL*vU#(uiSkwjj3=yfj z7DI>Lr`_c`74ZRg!`n73UhGX;Dh2W_g@Lxd+KrOnBpfAk z`1DR0`5Ht_C+70CqzuZY^m~#Sz{^We@%>j827PXNJ6D7i9b$~4VOi}EVlLv~%KVkk12 zFt-Rd`2%9fXV9Eq=ByS6ib<0(;@-zchgTx5U;>^63kVBGg8j&lctFvfDsDY*LLRa& z^rxlXkUIU(yu9M+l+x4F+nbx4%Vy0ho$t@i%_ZCW z<~)mr0BJy$zq-WlQIC5D2%aV0v5CJ&5Ea@p>KgNI7X_taS?k+n;dZgLx`7`L64$e7 zzx7v6Szg{G9Z7Ez143ovyFf|XO+7vDR^>a*Y0HQWU<~A`xW&bL2qhW!(fN)MH}>=@ zhK?CmOopPLyDl;|K7KY$((b@GLQx6cAY79&ZM#U>vn&m(>-!q$uz10qW)00UH)ejmB^v9M&4d?{KF*xv%{FX^{BzFZWgVi*{x z00L_}v+6;jq4L&QTE_Fu^sJZ9x|}3SNz(NeO$8V*_o5=m6YS4Ge&PK>;2>gVRb@Xs zkX0=$!LgD;Pp9|N($ZdJDF;oGC$MgMKbr^n5fmt7^GtH~@eqygpMGO&#&)^R*U}oP zVtm$Ek+6y{_}3Fc4sFq1I| z6TvBnRt~!jG0#CdXbqS>0j$8k)%*q)$fAwz7YLE$+liWZB53tIu>O!IJGzPjwc7-_ z^QfTwza5Z>+9VcRSt>-CwRU zsr3~#DzSJjc;h9Z=Zyv*o&m}V{Cnx%$9r_pOHR9iaMzquS6i_+y-jRwCvoKO0-0C2 z8->V5yR44a4b}RIJ9Zrew3E-m$acT5u<*URn>jERbjP1Rk-XY~dytSUrN8QK?0@D< zq3KPB7!O=5eqecfs_L9x6+{dMgzY~SS2nBY)Wsz{5k!fX#UU%cK9RL(Ykqzvv!<7R z{B-!VFUEDWx_q(byrOTBl(AH_{PsxUUl8nK8`+DgS0D)JjsX7>WcqxPJie59lm9^M?M2HRs z(8=~Chn z@7&g*5I`*w2isK*TE4zt3T=jmhy6heu|E ziFtnF;^Lr@)+ot`)n&1BrS}T%fQ^&=H@p)n)w*;t=rrKH_`Z>B-{tw8!mQ=LiMu~KpI{4PB*n{@FJCFNSgD?3a!R>z%Oga0MHo*Wb`qQb zRjWw)T|0nXBlgjc^WPHjk9h{b_W+Ak5)om_4qB0SDiLBu9y|=(Pa%gwqbw)TLQ0S4 z6O(m_wzIv_@G93~Tfs<&_LuTgJM}n!>!j%%wWmd~gMhM}uuY9cuTQe!8R7EY)4C#a zE8;%cG=Z;nquW-(1kYxrThm+1t+eG{0(IQ(BG~)N*wwz>{egTNc=leRf?1v zLTP;~K9By8r<3sYugJoQ$JC{gLcBN>0eioyWOKfk5`jQKW$hfqY+IEMGiECSw!a5K z-JtV{0j*8T%+nmn8}iTr3o^Q*tkXF=?_w&^tWZ{ti4<-{Uz@|dE$9{ux5mG6B-NVM z1Zh)z&%E~NbZZ=^lVB;vdA{dOSM*#36v1hCRUiW+-I}%oDV+zk7J9g7%^_*4`S$K7 z=fA%ScGuf@VL6iMFct$HO-((Cf9IKJUsC+Jl=k0MAJ1GIXL!r?U3zTD)Cc9K7MC%Q z$%tHUX-i`-#3MrsX~%N>alJJk9U2q?@%WxC8_aF=Pzg06Jo7+S0&U=v9Sjzg5fkfb z*xeEzgi%VdVD}pGeM%Ls^fbv9c2=B>3F3KrQ{Zhn+ITkBjbuoaxQCN6E*}|K`+}Cy)N;#T~DG z+6?5a_;?--f_@O5^_zzS@f=jBu8+U?)p<-&OLR`<9s0jANzDkmae>@_{%`9;M;la{J51H!_GhTyv=j>6&rFL1rYGU zdo=xel>*Vu5u*{3s}sCZZ3dTTGl@8g}jcLg71yo!77_s&GJ!d&oBSzg|hJn!$0E!V7VctMvebQ1s^WYh3)jRLZL zQ1Uk0K!r4oGx~b?68hql_{t6Q*|W4CC)o>nyytIIRm^Lx>!!EN=}Q_p@$^BLEq)~=K{y>tm4hh#|3MX7JsZ_OFASg z8W3MaB_(@x;<*YyycM}ruw;D~1$KXLf8v-Y(7&+OT!{!ldcx*U~N#Av@DI0u>T-{{&g~?Frp{Js*CC-^_EL0RT&C?TtIkex*E!xLjtY zlElqh`FbgvqsZ=sPwiq1aBFOaSL->mGMg|a#U+UX&&6C-_GLTEl~===m_Xe<@;H9r za^>LT?|hNXiblVpms^6cZ#ODvsi6xJ*Zg5n`DtRr!kb8*j{t)azb`M0U2JziJQLaP zu&t1DERB$5w0a>JCheb`oUBpkL=<#8=~VPeH2JfVfPlaxbHc~_h3}AE@;VrLxH7NW z^VR&c5`vrXLYlP8z(o;}H0v|uk?s@>h9BXPHvIK^bOgR*?_MoOeHy)raEXzQqx9=T z2p0f!#%%td_TD@i$~XQSSAD8aO4?8gl|cyASVE{2#=gs5%1(A86Iw(Pa@#&*r?Kx# z7=vj;F}ATULv~{sm0`*lp6jmX{C>ZGf9E{^J>NOUQOYavwfOv;NUy78Blrhd2 z8eBX4LZD#ZaCUb75zSp;N92r7>JyDN zU}MWU!ePU9UHiXbN2saTq{#HHZ7ap{%_!dqndI$vW|Zq(MNA8AVKzIF?tLDyp0$qu zK2n1~&RYZ0J&f^;A4O{HD*eWy5ms+n9_sUE{DUqNq>gQEZM~N)9RM0GEnq4FqQAvq zpPq<%gAGE65&&r~_KE(t-4`jOjOSRvdS5<(Ar!r$V)GrZBJSPy3*Lr z&aOJ={#>e0XAcl={cqJdQ6m?rdJeLmN$gW+BuYukmZ&r#YYA#zyCgwd+^n?k{nI^K z>r43B&GjYMme;3X5r)9y_8SLy-C<+f$oz1S?PZP}Zb(|2QGa%XxLfRWue;Dt2#@`p z0_X3^!$}Y~&!|h*XP5p$u91;@Nw_3ItgT_`3GL_T!BXpy@_Ww_LMY9oK6S$!EYi_s zWkiFUXUDLjpU{;&ym9@Nnq%^bFJ|1*@wsSb-kt0l5B$?eVbQF zto`tOf4I$P&t(M}OdV4b%?RT-t(Hary=9I0*rhSA`!GBx6!;iNepl~p9_teddQ!Jy z=UvbY(1Lt1zN~KQRreS&`#;PR0`u38={=8#AwR#0WNBk*+js&dPd9CMLE4))--^u2 z4)?1_knbOc2!mb>YeoO%@2_9Kz8+l_%-YPFC>tG9>R$auz&N72hSyrKmp@rnI~^UI zh~?mw{@%)uA+4>gsaDA1nRn4K)G0o+zzR({;QP1h(f8*&)3UZ=Z7*Nmx_`BcLi|@J zH7#vL39~_;nVG3;%5C<5Td26-x(S4v>SZ*6`2ejVJuttYP2a!b84ueLEf3U)7kJ_# zkf~3(qnlmsAV(3@#zxcq`=@|4J-l-JS{JEiuf>^{S=qS;VT7e{f%6oT$&lSc**C-* zu8zL@iXfF$b|vah=Y|7hk(Rz#N~ax^!6&fbpv&pZ()45?|1kl(qQNtjpOLOPK2 zYadeLLm5u zAs<1xUO^&d{1%M?Drlm|yux{9Tuvle0bt<0boa?zR|e7Xbj0(+3i;PxOh{ktA#HNI z%kN@)U#4&=B$ka$41pY7q^%u4eq1rtZ@@edpzEF@Yqy=2%o@jkze0VvKJ%R*uQiAt zSX!4!2R~bc;c!3)uZ(c9YM(_04ITG-K1gcvW8g(aMfvyx7tRH3QuCO6@To)KJuRRb z%|ID4p6eTb1G$U0AtWB>HQmxYGv#vBrd!f9{Y@VpKu=cC?YFYQTfe&Z`y^=vBHm=* zCb>o8QYfqpC@guH3nXgE7>HBQT8A7!#KP^>oozjM-|F46G(-*#mk&U${@b&I^j4K^ z1HZ*(Jokh@N>8gk&#C=bXx2h@@!K)hQB;yfeHQRFIu9GyO)0110B?YyUo>}kaSEr2|lPgcgH`P0NkY3hdY*BINPi_`ttt)r(SaS`c zkc*~*A(;?6@SAJztB%?wb_AchgZ$-uzN2Wp1bP$>k|G}NTJ5;_WpK`Mtg!}{4sB{G zNYdB9Fm+&&>R=xaVG5sDOh~~Yh1T^a_e)^Llkj+avYbcy_@jBgAW&5n zc<&t3G8?}7t9B8%oE+-V{g{5QR=zy7C|+vabhOdZKuJP+y3Lj|!6aa^T0}@kuBv3$ z8D6%`-B~bri=tI@$s(7v&JrwknG#=wSZnu_kL3B}J|9dN>E6?f?j1S`gwAq}$ zWsF?ndpn{sO)D|3W2d{Z+E$@e;*O2Hy!=R=*IO{cxQ-M#S3m}Z25-Y42r?%4yR&F$ zVlNOk7LWJNr~ee&^0d#z@sKVi3MkXe9=U(#Hly#-bwp82hUiLmtMhIXP1f+@>d&7) ztNoTt-G?i0pO$sgH#CG`nFFN0{euVj0D20o2^&o{KEH30Q?o}c9k^NiSJ|GhNA8ni zW1BVZ885JZL}cyWi2q05w2m1IDQGI(e!<+3g^UGXA9FPx>h4ISd!SZ7-_McUZl%N+ z-h0b1Mzv}vm>SmcD2|?|szAzdbmtxxCuy1Zbnjj^;{aHu0aL$kjOB?6&;Rba(=TKa z7k`ne&J`@NgW-B;Rxv;der2W`pGq)G@{MP=?JB%oD~%!;50NDFC;6xGkT?D+FWdio z{^#?5{pX4I$0EB> z;8)16;L_%bCuE$Xehru(YM*x)kQ_fZ^?{P4p>Xxpv9jdhcf02B)`ndd+8gdVgouBz z5*Nx*lQ-)gNggh|bHbmY25oB9UpJ)u+y3~xs1})s=s;Fk@0zJMB)@T5TDE_VbBAg) zEJU3j^|)iP?i>N7N@J|uD9+pFb4EzTqWtk4l!E-?-Tj^Wkgms8kFc?Qd#~{d4PN4i zTmf`A2K}Ggo0i%l|glk&;K;nw9eE=q|sf+PFSo>D8fcQSCNtcv|k^ zAy@4TASYL~a$^?H+8C8_AE_>Hu?m=c!7K0mV91Bhhje+QNvV9{C>F>v zUTLQzPC96nJ1;tV+Y!Tw5|;EnBRy(GD}OI@l_-VY>GuMphoN<0*N9C)0N5?wx#V=F zDHd7QK6D}DP<&jnfo0+@$>XjLtD&c=l5uSlkJqAfRao>(;oCLOIhF626dD^u@yhf8 z10~~3zNM2QYqB=i!KtaOy)0Qkz`4_ub;%PQ%Y^sBN%W~msl{a1(gUs}m_~=I9CsFp ze!!qb@<<&%Z=nr1*17o=*N^C3e=_s%Kj_sNT6#jlEHoA9+Ls^8^ILjD-9`bADJ5V6 z0|STVr9?%)s%$R2?Urwl%e=-(AaL?ZUs%2t#N6Pp#~Odc*Wd|xxw$Q@#$R7WGD0f_ zc)mVjCfrwSrV#zn6HP&c3G_seO_f8(b!5ilpI^6uN8JQt(D>glE%@DLET|R-Uo|!~2A~yQ^N7_=CXpNtgT8UoQ8Yz@KZR|1s8WM@5pT2CjKJJHxPjQS* zyk*vdq=Il29uVMx|1RIheQdm+*L^lp3Qg1| zOQS^Js>cjq9n%ZCl$jTEedcCoshx_e@HH~hE`1kf=jTNy_jO%EPyW!;Ch1`0KUFusfSn&t`FmhYOy-#7(b}3>!Zd%BiZ~iJ*A^{yI-AOqf zc9^fQsI19?;J>19cgdQUcXKxzi>6(BatWU?NXp)5>+G`&K zK$`&5mvG0 zren`S@BNr+R$z?zBxGbrp+bBZ6RnEJK|9Xs&v`&t&io!EZs+8s2WmoMTFDDE?s*L^ zwVuS?y$F+_Ijp0!-RGBe_64RT$)&{Y&F)X5)7*&NAgOyB8ROzy+r+l#4dLK*H=_PN zo6mZ`*%D#3DGpZy1vbm;-u5oQ8JU&Ylsw(DzeVQDw-3(~Vq?#t4wBqVtv=nlJM$$L z#GwR{hM*Q-Z3XRI=>I!PNKlE*W**85G`}fq-g!^P2^3m`%po^+WJFz7ve2}o(6tmV zO#fa}w>RQrjr*vy|MF1xr{EtX@XPumJ>T|%rowY|QgVUc*EFoh8F)n-9kn`3MQbHV z_8*jLI5K#4&<0cD(qAZqS|cr&)P+TSJg#@`96AZ7OG`hqdJW`fj)`Hz9`OCF>^=@& z9J1@05wIYQpD7tKRc6y^1!tB-P#|dz%Lq+p0~PFL-pJfq>nZ|Gj#S!5di(gibLkh8 zu&UFC6OKk92o~b~S1e#H4TFgZ*TequOWoa|{n>vwYyeu<09WX@*e6;Z2nLU%n0s49 zL`1!IJg|r#m>^W(5M@4jcrIX`olMQkD5cZs?-#-2NGxBbr3)9V1DF!DX@r+qt-Zer zEso)4|w7Tgp7%()A#g8b68?vDiayBNiT1$_L#5% zWWnjGjaaq)162BIc#H^|QCxg6>BK;Z|H=rzU`ETl+vg0zd_5sAFE5-GxV)73=FPW* zJd%gfCVKA8JQ|_|b!XnV*EL-0G12`vPV?%ZESk~R*H=DoQGWME@pxqG3$M~nA9M!N zQTJAv0dN|ur81(VLH^j7m4HfcL# zNU85`NWwGEqC-AYR5)3lA43lu?Qf*!rrZ>w9b5|tBoOqlSA>@3kw~Pfj{{E;wY*cWbd8TB{tU^hBt0J-FN6@rjSYoJ4JqQPAt zxYo_}B{TPy*Qb&%-&ecS+yu(Ln^Jwe7vKI94`^SW4mJn;bxT>?TCrfp|PKL6zpxWzh6EkZrUZ3|H;}jmG z4@#<@xr$KorRF4sQNB?s?X?yj_CJ|^(M$>pS8Smi7h-J$^9sp*CRH+aq(NW}ggz_6 z`D3?QN}!SRGJ?gpO82oWQ>WwQoFO^|J@G>6JH1zrlhU|qmP{btb;tm^3W|n&W3cW@ zJ6mh(@I^u!uB;?%Bai=^p+HrLSMK4NjrW=fVlQYk_Dh@qo$xpRAl~kwiu>V`#I2v* zFG|Dkn79B(G4(OZ?vw--H&JL3v|D3`22|2Sizt@(R*b;*mB$++{X}0!l=L2HQzYbFbFzy;;QD|R_yzZkP zjR?S_;>%BKCxS6fORwjk#5&Bp#_s=yrIAagz7FmAwi{(p=Xq~v50Gj6_3ixCAd0jXj!QC*UE|n5=foO}zMMK*ww6Z$pfu}jwE{))s_B3TpatK1_O}uZr zMC}Dd#fIB;6at#l`hj~Bc6P4-7wG2kUoESjn?qninXjF@b74QW_Co%t0aFp8uwd}^_Wqb&o|$J%sV4SFq+r31u(+nw7aZNSh6lu~*1WnqsH z0mt>F8icE?`B*-N-}>1u^Kh)LyrtN(R#!FraR29s<3iL7nlj;a8FWqdy@m7SwP8{X zp6L@25z)AhlfM|Cm-1AEoZC?5Lkv`GG^q z`Eg7`X6CJTUndufzO1`e~ad}<^F9kt=Y3v%e&JWQZZ z%7H*Cuy6myJt}E_Z0P(qcIvZ(lHC9^WMJHG(Mj(uX$9QFje_?ATr=mfeOxh8>tU-- zRza|2gm>M~_n2rZG|bUF`wpJAeg_l>dGak{eQ~fX0{~JEP+4jT@Lhz1fRZy6R~w9y zYyu15cMIb<&7bpekjjk?xkYwDG9?Qmc9Sdax4w6Q=gT>j==uwjIu13+@~OX;YxV^J z?TzkgYx72VHNN<~ov$T@?(#$H>FIGYw;F%XrECKz46v}U7`lI2)@=daPl=ZDWE^h( zd2N}d?9`oE?z*uuDo2NO#U?8}e9(G2I#El^?>R{}?6b;51U_W;s*NuixP`!P!^e&t zYj7PbRYudSq#UXU6ALua*cpmAMhVSGO--$9+9%`E_dQ1|DJ*(5;X-s?ErAK&de`{| zi#?UB(xCG^1beQBqNJjtlI>%#d`&u17!>P;ow_f)u=4R-$O>N^$Ex0iE2yi6Yq=#fol5)MsT*-TRYpVe&EE)TPYzsEO>rXh^m3A-Fv3! z2GE0{)dGHHJ@+yjeAk;U0r6tCH#?)s$)uZ9Esv5kr++# zOB@aX|gy{xZ2b!zL1d@cKo(e`^y}71@llBn(=A+3>@LUtUnQM8beTv;&c^IX4ZZtL(k_s(~1g= z^7dsEKD$ySDrR+*wF-cqil0yK1sc9c)_vsjgQlp{a*Ja=U4Vd!5Y$^-HpRsxSWpf- zW|Wv$IiL*PQC*462fqUG{`nXzWS@9{Ce>)x8$z@u=0m<9de6PVlUE+R94NCD@U3QV zCz%#_dW;1_O-gX?dyHS}$WXDhuJ=9g__oKxho$v?OSu9eTLzG%KV!(6y23V8zCnl?Wvxytlnh>eb83`|NCN(n}jRMutL*GD&W=SRKgs zHEt9!yS>dI4#Mj!pt=hkyV5l^HQC*o0J>|#jJhzXO0y9ypYkfd_i5kyV!t^3J1@G7 zzw3_)KzWAT27t;gC@*ggRMTtpq2*B-NTCJ*$(-%>Po6)26W~MFwYArhO?7lz#}ZVW zFz_c9XWzLD6ra*a3%Xn-0nvOJ`%MDQ)ht~>A~{nO{0ad~=3;1gbv+eUwg2ik-?|m3 zS~#iWvDiniapRD%nl)W+i#f4ls;1V`6FQvkevQ>g?PA4u^n!5v07)w7$?IXuPq)n#rH1rN_k`@3{sf zyLeAT8hA=MFyK?uRG`4}`y83_>Ekq-QLgp@Of-o^Qj%(Jni~>8>-qlG-gjW_-PUt4 z`3y+lt^0dn)@_kQX-)C%CU%m5;f?|R#{Z0rOMD=G;po6GKrrErKjorLHAc?pmyA7G zTu#ESypjGu5lHflz*z!$zoZAC3cP|o2sHioe1^K!4#1M0ff7rT9L))xGwqu+Qd!@{#*k88Z-RogM5gZGuB4BDCQnGE1T0oYmrr&EMzgkty&b0rW}oCS^F?*(+?!Z{LT6N3FSEsm%ScoK_mkTMWmikW?9?WOD3OBURoct zP zl@Mr?e%bcj z*<319MRP_->*>GR;NllS!GC5VzXhbDD%y2#96K0Vx3_<=sS|7d6xS}a!h0>C+~S=J z*Q&;Bk1Avc^0(T1RbIn?%Avcszsl@s+XD;7KM+6rj8N;#AQG7BwC(2vo;s!i+IEIki)U8+=scWsefb|1SQswaC*x z163$UJ%Os#vY4dBQIskr&3}7_!)c7KLn>%JgL}u#;Kkl1)`q3~NHwZ4 zaGea$xd>QzQ)ndrJBz`I<}4DW()ObibRl?e^2;mSqv%IIxAs0W(}M=e=6R#QGu-&Y zuWc96JB_$zsB^T^J`z@O@WQ8{pz47G2NY)BsP+{YiRdItqZH9J?f5=*vK_kXwa3q2 zm#X-neVRXkQZ4eDZULd;w-PCse8mMo@)PIIvVcv{x`~YYh;fX{b{#uAyCH%jmTrsQ z$s??yiF?s{rjrAlRM_jwM1C>_Y}iflJIeL%xUCR14Lu&=7;BQHQu28KJNy#5)Y5=RH}Q>+sF6^p?{e3+WhIkCC2I zPOq-w$_1`q`|Srv=9Tx$_Rp{#J`5BXPL{Al1p_?;tfHjBOZ)c3M@6P3*?~%cv$(_t?F3p4yC_N`A|l!H zAZ9$t(-)=2I0-p~opA~Q&wNMQE+%+*q9^b^c?^K_Q`4su{oR~OCzb;V7!Nc<)F?O9 zS_MF@u?n+xF)5S)aBF^kUfnlUD@l@L)`?r^FsRAxKeH&I?rU=$pxQm}t{;}4Il>{J zd@c3db0NOpfQbr2cD6?vG3bbWD?=5kNmkww%9{&bTKnj*`NFcstq0(y?bIevsJ-?{ z*16(k4Tg@XUSSIU%lW_=6#=CTbXXst*Z8EQJT7rlc+&td$H5U36U5wL)@GqCu?aD& zX~FB21*NO8 zxEN3EE8{7xZ&ZUyiQ9qTy#$N#@O9G^Kq!HW1$nrSN(SOq&&?pxvJg7M2GsgmOVsH+ zp!Hi64R6^5Qgf~^S$j2eG2OohPL9`cYLQ*8@jKaV6ILU<|y`5ncqBB5oPNufIH8CD^2I1#*`E^oU~MTXv~p@YMQ~f3VWN z<12I+J^~_*rj5O1zqYfr2HxQ{(7efbrhx;u^9->r42*fwGqiMSQ9F~!sWZ>w{bD21)>pFqQZ@bVpK zdX40kgClfk9~aivPY^Si;wz}$yhCO|(hj7PQ713o{QC8)S2SGZk z8oVb@Bt77!gD^@CJ3RlR^B)k6yjZnXhy#yx6D2qW1#j4&g>gZdPNvZv$*ceG22~ zEjF(*ZVdE81zH#queR<636=0Cl2>vTmgYd2sBHg;DJPz{edl6A!K^lBg};5KV^)J5 zWRm`I_U+d`kXE8jtO>dNJ=h`2Ojhbs!I2KfgSxK<`%NbV|G*Ew2V|v7w+R zNpwZQ1*Uf`VY1 z7^}{IV5I|Z3kD1JX}r=-XHmltf6Tp>%0+IJt&GRG)u5G+4p3Gu4mHiBQqy~H88B`* z4VB-6ZycZlLs`a#aZ}7>|>K4^zONAJE1tbg^LvNjbqcnvfyptf8sd z_8W*x=c$||8+Zb90emO7OA(8KuXYAz)1V_EJ-t-Yx;|e$hJSIW;_b0x#}Ll7>?*}4 zT^vqlE2ZC2`1S3%2^hUPiVpeKp4&?Jh@4rghzoz?(&5`hs1Icw@r9vE~f(q0nEA`NXR%q*p*;__}n&2l| z)OF#Yox2wS2^kiC-a@#d{p`~VlQ^`|kJM*4OtA92j z#+NZmODC2c04{AA$iOk%Qa+k;JEhE%QGNCb_iQl_OH@4e8rpW6c96o7NAIK%(4LIG z%;=njfWZB4WD0W&2_pO6e4r>z2_u0oIe7;Z!1cXzw46ncUC79Q-?==&O51iQ#{$p( z2lglx%}v7>;t3g-t7dn7zI7-*k1^%p#VCX11pN7Ze1URyNoTQmhl;p?d|Bvnk`Jd1KkI%F9osy)ui4V`B#^L{> zZtLDEy?OW9{{m1;0|XQR000O8dc7%C*-I(Mi!cTNP&Nht6#xJLWpH(3FKKOIXJvCQ zV{dk4axQ9cXPozWSdwW2#tq+yiVJQ@1qLqZBsh(^FbOJ(`lv{Xg0_s~G;Wj7Qznud zjs}v}5Fsv=5g{eGG+96E4AS}BT-m6?%{WM-D4rCIa(yvMuz^ZoIC-*x|aU&npi z=e3;Y@BH`aziPmm92OAsCwa-}fJMc6Imk_B~V$kNh+G znYuv>9-%}7xarupFS_I{7)AM0E7PT@&8em&6+L)Lqo73S$!;ov7`v5UUuck?dpV~#Fm3w!;qy4_fhx*-T3e(ZpW|P70H@n znpI3A@t1W?g}JdLEB^-M;aW`{v_UYURX z3%sp8(AS&&E7{ZTmKkey$2~gIpd z)P?oqmV_+A5XQa^537nH!q9DqfpAR}4bBvA7wBb>-@=&`C>|LL87wfVT`#CO^=o@f z_aDb!{KF6+)6#u&V1soR*AZ?I7d$^5KNP8g%T_cm`6-DW_pc1SL}BixY%ZS+Q6|tJ zFFU#k9kR%C^zR4lcG}ltU?O~KPaV1NqZARL@AowS%-SIexU1(#a}~<^S|C5U^!^zv z4P**|W78%CG2!*K25dXDTCZ^Chk&Lh&I>Uz7I~9@nM%}&SJb#l2H7!=ga%X1M5Vrm zP0U2YC6i_6rjSS*Rdtl>6f%a($M^~+g^X~8C)obz;kg~d(>)`^K@5dRejJz(GfQ?Zj7bkz%ug-VOg-wUoONT zHFY-wTVW<)E{WVSDKom;R1UNE%A{k=qG3m0Wg17z*bJBf<7e(jmxYh9n_q8C23Vix`5#h~uIkSWnns!-mzK5KY2+_;tasGo=2(Yw7 zRPKOGQ~_Wiy(j*^C^=?sLXw|`KuwQFnesl<(wqbIt-a8?QnFRU#mT0lI@wfF{$LLn zr;UxUKc62PoUAKnJp9Mr*jG#~zgt!NeYq~n$q|_*rk;jRPm`WKZ+~QY%E$fwq713# z4L3S%jde^Ngn-V}u?-%y^wig{b}ihwalSK^8NG;VW5|)ISr^rQ_yJ31SP&{-1sWjg zU?AS2EU7q9v!kr1z6RCcYiH=DfuL4YDGuZqk6d^Se0qXoTi-DqeuNzRhT&b>2)3oC z4M1Rb5@{J3`Jd$eB2S`u(<#U5x|@cW1KeY%H{EeXg;g~zINj)}BDFE)x>_yEXqQT{W?wA`6vwr zdhbm;=(e-c=N0W?NN_O%<@Q6%Ky;zoZXm~hu|7H>rlixcoY0UjX1HW}R+AGdN}LUa zr~YH&1uw!a)*YUU5GSN&$&BA`D$-Sxb4D`qRRu;!b;`WVu%p{bN9hLCh5jn29%~;S z514KdvSx`$s&E8o>B6QV`Fj~*#2KQg5{{bARgx(z$Lwk_?QK_cS8F%St54qddlkc*9C6BcJqOw-E9v*@4CN9lI0?nF$@jy2vq&=>=SpB=Iv`TwbZGp22>2iH+st>5V?6jRbUfO+z zsnaP(Vm(@xj}aCq%RAY2+2&lsFJIB1FF?>t1<~>AGrWFt@_}YUa~mg-Two;+gt1_HUwi6zrl{CCh8Ri+!I~fVpuA%?>r+H-(Y7M zP4@lD@O&a<0Nv=O_c*D96)~dXR!E>UOVcg`aKFKs0R3T^;TyEf3{(pe`${X#V$dL< zn>f8gNW!K-HVaszqE2UUH%0pE26%rGyK;iTXo z{v92GfSJ(n{af;CZf=2Sq8y=``l&N`*jf0RC9lR>w`dne1s1oX$+7pR&LH=l5G1zy zXTe%$W}=*$_9XhGP!MxLj>e-dQmf5pKJ+fi-y5TM9ek`HqSmY^xMDD^n(X&+Io8tB z$1*%5dfWnVEu=#%_})bApwo-%Y!$B}YBmTDyByO--z@mx9cHO%@7YfTzfQ>Mcbl(s zMh;1`bkihL9ibj$w#N9nG0tsvPK}GjNQ!G2@c}Z?{yfH`v!PdmhtKTb4P(#x-@?b_ zF3OC+5@G8c>5iYxr=RuM^YC8F2#3Q;bCzh$e|I@=NA6B=4vCR z!w+770iS!2*A7e@Wl-ahiRmrO7NmIeB}wdhy%giQ5sI zi%8$G%Z9N>k;tstKT`gdR<^h#BKK9vQ<#D03DEslT$t*m&$T(yi5o>;b&c*5+f&zm5Y_E1i3Nh6LAFTakn12VavRQ<5p53aSfZKt z4EZwTVI1EhNYm!Yx_RpOKyDYd$erL8`P$Azochi(;6NseY|!A6GeZO+ZJzRp zvWvVPS^t)C46TrsTW4*iN16e+FRj|cSlbD4kfY_y=y_q?XjL&DYC26~-7{R84%^cT zUuHg;5F}QNf070N3;6E8+JDD(ZpZ3$xC7Zh&5yH=I3U#T_bX&>=;XW?*J;Duv1)`-iPi`kkDpoyN^<7)zeT=0Qv3R+ z56xEW;E-U*-lvTw(1m^sFud`xhKUM{&z*@fK`XYLtB5@9?isX()+0ki({4)$R*kEb zXn17bK_Iv03L{^_C*u3$ent)$^yfh!&c3RK{z;Z7ZMNlyv<%+SE1Yht)U>5q zFIzYv&Y@n0M&VZCTIB8Whz*E}eO^h=^x{1_r!C)FaMw)tOVZMwFTW#qj20Hv;f!FtdX+Uhfq|Mh4idKqv9S1Sq$?d zx5I5lJ_c(wVBSoSzTd$5wdd`IY04Za+;LGaTj$+_1!}OzJ}8tA!*KFdOnE1v$;jPL zl}2cwU^vHAB976vU)PKfyqUAH9%f%@S$P<#f7UTh)8!hCRL*jf&HIWJ>|$492LZGbOyp)ke_1{V9kpA)`U zpXPLfOz3htR4F;!fHw6D>Up)JW$w#8cN|tVZUE|G=OwlfLc!Ly<=ej!-az-HHpH$i z66qlcB1MBNhrSF;ta199Ou*#J(M7$&(dryBg&X8%?Ab9(GHUOIBi==AnU$Ra6WU>~ zz7Bjn>75Nq#J@*dzkdFSi(KsA61>{^A=-ZAH_|xBSylEI$9qt0)-oBEw-$g0);$HT z^RtbEEBMiseu)+@l#K=l))Qlxf<;9y1hOeQy3x5nMKom7*6+G61!+Mvdyz9;7!j2m`5TyS1f=^8$rxx)CKUow0T%sebO=Z2Dpx$J@NHp)Vilmv(=SjwQo>+xfTf)Yc&WsAuq7JEufl z^W75x`;bCL*O~v?KELATbf_~8cldxdXQ}R}!7gX`p*u!^li8)Ss0jZh#aKp=qfS(S zj%#-sh?9P8Fl*Vh_t-TVh&TMK&N`7J=Y;Ri?zk;%>vG1V&Xg?n#6~?> zKH>C=^B{lN`qL(^evY)AiG80_5;hZ-d?S>*2}Q zAsu)%-za&nfpqd*=^4iYi*0WI0`ENLA_Tuhzo^|{*SElXi5$9B(FMIiLO&>t-xcxu zV7o<&mdf0-GXbgNjUDT7@_cducKl?E*4hGh>{;*fu@Lg>J-@U%T~ji}hd#a!Th4Fv zv#Lz@9*@ml&fExy^39TgDgsLhduJ4&XNf#V4r4C`?A{cn=>jD><6IK?L=c={0phwQ zPLCE@zT(bnBrzKR6CwuRWiG1awQ>;J7)N|>yEaRKAcW!Nx(l;AB6n|;P}?;~6;wJ- z6I5`CynFF(`MJB3PKQB+8!r5QhycuzHBI%sO#!bK(%S<@>OH(~f2iSE+n0zRlX_=} zeWov7;(pw;9SO~n?{Z0l%WmBSF(XzP-h;`aTR4Sr)zOq5aso61gDA1W%U{f|m>J?E zSvCChaB_ln&{2c0J6vn&T`_UKdOzSd#E(?zTx-#&F12NpE1_56&kAQoCiOeHoOV%t zWz!M`3nWor&6d(+2HWyZET~n-+aaNOqX8`_EX-HH9yFNZr{^l?FLE|X7NQ(|aM~P& zGSZfC=@8(X-}w{YhzF~3Rcu@HtR8kE?}A}rTuWbX4UFb?Kl#kej?Y8H%g$NI>>B%# z+RB&>wu3S37&=4}<4HjGVCBU~)!+tOlvi#Id{VSP_U^@U67q+nbR<6*4`~B_fRE+X z2!>Wv=HPFq03KC!_EAmmtnBxr)y?`Ni|WG>d~;j`hC z%C>sYoh$|T1B}{B2txzrFX1&XJCMw}4ejbc_LhzuP2-0Ep-u<|SZq2ewoUXDP{l#- zjoiH>i9mPsulp&c>V>%-Ph2c3D}k0;jqBiW>nd6u1BM9_rQuX^UciWapE$Dy+ny=% zveJ<)JZw0uHB#`3Tp1F92#oU$_iHIlt923s6|ZP@E8ZYzSZZc7-0nrlc*YhDI?hGj-^$|+6?=eHjG*e zmFm69n-2aWXEhI#-(z@1b#?WM#B9!Gq5{{uxG3M*!Bsx$fSoIeCSZd45dQo_S7(R` z0FdHuTde?jD1P}v=eR=Cl(x-(f~gEj?@$;}*7v8DqaXX`58oJ=%+JKgq#kUu;Lg;A z&oMx86UgyuV6hvo9CbYKet2X|U4VKKb|<6N(UP^6n3p3$ZeDNK_rz0MUfs@tjh6=| zjPQTHIGdYN_Roov$c2(cA=E zYwZKcCW)*8s{<+tkLa=>aEJ%ucF}?c2w!44PtW)1RHt&z9PAXaZAlTzU&Wk_hN)Lr z<1yZ%mk)%Y+Z=f>+g#mN(->1#Rp}3kaj{PfmlP>asvlmk{__{aFJT{K82t?GOU(Cz z$ZnaMHDXr5bYXU5@Q{iwcT)o0{A9vwp4A0dz0Z#3G?e#_vLa7qBUa=Qz27K<(1jH2 ztIhpX_yK5*VSbMD&otGkj=tY=8J&)XZw0-H#>wH|OA0~*el#r4x9Re;56p~ z11VXb`PTtUHcf|OkxY>Dj7$@a^9<=vbE$8s0ufNDk}Xd0gdFvt(+iSvf37pV{_dd^ z@+MR$@Q2l?D63W{Vo@}Bxkul0c#wpT>vDx(vV}RshT+!GnjHGQ@By(qBUdq25V|Q` z;f|MYunP;P1`9D61dK6+oCC@v&=qP;X*c&tBiJfZwNDZu?+0AtGhjUN-pZp+Ky0S( zaD!FjMi3;D+gG$dH zL{1po0P2T#IVs6|Uoh4uc~1x7S7`RKPfH4Cmz5YNkVY8gR?&&hVwBiGw<(%fbTPwr;d| zw)P!vxP4`ehyPH=#R?p5E@<;$E}{m39Q2Jb0PhHOASWVqjfkH80nI65fL2K5hdk8W zYuxr1qg5jgfq@0$kYPSGXn(RTT&*hON0ySk(186&i;Skj_w0uxc|qbsM$a@F=2J78 z#`(da+Y~=eq<5pyBm51^J(sb!?Kmw-EPLe22z7? zI>FS5;$sGk2z6{oTK)4ddW)rUzpFaE7ZK+HHZ>bRKU-h*^ zW+IJs^|DOwvC1-Kqhk+b?Zk6vb@EYYt-yCf4NExZfGbORmA#w~d5 zpl6-oS2nfVQ%X--rY*dzpC+0Q?1t3+%0A@!!#I-ysO<a~ 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 z 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 z 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 pmwxD6vCe@PP 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%0D|@TaZEniL&vf0fww!V9a4NQuc{}PBk;gaLWo9@a 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

7(Meib+RP0|l57u4=9lUA_vk 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 q&6T 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 z z08Bu$zl7E>X)WhpsXIYj-KzB=m8QCRAm_gT*OmPHmTSOESICL$2y)L!{o$SFY#nvU z-^qm#Iht8>Qna4ej#6Q0viy6vPbjStn961ieaD=$qkBL-zPx4VaLD=0{|Fx-OGVqz%YZy&H zj>}cajf}xde35mJ^FQXTgDz+rHD0s?KHBs`^cHPrHxb(v{b3mM zplkEPOq%s<6RS7C=x~X|?T2n?)_YN#$ewO{Jm4kP=m3k{T}u-%Pi%czU|?-XqcXok z5uAUN4Sy^?qUyZWfbZE~V$*yu7gvsn8(Mxra!!aQSori-(2pJB>cwA30Q7V=?_>V# zA6I8u_{GxVk2p~(W&qjM>M!sj@~t?G0?6Ly3AY6UM^myaWcDbsD{ob{499-ao0YYU z;l2F!a$fH&FnPq`gQ7}A1y3ZagQ93545()g+eeTo(h+z+9V6qy+fdJ^kZ}abW!v!V z@?gS8ym0WaY6vo}RJ?L4WjExH-QZHj;5tI@KmF0Jw~PHfc`mabo_)4_Q8)xyAf|(d zSOsDLcrR;vbK-(Csq%3f+X-zIqf?`Rxim7b)kh0RV$er&ZS`Kb z`1DI})@zt?ZkfeqYY>eN#KKHfelMNsb(;d3Dv&i*fNd|#U;AC}Ki7teLkg*R+r=t) z{4tWxq_XpB8wQIE_ZjW{FX28BwwyUjHzok`v~rr%b6#u&5U{=P25%hKq8+7M5Z(YG zYKEIDE){4@QRvpW;$a8cyp#M&qztVI_lNVEjeBnUED+cS)joh;>W}+NOO6#;LF|}( ziS{+p&4{QC;55IxV~oCjIjYHeSYGi56nLSpCj};uyi}LYO$;)|hv~YZUsR^r2f3hA zK#yN^vk8~si)Jsn=RSZjZS0nP>?70;1^UQR2j=OBqUBOyHCC!M4qOeZwHcfN= z7+Y3dgphi=nOo#d0)>G{!ZWykg%S>&_ukdcOun5sFROJ_;EA3#fVG zd|Z?4;xY9&XC)AeY>B99+oV6?~Ev9nrdp+$Cn&;P3Gc-kaq#2m zi`g5ZL&G>CpY&5ybhIChQNZM+&8g>%s=}=FQNJwlm-=XYo10H1=Ou!uIZ3#AB;Tr9 zuLKAzb-iVjEQeK%v}n;CheR5Z7<~=1gN0~OCU3%spu*2WA{fW+PFP@hvFGmKH@MyV zGk2}ke5x{mH!^L!`)Jo`3&F#(p_>iLq@NYEX)26~!(m1p7@^45O0o$8<1_T70kX6M z7_3ikKxJ0z$rm4)aayI^XWfJcC#(+b?6X?a8}rFfIQnUZ?1!nt_crC`wRTX*)-AxVn(Jg2uTv|GvfgW}fLkzBH@~`R{k;3%Oux zc_yq2eL>Mn3RV42=pFU!Fg}AiUL93`#s&4*n>p5XmRw?wXbD|A_G^3S|5dtRGL0J?z8gEbIejSRcy@*}r1}wcWrsd`xA#iTv$9zjpL0>2`)J?pb(4Ef z7B=GZ17%!$0yBvZ(t7m=NL@;L+0WYSQBhDaQ`ST_gv+m)Wv~D4aik!Ot^<-q;%>GB z&u60Mt2yxi4D)r~XdT(fvk@_PV`_}C@_C-IM`@f_i5ARQ%Lg+ck;nR^&O${nnfk8C z5a57JFfNUIr4B#b(L{$GZ#Gmw?mmnlN{<{}M;rmM4UJ5BW5SG)uE1MXPPoX+Gtg^Q z)!*UM4^*k5BEkIcY7M+y?hJhfJUTj^hP39{p$k(=3xP?``XrM2g5NZ^q-99geR2*4 z@)uY)-YIbrX?oSVKAXaTTCMOOIILFq;`Dk@Se!9Ll<%XyER!+@=kg>+RwW{(ass#K zR^j`lKksD>8EKypCmIBcRQ5Wqar9K%S)r`BHiU(G_$@A;WHM(uohs6RRv%4Rzh5X$9(0j2% z0Dx7j@L88zY3~qvlFlRK;v2Ai8Y#Zc#{p*YYOL#Cli>m-(G9J<;Caw-&oC7WkMuFS z-LI}3H?NxM=nx~iu^{BlzqfQ;-kYkx>s1^(!X`~f)-fzOQvHBS^UN0y9&Hp0WkWd` z6s=TF)I2Z{WSTjkSyAgLIvx{w-JJY0AtOsC1WRIiD@6E|lxN(&V<}Tz_>ywti$%=$ zwhw~2%q8w?8%lOvYdU=XRuQ^}CAN$Kb9n_5Q{@TrNy%@_f&>6h1127sSVv7RP<}$} zk#ethszG9n&-qVJ90!B%NmP7+UZ2R=u^?{Y_&uT*U2lJ;&Y=Bs$aX0KwLkiS_dAeu zYBvSttLyq{CTPo2WSUDx3kw!1gU)n5$vwah&oe45TBZ$sKdBRL%(*s{;J6ty^G&Bk z`9D*KHyBN6CF2F?LvAHm=Eu5h?h4oJNwe^glu8d5FXd_JTGypKCG+L< zm*(qfK^$|~pEJq%I~a%WM6kx_Mofit+U-}mBlFnwfz@%hO$+oQ#il4NKx{4Yu}r@N zdS!TWkvCD40&oh_W53g4y)r&-W%hu}urV1)zKSt7S+wMGzE`LS20djDf0pW{K_mV=gyUT6aoEC>=7gDD|-{?v_XUbIS#^< zO4e+5RXg5@a#QeZ84nsDv`vN`8BN&ZFnOK3U#FcKO`0QJ%>?Pk6DAzpK^c1(5`$l( z?=Q^v;}XM3yyJJtDjy9KN?m?<+U<|M98c;JM!gc6@sHhUf15Tgon_npGpcx}yey<% zm-?VYY{{vyV9>}}4KyS-HqM#AI-mH;{!*M?H#31l$%S7=1_wBIEJ<3gYt`p%9)Tyn z=?Pi$Czwm+NW?iv!=%@H#6c&;qf!a{j?*aoKit(z(GbbMfLI69sg3Q5_7{ml|FB50 zt~Y*)GK{lUs~06Zb@!BOTzvDDZ5ZLvrhR3c{2ETx@us4qtkM-e$MZC4+xJDVl))He z%m4d5u2t2Dxb8#)B&;TkyN3UZBXMf%LbQaF*x6Z;adw9CcyaA5@m%`mffa4vmY+ovRTTC=zyWvnxCWlaH z<||~ST5D=wTJhHC6Un$?5B{nzTf{;SCbdKQ{ozQNAoC5n&_6|pE6SnM{b$y)QI+bJ z|LG<%fI0jY=$eKQtE&amhQ2TX5F(^oRCUSM%nxeja5>91 z4|@{$!q`I*Y7f}cSB5%g%)atzAmL(xqBEuDK?eB%^!%~~=%7$?_)uFw>&!SMBO z;H0#_0MQ_2=ahal{h>+@$Wft{8O3NyCU=%$e!^2~Cr6WbVr>sAwzmyZUI=DnQ@ zFQ@3tQrF1X?-5s#Q$pC)HZnw!rgF@)HQ_&5wr&Q&`_(pMbH6SV@voRzsqCitwYn;t zL!_>^r8VxHtr4Y=ZpSqoZea4@wnY7BNMtvU+JJkRNU8a@l&DSfzpII@N5?-b1g4!L zH^=gkht&R^C1%()a|#+`E{8j;+!BM*>u@ad2&wtGo3}ny-}{9S5_Wk$l}0xkL&N{C zyZu=d!lX?UvI@3}9#AXwT~W^y-^?$Z#Mu?rEIo(HE`6X}H|gpUd11~4nnNC)@1|mQeQ5R z;m>{v4e&eaDZ8{S%=ZJ4lyZMX9ca9^!xI7fS-ynmGW4I%GrXDmb3cOgs}QY7fBjBv znCUxls&x(EVhWl!*sqkYKZ`zv)Nm9s@Zh)%pvcmWs}n*icp(8i5p-&vS+N>9os_at95XRdFmR|d>$Zt-eilr-) z;bq-i2|Sw>U%cG-L2XR!qT(is$3S2sn;}Cg{?Bt2OXjn}>j$!}OPS_qB`Az2-Vhz* zmsbspSd1Y87GKO|=o59?YbaWLTm6gIi-|NW-t=0%*r9J0x2keO2+njjRPBA#;bPTL zmd}nBFg^qS9DnP(wf7;LjgH!2Q$~^oM3@HP(sI`U{Y@sS4{V5hBJQX;loI~t1Zw7j z_p#HxoWT)Jor&U9@Ya<(hAO_gqbM4fgT@L`yofauCnZBjnjY|MqH2CLK$9a@e$#W! z-Vt!Q+I*>0W7v6Zp*=NegD9pcwNNan@e$<_SpBI|HNi@02%?%FT1@mP)xWhcSS)KM zF-ToG;j9dXT$Vsj)D7J5bVw67J;|EK^LuD30rZjr8a; zzTy2i&-X((ImVZomNC3YvEnjP&eS&(9}@w_AlSz$NJP7=kse4xNHs4fyQ#!SQ~+sel#v$uVL91I>86R!(ULVX3#5|is#Uw9j(M)A286N-m>Nuh?WNsGL5 zugb>5R)}J3)=Ofc(j`fGX2G3l(!XOX*ENcXS|V+izYBe&{Zp=~m=S0m>e6&C|Ntp=h#gRz}XBQsc}ChsB3rXV0b8?Qs-@Lr?)$d1i$-aK>9i<^jQMJCdn6%#2uOObO{XU>#xP** z?#Y2nv!EdyT^$*cr5&ZC%H74WuwP8w7gw)HB(r8bE|lTJ{4msE#Dl*8x>b#|0h0JP zM&nC}$gq?0uP?Ny(;V-3T%pq9b9A1i6r|q=^kK>p)W_!osEOjotP6+Ykn}Fz7x&$s zm1r6$785fJYcbtJ8!4#~{^N+NkM#P9*q!%bMje;G`8PwD+%*O^cIu@lxUK}5MBY%Z zgU{a+cMckw%gYffEEabPb|okR8>*9blo24c%HmY++t6o+BtL{cSp!Z-6UHr8d{gj+ zO_!ziT0h%3hF(dI@ue-=++TJxZ@EC=Pk@mgrtzm(9YY`V$!+ow+JkV+Tm7dxCcQu3MQ>KS@Y4Y<)%|_-=M~rQr=P{q%aiA!` z!p+?Gz9<$Y$qktUm5PZ)Y+%df9O=U1rHJ_>;^#M=-m-#y?6ktvH4|#C#i=wdv)Iic zVHq7*HHEconj_+|`{+I@r|52^h{jPgLzk?PwV<%_H#ebdHXHgLa#FJmp~VCygHSw? zHNvLEFFO+`PR?#ZqBy17gzX9UxUaTf7o&V{UHDuB0QavNuJBASl#Yn>C8uxe<>(MT zl3$Xif!g4k$Td1CmpJVE`0+&*^T*pxX@G(Cn>r0wmT;|Fa;6VY8?%DOE=^;FB;TpO zDqUq71Dg`W+5>{R9)O_WzSrriB9RJeSL!1hNy`3!jc_lC?_zyr;(X}%<*!=0%0p|O zs8ry(##>70su+qVD^#y3*cxfm)jwrl)XSvRa`K%d;`_)95)Eo$@3oQlsNQ^_mL(!f z0T%14`{fH0f}@QwXF8B#A|={hh?9Q2uadm)AEOH036NH6*1Ivcaz;=$+<%0 zK7mBQ?MAFIN;sgHh{C!#(9ho>HRDOo+JBsy)Jr-LO&!`PEQ?BgU^6NpQ!1x13PgM^ z+jO?B+D{LX)Mf1n4EB4JMEk z&Ogjm=#IZ^_g34lu1#!K-uKl8U%%nG>E;Q|6Sw!xGfSZ4vPxoJD?#_dn~hMM_gLwQ z0JD}67~ZYoEc!-qA06l#!2lsf{!}@jD^@Ouq&hRuZ7n@}_!mH`X9$)x!r-;P`pF-q zP9IWusNC2KNTruV9PC5$iOj=;j|Ij z+bokrLSbH;U?WsK3&W?PQr42h+Uw9_BEXOcfn*x(yvkQbx+^2=WYrO9KQH000080DHYDRm9!Mc zVlQcJVP|D?FKlmTZ!U0dXEd7ySd?4$_J~RNwpqnblz#xx^|FT*O;~cc(p@_5{z*7Q>B0cw?jD zWietY!l2{fIH+i-+bvm|Zj?sF(;u`$ncnZbQZ9UDM~B#DfSjBU{5`htUl<5}-z%g6rwv=<$G;BQ3= zi5#e?sATXrBYFjo)2KB8Cu?%*=Q~sQ`0fYun4{u^=bFej$cM;rH37|#_3Af!0end7 zwQaR~yJ8aEij#cCJyFylPYw9!uVEYA;^AP#R7bX2hcvi?68QV%922if7i4PT{v>>F~q9R)%RYhn@Ti zwBF4W^V5aF?3dcu{cg^j#Jtb8q9xd+)Hf@ zXlArz{JEf2|~w_zYI+EdbqoW_*5C?24EoF zwq30}4ZaOHTK@U+<;zb>w(}^6RC_qz_~HCtLsJv-ul%NV14ZzftFxo_@2$0-0`qu_$22&E|C5*!_PEcsc~#<7A> zo62LhP?3_7PE~zW2&T0kO5wxA#^!}MY!;b5LXj6SpFH7eIU85N6(_~R!&_Nd$$<-z zoQrT6wY5y$PL~_uaY1E>Zwm=kY5#t=`wRV0g7B8mB{8uxO+GD?IScn>Sx{Ypn(Ed~eRSgZj))FyyV>?xreCB#SSVGsUQl zqojO3)>LYWV@%y`KI3}D#WmXCzOM^EWcPnG>3}2gPaAX?c3{4KxZcbZzT-;evoU|D z!s%6$dhABU#scH!x0{{(x5?{qpbs}fqOK?h6{&Sd`P%V$2Of!?oqn@BdthLowDH?0 zmKzU77{DTf z4C?@uiX`R_K6d}alMl>EyVA6KZTR+}`4A#)GkrPhUA({0Ols`x>I&xmT^+adX%wwE z?h(dv!fOA<*N_m%K}R20$JJi%X2oP~n2Zc%Aak?(ewFat*bZ&A`B2K5%{P{JP%s7K z-G+ZglCzpe)`yF&6N3xvi(1W~Xk!b4o)R%hxVpL$Je$gq3g?|pPf!1D*eYbu?EZ1F z#Y?}ct=Lc$7B3vFnj6hq{j_+ibo@!NC1x#@!uF zE1touQBYww$KTT0D(H3cQov#H<*Qd?kSipNz!{0^05^+AB{`lJ^A4(goohx01`7Md zmcG6?#^Z|%bCCXu86wG;gbc>q$t$IH5$6XBl*SlY5PW+1cv+W`nQ99p!vOzTF$?62 zx!Gr-VA+_EOKACRwNrM*#Ka=VdA@*gK&~JTDEomM5=zfUTr}7cGeY4avplxAuA>?I z-|ufPdCUjN{2%Wxc~?!Yj{ZS*;iNPop2lv9ION=@52YC}iHy9wyenihEbaX?pjc0{ z@VVR$<{O#I+_pvo<>DBe)_U>bO7Lo}Le^z;PY8QplLT?cw%2yDLR4&Bi{~33bM{(` zE%XNK>GVL_C@R6uJh?c_i2|jtSFaovMc~X5yCBed)Eb|$h&zqBej#&=D2!~9XJ|b3 ze`CEi{qUjGu*GFFiq~>9>qp3yR=J_*wMV)#fpdC#OVFNE%7((p;@gy#NPCnVzCz#NEZ5gDEeC6ztc~kP_^d3amdR zGr&45Dk{Ndx@^5%ul|4)>de9DdN=p%=;x1j#kL2ER*S1BNSC*lhm4Plb#{6+)lElm zI3$6?Kz<}c6eLB&P*WHwr*gghf_AHS?Tm^8zv`XWR=NUI!pYd(*4B0ne9hKuEo*l; zX??Q-h_wphv&P0*m`~;!oajn*YvtQEAMS50n=^w1Z2uZpbJ*>*+=`s}m!T?FdZ@Nq zO)$U%XInk2r^}S`<-c9sosL}ZmbV|Bow+id(eX`}8Bn$wIv{(mm;7!tW5}vEEEkvw zSE}hA9v=4e_I7@_^D-aFKzy>upqU@uu64P5*#5X^?q#=gtut(WC*EIYAgoCir0#Cd zOhrv?cWRo<{SgNHuU5Qkw%&nrC{-XaRlq?$S32_7z<>fay5tu#XBU^a{keJtP=1W8 zVJ9wMur}2bVsn^;L1z;FczdybvJ%c|UR3ha_!%cBr`6wz?5mp_c~I?nlEJu8=tjt) zvE80Fz1<*jl^Zn^nr45D>PRa5L^}64Dl;>aW{U7-`8S`0Xd2Pkjnu6_rFvQDF;R`~ z`xM}sJ-Tf1x%1hQ7;oRcB?ye2DGlHdlz&2{e2k~wU8@UX03>x2=5LX}bpL zSk<_}ovf%PQ4RvF0luV?I3bqi{SVDh97=vr!ZeUl=K@maJ~d?BRK)^}-9M#W<8w@O zX#x(0JJaP3hD)th+{w^zVpj9>MIZqvgG%(0G|NW`?0SxFZXbU~kV7zB3NSKa;bo+p zhKhzpf`WpTHq#vNsqY7=ya5ls#pyX-I9I=Z{d(!XGa33b2t%XE)hd`49v4SwH(O%@ z1_U}f49P_fgOe^XgEo6*cu+xBHsl7VvgJY(pR%$tuJ|GM$9^u$(dR;LJ1`)gP{$v7 z_4Zna1~r!W9fjX#jc!jz#2Hu1UkeMn0QP_n>y+BKQ$1Bo0&_UI>9^$V7d~vEBjwO1 z!`#y#>h?YIY`32Jp~bp2mKzK?pp%Jm1z8f-axrT&t;nG9`E+xHwAJ^zYQELy{lP*r zBVZB&T3XKQ)6K+{?r;TA?;_a*T2uCd0;T=_4Wo^Vc69Bk5UWxmnn zBgoavFxdqE?f8-sY$i$?8X8rw%Jk=7qz4k%*8v6i6fw!WNvRRQ-NMbf~%l%mN;H=zv^RrZA;EQQ_xuC|Q63a4tbDq# z=n^oZda+jNdm^dElG3?5y*gW+edWl2uZ!C2MCS}tvdjfobMre*>EB@t^QAOhSXN2r}buan(`O%4~y;eR5;1dD48nJXMik@$175Gwli;m+~DJ5 zk+8|aU@!vJH^l*yAWQcDOf|XLz*lv?zt{3f`L#JJh2T@3*KW$Wp% zuzIz*60=@iNt&pS76rd8lh4H-e#gHr05;h{IMkb5x39x;s60vNowu*!a+omW6FFK{ zeF|_BQOqt67RIyQpd23`$6^t)$O7ZA29gT!f7o8#U&Ugl?Q!~Mx5lQXu%c969cdju zwr2)KF-qm+_-eTj*st--o_5e;ozJ$^8eO-)&OGOV0egvPBjKs3bJ$X98+k@60jP@o zjzNMlmC!0>HKJe|p%^3Bm(bp&i$OKDcr@~cOP=Qs(c%wDQ}qr;aw8IKeP-N!RUZfP z>=&B8#>c+|yoaym!8fG250;c)zBn)PRK$e_-roE( zw5YimtS6PIH_>ylD}26j(XDBtfNo$g?RAUVpNfb7OvYqFia^DMm;mRM_S)$`puzOf ziGXugcXt)k)zzVnSV<;aWTqk_B7-qh6Y$gX-RXMPL%=IPk*{@Zj0z+Dd}6tD6gn(G zo$_aXE9DL_fiTAP5q-qz=pNKnu3rL`Nccmm)LIOA>!VuzQ|sp@Dw8O~*Bx(-xmnER z5|o1;G0`phfYCAsT?Xi263e?EA|77cojN9t33)?bg)BdO$mZ7)8~YvQ^J7LLb9cI2 zqt^Nz!mGpMzPk+RIENC@58|FF>t0uNqyX7UnyYt^WcaYdE$nGTDem8L_i%fNR-l-C za?s$k>J335mO4hixCA8u)bZA+7>)IP85>mH5424$bX+PXKI_T9AET5cBRl=|U`>>f zze&Jaqut%#({per>l+y40})mSoTjb$q?J}`jTH1Q?(acL<9{edzJWwH1F82lCPuv# z1COTncVt~$^~O-@dvqL%m)+swkMN5V|9V4H-W6-ffxP^9wEWX~dptkM_xfatU`obb-q-g|&(P4&E8u3EQP64S6HHpV zfZ3?U(`kFAx-f!*Po9F;a+wwCMkFOS_z8CyI<5QT9{_Fg#4u;eUbr!YwRU;Q?duD@yFId17_9~Y+2U=+$3gGOVm{qG6 z5W!0kky0aXpsV>{kSBli9OS^<2tgPE2x2*5u*{ek$5K$oXwxM+bb!(0E|&t9to1gB z)8oG2P`VSub^>Ni6%`dVc(_`{!^i)wRhn{jd%N_GC|_6Ft(OaF7(M6(^ZAA}So9}2 zI7+C7XdD-NGZQ<7vpqe*DSS3n4ohP2?;R;IG0(cidHWc(`%~K(SNv%Jpre>B^bK4nsO~Pg4YYqiU!VCDHSx3Gmm6l;@74O= zoLQ;w3=so)0tNvp7>JJ1;&`|yTKpdvGNEShYT3iXgB3OtxawdsPtTqPxiK#V3Xn+Y z?6;q(3^AC(Ox?$3V&txuaIvtsYXA%PfTVp}gw)y^Xw=o&Io?Y_LW1t7+03YrE1vOr zuQXEFbxT53Rh3|rGtSLHACTaeKhd9`lA41aN*4JW@_e+bD+qv+$dEz_7{2*sMH$@4 zTGNq7-17*MCC|{zDA~_1=&})^)Xnd(hpOG!y}7bbFVADTHPnAtshj5DiU1HG4!nwmOz<9+JSrl$~#LZ#G%f5#I) z-mxO1phNk_9$J1hu=2Q| z@GAc>V*oQE{qsLGe0)O?JP}b*L5~Cdf+M*vc(hS{W=)a|BMb0%6NM@&_2~iQ&mS23 zQc?gOVIJ8r>~h+0Cm-lat}92gY8G_>{N5hR#VBvPVS)ZA&nJnhHll2f-bVLJe*Ca3<)+YWWKq$wYRr#L{CIn z3;EgD+}y>pwt+sc#4vG>NyuR4DMHMw{%NZCeeT4z<#-%60|2okJ({2(Wz~wH7IuewYa1Sue-wEA-?w8GieHZ} zbu_B0t9c~GdFnLquWSHt{zb;E>IOc#@J$f9>)v1dG>hxTve;WC z$+L^!8_hvIRS^IU}?z&v_pl)K}<|+LmyR5 z0xl>#0gx7#i}&TrUuA<7nq74kvBJ6X{%M9aC7GGD9iKBqeO6Xh-bzS7iUiwodawW%&$v{93_<60K5-fkaLW&ki0_g$)Y*VKrO|eWc}|C+h>1e7h_LO}t%Sa8^gN zC6g2jRF~Ul$u!}KpkkCbI5;*?4o|oD)hvt9Xhp;4{}3e~gB-Gq>s!Ms`Ppeh!9++- zo@|L{u>wE@v6_B%9oi>R;WSEo`J<><^+483)e94Lr zAUh(_3oN8Vr|6_3vOtu5FJ>%IF)%0t569k`!drn?sWM%A;CN)aJO_2h+w9|TZ*F$A-5l0t3Lp1ZIs^ob@X-xJL7Nrzkho~)bt{p%| zKsUat=VJl0HgCo)dUvy1K7qqkyQWpD3t;KL-ke`ppo(42sIbdg#w@YxHmed-fHWlw zx-dxR9=DBIMigm&CqUf7o1UKDxd+j>y17BFL7JtA{0#>J%OLC?@&rH_#?{Y+w2Mv` z?BU_ZW-3BLx=jC@?^HsrMR!ru!v4(ad9sH)Q^h`b)Iv2~;D08F#9X&xe*OB@oAm0# zFJrC-TypNbtps*Gs)LUHZ>+#^>nSQLE29ueRc4HzILH^pK2eg&Ybpx)DTI$niXVXA zcqWoHt#(ghW2WXNLnL)g7rxU^piV>&Ap_|2I|xYJ59Oef3I+6_HxH+ok0F_vM(Y3w zcW*BbIiHfS#Q?6?Z4J0O`nR&N;jRtCl7_)-4}oGWe&~tHZ;+`bPxYFl;(yIUE$9rJ zt+Pu#Jo?vVNG~6M<#;gPXa^{E{cf%AaWo6m4I3rD?KAw?Hox1j!a|Eh6bvei@gJ($ z{{fcO1alG4Qj4d4miqNPQoy+ zBw_9$y~_S5t>Wbeko5N^HY2-SkPVS1KfuW$@c&5HpH%f39ri8=U&u+t0=oLW=$gMX?l5YA32dfz~$K8vAh1Be!tjUs(>mmu{*Dg52W!Rj^ zJ!OWi{V^{jshqF5#d}PY}gYjsM=0P7Dd&%ozHU)_TXBif$% zP)dH_46A+v7oW`^Mfc88GS98>D{6B&mbv&)i|%qdtdCy4W;lQBne=0zSrr-+2PU> zHfAFIrUS{1S?y1Q?aA*GJUGihERkNwDZRk!KTn8&k=Hsg?34K89U<>L)^l;|gE9}qE+K%nFM@%=d>pD-5F{id=`8<( z&-G<02{_1E8JU@x3!muDccxbFFPAKU7sIA{&E>_@H;Cv|T+t-S-^7ct4|1c$Og9FT zx2rZBt~~e~(4%R^`DZAN(4LZ*{f;09W0XR=udPfrVqNOndz`B5XNqUqOQw7{$pP5yDny+x|E<%Q3zn0^mb{y?zPTAZ^L)RO z1oQ4g0a|^jiWbFup+W*%rA`kJ0>}X}tJ*Pv016Ul=GYXxPtuhwF66J)b=F2$f+mo; z5|OH@mJ^a=rzk9He_Gi&WW4$y-DEdi{C;HbRCplA)-dSjGlLu$Cb(*Lb~b}?CEY}y zLLvuJjW@|pH+X>eUpipiA)BD(M9FgRj2VV|7c91TO&qv4CKtaiR|Z@{q{=+;-`pQY zRvi1}88>#mM3#40cKzy1@5mXK-ImV)zu;vxpOw~552cWU%);k8u=&Z<-Kf{(MLhYh7cqFsw}5eC9_1ro}^$)-SNKP z+OlkIZf;({*x1{P$YI)8o=A+8{@{q%Qdb8CeV7dUi;Tqepj)M+w|V~0b5X}-_<}bD zpS2mfW>aX2?=QaM^${>C95zSzgkPYDL(qg-5pZ9$9=m^rUg!W%&P9g(QzCtIRFz2T zXI~$t52iJu3jir!k*ocQ5sxB-5)`uTSlH`8WE>!nszC#xPki(#ymc+qGPyeqseD%=SF@;Krj*f11h(m9?@{7+7&O8rY zOLC99H7E~pV5L#W@@vltj?k7b&$cyisfB(ux$XXKa%0ubi9_lcY>bhb6tqIzv}kaA zp^_o;D(fwkCNlrtLi6;_rrWO&{E(NqoJJykH#L$Rd_$=Mj3OfXc&;PA{RMWD^MfE{ zr*jVNf@^AYIi@DQkN1~gp&2{0xnH{tD+js6*Pi|ei1=w$<@x3FXZoa9O#78_adCpm z2RUB3W+3`j2QE%dCXWyI+JArFEH4|cg2Ei%`&Dl@N3vX$FQG7q@#lM^E1%fZf$^gqhenUX4E!Wy+mqvCxxg1Di(EQQuFTunl!<@=*2L;K9 z+dxP{VtxbKRkDBsO&o)gyg5#3u?4?Kh%Gs4k=)BdY2e+X0bqm1^jZYo6G4vRh=%d3 z&lzX<6|y%v21X&72Jlfm0|Vg|6jQ~MWytlkqTav2my+?AV*~gq z1OPet<6SuD?k{qraewvnq{4}3lP(eWlPcZ@I+MW5tw*AWq+0V5Jko7^N|&dSh^sH<&!;xRRQ47 zzfch~p07YiN?M2!_EGbpgu6jS{67BrbhB{aG2TGlcowmxUbnll(n)IMYl53|0LOAZ zkK{KGz&HR|$v-0-DV>Y&Hk5&Pv^(EeEqP;Qb6#J9nKWX_i#|6%X4(fz1l7$@UkF&( zYY%q(YlZJS?gC`kNC?lVxA~N_MdIz-x2P1{+FBY~c$K{cSX{{#E!;q`;O_2DaCdii zcemi~E&-BY!QEYg6WrZhgS+eNx%bXYW?tU+e}6%9&gnjD)vjH;s+y`@`wS$~kvxaI zq2Xy_@$vASYsud(6(0VGttEa8SU{~oNhIu7q-$JRf*%Rz&45k&%)4{5-d?@{Q}#R-8R-$ciIM*-Z(u zzDp{)BL|Xn$1kXlJ+OwkFZRdzd25sEF`W~3YR#i8IFW$#x!9%s)+PsJTzp72tS(ag zXHf7mU7~wuWV<1m0xOJ%Vo-QkY5F8ch;z+}N^;|BwCwawE4K;E+TLgYL^*uMhto74 z`^+kOxB0`5R2Ox|LdQRCLBj+i+dx|M@G3<&4e+Q7VmDAYDmpqkjF2&uN{MXu;qzxj z==$_&!Um9AU>mZD{e#fYI$FW$9cLy`lfslM;kB8C_;iniq;y(+E;Gyx%5)GkGzPlX zTgcNXm?4e7Gr=-#U#hXi6hfzj9cU}s?GSTExkT0N3#2YbU z_gUGlb(8DfFA%_gcSE+~C^&5)ipz2tS+r`>;jP*YoGV@5IrjAQ7^Jj{urf4Ml>I)S zUBX|-tvhBhb6OX<7C;_^izfGD4WU)M=Li+j%J%1Otib%ECzy}Vcw+s;N#adFyK4}H zcphykiMfK3eWm;yMYw89Sxmd`a*L=+41H9qE5%;>p8U?&DX)gh zwlP--%|=H)j)xd`RrD=eC7`iSLR(Q zm@)H%OZ*e%@sw#{M-ofWg7k-8AnbF^J6QTtA99I>3lk?f z&2&}IOqN*cA~wdR!IKQQg?);oy>tVE(yw2|?S)-9*NCW@5<%>wb1hHe-0;(RT13@66l=4Q>YidrKe z41|qi5fNehgwOyTZtTx|Gge1hgSpcawIdnU(!!={5wD4|e8|vSkCT2NxX2iee<~Wa z$^-pq>Fw-PgG^OLIXqpfVJ&P$PG(4YmSlJX%XHl}qjKS8W8Y_PZ~>eQ)}t1M(}R!; z%1mu%m_32uLPN&FiXbP|a9&<(Yb{#gGK3m&Nj!2jPZ6vwYvp0DlC3q3?8I;eq5t{L zXR{e!#_trKPt&e$hIl1*m$H!9@WVmMn9k=9OoiC&?7>^i-8t>x{kGo38LOy>%x5%P`*w`F8IaZ)Y~y1-{>DZQVnqQY48BRTlNOE_gBR3YQr zh(X|GtVd}UnI8mBOiKQWJ{9cTd<}f~??&cefG9-F znHz3yWHA`k7JhG%>)t1GZYy5QPWx0sYAu&Z&1@Mu4Bm}X%v_1@LScY)zQ+K(wyK7k zZG$PAS5CHiT$K$SKA%UCITT6D4=$vc14x=015huMyRc;@Iv&QtU>E|T7zxEwsNC{Y zR8)^I-yio+B82d3*UZ^5p1^V!6S#mb7yv{;8-?B0#+NFI1y7J_gpf{5)nb$jk(aXs zz)l<}!5+1Vg3H0zk(X)=!d;b%Cm{g}C~?>X`g~n&nNHvKAAM?+J`0UzDW!r~=@6le zA+6$4giKe2x{VmxKB-GvKb*e4y*zzqR;4X03a7)uI_&0`imkRaIpr|vm_aYr(Xid- zDxIy!sm$D4M-jyn?83M$RIzt4-j;U!K(i6i$oP%GuR+(t_N~v~kW5vd|2c`tQwM=| zkY>3x?>aM$j19(PBU#2Q&T+=le}#e5hoRMgaR)0-ZqU8xi6q!Q%YBnnG)vS z3Uu7xWHF~8`OCe+&(nvqJ@3W6knDIR@zaGB#gM^c{|c&PL~ zN8avI@rjr&FE8%^mnz;9RRAuO;lI>Uyw7BNbpeN*wKZ?dSRbF$@F`-*MY@suaZ$F7 zVc-1_5}c7QL5%&@fd{Q~eK+;FOb+kZbwT(UH9lZDA3}`p$-6{X_>ooCWogRgYh#{n z0Ri8RT$Z;IHt4NH*2Dt2pc@uZJdIE%vpLD>t@OguQYy&k2+{fo7#4_P@k{$&?J6%b zcvWpt5oKj#NcVsaT}nq|Ff$1-F)k3DvUxMU=Q#$BDAfSIpbJEz}Mg@>!JF_v}mReUl1JrfIO zF~xIRe!f|}j2V#$Ta6<0U1bL1Gm6~=qBUDlCD3oa4+I$ui3bhA>u1iVqM!&{d_3$=tsN62q>c{|D2Fa8 zp5~VupqhQNKlw7beg*W$=~F18Dn*KS*uM)@Eh1&T)jkyn#C2-W6|6i`?Ws__d8hxC zV^&N4#rAfCmKgZh4Z6apF9Go?Ol@h)u5LMq(H}8`DafBD;71@3)ek^WCGnNeNA=bl zQ_z48=)Gdt$Mz;DpD`b_ke=YR^?rKC1~v2BDgUYNYJo+b&p1Z zZfEI3Eb~6k!py|^{OC8yT)Q zhR4;pQFgB)L`38%ocf0f8yiMKE}@s4Mj_NM*xBqIC;F<@VWkLawXEwn*f{wb-QU(_ zAY8r(m8J%KZQfLDi>0yv$5R-atjt zEDyJ%n;2(bk0vcGdaXQ^0!O&)%-3Se%iZ1EPrYpRQ}+x>y;%T%;wUP)+R2Lvs#D0z zowCM>pb2IrBYt(s@DYj3*BrqUT0{D@m&GMMNDf2+P^~2yiBSeh^pKytjOx#zd-_#_ z@pxpZM=6>{Y+s^n--maMeLSQorOCW{+0ap~iQ2%s!tjOTaVtr8sbpq-iY2KrbT`RU ziYcw~ZRxNGD>XaU+AX^!q1NnbE0SV0tIs^iJ2~6#nj`Ly>1k=<_9wdsw7>{F0i9ol z0Il6Go9t}+7fee_lK1L8-al%L@*6S(bF0gDi4r__Czq$= zVZC7+M+q9<$&sv(aDQA1=f5@OpU*5ee`&n~f zt^AaC#hGm~^<;B93py$CSM$O3J0d2y+waP1mSc;^;++TX`A<|qMoJ^;_!Ij#YZ_cV zDO&zui(k>|Mzn(ldA746UZ961gOW+c+Fn7Gtv6F8AEwJ^0SM z(u2@rojC9kT9XpVRZ zOvLkrbQ-(|RVH`bN7;KiO0%o3Jd7;zV^=p0>#h%n z?q3$yp^`u45YGy=X&u>vUv&sU$2-~Nhu^-c<(PP&p7WWB`9usn?X@*EHnM9NPO%oT z8+Y;Xej;XD$)5k9{M`O+xd{yUn8`){#my}A8Tin{0#VXdIDlfk9XE7Abz07sjTJB} z?R?*l`-!*xkcJxqXc8`*qDbTUM6Pq6EX<+tZ-s?2>h_q9P6_N|cCE@}18&7bo4_6q zuFRcoN8u}{W8#*#9}p2XAZ$zTdzN|PvXOPsGoIfhE#clF9yh;-_P~V=WWruSMGLKU z>nXn#A<0_*aylzKv(^Oy45snHSPAsmO=!jvbZdc|iK)h@AGA$KDEh7y6;=$QEW>5A zHFDP(i?#f1mOo>aznl-Bp0=P7j#w0762V{uthN1oM};pf_{+euXlA$6PZy5`lQw+H zK0(6}P7eKaE~G6MWxX}&NdnBs*F@1m7vzTpBg;4;s{Q$}m(D_lq&bEPfBp2a>Nsla zEdNhZI`d`;A0GB-Z;q?x8RalLX~un&eGeP!FUSFym8(;amAuyBwJuq>DBi={TTr

WM}+U80vOP~PaM!~>_4Dz=L@pg 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 VC&!>S|Bq$Blx~`;U=(EF{{wzjr7!>h literal 0 HcmV?d00001 diff --git a/core/integration-tests/data/book.zip b/core/integration-tests/data/book.zip index 37bcfd529acdc6a50c9152a439b95d7cc9d4906e..95f5814883ec309960b40dddda03150c942e4d6b 100644 GIT binary patch delta 2838 zcmZ4ZiSh1Y8Iu5SW)=|!5b$laj{q~E1S^9ALsEWzwti>`F9Z9dTf0(Wc%q%AjyOy< zEwL;!IX_P!IlrJ%!9)+p2CFX?QcZpc)N>z*H%{ABKG9zShaOW5JrAII>OoH9077+! zf-soV*qIp^gkY9C=jUc7d*-F(>s93DfbHG2Pbg(AQ2zxWF0J5ZU}X8q$iM*hVr$Up zyxRr>dwy%1?Rp{2StY>o|CRYES77QY+V|r!a8ZwyhtFJ~LO}T&?wfuGj0bXSMUbTs+I4!bFpRl#m zvuK9G_q*JOCz;Eh_GFu1^Sx;E1LdcUrlI2X;VD1#eyk8UqZ?iRPcFSO&E014*KhLbOmr4H`kH4_yUCX2hm;v-p18-N zZV`H9p_0ag`&rzdjTf$(xhTzkf1^o^&ZDnunQ~?=d||R6=!U73R>*}5aq&6ro;w&l zuUz?4z<#3M`|`C_MXN6|g+xm)zm*Y?X%T4GR2-9@-D}Sg5gu}&WyyW}`loKwlIEFj zJN^A!2H%pcnS5#$D_6?Q4A2++vXU$J(^;-g-KhsWk~^gm^;w%Y@C(m7taGcz*X^-ER+ec0AjEz4TF#9Oq8UO!|Z2PKX zKP7x%5AbH^;P&7Q{0K}1privy@92r@4ls4e0uxnyysx9Pe{h68IN{gp#p6z3&oL8N za)M}bdO}jd2VbAC5By;r0S!zOB$(9&q!~YIDX@KfZy>-bgb%lM2npy0X?ANQLEPI~!rJO5OJQr62aydK4Zx`1k zu|T)pndl{pBRiR+WG7ITg=HsT7UU3s=A6m*D?~X!c@vaR@aIo66aztd8p%K$jxfT| zL%19;#-~SD0_t#ml=8+9wZM4{bR5XXP!HkKglZF!nozy;ggBcFQ2YdP8Yuh-IL{D8 z6Pok1M6m?~iVjfp+(TG{BZ@3g^q@HnhaO8DdiIoCV5>b~MfO`q5DR-gcwiT!{ zfq^BB&M?I&QH>hYu&M>5y&hG&Wd+nO6z$k+8MGQAz?+dtgc(uiAQv2WQy{&@F)HXQ0WT@&^XCG&X!wC-#B^i+1H`CP?Z)i80g+haBN(=|%D~HtndH99g?H zs4RhjC5`;v%vfy4QL=zskEWmPFjoDj_QP^97X5#%Sg_fT>U~&wgGK+BO<46~FM6=( zf33xe&3^2q5JFyC%hk#d7Rr6G(eJYF-d4+S%z1V4iULse!$L262TT4Gsda(Db(FS{tm9jLm^^%a}SeHfWUm~q9*0WckX-zyS7bfHx}}NHY@<9tF~F6(Ak}O5;7= diff --git a/core/integration-tests/data/duck-book.zip b/core/integration-tests/data/duck-book.zip deleted file mode 100644 index 298e2a5483f99d791f5bd2f277420ab9fcf935df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 159567 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

J3Rji&@1Kn2`n7?RJlbJ{&TD??)&*p;U(O0 zC~q|#eov}=?3_`C0XAnpNl7MgyDjhblB##h7^VV8@)yRr-)*668jVHi`cs|-o=r7=N%Kg!*~JsCOq3lR5ZkTI^M z^g`E-_NSyZd9Ur*2ak#5ucsM%vu&!hvgA19J2tcl2&|>DHF2;hxiKEm-2n$&Fr&ee zOVH+QFsZ+42fnARqadDJ-Lm0QIElJRYMm$+Mr{Nd)!Lk0%BJ}w)OzDsN;`-cmZy0Y ziBK`jFnK{yTx$BbIf3M4@MEYUVGnwW^t`|a4E2hG9wXTtsZ?ZGH??GaC9AbA z?5HIRNw&`8B9C&erP`%n|NMzQUa|KrBa8dJLY2$6Tnu zskZgBb*m@H@ShUqJRjPXbK9;vz;Z?I!)+o3S1}YmT=`xerkX0J2*0J_=#3pCToaXW zkvvVfo-AhJ{3N+A$5`(u8Y%Bg1-=}t7Io?#cys04x4;`7C;;1S*zfqP_uzyFled18cEoR`)R7eY*9 ztDoOU_jbvyPKr zOwc+6rxR8joBINn4AEWxiXqFew!xs=?5JW^{ZPWa_r^AFeLD}%*+C^$T()W&CX~b6 z5(Cak5q^+<3G!c6-KX-qZAAMa$m;lX<2cNGS8=}zJed66=ai2DQ0IJnYoBhfsDC6? zXiG}dvB1_RR;1NpyzA>?L@hXEjUDFvb-nifkeyRYrG>CGdtZuY>g>*3n(|iqd&#Gn z8YksdXey)SHFL(eTxo(>=n_eS7!!`*kYM2+lj5-gGP{F@Cx5Epd!kv&wpXdpwhq*&(5%{pbrYJd|^OXGNo z9JFIz_0xpQa>p)z;8|@o=KCV8&m4fk5p({4xSa|qREk(#Qx7ZaDQep{Q$My~q&mV{AWvwf@a+5|e-n*y$G?VZyv%Ala1&M!BQO;oi z#l@tGR4;mURv_wbbb;1%g+%i9`0j+hoV=CvxfnWPfzZ5i_(;ktA|AYn?7SQk-;zuF zz**a9zn3}?fE-!hs)sqVshmcuQ06NEwVchiCz(Z2K_0?N&H>FK`L|5%v4c>Mh2ExO}^ zC|WJu7qqGRQcuj3mL_s84=~0OnA8L&d!A#ZQ$Nj;DZU$gg40in0TS}61!ZrZ9jLhF zW-r)bnXDa0uaHkj;mMZ9rU*i-ir>t0+4w2UH&q4yT-#?mV?ua9&R``7Q+98+x9eLM&UXbx&YWXO%=3PREN~$cvrjH1B zPxy(cA@qT*oQhJj_UHoiKP<&d!nMHdmO`|K&*C3fYF_L70_pAmH%i7}37pwFWh9!VaXgI}@k(K3OR8B6TJ zEA9<5a1RCEIuWVSvdKPPIdPQZW$1y7wqFF+VhNv~ady%5M#G!;7Tvi#jlkG5k-}Dr zt**UqbZ)`%b5Lt78M779d?Gj4D*Y$@Zob;Xy0 zXpizUo+kR@M)f4>#Nax}2~BY@4>{MRqFpC8=XHLD{cV;1xj@0den<{bLzs#ZllW zE)bVSU2i&G32sZoYP-_%hD%48KW?32Yn`s#Og3JC89je*=-)%pi#FNa(#Se)4 z%rA^zFi$X1&haL|-ESLms$3yTex$Iu&Okb3J+CWhk#_RAR`-rLgidL0mCknh z<70nTC-!&*R`6LOrlFnCjhhOW_w>WmamG(g-K9;S+}0ClxxS9=XEFy5G4te--DXo? z&-nCKA-?QN+%TxK@h#EI<#qw>{)o(BP7waiE5G^k~+pO zrnxuXlstu@r&$5g1omohvW}99?2kv%leNz@5UBrp9<#T1JquBtx1_}PZ-0NhZ~V)) z_*GB(16WO$SYXFG1>(SA!7;)B4_Y7>F516jMRn&>9g1&7%={W%JXDuSu>9RGr7+55{X?NpMN-TiZF zwV`9(*oTLfn#p~X-DMXQElvm6V_7dJmr8$Bg_@Qdbw&{hkc86AB^pCMNi1xv0dbPM zw$Vyq{d>LcZ<9E&Ou$~444A`hX=0G?{9H~Yg(SuP^Xa1oaW%#5F)HUOG;FrlBZ`!k zYjgaLocQ%g17s;;&tgu9&4RleT%PVf$H$gJGM|yyp^@jQg1H zjAGG3L$A`qu!G3NEu>8jU%Q{I{T8hQ8q@aq7$&EZ@W?Pm9yLt(88SDIuB6R=hfCF% zojj)X)p-|vdyWWwTDe-^G8(@G4q`+ep;%S63cdI7t2gW({`E##l!3mK8P)wKr|syF zQ3{XTvglzO z+d*2djba|}haScT0tbirpX)a`_~<|*U!bOXqk+v4iIL~OqK*V}=!Z`{ zKwK%kc$OaM=S)A4x}_|2X!5_<)Wr-gUVLh}AD!R2dpm5w>0Gj8MP|0L$@+59UkZ`l zR(UaT<*jOHJ@8HoB5IS>X%vkicw1Opei4jG6n$X-i_3>=iDFInm z(ioeM%p>WP3O?$j=_Nhb4Wyb9kQ9TDDAY!(M|d)hem=D7f7(*cB=JCtz42)H`Ph~B zT9tI?fysp&OUY3- z)=Si$MH5N*Qd=vxOBf!zj9~zgG0(s-|IySeqI99EAU$bIqL-llmrXHFy#YHjvQI*h zs?g|>$go%_p_r?-!Q%tJOx&hGsyIIJmSy(=Z9#9o)2j8nBn4 z);DN={>;=WfWxTBusZ;GsQZ|~04>fsw3sCBHz)@~kx4#J{V{tlEa({b8IU<-j;@Sg zfGOzwr<^OZ(*5PW?#l_?ID1}yco7y#VzDOPm#wo=kc@710F;9ZYBrx=(zkeOlPjhh z&97JSG*$Zdyrv2kHev8>1J)~4P(M&KRnXAMK-j?NS*)1`=)W#}6cC6P!~n9eP?MF{ z&@trI@pO6Z#_-J3%AVoL6Fy!Zi+|qW78T{ObFtCWB>-XN|7bE(p8&RQ0>u-C2SPzV z2WkUAKp-niaw{9lmzD@MRec1Jew1b~Y7!+H8!-(ElA8hZgvy693N?X|QI?p(Z~%qj zLRP06o&2GtWs>sP_>2nI<3Y&G2!xA=om*WE0^x$_5n@MFw1Iks@bL?=J;RHm6{3Au z-usl}Lv}n?67qyo_Tm4o31GPUWcu}1qf&dB(C`|uA3CH+P)c!l* zA4>lZT7UfX?;gzjH^BN3PR##C>z@|=pIp@np!y#u{z3e^AN=VV{<`WzitJGT&*S({ btpDGBLQ@3;paJ? LevelFilter::TRACE, }; - tracing_subscriber::registry() - .with(max_level) - .with( - EnvFilter::from_default_env() - .add_directive( - "stump_core=trace" - .parse() - .expect("Error invalid tracing directive for stump_core!"), - ) - .add_directive( - "stump_server=trace" - .parse() - .expect("Error invalid tracing directive for stump_server!"), - ) - .add_directive( - "tower_http=debug" - .parse() - .expect("Error invalid tracing directive for tower_http!"), - ) - .add_directive( - "quaint::connector::metrics=debug" - .parse() - .expect("Failed to parse tracing directive for quaint!"), - ), - ) - // Note: I have two layers here, separating the file appender and the stdout. - // I've done this, rather than merging them, becuase I don't want the ansi - // characters in the file appender. - .with( - tracing_subscriber::fmt::layer() - .pretty() - .with_ansi(true) - .with_writer(std::io::stdout), + let mut env_filter = EnvFilter::from_default_env() + .add_directive( + "stump_core=trace" + .parse() + .expect("Error invalid tracing directive for stump_core!"), ) - .with( - tracing_subscriber::fmt::layer() - .pretty() - .with_ansi(false) - .with_writer(file_appender), + .add_directive( + "stump_server=trace" + .parse() + .expect("Error invalid tracing directive for stump_server!"), ) - .init(); + .add_directive( + "tower_http=debug" + .parse() + .expect("Error invalid tracing directive for tower_http!"), + ); + + if config.verbosity > 2 { + env_filter = env_filter.add_directive( + "quaint::connector::metrics=debug" + .parse() + .expect("Failed to parse tracing directive for quaint!"), + ); + } + + let base_layer = tracing_subscriber::registry() + .with(max_level) + .with(env_filter); + + // TODO: This is likely unnecessary duplication(?), and should be revisited + if config.pretty_logs { + base_layer + .with( + tracing_subscriber::fmt::layer() + .pretty() + .with_ansi(true) + .with_writer(std::io::stdout), + ) + .with( + tracing_subscriber::fmt::layer() + .pretty() + // We don't want to use ANSI codes in the file + .with_ansi(false) + .with_writer(file_appender), + ) + .init(); + } else { + base_layer + .with( + tracing_subscriber::fmt::layer() + .with_ansi(true) + .with_writer(std::io::stdout), + ) + .with( + tracing_subscriber::fmt::layer() + // We don't want to use ANSI codes in the file + .with_ansi(false) + .with_writer(file_appender), + ) + .init(); + }; - tracing::debug!(config.verbosity, "Tracing initialized"); + tracing::info!(verbosity = ?max_level, verbosity_num = config.verbosity, "Tracing initialized"); } diff --git a/core/src/config/stump_config.rs b/core/src/config/stump_config.rs index 01cadc313..a4536146c 100644 --- a/core/src/config/stump_config.rs +++ b/core/src/config/stump_config.rs @@ -12,6 +12,7 @@ pub mod env_keys { pub const PROFILE_KEY: &str = "STUMP_PROFILE"; pub const PORT_KEY: &str = "STUMP_PORT"; pub const VERBOSITY_KEY: &str = "STUMP_VERBOSITY"; + pub const PRETTY_LOGS_KEY: &str = "STUMP_PRETTY_LOGS"; pub const DB_PATH_KEY: &str = "STUMP_DB_PATH"; pub const CLIENT_KEY: &str = "STUMP_CLIENT_DIR"; pub const ORIGINS_KEY: &str = "STUMP_ALLOWED_ORIGINS"; @@ -20,6 +21,7 @@ pub mod env_keys { pub const HASH_COST_KEY: &str = "HASH_COST"; pub const SESSION_TTL_KEY: &str = "SESSION_TTL"; pub const SESSION_EXPIRY_INTERVAL_KEY: &str = "SESSION_EXPIRY_CLEANUP_INTERVAL"; + pub const SCANNER_CHUNK_SIZE_KEY: &str = "STUMP_SCANNER_CHUNK_SIZE"; } use env_keys::*; @@ -27,6 +29,7 @@ pub mod defaults { pub const DEFAULT_PASSWORD_HASH_COST: u32 = 12; pub const DEFAULT_SESSION_TTL: i64 = 3600 * 24 * 3; // 3 days pub const DEFAULT_SESSION_EXPIRY_CLEANUP_INTERVAL: u64 = 60 * 60 * 24; // 24 hours + pub const DEFAULT_SCANNER_CHUNK_SIZE: usize = 100; } use defaults::*; @@ -64,6 +67,8 @@ pub struct StumpConfig { pub port: u16, /// The verbosity with which to log errors (default: 0). pub verbosity: u64, + /// Whether or not to pretty print logs. + pub pretty_logs: bool, /// An optional custom path for the database. pub db_path: Option, /// The client directory. @@ -82,6 +87,10 @@ pub struct StumpConfig { pub session_ttl: i64, /// The interval at which automatic deleted session cleanup is performed. pub expired_session_cleanup_interval: u64, + /// The size of chunks to use throughout scanning the filesystem. This is used to + /// limit the number of files that are processed at once. Realistically, you are bound + /// by I/O constraints, but perhaps you can squeeze out some performance by tweaking this. + pub scanner_chunk_size: usize, } impl StumpConfig { @@ -92,6 +101,7 @@ impl StumpConfig { profile: String::from("debug"), port: 10801, verbosity: 0, + pretty_logs: true, db_path: None, client_dir: String::from("./dist"), config_dir, @@ -101,6 +111,7 @@ impl StumpConfig { password_hash_cost: DEFAULT_PASSWORD_HASH_COST, session_ttl: DEFAULT_SESSION_TTL, expired_session_cleanup_interval: DEFAULT_SESSION_EXPIRY_CLEANUP_INTERVAL, + scanner_chunk_size: DEFAULT_SCANNER_CHUNK_SIZE, } } @@ -112,6 +123,7 @@ impl StumpConfig { profile: String::from("debug"), port: 10801, verbosity: 0, + pretty_logs: true, db_path: None, client_dir: env!("CARGO_MANIFEST_DIR").to_string() + "/../web/dist", config_dir: super::get_default_config_dir(), @@ -121,6 +133,7 @@ impl StumpConfig { password_hash_cost: DEFAULT_PASSWORD_HASH_COST, session_ttl: DEFAULT_SESSION_TTL, expired_session_cleanup_interval: DEFAULT_SESSION_EXPIRY_CLEANUP_INTERVAL, + scanner_chunk_size: DEFAULT_SCANNER_CHUNK_SIZE, } } @@ -180,6 +193,18 @@ impl StumpConfig { env_configs.verbosity = Some(verbosity_u64); } + if let Ok(pretty_logs) = env::var(PRETTY_LOGS_KEY) { + let pretty_logs_bool = pretty_logs.parse::().map_err(|e| { + tracing::error!( + error = ?e, + pretty_logs, + "Failed to parse provided STUMP_PRETTY_LOGS" + ); + CoreError::InitializationError(e.to_string()) + })?; + self.pretty_logs = pretty_logs_bool; + } + if let Ok(db_path) = env::var(DB_PATH_KEY) { env_configs.db_path = Some(db_path); } @@ -236,6 +261,15 @@ impl StumpConfig { } } + if let Ok(scanner_chunk_size) = env::var(SCANNER_CHUNK_SIZE_KEY) { + match scanner_chunk_size.parse() { + Ok(val) => self.scanner_chunk_size = val, + Err(e) => { + tracing::error!(?e, "Failed to parse provided SCANNER_CHUNK_SIZE") + }, + } + } + env_configs.apply_to_config(&mut self); Ok(self) } @@ -335,6 +369,7 @@ pub struct PartialStumpConfig { pub profile: Option, pub port: Option, pub verbosity: Option, + pub pretty_logs: Option, pub db_path: Option, pub client_dir: Option, pub config_dir: Option, @@ -344,6 +379,7 @@ pub struct PartialStumpConfig { pub password_hash_cost: Option, pub session_ttl: Option, pub expired_session_cleanup_interval: Option, + pub scanner_chunk_size: Option, } impl PartialStumpConfig { @@ -352,6 +388,7 @@ impl PartialStumpConfig { profile: None, port: None, verbosity: None, + pretty_logs: None, db_path: None, client_dir: None, config_dir: None, @@ -361,6 +398,7 @@ impl PartialStumpConfig { password_hash_cost: None, session_ttl: None, expired_session_cleanup_interval: None, + scanner_chunk_size: None, } } @@ -371,6 +409,9 @@ impl PartialStumpConfig { if let Some(verbosity) = self.verbosity { config.verbosity = verbosity; } + if let Some(pretty_logs) = self.pretty_logs { + config.pretty_logs = pretty_logs; + } if let Some(db_path) = self.db_path { config.db_path = Some(db_path); } @@ -380,6 +421,18 @@ impl PartialStumpConfig { if let Some(config_dir) = self.config_dir { config.config_dir = config_dir; } + if let Some(disable_swagger) = self.disable_swagger { + config.disable_swagger = disable_swagger; + } + if let Some(hash_cost) = self.password_hash_cost { + config.password_hash_cost = hash_cost; + } + if let Some(session_ttl) = self.session_ttl { + config.session_ttl = session_ttl; + } + if let Some(cleanup_interval) = self.expired_session_cleanup_interval { + config.expired_session_cleanup_interval = cleanup_interval; + } // Profile - validate profile selection if let Some(profile) = self.profile { @@ -402,21 +455,9 @@ impl PartialStumpConfig { if let Some(pdfium_path) = self.pdfium_path { config.pdfium_path = Some(pdfium_path); } - // Disable Swagger - Merge if not None - if let Some(disable_swagger) = self.disable_swagger { - config.disable_swagger = disable_swagger; - } - // Password Hash Cost - Merge if not None - if let Some(hash_cost) = self.password_hash_cost { - config.password_hash_cost = hash_cost; - } - // Session TTL - Merge if not None - if let Some(session_ttl) = self.session_ttl { - config.session_ttl = session_ttl; - } - // Session Expiry Cleanup Interval - Merge if not None - if let Some(cleanup_interval) = self.expired_session_cleanup_interval { - config.expired_session_cleanup_interval = cleanup_interval; + + if let Some(scanner_chunk_size) = self.scanner_chunk_size { + config.scanner_chunk_size = scanner_chunk_size; } } } @@ -438,6 +479,7 @@ mod tests { profile: Some("release".to_string()), port: Some(1337), verbosity: Some(3), + pretty_logs: Some(true), db_path: Some("not_a_real_path".to_string()), client_dir: Some("not_a_real_dir".to_string()), config_dir: Some("also_not_a_real_dir".to_string()), @@ -451,6 +493,7 @@ mod tests { password_hash_cost: Some(24), session_ttl: Some(3600 * 24), expired_session_cleanup_interval: Some(60 * 60 * 8), + scanner_chunk_size: Some(300), }; // Apply the partial configuration @@ -463,6 +506,7 @@ mod tests { profile: "release".to_string(), port: 1337, verbosity: 3, + pretty_logs: true, db_path: Some("not_a_real_path".to_string()), client_dir: "not_a_real_dir".to_string(), config_dir: "also_not_a_real_dir".to_string(), @@ -476,6 +520,7 @@ mod tests { password_hash_cost: 24, session_ttl: 3600 * 24, expired_session_cleanup_interval: 60 * 60 * 8, + scanner_chunk_size: 300, } ); } @@ -506,6 +551,7 @@ mod tests { profile: "release".to_string(), port: 1337, verbosity: 3, + pretty_logs: true, db_path: Some("not_a_real_path".to_string()), client_dir: "not_a_real_dir".to_string(), config_dir: "also_not_a_real_dir".to_string(), @@ -515,6 +561,7 @@ mod tests { password_hash_cost: 24, session_ttl: 3600 * 24, expired_session_cleanup_interval: 60 * 60 * 8, + scanner_chunk_size: DEFAULT_SCANNER_CHUNK_SIZE, } ); } @@ -538,6 +585,7 @@ mod tests { profile: "release".to_string(), port: 1337, verbosity: 3, + pretty_logs: true, db_path: Some("not_a_real_path".to_string()), client_dir: "not_a_real_dir".to_string(), config_dir: "also_not_a_real_dir".to_string(), @@ -547,6 +595,7 @@ mod tests { password_hash_cost: DEFAULT_PASSWORD_HASH_COST, session_ttl: DEFAULT_SESSION_TTL, expired_session_cleanup_interval: DEFAULT_SESSION_EXPIRY_CLEANUP_INTERVAL, + scanner_chunk_size: DEFAULT_SCANNER_CHUNK_SIZE, } ); @@ -569,6 +618,7 @@ mod tests { profile: Some("release".to_string()), port: Some(1337), verbosity: Some(3), + pretty_logs: Some(true), db_path: Some("not_a_real_path".to_string()), client_dir: Some("not_a_real_dir".to_string()), config_dir: None, @@ -578,6 +628,7 @@ mod tests { password_hash_cost: None, session_ttl: None, expired_session_cleanup_interval: None, + scanner_chunk_size: None, }; partial_config.apply_to_config(&mut config); @@ -597,6 +648,7 @@ mod tests { profile: Some("release".to_string()), port: Some(1337), verbosity: Some(3), + pretty_logs: Some(true), db_path: Some("not_a_real_path".to_string()), client_dir: Some("not_a_real_dir".to_string()), config_dir: Some(config_dir), @@ -608,6 +660,7 @@ mod tests { expired_session_cleanup_interval: Some( DEFAULT_SESSION_EXPIRY_CLEANUP_INTERVAL ), + scanner_chunk_size: Some(DEFAULT_SCANNER_CHUNK_SIZE), } ); diff --git a/core/src/context.rs b/core/src/context.rs index 2c541457d..477cc3c2c 100644 --- a/core/src/context.rs +++ b/core/src/context.rs @@ -2,35 +2,28 @@ use std::sync::Arc; use tokio::sync::{ broadcast::{channel, Receiver, Sender}, - mpsc::{error::SendError, unbounded_channel, UnboundedSender}, + mpsc::error::SendError, }; use crate::{ config::StumpConfig, - db::{self, entity::Log}, - event::{CoreEvent, InternalCoreTask}, - job::JobExecutorTrait, + db, + event::CoreEvent, + job::{Executor, JobController, JobControllerCommand}, prisma, }; -type InternalSender = UnboundedSender; - -type ClientChannel = (Sender, Receiver); +type EventChannel = (Sender, Receiver); /// Struct that holds the main context for a Stump application. This is passed around /// to all the different parts of the application, and is used to access the database /// and manage the event channels. +#[derive(Clone)] pub struct Ctx { pub config: Arc, pub db: Arc, - pub internal_sender: Arc, - pub response_channel: Arc, -} - -impl Clone for Ctx { - fn clone(&self) -> Ctx { - self.get_ctx() - } + pub job_controller: Arc, + pub event_channel: Arc, } impl Ctx { @@ -45,17 +38,23 @@ impl Ctx { /// /// #[tokio::main] /// async fn main() { - /// let (sender, _) = unbounded_channel(); /// let config = StumpConfig::debug(); - /// let ctx = Ctx::new(config, sender).await; + /// let ctx = Ctx::new(config).await; /// } /// ``` - pub async fn new(config: StumpConfig, internal_sender: InternalSender) -> Ctx { + pub async fn new(config: StumpConfig) -> Ctx { + let config = Arc::new(config.clone()); + let db = Arc::new(db::create_client(&config).await); + let event_channel = Arc::new(channel::(1024)); + + let job_controller = + JobController::new(db.clone(), config.clone(), event_channel.0.clone()); + Ctx { - config: Arc::new(config.clone()), - db: Arc::new(db::create_client(&config).await), - internal_sender: Arc::new(internal_sender), - response_channel: Arc::new(channel::(1024)), + config, + db, + job_controller, + event_channel, } } @@ -64,11 +63,19 @@ impl Ctx { /// /// **This should not be used in production.** pub async fn mock() -> Ctx { + let config = Arc::new(StumpConfig::debug()); + let db = Arc::new(db::create_test_client().await); + let event_channel = Arc::new(channel::(1024)); + + // Create job manager + let job_controller = + JobController::new(db.clone(), config.clone(), event_channel.0.clone()); + Ctx { - config: Arc::new(StumpConfig::debug()), - db: Arc::new(db::create_test_client().await), - internal_sender: Arc::new(unbounded_channel::().0), - response_channel: Arc::new(channel::(1024)), + config, + db, + job_controller, + event_channel, } } @@ -94,28 +101,17 @@ impl Ctx { /// } /// ``` pub fn arced(&self) -> Arc { - Arc::new(self.get_ctx()) - } - - /// Get reference to prisma client - pub fn get_db(&self) -> &prisma::PrismaClient { - &self.db - } - - /// Returns a copy of the ctx - pub fn get_ctx(&self) -> Ctx { - Ctx { - config: self.config.clone(), - db: self.db.clone(), - internal_sender: self.internal_sender.clone(), - response_channel: self.response_channel.clone(), - } + Arc::new(self.clone()) } /// Returns the reciever for the CoreEvent channel. See [`emit_event`] /// for more information and an example usage. pub fn get_client_receiver(&self) -> Receiver { - self.response_channel.0.subscribe() + self.event_channel.0.subscribe() + } + + pub fn get_event_tx(&self) -> Sender { + self.event_channel.0.clone() } /// Emits a [CoreEvent] to the client event channel. @@ -154,45 +150,31 @@ impl Ctx { /// } /// ``` pub fn emit_event(&self, event: CoreEvent) { - let _ = self.response_channel.0.send(event); + let _ = self.event_channel.0.send(event); } - /// Emits a client event and persists a log based on the failure. - pub async fn handle_failure_event(&self, event: CoreEvent) { - use prisma::log; - - self.emit_event(event.clone()); - - let log = Log::from(event); - - // FIXME: error handling here... - let _ = self - .db - .log() - .create( - log.message, - vec![ - log::job_id::set(log.job_id), - log::level::set(log.level.to_string()), - ], - ) - .exec() - .await; + /// Sends a [JobControllerCommand] to the job controller + pub fn send_job_controller_command( + &self, + command: JobControllerCommand, + ) -> Result<(), SendError> { + self.job_controller.push_command(command) } - /// Sends in internal task - pub fn dispatch_task( + /// Sends an EnqueueJob event to the job manager. + pub fn enqueue_job( &self, - task: InternalCoreTask, - ) -> Result<(), SendError> { - self.internal_sender.send(task) + job: Box, + ) -> Result<(), SendError> { + self.send_job_controller_command(JobControllerCommand::EnqueueJob(job)) } - /// Sends an EnqueueJob task to the event manager. - pub fn dispatch_job( - &self, - job: Box, - ) -> Result<(), SendError> { - self.dispatch_task(InternalCoreTask::EnqueueJob(job)) + /// Send a [CoreEvent] through the event channel to any clients listening + pub fn send_core_event(&self, event: CoreEvent) { + if let Err(error) = self.event_channel.0.send(event) { + tracing::error!(error = ?error, "Failed to send core event"); + } else { + tracing::trace!("Sent core event"); + } } } diff --git a/core/src/db/entity/common.rs b/core/src/db/entity/common.rs index eddca5959..5ce111237 100644 --- a/core/src/db/entity/common.rs +++ b/core/src/db/entity/common.rs @@ -4,6 +4,7 @@ use serde::{Deserialize, Serialize}; use specta::Type; use utoipa::ToSchema; +// TODO: this isn't ideal for all ID types, e.g. i32 pub trait Cursor { fn cursor(&self) -> String; } diff --git a/core/src/db/entity/job.rs b/core/src/db/entity/job.rs new file mode 100644 index 000000000..b6cf8c24e --- /dev/null +++ b/core/src/db/entity/job.rs @@ -0,0 +1,90 @@ +use serde::{Deserialize, Serialize}; +use specta::Type; +use utoipa::ToSchema; + +use crate::{ + filesystem::{ + image::ThumbnailGenerationOutput, + scanner::{LibraryScanOutput, SeriesScanOutput}, + }, + job::JobStatus, + prisma::job, +}; + +use super::{Cursor, Log}; + +// TODO: There are a couple jobs defined in the server, which obviously presents a problem with +// this type. For now, I'll do some type gymnastics to make it work, but it's not ideal and +// should be fixed. In the meantime, this type represents a generic object +pub type ExternalJobOutput = serde_json::Value; + +/// An enum which represents the possible outputs of a job in the Stump core +#[derive(Clone, Serialize, Deserialize, Type, ToSchema)] +#[serde(untagged)] +pub enum CoreJobOutput { + LibraryScan(LibraryScanOutput), + SeriesScan(SeriesScanOutput), + ThumbnailGeneration(ThumbnailGenerationOutput), + External(ExternalJobOutput), +} + +#[derive(Clone, Serialize, Deserialize, ToSchema, Type)] +pub struct PersistedJob { + /// The unique identifier of the job + pub id: String, + /// The name of the job + pub name: String, + /// The description of the job, if any + pub description: Option, + /// The status of the job + pub status: JobStatus, + /// The output of the job, if any + pub output_data: Option, + /// The duration of the job in milliseconds + pub ms_elapsed: i64, + /// The timestamp of when the job was created + pub created_at: String, + /// The timestamp of when the job was completed, if any + pub completed_at: Option, + + /// The persisted logs associated with this job, if any + #[serde(skip_serializing_if = "Option::is_none")] + pub logs: Option>, +} + +impl Cursor for PersistedJob { + fn cursor(&self) -> String { + self.id.clone() + } +} + +impl From for PersistedJob { + fn from(job: job::Data) -> Self { + let logs = job.logs().ok().take().map(|logs| { + logs.iter() + .map(|log| Log::from(log.to_owned())) + .collect::>() + }); + let output_data = job.output_data.as_deref().and_then(|data| { + serde_json::from_slice(data).map_or_else( + |error| { + tracing::error!(?error, "Failed to deserialize job output data"); + None + }, + Some, + ) + }); + + Self { + id: job.id, + name: job.name, + description: job.description, + status: job.status.into(), + output_data, + ms_elapsed: job.ms_elapsed, + created_at: job.created_at.to_rfc3339(), + completed_at: job.completed_at.map(|d| d.to_rfc3339()), + logs, + } + } +} diff --git a/core/src/db/entity/log.rs b/core/src/db/entity/log.rs index 88365782a..bc5f95c15 100644 --- a/core/src/db/entity/log.rs +++ b/core/src/db/entity/log.rs @@ -4,7 +4,9 @@ use serde::{Deserialize, Serialize}; use specta::Type; use utoipa::ToSchema; -use crate::event::CoreEvent; +use crate::prisma::log; + +use super::Cursor; /// Information about the Stump log file, located at STUMP_CONFIG_DIR/Stump.log, or /// ~/.stump/Stump.log by default. Information such as the file size, last modified date, etc. @@ -15,7 +17,7 @@ pub struct LogMetadata { pub modified: String, } -#[derive(Clone, Default, Serialize, Deserialize, Type, ToSchema)] +#[derive(Debug, Clone, Default, Serialize, Deserialize, Type, ToSchema)] pub enum LogLevel { #[serde(rename = "ERROR")] Error, @@ -28,6 +30,18 @@ pub enum LogLevel { Debug, } +impl From for LogLevel { + fn from(s: String) -> Self { + match s.to_lowercase().as_str() { + "error" => Self::Error, + "warn" => Self::Warn, + "info" => Self::Info, + "debug" => Self::Debug, + _ => Self::Info, + } + } +} + impl std::fmt::Display for LogLevel { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { @@ -39,35 +53,39 @@ impl std::fmt::Display for LogLevel { } } +/// A model representing a persisted log entry. These are different than traces/system logs. #[derive(Clone, Serialize, Deserialize, Default, Type, ToSchema)] pub struct Log { - pub id: String, + /// The unique identifier of the log entry + pub id: i32, + /// The log level of the message pub level: LogLevel, + /// The message of the log entry pub message: String, - pub created_at: String, + /// Optional context for the log entry + pub context: Option, + /// The timestamp of the log entry + pub timestamp: String, + /// The job ID associated with the log entry, if any + #[serde(skip_serializing_if = "Option::is_none")] pub job_id: Option, } -impl From for Log { - fn from(event: CoreEvent) -> Self { - match event { - CoreEvent::JobFailed { job_id, message } => Self { - level: LogLevel::Error, - message, - job_id: Some(job_id), - ..Default::default() - }, - CoreEvent::CreateEntityFailed { - job_id, - path, - message, - } => Self { - level: LogLevel::Error, - message: format!("{}: {}", path, message), - job_id, - ..Default::default() - }, - _ => unimplemented!(), +impl From for Log { + fn from(log: log::Data) -> Self { + Self { + id: log.id, + level: log.level.into(), + message: log.message, + context: log.context, + timestamp: log.timestamp.to_rfc3339(), + job_id: log.job_id, } } } + +impl Cursor for Log { + fn cursor(&self) -> String { + self.id.to_string() + } +} diff --git a/core/src/db/entity/mod.rs b/core/src/db/entity/mod.rs index 7653e5bd2..548b9e286 100644 --- a/core/src/db/entity/mod.rs +++ b/core/src/db/entity/mod.rs @@ -1,6 +1,7 @@ mod book_club; pub(crate) mod common; mod epub; +mod job; mod library; mod log; mod media; @@ -17,6 +18,7 @@ pub use self::epub::*; pub use self::log::*; pub use book_club::*; +pub use job::*; pub use library::*; pub use media::*; pub use metadata::*; diff --git a/core/src/db/query/ordering.rs b/core/src/db/query/ordering.rs index 73b2871df..3d994b72e 100644 --- a/core/src/db/query/ordering.rs +++ b/core/src/db/query/ordering.rs @@ -4,7 +4,7 @@ use utoipa::ToSchema; use crate::{ error::CoreError, - prisma::{job, library, media, series}, + prisma::{job, library, log, media, series}, }; #[derive(Debug, Default, Serialize, Deserialize, Clone, Type, ToSchema)] @@ -127,8 +127,6 @@ impl TryInto for QueryOrder { "status" => job::status::order(dir), "created_at" => job::created_at::order(dir), "completed_at" => job::completed_at::order(dir), - "task_count" => job::task_count::order(dir), - "ms_elapsed" => job::ms_elapsed::order(dir), _ => { return Err(CoreError::InvalidQuery(format!( "You cannot order jobs by {:?}", @@ -139,31 +137,23 @@ impl TryInto for QueryOrder { } } -// pub enum PrismaJoiner { -// And, -// Or, -// Not, -// } - -// impl Display for PrismaJoiner { -// fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { -// match self { -// PrismaJoiner::And => write!(f, "and"), -// PrismaJoiner::Or => write!(f, "or"), -// PrismaJoiner::Not => write!(f, "not"), -// } -// } -// } - -// impl TryFrom<&str> for PrismaJoiner { -// type Error = CoreError; - -// fn try_from(s: &str) -> Result { -// match s { -// "and" => Ok(PrismaJoiner::And), -// "or" => Ok(PrismaJoiner::Or), -// "not" => Ok(PrismaJoiner::Not), -// _ => Err(CoreError::InvalidQuery("Invalid joiner".to_string())), -// } -// } -// } +impl TryInto for QueryOrder { + type Error = CoreError; + + fn try_into(self) -> Result { + let dir: prisma_client_rust::Direction = self.direction.into(); + + Ok(match self.order_by.to_lowercase().as_str() { + "timestamp" => log::timestamp::order(dir), + "level" => log::level::order(dir), + "message" => log::message::order(dir), + "job_id" => log::job_id::order(dir), + _ => { + return Err(CoreError::InvalidQuery(format!( + "You cannot order logs by {:?}", + self.order_by + ))) + }, + }) + } +} diff --git a/core/src/error.rs b/core/src/error.rs index 07e8de9d9..e8ce28a6e 100644 --- a/core/src/error.rs +++ b/core/src/error.rs @@ -33,7 +33,7 @@ pub enum CoreError { Utf8ConversionError(#[from] std::string::FromUtf8Error), #[error("Failed to initialize job: {0}")] JobInitializationError(String), - #[error("Something went wrong: {0}")] + #[error("{0}")] InternalError(String), #[error("This feature is not yet implemented: {0}")] UnImplemented(String), diff --git a/core/src/event.rs b/core/src/event.rs new file mode 100644 index 000000000..984754c2e --- /dev/null +++ b/core/src/event.rs @@ -0,0 +1,22 @@ +use serde::{Deserialize, Serialize}; +use specta::Type; + +use crate::job::{JobUpdate, WorkerSend, WorkerSendExt}; + +/// An event that is emitted by the core and consumed by a client +#[derive(Clone, Serialize, Deserialize, Debug, Type)] +#[serde(tag = "__typename")] +pub enum CoreEvent { + JobStarted(String), + JobUpdate(JobUpdate), + DiscoveredMissingLibrary(String), + CreatedMedia { id: String, series_id: String }, + CreatedManySeries { count: u64, library_id: String }, + CreatedOrUpdatedManyMedia { count: u64, series_id: String }, +} + +impl WorkerSendExt for CoreEvent { + fn into_send(self) -> WorkerSend { + WorkerSend::Event(self) + } +} diff --git a/core/src/event/event_manager.rs b/core/src/event/event_manager.rs deleted file mode 100644 index 68fbbd60f..000000000 --- a/core/src/event/event_manager.rs +++ /dev/null @@ -1,100 +0,0 @@ -use std::sync::Arc; - -use crate::{event::InternalCoreTask, job::JobManager, Ctx}; -use tokio::{self, sync::mpsc}; -use tracing::error; - -/// The [`EventManager`] struct is responsible for handling internal tasks ([`InternalCoreTask`]). -/// Internal tasks are 'converted' to [`Job`](crate::job::Job)s, which are queued and executed -/// by the [`JobManager`]. -pub struct EventManager { - job_manager: Arc, -} - -// TODO: I think event manager can manage it's own Ctx here, and instead of housing all -// of the logic in the `new` function there can be something like `handle_event`. -impl EventManager { - /// Creates a new instance of [`EventManager`] and returns it wrapped in an [`Arc`]. - /// A thread is spawned to handle the incoming tasks. - /// - /// ## Example - /// ```rust - /// use stump_core::{event::event_manager::EventManager, Ctx, config::StumpConfig}; - /// use tokio::sync::mpsc::unbounded_channel; - /// - /// #[tokio::main] - /// async fn main() { - /// let (sender, reciever) = unbounded_channel(); - /// let config = StumpConfig::debug(); - /// let ctx = Ctx::new(config, sender).await; - /// let event_manager = EventManager::new(ctx, reciever); - /// } - /// ``` - pub fn new( - ctx: Ctx, - mut request_reciever: mpsc::UnboundedReceiver, - ) -> Arc { - let job_manager = JobManager::new(ctx.arced()); - let this = Arc::new(Self { - job_manager: job_manager.arced(), - }); - - let this_cpy = this.clone(); - tokio::spawn(async move { - while let Some(task) = request_reciever.recv().await { - this_cpy.clone().handle_task(task).await; - } - }); - - this - } - - // TODO: bubble up errors to have single point of reporting... - async fn handle_task(self: Arc, task: InternalCoreTask) { - match task { - InternalCoreTask::EnqueueJob(job) => { - self.job_manager - .clone() - .enqueue_job(job) - .await - .unwrap_or_else(|e| { - error!("Failed to enqueue job: {}", e); - }); - }, - InternalCoreTask::CancelJob { - job_id, - return_sender, - } => { - let result = self.job_manager.clone().cancel_job(job_id.clone()).await; - - return_sender - .send(result) - .expect("Fatal error: failed to send cancel job result"); - }, - InternalCoreTask::GetJobs(return_sender) => { - let job_report = self.clone().job_manager.clone().report().await; - - return_sender - .send(job_report) - .expect("Fatal error: failed to send job report"); - }, - InternalCoreTask::Shutdown { return_sender } => { - self.clone().job_manager.clone().shutdown().await; - - // TODO: this is a hack, but I'm not sure how to handle this yet - // The job manager shutdown just uses another channel to shutdown - // any running jobs, so the timing is a bit unknown. For now, I'll - // give it 3 seconds to shutdown before returning the result. - tokio::time::sleep(tokio::time::Duration::from_secs(3)).await; - - return_sender - .send(()) - .expect("Fatal error: failed to send shutdown result"); - }, - } - } - - pub fn get_job_manager(&self) -> Arc { - self.job_manager.clone() - } -} diff --git a/core/src/event/mod.rs b/core/src/event/mod.rs deleted file mode 100644 index d3cd3390a..000000000 --- a/core/src/event/mod.rs +++ /dev/null @@ -1,93 +0,0 @@ -pub mod event_manager; - -use serde::{Deserialize, Serialize}; -use specta::Type; -use tokio::sync::oneshot; - -use crate::job::{JobDetail, JobExecutorTrait, JobManagerResult, JobStatus, JobUpdate}; - -pub enum InternalCoreTask { - EnqueueJob(Box), - GetJobs(oneshot::Sender>>), - CancelJob { - job_id: String, - return_sender: oneshot::Sender>, - }, - Shutdown { - return_sender: oneshot::Sender<()>, - }, -} - -pub enum ClientResponse { - GetJobDetails(Vec), -} - -#[derive(Clone, Serialize, Deserialize, Debug, Type)] -#[serde(tag = "key", content = "data")] -pub enum CoreEvent { - JobStarted(JobUpdate), - JobProgress(JobUpdate), - JobComplete(String), - JobFailed { - job_id: String, - message: String, - }, - CreateEntityFailed { - job_id: Option, - path: String, - message: String, - }, - CreateOrUpdateMedia { - id: String, - series_id: String, - library_id: String, - }, - CreatedManyMedia { - count: u64, - library_id: String, - }, - CreatedSeries { - id: String, - library_id: String, - }, - CreatedSeriesBatch { - count: u64, - library_id: String, - }, - SeriesScanComplete { - id: String, - }, - GeneratedThumbnailBatch(u64), -} - -impl CoreEvent { - pub fn job_started( - job_id: String, - current_task: u64, - task_count: u64, - message: Option, - ) -> Self { - CoreEvent::JobStarted(JobUpdate { - job_id, - current_task: Some(current_task), - task_count, - message, - status: Some(JobStatus::Running), - }) - } - - pub fn job_progress( - job_id: String, - current_task: Option, - task_count: u64, - message: Option, - ) -> Self { - CoreEvent::JobProgress(JobUpdate { - job_id, - current_task, - task_count, - message, - status: Some(JobStatus::Running), - }) - } -} diff --git a/core/src/filesystem/common.rs b/core/src/filesystem/common.rs index c4c9a17c4..0e25b2e0a 100644 --- a/core/src/filesystem/common.rs +++ b/core/src/filesystem/common.rs @@ -187,21 +187,22 @@ impl PathUtils for Path { return false; } - let items = std::fs::read_dir(self); - if items.is_err() { - error!( - error = ?items.unwrap_err(), - path = ?self, - "IOError: failed to read directory" - ); - return false; + let read_result = std::fs::read_dir(self); + + match read_result { + Ok(items) => items + .filter_map(|item| item.ok()) + .filter(|item| item.path() != self) + .any(|f| !f.path().should_ignore()), + Err(e) => { + error!( + error = ?e, + path = ?self, + "IOError: failed to read directory" + ); + false + }, } - - items - .unwrap() - .filter_map(|item| item.ok()) - .filter(|item| item.path() != self) - .any(|f| !f.path().should_ignore()) } /// Returns true if the directory has any media files in it. This is a deep diff --git a/core/src/filesystem/content_type.rs b/core/src/filesystem/content_type.rs index f0f750444..656857522 100644 --- a/core/src/filesystem/content_type.rs +++ b/core/src/filesystem/content_type.rs @@ -5,8 +5,6 @@ use tracing::{trace, warn}; use super::image::ImageFormat; -// TODO: move this into fs crate - /// [`ContentType`] is an enum that represents the HTTP content type. This is a smaller /// subset of the full list of content types, mostly focusing on types supported by Stump. #[allow(non_camel_case_types)] @@ -25,6 +23,7 @@ pub enum ContentType { JPEG, WEBP, GIF, + TXT, #[default] UNKNOWN, } @@ -80,6 +79,7 @@ impl ContentType { "jpeg" => ContentType::JPEG, "webp" => ContentType::WEBP, "gif" => ContentType::GIF, + "txt" => ContentType::TXT, _ => temporary_content_workarounds(extension), } } @@ -265,6 +265,7 @@ impl ContentType { ContentType::JPEG => "jpg", ContentType::WEBP => "webp", ContentType::GIF => "gif", + ContentType::TXT => "txt", ContentType::UNKNOWN => "", } } @@ -311,6 +312,7 @@ impl std::fmt::Display for ContentType { ContentType::JPEG => write!(f, "image/jpeg"), ContentType::WEBP => write!(f, "image/webp"), ContentType::GIF => write!(f, "image/gif"), + ContentType::TXT => write!(f, "text/plain"), ContentType::UNKNOWN => write!(f, "unknown"), } } diff --git a/core/src/filesystem/image/mod.rs b/core/src/filesystem/image/mod.rs index bc3fdd80e..349dc8833 100644 --- a/core/src/filesystem/image/mod.rs +++ b/core/src/filesystem/image/mod.rs @@ -1,7 +1,6 @@ mod generic; mod process; mod thumbnail; -mod thumbnail_job; mod webp; pub use self::webp::WebpProcessor; @@ -12,6 +11,6 @@ pub use process::{ }; pub use thumbnail::{ generate_thumbnail, generate_thumbnails, place_thumbnail, remove_thumbnails, - remove_thumbnails_of_type, + remove_thumbnails_of_type, ThumbnailGenerationJob, ThumbnailGenerationJobParams, + ThumbnailGenerationJobVariant, ThumbnailGenerationOutput, ThumbnailManager, }; -pub use thumbnail_job::{ThumbnailJob, ThumbnailJobConfig, THUMBNAIL_JOB_NAME}; diff --git a/core/src/filesystem/image/thumbnail/generation_job.rs b/core/src/filesystem/image/thumbnail/generation_job.rs new file mode 100644 index 000000000..eadc3d7c0 --- /dev/null +++ b/core/src/filesystem/image/thumbnail/generation_job.rs @@ -0,0 +1,280 @@ +use serde::{Deserialize, Serialize}; +use specta::Type; + +use crate::{ + job::{ + error::JobError, JobExecuteLog, JobExt, JobOutputExt, JobTaskOutput, WorkerCtx, + WorkingState, WrappedJob, + }, + prisma::{media, series}, +}; + +use super::{manager::ThumbnailManager, ImageProcessorOptions}; + +// Note: I am type aliasing for the sake of clarity in what the provided Strings represent +type Id = String; +type MediaIds = Vec; + +#[derive(Clone, Debug, Serialize, Deserialize, Type)] +#[serde(tag = "type")] +pub enum ThumbnailGenerationJobVariant { + SingleLibrary(Id), + SingleSeries(Id), + MediaGroup(MediaIds), +} + +#[derive(Clone, Debug, Serialize, Deserialize, Type)] +pub struct ThumbnailGenerationJobParams { + variant: ThumbnailGenerationJobVariant, + force_regenerate: bool, +} + +impl ThumbnailGenerationJobParams { + pub fn new(variant: ThumbnailGenerationJobVariant, force_regenerate: bool) -> Self { + Self { + variant, + force_regenerate, + } + } + + pub fn single_library(library_id: Id, force_regenerate: bool) -> Self { + Self::new( + ThumbnailGenerationJobVariant::SingleLibrary(library_id), + force_regenerate, + ) + } + + pub fn single_series(series_id: Id, force_regenerate: bool) -> Self { + Self::new( + ThumbnailGenerationJobVariant::SingleSeries(series_id), + force_regenerate, + ) + } +} + +#[derive(Serialize, Deserialize)] +pub enum ThumbnailGenerationTask { + GenerateBatch(MediaIds), +} + +#[derive(Clone, Serialize, Deserialize, Default, Debug, Type)] +pub struct ThumbnailGenerationOutput { + /// The total number of files that were visited during the thumbnail generation + visited_files: u64, + /// The number of thumbnails that were generated + generated_thumbnails: u64, + /// The number of thumbnails that were removed + removed_thumbnails: u64, +} + +impl JobOutputExt for ThumbnailGenerationOutput { + fn update(&mut self, updated: Self) { + self.visited_files += updated.visited_files; + self.generated_thumbnails += updated.generated_thumbnails; + self.removed_thumbnails += updated.removed_thumbnails; + } +} + +#[derive(Clone, Serialize, Deserialize)] +pub struct ThumbnailGenerationJob { + pub options: ImageProcessorOptions, + pub params: ThumbnailGenerationJobParams, +} + +impl ThumbnailGenerationJob { + pub fn new( + options: ImageProcessorOptions, + params: ThumbnailGenerationJobParams, + ) -> Box> { + WrappedJob::new(Self { options, params }) + } +} + +#[async_trait::async_trait] +impl JobExt for ThumbnailGenerationJob { + const NAME: &'static str = "thumbnail_generation"; + + type Output = ThumbnailGenerationOutput; + type Task = ThumbnailGenerationTask; + + // TODO: description based on params + fn description(&self) -> Option { + None + } + + async fn init( + &mut self, + ctx: &WorkerCtx, + ) -> Result, JobError> { + let media_ids = match &self.params.variant { + ThumbnailGenerationJobVariant::SingleLibrary(id) => { + let library_media = ctx + .db + .media() + .find_many(vec![media::series::is(vec![series::library_id::equals( + Some(id.clone()), + )])]) + .exec() + .await + .map_err(|e| JobError::InitFailed(e.to_string()))?; + + library_media.into_iter().map(|m| m.id).collect::>() + }, + ThumbnailGenerationJobVariant::SingleSeries(id) => { + let series_media = ctx + .db + .media() + .find_many(vec![media::series_id::equals(Some(id.clone()))]) + .exec() + .await + .map_err(|e| JobError::InitFailed(e.to_string()))?; + + series_media.into_iter().map(|m| m.id).collect::>() + }, + ThumbnailGenerationJobVariant::MediaGroup(media_ids) => media_ids.clone(), + }; + + let tasks = media_ids + .chunks(100) + .map(|chunk| ThumbnailGenerationTask::GenerateBatch(chunk.to_vec())) + .collect(); + + Ok(WorkingState { + output: Some(Self::Output::default()), + tasks, + completed_tasks: 0, + logs: vec![], + }) + } + + async fn execute_task( + &self, + ctx: &WorkerCtx, + task: Self::Task, + ) -> Result, JobError> { + let mut output = Self::Output::default(); + let mut logs = vec![]; + + let mut manager = ThumbnailManager::new(ctx.config.clone()) + .map_err(|e| JobError::TaskFailed(e.to_string()))?; + + match task { + ThumbnailGenerationTask::GenerateBatch(media_ids) => { + let media = ctx + .db + .media() + .find_many(vec![media::id::in_vec(media_ids)]) + .exec() + .await + .map_err(|e| JobError::TaskFailed(e.to_string()))?; + + if self.params.force_regenerate { + let media_ids_to_remove = media + .iter() + .filter(|m| manager.has_thumbnail(m.id.as_str())) + .map(|m| m.id.clone()) + .collect::>(); + let JobTaskOutput { + output: sub_output, + logs: sub_logs, + .. + } = safely_remove_batch(&media_ids_to_remove, &mut manager); + output.update(sub_output); + logs.extend(sub_logs); + } + + let media_to_generate_thumbnails = if self.params.force_regenerate { + media + } else { + media + .into_iter() + .filter(|m| !manager.has_thumbnail(m.id.as_str())) + .collect::>() + }; + + let JobTaskOutput { + output: sub_output, + logs: sub_logs, + .. + } = safely_generate_batch( + &media_to_generate_thumbnails, + self.options.clone(), + &mut manager, + ); + output.update(sub_output); + logs.extend(sub_logs); + }, + } + + Ok(JobTaskOutput { + output, + logs, + subtasks: vec![], + }) + } +} + +pub fn safely_remove_batch>( + ids: &[S], + manager: &mut ThumbnailManager, +) -> JobTaskOutput { + let mut output = ThumbnailGenerationOutput::default(); + let mut logs = vec![]; + + for id in ids { + manager.remove_thumbnail(id).map_or_else( + |error| { + tracing::error!(error = ?error, "Failed to remove thumbnail"); + logs.push( + JobExecuteLog::error(format!( + "Failed to remove thumbnail: {:?}", + error.to_string() + )) + .with_ctx(format!("Media ID: {}", id.as_ref())), + ); + }, + |_| output.removed_thumbnails += 1, + ); + } + output.visited_files = ids.len() as u64; + + JobTaskOutput { + output, + logs, + subtasks: vec![], + } +} + +pub fn safely_generate_batch( + media: &[media::Data], + options: ImageProcessorOptions, + manager: &mut ThumbnailManager, +) -> JobTaskOutput { + let mut output = ThumbnailGenerationOutput::default(); + let mut logs = vec![]; + + for media_item in media { + manager + .generate_thumbnail(media_item, options.clone()) + .map_or_else( + |error| { + tracing::error!(error = ?error, "Failed to generate thumbnail"); + logs.push( + JobExecuteLog::error(format!( + "Failed to generate thumbnail: {:?}", + error.to_string() + )) + .with_ctx(format!("Media ID: {}", media_item.id)), + ); + }, + |_| output.generated_thumbnails += 1, + ); + } + output.visited_files = media.len() as u64; + + JobTaskOutput { + output, + logs, + subtasks: vec![], + } +} diff --git a/core/src/filesystem/image/thumbnail/manager.rs b/core/src/filesystem/image/thumbnail/manager.rs new file mode 100644 index 000000000..ebef3ff66 --- /dev/null +++ b/core/src/filesystem/image/thumbnail/manager.rs @@ -0,0 +1,101 @@ +use std::{collections::HashMap, fs::File, io::Write, path::PathBuf, sync::Arc}; + +use crate::{ + config::StumpConfig, + filesystem::{ + image::{ + GenericImageProcessor, ImageFormat, ImageProcessor, ImageProcessorOptions, + WebpProcessor, + }, + media, FileError, + }, + prisma::media as prisma_media, +}; + +pub struct ThumbnailManager { + config: Arc, + thumbnail_contents: HashMap, +} + +impl ThumbnailManager { + pub fn new(config: Arc) -> Result { + // This hashmap will hold the id : PathBuf for each item in the thumbnail dir. + let mut thumbnail_contents = HashMap::new(); + + // Take inventory of the thumbnail_dir's contents + let read_dir = config.get_thumbnails_dir().read_dir()?; + for item in read_dir.into_iter().filter_map(Result::ok) { + let path = item.path(); + // Test if the path has a filename, if it does, add it to the hashmap + if let Some(file_name) = item.path().file_name() { + let file_name = file_name.to_string_lossy().to_string(); + thumbnail_contents.insert(file_name, path); + } else { + tracing::warn!(?path, "Thumbnail file has no filename?"); + } + } + + Ok(Self { + config, + thumbnail_contents, + }) + } + + pub fn has_thumbnail>(&self, media_id: S) -> bool { + self.thumbnail_contents.contains_key(media_id.as_ref()) + } + + pub fn generate_thumbnail( + &mut self, + media_item: &prisma_media::Data, + options: ImageProcessorOptions, + ) -> Result<(), FileError> { + let media_id = media_item.id.clone(); + let media_path = media_item.path.clone(); + + let (_, page_data) = + media::get_page(&media_path, options.page.unwrap_or(1), &self.config)?; + let ext = options.format.extension(); + + let thumbnail_path = self + .config + .get_thumbnails_dir() + .join(format!("{}.{}", &media_id, ext)); + + if !thumbnail_path.exists() { + let image_buffer = match options.format { + ImageFormat::Webp => WebpProcessor::generate(&page_data, options)?, + _ => GenericImageProcessor::generate(&page_data, options)?, + }; + + let mut image_file = File::create(&thumbnail_path)?; + image_file.write_all(&image_buffer)?; + + // Write new thumbnail into hashmap + self.thumbnail_contents.insert(media_id, thumbnail_path); + } else { + tracing::trace!( + ?thumbnail_path, + media_id, + "Thumbnail already exists for media" + ) + } + + Ok(()) + } + + pub fn remove_thumbnail>( + &mut self, + media_id: S, + ) -> Result<(), FileError> { + let media_id = media_id.as_ref(); + if let Some(path) = self.thumbnail_contents.get(media_id) { + std::fs::remove_file(path)?; + self.thumbnail_contents.remove(media_id); + } else { + tracing::warn!(?media_id, "Thumbnail not found in manager"); + } + + Ok(()) + } +} diff --git a/core/src/filesystem/image/thumbnail.rs b/core/src/filesystem/image/thumbnail/mod.rs similarity index 77% rename from core/src/filesystem/image/thumbnail.rs rename to core/src/filesystem/image/thumbnail/mod.rs index 391418827..f422900dc 100644 --- a/core/src/filesystem/image/thumbnail.rs +++ b/core/src/filesystem/image/thumbnail/mod.rs @@ -3,11 +3,23 @@ use std::{fs::File, io::Write, path::PathBuf}; use rayon::prelude::{IntoParallelIterator, ParallelIterator}; use tracing::{debug, error, trace}; +// TODO: I know this is super related to image processing, however I am debating whether it is +// extensive enough to warrant its own module. I think it is, but I am not 100% sure. I would just +// move thumbnail folder up one to the root of `filesystem` instead of `filesystem/image` + +mod generation_job; +mod manager; + +pub use generation_job::{ + ThumbnailGenerationJob, ThumbnailGenerationJobParams, ThumbnailGenerationJobVariant, + ThumbnailGenerationOutput, +}; +pub use manager::ThumbnailManager; + use crate::{ config::StumpConfig, db::entity::Media, filesystem::{media, FileError}, - prisma::media as prisma_media, }; use super::{ @@ -100,54 +112,7 @@ pub fn generate_thumbnails( pub const THUMBNAIL_CHUNK_SIZE: usize = 5; -pub fn generate_thumbnails_for_media( - media: Vec, - options: ImageProcessorOptions, - config: &StumpConfig, - mut on_progress: impl FnMut(String) + Send + Sync + 'static, -) -> Result, FileError> { - trace!(media_count = media.len(), "Enter generate_thumbnails"); - - let mut generated_paths = Vec::with_capacity(media.len()); - - for (idx, chunk) in media.chunks(THUMBNAIL_CHUNK_SIZE).enumerate() { - trace!(chunk = idx + 1, "Processing chunk for thumbnail generation"); - on_progress( - format!( - "Processing group {} of {} for thumbnail generation", - idx + 1, - media.len() / THUMBNAIL_CHUNK_SIZE - ) - .to_string(), - ); - let results = chunk - .into_par_iter() - .map(|m| { - generate_thumbnail( - m.id.as_str(), - m.path.as_str(), - options.clone(), - config, - ) - }) - .filter_map(|res| { - if res.is_err() { - error!(error = ?res.err(), "Error generating thumbnail!"); - None - } else { - res.ok() - } - }) - .collect::>(); - - debug!(num_generated = results.len(), "Generated thumbnail batch"); - - generated_paths.extend(results); - } - - Ok(generated_paths) -} - +// TODO: return deleted count pub fn remove_thumbnails( id_list: &[String], thumbnails_dir: PathBuf, diff --git a/core/src/filesystem/image/thumbnail_job.rs b/core/src/filesystem/image/thumbnail_job.rs deleted file mode 100644 index 8b0178a31..000000000 --- a/core/src/filesystem/image/thumbnail_job.rs +++ /dev/null @@ -1,364 +0,0 @@ -use std::{ - path::PathBuf, - sync::{ - atomic::{AtomicU64, Ordering}, - Arc, - }, -}; - -use serde::{Deserialize, Serialize}; -use specta::Type; -use tracing::{info, trace}; - -use crate::{ - event::CoreEvent, - filesystem::{ - image::thumbnail::{ - generate_thumbnails_for_media, remove_thumbnails, THUMBNAIL_CHUNK_SIZE, - }, - PathUtils, - }, - job::{utils::persist_job_start, Job, JobError, JobTrait, JobUpdate, WorkerCtx}, - prisma::{media, series}, -}; - -use super::ImageProcessorOptions; - -pub const THUMBNAIL_JOB_NAME: &str = "thumbnail_generation"; - -#[derive(Debug, Serialize, Deserialize, Type)] -pub enum ThumbnailJobConfig { - SingleLibrary { - library_id: String, - force_regenerate: bool, - }, - SingleSeries { - series_id: String, - force_regenerate: bool, - }, - MediaGroup(Vec), -} - -impl ToString for ThumbnailJobConfig { - fn to_string(&self) -> String { - match self { - ThumbnailJobConfig::SingleLibrary { library_id, .. } => { - format!("Thumbnail generation for library {}", library_id) - }, - ThumbnailJobConfig::SingleSeries { series_id, .. } => { - format!("Thumbnail generation for series {}", series_id) - }, - ThumbnailJobConfig::MediaGroup(media_group_ids) => { - format!("Thumbnail generation for media group {:?}", media_group_ids) - }, - } - } -} - -// impl AsRef for ThumbnailJobConfig { -// fn as_ref(&self) -> &str { -// match self { -// ThumbnailJobConfig::SingleLibrary { library_id, .. } => { -// format!("Thumbnail generation for library {}", library_id).as_str() -// }, -// ThumbnailJobConfig::SingleSeries { series_id, .. } => { -// format!("Thumbnail generation for series {}", series_id).as_str() -// }, -// ThumbnailJobConfig::MediaGroup(media_group_ids) => { -// format!("Thumbnail generation for media group {:?}", media_group_ids) -// .as_str() -// }, -// } -// } -// } - -#[derive(Serialize, Deserialize)] -pub struct ThumbnailJob { - options: ImageProcessorOptions, - config: ThumbnailJobConfig, -} - -#[async_trait::async_trait] -impl JobTrait for ThumbnailJob { - fn name(&self) -> &'static str { - THUMBNAIL_JOB_NAME - } - - fn description(&self) -> Option> { - // TODO: figure this out... - None - // Some(Box::new(self.config.as_ref())) - } - - async fn run(&mut self, ctx: WorkerCtx) -> Result { - ctx.emit_job_started(0, Some("Preparing thumbnail generation".to_string())); - - let core_ctx = ctx.core_ctx.clone(); - - let counter = Arc::new(AtomicU64::new(0)); - let progress_ctx = ctx.clone(); - let job_id = progress_ctx.job_id().to_string(); - let counter_ref = counter.clone(); - - // FIXME: a lot of code duplication and a bit crude of an implementation. I need to account - // for massive media groups better than this. - let result: Result, JobError> = match &self.config { - ThumbnailJobConfig::SingleLibrary { - library_id, - force_regenerate, - } => { - let thumbnail_dir = core_ctx.config.get_thumbnails_dir(); - let library_media = core_ctx - .db - .media() - .find_many(vec![media::series::is(vec![series::library_id::equals( - Some(library_id.clone()), - )])]) - .exec() - .await?; - - let readdir_hash_set = thumbnail_dir - .read_dir() - .ok() - .map(|dir| dir.into_iter()) - .map(|iter| { - iter.filter_map(|entry| entry.ok()) - .map(|entry| entry.path().file_parts().file_name) - }) - .map(|iter| iter.collect::>()) - .unwrap_or_default(); - - if *force_regenerate { - remove_thumbnails( - &library_media - .iter() - .filter(|m| readdir_hash_set.contains(&m.id)) - .map(|m| m.id.to_owned()) - .collect::>(), - thumbnail_dir, - )?; - // Generate thumbnails for all media in the library - let tasks = library_media.len() as u64; - let on_progress = move |msg| { - let previous = counter_ref.fetch_add(5, Ordering::SeqCst); - let next = if previous + THUMBNAIL_CHUNK_SIZE as u64 > tasks { - tasks - } else { - previous + THUMBNAIL_CHUNK_SIZE as u64 - }; - progress_ctx.emit_progress(JobUpdate::tick( - job_id.clone(), - next, - tasks, - Some(msg), - )); - }; - - persist_job_start(&core_ctx, ctx.job_id.clone(), tasks).await?; - - trace!( - media_count = library_media.len(), - "Generating thumbnails for library" - ); - - let generated_thumbnail_paths = generate_thumbnails_for_media( - library_media, - self.options.to_owned(), - &core_ctx.config, - on_progress, - )?; - - Ok(generated_thumbnail_paths) - } else { - let media_without_thumbnails = library_media - .into_iter() - .filter(|m| !readdir_hash_set.contains(&m.id)) - .collect::>(); - - let tasks = media_without_thumbnails.len() as u64; - let on_progress = move |msg| { - let previous = counter_ref.fetch_add(5, Ordering::SeqCst); - let next = if previous + THUMBNAIL_CHUNK_SIZE as u64 > tasks { - tasks - } else { - previous + THUMBNAIL_CHUNK_SIZE as u64 - }; - progress_ctx.emit_progress(JobUpdate::tick( - job_id.clone(), - next, - tasks, - Some(msg), - )); - }; - persist_job_start(&core_ctx, ctx.job_id.clone(), tasks).await?; - - trace!( - media_count = media_without_thumbnails.len(), - "Generating thumbnails for library" - ); - let generated_thumbnail_paths = generate_thumbnails_for_media( - media_without_thumbnails, - self.options.to_owned(), - &core_ctx.config, - on_progress, - )?; - Ok(generated_thumbnail_paths) - } - }, - ThumbnailJobConfig::SingleSeries { - series_id, - force_regenerate, - } => { - let thumbnail_dir = core_ctx.config.get_thumbnails_dir(); - - let series_media = core_ctx - .db - .media() - .find_many(vec![media::series_id::equals(Some(series_id.clone()))]) - .exec() - .await?; - - let readdir_hash_set = thumbnail_dir - .read_dir() - .ok() - .map(|dir| dir.into_iter()) - .map(|iter| { - iter.filter_map(|entry| entry.ok()) - .map(|entry| entry.path().file_parts().file_name) - }) - .map(|iter| iter.collect::>()) - .unwrap_or_default(); - - if *force_regenerate { - remove_thumbnails( - &series_media - .iter() - .filter(|m| readdir_hash_set.contains(&m.id)) - .map(|m| m.id.to_owned()) - .collect::>(), - thumbnail_dir, - )?; - - let tasks = series_media.len() as u64; - let on_progress = move |msg| { - let previous = counter_ref.fetch_add(5, Ordering::SeqCst); - let next = if previous + THUMBNAIL_CHUNK_SIZE as u64 > tasks { - tasks - } else { - previous + THUMBNAIL_CHUNK_SIZE as u64 - }; - progress_ctx.emit_progress(JobUpdate::tick( - job_id.clone(), - next, - tasks, - Some(msg), - )); - }; - - persist_job_start(&core_ctx, ctx.job_id.clone(), tasks).await?; - - trace!( - media_count = series_media.len(), - "Generating thumbnails for series" - ); - - let generated_thumbnail_paths = generate_thumbnails_for_media( - series_media, - self.options.to_owned(), - &core_ctx.config, - on_progress, - )?; - Ok(generated_thumbnail_paths) - } else { - let media_without_thumbnails = series_media - .into_iter() - .filter(|m| !readdir_hash_set.contains(&m.id)) - .collect::>(); - - let tasks = media_without_thumbnails.len() as u64; - let on_progress = move |msg| { - let previous = counter_ref.fetch_add(5, Ordering::SeqCst); - let next = if previous + THUMBNAIL_CHUNK_SIZE as u64 > tasks { - tasks - } else { - previous + THUMBNAIL_CHUNK_SIZE as u64 - }; - progress_ctx.emit_progress(JobUpdate::tick( - job_id.clone(), - next, - tasks, - Some(msg), - )); - }; - persist_job_start(&core_ctx, ctx.job_id.clone(), tasks).await?; - - trace!( - media_count = media_without_thumbnails.len(), - "Generating thumbnails for library" - ); - let generated_thumbnail_paths = generate_thumbnails_for_media( - media_without_thumbnails, - self.options.to_owned(), - &core_ctx.config, - on_progress, - )?; - Ok(generated_thumbnail_paths) - } - }, - ThumbnailJobConfig::MediaGroup(media_group_ids) => { - let tasks = media_group_ids.len() as u64; - let on_progress = move |msg| { - let previous = counter_ref.fetch_add(5, Ordering::SeqCst); - let next = if previous + THUMBNAIL_CHUNK_SIZE as u64 > tasks { - tasks - } else { - previous + THUMBNAIL_CHUNK_SIZE as u64 - }; - progress_ctx.emit_progress(JobUpdate::tick( - job_id.clone(), - next, - tasks, - Some(msg), - )); - }; - persist_job_start(&core_ctx, ctx.job_id.clone(), tasks).await?; - - trace!( - media_group_ids_count = media_group_ids.len(), - "Generating thumbnails for media group" - ); - let client = ctx.core_ctx.get_db(); - let media = client - .media() - .find_many(vec![media::id::in_vec(media_group_ids.to_owned())]) - .exec() - .await?; - let generated_thumbnail_paths = generate_thumbnails_for_media( - media, - self.options.to_owned(), - &core_ctx.config, - on_progress, - )?; - Ok(generated_thumbnail_paths) - }, - }; - let created_thumbnail_paths = result?; - info!( - created_thumbnail_count = created_thumbnail_paths.len(), - "Thumbnail generation completed" - ); - ctx.core_ctx.emit_event(CoreEvent::GeneratedThumbnailBatch( - created_thumbnail_paths.len() as u64, - )); - Ok(created_thumbnail_paths.len() as u64) - } -} - -impl ThumbnailJob { - pub fn new( - options: ImageProcessorOptions, - config: ThumbnailJobConfig, - ) -> Box> { - Job::new(Self { options, config }) - } -} diff --git a/core/src/filesystem/media/epub.rs b/core/src/filesystem/media/epub.rs index a3aee9a94..a7daa7c32 100644 --- a/core/src/filesystem/media/epub.rs +++ b/core/src/filesystem/media/epub.rs @@ -307,8 +307,7 @@ impl EpubProcessor { // replace all src attributes with `{epubBaseURl}/{root}/{src}` // replace all href attributes with `{epubBaseURl}/{root}/{href}` // base_url/root/ - let resolved_base = PathBuf::from(base_url).join(root); - dbg!(resolved_base); + let _resolved_base = PathBuf::from(base_url).join(root); // 1. convert to string // 2. match all elements with src or href attributes diff --git a/core/src/filesystem/scanner/library_scan_job.rs b/core/src/filesystem/scanner/library_scan_job.rs new file mode 100644 index 000000000..3c1035bd3 --- /dev/null +++ b/core/src/filesystem/scanner/library_scan_job.rs @@ -0,0 +1,639 @@ +use rayon::iter::{ + Either, IndexedParallelIterator, IntoParallelRefIterator, ParallelIterator, +}; +use std::{collections::VecDeque, path::PathBuf}; + +use serde::{Deserialize, Serialize}; +use specta::Type; + +use crate::{ + db::{ + entity::{LibraryOptions, Series}, + FileStatus, SeriesDAO, DAO, + }, + filesystem::{ + image::{ThumbnailGenerationJob, ThumbnailGenerationJobParams}, + SeriesBuilder, + }, + job::{ + error::JobError, JobControllerCommand, JobExecuteLog, JobExt, JobOutputExt, + JobProgress, JobTaskOutput, WorkerCtx, WorkerSendExt, WorkingState, WrappedJob, + }, + prisma::{library, library_options, media, series, PrismaClient}, + utils::chain_optional_iter, + CoreEvent, +}; + +use super::{ + series_scan_job::SeriesScanTask, + utils::{ + generate_rule_set, handle_create_media, handle_missing_media, + handle_missing_series, handle_visit_media, MediaBuildOperationCtx, + MediaOperationOutput, MissingSeriesOutput, + }, + walk_library, walk_series, WalkedLibrary, WalkedSeries, WalkerCtx, +}; + +/// The taks variants that are used to scan a library +#[derive(Serialize, Deserialize)] +pub enum LibraryScanTask { + Init(InitTaskInput), + WalkSeries(PathBuf), + SeriesTask { + id: String, + path: String, + task: SeriesScanTask, + }, +} + +/// The input data for the init task of a library scan job +#[derive(Serialize, Deserialize)] +pub struct InitTaskInput { + series_to_create: Vec, + missing_series: Vec, +} + +/// A job that scans a library and updates the database with the results +#[derive(Clone)] +pub struct LibraryScanJob { + pub id: String, + pub path: String, + pub options: Option, +} + +impl LibraryScanJob { + pub fn new(id: String, path: String) -> Box> { + WrappedJob::new(Self { + id, + path, + options: None, + }) + } +} + +/// The data that is collected and updated during the execution of a library scan job +#[derive(Clone, Serialize, Deserialize, Default, Debug, Type)] +pub struct LibraryScanOutput { + /// The number of files visited during the scan + total_files: u64, + /// The number of files that were ignored during the scan + ignored_files: u64, + /// The number of media entities created + created_media: u64, + /// The number of media entities updated + updated_media: u64, + /// The number of series entities created + created_series: u64, + /// The number of series entities updated + updated_series: u64, +} + +impl JobOutputExt for LibraryScanOutput { + fn update(&mut self, updated: Self) { + self.total_files += updated.total_files; + self.ignored_files += updated.ignored_files; + self.created_media += updated.created_media; + self.updated_media += updated.updated_media; + self.created_series += updated.created_series; + self.updated_series += updated.updated_series; + } +} + +#[async_trait::async_trait] +impl JobExt for LibraryScanJob { + const NAME: &'static str = "library_scan"; + + type Output = LibraryScanOutput; + type Task = LibraryScanTask; + + fn description(&self) -> Option { + Some(self.path.clone()) + } + + async fn init( + &mut self, + ctx: &WorkerCtx, + ) -> Result, JobError> { + let mut output = Self::Output::default(); + // Note: We ignore the potential self.options here in the event that it was + // updated since being queued. This is perhaps a bit overly cautious, but it's + // just one additional query. + let library_options = ctx + .db + .library_options() + .find_first(vec![library_options::library::is(vec![ + library::id::equals(self.id.clone()), + library::path::equals(self.path.clone()), + ])]) + .exec() + .await? + .map(LibraryOptions::from) + .ok_or(JobError::InitFailed("Library not found".to_string()))?; + let is_collection_based = library_options.is_collection_based(); + let ignore_rules = generate_rule_set(&[PathBuf::from(self.path.clone())]); + + self.options = Some(library_options); + + ctx.report_progress(JobProgress::msg("Performing task discovery")); + let WalkedLibrary { + series_to_create, + series_to_visit, + missing_series, + library_is_missing, + ignored_directories, + seen_directories, + } = walk_library( + &self.path, + WalkerCtx { + db: ctx.db.clone(), + ignore_rules, + max_depth: is_collection_based.then_some(1), + }, + ) + .await?; + tracing::debug!( + series_to_create = series_to_create.len(), + series_to_visit = series_to_visit.len(), + missing_series = missing_series.len(), + library_is_missing, + "Walked library" + ); + output.total_files = seen_directories + ignored_directories; + output.ignored_files = ignored_directories; + + if library_is_missing { + handle_missing_library(&ctx.db, self.id.as_str()).await?; + ctx.send_batch(vec![ + JobProgress::msg("Failed to find library on disk").into_send(), + CoreEvent::DiscoveredMissingLibrary(self.id.clone()).into_send(), + ]); + return Err(JobError::InitFailed( + "Library could not be found on disk".to_string(), + )); + } + + ctx.report_progress(JobProgress::msg("Indexing complete! Building tasks")); + + let init_task_input = InitTaskInput { + series_to_create: series_to_create.clone(), + missing_series, + }; + + let series_to_visit = series_to_visit + .into_iter() + .map(LibraryScanTask::WalkSeries) + .chain( + series_to_create + .into_iter() + .map(LibraryScanTask::WalkSeries), + ) + .collect::>(); + + let tasks = VecDeque::from( + [LibraryScanTask::Init(init_task_input)] + .into_iter() + .chain(series_to_visit) + .collect::>(), + ); + + Ok(WorkingState { + output: Some(output), + tasks, + completed_tasks: 0, + logs: vec![], + }) + } + + async fn cleanup( + &self, + ctx: &WorkerCtx, + output: &Self::Output, + ) -> Result<(), JobError> { + let did_create = output.created_series > 0 || output.created_media > 0; + let did_update = output.updated_series > 0 || output.updated_media > 0; + let image_options = self + .options + .as_ref() + .and_then(|o| o.thumbnail_config.clone()); + + match image_options { + Some(options) if did_create | did_update => { + tracing::debug!("Enqueuing thumbnail generation job"); + ctx.send_batch(vec![ + JobProgress::msg("Enqueuing thumbnail generation job").into_send(), + JobControllerCommand::EnqueueJob(WrappedJob::new( + ThumbnailGenerationJob { + options, + params: ThumbnailGenerationJobParams::single_library( + self.id.clone(), + false, + ), + }, + )) + .into_send(), + ]); + }, + _ => { + tracing::debug!("No cleanup required for library scan job"); + }, + } + + Ok(()) + } + + async fn execute_task( + &self, + ctx: &WorkerCtx, + task: Self::Task, + ) -> Result, JobError> { + let mut output = Self::Output::default(); + let mut logs = vec![]; + let mut subtasks = vec![]; + + let chunk_size = ctx.config.scanner_chunk_size; + + match task { + LibraryScanTask::Init(input) => { + tracing::info!("Executing the init task for library scan"); + ctx.report_progress(JobProgress::msg("Handling library scan init")); + let InitTaskInput { + series_to_create, + missing_series, + } = input; + + // Task count: build each series + 1 for insertion step, +1 for update tx on missing series + let total_subtask_count = (series_to_create.len() + 1) + + if !missing_series.is_empty() { 1 } else { 0 }; + let mut current_subtask_index = 0; + ctx.report_progress(JobProgress::subtask_position( + current_subtask_index, + total_subtask_count as i32, + )); + + if !missing_series.is_empty() { + ctx.report_progress(JobProgress::msg("Handling missing series")); + let missing_series_str = missing_series + .iter() + .map(|e| e.to_string_lossy().to_string()) + .collect::>(); + let affected_rows = ctx + .db + .series() + .update_many( + vec![series::path::in_vec(missing_series_str.clone())], + vec![series::status::set(FileStatus::Missing.to_string())], + ) + .exec() + .await + .map_or_else( + |error| { + tracing::error!(error = ?error, "Failed to update missing series"); + logs.push(JobExecuteLog::error(format!( + "Failed to update missing series: {:?}", + error.to_string() + ))); + 0 + }, + |count| { + output.updated_series = count as u64; + count + }, + ); + + ctx.report_progress(JobProgress::subtask_position( + (affected_rows > 0) + .then(|| { + current_subtask_index += 1; + current_subtask_index + }) + .unwrap_or(0), + total_subtask_count as i32, + )); + } + + if !series_to_create.is_empty() { + ctx.report_progress(JobProgress::msg("Creating new series")); + // TODO: remove this DAO!! + let series_dao = SeriesDAO::new(ctx.db.clone()); + + let (built_series, failure_logs): (Vec<_>, Vec<_>) = series_to_create + .par_iter() + .enumerate() + .map(|(idx, path_buf)| { + ctx.report_progress(JobProgress::subtask_position_msg( + format!("Building series {}", path_buf.display()) + .as_str(), + current_subtask_index + (idx as i32), + total_subtask_count as i32, + )); + ( + path_buf, + SeriesBuilder::new(path_buf.as_path(), &self.id).build(), + ) + }) + .partition_map::<_, _, _, Series, JobExecuteLog>( + |(path_buf, result)| match result { + Ok(s) => Either::Left(s), + Err(e) => Either::Right( + JobExecuteLog::error(e.to_string()) + .with_ctx(path_buf.to_string_lossy().to_string()), + ), + }, + ); + current_subtask_index += + (built_series.len() + failure_logs.len()) as i32; + logs.extend(failure_logs); + + // TODO: make this configurable + let chunks = built_series.chunks(400); + let chunk_count = chunks.len(); + tracing::debug!(chunk_count, "Batch inserting new series"); + for (idx, chunk) in chunks.enumerate() { + ctx.report_progress(JobProgress::msg( + format!( + "Processing series insertion chunk {} of {}", + idx + 1, + chunk_count + ) + .as_str(), + )); + let result = series_dao.create_many(chunk.to_vec()).await; + match result { + Ok(created_series) => { + output.created_series += created_series.len() as u64; + ctx.send_core_event(CoreEvent::CreatedManySeries { + count: created_series.len() as u64, + library_id: self.id.clone(), + }); + }, + Err(e) => { + tracing::error!(error = ?e, "Failed to batch insert series"); + logs.push(JobExecuteLog::error(format!( + "Failed to batch insert series: {:?}", + e.to_string() + ))); + }, + } + } + + current_subtask_index += 1; + ctx.report_progress(JobProgress::subtask_position_msg( + "Processed all chunks", + current_subtask_index, + total_subtask_count as i32, + )); + } else { + tracing::debug!("No series to create"); + } + + ctx.report_progress(JobProgress::msg("Init task complete!")); + }, + LibraryScanTask::WalkSeries(path_buf) => { + tracing::info!("Executing the walk series task for library scan"); + ctx.report_progress(JobProgress::msg( + format!("Scanning series at {}", path_buf.display()).as_str(), + )); + + let ignore_rules = generate_rule_set(&[ + path_buf.clone(), + PathBuf::from(self.path.clone()), + ]); + + let walk_result = walk_series( + path_buf.as_path(), + WalkerCtx { + db: ctx.db.clone(), + ignore_rules, + max_depth: None, + }, + ) + .await; + + let WalkedSeries { + series_is_missing, + media_to_create, + media_to_visit, + missing_media, + seen_files, + ignored_files, + } = match walk_result { + Ok(walked_series) => walked_series, + Err(core_error) => { + tracing::error!(error = ?core_error, "Critical error during attempt to walk series!"); + // NOTE: I don't error here in order to collect and report on the error later on. + // This can perhaps be refactored later on so that the parent (Job struct) properly + // handles this instead, however for now this is fine. + return Ok(JobTaskOutput { + output, + logs: vec![JobExecuteLog::error(format!( + "Critical error during attempt to walk series: {:?}", + core_error.to_string() + ))], + subtasks, + }); + }, + }; + output.total_files += seen_files + ignored_files; + output.ignored_files += ignored_files; + + if series_is_missing { + ctx.report_progress(JobProgress::msg("Series not found on disk!")); + logs.push( + JobExecuteLog::warn("Series could not be found on disk") + .with_ctx(path_buf.to_string_lossy().to_string()), + ); + let MissingSeriesOutput { + updated_series, + updated_media, + logs: new_logs, + } = handle_missing_series( + &ctx.db, + path_buf.to_str().unwrap_or_default(), + ) + .await?; + output.updated_series += updated_series; + output.updated_media += updated_media; + logs.extend(new_logs); + return Ok(JobTaskOutput { + output, + logs, + subtasks, + }); + } + + let series_path_str = path_buf.to_str().unwrap_or_default().to_string(); + let series = ctx + .db + .series() + .find_first(vec![series::path::equals(series_path_str.clone())]) + .exec() + .await? + .ok_or(JobError::TaskFailed("Series not found".to_string()))?; + + subtasks = chain_optional_iter( + [], + [ + (!missing_media.is_empty()) + .then_some(SeriesScanTask::MarkMissingMedia(missing_media)), + (!media_to_create.is_empty()) + .then_some(SeriesScanTask::CreateMedia(media_to_create)), + (!media_to_visit.is_empty()) + .then_some(SeriesScanTask::VisitMedia(media_to_visit)), + ], + ) + .into_iter() + .map(|task| LibraryScanTask::SeriesTask { + id: series.id.clone(), + path: series_path_str.clone(), + task, + }) + .collect(); + + ctx.report_progress(JobProgress::msg("Series walk complete!")); + }, + LibraryScanTask::SeriesTask { + id: series_id, + path: _series_path, + task: series_task, + } => match series_task { + SeriesScanTask::MarkMissingMedia(paths) => { + ctx.report_progress(JobProgress::msg("Handling missing media")); + let MediaOperationOutput { + updated_media, + logs: new_logs, + .. + } = handle_missing_media(ctx, &series_id, paths).await; + ctx.send_batch(vec![ + JobProgress::msg("Handled missing media").into_send(), + CoreEvent::CreatedOrUpdatedManyMedia { + count: updated_media, + series_id, + } + .into_send(), + ]); + output.updated_media += updated_media; + logs.extend(new_logs); + }, + SeriesScanTask::CreateMedia(paths) => { + ctx.report_progress(JobProgress::msg( + format!("Creating {} media entities", paths.len()).as_str(), + )); + let MediaOperationOutput { + created_media, + logs: new_logs, + .. + } = handle_create_media( + MediaBuildOperationCtx { + series_id: series_id.clone(), + library_options: self.options.clone().unwrap_or_default(), + chunk_size, + }, + ctx, + paths, + ) + .await?; + ctx.send_batch(vec![ + JobProgress::msg("Created new media").into_send(), + CoreEvent::CreatedOrUpdatedManyMedia { + count: created_media, + series_id, + } + .into_send(), + ]); + output.created_media += created_media; + logs.extend(new_logs); + }, + SeriesScanTask::VisitMedia(paths) => { + ctx.report_progress(JobProgress::msg( + format!("Visiting {} media entities on disk", paths.len()) + .as_str(), + )); + let MediaOperationOutput { + updated_media, + logs: new_logs, + .. + } = handle_visit_media( + MediaBuildOperationCtx { + series_id: series_id.clone(), + library_options: self.options.clone().unwrap_or_default(), + chunk_size, + }, + ctx, + paths, + ) + .await?; + ctx.send_batch(vec![ + JobProgress::msg("Visited all media").into_send(), + CoreEvent::CreatedOrUpdatedManyMedia { + count: updated_media, + series_id, + } + .into_send(), + ]); + output.updated_media += updated_media; + logs.extend(new_logs); + }, + }, + } + + Ok(JobTaskOutput { + output, + logs, + subtasks, + }) + } +} + +pub async fn handle_missing_library( + db: &PrismaClient, + library_id: &str, +) -> Result<(), JobError> { + let (updated_library, affected_series, affected_media) = db + ._transaction() + .run(|client| async move { + let updated_library = client + .library() + .update( + library::id::equals(library_id.to_string()), + vec![library::status::set(FileStatus::Missing.to_string())], + ) + .exec() + .await?; + + let affected_series = client + .series() + .update_many( + vec![series::library_id::equals(Some(library_id.to_string()))], + vec![series::status::set(FileStatus::Missing.to_string())], + ) + .exec() + .await?; + + client + .media() + .update_many( + vec![media::series::is(vec![series::library_id::equals(Some( + library_id.to_string(), + ))])], + vec![media::status::set(FileStatus::Missing.to_string())], + ) + .exec() + .await + .map(|affected_media| (updated_library, affected_series, affected_media)) + }) + .await + .map_err(|e| { + JobError::InitFailed(format!( + "A critical error occurred while handling missing library: {}", + e + )) + })?; + tracing::trace!( + ?updated_library, + affected_series, + affected_media, + "Marked library as missing" + ); + + Ok(()) +} diff --git a/core/src/filesystem/scanner/library_scanner.rs b/core/src/filesystem/scanner/library_scanner.rs deleted file mode 100644 index ad741eacf..000000000 --- a/core/src/filesystem/scanner/library_scanner.rs +++ /dev/null @@ -1,334 +0,0 @@ -use std::{ - collections::HashMap, - path::Path, - sync::{ - atomic::{AtomicU64, Ordering}, - Arc, - }, - time::{Duration, Instant}, -}; - -use rayon::prelude::{IntoParallelRefIterator, ParallelBridge, ParallelIterator}; -use walkdir::{DirEntry, WalkDir}; - -use crate::{ - db::{ - entity::{FileStatus, Library, LibraryOptions, Series}, - SeriesDAO, DAO, - }, - event::CoreEvent, - filesystem::{ - image::{ThumbnailJob, ThumbnailJobConfig}, - scanner::utils::mark_library_missing, - PathUtils, SeriesBuilder, - }, - job::{utils::persist_job_start, JobUpdate, WorkerCtx}, - prisma::{library, series}, - CoreError, CoreResult, -}; - -use super::series_scanner::SeriesScanner; - -pub struct LibrarySetup { - pub library: Library, - pub library_options: LibraryOptions, - pub library_series: Vec, - pub tasks: u64, -} - -pub struct LibraryScanner { - path: String, - worker_ctx: WorkerCtx, -} - -impl LibraryScanner { - pub fn new(path: String, worker_ctx: WorkerCtx) -> Self { - Self { path, worker_ctx } - } - - pub async fn scan(&self) -> CoreResult { - self.worker_ctx - .emit_job_started(0, Some("Preparing library scan".to_string())); - - let core_ctx = self.worker_ctx.core_ctx.clone(); - let LibrarySetup { - library_options, - library_series, - tasks, - .. - } = self.setup().await?; - - let job_id = self.worker_ctx.job_id.clone(); - persist_job_start(&core_ctx, job_id.clone(), tasks).await?; - - // Sleep for a little to let the UI breathe. - tokio::time::sleep(Duration::from_millis(500)).await; - - let counter = Arc::new(AtomicU64::new(0)); - for series in library_series { - let progress_ctx = self.worker_ctx.clone(); - - let job_id = progress_ctx.job_id().to_string(); - let counter_ref = counter.clone(); - - let library_options = library_options.clone(); - self.scan_series(series, library_options, move |msg| { - let previous = counter_ref.fetch_add(1, Ordering::SeqCst); - progress_ctx.emit_progress(JobUpdate::tick( - job_id.clone(), - previous + 1, - tasks, - Some(msg), - )); - }) - .await; - } - - self.finish(library_options).await; - - tokio::time::sleep(Duration::from_millis(500)).await; - - Ok(counter.load(Ordering::SeqCst)) - } - - async fn scan_series( - &self, - series: Series, - library_options: LibraryOptions, - on_progress: impl FnMut(String) + Send + Sync + 'static, - ) { - let scanner = SeriesScanner::new(self.worker_ctx.clone()); - scanner - .scan_series(series, self.path.clone(), library_options, on_progress) - .await; - } - - async fn setup(&self) -> CoreResult { - self.worker_ctx - .emit_job_message("Running library scan setup"); - - let start = Instant::now(); - - let ctx = self.worker_ctx.core_ctx.clone(); - let db = ctx.get_db(); - - let library = db - .library() - .find_unique(library::path::equals(self.path.clone())) - .with(library::series::fetch(vec![])) - .with(library::library_options::fetch()) - .exec() - .await? - .ok_or(CoreError::NotFound(format!( - "Library not found: {}", - self.path - )))?; - - if !Path::new(&self.path).exists() { - mark_library_missing(db, &library).await?; - - return Err(CoreError::FileNotFound(format!( - "Library could not be found on disk: {}", - self.path - ))); - } - - let library = Library::from(library); - let existing_series = library.series.unwrap_or_default(); - let library_options = library.library_options.clone(); - let is_collection_based = library_options.is_collection_based(); - - let series = self - .discover_series(library.id.clone(), existing_series, is_collection_based) - .await?; - - let tasks: u64 = series - .par_iter() - .map(|series| { - SeriesScanner::task_count(&series.path, &self.path, is_collection_based) - }) - .sum(); - - let duration = start.elapsed(); - let seconds = duration.as_secs(); - let setup_time = format!("{seconds}.{:03} seconds", duration.subsec_millis()); - - tracing::debug!( - task_count = tasks, - ?setup_time, - "Library scan setup completed" - ); - - Ok(LibrarySetup { - library: Library { - series: None, - ..library - }, - library_options, - library_series: series, - tasks, - }) - } - - async fn discover_series( - &self, - library_id: String, - mut existing_series: Vec, - is_collection_based: bool, - ) -> CoreResult> { - self.worker_ctx - .emit_job_message("Discovering any new series"); - - let ctx = self.worker_ctx.core_ctx.clone(); - let library_path = self.path.clone(); - - let series_map = existing_series - .iter() - .map(|data| (data.path.as_str(), false)) - .collect::>(); - - let missing_from_fs = existing_series - .iter() - .filter(|s| { - let path = Path::new(&s.path); - !path.exists() - }) - .map(|s| s.id.clone()) - .collect::>(); - - let marked_as_missing_but_found = existing_series - .iter() - .filter(|s| s.status == FileStatus::Missing && Path::new(&s.path).exists()) - .map(|s| s.id.clone()) - .collect::>(); - - if !marked_as_missing_but_found.is_empty() { - self.worker_ctx - .emit_job_message("Found series previously marked as missing"); - - let affected_count = ctx - .db - .series() - .update_many( - vec![series::id::in_vec(marked_as_missing_but_found)], - vec![series::status::set(FileStatus::Ready.to_string())], - ) - .exec() - .await?; - tracing::debug!( - ?affected_count, - "Updated series previously marked as missing" - ); - } - - let mut walkdir = WalkDir::new(library_path.as_str()); - - if is_collection_based { - walkdir = walkdir.max_depth(1); - } - - let new_entries = walkdir - // Set min_depth to 0 so we include the library path itself, - // which allows us to add it as a series when there are media items in it - .min_depth(0) - .into_iter() - .filter_entry(|e| e.path().is_dir()) - .filter_map(|e| e.ok()) - .par_bridge() - .filter(|entry| { - let path = entry.path(); - let path_str = path.as_os_str().to_string_lossy().to_string(); - - if is_collection_based && path_str != library_path { - // If we're doing a top level scan, we need to check that the path - // has media deeply nested. Exception for when the path is the library path, - // then we only need to check if it has media in it directly - path.dir_has_media_deep() - && !series_map.contains_key(path_str.as_str()) - } else { - // If we're doing a bottom up scan, we need to check that the path has - // media directly in it. - path.dir_has_media() && !series_map.contains_key(path_str.as_str()) - } - }) - .collect::>(); - - if !missing_from_fs.is_empty() { - self.worker_ctx.emit_job_message("Updating missing series"); - - ctx.db - .series() - .update_many( - vec![series::id::in_vec(missing_from_fs)], - vec![series::status::set(FileStatus::Missing.to_string())], - ) - .exec() - .await?; - } - - if !new_entries.is_empty() { - self.worker_ctx.emit_job_message("Creating new series"); - - // TODO: remove this DAO!! - let series_dao = SeriesDAO::new(ctx.db.clone()); - let series_to_create = new_entries - .par_iter() - .map(|e| SeriesBuilder::new(e.path(), &library_id).build()) - .filter_map(|res| { - if let Err(e) = res { - tracing::error!(error = ?e, "Failed to create series from entry"); - None - } else { - res.ok() - } - }) - .collect::>(); - - let chunks = series_to_create.chunks(1000); - tracing::debug!(chunk_count = chunks.len(), "Batch inserting new series"); - for chunk in chunks { - let result = series_dao.create_many(chunk.to_vec()).await; - match result { - Ok(mut created_series) => { - ctx.emit_event(CoreEvent::CreatedSeriesBatch { - count: created_series.len() as u64, - library_id: library_id.clone(), - }); - existing_series.append(&mut created_series); - }, - Err(e) => { - tracing::error!(error = ?e, "Failed to batch insert series"); - }, - } - } - } - - Ok(existing_series) - } - - async fn finish(&self, options: LibraryOptions) { - self.worker_ctx - .emit_job_message("Performing post-scan cleanup"); - - let core_ctx = self.worker_ctx.core_ctx.clone(); - if let Some(thumbnail_config) = options.thumbnail_config { - let job_config = ThumbnailJobConfig::SingleLibrary { - library_id: options.library_id.unwrap_or_else(|| { - tracing::error!("No library ID found in library options, cannot dispatch thumbnail job"); - "".to_string() - }), - force_regenerate: false, - }; - - let dispatch_result = - core_ctx.dispatch_job(ThumbnailJob::new(thumbnail_config, job_config)); - if dispatch_result.is_err() { - tracing::error!("Failed to dispatch thumbnail job!"); - } - } else { - tracing::debug!("No thumbnail config found, skipping thumbnail job dispatch"); - } - - tokio::time::sleep(Duration::from_millis(200)).await; - } -} diff --git a/core/src/filesystem/scanner/mod.rs b/core/src/filesystem/scanner/mod.rs index 93cb71d0d..8549ae671 100644 --- a/core/src/filesystem/scanner/mod.rs +++ b/core/src/filesystem/scanner/mod.rs @@ -1,8 +1,8 @@ -mod library_scanner; -mod scanner_job; -mod series_scanner; +mod library_scan_job; +mod series_scan_job; mod utils; +mod walk; -pub use library_scanner::LibraryScanner; -pub use scanner_job::{LibraryScanJob, SeriesScanJob}; -pub use series_scanner::SeriesScanner; +pub use library_scan_job::{LibraryScanJob, LibraryScanOutput}; +pub use series_scan_job::{SeriesScanJob, SeriesScanOutput}; +pub use walk::{walk_library, walk_series, WalkedLibrary, WalkedSeries, WalkerCtx}; diff --git a/core/src/filesystem/scanner/series_scan_job.rs b/core/src/filesystem/scanner/series_scan_job.rs new file mode 100644 index 000000000..269aa9211 --- /dev/null +++ b/core/src/filesystem/scanner/series_scan_job.rs @@ -0,0 +1,346 @@ +use std::{collections::VecDeque, path::PathBuf}; + +use serde::{Deserialize, Serialize}; +use specta::Type; + +use crate::{ + db::{entity::LibraryOptions, FileStatus}, + filesystem::image::{ThumbnailGenerationJob, ThumbnailGenerationJobParams}, + job::{ + error::JobError, JobControllerCommand, JobExt, JobOutputExt, JobProgress, + JobTaskOutput, WorkerCtx, WorkerSendExt, WorkingState, WrappedJob, + }, + prisma::{library, library_options, media, series, PrismaClient}, + utils::chain_optional_iter, + CoreEvent, +}; + +use super::{ + utils::{ + generate_rule_set, handle_create_media, handle_missing_media, handle_visit_media, + MediaBuildOperationCtx, MediaOperationOutput, + }, + walk_series, WalkedSeries, WalkerCtx, +}; + +#[allow(clippy::enum_variant_names)] +#[derive(Serialize, Deserialize)] +pub enum SeriesScanTask { + MarkMissingMedia(Vec), + CreateMedia(Vec), + VisitMedia(Vec), +} + +#[derive(Clone)] +pub struct SeriesScanJob { + pub id: String, + pub path: String, + pub options: Option, +} + +impl SeriesScanJob { + pub fn new(id: String, path: String) -> Box> { + WrappedJob::new(Self { + id, + path, + options: None, + }) + } +} + +// TODO: emit progress events. This job isn't exposed in the UI yet, so it's not a big deal for now + +#[derive(Clone, Serialize, Deserialize, Default, Debug, Type)] +pub struct SeriesScanOutput { + /// The number of files to scan relative to the series root + total_files: u64, + /// The number of files that were ignored during the scan + ignored_files: u64, + /// The number of media entities that were created + created_media: u64, + /// The number of media entities that were updated + updated_media: u64, +} + +impl JobOutputExt for SeriesScanOutput { + fn update(&mut self, updated: Self) { + self.total_files += updated.total_files; + self.ignored_files += updated.ignored_files; + self.created_media += updated.created_media; + self.updated_media += updated.updated_media; + } +} + +#[async_trait::async_trait] +impl JobExt for SeriesScanJob { + const NAME: &'static str = "series_scan"; + + type Output = SeriesScanOutput; + type Task = SeriesScanTask; + + fn description(&self) -> Option { + Some(self.path.clone()) + } + + async fn init( + &mut self, + ctx: &WorkerCtx, + ) -> Result, JobError> { + let mut output = Self::Output::default(); + let library_options = ctx + .db + .library_options() + .find_first(vec![library_options::library::is(vec![ + library::series::some(vec![ + series::id::equals(self.id.clone()), + series::path::equals(self.path.clone()), + ]), + ])]) + .exec() + .await? + .map(LibraryOptions::from) + .ok_or(JobError::InitFailed( + "Associated library options not found".to_string(), + ))?; + let ignore_rules = generate_rule_set(&[PathBuf::from(self.path.clone())]); + + self.options = Some(library_options); + + let WalkedSeries { + series_is_missing, + media_to_create, + media_to_visit, + missing_media, + seen_files, + ignored_files, + } = walk_series( + PathBuf::from(self.path.clone()).as_path(), + WalkerCtx { + db: ctx.db.clone(), + ignore_rules, + max_depth: None, + }, + ) + .await?; + + if series_is_missing { + let _ = handle_missing_series(&ctx.db, self.path.as_str()).await; + return Err(JobError::InitFailed( + "Series could not be found on disk".to_string(), + )); + } + + tracing::debug!( + media_to_create = media_to_create.len(), + media_to_visit = media_to_visit.len(), + "Walked series" + ); + output.total_files = seen_files + ignored_files; + output.ignored_files = ignored_files; + + let tasks = VecDeque::from(chain_optional_iter( + [], + [ + missing_media + .is_empty() + .then_some(SeriesScanTask::MarkMissingMedia(missing_media)), + media_to_create + .is_empty() + .then_some(SeriesScanTask::CreateMedia(media_to_create)), + media_to_visit + .is_empty() + .then_some(SeriesScanTask::VisitMedia(media_to_visit)), + ], + )); + + Ok(WorkingState { + output: Some(output), + tasks, + completed_tasks: 0, + logs: vec![], + }) + } + + async fn cleanup( + &self, + ctx: &WorkerCtx, + output: &Self::Output, + ) -> Result<(), JobError> { + let did_create = output.created_media > 0; + let did_update = output.updated_media > 0; + let image_options = self + .options + .as_ref() + .and_then(|o| o.thumbnail_config.clone()); + + match image_options { + Some(options) if did_create | did_update => { + tracing::debug!("Enqueuing thumbnail generation job"); + ctx.send_batch(vec![ + JobProgress::msg("Enqueuing thumbnail generation job").into_send(), + JobControllerCommand::EnqueueJob(WrappedJob::new( + ThumbnailGenerationJob { + options, + params: ThumbnailGenerationJobParams::single_series( + self.id.clone(), + false, + ), + }, + )) + .into_send(), + ]); + }, + _ => { + tracing::debug!("No cleanup required for series scan job"); + }, + } + + Ok(()) + } + + async fn execute_task( + &self, + ctx: &WorkerCtx, + task: Self::Task, + ) -> Result, JobError> { + let mut output = Self::Output::default(); + let mut logs = vec![]; + + let chunk_size = ctx.config.scanner_chunk_size; + + match task { + SeriesScanTask::MarkMissingMedia(paths) => { + ctx.report_progress(JobProgress::msg("Handling missing media")); + let MediaOperationOutput { + updated_media, + logs: new_logs, + .. + } = handle_missing_media(ctx, &self.id, paths).await; + ctx.send_batch(vec![ + JobProgress::msg("Handled missing media").into_send(), + CoreEvent::CreatedOrUpdatedManyMedia { + count: updated_media, + series_id: self.id.clone(), + } + .into_send(), + ]); + output.updated_media += updated_media; + logs.extend(new_logs); + }, + SeriesScanTask::CreateMedia(paths) => { + ctx.report_progress(JobProgress::msg( + format!("Creating {} media entities", paths.len()).as_str(), + )); + let MediaOperationOutput { + created_media, + logs: new_logs, + .. + } = handle_create_media( + MediaBuildOperationCtx { + series_id: self.id.clone(), + library_options: self.options.clone().unwrap_or_default(), + chunk_size, + }, + ctx, + paths, + ) + .await?; + ctx.send_batch(vec![ + JobProgress::msg("Created new media").into_send(), + CoreEvent::CreatedOrUpdatedManyMedia { + count: created_media, + series_id: self.id.clone(), + } + .into_send(), + ]); + output.created_media += created_media; + logs.extend(new_logs); + }, + SeriesScanTask::VisitMedia(paths) => { + ctx.report_progress(JobProgress::msg( + format!("Visiting {} media entities on disk", paths.len()).as_str(), + )); + let MediaOperationOutput { + updated_media, + logs: new_logs, + .. + } = handle_visit_media( + MediaBuildOperationCtx { + series_id: self.id.clone(), + library_options: self.options.clone().unwrap_or_default(), + chunk_size, + }, + ctx, + paths, + ) + .await?; + ctx.send_batch(vec![ + JobProgress::msg("Visited all media").into_send(), + CoreEvent::CreatedOrUpdatedManyMedia { + count: updated_media, + series_id: self.id.clone(), + } + .into_send(), + ]); + output.updated_media += updated_media; + logs.extend(new_logs); + }, + } + + Ok(JobTaskOutput { + output, + logs, + subtasks: vec![], + }) + } +} + +async fn handle_missing_series( + client: &PrismaClient, + path: &str, +) -> Result<(), JobError> { + let affected_rows = client + .series() + .update_many( + vec![series::path::equals(path.to_string())], + vec![series::status::set(FileStatus::Missing.to_string())], + ) + .exec() + .await + .map_or_else( + |error| { + tracing::error!(error = ?error, "Failed to update missing series"); + 0 + }, + |count| count, + ); + + if affected_rows > 1 { + tracing::warn!( + affected_rows, + "Updated more than one series with path: {}", + path + ); + } + + let _affected_media = client + .media() + .update_many( + vec![media::series::is(vec![series::path::equals( + path.to_string(), + )])], + vec![media::status::set(FileStatus::Missing.to_string())], + ) + .exec() + .await + .map_or_else( + |error| { + tracing::error!(error = ?error, "Failed to update missing media"); + + 0 + }, + |count| count, + ); + + Ok(()) +} diff --git a/core/src/filesystem/scanner/series_scanner.rs b/core/src/filesystem/scanner/series_scanner.rs deleted file mode 100644 index 046ba4650..000000000 --- a/core/src/filesystem/scanner/series_scanner.rs +++ /dev/null @@ -1,366 +0,0 @@ -use std::{ - collections::HashMap, - path::Path, - sync::{ - atomic::{AtomicU64, Ordering}, - Arc, - }, - time::Duration, -}; - -use globset::{GlobSet, GlobSetBuilder}; -use itertools::Itertools; -use walkdir::WalkDir; - -use crate::{ - db::entity::{FileStatus, Library, LibraryOptions, Media, Series}, - event::CoreEvent, - filesystem::{ - scanner::utils::{ - create_media, file_updated_since_scan, mark_media_paths_missing, update_media, - }, - MediaBuilder, PathUtils, - }, - job::{utils::persist_job_start, JobUpdate, WorkerCtx}, - prisma::{library, media, series}, - CoreError, CoreResult, Ctx, -}; - -use super::utils::populate_glob_builder; - -pub struct SeriesScanner { - /// The path to the series to scan. This is required when running a series - /// scan isolated from a library scan. - path: Option, - worker_ctx: WorkerCtx, -} - -impl SeriesScanner { - pub fn new(worker_ctx: WorkerCtx) -> Self { - Self { - path: None, - worker_ctx, - } - } - - pub fn with_path(self, path: String) -> Self { - Self { - path: Some(path), - ..self - } - } - - pub fn task_count(path: &str, library_path: &str, is_collection_based: bool) -> u64 { - let mut series_walkdir = WalkDir::new(path); - - // When the series is the library itself, we want to set the max_depth - // to 1 so it doesn't walk through the entire library (effectively doubling - // the return result, instead of the actual number of files to process) - if !is_collection_based || path == library_path { - series_walkdir = series_walkdir.max_depth(1) - } - - series_walkdir - .into_iter() - .filter_map(|e| e.ok()) - .filter(|e| e.path().is_file()) - .count() as u64 - } - - pub async fn scan(&self) -> CoreResult { - self.worker_ctx - .emit_job_started(0, Some("Preparing library scan".to_string())); - - let core_ctx = self.worker_ctx.core_ctx.clone(); - let series_path = self.path.clone().ok_or(CoreError::JobInitializationError( - "Series path is required for series scan".to_string(), - ))?; - - let library = core_ctx - .db - .library() - .find_first(vec![library::series::some(vec![series::path::equals( - series_path.clone(), - )])]) - .with( - library::series::fetch(vec![series::path::equals(series_path.clone())]) - .with(series::media::fetch(vec![])), - ) - .with(library::library_options::fetch()) - .exec() - .await? - .ok_or(CoreError::NotFound( - "Library containing target series was not found".to_string(), - ))?; - - let library = Library::from(library); - let library_options = library.library_options.clone(); - let series = library - .series - .ok_or(CoreError::InternalError( - "Series relation failed to load".to_string(), - ))? - .first() - .ok_or(CoreError::NotFound("TODO: different error".to_string()))? - .clone(); - - let tasks = Self::task_count( - &series.path, - &library.path, - library_options.is_collection_based(), - ); - - let job_id = self.worker_ctx.job_id.clone(); - persist_job_start(&core_ctx, job_id.clone(), tasks).await?; - - // Sleep for a little to let the UI breathe. - tokio::time::sleep(Duration::from_millis(500)).await; - - let counter = Arc::new(AtomicU64::new(0)); - let progress_ctx = self.worker_ctx.clone(); - - let counter_ref = counter.clone(); - - self.scan_series(series, library.path, library_options, move |msg| { - let previous = counter_ref.fetch_add(1, Ordering::SeqCst); - progress_ctx.emit_progress(JobUpdate::tick( - job_id.clone(), - previous + 1, - tasks, - Some(msg), - )); - }) - .await; - - // self.finish(library_options).await; - - tokio::time::sleep(Duration::from_millis(500)).await; - - Ok(counter.load(Ordering::SeqCst)) - } - - pub async fn scan_series( - &self, - series: Series, - library_path: String, - library_options: LibraryOptions, - mut on_progress: impl FnMut(String) + Send + Sync + 'static, - ) { - let ctx = self.worker_ctx.core_ctx.clone(); - - tracing::debug!(?series, "Scanning series"); - let SeriesSetup { - mut visited_media, - media_by_path, - walkdir, - glob_set, - } = setup_series(&ctx, &series, &library_path, &library_options).await; - - let iter = walkdir - .into_iter() - .filter_map(|e| e.ok()) - .filter(|e| e.path().is_file()); - - for entry in iter { - let path = entry.path(); - let path_str = path.to_str().unwrap_or("").to_string(); - - tracing::trace!(?path, "Scanning file"); - - let glob_match = glob_set.is_match(path); - let should_ignore = glob_match || path.should_ignore(); - if should_ignore { - tracing::trace!(?path, glob_match, "Skipping ignored file"); - on_progress(format!("Skipping {:?}", path)); - continue; - } - - on_progress(format!("Analyzing {:?}", path)); - - if let Some(media) = media_by_path.get(&path_str) { - tracing::trace!(media_path = ?path, "Existing media found"); - - let has_been_modified = if let Some(dt) = media.modified_at.clone() { - file_updated_since_scan(&entry, dt) - .map_err(|err| { - tracing::error!( - error = ?err, - ?path, - "Failed to determine if entry has been modified since last scan" - ) - }) - .unwrap_or(false) - } else { - false - }; - - let is_changed_readiness_state = media.status != FileStatus::Ready; - - if has_been_modified || is_changed_readiness_state { - tracing::debug!( - ?path, - has_been_modified, - is_changed_readiness_state, - "File has been modified since last scan" - ); - - let build_result = MediaBuilder::new( - path, - &series.id, - library_options.clone(), - &ctx.config, - ) - .rebuild(media); - - if let Ok(generated) = build_result { - tracing::warn!( - "Stump currently has minimal support for updating media", - ); - match update_media(&ctx.db, generated).await { - Ok(created_media) => { - ctx.emit_event(CoreEvent::CreateOrUpdateMedia { - id: created_media.id, - series_id: created_media.series_id, - library_id: series.library_id.clone(), - }); - }, - Err(e) => { - tracing::error!(error = ?e, "Failed to update media"); - // TODO: persist error - }, - } - } else { - tracing::error!( - error = ?build_result.err(), - ?path, - "Failed to build media for update!", - ); - } - } - - *visited_media.entry(path_str).or_insert(true) = true; - } else { - tracing::trace!(series_id = ?series.id, new_media_path = ?path, "New media found in series"); - let build_result = MediaBuilder::new( - path, - &series.id, - library_options.clone(), - &ctx.config, - ) - .build(); - if let Ok(generated) = build_result { - match create_media(&ctx.db, generated).await { - Ok(created_media) => { - visited_media.insert(path_str, true); - ctx.emit_event(CoreEvent::CreateOrUpdateMedia { - id: created_media.id, - series_id: created_media.series_id, - library_id: series.library_id.clone(), - }); - }, - Err(e) => { - tracing::error!(error = ?e, ?path, "Failed to create media"); - // TODO: persist error - }, - } - } else { - tracing::error!(error = ?build_result.err(), ?path, "Failed to build media"); - } - } - } - - let missing_media = visited_media - .into_iter() - .filter(|(_, visited)| !visited) - .map(|(path, _)| path) - .collect::>(); - - if !missing_media.is_empty() { - tracing::warn!( - missing_paths = ?missing_media, - "Some paths were not visited during series scan" - ); - let result = mark_media_paths_missing(&ctx.db, missing_media).await; - - if let Err(err) = result { - tracing::error!(error = ?err, "Error trying to mark missing media"); - } else { - tracing::debug!( - affected_rows = result.unwrap_or_default(), - "Marked missing media" - ); - } - } - - tracing::trace!(?series, "Finished scanning series"); - ctx.emit_event(CoreEvent::SeriesScanComplete { id: series.id }); - } -} - -pub struct SeriesSetup { - pub visited_media: HashMap, - pub media_by_path: HashMap, - pub walkdir: WalkDir, - pub glob_set: GlobSet, -} - -pub(crate) async fn setup_series( - ctx: &Ctx, - series: &Series, - library_path: &str, - library_options: &LibraryOptions, -) -> SeriesSetup { - let series_ignore_file = Path::new(series.path.as_str()).join(".stumpignore"); - let library_ignore_file = Path::new(library_path).join(".stumpignore"); - - let media = ctx - .db - .media() - .find_many(vec![media::series_id::equals(Some(series.id.clone()))]) - .exec() - .await - .unwrap_or_else(|e| { - tracing::error!(error = ?e, "Error occurred trying to fetch media for series"); - vec![] - }); - - let mut visited_media = HashMap::with_capacity(media.len()); - let mut media_by_path = HashMap::with_capacity(media.len()); - for m in media { - visited_media.insert(m.path.clone(), false); - media_by_path.insert(m.path.clone(), Media::from(m)); - } - - let mut walkdir = WalkDir::new(&series.path); - let is_collection_based = library_options.is_collection_based(); - - if !is_collection_based || series.path == library_path { - walkdir = walkdir.max_depth(1); - } - - let mut builder = GlobSetBuilder::new(); - if series_ignore_file.exists() || library_ignore_file.exists() { - populate_glob_builder( - &mut builder, - vec![series_ignore_file, library_ignore_file] - .into_iter() - // We have to remove duplicates here otherwise the glob will double some patterns. - // An example would be when the library has media in root. Not the end of the world. - .unique() - .filter(|p| p.exists()) - .collect::>() - .as_slice(), - ); - } - - // TODO: make this an error to enforce correct glob patterns in an ignore file. - // This way, no scan will ever add things a user wants to ignore. - let glob_set = builder.build().unwrap_or_default(); - - SeriesSetup { - visited_media, - media_by_path, - walkdir, - glob_set, - } -} diff --git a/core/src/filesystem/scanner/utils.rs b/core/src/filesystem/scanner/utils.rs index 692e5d552..0ef6d12a6 100644 --- a/core/src/filesystem/scanner/utils.rs +++ b/core/src/filesystem/scanner/utils.rs @@ -1,20 +1,29 @@ use std::{ + collections::VecDeque, fs::File, io::{BufRead, BufReader}, path::PathBuf, }; -use globset::{Glob, GlobSetBuilder}; +use globset::{Glob, GlobSet, GlobSetBuilder}; +use itertools::Itertools; use prisma_client_rust::{ chrono::{DateTime, Utc}, QueryError, }; +use rayon::iter::{IntoParallelRefIterator, ParallelIterator}; use walkdir::DirEntry; use crate::{ - db::entity::{FileStatus, Library, Media}, + db::{ + entity::{LibraryOptions, Media}, + FileStatus, + }, error::{CoreError, CoreResult}, - prisma::{library, media, media_metadata, series, PrismaClient}, + filesystem::MediaBuilder, + job::{error::JobError, JobExecuteLog, JobProgress, WorkerCtx, WorkerSendExt}, + prisma::{media, media_metadata, series, PrismaClient}, + CoreEvent, }; pub(crate) fn file_updated_since_scan( @@ -50,84 +59,48 @@ pub(crate) fn file_updated_since_scan( } } -pub(crate) fn populate_glob_builder(builder: &mut GlobSetBuilder, paths: &[PathBuf]) { - for path in paths { - let open_result = File::open(path); +// TODO: should probably return result as to not scan files which the user would like to ignore +pub(crate) fn generate_rule_set(paths: &[PathBuf]) -> GlobSet { + let mut builder = GlobSetBuilder::new(); + + let adjusted_paths = paths + .iter() + // We have to remove duplicates here otherwise the glob will double some patterns. + // An example would be when the library has media in root. Not the end of the world. + .unique() + .filter(|p| p.exists()) + .collect::>(); + + tracing::trace!(?adjusted_paths, "Adjusted paths"); + + for path in adjusted_paths { + let ignore_file = path.join(".stumpignore"); + let open_result = File::open(&ignore_file); if let Ok(file) = open_result { // read the lines of the file, and add each line as a glob pattern in the builder for line in BufReader::new(file).lines() { if let Err(e) = line { tracing::error!( + ?ignore_file, error = ?e, "Error occurred trying to read line from glob file", ); continue; } + // TODO: remove unwraps! builder.add(Glob::new(&line.unwrap()).unwrap()); } } else { - tracing::error!( + tracing::warn!( error = ?open_result.err(), - ?path, - "Failed to open file", + ?ignore_file, + "Failed to open file (does it exist?)", ); } } -} - -pub async fn mark_library_missing( - db: &PrismaClient, - library: &library::Data, -) -> CoreResult { - let series_ids = library - .series() - .unwrap_or(&vec![]) - .iter() - .map(|s| s.id.clone()) - .collect(); - let (updated_library, affected_series, affected_media) = db - ._transaction() - .run(|client| async move { - let updated_library = client - .library() - .update( - library::id::equals(library.id.clone()), - vec![library::status::set(FileStatus::Missing.to_string())], - ) - .exec() - .await?; - - let affected_series = client - .series() - .update_many( - vec![series::library_id::equals(Some(library.id.clone()))], - vec![series::status::set(FileStatus::Missing.to_string())], - ) - .exec() - .await?; - - client - .media() - .update_many( - vec![media::series_id::in_vec(series_ids)], - vec![media::status::set(FileStatus::Missing.to_string())], - ) - .exec() - .await - .map(|affected_media| (updated_library, affected_series, affected_media)) - }) - .await?; - - tracing::trace!( - library_id = library.id.as_str(), - affected_series = affected_series, - affected_media = affected_media, - "Marked library as missing" - ); - - Ok(Library::from(updated_library)) + builder.build().unwrap_or_default() } pub(crate) async fn create_media( @@ -228,18 +201,309 @@ pub(crate) async fn update_media(db: &PrismaClient, media: Media) -> CoreResult< Ok(result?) } -pub(crate) async fn mark_media_paths_missing( +#[derive(Default)] +pub(crate) struct MissingSeriesOutput { + pub updated_series: u64, + pub updated_media: u64, + pub logs: Vec, +} + +pub(crate) async fn handle_missing_series( client: &PrismaClient, - paths: Vec, -) -> CoreResult { - let rows_affected = client + path: &str, +) -> Result { + let mut output = MissingSeriesOutput::default(); + + let affected_rows = client + .series() + .update_many( + vec![series::path::equals(path.to_string())], + vec![series::status::set(FileStatus::Missing.to_string())], + ) + .exec() + .await + .map_or_else( + |error| { + tracing::error!(error = ?error, "Failed to update missing series"); + output.logs.push(JobExecuteLog::error(format!( + "Failed to update missing series: {:?}", + error.to_string() + ))); + + 0 + }, + |count| { + output.updated_series += count as u64; + count + }, + ); + + if affected_rows > 1 { + tracing::warn!( + affected_rows, + "Updated more than one series with path: {}", + path + ); + } + + let _affected_media = client + .media() + .update_many( + vec![media::series::is(vec![series::path::equals( + path.to_string(), + )])], + vec![media::status::set(FileStatus::Missing.to_string())], + ) + .exec() + .await + .map_or_else( + |error| { + tracing::error!(error = ?error, "Failed to update missing media"); + output.logs.push(JobExecuteLog::error(format!( + "Failed to update missing media: {:?}", + error.to_string() + ))); + 0 + }, + |count| { + output.updated_media += count as u64; + count + }, + ); + + Ok(output) +} + +#[derive(Default)] +pub(crate) struct MediaOperationOutput { + pub created_media: u64, + pub updated_media: u64, + pub logs: Vec, +} + +pub(crate) async fn handle_missing_media( + ctx: &WorkerCtx, + series_id: &str, + paths: Vec, +) -> MediaOperationOutput { + let mut output = MediaOperationOutput::default(); + + if paths.is_empty() { + tracing::debug!("No missing media to handle"); + return output; + } + + let _affected_rows = ctx + .db .media() .update_many( - vec![media::path::in_vec(paths)], + vec![ + media::series::is(vec![series::id::equals(series_id.to_string())]), + media::path::in_vec( + paths + .iter() + .map(|e| e.to_string_lossy().to_string()) + .collect::>(), + ), + ], vec![media::status::set(FileStatus::Missing.to_string())], ) .exec() - .await?; + .await + .map_or_else( + |error| { + tracing::error!(error = ?error, "Failed to update missing media"); + output.logs.push(JobExecuteLog::error(format!( + "Failed to update missing media: {:?}", + error.to_string() + ))); + 0 + }, + |count| { + output.updated_media += count as u64; + count + }, + ); + + output +} + +pub(crate) struct MediaBuildOperationCtx { + pub series_id: String, + pub library_options: LibraryOptions, + pub chunk_size: usize, +} + +pub(crate) async fn handle_create_media( + build_ctx: MediaBuildOperationCtx, + worker_ctx: &WorkerCtx, + paths: Vec, +) -> Result { + if paths.is_empty() { + tracing::debug!("No media to create"); + return Ok(MediaOperationOutput::default()); + } + + let mut output = MediaOperationOutput::default(); + let MediaBuildOperationCtx { + series_id, + library_options, + chunk_size, + } = build_ctx; + + let path_chunks = paths.chunks(chunk_size); + for (idx, chunk) in path_chunks.enumerate() { + tracing::trace!(chunk_idx = idx, chunk_len = chunk.len(), "Processing chunk"); + let mut built_media = chunk + .par_iter() + .map(|path_buf| { + ( + path_buf.to_owned(), + MediaBuilder::new( + path_buf, + &series_id, + library_options.clone(), + &worker_ctx.config, + ) + .build(), + ) + }) + .collect::)>>(); + + while let Some((media_path, build_result)) = built_media.pop_front() { + let Ok(generated) = build_result else { + tracing::error!(?media_path, "Failed to build media"); + output.logs.push( + JobExecuteLog::error(format!( + "Failed to build media: {:?}", + build_result.unwrap_err().to_string() + )) + .with_ctx(media_path.to_string_lossy().to_string()), + ); + continue; + }; + + match create_media(&worker_ctx.db, generated).await { + Ok(created_media) => { + output.created_media += 1; + worker_ctx.send_batch(vec![ + JobProgress::msg( + format!("Inserted {}", media_path.display()).as_str(), + ) + .into_send(), + CoreEvent::CreatedMedia { + id: created_media.id, + series_id: series_id.clone(), + } + .into_send(), + ]); + }, + Err(e) => { + tracing::error!(error = ?e, ?media_path, "Failed to create media"); + output.logs.push( + JobExecuteLog::error(format!( + "Failed to create media: {:?}", + e.to_string() + )) + .with_ctx(media_path.to_string_lossy().to_string()), + ); + }, + } + } + } + + Ok(output) +} + +pub(crate) async fn handle_visit_media( + build_ctx: MediaBuildOperationCtx, + worker_ctx: &WorkerCtx, + paths: Vec, +) -> Result { + if paths.is_empty() { + tracing::debug!("No media to visit"); + return Ok(MediaOperationOutput::default()); + } + + let mut output = MediaOperationOutput::default(); + let MediaBuildOperationCtx { + series_id, + library_options, + chunk_size, + } = build_ctx; + let client = &worker_ctx.db; + + let media = client + .media() + .find_many(vec![ + media::path::in_vec( + paths + .iter() + .map(|e| e.to_string_lossy().to_string()) + .collect::>(), + ), + media::series_id::equals(Some(series_id.clone())), + ]) + .exec() + .await? + .into_iter() + .map(Media::from) + .collect::>(); + + if media.len() != paths.len() { + output.logs.push(JobExecuteLog::warn( + "Not all media paths were found in the database", + )); + } + + let chunks = media.chunks(chunk_size); + + for (idx, chunk) in chunks.enumerate() { + tracing::trace!(chunk_idx = idx, chunk_len = chunk.len(), "Processing chunk"); + let mut built_media = chunk + .par_iter() + .map(|m| { + MediaBuilder::new( + PathBuf::from(m.path.as_str()).as_path(), + &series_id, + library_options.clone(), + &worker_ctx.config, + ) + .rebuild(m) + }) + .collect::>>(); + + while let Some(build_result) = built_media.pop_front() { + match build_result { + Ok(generated) => { + tracing::warn!( + "Stump currently has minimal support for updating media", + ); + match update_media(client, generated).await { + Ok(updated_media) => { + tracing::trace!(?updated_media, "Updated media"); + // TODO: emit event + output.updated_media += 1; + }, + Err(e) => { + tracing::error!(error = ?e, "Failed to update media"); + output.logs.push(JobExecuteLog::error(format!( + "Failed to update media: {:?}", + e.to_string() + ))); + }, + } + }, + Err(e) => { + tracing::error!(error = ?e, "Failed to build media"); + output.logs.push(JobExecuteLog::error(format!( + "Failed to build media: {:?}", + e.to_string() + ))); + }, + } + } + } - Ok(rows_affected) + Ok(output) } diff --git a/core/src/filesystem/scanner/walk.rs b/core/src/filesystem/scanner/walk.rs new file mode 100644 index 000000000..c35c3bde1 --- /dev/null +++ b/core/src/filesystem/scanner/walk.rs @@ -0,0 +1,330 @@ +use std::{ + collections::HashMap, + path::{Path, PathBuf}, + sync::Arc, +}; + +use globset::GlobSet; +use itertools::{Either, Itertools}; +use rayon::iter::{IntoParallelIterator, ParallelBridge, ParallelIterator}; +use walkdir::{DirEntry, WalkDir}; + +use crate::{ + db::entity::Media, + filesystem::{scanner::utils::file_updated_since_scan, PathUtils}, + prisma::{media, series, PrismaClient}, + CoreResult, +}; + +pub struct WalkerCtx { + pub db: Arc, + pub ignore_rules: GlobSet, + // Will be 1 if the library is collection based, None + pub max_depth: Option, +} + +#[derive(Default)] +pub struct WalkedLibrary { + pub seen_directories: u64, + pub ignored_directories: u64, + pub series_to_create: Vec, + pub series_to_visit: Vec, + pub missing_series: Vec, + pub library_is_missing: bool, +} + +impl WalkedLibrary { + fn missing() -> Self { + Self { + library_is_missing: true, + ..Default::default() + } + } +} + +pub async fn walk_library(path: &str, ctx: WalkerCtx) -> CoreResult { + let library_is_missing = !PathBuf::from(path).exists(); + if library_is_missing { + tracing::error!("Failed to walk: {} is missing or inaccessible", path); + return Ok(WalkedLibrary::missing()); + } + + let WalkerCtx { + db, + ignore_rules, + max_depth, + } = ctx; + + let mut walkdir = WalkDir::new(path); + if let Some(num) = max_depth { + walkdir = walkdir.max_depth(num); + } + + let walk_start = std::time::Instant::now(); + tracing::debug!("Walking library at {}", path); + + let is_collection_based = max_depth.is_some_and(|d| d == 1); + let (valid_entries, ignored_entries) = walkdir + // Set min_depth to 0 so we include the library path itself, + // which allows us to add it as a series when there are media items in it + .min_depth(0) + .into_iter() + .filter_entry(|e| e.path().is_dir()) + .filter_map(|e| e.ok()) + .par_bridge() + .partition_map::, Vec, _, _, _>(|entry| { + let entry_path = entry.path(); + let entry_path_str = entry_path.as_os_str().to_string_lossy().to_string(); + let check_deep = is_collection_based && entry_path_str != path; + + let should_ignore = ignore_rules.is_match(entry.path()); + // If we're doing a top level scan, we need to check that the path + // has media deeply nested. Exception for when the path is the library path, + // then we only need to check if it has media in it directly + // + // If we're doing a bottom up scan, we need to check that the path has + // media directly in it. + let is_valid = !should_ignore + && (check_deep && entry_path.dir_has_media_deep() + || (!check_deep && entry_path.dir_has_media())); + + if is_valid { + Either::Left(entry) + } else { + Either::Right(entry) + } + }); + + let ignored_directories = ignored_entries.len() as u64; + let seen_directories = valid_entries.len() as u64 + ignored_directories; + + tracing::debug!( + seen_directories, + ignored_entries = ignored_entries.len(), + "Walk finished in {}ms", + walk_start.elapsed().as_millis() + ); + + let computation_start = std::time::Instant::now(); + let (series_to_create, missing_series, series_to_visit) = { + let existing_records = db + .series() + .find_many(vec![series::path::starts_with(path.to_string())]) + .exec() + .await?; + if existing_records.is_empty() { + tracing::debug!( + "No existing series found in the database, all series are new" + ); + let series_to_create = valid_entries + .into_iter() + .map(|e| e.path().to_owned()) + .collect::>(); + (series_to_create, vec![], vec![]) + } else { + let existing_series_map = existing_records + .into_iter() + .map(|s| (s.path.clone(), s.to_owned())) + .collect::>(); + + let missing_series = existing_series_map + .iter() + .filter(|(path, _)| !PathBuf::from(path).exists()) + .map(|(path, _)| PathBuf::from(path)) + .collect::>(); + + let (series_to_create, series_to_visit) = valid_entries + .iter() + .filter(|e| !missing_series.contains(&e.path().to_path_buf())) + .map(|e| e.path().to_owned()) + .partition_map::, Vec, _, _, _>(|path| { + let already_exists = + existing_series_map.contains_key(path.to_string_lossy().as_ref()); + + if already_exists { + Either::Right(path) + } else { + Either::Left(path) + } + }); + + (series_to_create, missing_series, series_to_visit) + } + }; + + let to_create = series_to_create.len(); + tracing::trace!(?series_to_create, "Found {to_create} series to create"); + + let is_missing = missing_series.len(); + tracing::trace!( + ?missing_series, + "Found {is_missing} series to mark as missing" + ); + + tracing::debug!( + "Finished computation steps in {}ms", + computation_start.elapsed().as_millis() + ); + + Ok(WalkedLibrary { + seen_directories, + ignored_directories, + series_to_create, + series_to_visit, + missing_series, + library_is_missing, + }) +} + +#[derive(Default)] +pub struct WalkedSeries { + pub seen_files: u64, + pub ignored_files: u64, + pub media_to_create: Vec, + pub media_to_visit: Vec, + pub missing_media: Vec, + pub series_is_missing: bool, +} + +impl WalkedSeries { + fn missing() -> Self { + Self { + series_is_missing: true, + ..Default::default() + } + } +} + +pub async fn walk_series(path: &Path, ctx: WalkerCtx) -> CoreResult { + if !path.exists() { + tracing::error!( + "Failed to walk: {} is missing or inaccessible", + path.display() + ); + return Ok(WalkedSeries::missing()); + } + + let WalkerCtx { + db, ignore_rules, .. + } = ctx; + + tracing::debug!("Walking series at {}", path.display()); + + let walk_start = std::time::Instant::now(); + let walker = WalkDir::new(path); + let (valid_entries, ignored_entries) = walker + .into_iter() + // .filter_entry(|e| e.path().is_file()) // Note: This doesn't seem to work? + .filter_map(|e| e.ok()) + .filter_map(|e| e.path().is_file().then_some(e)) + .par_bridge() + .partition_map::, Vec, _, _, _>(|entry| { + let entry_path = entry.path(); + let matches_ignore_rule = ignore_rules.is_match(entry.path()); + + if matches_ignore_rule || entry_path.should_ignore() { + Either::Right(entry) + } else { + Either::Left(entry) + } + }); + + let ignored_files = ignored_entries.len() as u64; + let seen_files = valid_entries.len() as u64 + ignored_files; + tracing::debug!( + seen_files, + ignored_entries = ignored_entries.len(), + "Walk finished in {}ms", + walk_start.elapsed().as_millis() + ); + + tracing::trace!("Fetching existing media..."); + let fetch_start = std::time::Instant::now(); + let existing_media = db + .media() + .find_many(vec![media::series::is(vec![series::path::equals( + path.to_string_lossy().to_string(), + )])]) + .exec() + .await?; + tracing::trace!( + "Fetched {} existing media in {}ms", + existing_media.len(), + fetch_start.elapsed().as_millis() + ); + + let computation_start = std::time::Instant::now(); + + let existing_media_map = existing_media + .into_iter() + .map(|m| (m.path.clone(), Media::from(m))) + .collect::>(); + + let (media_to_create, media_to_visit) = + valid_entries + .iter() + .fold((vec![], vec![]), |mut acc, entry| { + let entry_path = entry.path(); + let entry_path_str = entry_path.to_string_lossy().to_string(); + + if let Some(media) = existing_media_map.get(entry_path_str.as_str()) { + let has_been_modified = if let Some(dt) = media.modified_at.clone() { + file_updated_since_scan(entry, dt) + .map_err(|err| { + tracing::error!( + error = ?err, + path = ?entry_path, + "Failed to determine if entry has been modified since last scan" + ) + }) + .unwrap_or(false) + } else { + false + }; + + // If the media has been modified, we need to update it + if has_been_modified { + acc.1.push(entry_path.to_path_buf()); + } + + // Else we don't need to do anything + } else { + // If the media doesn't exist, we need to create it + acc.0.push(entry_path.to_path_buf()); + } + + acc + }); + + let missing_media = existing_media_map + .into_par_iter() + .filter(|(path, _)| !PathBuf::from(path).exists()) + .map(|(path, _)| PathBuf::from(path)) + .collect::>(); + + let to_create = media_to_create.len(); + tracing::trace!(?media_to_create, "Found {to_create} media to create"); + + let to_visit = media_to_visit.len(); + tracing::trace!(?media_to_visit, "Found {to_visit} media to visit"); + + let is_missing = missing_media.len(); + tracing::trace!( + ?missing_media, + "Found {is_missing} media to mark as missing" + ); + + tracing::trace!( + "Finished computation steps in {}ms", + computation_start.elapsed().as_millis() + ); + + Ok(WalkedSeries { + seen_files, + ignored_files, + media_to_create, + media_to_visit, + missing_media, + series_is_missing: false, + }) +} diff --git a/core/src/job/controller.rs b/core/src/job/controller.rs new file mode 100644 index 000000000..1eca65f2e --- /dev/null +++ b/core/src/job/controller.rs @@ -0,0 +1,139 @@ +use std::sync::Arc; + +use tokio::sync::{ + broadcast, + mpsc::{self, error::SendError}, + oneshot, +}; + +use super::{Executor, JobManager, JobManagerResult, WorkerSend, WorkerSendExt}; +use crate::{config::StumpConfig, event::CoreEvent, prisma::PrismaClient}; + +/// Input for commands that require an acknowledgement when they are completed +/// (e.g. cancel, pause, resume) +pub struct AcknowledgeableCommand { + pub id: String, + pub ack: oneshot::Sender>, +} + +/// Events that can be sent to the job controller. If any of these events require a response, +/// e.g. to provide an HTTP status code, a oneshot channel should be provided. +pub enum JobControllerCommand { + /// Add a job to the queue to be run + EnqueueJob(Box), + /// A job has been completed and should be removed from the queue + CompleteJob(String), + /// Cancel a job by its ID + CancelJob(AcknowledgeableCommand), + /// Pause a job by its ID + PauseJob(String), // TODO: AcknowledgeableCommand + /// Resume a job by its ID + ResumeJob(String), // TODO: AcknowledgeableCommand + /// Shutdown the job controller. This will cancel all running jobs and clear the queue + Shutdown(oneshot::Sender<()>), +} + +impl WorkerSendExt for JobControllerCommand { + fn into_send(self) -> WorkerSend { + WorkerSend::ManagerCommand(self) + } +} + +/// A struct that controls the job manager and its workers. This struct is responsible for +/// managing incoming commands and sending them to the job manager. +pub struct JobController { + manager: Arc, + /// A channel to send job manager events + commands_tx: mpsc::UnboundedSender, +} + +impl JobController { + /// Creates a new job controller instance and starts the watcher loop in a new thread + pub fn new( + client: Arc, + config: Arc, + core_event_tx: broadcast::Sender, + ) -> Arc { + let (commands_tx, commands_rx) = mpsc::unbounded_channel(); + let this = Arc::new(Self { + commands_tx: commands_tx.clone(), + manager: JobManager::new(client, config, commands_tx, core_event_tx).arced(), + }); + + let this_cpy = this.clone(); + this_cpy.watch(commands_rx); + + this + } + + /// Starts the watcher loop for the [JobController]. This function will listen for incoming + /// commands and execute them. + pub fn watch( + self: Arc, + mut commands_rx: mpsc::UnboundedReceiver, + ) { + tokio::spawn(async move { + while let Some(event) = commands_rx.recv().await { + match event { + JobControllerCommand::EnqueueJob(job) => { + tracing::trace!("Received enqueue job event"); + self.manager.clone().enqueue(job).await.map_or_else( + |error| tracing::error!(?error, "Failed to enqueue job!"), + |_| tracing::info!("Successfully enqueued job"), + ); + }, + JobControllerCommand::CompleteJob(id) => { + self.manager.clone().complete(id).await; + }, + JobControllerCommand::CancelJob(AcknowledgeableCommand { + id, + ack, + }) => { + let result = self.manager.clone().cancel(id).await; + ack.send(result).map_or_else( + |error| { + tracing::error!( + ?error, + "Error while sending cancel confirmation" + ); + }, + |_| tracing::trace!("Cancel confirmation sent"), + ); + }, + JobControllerCommand::PauseJob(id) => { + self.manager.clone().pause(id).await.map_or_else( + |error| tracing::error!(?error, "Failed to pause job!"), + |_| tracing::info!("Successfully issued pause request"), + ); + }, + JobControllerCommand::ResumeJob(id) => { + self.manager.clone().resume(id).await.map_or_else( + |error| tracing::error!(?error, "Failed to resume job!"), + |_| tracing::info!("Successfully issued resume request"), + ); + }, + JobControllerCommand::Shutdown(return_sender) => { + self.manager.clone().shutdown().await; + return_sender.send(()).map_or_else( + |error| { + tracing::error!( + ?error, + "Error while sending shutdown confirmation" + ); + }, + |_| tracing::trace!("Shutdown confirmation sent"), + ) + }, + } + } + }); + } + + /// Pushes a command to the main watcher loop + pub fn push_command( + &self, + event: JobControllerCommand, + ) -> Result<(), SendError> { + self.commands_tx.send(event) + } +} diff --git a/core/src/job/error.rs b/core/src/job/error.rs new file mode 100644 index 000000000..8bb24f6c4 --- /dev/null +++ b/core/src/job/error.rs @@ -0,0 +1,59 @@ +use tokio::sync::oneshot; + +use crate::CoreError; + +#[derive(Debug, thiserror::Error)] +pub enum JobError { + #[error("Job failed while initializing: {0}")] + InitFailed(String), + #[error("Save state failed to be deserialized: {0}")] + StateLoadFailed(String), + #[error("Save state failed to be serialized: {0}")] + StateSaveFailed(String), + #[error("Job was cancelled")] + Cancelled(oneshot::Sender<()>), + #[error("A task experienced a critical error while executing: {0}")] + TaskFailed(String), + #[error("A query error occurred: {0}")] + QueryError(#[from] prisma_client_rust::QueryError), + #[error("An unknown error occurred: {0}")] + Unknown(String), +} + +impl From for JobError { + fn from(err: CoreError) -> Self { + match err { + CoreError::QueryError(err) => JobError::QueryError(err), + _ => JobError::Unknown(err.to_string()), + } + } +} + +#[derive(Debug, thiserror::Error)] +pub enum JobManagerError { + #[error("Worker not found {0}")] + WorkerNotFound(String), + #[error("Worker is in invalid state {0}")] + WorkerInvalidState(String), + #[error("Worker spawn failed")] + WorkerSpawnFailed, + #[error("Job with ID not found: {0}")] + JobNotFound(String), + #[error("Job missing ID")] + JobMissingId, + #[error("Job failed to be persisted: {0}")] + JobPersistFailed(String), + #[error("A query error occurred {0}")] + QueryError(#[from] prisma_client_rust::QueryError), + #[error("An unknown error occurred {0}")] + Unknown(String), +} + +impl From for JobManagerError { + fn from(job_error: JobError) -> Self { + match job_error { + JobError::QueryError(e) => JobManagerError::QueryError(e), + _ => JobManagerError::Unknown(job_error.to_string()), + } + } +} diff --git a/core/src/job/executor.rs b/core/src/job/executor.rs deleted file mode 100644 index d1b10f464..000000000 --- a/core/src/job/executor.rs +++ /dev/null @@ -1,180 +0,0 @@ -use super::{ - utils::persist_job_end, JobDetail, JobError, JobStatus, JobTrait, WorkerCtx, -}; -use uuid::Uuid; - -#[async_trait::async_trait] -pub trait JobExecutorTrait: Send + Sync { - fn name(&self) -> &'static str; - fn description(&self) -> Option>; - fn detail(&self) -> &Option; - fn detail_mut(&mut self) -> &mut Option; - async fn execute(&mut self, ctx: WorkerCtx) -> Result<(), JobError>; - async fn finish( - &self, - result: Result<(), JobError>, - ctx: WorkerCtx, - ) -> Result<(), JobError>; -} - -pub struct Job { - detail: Option, - // state: JobState, - inner_job: InnerJob, -} - -impl Job { - pub fn new(inner_job: InnerJob) -> Box { - Box::new(Self { - detail: Some(JobDetail::new( - Uuid::new_v4().to_string(), - inner_job.name().to_string(), - inner_job.description().map(|s| s.to_string()), - )), - // state: JobState::::default(), - inner_job, - }) - } -} - -#[async_trait::async_trait] -impl JobExecutorTrait for Job { - fn detail(&self) -> &Option { - &self.detail - } - - fn detail_mut(&mut self) -> &mut Option { - &mut self.detail - } - - fn name(&self) -> &'static str { - self.inner_job.name() - } - - fn description(&self) -> Option> { - self.inner_job.description() - } - - async fn execute(&mut self, ctx: WorkerCtx) -> Result<(), JobError> { - let mut shutdown_rx = ctx.shutdown_rx(); - let shutdown_rx_fut = shutdown_rx.recv(); - tokio::pin!(shutdown_rx_fut); - - let start = std::time::Instant::now(); - - let mut running = true; - while running { - tokio::select! { - job_result = self.inner_job.run(ctx.clone(), /*&mut self.state*/) => { - running = false; - - let duration = start.elapsed().as_millis() as u64; - let _persist_result = match job_result { - Ok(completed_count) => { - persist_job_end( - &ctx.core_ctx, - ctx.job_id.clone(), - JobStatus::Completed, - duration, - Some(completed_count), - ) - .await - }, - Err(err) => { - tracing::error!(?err, "Job failed!"); - persist_job_end( - &ctx.core_ctx, - ctx.job_id.clone(), - JobStatus::Failed, - duration, - None, - ) - .await - }, - }; - } - // TODO: I think this might be wrong for pausing, in that even if the signal is - // meant to pause, it will kill the future above? Unless I pin it maybe? - shutdown_result = &mut shutdown_rx_fut => { - tracing::trace!("Received shutdown signal!"); - running = false; - let duration = start.elapsed().as_millis() as u64; - if let Ok(signal) = shutdown_result { - tracing::debug!(?signal, "Signal is OK"); - // TODO: this is where we would save state once jobs are stateful some day - // match signal_type { - // JobManagerShutdownSignal::Worker(id) if &id == ctx.job_id() => { - // let state = serde_json::to_vec(&self.state).expect("Failed to serialize job state"); - // return Err(JobError::Paused(state)); - // } - // JobManagerShutdownSignal::All => { - // return Err(JobError::Cancelled); - // } - // _ => {} - // } - // unimplemented!() - let persist_result = persist_job_end( - &ctx.core_ctx, - ctx.job_id.clone(), - JobStatus::Cancelled, - duration, - None, - ) - .await; - - if let Err(err) = persist_result { - tracing::error!(?err, "Failed to persist job end"); - } - - return Err(JobError::Cancelled); - } else if let Err(err) = shutdown_result { - tracing::error!(?err, "Failed to receive shutdown signal"); - - let persist_result = persist_job_end( - &ctx.core_ctx, - ctx.job_id.clone(), - JobStatus::Failed, - duration, - None, - ) - .await; - - if let Err(err) = persist_result { - tracing::error!(?err, "Failed to persist job end"); - } - - return Err(JobError::Unknown(err.to_string())); - } - } - } - } - - Ok(()) - } - - // TODO: Once Stump supports pausing and resuming jobs, this will need to be properly implemented. - async fn finish( - &self, - job_result: Result<(), JobError>, - ctx: WorkerCtx, - ) -> Result<(), JobError> { - tracing::trace!(?job_result, "Job finished!"); - // let resolved_state = if let Err(e) = result { - // match e { - // JobError::Paused(state) => state, - // _ => serde_json::to_vec(&self.state) - // .expect("Failed to serialize job state"), - // } - // } else { - // serde_json::to_vec(&self.state).expect("Failed to serialize job state") - // }; - - // let _ = - // persist_job_state(ctx.core_ctx.clone(), resolved_state, ctx.job_id.clone()) - // .await; - - ctx.emit_job_complete(); - - Ok(()) - } -} diff --git a/core/src/job/job_manager.rs b/core/src/job/job_manager.rs deleted file mode 100644 index 920cccfd5..000000000 --- a/core/src/job/job_manager.rs +++ /dev/null @@ -1,327 +0,0 @@ -use prisma_client_rust::Direction; -use std::{ - collections::{HashMap, VecDeque}, - sync::Arc, -}; -use tokio::sync::{broadcast, Mutex, RwLock}; -use tracing::error; - -use crate::{ - job::{utils::persist_new_job, WorkerCtx}, - prisma::job, - CoreError, Ctx, -}; - -use super::{ - utils::update_job_status, worker::Worker, JobDetail, JobExecutorTrait, JobStatus, -}; - -#[derive(Debug, Clone)] -pub enum JobManagerShutdownSignal { - All, - Worker(String), -} - -#[derive(Debug, thiserror::Error)] -pub enum JobManagerError { - #[error("An communication error occurred {0}")] - IPCError(#[from] broadcast::error::SendError), - #[error("Worker not found {0}")] - WorkerNotFound(String), - #[error("Worker is in invalid state {0}")] - WorkerInvalidState(String), - #[error("Worker spawn failed")] - WorkerSpawnFailed, - #[error("Job not found {0}")] - JobNotFound(String), - #[error("Job missing ID")] - JobMissingId, - #[error("A query error occurred {0}")] - QueryError(#[from] prisma_client_rust::QueryError), - #[error("An unknown error occurred {0}")] - Unknown(String), -} - -impl From for JobManagerError { - fn from(err: CoreError) -> Self { - JobManagerError::Unknown(err.to_string()) - } -} - -pub type JobManagerResult = Result; - -pub struct JobManager { - /// Queue of jobs waiting to be run in a worker thread. - job_queue: RwLock>>, - /// Worker threads with a running job. - workers: RwLock>>>, - /// A channel to send shutdown signals to all or some workers. - shutdown_tx: Arc>, - /// A pointer to the core context. - core_ctx: Arc, -} - -impl JobManager { - pub fn new(core_ctx: Arc) -> Self { - let (shutdown_tx, _) = broadcast::channel(1024); - - Self { - job_queue: RwLock::new(VecDeque::new()), - workers: RwLock::new(HashMap::new()), - shutdown_tx: Arc::new(shutdown_tx), - core_ctx, - } - } - - /// Wrap the job manager in an Arc. - pub fn arced(self) -> Arc { - Arc::new(self) - } - - /// Returns a reference to the shutdown signal sender. - pub fn get_shutdown_tx(&self) -> Arc> { - Arc::clone(&self.shutdown_tx) - } - - /// Cancels a job by ID. If the job is not running but in the queue, it will be removed. - pub async fn cancel_job(self: Arc, job_id: String) -> JobManagerResult<()> { - tracing::trace!(job_id, "Attempting to cancel job"); - let mut workers = self.workers.write().await; - if workers.get(&job_id).is_some() { - tracing::trace!(job_id, "Sending shutdown signal to worker"); - self.shutdown_tx - .send(JobManagerShutdownSignal::Worker(job_id.clone())) - .map_or_else( - |error| { - tracing::error!( - ?error, - "Failed to send shutdown signal to worker!" - ); - }, - |_| { - tracing::trace!(job_id, "Shutdown signal sent to worker"); - }, - ); - workers.remove(&job_id); - drop(workers); - return Ok(()); - } - - let mut job_queue = self.job_queue.write().await; - let maybe_index = job_queue.iter().position(|job| { - let job_detail = job - .detail() - .as_ref() - .map(|job_detail| job_detail.id == job_id); - - job_detail.unwrap_or(false) - }); - - if let Some(job_index) = maybe_index { - job_queue.remove(job_index); - return Ok(()); - } - - Err(JobManagerError::WorkerNotFound(job_id)) - } - - /// DONT USE: This won't work as expected until pausing is supported. This will - /// cancel the running job. - pub async fn pause_job(self: Arc, job_id: String) -> JobManagerResult<()> { - let mut workers = self.workers.write().await; - - if workers.get(&job_id).is_some() { - self.shutdown_tx - .send(JobManagerShutdownSignal::Worker(job_id.clone()))?; - workers.remove(&job_id); - drop(workers); - Ok(()) - } else { - Err(JobManagerError::WorkerNotFound(job_id)) - } - } - - /// Enqueues a job to be run in a worker thread. - pub async fn enqueue_job( - self: Arc, - mut job: Box, - ) -> JobManagerResult<()> { - let mut workers = self.workers.write().await; - - if workers.is_empty() { - println!("Starting job: {}", job.name()); - - let job_detail = job - .detail_mut() - .take() - .expect("Job initialized without state!"); - - let job_id = job_detail.id.clone(); - let job_name = job.name().to_string(); - let job_description = job.description().map(|s| s.to_string()); - let _ = persist_new_job( - &self.core_ctx, - job_id.clone(), - job_name, - job_description, - ) - .await?; - - let worker = Worker::new(job, job_detail); - let worker_mtx = Arc::new(Mutex::new(worker)); - let worker_ctx = WorkerCtx { - job_id: job_id.clone(), - shutdown_tx: self.get_shutdown_tx(), - core_ctx: Arc::clone(&self.core_ctx), - }; - - Worker::spawn(worker_ctx, Arc::clone(&self), Arc::clone(&worker_mtx)) - .await - .map_err(|e| { - println!("Error spawning worker: {:?}", e); - JobManagerError::WorkerSpawnFailed - })?; - workers.insert(job_id, worker_mtx); - } else { - println!("Queuing job: {}", job.name()); - self.job_queue.write().await.push_back(job); - } - - drop(workers); - Ok(()) - } - - /// Attempts to remove a worker by job ID. If the worker is not found, it is - /// assumed to be in the pending queue and is removed from there. - pub async fn dequeue_job(self: Arc, job_id: String) -> JobManagerResult<()> { - let remove_result = self.workers.write().await.remove(&job_id); - - if remove_result.is_none() { - if let Some(index) = self.get_queued_job_index(&job_id).await { - return self.dequeue_pending_job(index).await; - } - - return Err(JobManagerError::WorkerNotFound(job_id)); - } - - let next_job = self.job_queue.write().await.pop_front(); - if let Some(job) = next_job { - // TODO: error handling - let _ = self.core_ctx.dispatch_job(job); - } - - Ok(()) - } - - /// Removes a job from the pending queue by index. - async fn dequeue_pending_job(self: Arc, index: usize) -> JobManagerResult<()> { - let result = self.job_queue.write().await.remove(index); - if let Some(job) = result { - let job_id = job - .detail() - .as_ref() - .map(|detail| detail.id.clone()) - .ok_or(JobManagerError::JobMissingId)?; - - update_job_status(&self.core_ctx, job_id, JobStatus::Cancelled).await?; - } - Ok(()) - } - - /// Clears the job queue. Will not cancel any jobs that are currently running. - pub async fn clear_queue(self: Arc) { - let writer = self.job_queue.write().await; - - let queued_job_ids = writer - .iter() - .map(|job| { - let job_id = job - .detail() - .as_ref() - .map(|detail| detail.id.clone()) - .ok_or(JobManagerError::JobMissingId); - - job_id - }) - .filter_map(|job_id| job_id.ok()) - .collect::>(); - let queued_job_count = queued_job_ids.len(); - tracing::debug!(queued_job_count, "Clearing job queue"); - - let client = self.core_ctx.get_db(); - let result = client - .job() - .update_many( - vec![job::id::in_vec(queued_job_ids)], - vec![job::status::set(JobStatus::Cancelled.to_string())], - ) - .exec() - .await; - if let Err(error) = result { - error!(?error, "Failed to clear job queue"); - } - } - - /// Returns the index of a job in the pending queue by ID. - async fn get_queued_job_index(&self, job_id: &str) -> Option { - let job_queue = self.job_queue.read().await; - job_queue.iter().position(|job| { - let job_detail = job - .detail() - .as_ref() - .map(|job_detail| job_detail.id == job_id); - job_detail.unwrap_or(false) - }) - } - - // TODO: remove this... - pub async fn report(self: Arc) -> JobManagerResult> { - let db = self.core_ctx.get_db(); - - let jobs = db - .job() - .find_many(vec![]) - .order_by(job::completed_at::order(Direction::Desc)) - .exec() - .await? - .into_iter() - .map(JobDetail::from) - .collect::>(); - - Ok(jobs) - } - - // TODO: this will eventually go away! - pub async fn init(self: Arc) -> JobManagerResult<()> { - let result = self - .core_ctx - .db - .job() - .update_many( - vec![job::status::equals(JobStatus::Running.to_string())], - vec![ - job::status::set(JobStatus::Cancelled.to_string()), - job::completed_at::set(None), - ], - ) - .exec() - .await?; - - tracing::trace!(canceled_count = ?result, "Canceling running jobs on startup"); - - Ok(()) - } - - /// Shuts down all workers and clears the job queue. - pub async fn shutdown(self: Arc) { - let workers = self.workers.read().await; - if !workers.is_empty() { - tracing::debug!(workers = workers.len(), "Shutting down workers"); - self.shutdown_tx - .send(JobManagerShutdownSignal::All) - .expect("Failed to send shutdown signal to workers"); - } - drop(workers); - self.clear_queue().await; - } -} diff --git a/core/src/job/manager.rs b/core/src/job/manager.rs new file mode 100644 index 000000000..9a47279f4 --- /dev/null +++ b/core/src/job/manager.rs @@ -0,0 +1,212 @@ +use std::{ + collections::{HashMap, VecDeque}, + sync::Arc, + time::Duration, +}; + +use futures::future::join_all; +use tokio::sync::{broadcast, mpsc, RwLock}; + +use super::{ + error::JobManagerError, handle_do_cancel, Executor, JobControllerCommand, Worker, +}; +use crate::{ + config::StumpConfig, + event::CoreEvent, + job::JobStatus, + prisma::{job, PrismaClient}, +}; + +pub type JobManagerResult = Result; + +/// A helper struct that holds the job queue and a list of workers for the job manager +pub struct JobManager { + /// Queue of jobs waiting to be run in a worker thread + queue: RwLock>>, + /// Worker threads with a running job + workers: RwLock>>, + /// A channel to send shutdown signals to the parent job manager + job_controller_tx: mpsc::UnboundedSender, + /// A channel to emit core events + core_event_tx: broadcast::Sender, + /// A pointer to the PrismaClient + client: Arc, + /// A pointer to the core config + config: Arc, +} + +impl JobManager { + /// Creates a new Jobs instance + pub fn new( + client: Arc, + config: Arc, + job_controller_tx: mpsc::UnboundedSender, + core_event_tx: broadcast::Sender, + ) -> Self { + Self { + queue: RwLock::new(VecDeque::new()), + workers: RwLock::new(HashMap::new()), + job_controller_tx, + core_event_tx, + client, + config, + } + } + + /// Take ownership of self and return it wrapped in an Arc + pub fn arced(self) -> Arc { + Arc::new(self) + } + + /// Get a reference to the event broadcaster + fn get_event_tx(&self) -> broadcast::Sender { + self.core_event_tx.clone() + } + + /// Add a job to the queue. If there are no running jobs (i.e. no workers), + /// then a worker will be created and immediately spawned + pub async fn enqueue( + self: Arc, + job: Box, + ) -> JobManagerResult<()> { + let created_job = self + .client + .job() + .create( + job.id().to_string(), + job.name().to_string(), + vec![ + job::description::set(job.description()), + job::status::set(JobStatus::Queued.to_string()), + ], + ) + .exec() + .await + .map_err(|err| JobManagerError::JobPersistFailed(err.to_string()))?; + tracing::trace!(?created_job, "Persisted job to database"); + + let mut workers = self.workers.write().await; + // If there are no running workers, just start the job + if workers.is_empty() { + let job_id = job.id().to_string(); + let worker = Worker::create_and_spawn( + job, + self.clone(), + self.client.clone(), + self.config.clone(), + self.get_event_tx(), + self.job_controller_tx.clone(), + ) + .await?; + workers.insert(job_id, worker); + tracing::trace!("Worker created and added to workers map"); + } else { + // Enqueue the job + self.queue.write().await.push_back(job); + } + + drop(workers); + Ok(()) + } + + /// Attempts to enqueue the next job in the queue (if one exists) + pub async fn auto_enqueue(self: Arc) { + if let Some(next) = self.queue.write().await.pop_front() { + self.job_controller_tx + .send(JobControllerCommand::EnqueueJob(next)) + .map_or_else( + |error| { + tracing::error!(?error, "Failed to send event to job manager") + }, + |_| tracing::trace!("Sent event to job manager to enqueue next job"), + ); + } else { + tracing::trace!("No jobs in queue to auto enqueue") + } + } + + /// Remove a worker by its associated job ID. This should only be called when a job + /// is complete, regardless of its finalized status. If the job is already queued, + /// nothing will happen. + /// + /// Will attempt to dispatch the next job in the queue if one exists + pub async fn complete(self: Arc, job_id: String) { + self.workers.write().await.remove(&job_id).map_or_else( + || { + tracing::error!( + ?job_id, + "Failed to remove job from workers map! Did it exist?" + ); + }, + |_| tracing::trace!("Removed worker for job from workers map"), + ); + + self.auto_enqueue().await; + } + + /// Cancel a job by ID. If the job is not running but in the queue, it will be removed. If + /// the job is running, it will be sent a shutdown signal. Otherwise, an error will be + /// returned + pub async fn cancel(self: Arc, job_id: String) -> JobManagerResult<()> { + let mut workers = self.workers.write().await; + + if let Some(worker) = workers.remove(&job_id) { + worker.cancel().await; + drop(workers); + self.auto_enqueue().await; + } else if let Some(index) = self.get_queued_job_index(&job_id).await { + handle_do_cancel(job_id.clone(), &self.client, Duration::from_secs(0)) + .await?; + self.queue.write().await.remove(index).map_or_else( + || { + tracing::warn!(index, job_id, "Unexpected result: failed to remove job with existing index precondition"); + }, + |_| { + tracing::trace!(index, job_id, "Removed job from queue"); + }, + ); + } else { + return Err(JobManagerError::JobNotFound(job_id)); + } + + Ok(()) + } + + /// Pause a job by ID. This operation does not check the queue + pub async fn pause(self: Arc, job_id: String) -> JobManagerResult<()> { + let worker = self.get_worker(&job_id).await?; + worker.pause().await; + Ok(()) + } + + /// Resume a job by ID. This operation does not check the queue + pub async fn resume(self: Arc, job_id: String) -> JobManagerResult<()> { + let worker = self.get_worker(&job_id).await?; + worker.resume().await; + Ok(()) + } + + /// Get a worker by ID, if it exists + async fn get_worker(self: Arc, id: &str) -> JobManagerResult> { + self.workers.read().await.get(id).map_or_else( + || Err(JobManagerError::JobNotFound(id.to_string())), + |worker| Ok(worker.clone()), + ) + } + + /// Shutdown all workers and the job manager. This will be called when the application + /// is shutting down + pub async fn shutdown(self: Arc) { + let workers = self.workers.read().await; + join_all(workers.values().map(|worker| worker.cancel())).await; + } + + /// Returns the index of a job in the pending queue by ID. + async fn get_queued_job_index(&self, job_id: &str) -> Option { + self.queue + .read() + .await + .iter() + .position(|job| job.id().to_string() == job_id) + } +} diff --git a/core/src/job/mod.rs b/core/src/job/mod.rs index af2bbfa41..1fff663d7 100644 --- a/core/src/job/mod.rs +++ b/core/src/job/mod.rs @@ -1,59 +1,54 @@ -mod executor; -mod job_manager; +// This job module would not be possible without other awesome projects in the Rust ecosystem! They +// taught me a lot, and I don't think I could have done this without them. Taking bits and pieces from +// each of them, I was able to create a job system that is both flexible and powerful: +// - https://github.com/spacedriveapp/spacedrive --> The most impressive and inflential one, the concept of jobs having typed tasks executed one-by-one in a loop, in addition to the handling logic for pause/resume, came from here +// - https://git.asonix.dog/asonix/background-jobs --> Trait design (v similar to above) and how they handle retries +// - https://github.com/ZeroAssumptions/aide-de-camp +// - Also their writeup on the fundamentals of their design: https://dev.to/zeroassumptions/build-a-job-queue-with-rust-using-aide-de-camp-part-1-4g5m +// - https://github.com/lorepozo/workerpool +// - https://github.com/geofmureithi/apalis +// - https://github.com/SabrinaJewson/work-queue.rs +// - https://github.com/Nukesor/pueue + +use std::{collections::VecDeque, fmt::Debug, sync::Arc, time::Duration}; + +use prisma_client_rust::chrono::{DateTime, Utc}; +use serde::{de, Deserialize, Serialize}; + +mod controller; +pub mod error; +mod manager; +mod progress; mod scheduler; -pub(crate) mod utils; +mod task; mod worker; -pub use executor::{Job, JobExecutorTrait}; -pub use job_manager::{ - JobManager, JobManagerError, JobManagerResult, JobManagerShutdownSignal, -}; -use prisma_client_rust::{chrono::Utc, QueryError}; +use error::JobError; +pub use progress::*; pub use scheduler::JobScheduler; -use serde::{Deserialize, Serialize}; use specta::Type; +pub use task::JobTaskOutput; +use task::{job_task_handler, JobTaskHandlerOutput}; use utoipa::ToSchema; -pub use worker::{Worker, WorkerCtx}; - -use crate::{db::entity::Cursor, filesystem::FileError, prisma, CoreError}; - -#[derive(Clone, Debug)] -pub enum JobError { - // Paused(Vec), - Cancelled, - SpawnFailed, - // InvalidState(String), - InvalidJob(String), - Unknown(String), -} +pub use worker::*; -impl From for JobError { - fn from(err: CoreError) -> Self { - match err { - CoreError::JobInitializationError(msg) => JobError::InvalidJob(msg), - _ => JobError::Unknown(err.to_string()), - } - } -} - -impl From for JobError { - fn from(err: QueryError) -> Self { - JobError::Unknown(err.to_string()) - } -} +pub use controller::*; +pub use manager::*; +use uuid::Uuid; -impl From for JobError { - fn from(err: FileError) -> Self { - JobError::Unknown(err.to_string()) - } -} +use crate::{ + db::entity::LogLevel, + prisma::{job, log}, +}; -#[derive(Clone, Debug, Default, Serialize, Deserialize, Type, ToSchema)] +#[derive( + Clone, Debug, Default, Serialize, Deserialize, PartialEq, Eq, Type, ToSchema, +)] pub enum JobStatus { #[serde(rename = "RUNNING")] Running, - // #[serde(rename = "PAUSED")] - // Paused, + #[serde(rename = "PAUSED")] + Paused, #[serde(rename = "COMPLETED")] Completed, #[serde(rename = "CANCELLED")] @@ -65,11 +60,37 @@ pub enum JobStatus { Queued, } +impl JobStatus { + /// A helper function to determine if a job status is resolved. A job is considered + /// resolved if it is in a final state (Completed, Cancelled, or Failed). + pub fn is_resolved(&self) -> bool { + matches!( + self, + JobStatus::Completed | JobStatus::Cancelled | JobStatus::Failed + ) + } + + /// A helper function to determine if a job status is successful. A job is considered + /// successful if it is in a Completed state. + pub fn is_success(&self) -> bool { + matches!(self, JobStatus::Completed) + } + + /// A helper function to determine if a job status is pending. A job is considered pending + /// if it is in a Running, Paused, or Queued state. + pub fn is_pending(&self) -> bool { + matches!( + self, + JobStatus::Running | JobStatus::Paused | JobStatus::Queued + ) + } +} + impl std::fmt::Display for JobStatus { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { JobStatus::Running => write!(f, "RUNNING"), - // JobStatus::Paused => write!(f, "PAUSED"), + JobStatus::Paused => write!(f, "PAUSED"), JobStatus::Completed => write!(f, "COMPLETED"), JobStatus::Cancelled => write!(f, "CANCELLED"), JobStatus::Failed => write!(f, "FAILED"), @@ -82,7 +103,7 @@ impl From<&str> for JobStatus { fn from(s: &str) -> Self { match s { "RUNNING" => JobStatus::Running, - // "PAUSED" => JobStatus::Paused, + "PAUSED" => JobStatus::Paused, "COMPLETED" => JobStatus::Completed, "CANCELLED" => JobStatus::Cancelled, "FAILED" => JobStatus::Failed, @@ -92,131 +113,668 @@ impl From<&str> for JobStatus { } } -#[derive(Clone, Debug, Default, Serialize, Deserialize, Type, ToSchema)] -pub struct JobDetail { - /// The ID of the job - pub id: String, - /// The name of job, e.g. LibraryScanJob - pub name: String, - /// The extra details of the job, e.g. "/Users/oromei/Documents/Stump/MainLibrary" - pub description: Option, - /// The status of the job. e.g. Running, Paused, Completed, Cancelled, Failed, Queued - pub status: JobStatus, - /// The total number of tasks - pub task_count: Option, - /// The total number of tasks completed (i.e. without error/failure) - pub completed_task_count: Option, - /// The time (in milliseconds) to complete the job - pub ms_elapsed: Option, - /// The datetime stamp of when the job was created - pub created_at: Option, - /// The datetime stamp of when the job completed - pub completed_at: Option, +impl From for JobStatus { + fn from(s: String) -> Self { + JobStatus::from(s.as_str()) + } +} + +/// The retry policy for a job. This is used to determine if a job should be requeued after +/// a non-critical failure. +#[derive(Debug, Clone, Deserialize, Serialize)] +pub enum JobRetryPolicy { + /// Always retry the job when it fails + Infinite, + /// Only retry the job a fixed number of times before giving up + Count(usize), } -impl Cursor for JobDetail { - fn cursor(&self) -> String { - self.id.clone() +/// A trait to extend the output type for a job with a common interface. Job output starts +/// in an 'empty' state (Default) and is frequently updated during execution. +/// +/// The state is also serialized and stored in the DB, so it must implement [Serialize] and [de::DeserializeOwned]. +pub trait JobOutputExt: Serialize + de::DeserializeOwned + Debug { + /// Update the state with new data. By default, the implementation is a full replacement + fn update(&mut self, updated: Self) { + *self = updated; } + + /// Serialize the state to JSON. If serialization fails, the error is logged and None is returned. + fn into_json(self) -> Option { + serde_json::to_value(&self).map_or_else( + |error| { + tracing::error!(?error, job_data = ?self, "Failed to serialize job data!"); + None + }, + Some, + ) + } +} + +/// A log that will be persisted from a job's execution +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct JobExecuteLog { + pub msg: String, + pub context: Option, + pub level: LogLevel, + pub timestamp: DateTime, } -impl JobDetail { - pub fn new(id: String, name: String, description: Option) -> Self { +impl JobExecuteLog { + /// Construct a [JobExecuteLog] with the given msg and level + pub fn new(msg: String, level: LogLevel) -> Self { Self { - id, - name, - description, - status: JobStatus::Queued, - task_count: None, - completed_task_count: None, - ms_elapsed: None, - created_at: Some(Utc::now().to_rfc3339()), - completed_at: None, + msg, + context: None, + level, + timestamp: Utc::now(), + } + } + + /// Construct a [JobExecuteLog] with the given msg and [LogLevel::Error] + pub fn error(msg: String) -> Self { + Self { + msg, + context: None, + level: LogLevel::Error, + timestamp: Utc::now(), + } + } + + /// Construct a [JobExecuteLog] with the given msg and [LogLevel::Warn] + pub fn warn(msg: &str) -> Self { + Self { + msg: msg.to_string(), + context: None, + level: LogLevel::Warn, + timestamp: Utc::now(), } } -} -impl From for JobDetail { - fn from(data: prisma::job::Data) -> Self { - JobDetail { - id: data.id, - name: data.name, - description: data.description, - status: JobStatus::from(data.status.as_str()), - task_count: Some(data.task_count), - completed_task_count: Some(data.completed_task_count), - ms_elapsed: Some(data.ms_elapsed as u64), - created_at: Some(data.created_at.to_rfc3339()), - completed_at: data.completed_at.map(|dt| dt.to_rfc3339()), + /// Construct a new [JobExecuteLog] with the given context string + pub fn with_ctx(self, ctx: String) -> Self { + Self { + context: Some(ctx), + ..self } } + + /// Constructs a Prisma create payload for the error + pub fn into_prisma(self, job_id: String) -> (String, Vec) { + ( + self.msg, + vec![ + log::context::set(self.context), + log::level::set(self.level.to_string()), + log::timestamp::set(self.timestamp.into()), + log::job::connect(job::id::equals(job_id.clone())), + ], + ) + } } -#[derive(Default, Clone, Serialize, Deserialize, Debug, Type)] -pub struct JobUpdate { - pub job_id: String, - pub current_task: Option, - pub task_count: u64, - pub message: Option, - pub status: Option, +/// The working state of a job. This is frequently updated during execution, and is used to track +/// progress internally. The entire state is only persisted when a job is paused, otherwise only +/// the data and logs are persisted. +#[derive(Clone, Debug, Deserialize, Serialize)] +pub struct WorkingState { + pub output: Option, + pub tasks: VecDeque, + pub completed_tasks: usize, + pub logs: Vec, } -impl JobUpdate { - pub fn started(job_id: String, task_count: u64, message: Option) -> Self { +impl Default for WorkingState { + fn default() -> Self { Self { - job_id, - current_task: Some(0), - task_count, - message, - status: Some(JobStatus::Running), + output: None, + tasks: VecDeque::new(), + completed_tasks: 0, + logs: vec![], } } +} - pub fn tick( - job_id: String, - current_task: u64, - task_count: u64, - message: Option, - ) -> Self { - Self { - job_id, - current_task: Some(current_task), - task_count, - message, - status: Some(JobStatus::Running), +/// A trait that defines the behavior and data types of a job. Jobs are responsible for +/// intialization and individual task execution. Jobs are managed by an [Executor], which +/// is responsible for the main run loop of a job. +#[async_trait::async_trait] +pub trait JobExt: Send + Sync + Sized + Clone + 'static { + const NAME: &'static str; + const MAX_RETRIES: JobRetryPolicy = JobRetryPolicy::Count(0); + + /// The output type for the job. This is the data that will be persisted to the DB when the + /// job completes. All jobs should have a user-friendly representation of their output. + type Output: Serialize + + de::DeserializeOwned + + JobOutputExt + + Default + + Debug + + Send + + Sync; + /// The type representing a single task for the job. As the name implies, each task will + /// be executed in its own asynchronous task in a loop until all tasks are completed. + /// + /// If a job should be small enough to not require tasks, this type should be set to (). In + /// this scenario, the job should execute all of its logic in the [JobExt::init] function. + type Task: Serialize + de::DeserializeOwned + Send + Sync; + + /// The description of the job, if any + fn description(&self) -> Option; + + /// A function that will be called in [Executor::execute] to initialize the job state with + /// existing data from the DB (if any). Used to support pausing/resuming jobs. + /// + /// Note that when defining a new job, you should not need to invoke this function directly. The + /// [Executor] will handle this for you during the beginning of the job's execution. + #[tracing::instrument(level = "debug", skip(self, ctx))] + async fn attempt_restore( + &self, + ctx: &WorkerCtx, + ) -> Result>, JobError> { + let db = ctx.db.clone(); + + let stored_job = db + .job() + .find_unique(job::id::equals(ctx.job_id.clone())) + .exec() + .await?; + + match stored_job { + Some(job) => { + if let Some(save_state) = job.save_state { + // If the job has a save state and it is invalid, we should fail + // as to not attempt potentially undefined behaviors + let state = serde_json::from_slice(&save_state) + .map_err(|error| JobError::StateLoadFailed(error.to_string()))?; + Ok(Some(state)) + } else { + Ok(None) + } + }, + None => { + // We don't need this job to exist in the DB for tests + if cfg!(test) { + Ok(None) + } else { + Err(JobError::InitFailed("Job not found in DB".to_string())) + } + }, } } + + /// A function to persist the current working state of the job to the DB. This is called + /// when the job is paused in the event that a shutdown occurs before it can be resumed. + /// + /// Note that when defining a new job, you should not need to invoke this function directly. The + /// [Executor] will handle this for you whenever the job is paused. + #[tracing::instrument(level = "debug", err, skip(self, ctx, tasks, logs))] + async fn persist_restore_point( + &self, + ctx: &WorkerCtx, + output: &Self::Output, + tasks: &VecDeque, + completed_tasks: usize, + logs: &Vec, + ) -> Result<(), JobError> { + let db = ctx.db.clone(); + let job_id = ctx.job_id.clone(); + + let json_output = serde_json::to_value(output) + .map_err(|error| JobError::StateSaveFailed(error.to_string()))?; + let json_tasks = serde_json::to_value(tasks) + .map_err(|error| JobError::StateSaveFailed(error.to_string()))?; + let json_logs = serde_json::to_value(logs) + .map_err(|error| JobError::StateSaveFailed(error.to_string()))?; + let working_state = serde_json::json!({ + "output": json_output, + "tasks": json_tasks, + "completed_tasks": completed_tasks, + "logs": json_logs, + }); + + let save_state = serde_json::to_vec(&working_state) + .map_err(|error| JobError::StateSaveFailed(error.to_string()))?; + + let persisted_job = db + .job() + .update( + job::id::equals(job_id), + vec![job::save_state::set(Some(save_state))], + ) + .exec() + .await + .map_err(|error| JobError::StateSaveFailed(error.to_string()))?; + tracing::trace!(?persisted_job, "Persisted job save state to DB"); + + Ok(()) + } + + /// A function that is called before Self::execute to initialize the job and gather the + /// required tasks + async fn init( + &mut self, + ctx: &WorkerCtx, + ) -> Result, JobError>; + + /// An optional function to perform any cleanup or finalization after the job has + /// finished its run loop. This is called after the job has completed (when [Executor::execute] + /// returns an Ok). + async fn cleanup(&self, _: &WorkerCtx, _: &Self::Output) -> Result<(), JobError> { + Ok(()) + } + + // TODO: notify_output(&self, output: &Self::Output) -> Result<(), JobError> { Ok(()) } + + /// An optional function to determine if a task should be requeued. This is called after + /// a job fully completes in a non-successful state, but not after critical task errors. + /// The default implementation is to requeue per the job's retry policy. This can be + /// overridden to provide custom requeue logic. + /// + /// Note that the exception to the above is that it **won't** be called after a manual cancellation + fn should_requeue(&self, attempts: usize) -> bool { + match Self::MAX_RETRIES { + JobRetryPolicy::Infinite => true, + JobRetryPolicy::Count(count) => attempts < count, + } + } + + /// A function to execute a specific task. This will be called repeatedly until all + /// tasks are completed. + async fn execute_task( + &self, + ctx: &WorkerCtx, + task: Self::Task, + ) -> Result, JobError>; } -// #[derive(Serialize, Deserialize)] -// pub struct JobState { -// pub tasks: VecDeque, -// pub current_task: usize, -// pub ms_elapsed: u64, -// } +/// A wrapper struct that will act as the main [Executor] for jobs defined throughout +/// Stump. +pub struct WrappedJob { + /// The ID of the job, which is created _first_ via this wrapper and will get persisted to the DB + /// afterwords + id: Uuid, + /// The internal job that will be executed. This is an Option to allow for the job to be + /// taken out of the wrapper and put back in after a requeue + inner_job: Option, + /// The inital state of the job, used to build its working state. This is an Option to allow for + /// the state to be taken out of the wrapper without a clone. At the end of the job, the state + /// will be reinitialized to its default state. + initial_state: Option>, + /// The number of attempts the job has made thus far. This is used to determine if the job + /// should be requeued. Requeue logic is defined externally in the job's implementation. + attempts: usize, +} -// impl Default for JobState { -// fn default() -> Self { -// Self { -// tasks: VecDeque::new(), -// current_task: 0, -// ms_elapsed: 0, -// } -// } -// } +impl WrappedJob { + /// Create a new [WrappedJob] with the given job, wrapping itself in a Box + pub fn new(job: J) -> Box { + Box::new(Self { + id: Uuid::new_v4(), + inner_job: Some(job), + initial_state: Some(WorkingState { + output: None, + tasks: VecDeque::new(), + completed_tasks: 0, + logs: vec![], + }), + attempts: 0, + }) + } +} -#[async_trait::async_trait] -pub trait JobTrait: Send + Sync + Sized { - // state will be serialized and stored in DB on pause and/or any completed state - // (including failure completion). So it needs to be serializable and deserializable. - // type Task: Serialize + DeserializeOwned + Send + Sync; +/// The output of a job's execution. To avoid the need for a generic type, the output data is serialized +/// _prior_ to being returned from the [Executor::execute] function. +#[derive(Debug)] +pub struct ExecutorOutput { + pub output: Option, + pub logs: Vec, +} +/// A trait that defines the behavior of a job executor. Executors are responsible for the main +/// run loop of a job, including task execution and state management. Executors are managed +/// by the [JobManager]. +#[async_trait::async_trait] +pub trait Executor: Send + Sync { + /// The ID of the internal job + fn id(&self) -> Uuid; + /// The name of the internal job fn name(&self) -> &'static str; - fn description(&self) -> Option>; - // TODO: once jobs are stateful, the run return does not need to include the completed count - async fn run( - &mut self, + /// The optional description for the internal job + fn description(&self) -> Option; + /// A function to determine if a job should be requeued. This is called after + /// a job fully completes in a non-successful state, but not after critical task errors. + /// + /// Note that the exception to the above is that it **won't** be called after a manual cancellation + fn should_requeue(&self) -> bool; + /// A function to persist the data of the job to the DB. This is called immediately before the job + /// would otherwise complete (at the end of [Executor::execute]). + async fn persist_output( + &self, ctx: WorkerCtx, - // state: &mut JobState, - ) -> Result; + output: ExecutorOutput, + elapsed: Duration, + ) -> Result<(), JobError> { + let db = ctx.db.clone(); + let job_id = self.id(); + + let expected_logs = output.logs.len(); + if expected_logs > 0 { + let creates = output + .logs + .into_iter() + .map(|log| log.into_prisma(job_id.to_string())) + .map(|(msg, params)| db.log().create(msg, params)); + let persisted_logs = db._batch(creates).await.map_or_else( + |error| { + tracing::error!(?error, "Failed to persist job logs!"); + 0 + }, + |logs| logs.len(), + ); + + if persisted_logs != expected_logs { + tracing::warn!( + ?persisted_logs, + ?expected_logs, + "Failed to persist all job logs!" + ); + } + } + + let output_data = serde_json::to_vec(&output.output) + .map_err(|error| JobError::StateSaveFailed(error.to_string()))?; + + let persisted_job_with_data = db + .job() + .update( + job::id::equals(job_id.to_string()), + vec![ + job::save_state::set(None), + job::output_data::set(Some(output_data)), + job::status::set(JobStatus::Completed.to_string()), + job::ms_elapsed::set( + elapsed.as_millis().try_into().unwrap_or_else(|e| { + tracing::error!(error = ?e, "Wow! You defied logic and overflowed an i64 during the attempt to convert job duration to milliseconds. It must have been a long 292_471_208 years!"); + i64::MAX + }), + ), + ], + ) + .exec() + .await + .map_err(|error| JobError::StateSaveFailed(error.to_string()))?; + tracing::trace!(?persisted_job_with_data, "Persisted completed job to DB"); + + Ok(()) + } + /// A function to persist the failure of the job to the DB. This is called when the job + /// has failed with a critical error (when [Executor::execute] returns an Err). + async fn persist_failure( + &self, + ctx: WorkerCtx, + status: JobStatus, + elapsed: Duration, + ) -> Result<(), JobError> { + let db = ctx.db.clone(); + let job_id = self.id(); + + if status.is_success() || status.is_pending() { + tracing::error!( + ?status, + "Attempted to persist failure with non-failure status!? This is a bug!" + ); + return Err(JobError::StateSaveFailed( + "Attempted to persist failure with non-failure status".to_string(), + )); + } + + let _persisted_job = db + .job() + .update( + job::id::equals(job_id.to_string()), + vec![ + job::status::set(status.to_string()), + job::ms_elapsed::set( + elapsed.as_millis().try_into().unwrap_or_else(|e| { + tracing::error!(error = ?e, "Wow! You defied logic and overflowed an i64 during the attempt to convert job duration to milliseconds. It must have been a long 292_471_208 years!"); + i64::MAX + }), + ), + ], + ) + .exec() + .await + .map_err(|error| JobError::StateSaveFailed(error.to_string()))?; + + Ok(()) + } + /// The main run loop of the job. This is where tasks are executed and state is managed. + async fn execute(&mut self, ctx: WorkerCtx) -> Result; +} + +#[async_trait::async_trait] +impl Executor for WrappedJob { + fn id(&self) -> Uuid { + self.id + } + + fn name(&self) -> &'static str { + J::NAME + } + + fn description(&self) -> Option { + self.inner_job.as_ref().and_then(|job| job.description()) + } + + fn should_requeue(&self) -> bool { + self.inner_job + .as_ref() + .map_or(false, |job| job.should_requeue(self.attempts)) + } + + async fn execute(&mut self, ctx: WorkerCtx) -> Result { + ctx.report_progress(JobProgress::status_msg( + JobStatus::Running, + "Initializing job", + )); + + self.attempts += 1; + let job_id = self.id(); + let job_name = self.name(); + let commands_rx = ctx.commands_rx.clone(); + tracing::info!(?job_id, ?job_name, "Starting job"); + + let mut inner_job = self.inner_job.take().ok_or_else(|| { + JobError::InitFailed("Job was unexpectedly None".to_string()) + })?; + let WorkingState { + output, + mut tasks, + mut completed_tasks, + mut logs, + } = self.initial_state.take().unwrap_or_else(|| { + tracing::warn!( + current_attempt = self.attempts, + "Initial state was not defined for job. This is a bug!" + ); + WorkingState::default() + }); + + let mut working_output = if let Some(initial_data) = output { + tracing::debug!(?initial_data, "Job started with initial state"); + Some(initial_data) + } else if let Some(restore_point) = inner_job.attempt_restore(&ctx).await? { + // Replace the state with the restored state + tasks = restore_point.tasks; + completed_tasks = restore_point.completed_tasks; + logs = restore_point.logs; + + ctx.report_progress(JobProgress::restored( + completed_tasks as i32, + tasks.len() as i32, + )); + + // Return the data from the restore point + restore_point.output.or_else(|| Some(Default::default())) + } else { + tracing::debug!("No restore point found, initializing job"); + let init_result = inner_job.init(&ctx).await?; + tasks = init_result.tasks; + completed_tasks = init_result.completed_tasks; + logs = init_result.logs; + + ctx.report_progress(JobProgress::init_done( + completed_tasks as i32, + tasks.len() as i32, + )); + + // Return the data from the init result + init_result.output.or_else(|| Some(Default::default())) + } + .ok_or_else(|| { + JobError::InitFailed( + "No data was created for job. This is a bug!?".to_string(), + ) + })?; + + // Setup our references since the loop would otherwise take ownership + let job = Arc::new(inner_job.clone()); + let mut ctx = Arc::new(ctx); + + tracing::debug!(task_count = tasks.len(), "Starting tasks"); + + while !tasks.is_empty() { + // The state can dynamically change during the run loop, and should be re-checked + // at the start of each iteration. If the state is Paused, the loop should wait for + // Running with a reasonable timeout before continuing. + let mut worker_status = ctx.get_status().await; + if worker_status == WorkerStatus::Paused { + ctx.report_progress(JobProgress::msg("Paused acknowledged")); + let save_result = job + .persist_restore_point( + &ctx, + &working_output, + &tasks, + completed_tasks, + &logs, + ) + .await; + tracing::debug!(?save_result, "Persisted restore point?"); + while worker_status == WorkerStatus::Paused { + tracing::debug!("Job is paused. Waiting for resume..."); + if worker_status == WorkerStatus::Running { + ctx.report_progress(JobProgress::msg("Resume acknowledged")); + } + // Wait for a reasonable amount of time before checking again + tokio::time::sleep(Duration::from_secs(5)).await; + worker_status = ctx.get_status().await; + } + } + + ctx.report_progress(JobProgress::task_position_msg( + "Starting task", + completed_tasks as i32, + tasks.len() as i32, + )); + + let next_task = tasks.pop_front().ok_or_else(|| { + tracing::error!(completed_tasks, "No tasks remain after explicit check!"); + JobError::TaskFailed( + "No tasks unexpectedly remain! This doesn't make sense!".to_string(), + ) + })?; + + let task_handle = { + let ctx = Arc::clone(&ctx); + let job = Arc::clone(&job); + tokio::spawn(async move { job.execute_task(&ctx, next_task).await }) + }; + + let JobTaskHandlerOutput { + output, + returned_ctx, + } = match job_task_handler::(ctx, task_handle, commands_rx.clone()).await { + Ok(r) => r, + Err(e) => { + tracing::error!(?e, "Task handler failed"); + logs.push(JobExecuteLog::error(format!( + "Critical task error: {}", + e + ))); + return Ok(ExecutorOutput { + output: working_output.into_json(), + logs, + }); + }, + }; + let JobTaskOutput { + output: task_output, + logs: task_logs, + subtasks, + } = output; + + // Update our working data and any logs with the new data/logs from the + // completed task. Then increment the task index + working_output.update(task_output); + logs.extend(task_logs); + completed_tasks += 1; + + // Reassign the ctx to the returned values + ctx = returned_ctx; + + // If there are subtasks, we need to insert them into the tasks queue at the + // front, so they are executed next. I think this can be polarizing, since on the + // UI it would be surprising to see the task count go up after a task is completed lol + // However, this is the most performant way aside from queueing the subtasks at the end + // as separate jobs, which could balloon the queue with a lot of small jobs. + if !subtasks.is_empty() { + let subtask_count = subtasks.len(); + let remaining_tasks = tasks.split_off(0); + let mut new_tasks = VecDeque::from(subtasks); + new_tasks.extend(remaining_tasks); + tasks = new_tasks; + ctx.report_progress(JobProgress::task_position_msg( + format!( + "{} subtask(s) discovered. Reordering the task queue", + subtask_count + ) + .as_str(), + completed_tasks as i32, + tasks.len() as i32, + )); + } + } + + tracing::trace!( + ?completed_tasks, + final_task_count = tasks.len(), // Should be 0! + "Task loop completed? Should be 0 tasks remaining 0.o" + ); + + ctx.report_progress(JobProgress::task_position( + completed_tasks as i32, + tasks.len() as i32, + )); + + let logs_count = logs.len(); + tracing::debug!(?logs_count, "All tasks completed"); + if let Err(err) = job.cleanup(&ctx, &working_output).await { + logs.push(JobExecuteLog::error(format!( + "Cleanup failed: {:?}", + err.to_string() + ))); + } + + // Replace the state with defaults. This is to ensure there is a reset in the + // event of a requeue + self.initial_state = Some(WorkingState::default()); + // Put the inner job back into the WrappedJob + self.inner_job = Some(inner_job); + + Ok(ExecutorOutput { + output: working_output.into_json(), + logs, + }) + } } diff --git a/core/src/job/progress.rs b/core/src/job/progress.rs new file mode 100644 index 000000000..0eee2c5ea --- /dev/null +++ b/core/src/job/progress.rs @@ -0,0 +1,118 @@ +use serde::{Deserialize, Serialize}; +use specta::Type; +use utoipa::ToSchema; + +use super::{JobStatus, WorkerSend, WorkerSendExt}; + +/// An update event that is emitted by a job +#[derive(Debug, Clone, Deserialize, Serialize, Type, ToSchema)] +pub struct JobUpdate { + pub id: String, + #[serde(flatten)] + pub payload: JobProgress, +} + +/// A struct that represents a progress event that is emitted by a job. This behaves like a patch, +/// where the client will ignore any fields that are not present. This is done so all internal ops +/// can be done without needing to know the full state of the job. +#[derive(Debug, Clone, Default, Deserialize, Serialize, Type, ToSchema)] +pub struct JobProgress { + /// The status of the job + #[specta(optional)] + pub status: Option, + /// The message to display + #[specta(optional)] + pub message: Option, + + /// The current task being worked on + #[specta(optional)] + pub completed_tasks: Option, + /// The number of tasks for the job. This number can change as + /// subtasks get added/converted to tasks + #[specta(optional)] + pub remaining_tasks: Option, + + /// The current subtask being worked on + #[specta(optional)] + pub completed_subtasks: Option, + /// The number of subtasks that exist in the current task + #[specta(optional)] + pub remaining_subtasks: Option, +} + +impl JobProgress { + /// Constructs a new JobProgress with the given message + pub fn msg(msg: &str) -> Self { + Self { + message: Some(msg.to_string()), + ..Default::default() + } + } + + /// Constructs a new JobProgress with the given status + pub fn status(status: JobStatus) -> Self { + Self { + status: Some(status), + ..Default::default() + } + } + + /// Constructs a new JobProgress with the given status and msg + pub fn status_msg(status: JobStatus, msg: &str) -> Self { + Self { + status: Some(status), + message: Some(msg.to_string()), + ..Default::default() + } + } + + /// Constructs a new JobProgress with the status set to `JobStatus::Completed` and the message set to "Job finished" + pub fn finished() -> Self { + Self::status_msg(JobStatus::Completed, "Job finished") + } + + /// Constructs a new JobProgress with the given queue position and size + pub fn task_position(index: i32, size: i32) -> Self { + Self { + completed_tasks: Some(index), + remaining_tasks: Some(size), + ..Default::default() + } + } + + pub fn task_position_msg(msg: &str, index: i32, size: i32) -> Self { + Self { + message: Some(msg.to_string()), + ..Self::task_position(index, size) + } + } + + pub fn init_done(index: i32, size: i32) -> Self { + Self::task_position_msg("Job intialized", index, size) + } + + pub fn restored(index: i32, size: i32) -> Self { + Self::task_position_msg("Job state restored from database", index, size) + } + + pub fn subtask_position(index: i32, size: i32) -> Self { + Self { + completed_subtasks: Some(index), + remaining_subtasks: Some(size), + ..Default::default() + } + } + + pub fn subtask_position_msg(msg: &str, index: i32, size: i32) -> Self { + Self { + message: Some(msg.to_string()), + ..Self::subtask_position(index, size) + } + } +} + +impl WorkerSendExt for JobProgress { + fn into_send(self) -> WorkerSend { + WorkerSend::Progress(self) + } +} diff --git a/core/src/job/scheduler.rs b/core/src/job/scheduler.rs index ed08b2705..d11f2a533 100644 --- a/core/src/job/scheduler.rs +++ b/core/src/job/scheduler.rs @@ -1,12 +1,17 @@ use std::sync::Arc; use crate::{ - db::entity::LibraryScanMode, + db::entity::LibraryOptions, filesystem::scanner::LibraryScanJob, + job::WrappedJob, prisma::{job_schedule_config, library}, CoreResult, Ctx, }; +// TODO: refactor this! +// 1. Schedule multiple job types (complex config) +// 2. Last run timestamp, so on boot we don't immediately trigger the scheduled tasks + pub struct JobScheduler { pub scheduler_handle: Option>, } @@ -66,6 +71,7 @@ impl JobScheduler { .find_many(vec![library::id::not_in_vec( excluded_library_ids.clone(), )]) + .with(library::library_options::fetch()) .exec() .await .unwrap_or_else(|e| { @@ -77,10 +83,13 @@ impl JobScheduler { // TODO: support default scan mode on libraries // let scan_mode = library.default_scan_mode.clone(); let library_path = library.path.clone(); - let result = scheduler_ctx.dispatch_job(LibraryScanJob::new( - library_path, - LibraryScanMode::Default, - )); + let options = library.library_options().ok().take(); + let result = + scheduler_ctx.enqueue_job(WrappedJob::new(LibraryScanJob { + id: library.id.clone(), + path: library_path, + options: options.map(LibraryOptions::from), + })); if result.is_err() { tracing::error!( ?library, diff --git a/core/src/job/task.rs b/core/src/job/task.rs new file mode 100644 index 000000000..b1b3b6dbe --- /dev/null +++ b/core/src/job/task.rs @@ -0,0 +1,92 @@ +use std::{sync::Arc, time::Instant}; + +use async_channel::Receiver; +use serde::Serialize; +use tokio::task::JoinHandle; + +use super::{JobError, JobExecuteLog, JobExt, WorkerCommand, WorkerCtx}; + +/// The output of a job task +#[derive(Serialize, Debug)] +pub struct JobTaskOutput { + pub output: J::Output, + pub subtasks: Vec, + pub logs: Vec, +} + +/// The output of a job task handler function +pub struct JobTaskHandlerOutput { + pub output: JobTaskOutput, + pub returned_ctx: Arc, +} + +pub type JobTaskResult = Result, JobError>; +pub type JobTaskHandlerResult = Result, JobError>; + +/// A handler function for a single job task. This function pins the handle for the spawned task and +/// listens for commands from the worker +pub(crate) async fn job_task_handler( + worker_ctx: Arc, + task_handle: JoinHandle>, + commands_rx: Receiver, +) -> JobTaskHandlerResult { + let commands_rx_fut = commands_rx.recv(); + tokio::pin!(task_handle); + tokio::pin!(commands_rx_fut); + + let start = Instant::now(); + loop { + tokio::select! { + task_result = &mut task_handle => { + let elapsed_ms = start.elapsed().as_millis(); + match task_result { + Ok(result) => { + tracing::debug!( + did_err = result.is_err(), + ?elapsed_ms, + "Task output received" + ); + let JobTaskOutput { + output, + logs, + subtasks, + } = result?; + + return Ok(JobTaskHandlerOutput { + output: JobTaskOutput { + output, + logs, + subtasks, + }, + returned_ctx: worker_ctx, + }); + } + Err(join_error) => { + tracing::error!(?join_error, ?elapsed_ms, "Error while executing task"); + return Err(JobError::Unknown(format!( + "Error while executing task: {:?}", + join_error.to_string() + ))); + } + } + }, + Ok(cmd) = &mut commands_rx_fut => { + tracing::debug!(?cmd, "Received command"); + match cmd { + WorkerCommand::Cancel(return_sender) => { + tracing::info!("Cancel signal received! Aborting task"); + task_handle.abort(); + let _ = task_handle.await; + return Err(JobError::Cancelled(return_sender)); + }, + WorkerCommand::Pause => { + worker_ctx.pause().await; + } + WorkerCommand::Resume => { + worker_ctx.resume().await; + } + } + }, + } + } +} diff --git a/core/src/job/utils.rs b/core/src/job/utils.rs deleted file mode 100644 index e04eccbed..000000000 --- a/core/src/job/utils.rs +++ /dev/null @@ -1,98 +0,0 @@ -use crate::{prisma::job, CoreError, CoreResult, Ctx}; -use prisma_client_rust::chrono::Utc; -use std::num::TryFromIntError; -use tracing::trace; - -use super::JobStatus; - -pub async fn persist_new_job( - core_ctx: &Ctx, - id: String, - name: String, - description: Option, -) -> CoreResult { - let db = core_ctx.get_db(); - let job = db - .job() - .create(id, name, vec![job::description::set(description)]) - .exec() - .await?; - trace!(?job, "Persisted new job to database"); - Ok(job) -} - -pub async fn persist_job_start( - core_ctx: &Ctx, - job_id: String, - task_count: u64, -) -> CoreResult<()> { - let db = core_ctx.get_db(); - let _ = db - .job() - .update( - job::id::equals(job_id.clone()), - vec![ - // TODO: I am clearly using this a lot, make a mapping for it - job::task_count::set(task_count.try_into().map_err( - |e: TryFromIntError| CoreError::InternalError(e.to_string()), - )?), - job::status::set(JobStatus::Running.to_string()), - ], - ) - .exec() - .await?; - - Ok(()) -} - -pub async fn persist_job_end( - core_ctx: &Ctx, - job_id: String, - status: JobStatus, - ms_elapsed: u64, - completed_task_count: Option, -) -> CoreResult<()> { - let db = core_ctx.get_db(); - let mut params = vec![ - // FIXME: potentially unsafe cast u64 -> i64 - job::ms_elapsed::set( - ms_elapsed - .try_into() - .map_err(|e: TryFromIntError| CoreError::InternalError(e.to_string()))?, - ), - job::status::set(status.to_string()), - job::completed_at::set(Some(Utc::now().into())), - ]; - if let Some(count) = completed_task_count { - params.push(job::completed_task_count::set(count.try_into().map_err( - |e: TryFromIntError| CoreError::InternalError(e.to_string()), - )?)); - } - - // NOTE: this error get's handled by caller FYI - let _ = db - .job() - .update(job::id::equals(job_id.clone()), params) - .exec() - .await?; - - Ok(()) -} - -pub async fn update_job_status( - core_ctx: &Ctx, - job_id: String, - status: JobStatus, -) -> CoreResult<()> { - let db = core_ctx.get_db(); - let _ = db - .job() - .update( - job::id::equals(job_id.clone()), - vec![job::status::set(status.to_string())], - ) - .exec() - .await?; - - Ok(()) -} diff --git a/core/src/job/worker.rs b/core/src/job/worker.rs index 4bff1e8b6..022199e5f 100644 --- a/core/src/job/worker.rs +++ b/core/src/job/worker.rs @@ -1,99 +1,537 @@ -use std::sync::Arc; -use tokio::sync::{broadcast, Mutex}; -use tracing::error; +use std::{ + sync::Arc, + time::{Duration, Instant}, +}; -use crate::{event::CoreEvent, Ctx}; +use tokio::{ + sync::{broadcast, mpsc, oneshot}, + task, +}; -use super::{ - job_manager::{JobManager, JobManagerShutdownSignal}, - JobDetail, JobError, JobExecutorTrait, JobUpdate, +use crate::{ + config::StumpConfig, + event::CoreEvent, + job::{JobError, JobStatus}, + prisma::{job, PrismaClient}, }; +use super::{Executor, JobControllerCommand, JobManager, JobProgress, JobUpdate}; + +/// An enum representing the various types of _external_ messages that a worker can send, excluding +/// internal commands and state events. +pub enum WorkerSend { + ManagerCommand(JobControllerCommand), + Progress(JobProgress), + Event(CoreEvent), +} + +/// A trait for extending the `WorkerSend` enum with a method to convert it into a `WorkerSend` +pub trait WorkerSendExt { + fn into_send(self) -> WorkerSend; +} + +// TODO: Add Finalizing state to inform clients that a job is not able to be paused +/// The status of the worker, either running or paused. +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub enum WorkerStatus { + Running, + Paused, + // Finalizing +} + +/// An enum representing the types of status-related events that the worker can send/receive. This +/// is primarily used to support pausing and resuming jobs. +#[derive(Debug)] +pub enum WorkerStatusEvent { + StatusChange(WorkerStatus), + StatusRequested(oneshot::Sender), +} + +/// Commands that the worker can send/receive internally. Every command will kill +/// the Future that effectively runs the job. Currently, the only command is `Cancel`. +#[derive(Debug)] +pub enum WorkerCommand { + Cancel(oneshot::Sender<()>), + Pause, + Resume, +} + +/// The context that is passed to the worker when it is created. This context is used +/// throughout the lifetime of a worker and its job. #[derive(Clone)] pub struct WorkerCtx { + /// The ID of the job that the worker is running pub job_id: String, - pub shutdown_tx: Arc>, - pub core_ctx: Arc, + /// A pointer to the prisma client + pub db: Arc, + /// A pointer to the stump configuration + pub config: Arc, + /// A sender for the core event channel + pub core_event_tx: broadcast::Sender, + /// A receiver for the worker commands + pub commands_rx: async_channel::Receiver, + /// A sender for the worker to send commands to the job manager + pub job_controller_tx: mpsc::UnboundedSender, + /// A sender for the [WorkerCtx] to send status events to the loop which + /// is managing the corresponding worker + pub status_tx: async_channel::Sender, } impl WorkerCtx { - pub fn shutdown_rx(&self) -> broadcast::Receiver { - self.shutdown_tx.subscribe() + /// Emit a [CoreEvent] to any clients listening to the server that a job has started + pub fn report_started(&self) { + let send_result = self + .core_event_tx + .send(CoreEvent::JobStarted(self.job_id.clone())); + if let Err(send_error) = send_result { + tracing::error!(?send_error, "Failed to send started event"); + } + } + + /// Emit a [CoreEvent] to any clients listening to the server + pub fn report_progress(&self, payload: JobProgress) { + let send_result = self.core_event_tx.send(CoreEvent::JobUpdate(JobUpdate { + id: self.job_id.clone(), + payload, + })); + if let Err(send_error) = send_result { + tracing::error!(?send_error, "Failed to send progress event"); + } + } + + /// Send a command to the [super::JobManager] + pub fn send_manager_command(&self, command: JobControllerCommand) { + self.job_controller_tx.send(command).map_or_else( + |error| { + tracing::error!(?error, "Failed to send command to job manager"); + }, + |_| { + tracing::trace!("Command sent to job manager"); + }, + ); } - pub fn job_id(&self) -> &str { - &self.job_id + pub fn send_core_event(&self, event: CoreEvent) { + self.core_event_tx.send(event).map_or_else( + |error| { + tracing::error!(?error, "Failed to send event"); + }, + |_| { + tracing::trace!("Event sent"); + }, + ); } - pub fn emit_progress(&self, progress: JobUpdate) { - self.core_ctx.emit_event(CoreEvent::JobProgress(progress)) + /// Send a batch of [WorkerSend] to the appropriate handlers + /// + /// Note that this isn't _really_ batching on the send side, rather just providing + /// a convenient interface for providing multiple send operations at once. + pub fn send_batch(&self, batch: Vec) { + for item in batch { + match item { + WorkerSend::ManagerCommand(cmd) => { + self.send_manager_command(cmd); + }, + WorkerSend::Progress(progress) => { + self.report_progress(progress.clone()); + }, + WorkerSend::Event(ev) => { + self.send_core_event(ev); + }, + } + } } - pub fn emit_job_message(&self, message: &str) { - self.core_ctx.emit_event(CoreEvent::JobProgress(JobUpdate { - job_id: self.job_id.clone(), - message: Some(message.to_string()), - ..Default::default() - })) + /// Send a status request to the worker loop and await the response + /// + /// Note that in the case of a failure to send the status request, the method will + /// return `WorkerStatus::Running` as a guess. This isn't overly ideal, but I will + /// revisit this in the future. + pub async fn get_status(&self) -> WorkerStatus { + // Try 3 times to send the status request with an acknowledgement + for _ in 0..3 { + let (tx, rx) = oneshot::channel(); + + let send_succeeded = self + .status_tx + .send(WorkerStatusEvent::StatusRequested(tx)) + .await + .is_ok(); + + if send_succeeded { + return rx.await.unwrap_or(WorkerStatus::Running); + } + } + + tracing::warn!( + "Failed to send status request 3 times. Returning running status as a guess..." + ); + + WorkerStatus::Running } - pub fn emit_job_started(&self, task_count: u64, message: Option) { - self.core_ctx - .emit_event(CoreEvent::JobStarted(JobUpdate::started( - self.job_id.clone(), - task_count, - message, - ))) + /// Send a pause request to the worker loop + /// + /// Note that this method will attempt to send the pause request 3 times before + /// giving up. + pub async fn pause(&self) { + // Try 3 times to send the state request with an acknowledgement + for _ in 0..3 { + let send_succeeded = self + .status_tx + .send(WorkerStatusEvent::StatusChange(WorkerStatus::Paused)) + .await + .is_ok(); + + if send_succeeded { + return; + } + } + + tracing::warn!("Failed to send pause request 3 times. Giving up..."); } - pub fn emit_job_complete(&self) { - self.core_ctx - .emit_event(CoreEvent::JobComplete(self.job_id.clone())) + /// Send a resume request to the worker loop + /// + /// Note that this method will attempt to send the resume request 3 times before + /// giving up. + pub async fn resume(&self) { + // Try 3 times to send the status request with an acknowledgement + for _ in 0..3 { + let send_succeeded = self + .status_tx + .send(WorkerStatusEvent::StatusChange(WorkerStatus::Running)) + .await + .is_ok(); + + if send_succeeded { + return; + } + } + + tracing::warn!("Failed to send resume request 3 times. Giving up..."); } } +/// An instance of a running job, represented by a worker. The worker is responsible for +/// kicking off the job and managing its lifecycle. pub struct Worker { - job: Option>, - job_detail: JobDetail, + /// The sender through which the worker can send commands to itself. The corresponding + /// receiver is stored in the worker context. + commands_tx: async_channel::Sender, } impl Worker { - pub fn new(job: Box, initial_detail: JobDetail) -> Self { - Self { - job: Some(job), - job_detail: initial_detail, - } + /// Create a new worker instance and its context + async fn new( + job_id: &str, + db: Arc, + config: Arc, + core_event_tx: broadcast::Sender, + job_controller_tx: mpsc::UnboundedSender, + ) -> Result<(Self, WorkerCtx, async_channel::Receiver), JobError> { + let (commands_tx, commands_rx) = async_channel::unbounded::(); + let (status_tx, status_rx) = async_channel::unbounded::(); + + let worker_ctx = WorkerCtx { + job_id: job_id.to_string(), + db, + config, + core_event_tx, + commands_rx, + job_controller_tx, + status_tx, + }; + + Ok((Self { commands_tx }, worker_ctx, status_rx)) } - pub fn job_detail(&self) -> JobDetail { - self.job_detail.clone() + /// Create a new [Worker] instance and immediately spawn it. This is the main entry point + /// for creating a _running_ worker. + /// + /// Note that workers are _only_ supported to be in a running state. A worker should + /// not be created if it is not intended to be running. + pub async fn create_and_spawn( + job: Box, + manager: Arc, + db: Arc, + config: Arc, + core_event_tx: broadcast::Sender, + job_controller_tx: mpsc::UnboundedSender, + ) -> Result, JobError> { + let job_id = job.id().to_string(); + let (worker, worker_ctx, status_rx) = Worker::new( + job_id.as_str(), + db, + config, + core_event_tx, + job_controller_tx, + ) + .await?; + let worker = worker.arced(); + + handle_job_start(&worker_ctx.db, job_id.clone()).await?; + let worker_manager = WorkerManager { + status: WorkerStatus::Running, + worker_ctx: worker_ctx.clone(), + status_rx, + manager: manager.clone(), + }; + task::spawn(worker_manager.main_loop(job)); + + Ok(worker) } - pub async fn spawn( - worker_ctx: WorkerCtx, - job_manager: Arc, - worker_mtx: Arc>, - ) -> Result<(), JobError> { - let job_id = worker_ctx.job_id.clone(); - let mut job = worker_mtx - .lock() + /// A convenience method to wrap the worker in an Arc + fn arced(self) -> Arc { + Arc::new(self) + } + + /// Send a pause command to the worker manager + pub async fn pause(&self) { + self.commands_tx + .send(WorkerCommand::Pause) .await - .job - .take() - .ok_or(JobError::SpawnFailed)?; + .map_or_else( + |error| { + tracing::error!(?error, "Error while sending pause command"); + }, + |_| { + tracing::trace!("Pause command sent"); + }, + ); + } - tokio::spawn(async move { - let result = job.execute(worker_ctx.clone()).await; + /// Send a resume command to the worker manager + pub async fn resume(&self) { + self.commands_tx + .send(WorkerCommand::Resume) + .await + .map_or_else( + |error| { + tracing::error!(?error, "Error while sending resume command"); + }, + |_| { + tracing::trace!("Resume command sent"); + }, + ); + } - if let Err(error) = job.finish(result, worker_ctx).await { - error!(?error, "Failed to finish job!") - } + /// Cancels the job running in the worker + pub async fn cancel(&self) { + let (tx, rx) = oneshot::channel(); - if let Err(error) = job_manager.dequeue_job(job_id).await { - error!(?error, "Failed to dequeue job!") - } + let send_received = self + .commands_tx + .send(WorkerCommand::Cancel(tx)) + .await + .is_ok(); + + if send_received { + rx.await.map_or_else( + |error| { + tracing::error!( + ?error, + "Error while waiting for cancel confirmation" + ); + }, + |_| { + tracing::trace!("Received cancel confirmation"); + }, + ) + } else { + tracing::error!("Failed to send cancel signal to worker"); + } + } +} + +/// A helper struct to manage the worker's status and lifecycle. This struct is responsible for +/// kicking off the [Executor] and watching for status changes and commands. +struct WorkerManager { + /// The current status of the worker which is being managed/monitored + status: WorkerStatus, + /// The context that was provided to the worker when it was created + worker_ctx: WorkerCtx, + /// A receiver for status events, which are used to pause/resume the worker + status_rx: async_channel::Receiver, + /// A pointer to the job manager, which is used to complete the job once it's done + manager: Arc, +} + +impl WorkerManager { + /// The main worker loop. This is where the job is run and the worker listens for + /// commands to cancel the job. + async fn main_loop(mut self, mut executor: Box) { + let job_id = executor.id().to_string(); + let loop_ctx = self.worker_ctx.clone(); + let finalizer_ctx = loop_ctx.clone(); + + self.status = WorkerStatus::Running; + let status_rx_fut = self.status_rx.recv(); + + // Note: we cannot use an Arc here because the executor.execute method + // requires a mutable reference to the executor. So instead we just return + // the executor and the result of the execution once it's done. + let executor_handle = task::spawn(async move { + let result = executor.execute(loop_ctx).await; + (executor, result) }); - Ok(()) + tokio::pin!(status_rx_fut); + tokio::pin!(executor_handle); + + let start = Instant::now(); + loop { + tokio::select! { + executor_result = &mut executor_handle => { + let elapsed = start.elapsed(); + match executor_result { + Ok((returned_executor, result)) => { + tracing::debug!( + did_err = result.is_err(), + ?elapsed, + "Task output received" + ); + match result { + Ok(output) => { + tracing::info!("Job completed successfully!"); + finalizer_ctx.report_progress(JobProgress::finished()); + let _ = returned_executor + .persist_output(finalizer_ctx, output, elapsed) + .await; + + }, + Err(error) => { + tracing::error!(?error, "Job failed with critical error"); + finalizer_ctx.report_progress(JobProgress::status_msg( + JobStatus::Failed, + &format!("Job failed: {}", error), + )); + + let _ = returned_executor + .persist_failure( + finalizer_ctx, + JobStatus::Failed, + elapsed, + ) + .await; + + if let JobError::Cancelled(return_tx) = error { + return_tx.send(()).map_or_else( + |error| { + tracing::error!( + ?error, + "Failed to send cancel confirmation" + ); + }, + |_| { + tracing::trace!("Cancel confirmation sent"); + }, + ); + } else if returned_executor.should_requeue() { + + } + }, + } + }, + Err(join_error) => { + // TODO: should log the error to DB? Or force people to find context via log file? + tracing::error!(?join_error, ?elapsed, "Error while joining job worker thread"); + finalizer_ctx.report_progress(JobProgress::status_msg( + JobStatus::Failed, + &format!("Job failed: {}", join_error), + )); + let _ = handle_failure_status(job_id.clone(), JobStatus::Failed, &finalizer_ctx.db, elapsed).await; + } + } + return self.manager.complete(job_id).await; + }, + + Ok(status_event) = &mut status_rx_fut => { + match status_event { + WorkerStatusEvent::StatusChange(new_status) if new_status != self.status => { + // TODO: should we track idle times? + tracing::debug!(status = ?self.status, ?new_status, "Status change event received"); + self.status = new_status; + }, + WorkerStatusEvent::StatusRequested(sender) => { + tracing::trace!("Status requested"); + sender.send(self.status).map_or_else( + |error| { + tracing::error!(?error, "Failed to send status!"); + }, + |status| { + tracing::trace!(?status, "status sent"); + }, + ); + }, + _=> { + tracing::warn!(?status_event, "Ignoring status event. Most likely a status change to the same status"); + } + } + }, + } + } } } + +/// Update the job status to the provided status in the database +pub(crate) async fn handle_failure_status( + job_id: String, + status: JobStatus, + client: &PrismaClient, + elapsed: Duration, +) -> Result<(), JobError> { + let updated_job = client + .job() + .update( + job::id::equals(job_id), + vec![ + job::status::set(status.to_string()), + job::ms_elapsed::set( + elapsed.as_millis().try_into().unwrap_or_else(|e| { + tracing::error!(error = ?e, "Wow! You defied logic and overflowed an i64 during the attempt to convert job duration to milliseconds. It must have been a long 292_471_208 years!"); + i64::MAX + }), + ), + ], + ) + .exec() + .await + .map_or_else( + |error| { + tracing::error!(?error, ?status, "Failed to update job status"); + None + }, + Some, + ); + + tracing::trace!(?updated_job, "Upated job?"); + + Ok(()) +} + +/// Cancel a job by its ID +pub(crate) async fn handle_do_cancel( + job_id: String, + client: &PrismaClient, + elapsed: Duration, +) -> Result<(), JobError> { + handle_failure_status(job_id, JobStatus::Cancelled, client, elapsed).await +} + +/// Update the job status to `Running` in the database +async fn handle_job_start(client: &PrismaClient, job_id: String) -> Result<(), JobError> { + let started_job = client + .job() + .update( + job::id::equals(job_id), + vec![job::status::set(JobStatus::Running.to_string())], + ) + .exec() + .await?; + + tracing::trace!(?started_job, "Job started?"); + + Ok(()) +} diff --git a/core/src/lib.rs b/core/src/lib.rs index b5c691a1a..7df0683d2 100644 --- a/core/src/lib.rs +++ b/core/src/lib.rs @@ -2,18 +2,19 @@ // I am not entirely sure why this issue cropped up all of the sudden, but // this seems to resolve it in a musl environment. #![recursion_limit = "256"] +#![warn(clippy::dbg_macro)] use std::sync::Arc; -// TODO: for these crates, some should NOT hoist entire crate, I need to restrict it -// to only what is necessary... UGH. +// TODO: cleanup hoisted crates to only what is needed pub mod config; pub mod db; -pub mod event; +mod event; pub mod filesystem; pub mod job; pub mod opds; +mod utils; mod context; pub mod error; @@ -24,13 +25,12 @@ pub mod prisma; use config::logging::STUMP_SHADOW_TEXT; use config::StumpConfig; use db::{DBPragma, JournalMode}; -use event::{event_manager::EventManager, InternalCoreTask}; -use job::JobScheduler; +use job::{JobController, JobScheduler}; use prisma::server_config; -use tokio::sync::mpsc::unbounded_channel; pub use context::Ctx; pub use error::{CoreError, CoreResult}; +pub use event::CoreEvent; /// A type alias strictly for explicitness in the return type of `init_journal_mode`. type JournalModeChanged = bool; @@ -59,21 +59,13 @@ type JournalModeChanged = bool; /// ``` pub struct StumpCore { ctx: Ctx, - event_manager: Arc, } impl StumpCore { /// Creates a new instance of [`StumpCore`] and returns it wrapped in an [`Arc`]. pub async fn new(config: StumpConfig) -> StumpCore { - let internal_channel = unbounded_channel::(); - - let core_ctx = Ctx::new(config, internal_channel.0).await; - let event_manager = EventManager::new(core_ctx.get_ctx(), internal_channel.1); - - StumpCore { - ctx: core_ctx, - event_manager, - } + let core_ctx = Ctx::new(config).await; + StumpCore { ctx: core_ctx } } /// A three-step configuration initialization function. @@ -109,11 +101,11 @@ impl StumpCore { /// Returns a new instance of [`Ctx`]. This is the main context struct for the core, /// prividing access to the database and internal channels. pub fn get_context(&self) -> Ctx { - self.ctx.get_ctx() + self.ctx.clone() } - pub fn get_job_manager(&self) -> Arc { - self.event_manager.get_job_manager() + pub fn get_job_controller(&self) -> Arc { + self.ctx.job_controller.clone() } /// Returns the shadow text for the core. This is just the fun ascii art that @@ -152,7 +144,7 @@ impl StumpCore { /// 1. The initial WAL setup has not already been completed on first run /// 2. The journal mode is not already set to WAL pub async fn init_journal_mode(&self) -> Result { - let client = self.ctx.get_db(); + let client = self.ctx.db.clone(); let wal_mode_setup_completed = client .server_config() @@ -215,9 +207,9 @@ mod tests { filter::*, query::{ordering::*, pagination::*}, }, - event::*, - filesystem::{image::*, *}, + filesystem::{image::*, scanner::*, *}, job::*, + CoreEvent, }; #[allow(dead_code)] @@ -246,9 +238,36 @@ mod tests { file.write_all(b"// CORE TYPE GENERATION\n\n")?; + file.write_all(format!("{}\n\n", ts_export::()?).as_bytes())?; + file.write_all(format!("{}\n\n", ts_export::()?).as_bytes())?; file.write_all(format!("{}\n\n", ts_export::()?).as_bytes())?; + file.write_all(format!("{}\n\n", ts_export::()?).as_bytes())?; + file.write_all(format!("{}\n\n", ts_export::()?).as_bytes())?; + file.write_all(format!("{}\n\n", ts_export::()?).as_bytes())?; + + file.write_all(format!("{}\n\n", ts_export::()?).as_bytes())?; + // file.write_all(format!("{}\n\n", ts_export::()?).as_bytes())?; + // TODO: Fix this... Must move all job defs to the core... + file.write_all( + "export type CoreJobOutput = LibraryScanOutput | SeriesScanOutput | ThumbnailGenerationOutput | unknown\n\n".to_string() + .as_bytes(), + )?; + file.write_all(format!("{}\n\n", ts_export::()?).as_bytes())?; + file.write_all(format!("{}\n\n", ts_export::()?).as_bytes())?; + file.write_all(format!("{}\n\n", ts_export::()?).as_bytes())?; + file.write_all(format!("{}\n\n", ts_export::()?).as_bytes())?; + file.write_all( + format!("{}\n\n", ts_export::()?).as_bytes(), + )?; + file.write_all( + format!("{}\n\n", ts_export::()?).as_bytes(), + )?; + file.write_all( + format!("{}\n\n", ts_export::()?).as_bytes(), + )?; + file.write_all(format!("{}\n\n", ts_export::()?).as_bytes())?; file.write_all(format!("{}\n\n", ts_export::()?).as_bytes())?; file.write_all(format!("{}\n\n", ts_export::()?).as_bytes())?; @@ -334,12 +353,8 @@ mod tests { file.write_all(format!("{}\n\n", ts_export::()?).as_bytes())?; file.write_all(format!("{}\n\n", ts_export::()?).as_bytes())?; - file.write_all(format!("{}\n\n", ts_export::()?).as_bytes())?; - file.write_all(format!("{}\n\n", ts_export::()?).as_bytes())?; file.write_all(format!("{}\n\n", ts_export::()?).as_bytes())?; - file.write_all(format!("{}\n\n", ts_export::()?).as_bytes())?; - file.write_all(format!("{}\n\n", ts_export::()?).as_bytes())?; file.write_all( format!("{}\n\n", ts_export::()?).as_bytes(), @@ -362,10 +377,6 @@ mod tests { format!("{}\n\n", ts_export::()?).as_bytes(), )?; - file.write_all(format!("{}\n\n", ts_export::()?).as_bytes())?; - file.write_all(format!("{}\n\n", ts_export::()?).as_bytes())?; - file.write_all(format!("{}\n\n", ts_export::()?).as_bytes())?; - file.write_all(format!("{}\n\n", ts_export::()?).as_bytes())?; file.write_all(format!("{}\n\n", ts_export::()?).as_bytes())?; file.write_all(format!("{}\n\n", ts_export::()?).as_bytes())?; diff --git a/core/src/utils.rs b/core/src/utils.rs new file mode 100644 index 000000000..b4884f150 --- /dev/null +++ b/core/src/utils.rs @@ -0,0 +1,11 @@ +pub fn chain_optional_iter( + required: impl IntoIterator, + optional: impl IntoIterator>, +) -> Vec { + required + .into_iter() + .map(Some) + .chain(optional) + .flatten() + .collect() +} diff --git a/crowdin.yml b/crowdin.yml index db002028e..f19f09724 100644 --- a/crowdin.yml +++ b/crowdin.yml @@ -1,3 +1,3 @@ files: - - source: /interface/src/i18n/locales/en.json - translation: /interface/src/i18n/locales/%two_letters_code%.json + - source: /packages/browser/src/i18n/locales/en.json + translation: /packages/browser/src/i18n/locales/%two_letters_code%.json diff --git a/docs/pages/contributing.mdx b/docs/pages/contributing.mdx index c4aaf7de6..aae87e561 100644 --- a/docs/pages/contributing.mdx +++ b/docs/pages/contributing.mdx @@ -77,7 +77,7 @@ I also want to point out that this repository uses 4 tab spaces for indentation. ### Component Library -Stump has a custom component library used throughout the `interface` package (the web UI and desktop app). This library can be found at `packages/components`, and was developed with Storybook in mind. For getting started building out designs and components in Stump, I highly recommend going through the stories available in the Storybook UI: +Stump has a custom component library used throughout the `browser` package (the web UI and desktop app). This library can be found at `packages/components`, and was developed with Storybook in mind. For getting started building out designs and components in Stump, I highly recommend going through the stories available in the Storybook UI: ```bash pnpm storybook diff --git a/interface/README.md b/interface/README.md deleted file mode 100644 index 3d795d82a..000000000 --- a/interface/README.md +++ /dev/null @@ -1,11 +0,0 @@ -## Package Contents - -An overview of this package's contents, relative to `interface/src`. - -- `assets`: Images and other static assets. -- `components`: React components that are used in multiple places. -- `hooks`: React hooks specific to the interface functionality. -- `i18n`: Internationalization configuration and locale definition files. -- `pages`: React components that represent pages in the app. -- `styles`: CSS files. -- `utils`: Various utility functions. diff --git a/interface/src/components/jobs/JobOverlay.tsx b/interface/src/components/jobs/JobOverlay.tsx deleted file mode 100644 index 1d2dcca52..000000000 --- a/interface/src/components/jobs/JobOverlay.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import { useJobContext } from '@stump/client' -import { ProgressBar, Text } from '@stump/components' -import { AnimatePresence, motion } from 'framer-motion' - -export default function JobOverlay() { - const context = useJobContext() - - if (!context) { - throw new Error('JobContextProvider not found') - } - - const { activeJobs } = context - - // get the first job that is running from the activeJobs object - const jobShown = Object.values(activeJobs).find((job) => job.status?.toLowerCase() === 'running') - - function formatMessage(message?: string | null) { - if (message?.startsWith('Analyzing')) { - const filePieces = message - .replace(/"/g, '') - .split('Analyzing ') - .filter(Boolean)[0] - ?.split('/') - - if (filePieces?.length) { - return `Analyzing ${filePieces.slice(filePieces.length - 1).join('/')}` - } - } - - return message - } - - return ( - - {jobShown && ( - -

- - )} - - ) -} diff --git a/interface/src/scenes/onboarding/OnBoardingRouter.tsx b/interface/src/scenes/onboarding/OnBoardingRouter.tsx deleted file mode 100644 index 0b69d2458..000000000 --- a/interface/src/scenes/onboarding/OnBoardingRouter.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import React, { Suspense } from 'react' -import { Route, Routes } from 'react-router' - -import { LazyComponent } from '../../AppRouter' - -export const lazily = (loader: () => unknown) => React.lazy(() => loader() as LazyComponent) -const OnBoardingScene = lazily(() => import('./OnBoardingScene')) - -export default function OnBoardingRouter() { - return ( - - - } /> - - - ) -} diff --git a/interface/src/scenes/settings/app/AppSettingsRouter.tsx b/interface/src/scenes/settings/app/AppSettingsRouter.tsx deleted file mode 100644 index 7e6c893d2..000000000 --- a/interface/src/scenes/settings/app/AppSettingsRouter.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import React from 'react' -import { Route, Routes } from 'react-router' - -import { LazyComponent } from '../../../AppRouter.tsx' - -const lazily = (loader: () => unknown) => React.lazy(() => loader() as LazyComponent) - -const GeneralSettingsScene = lazily(() => import('./general/GeneralSettingsScene.tsx')) -const AppearanceSettingsScene = lazily(() => import('./appearance/AppearanceSettingsScene.tsx')) - -export default function AppSettingsRouter() { - return ( - - } /> - } /> - - ) -} diff --git a/interface/src/scenes/settings/server/ServerSettingsRouter.tsx b/interface/src/scenes/settings/server/ServerSettingsRouter.tsx deleted file mode 100644 index 8defb27ae..000000000 --- a/interface/src/scenes/settings/server/ServerSettingsRouter.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import React from 'react' -import { Route, Routes } from 'react-router' - -import { LazyComponent } from '../../../AppRouter.tsx' -import { UsersRouter } from './users' - -const lazily = (loader: () => unknown) => React.lazy(() => loader() as LazyComponent) - -const GeneralServerSettingsScene = lazily(() => import('./general/GeneralServerSettingsScene.tsx')) -const JobSettingsScene = lazily(() => import('./jobs/JobSettingsScene.tsx')) - -export default function ServerSettingsRouter() { - return ( - - } /> - } /> - } /> - - ) -} diff --git a/interface/tailwind.config.js b/interface/tailwind.config.js deleted file mode 100644 index 3dbadab44..000000000 --- a/interface/tailwind.config.js +++ /dev/null @@ -1,2 +0,0 @@ -// Note: this isn't used, but needed for intellisense. >:( -module.exports = require('../packages/components/tailwind/tailwind.js')('interface') diff --git a/package.json b/package.json index e8fa2261e..5309c5906 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "lint": "eslint --ext .ts,.tsx,.cts,.mts,.js,.jsx,.cjs,.mjs --fix --report-unused-disable-directives --no-error-on-unmatched-pattern --exit-on-fatal-error --ignore-path .gitignore .", "client": "pnpm --filter @stump/client --", "desktop": "pnpm --filter @stump/desktop --", - "interface": "pnpm --filter @stump/interface --", + "browser": "pnpm --filter @stump/browser --", "web": "pnpm --filter @stump/web --", "docs": "pnpm --filter @stump/docs --", "server": "pnpm --filter @stump/server --", @@ -61,5 +61,12 @@ "packageManager": "pnpm@8.6.1", "engines": { "node": "20.0.0" + }, + "pnpm": { + "peerDependencyRules": { + "ignoreMissing": [ + "@babel/core" + ] + } } } diff --git a/packages/api/src/auth.ts b/packages/api/src/auth.ts index c2fbd9436..5d6c10777 100644 --- a/packages/api/src/auth.ts +++ b/packages/api/src/auth.ts @@ -1,15 +1,15 @@ import type { LoginOrRegisterArgs, User } from '@stump/types' import { API } from './axios' -import { ApiResult } from './types' +import { APIResult } from './types' // TODO: types -export function me(): Promise> { +export function me(): Promise> { return API.get('/auth/me') } -export function login(input: LoginOrRegisterArgs): Promise> { +export function login(input: LoginOrRegisterArgs): Promise> { return API.post('/auth/login', input) } @@ -17,7 +17,7 @@ export function register(payload: LoginOrRegisterArgs) { return API.post('/auth/register', payload) } -export function logout(): Promise> { +export function logout(): Promise> { return API.post('/auth/logout') } diff --git a/packages/api/src/bookClub.ts b/packages/api/src/bookClub.ts index cade3d361..d9de074c6 100644 --- a/packages/api/src/bookClub.ts +++ b/packages/api/src/bookClub.ts @@ -17,9 +17,9 @@ import { import { toUrlParams, urlWithParams } from '.' import { API } from './axios' -import { ApiResult } from './types' +import { APIResult } from './types' -export async function getBookClubs(params?: GetBookClubsParams): Promise> { +export async function getBookClubs(params?: GetBookClubsParams): Promise> { if (params) { const searchParams = toUrlParams(params) return API.get(urlWithParams('/book-clubs', searchParams)) @@ -28,31 +28,31 @@ export async function getBookClubs(params?: GetBookClubsParams): Promise> { +export async function createBookClub(payload: CreateBookClub): Promise> { return API.post('/book-clubs', payload) } -export async function getBookClubById(id: string): Promise> { +export async function getBookClubById(id: string): Promise> { return API.get(`/book-clubs/${id}`) } export async function updateBookClub( id: string, payload: UpdateBookClub, -): Promise> { +): Promise> { return API.put(`/book-clubs/${id}`, payload) } export async function getBookClubInvitations( bookClubId: string, -): Promise> { +): Promise> { return API.get(`/book-clubs/${bookClubId}/invitations`) } export async function createBookClubInvitation( bookClubId: string, payload: CreateBookClubInvitation, -): Promise> { +): Promise> { return API.post(`/book-clubs/${bookClubId}/invitations`, payload) } @@ -60,25 +60,25 @@ export async function respondToBookClubInvitation( bookClubId: string, invitationId: string, payload: BookClubInvitationAnswer, -): Promise> { +): Promise> { return API.put(`/book-clubs/${bookClubId}/invitations/${invitationId}`, payload) } -export async function getBookClubMembers(bookClubId: string): Promise> { +export async function getBookClubMembers(bookClubId: string): Promise> { return API.get(`/book-clubs/${bookClubId}/members`) } export async function createBookClubMember( bookClubId: string, payload: CreateBookClubMember, -): Promise> { +): Promise> { return API.post(`/book-clubs/${bookClubId}/members`, payload) } export async function getBookClubMember( bookClubId: string, memberId: string, -): Promise> { +): Promise> { return API.get(`/book-clubs/${bookClubId}/members/${memberId}`) } @@ -86,44 +86,44 @@ export async function updateBookClubMember( bookClubId: string, memberId: string, payload: CreateBookClubMember, -): Promise> { +): Promise> { return API.put(`/book-clubs/${bookClubId}/members/${memberId}`, payload) } export async function deleteBookClubMember( bookClubId: string, memberId: string, -): Promise> { +): Promise> { return API.delete(`/book-clubs/${bookClubId}/members/${memberId}`) } export async function getBookClubSchedule( bookClubId: string, -): Promise> { +): Promise> { return API.get(`/book-clubs/${bookClubId}/schedule`) } export async function createBookClubSchedule( bookClubId: string, -): Promise> { +): Promise> { return API.post(`/book-clubs/${bookClubId}/schedule`) } -export async function getBookClubCurrentBook(bookClubId: string): Promise> { +export async function getBookClubCurrentBook(bookClubId: string): Promise> { // TODO: maybe remove /schedule from the endpoint return API.get(`/book-clubs/${bookClubId}/schedule/current-book`) } export async function getBookClubCurrentChat( bookClubId: string, -): Promise> { +): Promise> { return API.get(`/book-clubs/${bookClubId}/chats/current`) } export async function getBookClubChatById( bookClubId: string, chatId: string, -): Promise> { +): Promise> { return API.get(`/book-clubs/${bookClubId}/chats/${chatId}`) } @@ -131,7 +131,7 @@ export async function getBookClubChatThread( bookClubId: string, chatId: string, threadId: string, -): Promise> { +): Promise> { return API.get(`/book-clubs/${bookClubId}/chats/${chatId}/threads/${threadId}`) } diff --git a/packages/api/src/epub.ts b/packages/api/src/epub.ts index 497c9c629..c9d072d12 100644 --- a/packages/api/src/epub.ts +++ b/packages/api/src/epub.ts @@ -8,19 +8,19 @@ import type { } from '@stump/types' import { API } from './axios' -import { ApiResult } from './types' +import { APIResult } from './types' export function getEpubBaseUrl(id: string): string { return `${API.getUri()}/epub/${id}` } -export function getEpubById(id: string): Promise> { +export function getEpubById(id: string): Promise> { return API.get(`/epub/${id}`) } export function updateEpubProgress( payload: UpdateEpubProgress & { id: string }, -): Promise> { +): Promise> { return API.put(`/epub/${payload.id}/progress`, payload) } @@ -30,22 +30,22 @@ export function getEpubResource(payload: { id: string root?: string resourceId: string -}): Promise> { +}): Promise> { return API.get(`/epub/${payload.id}/${payload.root ?? 'META-INF'}/${payload.resourceId}`) } -export function getBookmarks(id: string): Promise> { +export function getBookmarks(id: string): Promise> { return API.get(`/epub/${id}/bookmarks`) } export function createBookmark( id: string, payload: CreateOrUpdateBookmark, -): Promise> { +): Promise> { return API.post(`/epub/${id}/bookmarks`, payload) } -export function deleteBookmark(id: string, payload: DeleteBookmark): Promise> { +export function deleteBookmark(id: string, payload: DeleteBookmark): Promise> { return API.delete(`/epub/${id}/bookmarks`, { data: payload }) } diff --git a/packages/api/src/filesystem.ts b/packages/api/src/filesystem.ts index 03d96db76..5492ef8ee 100644 --- a/packages/api/src/filesystem.ts +++ b/packages/api/src/filesystem.ts @@ -1,7 +1,7 @@ import type { DirectoryListing, DirectoryListingInput, Pageable } from '@stump/types' import { API } from './axios' -import { ApiResult } from './types' +import { APIResult } from './types' interface ListDirectoryFnInput extends DirectoryListingInput { page?: number @@ -9,7 +9,7 @@ interface ListDirectoryFnInput extends DirectoryListingInput { export function listDirectory( input?: ListDirectoryFnInput, -): Promise>> { +): Promise>> { if (input?.page != null) { return API.post(`/filesystem?page=${input.page}`, input) } diff --git a/packages/api/src/index.ts b/packages/api/src/index.ts index 7f3898fec..39b36e60a 100644 --- a/packages/api/src/index.ts +++ b/packages/api/src/index.ts @@ -1,4 +1,3 @@ -// TODO: remove these export * export { authApi, authQueryKeys } from './auth' export { API, apiIsInitialized, checkUrl, initializeApi, isUrl } from './axios' export { bookClubApi, bookClubQueryKeys } from './bookClub' @@ -6,7 +5,7 @@ export { epubApi, epubQueryKeys, getEpubResource, updateEpubProgress } from './e export { filesystemApi, filesystemQueryKeys } from './filesystem' export * from './job' export { getLibraryThumbnail, libraryApi, libraryQueryKeys } from './library' -export * from './log' +export { logApi, logQueryKeys } from './log' export { getMediaDownloadUrl, getMediaPage, @@ -27,6 +26,7 @@ export { } from './series' export { checkIsClaimed, getStumpVersion, ping, serverQueryKeys } from './server' export { getSmartListById, getSmartLists, smartListApi, smartListQueryKeys } from './smartList' +// TODO: remove these export * export * from './tag' export * from './types' export * from './user' diff --git a/packages/api/src/job.ts b/packages/api/src/job.ts index 9f9c104ac..f1f74f5d1 100644 --- a/packages/api/src/job.ts +++ b/packages/api/src/job.ts @@ -1,10 +1,12 @@ -import type { JobDetail, JobSchedulerConfig, UpdateSchedulerConfig } from '@stump/types' +import type { JobSchedulerConfig, PersistedJob, UpdateSchedulerConfig } from '@stump/types' import { API } from './axios' -import { ApiResult, PageableApiResult } from './types' +import { APIResult, PageableAPIResult } from './types' import { toUrlParams } from './utils' -export function getJobs(params?: Record): Promise> { +export function getJobs( + params?: Record, +): Promise> { if (params) { const searchParams = toUrlParams(params) return API.get(`/jobs?${searchParams.toString()}`) @@ -13,25 +15,25 @@ export function getJobs(params?: Record): Promise> { +export function cancelJob(id: string): Promise> { return API.delete(`/jobs/${id}/cancel`) } -export function deleteJob(id: string): Promise> { +export function deleteJob(id: string): Promise> { return API.delete(`/jobs/${id}`) } -export function deleteAllJobs(): Promise> { +export function deleteAllJobs(): Promise> { return API.delete('/jobs') } -export function getJobSchedulerConfig(): Promise> { +export function getJobSchedulerConfig(): Promise> { return API.get('/jobs/scheduler-config') } export function updateJobSchedulerConfig( config: UpdateSchedulerConfig, -): Promise> { +): Promise> { return API.post('/jobs/scheduler-config', config) } diff --git a/packages/api/src/library.ts b/packages/api/src/library.ts index 3d29b435d..20712a062 100644 --- a/packages/api/src/library.ts +++ b/packages/api/src/library.ts @@ -10,20 +10,20 @@ import type { } from '@stump/types' import { API } from './axios' -import { ApiResult, PageableApiResult, PagedQueryParams } from './types' +import { APIResult, PageableAPIResult, PagedQueryParams } from './types' import { mergePageParams, toUrlParams, urlWithParams } from './utils' export function getLibraries( params: Record = { unpaged: true }, -): Promise> { +): Promise> { return API.get(urlWithParams('/libraries', toUrlParams(params))) } -export function getLibrariesStats(): Promise> { +export function getLibrariesStats(): Promise> { return API.get('/libraries/stats') } -export function getLibraryById(id: string): Promise> { +export function getLibraryById(id: string): Promise> { return API.get(`/libraries/${id}`) } @@ -34,7 +34,7 @@ export function getLibraryThumbnail(id: string): string { export function getLibrarySeries( id: string, { page, page_size, params }: PagedQueryParams, -): Promise> { +): Promise> { const searchParams = mergePageParams({ page, page_size, params }) return API.get(urlWithParams(`/libraries/${id}/series`, searchParams)) } @@ -45,11 +45,11 @@ export function getLibrarySeries( export function scanLibary(params: { id: string mode?: LibraryScanMode -}): Promise> { +}): Promise> { return API.get(`/libraries/${params.id}/scan?scan_mode=${params.mode ?? 'BATCHED'}`) } -export function cleanLibrary(id: string): Promise> { +export function cleanLibrary(id: string): Promise> { return API.put(`/libraries/${id}/clean`) } @@ -68,11 +68,11 @@ export function regenerateThumbnails(id: string, force?: boolean) { return API.post(`/libraries/${id}/thumbnail/generate`, { force_regenerate: !!force }) } -export function createLibrary(payload: CreateLibrary): Promise> { +export function createLibrary(payload: CreateLibrary): Promise> { return API.post('/libraries', payload) } -export function editLibrary(payload: UpdateLibrary): Promise> { +export function editLibrary(payload: UpdateLibrary): Promise> { return API.put(`/libraries/${payload.id}`, payload) } @@ -94,7 +94,7 @@ export function visitLibrary(id: string) { return API.put(`/libraries/last-visited/${id}`) } -export function getLastVisitedLibrary(): Promise> { +export function getLastVisitedLibrary(): Promise> { return API.get('/libraries/last-visited') } diff --git a/packages/api/src/log.ts b/packages/api/src/log.ts index 1a9daaa82..1d5c0768a 100644 --- a/packages/api/src/log.ts +++ b/packages/api/src/log.ts @@ -1,22 +1,34 @@ -import type { LogMetadata } from '@stump/types' +import type { Log, LogMetadata } from '@stump/types' import { API } from './axios' -import { ApiResult } from './types' +import { APIResult, PageableAPIResult } from './types' +import { toUrlParams } from './utils' -export function getLogFileMeta(): Promise> { - return API.get('/logs') +export function getLogs(params?: Record): Promise> { + if (params) { + const searchParams = toUrlParams(params) + return API.get(`/logs?${searchParams.toString()}`) + } else { + return API.get('/logs') + } +} + +export function getLogFileMeta(): Promise> { + return API.get('/logs/file/info') } export function clearLogFile() { - return API.delete('/logs') + return API.delete('/logs/file') } -const logApi = { +export const logApi = { clearLogFile, getLogFileMeta, + getLogs, } export const logQueryKeys: Record = { clearLogFile: 'log.clearLogFile', getLogFileMeta: 'log.getLogFileMeta', + getLogs: 'log.getLogs', } diff --git a/packages/api/src/media.ts b/packages/api/src/media.ts index 536f6321c..46f31192f 100644 --- a/packages/api/src/media.ts +++ b/packages/api/src/media.ts @@ -7,12 +7,12 @@ import type { } from '@stump/types' import { API } from './axios' -import { ApiResult, CursorQueryParams, PageableApiResult } from './types' +import { APIResult, CursorQueryParams, PageableAPIResult } from './types' import { mergeCursorParams, toUrlParams, urlWithParams } from './utils' -type GetMediaById = ApiResult +type GetMediaById = APIResult -export function getMedia(filters?: Record): Promise> { +export function getMedia(filters?: Record): Promise> { const params = toUrlParams(filters) return API.get(urlWithParams('/media', params)) } @@ -21,17 +21,16 @@ export function getMediaWithCursor({ afterId, limit, params, -}: CursorQueryParams): Promise> { +}: CursorQueryParams): Promise> { const searchParams = mergeCursorParams({ afterId, limit, params }) return API.get(urlWithParams('/media', searchParams)) } -export function getPaginatedMedia(page: number): Promise> { +export function getPaginatedMedia(page: number): Promise> { return API.get(`/media?page=${page}`) } export function getMediaById(id: string, params?: Record): Promise { - // return API.get(`/media/${id}?load_series=true`) if (params) { return API.get(`/media/${id}?${toUrlParams(params)}`) } else { @@ -39,7 +38,7 @@ export function getMediaById(id: string, params?: Record): Prom } } -export function getMediaByPath(path: string): Promise> { +export function getMediaByPath(path: string): Promise> { return API.get(`/media/path/${encodeURIComponent(path)}`) } @@ -47,7 +46,7 @@ export function getRecentlyAddedMedia({ afterId, limit, params, -}: CursorQueryParams): Promise> { +}: CursorQueryParams): Promise> { const searchParams = mergeCursorParams({ afterId, limit, params }) return API.get(urlWithParams('/media/recently-added', searchParams)) } @@ -56,7 +55,7 @@ export function getInProgressMedia({ afterId, limit, params, -}: CursorQueryParams): Promise> { +}: CursorQueryParams): Promise> { const searchParams = mergeCursorParams({ afterId, limit, params }) return API.get(urlWithParams('/media/keep-reading', searchParams)) } @@ -74,7 +73,7 @@ export function getMediaPage(id: string, page: number): string { return `${API.getUri()}/media/${id}/page/${page}` } -export function updateMediaProgress(id: string, page: number): Promise> { +export function updateMediaProgress(id: string, page: number): Promise> { return API.put(`/media/${id}/progress/${page}`) } @@ -95,7 +94,7 @@ export function uploadMediaThumbnail(id: string, file: File) { export function putMediaCompletion( id: string, payload: PutMediaCompletionStatus, -): Promise> { +): Promise> { return API.put(`/media/${id}/progress/complete`, payload) } diff --git a/packages/api/src/metadata.ts b/packages/api/src/metadata.ts index b7b8cfeee..2ed8c0f05 100644 --- a/packages/api/src/metadata.ts +++ b/packages/api/src/metadata.ts @@ -1,52 +1,52 @@ import { MediaMetadataOverview } from '@stump/types' import { API } from './axios' -import { ApiResult } from './types' +import { APIResult } from './types' import { toUrlParams, urlWithParams } from './utils' export function getMediaMetadataOverview( params?: Record, -): Promise> { +): Promise> { return API.get(urlWithParams('/metadata/media', toUrlParams(params))) } -export function getGenres(): Promise> { +export function getGenres(): Promise> { return API.get('/metadata/media/genres') } -export function getWriters(): Promise> { +export function getWriters(): Promise> { return API.get('/metadata/media/writers') } -export function getPencillers(): Promise> { +export function getPencillers(): Promise> { return API.get('/metadata/media/pencillers') } -export function getInkers(): Promise> { +export function getInkers(): Promise> { return API.get('/metadata/media/inkers') } -export function getColorists(): Promise> { +export function getColorists(): Promise> { return API.get('/metadata/media/colorists') } -export function getLetterers(): Promise> { +export function getLetterers(): Promise> { return API.get('/metadata/media/letterers') } -export function getEditors(): Promise> { +export function getEditors(): Promise> { return API.get('/metadata/media/editors') } -export function getPublishers(): Promise> { +export function getPublishers(): Promise> { return API.get('/metadata/media/publishers') } -export function getCharacters(): Promise> { +export function getCharacters(): Promise> { return API.get('/metadata/media/characters') } -export function getTeams(): Promise> { +export function getTeams(): Promise> { return API.get('/metadata/media/teams') } diff --git a/packages/api/src/series.ts b/packages/api/src/series.ts index 7d69f9b75..78c501079 100644 --- a/packages/api/src/series.ts +++ b/packages/api/src/series.ts @@ -2,10 +2,10 @@ import type { Media, PatchSeriesThumbnail, Series } from '@stump/types' import { API } from './axios' import { mediaApi } from './media' -import { ApiResult, CursorQueryParams, PageableApiResult, PagedQueryParams } from './types' +import { APIResult, CursorQueryParams, PageableAPIResult, PagedQueryParams } from './types' import { mergeCursorParams, mergePageParams, toUrlParams, urlWithParams } from './utils' -export function getSeries(filters?: Record): Promise> { +export function getSeries(filters?: Record): Promise> { const params = toUrlParams(filters) return API.get(urlWithParams('/series', params)) } @@ -13,13 +13,13 @@ export function getSeries(filters?: Record): Promise, -): Promise> { +): Promise> { return API.get(urlWithParams(`/series/${id}`, toUrlParams(params))) } export function getSeriesWithCursor( params: CursorQueryParams, -): Promise> { +): Promise> { const searchParams = mergeCursorParams(params) return API.get(urlWithParams('/series', searchParams)) } @@ -27,7 +27,7 @@ export function getSeriesWithCursor( export function getSeriesMedia( id: string, { page, page_size, params }: PagedQueryParams, -): Promise> { +): Promise> { const searchParams = mergePageParams({ page, page_size, params }) return API.get(urlWithParams(`/series/${id}/media`, searchParams)) } @@ -35,7 +35,7 @@ export function getSeriesMedia( export function getRecentlyAddedSeries( page: number, params?: URLSearchParams, -): Promise> { +): Promise> { if (params) { params.set('page', page.toString()) return API.get(`/series/recently-added?${params.toString()}`) @@ -44,7 +44,7 @@ export function getRecentlyAddedSeries( return API.get(`/series/recently-added?page=${page}`) } -export function getNextInSeries(id: string): Promise> { +export function getNextInSeries(id: string): Promise> { return API.get(`/series/${id}/media/next`) } @@ -55,7 +55,7 @@ export function getNextMediaInSeries( series_id: string, media_id: string, limit = 25, -): Promise> { +): Promise> { return mediaApi.getMedia({ cursor: media_id, limit: limit.toString(), diff --git a/packages/api/src/server.ts b/packages/api/src/server.ts index 6e623eacb..8364c5271 100644 --- a/packages/api/src/server.ts +++ b/packages/api/src/server.ts @@ -1,9 +1,9 @@ import type { ClaimResponse, StumpVersion } from '@stump/types' import { API } from './axios' -import { ApiResult } from './types' +import { APIResult } from './types' -export function getStumpVersion(): Promise> { +export function getStumpVersion(): Promise> { return API.post('/version') } @@ -11,7 +11,7 @@ export function ping() { return API.get('/ping') } -export async function checkIsClaimed(): Promise> { +export async function checkIsClaimed(): Promise> { return API.get('/claim') } diff --git a/packages/api/src/smartList.ts b/packages/api/src/smartList.ts index f0203c28a..78208c3cd 100644 --- a/packages/api/src/smartList.ts +++ b/packages/api/src/smartList.ts @@ -10,10 +10,10 @@ import { } from '@stump/types' import { API } from './axios' -import { ApiResult } from './types' +import { APIResult } from './types' import { toUrlParams, urlWithParams } from './utils' -export async function getSmartLists(params?: GetSmartListsParams): Promise> { +export async function getSmartLists(params?: GetSmartListsParams): Promise> { if (params) { const searchParams = toUrlParams(params) return API.get(urlWithParams('/smart-lists', searchParams)) @@ -22,14 +22,14 @@ export async function getSmartLists(params?: GetSmartListsParams): Promise> { +export async function createSmartList(payload: SmartList): Promise> { return API.post('/smart-lists', payload) } export async function getSmartListById( id: string, params?: SmartListRelationOptions, -): Promise> { +): Promise> { if (params) { const searchParams = toUrlParams(params) return API.get(urlWithParams(`/smart-lists/${id}`, searchParams)) @@ -38,11 +38,11 @@ export async function getSmartListById( } } -export async function getSmartListMeta(id: string): Promise> { +export async function getSmartListMeta(id: string): Promise> { return API.get(`/smart-lists/${id}/meta`) } -export async function getSmartListItems(id: string): Promise> { +export async function getSmartListItems(id: string): Promise> { return API.get(`/smart-lists/${id}/items`) } @@ -50,18 +50,18 @@ export async function getSmartListItems(id: string): Promise> { +): Promise> { return API.put(`/smart-lists/${id}`, payload) } -export async function deleteSmartList(id: string): Promise> { +export async function deleteSmartList(id: string): Promise> { return API.delete(`/smart-lists/${id}`) } export async function createSmartListView( listId: string, params: CreateOrUpdateSmartListView, -): Promise> { +): Promise> { return API.post(`/smart-lists/${listId}/views`, params) } @@ -69,7 +69,7 @@ export async function updateSmartListView( listId: string, name: string, params: CreateOrUpdateSmartListView, -): Promise> { +): Promise> { return API.put(`/smart-lists/${listId}/views/${name}`, params) } diff --git a/packages/api/src/tag.ts b/packages/api/src/tag.ts index 699927ffa..437e36040 100644 --- a/packages/api/src/tag.ts +++ b/packages/api/src/tag.ts @@ -1,13 +1,13 @@ import type { Tag } from '@stump/types' import { API } from './axios' -import { ApiResult } from './types' +import { APIResult } from './types' -export function getAllTags(): Promise> { +export function getAllTags(): Promise> { return API.get('/tags') } -export function createTags(tags: string[]): Promise> { +export function createTags(tags: string[]): Promise> { return API.post('/tags', { tags }) } diff --git a/packages/api/src/types.ts b/packages/api/src/types.ts index 3fc98e708..5afb8f02f 100644 --- a/packages/api/src/types.ts +++ b/packages/api/src/types.ts @@ -1,7 +1,7 @@ -import { ApiError, Pageable } from '@stump/types' +import { APIError, Pageable } from '@stump/types' -export type ApiResult = import('axios').AxiosResponse> -export type PageableApiResult = ApiResult> +export type APIResult = import('axios').AxiosResponse> +export type PageableAPIResult = APIResult> export type PagedQueryParams = { page?: number diff --git a/packages/api/src/user.ts b/packages/api/src/user.ts index 061ab62c9..cae3e1556 100644 --- a/packages/api/src/user.ts +++ b/packages/api/src/user.ts @@ -8,10 +8,10 @@ import type { } from '@stump/types' import { API } from './axios' -import { ApiResult, PageableApiResult } from './types' +import { APIResult, PageableAPIResult } from './types' import { toUrlParams } from './utils' -export function getUsers(params?: Record): Promise> { +export function getUsers(params?: Record): Promise> { if (params) { const searchParams = toUrlParams(params) return API.get(`/users?${searchParams.toString()}`) @@ -20,11 +20,11 @@ export function getUsers(params?: Record): Promise> { +export function getUserById(userId: string): Promise> { return API.get(`/users/${userId}`) } -export function getUserPreferences(userId: string): Promise> { +export function getUserPreferences(userId: string): Promise> { return API.get(`/users/${userId}/preferences`) } @@ -33,7 +33,7 @@ export function getUserPreferences(userId: string): Promise> { +): Promise> { return API.put(`/users/me/preferences`, preferences) } @@ -43,19 +43,19 @@ export function updatePreferences( export function updateUserPreferences( userId: string, preferences: UserPreferences, -): Promise> { +): Promise> { return API.put(`/users/${userId}/preferences`, preferences) } -export function createUser(params: CreateUser): Promise> { +export function createUser(params: CreateUser): Promise> { return API.post(`/users`, params) } -export function updateUser(userId: string, params: UpdateUser): Promise> { +export function updateUser(userId: string, params: UpdateUser): Promise> { return API.put(`/users/${userId}`, params) } -export function updateViewer(params: UpdateUser): Promise> { +export function updateViewer(params: UpdateUser): Promise> { return API.put(`/users/me`, params) } @@ -64,7 +64,7 @@ type DeleteUser = { hardDelete?: boolean } -export function deleteUser({ userId, hardDelete }: DeleteUser): Promise> { +export function deleteUser({ userId, hardDelete }: DeleteUser): Promise> { return API.delete(`/users/${userId}`, { data: { hard_delete: hardDelete, @@ -72,25 +72,25 @@ export function deleteUser({ userId, hardDelete }: DeleteUser): Promise> { +export function getLoginActivityForUser(userId: string): Promise> { return API.get(`/users/${userId}/login-activity`) } -export function getLoginActivity(): Promise> { +export function getLoginActivity(): Promise> { return API.get(`/users/login-activity`) } -export function deleteAllLoginActivity(): Promise> { +export function deleteAllLoginActivity(): Promise> { return API.delete(`/users/login-activity`) } -export function setLockStatus(userId: string, lock: boolean): Promise> { +export function setLockStatus(userId: string, lock: boolean): Promise> { return API.put(`/users/${userId}/lock`, { lock, }) } -export function deleteUserSessions(userId: string): Promise> { +export function deleteUserSessions(userId: string): Promise> { return API.delete(`/users/${userId}/sessions`) } diff --git a/interface/package.json b/packages/browser/package.json similarity index 94% rename from interface/package.json rename to packages/browser/package.json index 334761ef3..6ec870f9c 100644 --- a/interface/package.json +++ b/packages/browser/package.json @@ -1,5 +1,5 @@ { - "name": "@stump/interface", + "name": "@stump/browser", "version": "0.0.0", "description": "", "license": "MIT", @@ -67,12 +67,5 @@ }, "peerDependencies": { "react-router-dom": "^6.8.1" - }, - "pnpm": { - "peerDependencyRules": { - "ignoreMissing": [ - "@babel/core" - ] - } } } diff --git a/interface/public/assets/fallbacks/image-file.svg b/packages/browser/public/assets/fallbacks/image-file.svg similarity index 100% rename from interface/public/assets/fallbacks/image-file.svg rename to packages/browser/public/assets/fallbacks/image-file.svg diff --git a/interface/public/assets/favicon.ico b/packages/browser/public/assets/favicon.ico similarity index 100% rename from interface/public/assets/favicon.ico rename to packages/browser/public/assets/favicon.ico diff --git a/interface/public/assets/favicon.png b/packages/browser/public/assets/favicon.png similarity index 100% rename from interface/public/assets/favicon.png rename to packages/browser/public/assets/favicon.png diff --git a/interface/public/assets/icons/archive.svg b/packages/browser/public/assets/icons/archive.svg similarity index 100% rename from interface/public/assets/icons/archive.svg rename to packages/browser/public/assets/icons/archive.svg diff --git a/interface/public/assets/icons/epub.svg b/packages/browser/public/assets/icons/epub.svg similarity index 100% rename from interface/public/assets/icons/epub.svg rename to packages/browser/public/assets/icons/epub.svg diff --git a/interface/public/assets/icons/folder.png b/packages/browser/public/assets/icons/folder.png similarity index 100% rename from interface/public/assets/icons/folder.png rename to packages/browser/public/assets/icons/folder.png diff --git a/interface/public/assets/icons/pdf.svg b/packages/browser/public/assets/icons/pdf.svg similarity index 100% rename from interface/public/assets/icons/pdf.svg rename to packages/browser/public/assets/icons/pdf.svg diff --git a/interface/public/assets/stump-logo--irregular-lg.png b/packages/browser/public/assets/stump-logo--irregular-lg.png similarity index 100% rename from interface/public/assets/stump-logo--irregular-lg.png rename to packages/browser/public/assets/stump-logo--irregular-lg.png diff --git a/interface/public/assets/stump-logo--irregular-sm.png b/packages/browser/public/assets/stump-logo--irregular-sm.png similarity index 100% rename from interface/public/assets/stump-logo--irregular-sm.png rename to packages/browser/public/assets/stump-logo--irregular-sm.png diff --git a/interface/public/assets/stump-logo--irregular-xs.png b/packages/browser/public/assets/stump-logo--irregular-xs.png similarity index 100% rename from interface/public/assets/stump-logo--irregular-xs.png rename to packages/browser/public/assets/stump-logo--irregular-xs.png diff --git a/interface/public/assets/stump-logo--irregular.png b/packages/browser/public/assets/stump-logo--irregular.png similarity index 100% rename from interface/public/assets/stump-logo--irregular.png rename to packages/browser/public/assets/stump-logo--irregular.png diff --git a/interface/public/assets/stump-logo--square.png b/packages/browser/public/assets/stump-logo--square.png similarity index 100% rename from interface/public/assets/stump-logo--square.png rename to packages/browser/public/assets/stump-logo--square.png diff --git a/interface/public/assets/stump-splash.gif b/packages/browser/public/assets/stump-splash.gif similarity index 100% rename from interface/public/assets/stump-splash.gif rename to packages/browser/public/assets/stump-splash.gif diff --git a/interface/public/favicon.ico b/packages/browser/public/favicon.ico similarity index 100% rename from interface/public/favicon.ico rename to packages/browser/public/favicon.ico diff --git a/interface/src/App.tsx b/packages/browser/src/App.tsx similarity index 67% rename from interface/src/App.tsx rename to packages/browser/src/App.tsx index 68b7ffd1f..f501cadb0 100644 --- a/interface/src/App.tsx +++ b/packages/browser/src/App.tsx @@ -3,11 +3,9 @@ import '@stump/components/styles/overrides.css' import { initializeApi } from '@stump/api' import { - AppProps, - AppPropsContext, - JobContextProvider, StumpClientContextProvider, - useStumpStore, + StumpClientProps, + useAppStore, useUserStore, } from '@stump/client' import { defaultContext } from '@tanstack/react-query' @@ -25,30 +23,35 @@ import { API_VERSION } from './index' const IS_DEVELOPMENT = import.meta.env.MODE === 'development' -function RouterContainer(props: { appProps: AppProps }) { +export default function StumpWebClient(props: StumpClientProps) { + return ( + + + + + + ) +} + +function RouterContainer(props: StumpClientProps) { const location = useLocation() const navigate = useNavigate() const [mounted, setMounted] = useState(false) - const [appProps, setAppProps] = useState(props.appProps) const { userPreferences } = useUserStore(({ userPreferences }) => ({ userPreferences })) - const { baseUrl, setBaseUrl } = useStumpStore(({ baseUrl, setBaseUrl }) => ({ - baseUrl, - setBaseUrl, + const { baseUrl, setBaseUrl, setPlatform } = useAppStore((store) => ({ + baseUrl: store.baseUrl, + setBaseUrl: store.setBaseUrl, + setPlatform: store.setPlatform, })) useEffect( () => { - if (!baseUrl && appProps.baseUrl) { - setBaseUrl(appProps.baseUrl) + if (!baseUrl && props.baseUrl) { + setBaseUrl(props.baseUrl) } else if (baseUrl) { initializeApi(baseUrl, API_VERSION) - - setAppProps((appProps) => ({ - ...appProps, - baseUrl, - })) } setMounted(true) @@ -58,6 +61,10 @@ function RouterContainer(props: { appProps: AppProps }) { [baseUrl], ) + useEffect(() => { + setPlatform(props.platform) + }, [props.platform, setPlatform]) + const appTheme = (userPreferences?.app_theme ?? 'light').toLowerCase() useEffect(() => { const html = document.querySelector('html') @@ -65,7 +72,7 @@ function RouterContainer(props: { appProps: AppProps }) { html?.classList.add(appTheme) }, [appTheme]) - const { setUseDiscordPresence, setDiscordPresence } = appProps + const { setUseDiscordPresence, setDiscordPresence } = props const discordPresenceEnabled = userPreferences?.enable_discord_presence ?? false useEffect(() => { setUseDiscordPresence?.(discordPresenceEnabled) @@ -84,34 +91,21 @@ function RouterContainer(props: { appProps: AppProps }) { } if (!mounted) { - // TODO: suspend return null } return ( - + {IS_DEVELOPMENT && } - - - Stump - - - - - + + Stump + + ) } - -export default function StumpInterface(props: AppProps) { - return ( - <> - - - - - - - ) -} diff --git a/interface/src/AppLayout.tsx b/packages/browser/src/AppLayout.tsx similarity index 95% rename from interface/src/AppLayout.tsx rename to packages/browser/src/AppLayout.tsx index 1e0e386a9..9bc93fb9b 100644 --- a/interface/src/AppLayout.tsx +++ b/packages/browser/src/AppLayout.tsx @@ -1,5 +1,5 @@ import { isAxiosError } from '@stump/api' -import { useAppProps, useAuthQuery, useCoreEventHandler, useUserStore } from '@stump/client' +import { useAppStore, useAuthQuery, useCoreEventHandler, useUserStore } from '@stump/client' import { cx } from '@stump/components' import { UserPermission, UserPreferences } from '@stump/types' import { Suspense, useCallback, useMemo } from 'react' @@ -15,8 +15,7 @@ import ServerStatusOverlay from '@/components/ServerStatusOverlay' import { AppContext, PermissionEnforcerOptions } from './context' export function AppLayout() { - const appProps = useAppProps() - + const platform = useAppStore((state) => state.platform) const location = useLocation() const navigate = useNavigate() const isMobile = useMediaMatch('(max-width: 768px)') @@ -126,7 +125,7 @@ export function AppLayout() { - {appProps?.platform !== 'browser' && } + {platform !== 'browser' && } {!location.pathname.match(/\/settings\/jobs/) && } diff --git a/interface/src/AppRouter.tsx b/packages/browser/src/AppRouter.tsx similarity index 65% rename from interface/src/AppRouter.tsx rename to packages/browser/src/AppRouter.tsx index f3c61575b..a728c0c2a 100644 --- a/interface/src/AppRouter.tsx +++ b/packages/browser/src/AppRouter.tsx @@ -1,5 +1,5 @@ -import { useAppProps } from '@stump/client' -import React from 'react' +import { useAppStore } from '@stump/client' +import React, { lazy } from 'react' import { Route, Routes } from 'react-router-dom' import { AppLayout } from './AppLayout.tsx' @@ -10,31 +10,25 @@ import LibraryRouter from './scenes/library/LibraryRouter.tsx' import OnBoardingRouter from './scenes/onboarding/OnBoardingRouter.tsx' import SeriesRouter from './scenes/series/SeriesRouter.tsx' import SettingsRouter from './scenes/settings/SettingsRouter.tsx' -import { SmartListRouter } from './scenes/smart-list' +import { SmartListRouter } from './scenes/smart-list/index.ts' -// FIXME: this is really annoying -export type LazyComponent = Promise<{ - // eslint-disable-next-line @typescript-eslint/no-explicit-any - default: React.ComponentType -}> - -// I'm still so annoyed at this lol -export const lazily = (loader: () => unknown) => React.lazy(() => loader() as LazyComponent) - -const HomeScene = lazily(() => import('./scenes/home/HomeScene.tsx')) -const FourOhFour = lazily(() => import('./scenes/error/FourOhFour.tsx')) -const ServerConnectionErrorScene = lazily( +const HomeScene = lazy(() => import('./scenes/home/HomeScene.tsx')) +const FourOhFour = lazy(() => import('./scenes/error/FourOhFour.tsx')) +const ServerConnectionErrorScene = lazy( () => import('./scenes/error/ServerConnectionErrorScene.tsx'), ) -const LoginOrClaimScene = lazily(() => import('./scenes/auth/LoginOrClaimScene.tsx')) +const LoginOrClaimScene = lazy(() => import('./scenes/auth/LoginOrClaimScene.tsx')) const IS_DEVELOPMENT = import.meta.env.MODE === 'development' export function AppRouter() { - const appProps = useAppProps() + const { baseUrl, platform } = useAppStore((store) => ({ + baseUrl: store.baseUrl, + platform: store.platform, + })) - if (!appProps?.baseUrl) { - if (appProps?.platform === 'browser') { + if (!baseUrl) { + if (platform === 'browser') { throw new Error('Base URL is not set') } diff --git a/interface/src/components/BackgroundFetchIndicator.tsx b/packages/browser/src/components/BackgroundFetchIndicator.tsx similarity index 100% rename from interface/src/components/BackgroundFetchIndicator.tsx rename to packages/browser/src/components/BackgroundFetchIndicator.tsx diff --git a/interface/src/components/DirectoryPickerModal.tsx b/packages/browser/src/components/DirectoryPickerModal.tsx similarity index 100% rename from interface/src/components/DirectoryPickerModal.tsx rename to packages/browser/src/components/DirectoryPickerModal.tsx diff --git a/interface/src/components/ErrorFallback.tsx b/packages/browser/src/components/ErrorFallback.tsx similarity index 100% rename from interface/src/components/ErrorFallback.tsx rename to packages/browser/src/components/ErrorFallback.tsx diff --git a/interface/src/components/FileStatusBadge.tsx b/packages/browser/src/components/FileStatusBadge.tsx similarity index 100% rename from interface/src/components/FileStatusBadge.tsx rename to packages/browser/src/components/FileStatusBadge.tsx diff --git a/interface/src/components/GenericEmptyState.tsx b/packages/browser/src/components/GenericEmptyState.tsx similarity index 100% rename from interface/src/components/GenericEmptyState.tsx rename to packages/browser/src/components/GenericEmptyState.tsx diff --git a/interface/src/components/HorizontalCardList.tsx b/packages/browser/src/components/HorizontalCardList.tsx similarity index 100% rename from interface/src/components/HorizontalCardList.tsx rename to packages/browser/src/components/HorizontalCardList.tsx diff --git a/interface/src/components/LazyImage.tsx b/packages/browser/src/components/LazyImage.tsx similarity index 100% rename from interface/src/components/LazyImage.tsx rename to packages/browser/src/components/LazyImage.tsx diff --git a/interface/src/components/LinkBadge.tsx b/packages/browser/src/components/LinkBadge.tsx similarity index 100% rename from interface/src/components/LinkBadge.tsx rename to packages/browser/src/components/LinkBadge.tsx diff --git a/interface/src/components/ListItem.tsx b/packages/browser/src/components/ListItem.tsx similarity index 100% rename from interface/src/components/ListItem.tsx rename to packages/browser/src/components/ListItem.tsx diff --git a/interface/src/components/Notifications.tsx b/packages/browser/src/components/Notifications.tsx similarity index 100% rename from interface/src/components/Notifications.tsx rename to packages/browser/src/components/Notifications.tsx diff --git a/interface/src/components/PagePopoverForm.tsx b/packages/browser/src/components/PagePopoverForm.tsx similarity index 100% rename from interface/src/components/PagePopoverForm.tsx rename to packages/browser/src/components/PagePopoverForm.tsx diff --git a/interface/src/components/Pagination.tsx b/packages/browser/src/components/Pagination.tsx similarity index 100% rename from interface/src/components/Pagination.tsx rename to packages/browser/src/components/Pagination.tsx diff --git a/interface/src/components/ReadMore.tsx b/packages/browser/src/components/ReadMore.tsx similarity index 100% rename from interface/src/components/ReadMore.tsx rename to packages/browser/src/components/ReadMore.tsx diff --git a/interface/src/components/RouteLoadingIndicator.tsx b/packages/browser/src/components/RouteLoadingIndicator.tsx similarity index 100% rename from interface/src/components/RouteLoadingIndicator.tsx rename to packages/browser/src/components/RouteLoadingIndicator.tsx diff --git a/interface/src/components/ServerOwnerRouteWrapper.tsx b/packages/browser/src/components/ServerOwnerRouteWrapper.tsx similarity index 100% rename from interface/src/components/ServerOwnerRouteWrapper.tsx rename to packages/browser/src/components/ServerOwnerRouteWrapper.tsx diff --git a/interface/src/components/ServerStatusOverlay.tsx b/packages/browser/src/components/ServerStatusOverlay.tsx similarity index 88% rename from interface/src/components/ServerStatusOverlay.tsx rename to packages/browser/src/components/ServerStatusOverlay.tsx index 4fe743a17..1556a5051 100644 --- a/interface/src/components/ServerStatusOverlay.tsx +++ b/packages/browser/src/components/ServerStatusOverlay.tsx @@ -1,29 +1,30 @@ -import { useStumpStore } from '@stump/client' +import { useAppStore } from '@stump/client' import { Link, Text } from '@stump/components' import { AnimatePresence, motion } from 'framer-motion' import { useEffect, useState } from 'react' export default function ServerStatusOverlay() { - const { connected } = useStumpStore(({ connected }) => ({ connected })) const [show, setShow] = useState(false) + const isConnected = useAppStore((store) => store.isConnectedWithServer) + useEffect(() => { let timer: NodeJS.Timeout // after 4 seconds, if still !connected, show the overlay - if (!connected) { + if (!isConnected) { timer = setInterval(() => { - if (!connected) { + if (!isConnected) { setShow(true) } }, 4000) - } else if (connected) { + } else if (isConnected) { setShow(false) } return () => { clearInterval(timer) } - }, [connected]) + }, [isConnected]) return ( diff --git a/interface/src/components/ServerUrlForm.tsx b/packages/browser/src/components/ServerUrlForm.tsx similarity index 95% rename from interface/src/components/ServerUrlForm.tsx rename to packages/browser/src/components/ServerUrlForm.tsx index ef8bb5869..7f51d5c2f 100644 --- a/interface/src/components/ServerUrlForm.tsx +++ b/packages/browser/src/components/ServerUrlForm.tsx @@ -1,6 +1,6 @@ import { zodResolver } from '@hookform/resolvers/zod' import { checkUrl, isUrl } from '@stump/api' -import { useStumpStore } from '@stump/client' +import { useAppStore } from '@stump/client' import { Button, Form, Input, ProgressSpinner, Text, useBoolean } from '@stump/components' import { CloudCheck, CloudSlash } from 'phosphor-react' import { useEffect, useMemo, useState } from 'react' @@ -10,9 +10,9 @@ import { z } from 'zod' // TODO: retest this component. I blindly refactored it when migrating off chakra... export default function ServerUrlForm() { - const { setBaseUrl } = useStumpStore(({ setBaseUrl }) => ({ setBaseUrl })) const [isCheckingUrl, { on, off }] = useBoolean(false) const [sucessfulConnection, setSuccessfulConnection] = useState(false) + const setBaseURL = useAppStore((store) => store.setBaseUrl) const schema = z.object({ baseUrl: z @@ -77,7 +77,7 @@ export default function ServerUrlForm() { async function handleSubmit(values: Schema) { const { baseUrl } = values - setBaseUrl(baseUrl) + setBaseURL(baseUrl) // FIXME: super cringe, big no window.location.href = '/' diff --git a/interface/src/components/TagSelect.tsx b/packages/browser/src/components/TagSelect.tsx similarity index 100% rename from interface/src/components/TagSelect.tsx rename to packages/browser/src/components/TagSelect.tsx diff --git a/interface/src/components/UpdateAvailableOverlay.tsx b/packages/browser/src/components/UpdateAvailableOverlay.tsx similarity index 100% rename from interface/src/components/UpdateAvailableOverlay.tsx rename to packages/browser/src/components/UpdateAvailableOverlay.tsx diff --git a/interface/src/components/UserMenu.tsx b/packages/browser/src/components/UserMenu.tsx similarity index 100% rename from interface/src/components/UserMenu.tsx rename to packages/browser/src/components/UserMenu.tsx diff --git a/interface/src/components/container/Container.tsx b/packages/browser/src/components/container/Container.tsx similarity index 100% rename from interface/src/components/container/Container.tsx rename to packages/browser/src/components/container/Container.tsx diff --git a/interface/src/components/container/ContentContainer.tsx b/packages/browser/src/components/container/ContentContainer.tsx similarity index 100% rename from interface/src/components/container/ContentContainer.tsx rename to packages/browser/src/components/container/ContentContainer.tsx diff --git a/interface/src/components/container/SceneContainer.tsx b/packages/browser/src/components/container/SceneContainer.tsx similarity index 100% rename from interface/src/components/container/SceneContainer.tsx rename to packages/browser/src/components/container/SceneContainer.tsx diff --git a/interface/src/components/container/index.ts b/packages/browser/src/components/container/index.ts similarity index 100% rename from interface/src/components/container/index.ts rename to packages/browser/src/components/container/index.ts diff --git a/interface/src/components/container/useSceneContainer.ts b/packages/browser/src/components/container/useSceneContainer.ts similarity index 100% rename from interface/src/components/container/useSceneContainer.ts rename to packages/browser/src/components/container/useSceneContainer.ts diff --git a/interface/src/components/filters/FilterDisplay.tsx b/packages/browser/src/components/filters/FilterDisplay.tsx similarity index 100% rename from interface/src/components/filters/FilterDisplay.tsx rename to packages/browser/src/components/filters/FilterDisplay.tsx diff --git a/interface/src/components/filters/FilterProvider.tsx b/packages/browser/src/components/filters/FilterProvider.tsx similarity index 100% rename from interface/src/components/filters/FilterProvider.tsx rename to packages/browser/src/components/filters/FilterProvider.tsx diff --git a/interface/src/components/filters/FilterSlideOver.tsx b/packages/browser/src/components/filters/FilterSlideOver.tsx similarity index 100% rename from interface/src/components/filters/FilterSlideOver.tsx rename to packages/browser/src/components/filters/FilterSlideOver.tsx diff --git a/interface/src/components/filters/FilterToolBar.tsx b/packages/browser/src/components/filters/FilterToolBar.tsx similarity index 100% rename from interface/src/components/filters/FilterToolBar.tsx rename to packages/browser/src/components/filters/FilterToolBar.tsx diff --git a/interface/src/components/filters/OrderBy.tsx b/packages/browser/src/components/filters/OrderBy.tsx similarity index 100% rename from interface/src/components/filters/OrderBy.tsx rename to packages/browser/src/components/filters/OrderBy.tsx diff --git a/interface/src/components/filters/Search.tsx b/packages/browser/src/components/filters/Search.tsx similarity index 100% rename from interface/src/components/filters/Search.tsx rename to packages/browser/src/components/filters/Search.tsx diff --git a/interface/src/components/filters/context.ts b/packages/browser/src/components/filters/context.ts similarity index 100% rename from interface/src/components/filters/context.ts rename to packages/browser/src/components/filters/context.ts diff --git a/interface/src/components/filters/form/AgeRatingFilter.tsx b/packages/browser/src/components/filters/form/AgeRatingFilter.tsx similarity index 100% rename from interface/src/components/filters/form/AgeRatingFilter.tsx rename to packages/browser/src/components/filters/form/AgeRatingFilter.tsx diff --git a/interface/src/components/filters/form/ExtensionSelect.tsx b/packages/browser/src/components/filters/form/ExtensionSelect.tsx similarity index 100% rename from interface/src/components/filters/form/ExtensionSelect.tsx rename to packages/browser/src/components/filters/form/ExtensionSelect.tsx diff --git a/interface/src/components/filters/form/GenericFilterMultiselect.tsx b/packages/browser/src/components/filters/form/GenericFilterMultiselect.tsx similarity index 100% rename from interface/src/components/filters/form/GenericFilterMultiselect.tsx rename to packages/browser/src/components/filters/form/GenericFilterMultiselect.tsx diff --git a/interface/src/components/filters/form/MediaFilterForm.tsx b/packages/browser/src/components/filters/form/MediaFilterForm.tsx similarity index 100% rename from interface/src/components/filters/form/MediaFilterForm.tsx rename to packages/browser/src/components/filters/form/MediaFilterForm.tsx diff --git a/interface/src/components/filters/form/OrderByDirection.tsx b/packages/browser/src/components/filters/form/OrderByDirection.tsx similarity index 100% rename from interface/src/components/filters/form/OrderByDirection.tsx rename to packages/browser/src/components/filters/form/OrderByDirection.tsx diff --git a/interface/src/components/filters/form/OrderBySelect.tsx b/packages/browser/src/components/filters/form/OrderBySelect.tsx similarity index 100% rename from interface/src/components/filters/form/OrderBySelect.tsx rename to packages/browser/src/components/filters/form/OrderBySelect.tsx diff --git a/interface/src/components/filters/form/ReadStatusSelect.tsx b/packages/browser/src/components/filters/form/ReadStatusSelect.tsx similarity index 100% rename from interface/src/components/filters/form/ReadStatusSelect.tsx rename to packages/browser/src/components/filters/form/ReadStatusSelect.tsx diff --git a/interface/src/components/filters/form/SeriesFilterForm.tsx b/packages/browser/src/components/filters/form/SeriesFilterForm.tsx similarity index 100% rename from interface/src/components/filters/form/SeriesFilterForm.tsx rename to packages/browser/src/components/filters/form/SeriesFilterForm.tsx diff --git a/interface/src/components/filters/form/index.ts b/packages/browser/src/components/filters/form/index.ts similarity index 100% rename from interface/src/components/filters/form/index.ts rename to packages/browser/src/components/filters/form/index.ts diff --git a/interface/src/components/filters/form/utils.ts b/packages/browser/src/components/filters/form/utils.ts similarity index 100% rename from interface/src/components/filters/form/utils.ts rename to packages/browser/src/components/filters/form/utils.ts diff --git a/interface/src/components/filters/index.ts b/packages/browser/src/components/filters/index.ts similarity index 100% rename from interface/src/components/filters/index.ts rename to packages/browser/src/components/filters/index.ts diff --git a/packages/browser/src/components/jobs/JobOverlay.tsx b/packages/browser/src/components/jobs/JobOverlay.tsx new file mode 100644 index 000000000..bb574381f --- /dev/null +++ b/packages/browser/src/components/jobs/JobOverlay.tsx @@ -0,0 +1,90 @@ +import { useJobStore } from '@stump/client' +import { ProgressBar, Text } from '@stump/components' +import { AnimatePresence, motion } from 'framer-motion' +import { useMemo } from 'react' + +export default function JobOverlay() { + const storeJobs = useJobStore((state) => state.jobs) + + // get the first job that is running from the activeJobs object + const firstRunningJob = useMemo( + () => Object.values(storeJobs).find((job) => job.status === 'RUNNING'), + [storeJobs], + ) + + const getSubTaskCounts = () => { + if (!firstRunningJob) return null + + const { completed_subtasks, remaining_subtasks } = firstRunningJob + if (remaining_subtasks != null && remaining_subtasks > 0) { + return getCounts(completed_subtasks, remaining_subtasks) + } else { + return null + } + } + const subTaskCounts = useMemo(getSubTaskCounts, [firstRunningJob]) + + const getTaskCounts = () => { + if (!firstRunningJob) return null + + const { completed_tasks, remaining_tasks } = firstRunningJob + if (remaining_tasks != null && remaining_tasks >= 0) { + return getCounts(completed_tasks, remaining_tasks) + } else { + return null + } + } + const taskCounts = useMemo(getTaskCounts, [firstRunningJob]) + + const progressValue = useMemo(() => { + if (subTaskCounts != null) { + const { completed, total } = subTaskCounts + return (completed / total) * 100 + } else if (taskCounts != null) { + const { completed, total } = taskCounts + return (completed / total) * 100 + } + + return null + }, [subTaskCounts, taskCounts]) + + const renderTaskCounts = () => `${taskCounts?.completed ?? 0}/${taskCounts?.total ?? 0}` + const renderSubTaskCounts = () => `${subTaskCounts?.completed ?? 0}/${subTaskCounts?.total ?? 0}` + + return ( + + {firstRunningJob && ( + + + {firstRunningJob.message ?? 'Job in Progress'} + + +
+
+ Tasks ({renderTaskCounts()}) + {subTaskCounts && {renderSubTaskCounts()}} +
+ +
+
+ )} +
+ ) +} + +type TaskCount = { + completed: number + total: number +} +const getCounts = (completed: number | null, remaining: number | null): TaskCount => { + const total = (completed ?? 0) + (remaining ?? 0) + return { + completed: completed ?? 0, + total, + } +} diff --git a/interface/src/components/jobs/utils.ts b/packages/browser/src/components/jobs/utils.ts similarity index 100% rename from interface/src/components/jobs/utils.ts rename to packages/browser/src/components/jobs/utils.ts diff --git a/interface/src/components/library/DeleteLibraryConfirmation.tsx b/packages/browser/src/components/library/DeleteLibraryConfirmation.tsx similarity index 100% rename from interface/src/components/library/DeleteLibraryConfirmation.tsx rename to packages/browser/src/components/library/DeleteLibraryConfirmation.tsx diff --git a/interface/src/components/library/LastVisitedLibrary.tsx b/packages/browser/src/components/library/LastVisitedLibrary.tsx similarity index 100% rename from interface/src/components/library/LastVisitedLibrary.tsx rename to packages/browser/src/components/library/LastVisitedLibrary.tsx diff --git a/interface/src/components/library/LibrariesStats.tsx b/packages/browser/src/components/library/LibrariesStats.tsx similarity index 100% rename from interface/src/components/library/LibrariesStats.tsx rename to packages/browser/src/components/library/LibrariesStats.tsx diff --git a/interface/src/components/library/index.ts b/packages/browser/src/components/library/index.ts similarity index 100% rename from interface/src/components/library/index.ts rename to packages/browser/src/components/library/index.ts diff --git a/interface/src/components/markdown/MarkdownEditor.tsx b/packages/browser/src/components/markdown/MarkdownEditor.tsx similarity index 100% rename from interface/src/components/markdown/MarkdownEditor.tsx rename to packages/browser/src/components/markdown/MarkdownEditor.tsx diff --git a/interface/src/components/markdown/MarkdownPreview.tsx b/packages/browser/src/components/markdown/MarkdownPreview.tsx similarity index 100% rename from interface/src/components/markdown/MarkdownPreview.tsx rename to packages/browser/src/components/markdown/MarkdownPreview.tsx diff --git a/interface/src/components/media/BookSearch.tsx b/packages/browser/src/components/media/BookSearch.tsx similarity index 100% rename from interface/src/components/media/BookSearch.tsx rename to packages/browser/src/components/media/BookSearch.tsx diff --git a/interface/src/components/media/BookSearchOverlay.tsx b/packages/browser/src/components/media/BookSearchOverlay.tsx similarity index 100% rename from interface/src/components/media/BookSearchOverlay.tsx rename to packages/browser/src/components/media/BookSearchOverlay.tsx diff --git a/interface/src/components/media/MediaCard.tsx b/packages/browser/src/components/media/MediaCard.tsx similarity index 100% rename from interface/src/components/media/MediaCard.tsx rename to packages/browser/src/components/media/MediaCard.tsx diff --git a/interface/src/components/media/MediaList.tsx b/packages/browser/src/components/media/MediaList.tsx similarity index 100% rename from interface/src/components/media/MediaList.tsx rename to packages/browser/src/components/media/MediaList.tsx diff --git a/interface/src/components/navigation/index.ts b/packages/browser/src/components/navigation/index.ts similarity index 100% rename from interface/src/components/navigation/index.ts rename to packages/browser/src/components/navigation/index.ts diff --git a/interface/src/components/navigation/mobile/LayoutModeButtons.tsx b/packages/browser/src/components/navigation/mobile/LayoutModeButtons.tsx similarity index 100% rename from interface/src/components/navigation/mobile/LayoutModeButtons.tsx rename to packages/browser/src/components/navigation/mobile/LayoutModeButtons.tsx diff --git a/interface/src/components/navigation/mobile/MobileSheet.tsx b/packages/browser/src/components/navigation/mobile/MobileSheet.tsx similarity index 100% rename from interface/src/components/navigation/mobile/MobileSheet.tsx rename to packages/browser/src/components/navigation/mobile/MobileSheet.tsx diff --git a/interface/src/components/navigation/mobile/MobileTopBar.tsx b/packages/browser/src/components/navigation/mobile/MobileTopBar.tsx similarity index 100% rename from interface/src/components/navigation/mobile/MobileTopBar.tsx rename to packages/browser/src/components/navigation/mobile/MobileTopBar.tsx diff --git a/interface/src/components/navigation/mobile/NavigationButtons.tsx b/packages/browser/src/components/navigation/mobile/NavigationButtons.tsx similarity index 100% rename from interface/src/components/navigation/mobile/NavigationButtons.tsx rename to packages/browser/src/components/navigation/mobile/NavigationButtons.tsx diff --git a/interface/src/components/navigation/mobile/index.ts b/packages/browser/src/components/navigation/mobile/index.ts similarity index 100% rename from interface/src/components/navigation/mobile/index.ts rename to packages/browser/src/components/navigation/mobile/index.ts diff --git a/interface/src/components/navigation/sidebar/ApplicationVersion.tsx b/packages/browser/src/components/navigation/sidebar/ApplicationVersion.tsx similarity index 100% rename from interface/src/components/navigation/sidebar/ApplicationVersion.tsx rename to packages/browser/src/components/navigation/sidebar/ApplicationVersion.tsx diff --git a/interface/src/components/navigation/sidebar/Logout.tsx b/packages/browser/src/components/navigation/sidebar/Logout.tsx similarity index 100% rename from interface/src/components/navigation/sidebar/Logout.tsx rename to packages/browser/src/components/navigation/sidebar/Logout.tsx diff --git a/interface/src/components/navigation/sidebar/Settings.tsx b/packages/browser/src/components/navigation/sidebar/Settings.tsx similarity index 100% rename from interface/src/components/navigation/sidebar/Settings.tsx rename to packages/browser/src/components/navigation/sidebar/Settings.tsx diff --git a/interface/src/components/navigation/sidebar/SideBar.tsx b/packages/browser/src/components/navigation/sidebar/SideBar.tsx similarity index 94% rename from interface/src/components/navigation/sidebar/SideBar.tsx rename to packages/browser/src/components/navigation/sidebar/SideBar.tsx index a29778bbe..35c00ca53 100644 --- a/interface/src/components/navigation/sidebar/SideBar.tsx +++ b/packages/browser/src/components/navigation/sidebar/SideBar.tsx @@ -1,4 +1,4 @@ -import { useAppProps } from '@stump/client' +import { useAppStore } from '@stump/client' import { Spacer } from '@stump/components' import { motion } from 'framer-motion' import { Book, Home } from 'lucide-react' @@ -22,7 +22,8 @@ type Props = { } export default function SideBar({ asChild, hidden }: Props) { - const { platform } = useAppProps() + const platform = useAppStore((store) => store.platform) + const { t } = useLocaleContext() const { checkPermission } = useAppContext() @@ -51,7 +52,7 @@ export default function SideBar({ asChild, hidden }: Props) { {renderHeader()}
- {!isMobile && } + {!isMobile && isBrowser && }
diff --git a/interface/src/components/navigation/sidebar/SideBarButtonLink.tsx b/packages/browser/src/components/navigation/sidebar/SideBarButtonLink.tsx similarity index 100% rename from interface/src/components/navigation/sidebar/SideBarButtonLink.tsx rename to packages/browser/src/components/navigation/sidebar/SideBarButtonLink.tsx diff --git a/interface/src/components/navigation/sidebar/SideBarFooter.tsx b/packages/browser/src/components/navigation/sidebar/SideBarFooter.tsx similarity index 100% rename from interface/src/components/navigation/sidebar/SideBarFooter.tsx rename to packages/browser/src/components/navigation/sidebar/SideBarFooter.tsx diff --git a/interface/src/components/navigation/sidebar/SignOut.tsx b/packages/browser/src/components/navigation/sidebar/SignOut.tsx similarity index 100% rename from interface/src/components/navigation/sidebar/SignOut.tsx rename to packages/browser/src/components/navigation/sidebar/SignOut.tsx diff --git a/interface/src/components/navigation/sidebar/index.ts b/packages/browser/src/components/navigation/sidebar/index.ts similarity index 100% rename from interface/src/components/navigation/sidebar/index.ts rename to packages/browser/src/components/navigation/sidebar/index.ts diff --git a/interface/src/components/navigation/sidebar/sections/book-club/BookClubEmoji.tsx b/packages/browser/src/components/navigation/sidebar/sections/book-club/BookClubEmoji.tsx similarity index 100% rename from interface/src/components/navigation/sidebar/sections/book-club/BookClubEmoji.tsx rename to packages/browser/src/components/navigation/sidebar/sections/book-club/BookClubEmoji.tsx diff --git a/interface/src/components/navigation/sidebar/sections/book-club/BookClubSideBarSection.tsx b/packages/browser/src/components/navigation/sidebar/sections/book-club/BookClubSideBarSection.tsx similarity index 100% rename from interface/src/components/navigation/sidebar/sections/book-club/BookClubSideBarSection.tsx rename to packages/browser/src/components/navigation/sidebar/sections/book-club/BookClubSideBarSection.tsx diff --git a/interface/src/components/navigation/sidebar/sections/index.ts b/packages/browser/src/components/navigation/sidebar/sections/index.ts similarity index 100% rename from interface/src/components/navigation/sidebar/sections/index.ts rename to packages/browser/src/components/navigation/sidebar/sections/index.ts diff --git a/interface/src/components/navigation/sidebar/sections/library-section/LibraryEmoji.tsx b/packages/browser/src/components/navigation/sidebar/sections/library-section/LibraryEmoji.tsx similarity index 100% rename from interface/src/components/navigation/sidebar/sections/library-section/LibraryEmoji.tsx rename to packages/browser/src/components/navigation/sidebar/sections/library-section/LibraryEmoji.tsx diff --git a/interface/src/components/navigation/sidebar/sections/library-section/LibraryOptionsMenu.tsx b/packages/browser/src/components/navigation/sidebar/sections/library-section/LibraryOptionsMenu.tsx similarity index 100% rename from interface/src/components/navigation/sidebar/sections/library-section/LibraryOptionsMenu.tsx rename to packages/browser/src/components/navigation/sidebar/sections/library-section/LibraryOptionsMenu.tsx diff --git a/interface/src/components/navigation/sidebar/sections/library-section/LibrarySideBarSection.tsx b/packages/browser/src/components/navigation/sidebar/sections/library-section/LibrarySideBarSection.tsx similarity index 100% rename from interface/src/components/navigation/sidebar/sections/library-section/LibrarySideBarSection.tsx rename to packages/browser/src/components/navigation/sidebar/sections/library-section/LibrarySideBarSection.tsx diff --git a/interface/src/components/navigation/sidebar/sections/smart-list/SmartListSideBarSection.tsx b/packages/browser/src/components/navigation/sidebar/sections/smart-list/SmartListSideBarSection.tsx similarity index 100% rename from interface/src/components/navigation/sidebar/sections/smart-list/SmartListSideBarSection.tsx rename to packages/browser/src/components/navigation/sidebar/sections/smart-list/SmartListSideBarSection.tsx diff --git a/interface/src/components/navigation/topbar/TopBar.tsx b/packages/browser/src/components/navigation/topbar/TopBar.tsx similarity index 100% rename from interface/src/components/navigation/topbar/TopBar.tsx rename to packages/browser/src/components/navigation/topbar/TopBar.tsx diff --git a/interface/src/components/navigation/topbar/TopBarButtonItem.tsx b/packages/browser/src/components/navigation/topbar/TopBarButtonItem.tsx similarity index 100% rename from interface/src/components/navigation/topbar/TopBarButtonItem.tsx rename to packages/browser/src/components/navigation/topbar/TopBarButtonItem.tsx diff --git a/interface/src/components/navigation/topbar/TopBarLinkListItem.tsx b/packages/browser/src/components/navigation/topbar/TopBarLinkListItem.tsx similarity index 100% rename from interface/src/components/navigation/topbar/TopBarLinkListItem.tsx rename to packages/browser/src/components/navigation/topbar/TopBarLinkListItem.tsx diff --git a/interface/src/components/navigation/topbar/TopBarNavLink.tsx b/packages/browser/src/components/navigation/topbar/TopBarNavLink.tsx similarity index 100% rename from interface/src/components/navigation/topbar/TopBarNavLink.tsx rename to packages/browser/src/components/navigation/topbar/TopBarNavLink.tsx diff --git a/interface/src/components/navigation/topbar/index.ts b/packages/browser/src/components/navigation/topbar/index.ts similarity index 100% rename from interface/src/components/navigation/topbar/index.ts rename to packages/browser/src/components/navigation/topbar/index.ts diff --git a/interface/src/components/navigation/topbar/sections/UserMenu.tsx b/packages/browser/src/components/navigation/topbar/sections/UserMenu.tsx similarity index 100% rename from interface/src/components/navigation/topbar/sections/UserMenu.tsx rename to packages/browser/src/components/navigation/topbar/sections/UserMenu.tsx diff --git a/interface/src/components/navigation/topbar/sections/book-club/BookClubNavigationItem.tsx b/packages/browser/src/components/navigation/topbar/sections/book-club/BookClubNavigationItem.tsx similarity index 100% rename from interface/src/components/navigation/topbar/sections/book-club/BookClubNavigationItem.tsx rename to packages/browser/src/components/navigation/topbar/sections/book-club/BookClubNavigationItem.tsx diff --git a/interface/src/components/navigation/topbar/sections/book-club/index.ts b/packages/browser/src/components/navigation/topbar/sections/book-club/index.ts similarity index 100% rename from interface/src/components/navigation/topbar/sections/book-club/index.ts rename to packages/browser/src/components/navigation/topbar/sections/book-club/index.ts diff --git a/interface/src/components/navigation/topbar/sections/index.ts b/packages/browser/src/components/navigation/topbar/sections/index.ts similarity index 100% rename from interface/src/components/navigation/topbar/sections/index.ts rename to packages/browser/src/components/navigation/topbar/sections/index.ts diff --git a/interface/src/components/navigation/topbar/sections/library/LibraryNavigationItem.tsx b/packages/browser/src/components/navigation/topbar/sections/library/LibraryNavigationItem.tsx similarity index 100% rename from interface/src/components/navigation/topbar/sections/library/LibraryNavigationItem.tsx rename to packages/browser/src/components/navigation/topbar/sections/library/LibraryNavigationItem.tsx diff --git a/interface/src/components/navigation/topbar/sections/library/index.ts b/packages/browser/src/components/navigation/topbar/sections/library/index.ts similarity index 100% rename from interface/src/components/navigation/topbar/sections/library/index.ts rename to packages/browser/src/components/navigation/topbar/sections/library/index.ts diff --git a/interface/src/components/navigation/topbar/sections/settings/SettingsNavigationItem.tsx b/packages/browser/src/components/navigation/topbar/sections/settings/SettingsNavigationItem.tsx similarity index 96% rename from interface/src/components/navigation/topbar/sections/settings/SettingsNavigationItem.tsx rename to packages/browser/src/components/navigation/topbar/sections/settings/SettingsNavigationItem.tsx index 1265e6970..ca6a7671c 100644 --- a/interface/src/components/navigation/topbar/sections/settings/SettingsNavigationItem.tsx +++ b/packages/browser/src/components/navigation/topbar/sections/settings/SettingsNavigationItem.tsx @@ -1,4 +1,4 @@ -import { useAppProps, usePreferences } from '@stump/client' +import { useAppStore, usePreferences } from '@stump/client' import { cn, Label, NavigationMenu } from '@stump/components' import { Cog } from 'lucide-react' import React from 'react' @@ -16,7 +16,7 @@ export default function SettingsNavigationItem() { const { preferences: { enable_double_sidebar }, } = usePreferences() - const { platform } = useAppProps() + const platform = useAppStore((store) => store.platform) const { groups } = useSettingsRoutes() diff --git a/interface/src/components/navigation/topbar/sections/settings/index.ts b/packages/browser/src/components/navigation/topbar/sections/settings/index.ts similarity index 100% rename from interface/src/components/navigation/topbar/sections/settings/index.ts rename to packages/browser/src/components/navigation/topbar/sections/settings/index.ts diff --git a/interface/src/components/readers/epub/EpubJsReader.tsx b/packages/browser/src/components/readers/epub/EpubJsReader.tsx similarity index 100% rename from interface/src/components/readers/epub/EpubJsReader.tsx rename to packages/browser/src/components/readers/epub/EpubJsReader.tsx diff --git a/interface/src/components/readers/epub/EpubReaderContainer.tsx b/packages/browser/src/components/readers/epub/EpubReaderContainer.tsx similarity index 100% rename from interface/src/components/readers/epub/EpubReaderContainer.tsx rename to packages/browser/src/components/readers/epub/EpubReaderContainer.tsx diff --git a/interface/src/components/readers/epub/EpubReaderFooter.tsx b/packages/browser/src/components/readers/epub/EpubReaderFooter.tsx similarity index 100% rename from interface/src/components/readers/epub/EpubReaderFooter.tsx rename to packages/browser/src/components/readers/epub/EpubReaderFooter.tsx diff --git a/interface/src/components/readers/epub/EpubReaderHeader.tsx b/packages/browser/src/components/readers/epub/EpubReaderHeader.tsx similarity index 100% rename from interface/src/components/readers/epub/EpubReaderHeader.tsx rename to packages/browser/src/components/readers/epub/EpubReaderHeader.tsx diff --git a/interface/src/components/readers/epub/EpubStreamReader.tsx b/packages/browser/src/components/readers/epub/EpubStreamReader.tsx similarity index 100% rename from interface/src/components/readers/epub/EpubStreamReader.tsx rename to packages/browser/src/components/readers/epub/EpubStreamReader.tsx diff --git a/interface/src/components/readers/epub/context.ts b/packages/browser/src/components/readers/epub/context.ts similarity index 100% rename from interface/src/components/readers/epub/context.ts rename to packages/browser/src/components/readers/epub/context.ts diff --git a/interface/src/components/readers/epub/controls/BookmarkToggle.tsx b/packages/browser/src/components/readers/epub/controls/BookmarkToggle.tsx similarity index 100% rename from interface/src/components/readers/epub/controls/BookmarkToggle.tsx rename to packages/browser/src/components/readers/epub/controls/BookmarkToggle.tsx diff --git a/interface/src/components/readers/epub/controls/ControlButton.tsx b/packages/browser/src/components/readers/epub/controls/ControlButton.tsx similarity index 100% rename from interface/src/components/readers/epub/controls/ControlButton.tsx rename to packages/browser/src/components/readers/epub/controls/ControlButton.tsx diff --git a/interface/src/components/readers/epub/controls/ControlsContainer.tsx b/packages/browser/src/components/readers/epub/controls/ControlsContainer.tsx similarity index 100% rename from interface/src/components/readers/epub/controls/ControlsContainer.tsx rename to packages/browser/src/components/readers/epub/controls/ControlsContainer.tsx diff --git a/interface/src/components/readers/epub/controls/EpubNavigationControls.tsx b/packages/browser/src/components/readers/epub/controls/EpubNavigationControls.tsx similarity index 100% rename from interface/src/components/readers/epub/controls/EpubNavigationControls.tsx rename to packages/browser/src/components/readers/epub/controls/EpubNavigationControls.tsx diff --git a/interface/src/components/readers/epub/controls/FontSizeControl.tsx b/packages/browser/src/components/readers/epub/controls/FontSizeControl.tsx similarity index 100% rename from interface/src/components/readers/epub/controls/FontSizeControl.tsx rename to packages/browser/src/components/readers/epub/controls/FontSizeControl.tsx diff --git a/interface/src/components/readers/epub/controls/FullScreenToggle.tsx b/packages/browser/src/components/readers/epub/controls/FullScreenToggle.tsx similarity index 100% rename from interface/src/components/readers/epub/controls/FullScreenToggle.tsx rename to packages/browser/src/components/readers/epub/controls/FullScreenToggle.tsx diff --git a/interface/src/components/readers/epub/controls/ReadingDirection.tsx b/packages/browser/src/components/readers/epub/controls/ReadingDirection.tsx similarity index 100% rename from interface/src/components/readers/epub/controls/ReadingDirection.tsx rename to packages/browser/src/components/readers/epub/controls/ReadingDirection.tsx diff --git a/interface/src/components/readers/epub/controls/ThemeControls.tsx b/packages/browser/src/components/readers/epub/controls/ThemeControls.tsx similarity index 100% rename from interface/src/components/readers/epub/controls/ThemeControls.tsx rename to packages/browser/src/components/readers/epub/controls/ThemeControls.tsx diff --git a/interface/src/components/readers/epub/controls/index.ts b/packages/browser/src/components/readers/epub/controls/index.ts similarity index 100% rename from interface/src/components/readers/epub/controls/index.ts rename to packages/browser/src/components/readers/epub/controls/index.ts diff --git a/interface/src/components/readers/epub/controls/useEpubBookmark.ts b/packages/browser/src/components/readers/epub/controls/useEpubBookmark.ts similarity index 100% rename from interface/src/components/readers/epub/controls/useEpubBookmark.ts rename to packages/browser/src/components/readers/epub/controls/useEpubBookmark.ts diff --git a/interface/src/components/readers/epub/locations/Bookmarks.tsx b/packages/browser/src/components/readers/epub/locations/Bookmarks.tsx similarity index 100% rename from interface/src/components/readers/epub/locations/Bookmarks.tsx rename to packages/browser/src/components/readers/epub/locations/Bookmarks.tsx diff --git a/interface/src/components/readers/epub/locations/LocationManager.tsx b/packages/browser/src/components/readers/epub/locations/LocationManager.tsx similarity index 100% rename from interface/src/components/readers/epub/locations/LocationManager.tsx rename to packages/browser/src/components/readers/epub/locations/LocationManager.tsx diff --git a/interface/src/components/readers/epub/locations/TableOfContents.tsx b/packages/browser/src/components/readers/epub/locations/TableOfContents.tsx similarity index 100% rename from interface/src/components/readers/epub/locations/TableOfContents.tsx rename to packages/browser/src/components/readers/epub/locations/TableOfContents.tsx diff --git a/interface/src/components/readers/epub/locations/index.ts b/packages/browser/src/components/readers/epub/locations/index.ts similarity index 100% rename from interface/src/components/readers/epub/locations/index.ts rename to packages/browser/src/components/readers/epub/locations/index.ts diff --git a/interface/src/components/readers/epub/themes.ts b/packages/browser/src/components/readers/epub/themes.ts similarity index 100% rename from interface/src/components/readers/epub/themes.ts rename to packages/browser/src/components/readers/epub/themes.ts diff --git a/interface/src/components/readers/image-based/AnimatedPagedReader.tsx b/packages/browser/src/components/readers/image-based/AnimatedPagedReader.tsx similarity index 100% rename from interface/src/components/readers/image-based/AnimatedPagedReader.tsx rename to packages/browser/src/components/readers/image-based/AnimatedPagedReader.tsx diff --git a/interface/src/components/readers/image-based/PagedReader.tsx b/packages/browser/src/components/readers/image-based/PagedReader.tsx similarity index 100% rename from interface/src/components/readers/image-based/PagedReader.tsx rename to packages/browser/src/components/readers/image-based/PagedReader.tsx diff --git a/interface/src/components/readers/image-based/Toolbar.tsx b/packages/browser/src/components/readers/image-based/Toolbar.tsx similarity index 100% rename from interface/src/components/readers/image-based/Toolbar.tsx rename to packages/browser/src/components/readers/image-based/Toolbar.tsx diff --git a/interface/src/components/readers/pdf/NativePDFViewer.tsx b/packages/browser/src/components/readers/pdf/NativePDFViewer.tsx similarity index 100% rename from interface/src/components/readers/pdf/NativePDFViewer.tsx rename to packages/browser/src/components/readers/pdf/NativePDFViewer.tsx diff --git a/interface/src/components/series/SeriesCard.tsx b/packages/browser/src/components/series/SeriesCard.tsx similarity index 100% rename from interface/src/components/series/SeriesCard.tsx rename to packages/browser/src/components/series/SeriesCard.tsx diff --git a/interface/src/components/series/SeriesGrid.tsx b/packages/browser/src/components/series/SeriesGrid.tsx similarity index 100% rename from interface/src/components/series/SeriesGrid.tsx rename to packages/browser/src/components/series/SeriesGrid.tsx diff --git a/interface/src/components/series/SeriesList.tsx b/packages/browser/src/components/series/SeriesList.tsx similarity index 100% rename from interface/src/components/series/SeriesList.tsx rename to packages/browser/src/components/series/SeriesList.tsx diff --git a/interface/src/components/table/Pagination.tsx b/packages/browser/src/components/table/Pagination.tsx similarity index 96% rename from interface/src/components/table/Pagination.tsx rename to packages/browser/src/components/table/Pagination.tsx index 7e68aa929..a9855187f 100644 --- a/interface/src/components/table/Pagination.tsx +++ b/packages/browser/src/components/table/Pagination.tsx @@ -33,6 +33,7 @@ export default function TablePagination({ const { pageRange } = usePagination({ currentPage, numbersToShow, totalPages: pages }) + // FIXME: Things get smushed together when there are too many pages return (
onChangePage(currentPage - 1)}> diff --git a/interface/src/components/table/SortIcon.tsx b/packages/browser/src/components/table/SortIcon.tsx similarity index 100% rename from interface/src/components/table/SortIcon.tsx rename to packages/browser/src/components/table/SortIcon.tsx diff --git a/interface/src/components/table/Table.tsx b/packages/browser/src/components/table/Table.tsx similarity index 98% rename from interface/src/components/table/Table.tsx rename to packages/browser/src/components/table/Table.tsx index d9d967d0f..54aad9f39 100644 --- a/interface/src/components/table/Table.tsx +++ b/packages/browser/src/components/table/Table.tsx @@ -3,6 +3,7 @@ import { ColumnDef, ColumnFiltersState, flexRender, + getCoreRowModel, getFilteredRowModel, getSortedRowModel, SortDirection, @@ -21,7 +22,7 @@ import TableFilterSelect from './TableFilterSelect' export interface TableProps { data: T[] columns: ColumnDef[] - options: Omit, 'data' | 'columns'> + options: Omit, 'data' | 'columns' | 'getCoreRowModel'> fullWidth?: boolean searchable?: boolean sortable?: boolean @@ -49,19 +50,20 @@ export default function Table({ const [globalFilter, setGlobalFilter] = useState('') const table = useReactTable({ + onSortingChange: setSorting, ...options, columns, data, + getCoreRowModel: getCoreRowModel(), getFilteredRowModel: getFilteredRowModel(), getSortedRowModel: getSortedRowModel(), onColumnFiltersChange: setColumnFilters, onGlobalFilterChange: setGlobalFilter, - onSortingChange: setSorting, state: { + sorting, ...options.state, columnFilters, globalFilter, - sorting, }, }) diff --git a/interface/src/components/table/TableFilterInput.tsx b/packages/browser/src/components/table/TableFilterInput.tsx similarity index 100% rename from interface/src/components/table/TableFilterInput.tsx rename to packages/browser/src/components/table/TableFilterInput.tsx diff --git a/interface/src/components/table/TableFilterSelect.tsx b/packages/browser/src/components/table/TableFilterSelect.tsx similarity index 100% rename from interface/src/components/table/TableFilterSelect.tsx rename to packages/browser/src/components/table/TableFilterSelect.tsx diff --git a/interface/src/components/table/index.ts b/packages/browser/src/components/table/index.ts similarity index 100% rename from interface/src/components/table/index.ts rename to packages/browser/src/components/table/index.ts diff --git a/interface/src/components/tags/Tag.tsx b/packages/browser/src/components/tags/Tag.tsx similarity index 100% rename from interface/src/components/tags/Tag.tsx rename to packages/browser/src/components/tags/Tag.tsx diff --git a/interface/src/components/tags/TagList.tsx b/packages/browser/src/components/tags/TagList.tsx similarity index 100% rename from interface/src/components/tags/TagList.tsx rename to packages/browser/src/components/tags/TagList.tsx diff --git a/interface/src/components/thumbnail/EditThumbnailDropdown.tsx b/packages/browser/src/components/thumbnail/EditThumbnailDropdown.tsx similarity index 100% rename from interface/src/components/thumbnail/EditThumbnailDropdown.tsx rename to packages/browser/src/components/thumbnail/EditThumbnailDropdown.tsx diff --git a/interface/src/components/thumbnail/UploadImageModal.tsx b/packages/browser/src/components/thumbnail/UploadImageModal.tsx similarity index 100% rename from interface/src/components/thumbnail/UploadImageModal.tsx rename to packages/browser/src/components/thumbnail/UploadImageModal.tsx diff --git a/interface/src/context.ts b/packages/browser/src/context.ts similarity index 100% rename from interface/src/context.ts rename to packages/browser/src/context.ts diff --git a/interface/src/hooks/useIsInView.ts b/packages/browser/src/hooks/useIsInView.ts similarity index 100% rename from interface/src/hooks/useIsInView.ts rename to packages/browser/src/hooks/useIsInView.ts diff --git a/interface/src/hooks/useLocale.ts b/packages/browser/src/hooks/useLocale.ts similarity index 100% rename from interface/src/hooks/useLocale.ts rename to packages/browser/src/hooks/useLocale.ts diff --git a/interface/src/hooks/usePageParam.ts b/packages/browser/src/hooks/usePageParam.ts similarity index 100% rename from interface/src/hooks/usePageParam.ts rename to packages/browser/src/hooks/usePageParam.ts diff --git a/interface/src/hooks/usePagination.ts b/packages/browser/src/hooks/usePagination.ts similarity index 100% rename from interface/src/hooks/usePagination.ts rename to packages/browser/src/hooks/usePagination.ts diff --git a/interface/src/hooks/usePreloadPage.ts b/packages/browser/src/hooks/usePreloadPage.ts similarity index 100% rename from interface/src/hooks/usePreloadPage.ts rename to packages/browser/src/hooks/usePreloadPage.ts diff --git a/interface/src/hooks/usePressAndHold.ts b/packages/browser/src/hooks/usePressAndHold.ts similarity index 100% rename from interface/src/hooks/usePressAndHold.ts rename to packages/browser/src/hooks/usePressAndHold.ts diff --git a/interface/src/hooks/useSyncParams.ts b/packages/browser/src/hooks/useSyncParams.ts similarity index 100% rename from interface/src/hooks/useSyncParams.ts rename to packages/browser/src/hooks/useSyncParams.ts diff --git a/interface/src/i18n/LocaleProvider.tsx b/packages/browser/src/i18n/LocaleProvider.tsx similarity index 100% rename from interface/src/i18n/LocaleProvider.tsx rename to packages/browser/src/i18n/LocaleProvider.tsx diff --git a/interface/src/i18n/config.ts b/packages/browser/src/i18n/config.ts similarity index 100% rename from interface/src/i18n/config.ts rename to packages/browser/src/i18n/config.ts diff --git a/interface/src/i18n/context.ts b/packages/browser/src/i18n/context.ts similarity index 100% rename from interface/src/i18n/context.ts rename to packages/browser/src/i18n/context.ts diff --git a/interface/src/i18n/index.ts b/packages/browser/src/i18n/index.ts similarity index 100% rename from interface/src/i18n/index.ts rename to packages/browser/src/i18n/index.ts diff --git a/interface/src/i18n/locales/af.json b/packages/browser/src/i18n/locales/af.json similarity index 100% rename from interface/src/i18n/locales/af.json rename to packages/browser/src/i18n/locales/af.json diff --git a/interface/src/i18n/locales/ar.json b/packages/browser/src/i18n/locales/ar.json similarity index 100% rename from interface/src/i18n/locales/ar.json rename to packages/browser/src/i18n/locales/ar.json diff --git a/interface/src/i18n/locales/ca.json b/packages/browser/src/i18n/locales/ca.json similarity index 100% rename from interface/src/i18n/locales/ca.json rename to packages/browser/src/i18n/locales/ca.json diff --git a/interface/src/i18n/locales/cs.json b/packages/browser/src/i18n/locales/cs.json similarity index 100% rename from interface/src/i18n/locales/cs.json rename to packages/browser/src/i18n/locales/cs.json diff --git a/interface/src/i18n/locales/da.json b/packages/browser/src/i18n/locales/da.json similarity index 100% rename from interface/src/i18n/locales/da.json rename to packages/browser/src/i18n/locales/da.json diff --git a/interface/src/i18n/locales/de.json b/packages/browser/src/i18n/locales/de.json similarity index 100% rename from interface/src/i18n/locales/de.json rename to packages/browser/src/i18n/locales/de.json diff --git a/interface/src/i18n/locales/el.json b/packages/browser/src/i18n/locales/el.json similarity index 100% rename from interface/src/i18n/locales/el.json rename to packages/browser/src/i18n/locales/el.json diff --git a/interface/src/i18n/locales/en.json b/packages/browser/src/i18n/locales/en.json similarity index 93% rename from interface/src/i18n/locales/en.json rename to packages/browser/src/i18n/locales/en.json index e6d36aad6..f33eb9d16 100644 --- a/interface/src/i18n/locales/en.json +++ b/packages/browser/src/i18n/locales/en.json @@ -275,6 +275,7 @@ "settingsScene": { "navigation": { "general": "General", + "logs": "Logs", "server": "Server", "jobs": "Jobs and Configuration", "users": "User Management", @@ -289,6 +290,7 @@ }, "server": { "general": "General", + "logs": "Logs", "users": "Users", "jobs": "Jobs", "access": "Access", @@ -383,7 +385,45 @@ "helmet": "General server settings", "title": "General settings", "description": "General settings related to your Stump server instance", - "sections": {} + "sections": { + "serverInfo": { + "title": "Server information", + "description": "Basic details about your Stump server instance", + "build": { + "label": "Build", + "description": "Details about the version and build", + "version": { + "semver": "Version", + "commitHash": "Exact commit", + "date": "Build date" + } + } + } + } + }, + "server/logs": { + "helmet": "Logs", + "title": "Logs", + "description": "The logs generated by your Stump server instance", + "sections": { + "persistedLogs": { + "title": "Persisted logs", + "description": "These logs have been manually persisted to the database, typically associated with a specific job or event", + "table": { + "columns": { + "level": "Level", + "message": "Message", + "timestamp": "Timestamp" + }, + "emptyHeading": "No logs to display", + "emptySubtitle": "Your server is either very healthy or very unhealthy" + } + }, + "liveLogs": { + "title": "Live logs feed", + "description": "Streamed directly from your Stump server instance in real-time" + } + } }, "server/jobs": { "helmet": "Jobs", @@ -644,6 +684,8 @@ "save": "Save", "saveChanges": "Save changes", "create": "Create", - "edit": "Edit" + "edit": "Edit", + "unimplemented": "This functionality is not yet implemented! Check back later", + "limitedFunctionality": "This is not yet fully implemented and is lacking some features. Check back later" } } \ No newline at end of file diff --git a/interface/src/i18n/locales/es.json b/packages/browser/src/i18n/locales/es.json similarity index 100% rename from interface/src/i18n/locales/es.json rename to packages/browser/src/i18n/locales/es.json diff --git a/interface/src/i18n/locales/fi.json b/packages/browser/src/i18n/locales/fi.json similarity index 100% rename from interface/src/i18n/locales/fi.json rename to packages/browser/src/i18n/locales/fi.json diff --git a/interface/src/i18n/locales/fr.json b/packages/browser/src/i18n/locales/fr.json similarity index 100% rename from interface/src/i18n/locales/fr.json rename to packages/browser/src/i18n/locales/fr.json diff --git a/interface/src/i18n/locales/he.json b/packages/browser/src/i18n/locales/he.json similarity index 100% rename from interface/src/i18n/locales/he.json rename to packages/browser/src/i18n/locales/he.json diff --git a/interface/src/i18n/locales/hu.json b/packages/browser/src/i18n/locales/hu.json similarity index 100% rename from interface/src/i18n/locales/hu.json rename to packages/browser/src/i18n/locales/hu.json diff --git a/interface/src/i18n/locales/index.ts b/packages/browser/src/i18n/locales/index.ts similarity index 100% rename from interface/src/i18n/locales/index.ts rename to packages/browser/src/i18n/locales/index.ts diff --git a/interface/src/i18n/locales/it.json b/packages/browser/src/i18n/locales/it.json similarity index 100% rename from interface/src/i18n/locales/it.json rename to packages/browser/src/i18n/locales/it.json diff --git a/interface/src/i18n/locales/ja.json b/packages/browser/src/i18n/locales/ja.json similarity index 100% rename from interface/src/i18n/locales/ja.json rename to packages/browser/src/i18n/locales/ja.json diff --git a/interface/src/i18n/locales/ko.json b/packages/browser/src/i18n/locales/ko.json similarity index 100% rename from interface/src/i18n/locales/ko.json rename to packages/browser/src/i18n/locales/ko.json diff --git a/interface/src/i18n/locales/nl.json b/packages/browser/src/i18n/locales/nl.json similarity index 100% rename from interface/src/i18n/locales/nl.json rename to packages/browser/src/i18n/locales/nl.json diff --git a/interface/src/i18n/locales/no.json b/packages/browser/src/i18n/locales/no.json similarity index 100% rename from interface/src/i18n/locales/no.json rename to packages/browser/src/i18n/locales/no.json diff --git a/interface/src/i18n/locales/pl.json b/packages/browser/src/i18n/locales/pl.json similarity index 100% rename from interface/src/i18n/locales/pl.json rename to packages/browser/src/i18n/locales/pl.json diff --git a/interface/src/i18n/locales/pt.json b/packages/browser/src/i18n/locales/pt.json similarity index 100% rename from interface/src/i18n/locales/pt.json rename to packages/browser/src/i18n/locales/pt.json diff --git a/interface/src/i18n/locales/ro.json b/packages/browser/src/i18n/locales/ro.json similarity index 100% rename from interface/src/i18n/locales/ro.json rename to packages/browser/src/i18n/locales/ro.json diff --git a/interface/src/i18n/locales/ru.json b/packages/browser/src/i18n/locales/ru.json similarity index 100% rename from interface/src/i18n/locales/ru.json rename to packages/browser/src/i18n/locales/ru.json diff --git a/interface/src/i18n/locales/sr.json b/packages/browser/src/i18n/locales/sr.json similarity index 100% rename from interface/src/i18n/locales/sr.json rename to packages/browser/src/i18n/locales/sr.json diff --git a/interface/src/i18n/locales/sv.json b/packages/browser/src/i18n/locales/sv.json similarity index 100% rename from interface/src/i18n/locales/sv.json rename to packages/browser/src/i18n/locales/sv.json diff --git a/interface/src/i18n/locales/tr.json b/packages/browser/src/i18n/locales/tr.json similarity index 100% rename from interface/src/i18n/locales/tr.json rename to packages/browser/src/i18n/locales/tr.json diff --git a/interface/src/i18n/locales/uk.json b/packages/browser/src/i18n/locales/uk.json similarity index 100% rename from interface/src/i18n/locales/uk.json rename to packages/browser/src/i18n/locales/uk.json diff --git a/interface/src/i18n/locales/vi.json b/packages/browser/src/i18n/locales/vi.json similarity index 100% rename from interface/src/i18n/locales/vi.json rename to packages/browser/src/i18n/locales/vi.json diff --git a/interface/src/i18n/locales/zh.json b/packages/browser/src/i18n/locales/zh.json similarity index 100% rename from interface/src/i18n/locales/zh.json rename to packages/browser/src/i18n/locales/zh.json diff --git a/interface/src/index.ts b/packages/browser/src/index.ts similarity index 83% rename from interface/src/index.ts rename to packages/browser/src/index.ts index 329c40ae4..5e19a7ba8 100644 --- a/interface/src/index.ts +++ b/packages/browser/src/index.ts @@ -1,7 +1,7 @@ import dayjs from 'dayjs' import LocalizedFormat from 'dayjs/plugin/localizedFormat' -import StumpInterface from './App' +import StumpWebClient from './App' // https://stackoverflow.com/questions/72114775/vite-global-is-not-defined window.global ||= window @@ -11,4 +11,4 @@ export const API_VERSION = import.meta.env.API_VERSION ?? 'v1' dayjs.extend(LocalizedFormat) -export default StumpInterface +export { StumpWebClient } diff --git a/interface/src/paths.ts b/packages/browser/src/paths.ts similarity index 96% rename from interface/src/paths.ts rename to packages/browser/src/paths.ts index 970dd0bbe..5d1137847 100644 --- a/interface/src/paths.ts +++ b/packages/browser/src/paths.ts @@ -12,6 +12,7 @@ type SettingsPage = | 'app/appearance' | 'app/desktop' | 'server/general' + | 'server/logs' | 'server/users' | 'server/access' | 'server/notifications' @@ -94,6 +95,7 @@ const paths = { return `/series/${id}` }, settings: (subpath: SettingsPage = 'app/general') => `/settings/${subpath || ''}`, + serverLogs: (jobId?: string) => paths.settings('server/logs') + (jobId ? `?job_id=${jobId}` : ''), smartList: (id: string) => `/smart-lists/${id}`, smartListCreate: () => IS_DEV ? '/smart-lists/create' : 'https://stumpapp.dev/guides/smart-list#creating-a-smart-list', diff --git a/interface/src/scenes/auth/LoginOrClaimScene.tsx b/packages/browser/src/scenes/auth/LoginOrClaimScene.tsx similarity index 100% rename from interface/src/scenes/auth/LoginOrClaimScene.tsx rename to packages/browser/src/scenes/auth/LoginOrClaimScene.tsx diff --git a/interface/src/scenes/book-club/BookClubRouter.tsx b/packages/browser/src/scenes/book-club/BookClubRouter.tsx similarity index 63% rename from interface/src/scenes/book-club/BookClubRouter.tsx rename to packages/browser/src/scenes/book-club/BookClubRouter.tsx index 9756958a7..88ddeddd8 100644 --- a/interface/src/scenes/book-club/BookClubRouter.tsx +++ b/packages/browser/src/scenes/book-club/BookClubRouter.tsx @@ -1,22 +1,19 @@ -import React, { useEffect } from 'react' +import React, { lazy, useEffect } from 'react' import { Navigate, Route, Routes, useNavigate } from 'react-router' -import { LazyComponent } from '../../AppRouter.tsx' import { useAppContext } from '../../context.ts' import BookClubHomeLayout from './home/BookClubHomeLayout.tsx' -const lazily = (loader: () => unknown) => React.lazy(() => loader() as LazyComponent) - -const BookClubExplorerScene = lazily(() => import('./explore/BookClubExploreScene.tsx')) -const BookClubOverviewScene = lazily(() => import('./home/tabs/overview/BookClubOverviewScene.tsx')) -const UserBookClubsScene = lazily(() => import('./UserBookClubsScene.tsx')) -const CreateBookClubScene = lazily(() => import('./create-club/CreateBookClubScene.tsx')) -const BookClubSettingsScene = lazily(() => import('./home/tabs/settings/BookClubSettingsScene.tsx')) -const BookClubChatBoardScene = lazily( +const BookClubExplorerScene = lazy(() => import('./explore/BookClubExploreScene.tsx')) +const BookClubOverviewScene = lazy(() => import('./home/tabs/overview/BookClubOverviewScene.tsx')) +const UserBookClubsScene = lazy(() => import('./UserBookClubsScene.tsx')) +const CreateBookClubScene = lazy(() => import('./create-club/CreateBookClubScene.tsx')) +const BookClubSettingsScene = lazy(() => import('./home/tabs/settings/BookClubSettingsScene.tsx')) +const BookClubChatBoardScene = lazy( () => import('./home/tabs/chat-board/BookClubChatBoardScene.tsx'), ) -const BookClubMembersScene = lazily(() => import('./home/tabs/members/BookClubMembersScene.tsx')) -const BookClubSchedulerScene = lazily( +const BookClubMembersScene = lazy(() => import('./home/tabs/members/BookClubMembersScene.tsx')) +const BookClubSchedulerScene = lazy( () => import('./home/tabs/settings/scheduler/BookClubSchedulerScene.tsx'), ) diff --git a/interface/src/scenes/book-club/UserBookClubsScene.tsx b/packages/browser/src/scenes/book-club/UserBookClubsScene.tsx similarity index 100% rename from interface/src/scenes/book-club/UserBookClubsScene.tsx rename to packages/browser/src/scenes/book-club/UserBookClubsScene.tsx diff --git a/interface/src/scenes/book-club/create-club/CreateBookClubForm.tsx b/packages/browser/src/scenes/book-club/create-club/CreateBookClubForm.tsx similarity index 100% rename from interface/src/scenes/book-club/create-club/CreateBookClubForm.tsx rename to packages/browser/src/scenes/book-club/create-club/CreateBookClubForm.tsx diff --git a/interface/src/scenes/book-club/create-club/CreateBookClubScene.tsx b/packages/browser/src/scenes/book-club/create-club/CreateBookClubScene.tsx similarity index 100% rename from interface/src/scenes/book-club/create-club/CreateBookClubScene.tsx rename to packages/browser/src/scenes/book-club/create-club/CreateBookClubScene.tsx diff --git a/interface/src/scenes/book-club/create-club/CreatorPreferences.tsx b/packages/browser/src/scenes/book-club/create-club/CreatorPreferences.tsx similarity index 100% rename from interface/src/scenes/book-club/create-club/CreatorPreferences.tsx rename to packages/browser/src/scenes/book-club/create-club/CreatorPreferences.tsx diff --git a/interface/src/scenes/book-club/create-club/RoleMappingForm.tsx b/packages/browser/src/scenes/book-club/create-club/RoleMappingForm.tsx similarity index 100% rename from interface/src/scenes/book-club/create-club/RoleMappingForm.tsx rename to packages/browser/src/scenes/book-club/create-club/RoleMappingForm.tsx diff --git a/interface/src/scenes/book-club/explore/BookClubExploreScene.tsx b/packages/browser/src/scenes/book-club/explore/BookClubExploreScene.tsx similarity index 100% rename from interface/src/scenes/book-club/explore/BookClubExploreScene.tsx rename to packages/browser/src/scenes/book-club/explore/BookClubExploreScene.tsx diff --git a/interface/src/scenes/book-club/home/BookClubHeader.tsx b/packages/browser/src/scenes/book-club/home/BookClubHeader.tsx similarity index 100% rename from interface/src/scenes/book-club/home/BookClubHeader.tsx rename to packages/browser/src/scenes/book-club/home/BookClubHeader.tsx diff --git a/interface/src/scenes/book-club/home/BookClubHomeLayout.tsx b/packages/browser/src/scenes/book-club/home/BookClubHomeLayout.tsx similarity index 100% rename from interface/src/scenes/book-club/home/BookClubHomeLayout.tsx rename to packages/browser/src/scenes/book-club/home/BookClubHomeLayout.tsx diff --git a/interface/src/scenes/book-club/home/BookClubNavigation.tsx b/packages/browser/src/scenes/book-club/home/BookClubNavigation.tsx similarity index 100% rename from interface/src/scenes/book-club/home/BookClubNavigation.tsx rename to packages/browser/src/scenes/book-club/home/BookClubNavigation.tsx diff --git a/interface/src/scenes/book-club/home/context.ts b/packages/browser/src/scenes/book-club/home/context.ts similarity index 100% rename from interface/src/scenes/book-club/home/context.ts rename to packages/browser/src/scenes/book-club/home/context.ts diff --git a/interface/src/scenes/book-club/home/tabs/chat-board/BookClubChatBoardScene.tsx b/packages/browser/src/scenes/book-club/home/tabs/chat-board/BookClubChatBoardScene.tsx similarity index 100% rename from interface/src/scenes/book-club/home/tabs/chat-board/BookClubChatBoardScene.tsx rename to packages/browser/src/scenes/book-club/home/tabs/chat-board/BookClubChatBoardScene.tsx diff --git a/interface/src/scenes/book-club/home/tabs/chat-board/ChatMessage.tsx b/packages/browser/src/scenes/book-club/home/tabs/chat-board/ChatMessage.tsx similarity index 100% rename from interface/src/scenes/book-club/home/tabs/chat-board/ChatMessage.tsx rename to packages/browser/src/scenes/book-club/home/tabs/chat-board/ChatMessage.tsx diff --git a/interface/src/scenes/book-club/home/tabs/members/BookClubMembersScene.tsx b/packages/browser/src/scenes/book-club/home/tabs/members/BookClubMembersScene.tsx similarity index 100% rename from interface/src/scenes/book-club/home/tabs/members/BookClubMembersScene.tsx rename to packages/browser/src/scenes/book-club/home/tabs/members/BookClubMembersScene.tsx diff --git a/interface/src/scenes/book-club/home/tabs/overview/BookClubOverviewScene.tsx b/packages/browser/src/scenes/book-club/home/tabs/overview/BookClubOverviewScene.tsx similarity index 100% rename from interface/src/scenes/book-club/home/tabs/overview/BookClubOverviewScene.tsx rename to packages/browser/src/scenes/book-club/home/tabs/overview/BookClubOverviewScene.tsx diff --git a/interface/src/scenes/book-club/home/tabs/overview/BookClubScheduleTimeline.tsx b/packages/browser/src/scenes/book-club/home/tabs/overview/BookClubScheduleTimeline.tsx similarity index 100% rename from interface/src/scenes/book-club/home/tabs/overview/BookClubScheduleTimeline.tsx rename to packages/browser/src/scenes/book-club/home/tabs/overview/BookClubScheduleTimeline.tsx diff --git a/interface/src/scenes/book-club/home/tabs/overview/BookClubScheduleTimelineItem.tsx b/packages/browser/src/scenes/book-club/home/tabs/overview/BookClubScheduleTimelineItem.tsx similarity index 100% rename from interface/src/scenes/book-club/home/tabs/overview/BookClubScheduleTimelineItem.tsx rename to packages/browser/src/scenes/book-club/home/tabs/overview/BookClubScheduleTimelineItem.tsx diff --git a/interface/src/scenes/book-club/home/tabs/settings/BookClubSettingsScene.tsx b/packages/browser/src/scenes/book-club/home/tabs/settings/BookClubSettingsScene.tsx similarity index 100% rename from interface/src/scenes/book-club/home/tabs/settings/BookClubSettingsScene.tsx rename to packages/browser/src/scenes/book-club/home/tabs/settings/BookClubSettingsScene.tsx diff --git a/interface/src/scenes/book-club/home/tabs/settings/MemberSpecDisplay.tsx b/packages/browser/src/scenes/book-club/home/tabs/settings/MemberSpecDisplay.tsx similarity index 100% rename from interface/src/scenes/book-club/home/tabs/settings/MemberSpecDisplay.tsx rename to packages/browser/src/scenes/book-club/home/tabs/settings/MemberSpecDisplay.tsx diff --git a/interface/src/scenes/book-club/home/tabs/settings/scheduler/AddBookCard.tsx b/packages/browser/src/scenes/book-club/home/tabs/settings/scheduler/AddBookCard.tsx similarity index 100% rename from interface/src/scenes/book-club/home/tabs/settings/scheduler/AddBookCard.tsx rename to packages/browser/src/scenes/book-club/home/tabs/settings/scheduler/AddBookCard.tsx diff --git a/interface/src/scenes/book-club/home/tabs/settings/scheduler/BookClubSchedulerScene.tsx b/packages/browser/src/scenes/book-club/home/tabs/settings/scheduler/BookClubSchedulerScene.tsx similarity index 100% rename from interface/src/scenes/book-club/home/tabs/settings/scheduler/BookClubSchedulerScene.tsx rename to packages/browser/src/scenes/book-club/home/tabs/settings/scheduler/BookClubSchedulerScene.tsx diff --git a/interface/src/scenes/book-club/home/tabs/settings/scheduler/CreateOrAddToScheduleForm.tsx b/packages/browser/src/scenes/book-club/home/tabs/settings/scheduler/CreateOrAddToScheduleForm.tsx similarity index 100% rename from interface/src/scenes/book-club/home/tabs/settings/scheduler/CreateOrAddToScheduleForm.tsx rename to packages/browser/src/scenes/book-club/home/tabs/settings/scheduler/CreateOrAddToScheduleForm.tsx diff --git a/interface/src/scenes/book/BookCompletionToggleButton.tsx b/packages/browser/src/scenes/book/BookCompletionToggleButton.tsx similarity index 100% rename from interface/src/scenes/book/BookCompletionToggleButton.tsx rename to packages/browser/src/scenes/book/BookCompletionToggleButton.tsx diff --git a/interface/src/scenes/book/BookFileInformation.tsx b/packages/browser/src/scenes/book/BookFileInformation.tsx similarity index 100% rename from interface/src/scenes/book/BookFileInformation.tsx rename to packages/browser/src/scenes/book/BookFileInformation.tsx diff --git a/interface/src/scenes/book/BookLibrarySeriesLinks.tsx b/packages/browser/src/scenes/book/BookLibrarySeriesLinks.tsx similarity index 100% rename from interface/src/scenes/book/BookLibrarySeriesLinks.tsx rename to packages/browser/src/scenes/book/BookLibrarySeriesLinks.tsx diff --git a/interface/src/scenes/book/BookOverviewScene.tsx b/packages/browser/src/scenes/book/BookOverviewScene.tsx similarity index 100% rename from interface/src/scenes/book/BookOverviewScene.tsx rename to packages/browser/src/scenes/book/BookOverviewScene.tsx diff --git a/interface/src/scenes/book/BookReaderLink.tsx b/packages/browser/src/scenes/book/BookReaderLink.tsx similarity index 100% rename from interface/src/scenes/book/BookReaderLink.tsx rename to packages/browser/src/scenes/book/BookReaderLink.tsx diff --git a/interface/src/scenes/book/BookReaderScene.tsx b/packages/browser/src/scenes/book/BookReaderScene.tsx similarity index 100% rename from interface/src/scenes/book/BookReaderScene.tsx rename to packages/browser/src/scenes/book/BookReaderScene.tsx diff --git a/interface/src/scenes/book/BookRouter.tsx b/packages/browser/src/scenes/book/BookRouter.tsx similarity index 53% rename from interface/src/scenes/book/BookRouter.tsx rename to packages/browser/src/scenes/book/BookRouter.tsx index 8883dc506..ab59b11d0 100644 --- a/interface/src/scenes/book/BookRouter.tsx +++ b/packages/browser/src/scenes/book/BookRouter.tsx @@ -1,18 +1,14 @@ -import React from 'react' +import React, { lazy } from 'react' import { Navigate, Route, Routes } from 'react-router' import ServerOwnerRouteWrapper from '@/components/ServerOwnerRouteWrapper.tsx' -import { LazyComponent } from '../../AppRouter.tsx' - -const lazily = (loader: () => unknown) => React.lazy(() => loader() as LazyComponent) - -const BookSearchScene = lazily(() => import('./BookSearchScene.tsx')) -const BookOverviewScene = lazily(() => import('./BookOverviewScene.tsx')) -const BookReaderScene = lazily(() => import('./BookReaderScene.tsx')) -const EpubReaderScene = lazily(() => import('./EpubReaderScene.tsx')) -const PDFReaderScene = lazily(() => import('./PDFReaderScene.tsx')) -const BookManagementScene = lazily(() => import('./management/BookManagementScene.tsx')) +const BookSearchScene = lazy(() => import('./BookSearchScene.tsx')) +const BookOverviewScene = lazy(() => import('./BookOverviewScene.tsx')) +const BookReaderScene = lazy(() => import('./BookReaderScene.tsx')) +const EpubReaderScene = lazy(() => import('./EpubReaderScene.tsx')) +const PDFReaderScene = lazy(() => import('./PDFReaderScene.tsx')) +const BookManagementScene = lazy(() => import('./management/BookManagementScene.tsx')) export default function BookRouter() { return ( diff --git a/interface/src/scenes/book/BookSearchScene.tsx b/packages/browser/src/scenes/book/BookSearchScene.tsx similarity index 100% rename from interface/src/scenes/book/BookSearchScene.tsx rename to packages/browser/src/scenes/book/BookSearchScene.tsx diff --git a/interface/src/scenes/book/BooksAfterCursor.tsx b/packages/browser/src/scenes/book/BooksAfterCursor.tsx similarity index 100% rename from interface/src/scenes/book/BooksAfterCursor.tsx rename to packages/browser/src/scenes/book/BooksAfterCursor.tsx diff --git a/interface/src/scenes/book/DownloadMediaButton.tsx b/packages/browser/src/scenes/book/DownloadMediaButton.tsx similarity index 100% rename from interface/src/scenes/book/DownloadMediaButton.tsx rename to packages/browser/src/scenes/book/DownloadMediaButton.tsx diff --git a/interface/src/scenes/book/EpubReaderScene.tsx b/packages/browser/src/scenes/book/EpubReaderScene.tsx similarity index 100% rename from interface/src/scenes/book/EpubReaderScene.tsx rename to packages/browser/src/scenes/book/EpubReaderScene.tsx diff --git a/interface/src/scenes/book/PDFReaderScene.tsx b/packages/browser/src/scenes/book/PDFReaderScene.tsx similarity index 100% rename from interface/src/scenes/book/PDFReaderScene.tsx rename to packages/browser/src/scenes/book/PDFReaderScene.tsx diff --git a/interface/src/scenes/book/management/BookManagementScene.tsx b/packages/browser/src/scenes/book/management/BookManagementScene.tsx similarity index 100% rename from interface/src/scenes/book/management/BookManagementScene.tsx rename to packages/browser/src/scenes/book/management/BookManagementScene.tsx diff --git a/interface/src/scenes/book/management/BookPageGrid.tsx b/packages/browser/src/scenes/book/management/BookPageGrid.tsx similarity index 100% rename from interface/src/scenes/book/management/BookPageGrid.tsx rename to packages/browser/src/scenes/book/management/BookPageGrid.tsx diff --git a/interface/src/scenes/book/management/BookThumbnailSelector.tsx b/packages/browser/src/scenes/book/management/BookThumbnailSelector.tsx similarity index 100% rename from interface/src/scenes/book/management/BookThumbnailSelector.tsx rename to packages/browser/src/scenes/book/management/BookThumbnailSelector.tsx diff --git a/interface/src/scenes/error/FourOhFour.tsx b/packages/browser/src/scenes/error/FourOhFour.tsx similarity index 100% rename from interface/src/scenes/error/FourOhFour.tsx rename to packages/browser/src/scenes/error/FourOhFour.tsx diff --git a/interface/src/scenes/error/ServerConnectionErrorScene.tsx b/packages/browser/src/scenes/error/ServerConnectionErrorScene.tsx similarity index 90% rename from interface/src/scenes/error/ServerConnectionErrorScene.tsx rename to packages/browser/src/scenes/error/ServerConnectionErrorScene.tsx index 2f337142d..884c76058 100644 --- a/interface/src/scenes/error/ServerConnectionErrorScene.tsx +++ b/packages/browser/src/scenes/error/ServerConnectionErrorScene.tsx @@ -1,4 +1,4 @@ -import { queryClient, useAppProps } from '@stump/client' +import { queryClient, useAppStore } from '@stump/client' import { useEffect, useState } from 'react' import { toast } from 'react-hot-toast' import { Navigate, useLocation } from 'react-router' @@ -8,17 +8,20 @@ import ServerUrlForm from '@/components/ServerUrlForm' import { useLocaleContext } from '../../i18n/index' export default function ServerConnectionErrorScene() { + const location = useLocation() + const [backOnline, setBackOnline] = useState(false) const [goHome, setGoHome] = useState(false) - const location = useLocation() - const appProps = useAppProps() - const showForm = appProps?.platform !== 'browser' + const { baseURL, platform } = useAppStore((store) => ({ + baseURL: store.baseUrl, + platform: store.platform, + })) + const showForm = platform !== 'browser' const localeKey = `serverSOS.${showForm ? 'desktop' : 'web'}.message` const { t } = useLocaleContext() - const baseURL = appProps?.baseUrl useEffect(() => { async function checkServer() { try { diff --git a/interface/src/scenes/home/ContinueReading.tsx b/packages/browser/src/scenes/home/ContinueReading.tsx similarity index 100% rename from interface/src/scenes/home/ContinueReading.tsx rename to packages/browser/src/scenes/home/ContinueReading.tsx diff --git a/interface/src/scenes/home/HomeScene.tsx b/packages/browser/src/scenes/home/HomeScene.tsx similarity index 100% rename from interface/src/scenes/home/HomeScene.tsx rename to packages/browser/src/scenes/home/HomeScene.tsx diff --git a/interface/src/scenes/home/NoLibraries.tsx b/packages/browser/src/scenes/home/NoLibraries.tsx similarity index 100% rename from interface/src/scenes/home/NoLibraries.tsx rename to packages/browser/src/scenes/home/NoLibraries.tsx diff --git a/interface/src/scenes/home/RecentlyAddedMedia.tsx b/packages/browser/src/scenes/home/RecentlyAddedMedia.tsx similarity index 100% rename from interface/src/scenes/home/RecentlyAddedMedia.tsx rename to packages/browser/src/scenes/home/RecentlyAddedMedia.tsx diff --git a/interface/src/scenes/home/RecentlyAddedSeries.tsx b/packages/browser/src/scenes/home/RecentlyAddedSeries.tsx similarity index 100% rename from interface/src/scenes/home/RecentlyAddedSeries.tsx rename to packages/browser/src/scenes/home/RecentlyAddedSeries.tsx diff --git a/interface/src/scenes/library/LibraryOverviewScene.tsx b/packages/browser/src/scenes/library/LibraryOverviewScene.tsx similarity index 100% rename from interface/src/scenes/library/LibraryOverviewScene.tsx rename to packages/browser/src/scenes/library/LibraryOverviewScene.tsx diff --git a/interface/src/scenes/library/LibraryOverviewTitleSection.tsx b/packages/browser/src/scenes/library/LibraryOverviewTitleSection.tsx similarity index 100% rename from interface/src/scenes/library/LibraryOverviewTitleSection.tsx rename to packages/browser/src/scenes/library/LibraryOverviewTitleSection.tsx diff --git a/interface/src/scenes/library/LibraryRouter.tsx b/packages/browser/src/scenes/library/LibraryRouter.tsx similarity index 63% rename from interface/src/scenes/library/LibraryRouter.tsx rename to packages/browser/src/scenes/library/LibraryRouter.tsx index 68500d656..a044f4ee3 100644 --- a/interface/src/scenes/library/LibraryRouter.tsx +++ b/packages/browser/src/scenes/library/LibraryRouter.tsx @@ -1,21 +1,16 @@ -import React, { useMemo } from 'react' +import React, { lazy, useMemo } from 'react' import { Navigate, Route, Routes } from 'react-router' import { useAppContext } from '@/context' -import { LazyComponent } from '../../AppRouter.tsx' import LibraryAdminLayout from './management/LibraryAdminLayout.tsx' -const lazily = (loader: () => unknown) => React.lazy(() => loader() as LazyComponent) - -const CreateLibraryScene = lazily( +const CreateLibraryScene = lazy( () => import('./management/create-or-update/CreateLibraryScene.tsx'), ) -const ManageLibraryScene = lazily( - () => import('./management/create-or-update/EditLibraryScene.tsx'), -) -const LibraryExplorerScene = lazily(() => import('./explorer/LibraryExplorerScene.tsx')) -const LibraryOverviewScene = lazily(() => import('./LibraryOverviewScene.tsx')) +const ManageLibraryScene = lazy(() => import('./management/create-or-update/EditLibraryScene.tsx')) +const LibraryExplorerScene = lazy(() => import('./explorer/LibraryExplorerScene.tsx')) +const LibraryOverviewScene = lazy(() => import('./LibraryOverviewScene.tsx')) export default function LibraryRouter() { const { checkPermission } = useAppContext() diff --git a/interface/src/scenes/library/explorer/FileExplorer.tsx b/packages/browser/src/scenes/library/explorer/FileExplorer.tsx similarity index 100% rename from interface/src/scenes/library/explorer/FileExplorer.tsx rename to packages/browser/src/scenes/library/explorer/FileExplorer.tsx diff --git a/interface/src/scenes/library/explorer/FileExplorerFooter.tsx b/packages/browser/src/scenes/library/explorer/FileExplorerFooter.tsx similarity index 100% rename from interface/src/scenes/library/explorer/FileExplorerFooter.tsx rename to packages/browser/src/scenes/library/explorer/FileExplorerFooter.tsx diff --git a/interface/src/scenes/library/explorer/FileExplorerHeader.tsx b/packages/browser/src/scenes/library/explorer/FileExplorerHeader.tsx similarity index 100% rename from interface/src/scenes/library/explorer/FileExplorerHeader.tsx rename to packages/browser/src/scenes/library/explorer/FileExplorerHeader.tsx diff --git a/interface/src/scenes/library/explorer/FileExplorerNavigation.tsx b/packages/browser/src/scenes/library/explorer/FileExplorerNavigation.tsx similarity index 88% rename from interface/src/scenes/library/explorer/FileExplorerNavigation.tsx rename to packages/browser/src/scenes/library/explorer/FileExplorerNavigation.tsx index 4f07cd44c..0e19a65a4 100644 --- a/interface/src/scenes/library/explorer/FileExplorerNavigation.tsx +++ b/packages/browser/src/scenes/library/explorer/FileExplorerNavigation.tsx @@ -1,11 +1,12 @@ -import { useAppProps } from '@stump/client' +import { useAppStore } from '@stump/client' import { IconButton } from '@stump/components' import { ChevronLeft, ChevronRight } from 'lucide-react' import { useFileExplorerContext } from './context' export default function FileExplorerNavigation() { - const { platform } = useAppProps() ?? {} + const platform = useAppStore((store) => store.platform) + const { goBack, goForward, canGoBack, canGoForward } = useFileExplorerContext() const isDesktop = platform !== 'browser' diff --git a/interface/src/scenes/library/explorer/LibraryExplorerScene.tsx b/packages/browser/src/scenes/library/explorer/LibraryExplorerScene.tsx similarity index 100% rename from interface/src/scenes/library/explorer/LibraryExplorerScene.tsx rename to packages/browser/src/scenes/library/explorer/LibraryExplorerScene.tsx diff --git a/interface/src/scenes/library/explorer/context.ts b/packages/browser/src/scenes/library/explorer/context.ts similarity index 100% rename from interface/src/scenes/library/explorer/context.ts rename to packages/browser/src/scenes/library/explorer/context.ts diff --git a/interface/src/scenes/library/management/CleanLibrary.tsx b/packages/browser/src/scenes/library/management/CleanLibrary.tsx similarity index 100% rename from interface/src/scenes/library/management/CleanLibrary.tsx rename to packages/browser/src/scenes/library/management/CleanLibrary.tsx diff --git a/interface/src/scenes/library/management/DeleteLibraryThumbnails.tsx b/packages/browser/src/scenes/library/management/DeleteLibraryThumbnails.tsx similarity index 100% rename from interface/src/scenes/library/management/DeleteLibraryThumbnails.tsx rename to packages/browser/src/scenes/library/management/DeleteLibraryThumbnails.tsx diff --git a/interface/src/scenes/library/management/LibraryAdminLayout.tsx b/packages/browser/src/scenes/library/management/LibraryAdminLayout.tsx similarity index 100% rename from interface/src/scenes/library/management/LibraryAdminLayout.tsx rename to packages/browser/src/scenes/library/management/LibraryAdminLayout.tsx diff --git a/interface/src/scenes/library/management/LibraryAdminSideBar.tsx b/packages/browser/src/scenes/library/management/LibraryAdminSideBar.tsx similarity index 100% rename from interface/src/scenes/library/management/LibraryAdminSideBar.tsx rename to packages/browser/src/scenes/library/management/LibraryAdminSideBar.tsx diff --git a/interface/src/scenes/library/management/LibrarySeriesGrid.tsx b/packages/browser/src/scenes/library/management/LibrarySeriesGrid.tsx similarity index 100% rename from interface/src/scenes/library/management/LibrarySeriesGrid.tsx rename to packages/browser/src/scenes/library/management/LibrarySeriesGrid.tsx diff --git a/interface/src/scenes/library/management/LibraryThumbnailSelector.tsx b/packages/browser/src/scenes/library/management/LibraryThumbnailSelector.tsx similarity index 100% rename from interface/src/scenes/library/management/LibraryThumbnailSelector.tsx rename to packages/browser/src/scenes/library/management/LibraryThumbnailSelector.tsx diff --git a/interface/src/scenes/library/management/QuickActions.tsx b/packages/browser/src/scenes/library/management/QuickActions.tsx similarity index 100% rename from interface/src/scenes/library/management/QuickActions.tsx rename to packages/browser/src/scenes/library/management/QuickActions.tsx diff --git a/interface/src/scenes/library/management/RegenerateThumbnails.tsx b/packages/browser/src/scenes/library/management/RegenerateThumbnails.tsx similarity index 100% rename from interface/src/scenes/library/management/RegenerateThumbnails.tsx rename to packages/browser/src/scenes/library/management/RegenerateThumbnails.tsx diff --git a/interface/src/scenes/library/management/context.ts b/packages/browser/src/scenes/library/management/context.ts similarity index 100% rename from interface/src/scenes/library/management/context.ts rename to packages/browser/src/scenes/library/management/context.ts diff --git a/interface/src/scenes/library/management/create-or-update/CreateLibraryScene.tsx b/packages/browser/src/scenes/library/management/create-or-update/CreateLibraryScene.tsx similarity index 100% rename from interface/src/scenes/library/management/create-or-update/CreateLibraryScene.tsx rename to packages/browser/src/scenes/library/management/create-or-update/CreateLibraryScene.tsx diff --git a/interface/src/scenes/library/management/create-or-update/EditLibraryScene.tsx b/packages/browser/src/scenes/library/management/create-or-update/EditLibraryScene.tsx similarity index 100% rename from interface/src/scenes/library/management/create-or-update/EditLibraryScene.tsx rename to packages/browser/src/scenes/library/management/create-or-update/EditLibraryScene.tsx diff --git a/interface/src/scenes/library/management/create-or-update/form/CreateOrUpdateLibraryForm.tsx b/packages/browser/src/scenes/library/management/create-or-update/form/CreateOrUpdateLibraryForm.tsx similarity index 98% rename from interface/src/scenes/library/management/create-or-update/form/CreateOrUpdateLibraryForm.tsx rename to packages/browser/src/scenes/library/management/create-or-update/form/CreateOrUpdateLibraryForm.tsx index 0009f57e5..9db8bde2a 100644 --- a/interface/src/scenes/library/management/create-or-update/form/CreateOrUpdateLibraryForm.tsx +++ b/packages/browser/src/scenes/library/management/create-or-update/form/CreateOrUpdateLibraryForm.tsx @@ -150,14 +150,14 @@ export default function CreateOrEditLibraryForm({ library, existingLibraries }: const { createLibraryAsync } = useCreateLibraryMutation({ onSuccess: () => { form.reset() - setTimeout(() => navigate(paths.home()), 750) + navigate(paths.home()) }, }) const { editLibraryAsync } = useEditLibraryMutation({ onSuccess: () => { form.reset() - setTimeout(() => navigate(paths.home()), 750) + navigate(paths.home()) }, }) @@ -180,7 +180,7 @@ export default function CreateOrEditLibraryForm({ library, existingLibraries }: if (tagsToCreate && tagsToCreate.length > 0) { // TODO: Re-add this logic... - // const res: ApiResult = await tryCreateTags(tagsToCreate) + // const res: APIResult = await tryCreateTags(tagsToCreate) // if (res.status > 201) { // toast.error('Something went wrong when creating the tags.') // return diff --git a/interface/src/scenes/library/management/create-or-update/form/index.ts b/packages/browser/src/scenes/library/management/create-or-update/form/index.ts similarity index 100% rename from interface/src/scenes/library/management/create-or-update/form/index.ts rename to packages/browser/src/scenes/library/management/create-or-update/form/index.ts diff --git a/interface/src/scenes/library/management/create-or-update/form/sections/BasicLibraryInformation.tsx b/packages/browser/src/scenes/library/management/create-or-update/form/sections/BasicLibraryInformation.tsx similarity index 100% rename from interface/src/scenes/library/management/create-or-update/form/sections/BasicLibraryInformation.tsx rename to packages/browser/src/scenes/library/management/create-or-update/form/sections/BasicLibraryInformation.tsx diff --git a/interface/src/scenes/library/management/create-or-update/form/sections/FileConversionOptions.tsx b/packages/browser/src/scenes/library/management/create-or-update/form/sections/FileConversionOptions.tsx similarity index 100% rename from interface/src/scenes/library/management/create-or-update/form/sections/FileConversionOptions.tsx rename to packages/browser/src/scenes/library/management/create-or-update/form/sections/FileConversionOptions.tsx diff --git a/interface/src/scenes/library/management/create-or-update/form/sections/LibraryPattern.tsx b/packages/browser/src/scenes/library/management/create-or-update/form/sections/LibraryPattern.tsx similarity index 100% rename from interface/src/scenes/library/management/create-or-update/form/sections/LibraryPattern.tsx rename to packages/browser/src/scenes/library/management/create-or-update/form/sections/LibraryPattern.tsx diff --git a/interface/src/scenes/library/management/create-or-update/form/sections/ScanMode.tsx b/packages/browser/src/scenes/library/management/create-or-update/form/sections/ScanMode.tsx similarity index 100% rename from interface/src/scenes/library/management/create-or-update/form/sections/ScanMode.tsx rename to packages/browser/src/scenes/library/management/create-or-update/form/sections/ScanMode.tsx diff --git a/interface/src/scenes/library/management/create-or-update/form/sections/ThumbnailConfig.tsx b/packages/browser/src/scenes/library/management/create-or-update/form/sections/ThumbnailConfig.tsx similarity index 100% rename from interface/src/scenes/library/management/create-or-update/form/sections/ThumbnailConfig.tsx rename to packages/browser/src/scenes/library/management/create-or-update/form/sections/ThumbnailConfig.tsx diff --git a/interface/src/scenes/library/management/create-or-update/form/sections/index.ts b/packages/browser/src/scenes/library/management/create-or-update/form/sections/index.ts similarity index 100% rename from interface/src/scenes/library/management/create-or-update/form/sections/index.ts rename to packages/browser/src/scenes/library/management/create-or-update/form/sections/index.ts diff --git a/packages/browser/src/scenes/onboarding/OnBoardingRouter.tsx b/packages/browser/src/scenes/onboarding/OnBoardingRouter.tsx new file mode 100644 index 000000000..68479def9 --- /dev/null +++ b/packages/browser/src/scenes/onboarding/OnBoardingRouter.tsx @@ -0,0 +1,14 @@ +import React, { lazy, Suspense } from 'react' +import { Route, Routes } from 'react-router' + +const OnBoardingScene = lazy(() => import('./OnBoardingScene')) + +export default function OnBoardingRouter() { + return ( + + + } /> + + + ) +} diff --git a/interface/src/scenes/onboarding/OnBoardingScene.tsx b/packages/browser/src/scenes/onboarding/OnBoardingScene.tsx similarity index 100% rename from interface/src/scenes/onboarding/OnBoardingScene.tsx rename to packages/browser/src/scenes/onboarding/OnBoardingScene.tsx diff --git a/interface/src/scenes/series/DownloadSeriesButton.tsx b/packages/browser/src/scenes/series/DownloadSeriesButton.tsx similarity index 100% rename from interface/src/scenes/series/DownloadSeriesButton.tsx rename to packages/browser/src/scenes/series/DownloadSeriesButton.tsx diff --git a/interface/src/scenes/series/MediaGrid.tsx b/packages/browser/src/scenes/series/MediaGrid.tsx similarity index 100% rename from interface/src/scenes/series/MediaGrid.tsx rename to packages/browser/src/scenes/series/MediaGrid.tsx diff --git a/interface/src/scenes/series/SeriesLibraryLink.tsx b/packages/browser/src/scenes/series/SeriesLibraryLink.tsx similarity index 100% rename from interface/src/scenes/series/SeriesLibraryLink.tsx rename to packages/browser/src/scenes/series/SeriesLibraryLink.tsx diff --git a/interface/src/scenes/series/SeriesOverviewScene.tsx b/packages/browser/src/scenes/series/SeriesOverviewScene.tsx similarity index 100% rename from interface/src/scenes/series/SeriesOverviewScene.tsx rename to packages/browser/src/scenes/series/SeriesOverviewScene.tsx diff --git a/interface/src/scenes/series/SeriesOverviewTitleSection.tsx b/packages/browser/src/scenes/series/SeriesOverviewTitleSection.tsx similarity index 100% rename from interface/src/scenes/series/SeriesOverviewTitleSection.tsx rename to packages/browser/src/scenes/series/SeriesOverviewTitleSection.tsx diff --git a/interface/src/scenes/series/SeriesRouter.tsx b/packages/browser/src/scenes/series/SeriesRouter.tsx similarity index 58% rename from interface/src/scenes/series/SeriesRouter.tsx rename to packages/browser/src/scenes/series/SeriesRouter.tsx index e5daa63d3..4ca4d3a65 100644 --- a/interface/src/scenes/series/SeriesRouter.tsx +++ b/packages/browser/src/scenes/series/SeriesRouter.tsx @@ -1,14 +1,10 @@ -import React from 'react' +import React, { lazy } from 'react' import { Navigate, Route, Routes } from 'react-router' import ServerOwnerRouteWrapper from '@/components/ServerOwnerRouteWrapper.tsx' -import { LazyComponent } from '../../AppRouter.tsx' - -const lazily = (loader: () => unknown) => React.lazy(() => loader() as LazyComponent) - -const SeriesOverviewScene = lazily(() => import('./SeriesOverviewScene.tsx')) -const SeriesManagementScene = lazily(() => import('./management/SeriesManagementScene.tsx')) +const SeriesOverviewScene = lazy(() => import('./SeriesOverviewScene.tsx')) +const SeriesManagementScene = lazy(() => import('./management/SeriesManagementScene.tsx')) export default function SeriesRouter() { return ( diff --git a/interface/src/scenes/series/UpNextInSeriesButton.tsx b/packages/browser/src/scenes/series/UpNextInSeriesButton.tsx similarity index 100% rename from interface/src/scenes/series/UpNextInSeriesButton.tsx rename to packages/browser/src/scenes/series/UpNextInSeriesButton.tsx diff --git a/interface/src/scenes/series/context.ts b/packages/browser/src/scenes/series/context.ts similarity index 100% rename from interface/src/scenes/series/context.ts rename to packages/browser/src/scenes/series/context.ts diff --git a/interface/src/scenes/series/management/SeriesBookGrid.tsx b/packages/browser/src/scenes/series/management/SeriesBookGrid.tsx similarity index 100% rename from interface/src/scenes/series/management/SeriesBookGrid.tsx rename to packages/browser/src/scenes/series/management/SeriesBookGrid.tsx diff --git a/interface/src/scenes/series/management/SeriesManagementScene.tsx b/packages/browser/src/scenes/series/management/SeriesManagementScene.tsx similarity index 100% rename from interface/src/scenes/series/management/SeriesManagementScene.tsx rename to packages/browser/src/scenes/series/management/SeriesManagementScene.tsx diff --git a/interface/src/scenes/series/management/SeriesThumbnailSelector.tsx b/packages/browser/src/scenes/series/management/SeriesThumbnailSelector.tsx similarity index 100% rename from interface/src/scenes/series/management/SeriesThumbnailSelector.tsx rename to packages/browser/src/scenes/series/management/SeriesThumbnailSelector.tsx diff --git a/interface/src/scenes/settings/SettingsHeader.tsx b/packages/browser/src/scenes/settings/SettingsHeader.tsx similarity index 100% rename from interface/src/scenes/settings/SettingsHeader.tsx rename to packages/browser/src/scenes/settings/SettingsHeader.tsx diff --git a/interface/src/scenes/settings/SettingsLayout.tsx b/packages/browser/src/scenes/settings/SettingsLayout.tsx similarity index 100% rename from interface/src/scenes/settings/SettingsLayout.tsx rename to packages/browser/src/scenes/settings/SettingsLayout.tsx diff --git a/interface/src/scenes/settings/SettingsNavigation.tsx b/packages/browser/src/scenes/settings/SettingsNavigation.tsx similarity index 95% rename from interface/src/scenes/settings/SettingsNavigation.tsx rename to packages/browser/src/scenes/settings/SettingsNavigation.tsx index 6ef7bf222..9e2cf9059 100644 --- a/interface/src/scenes/settings/SettingsNavigation.tsx +++ b/packages/browser/src/scenes/settings/SettingsNavigation.tsx @@ -1,4 +1,4 @@ -import { useAppProps } from '@stump/client' +import { useAppStore } from '@stump/client' import { Label, NativeSelect, Tabs } from '@stump/components' import { useMemo } from 'react' import { Link, useLocation, useNavigate } from 'react-router-dom' @@ -12,10 +12,9 @@ import { useSettingsRoutes } from './useSettingsRoutes' export default function SettingsNavigation() { const navigate = useNavigate() const location = useLocation() + const platform = useAppStore((store) => store.platform) const { t } = useLocaleContext() - const { platform } = useAppProps() - const { groups } = useSettingsRoutes() const activeRouteGroup = useMemo( diff --git a/interface/src/scenes/settings/SettingsRouter.tsx b/packages/browser/src/scenes/settings/SettingsRouter.tsx similarity index 86% rename from interface/src/scenes/settings/SettingsRouter.tsx rename to packages/browser/src/scenes/settings/SettingsRouter.tsx index 3c48376d7..3eac06c24 100644 --- a/interface/src/scenes/settings/SettingsRouter.tsx +++ b/packages/browser/src/scenes/settings/SettingsRouter.tsx @@ -3,8 +3,8 @@ import { Navigate, Route, Routes } from 'react-router' import ServerOwnerRouteWrapper from '@/components/ServerOwnerRouteWrapper.tsx' -import { AppSettingsRouter } from './app' -import { ServerSettingsRouter } from './server' +import { AppSettingsRouter } from './app/index.ts' +import { ServerSettingsRouter } from './server/index.ts' import SettingsLayout from './SettingsLayout.tsx' /** diff --git a/interface/src/scenes/settings/SettingsSideBar.tsx b/packages/browser/src/scenes/settings/SettingsSideBar.tsx similarity index 95% rename from interface/src/scenes/settings/SettingsSideBar.tsx rename to packages/browser/src/scenes/settings/SettingsSideBar.tsx index fde83a877..c1eea876c 100644 --- a/interface/src/scenes/settings/SettingsSideBar.tsx +++ b/packages/browser/src/scenes/settings/SettingsSideBar.tsx @@ -1,4 +1,4 @@ -import { useAppProps, usePreferences } from '@stump/client' +import { useAppStore, usePreferences } from '@stump/client' import { cn, IconButton, Label } from '@stump/components' import { Home } from 'lucide-react' import { useLocation, useNavigate } from 'react-router' @@ -14,7 +14,7 @@ export default function SettingsSideBar() { const navigate = useNavigate() const { t } = useLocaleContext() - const { platform } = useAppProps() + const platform = useAppStore((store) => store.platform) const { preferences: { enable_replace_primary_sidebar, primary_navigation_mode }, } = usePreferences() diff --git a/interface/src/scenes/settings/SettingsSideBarLink.tsx b/packages/browser/src/scenes/settings/SettingsSideBarLink.tsx similarity index 100% rename from interface/src/scenes/settings/SettingsSideBarLink.tsx rename to packages/browser/src/scenes/settings/SettingsSideBarLink.tsx diff --git a/packages/browser/src/scenes/settings/app/AppSettingsRouter.tsx b/packages/browser/src/scenes/settings/app/AppSettingsRouter.tsx new file mode 100644 index 000000000..2a8cec19d --- /dev/null +++ b/packages/browser/src/scenes/settings/app/AppSettingsRouter.tsx @@ -0,0 +1,14 @@ +import React, { lazy } from 'react' +import { Route, Routes } from 'react-router' + +const GeneralSettingsScene = lazy(() => import('./general/GeneralSettingsScene.tsx')) +const AppearanceSettingsScene = lazy(() => import('./appearance/AppearanceSettingsScene.tsx')) + +export default function AppSettingsRouter() { + return ( + + } /> + } /> + + ) +} diff --git a/interface/src/scenes/settings/app/appearance/AppearanceSettingsScene.tsx b/packages/browser/src/scenes/settings/app/appearance/AppearanceSettingsScene.tsx similarity index 100% rename from interface/src/scenes/settings/app/appearance/AppearanceSettingsScene.tsx rename to packages/browser/src/scenes/settings/app/appearance/AppearanceSettingsScene.tsx diff --git a/interface/src/scenes/settings/app/appearance/DisplaySpacingPreference.tsx b/packages/browser/src/scenes/settings/app/appearance/DisplaySpacingPreference.tsx similarity index 100% rename from interface/src/scenes/settings/app/appearance/DisplaySpacingPreference.tsx rename to packages/browser/src/scenes/settings/app/appearance/DisplaySpacingPreference.tsx diff --git a/interface/src/scenes/settings/app/appearance/DoubleSidebarToggle.tsx b/packages/browser/src/scenes/settings/app/appearance/DoubleSidebarToggle.tsx similarity index 100% rename from interface/src/scenes/settings/app/appearance/DoubleSidebarToggle.tsx rename to packages/browser/src/scenes/settings/app/appearance/DoubleSidebarToggle.tsx diff --git a/interface/src/scenes/settings/app/appearance/HideScrollbarToggle.tsx b/packages/browser/src/scenes/settings/app/appearance/HideScrollbarToggle.tsx similarity index 100% rename from interface/src/scenes/settings/app/appearance/HideScrollbarToggle.tsx rename to packages/browser/src/scenes/settings/app/appearance/HideScrollbarToggle.tsx diff --git a/interface/src/scenes/settings/app/appearance/MaxWidthPreference.tsx b/packages/browser/src/scenes/settings/app/appearance/MaxWidthPreference.tsx similarity index 100% rename from interface/src/scenes/settings/app/appearance/MaxWidthPreference.tsx rename to packages/browser/src/scenes/settings/app/appearance/MaxWidthPreference.tsx diff --git a/interface/src/scenes/settings/app/appearance/PreferColorToggle.tsx b/packages/browser/src/scenes/settings/app/appearance/PreferColorToggle.tsx similarity index 100% rename from interface/src/scenes/settings/app/appearance/PreferColorToggle.tsx rename to packages/browser/src/scenes/settings/app/appearance/PreferColorToggle.tsx diff --git a/interface/src/scenes/settings/app/appearance/PreferenceToggle.tsx b/packages/browser/src/scenes/settings/app/appearance/PreferenceToggle.tsx similarity index 100% rename from interface/src/scenes/settings/app/appearance/PreferenceToggle.tsx rename to packages/browser/src/scenes/settings/app/appearance/PreferenceToggle.tsx diff --git a/interface/src/scenes/settings/app/appearance/PrimaryNavigationPreference.tsx b/packages/browser/src/scenes/settings/app/appearance/PrimaryNavigationPreference.tsx similarity index 100% rename from interface/src/scenes/settings/app/appearance/PrimaryNavigationPreference.tsx rename to packages/browser/src/scenes/settings/app/appearance/PrimaryNavigationPreference.tsx diff --git a/interface/src/scenes/settings/app/appearance/QueryIndicatorToggle.tsx b/packages/browser/src/scenes/settings/app/appearance/QueryIndicatorToggle.tsx similarity index 100% rename from interface/src/scenes/settings/app/appearance/QueryIndicatorToggle.tsx rename to packages/browser/src/scenes/settings/app/appearance/QueryIndicatorToggle.tsx diff --git a/interface/src/scenes/settings/app/appearance/ReplacePrimarySidebarToggle.tsx b/packages/browser/src/scenes/settings/app/appearance/ReplacePrimarySidebarToggle.tsx similarity index 100% rename from interface/src/scenes/settings/app/appearance/ReplacePrimarySidebarToggle.tsx rename to packages/browser/src/scenes/settings/app/appearance/ReplacePrimarySidebarToggle.tsx diff --git a/interface/src/scenes/settings/app/appearance/ThemeSelect.tsx b/packages/browser/src/scenes/settings/app/appearance/ThemeSelect.tsx similarity index 100% rename from interface/src/scenes/settings/app/appearance/ThemeSelect.tsx rename to packages/browser/src/scenes/settings/app/appearance/ThemeSelect.tsx diff --git a/interface/src/scenes/settings/app/desktop/DesktopSettingsScene.tsx b/packages/browser/src/scenes/settings/app/desktop/DesktopSettingsScene.tsx similarity index 100% rename from interface/src/scenes/settings/app/desktop/DesktopSettingsScene.tsx rename to packages/browser/src/scenes/settings/app/desktop/DesktopSettingsScene.tsx diff --git a/interface/src/scenes/settings/app/desktop/DiscordPresenceSwitch.tsx b/packages/browser/src/scenes/settings/app/desktop/DiscordPresenceSwitch.tsx similarity index 89% rename from interface/src/scenes/settings/app/desktop/DiscordPresenceSwitch.tsx rename to packages/browser/src/scenes/settings/app/desktop/DiscordPresenceSwitch.tsx index a5f52fcd8..7c86ab9e0 100644 --- a/interface/src/scenes/settings/app/desktop/DiscordPresenceSwitch.tsx +++ b/packages/browser/src/scenes/settings/app/desktop/DiscordPresenceSwitch.tsx @@ -1,13 +1,13 @@ -import { useAppProps, useUpdatePreferences, useUserStore } from '@stump/client' +import { useClientContext, useUpdatePreferences, useUserStore } from '@stump/client' import { IconButton, Label, RawSwitch, Text, ToolTip } from '@stump/components' import { RefreshCcw } from 'lucide-react' import React from 'react' import toast from 'react-hot-toast' -import { useLocaleContext } from '../../../../i18n' +import { useLocaleContext } from '@/i18n' export default function DiscordPresenceSwitch() { - const { setDiscordPresence } = useAppProps() ?? {} + const { setDiscordPresence } = useClientContext() const { t } = useLocaleContext() const { userPreferences, setUserPreferences } = useUserStore((state) => ({ setUserPreferences: state.setUserPreferences, @@ -28,6 +28,7 @@ export default function DiscordPresenceSwitch() { setUserPreferences(newPreferences) try { + // @ts-expect-error: Investigate this type error when I have time TODO await update(newPreferences) } catch (err) { console.error(err) diff --git a/interface/src/scenes/settings/app/general/AvatarPicker.tsx b/packages/browser/src/scenes/settings/app/general/AvatarPicker.tsx similarity index 100% rename from interface/src/scenes/settings/app/general/AvatarPicker.tsx rename to packages/browser/src/scenes/settings/app/general/AvatarPicker.tsx diff --git a/interface/src/scenes/settings/app/general/GeneralSettingsScene.tsx b/packages/browser/src/scenes/settings/app/general/GeneralSettingsScene.tsx similarity index 100% rename from interface/src/scenes/settings/app/general/GeneralSettingsScene.tsx rename to packages/browser/src/scenes/settings/app/general/GeneralSettingsScene.tsx diff --git a/interface/src/scenes/settings/app/general/LocalePreferences.tsx b/packages/browser/src/scenes/settings/app/general/LocalePreferences.tsx similarity index 100% rename from interface/src/scenes/settings/app/general/LocalePreferences.tsx rename to packages/browser/src/scenes/settings/app/general/LocalePreferences.tsx diff --git a/interface/src/scenes/settings/app/general/LocaleSelector.tsx b/packages/browser/src/scenes/settings/app/general/LocaleSelector.tsx similarity index 100% rename from interface/src/scenes/settings/app/general/LocaleSelector.tsx rename to packages/browser/src/scenes/settings/app/general/LocaleSelector.tsx diff --git a/interface/src/scenes/settings/app/general/ProfileForm.tsx b/packages/browser/src/scenes/settings/app/general/ProfileForm.tsx similarity index 100% rename from interface/src/scenes/settings/app/general/ProfileForm.tsx rename to packages/browser/src/scenes/settings/app/general/ProfileForm.tsx diff --git a/interface/src/scenes/settings/app/index.ts b/packages/browser/src/scenes/settings/app/index.ts similarity index 100% rename from interface/src/scenes/settings/app/index.ts rename to packages/browser/src/scenes/settings/app/index.ts diff --git a/interface/src/scenes/settings/index.ts b/packages/browser/src/scenes/settings/index.ts similarity index 100% rename from interface/src/scenes/settings/index.ts rename to packages/browser/src/scenes/settings/index.ts diff --git a/interface/src/scenes/settings/routes.ts b/packages/browser/src/scenes/settings/routes.ts similarity index 88% rename from interface/src/scenes/settings/routes.ts rename to packages/browser/src/scenes/settings/routes.ts index daa8566c6..709803984 100644 --- a/interface/src/scenes/settings/routes.ts +++ b/packages/browser/src/scenes/settings/routes.ts @@ -1,4 +1,14 @@ -import { AlarmClock, Bell, Brush, Cog, LucideIcon, PcCase, ShieldCheck, Users } from 'lucide-react' +import { + AlarmClock, + Bell, + Brush, + Cog, + LucideIcon, + PcCase, + ScrollText, + ShieldCheck, + Users, +} from 'lucide-react' type SubItem = { localeKey: string @@ -57,6 +67,13 @@ export const routeGroups: RouteGroup[] = [ permission: 'server:manage', to: '/settings/server/general', }, + { + icon: ScrollText, + label: 'Logs', + localeKey: 'server/logs', + permission: 'server:manage', + to: '/settings/server/logs', + }, { icon: AlarmClock, label: 'Jobs', diff --git a/packages/browser/src/scenes/settings/server/ServerSettingsRouter.tsx b/packages/browser/src/scenes/settings/server/ServerSettingsRouter.tsx new file mode 100644 index 000000000..7a4a7a4a9 --- /dev/null +++ b/packages/browser/src/scenes/settings/server/ServerSettingsRouter.tsx @@ -0,0 +1,19 @@ +import React, { lazy } from 'react' +import { Route, Routes } from 'react-router' + +import { UsersRouter } from './users/index.ts' + +const GeneralServerSettingsScene = lazy(() => import('./general/GeneralServerSettingsScene.tsx')) +const ServerLogsScene = lazy(() => import('./logs/ServerLogsScene.tsx')) +const JobSettingsScene = lazy(() => import('./jobs/JobSettingsScene.tsx')) + +export default function ServerSettingsRouter() { + return ( + + } /> + } /> + } /> + } /> + + ) +} diff --git a/interface/src/scenes/settings/server/ServerSettingsScene.tsx b/packages/browser/src/scenes/settings/server/ServerSettingsScene.tsx similarity index 100% rename from interface/src/scenes/settings/server/ServerSettingsScene.tsx rename to packages/browser/src/scenes/settings/server/ServerSettingsScene.tsx diff --git a/interface/src/scenes/settings/server/general/GeneralServerSettingsScene.tsx b/packages/browser/src/scenes/settings/server/general/GeneralServerSettingsScene.tsx similarity index 84% rename from interface/src/scenes/settings/server/general/GeneralServerSettingsScene.tsx rename to packages/browser/src/scenes/settings/server/general/GeneralServerSettingsScene.tsx index 6cbe2eab9..022967a83 100644 --- a/interface/src/scenes/settings/server/general/GeneralServerSettingsScene.tsx +++ b/packages/browser/src/scenes/settings/server/general/GeneralServerSettingsScene.tsx @@ -6,6 +6,8 @@ import { SceneContainer } from '@/components/container' import LibrariesStats from '@/components/library/LibrariesStats' import { useLocaleContext } from '@/i18n' +import ServerInfoSection from './ServerInfoSection' + export default function GeneralServerSettingsScene() { const { t } = useLocaleContext() @@ -16,9 +18,8 @@ export default function GeneralServerSettingsScene() { -
- -
+ +
) diff --git a/packages/browser/src/scenes/settings/server/general/ServerInfoSection.tsx b/packages/browser/src/scenes/settings/server/general/ServerInfoSection.tsx new file mode 100644 index 000000000..37325b7f8 --- /dev/null +++ b/packages/browser/src/scenes/settings/server/general/ServerInfoSection.tsx @@ -0,0 +1,69 @@ +import { useStumpVersion } from '@stump/client' +import { cn, Heading, Label, Link, Text, TEXT_VARIANTS } from '@stump/components' +import dayjs from 'dayjs' +import React, { useMemo } from 'react' + +import { useLocaleContext } from '@/i18n' + +export default function ServerInfoSection() { + const version = useStumpVersion() + + const { t } = useLocaleContext() + + const commitUrl = useMemo(() => { + if (!version) return undefined + + const { rev, semver } = version + const repoUrl = 'https://github.com/stumpapp/stump' + if (semver && semver !== '0.0.0') { + return `${repoUrl}/releases/tag/v${semver}` + } else if (rev) { + return `${repoUrl}/commit/${rev}` + } else { + return repoUrl + } + }, [version]) + + return ( +
+
+ {t('settingsScene.server/general.sections.serverInfo.title')} + + {t('settingsScene.server/general.sections.serverInfo.description')} + +
+ + {version && ( +
+
+ + + v{version.semver} + +
+
+ + + {version.rev} + +
+
+ + + {dayjs(version.compile_time).format('LLL')} + +
+
+ )} +
+ ) +} diff --git a/interface/src/scenes/settings/server/index.ts b/packages/browser/src/scenes/settings/server/index.ts similarity index 100% rename from interface/src/scenes/settings/server/index.ts rename to packages/browser/src/scenes/settings/server/index.ts diff --git a/interface/src/scenes/settings/server/jobs/DeleteAllSection.tsx b/packages/browser/src/scenes/settings/server/jobs/DeleteAllSection.tsx similarity index 100% rename from interface/src/scenes/settings/server/jobs/DeleteAllSection.tsx rename to packages/browser/src/scenes/settings/server/jobs/DeleteAllSection.tsx diff --git a/interface/src/scenes/settings/server/jobs/JobActionMenu.tsx b/packages/browser/src/scenes/settings/server/jobs/JobActionMenu.tsx similarity index 57% rename from interface/src/scenes/settings/server/jobs/JobActionMenu.tsx rename to packages/browser/src/scenes/settings/server/jobs/JobActionMenu.tsx index 5ce914074..4da45ca77 100644 --- a/interface/src/scenes/settings/server/jobs/JobActionMenu.tsx +++ b/packages/browser/src/scenes/settings/server/jobs/JobActionMenu.tsx @@ -1,15 +1,25 @@ +import paths from '@/paths' import { jobApi, jobQueryKeys } from '@stump/api' import { invalidateQueries } from '@stump/client' import { DropdownMenu, IconButton } from '@stump/components' -import { JobDetail } from '@stump/types' -import { Ban, MoreVertical, Trash2 } from 'lucide-react' +import { CoreJobOutput, PersistedJob } from '@stump/types' +import { Ban, Database, FileClock, MoreVertical, Trash2 } from 'lucide-react' import React, { useCallback, useMemo } from 'react' import { toast } from 'react-hot-toast' +import { useNavigate } from 'react-router' type Props = { - job: JobDetail + job: PersistedJob + onInspectData: (data: CoreJobOutput | null) => void } -export default function JobActionMenu({ job }: Props) { +export default function JobActionMenu({ job, onInspectData }: Props) { + const navigate = useNavigate() + + const isCancelable = + job.status === 'RUNNING' || job.status === 'QUEUED' || job.status === 'PAUSED' + const isDeletable = + job.status === 'COMPLETED' || job.status === 'FAILED' || job.status === 'CANCELLED' + /** * A generic error handler for the other utility functions in this component. */ @@ -26,7 +36,7 @@ export default function JobActionMenu({ job }: Props) { * Cancels the running job. */ const handleCancel = useCallback(async () => { - if (job.status !== 'RUNNING' && job.status !== 'QUEUED') { + if (!isCancelable) { // This shouldn't happen, but just in case we will refresh the jobs // and just return. await invalidateQueries({ queryKey: [jobQueryKeys.getJobs] }) @@ -46,8 +56,8 @@ export default function JobActionMenu({ job }: Props) { * Deletes the record of the job from the database. */ const handleDelete = useCallback(async () => { - // We don't allow deletion for in-flight/queued jobs - if (job.status === 'RUNNING' || job.status === 'QUEUED') { + // We don't allow DELETE for in-flight/queued jobs + if (!isDeletable) { return } @@ -60,9 +70,12 @@ export default function JobActionMenu({ job }: Props) { } }, [job.id, job.status]) + const jobId = job.id + const jobData = job.output_data + const associatedLogs = useMemo(() => job.logs ?? [], [job.logs]) const items = useMemo( () => [ - ...(job.status === 'RUNNING' + ...(isCancelable ? [ { label: 'Cancel', @@ -71,7 +84,26 @@ export default function JobActionMenu({ job }: Props) { }, ] : []), - ...(job.status !== 'RUNNING' && job.status !== 'QUEUED' + ...(jobData + ? [ + { + label: 'View data', + leftIcon: , + onClick: () => onInspectData(jobData), + }, + ] + : []), + ...(associatedLogs.length > 0 + ? [ + { + label: 'View logs', + leftIcon: , + onClick: () => navigate(paths.serverLogs(jobId)), + }, + ] + : []), + + ...(isDeletable ? [ { label: 'Delete', @@ -81,7 +113,16 @@ export default function JobActionMenu({ job }: Props) { ] : []), ], - [job.status, handleCancel, handleDelete], + [ + isCancelable, + isDeletable, + associatedLogs, + jobId, + navigate, + onInspectData, + handleCancel, + handleDelete, + ], ) return ( diff --git a/packages/browser/src/scenes/settings/server/jobs/JobDataInspector.tsx b/packages/browser/src/scenes/settings/server/jobs/JobDataInspector.tsx new file mode 100644 index 000000000..958728b9f --- /dev/null +++ b/packages/browser/src/scenes/settings/server/jobs/JobDataInspector.tsx @@ -0,0 +1,33 @@ +import { Sheet, Text, usePrevious } from '@stump/components' +import { CoreJobOutput } from '@stump/types' +import React from 'react' + +type Props = { + data: CoreJobOutput + onClose: () => void +} +export default function JobDataInspector({ data, onClose }: Props) { + const fallback = usePrevious(data) + + const displayedData = data || fallback + + return ( + +
+
+ + Raw JSON + +
+
+
{JSON.stringify(displayedData, null, 2)}
+
+
+
+ ) +} diff --git a/interface/src/scenes/settings/server/jobs/JobScheduler.tsx b/packages/browser/src/scenes/settings/server/jobs/JobScheduler.tsx similarity index 100% rename from interface/src/scenes/settings/server/jobs/JobScheduler.tsx rename to packages/browser/src/scenes/settings/server/jobs/JobScheduler.tsx diff --git a/interface/src/scenes/settings/server/jobs/JobSettingsScene.tsx b/packages/browser/src/scenes/settings/server/jobs/JobSettingsScene.tsx similarity index 90% rename from interface/src/scenes/settings/server/jobs/JobSettingsScene.tsx rename to packages/browser/src/scenes/settings/server/jobs/JobSettingsScene.tsx index 998802a46..6b1e8394d 100644 --- a/interface/src/scenes/settings/server/jobs/JobSettingsScene.tsx +++ b/packages/browser/src/scenes/settings/server/jobs/JobSettingsScene.tsx @@ -1,4 +1,4 @@ -import { useJobContext, useJobsQuery } from '@stump/client' +import { useJobsQuery, useJobStore } from '@stump/client' import { Heading, Text } from '@stump/components' import { PaginationState } from '@tanstack/react-table' import { useMemo, useState } from 'react' @@ -23,7 +23,7 @@ export default function JobSettingsScene() { const { t } = useLocaleContext() - const { activeJobs } = useJobContext() ?? {} + const storeJobs = useJobStore((state) => state.jobs) const { jobs: dbJobs, @@ -35,6 +35,7 @@ export default function JobSettingsScene() { page_size: pagination.pageSize, params: { direction: 'desc', + load_logs: true, order_by: 'created_at', zero_based: true, }, @@ -44,17 +45,15 @@ export default function JobSettingsScene() { // active jobs has the task progress information, so we need to merge that // with the jobs from the database. return (dbJobs ?? []).map((job) => { - const activeJob = activeJobs?.[job.id] + const activeJob = storeJobs?.[job.id] if (!activeJob) return job return { ...job, - completed_task_count: Number(activeJob.current_task), status: activeJob.status ?? job.status, - task_count: Number(activeJob.task_count), } }) - }, [dbJobs, activeJobs]) + }, [dbJobs, storeJobs]) return ( () +const columnHelper = createColumnHelper() export default function JobTable() { const { isServerOwner } = useAppContext() const { t } = useLocaleContext() const { jobs, pagination, setPagination, pageCount } = useJobSettingsContext() + const [inspectingData, setInspectingData] = useState() + const columns = useMemo( () => [ columnHelper.accessor('name', { @@ -54,14 +57,6 @@ export default function JobTable() { ), header: t(`${LOCALE_BASE}.columns.description`), }), - columnHelper.accessor((job) => `${job.completed_task_count}/${job.task_count}`, { - cell: ({ row }) => ( - - {row.original.completed_task_count}/{row.original.task_count} - - ), - header: t(`${LOCALE_BASE}.columns.tasks`), - }), columnHelper.accessor('created_at', { cell: ({ row: { original: job } }) => { if (job.created_at) { @@ -131,7 +126,10 @@ export default function JobTable() { id: 'ms_elapsed', }), columnHelper.display({ - cell: ({ row }) => (isServerOwner ? : null), + cell: ({ row }) => + isServerOwner ? ( + + ) : null, id: 'actions', size: 28, }), @@ -149,7 +147,6 @@ export default function JobTable() { debugHeaders: DEBUG, debugTable: DEBUG, enableSorting: false, - getCoreRowModel: getCoreRowModel(), manualPagination: true, onPaginationChange: setPagination, pageCount, @@ -171,6 +168,8 @@ export default function JobTable() { )} isZeroBasedPagination /> + + setInspectingData(null)} /> ) } diff --git a/interface/src/scenes/settings/server/jobs/RunningJobElapsedTime.tsx b/packages/browser/src/scenes/settings/server/jobs/RunningJobElapsedTime.tsx similarity index 94% rename from interface/src/scenes/settings/server/jobs/RunningJobElapsedTime.tsx rename to packages/browser/src/scenes/settings/server/jobs/RunningJobElapsedTime.tsx index d28631797..142f19fea 100644 --- a/interface/src/scenes/settings/server/jobs/RunningJobElapsedTime.tsx +++ b/packages/browser/src/scenes/settings/server/jobs/RunningJobElapsedTime.tsx @@ -1,11 +1,11 @@ import { Text } from '@stump/components' -import { JobDetail } from '@stump/types' +import { PersistedJob } from '@stump/types' import dayjs from 'dayjs' import { Duration } from 'dayjs/plugin/duration' import React, { useEffect, useMemo, useState } from 'react' type Props = { - job: JobDetail + job: PersistedJob formatDuration: (duration: Duration) => string } diff --git a/interface/src/scenes/settings/server/jobs/context.ts b/packages/browser/src/scenes/settings/server/jobs/context.ts similarity index 90% rename from interface/src/scenes/settings/server/jobs/context.ts rename to packages/browser/src/scenes/settings/server/jobs/context.ts index 263312bd5..6e3bc89fe 100644 --- a/interface/src/scenes/settings/server/jobs/context.ts +++ b/packages/browser/src/scenes/settings/server/jobs/context.ts @@ -1,11 +1,11 @@ -import { JobDetail } from '@stump/types' +import { PersistedJob } from '@stump/types' import { PaginationState } from '@tanstack/react-table' import { createContext, useContext } from 'react' import { noop } from '@/utils/misc' export type IJobSettingsContext = { - jobs: JobDetail[] + jobs: PersistedJob[] isRefetchingJobs: boolean pageCount: number pagination: PaginationState diff --git a/packages/browser/src/scenes/settings/server/logs/ServerLogsScene.tsx b/packages/browser/src/scenes/settings/server/logs/ServerLogsScene.tsx new file mode 100644 index 000000000..081846923 --- /dev/null +++ b/packages/browser/src/scenes/settings/server/logs/ServerLogsScene.tsx @@ -0,0 +1,26 @@ +import React from 'react' +import { Helmet } from 'react-helmet' + +import { ContentContainer } from '@/components/container' +import { SceneContainer } from '@/components/container' +import { useLocaleContext } from '@/i18n' + +import { LiveLogsSection } from './live-logs' +import { PersistedLogsSection } from './persisted-logs' + +export default function ServerLogsScene() { + const { t } = useLocaleContext() + + return ( + + + Stump | {t('settingsScene.server/logs.helmet')} + + + + + + + + ) +} diff --git a/packages/browser/src/scenes/settings/server/logs/live-logs/LiveLogsFeed.tsx b/packages/browser/src/scenes/settings/server/logs/live-logs/LiveLogsFeed.tsx new file mode 100644 index 000000000..41903a352 --- /dev/null +++ b/packages/browser/src/scenes/settings/server/logs/live-logs/LiveLogsFeed.tsx @@ -0,0 +1,79 @@ +import { API } from '@stump/api' +import React, { useEffect, useRef, useState } from 'react' + +const MAX_BUFFER_SIZE = 1000 + +/** + * A component that displays a live feed of logs from the server. The feed is served by + * a SSE (Server-Sent Events) endpoint on the server. + */ +export default function LiveLogsFeed() { + const [source, setSource] = useState(null) + + /** + * The buffer of logs that have been received from the server. There is a limit to the + * number of logs that can be displayed at once, so this buffer will be cleared when + * it reaches a certain size. + */ + const [logsBuffer, setLogsBuffer] = useState([]) + + const scrollRef = useRef(null) + const logContainerRef = useRef(null) + + useEffect(() => { + if (!source) { + const URI = API?.getUri() + + const newSource = new EventSource(`${URI}/logs/file/tail`, { + withCredentials: true, + }) + newSource.onmessage = (event) => { + const newLog = event.data as string + // remove the " at the first and last character of the string + const formattedLog = newLog.slice(1, newLog.length - 1) + setLogsBuffer((prevLogs) => { + const newLogs = [...prevLogs, formattedLog] + if (newLogs.length > MAX_BUFFER_SIZE) { + return newLogs.slice(newLogs.length - MAX_BUFFER_SIZE) + } + return newLogs + }) + } + + newSource.onerror = () => { + // If the connection is lost, we will attempt to reconnect after a short delay. + setTimeout(() => { + setSource(null) + }, 1000) + } + + setSource(newSource) + } + return () => { + source?.close() + } + }, [source]) + + // whenever a new log is added to the buffer, we want to scroll to the bottom of the logs + useEffect(() => { + logContainerRef.current?.scrollTo({ + behavior: 'smooth', + top: logContainerRef.current.scrollHeight, + }) + }, [logsBuffer]) + + // TODO: Syntax highlighting for logs + return ( +
+
+ {logsBuffer.map((log, index) => ( + {log} + ))} +
+
+
+ ) +} diff --git a/packages/browser/src/scenes/settings/server/logs/live-logs/LiveLogsSection.tsx b/packages/browser/src/scenes/settings/server/logs/live-logs/LiveLogsSection.tsx new file mode 100644 index 000000000..bb1e96343 --- /dev/null +++ b/packages/browser/src/scenes/settings/server/logs/live-logs/LiveLogsSection.tsx @@ -0,0 +1,27 @@ +import { Alert, Heading, Text } from '@stump/components' +import { Construction } from 'lucide-react' +import React from 'react' + +import { useLocaleContext } from '@/i18n' + +import LiveLogsFeed from './LiveLogsFeed' + +export default function LiveLogsSection() { + const { t } = useLocaleContext() + return ( +
+
+ {t('settingsScene.server/logs.sections.liveLogs.title')} + + {t('settingsScene.server/logs.sections.liveLogs.description')} + +
+ + + {t('common.limitedFunctionality')} + + + +
+ ) +} diff --git a/packages/browser/src/scenes/settings/server/logs/live-logs/index.ts b/packages/browser/src/scenes/settings/server/logs/live-logs/index.ts new file mode 100644 index 000000000..2f7bc9552 --- /dev/null +++ b/packages/browser/src/scenes/settings/server/logs/live-logs/index.ts @@ -0,0 +1 @@ +export { default as LiveLogsSection } from './LiveLogsSection' diff --git a/packages/browser/src/scenes/settings/server/logs/persisted-logs/LogLevelBadge.tsx b/packages/browser/src/scenes/settings/server/logs/persisted-logs/LogLevelBadge.tsx new file mode 100644 index 000000000..b30067db9 --- /dev/null +++ b/packages/browser/src/scenes/settings/server/logs/persisted-logs/LogLevelBadge.tsx @@ -0,0 +1,24 @@ +import { Badge, BadgeProps, PickSelect } from '@stump/components' +import { LogLevel } from '@stump/types' +import React, { useMemo } from 'react' + +type Props = { + level: LogLevel +} +export default function LogLevelBadge({ level }: Props) { + const variant: PickSelect = useMemo(() => { + if (level === 'WARN') { + return 'warning' + } else if (level === 'ERROR') { + return 'error' + } else { + return 'default' + } + }, [level]) + + return ( + + {level} + + ) +} diff --git a/packages/browser/src/scenes/settings/server/logs/persisted-logs/PersistedLogsSection.tsx b/packages/browser/src/scenes/settings/server/logs/persisted-logs/PersistedLogsSection.tsx new file mode 100644 index 000000000..7beecf3c6 --- /dev/null +++ b/packages/browser/src/scenes/settings/server/logs/persisted-logs/PersistedLogsSection.tsx @@ -0,0 +1,22 @@ +import { Heading, Text } from '@stump/components' +import React from 'react' + +import { useLocaleContext } from '@/i18n' + +import PersistedLogsTable from './PersistedLogsTable' + +export default function PersistedLogsSection() { + const { t } = useLocaleContext() + return ( +
+
+ {t('settingsScene.server/logs.sections.persistedLogs.title')} + + {t('settingsScene.server/logs.sections.persistedLogs.description')} + +
+ + +
+ ) +} diff --git a/packages/browser/src/scenes/settings/server/logs/persisted-logs/PersistedLogsTable.tsx b/packages/browser/src/scenes/settings/server/logs/persisted-logs/PersistedLogsTable.tsx new file mode 100644 index 000000000..50a9d3ea3 --- /dev/null +++ b/packages/browser/src/scenes/settings/server/logs/persisted-logs/PersistedLogsTable.tsx @@ -0,0 +1,146 @@ +import { useLogsQuery } from '@stump/client' +import { Card, Heading, Text, ToolTip } from '@stump/components' +import { Log } from '@stump/types' +import { createColumnHelper, SortingState } from '@tanstack/react-table' +import dayjs from 'dayjs' +import duration from 'dayjs/plugin/duration' +import relativeTime from 'dayjs/plugin/relativeTime' +import { CircleSlash2 } from 'lucide-react' +import React, { useMemo, useState } from 'react' +import { useSearchParams } from 'react-router-dom' + +import { Table } from '@/components/table' +import { useLocaleContext } from '@/i18n' + +import LogLevelBadge from './LogLevelBadge' + +dayjs.extend(duration) +dayjs.extend(relativeTime) + +const DEBUG = import.meta.env.DEV +const LOCALE_BASE = 'settingsScene.server/logs.sections.persistedLogs.table' + +const columnHelper = createColumnHelper() +const baseColumns = [ + columnHelper.accessor('timestamp', { + cell: ({ + row: { + original: { timestamp }, + }, + }) => ( + + {dayjs(timestamp).format('YYYY-MM-DD HH:mm:ss')} + + ), + enableSorting: true, + header: 'Time', + size: 75, + sortingFn: ({ original: a }, { original: b }) => { + return dayjs(a.timestamp).isBefore(b.timestamp) ? -1 : 1 + }, + }), + columnHelper.accessor('level', { + cell: ({ + row: { + original: { level }, + }, + }) => , + enableSorting: true, + header: 'Level', + size: 75, + sortingFn: ({ original: a }, { original: b }) => { + const levels = ['error', 'warn', 'info', 'debug'] + return levels.indexOf(a.level) < levels.indexOf(b.level) ? -1 : 1 + }, + }), + columnHelper.accessor('message', { + cell: ({ + row: { + original: { message }, + }, + }) => {message}, + header: 'Message', + size: 300, + }), + columnHelper.accessor('job_id', { + cell: ({ + row: { + original: { job_id }, + }, + }) => + job_id ? ( + {job_id}}> + + {job_id.slice(0, 5)}..{job_id.slice(-5)} + + + ) : null, + header: 'Job ID', + size: 150, + }), +] + +export default function PersistedLogsTable() { + const { t } = useLocaleContext() + + const [search] = useSearchParams() + const [pagination, setPagination] = useState({ pageIndex: 0, pageSize: 10 }) + const [sortState, setSortState] = useState([]) + const [jobId] = useState(() => search.get('job_id')) + + const firstSort = useMemo( + () => + sortState[0] ?? { + desc: true, + id: 'timestamp', + }, + [sortState], + ) + const { logs, pageData } = useLogsQuery({ + page: pagination.pageIndex, + page_size: pagination.pageSize, + params: { + direction: firstSort.desc ? 'desc' : 'asc', + job_id: jobId, + order_by: firstSort.id, + zero_based: true, + }, + }) + const pageCount = pageData?.total_pages ?? 1 + + return ( + + ( +
+ + {t(`${LOCALE_BASE}.emptyHeading`)} + + {t(`${LOCALE_BASE}.emptySubtitle`)} + +
+ )} + isZeroBasedPagination + /> + + ) +} diff --git a/packages/browser/src/scenes/settings/server/logs/persisted-logs/index.ts b/packages/browser/src/scenes/settings/server/logs/persisted-logs/index.ts new file mode 100644 index 000000000..23e8c10fa --- /dev/null +++ b/packages/browser/src/scenes/settings/server/logs/persisted-logs/index.ts @@ -0,0 +1 @@ +export { default as PersistedLogsSection } from './PersistedLogsSection' diff --git a/interface/src/scenes/settings/server/users/UsersRouter.tsx b/packages/browser/src/scenes/settings/server/users/UsersRouter.tsx similarity index 81% rename from interface/src/scenes/settings/server/users/UsersRouter.tsx rename to packages/browser/src/scenes/settings/server/users/UsersRouter.tsx index f8e7b53f4..de599ab13 100644 --- a/interface/src/scenes/settings/server/users/UsersRouter.tsx +++ b/packages/browser/src/scenes/settings/server/users/UsersRouter.tsx @@ -1,19 +1,16 @@ import { useUsersQuery } from '@stump/client' import { User } from '@stump/types' import { PaginationState } from '@tanstack/react-table' -import React, { useState } from 'react' +import React, { lazy, useState } from 'react' import { Navigate, Route, Routes } from 'react-router' import { useAppContext } from '@/context' -import { LazyComponent } from '../../../../AppRouter.tsx' import { UserManagementContext } from './context.ts' import UpdateUserScene from './create-or-update/UpdateUserScene.tsx' -const lazily = (loader: () => unknown) => React.lazy(() => loader() as LazyComponent) - -const UserManagementScene = lazily(() => import('./UsersScene.tsx')) -const CreateUserScene = lazily(() => import('./create-or-update/CreateUserScene.tsx')) +const UserManagementScene = lazy(() => import('./UsersScene.tsx')) +const CreateUserScene = lazy(() => import('./create-or-update/CreateUserScene.tsx')) export default function UsersRouter() { const [deletingUser, setDeletingUser] = useState(null) diff --git a/interface/src/scenes/settings/server/users/UsersScene.tsx b/packages/browser/src/scenes/settings/server/users/UsersScene.tsx similarity index 100% rename from interface/src/scenes/settings/server/users/UsersScene.tsx rename to packages/browser/src/scenes/settings/server/users/UsersScene.tsx diff --git a/interface/src/scenes/settings/server/users/UsersStats.tsx b/packages/browser/src/scenes/settings/server/users/UsersStats.tsx similarity index 100% rename from interface/src/scenes/settings/server/users/UsersStats.tsx rename to packages/browser/src/scenes/settings/server/users/UsersStats.tsx diff --git a/interface/src/scenes/settings/server/users/context.ts b/packages/browser/src/scenes/settings/server/users/context.ts similarity index 100% rename from interface/src/scenes/settings/server/users/context.ts rename to packages/browser/src/scenes/settings/server/users/context.ts diff --git a/interface/src/scenes/settings/server/users/create-or-update/AccountDetails.tsx b/packages/browser/src/scenes/settings/server/users/create-or-update/AccountDetails.tsx similarity index 100% rename from interface/src/scenes/settings/server/users/create-or-update/AccountDetails.tsx rename to packages/browser/src/scenes/settings/server/users/create-or-update/AccountDetails.tsx diff --git a/interface/src/scenes/settings/server/users/create-or-update/CreateOrUpdateUserForm.tsx b/packages/browser/src/scenes/settings/server/users/create-or-update/CreateOrUpdateUserForm.tsx similarity index 100% rename from interface/src/scenes/settings/server/users/create-or-update/CreateOrUpdateUserForm.tsx rename to packages/browser/src/scenes/settings/server/users/create-or-update/CreateOrUpdateUserForm.tsx diff --git a/interface/src/scenes/settings/server/users/create-or-update/CreateUserScene.tsx b/packages/browser/src/scenes/settings/server/users/create-or-update/CreateUserScene.tsx similarity index 100% rename from interface/src/scenes/settings/server/users/create-or-update/CreateUserScene.tsx rename to packages/browser/src/scenes/settings/server/users/create-or-update/CreateUserScene.tsx diff --git a/interface/src/scenes/settings/server/users/create-or-update/MaxSessionsAllowed.tsx b/packages/browser/src/scenes/settings/server/users/create-or-update/MaxSessionsAllowed.tsx similarity index 100% rename from interface/src/scenes/settings/server/users/create-or-update/MaxSessionsAllowed.tsx rename to packages/browser/src/scenes/settings/server/users/create-or-update/MaxSessionsAllowed.tsx diff --git a/interface/src/scenes/settings/server/users/create-or-update/UpdateUserScene.tsx b/packages/browser/src/scenes/settings/server/users/create-or-update/UpdateUserScene.tsx similarity index 100% rename from interface/src/scenes/settings/server/users/create-or-update/UpdateUserScene.tsx rename to packages/browser/src/scenes/settings/server/users/create-or-update/UpdateUserScene.tsx diff --git a/interface/src/scenes/settings/server/users/create-or-update/UserPermissionsForm.tsx b/packages/browser/src/scenes/settings/server/users/create-or-update/UserPermissionsForm.tsx similarity index 100% rename from interface/src/scenes/settings/server/users/create-or-update/UserPermissionsForm.tsx rename to packages/browser/src/scenes/settings/server/users/create-or-update/UserPermissionsForm.tsx diff --git a/interface/src/scenes/settings/server/users/create-or-update/UserRestrictionsForm.tsx b/packages/browser/src/scenes/settings/server/users/create-or-update/UserRestrictionsForm.tsx similarity index 100% rename from interface/src/scenes/settings/server/users/create-or-update/UserRestrictionsForm.tsx rename to packages/browser/src/scenes/settings/server/users/create-or-update/UserRestrictionsForm.tsx diff --git a/interface/src/scenes/settings/server/users/index.ts b/packages/browser/src/scenes/settings/server/users/index.ts similarity index 100% rename from interface/src/scenes/settings/server/users/index.ts rename to packages/browser/src/scenes/settings/server/users/index.ts diff --git a/interface/src/scenes/settings/server/users/login-activity/ClearActivitySection.tsx b/packages/browser/src/scenes/settings/server/users/login-activity/ClearActivitySection.tsx similarity index 100% rename from interface/src/scenes/settings/server/users/login-activity/ClearActivitySection.tsx rename to packages/browser/src/scenes/settings/server/users/login-activity/ClearActivitySection.tsx diff --git a/interface/src/scenes/settings/server/users/login-activity/LoginActivitySection.tsx b/packages/browser/src/scenes/settings/server/users/login-activity/LoginActivitySection.tsx similarity index 66% rename from interface/src/scenes/settings/server/users/login-activity/LoginActivitySection.tsx rename to packages/browser/src/scenes/settings/server/users/login-activity/LoginActivitySection.tsx index 7e1f63f06..5b11e7cbd 100644 --- a/interface/src/scenes/settings/server/users/login-activity/LoginActivitySection.tsx +++ b/packages/browser/src/scenes/settings/server/users/login-activity/LoginActivitySection.tsx @@ -8,9 +8,10 @@ export default function LoginActivitySection() { return (
- Authentication history - - All login attempts are stored and can be cleared at any time + Authentication history + + All login attempts are logged and stored for security purposes. You can clear the logs at + any time
diff --git a/interface/src/scenes/settings/server/users/login-activity/LoginActivityTable.tsx b/packages/browser/src/scenes/settings/server/users/login-activity/LoginActivityTable.tsx similarity index 93% rename from interface/src/scenes/settings/server/users/login-activity/LoginActivityTable.tsx rename to packages/browser/src/scenes/settings/server/users/login-activity/LoginActivityTable.tsx index 0b1fcb16b..f511e1810 100644 --- a/interface/src/scenes/settings/server/users/login-activity/LoginActivityTable.tsx +++ b/packages/browser/src/scenes/settings/server/users/login-activity/LoginActivityTable.tsx @@ -1,12 +1,7 @@ import { useLoginActivityQuery } from '@stump/client' import { Badge, Card, Text } from '@stump/components' import { LoginActivity } from '@stump/types' -import { - createColumnHelper, - getCoreRowModel, - getPaginationRowModel, - PaginationState, -} from '@tanstack/react-table' +import { createColumnHelper, getPaginationRowModel, PaginationState } from '@tanstack/react-table' import dayjs from 'dayjs' import React, { useState } from 'react' @@ -95,7 +90,6 @@ export default function LoginActivityTable() { minSize: 100, size: 150, }, - getCoreRowModel: getCoreRowModel(), getPaginationRowModel: getPaginationRowModel(), onPaginationChange: setPagination, state: { diff --git a/interface/src/scenes/settings/server/users/user-table/DeleteUserModal.tsx b/packages/browser/src/scenes/settings/server/users/user-table/DeleteUserModal.tsx similarity index 100% rename from interface/src/scenes/settings/server/users/user-table/DeleteUserModal.tsx rename to packages/browser/src/scenes/settings/server/users/user-table/DeleteUserModal.tsx diff --git a/interface/src/scenes/settings/server/users/user-table/InspectUserSlideOver.tsx b/packages/browser/src/scenes/settings/server/users/user-table/InspectUserSlideOver.tsx similarity index 100% rename from interface/src/scenes/settings/server/users/user-table/InspectUserSlideOver.tsx rename to packages/browser/src/scenes/settings/server/users/user-table/InspectUserSlideOver.tsx diff --git a/interface/src/scenes/settings/server/users/user-table/UserActionMenu.tsx b/packages/browser/src/scenes/settings/server/users/user-table/UserActionMenu.tsx similarity index 100% rename from interface/src/scenes/settings/server/users/user-table/UserActionMenu.tsx rename to packages/browser/src/scenes/settings/server/users/user-table/UserActionMenu.tsx diff --git a/interface/src/scenes/settings/server/users/user-table/UserTable.tsx b/packages/browser/src/scenes/settings/server/users/user-table/UserTable.tsx similarity index 100% rename from interface/src/scenes/settings/server/users/user-table/UserTable.tsx rename to packages/browser/src/scenes/settings/server/users/user-table/UserTable.tsx diff --git a/interface/src/scenes/settings/server/users/user-table/UserTableSection.tsx b/packages/browser/src/scenes/settings/server/users/user-table/UserTableSection.tsx similarity index 64% rename from interface/src/scenes/settings/server/users/user-table/UserTableSection.tsx rename to packages/browser/src/scenes/settings/server/users/user-table/UserTableSection.tsx index 963dc62aa..6fe875a74 100644 --- a/interface/src/scenes/settings/server/users/user-table/UserTableSection.tsx +++ b/packages/browser/src/scenes/settings/server/users/user-table/UserTableSection.tsx @@ -1,4 +1,4 @@ -import { ButtonOrLink, Heading } from '@stump/components' +import { ButtonOrLink, Heading, Text } from '@stump/components' import DeleteUserModal from './DeleteUserModal' import UserTable from './UserTable' @@ -7,7 +7,12 @@ export default function UserTableSection() { return (
- Existing accounts +
+ Existing accounts + + A list of all existing accounts on the server + +
diff --git a/interface/src/scenes/settings/server/users/user-table/UsernameRow.tsx b/packages/browser/src/scenes/settings/server/users/user-table/UsernameRow.tsx similarity index 100% rename from interface/src/scenes/settings/server/users/user-table/UsernameRow.tsx rename to packages/browser/src/scenes/settings/server/users/user-table/UsernameRow.tsx diff --git a/interface/src/scenes/settings/useSettingsRoutes.ts b/packages/browser/src/scenes/settings/useSettingsRoutes.ts similarity index 100% rename from interface/src/scenes/settings/useSettingsRoutes.ts rename to packages/browser/src/scenes/settings/useSettingsRoutes.ts diff --git a/interface/src/scenes/smart-list/SmartListCard.tsx b/packages/browser/src/scenes/smart-list/SmartListCard.tsx similarity index 100% rename from interface/src/scenes/smart-list/SmartListCard.tsx rename to packages/browser/src/scenes/smart-list/SmartListCard.tsx diff --git a/interface/src/scenes/smart-list/SmartListRouter.tsx b/packages/browser/src/scenes/smart-list/SmartListRouter.tsx similarity index 71% rename from interface/src/scenes/smart-list/SmartListRouter.tsx rename to packages/browser/src/scenes/smart-list/SmartListRouter.tsx index 2544604eb..8f50f9f80 100644 --- a/interface/src/scenes/smart-list/SmartListRouter.tsx +++ b/packages/browser/src/scenes/smart-list/SmartListRouter.tsx @@ -1,16 +1,13 @@ -import React, { useEffect } from 'react' +import React, { lazy, useEffect } from 'react' import { Navigate, Route, Routes, useNavigate } from 'react-router' import { useAppContext } from '@/context' -import { LazyComponent } from '../../AppRouter.tsx' import UserSmartListLayout from './UserSmartListLayout.tsx' import UserSmartListRouter from './UserSmartListRouter.tsx' -const lazily = (loader: () => unknown) => React.lazy(() => loader() as LazyComponent) - -const UserSmartListsScene = lazily(() => import('./UserSmartListsScene.tsx')) -const CreateSmartListScene = lazily(() => import('./create-or-update/CreateSmartListScene.tsx')) +const UserSmartListsScene = lazy(() => import('./UserSmartListsScene.tsx')) +const CreateSmartListScene = lazy(() => import('./create-or-update/CreateSmartListScene.tsx')) export default function SmartListRouter() { const { checkPermission } = useAppContext() diff --git a/interface/src/scenes/smart-list/UserSmartListHeader.tsx b/packages/browser/src/scenes/smart-list/UserSmartListHeader.tsx similarity index 100% rename from interface/src/scenes/smart-list/UserSmartListHeader.tsx rename to packages/browser/src/scenes/smart-list/UserSmartListHeader.tsx diff --git a/interface/src/scenes/smart-list/UserSmartListLayout.tsx b/packages/browser/src/scenes/smart-list/UserSmartListLayout.tsx similarity index 100% rename from interface/src/scenes/smart-list/UserSmartListLayout.tsx rename to packages/browser/src/scenes/smart-list/UserSmartListLayout.tsx diff --git a/interface/src/scenes/smart-list/UserSmartListNavigation.tsx b/packages/browser/src/scenes/smart-list/UserSmartListNavigation.tsx similarity index 100% rename from interface/src/scenes/smart-list/UserSmartListNavigation.tsx rename to packages/browser/src/scenes/smart-list/UserSmartListNavigation.tsx diff --git a/interface/src/scenes/smart-list/UserSmartListRouter.tsx b/packages/browser/src/scenes/smart-list/UserSmartListRouter.tsx similarity index 61% rename from interface/src/scenes/smart-list/UserSmartListRouter.tsx rename to packages/browser/src/scenes/smart-list/UserSmartListRouter.tsx index 50f0e6580..2e092edb4 100644 --- a/interface/src/scenes/smart-list/UserSmartListRouter.tsx +++ b/packages/browser/src/scenes/smart-list/UserSmartListRouter.tsx @@ -1,13 +1,10 @@ -import React, { Suspense } from 'react' +import React, { lazy, Suspense } from 'react' import { Navigate, Route, Routes } from 'react-router' -import { LazyComponent } from '../../AppRouter.tsx' import { useSmartListContext } from './context.ts' -const lazily = (loader: () => unknown) => React.lazy(() => loader() as LazyComponent) - -const UserSmartListSettingsScene = lazily(() => import('./settings/UserSmartListSettingsScene.tsx')) -const UserSmartListItemsScene = lazily(() => import('./items/UserSmartListItemsScene.tsx')) +const UserSmartListSettingsScene = lazy(() => import('./settings/UserSmartListSettingsScene.tsx')) +const UserSmartListItemsScene = lazy(() => import('./items/UserSmartListItemsScene.tsx')) export default function UserSmartListRouter() { const { viewerRole } = useSmartListContext() diff --git a/interface/src/scenes/smart-list/UserSmartListsScene.tsx b/packages/browser/src/scenes/smart-list/UserSmartListsScene.tsx similarity index 100% rename from interface/src/scenes/smart-list/UserSmartListsScene.tsx rename to packages/browser/src/scenes/smart-list/UserSmartListsScene.tsx diff --git a/interface/src/scenes/smart-list/context.ts b/packages/browser/src/scenes/smart-list/context.ts similarity index 100% rename from interface/src/scenes/smart-list/context.ts rename to packages/browser/src/scenes/smart-list/context.ts diff --git a/interface/src/scenes/smart-list/create-or-update/CreateSmartListHeader.tsx b/packages/browser/src/scenes/smart-list/create-or-update/CreateSmartListHeader.tsx similarity index 100% rename from interface/src/scenes/smart-list/create-or-update/CreateSmartListHeader.tsx rename to packages/browser/src/scenes/smart-list/create-or-update/CreateSmartListHeader.tsx diff --git a/interface/src/scenes/smart-list/create-or-update/CreateSmartListScene.tsx b/packages/browser/src/scenes/smart-list/create-or-update/CreateSmartListScene.tsx similarity index 100% rename from interface/src/scenes/smart-list/create-or-update/CreateSmartListScene.tsx rename to packages/browser/src/scenes/smart-list/create-or-update/CreateSmartListScene.tsx diff --git a/interface/src/scenes/smart-list/create-or-update/form/AccessSettings.tsx b/packages/browser/src/scenes/smart-list/create-or-update/form/AccessSettings.tsx similarity index 100% rename from interface/src/scenes/smart-list/create-or-update/form/AccessSettings.tsx rename to packages/browser/src/scenes/smart-list/create-or-update/form/AccessSettings.tsx diff --git a/interface/src/scenes/smart-list/create-or-update/form/BasicDetails.tsx b/packages/browser/src/scenes/smart-list/create-or-update/form/BasicDetails.tsx similarity index 100% rename from interface/src/scenes/smart-list/create-or-update/form/BasicDetails.tsx rename to packages/browser/src/scenes/smart-list/create-or-update/form/BasicDetails.tsx diff --git a/interface/src/scenes/smart-list/create-or-update/form/CreateSmartListForm.tsx b/packages/browser/src/scenes/smart-list/create-or-update/form/CreateSmartListForm.tsx similarity index 100% rename from interface/src/scenes/smart-list/create-or-update/form/CreateSmartListForm.tsx rename to packages/browser/src/scenes/smart-list/create-or-update/form/CreateSmartListForm.tsx diff --git a/interface/src/scenes/smart-list/create-or-update/form/FilterConfiguration.tsx b/packages/browser/src/scenes/smart-list/create-or-update/form/FilterConfiguration.tsx similarity index 100% rename from interface/src/scenes/smart-list/create-or-update/form/FilterConfiguration.tsx rename to packages/browser/src/scenes/smart-list/create-or-update/form/FilterConfiguration.tsx diff --git a/interface/src/scenes/smart-list/create-or-update/form/index.ts b/packages/browser/src/scenes/smart-list/create-or-update/form/index.ts similarity index 100% rename from interface/src/scenes/smart-list/create-or-update/form/index.ts rename to packages/browser/src/scenes/smart-list/create-or-update/form/index.ts diff --git a/interface/src/scenes/smart-list/create-or-update/form/schema.ts b/packages/browser/src/scenes/smart-list/create-or-update/form/schema.ts similarity index 100% rename from interface/src/scenes/smart-list/create-or-update/form/schema.ts rename to packages/browser/src/scenes/smart-list/create-or-update/form/schema.ts diff --git a/interface/src/scenes/smart-list/index.ts b/packages/browser/src/scenes/smart-list/index.ts similarity index 100% rename from interface/src/scenes/smart-list/index.ts rename to packages/browser/src/scenes/smart-list/index.ts diff --git a/interface/src/scenes/smart-list/items/UserSmartListItemsScene.tsx b/packages/browser/src/scenes/smart-list/items/UserSmartListItemsScene.tsx similarity index 100% rename from interface/src/scenes/smart-list/items/UserSmartListItemsScene.tsx rename to packages/browser/src/scenes/smart-list/items/UserSmartListItemsScene.tsx diff --git a/interface/src/scenes/smart-list/items/index.ts b/packages/browser/src/scenes/smart-list/items/index.ts similarity index 100% rename from interface/src/scenes/smart-list/items/index.ts rename to packages/browser/src/scenes/smart-list/items/index.ts diff --git a/interface/src/scenes/smart-list/items/list/GroupedSmartListItemList.tsx b/packages/browser/src/scenes/smart-list/items/list/GroupedSmartListItemList.tsx similarity index 100% rename from interface/src/scenes/smart-list/items/list/GroupedSmartListItemList.tsx rename to packages/browser/src/scenes/smart-list/items/list/GroupedSmartListItemList.tsx diff --git a/interface/src/scenes/smart-list/items/list/GroupedSmartListItemListGroupContent.tsx b/packages/browser/src/scenes/smart-list/items/list/GroupedSmartListItemListGroupContent.tsx similarity index 100% rename from interface/src/scenes/smart-list/items/list/GroupedSmartListItemListGroupContent.tsx rename to packages/browser/src/scenes/smart-list/items/list/GroupedSmartListItemListGroupContent.tsx diff --git a/interface/src/scenes/smart-list/items/list/index.ts b/packages/browser/src/scenes/smart-list/items/list/index.ts similarity index 100% rename from interface/src/scenes/smart-list/items/list/index.ts rename to packages/browser/src/scenes/smart-list/items/list/index.ts diff --git a/interface/src/scenes/smart-list/items/table/BookLinksCell.tsx b/packages/browser/src/scenes/smart-list/items/table/BookLinksCell.tsx similarity index 100% rename from interface/src/scenes/smart-list/items/table/BookLinksCell.tsx rename to packages/browser/src/scenes/smart-list/items/table/BookLinksCell.tsx diff --git a/interface/src/scenes/smart-list/items/table/CoverImageCell.tsx b/packages/browser/src/scenes/smart-list/items/table/CoverImageCell.tsx similarity index 100% rename from interface/src/scenes/smart-list/items/table/CoverImageCell.tsx rename to packages/browser/src/scenes/smart-list/items/table/CoverImageCell.tsx diff --git a/interface/src/scenes/smart-list/items/table/CreateOrUpdateTableView.tsx b/packages/browser/src/scenes/smart-list/items/table/CreateOrUpdateTableView.tsx similarity index 100% rename from interface/src/scenes/smart-list/items/table/CreateOrUpdateTableView.tsx rename to packages/browser/src/scenes/smart-list/items/table/CreateOrUpdateTableView.tsx diff --git a/interface/src/scenes/smart-list/items/table/FilterBottomDrawer.tsx b/packages/browser/src/scenes/smart-list/items/table/FilterBottomDrawer.tsx similarity index 100% rename from interface/src/scenes/smart-list/items/table/FilterBottomDrawer.tsx rename to packages/browser/src/scenes/smart-list/items/table/FilterBottomDrawer.tsx diff --git a/interface/src/scenes/smart-list/items/table/GroupedSmartListItemTable.tsx b/packages/browser/src/scenes/smart-list/items/table/GroupedSmartListItemTable.tsx similarity index 100% rename from interface/src/scenes/smart-list/items/table/GroupedSmartListItemTable.tsx rename to packages/browser/src/scenes/smart-list/items/table/GroupedSmartListItemTable.tsx diff --git a/interface/src/scenes/smart-list/items/table/SavedViewSelector.tsx b/packages/browser/src/scenes/smart-list/items/table/SavedViewSelector.tsx similarity index 100% rename from interface/src/scenes/smart-list/items/table/SavedViewSelector.tsx rename to packages/browser/src/scenes/smart-list/items/table/SavedViewSelector.tsx diff --git a/interface/src/scenes/smart-list/items/table/SmartListBookTable.tsx b/packages/browser/src/scenes/smart-list/items/table/SmartListBookTable.tsx similarity index 100% rename from interface/src/scenes/smart-list/items/table/SmartListBookTable.tsx rename to packages/browser/src/scenes/smart-list/items/table/SmartListBookTable.tsx diff --git a/interface/src/scenes/smart-list/items/table/TableColumnsBottomDrawer.tsx b/packages/browser/src/scenes/smart-list/items/table/TableColumnsBottomDrawer.tsx similarity index 100% rename from interface/src/scenes/smart-list/items/table/TableColumnsBottomDrawer.tsx rename to packages/browser/src/scenes/smart-list/items/table/TableColumnsBottomDrawer.tsx diff --git a/interface/src/scenes/smart-list/items/table/TableHeaderActions.tsx b/packages/browser/src/scenes/smart-list/items/table/TableHeaderActions.tsx similarity index 100% rename from interface/src/scenes/smart-list/items/table/TableHeaderActions.tsx rename to packages/browser/src/scenes/smart-list/items/table/TableHeaderActions.tsx diff --git a/interface/src/scenes/smart-list/items/table/ViewManagerDropdown.tsx b/packages/browser/src/scenes/smart-list/items/table/ViewManagerDropdown.tsx similarity index 100% rename from interface/src/scenes/smart-list/items/table/ViewManagerDropdown.tsx rename to packages/browser/src/scenes/smart-list/items/table/ViewManagerDropdown.tsx diff --git a/interface/src/scenes/smart-list/items/table/groupColumns.tsx b/packages/browser/src/scenes/smart-list/items/table/groupColumns.tsx similarity index 100% rename from interface/src/scenes/smart-list/items/table/groupColumns.tsx rename to packages/browser/src/scenes/smart-list/items/table/groupColumns.tsx diff --git a/interface/src/scenes/smart-list/items/table/index.ts b/packages/browser/src/scenes/smart-list/items/table/index.ts similarity index 100% rename from interface/src/scenes/smart-list/items/table/index.ts rename to packages/browser/src/scenes/smart-list/items/table/index.ts diff --git a/interface/src/scenes/smart-list/items/table/mediaColumns.tsx b/packages/browser/src/scenes/smart-list/items/table/mediaColumns.tsx similarity index 100% rename from interface/src/scenes/smart-list/items/table/mediaColumns.tsx rename to packages/browser/src/scenes/smart-list/items/table/mediaColumns.tsx diff --git a/interface/src/scenes/smart-list/settings/AccessSettings.tsx b/packages/browser/src/scenes/smart-list/settings/AccessSettings.tsx similarity index 100% rename from interface/src/scenes/smart-list/settings/AccessSettings.tsx rename to packages/browser/src/scenes/smart-list/settings/AccessSettings.tsx diff --git a/interface/src/scenes/smart-list/settings/DangerSection.tsx b/packages/browser/src/scenes/smart-list/settings/DangerSection.tsx similarity index 100% rename from interface/src/scenes/smart-list/settings/DangerSection.tsx rename to packages/browser/src/scenes/smart-list/settings/DangerSection.tsx diff --git a/interface/src/scenes/smart-list/settings/DeleteSmartListConfirmation.tsx b/packages/browser/src/scenes/smart-list/settings/DeleteSmartListConfirmation.tsx similarity index 100% rename from interface/src/scenes/smart-list/settings/DeleteSmartListConfirmation.tsx rename to packages/browser/src/scenes/smart-list/settings/DeleteSmartListConfirmation.tsx diff --git a/interface/src/scenes/smart-list/settings/FilterConfiguration.tsx b/packages/browser/src/scenes/smart-list/settings/FilterConfiguration.tsx similarity index 100% rename from interface/src/scenes/smart-list/settings/FilterConfiguration.tsx rename to packages/browser/src/scenes/smart-list/settings/FilterConfiguration.tsx diff --git a/interface/src/scenes/smart-list/settings/UserSmartListSettingsScene.tsx b/packages/browser/src/scenes/smart-list/settings/UserSmartListSettingsScene.tsx similarity index 100% rename from interface/src/scenes/smart-list/settings/UserSmartListSettingsScene.tsx rename to packages/browser/src/scenes/smart-list/settings/UserSmartListSettingsScene.tsx diff --git a/interface/src/scenes/smart-list/utils.ts b/packages/browser/src/scenes/smart-list/utils.ts similarity index 100% rename from interface/src/scenes/smart-list/utils.ts rename to packages/browser/src/scenes/smart-list/utils.ts diff --git a/interface/src/styles/index.css b/packages/browser/src/styles/index.css similarity index 100% rename from interface/src/styles/index.css rename to packages/browser/src/styles/index.css diff --git a/interface/src/utils/format.ts b/packages/browser/src/utils/format.ts similarity index 100% rename from interface/src/utils/format.ts rename to packages/browser/src/utils/format.ts diff --git a/interface/src/utils/misc.ts b/packages/browser/src/utils/misc.ts similarity index 100% rename from interface/src/utils/misc.ts rename to packages/browser/src/utils/misc.ts diff --git a/interface/src/utils/patterns.ts b/packages/browser/src/utils/patterns.ts similarity index 100% rename from interface/src/utils/patterns.ts rename to packages/browser/src/utils/patterns.ts diff --git a/interface/src/utils/pluralize.ts b/packages/browser/src/utils/pluralize.ts similarity index 100% rename from interface/src/utils/pluralize.ts rename to packages/browser/src/utils/pluralize.ts diff --git a/interface/src/utils/prefetch.ts b/packages/browser/src/utils/prefetch.ts similarity index 100% rename from interface/src/utils/prefetch.ts rename to packages/browser/src/utils/prefetch.ts diff --git a/interface/src/utils/restricted.ts b/packages/browser/src/utils/restricted.ts similarity index 100% rename from interface/src/utils/restricted.ts rename to packages/browser/src/utils/restricted.ts diff --git a/packages/browser/tailwind.config.js b/packages/browser/tailwind.config.js new file mode 100644 index 000000000..a20386c89 --- /dev/null +++ b/packages/browser/tailwind.config.js @@ -0,0 +1,2 @@ +// Note: this isn't used, but needed for intellisense. >:( +module.exports = require('../components/tailwind/tailwind.js')('browser') diff --git a/interface/tsconfig.json b/packages/browser/tsconfig.json similarity index 50% rename from interface/tsconfig.json rename to packages/browser/tsconfig.json index 6bb94ac27..60ea89fd0 100644 --- a/interface/tsconfig.json +++ b/packages/browser/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../tsconfig.json", + "extends": "../../tsconfig.json", "compilerOptions": { "types": ["vite/client", "node"], "skipLibCheck": true, @@ -8,14 +8,14 @@ "module": "ES2022", "moduleResolution": "Node", "paths": { - "@stump/api": ["../packages/api/src/index.ts"], - "@stump/api/*": ["../packages/api/src/*"], - "@stump/client": ["../packages/client/src/index.ts"], - "@stump/client/*": ["../packages/client/src/*"], - "@stump/components": ["../packages/components/src/index.ts"], - "@stump/components/*": ["../packages/components/src/*"], - "@stump/types": ["../packages/types/index.ts"], - "@stump/types/*": ["../packages/types/*"], + "@stump/api": ["../api/src/index.ts"], + "@stump/api/*": ["../api/src/*"], + "@stump/client": ["../client/src/index.ts"], + "@stump/client/*": ["../client/src/*"], + "@stump/components": ["../components/src/index.ts"], + "@stump/components/*": ["../components/src/*"], + "@stump/types": ["../types/index.ts"], + "@stump/types/*": ["../types/*"], "@/components/*": ["./src/components/*"], "@/hooks/*": ["./src/hooks/*"], "@/i18n": ["./src/i18n/index.ts"], @@ -29,16 +29,16 @@ "include": ["src", "src/**/*.json"], "references": [ { - "path": "../packages/api" + "path": "../api" }, { - "path": "../packages/client" + "path": "../client" }, { - "path": "../packages/components" + "path": "../components" }, { - "path": "../packages/types" + "path": "../types" } ] } diff --git a/packages/client/package.json b/packages/client/package.json index 2ed3325aa..14c93ecda 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -11,11 +11,13 @@ "@stump/types": "workspace:*", "@tanstack/react-query": "^4.28.0", "axios": "^1.5.1", + "deep-equal": "^2.2.3", "immer": "^10.0.3", "react-use-websocket": "^4.5.0", - "zustand": "^4.4.3" + "zustand": "^4.5.0" }, "devDependencies": { + "@types/deep-equal": "^1.0.4", "@types/node": "^20.8.7", "@types/react": "^18.2.29", "prettier": "^3.0.3", diff --git a/packages/client/src/Provider.tsx b/packages/client/src/Provider.tsx deleted file mode 100644 index c3144dc1b..000000000 --- a/packages/client/src/Provider.tsx +++ /dev/null @@ -1,97 +0,0 @@ -import { jobQueryKeys } from '@stump/api' -import { JobUpdate } from '@stump/types' -import { ReactElement, useState } from 'react' - -import { queryClient, QueryClientProvider } from './client' -import { - JobContext, - QueryClientContext, - StumpClientContext, - StumpClientContextProps, -} from './context' -import { invalidateQueries } from './invalidate' - -type Props = { - children: React.ReactNode -} & StumpClientContextProps -export function StumpClientContextProvider({ children, onRedirect }: Props) { - // lol this is so scuffed - return ( - - - {children} - - - ) -} - -// FIXME: This is in desperate need of a refactor / throttling. I've found the UI can easily lock up when thousands -// of tasks are completed per second. The backend is just too quick and there are too many state changes. -export function JobContextProvider({ children }: { children: ReactElement }) { - const [jobs, setJobs] = useState>({}) - - function addJob(newJob: JobUpdate) { - setJobs((jobs) => { - const target = jobs[newJob.job_id] - - if (target) { - return { - ...jobs, - [newJob.job_id]: { - ...target, - ...newJob, - }, - } - } else { - return { - ...jobs, - [newJob.job_id]: newJob, - } - } - }) - - invalidateQueries({ queryKey: [jobQueryKeys.getJobs] }) - } - - function updateJob(jobUpdate: JobUpdate) { - setJobs((jobs) => { - const target = jobs[jobUpdate.job_id] - - if (target) { - return { - ...jobs, - [jobUpdate.job_id]: { - ...target, - ...jobUpdate, - }, - } - } else { - return { - ...jobs, - [jobUpdate.job_id]: jobUpdate, - } - } - }) - } - - function removeJob(jobId: string) { - setJobs((jobs) => { - const newJobs = { ...jobs } - delete newJobs[jobId] - return newJobs - }) - } - - return ( - - {children} - - ) -} diff --git a/packages/client/src/client.ts b/packages/client/src/client.ts index a750be690..5324e3bc3 100644 --- a/packages/client/src/client.ts +++ b/packages/client/src/client.ts @@ -20,7 +20,7 @@ import { import { AxiosError, isAxiosError } from 'axios' import { QueryClientContext, useClientContext } from './context' -import { useUserStore } from './stores/useUserStore' +import { useUserStore } from './stores/user' export { QueryClientProvider } from '@tanstack/react-query' @@ -59,7 +59,7 @@ export function useQuery, options?: QueryOptions, ) { - const { onRedirect } = useClientContext() || {} + const { onRedirect } = useClientContext() const { setUser } = useUserStore((store) => ({ setUser: store.setUser, })) @@ -149,7 +149,7 @@ export function useInfiniteQuery, options?: InfiniteQueryOptions, ) { - const { onRedirect } = useClientContext() || {} + const { onRedirect } = useClientContext() const { setUser } = useUserStore((store) => ({ setUser: store.setUser, })) @@ -261,7 +261,7 @@ export function useMutation< mutationFn?: MutationFunction, options?: MutationOptions, ) { - const { onRedirect } = useClientContext() || {} + const { onRedirect } = useClientContext() const { setUser } = useUserStore((store) => ({ setUser: store.setUser, })) diff --git a/packages/client/src/context.ts b/packages/client/src/context.ts deleted file mode 100644 index fc24d3e99..000000000 --- a/packages/client/src/context.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { JobUpdate } from '@stump/types' -import { QueryClient } from '@tanstack/react-query' -import { createContext, useContext } from 'react' - -export const AppPropsContext = createContext(null) -export const QueryClientContext = createContext(undefined) - -export type StumpClientContextProps = { - onRedirect?: (url: string) => void -} -export const StumpClientContext = createContext(undefined) - -export type Platform = 'browser' | 'macOS' | 'windows' | 'linux' | 'unknown' - -export interface AppProps { - platform: Platform - baseUrl?: string - demoMode?: boolean - - setBaseUrl?: (baseUrl: string) => void - setUseDiscordPresence?: (connect: boolean) => void - setDiscordPresence?: (status?: string, details?: string) => void -} - -export interface IJobContext { - activeJobs: Record - - addJob(job: JobUpdate): void - updateJob(job: JobUpdate): void - removeJob(runnerId: string): void -} -export const JobContext = createContext(null) -export const useAppProps = () => { - const context = useContext(AppPropsContext) - if (!context) throw new Error('AppPropsContext not found') - return context -} -export const useJobContext = () => useContext(JobContext) -export const useClientContext = () => useContext(StumpClientContext) diff --git a/packages/client/src/context.tsx b/packages/client/src/context.tsx new file mode 100644 index 000000000..a3f080954 --- /dev/null +++ b/packages/client/src/context.tsx @@ -0,0 +1,48 @@ +import { QueryClient, QueryClientProvider } from '@tanstack/react-query' +import { createContext, PropsWithChildren, useContext } from 'react' + +import { queryClient } from './client' + +export const QueryClientContext = createContext(undefined) + +export type IStumpClientContext = { + onRedirect?: (url: string) => void + setUseDiscordPresence?: (connect: boolean) => void + setDiscordPresence?: (status?: string, details?: string) => void +} +export const StumpClientContext = createContext(undefined) +export function StumpClientContextProvider({ + children, + ...context +}: PropsWithChildren) { + return ( + + + {children} + + + ) +} + +/** + * The platform that the application is running on + */ +export type Platform = 'browser' | 'macOS' | 'windows' | 'linux' | 'mobile' | 'unknown' + +/** + * The props that are passed to the root of the application + */ +export interface StumpClientProps { + platform: Platform + baseUrl?: string + setUseDiscordPresence?: (connect: boolean) => void + setDiscordPresence?: (status?: string, details?: string) => void +} + +export const useClientContext = () => { + const context = useContext(StumpClientContext) + if (!context) { + throw new Error('StumpContext not found') + } + return context +} diff --git a/packages/client/src/hooks/useCoreEvent.ts b/packages/client/src/hooks/useCoreEvent.ts index 3a2696384..5e4d56593 100644 --- a/packages/client/src/hooks/useCoreEvent.ts +++ b/packages/client/src/hooks/useCoreEvent.ts @@ -1,60 +1,58 @@ +import { jobQueryKeys, libraryQueryKeys } from '@stump/api' import type { CoreEvent } from '@stump/types' -import { useJobContext } from '../context' -import { core_event_triggers, invalidateQueries } from '../invalidate' +import { invalidateQueries } from '../invalidate' +import { useJobStore } from '../stores/job' import { useStumpWs } from './useStumpWs' -interface UseCoreEventHandlerParams { - onJobComplete?: (jobId: string) => void - onJobFailed?: (err: { job_id: string; message: string }) => void -} - -export function useCoreEventHandler({ - onJobComplete, - onJobFailed, -}: UseCoreEventHandlerParams = {}) { - const context = useJobContext() - - if (!context) { - throw new Error('useCoreEventHandler must be used within a JobContext') +export function useCoreEventHandler() { + const { addJob, upsertJob, removeJob } = useJobStore((state) => ({ + addJob: state.addJob, + removeJob: state.removeJob, + upsertJob: state.upsertJob, + })) + + const handleInvalidate = async (keys: string[]) => { + try { + await invalidateQueries({ keys }) + } catch (e) { + console.error('Failed to invalidate queries', e) + } } - const { addJob, updateJob, removeJob } = context - async function handleCoreEvent(event: CoreEvent) { - const { key, data } = event + const { __typename } = event - switch (key) { + switch (__typename) { case 'JobStarted': - addJob(data) + await handleInvalidate([jobQueryKeys.getJobs]) + addJob(event) break - case 'JobProgress': - updateJob(data) + case 'JobUpdate': + if (!!event.status && event.status !== 'RUNNING') { + await new Promise((resolve) => setTimeout(resolve, 1000)) + removeJob(event.id) + await handleInvalidate([jobQueryKeys.getJobs, 'library', 'series', 'media']) + } else { + upsertJob(event) + } break - case 'JobComplete': - removeJob(data) - await new Promise((resolve) => setTimeout(resolve, 300)) - await invalidateQueries({ keys: core_event_triggers[key].keys }) - onJobComplete?.(data) + case 'DiscoveredMissingLibrary': + await handleInvalidate(['library', 'series', 'media']) break - case 'JobFailed': - onJobFailed?.(data) - removeJob(data.job_id) - await invalidateQueries({ keys: core_event_triggers[key].keys }) + case 'CreatedManySeries': + await handleInvalidate(['library', 'series', 'media']) break - default: - // eslint-disable-next-line no-case-declarations - const result = core_event_triggers[key] - if (result?.keys) { - await new Promise((resolve) => setTimeout(resolve, 300)) - await invalidateQueries({ exact: false, keys: result.keys }) - } else { - console.warn(`Unhandled core event: ${key}`, event) - } + case 'CreatedOrUpdatedManyMedia': + await handleInvalidate([ + 'series', + 'media', + libraryQueryKeys.getLibrariesStats, + libraryQueryKeys.getLibraryById, + ]) break } } - // useStumpSse({ onEvent: handleCoreEvent }) useStumpWs({ onEvent: handleCoreEvent }) } diff --git a/packages/client/src/hooks/usePreferences.ts b/packages/client/src/hooks/usePreferences.ts index a51843675..efceb6609 100644 --- a/packages/client/src/hooks/usePreferences.ts +++ b/packages/client/src/hooks/usePreferences.ts @@ -2,7 +2,7 @@ import { UpdateUserPreferences, UserPreferences } from '@stump/types' import { useCallback } from 'react' import { useUpdatePreferences } from '../queries/user' -import { useUserStore } from '../stores/useUserStore' +import { useUserStore } from '../stores/user' export function usePreferences() { const { preferences, setPreferences } = useUserStore((state) => ({ diff --git a/packages/client/src/hooks/useStumpSse.ts b/packages/client/src/hooks/useStumpSse.ts index 62c8bf0c3..480d1793f 100644 --- a/packages/client/src/hooks/useStumpSse.ts +++ b/packages/client/src/hooks/useStumpSse.ts @@ -2,7 +2,7 @@ import { API } from '@stump/api' import type { CoreEvent } from '@stump/types' import { useEffect, useMemo } from 'react' -import { useStumpStore } from '../stores' +import { useAppStore } from '../stores/app' interface SseOptions { onOpen?: (event: Event) => void @@ -72,7 +72,7 @@ interface Props { export function useStumpSse({ onEvent }: Props) { const URI = API?.getUri() - const setConnected = useStumpStore(({ setConnected }) => setConnected) + const setConnected = useAppStore((store) => store.setIsConnectedWithServer) const eventSourceUrl = useMemo(() => { let url = URI diff --git a/packages/client/src/hooks/useStumpWs.ts b/packages/client/src/hooks/useStumpWs.ts index 271a2db0e..8d0ca0c68 100644 --- a/packages/client/src/hooks/useStumpWs.ts +++ b/packages/client/src/hooks/useStumpWs.ts @@ -3,7 +3,7 @@ import type { CoreEvent } from '@stump/types' import { useMemo } from 'react' import useWebSocket, { ReadyState } from 'react-use-websocket' -import { useStumpStore } from '../stores' +import { useAppStore } from '../stores/app' interface Props { onEvent(event: CoreEvent): void @@ -11,7 +11,7 @@ interface Props { export function useStumpWs({ onEvent }: Props) { const URI = API?.getUri() - const { setConnected } = useStumpStore(({ setConnected }) => ({ setConnected })) + const setConnected = useAppStore((store) => store.setIsConnectedWithServer) const socketUrl = useMemo(() => { let url = URI diff --git a/packages/client/src/hooks/useTheme.ts b/packages/client/src/hooks/useTheme.ts index 13d5b36b7..b9423ac3c 100644 --- a/packages/client/src/hooks/useTheme.ts +++ b/packages/client/src/hooks/useTheme.ts @@ -1,8 +1,7 @@ import { usePreferences } from './usePreferences' -/** A hook to get the current theme and toggle it. Please note that this hook - * **will not** handle the class toggling required by tailwind. That logic - * is handled by the `interface` package. +/** + * A hook to get the current theme and toggle it with an API call **/ export function useTheme() { const { diff --git a/packages/client/src/index.ts b/packages/client/src/index.ts index bf6110965..9d655c8f1 100644 --- a/packages/client/src/index.ts +++ b/packages/client/src/index.ts @@ -19,7 +19,6 @@ export { } from './client' export * from './context' export * from './hooks' -export { core_event_triggers, invalidateQueries } from './invalidate' -export { JobContextProvider, StumpClientContextProvider } from './Provider' +export { invalidateQueries } from './invalidate' export * from './queries' export * from './stores' diff --git a/packages/client/src/invalidate.ts b/packages/client/src/invalidate.ts index 87e139784..b780f1ba6 100644 --- a/packages/client/src/invalidate.ts +++ b/packages/client/src/invalidate.ts @@ -1,10 +1,7 @@ -import { jobQueryKeys, libraryQueryKeys, mediaQueryKeys, seriesQueryKeys } from '@stump/api' -import { CoreEvent } from '@stump/types' import { QueryKey } from '@tanstack/react-query' import { queryClient } from './client' -type CoreEventTrigger = CoreEvent['key'] type InvalidateFnArgs = { exact?: boolean } & ( @@ -18,98 +15,15 @@ type InvalidateFnArgs = { } ) -// FIXME: I hate this... Figure out a better way to do this - -export const core_event_triggers = { - CreateEntityFailed: { - keys: [jobQueryKeys.getJobs], - }, - // This results in WAY too many re-queries... - CreateOrUpdateMedia: { - keys: [ - // libraryQueryKeys.getLibraryById, - // libraryQueryKeys.getLibrariesStats, - // seriesQueryKeys.getSeriesById, - // mediaQueryKeys.getRecentlyAddedMedia, - ], - }, - CreatedManyMedia: { - keys: [ - libraryQueryKeys.getLibraryById, - libraryQueryKeys.getLibrariesStats, - seriesQueryKeys.getSeriesById, - mediaQueryKeys.getRecentlyAddedMedia, - seriesQueryKeys.getRecentlyAddedSeries, - ], - }, - CreatedSeries: { - keys: [ - libraryQueryKeys.getLibraryById, - libraryQueryKeys.getLibrariesStats, - seriesQueryKeys.getSeriesById, - seriesQueryKeys.getRecentlyAddedSeries, - mediaQueryKeys.getRecentlyAddedMedia, - ], - }, - CreatedSeriesBatch: { - keys: [ - libraryQueryKeys.getLibraryById, - libraryQueryKeys.getLibrariesStats, - seriesQueryKeys.getSeriesById, - mediaQueryKeys.getRecentlyAddedMedia, - seriesQueryKeys.getRecentlyAddedSeries, - ], - }, - GeneratedThumbnailBatch: { - keys: [ - seriesQueryKeys.getSeriesById, - mediaQueryKeys.getRecentlyAddedMedia, - seriesQueryKeys.getRecentlyAddedSeries, - ], - }, - JobComplete: { - keys: [ - libraryQueryKeys.getLibraryById, - libraryQueryKeys.getLibrariesStats, - jobQueryKeys.getJobs, - seriesQueryKeys.getSeriesById, - seriesQueryKeys.getRecentlyAddedSeries, - mediaQueryKeys.getRecentlyAddedMedia, - mediaQueryKeys.getInProgressMedia, - ], - }, - JobFailed: { - keys: [jobQueryKeys.getJobs], - }, - JobProgress: { - keys: [jobQueryKeys.getJobs], - }, - JobStarted: { - keys: [jobQueryKeys.getJobs], - }, - SeriesScanComplete: { - keys: [ - libraryQueryKeys.getLibrarySeries, - seriesQueryKeys.getSeries, - libraryQueryKeys.getLibraryById, - libraryQueryKeys.getLibrariesStats, - seriesQueryKeys.getSeriesById, - mediaQueryKeys.getRecentlyAddedMedia, - seriesQueryKeys.getRecentlyAddedSeries, - mediaQueryKeys.getInProgressMedia, - ], - }, -} satisfies Record - export async function invalidateQueries({ exact, ...args }: InvalidateFnArgs) { if ('keys' in args) { - const predicate = ({ queryKey }: { queryKey: QueryKey }, compare: string) => - queryKey.includes(compare) + const predicate = (queryKey: QueryKey, compare: string) => + queryKey.some((piece) => typeof piece === 'string' && piece.includes(compare)) return Promise.all( args.keys.map((key) => queryClient.invalidateQueries({ - predicate: (query) => predicate(query, key), + predicate: (query) => predicate(query.queryKey, key), }), ), ) diff --git a/packages/client/src/queries/index.ts b/packages/client/src/queries/index.ts index 3ac706bbc..4a1a3f375 100644 --- a/packages/client/src/queries/index.ts +++ b/packages/client/src/queries/index.ts @@ -23,6 +23,7 @@ export { useScanLibrary, useVisitLibrary, } from './library' +export { useLogsQuery } from './log' export { prefetchMedia, useContinueReading, diff --git a/packages/client/src/queries/job.ts b/packages/client/src/queries/job.ts index 08ae303a7..b704e36bf 100644 --- a/packages/client/src/queries/job.ts +++ b/packages/client/src/queries/job.ts @@ -1,9 +1,9 @@ import { jobApi, jobQueryKeys } from '@stump/api' -import type { JobDetail } from '@stump/types' +import type { PersistedJob } from '@stump/types' import { PageQueryOptions, useMutation, usePageQuery, useQuery } from '../client' -type UseJobsQueryParmas = PageQueryOptions & { +type UseJobsQueryParmas = PageQueryOptions & { params?: Record } // TODO(aaron): investigate why params from queryFn is not being properly populated, i.e. diff --git a/packages/client/src/queries/log.ts b/packages/client/src/queries/log.ts new file mode 100644 index 000000000..53b5f4421 --- /dev/null +++ b/packages/client/src/queries/log.ts @@ -0,0 +1,32 @@ +import { logApi, logQueryKeys } from '@stump/api' +import { Log } from '@stump/types' + +import { PageQueryOptions, usePageQuery } from '../client' + +// TODO: use generated type +type UseLogsQueryParmas = PageQueryOptions & { + params?: Record +} + +export function useLogsQuery({ params, ...options }: UseLogsQueryParmas = {}) { + const { data, ...restReturn } = usePageQuery( + [logQueryKeys.getLogs, params], + async ({ page = 1, page_size = 10 }) => { + const { data } = await logApi.getLogs({ page, page_size, ...params }) + return data + }, + { + keepPreviousData: true, + ...options, + }, + ) + + const logs = data?.data ?? [] + const pageData = data?._page + + return { + logs, + pageData, + ...restReturn, + } +} diff --git a/packages/client/src/queries/tag.ts b/packages/client/src/queries/tag.ts index 56cc80958..19d67c39f 100644 --- a/packages/client/src/queries/tag.ts +++ b/packages/client/src/queries/tag.ts @@ -1,4 +1,4 @@ -import { ApiResult, createTags, getAllTags } from '@stump/api' +import { APIResult, createTags, getAllTags } from '@stump/api' import type { Tag } from '@stump/types' import { AxiosError } from 'axios' import { useMemo } from 'react' @@ -6,9 +6,9 @@ import { useMemo } from 'react' import { queryClient, useMutation, useQuery } from '../client' export interface UseTagsConfig { - onQuerySuccess?: (res: ApiResult) => void + onQuerySuccess?: (res: APIResult) => void onQueryError?: (err: AxiosError) => void - onCreateSuccess?: (res: ApiResult) => void + onCreateSuccess?: (res: APIResult) => void onCreateError?: (err: AxiosError) => void } diff --git a/packages/client/src/stores/app.ts b/packages/client/src/stores/app.ts new file mode 100644 index 000000000..c8e5fa826 --- /dev/null +++ b/packages/client/src/stores/app.ts @@ -0,0 +1,51 @@ +import { create } from 'zustand' +import { devtools, persist } from 'zustand/middleware' + +import { Platform } from '../context' + +type AppStore = { + platform: Platform + setPlatform: (platform: Platform) => void + baseUrl?: string + setBaseUrl: (baseUrl: string) => void + isConnectedWithServer: boolean + setIsConnectedWithServer: (isConnected: boolean) => void +} + +export const useAppStore = create()( + devtools( + persist( + (set) => ({ + isConnectedWithServer: false, + platform: 'unknown', + setBaseUrl(baseUrl: string) { + let adjustedBaseUrl = baseUrl + + if (baseUrl.endsWith('/')) { + adjustedBaseUrl = baseUrl.slice(0, -1) + } + + if (!baseUrl.endsWith('/api')) { + adjustedBaseUrl += '/api' + } + + set({ baseUrl: adjustedBaseUrl }) + }, + setIsConnectedWithServer(connected: boolean) { + set({ + isConnectedWithServer: connected, + }) + }, + setPlatform(platform: Platform) { + set({ platform }) + }, + }), + { + name: 'stump-main-store', + partialize(state) { + return { baseUrl: state.baseUrl, platform: state.platform } + }, + }, + ), + ), +) diff --git a/packages/client/src/stores/useEpubReader.ts b/packages/client/src/stores/epub.ts similarity index 100% rename from packages/client/src/stores/useEpubReader.ts rename to packages/client/src/stores/epub.ts diff --git a/packages/client/src/stores/index.ts b/packages/client/src/stores/index.ts index bdc9ee2d1..b778b34d4 100644 --- a/packages/client/src/stores/index.ts +++ b/packages/client/src/stores/index.ts @@ -1,7 +1,7 @@ -export { type EpubReaderPreferences, type EpubReaderStore, useEpubReader } from './useEpubReader' -export { createFilterStore } from './useFilterStore' -export { useStumpStore } from './useStumpStore' -export { useUser, useUserStore } from './useUserStore' +export { useAppStore } from './app' +export { type EpubReaderPreferences, type EpubReaderStore, useEpubReader } from './epub' +export { useJobStore } from './job' +export { useUser, useUserStore } from './user' export interface StoreBase> { reset(): void diff --git a/packages/client/src/stores/job.ts b/packages/client/src/stores/job.ts new file mode 100644 index 000000000..1baf6b3e4 --- /dev/null +++ b/packages/client/src/stores/job.ts @@ -0,0 +1,60 @@ +import { JobUpdate } from '@stump/types' +import deepEqual from 'deep-equal' +import { produce } from 'immer' +import { createWithEqualityFn } from 'zustand/traditional' + +type JobID = string +type JobStore = { + jobs: Record + addJob: (id: JobID) => void + upsertJob: (job: JobUpdate) => void + removeJob: (jobId: JobID) => void +} + +/** + * A store for managing job updates from the SSE eventsource + */ +export const useJobStore = createWithEqualityFn( + (set) => ({ + addJob: (id) => + set((state) => + produce(state, (draft) => { + draft.jobs[id] = { id } + }), + ), + jobs: {} as Record, + removeJob: (id) => + set((state) => + produce(state, (draft) => { + delete draft.jobs[id] + }), + ), + upsertJob: (job) => { + set((state) => + produce(state, (draft) => { + const existingJob = draft.jobs[job.id] + if (existingJob) { + // There are certain fields which are nullable from the update that we + // absolutely do not want to overwrite with null. It behaves similar to + // a patch request. The fields are: message, status, completed_tasks, remaining_tasks. + // Subtasks are sent with both always included, so if they are null that means + // they are completed and can be overwritten. + const { status, completed_tasks, remaining_tasks, message, ...rest } = job + + draft.jobs[job.id] = { + ...existingJob, + ...rest, + completed_tasks: completed_tasks ?? existingJob.completed_tasks, + message: message || existingJob.message, + remaining_tasks: remaining_tasks ?? existingJob.remaining_tasks, + status: status || existingJob.status, + } + } else { + draft.jobs[job.id] = job + } + }), + ) + }, + }), + deepEqual, +) diff --git a/packages/client/src/stores/useFilterStore.ts b/packages/client/src/stores/useFilterStore.ts deleted file mode 100644 index 4709a5377..000000000 --- a/packages/client/src/stores/useFilterStore.ts +++ /dev/null @@ -1,62 +0,0 @@ -import type { Direction, PageParams, QueryOrder } from '@stump/types' -import { create } from 'zustand' -import { devtools, persist } from 'zustand/middleware' - -import { StoreBase } from '.' - -export const DEFAULT_ORDER_BY = 'name' -export const DEFAULT_ORDER_DIRECTION = 'asc' -export const DEFAULT_PAGE_SIZE = 20 - -export type Filters = Partial< - { - show_unsupported?: boolean - } & Pick & - QueryOrder -> - -export interface FilterStore extends Filters, StoreBase { - setZeroBased: (zeroBased?: boolean) => void - setPageSize: (pageSize?: number) => void - setOrderBy: (orderBy?: string) => void - setDirection: (direction?: Direction) => void -} - -export const createFilterStore = (name: string) => - create()( - devtools( - persist( - (set) => ({ - reset() { - set(() => ({})) - }, - set(changes) { - set((state) => ({ ...state, ...changes })) - }, - setDirection(direction) { - set((store) => ({ ...store, direction })) - }, - - setOrderBy(orderBy) { - set((store) => ({ ...store, order_by: orderBy })) - }, - - setPageSize(pageSize) { - set((store) => ({ ...store, page_zize: pageSize })) - }, - setZeroBased(zeroBased) { - set((store) => ({ ...store, zero_based: zeroBased })) - }, - }), - { - getStorage: () => sessionStorage, - name, - partialize(store) { - return { - direction: store.direction, - } - }, - }, - ), - ), - ) diff --git a/packages/client/src/stores/useStumpStore.ts b/packages/client/src/stores/useStumpStore.ts deleted file mode 100644 index b5f140032..000000000 --- a/packages/client/src/stores/useStumpStore.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { create } from 'zustand' -import { devtools, persist } from 'zustand/middleware' - -import { StoreBase } from '.' - -// TODO: remove this!! Just use app props context - -interface StumpStore extends StoreBase { - baseUrl?: string - connected: boolean - setBaseUrl(baseUrl: string): void - setConnected(connected: boolean): void -} - -// FIXME: [DEPRECATED] Use `createWithEqualityFn` instead of `create` -export const useStumpStore = create()( - devtools( - // TODO: I am unsure the base url is something to be persisted. The only scenario - // where it will come in unset is when running in Tauri, and in that case I might just - // create some external store managed by the Tauri side of things that comes in - // before the interface is loaded. - persist( - (set) => ({ - connected: false, - reset() { - set(() => ({})) - }, - set(changes) { - set((state) => ({ ...state, ...changes })) - }, - setBaseUrl(baseUrl: string) { - let adjustedBaseUrl = baseUrl - - if (baseUrl.endsWith('/')) { - adjustedBaseUrl = baseUrl.slice(0, -1) - } - - if (!baseUrl.endsWith('/api')) { - adjustedBaseUrl += '/api' - } - - set({ baseUrl: adjustedBaseUrl }) - }, - setConnected(connected: boolean) { - set({ connected }) - }, - }), - { - name: 'stump-config-store', - partialize(state) { - return { baseUrl: state.baseUrl } - }, - }, - ), - ), -) diff --git a/packages/client/src/stores/useUserStore.ts b/packages/client/src/stores/user.ts similarity index 95% rename from packages/client/src/stores/useUserStore.ts rename to packages/client/src/stores/user.ts index 21fc69ffe..84cd08747 100644 --- a/packages/client/src/stores/useUserStore.ts +++ b/packages/client/src/stores/user.ts @@ -5,6 +5,8 @@ import { devtools, persist } from 'zustand/middleware' import { StoreBase } from '.' +// TODO: fix this store to use the new `createWithEqualityFn` method and optimize + // https://github.com/cmlarsen/zustand-middleware-computed-state interface UserStore extends StoreBase { user?: User | null @@ -15,8 +17,6 @@ interface UserStore extends StoreBase { checkUserPermission: (permission: UserPermission) => boolean } -// FIXME: [DEPRECATED] Use `createWithEqualityFn` instead of `create` -// TODO: consider renaming to useAuth export const useUserStore = create()( devtools( persist( diff --git a/packages/components/README.md b/packages/components/README.md index ca1a7cdd0..167742ea3 100644 --- a/packages/components/README.md +++ b/packages/components/README.md @@ -1,6 +1,6 @@ # Components -This package is the component library used throughout the Stump web and desktop interface(s). A vast majority of the foundational components come from [shadcn/ui](https://ui.shadcn.com/docs), a wonderful free and open source collection of React components build with [radix-ui](https://radix-ui.com/) and [TailwindCSS](https://tailwindcss.com/). Huge thanks to [shadcn](https://github.com/shadcn) for their work! +This package is the component library used throughout the Stump web and desktop apps. A vast majority of the foundational components come from [shadcn/ui](https://ui.shadcn.com/docs), a wonderful free and open source collection of React components build with [radix-ui](https://radix-ui.com/) and [TailwindCSS](https://tailwindcss.com/). Huge thanks to [shadcn](https://github.com/shadcn) for their work! ## Usage diff --git a/packages/components/src/emoji/EmojiPicker.tsx b/packages/components/src/emoji/EmojiPicker.tsx index f5550bd34..d8712547f 100644 --- a/packages/components/src/emoji/EmojiPicker.tsx +++ b/packages/components/src/emoji/EmojiPicker.tsx @@ -6,7 +6,7 @@ import { Dropdown } from '../dropdown' import { Popover } from '../popover' import { cn } from '../utils' -// TODO: this should probably be moved to the interface package so I can +// TODO: this should probably be moved to the browser package so I can // use react-query for better caching AND language support type Emoji = { diff --git a/packages/components/tailwind/tailwind.js b/packages/components/tailwind/tailwind.js index 5dc14af21..d4bff112e 100644 --- a/packages/components/tailwind/tailwind.js +++ b/packages/components/tailwind/tailwind.js @@ -52,7 +52,7 @@ module.exports = function (relativeFromRoot) { let config = { content: [ - '../../interface/src/**/*.{js,ts,jsx,tsx,html}', + '../../packages/browser/src/**/*.{js,ts,jsx,tsx,html}', '../../packages/*/src/**/*.{js,ts,jsx,tsx,html}', path.join(basePath, './src/**/*.(js|jsx|ts|tsx)'), ], diff --git a/packages/types/generated.ts b/packages/types/generated.ts index 2e9d4180c..6808f2263 100644 --- a/packages/types/generated.ts +++ b/packages/types/generated.ts @@ -3,10 +3,57 @@ // CORE TYPE GENERATION +/** + * An event that is emitted by the core and consumed by a client + */ +export type CoreEvent = ({ __typename: "JobStarted" } & string) | ({ __typename: "JobUpdate" } & JobUpdate) | ({ __typename: "DiscoveredMissingLibrary" } & string) | { __typename: "CreatedMedia"; id: string; series_id: string } | { __typename: "CreatedManySeries"; count: BigInt; library_id: string } | { __typename: "CreatedOrUpdatedManyMedia"; count: BigInt; series_id: string } + export type EntityVisibility = "PUBLIC" | "SHARED" | "PRIVATE" export type AccessRole = "Reader" | "Writer" | "CoCreator" +/** + * A model representing a persisted log entry. These are different than traces/system logs. + */ +export type Log = { id: number; level: LogLevel; message: string; context: string | null; timestamp: string; job_id?: string | null } + +/** + * Information about the Stump log file, located at STUMP_CONFIG_DIR/Stump.log, or + * ~/.stump/Stump.log by default. Information such as the file size, last modified date, etc. + */ +export type LogMetadata = { path: string; size: BigInt; modified: string } + +export type LogLevel = "ERROR" | "WARN" | "INFO" | "DEBUG" + +export type PersistedJob = { id: string; name: string; description: string | null; status: JobStatus; output_data: CoreJobOutput | null; ms_elapsed: BigInt; created_at: string; completed_at: string | null; logs?: Log[] | null } + +export type CoreJobOutput = LibraryScanOutput | SeriesScanOutput | ThumbnailGenerationOutput | unknown + +/** + * An update event that is emitted by a job + */ +export type JobUpdate = ({ status?: JobStatus | null; message?: string | null; completed_tasks?: number | null; remaining_tasks?: number | null; completed_subtasks?: number | null; remaining_subtasks?: number | null }) & { id: string } + +/** + * A struct that represents a progress event that is emitted by a job. This behaves like a patch, + * where the client will ignore any fields that are not present. This is done so all internal ops + * can be done without needing to know the full state of the job. + */ +export type JobProgress = { status?: JobStatus | null; message?: string | null; completed_tasks?: number | null; remaining_tasks?: number | null; completed_subtasks?: number | null; remaining_subtasks?: number | null } + +/** + * The data that is collected and updated during the execution of a library scan job + */ +export type LibraryScanOutput = { total_files: BigInt; ignored_files: BigInt; created_media: BigInt; updated_media: BigInt; created_series: BigInt; updated_series: BigInt } + +export type SeriesScanOutput = { total_files: BigInt; ignored_files: BigInt; created_media: BigInt; updated_media: BigInt } + +export type ThumbnailGenerationJobVariant = ({ type: "SingleLibrary" } & string) | ({ type: "SingleSeries" } & string) | ({ type: "MediaGroup" } & string[]) + +export type ThumbnailGenerationJobParams = { variant: ThumbnailGenerationJobVariant; force_regenerate: boolean } + +export type ThumbnailGenerationOutput = { visited_files: BigInt; generated_thumbnails: BigInt; removed_thumbnails: BigInt } + export type User = { id: string; username: string; is_server_owner: boolean; avatar_url: string | null; created_at: string; last_login: string | null; is_locked: boolean; permissions: UserPermission[]; max_sessions_allowed?: number | null; login_sessions_count?: number | null; user_preferences?: UserPreferences | null; login_activity?: LoginActivity[] | null; age_restriction?: AgeRestriction | null; read_progresses?: ReadProgress[] | null } /** @@ -126,16 +173,10 @@ export type UpdateEpubProgress = { epubcfi: string; percentage: number; is_compl export type EpubContent = { label: string; content: string; play_order: number } -export type JobStatus = "RUNNING" | "COMPLETED" | "CANCELLED" | "FAILED" | "QUEUED" - -export type JobUpdate = { job_id: string; current_task: BigInt | null; task_count: BigInt; message: string | null; status: JobStatus | null } - -export type JobDetail = { id: string; name: string; description: string | null; status: JobStatus; task_count: number | null; completed_task_count: number | null; ms_elapsed: BigInt | null; created_at: string | null; completed_at: string | null } +export type JobStatus = "RUNNING" | "PAUSED" | "COMPLETED" | "CANCELLED" | "FAILED" | "QUEUED" export type JobSchedulerConfig = { id: string; interval_secs: number; excluded_libraries: Library[] } -export type CoreEvent = { key: "JobStarted"; data: JobUpdate } | { key: "JobProgress"; data: JobUpdate } | { key: "JobComplete"; data: string } | { key: "JobFailed"; data: { job_id: string; message: string } } | { key: "CreateEntityFailed"; data: { job_id: string | null; path: string; message: string } } | { key: "CreateOrUpdateMedia"; data: { id: string; series_id: string; library_id: string } } | { key: "CreatedManyMedia"; data: { count: BigInt; library_id: string } } | { key: "CreatedSeries"; data: { id: string; library_id: string } } | { key: "CreatedSeriesBatch"; data: { count: BigInt; library_id: string } } | { key: "SeriesScanComplete"; data: { id: string } } | { key: "GeneratedThumbnailBatch"; data: BigInt } - export type ReadingListItem = { display_order: number; media_id: string; reading_list_id: string; media: Media | null } export type ReadingListVisibility = "PUBLIC" | "PRIVATE" | "SHARED" @@ -171,16 +212,6 @@ export type DirectoryListingFile = { is_directory: boolean; name: string; path: export type DirectoryListingInput = { path: string | null } -export type Log = { id: string; level: LogLevel; message: string; created_at: string; job_id: string | null } - -/** - * Information about the Stump log file, located at STUMP_CONFIG_DIR/Stump.log, or - * ~/.stump/Stump.log by default. Information such as the file size, last modified date, etc. - */ -export type LogMetadata = { path: string; size: BigInt; modified: string } - -export type LogLevel = "ERROR" | "WARN" | "INFO" | "DEBUG" - export type Direction = "asc" | "desc" export type PageParams = { zero_based: boolean; page: number; page_size: number } diff --git a/packages/types/index.ts b/packages/types/index.ts index d76430d09..af49efa0d 100644 --- a/packages/types/index.ts +++ b/packages/types/index.ts @@ -8,7 +8,7 @@ export enum FileStatus { Missing = 'MISSING', } -export type ApiError = +export type APIError = | { code: 'BadRequest'; details: string } | { code: 'NotFound'; details: string } | { code: 'InternalServerError'; details: string } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 25da2e8f5..17797b128 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -74,12 +74,12 @@ importers: apps/desktop: dependencies: + '@stump/browser': + specifier: workspace:* + version: link:../../packages/browser '@stump/client': specifier: workspace:* version: link:../../packages/client - '@stump/interface': - specifier: workspace:* - version: link:../../interface '@tanstack/react-query': specifier: ^4.28.0 version: 4.28.0(react-dom@18.2.0)(react@18.2.0) @@ -139,12 +139,12 @@ importers: apps/web: dependencies: + '@stump/browser': + specifier: workspace:* + version: link:../../packages/browser '@stump/client': specifier: workspace:* version: link:../../packages/client - '@stump/interface': - specifier: workspace:* - version: link:../../interface react: specifier: ^18.2.0 version: 18.2.0 @@ -240,23 +240,42 @@ importers: specifier: ^5.3.3 version: 5.3.3 - interface: + packages/api: + dependencies: + '@stump/types': + specifier: workspace:* + version: link:../types + axios: + specifier: ^1.5.1 + version: 1.5.1 + qs: + specifier: ^6.11.2 + version: 6.11.2 + devDependencies: + '@types/qs': + specifier: ^6.9.9 + version: 6.9.9 + typescript: + specifier: ^5.3.3 + version: 5.3.3 + + packages/browser: dependencies: '@hookform/resolvers': specifier: ^3.3.2 version: 3.3.2(react-hook-form@7.47.0) '@stump/api': specifier: workspace:* - version: link:../packages/api + version: link:../api '@stump/client': specifier: workspace:* - version: link:../packages/client + version: link:../client '@stump/components': specifier: workspace:* - version: link:../packages/components + version: link:../components '@stump/types': specifier: workspace:* - version: link:../packages/types + version: link:../types '@tanstack/react-query': specifier: ^4.28.0 version: 4.28.0(react-dom@18.2.0)(react@18.2.0) @@ -367,7 +386,7 @@ importers: version: 3.22.4 zustand: specifier: ^4.4.3 - version: 4.4.3(@types/react@18.2.29)(immer@10.0.3)(react@18.2.0) + version: 4.5.0(@types/react@18.2.29)(immer@10.0.3)(react@18.2.0) devDependencies: '@types/node': specifier: ^20.8.7 @@ -400,25 +419,6 @@ importers: specifier: ^4.5.0 version: 4.5.0(@types/node@20.8.7) - packages/api: - dependencies: - '@stump/types': - specifier: workspace:* - version: link:../types - axios: - specifier: ^1.5.1 - version: 1.5.1 - qs: - specifier: ^6.11.2 - version: 6.11.2 - devDependencies: - '@types/qs': - specifier: ^6.9.9 - version: 6.9.9 - typescript: - specifier: ^5.3.3 - version: 5.3.3 - packages/client: dependencies: '@stump/api': @@ -433,6 +433,9 @@ importers: axios: specifier: ^1.5.1 version: 1.5.1 + deep-equal: + specifier: ^2.2.3 + version: 2.2.3 immer: specifier: ^10.0.3 version: 10.0.3 @@ -440,9 +443,12 @@ importers: specifier: ^4.5.0 version: 4.5.0(react-dom@18.2.0)(react@18.2.0) zustand: - specifier: ^4.4.3 - version: 4.4.3(@types/react@18.2.29)(immer@10.0.3)(react@18.2.0) + specifier: ^4.5.0 + version: 4.5.0(@types/react@18.2.29)(immer@10.0.3)(react@18.2.0) devDependencies: + '@types/deep-equal': + specifier: ^1.0.4 + version: 1.0.4 '@types/node': specifier: ^20.8.7 version: 20.8.7 @@ -5888,6 +5894,10 @@ packages: '@types/ms': 0.7.33 dev: false + /@types/deep-equal@1.0.4: + resolution: {integrity: sha512-tqdiS4otQP4KmY0PR3u6KbZ5EWvhNdUoS/jc93UuK23C220lOZ/9TvjfxdPcKvqwwDVtmtSCrnr0p/2dirAxkA==} + dev: true + /@types/detect-port@1.3.4: resolution: {integrity: sha512-HveFGabu3IwATqwLelcp6UZ1MIzSFwk+qswC9luzzHufqAwhs22l7KkINDLWRfXxIPTYnSZ1DuQBEgeVPgUOSA==} dev: true @@ -6770,9 +6780,8 @@ packages: /array-buffer-byte-length@1.0.0: resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.6 is-array-buffer: 3.0.2 - dev: true /array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} @@ -6810,7 +6819,7 @@ packages: resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.6 define-properties: 1.2.1 es-abstract: 1.22.2 es-shim-unscopables: 1.0.0 @@ -6830,7 +6839,7 @@ packages: resolution: {integrity: sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.6 define-properties: 1.2.1 es-abstract: 1.22.2 es-array-method-boxes-properly: 1.0.0 @@ -6852,10 +6861,10 @@ packages: engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.0 - call-bind: 1.0.2 + call-bind: 1.0.6 define-properties: 1.2.1 es-abstract: 1.22.2 - get-intrinsic: 1.2.1 + get-intrinsic: 1.2.4 is-array-buffer: 3.0.2 is-shared-array-buffer: 1.0.2 dev: true @@ -6877,7 +6886,7 @@ packages: /assert@2.1.0: resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.6 is-nan: 1.3.2 object-is: 1.1.5 object.assign: 4.1.4 @@ -6953,10 +6962,9 @@ packages: postcss: 8.4.31 postcss-value-parser: 4.2.0 - /available-typed-arrays@1.0.5: - resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + /available-typed-arrays@1.0.6: + resolution: {integrity: sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==} engines: {node: '>= 0.4'} - dev: true /axios@1.5.1: resolution: {integrity: sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==} @@ -7283,7 +7291,17 @@ packages: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: function-bind: 1.1.2 - get-intrinsic: 1.2.1 + get-intrinsic: 1.2.4 + dev: true + + /call-bind@1.0.6: + resolution: {integrity: sha512-Mj50FLHtlsoVfRfnHaZvyrooHcrlceNZdL/QBvJJVd9Ta55qCQK0gs4ss2oZDeV9zFCs6ewzYgVE5yfVmfFpVg==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.1 /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} @@ -8375,9 +8393,9 @@ packages: resolution: {integrity: sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA==} dependencies: array-buffer-byte-length: 1.0.0 - call-bind: 1.0.2 + call-bind: 1.0.6 es-get-iterator: 1.1.3 - get-intrinsic: 1.2.1 + get-intrinsic: 1.2.4 is-arguments: 1.1.1 is-array-buffer: 3.0.2 is-date-object: 1.0.5 @@ -8391,9 +8409,33 @@ packages: side-channel: 1.0.4 which-boxed-primitive: 1.0.2 which-collection: 1.0.1 - which-typed-array: 1.1.11 + which-typed-array: 1.1.14 dev: true + /deep-equal@2.2.3: + resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + call-bind: 1.0.6 + es-get-iterator: 1.1.3 + get-intrinsic: 1.2.4 + is-arguments: 1.1.1 + is-array-buffer: 3.0.2 + is-date-object: 1.0.5 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + isarray: 2.0.5 + object-is: 1.1.5 + object-keys: 1.1.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.5.1 + side-channel: 1.0.4 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.1 + which-typed-array: 1.1.14 + dev: false + /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true @@ -8427,14 +8469,14 @@ packages: clone: 1.0.4 dev: true - /define-data-property@1.1.1: - resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + /define-data-property@1.1.2: + resolution: {integrity: sha512-SRtsSqsDbgpJBbW3pABMCOt6rQyeM8s8RiyeSN8jYG8sYmt/kGJejbydttUsnDs1tadr19tvhT4ShwMyoqAm4g==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.1 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 gopd: 1.0.1 - has-property-descriptors: 1.0.0 - dev: true + has-property-descriptors: 1.0.1 /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} @@ -8450,10 +8492,9 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} dependencies: - define-data-property: 1.1.1 - has-property-descriptors: 1.0.0 + define-data-property: 1.1.2 + has-property-descriptors: 1.0.1 object-keys: 1.1.1 - dev: true /defu@6.1.3: resolution: {integrity: sha512-Vy2wmG3NTkmHNg/kzpuvHhkqeIx3ODWqasgCRbKtbXEN0G+HpEEv9BtJLp7ZG1CZloFaC41Ah3ZFbq7aqCqMeQ==} @@ -8773,17 +8814,17 @@ packages: dependencies: array-buffer-byte-length: 1.0.0 arraybuffer.prototype.slice: 1.0.2 - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 + available-typed-arrays: 1.0.6 + call-bind: 1.0.6 es-set-tostringtag: 2.0.1 es-to-primitive: 1.2.1 function.prototype.name: 1.1.6 - get-intrinsic: 1.2.1 + get-intrinsic: 1.2.4 get-symbol-description: 1.0.0 globalthis: 1.0.3 gopd: 1.0.1 has: 1.0.4 - has-property-descriptors: 1.0.0 + has-property-descriptors: 1.0.1 has-proto: 1.0.1 has-symbols: 1.0.3 internal-slot: 1.0.5 @@ -8809,18 +8850,22 @@ packages: typed-array-byte-offset: 1.0.0 typed-array-length: 1.0.4 unbox-primitive: 1.0.2 - which-typed-array: 1.1.11 + which-typed-array: 1.1.14 dev: true /es-array-method-boxes-properly@1.0.0: resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} dev: true + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + /es-get-iterator@1.1.3: resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 + call-bind: 1.0.6 + get-intrinsic: 1.2.4 has-symbols: 1.0.3 is-arguments: 1.1.1 is-map: 2.0.2 @@ -8828,7 +8873,6 @@ packages: is-string: 1.0.7 isarray: 2.0.5 stop-iteration-iterator: 1.0.0 - dev: true /es-iterator-helpers@1.0.15: resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} @@ -8857,9 +8901,9 @@ packages: resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.1 + get-intrinsic: 1.2.4 has: 1.0.4 - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /es-shim-unscopables@1.0.0: @@ -9693,7 +9737,6 @@ packages: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: is-callable: 1.2.7 - dev: true /foreground-child@2.0.0: resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} @@ -9837,7 +9880,7 @@ packages: resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.6 define-properties: 1.2.1 es-abstract: 1.22.2 functions-have-names: 1.2.3 @@ -9845,7 +9888,6 @@ packages: /functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - dev: true /gauge@3.0.2: resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} @@ -9878,6 +9920,17 @@ packages: has: 1.0.4 has-proto: 1.0.1 has-symbols: 1.0.3 + dev: true + + /get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.0 /get-nonce@1.0.1: resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} @@ -9928,8 +9981,8 @@ packages: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 + call-bind: 1.0.6 + get-intrinsic: 1.2.4 dev: true /giget@1.1.3: @@ -10090,8 +10143,7 @@ packages: /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: - get-intrinsic: 1.2.1 - dev: true + get-intrinsic: 1.2.4 /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -10149,7 +10201,6 @@ packages: /has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - dev: true /has-flag@2.0.0: resolution: {integrity: sha512-P+1n3MnwjR/Epg9BBo1KT8qbye2g2Ou4sFumihwt6I4tsUX7jnLcX4BTOSKg/B1ZrIYMN9FcEnG4x5a7NB8Eng==} @@ -10168,9 +10219,14 @@ packages: /has-property-descriptors@1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} dependencies: - get-intrinsic: 1.2.1 + get-intrinsic: 1.2.4 dev: true + /has-property-descriptors@1.0.1: + resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} + dependencies: + get-intrinsic: 1.2.4 + /has-proto@1.0.1: resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} engines: {node: '>= 0.4'} @@ -10179,12 +10235,11 @@ packages: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} - /has-tostringtag@1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + /has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 - dev: true /has-unicode@2.0.1: resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} @@ -10210,6 +10265,12 @@ packages: type-fest: 1.4.0 dev: false + /hasown@2.0.0: + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + /hast-util-from-dom@5.0.0: resolution: {integrity: sha512-d6235voAp/XR3Hh5uy7aGLbM3S4KamdW0WEgOaU1YoewnuYw4HXb5eRtv9g65m/RFGEfUY1Mw4UqCc5Y8L4Stg==} dependencies: @@ -10628,10 +10689,9 @@ packages: resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.1 + get-intrinsic: 1.2.4 has: 1.0.4 side-channel: 1.0.4 - dev: true /internmap@1.0.1: resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==} @@ -10680,17 +10740,15 @@ packages: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 - dev: true + call-bind: 1.0.6 + has-tostringtag: 1.0.2 /is-array-buffer@3.0.2: resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 + call-bind: 1.0.6 + get-intrinsic: 1.2.4 is-typed-array: 1.1.12 - dev: true /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} @@ -10704,14 +10762,13 @@ packages: resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: has-bigints: 1.0.2 - dev: true /is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} @@ -10723,9 +10780,8 @@ packages: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 - dev: true + call-bind: 1.0.6 + has-tostringtag: 1.0.2 /is-buffer@2.0.5: resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} @@ -10735,7 +10791,6 @@ packages: /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} - dev: true /is-core-module@2.13.0: resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} @@ -10746,8 +10801,7 @@ packages: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 - dev: true + has-tostringtag: 1.0.2 /is-decimal@2.0.1: resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} @@ -10781,7 +10835,7 @@ packages: /is-finalizationregistry@1.0.2: resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.6 dev: true /is-fullwidth-code-point@3.0.0: @@ -10798,7 +10852,7 @@ packages: resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /is-glob@4.0.3: @@ -10831,13 +10885,12 @@ packages: /is-map@2.0.2: resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} - dev: true /is-nan@1.3.2: resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.6 define-properties: 1.2.1 dev: true @@ -10850,8 +10903,7 @@ packages: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 - dev: true + has-tostringtag: 1.0.2 /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} @@ -10919,9 +10971,8 @@ packages: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 - dev: true + call-bind: 1.0.6 + has-tostringtag: 1.0.2 /is-regexp@1.0.0: resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} @@ -10930,13 +10981,11 @@ packages: /is-set@2.0.2: resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} - dev: true /is-shared-array-buffer@1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: - call-bind: 1.0.2 - dev: true + call-bind: 1.0.6 /is-ssh@1.4.0: resolution: {integrity: sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==} @@ -10963,22 +11012,19 @@ packages: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 - dev: true + has-tostringtag: 1.0.2 /is-symbol@1.0.4: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 - dev: true /is-typed-array@1.1.12: resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} engines: {node: '>= 0.4'} dependencies: - which-typed-array: 1.1.11 - dev: true + which-typed-array: 1.1.14 /is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} @@ -10987,20 +11033,18 @@ packages: /is-weakmap@2.0.1: resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} - dev: true /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.6 dev: true /is-weakset@2.0.2: resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 - dev: true + call-bind: 1.0.6 + get-intrinsic: 1.2.4 /is-what@4.1.15: resolution: {integrity: sha512-uKua1wfy3Yt+YqsD6mTUEa2zSi3G1oPlqTflgaPJ7z63vUGN5pxFpnQfeSLMFnJDEsdvOtkp1rUWkYjB4YfhgA==} @@ -11023,7 +11067,6 @@ packages: /isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - dev: true /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -11072,7 +11115,7 @@ packages: resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} dependencies: define-properties: 1.2.1 - get-intrinsic: 1.2.1 + get-intrinsic: 1.2.4 has-symbols: 1.0.3 reflect.getprototypeof: 1.0.4 set-function-name: 2.0.1 @@ -13176,24 +13219,21 @@ packages: resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.6 define-properties: 1.2.1 - dev: true /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} - dev: true /object.assign@4.1.4: resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.6 define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 - dev: true /object.entries@1.1.7: resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} @@ -13218,7 +13258,7 @@ packages: engines: {node: '>= 0.8'} dependencies: array.prototype.reduce: 1.0.5 - call-bind: 1.0.2 + call-bind: 1.0.6 define-properties: 1.2.1 es-abstract: 1.22.2 safe-array-concat: 1.0.1 @@ -14687,10 +14727,10 @@ packages: resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.6 define-properties: 1.2.1 es-abstract: 1.22.2 - get-intrinsic: 1.2.1 + get-intrinsic: 1.2.4 globalthis: 1.0.3 which-builtin-type: 1.1.3 dev: true @@ -14727,10 +14767,9 @@ packages: resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.6 define-properties: 1.2.1 set-function-name: 2.0.1 - dev: true /regexpu-core@5.3.2: resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} @@ -15088,8 +15127,8 @@ packages: resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} engines: {node: '>=0.4'} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 + call-bind: 1.0.6 + get-intrinsic: 1.2.4 has-symbols: 1.0.3 isarray: 2.0.5 dev: true @@ -15104,8 +15143,8 @@ packages: /safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 + call-bind: 1.0.6 + get-intrinsic: 1.2.4 is-regex: 1.1.4 dev: true @@ -15252,14 +15291,24 @@ packages: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} dev: true + /set-function-length@1.2.1: + resolution: {integrity: sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.2 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + /set-function-name@2.0.1: resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} engines: {node: '>= 0.4'} dependencies: - define-data-property: 1.1.1 + define-data-property: 1.1.2 functions-have-names: 1.2.3 - has-property-descriptors: 1.0.0 - dev: true + has-property-descriptors: 1.0.1 /setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} @@ -15324,8 +15373,8 @@ packages: /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 + call-bind: 1.0.6 + get-intrinsic: 1.2.4 object-inspect: 1.13.0 /signal-exit@3.0.7: @@ -15479,7 +15528,6 @@ packages: engines: {node: '>= 0.4'} dependencies: internal-slot: 1.0.5 - dev: true /store2@2.14.2: resolution: {integrity: sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w==} @@ -15598,7 +15646,7 @@ packages: resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.6 define-properties: 1.2.1 es-abstract: 1.22.2 dev: true @@ -15606,7 +15654,7 @@ packages: /string.prototype.trimend@1.0.7: resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.6 define-properties: 1.2.1 es-abstract: 1.22.2 dev: true @@ -15614,7 +15662,7 @@ packages: /string.prototype.trimstart@1.0.7: resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.6 define-properties: 1.2.1 es-abstract: 1.22.2 dev: true @@ -16302,8 +16350,8 @@ packages: resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 + call-bind: 1.0.6 + get-intrinsic: 1.2.4 is-typed-array: 1.1.12 dev: true @@ -16311,7 +16359,7 @@ packages: resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.6 for-each: 0.3.3 has-proto: 1.0.1 is-typed-array: 1.1.12 @@ -16321,8 +16369,8 @@ packages: resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} engines: {node: '>= 0.4'} dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 + available-typed-arrays: 1.0.6 + call-bind: 1.0.6 for-each: 0.3.3 has-proto: 1.0.1 is-typed-array: 1.1.12 @@ -16331,7 +16379,7 @@ packages: /typed-array-length@1.0.4: resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.6 for-each: 0.3.3 is-typed-array: 1.1.12 dev: true @@ -16365,7 +16413,7 @@ packages: /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.6 has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 @@ -16719,7 +16767,7 @@ packages: is-arguments: 1.1.1 is-generator-function: 1.0.10 is-typed-array: 1.1.12 - which-typed-array: 1.1.11 + which-typed-array: 1.1.14 dev: true /utila@0.4.0: @@ -17054,14 +17102,13 @@ packages: is-number-object: 1.0.7 is-string: 1.0.7 is-symbol: 1.0.4 - dev: true /which-builtin-type@1.1.3: resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} engines: {node: '>= 0.4'} dependencies: function.prototype.name: 1.1.6 - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 is-async-function: 2.0.0 is-date-object: 1.0.5 is-finalizationregistry: 1.0.2 @@ -17071,7 +17118,7 @@ packages: isarray: 2.0.5 which-boxed-primitive: 1.0.2 which-collection: 1.0.1 - which-typed-array: 1.1.11 + which-typed-array: 1.1.14 dev: true /which-collection@1.0.1: @@ -17081,18 +17128,16 @@ packages: is-set: 2.0.2 is-weakmap: 2.0.1 is-weakset: 2.0.2 - dev: true - /which-typed-array@1.1.11: - resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==} + /which-typed-array@1.1.14: + resolution: {integrity: sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==} engines: {node: '>= 0.4'} dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 + available-typed-arrays: 1.0.6 + call-bind: 1.0.6 for-each: 0.3.3 gopd: 1.0.1 - has-tostringtag: 1.0.0 - dev: true + has-tostringtag: 1.0.2 /which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} @@ -17297,12 +17342,12 @@ packages: resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} dev: false - /zustand@4.4.3(@types/react@18.2.29)(immer@10.0.3)(react@18.2.0): - resolution: {integrity: sha512-oRy+X3ZazZvLfmv6viIaQmtLOMeij1noakIsK/Y47PWYhT8glfXzQ4j0YcP5i0P0qI1A4rIB//SGROGyZhx91A==} + /zustand@4.5.0(@types/react@18.2.29)(immer@10.0.3)(react@18.2.0): + resolution: {integrity: sha512-zlVFqS5TQ21nwijjhJlx4f9iGrXSL0o/+Dpy4txAP22miJ8Ti6c1Ol1RLNN98BMib83lmDH/2KmLwaNXpjrO1A==} engines: {node: '>=12.7.0'} peerDependencies: '@types/react': '>=16.8' - immer: '>=9.0' + immer: '>=9.0.6' react: '>=16.8' peerDependenciesMeta: '@types/react': diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 947044877..58c29f8b5 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -2,5 +2,4 @@ packages: - 'core' - 'apps/*' - 'docs' - - 'interface' - 'packages/*' diff --git a/tsconfig.eslint.json b/tsconfig.eslint.json index 25f8cb447..012659477 100644 --- a/tsconfig.eslint.json +++ b/tsconfig.eslint.json @@ -6,7 +6,6 @@ "crates/**/*", "docs", "packages/**/*", - "interface", "**/.eslintrc.js", "**/*.config.js", "prettier.config.js" diff --git a/tsconfig.json b/tsconfig.json index 44e838e57..85074c2b5 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -24,7 +24,7 @@ "path": "packages/components" }, { - "path": "interface" + "path": "packages/browser" }, { "path": "packages/types" diff --git a/tsconfig.options.json b/tsconfig.options.json index 6aaf6051a..ddbf83559 100644 --- a/tsconfig.options.json +++ b/tsconfig.options.json @@ -3,6 +3,7 @@ "lib": ["DOM", "DOM.Iterable", "ESNext"], "strict": true, "allowJs": true, + "allowSyntheticDefaultImports": true, "moduleResolution": "nodenext", "verbatimModuleSyntax": false, "target": "es2022", @@ -21,7 +22,7 @@ "@stump/client": ["./packages/client"], "@stump/api": ["./packages/api"], "@stump/types": ["./packages/types"], - "@stump/interface": ["./interface"] + "@stump/browser": ["./packages/browser"] } } } From 581110a1594952b4b1e4998fc2e365c8f81e460f Mon Sep 17 00:00:00 2001 From: Aaron Leopold <36278431+aaronleopold@users.noreply.github.com> Date: Fri, 9 Feb 2024 18:50:00 -0700 Subject: [PATCH 02/30] :bug: Fix typos from merge --- apps/server/src/routers/api/v1/notifier.rs | 28 +++++++++++----------- apps/server/src/utils/auth.rs | 2 +- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/apps/server/src/routers/api/v1/notifier.rs b/apps/server/src/routers/api/v1/notifier.rs index 108ae1f42..1776fe78a 100644 --- a/apps/server/src/routers/api/v1/notifier.rs +++ b/apps/server/src/routers/api/v1/notifier.rs @@ -15,7 +15,7 @@ use utoipa::ToSchema; use crate::{ config::state::AppState, - errors::{ApiError, ApiResult}, + errors::{APIError, APIResult}, filter::chain_optional_iter, middleware::auth::Auth, utils::enforce_session_permissions, @@ -55,9 +55,9 @@ pub(crate) fn mount(app_state: AppState) -> Router { async fn get_notifiers( State(ctx): State, session: Session, -) -> ApiResult>> { +) -> APIResult>> { enforce_session_permissions(&session, &[UserPermission::ReadNotifier])?; - let client = ctx.get_db(); + let client = &ctx.db; let notifiers = client .notifier() @@ -90,16 +90,16 @@ async fn get_notifier_by_id( State(ctx): State, Path(id): Path, session: Session, -) -> ApiResult> { +) -> APIResult> { enforce_session_permissions(&session, &[UserPermission::ReadNotifier])?; - let client = ctx.get_db(); + let client = &ctx.db; let notifier = client .notifier() .find_first(vec![notifier::id::equals(id)]) .exec() .await? - .ok_or(ApiError::NotFound("Notifier not found".to_string()))?; + .ok_or(APIError::NotFound("Notifier not found".to_string()))?; Ok(Json(Notifier::try_from(notifier)?)) } @@ -128,10 +128,10 @@ async fn create_notifier( State(ctx): State, session: Session, Json(payload): Json, -) -> ApiResult> { +) -> APIResult> { enforce_session_permissions(&session, &[UserPermission::CreateNotifier])?; - let client = ctx.get_db(); + let client = &ctx.db; let notifier = client .notifier() @@ -168,10 +168,10 @@ async fn update_notifier( Path(id): Path, session: Session, Json(payload): Json, -) -> ApiResult> { +) -> APIResult> { enforce_session_permissions(&session, &[UserPermission::ManageNotifier])?; - let client = ctx.get_db(); + let client = &ctx.db; let notifier = client .notifier() .update( @@ -214,10 +214,10 @@ async fn patch_notifier( Path(id): Path, session: Session, Json(payload): Json, -) -> ApiResult> { +) -> APIResult> { enforce_session_permissions(&session, &[UserPermission::ManageNotifier])?; - let client = ctx.get_db(); + let client = &ctx.db; let config = payload .config @@ -262,10 +262,10 @@ async fn delete_notifier( State(ctx): State, Path(id): Path, session: Session, -) -> ApiResult> { +) -> APIResult> { enforce_session_permissions(&session, &[UserPermission::DeleteNotifier])?; - let client = ctx.get_db(); + let client = &ctx.db; let deleted_notifier = client .notifier() diff --git a/apps/server/src/utils/auth.rs b/apps/server/src/utils/auth.rs index 6296fb466..b91a9a9e8 100644 --- a/apps/server/src/utils/auth.rs +++ b/apps/server/src/utils/auth.rs @@ -112,7 +112,7 @@ pub fn enforce_session_permissions( if can_proceed { Ok(user) } else { - Err(ApiError::Forbidden( + Err(APIError::Forbidden( "You do not have permission to access this resource.".to_string(), )) } From 11285567cd7c631d3abd37824bfd3ce972508e46 Mon Sep 17 00:00:00 2001 From: Aaron Leopold <36278431+aaronleopold@users.noreply.github.com> Date: Sun, 11 Feb 2024 12:55:24 -0700 Subject: [PATCH 03/30] :technologist: Migrate to Yarn (#266) * WIP: replace pnpm with yarn * Replace all pnpm usages * Fix emoji-mart error * Add missed generated types * fix yarn in CI * fix yarn in CI * fix yarn in CI * fix yarn in CI * fix yarn in CI --- .github/actions/build-web/action.yml | 23 +- .github/actions/setup-pnpm/action.yaml | 30 - .github/workflows/build_nix.yml | 2 - .github/workflows/ci.yaml | 19 +- .gitignore | 1 - README.md | 14 +- apps/desktop/package.json | 8 +- apps/desktop/src-tauri/tauri.conf.json | 2 +- apps/web/package.json | 4 +- core/package.json | 2 +- docker/Dockerfile | 9 +- docs/components/AppPreview.tsx | 2 +- docs/components/Hero.tsx | 4 +- docs/pages/contributing.mdx | 14 +- docs/pages/installation/executable.mdx | 2 +- docs/pages/installation/source.mdx | 2 +- flake.nix | 2 +- package.json | 40 +- packages/api/package.json | 2 +- packages/browser/package.json | 8 +- .../filters/form/AgeRatingFilter.tsx | 2 +- .../src/components/media/MediaCard.tsx | 4 +- .../library-section/LibraryOptionsMenu.tsx | 8 +- .../components/readers/epub/EpubJsReader.tsx | 2 +- .../src/components/series/SeriesCard.tsx | 2 +- .../thumbnail/EditThumbnailDropdown.tsx | 2 +- .../scenes/book-club/UserBookClubsScene.tsx | 2 +- .../book-club/home/BookClubNavigation.tsx | 2 +- .../book/management/BookManagementScene.tsx | 2 +- .../form/CreateOrUpdateLibraryForm.tsx | 2 +- .../form/sections/ThumbnailConfig.tsx | 4 +- .../management/SeriesManagementScene.tsx | 2 +- .../app/appearance/MaxWidthPreference.tsx | 2 +- .../ReplacePrimarySidebarToggle.tsx | 4 +- .../settings/server/jobs/JobActionMenu.tsx | 8 +- .../CreateOrUpdateUserForm.tsx | 2 +- .../scenes/smart-list/UserSmartListsScene.tsx | 2 +- .../form/FilterConfiguration.tsx | 4 +- .../items/table/SmartListBookTable.tsx | 2 +- packages/client/package.json | 4 +- packages/components/README.md | 4 +- packages/components/package.json | 1 + .../components/src/button/ButtonOrLink.tsx | 4 +- packages/components/src/card/EntityCard.tsx | 4 +- packages/components/src/select/ComboBox.tsx | 2 +- packages/types/generated.ts | 2 +- pnpm-lock.yaml | 17368 ---------------- pnpm-workspace.yaml | 5 - scripts/system-setup.sh | 32 +- yarn.lock | 12882 ++++++++++++ 50 files changed, 13032 insertions(+), 17524 deletions(-) delete mode 100644 .github/actions/setup-pnpm/action.yaml delete mode 100644 pnpm-lock.yaml delete mode 100644 pnpm-workspace.yaml create mode 100644 yarn.lock diff --git a/.github/actions/build-web/action.yml b/.github/actions/build-web/action.yml index 9a39f4517..b66ee0de6 100644 --- a/.github/actions/build-web/action.yml +++ b/.github/actions/build-web/action.yml @@ -7,17 +7,32 @@ runs: - name: Checkout project uses: actions/checkout@v3 - - name: Setup pnpm - uses: ./.github/actions/setup-pnpm + - uses: actions/setup-node@v4 + with: + node-version: '20.0.0' + + - name: Install yarn + shell: bash + run: npm install -g yarn + + - uses: actions/setup-node@v4 + with: + node-version: '20.0.0' + cache: 'yarn' + + + - name: Install yarn + shell: bash + run: npm install -g yarn - name: Install dependencies shell: bash - run: pnpm install + run: yarn install working-directory: apps/web - name: Build app shell: bash - run: pnpm run build + run: yarn build working-directory: apps/web - name: Upload bundle diff --git a/.github/actions/setup-pnpm/action.yaml b/.github/actions/setup-pnpm/action.yaml deleted file mode 100644 index a21fae754..000000000 --- a/.github/actions/setup-pnpm/action.yaml +++ /dev/null @@ -1,30 +0,0 @@ -name: PNPM Setup -description: Setup PNPM and cache PNPM dependencies -runs: - using: 'composite' - steps: - - uses: pnpm/action-setup@v2 - name: Install pnpm - id: pnpm-install - with: - version: 7 - run_install: false - - - name: Get pnpm store directory - id: pnpm-cache-store - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT - - - uses: actions/cache@v3 - name: Setup pnpm cache - id: pnpm-cache - with: - path: ${{ steps.pnpm-cache-store.outputs.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-pnpm-store- - - - name: Install dependencies - shell: bash - run: pnpm install --no-frozen-lockfile diff --git a/.github/workflows/build_nix.yml b/.github/workflows/build_nix.yml index af420f537..15a8f967b 100644 --- a/.github/workflows/build_nix.yml +++ b/.github/workflows/build_nix.yml @@ -15,5 +15,3 @@ jobs: - uses: cachix/install-nix-action@v17 - name: test run: nix develop --command "pkg-config" "--libs" "--cflags" "gdk-3.0" "gdk-3.0 >= 3.22" - # - name: Building package - # run: nix develop --command pnpm core run setup && cargo check diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 67d4fe016..45337aab7 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -36,8 +36,21 @@ jobs: - name: Checkout repository uses: actions/checkout@v3 - - name: Setup PNPM and TypeScript - uses: ./.github/actions/setup-pnpm + - uses: actions/setup-node@v4 + with: + node-version: '20.0.0' + + - name: Install yarn + shell: bash + run: npm install -g yarn + + - uses: actions/setup-node@v4 + with: + node-version: '20.0.0' + cache: 'yarn' + + - name: Install dependencies + run: yarn install - name: Run TypeScript lints - run: pnpm lint + run: yarn lint diff --git a/.gitignore b/.gitignore index 286e0eee1..49aae43c2 100644 --- a/.gitignore +++ b/.gitignore @@ -31,7 +31,6 @@ node_modules/ target/ .next .netlify -.pnpm-store .vercel # Custom diff --git a/README.md b/README.md index 41d1947c7..c6b4d71ba 100644 --- a/README.md +++ b/README.md @@ -80,7 +80,7 @@ Contributions are very **welcome**! Please review the [CONTRIBUTING.md](https:// A quick summary of the steps required to get going: -1. Install [pnpm](https://pnpm.io/installation), [rust](https://www.rust-lang.org/tools/install) and [node](https://nodejs.org/en/download/). +1. Install [yarn](https://yarnpkg.com/), [rust](https://www.rust-lang.org/tools/install) and [node](https://nodejs.org/en/download/). - If you're running Windows, you will need [Visual C++](https://docs.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170) - If you're running macOS on Apple Silicon, you'll need to install [Rosetta](https://support.apple.com/en-us/HT211861) 2. Install [cargo-watch](https://crates.io/crates/cargo-watch) @@ -93,14 +93,14 @@ A quick summary of the steps required to get going: This isn't strictly necessary, and is mostly beneficial for Linux users (it installs some system dependencies). Feel free to skip this step if you'd like, and instead just run: ```bash - pnpm run setup + yarn run setup ``` This will build the React app, generate the Prisma client, and generate the Rust-TypeScript types. To do any of these individually, you can run: ```bash # build the React app - pnpm web build + yarn web build # generate the Prisma client and Rust-TypeScript types cargo codegen # or cargo prisma generate --schema=./core/prisma/schema.prisma for just the Prisma client ``` @@ -111,11 +111,11 @@ A quick summary of the steps required to get going: ```bash # run the webapp + server - pnpm dev:web + yarn dev:web # run the desktop app + server - pnpm start:desktop + yarn start:desktop # run the docs website - pnpm docs dev + yarn docs dev ``` Or just `cargo` for the server (and other Rust apps): @@ -147,7 +147,7 @@ In general, the following areas are good places to start:
Click to expand -Stump has a monorepo structure managed by [pnpm workspaces](https://pnpm.io/workspaces) and [cargo workspaces](https://doc.rust-lang.org/cargo/reference/workspaces.html). The project is split into a number of different packages and crates, each with their own purpose: +Stump has a monorepo structure managed by [yarn workspaces](https://yarnpkg.com/features/workspaces) and [cargo workspaces](https://doc.rust-lang.org/cargo/reference/workspaces.html). The project is split into a number of different packages and crates, each with their own purpose: ### Apps diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 7cd1892ca..8f3828e83 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -8,16 +8,16 @@ "format": "cargo fmt --package stump_desktop", "tauri": "tauri", "start": "tauri dev --no-watch", - "start-bundled": "pnpm tauri dev --no-watch -- --features bundled-server", + "start-bundled": "yarn tauri dev --no-watch -- --features bundled-server", "vite": "vite --", "dev": "tauri dev", "build": "vite build && tauri build", "build:mac": "vite build && tauri build --target universal-apple-darwin", - "nuke": "pnpm exec rimraf -rf node_modules" + "nuke": "yarn exec rimraf -rf node_modules" }, "dependencies": { - "@stump/client": "workspace:*", - "@stump/browser": "workspace:*", + "@stump/client": "*", + "@stump/browser": "*", "@tanstack/react-query": "^4.28.0", "@tauri-apps/api": "^1.2.0", "react": "^18.2.0", diff --git a/apps/desktop/src-tauri/tauri.conf.json b/apps/desktop/src-tauri/tauri.conf.json index 68bb741b5..0876ceaf7 100644 --- a/apps/desktop/src-tauri/tauri.conf.json +++ b/apps/desktop/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "../node_modules/@tauri-apps/cli/schema.json", "build": { - "beforeDevCommand": "pnpm vite --clearScreen=false", + "beforeDevCommand": "yarn vite --clearScreen=false", "devPath": "http://localhost:3000", "distDir": "../dist" }, diff --git a/apps/web/package.json b/apps/web/package.json index e38ff8a7c..93677dd08 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -10,8 +10,8 @@ "nuke": "rimraf -rf node_modules" }, "dependencies": { - "@stump/client": "workspace:*", - "@stump/browser": "workspace:*", + "@stump/client": "*", + "@stump/browser": "*", "react": "^18.2.0", "react-dom": "^18.2.0", "react-router": "^6.17.0", diff --git a/core/package.json b/core/package.json index 7cd09f403..89ce84a86 100644 --- a/core/package.json +++ b/core/package.json @@ -7,7 +7,7 @@ "scripts": { "lint": "cargo clippy --package stump_core -- -D warnings", "prisma": "cargo prisma", - "studio": "pnpm dlx prisma studio", + "studio": "yarn dlx prisma studio", "build": "cargo build --release", "format": "cargo fmt --package stump_core", "integration-tests": "cargo integration-tests" diff --git a/docker/Dockerfile b/docker/Dockerfile index e0bc846d4..fbbf96597 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -7,15 +7,12 @@ ARG TARGETARCH WORKDIR /app -# Note: I don't like copying ~everything~ but since I now use types exported from -# the core, and use pnpm specific means of accessing it via the workspace, I kind -# of need to maintain the structure of the workspace and use pnpm COPY . . -RUN npm install -g pnpm +RUN npm install -g yarn -RUN pnpm i -RUN pnpm web build +RUN yarn install +RUN yarn web build RUN mv ./apps/web/dist build diff --git a/docs/components/AppPreview.tsx b/docs/components/AppPreview.tsx index 4c43db61d..63ed22b00 100644 --- a/docs/components/AppPreview.tsx +++ b/docs/components/AppPreview.tsx @@ -26,7 +26,7 @@ export default function AppPreview() { initial={{ opacity: 0, scale: 0.75 }} animate={{ opacity: 1, scale: 1 }} transition={{ delay: 0.5, duration: 1 }} - className="z-40 flex h-full w-[650px] flex-1 self-center bg-[url('/demo-light.png')] bg-contain bg-[center_top] bg-no-repeat dark:bg-[url('/demo-dark.png')] sm:w-auto" + className="z-40 flex h-full w-[650px] flex-1 self-center bg-[url('/demo-light.png')] bg-contain bg-[center_top] bg-no-repeat sm:w-auto dark:bg-[url('/demo-dark.png')]" />
diff --git a/docs/components/Hero.tsx b/docs/components/Hero.tsx index 55f84045e..9f09d7fa4 100644 --- a/docs/components/Hero.tsx +++ b/docs/components/Hero.tsx @@ -10,7 +10,7 @@ export default function Hero() { initial={{ opacity: 0, y: -40 }} animate={{ opacity: 1, y: 0 }} transition={{ duration: 0.5 }} - className="text-4xl font-extrabold tracking-tight text-neutral-900 dark:text-neutral-100 sm:text-5xl md:text-6xl" + className="text-4xl font-extrabold tracking-tight text-neutral-900 sm:text-5xl md:text-6xl dark:text-neutral-100" > A lightning fast{' '} media server. @@ -19,7 +19,7 @@ export default function Hero() { initial={{ opacity: 0, y: 40 }} animate={{ opacity: 1, y: 0 }} transition={{ delay: 0.25, duration: 0.5 }} - className="text-neutral-650 mx-auto mt-3 max-w-md text-base dark:text-neutral-400 sm:text-lg md:mt-5 md:max-w-3xl md:text-xl" + className="text-neutral-650 mx-auto mt-3 max-w-md text-base sm:text-lg md:mt-5 md:max-w-3xl md:text-xl dark:text-neutral-400" > Free, open source, self-hosting for all your comic books, manga and digital book collections. Supports the most popular reading formats. diff --git a/docs/pages/contributing.mdx b/docs/pages/contributing.mdx index aae87e561..fd760d83a 100644 --- a/docs/pages/contributing.mdx +++ b/docs/pages/contributing.mdx @@ -23,25 +23,25 @@ If you're completely new to rust and/or web development, I put together a small [Rosetta](https://support.apple.com/en-us/>HT211861). -You need to install [pnpm](https://pnpm.io/installation), [rust](https://www.rust-lang.org/tools/install) and [node](https://nodejs.org/en/download/). Additionally, if you want to run any of the dev scripts on the rust side of things, you'll need to install [cargo-watch](https://crates.io/crates/cargo-watch). Afterwards, run the following: +You need to install [yarn](https://yarnpkg.com), [rust](https://www.rust-lang.org/tools/install) and [node](https://nodejs.org/en/download/). Additionally, if you want to run any of the dev scripts on the rust side of things, you'll need to install [cargo-watch](https://crates.io/crates/cargo-watch). Afterwards, run the following: ```bash -pnpm run setup +yarn run setup ``` This will install the project dependencies, build the frontend bundle (required for server to start), generate the prisma client, and create the sqlite database. ### Running Stump -I use [pnpm workspaces](https://pnpm.io/workspaces) and [cargo workspaces](https://doc.rust-lang.org/cargo/reference/workspaces.html): +I use [yarn workspaces](https://yarnpkg.com/features/workspaces) and [cargo workspaces](https://doc.rust-lang.org/cargo/reference/workspaces.html): ```bash # run the webapp + server -pnpm dev:web +yarn dev:web # run the desktop app + server -pnpm start:desktop +yarn start:desktop # run the docs website -pnpm docs dev +yarn docs dev ``` Or `cargo` for the server: @@ -80,7 +80,7 @@ I also want to point out that this repository uses 4 tab spaces for indentation. Stump has a custom component library used throughout the `browser` package (the web UI and desktop app). This library can be found at `packages/components`, and was developed with Storybook in mind. For getting started building out designs and components in Stump, I highly recommend going through the stories available in the Storybook UI: ```bash -pnpm storybook +yarn storybook ``` This will give you a good idea of what components are available and how they can be used. diff --git a/docs/pages/installation/executable.mdx b/docs/pages/installation/executable.mdx index 356b23ea4..db68eaf4f 100644 --- a/docs/pages/installation/executable.mdx +++ b/docs/pages/installation/executable.mdx @@ -34,7 +34,7 @@ Restart=always RestartSec=1 User=stump WorkingDirectory=/opt/stump -ExecStart=pnpm start core +ExecStart=cargo run -p stump_server --release [Install] WantedBy=multi-user.target diff --git a/docs/pages/installation/source.mdx b/docs/pages/installation/source.mdx index 20d4bee48..cabf741da 100644 --- a/docs/pages/installation/source.mdx +++ b/docs/pages/installation/source.mdx @@ -12,7 +12,7 @@ If you want to install Stump directly from source, you will need to first follow Once you have finished that initial setup, you can run the following command to build Stump locally: ```bash -pnpm web build && cargo build --package stump_server --release +yarn web build && cargo build --package stump_server --release ``` This will bundle the web application and build the Stump server. The server binary is located at `target/release/stump_server`, and the web bundle at `apps/web/dist`. You can place those two items anywhere you'd like, just be sure they are either next to each other or you have set the appropriate [environment variable](/guides/configuration#stump_client_dir). diff --git a/flake.nix b/flake.nix index 919737ac9..dfcd2446a 100644 --- a/flake.nix +++ b/flake.nix @@ -25,7 +25,7 @@ packages = with pkgs; [ # node - nodePackages.pnpm + nodePackages.yarn nodejs # rust diff --git a/package.json b/package.json index 5309c5906..c57f6db51 100644 --- a/package.json +++ b/package.json @@ -4,26 +4,32 @@ "repository": "https://github.com/stumpapp/stump.git", "author": "Aaron Leopold ", "license": "MIT", + "private": true, + "workspaces": [ + "apps/*", + "core", + "packages/*" + ], "scripts": { "prepare": "husky install", - "setup": "pnpm i && pnpm web build && cargo codegen", + "setup": "yarn && yarn web build && cargo codegen", "lint": "eslint --ext .ts,.tsx,.cts,.mts,.js,.jsx,.cjs,.mjs --fix --report-unused-disable-directives --no-error-on-unmatched-pattern --exit-on-fatal-error --ignore-path .gitignore .", - "client": "pnpm --filter @stump/client --", - "desktop": "pnpm --filter @stump/desktop --", - "browser": "pnpm --filter @stump/browser --", - "web": "pnpm --filter @stump/web --", - "docs": "pnpm --filter @stump/docs --", - "server": "pnpm --filter @stump/server --", - "start:desktop": "concurrently -n server,desktop -c green.bold,blue.bold \"pnpm run server start\" \"pnpm desktop start\"", - "dev:web": "concurrently -n server,web -c green.bold,blue.bold \"pnpm run server dev\" \"pnpm web dev\"", - "core": "pnpm --filter @stump/core --", - "prisma": "pnpm core prisma", + "client": "yarn workspace @stump/client --", + "desktop": "yarn workspace @stump/desktop --", + "browser": "yarn workspace @stump/browser --", + "web": "yarn workspace @stump/web --", + "docs": "yarn workspace @stump/docs --", + "server": "yarn workspace @stump/server --", + "start:desktop": "concurrently -n server,desktop -c green.bold,blue.bold \"yarn run server start\" \"yarn desktop start\"", + "dev:web": "concurrently -n server,web -c green.bold,blue.bold \"yarn run server dev\" \"yarn web dev\"", + "core": "yarn workspace @stump/core --", + "prisma": "yarn core prisma", "codegen": "cargo run --package codegen", - "build:server": "pnpm run server build", - "build:web": "pnpm web build && pnpm build:server", - "build:desktop": "pnpm desktop build", + "build:server": "yarn run server build", + "build:web": "yarn web build && yarn build:server", + "build:desktop": "yarn desktop build", "prettify": "prettier --config prettier.config.js --ignore-path .prettierignore --write .", - "nuke": "cargo clean && cargo codegen && pnpm -r nuke && pnpm i" + "nuke": "cargo clean && cargo codegen && yarn -r nuke && yarn" }, "devDependencies": { "@babel/core": "^7.23.2", @@ -58,11 +64,11 @@ "cargo fmt --check --manifest-path=apps/desktop/src-tauri/Cargo.toml --" ] }, - "packageManager": "pnpm@8.6.1", "engines": { "node": "20.0.0" }, - "pnpm": { + "packageManager": "yarn@1.22.21", + "yarn": { "peerDependencyRules": { "ignoreMissing": [ "@babel/core" diff --git a/packages/api/package.json b/packages/api/package.json index 24a719d5c..7c310974a 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -13,7 +13,7 @@ "typescript": "^5.3.3" }, "dependencies": { - "@stump/types": "workspace:*", + "@stump/types": "*", "axios": "^1.5.1", "qs": "^6.11.2" } diff --git a/packages/browser/package.json b/packages/browser/package.json index 6ec870f9c..058718cd0 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -11,10 +11,10 @@ }, "dependencies": { "@hookform/resolvers": "^3.3.2", - "@stump/api": "workspace:*", - "@stump/client": "workspace:*", - "@stump/components": "workspace:*", - "@stump/types": "workspace:*", + "@stump/api": "*", + "@stump/client": "*", + "@stump/components": "*", + "@stump/types": "*", "@tanstack/react-query": "^4.28.0", "@tanstack/react-query-devtools": "^4.28.0", "@tanstack/react-table": "^8.10.7", diff --git a/packages/browser/src/components/filters/form/AgeRatingFilter.tsx b/packages/browser/src/components/filters/form/AgeRatingFilter.tsx index 34446f972..ba8149f58 100644 --- a/packages/browser/src/components/filters/form/AgeRatingFilter.tsx +++ b/packages/browser/src/components/filters/form/AgeRatingFilter.tsx @@ -72,7 +72,7 @@ export default function AgeRatingFilter({ variant = 'media' }: Props) { {...(selection !== null ? { errorMessage: form.formState.errors.metadata?.age_rating?.message as string, - } + } : {})} /> diff --git a/packages/browser/src/components/media/MediaCard.tsx b/packages/browser/src/components/media/MediaCard.tsx index 96b9b2057..5b736db13 100644 --- a/packages/browser/src/components/media/MediaCard.tsx +++ b/packages/browser/src/components/media/MediaCard.tsx @@ -115,7 +115,7 @@ export default function MediaCard({ ? paths.bookReader(media.id, { epubcfi: media.current_epubcfi, page: media.current_page || undefined, - }) + }) : paths.bookOverview(media.id) }, [readingLink, media.id, media.current_epubcfi, media.current_page, onSelect]) @@ -128,7 +128,7 @@ export default function MediaCard({ progress: undefined, subtitle: undefined, title: undefined, - } + } : {} ) as Partial diff --git a/packages/browser/src/components/navigation/sidebar/sections/library-section/LibraryOptionsMenu.tsx b/packages/browser/src/components/navigation/sidebar/sections/library-section/LibraryOptionsMenu.tsx index 6a50eef82..ac85f9b09 100644 --- a/packages/browser/src/components/navigation/sidebar/sections/library-section/LibraryOptionsMenu.tsx +++ b/packages/browser/src/components/navigation/sidebar/sections/library-section/LibraryOptionsMenu.tsx @@ -80,7 +80,7 @@ export default function LibraryOptionsMenu({ library }: Props) { handleScan() }, }, - ] + ] : []), ...(canUseExplorer ? [ @@ -90,7 +90,7 @@ export default function LibraryOptionsMenu({ library }: Props) { label: t(getLocaleKey('fileExplorer')), leftIcon: , }, - ] + ] : []), ], }, @@ -113,11 +113,11 @@ export default function LibraryOptionsMenu({ library }: Props) { setIsDeleting(true) }, }, - ] + ] : []), ], }, - ] + ] : []), ]} align={isMobile ? 'end' : 'start'} diff --git a/packages/browser/src/components/readers/epub/EpubJsReader.tsx b/packages/browser/src/components/readers/epub/EpubJsReader.tsx index d1270c3a2..79f536e5b 100644 --- a/packages/browser/src/components/readers/epub/EpubJsReader.tsx +++ b/packages/browser/src/components/readers/epub/EpubJsReader.tsx @@ -250,7 +250,7 @@ export default function EpubJsReader({ id, initialCfi }: EpubJsReaderProps) { : { height: 0, width: 0, - } + } if (currentWidth === width && currentHeight === height) { continue diff --git a/packages/browser/src/components/series/SeriesCard.tsx b/packages/browser/src/components/series/SeriesCard.tsx index 3a368c8c5..e55726cfa 100644 --- a/packages/browser/src/components/series/SeriesCard.tsx +++ b/packages/browser/src/components/series/SeriesCard.tsx @@ -65,7 +65,7 @@ export default function SeriesCard({ series, fullWidth, variant = 'default' }: S progress: undefined, subtitle: undefined, title: undefined, - } + } : {} return ( diff --git a/packages/browser/src/components/thumbnail/EditThumbnailDropdown.tsx b/packages/browser/src/components/thumbnail/EditThumbnailDropdown.tsx index a181585ea..0c953b55e 100644 --- a/packages/browser/src/components/thumbnail/EditThumbnailDropdown.tsx +++ b/packages/browser/src/components/thumbnail/EditThumbnailDropdown.tsx @@ -53,7 +53,7 @@ export default function EditThumbnailDropdown({ label, onChooseSelector, onUploa label: t(withLocaleKey('options.uploadImage')), onClick: () => setShowUploadModal(true), }, - ] + ] : []), ], }, diff --git a/packages/browser/src/scenes/book-club/UserBookClubsScene.tsx b/packages/browser/src/scenes/book-club/UserBookClubsScene.tsx index 78103619f..e908c74e3 100644 --- a/packages/browser/src/scenes/book-club/UserBookClubsScene.tsx +++ b/packages/browser/src/scenes/book-club/UserBookClubsScene.tsx @@ -85,7 +85,7 @@ export default function UserBookClubsScene() { {bookClubs?.map((club) => (
  • {renderBookClub(club)}
  • diff --git a/packages/browser/src/scenes/book-club/home/BookClubNavigation.tsx b/packages/browser/src/scenes/book-club/home/BookClubNavigation.tsx index 23c280efa..1aa620e3f 100644 --- a/packages/browser/src/scenes/book-club/home/BookClubNavigation.tsx +++ b/packages/browser/src/scenes/book-club/home/BookClubNavigation.tsx @@ -53,7 +53,7 @@ export default function BookClubNavigation() { const preferTopBar = primary_navigation_mode === 'TOPBAR' return ( -
    +
    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%0A@rww2-tx|R9J7UdHGp)tA7#U* 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ⅇ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�r2`Pz*N!o&j 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 literal 0 HcmV?d00001 diff --git a/apps/expo/assets/images/icon.png b/apps/expo/assets/images/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..0ea4f365b111f249df654d97b9fb71daf22f7569 GIT binary patch literal 373739 zcmZ5o1yodB*Pa;|x*O?6X^@l{1Vp4%l#Zd1MpC-FQCdV$QE8Bn9J)&-hZsUY>2CP% z;9K9n7B1Gf=G=46-p_t^UZNgqC==q{zypCmgevzHAA>-cYUqDBSit{;fU)X;UtrhA z%6CB}gY>^ZAZCz?qWlvt!OaTvnBKYSNIh#f}u;4X8hhE33fZZcT)IoP~#;@f7!*7T8;hfW1w zPpY=Ta`VdZ{ZuRK*|SFQvy!cP9RxL$8wSRE7zk0~g7>d+#8AcY(`Ck{y^wuCe*fi* zdk_5B+MwK&A@j25^9!c6XY_6D@N_SlWjd#iGz4MkZy^Mtn|myRvm~S9K^)B-gvrK{?`>cHC*yadT zg&YbJ(^RV$_`nzMRk-!mL63Jt%JxUAcGAF|m`%=w(7!H5O1*m7r_wGd;fKB^MJ~({ zO2wZo`TY2?(@Q40ihKRy`MyI%rtL*6f^2auHy}>z@Oy~#BobOM^SKtIuQ3)(jwutF zp}6_G5A+3O11)1eHk9KJ5>jQZph@Jwx-=v8ea0Nq(VdnfV8SV*x5RO$$)0Ih;D(HM z??QKvODjb#2#|4*G$kCtu1OuFJYW}gO_$OYl+6(;>(W37whwp&Tjo} z!6}*|j(cOF$9CWf&cH{Y{d_CSZAv5XK-8d4j{HWgvv_h55R22AAL-s2}5BTuqaKlN2Rr#Y(_=cl`}6L8#)QF^X453jx)Z4QVMLxnO(K znywiK{A~F>W~7rpPs`igE4dwoD&` zgi5)BgYfy<&10ac9gCyh=N-J zjHQO>*dqZ)BW;9KP{f+Z;U-VUIxc5Sw*^x=FN_av3zsvqaJwy`g-1~o=yCZ8)}Za7bsm*IGkeskgs9#^O9rXF4I~1ZZ=p3|vp5sR-!K z2!>=0un8nqT2k2AF_}~K*A*){#2{5sWQf=+xVDNQQaHi_PXB@meYPYr!Or`tdt7v# ziPOV0lOzZomg8H2rHXjLDepnh-AAZq!DA2tn|1ku-E1pOr|6<7GToP+w+q+`Sbf5S z2voT&Ayh^mm019DO7_evdB;pEF8vdu1sjGMG*>=Z*O(wN1Z|$f^)NET8KhyYt%2*_ zET!CuUd(8CHSMK%FFj z0&-zVc)TPi2Bux2*sJ*C-8bKMMxA0JP2TPO{BmtAa7s)XK|Lrh;{)Kixw@GB(_i0j zln<(-veaYYu`}q zXad748)#^-|CmPy|8_V|&R&PKj#%k|Bb}9nnZ72Ve)F@Gi-H$ZnC4m$vVo8X92uro;4TfCc$d0G7w36J`zo zaaS9@GyTvK!y;G&r@O3<4dF`u>W3avwsCgHZwtX8|{hGtX_`Y6LHSKr5dHSV|Bs zTngNh;$>ilcxi*oTg9j6B zt|UqT!{^oh&K7~P@(zEKKFcy|*a9E(2WH}EIsd*^J1nRP?+3?Yd5i@CsM0lqyFm2Dz!X(BB^?O(GX5Wi3gdOeYr zehBcajT@g$YGKwokXI82?r(2r3Nqjhr?o*t}U< zm3NHpGoJj7b`gplFLQA%sY-3476snu_PdgY@qi4V1PT334)85WAM{mfyGtS?rdkB{VW1M5K)&M7+Q(#1!P~k0LyU)=(UTCp6v~ZEDeUroM zq$h;m4ZZodkpW0nMTtaC-xAuY{w8D>pslO0VguaK5V&J9&kN%;2$X$z%&@sQ=$xjL z-Wb-l{P1r*<|1|>te*J&P7io&FO{x$lmS+?o&iok_Y=&(ybVm^8Vhcc=lo;Oe+(ZY zjm_4~U;NqsWBPK(SF}*LfKwv$cGW1j@xWR-;zfQE@nPNNo$!mibPBG&nFOF3R_5RY zct2ko(k14{7(d4~z8|6kQ+$ftKuVjl^+lD)jsy|GF0gJ0?>}N;HiMYpEm^UXi>GPm zT5Gf~5B>sNFAoVE5n2Onh1KMk-@Q{1;V>{A6(%Ykt0%+zRkg)L&PZ`$K&`2hQ z8M67a{kzA$9t^+zhLHHnr#~*=4mm9Z0esnl4>;p()o$E}fJ5UOIFKV@;{sdtH8qBy z9oyfhbE8buiA!JWscjrS%aI9+fHH2l;Ay=1X9YoG;0x-+ zwccBHj!e1ayMWce7=frVIU=T&As5l6ve_8_tjdLngIn0{qjoEBMV-C@n(3AUG_&iZE|CXl#_w>4ojm3ZM!Na` z-Y62MyOblNw#cnj%9T~vR3ilfMY~gZUUF<&C|JaGdANEv*_B0tI*>X{(l!2X!~rI7 z6U>B_mRjv*d`s&CZ$3VhJJAQ&?|Cy8Js3JXr5hlPDF=P1MD&lX!-DSP-)==&TRs&P zSJDqkDS$DeOBC2K2o^=1+^SEG0`BA8;W`EN1loQVN$D5wQ6RSW0F7gdq?zLzIm zb_Bm7O}GWQl>f(ADRiM=jIY(^_ZM2P3n@>%=!gO4K1ItyZu?jpuP7QIunXLK&Mbi= zg}bthe}#a6vjMh%!Qavt>gqprWm5t^t)n&UXKu{009b5g^UcnB9KhlI>tWF{#JY!? zyLXP?%for)4%g_a1P;$b22juu6k5SPd^lNDrQWb)Mzhz(YZP4YuM44wtO)EjN?w(2 zc5AJBqnHuoS^%p?d*@W%A-ZQlshy|am7H+{-zJ5lmi`053cj*_nrt28r>;+{1={zt zm~8>`P;}^!oGZfna(moQHTIkUv8>lfqN(w(9AQBvkWxA!Ilj`57x<>Yz5dS9QzP+t zpJj>;Dx3?0l<)no7`uxR8?t08u^$aRjU6Le3bk^#(XQ%Tbcx_OFTi`A^szQ&7Ej_M zTKoR7Dqu?(luEu|5=|*7XlLOEXjywMek-;Xwl*C;fXd(jt^Y57J!F=H<^%~?zltmM zXOoNQdi0378Q7?2>tKF$_X&U|WBj_y+nNzwrvIVIhs;_4{9cK!BmqRDD~jG^AVwLm z_NsD!&&aQ2iJ$(Tmhc`R8t~byQ=g7XKYiG?48NJEfW}|skScY2;4|A>b|R{!!Km6+ zT2W7fMUq56OL1UMKo$1o_J*78+V z!uL?fKh>K2_n+p|Ag;nU|0`lx5G6iMch%2VqXokekVokJGP;m)N3v$XZesR$84E=B z{}>?`W`a3OrK!QopmSknLbNPI!A%8dKiZN*GC>yii`eKJ4AeJShW?QM-9;_PweOZ4 zKN~JIj};(~C)!dAd-hJY>FY6HNwMnx{~n0n_&7PcvDtzR72b!x--K?xgPEf9Z<@9C zM~4c3xgj0Uy~D-ZzC8a@JpdULCKX-Mub-5oM`WRp4qjj@p;G>p@Ui7nlNOZM<9{G> ztv(E1=Gsq1c~+;OH?IovVY6uB6<2KuB6tTgSX}3e^AZP7*fS6Hx&GH$0wG42vm}d5 zCi@t&Vg2e4$8A8&}-0@m0OV0W>#xd=z&wHCSv@sGL6W)Z16B^UfM+=&9f znx(!6&h$Veh*V`hqJd*d{^!d8RoUPI={@4kyQ1gc$VW0It+PteOV)Z7?F}8&3At#~ z*I30IG}8WiGN2yJoJjlr)#x~RIOHpusK$8^Yx(cXFK>`$KLC=n|3Ts{ID!8o!2jM5 zE7wy?clq@w4oc){huorsTK^mfoLuklmU z81^Q1ndtvs0gP9qh?-+`-rnxbl)`%iF9W94uC3vaLNp*aF?Ly{p05tH^z$>uMvh>YDITV1&y=e@lq^__FjR|h;t zHy7)%|1+fnRV8T^4L)M%vE3s^{s%(Dp8#VuG2gxe+A+)FTDdO0r$LOE7N9pUaYMKk zJPFg6o@a-7ZS*t0#E-YYQk`BgCF$KW`xN-VyX1VdkYxO|IRN_IyUZ-XArE+L83$rU zoJo>MP?{U}d0qY0DgXy9g(<$=WrNOs10fwZ6Y*kkP-jiAEu{L|FZo1wwp(QP()&v( z3m#rsSxN^T^Yd7DI2vJaXLQ-1dPRUO0(cOfK*W(mEhzD}=<~8pk|#4F7iYWRFjsJo zwK&e5T7Jp*!L`m{)zIm-27KRI2e#AQ`RZV=`~2d8lu(TdncllH0Y`kQbxK@&?+x6i z#j<~zoHlNDQGdqhQb)5=0i@H=Q2VKmyhaxyMj2iF08a17H3%E*c#>i)=};rg7j6YA} zZ=a<5eQVt2;qaj!Cq(}7e*b&ow+}n`` zQX|BhsRphJ*0PUpO$S&M2HLPDIC!X0D%U|JoC8uq7c(|BoS-kFK+fEnd*8b2F?))N zn}^3#!f6*HliQD;q9OT(pHQ`Fh3Oa;su&i=1oQ6U`9oL2#7Hmhos|1`ziWO$@vKYP zq|xhW-V5RE7o7J)*L>j2P)x6C^Ne-5&vmCULDB+4N?;&<4?SuL#Q!2bI({0g3@`f? z_$C`&paEpb2;Da|Vj4#38wj2STy+!?%OR`@D}@UDsg}h>+cY^-?KrYCOk4RR8|UCN zl`3XCWU<9Xu!DE{Pt=Tw*NSVvV|oD?1Oj|Dl;(y8^JVWvFgP3W_i)f4E97SO`Ytlz z8YKH^S7ckBK6tvHbj0_xOF2Bk%tr=bI+Hap} z6MyV3Z0Pc+JYlgX-tu@gKVkdQP5>q6)EK9E<2U@AeL=p4Uas4IbxMef^<#*H`b>BF0sP4wyFTez%h-SUwVYl(Nu_(l^F7dOy5v>gvP;M}(Xpd`AQKRM7|F<_?&zFED1Njzif z@@;d*XxF+^Nh0~(R`svrCc;n~>V>5IvDQ=rrw~4m30gXh8O)}YrmYusV`8z8{Hz!3 zSekRp3)Lq!xr!kcb-D1g*Q^Z&5*&c4;ZQ2Crsl2fofH$AiSN7if5mTdh&@M#qAMcI z1Tc*-qG0(KnyM8az>rtr#Q{d+l*K`BI}8t6B#DGnzVM#X56K*GonJU!=1mg(UR(9~!zCCiAOc88N*+Y==@tGVv`Snz{*u-a+ z`!s3Axh>=f*NmHoLemagxFOsG=@y=0GDdPcj}2@Ml^Lj)%HH^t*%cbRXEzRJ@R($n zn>vHV8u*xf<}SjIUwvW7qBjvs>8at^)3bTHvkq|c4o+kehHBwwrdv6*E}UP1auz%F zZzZ>Z)Xus#rKJ+qOtJ!Wv;%NdQ!R63Q!Dmz=c$zRWxdb#@0g+Yonwtz>be+h9u_^T z(d1OzRYyMZZyYZ5J^JJ3pY~rPdxX1UQ8!SBhl_~gk!=_vQR;+{bPgE&tCUD6r5r|=V971 zww-T0l)itM{RH27#xWmE>Tt3CY`eW{+;fin%5!y|n@*BS<;9}6G1J+!jVVF&AV`rOg3NPUsoOIDf8^v=jxCnmoYp>;m<}UN2 zxwykrZFbR0gue`!JO)sQVelZsY=V_{21B$f9by$aT>p1IQ&KS4fvFr8;R)sd#QJyfg{{pO5kA$SV z2OUaS&i|0MOv2wTa7+?#7W**%O*fzp$3G{|buSxzvONCnXKlRG{%!6b&sJxi22XuUH^ zn_GTI%gS%gZnc&Ol8t3jR&!JDD0w<0AX7lKH99to#Z4O=5--JAzgf-|Tf5Hcd710_ zcv!T{Tz;Z^Iv|@H=<5soNy65~X^)rh3s3bwu>R@B&6keT3V zJH37Lh`HH~m!wRx+6|TkJ_ru!Qa{kpY99GPUY=?BsB>6-X-9O0=Qn?S>rMrg;mOW% zcm~!(k_dUojp1*B`kDfsm+Zbs&KoVZ5H0aJD!I#^Ng7!*%y#y5^(B3Rf|}npE%2dj zojaFTQD}W6K!W%BZrSp`C4-)_BHn!Vd$b^ANLFnC)8ZkgNfiwrxK*$qVOu} zjzTjy=BYAh7Cyc?U~#P7m+pTvXTelhRidO>`fgR>OP|^BVHH0rY0%c$UC=O>^Qi(G zJt)wtha~nBO+@+Pt@34k^M_5H+yt~z^u{W<;Y18KPWX8}GFILU4eDwy6sC^aKQfo!@@0e3JUgGF4K-Q9EeA%R) z(~{gIxxqA(6wSm3&e(hd1h^1A28Lsun=ngc$OVfEv9s0DD zh_?h=m35(SwYu7Epzhb~tNZU;i$yt;V0+V&>007+On%#7S^q7<+dsw&C=Tph>aBiN zZA48tekB_}xUV4Ky`e~=$TQOL-qccJXCJ?8M;m$f&aJO}CZ^iSb~62c`p*0Ef$}M` z%sV8PPkzb_=Yv8x8syP;FDeP_6-$Hw}z0>A08kNw4WOi{hnIQIx*nz9o-=X@zkWsm4*fw1HA?8IE@8iCu-;{txD3F-m z1`^ZKK?_)UlyWdRqQrW+(xv|1bKf&z_Ucn_TTE&c!qYEC^3}^`9J3KnB725c#J#ce<|vh zfm^$M#}zSd?XhK5Iv!?{wXk#Ul6|FoJSwAL{uS|R;K=zvY5H_^g`Zq;EybpTj8N@s zohakw*(|blpSyR`ohRZnLu5d*ILKcJEYY(0qb2Eq^yF212iA&xFj$n-2VstKR z{4k&>B)iZeR*WOSQh+Xv!bdT6zgvtpuzK9a;3PHJZqi7baX!7(v53~68})tac>)nq z`_*=jP9d-D5`He%Z&-K<-ACL&EpRE9nJ+;2NmQtZcd44c|T zwdWdmPuJP$DhXO2@@5Bo8ySAyQ0GyS)6;8GA{JMux>ylm=%P~}E;K;#9BR7pH5Pt^ zLDT|{VEBbc7~`S7Q0k%NAM@NB(4Gh8gbdf65@>+-k`X;--~mFiCEV@(k?&vLzy>W_lk6jVQ| z0%{!m+e|)v8Au{7@9-!5y=JwLM;=cEF)gulb}HpZ+Da3C{6)o3Q+(^@lxvs!w-Ho~ z75#?iYSQs6Sgs8DJa6{rM{xsxv=2k{V#c=6{(LH`^C%LM0fcPZ{;RCRV?PAj5QeJP zgJu+~ZvwG2>=Acsz9LYi2^U1f(;lj&N|FbrlT^Du)I!p+G!5g(&)ik=+~Qo0TS(

    mX>$Y}J+QY(WplIcMW9+$tV$?`rKHfC}jn0r_AqEC=tnS~ZSHV=ZZQ1M= zUTgpkujUx@fsGrtvDaDljWzbHE|Ft(lg*O!OPm?nR}W|esvx`+z|G%1H1R}Y40T@5 ziWo*)@<|Y1=SdvQ%e58JQwG{=jlNnV=qiw#YMnQ^?X#jghKif|jh=f(=-`E$1aDR0 z6VUU1F)(gLT*)v{eeWD&p*|qQW2D&SJ+&oGi*m*}0f2 zSVa=kh3}Qr5|Mu>+Nxun%;e(#***HiB}lpnZK@A*t^bZsKafL@wNj2iQ#a^{1kD)P z|MUm^ZiG+Ey7&2G*%|fq92+Ec2s>Z^N=L6}a!AV#l>M6PSo4Pd);1d?wy;o@C< zsCW>pe>2&wBSe(Wa=#Y0cD2qx$V~BTqrm>iba&vupFM%w z3Viv4cX@Q9Z5rr?He^G=m8IlB%>BgiS;#G399SIfy!cOOuiF%fTi#e2NzC*qpOMkz^g7 zz|}=Yu3*{a=jG^wXn~TDcqjWlv&OF0w8FTBYAc5?Jya40$#2+7^lr(sn9khz(B-N+ z__>5T0ceA>^1;iL(MeO1Smf~%tzgtP;jpadVSLld1tB64N94~;64n!#UAoQm!l#I> zu6)lq%(<7VgE&aqF4={{DQ&84=@w67S&F$ktIo*BW1}~N9O&rSQ*0{aw@EgphJN?S z+}=|@3*=wDl~XhaPKo<4zus5U5#l))&c*b#3u~|y7D>cWWNNlHJ@JHmJg)2T(-@zj zSXpwryj)KF%%LndH>40uO5*j4Q)o0-u)-4&>v~L!(cj}cD&EP{%SxrdRQfG3_s2Lo_RJ@aR?W-K zWY4A|O#Kj}@pn!i7D1)!t1AhGiQ65%4qMOHj)~0kSVI78*q6=U&i3zc7pq^=B%Vu% z*sLRWk;64XQrKZdIUeDCPO@2{Kl-MwUuW3`9df&qpd*aAVsb|JL}$FNjw|noDW++8 zy%QCN<_#)cxOAn#N$pe({tGhtv)_O%R(Lx?FG>zSoa!@qVIh`+b8xWH4J2k_XmSrb zf2IrOjo&v6t)d8%YY9kZ_(u#7OS$<4=0`GDLk^20#nj$JXW#Wv&(`2Wh+}U?Y8sbG zjuHwRrMW5(i7VfaVU<0}t zv%DQB0*glqZJ8Wx{UU-BZq6m$h3JHln?I<`>%$Cm{uhQl8EzJC-hm2cz}d`eFI1C{ zy)t>RUf$JdsXJGzgGeSzE-*j|lcBbNVx3xE&V0QlS#*SI(&PuyF*=w_h!4gCgziE7ZwzdlN z4I_d?#WjxX;KwhP$62fGv-#1+Hw(pd^5B1Er2JGTVC1YtI!_nfF-d*3z9>DF`TLC! zg5OU%JK{R`0DAR={>&K!(T=t*+B!OlOjga=bCDwPl90aCDr7&&07-e5_4!(}54Y$i zNKPhau7ic=1VH4Hi??A5w*}xq{@7|_nc zq<8*C@b@bFX`g+&5(XCtR$D~cVy}T?SEe~9f@Z)##q;SmSGyfuy6hgDTna(C2y}SE zTnK?k8|dp*+Gz{4rmVaI!tWPV^pgx~s#-G&kV(0Eo%u<01(2d9aP9GeZN#c-<%8)t znd#@F9bP9}LzDVsCEV7h^S7&v?%~HBtI$2$i7m7f{#p3ldF-bS8zY_mv=?c*5gIiP z$D-M;9aZw_ihD|d8pWaCN5cDta)QDWWStG3*EzK8#FZo670u-FO+B5Sp)8O_O>y}e zl6_e4eOdPdXX)d*4j!+saMdkQ57x5KY}P-eK!X0ZpRcO06K~!C+`Xdt>ybZ&S0#%& zbQlT?D#ERe7~ZF%oADwi4++;}T4+c~kmp_9|J*|6$2^Mtef!nq0Oz^yj~jLit#pnZ z-6Q6vzDzFF(7~xG!p^8OCc%to*OFSvtVFXk|SrM*Q^dZ$8G4>y#urzMR zsBDQAKg$a<+ZYcHSi7!&U)lLF@d^^AC8^tSHnDLtA#|vCy3)?MH{KAJnVI)MdHpj8_K_-1#oxkV>OHgR^OY_M|WI z7t!%8I|9a=3pbzJqFEiw2!_F#Lmg60Jcg});d#C$P*3A@v3A0bWD%}WI`)T<36#r| zpTTS~^Sk0(I>hJVzP)V|)rRDsfXHfED4Xzf;JFY^ezuzgnKqnJ{+oAM9ExL{2lvg( zoi7b-5QA7t_Nh^Q@CVizt42TlN5A{H$831Cx>y?~el{VS&3`Kv!V%^(=K?hIV4IkV zWhT#*2J*ksflIU1(Z#AyS#7R0qT=?}u_t#x)dt=3Qrq8vZ|>lQ&NwXxoZ=2jZweX& zD4NVLNjd0{*HdOEUvPyL?+d>GgU(DX~HoyX&f|a42)klIHfNpw$>Hw(je^mNJS=x3yaT$_S}cBK4mTL_mx(F zU)H*qCcl#%_Qpl5S}`@@Jad6t6Xz0JK1i-!77_qWNQtwdo?g>lec)wbW3`1kYsP)lyEfvxYYSl>-)3qg zLaSI>i^!2-iqeM82M6g5mru?Fi{{A&_{-h7Z)XJ>J;yu6>h(t`+Pmm%blzTT^K{wK z)cA7rnu?LAW^o@=w`tkN(6j3zvLj*&5!0uSi{ED(ju#-xyGoacp6h>pb9?JsH1tli z{cJ{`{Pq+E58_QU##+W+WtG^t96`v%b6FB1z%!y>L#eGJ+w5B55s;0@Dy_v#1Zt8z z4YXMI?bA}y*F4N>9z;f{*UU0t8_ zgKksqn$coek?_SGj7Oq=1WD2j{b{rFP!01D@RKiv_YJmX2{a~pZxe{9*(2C90#`a5 zu%gypE+Qe>Kzx8Prsu>)=Z0IOLo-w<%4LRIJlMlD5azpLc?Z4#p)1i!Ike3@na!$Q z$ks~yfy$n#`@VOPpTTXgxlc$RupB0)`d~|jFx`eZe3AoL<$|t`H{sBPn7q^(%}y0q zoR>J|Ld^A^uB3@?IojDu^dM|rN&LwQ0RPu%70WJl$L0L!NHMRH?P-CcfL+ZDNZ*5; zRfzq|_J@@zJk68e_as(6(>-EklyVqWx|4NWU0cvJ@Kj(vVY!IkBvmtKBT!}HW*1ar zIyF;OLkf>6KpNkLj{>>2u?RH59vcSC<l0g*RQ4P!qhv~M^a3IJ-9gOz%0 zE?}~z3B>*5Z)T-|)^`>nSCHxyKxtR1dUoSZq#-;vS zA$=YQ#jW@6b{@Bg7F+Kwqy)5Yh+nXd-Yh71bYq95vn_VdKfKhT>UHB>@-Uw{zi!u9 zYh$TU0y>o&76(^)>RE0q`rS!Y{#l3~E~pdsqt{XW&ZQ;8ZX%3`lx+(8E7Fm}Y~`2q zG!78GJQVw6~!5oAo|8@)W^{x$bMQ1ms+*Ni;`{zamgJ$)*y;lC$sNtZ4U&9X0uw-4xND&R>p+oO}3XP;SuUTx@ zQj!vdk-7EZPPI`{;9w(_n2}&|o&0vhagLqB>wQ!gW{shXknz=uNOhUBW@(w=dTlx7 z@d*QQoq}I}0d91UFucnk6J4kP;hh&yv{k3{_Ktz2xim#10SY2uJ%pKjt}4GI#W`eH z-P`rO&Y*`E*|?TP#TR4qiOP^PZmRKohridbvfuf^-Ia`uWKzn;+M}qAjWUmZ~$J!>4HuPLk&~@$CMgE?8odEc?^TVZm0F8z? zG}8LoPuuuEd@W-Nv=fF4gCf65C;>xZlvvNL_)7-t0N;xqTy!)z9+%5$b1G?K|0usu zyI*u{!8|2(9BY&_ALVBL;0<98%p4eu*Db(c>LPxr=~xNi*jBIz4$1~O{Q|6H~xEo2Zz{%SIm#p*Lje6 zi#nXp*H*3ioLdc-!u~EJl46mjYf}?>#XJFi4lxeSy(ekzJy_+0pF;wpR&b^K=B!F< zLD5#ZtEmjA3vrXSQRO`ZZR(DRnE3@zt&_jU!`Hz0|K% z{g3oXGl_Et!pK36motk%i-*w1(NFMaVLJ3nZK2Pzi=>q|zVtvDzPL{!ct6v$VwA|F zD`6-pd>i;90e}83fW%yrc-8w(tAckTY9uk>9*beT2}-+B)^a|4YE*mMp}J+7#cYaH z&ZelEo3yy}F&6<34`DUI*M*8d@0r2Gp#9{)grtw<9-j0O0(ZM$0ikDgpa#q}rP0w) z;q`tNzMlHc^$be5I+Ep=b&!%aVbV3B}` zcn+jU&X}0bm7ZB1OooXptj50tr$BVi{tVbPLIs}?UE^y6zhQU5wf0wU4C!~-RuI{? z{h4ll5cx%>tlN}F+otJJ;r9>ov8tt&#Pur2!&9Wbl$C*wBY0ArEvVo4L#=m8uaH<` zr;po~Q27aMB|Z!^nD?hkpUtPz(;W+9HOc6tyX5I<=y$a<`25t2Z;N2M6fdGdzE6$v zH(A?+C4U-g?Y+pC(AqFSIGKvOXvld5(xF@V|%!rpdKc>^rVTU$)NHb@S78nXI zh}toR3f>-y=$%KG10q8at^wyVn@vBxvz{(gOV_HA^JUVG6%3dDYDQtmRwFGn&yQce zdG}j=e@t79EE1T$qNa#Jnjut8ou`84lb%gMe0jNF?*`eKg_fOn+)xthZ}MlA5Q3(Runh>O+TOCc3XIm9XG_x`v^ zXoI@8n(3OG=iH&|jDqDI#v2MHvM+z9MzA;4ToISg%`2DXT3Ku+mU(}UNRaiVPRsFz znB`5VRh+~PvNfg2R~qPVESqfeR!C!&lD z9h4rA0n>lYl!!+!q!o$c(4@44xp{FA=e4Yv@DA^Jcnc{~Lt-L4-$dlzx>#&TyaeOi ztaSjE8te0d+T0K%=^n~K9QCVj`H%D1y z3R18(yDtjgT~XfbQt-TxV#}qb%5p!lkQ!craMo{mk`PIsPr&zTp&)Y!N?wqU^ zIO_81`3*8lJ|MI1(+ZF3d*Fh!w3o9gEpUTCg8&yvW8ckRKboiNS#yjZwttuT;XUQT z4pb8TvfVa2(CLr^g1s}Kko(lo9;)$;s<##M-jdDD za_O&*S_OG2IL|Z^o3?j9l6T0y{R+82j)nBT9Nl;`BpZhGe-T!kpWhLAK-n}tDy;HG zr?h#%(FfJV^(Ld7|9rG;)#lgN!Pv96cI>ro0UwP~5()$tBheVY=8KPt6od8d=V*Z;{C5=DVA@4j1~1JbMZ z_Sy>p670E^V!1_FWRNUlkdpz38<;)}1(VB|*y6`0JV7Wnm(W5PSgXlZTskob(>wnjlDNvMQt4 z>UFU~qjy&^@IYer}!>Qh3b+&{MMyoGDx9q;C$A;p$g`q~t0*NU(! zOK+`>%C;)ZccxT>U+ca|v|Dw~3>;%I-(Q2FMEU~rOHGZZh)Tk6?Qx`oXg0;Tajo0Z zeM8q3g-Bus+vXBkZ-z!IU2fejOL6~$-K;FabVDD@w7gQ&ne2Xol(NEJA zt_4QXn}*#v0tjZzFh&6W)kk`)aGMi&9c??l`#QC*z#(5PRuLV9f7so zmO<4S9_^6A)ML;2n+`I>F-$eM`^oOGYjbPhz9`w!Mq%rmp+&m6p48-TJ#l5$Q&e3( z^46uW)9SxbTo;*n=)wQ1fSBk#HvOtZRBrofcG+on^k@mq>zYzdn1@o7?skFk%^Ar0IXF+?AoX(zlG7bp`oA+JK9X zOp)+8kiMIcGdUk9BH^;Ykc-FkWm-WNEkSxkOPGz6SgcD@5bG%+%{8QEd#Q<|g2H>Q z`Aq(X?qG#d!Ux6QH8p}5ic&7ADAe+|~4nH-s_hOFK~f#3`5CF$1!p+x8N z-dXA?>-ZvZX^_QBRY2tTlautD%|}Qlp2%;%Cp7+?8UK5^yhZESQ!Ug|>qrtOut|{f zDy0#tAWNOdwUF=6noS%Pt&qsFi;|KG@IqMxxnbOpR?YN}Y<1jLt3IsJ@0y4|#<_!FG%VT=W?{6!n-dv*yA=xR)x`9yr+|YxA{h$It~idYmsjbP;p*4;B8iB zeV{rC4iyQ6bn*s-GPQiW8bPWH)}NSLMV$*6rq|3ON{cg*!P-PYS&PHY^@ctf;nu;o zNbO*w( z#=pFbZ@L-=DzBQlQlZW7yI%ninENa^FVpnjoEL#^Zra-zX22}QPnRB1EB|nQ>pwxw z>XZ>fQ`d(--0$zZx4!S^4feIh^uG6KTaHF_Y)NyK9!3%mM%j6of>l^S_b~lR##*wK zQ47?u`_)Tv0PKXaxM`X=xA~ zLQZ9{c3x_nxiOrA^B=iB_fnhBUzWw{=%jn9oKCslRrjsm%p@{UcD~3ij zg%{)4#uTJf-SqqXg1+N%iO&6Gz;C1eGw}}=a~&c%O>d2n!?q1Y*}lGZ-J!IP&j8?; zGqE6fN`o<=Yi%Ec@~O`HqM6^Z(?J}GNGR+g<*9eo#;5ijW4jxVx2nWF9ZBx7B6rop zz!RZ?Lo9uJw+qG(t!}f~CDm#d8IIH22zTf=5`g3U+9#pIqs3`Gk15ui9jt|KFxhX@ z?jWWeWYoA@;eP%Pq~~+t!Ta39XZ~E&YkOj^&AU?TvsgFngD=0Qo<6GHwb{6OulsFa z#$VXJl8Gsa`x94jchr__UnLz}tvkYC41U-zgzZ}O?{JFZMk_5JD%d?M82H-GS-kU>u)J+T75WidoqBKI`1kDsehQ(U3ETeVGE!Rb>0VjC}*^UGUeDL>oEdsG{JU zpzG?*rIxKWxEJrg7Aw9dDRjrblRl&H=?yjZe`;T@!0KGrd5Z4F`+NJm`}pb*#!?$6 zkdZLCI%nHlR|@E-Qm&uP;xa1zjIet7$^alrNMk00u2ZYqb${ZM< z%+eN?ggeb1C*dS=>urx4fGg#cy|!U8_zk{MToK^0)k2kPA`L1meJ1ejD_wZ_vp)SZ zd=;?PQ^oTrx?mBWvMDk^7z1=tyiKT&($}gU7KS1 z$|7mSn019I))gI;cZ$4ikMK%AmnJLpX+rQDCK=W(R!k4-NTgHq4|I=j!bqsS{ zz~A!@ywRWZpR#a^5Q2z0V;G&H(WZTC z1#?tW+|+O!rv|Kw-r;9$7>kl>gL9?lI-3%m*vBp|r9odiMj{wGgAu+@dt<}|#LD?bC+Wk%e# zD$-f4FK_c`udti&WO^oWoK218ct zr(lK}3*s6ZjGiDksp}}b8i-^t!p$kjoOFn~G1IW;l zy$h+tGHrzlTrc+cD!2ZFkL0+hUdX@UqqYFy>mpg2CLJiq79xxNR!&aMqTVddX} zRr8U1MYsO7w_zhVQ-a}kw;SeR-{g_-Td_>DeVFI+np$0e3e8Ukousb#^N16?0}P-4 zwL;zNz1e__gb6-PeU4v|q@Q8IplZoZ9hPTo1=(9_d$cw;`9M88awR5E<83N9AOLt^ z*8}P5+v-)v^XWluPjufZG_t_A?R=)~c-V?!`cf#&irA1UrWmefL@Tb-896!%XwDI7 zHb1zi8W&SwT#W?AwbR43caoDQfz-;2WXd<32Sd(UWihmqISP43Bb%zOIbtz=1dt>T zZq?Im5~q}YHr~ow?jK4b?QO|0aioBp$IxZvPA4#vgN zRkHBG_Ul4LS%1dwxV!yvoLYJ+l*DAewO7$gJW=%nk-($WnhaUR!xy?X-z434uQk1C z*0riiY8p1$IYsYlTJ~(~$=%!Tpb+ZG9|b8m(q>wv+G9wB6Z%l zuN6~>gTP6>zKj~lAJ6aP+t|>xYqm!A#C87F%S@`?8Ylwh_@93?O&FUJ1Z#V+)Jyke zVt3jM*Pg`;DY5%Pi^t$bO&QTLJO2KHQ#*(kj!e@VPb#9QtQ z7=_I^m^hJjvAe~1J`fn9`Ls*+*f|PamXSeIUJs%xib%wPOjEtcV|@+XqU z+mZ0?8e@F?KQ?QBH4*HIq{JOk!++&?X0kBJC7QL-#Oe8LuFIwk#LmC$mGZXT3#M#3FKiN}T%8a)e&R5sIqKpX>s+##jDslx#IMgq ze1*SX&}#81bAMdyimIN;Y@C2Tn{ypg0@-&4(&!nstltI)YO^hL(6w5T*-yz}pZ@1# zfST{MQS@k2TX(`f(k)&B}pAyUoWs0rSXc3+S0 zgh4ho6&bX6AVkaj;49>1inAJsfCZ62tbHTfPwvV$NnRL3(q855Nk%AgM{^Ico6djS z2B^jPidY7XY=ZJ&4Bb`m2I*RPvFC7uoCy#jzu+!wH`C zRpJFI&DTO|VMBd$)Bl@+$1zyF{tn-Aqc2^;atEXEZT))efyKIG3MnMzvI`cfu0L z_BBQ3{+se@IXseK?yhAfm;8PsX(+jb-|Hgis2zJ9tGw+_dzaq}v^p5D@6*~hO0sct z)OF02gO`oQx(sR0-EZ$v;Uaz|Lo@gPks)#>#zT}v`<=TB#1E#B)@wybYSy4xIfm@k zo8DjV?D_xp1wrf!8s(k*#P-nR+2@h=HL0?x5v6OBgJ43PGG;r*uRA=enwOZ6kg!Ty z9<@VrDmBi&tqRs2)m_SU>DD4%H1EWPZj5sI*q`t33O4(n7XdGQXkrbms+Vjh(?m9z zG-s*lX%3p?rena*GL6OAKVluH8y^540A%(;f-oj%sG=NJ5UZ zIh^(JlF9{e40}q<;jTbveH2v8R8d-UK@=Kd^{sO`I&rBwe%KcY7e3a_?o`Lm<36?P z-Gm?pIY(YnZ*Qrp%@>rW3-;(}N)NQZH(L_(e#9>wx1W@dhR-_Q{eA{G7>(B_%D~}Y zFe?S=Ul@>DBvbcmbo)ZNu6X&aK*ln+{HnT;04G+ewT1{liS+21pnk$R(hXF5Kr|(E zuA8>n>eEEb9x3Hf7oh>m2eU4-*~_>Ay{9Opg~sLYB0c|o$qIcBKVuH>e!#=9c^<1ke$TN~8`2exJxeR@%qBUkr4>Lh!6gR@=Z&(Ye+)}?1P7hJm1ahI{St)O&Vr> z2x?|*vN5nj{7TAAwn6xK9H!v?996Px>O1(9#1wH5V3eTXNg-W99B!js8;O*am?ZNX z39hkAK1;#4>N3axPgW)-R!GI)aXY|C+bY=gXS7lrj;QJ$PDlvoF4$auHL}r$!Cbrk zONY|Z@?1fu4Ldid^S44D2JZQ4k+N79kAYX*63k0BfVDc zz3Hr7P-_h0WWxzCSwr@huuvS%MZs|5Cy=Cdc@!-_+>7PFJPUVb7o|C=I_y z`~%I^$oRFoz07ai!Fr%ThD*NRvZVv?FIRT%nxFD?quQ@_T4oj|BZ9S>{acdn$@B&9=N>c&rYNH59GN?e(8 z9T7=urD)be{sIU~||~*eTr_cWU9RX4{Aq z9ErW8mRBTXAbWl{Mmh?1j1*XWDAFsryRQW(SE@%|z~B5GTlH=BJ0p@ln$sEKT+ zNjRpV`{>6q;r7yf^HRHd+}K1RZ;@%HgZS<%FiR}^vFMvW^ErQXxOUJNH<61ek)SXAIt!=X znh*LZND+iF`aaTIEmxB<$=jZFb?B6{`EI<6QN!oruRbfsJ~2yt_^?gRRHq7QLXMGb zT`Z};Xhz}<>Y~oF{2T_y@B%V&b}duhDDKDA7*G%^YGo&@x%k0ax&rCRGO65nDz)f1-BHCp zIR58FY^_mUcYUc~YE5lR8Dn@Cw?0oSAKZ&o3Z0gt>|$m7K9lrz@tL0nk`DW#WL=0@ zgs{pYjtRHA0MG;hlWT4pe5%kXzu+iZkCDhLox5<)6*4?o<#CbE$7LX!nVR2a^9Z*)wL3r_@v9l3#Yl(^64la!&--EIpZ3Juhae@?r~0nI zUB*u8`lW{O=I;7jJcOhMvJ*U|=py1m(>;3c-4(k+i{1igu|Z@jV^pRu@zjHHws-u` z4?{fB!lH$tDd969Qqp8Ylz;|Fu>$J+{o$`!^sSx$`>zrk%W5|<`mv){q#Af_Gt7W**ca> zDJ7yQ1xB%dV(_GS=n&f*p540FATV-S8Vl+sJpY$OQh;sursdNOid%R=_=n_*Kv0-F zBKgG_?yo&SQvSCcz3n$NlYSTQbGhE~@6(XM)}?A zq$T6?+ug{a-pQ!>Y?FRW*(BWnByDbnoz9u)3m@wWjIOpczdZw}Fu?>8CQu*fV~;F) zgby`$p~p9USWLh8GuM~crR&Y=&^1Y zPFu~++}3{9h$8>+5ONL_qMQ{qa3o$8b8fZ1Q1qyrY|(hKMv@xzyR|*;4bgvO`J!hB zrzR_%S<-7u5H^TS<)i-XxEU#cGY$3T6HF#?o8EO1zIe11=Tzy?3>D~jmt(c^V)&*)Aw)?>Z z3NhDw>s|X4Km;gPa~L^mZQJOkY~Eq5l&YZF>piq*cFhZAF;T=31<>jFoyg`GaxWUC zwuj-$@*A%Zydbl8f?Qke0MF9}VJo?86Y!;K&LqsE)@@$BYqfLi&6r#;kr)Bq!3e`Z z3jT(Frh+?FMcLMPSLMV5-U_HN>B}t)E;qi3CF3~W+1;&D#b~oR^@j#Sc)TouBQBm?R{G|b!nYxmD--YCf{cnV@NQew?uxVfV3caXzd-m{&8ci&*QCIcx()sY=(eV!W1HCkfbs` z=hjM6+`y5VovF5yW3o)pm?sE;&in~Wct}Jvk@6QM=KwzfQ6kS%)>@%8V?kh~H12+{ zisyV$RszJNiUa^K^LT}=c}EAAxHeZIgaKjYM&)8wkH!RnN8bHvKCe98{U4AqK?5Yc zk0|*`5-Ah!JDZr@RZZMg-OQ&3F(23rL5sgOD8|l6iO7YFznG;TW>TfOv;-r_=`K3< z$_>)nV35XszLzDiKiC8k9&?2CER*(Fg=+kan&1zJ8t0e$;@X+TCxB_NJN zcW*Gu`1JXlj6|B`?=*?o)=YBh8g0ioZav|l=IY-6jJX{sn1@}Atv$Ew&9l>9u8%EV+P&$F|1iS!gbyCWS zq6XMxmq)hHO&3ua-;2rQR2WXrPOAWD$CF zMTYQ|>-R{K$6FPY4dmO5U7&hF1#%@~+MuhFBQt_%0;yw=EA0xrc3GUOecwyE7*3DE znlIei-;sXCv04Qbr;KI^NBlrtbMcEtny$ZR!0#x{^ox zv$r<1?@p|MRRW?`#O1agq58UF4)m_LJ=HrRkt?gC!lb~$v1^nLc{z71rpR@TG&@AHr1(?}hMim~n{<4Ghw60)B z=%_tzkAMzFThjLcMqEm(al?om4@8CPZ%|xM)CU*NxRIl)8*M#zWfGm z(X7xY>a(1uJmW^xnf>hwm87|4xoTrn14LE0TO+F@|AU#Yzfl)D7U@u^N=Xeq=vt{4 zT-{*TCP*jN5DR}-{b4YGGfvG*xNh5 zLIs`I731o)Y0F+8b6Y6;j5w3`GeEi)83d3#MP+DNNAC`rKZ`~iw!K_F*c&< zmZudO?Xp}qv6Xj6(2O@oMrB+^aT$&vBg)sILqU!=c>Hhe$0KPzaH`+fS;Y|y&3ajD zzMpfUpQe{nNIjf66HDf8J1-XNPg|ji{C&){=jHi8{Au&W7b>qP4>Z;Bk3**~cu4<# zgLrD@0d8xdX&LN)mT#y|Zi$Cwc*Nlp|KZnwtX9^ZB&ua*EICZn6SQ-`8w7ZzVFMa{ zOg5Vu8<(pXQxIb2cnJ(xV2sST^RqLCMt>h!{*&69B9u6x{TyWD2(6( z9yz6>0+SPz<-~;(;}sLgl+1xB7R7F&I$5{OrTGX>YaZ#e{OJb<;px4_OgbS5QKOfU zv^w4=FJHxdf<7k~XP4*}KbjNm%9ND2RVQ?Hcpff_U`j;CHnDSUFBGEwP!^wM_6$Zi zj8j8-hRP||c;_HJh$hYto#&=ga+|FmFnl9dlF^NtR6GF}*i-UjAmD>5qs zz~@~Wx&kld6zru+>Cunssqnw6W=CAF$j%~^de%;+-`q4A1Wmu8Ik}7VtZKKgpz=?f z{)9RDK8BANA;Aw^2dtFBYl~0>SEM_siqB%%vOWAbe zZmFxyhc9{&o2qv=#z4rlP~Q&mZMrd#l~RhPHWEvjt=5HHX^S%XPAvy<|793mp|_X# zu7(!2=qC~=a2E3J^2vH0X$}V@#R9-jdQO}37Yib{W>vmfsY%OlNml9fLk7Y#0b$$e zDidtK;sS0@_J)8)yCQzV8Y6Y1d6f#aYy6&!QDsrSLc40|ygv|B_8G(tkC0lsRW16w z#QB0)Ze!E?_MY`HS)X`1eUeq3Z-*7D(Qdil&^;a{U?I+}I(PQkxNBZ+r@LJthu5qd z!U#UTBhLJZ9g+2)shPuqT`Ih8G@lvT8(kAUXy7BH~ z>7tGzj96J*DH$Qjy70a9(?XAueLJ!)`C(YOqFNeu1Dwq%_~*z!-B%0&JC#z(S}&-N zoH1mfsFXv#H{D1|T+qQ0V0^Q)-kz(3;(`%{f-+MU+I>dx6AnbQ6gi+F8)3Oe9lue45aTo#-)F0VfMb%fxDTIOipB|p& z%+u#V)k4Wlh?k}mtKWB`r%b+dghfbln~nukp2>3`_e&AKpmO~EYy1;D%6|Ch*u9&W z?r8%J-*L-C;I^bCenRS|M`R7Bkq)y}2n@fcU!HJ}TQc+K0E!6~5Tvl~ef{;6qo~3; zB;B5jiWW!g^Kplt=VuU$qjuJxmH(#&#X#L#_ zfK8|!M2!MDo@j+`AgO+6lMREx<%HMSFM_W(10r}ky zwnCzz;xf|lukNa!Jdm_@d|A{N^DKldMO9c5y!4DYqdGfugPjv3@#5kKmm6^M$rF8X z9l;hg-j zeW(bP*tjAZDMGv=@S&o&a>dMqXcyed%73f@Kz^9sUyD97(qjn^6xxUH?U!mW3 zrXo<@Dd_qk92Kk_xY#-T$9Q+e$UwZ#*jd}rw(SzA*=Ib{M6Mn0s5h++W?_p&gCU|V zquS=-e8x#h`eBO1)HooxW`e<~6*7jC^T{opOvInT4kUAs*#C05HsuAl8?o~XS+?sC zA8sZPld4kgf7U+Z+gOF~Cf4WLjUMGc#ALZk4P#1hz%>Lnjn`6yMKU>r?)r>+sjKAQ z2{i41B@Hh}Z4_r3(96u`$O+BAU`mPAnipG&0Sd@?3~XE8*z7kP)Nltwh&**O!1TM8 zsE}NiBgp;fa%7i}U8*f(@h-5IpYhcFzfaB4CNWUxUgqO66bo4Ic-jLi#q=6#;qmqS z&`!o=&}@z|uGE_v!r|#(7{pT4q7NduHA+v489uimGvyMHdG;%%@6gJy7}Y3eE{JT1 z0r>Qn0b8hfT&Knajypqao1%MWe7JYEGiAn+o1`DtJFTI~z7YwP!EH8zZt)|MsQV%@ zM;!iM%m?lIPkcSp3mQOGGfo8yrELgsxODb4;D48U6GQU@ucrU!P4479vl}qO@sfx<3G*w6jGw&?8Ai1R8YLo zyG6XdoxwA`X!z&9W_(>1u)io|Sxg(ymJuW$+|zkI;Ho-qT-}Eq3#n^Es_>S-1j(em zV_DO%+a%Ukld4VsPRZLTVC{)?*2?(2Zy@cD~S*Pwxh&zhE@}Z4A>P2+e=cCih!G?#LrFi9$T;80N zZ{djP6oAC!gA7e7FZm68s8^x88W_VU5PRxkCCVop(TSmfwjHA8LRyAaCMhW%9#A$2 zhxj>RCOSzi?V#)`6_o<3sFGB+>Sa8{{k*H&SjAJ;!5jetE8EcZkOI|XDe^o)fhg#f z_{IV~jb7$313D!_2yK7YOeJ9OAE*rqgB}`$&37$>!QLu@Fv47_{B$49=#61xW0Ub{ zpb`?%DQ_b)o~XMPQ2(imW&4R$r_WerW9N>RM@3lm=j5>ly@ha66AwS!wTo~C&UDJA z){frDkJ&=kUPIa3c9Gs(d`_mfLn`h7MD=hu)W#S8-jL-Dg@0T}qs;1AT&;V87xaD# zFF1Dn4~-)MP&eXCG?)p4kCurs&ub49C27K^Lx2cq23NKd@nyS$t{BbrCxWG{JduU< z45hGWVi2B}v}19b0o2~H3+e`i>b`JZ2$YlOAL?$WzclX8i&S85mXG8hZ}tg{?DVgO zzu9zX&QQpb$s_1&A7P8-vl86ax5FZM97{>gPgoTO%VqK~h|xMf!4K+at6^xbmn?s2 zFh?7|KSg1=b>SyynMj2{6Lzzzcd;5rP1Tms+2b)iT}R(dNoVn6E~Z~V)ALBV5K=xP z6Hk=kz%2Z=``I|!VeDfCaHy$g%6M^0=nMeC-W{ zy&Jr>1@?iu+eBySD^Xq`EI$=rY{7iOeB)UyryyY`Y2P-^0?|#V&auox{o=lGf=X^9 zGC+_|rNVBq2mHyi^I@7Dn!i%BYdpH{^Q~z5PzNv`KJ%<4v?~P ztXniXE_$ZbKFs9}Z(sx8X&dlbBqY?}c~am=ps|~(&Zs@>soPh+0JPs5694<7ZmyZ~Qz229$pWD*$u_Z+U3ZYrBi-Ei3R`TPdQOxXFoid|5IQse#>Ll;N~{ z(XL!)5L?Cv$)Rg)!wCi1wRzs%OM&;720PEEZvsUm9u&%phT8nyR6%Y(;NzMPEe;cp zb|%VofR{L`_Wvp%ipc=U;2&C{vzV4K^d_5_o~VmFlAb#a`{(2?Lt8Wn*^%Nffe{M_G#96Pts_%CpS(7?k=vr{)#fH*Hwflr~`ZNy`Mh zT1{5JD<6XEfEV!8P+l@=x^*pw@0FXxCleUkr?v0y8@cT)M3kVL0w(dV9r8PPn68Q` zR5wmp_J=pkINO@{R(kI0yw_f>>r$zEl$+Kuaf)j}HkX0Xr4<)^m)^v_naDv5@ z{WB|=#<|KH`Gk=#z+Qw0b>@KWdq{EwAjbQK{eoP-P^gm9cV%3tiNZ|!pZDm}{=Z`X zY1KUM;NchzZ^T;}>DWYJP+)~w)F`WISD5H~g!fLP!#}ol!=BqEUsROBMdj%)TZA?~ z>eK;NZhx$Ag=y$RaTq! z!&RaYPBLZ=*<;v4ASH9t{n=E2^Spzb-ek`yo73ExzG%q~p9hzIVwG{JoMJ7=;jHO4_jU>qwoQ^TDq(YPCDI3B&(Xt>{J ze!*OI=6{5r{TuY3&bgm1=DSC+3WcLf(hwq&l~mo^xQQU;4-~wP93D5akm=sU9dg7G{VaDXW$xny8{d##!>jQ<5INbmH2ZJV+sV zu7#OQ8kz27vV{0gvmowjqSLt=pOf`1=+@xE5LJ}ft+*ACvu<`bx-@NLsnB-uJG^qQo6SA_;1w_5vLe^0cY%@&{6C%@!@@< z*H^IdiAEn7Vuu*3g=aSNLaIFqL?YGy{UJUD+sx~a-8@=n)5h41MRvI_d6If#xpsv? zxF<=hz&{;^L32$DS*KOZeN-G|7+;simkmyVZn-Zi$zYP+^SM-l=a}lx$NdtU+xlGm z=m@!KY~keekB@|sZVgBzvTPJq^j+$fGK8F@R*ty>$E2VP!#tkU-xyl}{={gIUJI4! zsGV?nHpm-M3ccwMPAG*DfCq1X@MPxgm>BrbwfjD8ZMM%R101Ib1ZSGwbul~c65jfd zf|ml+f(h8|*!AEIga;9zv_)(DYhiZfFV|htOtW4rIn#~*UK2#1sI*f`StgAA*Z|k#B{33BoeTAlTXn_(VBt5mQIR!Ys4V!la{cAwv*)d@;i#-|@J?W{ z?!~$^N6CYzwrlM3)-cyWcwG1|OX}hwZ&$XL8?%G6W8k!ExFY%uos9>qpC{SfE_-^d zJ+>@udhyx+_X1db32e|eJy%2_e;maKLvNytT$Tb28$@vZL}gJ|O0p4YI1~wq6YR|+ z;}nE=&9`_|_qMVwhk0SVNzFJDVS(9p?aVk>`x(uk)7bqt6N#fk0SOJ#u?&OCtEcIV zvJ`oBmE^n<8piCI)gz&+I8+Qs;UX-Gws3UqI>KYqh(yYMjDXf~6oRJ+o^Xz}RXC`7 zQAEXNoDa-46f!}<5iws0t#Rz=y)gHEcGG2HtVE-~bL~nu-Uv?xCU=)-bHL88KI307 zZLWVu?tw^0m7@N^A>ta#ga-oPJGRJ+)vK;hvs_Q%U*41)5fhMh*6@kgwKG?qi;64A z)`~NB8w(LqWTOtpc^iP2S9F`mEWU4SpEcbN4obT#qhePY4~%3DgNLnEW|Os#;ZHD$ zdh|;D0oW0r>9v6a=;}+cl3DTmQpV>E@5d?Rq=OWRl2kT7zLsY&P@sp@W;vg0+(UWl z$a5ywmmme4?gNhnUt>}iuUCL3fZmSs$KyGoZNNGgoW_uf{=FkzTE%2F9W3W=;II+G zJXh_BYs1JF`#aRd@c9=9UP7l6=I7(I^bNx`mf#3x_mw?=lzeZ`931|SAxwvdYyL?B z4lvUheQHq(z)#74mkoadsp*?+@9yms)%XTPo8=GU)(pFxKNudX6Q-((9Mmiv4_ciz zO!&Z9EzcQ$adbog%0&&!2SH|A()7Yk+!ic;*3K(oY^AKPB0b>V>p?56Fis$3eOJ5F z;G8Av&}fun0*KtrCNbL#6Q#45Mew3TFr&NNaZl%>Eu+U2K<0rQrKltlF~F6ZaIf{^ zXdtvhbXplc9(K(1DWY$4$V)4SH0uB415W97xAy<&+;*tH?;;9nDCt%(V|gLeFlxjk z8{J59DtNe(DKlq_hd z4Sd!1Q^3wVE55k@ExS!@d=t)zQWSHqsy79See!?(oquu;8t;F zVH8PE{#fn{)sEX5l+1>FLy4M}3BTGnJwz9aKq2ENN6FmtOs|txGyBa$Dl!1HDBAL6 z-3jM(0adBS)=#J(L?al++2OxebGWcyLL>bSK*s5N&OYZn(kxNw-v^_<1vYNL9!2v zopH_@_;b9sOl=ySw7!(|1Qoab%@{{h)nDbuW}zXIS0m;67w6H!hqV%>NVKo$^QRYHU~gJ-CRckcqcv+?m*Tk^EgEf+e^ZTR+y+TMNT{6Ds{3}HK5t#$bqOA&BWujW~u?m!aU7UfyA?Sj~^ z2S!M+fc;QTxb!o^yAQ)!@7&M(*!on7m(utnZ|piikqHeLQf#cod0k;#l0W|#-=v&y zt-x#4v6c^sFo)9XR1EZs#>j#$3Mxz~@z$@VNYN>+gIaE@)*)S>x}U$D3__$_e`)tF zjN+BdChfqh>bA9bX7tO#W_!kPGW?8(k5EFQeZiIy4XBi={QsWd=QmE**AtXHtfkZK z%NExMxDI?IwpgihQ!lnj9TFMU-N$BLdfN8B(<+TvH;7Q2e7VbF_c5W9CrIF`LlAxn zt44uuqMP21084Kanr4Zmw;Jnz>mZw{+X+wT6PULRem!zH`J|58`U2aQ7sELrR=?SD zxbVSm3i1y>mS5Wd6#W4uQ{~JI(a=R&gLllpQlbhQUsx-BPXOds$6#R)p-bOUvtws) z)73OQcxiS6ffOJ)L*hE_KUoVa(AkfQpn_UPCpi{jl2P~HbU!iBCYoe`3-Y69I|oT?XrK+}Mh{Y%Lel`z6QOLY zoA^I`(MI$=q}CE;QqT8wM2yt3z+6YcDh?a){Gc_82Of|8Z{Mn)=FcWuACM_tkSxe{ z-scg*uEmmb0W>nz)+XD}A`ku0vD*L-|bxtkvPD8kKV+9upLi5b9;rjsErIfeNP z>NnHgQ+buhj4RK92Rf_#Y6Y3e478hY9y#ZIvzQ=XB=ytuqpm1g_~d$4-vzOcz8(r1 zdqA<0b#%49Co% z)NG8RYFDrLQ#q4&24DJ2zlqW#92%dl>Xs9MMwva(X1r4XYSZaWqKqUCK-f27$>;ym z21$qzYB@<)eWG60oLOIMn-I-Q20D`0SZ&^03cC{~2C?;=-qS}ZMihU}V1O0nTlIb0Q)g$Q1?9__lvahqfA@sJsRub1*+dh?N(}6QMq9! z%`halU;g{Z98kj$YAp4I8aM+q{0y8BVTqhtUyqt)X?4{1M}nzsISWFBu=H< zqm;(AzPjGY?L$&+$A`#!%~mNk*}myNH}e9mm~PM4sU08S)V{l$TQ7ZFe|nY^PbhdK z6)F%#Vj1Xu)~nW_-0ARmsor&Os-(EhWHeQ6Hb1^3P+Osz&=1$*IYt)Hq7l#@Kv~A| z$+HkshfQB6HjNtG(0dJ@Trh(O0bGMJv&b<~gNNrvz6<$2bOcuhF;7shG#2W-KViLo z`M)TF;{{{fsL_>eRo%&0Nosf!8M`Yp)pX5FG8>cbkl}pv%{zCPlaki`81mEI5)IFY zI;AMy5okFtRpilTy&J?a9QS*9ex3N7`VRTI@NpMqM-hhFxsWhC&MWL8Mp5;0e@1aR zYpbqAM#IyUM^p6yiGedaP*@NF9f;N89rAR=tK$mMCpR;GT*fAg66IlpJwJwB3^V#r zBoz(p(3_qd)C)&w^79pq1rG`P$7&FXEKkG3>vXr$Fr!Dt-;|z6^~4$84S)FkX$`Sa zjzx>-5Vi`s|JMjnjJx6qIa|7u8LZw(2lW9SBD=;2ISf7v!pc+up` zvR>`*e>}ZYU|n6;Hr%AKZD+@}ZQHhO+uku6+g4+vY0SoM(in~N?>_hY{Riu89<8Y{ zFAe1l7;B}TK-?r#BUPd&i5{;l+uFc0;@2xqFi{~iLI?v`&V)gFhgME5 zJ~3O6kR#PK)Eu(iZ>Iv)mmUxL)4G)bu|`kN`M9Yd*vd3V;HIZEmP#&Kn@l{A_}_a6 zztMRz5f@X~@vtVp8TPJ;|Az59YEF|On=K<6Zp*@UJtFsw8Zo$nNA3RM1(FpeB~_je z(WB3*2oQ-vuhy62GDo6c!AF%(Cs=dNA!#!Kkm>)Xk42pK$^c{ zP&Xsx!{SIxr@ZCz-xzB$6xMr5euPR{n7N(Rxb_ob$<^C3n1naI{*1-ox%hAfo`p!@ zPw7c1w|K~2r!j`8_Vf_?C|b81q!*abvyGnc7zZt5QuhrO;^CKNyLeb8t2*;|gVD_N zXXZ%a%Bzte|66$O+tb;8il&ja1B`o2wcxNte7yuCa{iZr9hVD=ou&Hfsk~vOHrWaQOpN@16mGppeJoyiXHb;pTATTgkeM(JP z*W0_a5an*z}xwtF&A2c7C7+kIv9vue3YvhLog8Cp#jFNn9uI2dDbmjTW zVFq;eD!NFfHZ#)XCMRRWEQ(6Nh6ODzT8YaU3sG2hq|D;kQzb*ca0UG(dppP%%3eY< zo$-X7x@t3^g%cS3b`p1D^|&di@BZyY-oBa<6*x^J9~nq4zpE9?9Sg@sE3)SF)+^_- zV|0nP@F2Ed@A*ie?{aXF9nRplzAjEsgp%MZ>RM=Ry}1*U`T4~5gp1|53!4RVhL+uw zm1eD)T@I|WO`1jhFx+1s4g~cIW(gP%V6pf>8=VbHRzhdfvj*R(bv#1~0ZI<|byf#{ zY*Pq~lKRupzdU<&FutOgUL_V6MCbmeL1%_(%!=Xr)wEv)J-6B?YO#lAaUNG3KHA^O z?#c$0L`3(*-hV!gcOO2sKzV3>;BS^Pt2JX7&EwY#ts9EeEb~VDE-A`?yZZem?8-1! z_`4rKHA{vE+$&FVHB-@Cf~5k@2{r8xUsJLtH{yRPNE!EV{L*7sg1ht0lS zA32{?sqoaO5~7Bzf>uz_@2Ja^--5n+gi1#*Y5n^}Qu7(EsIyFX%l}C_t4RJ2R@0$f zT;JrsWhlXX-}KYXxrzz-8W%|B_)lXdJV|0agP~KZ?6o_u1yMAjd^W`xz(Ku7*<@l! zZq#a)64VfMq|(}ROFyNCKbkIHY%kG2prORFK#g0=DTMl9(FC~_jLcg9q1!xBx~mK} z3oaFl&lE{K2J`zJ<<857BBdDRqtuq3`<{(wv=A$PAA7hsdbETmOM&X_w{8;XIb1pt zTip@T7ua}lVDv<`9dt-FiXM8h{a1CL*kp#|j!s|p?Y{drVxllX%s9*>l3^y3&|ieU zfaA%R{IxJa@TEqM(a)Fsk@a$1DS8He7R9bz*FWtihPQ6KWD+>!z*jNydY|#e&JG4a zfV^%&H}QF<5M92IPD%_ZQl}9x0sxh;KcpDyw|BK(FX<7hkV&(=SQ}pZQ%!n~IiawY zKrP2p@&YKZyGWut2eTVJo@7)nY0sGNM9ayqu9}zk1Q5sPQtzR3ba2Z~-D`UhBo#!)f zUiu+YlCn79XTby{i(x=bLn|Gvhn67u1{?Co4mC7GfCBk>*gi>U&NYa(l@qnTPa-&n})KeU=%m*mh^>AU5|cGzYM(20*EE? zknPhD9(4gSL+sRs=abE@pawKXk6Dcq-i~C-{Ja){7?}Wjz*}u$T*1}1g zHhf2f#?bU`#fb~W7w^;-jJD)%GCbT|Vbb`)QJs|)0uFl1c;|tEXPzDGpF&@xGR`L5 z{-?){MF(SwN5LzRU_zBfMVEdsf%nBr1e9K9^p~k=zrTr{YPYLX<}uqsr9?=b4U&?% zq-Lp{(QvmbtC5LMv(YHZ?_se#jM0arQl)5k=-jkLeA`c_ZxHo(_snATA_XpD-&W=M_45_?@@YOnTA~RM2h#m}=l>>V>8&5c=-WUm3WO;~ zWBe)iE5R25WkMsEP+oS?XUztc}ZbLyUfxQHwwO0b-2{f70QA z+;dhcLwCusX>(;o^aV^+3BBG&OhPFcY(j9<(X8^0)Ki?*iU46QMHrnzjsVR7vcHri z$vl0)kK@U3Qgi=OQ`Jg!cwZJW;0Ayn#rXD3BCF{j@EUkjOaQoqsdQfyC;Zii9kUW% zSw$;>Nkf6Oi?bv&eI|BV^`>-3-InDB$$7(i$9JS{golGorY`KX3NLcz zBA5UVrpXw$LqmoQ@6Y;z@9^qCK)m~Pw zoUO9XO>XbQkpCrqVudP^)mCXA1dyIl(H6BH$pDl`P@L>(J*BN)a0w>1X=n-s>LZu4g;GG z1Yh+=RCv2Td2T~3iY&s-&3F&rd*D;g@Mh@JmJ$RwrD<41Sx3=~-*jM`_6$WX-~YR- zF;K2=603C*l;Vf-#{)7cUbnhI(zU2BiMU?jTVMVwUMOKE;LInO#+us0nKcHJl3~P3 zziQ&K?5hiH6Mpe2VX?Z zVbM99)J2ct4}=mp=rrd-)DrpD#+qjHG@`CH@6`aI!kVQm7g`jrO@H#gl7|OZOSLBV zeJnWbr$ArgCwBs3(Nz5Apv3|b(&UTy8A9wFUnyuSmZv;&&tr-@K&ICb7YOz^5d11| zuB#&GfM3`Tjjx+gboY=sCpT=thPOs3+~$PXnE=7ywi1I3 z3-F$duYhmL=6CY@vGM#xB^RaS3ysg1+Ot`&^&y)`!hsXROl|T3)S3d^)<|RfjcNhF>0(K5ptkQWTYn$1l*y+(=2Qun9 zV=TPWke-EO+&t5#tYNVPm1VQopl@UM1bVHR5&K`{V&}GEX~;Jbj$oIV)|9KN&e7@! zOT=K4+@tT$i;+c6@>E?uoCdy2)CL_$l=^bwAY-b=2Lu-sN{T*~d^Y?|YDLZ9wn6hd z#uauIKc?#zxvSMQ!U2Me34gv)Q0InsZ*3>UMpCjQQg#g8NwKCo)3}`f-}7}1#@mFu z-}PsE1NI|zhrc_;GsLBhPM}QuQ!PW(aPRPcjHV#?O4vZ0PPn*qtWQl8^A@OwAhEdC z-JNPDRWXbT3JKw>bhMPPHPE1SW(134AD)CF1#d9J7cL^b+bWJlz)IAbMED`kCyPG_ z7Q{!VyDG3zb?VkcM4@P!3j(quy(O;EU`cDF3*FlrL_8eoqz@vPW3sAKIZV}+VA>Zd zl^}lkY}*?~HWb`PkdAhrRlCG{ef%2a-n(}zV{LX2V)S&szv@@z25-nT`uwB0d9(P7 zH4yujzc8v*MckrCPMUJz@5G%8C`8HZDu{3H>F97}T9QGg8f~ohoWG7Lw_`j;j zX9JAXLvFdgEFL=~{g!knt|ke%Tq`BWAMa^8LH}aPCGn5qVMe{)HPF=&`usCQu(gs@ zeJI$yZ!t~lOX4Yy;=5lh17mtuHgC%xCBdYk z1OtHg-K5W&`P?=40DVY*oJ#G!cHXvsM$xF14{|w(uX7g8_kL_{$64S&5jB8el8h_^>R$ClrFxnHNN@O`n_X@f2)b;DdLJHraF4apM7l{ zAy!s@#kI-7Q*qngP$fsby*0Xf<2;1Lj3iQbK~q;8`(uDCEU^X7;$tDF-fz<)JJB+X zD~5fwbuM{{LhS>wqU9KW-dkS2t(s#q8DRU+O3%j;>7_yQ4Zwx{Z>FA58prB%)vcE* zDhbV(IdY@Xq-bh=E>Yck9^EJ9mf5US4lJPZmgJ2DbgDR~km@!4 zCgId)bK-2^Jw+uL(5>XF#~a~eakdEUR0KS7ZZcKwBw#5sq_v2_;3f71)E$QIUMq}t zLX5Vb1j1FBb!O4gSnqT8WLxU*YpP1{%mbg)#`mI?{PApvDS=rvQxt#a_5Hc7I}^2I z5CSZ(HCZl<)x~{^^rMn?ypTb1w2o2@CUzRVo}c0YB(vDnJoh{PSQI^9{Q6%>2;9cj zBXN9QVXHS{Y?PW>qr$5kAuKq`E#g<-b|Jq9^gYz-L_ADq7TYb`QSyw>qI^5+#~99( zzE>!KNA)KDp3rtLs>}>*l4UZ*DV=x#hWPmAr=hd z!ynx7j##?4{?k2!6i1{VwiW@4e`R660bey&7B}8R3CvXf{~tbq68(w_eN-*YES9-H zP)q5$%y|!f@6}rT5Yt~26o5}A6s(lZr{^HsH*OThnyy})A-RmNAA#8ftwEsKMf(16 zHY*B@plhF$;iz=bkI!+y8my^C4QGo*vq{C>mcqyP_Fb(LIa)qYLP!EONeAD^H#VH)x+C}r#c_tD-3=}CZCcI+Izhw3N;ez zL!S~a@jsZsi#A_H39_+>@woMdPf#Iy2Rtb+sSKmVXXx4gJQAfT)I?pCVc@Hb{$`tW ze0+lm{CQP6@Ut905rjUG?)rE)HP^ei(9HOH@6f^{#N=yC3t{=)Fu~btJ97Uk93jL8 zWH-9zu%(&7W4<7hYCwMhn&5$Su_X>IneMw`E3tpqGkj_Oq zPiWv$ZPB%5_#To7>hcZ4X%1eZ7Q^ie;K>Scb7Zp4vn;k-FVl>YYdc?sR7h*O*@KQ~ zh0-Zxe`ssOU?sifQmEATzWwrk>+@S4SsnR)yVJ+;CXb(j#f^3oR-*Jmi{!h5s+y(> z%Zv&)R42q$_Nf>UD2>$EKGDc-Srds(8jt3Ec>{gDbvFwc${wNV%2b-|ZH7?TwzlFY z8tSrZ;&}k>|GJUOhE*F@QmGK6PHTUv9WhnaGOC{O%7RE4*7vQWp^`Wr8k$f(OZG@2 z;8gzsiq|j@1Anz)CYcp?jngFR(-PhHZqT zl1(e}yvfgMf4?l>iVfG+jjNfkWmI6tHbK?{~n~iVt(|*%{VEPx0hdXA6Ut21I9#|mn z14}p_G3{9gV08C$q=>z{+>^e&2RM1r`m=o z9}1HpO4##)P~mX}*B?L{eVt#rP0DHZB57kPQ~`)r0iUR1iuxvci3;O4(&`W) zS!8bd&+3#2562VezyUF`aIdcdsb1r&pG1gcZS#=**0RPtXWbE>NBD0 z7U&fzyGi8EN!Yg>rH-s`L6Se&46}F%kulkhOHBTHkylm%_u^?1243Qn^(nDOp?zjv-l$je;C= znTr-gsx89r!U%G$?=b~g^;5RBKrG!KRptTQ_ztus+%ek^b(J~1awVZAdX}uee=g7# zI%wIFOc&^!`oE8uH5EU%A>fXPrq+Dgl$5FvV?E^Wdiy{UxSi>&eeMQHMY|g&#q9l< z>Fu~iCD9qQk`(pfFdM2~U3E(m3a9(YC)Xq6O}Kt)nEPRlsTp6gY|0xGI|ZlzUh*kM zro$+dI)-oGA~GUir>D%*Ysl{_Zb4y-*)z&O?H9fR{NWVCvgXvRyYKe;j|I1^en(g=eD}vG)Hc%;H{+{ zssDEhNeKTyQ;1g}XpxpS*;)uPd2cSeCd11wPuZVhn!!{6BS|32#!6rK7|Jz(TrHN3 z<;T)?iNC#dU9$fUUCzlMnI|u+vg;>f!y}y&DyL4U8g7xG@u12kgE35x0jcunG}%eVurCle+pT3PGeCruSLqE$QU8-#wd<*t+30RS$Bf-#DFK?(;|AYT zbkd&McmNH$Qm#_Sz`-5x(qJbsmS(XTs&PM}n87B@!BhmT+J{YsNW)lXUrJ_XGn~f8 z@O&rwVLE?s;}|>n@*<^j%ia!enM!?U9$n%pQ+3>4~cK-gK$8cCu zSOHytdGprAhAsV#oR4YexOOLWKVDxTJ=%gYAdR%ryEFm@cMV3lR?WgGF z4I0sHj~$_RkU?QelTb7@+TT9lMik>{>&sL9ccFFrOr5DyJARX-T!q#A(O6u|C`qa5 z3hY@oo%7C-rqd*W+^HHTh`3DTyume=%b)pzm#WJCi`V2mrs!P&28q0&c(O2Y^W=dep*Ps_*(?kB zjJwn(fc%T!_hkA8)dEtLfXd0HoCKtgWtASa%68VPgLfJwj+q}TOGND}F*)*j>xbL7 z>CS(A4lG)G??D7w+y1%u!g|G?TUv&-$Cz*Ctz>_u_y{}0kYyUDJv_!TQWu7xxN2pV zX3|S9vP83K?2CYpg<_HB6n128u2>-q>NVORC&>9!Pd!wGjN>YULb+8pJu5|U-U0Lf z-nJrzZliM60WSs7FI?4D5v`|cSSi976>Zv_EZMe>r!jzlEK(*&*4GYVD81yhMDZbN z9t$i>`+odt{G3+A5To~ivFzq`VFko4QHCnsX4!8H8Li6dkWpLqfHP;|IWy}t=WZ(j zv~)ED71Lf>b_u|0-m*KCg|6GjQ;Xhpf5&H1s~!adk12wUn2>0)C5Qc%>V3ajx#DOU z*9S&=`kBgZdrWMwVNgy^DG{X$ZA44bC&I=`Ek<$31+NK-SHvc9iVUzRoWKbyXXMgr zZjbwTsfA-oe?RiB!#)|~w?Qu&W{c(d`FraV0`IQh4X7;d=V}TL^_6(Ze!b5w={V$M#9_K;i5a^lUHvMxLc&NG#qJ7!Yc2Ax6 z<-}%|!vyP5h5{RBsN?srdmJ_rjvG)TcFV}G$@_QoDvpLF=8=>tzaMyWaur~k{~CG8 zv27Uo5(J#T>*q8Z%y(LSE>@GQB- z$?|d+Z1z8$Og-V{_9}!{;Vep}qyjF2Row~O% zezszd3*m){b&37YnH+)uPL|m*pBSI_0Fp+ES6c~a^50^Y^8P}tc-@7xkfqH^SDC8& zZJ@e|KZ%KN zj?%@gi<5=O)%WAFou9mZ8XG&EfSg0X3Os5AaFF9cE?xMgUT2>aPx>&9n%} zG6CBQX*y(E>EcbaeS7hBDBI^g{$zk7H*pvgp&0J1xaJMtAKP~*0K4)jHS*G_Xk855 zJa1Xgd4K*1mEV{{{+l@eN|*&nlEybWz(R@&|pIsP0_nS70 z%T=3fl%6-+DlK1o<&*#1iowm5hl4$WR zlzv_DCf!fu%Yf0oLi1D5_nLh6{`1isj6%N5EHT@bBr1DiC?fU|f7Tn*IyenzU zctE6gAopq^IO3HzvMt^*dAW|gG%LL*$_cDi$s#oU8FFhWb z3>RBXlDv$`Q940X(jQ%W!b(V%Ur3ywX=Gs)K&3QZ`|VM3^oNfm`QX(P=Z6+Nvkf9j zs(xURl?3N@DNv^+QDaBMw4&ldL477KPTQ0Yinu^wn3TqST*+zln^3P#J(wfCv&~bE z-H&X$4VqYVrh&|lbAmq)mthiM$>PCjEk$JAzX0 zbpFJoai&HIK(>?(fPi!?PCxOs(v{$ov;SUN3k1AOWz3qQHVidJ>{7DFn4D0D!H0se_*qz}M2pRQfFKSx6pGis?6LiC^kbK6+iLWHZ;4;8< zQH_j|7XsJZ|LGKQ0?;QG_% zKN0(V%U}GOZc~IxK=LDD5J<8*Y*BGwJMwdWKnlj2eAn0gXfIT5@lmQZuD zD>yzGr0=0StBVPXi9&b=gclp_t=Sm_uYA8^NA|s4FA(&-hZ(X|1vD^t=)D0$+;tL# zzhtq&9^hi;SGOWsl%Du`c{e14NaqI)MGHuB^`&}Rmgbhlii^RuHof_(Z7XUhBOu$t zm#pJ56Lu&=MC(G_`>c-=`hI$<%jYu+)x?hC^(K~iB_?3BSMhH+4*M}55K34Wm7)$4 z(q))D#37Sk+Ny~yaf`yiK7~LFZ86by#P7AYE~f{N0H_QU5IhxX(!}##ZAk=ed9EAN3SHwGBSQj1j{}){05bVGG|0+~M zaQbMl`&uWd^Wh+2Bd3n`tSn3gd`x-?#2O?Zg`k|X0WMaRH>y*PPAaEFZnb=^pSiLi zY@6KUV46d_+JZ5)a(;#Av@>f5J4_Vo}KP`nu0!}=0eRxQ@Q1q*N=9jj2B<-l`$(2AoL*HwpI z)KiOx7*AC1Fo7e<7owYD^u_TB^n4X3+0w%LSy{K`8Nh-R=Is>p=Vh8G!;q5OyU0|+ zKRygu*6*ijp#`T%{z_zChLjwrU-=3rS9f z=*PL@BsEqV!ns%dps)Y?uNoPyc3hp)rkrwO0s984oM8{`J%Xs-P&F^#-;Se|I*DDVT^f2o(f4m z$t>EbYA~SLsa(Kl?WOIZ^iTuz3ZAV zD|#$_kr8*q>x z|4N%*kG0W_2cZq)hR_r0;r8qJaKJ%>noq1ovdE?dsVypQN#W55k=~Y|oVZ=gMUUn0M2$AAQlkei79>SwR^}sPoV578JKR&XSkv~|z|L!cX z$()N<)%sUbd4cjWTH{B0H51h5cBi#ep4?}=i8suoBcbc=;jexeplGG+J%u1gI*WUH6N}#&-rvyTK-ck zPzG*#ZYx!FHov|8103b7?ialN4YM0j1TzZWGMZ?R`@_9CmZf+5$+yX;d=^>l8(j39 zoJYg(Ss8MX-*V0RliRjSAZ~H%3$=x+dpu38v^Hmlj;h-|Q;G>8>0jNZx*&B?p#3*~ z3pmT(yD(|ZG;*|T#mBCRAU!r)fmz93Q~p$#IBMP4W>*}n(#x5DSP%>;ir;q8vd7&O zQPEbyx?}8Z)9T`azaIhthb48_*MBTAMTBsCAcPm6=vncu z%oC7^g35V`PE#!-*(xoj-7ODzmBnnF2y2xLT)0g~bes*0vlkPCKC_{g*6R^fI?*fVXIuqD9bg z{t}(5f4?r;7LG*@0=imQs<_cFxLTjbK$)c!obBYp3PCz)T8R61l!sj9Lf?KTAZ%K| zB?bz4YxXaIn0I!+4r}%-8gSzXQ=@X{+*v+HH<#2%hQX@Ww)t*aV<3iBCi>(?pugvBuHGfx44V$b99$A&yeX-T7 z_gk5)u3^K<{0@MaxHK>xhiQSEm8;tQ{$~eA_>!rb(3op4mVGe9c*&a#r^ZPAnO<=y zR0=27$RRm z=Hz);A(Vvdzu&^6GUz09*NRO_>ay!=(Gd7{1>^S}1(IcmIYvBB)KnFb){>*pc7;LOG1@8MSM6vs;JyCpL8&dza47u zR-FYI*DlndfJbq#-Qr}ZcLOwuIMKp?Bp#MM;C16*GmBq!m)okJ5oU)iMj@KLclOcPFvHFrF* zZ;i@@Ofi*or)+306f5J04w=R;#l58rAiWa2fb8?LZ~0`SG?fc87UXw^``V5W3c2Q{ zo@yjumo}@sG(u`6>gcJXlZ2KX+Y29GJa9y6qN}kkVic&7s?91H2dxJq`48T!l6z!- z7L?U(JWXG=eeM{fG&`#vg&B9ATsIn(ld~DN*vRZ$Ahg9##A9t9je^5Af?G^`!>5*0 z9D3F=j9OQS8}Sm=9H&r9v!RMlUtU}OBYT6w1oO9wj9bA%T#n3hDtYOu2{7klPjVC}up)nhgk7JUoq?eqDp)qCXk)nsIg#iCGF14Q`j zsPTXox=zWfugr@0T+l-Vs=^R%zph}1e~{`x{&)gXgr?lYkd56E+@V*$HLEtbgTzNc z7~f`QW2?nsrW&=P(R~BfGV*3pn#=-=>_@@4dL5yj$YbCVXM+T+)H44hy-0kwvF}DP z8Zk50OAindLQl75>|QXTQ+9Xy7s@0F4^sMPgOvW6Nh=>xX8r#*u%k^N)PQ0MSmdvY ze^;&w3NvKbF@5xBILu_WEg20%&hf&_Vee_+fzMr8j#25NC<(^vUx{Z?1#szBxHq&P zq6Nl{yTv2|X$4)b27-2sXP(={F=x1F7ghO?oDypQE#(k2HkeG+&-qVL2TV#)dK_YO zAVk+T%FC$X$vEidlNSp6x$I_9h;}1FxumS<0f0XFQ!b^n1ZQ>rq zN8_PLx5Jr%Sol~*?jy^bL`k2VrLd5+BOMM$=iHyAOr~blO0nE!1+83R<((_D;b&+R zSJu?Eg7h40R(nHq^}irDuamB@CADs2J+UPE$i8hm)1R zT#RfQP|FgC$>F|^^Z}iURf|v=>3$J>LSO#Q-+32$d+P6J@>?!ucRE*wOk)C&@T4Kvdy+J;!s4fi$CZU7`hnje3rFMszIJIb= zM1pionc*MD64W*MAvrJ4S?s-vKOz}iijhbTUYAv)^~6GDRg+Ote38c%EGx4O)Q3~( zuRsY+Pr2c}0xt-0WSF^G0nw`|?|-!o0OZbj`U~Q}m>qJ9I36`i39II@$MC9z(M#f*7n;=l8Ppw zg0ytMo@csT83rucngK0EnNX5KFISFEb(iUBxLlH%j}!HS6wSdCMu#P~tzw9OPI}`= z=h+}V4`Wdbv!|FBQ_0Nqj8)9$Vpuu0Fd|||dnKXWJ62J}gGaQSct^EdnG%~-u6E(gP`5m<0F|n*>x0|NWPgr%!qSg2JVxAlN>tDjE zL`cv~y6#g@6AAVZQ6P?sg)%Up>Rr1Ve-`v|fu$bM&r0l6pIv7E)@l1uK5u1|81?_O z0Ia(7xO%sgSDa902oMJlXuv$cU-KgX7c5G19zZx4f=ZuThZ~}Ek`#Y(W(o`3k`3yY z_YU@YvxP&6hb4PXK*42o_v~xHr;!F5&{C43pCD@bGY@5dDxJ@r>= zh-}#<_69M7bKcG_xUbzC>p@8Ho><>a&(t*!#WU*4J_NyIzZW$^$FMXjx?Ww=V96Id z{WUukdgAvVt}V2eC}2BsxaDnOm+4QBCMCD$+bY)fim@mkiH!p%ZEo|>_Ivo1Tvs1S zzRI8IywZhTLH=#@NLnaIlcY{qH$;tYm-|zDt7q>dQ_dy>(Rg9CqrcB|>O6NW)sRs` zaXkCqFddD7F*rH5GdB&bFp3J_q=U7Copeh*ZEDKqWiQqV=ZFOg4FfUL%)2qDN%DZ5 z2W9iST?lX_4R%N2^ThMy8Y2c_pusl{-Sz~$c0pWy(hBtvoIJEp6t>AxW=9Hzp z!sxv{6O6>(_>>SsmcYXuYzvoc;pl+9f{(=tg;Yw*%Fk$S9m!1XPjerNm(|Dq9(xK+ zBNuX3L&aVx1V5P>Cd_D)-iTRqtzLrxI&d@cu&06VL8xK90;ZR=`ov>F-SQV9KV(#c zC%Bu?NDa};gUm&d`Rco|u0D2&$x`dE%3}y!&sdZ{ysSv6_gjcRsX;Bt1cxvrb<20l zw#ugsOx?_WMr|x7JOv59b5+*s(Ztiz$>btWNB@0{vAP;RJZ<~}GZg8{>O4#X0TIoE zm-+_KVL9$2@fMXN5>dCvqi%`Iqie1mS*`F8X!fYdcmxlZKw-xuS$pb-@Q?JNWkJ;; ze26p&uFYcn^#YxRhbO$V=w;?@4Wr0nnL|&tsAXrGpN2ETj&jUHSE8&io6d7OG;J~O zK7(A+UStT!nQ~_HC;^U_0vIkJ6_fHovo_$P9AeCR(xBhvdbjJ!ooVqkE8f%djhDdR zk_Ur>&`dX^6_I${58Ri7pyGXW=KUXrdE7*Sk^ zm`!=C-wEvh`%HCBMf^s1!<#)x-PkC9i%08iTJ?bBx$Vss`2JTAVqBWv`>iwIJ~Hjy zY)1HGSeP4o^=Y{WIek-mES)veR0(km4Ev@_=^dBoDL*{^be_SSArub69I>4dW1AT-%%W?W#S^O{;lJ2Z#gN&qNUI2bkm zQBxw$Zt)wXGS!DNeP1HQ`OWvdn32J&YyIO(>**2c$r%hMPzz@= zByBno_rDEop$691YJywwiLz*irpr&Do@I^UJ{5|N2WI6h`qBqXN(a7s+= zG00AC*caL|3>=g5=NEmtr_IJ2_g*E9_auxIk~xqynZ>axndTT z*$s2M`0EbCyhYT)mp&W)T8w7)9uv?rN~Eqn}VB zYM+a47!@C%g#?K|lpL?O^bdL=PUHkHQu!FveD5m@L@K1Yc|A?8cuyVzyj@XxlRX2K zTExam!hYDHCEJ*=x(*F$>KHHS^v=)wy%;d`^ilf6!}zw7_uokg`y=(x5c1e_BPQXU z*USjt6T1QEHHzhl4}!YZV3}{PQ`UNI2fpm~eFWKaTJ5>~UhXCD9Zv()PO~2%>JcML zuH)aNFTnlK36ZMS+i1wWQ?s}ZvA9`b_kEjF?A$}QP;PLC`8R?-3XWSal$nmMET5f% zQUU-IVIUG9i0>vT``GgY^YSQAa_HLE!=_@vlXqZmcE}S=1&d17w@LRaa;EiMeW+qq zT7pBDu~!8TFGd54_$&Un-Uj$7ZIffht%Ff>-6RdZm`+z3rECbw`Ep2%2?CK&{7ve3 zaB<(%uXOk6YMKjN<-6HK0uG3Bo5tLklB3vF*;G1KNHamYv207`8`|%j3;U#IIlKKY zi+tB>0bX%I;2}shvN$S#d|=}G)(a?qON%j3et(l!5o~$CwY$Fj8w9aFrJHJ5TC>wm z+(yIu*jZLLTjO^H_oKRru2+aYHzDZbPr(OEzVEeRi|gzOTCU^6Op}a^>jNZv(+`Yo zXtM6X1SfC!?T6fcY?cgan!^Vsh&=NAFO(3+Y0IQ63ak~bd6*)>^;=2CwuMUZNf8F7 z{!aVhm2NH<6Rpg%-x|Nn)(BhN`7SkV!BDB$tigy&JO~zDp<*WC-Vr7W4@LoUr@*7j zpxih%z6)m{nShUvt~I@LH=PGQp_lBh1NuqtTbh4s0of%Bx1!TBvQH*$8ah+XYu9?d z(sdXSOQbKdYZd5G^2i+LvYv0wNzBubr6#lG$E~MblKN{&-(GiNj>6Nt zUW@yFWKPH*h%AbliiKduLd#89Zo?{fJc8G529mR4`miu+?0ik-KXC5-RZpIA?0ajG z%e2}(l@|}C=p8?&714~%6-SnrH^W{wo zW`#0u6wWR+PU#~1(~a`=)o8%`#H8z>(+x2(`vZ@AtLh}(NHk`M@^c^ypeC#CE}+iU zQPk%{&iagJ)?IhUcZ-)IL^t3tsFpYcUM*uYOGmu*XXnsm^3Qyd3hSq9L=)NuXoB8XON0`)lp>e$SK)Qcm+em6drflgLL=k zPRC)tJL3~5Rwb8rDFm8xFtrerCvye4SEqD8kqk&<){W(P$ilA8xa>rxe@o)FQuxnl zgCLqcrFq$o$=6f~Z33ykC0-_nhbAV*-0?xo2Ap6}V44}v<&m|v{*?+^(ee_6IrZLz zwmB=)a*p=))%mbUaQn}yXNw(zcr1-&ku?zYYxI~l8^$@ZiT%v{!71dg1K!5vE6$kT zLLoT=(g5P+brfDq^D=`6uwmi=9({$19!ae{{Ps)n(P}IQMi?N@!0_L%+_=cs9?SZ{ z$Wva@Hh-6pO6>s|}-0L8oTc z`Ynpby@5&zz7AsFd=b(yuEuS%;~c8dDPk3Fo+0qaUbv#kGFvu- zD_(oGF*(RRKSNhWThwN~eDYU0R0AY_75H}QclMfOzZoN-igPmnN!zE zu#9bjt9~@c&MAG(ZYAnd(kEMAZMZh3ICJ*voOL}9@Wbz4-E~q6zO~G7!Ej>lM6sc= z{*}^fi%OKsa7FjLJsTfg?lv* zZb>dIH|MT-)r!4dHo7v~>P{W!a`<{LlVv_=NS}Plc+E~Vqj*)WhcG^@6kMRpq5Myk zPW(*$#54gJI;By<%Ec=A#Bq7ulaxHF*`W;cXvMr8CAo~k3Vr+CHQ46O_p8y7iAqkJ z{BrMb$^79oO3Fh3E~PEjS#0eTe0g$%(}l_=S6-)BSbG}z35`IE;< zqhS!RzVTbssNw1~2O;derL`fH=jG>yRp!juql4~@qEJbZjs|Tpg(X#8N4CNeO<+SW zud+J1Y=Mmi!&2ogsWh9;{~f6gG!g98XOy1o}X!M!ehPhb`R3rq0z)KAhm!b6Qq|>`}t%@xS$Jd#)&57 zx5RD$?R%8!hy88ajZcq;LIJs?owqXSUFp-Q`<;AXY2>N{Hs^I=M41)``a0oB^H~VH z(xJiTi$NmXJ&O}z@ed8tw4Zk}HY;u_gE+>RN{Prp2co0zG#C`WoJ}f6*;i{7DQ`l}8bZg1_cg06 zL^s>3Mwb>4uPJsw>}WVR5p*OD+{vVe>I>0=wXq13@7O5L&Zl>gP( z4duc=nYCJ)d+sW`8%9Z)&RU9he|JS!CkoV!a>}5l{;yaAk7sT*p)Z{rBt0M64Z8{! zVl_)}K$x>hkgd9?v^K#A38|@Na($0N6?Q$N<}mc7=+}#$xuZz;&ueDilpvs*-MTAU z7F(+2ll4GoH?G`59z=Av880e^Q8GT!hNXVtgO-gCO|Ze2fvY>)D*2&LYHv(~Z~7``^0BMyJHo;GkKFR|?{)~8F^NReZD6iud_vYI@}PBv zdZ)OUpkC?f%_ys&Zj8oD3^n=990pm$;ql^}glNuEd^7Kd+f_y;J_6 z{L9?9Yv|C75%Llv=j@>_S-#S>JJ975h4Y&P?VPp~(!OpTJ)(G*7C9T3Z-7Ds=L} zE1|Dws*5j^%;u$y`Wu;k=5GH3DlW;vooc)3sj^k4a;;g-;=FEB_?eYWj6x_>jS9;R zgK!!IUDCKYT)8h6s*cz7|I*xq2WE*^n z%t3?kTqOB4>0Nr^@}zN^UCJB8l%qc-#pp}7_E_?9yD<}ka9VN$J}K;Fb3+4W&g&ED z&Q1Viyq|*Vi?KjRC5t4!B*N0#bhwlfb>#L_Z;hAzTiw9BiF zuCnX0YP8Y<{W+%BuU@+EuHl3C4f}eJ7w&cNqdnO(_|L~Y=m@nHu^o0gzirp=&L8p~ zVSH9HoHt5!@REQz4D|m^@a6k2gRg?f&qN_Mi3a3z=0t*r3Qq}xM?JdkUk_}@xe&=j z!%Ot4{H3ZxZsNrI1(P9d!(vL7glgJ|j<71yQmnBK`pRdX(6|- zv6do3Px_O!qI#0RwnI()i_75}mdtz((a=u30Nxo-^;GU`f2x~HQO~`b+acYp#fBrX zvdULMDtQXtUn}%~t!LP^G9|cLzL30p2s~x>JaOw`kz*=bmcoaonMK3kEzOGxK*`rf zoaNy?)!$~0ncNh7zNb1&@NI=xX3BVP-8)J~6tOn2U!i7h<&Vr>FWmiTs9VONtP5>h z!=zJ-OrX_;wOsQdjTLY}{n%CWqYll*d8?hBdD}jS=mN`0GK1fjLN@TIiTed!gVFOI zfV!VhQNvFETBk0lZA_9*nMDi($2q%*AWX1byocrKCP0@fb7F~9ZQ7Ld`aZO3p5ygA z%vq}2ft@~1_sqAQmtN&izc8vh=c|oKlTeVn*7!Xn7+S#)Q$imdKpoaEO&TNQgNo2a zvjYX~@iFfGB}y#Ea2VqkO{TEWD$!cC2YtDw6*XjzJp$PG0c+M03>#%(?f5`OKe30q z1B~L5c+K1mx@#j>x!34JE?U0qdY?1=OWw{+iP{Q1#MBu2f2Ukj;U9g0MbN=Qy-=#2 zDfyvexv=k}f8u$d=#iHK6SDAwX^g=3ZSGg!xl{~6h4?`UUIYPrGzYL=Q(gu!lZnd# zoPenngPyr_9E`lYr3JZ~t3UFto`95|1X7O4jTK6=xR}M;233+T_9yI5ysHTNfTsn? z4}?QcpCba?WHy}}PWZSAd(nA`<)33!`W^~<=<_<_o<4)q;smI_YNiF9gaq&EgaSz& z9=`9=1}bih;-JTgBYmCX52Hu!di$mT49fS;KI_$G+6plA-M-2#GgVlKimV7{F*r|8 z_W)x0$~TZU7>{=yW}hKUU2PYfnG(3`2;hEAHsv{KFspr}{P^?vMg=lUeOK##9pf0) z^~&9TBqtHwGyv8xyktqCmnD)j`)Yi5P#uRBmu24C>{#h133S*2;nY1@s3|h$`^8^> z@U^`<$|INOr%y-pjzw?`Gg=io@Yo}yu)K$(B0-nXWv&nH4^EgMNzuoMYmR*Q_yH zxdyn+;A-p$0~!tyqeo{mE{9d6db12!D6HG;#KF-iP4EOJ)FwE1guFQwN{oEg_D!Ew zoCHP(Pw4lge)uAJWZiUw4y}SVK&eDKsyiM<9$!g+z8)jv;DGXCuFCeE`jZ!(&{&0b z6-~HTrgbBo-553)ZoeNwuTX*yv$00?+;sF!S*YldeHlOkOcmRnp;@h>@5URYvqKz~ zNKV*K@uZ(U*UdjZu-H}$8yRC97d2k~fMq@;(l&(+CK#%*xga@U*A>X~H`LA#ifbvz zkv?txxW3AHWuTS}MQ?9((AWw$O+D95v1~Ndh|tc<$zRL zg|N>V^+ID)#YpH`9@%5m@ODIO+_M7h;WIqs*c}?qm~A1{&ym9$k6rfbP4eOwzS;Mu zM;1<2x@i%JeiQWM3%N%fEcqkucPDw1#xoC#)o00rWg858Iu9p2HOKcURkBo=!5SEu zZJi{xcZ+`y_83BNYe9R{`@o@gQoWB`tm}_Xtk4zB7zw$Nq_DuLaM3h+*Q+MhF-3GdIo3atjqJ1L%oj9GmdIc z{Ps$+78lk=C9Xu7meF(IB(9kyS=0iswFOg*czPf`Z4U0(BI?Cl=2yIRDevcDSD9Au zZ-MBTDxDwTr_1^lX+(96LxI$%UyZ>cz^>UjE*9uY#RrG7H>dafwr>FPNXTT@Sa2qY z)C|x-ris@+0)MCe8O3?(x|L%6@5HbcR=Qz1?~B{L5~&warT2QAvFS3B)dO9Wc#6jz zlu}cIK;ej6T)S~2HTbDIim>ZXpUZjon{*mXXPqvfJJlG2^0OimFIA3Cy_n?LxViVj zBIi!a$2F!!&kiTGjwCo5$@I$y?N8GK718co!m{{dJYkck6+tB8HHwP&Bv<%C3o5VBmr9e5LJwVqoTDA?oWm=rW4ZPwrr%t5YN-SE#xuCrxj z?y=NM!$D#7Dyd5KcTyRRSv5f3zl{)wn&2aS+1}2tA%|SmbD!m%{p=({zB|Reu2)_m zhDtsEvh-dLLvRIVBXaSb`t*A$O`PnYSs<*#TiMkBRWBKHlbePdrZ`7Dz@xJs11f*4 zupVk~NUc-W#B_Qh&+@gY)OwoG2=b#jr+XHPe|B=o`vZi&aq|A` zi`k?_c`VBkpW|(%%WQ>7V56Y1NHD{Z;#D7C7vGCk$g_oV95{+po?j4T%vMjdZ+vcw zt{eWGJ5a^vg$SxE7V%HiAGtOs^$_BXB|daX^+ae8S>d;d8IV2&tfHHkz)KIEk-8fr zSZR%YU2eNCC%jG+`lQ!xaKt3?tfG7)bLnAC13v1EuQ5J!ODv6G5pHw1F*M$UHxJREy%<{9>6(+f zN0L{l?SMv%hPQIcW1eZ`kNgZs6;+~9Bym?9F(AI0c<xH>d4iV zo~!hyz`xho*%162oPk!8**xm+_iWtek$P{dXgAjxs>e-4zNY*2f7W?c4Yu-otI98F zwLFDmhhqa50ne5U1GX)e-5Zg8HO^eM&CmLkV9s0x)&SDK_IbxL2S*vd?8VJY6Ng9I z@#kkuk;njhEDFfyrzP%R;6k=NDM0KYz~8tIbmX`!zV&JxAGZm%@HF)pmAOCJSdINq zLljazC3gZ7C~la!7EY4|4G?INz*&+YBXrPtO@C55+E) zF>j2Zk*|un;r{Bu{v9VZJ33p2%&CF)=}TZgRQG!_^A4fm^Ea$vDP;Q*FrWMIFVO>l zhRPq>bD3uCO3`h@FY2=WlWuCPdTbkZs7{R-^z35%w zP&23goItXJw;inX!mYgs^jVzdP7=b5aw5N>{<`trxWzGvi{M9BDIi|M69P$;kUAty zB`ct^KJ^oog}D9yS%6}7Pca@eZIOjHJDBJx+tPIpdMA>;_*RjWJ1qPtY-nvB;f>Cr zo7y6udsO1}un&sYc=Tq7L!Q%7>9J@Qx!@WSIZYR6oo@y$hjTN(EJ@HAcImq7<<+q$ ziknUNG)!h{FRawHv}pG7F0wet68tgULU_&a#Z@6cyc~%>@BIXWNWCNFVaID1;?z48 z3ggT|49LwEX~d9>1)$Y!)a*0m4wGB2*_f(*<}chwV!JRaGBs{{6->Y0=+S+8og~L9 z8$m--D#W1dU)K0w|L}R2!y_h2`h~DQ!g1JnoTgbcyHx@~g;SaFn@$<*rubVow$Q6} z5A^axnuonf2sN)ZWoY=5F+H~GYVymvw6h@B&&$+o5f)afUP%ZvOJ3G8CPDhYe9XGY-?E*6PkZyuk@VOFlKvN zeOLl$2T-QGLjDM-tdXq|8-Ljxi06rIeP*dh%e4tkx?$ap$!#!68?+s8sGy7ELSfn_<0|A zP{K)!B7O;d1+Oy?3j*ZEGb?Ktpkb1=zfBO}LN+)|$s5ptTI1U4PMEA{^7qgMBDzeP z@QP(x&zzQ{#VA9n=%ye}KxE9H6E1q6yac9w24qA)VFD2=XP)0(Tgo9oH4yP;&k$B| z%GNJ!1)h81E9TH`dyN#H;c*u#NJJ)jJ9$?=gnpl^J#hzLlI`$j2Bj@2Z_bYzr<1$0-FAV(&4dp>V#c8}J5p(F;#DaeNEa5zge zKWyfc&WYk)l_*i5Bo~2HX+%Ten@Z$acxW>=Z9&m@J$DZVvu&pQaYV3fdMHh}dg0}3 z1mKhp8AF(YT6%tBgS`RfvrVt8t-dO?*dHX)2Mx?KCh zy@jtcLS#sO-B}SyF;xG8|4@~GXJZ1)mCh=%maBwO!FNXwbM>#kcV@dzykEQ$;>2oV z$r2N>AM3X;;33%*sZDF)5iic1$ZWu-XR;a=n=IOHrxF4SnD2`O`8vGqG&@a0zN=}r zX2`9@Xamwh=W__ew);}Webp{M;EJj@y#FeR{f;QNs$6q}?mYbtpufK2t{aLCOMon^ z;yN&1BMiL`*}5DncU#h+&}9338C$=kb2FYr;1B22@jOL%|f|nA85o+Q(s(t8c0VK`Ilj>_lYckqfq&E-d1; zJq;z3pil$NcK?RmSQ}dPW)OOpdOYlz)Z;6_tx_^oZTCC98-|YDW*sOY@r`7czVdOuyIytC!BwRQ>tkF&OD`X|_(JBuBOPnQkB zO6rFPpUQD#4eSj_Uue-SzAVe?pmNn!EckPP*WGm6xd_}4W6=z|Zo$3M2j$xzqvhOj z(MuQP4fQTNE z&_u^~i&KQYd0BMIn*K6)p}*Z9^ZL+A8B55EfHI))Z*)W7i~CifC%lN-s=UNM;F$MB z$QO-<pgDBoJ~4^fAFq*88@1k%B?3q#Sa8l?@q{|FoQWV-2qvh%i_?YY#|k(X0p_Lh!(k; z2GE!ryR=?q(&hs%(<+n40CHR;il*2*#RfAFI}sE3l-l!7zw!CYe!Qvn5AB>V!gXFw z!%m;g@#xuPaaQKfa;U}|Wi`Vv-K{5TJ&!wE?H=E*@UA6R8Xs}n{-_6yy1TwWOwX{> z52X>ZFSgsNPl@|ke-OzT8h$1_ot{NygJ!YE(`rK~h1QAfgmc97VQ#vEcBeUR|F{xg zo*i(KM)YsBlkAo2keQ##NFX-y$IB!$0mmH2gxZN-p;&{u>b!A%YI}UcDYrT;7_|jg z^-jK*hYT8JalkjUL6Sf&n2^1UNTh&Bk&i~TNNRQ8a3JN%DO+f0?fh$h+>-nTUwW>Q zZ?}n~-cqSGmbAL}Y)PIQ?O4tES3in9(Sw^aVqeLZ6qBZd!;+e||3-buxJ!hREn{BY zNL_Xat~!Y)myDiZ{NsR8l42zkw87jwHJPPMrMiA^!D}qws+fc(lJ#>A2&#=ABg`b! zmV1bG0jDmn2puf*rDBN#XjA~S=+J9}W|{LrqRDWpL8n+|(6s5sqG#&nvdSGA=siRLS~AD*LYYwV zCLX{57}AcC1nI=I6gm`>B)<2gk&Vh<9(dyiQ=@*iWkx%Swg!L$oL| zYm%umRPn+isrIF#jCpGGxdo{RW7uM&pa!dpE5sGDsBad4sC!pJ4<&d61c4(kYaD+e zH1T*p_2^Gz&_uxkg{f%A-M)Zf%H~hFe%lPRw)Z4ns$4I9G>6cZ9zLZGKq34lKse+0 zQc*GT?T36|Kz?PwpI3Hx&VI>xb8r#7SNtWb(jHilS0_Z`cOrQ1vFl;Gf$@jRDO)~; z)du&YLk|}`eqoaRt6!ZHEqxWnUj^1U?(GO~Y~NG;&u<1^XBXibZe!#THFe-|_jvr( zTYeavws`y|ad7c=PFMoWf+2ecXhfbCquaRg$r`V0et&-j>3%y(&H@yp>5;1q6umnB z)Elr`u=PY{dxqf*Nj|emBZ4Y~)11xLLDEw&dF8=7#{co;LGX~m9jWCI&2+D8e?(zyo7@(Xn zcc5#W85S(~QmDlpttvOmd6=%enYP^$J4KaOnZJ7oL<~VlqV)XStuB}|k&nDXlED`e zQni!SF%0w<>|-sc8b2zpwVF^gIX!J^qY=>8ObEy?s6>kwlX(fRCtWeIF#dVV35tc_ zRq-Dr-XAp|7)k=}HECq)(a|aXhIj9W-;5%QtFHyw!+FfY^xgnL%PVuC#C$dVeL|cN-GoAs9*Bm$8r5v~sJ{)K^z>(` zr;aBc_fZg{DueE$|2R5hXWIN{?@806L40b?&wb1vs)o;f&}9wjgiZ_P5bElSA-;?^ zJbize{SUw!K?nx-2B>Q9h(|xIm?-`QX#lAn$S2JDKoVUVZQw|~N9C`Zap?klPl%Y4 zNFW2nxaMO1#pyQ+-Ilp#g>We3>QQVe#*#+DcUJL7%KbUlzH0~;o+$DWW*bNd z4fz1TzBI4vOF!RoQ=J0QA<3M>d~Q=d!~DadvIn(_hYO~RdT#>POZ7@8sXwnct$|@K|G$i}|oM+0Uf5k6nOfen4 z98C`oAFsEstHbg7FxA0fI?~ID{lZC9T*fwWdlE8sTvQyjXa)0V%rXs`WW< z8UcU!mJf4pIvxo9fU6a2mZMf@M!B&=k9&UG{*9D@CuTqjk%6YJ>VdC=#MB=l%VD?m zWp?X64&5GEMld0b)kM$WYHlgkhDH=xVq0v99f@gV;9y3E$nTsG&Vo&zI)39Fe&Rb{ z?D!i^j4wm3U+j(W-fD#S$lXB;<8otmTrGpsDCLoT_^9RLbm4-(hGmUi`{RG-uL4bd zOCxpq>tem+_v{BwV`ja_d5kOZ+ZfvK9_AC9Ip&go>eE17nD%b~a&!I?f>mMv%LOxyVx_%!mH>~<8o=;4ZSm)m50ST0c} zgnrRDPK{-iX9?=awZF@`d3D%%nTdl~pba8XJEQx7)-zcc{T%U}=E;uQ{vz`C( z@;i~AFCN~H)`o$)X&7Zvh0uHh*9t6&5Im9}z(mvHAZ&t1t5wnz_<<*rmtqIsJ1^G< z`k7_`MaHt7xSTFw#@bRrQ4w@>^i+Zsxk4T|>A9oH7NHuTZJBXGR@IpM3<8UWhIL~* z?6SJxX;p z+N`l(Oox?KsVerZM&%l`d4AjkKR661)C^2_o-M0%7;A`r#~#323ZqoKW8IF$GjCr~ z)K-5dCX&zMj`S!M!i#HxL7-pSZayeqh#cmrze;{ z#_WF`<1TP>Q_@d*kXHenG>@7{VQ_{u*unyS8o}eg^FKjl8%Q< zl73e7jngm~qA={A5n%>9@?|#s}rm!+m867ifWEgyiV!U$j)hLqlN} zI4i|9TuIvWsPvd4$H%j_rU5@ehM94mzi6KS?5s)@@;$)F2n+=LsX#c3_a>4|(0S{rb4xHkd!@)<95q9|}N! zb+CYYRW8xXWqXi>k%h`lAz`DR_r`a5Fmty6mc_-pruZ)&nnsbmI9(gFYy(H=3VK}I z0#YMYhod6T^`AHSy^hGCL)Qg3PlIpo_Dh^t&12&VxCK_G4H;*16w>8dYldiE@6Y_x z+!9YP{?yaT7(j1QnrtsHu`ojpHX_kj4m&ed9Mepy;$DWQ+f(c~kFURT-Ou ziu8$&dN?eKU!>{fuv=w>k-#Ok(Ic5@G_u9wz~fSFPj}X3NLOWkqnPvB=LY$!hb-8L z7>!^~G%hnlksyNj4YaFMDeOD*l_)n46EdGxvw)Hl~d%h6!2y3{ch{P`I9||kmLoOHS;{?eHO~h@W4Gi#rz5}ZCqKgZz!5;ljVTx&iiNi zpW~D!#ctjuQgxHBy!@Q6js)7$+btwhdq7Vc6LWHFpiKLkDzZMflKfbTwG`C-F;&GuXTG^T64Q1i~8pFED-#bK56+fEnh2M`}mYuwZj(EuEk)xm<48m2>qh!j0M zG@1=(Ko1~d(RC=8?4_}xXhM|4t^GHcO(`KOi1PK%#)31?Wyl_(DbPf`UW^*vT6ew^ z1v!%`CLy*GY7XKR<=s~H)t$?6-pWalv}`P1#6{4FrdTpPviGb8n_0H8DT8(5T?%Nn zzp46rnKEG*J=aD%py^vDWV(%FP0%P})ogvFsPNb1Y<7G4`26G-h$QEmxw;~3_hgM; z@DI-IxesA}K5ugNr0t-h9>8I{AuS6p2v7#kJ&&W&Hph0!y>rE zp=dAw4~U9I4p5r#{yqaX@i8$k!86uYgPT2VIzAf}95QVN&N#)+Y8Y9}xW2nsDb9Ld zA|s3=mVz0*yeR(F@g#!?q=LFb`jzdynKL;E*giR|HYm*)BhU5`zR)uSL%`H{ZC;Si zM_-bDT#jDlAEXb&TX;o38(@*v)YkxbdqGh%10m`t^V@H^Dyq|2;iVP4uY0p$PN3q&1~nNgnjq~#cZd`c1xrpG1h5JSUGNey5?RP*K?rT|BNH=MShF~@eE%fphq!@~LCbA-ME+jmlbIE{ayNb# z(-TiELN~KL%{4+(0c7i#wo)$c5jmUR;c0ry&4plE^K$OCFvZ_f`Sw zbKMzxQQV2KXC9}Lqt|fgTBapKJBBO~yxwk2NLxvx3w;jQqYXnTs8{OQRnO(15b2=! zhnv1?w_)V4_rIl=BuR=D-V+#lULZe33z31=3&LBL9+z*Nf0A&^W6fII<`P*RJ!ds0 zkP6cCe8?*gUWZep5uHc^Z158I_fMw)I*LcrGH6$eeQYX;8e;*7v% zs~H>hb7#u~N%jy!OYiY}=dsui@h!F`78epe?tLjJ?FqEbxz|`EvNl-DBN?$7Z2@v$ zDevrCJ{_9DlO3?)c2t0q4VD_P0HHg+)I@i_q0GjEsd-v-4||q-##Mt z15&Br_?ZTZL1jm&NNWOGBaU@GcI5C1)$bK<7*-n;&n()m*@Ep9{mDJH;6*J(dK;b} zbaq^&d;T>D3%9A~wzL=dJgB0W$*jl3UqaeDi9Yhl>G!0?sKhcZ$Qf^-CP|n=CNuD_~4?|KyT}A1+ z6f&QJYyW(C_?|(rSdi*Oxbnyl>KOxXNRyrxUs$7CgVDjpsM0n^pYQb zPdJ@F7EhQP;{;zC>Izk#e8jeN8~8W)w=DD1x%WZi8f|y`pj(?2%bSyQXxGPHw}Xlt zs*Y{UgrqnLbv&z+z03cTDCW8WGw@q_^PPXH8{W6t zUfvP}JwSwnAo9-U@u|t&`#*)EOoDAhD6Px}N;GYlv@w6!! zsz!3mx=t%j{zV}=+!O1)qn_sEwXc|AR0FV?+(O>t*;UJ)1n6;yO(^vxg0PjKRmX4^ zwuDuGwIhIDA7l-HEg0Z#yVAjuN^5pFimo{oT}NFYN~t;4+bryq{)LeQN3me#J9#e+Sq06Go=wt;VGOF7J?BiI6`-HCD@f$;!_?Q%|W_4Wt=G~ug@&;v*Ih2je!Z# zk*y&Vkh)6zLoiXI+6}t=`*MMkM4~^D6$CxI-_i?xCe23_35{ZB9b1rEm)IWfsJfgq zh8YBb3^V3dNzeV#^0;2Mk}S&OL+p>O$oO3m{?7$9_m5SY+Q$(66G68Hyph|LI*+|_g*O;6uDplWCoGJt5t#yL>ydPfIEp);0Si=e!@hx z_(eoAIdJFAM8UxKL&tmXy@%)QK?N0yB$b4Ed3TfaC5_9;jOxwBP*4DqrrW@?`joH# zIKMb-$gBRV)afqED_sY5`^mGktte@bz7)&qdN{<@doK6I3#E>c{Nk5Ud>IXLvH+!& zr>&f6%_hQUW8%DOyn>hkDFc?l8&1x7ZF zrqSg^3f*gw1XPqo5P!$wPG$Vaa;S?vn_Z_q^`vlgEuQZ5X z!<0>c;=c8_J>;gGIqB06y5-ZgcGlIt?4ZVIk=#iCj{G2FIf3Ih!*a)x5e3lulv{}X zBoAV@y<|Oub=Tk`FO67<3>;gMIb>0ID81ubyRf>BTgH1xBk$ zQE5*2J(!+l&16A-9{K|#VO&+I#O$c2jaor;5GPwB3F>(DjM-OlfD2fGz^^pCQ!#*z zw2vVrx(p7!M1t^4e;@}!h6y=P?rbsM=BZIispK?qP@48CQXh30 z_^N^;tqkp$wwp%`+KNLLoXwc#@<2tIl&v!%omIM7LDW~fb|L8Kgojj`nA+}EQd9r{ zBS=ao5;KhmA3IlkA!jbZIwFSuhc@c8N*fBe?)1R8LTY|~oy2kdXnulx-IIqDKGD2> zYxs`}ur@?QFXhnUY>Gt3;m}uyw>~~}#Tdi^O11#(8cGuF9K)9lZobeRz3Bkew~na! ziQJ2q^?1WY@;Q#K<;7{s-MY;pJlFQ=e~GoMUO>z#s8@$da2WqbPi@Oz=qS(1vmMSa zSyDK)k@pq<-u5I*Xd4Qmo}bek`SZB4GJo(0B}aS=CAm2Ph1`v9j91YV>MYU9xwN#wyaTxaw9V~!dt*8+FGT>Er<&^7ko-r+l5+Kf^ikq zR_(VzOG7Bw!7QgA+n4*~a(@Q{$DR0GLRi{YKM9P+`3PCxHpgE5|0&&yf< zoRr+sX{DQ`G=Pa`d%&7HZrji#>^VD+tQUL%%nu0qMcG}|NAw`Ehm34bu1Tm1#Er|*Jd=Fn0k;RNNN#RMPAaiwAd4rl zN5UKq0&2#Zg55W$r^?kEkkxBdQ1_vvY(H+YF-`3;Rk2$YZfxOkT!gr|X+e$gV?@7{#WStfq5FstPpd6GV=O}V?bGccD1v^+0xBEj z(8CLAV&|myYdU}Q1ECX=2%tmAC8a{4xbaExhn@y$5fatXGBSkoa?MgU*wT^c=;#jo zD$2{1H99b!y-8eMU2h*vY#kzhtEE9ZzBNHpLKU(gx3wwvBh~t{-a*T|>laP^(9?6g zXi7-H#M4Bo`F2H|ZVmseF&Xn^f(+)~j7?cxG7+lN_&MBEULF>p*rmEeK}Qm#E_L;d zq5yLVDqy+x=f?o7@(EweO&#D@$SM}dkwRrS#I$;tF}gdnbO1#-+>0 z>ERjW-m!#s{2j=lgHz7mr!ungR~nczihfF(Smrc3T$3c(%uvelsW7c{?TmShM{t!Edru^}vhV!c%iLRq ztd@=!?COhWW!H^V{MfDFw{AIS@OC-&^ZU~OLU}vHm&;N++fRowROj}0W*tMewapt! zQN21WnqMUB|0MjJ7MaYqWi#r$vTw}dVWcnA)QTh+(M@xq&mz%;3};i-8<`?&TG!<- z8roi)pbmE11LwXWeoimWilkx>gOle!bZmx!#Ngc8_FO$C4JKJ&6p&pf+pkDj{jJ^C zUZ=}+3jJA1z9HD+65`(CZ@i@>KjN#(Mj{yblvOn7>8k}TcWs7gRcdeXC6J532@z5T z1-U#wSkqFX&Kf@mpaM@q#Cii1Y^fP?dpZykgMQJ*#FFJ+g{prXnrEi| za#4$s*|v`TU>&F7!zLQl6MUH{F-fka7L>6RJz8Uzh^+?=EAa!O+Sqw=TzU6VgWPmg z*cl)9dtCTP<|-&!YL{i+xX!*#sB`SP_V?^&k$H*qLV&%$zvB^Jj`a5WkD5xtz_6?c z`PYCP^97-wNu@koOZ#_*JzB$k?<1i@b?QTGHs{p|^_XXMK=2sK);!J_Dl$*I66)+p z6T6iROLhzX1dMG=7A7{;=*O>=n85Nef(zfj@ZNhtJ?z%d=bXE)_IB0-(e_VY7C;HI zzuNYUzxTTp$F<+xv&H$?4X3jw%jj+Ff%13U9dMu3PzIt(}DA4lywxiLqPm%_Lq@rS7wwKgts&APh)$JtM zO%=-9?I_(^dBWv@%Tj>b8e7dHy%$NDh!V^n&rdz@rqdlMMX}q>D#C`6z zM;+EF>}zR%qOIxBBohh23#?=%++A?%SDPX#{x6q_{UsvwWg`wIRe_v)#7dAw=6E8WX&Y23~}n zKk*y%6pd%glSyc+dMgSbP_oPaho)}|&$MlVjO}D%O>Enl*tTukwr$&aW81c!OpJ-0 zY`%YY&!2L&QNfBvc*^& zR*}0sZfYSJ-2Z_a@YRcAfDZj1^($@h7Uj%XlRG1eB>N5S*@OCewyT}OjNp838y9t_;YreTLdR^$8AJuM= zI4+5LhfPBAChZKLY$b}!6m_QY!*j#EgYfU|3pMhzxGPo7>p@8i~e3%+k$Z zhK3k=xS&zp7zr}-t+Qo{D~dw_JMuGQ@e`TRN-|V#`E5=m55?ep3J#Zd2^@(E@&dj0 zrw(VZEnRAXZChBi|K{wulP>^_=2qLdk<*y^LZQ79e0jRYQ7@utQoM;Ia@z!As={gP zT1_xK-J{SicZO$SmI_qlT4lw5{u)|dme=DYgJ=YyJ3L_q0hqW=LQ_h-!U!sDk0`GM zEaCL(DEMc2##*k^2o1g(bci#bo>Ij~8LfZLL!#pJ$u@@jTWRR!-@oUOlaUK56AJ0V z`vg0~ACtIrcH`X^v7*yk`QP@~RLG2zT+J%di+j*W=KUUE&C)}m*ii> zU6e$3*S3P-;9QHEM;%3uMlf(pE(I8;ou1#a+$4Dbkqy|hcc3?zj~R}4;5+{4r41H` z4d2WK8TgfjWF(ICL20dtWNk!yE5U>@q-qvPpIF@wVRK7O5wB)%tr-r zx!N$q5UxjW2gCZl@lP*eP(+=Fz28i+sEl)rnZTT@{lfnR?Qvv`_1#I|$Gd#LbKl6Y zyaNEW6MW9HrV*9})XW;>uGY7`>8meq6l>O?AhQDKu zNc9J1PhY^)orJm`E}38S2(m#L0C1S?b(D>Y{3topjGZDge9-vV-!P1wPfX@Ii=nA5 zSL&?}up4aFL!~vFb8AZ|1-5*j^h{i;-66C<3_qGjN-D-ls?=eum1M!kCDc)W1~yT( zV}Dpb$Daf~y%BdicBbqR)64sWCXLrfCg!8k)LUkADPt0YaNH!D%8R3Qjphyw=@Lr# zMzTtD=j>dHBA0aZVH>*6Vizpc2$M*Xlh9A*yy1Z%)FMNZI0~qWEOCqM==N`+Xk32( z0%EV2(deqa!UBuAi{ifbQOwVV;}jX2pGNlQCuy|b^c9OQfaaafuyFb@K5w=cvY@z_ z60^#Ynvdtxe|EJnkc=FG*txmoyx;I<@)cL#g0EkwRiP8>G4=kLHAf~qo`t0Vo?enuF z7L-FICyycArK?##O5{nODdf`TK1yFFRBN^Uv#HYB=RmF8lIU*HYFZk|D~@~hVQ6x~ zjK&!|SHqidr0)&2P0t%{QCd_pL zQ}l^>eJ1SChSVwkeX;LC|AH zzJMZ0#$mSEPNW~Le7>AbbD)Z>aMnuu5UKSW`o5rDK?`-7behVeJO{T^r5+Xhg{Ek`h; z5^Vp&*4eGU>gn^W)y+L631DoaV|gEfzJ=A(sotGVU>R#P+i~&R$fg6SJ;C_kgz`&G zh&AgvRMLr)2gN%L3Mnxh167M`GjJ4&3k!0zl*DAlfg?f5=kFJo?LQdNEI7ErM0M4^ zUBKyyMbkUZ)3te1-8J0D>MRE%Vd)oV|NMna{bkrqbQxLq(On-Ro)>5FvhtynwNm`M z%z#MTyUbHAdxB<8Qq<2*wZg2*PMoO20(0;d8P3J(VCLu_;h)}e3BnOHg*FBV?fMgX zN&;&#rz~{s87e&nd>{#ifeGP*UzhI9n!mHxf)#mGh$0d_GsS}}ic!Sbh`NL30yY4KENTa=tPDGp=XZlDN<~P4=;(u|VGWhSxktF@YHrKZ9LX0^^aJXsh z3HAH9kc&_@s$ho&VF+~Bc{jD*^yQ@M`GC=G`&3j`R;_p$n9<@?n{{6<7rZ$0))wX) z5as6b1BX!_DMf_WSSKg^O~Zu^#Xa_>bh_RPdq~a=&mFlVLUu)MtQ!>w3uANY6r@i# zdab%bxLJ?AT(v2$phO?@p*^w)u&8c-N(4jAdZ8M_*8A?djcff1p|FQ<;Ur$MakT zSp7rqEVH1}`&3D^&9n@EWaK#n8lGI2n>0R_&CD-2Z8lL_C*AP}(En9sDToKV-USP5 z42`J+IvxYo1<%9G9CUA6I(Y{E|58bYYk~BJreKRbCcu=GI2^w*7&*D9-fkRsipkSh z4+B}g7rKI3W~QJ}Lr2nCX)k{C5n5nKC~D9`b|)UR&fp4a{qR5eRfmc7gU4}Kq3Fpn zFoH1=wLf09e_fnCqFXb68TIupOZpiw2A&8cm`5r%ewpw1#`p_sPdj^W3al9;C*>MM zi(j!eL&RvJKDn@wrJjjPhQyJgztyyjtIiQZ=S#Cc9JSA;FeL>{YG#c1S9OByye6Gq z@Im<1Ln;jhQJ}+80Uw;Cg9y9&TYOPj;>^`sa5Jf}cFfTNNoSWQYA+wZBuPiAgA^o& zo#~=csU=}j4~YiicsHz9i;OuDGq zlOxL-4%wvdC*`gij;*Q{ncR5PgdAi-VOXkXw)T`KVQ1{&Vg{Zv@6nt~ToowH_24%L z!7$r5misw3-WzQ1_>fEM$}4KUS|=)VsA*hTnKDkqx(rr!=D$(#*sP!CuLTXN zzbU-=S`tl?)sm9TpYc8j0($(VtRM1>CP>_kXjGA(>7>PpTNL&Qr_`Y=JIM9W^8oh~ z2o|C-)O*qxXda# z|F^)2riy2IK9ahc7rP!>izv#(mp`T!$SfdS34bG+#4w)MY_s12xwF}vYq&=zju;=S zL^q*W0P4&DFC#R+x5c*UiPQ4oYr7%BWm^;U{|chlzZ4F`r{9}jhO)OEXtfbGq;*GO zFhGsJrJ8H{*Tw zdi9@-aJZ?9!f}q)fk9aZb8I^-1#u^Z_biXZXC0)UaK#+F)eWsZme1`f7GZHbf{uEtOdGe+I@&e`sN#SpS6pkf!>m3U_0jd$=7i`LH{SpR zv zGw&u|r+{Rvx!`yKN4uzd*^gHenL{J2412hLnSp&6lR?S&$c&9K*`P_2!P)&M`L=L_ z1R%)du)iYSM<0olX%3}ZrQvTSHC|sFM({TUrN0R7{VM@O0tkCtE z(ynMfqJtUM7ugg2&HrC=Utd)rh@aZ_!dLAu&!UK4DfZPl2TZ;Vqg#2C_tGH3V4Cp}eKgJ|-Y# zg!uf`q}P57w@wNgM@-ny|eQ+2-bs=FCOM^?<^rIM;nBH+cz zFA1nRm{;5p8=;;@S)0TXfegX}>813(EFH8BX_<7rZ1V`Uf>hI~0`^ z%=!Vq0|kGT-jd1tdR%k^$&>0R~0BCpZ)ddfH( zfd8~{al$I8k;@9<(WEffg7Ad<%Cm=?;I-u*WA99r!#Im*R5&@5F^)RQSbu|cO9B{~ zr5Y@-gGy>!@(Xf``|N9o^nqHhgi!Hie(H2x9_DMUO5tD-gz98cuLr0TiXEv4z_eIX6g&TJxj?g zV%fkFQ{^z41^0Lsb+82E^~x1Ba38AvcPFA#6i7)+*>RnXPsaS09VTzcFKc`?|Ft2@ zdM^yP*BZ27Iywd@H$&e@Z^=f-X#X1bVQG(*(17|cDAYCis0Ly@O?H=wqB6q?x7B%A)k@JOO> zIBakT8r98m)Vm{82ggN5^ni_#DRA`WoA0{wBI|UmQOX$MAk66Woriofx&F9jW9#hs zimLOCplcz+#kObk{v;Z(Dx)aooIKXhK6PZjEz`P}y6KCV)uLk!CpGON%ivs1LiFS} ze+$SU-4vV>ho`WxBK*!u$02%7|9vlx4Gmi^RtLpCWUfc=Yk#xdc44I_>L=GK8TKNb zNH&Sl=kIUaUacf&W{K>~Lfc%=`-0o-NW8d)a}%4LHdwN%9fz~)jnks%&>TS&yUv9! zzSN=dBm-w!0kBM5FJNtT%2epeeg~mqKxj8VoLpWF&Myq%t+#1AgU~mO|KEYyxV1V7F*cjWCO9awWzY*AJB$ht=QXp{yUYa%QxnnXe}34IuvlXF%5#}#TMRn!8b%~iRQPD7FO#@1%{ z+l%84N398mkIaFLbsMjq)z;f&MlFezul6*vrnqNj|6Aep!f+Va%k;P`8bz@-i1=J# zUtPZ-{qc4N$kOr3{@0JClz^!Vex%ujhXLQh^73&|mZdHtP8O6mPAVc$%cdzw)6^I+ zRvR1h&dXXPS7LgUjSI%>DdGkgb5QcC%@|MSD)(H0jFrt85|I6g0E6tU&tP|`a)a_( zLzwqIdU3D{R)Xv+Tr*8gOV7Al347dX>)oH7d-H~QzeoU!gMkgjsIjTg@T%kH<$aqF zDDTURT5mLD@4HR(!?UECXlX3IP@Jw#FG!l64`^-MF@$!*y`{ui{P7w#ttP7EB-M{s ztCnrHt_S9_98I+1%+vdkvi=T{(U@fioCw^2d6>B+m-N7+&q~%c&XMra(#285%dar;X>E<=8zO`G_=5(sxITz28$Eun-e!s{$0aorSTHp`h68<0 zjE*t`N}xZz;;v_ZWo;vr+RpvwkFG_nyYzoT4q?BbvW6Nc!X2=J)W8AJtKkOFq<^`! z*Pn?!5@&dARq@GU$|Zn^g3O+k;`R%?u1B2Y_{pqu*ObVg!Wj3Z-)_j@Eo)DNE53M5 zebnt2roaa?flWM+y&_|Xcqt4sF!N;3i9oAub%O{z-??w!wCsdR803V0%b#6RpjcZcrv1Z$31OD?I}2kb^OvUi<;a~Zj9-T;4V!xQb%g6ER+h;+TL zC3qfBgWL}iAm?|T6#uE}N_lyYe5mM6a*ek4MieBSdhI*BW;4lnC;a{RzVv}i$5Zoo;%>E8v#aW9ppj}Isd_&6V>hB7 zWKj?*fD5vJLe3EYChm(O`Ntm!_z%NxeWT1687B(5^X){^D)k1{sus>J*j=bjbbaMBp6W15}|#fc%*aWqYhPzC1H z{A$noQ4j?(#7{Tx=X!e|sS|Tw8ZEhrnBV{fgti=x=2v!eEAP}w4zA6irf9~kENbnl ztNAA^$UL{1j1m^rRTO|bC)w5uwlW-c!F@OKGOessVWTi|IMKhZ82_N&I((()xXsaV3?1@F0knXC2>;7D7uWp#2!g`BFC+sFQX=y3XZ3dsMj*TUj!9tW=zFtED)#5#n%B!9r zlM45Fj)Ay8y8Fe|p-3qK@}lq+6^McGOF0CjmY;cFB3aE~C(%T`&HC3dt!89orK8Zd zn!RumzKpRlON$$VKiSZPBgzk(xH9+XBBr)UGT!2^U%5(16nk)2ke~9ar|DV%4&dSd zNUd)7kEYv@!{ZFr`*?X@dl)iGEN1{18(xrmt3s`Aspa}t$UIotzAMu7Tj6& z#iB9uSJaXLf|W|^yVO=w{q1Ef`G*5o$nK>53zlxY zt5r|4&sQH6mzBW}kb$H|YQ5-xO-v>varFBd{fLltNF)0Qe85)JR#$4y>nI*@^c`=H z#uIMUS2Mmk0H<6EV1-a{+F)(^+|6eOO{_UAnPA!h*c&ZX#k(i>VpqS~UtHwbeiUXj zUImxN5lDqei6Zr>@}~!?ZX_;@Go)r~K3vorW;%F31tKz;P{s=hsqx_yLyP8SrD6dD zv~s9*vw|N~eVZoI0}wne%wUTV8jTftWWA40N;pqepA)Xw=@BSsO_KXp&H0K+NkcV^kBNTt{G3 zWr0O`5PwLzb{;(-Jbaz1G?)5K+w1nK4Szc9tMBSp;{|>*d2Q$_hGl1N-Z$Ix%xbOK zE9ly8g9Q#unbim3wrTTcknK1%^JQGt{+XXZ94p)b&Dcx)9o%10E_Uy_zCrq90gshz zoDfHfDm_KqaH*UTliLAhWGQxVYy*JFV~uGEfjGL?AEcn5Ln@%FqLMOH+ug16b!Fa7 z^A|mhE_ZY|6+N5J0k=$+O`LLM{g|0EKe@pjO}hS1CHlXF7VJrbSdXiqN`A(8g30KA z8XAHarP`mrH~k(mF!As@FrkHJEPGEmj(pUVmG!5qZiZ~?+VN6Avej2o@fug2R${lS zJA^Zsva%PldDuw^!XE?$OzbRJNGm}+pZI)hlw#UUuvV}TZR|Rub2eLyR^N6FS7)wH zPfzDiI{YcBeQf)E)8DyM$I363npbBB!}y*gk`eI>=`=%Sj3!~gaap4&b8v(uRgOO< z%W{W@-^xNli~_6-vWyp~Q0VTVY&LCZtmlb=Q_=RwMASRFToZ?a31iIjgTXc*b?c0Q z@3u+zVw3*x;0Tp%$zhMOf1%)+#X_qW244C&Xb;6>1-_quYOs|b&cD|I{ z^-#f$J&IivS^d|S<w0VdUvpj%>C>!t zJdq0qiJ>Ti@$BI6GRK+W>qdoc1*Jr8R8G>Z;H8@gWZ3GCsG&WL{Ntqz6Jp;knHpf{ zHdWl>_<|{|`6WrHU}`O4L+jU8v3PxaNB0pdVt`K9p|UA>wof~n+h1}x8*Unq9BeEx zikLT7fk&2hQtAvYK!iRx2G0Il<0q-XKO-98^H$dY-}6+_JJ>RfGjz>r{oa)bHpJkw z0zY^ndu+BFB_TI(Z2Rp4qkfi00fQ1)P5Lzw1F;VG_cy+`4~!O!Q5_!5 zZh~W}I^3XG^ho}1AqMLqaX2h4T$Lb8c@34IO2Hs`4ULGI7PgP0p6~t;r;gEmMr>(` z>+7Mn&g7MS7}L78lY1W29tAE_cJ^@6t$9> z7S|@-j^L*isW$IdBF!1rAhENsOdo0GgkLmj(zmrr{jZeHPyMhwymR>FR zazgjx0Cg&~Whuk*0 z3_eu9_cQw6$Wnwtu+MzSAM3a7o}+g0*QXEaWQAa)jMQLIl<6Y8Y5hrc!+W<%BJ@%_ zkfp>!!;jMa_S`*Sjt&|y*tUZKCPfGK!g~~1{qyjM#4fc8lct=$@bBS3k;!fVuo3AR zkUx4pr%{e1yBc7qDW9lf1Ic{|oxXgbGFryMbHCaeZeYOIogOPA7t&8j{?}~P!L;|L zS({y+pTt1lY<8@8eID@Jt~cKgOAG&Rtsg*%-_2}mln`pkAdZet*s6Svh#}3EE;}+# z3iHHPXQ`f`2-VOzz}G_eXl`rbVTUq##H;^!9}@ba)0-S3(pW*HWn8 z83sUaN4VVHLtc*}-n@p=^r##*)s+Ztizzr8sgL}1RH)tnkw&?w?L>f0r5O%PVK+D! zim;5caK;n4L=#!Ws(5dzz?-K03~hutzruM9%yoG{wI$Oq@u}S zxh-uOZe$H`$mlvC9F5P8-+VY~G*k}2WV2)ujh@r|rgj05wo7hnH}AGb*nRmhyM1Vh zv7Dc}BLNO;QjX!`S1dGeCR!kqpb`FpX10xVsdgy>FV{Uyk zXx*+ncM-@c0;~Ea_a`C_4adv6>{~BdWOI8#OvjKroF6%`EjlB(U&+)H zTdJ6P0cI^ICHji7|3R1llPg3s7dicR?PWjQB)CrY+CM@r&CD)`X+}AL2n2qvomZ~a z6We#2f{Wzy8+7zEHzBqV=W6Mp_4UD#8c$>@F`4B=Mop2$tC?vc(t&LRl%ec5+IvbB zu)=%MpO&qU&a_*L&-{w_i5%mb#il8@nsmQfhc57m+;@tt0QQAROh^hlKqo&JAOMXK zk%O1!Z~({y%E1u%4xAJRC-=rc%ff_n-f~10RjV=FE)E|bt_&-*UB0rXDkm;XO+nC6 z3(g_@^;VEM8?0Qy6wNG^8O3|<75^q{mP^M%uoKhLNS;wL*8J82cB9o8$djjkr_Slg z6ROAEO86>2VVF)ca>(I!PIBFIVbif_=~@_6Lh56saNSBG*a`=0P)*?^kq!&dhRJM8 zgkGag+Ci>Vrbo}>M~!W%L;exGCTC7NhT8PjJZ^vlg)%9xG=jV|gCrX(@f6GNg|z!| zaAJR%@%a{9>>YNEu?2qpdPs_UtV;v*M-&=MEAzn=-iVkYy^1i_gzw+`;fP#cu~n(T z0qd%P_qOspI2N0=d+oK9u9CGxlF46Zy`KCxAjIz%U7m+-FOq(Y`tTB1L;fuJZhwy6 z(FEBd0}x4R`P^M>kxIE@YaCO#V1!o#!x9=86MM?J<8bx!&98$X_1nNSOUi^%jyo~Z z-itKhQ+3orOgJC7ca_jgL z)d1%F^UUB2Jy$pY0g|yXF8^Cd-Qk8+U6R*L6a{UT^X&_BoA;%^0i^}b`v3y~M$vob zKsQOI$a;wbE~^Jg!U2ky(3EzfaUkFRZ!T>xitU-KzVxJDlXm1R;qp%8$RlF@;T`Fs z(QvFJtBmoW(7L*}2|SBF(Wk`2oHhsAj$xnlnNoEZwhMbNdc>We=BJ6XMfI55zL^)R zUG-@?1&9I|1PKU2tXf<})*8Vo0{g`iAf$%;9D^|S%ICxLq4~cra-WgqFIJn1xSw4M zw%Ybj%&qvyqCTyEnikAsx)gS55|7-3BMGotfl`Z%jTp0iqr(t&6@$mLjkxkkda!_t zgnFNlm2sp9`qCW5zmIg71oUYUfC*h2fF%Abk>v66E9bOruDUZ7&1kyZhk`#98KpD| zN|iXuUMsMeuy4=8iNSoS7?(Wlx~}N2kThM-^CSJC8{#&3G@jK7Ha^4eqEY%Fz(BP( zVIkh(0*vYcy@l>{c*4)9$cj#@7jxEl5{V%B4;Ag4v`mPH1_V0$QaKVm?56k-)_Q^f z&fa7VG6U}CScczW!Fz9%b){4vXs>aheS7jL&Y0y6M)oq8`c0e!#yac42CDvyvhvE_ z1{Sl!)f8tsn-5v(bb3TXr6v9EI4d?{YpBWW@zscV<59oI6J`ez1knf8K2Y)i)X{T? zSq%Q5x3cHcHFQ`NR0Cjacqz)ga+FfP)Hii9Er%kDB4{)$nR7#;mNqbc;dsn+CM$%m z2T(Vo%eIJt{6yhhRNvGx*I{=6Hme|Q2qA@u3wpH>yjI`q>E(JOhrK;PuE(1M?nW;n zd>8_>{6*RUW`R!X0^oDRbnS`vSASOn@9QlZL|VBC#Xmw#99g&&p|HK2n|CC1njd^0 zkxEQi|2vvmAXqpForT4xFZK9VJDR$;NIy(>J&@dWN@MPBE}(m@5YFMN-L8 zGCvFgji?Tj){4Hia8I+pcy-T}%-RnTL`Wigh$J9bG}ZWetwl?2i}Z~nf0e|(HypNR zliy4W@5O%l{2V{>93Ec|UvTVI2gm(`X*Tym@dm15BgxF00o@a`_#{NU;>)6;f|hj8 zkW;T&inhUq7*be$1v76AUJ+*W}whE(>O7<%5>7wI0(FQ~Lf>5bIQl2bn z2)FLn=2LUt8--@peR}su-Cq4kxg*95CY;H;y_*hHnPtT~j>@VkMz3`k8jT*9#uIwM zhQdE6>{is(Z&WKg8+M^&PMP`Rw(SlxfIj$U9H??_j@95g@8cwne-C{9+`@Zo$Amcw zqXg7so15^OqX}*6!Q}tSpDRg`HNOg@L##@t`?5o#7_IsZwYhy#NgCQSi9AVh$Y~SC zXxjmU(`1W|c-NSa_{nuw2U<>=$kNE%qUctB?^6F=dJnj#rER||k&+bPVWrVWuYG>F zGOubKAko<}8vaT_4E}jfan~R%5sLP9`BzB>MUEZM=4 zw>|$--1gvaJP}c#9R)9WN^*FwL1=m#4Ce*62|dW`M@Vf^m;6Ja1G=PPI^AwYa%19* zCQD=5))uN$PYqG0@6edAns_EIGF4l}t{2uGL#y8n6{r6w{<>aqL`~iKeD6jq>?kcI zB$VwFwoYrr%3gc3B9zI`npF;n>*?B72N`E9uhnLmbqEHeRbxfZGowe?rgAy1n@uS4 z+_kC8E~ZgG@E}<0DT(HSTUyBEiBx{l#MZoHb#!#Zlh{*VlJ-n?g8A3Kar)qxl)R#! z&@ba14vDd|FER43p&cx zE_7xa9R%!@LiDC%HP`~&2m053GR_?5#EqIQSm@g@QDKF4#3V5Zwshd`73Q_KOVIEV z+M<-bAn7hQ!(&_6Vp1;2f3jt{;39|-Xn6)#xuG!#taV zUT%kr1h4)u%a$WFq&UNp=}vDkzvj?fqpu?&-SSCI7uublvq@q8{{5TYs1J=^tsc`J zr50XZ!2r^5zV(NJen!VstIQ4)C6%}^uuGC*{~7UeJ%HZ(Jn6J+>3|utP+ROY6nFb5sT>4-v>!nG&{?hG6X;e?N2JLx=cD? zhOM2EzWJmPKScJAZ+VB_Bi@lBsfp>hB372?>0jLKBILE$Xh@XrL7v2gQ(9t-J+w~$ zOUTC`dC<_Z#32pqJUj#P?Tb|Mw%!y`J83EWUg zuSTkb{9da6e6y0--lyL;^pd>!`qZXuY<_hr%$akottJX&gWDJga%f~!?F_=@Mi2NV zd(B|&^u_$T=Qt{O3k_NzD_31b5PAk;3!E4g-4y1c`s-g#wN3bsMBD_WWmj&Cu9G0Y zxRlnedP2~C`=ukV7;XYo)6j;CHD9lh9W65r$JB8WAY{CwExMtqFr%YOQVOYLSgmNC za68#%^)w3YtD5&wz!2jM=iF(=*wTJ})J^eynZ5Hi=mZL>Grg?=82Vx5FU8==uy){< zNYW}ls$#1rj zd{%81EpIoiQ^6B7~6w3PgnCoj=h9Pwntx1nc1gmH%OA%CVRQ(Tk}*%-n3-|D9~l^%MSnJl>ab z)Lxg_5sCi)T7VLn@LFS-j2XJ@?N($Ro0<`W5lE@>Uq){IShMaeQfKqO`3!R`(Vx*7 zB1owjY{y~W)g6mlQmp)5k-pw1^JdrK=|-f6TgjKR&|tcNBS{h(V09^>7pWt)l3rs= zEbpJ4IT8{}8yu&ynF*p&>jt`hRWTUS%2OG7Jv#HN@0FxWhwqr9WnvA-+h5M2m~-X+k;Xqt zjQ9;j8&gICJZr{{7Ck878<5GK5ls@In43m3c>c2-sPp{HVl+H5H<>_oCw`Z_^oS`+ zNv77o!0By0+3B3Y>)-vGI${1%;}qLwn1O=HNjDm~>YwnI4=0Z~*j_4Xt@X^oR_BEl zhIlEYIMEs{PzJcartNAVo^2Ny!FXrZAf8}Rm|vg?jm8W@{P^TAv^{sG?MH?Dt;L9n z*0CJPYSM2q?+bw6WV0KHmAR-lJ3%kr*hDrPprr@^UsNs{eZtYzBd!Gi;80;9#(P5( zekJM~_6e&^?!e7u#&Wwq;@J&Y?YvzFVv|`?*Y0U7DqYMkZy2scf}z5Il5Jo-*wS{6 z#@Ydo;{|pHF*vWFB&VrRw$UM2pfSZvaGsQy7dXSFL zc8TO#{1y-=I^l3X_1YZ>dj5(FG_%fIu7qCa`}Nltr9#=NS6lcy>+va5{I!n3;7|It zx1RSR#z9jFq-x#4#@VV-|J|~BlOd_-vMj?vYUZhC85}LIrSt-%16~pTLwVQNuqRiSgD$qMH6PExo|w-oB=h+*35N>Qpmx%X49b>~rVT zMjemZuY26UL0Y}T0kafy8d~>4Xx8ChSD%c>f=B{*3R}+Da<<#SKMEeoDc_2bb$ zZXMIf=D4|mM%?Z?y*F7;W7!jmV44RLETkuvJS+aYpXVp)-<@J}uD9L>p%?)m?S9Q> z%W-4_d;$eN9fb`rH{Y9b`p1DK6BGqfi3a8xsTgscbI#b@Y<5U)SwUW|P;=yPbWXmA z0_?zElzlTsCBr($jm2F8O2{QM!of-G6hka z7v^V0PgXFmFq;a(`mc3S_wbPOP50~|N$NPeCqfdjT+SH{lBw#Mg2!i79F{h-C)%9e zG-Nd$DyDboNl#4$FvApYUT6UnAiey^_D0u}mZEa6DwJBf&YxyF7zA{GWrR;+ ze=vA{8}eS@ggAetyj3);vt-`+OeRV4I!z|xb>I4@7B2=a2q|N$6bmNA-Jl3{#h^A+ zX*+&wd*QlZM=Q!h*sF<~|gEKg5T z9F1l;4Hc6_AQW%V&O}g@mTPHiQCUK4u{6WB8JH??BmcnJaVQ6N^x#`aF3g^NA^F>% zwL12mtnEI770+)(2$kI$tt!LvyBlHG=^7Hmv)B#_$UGjC+`5CZw@tJXjmnqbbZBY+ z@w+}ZJ|_=bhO6%xZVhqK=sFOi)98haE0sZ;C(Fn`Fa+IvpQPRP@_#0bLg`~kw|4FZ zJXt^o@i`%mF}}e`&zaKcMx^a};+W280mY}7tU58ko5c0vHLWJB*~O8M|jrlB6~5|IMj zfzyw`!>0Yt-DB227z^%Z&|llV?YZ;ht1klz3|!X9xl(_AL4DZ{+WjF+h|f)pkGYXY zS!fW74AC%+V64}S)gQf<;3eKX8*u$xo_CGD7M2Td23}(+p);hiDvwV%a z)J{q{`MLZp$>iqmc;34G#6hz&Pmu52btDvhn#!N}%fQ$?&QNqs+3flP+WxXtT7UXz zXj|G_jA^5m>D|G19@PjaU)*{7zyubrWlp=iW#1@i14Up<`#v$cfcjDA*CvQktNVY} zrN~v~DC(IVf4s}$e`xF(F1ZOGoKvn3?kNn=9(R52%%>aSDV6wGn?h44U~+>-3D9JX zV#1Kr5x65U@Wx;NO!V;hoG3%(vV!1TmS5Ow;iGX9_@sRFPPL8FJwZJ{=bMY5gpu84 zk?nE4Yb~X>_4vzzau3s_5Yn62R_s9Q|8cfZzj^*w)|pfIMFC?`lv4C`>jymiSWW&ByIYR3 zS?fH56Yl`y1KyOHRPq1soZ?U|&edUzpj6~(o zaQJK}jmPxKCtPOzOv!4>=}dHiU7lRvQkd^2ZXY!l(P~WSOW}oMY=&#i9-zLCySyB( zFY%OW|JLRIfHQ*(cHQLnRnitT`4^|2aEy^n+!l25NB%AnH5?6XUTbhbmBq6{@+Zud z7sJbHdrmPx!(~SK_TJZ5>M#|FzH(RMHe8lU;3N7b5b7#~YqU*|0;jecSQwuC*XOg_ zUx)7t<-krF*n)eJnqlgq9SE{W?{$^ac8}+myLi%pLvfy1B;DlH$)116BvMBUx2Cqf znj1z~fWjzo!t*QYH(#Zu2lqvYH=wyY|p9=}LpdL!+Pw=F3?z z1sEW~ce4%@i9N{yL;!}mF9=}@osAT5CI^e1V3oQ*!{N6e zsp`~LTApLCYL_L0MAvrAO%-5MXB>ViuD-^JNjhb?uZ zJWUiI%KxMyCo*8leKT}4O{E#mMsz#I^GnMSMRDH(!IBod6t6iNEEUi)F zo1#f#GW13MRAV=S(Z-8BmP428+`=?pi)73dC9T6L0^9{9T?-&hQ0eKW%5O3lurf$K z#0eK&5vILb@~O8;T@xCf=?;oYmnw>x8(VaNP&HL1dbO|8j0PGoBv2H~Nk*>+ZZ=w= z^*)BS515Fc(@)F`O8BHr+EFP@L>M89Mq~!cdT(`xib;kAI~q~nUF}9^VlITy?iPll zGTo8l4ay>|h)nr)4@f>2Q%}mv14(8=&lJU-Ro{YS&}2AcaIIK`g!TMMjTMQC9&c4o z0wUT-ES_|)nqweBNVc#dNiqR})ljoLuTRhV1I>%w@3(H_w3kICEW<#TFpsnKeux`G z5K{8Vl!NIN=K-Tb941b;r6XM&k2{>qFUnNirSlJ=BS3{y5Te zA|;(Sq$rHhc??)ewOJA4tJ6c#7j}JZ5lMSU4~FCM^AYk-ab#~Gp7TuWq^nf~5c=g| z`mBme+oN3E;D@Gy1RGCZd)#`cVR#;VxxcC+@uTQMPf+v|9(&Cfm|tI>lNhwS1m917i~-cI~|H-K!iEH-q!vjCe*wcnx>Z zDqgkJbg7xzt^tfDYxB;!AZe8Zgtg;BU;c}z5eQmO9B~} z*l{e3g(0r$6{1=z9XgmMY+o=r%r|KVm1_Tc`Y2&f(Coq_+t(8{+ZiH|1qm(xBhMc! z81vw>NvMpw;K^^?7K`1E)i7oGrDTmlCMFp*G8S4p(z?wUcoUV_GS!_@u|5(DF*#0zmVc@`tD zPSYHIU$|U!IbvR3+#4Gk@scIA=GHPY@QHs@%CUH$ghFG7=JtshotMO;@z{ZlMxy)E zpm;c=f-TywmiBEOv^(nR+I?V9MCf=A*ScghUmnbMHR7_M0}YSDb}e<+r| z?&tifMpTDXVwms>?z5+i^>?)@trhQb5kPiWUnK*9IaW534(aAI=?P07VcYy-3{|}; z5Co{VRDE>D>GOgL;@U?;0kSd{zyRtYtO)sCT&AB|h0(!k^Df843eR^uX| z8e1!yB-k>_ z0?A07TN`FB_rG53K(gEKFRFf-`Ywx}lUxe}fcFC6opw|!MP_dmzidbHs#4q(~DHnC>ZI z+}goqwo|-?RZ5GnS7-m|penO~`NkKxgjkBrTN`^{)!%&X{ac#6q;ee26xnitc8q)~ zDwM@Z9#6~g^=i8_k^zlcgH~U7`@WyaF;FAu2gJ)!JJbq)?o_lFDS%!)CM1buu*o8u zIx-j<^WG39PZm1q*sOHnP2UwN7~^CbBuruiIBOI-!jc&ui7>Xn%-#F(oO>&r-Qea& z=y?**+iC5#jCS-xR*56NLJvKRT2=VuzV2wdC>18ag4#o9`Z-x@||K+aO%PS@knC4nMA6$7BF zrQ2Zv&^U0XTRGIL*U3Jk)mHl6)_7x`qaTtM{np29guoat)#i3FML#(mH;$!m>KMtn zpRm^s_kXwAUzvVdv@;HR(QS$DjV>AiLV)Z$B`sTg3!hJ%4{+- zOXTtWXEKKxGIC^-yZfy*j0%{T)u(n`u1u?6?gD6`DyeZS%494)X6 zv}0;9%P5k$9b~6o1AX4tp3+Vm>EqVc#m9Gj%thJdmy_;)z(pzrNS4hBNlFY`mEpp& z4>AC#W8QKrJ7XE1TymMCt2PTZ=YlP@*4~+^2aPl5Jy z2Oj@ib>S**L2FBC`oi7>147Z+^jnM~JmK?o)A>%Thk|4joBD*{z!r>(|BX@b?YrLS z6eccM+QwfZ zb@M1&9SqKxQ0_hggaWpsB3kgljTlj-)JOGnP{7Q1kkq3CEU+NVi>WJy@k|}p9KoD@ zmL{b6{Xz|PkehWM`SyPPPr&Y`cG=$ey0yl#3VGM5ep5GvX%TTXnkcA9>kUT|!r5** zCUx&eKVGi*cf?vRlbOI&O;GDVGEH1@jr7;ek6b9I`|uKhW2ai4oV=<<)uwM{U9 zm`j~&W1`&MwVM6lF>2bOQO{}tc0D0sWzdW@=HmVc#NJ%5CnkZX^y`PoxaO`GbCVD4 zXx2C&PjhwluY<3Aen@y?%yh;4{;;90;TGC~=Mrk?Gg~;HHv)FKakD0K0TmAFV@jqZ zk?wAsAq#p*b944azc%x7{i4}W!H8v{g=9Sps|p0D;J~y4mp?MOj-&JLh{Wd}mDAa$ zpl(B^xE1CsHwrw#EW9%V7hNhLKZ8;tO(&;4i8R>79#cbw&DSLRC~+i=-!)Wd zu<~0Y&1D2K_R`gJ_cI%7v(o5~v8KY6Ns z9|Gr{Ua%DxLsNmN;Y?L>3ShHFrDAaXd>xGaBInAnUCoa42A)oOzTe2*b;67DcvV&- ztQRd!z9!kV8uc!F#m&hhP74A|_$Fz`r+mLID0TB+@O$q%0+(*7JK1R<@Vh;bu(DX} zaRhE1chKJd^#1NQd)4D=#=VrM1Y=Tm`VnNra8CKVxb>b57_|`zTBiLrl*upoh#iZ^ zmwIxNMob{K0D26_ojbY^`;r?gi8JHqJ$ARx#;%23;KzY3f#~mv=sCKb&&jW1_v?O8 z3KeO)ypo~gq^qSTZf3F$XBIyaitQH_vm`N=^P)v281ckh9LvvL70h3TVq^d0MsxmP zCbhh!E*EIq1GIN#W>t+-W%1q9&N+^l9X<1>MF61UBmye3g&q?xICtN5_G0+dKihnO z*u=YWQ`}ff$Hm1{S{q;Q8^d$}I*5X_&Mi+gVKZ z+vStECiDrv*N*4S!TVJbSUytb0olm>7zhrGTjdqXY{T8J?3=Rh;{%DQBA{JUlbyQ< z47X;sD#ENx-ss|;z1cZ3sXGF*KS>A-O$ohalU2+fGc4^2no z&VRQ#2Z$S2126rSv#cRc1Vq}tld*7%7%7I_jq)($04@cJ^*m^l zWs}rcurTT`)2$EP=D)hh3r?!}2BPao170H>LjNOIU7yT4)5M(!Wam$IcD10 z3v=FG7tUw!RBmK!j<0p891B34dIppK3CR0=1s9DiBG){?PVE%xgKpOPk&tSUNebC0W<1|N$Srh_8d7Jl3(!3B%Z{W?Pxby`lid@7q&EfAq7>GTDiH+{3C&7 zaDjD)s!?ze6!-!Jc^Ekim75Fzb>`=R3?4hOXVLCDUdm`&vj`#)2@9Q~rmCyYYz9YB z-K)MukcvFlR#N!v+oa|te|O{qf|mF-<1s938QtW|5$O??#rn&vOu^4dgaXVzs*9l< ze_k@Gbg|J$0|QoDXfnenS%cezFI+K~-X2w1?2lw{0uV)VhnqZFd5 zQ53g3Y!E#AHltVmDB zCd6X_k9<;%da3_UK5oSQ*v>OU4wsA8hGKzU_axGc)P(U*$fhbLiim)ZHJk@cHYXui5@+}0`rm6}(?oi% z_qi}u6BTNUzmSXq-8JLlqyNpygd|Swovl|JDteS#)$5`$JPMq0)9uzxIZ2ZuUGzPPfDmLHQys{P zY4|7UJ-KdT(pQBlFqx^_8-8QuZFM8#+t)xS-Rc()Bg;TR*tk2i;Q3tlJ^4yxtT&5} zwzRL*<0*;<{tyyUg3C0Gj%StC_!H?37>wU8ydwb%a>`7KmYf${aNM_`SsdPqh!=F< z7aagXxhwUPGrN1NNSe-SJKiYBi0=8uy~po8+MVIyPTSJo^@-u&$AOJ#-uSJ{?#WVZ z0P~OKbJ3?t%vLs(0OW_OSv0bc;70_DGIM9;JhTKXSP~u^TCoM=^JL}&O-RNGZ-3-~ zOo#pWa{`uJjDs{>=8Oj$-;=1Dd$Y`GjQM_8-;_#TFfOj0Ey_@Bb^{aFAFr)8K`2pxKRLJ|x+QHEP9B-YT&M-l5Ml z1wt#kr;+Aa9~-4+j~NHqM(TPM%X5h3kA%f6L_bA6+St+7TYwZ*FV{#DNZFNhTcR{{ zz)s5K^QKo&q?6171D+gAQY*C|KIbb4yP%Z9zj8ZSuqtLRNXJ~r{%1m4NOM_&}0=y6v~u4gWj%Wbp^PU|2D9!K@^?p2AI`s2w@%fKYZnV88<_T$a87^1xNM&t8l zG41hrJ?Q?{c4Nn+*A6e8vV!`M`piE0x^R?sZTPD~_+s1CFjSj9!EkTI4 z)^&bQ;#2ZkzhVTWKu<$MuFH zMlHUoL=SDWu%Y#B2qdE-sy0a^`5yt_FVQc~u^2^~AQ*d5ieVPIGBwgjZP~E-28zej zD1IVFs*#~hbVTKz3w=KR%4srJk_mxFTwi$R4Wfkwa<$B{Lvg%9lNJlXfZpLG5NO1? zk&T<^yx$n~^o-{3A(=Sf)M9^f$#s=y{fY=E-8ssnU$W5an4*%#hrh$5P!1dD;Ci6} z3woEV3zY_Ic$+*hHwKQczJT%q&ZMoA$6^MXcL64FT*`DV-Oc}Tx;i`XVO~{lG-3lV-3WU;s>1;mXr*YIk7ylZ zzw*j1$=q2miYtB|@KN5o&4^%-Nn=gpA_y$6*7NYdgy`|D#^!?D@dx`WUW%jA@2K9)fK0!VbG#}FSNX@v#z)rDWXF!3wt#GKyM<@*09g6D;eB*l zrht7kMY@%EQo|I<0dQMf{2a`Sj6?RpN0nliinCztI zSo2ILfpTnif}y%>%1GEHEjnTM*7mr$gbww>l`f|8asSV!OHk*6^C<$$MxfYrFN> zY9juME)5YoTDeJs3N?ZbF9j}2HAs5pT?OMnb)Eh7bw*Pl zVJuKwABB(zrcve&I3>O3Num4e^7@etkIra8GXjME#~r?npMS(h#tZL5R{7e(&)w$- z&-B^+q4;UsdiMjLi_I2wHt`RAN5ja)v`aLffF~{5kIJ3ZZHtXW2vo{-cg`cJi&<*b zmXT?XDGzKxYZ#2WPH5P4hOuGWU*54eoACuyc87OLC#P^1JLo6TvV^24_+UqLFRN~M zT&?zcv_un4kk2urQ6Xl%Kn)oFCu2OE*pTkq^v^lEe)uWJgG}=R7q;*f?zI~*iuvrg zF@P%(fE63RoG|B&)TN=nk|((2=OFf|VCGBjH^}kX!%uZXa|(VxSqct#ejmgT2u*U( z;*x1{N?+5*<6|sHbT<0_13AFjHaZMWz`JH2j0nmz$ zg_-*D_YXg{9Md|Pj08>0WAphFOU!DSg&N9E1L3c|Qg#BA6oQ9P?M`_W6}f);4cE+D zx)s?g&AD8B6LDh+7+r<)um8aueNb-tRuZ44&)GhQM6x3E8kY{<-z`+nGJmcrFZLHX zwA`gL^wQw-gQBVo9a7&rf-XW2T#l)ziGooohO9Hzz?)<@btsiBvs09dt#qa?3Q&~N=Ww?Pz?WsK_v_#$w3DKY(%}=ma`Y9`n zlG4ou{L)fhufx6k-LJa9c_ubLpB^%l;9RHo`z>+Vn}LMDCz$Z47F7E70!(L}Dq|Dj zB%&X~o{A=e7O1S*OxAZ6$%3Z2^ku9(6!_`7w}&7`nmQvR%g&;fu9i>n`i_`8=j+kr*5Jhb9+u zh)eBXrX97Z<58nwLV+9UxpeUY_i(L_8zH&4fiZw>%*xOh8jf%;(p^#I2u63H z+fDjW!7at5z?`gdYgdLrp0Ipv8j3h{aE;#v0VM|e@;FO4&K-s?*ukKsGx)Txxf9I! zdHP-w8gckTq#${@rV)-9R@h9AE>t;XqTuMp!FeGm!&WI)%QmB{si^VI;1@$oDy}qr z9z7pe_{wxYz{vWz0g;8V3llYWEl5vGa&b-~j0A68q79Kcy*vB{S(?ge#ro+7D(41A zh5B<7T2JsMNnXz#mnI?s8lEc5w-c~w8bCON#s#HJ$kpNqwh&)K^a5_Cm7&R?h3sm;s);nXIJBbC<))3D~uDGZP{ zd}10B*TjN_Slbtwlh-i$ol`26x{5WWNIO%uikuc(Z=xn!q6E7!3?n_}zGQT6m;fnuie=vQgws&EGo4 ze?}v6jZuCYV5$oam%J9Gn10Tiy*Z!qet+au!A%Pzg=5q|PDR8Cm*(tISTp?J$#4g% zy+7O5=KPBOFMg;mt@~o~%HpG8a7 zpB>{ju%D;E1|%on8w84A+cCvtJrSdu?!zP>wUt`Szz-aM%|^Xth5}E)Fbn1fS1`n!*)Hd zL#VoG7}0Y&^f(Fb1~|GsihC380N;O2w)2x4=|0G41#SEW2CZYkQvL@ErNg1-vYP39 zk$AiD5iFDAmq@C*MpP?;VCA+DJ!s1o!hM5N#SCui@L(gjnpP&Eu0;vDwLtku-%;BR z#r!1GNsoJ4ixDunqNoU*a4Ns~HTUY{aNAMK<^85&l9|2cn%jhp8 z1~t#}9oHJ+s?mveTj)0}h)E`yZSBPP8wZ;I@QgawNcXj)RSG ztLGTQDb7Ec+9K8j)%fRE&PY?_4rcP(CRy8tp?@K8zQK&8!ii?)A0SBl){DL?B<<-i z5TB20jiFXmBYp@?Z3+pJ9Zz1KvQ*eV9E}(rQFs`h04;^8ecneHyP?Ai?)4LG(ZGTh zIP;?T!A8SuGYXF-U>em}ywA)ran@sRu98;TtSp;w3h*A-*5_w+s} zMckv>SGMkN35nzX;ENYzCHN&cl}KV^j~yOHL!qH!K{lJ`kv@xt8LB813V1H*{!@^| z{u}HVW|ub+*Qk0`-1O!w44p2;2?~>v-uI9|JuuE|Z-5s)hRZagK#M^HFzv^oW*0f| z37M>6EzOweQ6W^u1YQXygBDAd>a3_lEm?|D(F`vI_d};RGxUPzByZcRgUvzR0$d~S z@tTFj#rh*=u%Y=~b>G*thGU^os^r{-n?FhiZCy|~Kt{O#j7n@-f|NqaHA)FOa=9Ss zuGEY?$=l9*ePq;|k&%%9DTJe_8Ay(kTj9!Tx0ZIZoHdLUpVBb-S}-psV3W)1^Y_>z zIXqW;DaC{sPF-NgKQ#jPsrefWj#_f<&C!4_6y=tT<`e*oW67?#P0kmA)ZkhJp&_c7F4ivjZ z+1po7clW4i?nh(03Z<`S`WVT~AZNd$KZJ!Ab5N%qBptZ2q}hA^s9F?Ic1Yb`aCBWs zBx6GRa)}8>WP%;!L23z;`wJDORuzGhrT{rF)8Aph(7nyT885~X&fJtns?5KJ_LmBF zHlAxfM|fkA;}(Cnw)bcE;QA-8^WT1rog?Xf-vv5u$uu06v!2U^s!}n)7BxI;&bX3~ z6C!-Zu_atb@z(-m0@JZ1k17WYPL-t)uKyuF`QrO)&o(-}N9+uhB|k?F#w3SPPyd>5 zF!5;qQwfeF1eFO3dkE9fXCh#Nj;(&92u}SaM z!>kUcA@~Kq0zSG3dy^yGK2#Y~qgDxP=_wejrpbHaGC*E-p&&@u=&#&A9eLFs$vu@+ zj&lf%ayD033vF^{G^w?OFIh}MgCjx~MVumC{J9`*=eMtX;p@U1FW`$sKTTOeAvjb@ zIs#XLe=y!#O@$80c9*}E`$+4qT+885l#i@fWHD!?hKLiQ++wQC>wq%4DnA+va4S3v^PKXg z&6^DHJi%9`{Af4qEUiYUYBusUnyqOf2W}-B9?d=8yAl-K$0uP>@*(I6*YYRMwH|AV zK-gQiMA#jk_hHNB3x~DLcD^0-c580U485}{HXSajP&OG$IYrGXNBN^3V?7(cx`wmf zU?eM1+Y8=9NXh$L6(=PU>;r{BCHgXScXUzFjX5HM?2II@f$Wn~}!J*fhEE;M0h;8FZnXr(bh z;PNKxbdAiI=?NF22emDlYfNdi;KVa>;m|D%Cd_1$mCUEVHjx?Ym^Lu?sGDSz|GH%1 zP>F2(Y{a7oTGs-(RfEiWvKK!ty|=-Z#%W3s8kF~rXCuC1cqjzGIl*_vrpz{PCVLYn zMR_E&AKA-aN*s~yUUOiJp1-ZRS7RZsKN(g&-;SM{w$LFPGczbp#(P9`Xn3Qza^!Tt z94`?9961YDQr_To5s>sk(|C;O&~`uYPl>vQDU6e)78X`7=#Fhu&^jg7`i|4F^$H`B zR|R}~Oh9-BxmcJJ#b|3my1-N{X0sDsr&f)w_J2~$g3Z zMx`knrazV|#I=s44wkov99m+|WC!}R+Ar)ZVLZ@9czzILf zWQf^zTP-@&X#V&NiiHF|hhefCe8Q(aqdAxzp4WkwWwEbioWueKycPNq>7Cb}(0K&7 zAng0v4v1eqLhN#BM`M(|8yjv$6Q)qa(U;LJ;tqDhORJpTH~+*npi+{aBH^tjI4;W8 zkYP%*Oz~~{po{->B?_*Mk>_giEKU_ldn3JXME=pTL7~3Pqi>!ceg0MAE zipY_Zzjar%CV=<_h41?$256f03Q!p)#Y+5l1z}>nYgI|~Xahu%G@G>WS~#nP-M8fs zsYshscmIYkrNcPFzn~)>3 zmC|`A`(I_|TJihp^rN9~k(zUY7hd61P4;eyR`i;J6OS>pV@Ea0R4if~D5n5L;)Vg! zWsINAR9`VATMu(N7`*HH0gQf?KVJ} zo4fl38SHkN%yG7l0<&Ide}o!MgqT;|glPVW?>uEC118QJU@omD$$upwR|5W}s%Vc^ zARdHF52H$}YiN{QkpGc0A=R;D+UEu3>v^r_6obQ>hHYl&L;eci&JY$C$FjRdF{3g$ zTCi4jN$Ih5IF>jz;R;t%wD67(l{AQ3b5Yleswg1(JI1ztHVj^A{GiKM!~ZoGk!B-w zy?!vX!YZsAl@0|B0z|eK3wH)GcB<;n4M+EWTp)?5%yxiQZ7~r(FsgqZpTxR4On|l% zj#YpU>xNF2?2Je=#gmC41D%jf%CHi@A6&Qr=T5WY4m6Cy`~EsHVH_TVxIod5pW?c% zs0t2VQg7@#^g0XLu~mAX+-80%wz9Fs3wJv#hEc^hvi?nxl$A`ce^*JhwaI7aR&P}J z>;8vVyypc$$Whc>R`|*`X=yB9Tsazj8^hZj{eP+^s1e3Zb2-j@zWsn%&t}aLgVm!$ zJfn!KeYi9cM|(IH-WPt|Xd>%+opP^F;5PF47#}+UpfYc zMf3(TGH`HK!iJND!x*e3)8g_Ps~-X}5FaN5`8y)5HD=L2aj!R+>r0e4t0-um#nLg2 zWw*-c@jc_p7qDCK{36##L$}bgfO$+(`Q*n^t(%2pNSkG8nBB6>dAUyo+DEfww?i7h z;94BfDmRg_lXF@#1mq@0K5u_QlhITzX=tv+o2@D@E!kw=^cWwERO{6gZ_egQ+<#q? zGg_gvahytkVL-1WsV56lK)?}r;@eOtvLf=*4(@^tbNAi1vkinK(m!zEwI>8&={z|M ztpCtG{7CCjtL&XmzqiPtLvc_!b_k)|dVpG!K0p60z8s2;#d$5k1*Q`FSC_{qVmsYd zeCJ<&gpm=+E=a=a(#p14byb8O`XNVgOG7WJkahzOX6}FD^93;?DfM2zzhDZrzCzp5 zRDY>Oyu@>Hq61MC@Qz4rnZ3cQfZRE0_iVPk4D~o**rn`TwX;N+f}rtD4@T!V{7~p2 zTPGY+nPf}EBI21fgxKTR!YJRR$BN3{cO9N0t?!lDZF1;xP~$s=nZOhE1%?yT8c9_Z zuZG0}$@VO6#uWoY-oMVP3_vPYvVF)Yz`8YIbk44*zj-NkA;BftN9qUL`6V+q$iXD2 z$f|T;&X$spG(xhp5g*0`4F8lF`W)DDg2@`)eRm0N%=B8yLWBgx*~>CnUsRNw*lbR4 z4?aO&ige7%Cds#cuR5oux`TKtGV`P9MyNF-`AFBQ=<5PAwFdqMdidLrEWUU(7yP|tiS1XU4B@uENa1p&^>)x zUh7UlEi?Zf?U&JkoMpTZz{qH^g8sT56Nr*)99(1t08ay$qFZFbBSCV0{*m3aux$J- z2&Yr&GB^c(=O$re7vDTs{@Zw|aafGMp@CI~o#U^W?Jc$XLpd#{F3U^ByIxYx2}Eq~ zsn<`ioZ#^aJ2E}7bSIB3IN-!0GllHJGgKfBGZ>b11=B%&-W}!*eC^B5)4Lcr(5j5*z5ijHRQh0MlG1i4i(GeIge2QO19X2X25$W- zSg&5cP$$SJx_9ZRXzP$xKxO&hCI*UU!{hSk(dWd;5<9j+ewA_HdIVdrtq2Fhid3x6 zlz@Xp{^U8Jc5-cKWQo;%5RqTttCD3dNKLKO@)61jG|6H_D)b1jhkt2VUvk#Dl+UDBDq!ChpJHXiE7zYViWzMnA0n0?8 z9xWiWmToz}=;^mR$&#qHGd6=exWUv1yvqY`40JRO2beTx}lnvi~Wb?iqW<5ca`d$47BtuCeHVV5Di&r4nLo(vSY1mPTv zx$`8^eX4)`Xcx-Ar&)-D!XisL^&A3xHynq6FhjTzw({$MJT4xH=+2ewVbUp>ZDv%4X(FO{;ij}d8}Xtn%AcTR<=iTv1gV1Ztove%6F#xlXP%Uf z8Ab;t-I9{56vmSARMR9vHMg9ws@NtgBaH9pJqP2+r+pjhFTI&JuyRTNL6bKCM`Cq3 zj%pk8N9N#6bTCFUJHcxK?D74Gm6}`p|FFva6ex`;v-%%$5+0mkS+*X!6_|6)fwT-4 zJ0ww|YAiA6_B+Wxo#-zYt8GevcJt_ooz9E*7&uoFFoPPA2`7?LpTui z<4AKm4%WFHSy>4jAq1$@-vipr>DjU`)_S$dwG6;<$!xNs0@veEc_)0zG)P{jh~wcK?7FOSLbq1{m;H`@F#Up5^)_R^+ue z=9s~%Bs)go^Lh-h7@jXB8IGFdcgk zn-Mx+nP6ZaXmG2dFp2^%th4n#8yXInBJvY~OuLO4duMzerW>#A=q9aQy>)_T|G1q} z41#@hH17eUFQ4B2OTO@W+;U0l_Qm8+%CoXs50J@?-_Q6u5S$leA4|-2IQ)fwdFk_; zC|OODCUc|(MBcmy&5tt=IBwnYn(^@d++hL=iegTa6rWat>oX3crajBvbuoNPI76D4 z#+E199w(x5vw61AtK6{%%c#gLG7TH=1+RQ_iAxTU^gtCmnSz=hR`#5-Rn}k?S!1CS zC1;JmF-l7s@jZe-U*|FF{+|F72mug=EyATGg^ngHdg=|pLf`5-NTv>~xab+=e`9ew zRHCr)rT&4o_*lXGTaD0eF+ZTl0urbH8B>YaA

    @SZ$*hZ@W3Ip+qIQ=>|r>!cu}XaR{&8cMk%)^qp)E2mg> zI(MG|TsTi{J)$*TrGypsth8H8)Vl99?{?=$7=EX!`NIR-oBqO@&aRU!^p~}a5T?dc z40hBC0w<=|JzaP4e|(G-cdp~SQ65jeqJ%t!biQ0?0|SJ&agA4rgR8R#Bn6+ZGXg&K zjFZ+5xvgmJGa;Y+@F16%PdlZanbT^^r?O;ho)L${+$R^uJDt^56-E+Mvy}K+b+CeXl9byPw7a$Doifuli@{A zs~*J?63)SIhMv6qyMv=qfhkim_1FV!MAw?aa?l^|?91YNXWX|4L+$1MIZpuiX;e^T z=jg&9Ug6O%GB#((C_9*32e`++PvEUq*iJ3yv>#jwlT^fpq3I4}ke6Pnn`b3h)%K&Jm@;>6rz zI4n2)!zuNI_Y5cYevn`P@Lh2GjY3+w>F<3^>`g0hIWRGlY^8TAbvo6xU1rGafM;C4 zd&6(xYV^|XqW7oxH*biA{7+m23Zlll_G)-)J@T}M{y_TNkuYO&)r8HjF;bi z%(R05gw5pK#v^^gPv4#GEY_w}{wDov0zXDE@W6oD)!f>WWfV+@J>bIy-hWgl07TDjEdh265qBCPpK&dJOX0kP zbTxK_>Ftd?5}rTg~V0HX#Uyn@$2u z@tE(5|FKga7ZsoIPgBZ;JeNyzHTnw~RUd^N*388Ds^24LyHDD~4UepJH%wZRCoL$Y z@FolSmQF#n_KdDlqd(0VI9cK~vLU1W%%gBDS~SMF=>`=`aAHDHqSH1gK=RuJlaFkV zre!5~aXBodYlV1oncA65tLTl~CTZLY{_t3)f0#3#uBvu$yo1x*{WOhc=6xy7wG>&m zLGSC6^4k@W;BBDoaoy5QvZgH|WtzyqAlOSgQ=2F`P0n~I6xarW<=-0VrS}PoB&oTc z39dn`F}%}zV$VcgUES%m1_rq|#`mzGxL=_PYgiJiqn2?ap{FHZ#J#49bA@5jOVf;j z@P7hUA(Lhn9I|vMgerUBzaKaWMTQ1?oDQJd#k520Fp%qJ@U!`WB{>*MG9zunrJY_K zSu#`Cl*?6*BfDKOw78Fu?f8PC>2SXUO-&wCI&<@*8(CsTg%yz#2kDW!pQe~b-Z*n5 ze0_ZtUNcq|?}8+r+>LL|7hmo^`-F}PaNG?VXC#5o?fbr|h&($gfaxRhlK+AaTMi9&>giDVG+uEg=1u*TO0BkhT#H;kl95A+v)rc=!6^=#yYyD|#h*H0c zVkD5g@+A75ZyD81&js*Wy~Vxh4F&ukoX6Z(|KC24b_hi%f@($?gQop}U&Hm5{q8nD zlkUrrE-$j0DaJvMz5)8WhtSNV-@YqD!Sp)Hn^=xb5~IqX@*|79vk4!}8wL}@8CXn( zUJwDZ-8qC@o2*?)rqt=IACP_Lq#FI{vC9j z|8d5j!Q|YiDe*VG`zS4Z9c8^1cABfnu`1~1$rRk^eJnZe$s1t{%w6_HAts8*Pkfpx zwmkqiM~g)*1KOd|pMR`q*<-IuYTbw=UPiMZ9-sq$12t=+)=nX-fE1CiE3b+W%%D$9 z#+@;ChEbqQj4CaW85sbXlh};1bjgu7+p|j1=T@-w zguF8)Mr7fZ_^lsTm|_{F3qeUILaMff$U^Dnxmhm}doEP?gw5&*AE&t&)UsECUL{qiQtICJ z8-!Y}w(mWTagP)5LRVi0fjn|dItIUwyY7T#^nSFBQ;6QMa4Dp!hKN#BHlPn9Fn)L@ zATb(~P>kZr_ij&!SE@oU!a>3|W2LrRZwAi(2E zPHotdwHZU(dKoYK0$-ickBs;_CgAhCZYwoJH6!k)zCZ_Euujfe#y{%^r1hh=245tN zFnV!2^uAii_lO5EaS3|h zX^j>>5L3nkzRel#?goGIZ>XL(AZ)ooIPk?Q2ArOkXR}Oa>mFU_jV2&QYjK#qhp}4y z=^{U-U#JU$9!WaT&aC533%O3ridtkgE7I{Zyo^X2oUntl4uRUoDTW(v)Y4lcE8#)0 z+wVFx`7~g=^cke>3EQ+Lo2+{}+e=7UryrFM14GG7ZJn-{w({lk8f1&r_CjT$!bH}! zWt8)v$?bg8>BQ_UoyY!95+@3_QDu8x`F7J|(1+rqzUfmG0KC6O&`SJoj0C7om_Zyc z*1u=}qz6qXYv|`!p5^&B$|q-Dq<}*qK}oNr13?p!(9mRuP{GhNQZbab?^2#n?p%jc zkvK%kqJb$3C;9JyhLVGUOqk_nUQGQqW7$@J6g>Xp)5S}id6ju3J$tuuFO-~lrsL3~ zf9*fZ|C}S$6&e$5c0$@vfjvd|?wbW_*uUt0th6wH**pZzXAN0IMDH6O_E>~XDPuEc z`hi>~R#XIY;YE^~bR9AqcHKM#FEQ;L=^_V_Y4lu}&GRJ@a9;ljWr{2%B1z2j zGxZm>tn|#&&D-lW_a7YGwEg(Lt&n5FK(1v9(;zT>N-@fp+~bhR$Xb`%Uq1shdS4N6 zIqbLuoF~Lz<~?hHK@2gBI{P1yUTFRgQSZQ5XB%t{2RqG6mh-842DG`8`k&pGG&{=#+NGqYyRS~F{7OuyZRHR>n*UcOaUBGPo7yLLW9TNQZC zZ27$bPEOshA)&t)=_=cxrjw502;Yg>E!C1)2sz$(dVsF+IEI!oT;``8dxPO_*~3ms zO-(C9C+BHVTYP`xSL#1x1zsSN+4>&9H`L=CiX!ED0mp2m$99Yl%mU9pFPGYBc7b`L zu$-qGzqk-pdR#d)*4T)W7A>XKtFXJ8Xk@KP$r|GEcVM+ygca=HHYkS)*cA-~o$~Ux z;175CTw^@HHlfv`(OLt1Cdvub-^GQ8CrDUrjGkLRZfG5e8w)i04H5}`53ysmMevQ#B8Dz3vO z-DNn2tS#kzYGm3ki1E~OCcroLfC|`D{ro2DP{#?52qcDQzqG1LK#%5s0Q{m=y(b+U znU%|aGvES|Mg{&mhuZx(+JqlQxCTC=IgfdNyj1L)P<2;+NeEDPm$^DrKtBcU+V6 zS>p8o<2vreM3;FI$o(=RE_k7FghX(L6(dFKpDY3FkQgx#gTHQtnyadia)qAfh=M&7 zlh{|s*t2{6xX+DC%gbZIHoGcKyRDoD+s{t=*YtK?$HhsI&5$7Wrn1P#&w&YQ(JSx3 zR;=W*JMBVG&C>f0h{qQPSjZQ9{h5o4O*G1tt?-!?DA~Z0$P8U_FZuE|t&^BMML9R5 zA!7e_R*=s?@+jUiZN+Qbx*fm{;H3!2y5LA|!thU@zWwuBJUhc{zI)jfrT6(OnlC<}a216S=_FJJ&RpgZj_2n){EuQwH>)21E;&&sP#MWy8JXQR&BZ@7BYx#4Tp{|?uQya_zGKhDOrk5lBn@WCyMy`NI9;LVMov!ftsKLvZ82lDMdjtN+gAQ>GPcCO%zva)*$@#~q+S@V)tlA5v~Y;d zet}3Nji}Fe!)<=ghXRazOWvtsM>?1${ft;@KEO?6VePRrcR|0v=pmW?1Z!Z@ZPUnoo{RF;56)b{yJPae+!o)@dly>2f=Hwy6H3u|%Ia4;~$ z>!f=N5=L-5o0qEGoy5DbJ~g%GN$`~m!Jwoi5_=u8wp^!SAx}hQfTM(NC7b7Z`-@_* zc-+~mzUA+UDL8z8o-1%a8VM&z6n!uQ^fJPz${h}=u9JU$D7)2AlFJBBEhb-LaqqNs z>36Z(ZSoM#Z%BxHd^FP6dM`6$WU4Gp`kP8ZN++4`YE!_m-`L*;dhIi~$jg;N35o1& zUQXZu*Q>)e^5McDa^T15_vOf4FOV^my-ZYP4-9KWFjYl)`PWCyO^Mezo2#zxUn08@ z76uDwa{V@Wn@2nm98#2m_=Jg{&J7=4r~PPo;zw!Yg}#~c{k(sJ-8x=0s&UaCSXq6{ zwrey*GO2&8f>~;|lp1(ZnCATn!@B+RLa%)2Bt{J54hvg~Jz6fH7nAwQbF7P??;0*N z?SWyW_NC09;#VhtNU025hUt#2$mLWj2V_V-4>XG+#~3JXPS<7wCLZ`n!u%0xE}=*L z%=0gbjBo-{>5q@B{V(r;GCKNg}DQenrhM^?&u}QCY$Xzm3&my+vVdXNQSO zrymlH5TnrL$z@6G9t}Z_xy==r{@AR5C8%=;_7;Sq6SHJ?C1+4|%Ye%9co1H@DLkh@ z^wBlI%`~hss`y$_3tIZPlGb+oTS$UQKIXJZBg;ayqF@55a)ibJ5uY8?`0*`Hg~vS$ zqM9%_eOJgBDO8A9#k((1MpR#Ld8K$^k^T;0;&~FO_29ha%!IE~px5ZlXUbdYBXhp; zLGHSL0=Wuyy9^n=KXH7RlV1h!sHF~+iuysQ9A~_^+_xr4hy-}L)R}E$-Hd^C)X>qS zf06Ay^?9~W!_L7Nw7lZq2i(k`?ngRUI$(`@!^Q-VWm$)Ty$c{AM2V8A=#yXyK|0tJ z%W30cp`d?ZWeK21Hwxi!SZh9$rmAT%TFtPK2@`wJ`KIh3V)YSMGwNt6_}(*hNJuCz zSlf5O{F`YDDLMT1Jh8{#u}ePnENM&YTHI!wws+*0)7IUkTEWeGw5ya2ak&sjR3bpcE6K@K&mp!%kpS%zt=N{1HT z&%Hodte?8H%lonoTD|PVR)0a3e3SWQWT-49+JiQYfvVWsDC;upcKNf$D3r&@m(T48 z)GSNAJ5Z}Q^*C|xb+(LTqBe=EU|_6r#Yw#<|FKvm-tLPWpK$uOZ``DvB|Dd~6`w&x z{!EZHmGJ#2Sur|-%-3ujQ9fM!MO7d5%Wz70>|wd~#-h^r0!Uax38lD{FitN$cXBh8 zcUD&WIV;Ryf>*q&VvYAlmIrs=tn)k^MeVA5#MYsDucP`ve+)zSTkUzMD7rO2^n>!y9Zr&mlbC$a5hr3&aUi$V~%Zt#V zPSu(5IML1H1Qh+mS2|1ohK1^)lkd~Sf3*otTdYucp6^GUjLMNQd)2GcDPjmi%RDYC zQ7hd&%hIvR5XCs7!{fxH_(4>s(DV5qc#2i&taGoW^|+?xWM-qb<9M%cJB^QKJCMak zsHwYbiy&ZGe7!RA`>sskpo*FSI>H zHe@5;JoHV!7lp#Cl3$j-sniS8b+vtGbg|W$W2Hf zZi-==hWF|SQ}piX^?@%ilgEBdEQ-814ucJrJ=?j<>(p(@YDEmMD%M723Ih7mcQ#Um z-RpY_5TzQ_>Q5xrd~fCGO66ar@Mt7@QSs_lkr)|A@OvWf@YfTC4-H)u!F2nNS41VE zuXkNt*W{uCl;ZPcR zkLiWQlt>!tH0+OhDJJom>~lG%0b+!#v1Dd!NO?}~^w1x>FW0L}^{!}y`F9oUBK{jV zt{@PXl6f96g5_?u$H&q*A?s#VIRGI#>@d(Lk}!!j%f|XINGI3xhV13)y;@v!dy%o1 zYK_}z2h->H$@q9j>uIv7z?Q-8F?!4{!Ob=`E=KD>{c8BpJR0@li6#eK> z!u(-;QB{Di(;VCL2wTxlny0SFjtH%@P49iahaOKHc(C{)6MMYq(pM#oCSt?CB z-x^-#Dm2UDz&)>s zsAzXCy@|>@U?gMg|2(%;k$>yoO>aTxLg2#SO4EC?j3!!1;L&uk%-zGGQ#XK#^(H=!G~M`Ut;B%D5^dDc^+exwSiO4-}V8!(ij21w{SYrP!} zAo4h|q^Rux;%X5w*+1^=JjX@dFB*HoZFXN>RR*ZP65<4fA`jpCKV(9X0S*S_Gq;RC zS5$48=#hk&H(A{3FRfizF1TQN!v^vK91mZ1f{B0%@~l@q6k91s@{pjhG&uppzg$+i z0?utMZV0(UPlE_*Q+{)tkudQJS}fM%@k1v2Y)W8UpQN}=oI=Zqu3kUn}bvtJBNC zB_Jj#RBRk+kxqGB8c9LWDSduiEYp|Tn|OaYi%=6thDJJsO`pGbFs*iS6*^2ieW7qN znq1T*-qZ8eOAYC!z{vY` z{|};oda)qMn}p0p4xo;u*Gbc!93(l;YT{|@p+reI(5g9Dsl4**WjD`y;0l|0p;VyW z06yf>%XtrRzKD!yuqoP>W6N5!|N0%Qq3!7(@%oNuoL6+MHVS#c`;IGbkzQd~Q0jg5 zJnG>z1WZhl@my z=ls>;R-xez){|xr`Fn?XzcJ|^X;JL%0ygDj^lY$2Ku`IX#x0%O z8zF1`28~8}1Da6Qt({=*_Hv`yQx?D8zFa_-8u%oEwdb%BLO3mVC)gT zY*QSRe;13rkbWwQ_;@`}GW?{ViU~msaMdXd*Af~L9y^qnAGJ5P{8F9G<0L7YldutL zY+&-k&q@$18W!j1cL!Bz@T0P5iu?C(|7D)TB$q~?jTla9_;}WP6`d1PZ#e+yHW@6Z zpg_>|5YaHxRVC#LxuZ&;+pNI#M9sKN%)4vi^L9i6B*hQ+aBWsz-9$M7;tCN+i*1Je ziGKO$rMKSvH`9MV$C;l5|5h62!!fGI7#CmlM)a^-AuAr7h%kNqqMUDj-EKtWXOU_h zgxE9~{!kk(%F_|)$rpAvOacmY(h@Rfo-f2YszTUw%7xON4ELB1ASgZ#s9<6tg3YSCT z?it^@%9vw=Tv*x&U6lMb9Uu}L{WKCn;QfZ8OeYagq9l|YH==<|*}J^TY1j&MbHT{A zD1wAW^D`RTp)hceutiHM;cMdh+9RZ2a^6v!D|MiF%dHBO2GU*JoXF{BVk9oLZ;{~% z>&-E6y>I@8FV2k#$m$iVM-!YSF6h%wX|6V`01;1sykyK(xSH<`XOj7=x>8@%`yC;C z3Iu4Ha_c_2r4bP*_)id+V#RqSe`5@9mqcc|OtHkZxYiO%-G9)b!f5%1RmO@_a;D!=0H8p&LLFV)u#5*273g zDf4NKnMi@=dZW(ud~Hcms+_<4I-9Lf#_bn{W5I>^lz-o{?b!WBOI>zxb+x0;H*c)4 z)<6Gj85uk5> ze5@2@D-(jXi0JQY6jE7gXMUMFck=$=%wfX*`30T@j#30{mxQkjVWxi|WqPj-oXQHY z5zn>9i2#XLnb4R%G>Gw%1yw`}Bo7FL*nHMi2cui%EZq-^?l}IT z>qjYY1RTR>vtM{en{5Wx#vSk#x$XL1enK?V^JH4)Bg}d3GUfN&-MzEo`A}~Y*S>+LmX|UhlwIoJh8U?om9>wzfpzUjE9k$-S7G_O1~zxb|~sIO&@@SX8M zsPzQ$Nfb~3Umq)~Yv+3&sZjgSq&>hyvua8I@^T$S@)M#Y%hw@;iIil@FWT;)w)?yr zjTN7ING!tNVYw48HQPHQ(&T{s)Am-V=eL4NTa_b@4gjcVU3EDzg6X(+KiTRk7{lwW zjW(Rv`fV$rxZDoK)(1`p%?p>)lDwSygd)m6vQGXnfT#+p`VS3b%?itkN0zIho!7Oe zoyRF2uPIc%w%SWdR?==>`wJD^#drIi8EU?PLyC=Bb;Bn+qpASytRiZ3z@vTXsbtlsJSn z?zCq$HIBx5i58W*{iFL;M$d`URHM1kKH~6sx5Vn)L}n{ifB^D$hIN+0!<+YB@xeu*qaoyj9Lz6)W!^j6(72vB zhc2dhOET7Mpzl#G;qR<4GXNd{^l3$lY3PSV)bqfL_z=Ja(GrQ+(AdK<-ZE@z4h~Ud zOD9PKCB-N3{9SUZNbk!vo}qwV)Nxk*Nq%=hp#_2{wrxBGEex$CbNnX)rZ`WArVV!thP;qL%F_gGy5Of z^o2Yx4-DV+lpkcTsPOAy%}{iNJ1e+x9Vkr>g0BM8eph?>n*ldmO0gMrl;K3)UJm6s zR7d5X0*Aq@J_-j-Qeo_eDW;!Uq#NL=EZy7>P}ZR;sQJtel73zBC15ud`~3|XarK^6 z1Ccn#4BH72HBF7pppcJzPr}|t_UYl~FAas<^It}UPyKpN8!Yd^Z019<@M&Lh@4JXP zUb>R+ez!@A;#9Wdax@=~Z+Jm#8@{Du4hp4S4j;WC`9Fmn!N?*6|I$CyvP~Q>UiEzv z1GrYJQb(AEta&dIJ?zFT$`QzO_XLxrxzC6_%+8CTvGNbOV|pI^un$QtE@)uF86`~5 z+{lPq;Hrq~T$_G_;FGbvBsbLA0`$7KeD`88OFikOW0E<&F-KL=$abj?@5ZM|J307k zhhmO*_H;twHq-8orzPZx<6|2VUgdGg{fhx^W!t;>>kD$L14!SQ+<|@-Muy}SG6|_B z@t!c93hGCzEnBwZxZ35}TF$a`9*JbnaOD`=EsN`|QhTyyBPX-arc>6Y`|W3U|NmHR zNiZ0Khb^Mmt@o18bH{B`aFN+V}!0aGo>5^5XNO&BxD>+?NA$CQq!(E8Lwvo0kF!CmEpps(GPFOtelWvu7?bS+&cOi6@@ zCxVx}dzXS+<{eN5{sBp^CC+6FU*NNwpd6{Lgvp9FxVN1YUx*Adq!>Su5Y_#nNa!v=S)7%tw=Ez2z$I?`#>^x%^i zCf;U1&ic_u+z0 z>r8D?wkka{=O;>4#YT!a>Z&o~S81%fo;c@e>$6Qp+1zyJ*(1ptfti6a@&;jhFM?jI zDe-w~+I4Ky?sXENSPxl{-h2;GFsRoPhaEkw(s6$m3>H&!CVFF(h9$2bhl0&H9-sE^ z$8IGan&3y9FFeLFpic`@acmXvM&gF@<$)s0%GH=xZ0)T0HdDo;ps(H!O~zVMLDTTO z`mZCThDtx>72KH}c93!QRi`vr5h%y8Ej%Q9#m-ZbV6tCZ4Vn&WL!_F&fa$2FBU+7ktr7ucQ=5>oglQkucj-gj?ZKfH- z_R>>W5K^RP4bQtHPf7kGoS8F%>Jn|;_n7J7`P`que;Q<`UQLbGKLDg4cK&1Mv;XBC zgGf2olx2$-Yd^{|Zk7UVONZT#9m_*w@dt~~3u2{y2enn`XdO)#!GW=RNT-B5;H^D* zoqFz5X2A*cU;tlCi z;{~3b$F66vgF#@LWlj6nz50Qcl2S-+Je|Ma^+1Am&;{@0E(O!vOE3DdQC=>0e?Gp0 zAQbY2iIm|_esWjSV=b*;D|5BjJr~Sb!)LbthBq@nTG5`WDo;NA+%AO#Ks^K@b7&OP zk*!yrTn&y^px#61UUHh?JtJC~#m09!^bEw;5&J=v%x@&D@mf&{hJVpw^^(j$%L7zP zV&g|Gb#2?4qMw~cnN{;BDR+xUF6jUZ%M_NAF%a=U+DjXjlhWGiX-VOts7@y;0d+i>@>(8Cgyu^JCb9AguRZCRLr*n3-uFaXpOd|nmvvH0=& zAe%Yrl@QSxVEy)J|1NDK#kWS9l%n>FZhH+KHwL9kIYv4%=v1F4Tq1U??*24J3iil7 z%`7kF0LALK+f>ZDU$IfvxGVPq4QeONN zSALdSXu&d)#g+wey0z9yNmlaOgT?!M|KG34EmJ>ba|u%NjxA9r{}dd1k=GR;&?j)O<3#8RSYix8wjT8SFm z2Q!tm{*Lfz-^))-=g4TF*z7&k>|wo#tSblFRT%^34TB*@Gv*mClM$vpWs+wgs6OS* zax-8>z0MQe_bqP|z6x~Ron6KCAltiL86saKBZvfYO)Bz{_-G?yj600+`9QnN#0uF% z&bRFrKTdD8JNin2QOM7hv2Xij=C(y%cQQOB{cr z$mn9_?ajs)NxnykQn*nUOn5%tPcBMy-@YV2C14Rk;|Q zwdLV#GyE$UAOhMeYTmJ=7nNhN$>4{U{wuhjkFfrFAYRTZX9xWln&5sj2_y&zAP7J$(TXka?qGmCWH*_eZM>;K&U!x`lRN49*VBc>K+qlL5SZ=lek+Vw zp^}A&{i=%KU2sMm17}6M-<810nqMYzS0UqIfq`wRon*w|Vjt@MqIw6YPs%IGD;6Vra`Nc8 zMvO%`Y59l4D&O|Y6{d$1s1zuxK@X20b}mqoJ$e&w2pMzx4gs&vT|~JI#V`p__3SLQ z-%klA$tJ*xNFOy+ju{-G3nuzDTlVl!Y#eFe%s%Xvs!s5%@<{`bluA0qO?HuaTs>%x z^70K9+}iLp>#8?yYvP(Enp5G1*K&h>cLfao;pV#jMcI6HA1Pi!e$!9nhY4JB&Vyu> z+0KulT$IfN(Ig}ShVAiB(I?Cw{f4bfZSY{8%7Eea&<7a-qa}D%LwmXnDCYYfh&dR? za*b!iQd8V%$vH&qS>A}OO54)mgr{Px>fP`$lfn%^-Cis|qW0@%C^>Z2`n523F^tMv z!a!5^yz;Lkb3;wwHQQVFmCHE7E-@Udac#i%q1Rn8Jq-yX&GIKPMjffDvp#)KB+uN| zf#+m{i?@yn$0GHP#{!IgN>N#xKk%faBI8y6#IqbbghL|s-CBW4@lV4*R$BP9?H8qU z*;217JiMM@Qq{o=e#B+(P>tna9+NmitCqW$M=u*;Y$=Ka3n!X*VYwpJO< zlV=^j>a;hm(Nun-1rpTF47PM%*mVB%h_B^{vGB55{JQ<2uPBTYfs~ulLhGQ!IOI8v z`Jj%PPbaTQq-A8HT2pVs6tkBKQkHtq>{%TyXVs#!*l6}*7qh*wR(Fz6;hRK!oPH~O z|3zWefV$QFx2@w>yR+w!!OeCeUD*;_>=lV=cj#Cjq3;B&3b$(!YeHklxWm6+d@vFW z{Zdv?{kB$})jhts@-fqZfj~a_zX&jl0$aNReK`t%>R}XmbMgX8hh~%4-|~x{LaqXI z+e|bEX+q{Tblcsh`py)QFpex)O(owlf5h1p(ssP?tQ; ztgp5GPNO{4dvI83f2kx(0t7#KJ^!qTmE?!n-brTS!}OhOF2M$9R7X4-#1GK z$v02&%YXTMuYY?8S6Z11KO6xki-KmYZN-?K(cXEpL}$s|XClDA(rmUI)Ix!nNM{Lm zK;OKB?d?KH5`bBY4wa#?7>fg`(~Okpq;SSWP~jU91HVV_k!87o^-O&7_)%t^07li7 z6}cP9&&RX+3?EbYDokU}n$hpVz136( z0Fq25o@y7?9viesPfJ0f&I_VBi;9OOtl-qJj271(sTs2@AGISxQ$$`2*=&caF!EEw zzFFDgsO71GXupsjV>|lJC##mnDpP(HH7y)*T-~K6^-3PElW!O%H&3_S7cjST$c9`~ z(U0O^MILTj#aCU^Gb(l6H^Fi3GRPp-osj=!Mky?DQA7Q7J~D6;5>?OkiDX zULoHKzU(Z#=XG`(82*)11~qXZjwBd8@Kf%XuBIUA+&?8=Y>|z+uQ2PJ+-U&3u37;w z(uyMZmyx!7F?IUPNue_I8)E2_EFz&X3Y(%6`FY-{DV##sP^xNX4&<)r?6$s;ibJ^` z*zydYq3e&lGdv8n*sS*@|iaFv2%YL()6NgL2;^m57l zKOWmbx~FuYK_pE|XAuEyMmkglOkgq@g<|?KB@k8h&xL@bG35W!u9_*yGp#=o7or4C z(+-7mnF`idC29&t>)L1j>9ygcYhZU7D)fm|o_FEr6K}KQMy2NQ+GapV=bn)pqcI^O zp-nFy$FWXc(F>88Pe;cV(wB^{k2F&W#$N_C@gzVV^HgDdta?HkFXR1+Ew2Pr#l_gH ze>Ds9?v0{hKwjq!f8Vu#fZ zDdxHQmdIpZ=AGKb+UkLWW-!f42d5^ zWjkI8j8a;`o?3yyrs(A}42kil$6BWS1T3OWDv>_t%VrH>evV0c4+pirKMLzDK~u=& zUAY5;R=JUPckZmuMGR2pO8G`wx-gOvrPClI8#>S1X@|bnC%S|O-Oy2DuMyt|&X33L zN2!@MZl6N4BY7FN_a7kYe%G|!ko|I0bnC_rnWP&=5~EPv=>@xbn=K_+cKU}`qc-n{ zG-Bq459I0sH+>Kolq5{jJ>}R_OAvO(1&u`^O{YSReWbE+}K$mgO3JUpr{43q0V ztJ=FsoFWrRJ(*uF5XBLap162YY?Ord{plV%VFC3=(an^*OP`mhAED(Rr562Gq)kjD zd&E54rPc?!_q|#Sp+I^B1YOXun-jNN?jrvf8$ohZNGf6mIt_oEOJ3M7M!xu&8-8eF z--CD2301wd~C$3b(N|iPm0!$?}BA zm?#2<;T8RrM&ZN`|(rQ?QYo^0Y{Ebo4aef^U$E)vwT>0=0iF|E3eE}@<}RRaVl zTph#)Auzww$MU}!s)jHw9ydHA%>i|KKIaKPZa8mNzQI0BDtE;VlXTK>h2f`!|6*j* z{-WphQ6z`Iu6X9k2K1#zU4xn*(7(IU6bmh3`#ExJ%9}TAkOoD#|DnSD8kE% zC&a8cX&h7e$E1?O_T+3x=dnnV4$LPP9(5-l7rXzRoLyPE;Ng8xsfKNN{x|t`6@jve z(t6EEklJxP@2U5G5C2?XIQU2Q?;lB!Ax6C_fYWredkLSKEL2Gdk;{7$q|5B3_K2n= z`_}Ar!hvH#Ik1oAm}fD#T3?IvrC+wA@HzfmId{%UMNd6y`ldN0GO>d>1ko^Kpju* zqKh?7x993BP{3RGA{OX!WmWw^jhrpSLp7W3+0_`7_LgLx#h5a5Kn(8wDdZeL00EYp z^O5{yxA)+y!skFzdqHs`v4Sci-rgoyVR%|-;*0UX{O9Xv zBng26Tb@p%i>M5}Nf^_gI@Kn($xjIaMJHkzb!OL9O+Q3mGlRh3)}PKAuYcS8%D;f+ z)ceIDp7*`JcI5ugXqU9FdhXzRc^7>N24K0>m5jUV2G>XVma-KuK(nk_WqM$qUW$#U zr4#?wWlCIdzx=k~IQ&zTLQn9hWKKa1C{4Z(Vs&+O=H_Y_nBZzfHm{3^m110Pu15TE zlNIfEtWv~;1vH4)@9gowzV%d_r_>}Hx3g6T|Ef?D=26!2h3Hv^c%2GB*g>wz|#W=tbZ7eD6es7Xpu%w*x zn!N2EJd8+GgQ~Ga-p>_)rrz<`p{YB1gzXt!K9s+0_Zl>@8Jfy8}Kc zt2LOf@e&%tJbb#MCa)qyP({tESBuVIUC?bvR%bSaPhPJ=O}`x!LPqJ&jOAI)uJ(ehf~ENDj6Iluk<3f*!D z2GaPkgj4)=?XegPch#3e7xXBmN_(k}JHUc2jLQcR*prz`&A0>rxVX0Re6K%M`kvB# z??)%Cj(`oB*WsH;>`ho4ypKd-_$^KE1ETInHAmrtRAP*si9x`iS#9>~$M@Opw{-En*uudE!?8m)&}d=tKP;K<+l_F9q44?C$Cqg!Y`wC+Tc9T;cq zB{jC9Y4bFcOnz*7f(*?Gm1WFpJmLSuX7Fv2C*<}}+P!ZGDGUs^91jq(hMgF+UvGtb zcth%*#^>rsEsk2+-*Yq>FQ>Yi()_h3-UFk{l3yzDJ(*URjTsMHZa^HiA4TxfWw{ty z5Y6nvS0bBvIcGl^5N_!l-?)|r8#~pD9TXcRfd}F=O5M$dNZ+}&rX_5CdQaH7_=>4P zJtduN?)6wnNguAshrg%L=cZ^xiPv6v{ar>zd2o(+Q9AD!4VZ1>rFmME>hkz`swSp+ z$igaADXk&Hj+v(A`9GAw4<){rEY)qBL`ek8K=LTi>}bo}1+6p}aT);)!4mdj`8JsP zxybS<9+%t6%P20Tc?^_cuqcr*n%Y|5YG%&xVScOhJhh>0wo57&p`bzq&$Gx4W@8Cc z`nIwO(~(HfOp0orriF8Fc)}=^?m2*?rhG`6o0=kfY83)Z;hZv>b9CW$r@JqA30OVP zU$4FH?)srApi)fPS#w+*I~D9l;Vx^s--y4xT;2n-ibT(5kI;T@F8Nt6WyZ2n21vvS zBj>)3wKT9pAkIvi+k1S0Y_8J9YAQkPB!*z-iw}*cwIy$sl)Gh(&hiUpr{y(P2N(sP z{MMtKqohEf%8U&=@f*a=3y{-L%W+FY_$s zh;jz6#R`{qPXt5W>bSb$oY>hTe60S-udn&cQUCFAccK8ogVhg* z$Qw;6$KJ~aFK(N50AY3Dtnxoz1V1#DaRV&CZh`Ci$F<*aTl&W+Q$s&kmY$LrhBy|X z)^d4esh5nuGNvO%&<$#~4aQIv%4qi5oVvi!2QOlX7#88cyq}6`7-})>0tmkcBD>g~ z7|}eKBGY&C8Z9wx?{cVi=~IKFHD@y&AJ~Z74vfzs6c9!0Il`~1e^2# zF>{YAknVw^mO^?53%7-rdJ}iK{qoeQvuk5)T2_*uguC;-`YBDibdRwTi&00w(tfqd zdsDjW?9~mYFnc@m@Z#HZhYS$b_0B3E$zgmW-1rSGDrsyOxzI6-j_(59Y7wL&@S0Y7 z8p;=2_e&A_s;!ih|$_dhlcX4t0xa={-Q z$bM$i4~DsrX#D({W9u7GFwZho->fB=$^4AcYa?hMD((#$^tFY`s! zJF7ZvuKN$?`g{6Dijh~T{@NOM4QBPv<=#d0x%97Q8o6e91GZ?-B%;-V<&>oti8~sA z;U?CoTYV@w17}K}+G=<6y#8?gu_E7~Wd&jx60#pQVp>e*4(s^3HpL%Ck?Syj#9}^c zTTI+1G=I+_Bx5Y4G{hm^WjtjayUuHdL!h5KGeM}aDb80)w>Fo$R%lKkEOcsa;O%n# zq)_S0`15}H0)q&=$?PEW)5+y0?~(EYFst5~4hUmvaHBKFx%?lS<4p?1^1TgoI0HJi?_#t; z6t2aGffB?h#v00qq4gaTRt)#SI_n*x4=frnBzo9oR#tgR1}v~OMce&NpkzNXQuc+8 zsW(lRMt0MKTU7`~6s(OiF^tmnwnw|Cs1H}N+NXnr!A0QtsoyqqSB7UZMIEM@XJEug z;*#71GI3|nFE2OUyv9=sy6Y|ddT-q#xROI3asHJ$Lt&{JqeNoLKbR|Fa!@k;8(FiX zUet#|R5cEB%DmB>g!HsvXHDiiExuhS2U=2+*~yLh)_{UkRCI4D_e!{?Y0vkmVcNJV zM66#B@z`qf>82bS;k?bAx8w_5Pn4(+U>x-Y6<5VU;&*9M5w1PTSnK z7MZz;B_MqF!VTrk3U!+7cDvV>#Zuz9*ZjjG5h~d6z*+Qvg8vOoMZPwuN7>}>tG|@< zGj*_-!D*1x17}H%!y8V0CWY+PutAu;#AlBrZId-PtHL>^5Ejn0muh7$5F+YMi7R_^ zwHLvMTru#xHC&yOIl-yWmuwmH<@+LnL9iF&1s|~vx;tdt99uY-@R04qL?K#=rWMxw zt_^Uh$!8ipqg;$bZ;aqfmM<*$LAMHjhJPbG=B0;c`e(d#Xsav@~rY= zzJJJ;SrlZ{c~q9gW={vu4RtRFQn}eEX$keV6;mnxd9P?QOzrJ-^^+$961mInJj_+3~6MafV_ApqAiVbK$rXCRd`S<#hqFN@G#(b7;r zEH`J@MJ=UxpJV(&W}^=rk(VT&@xnFV&y{wMX^&E|T z4Yp+Ba^V+iLS#fGnIiq0deY*?Pg_Qdhp5 z+0>(aPY~nSubJx}gtPH7qyqXyp=WYHxgs>F($9^(yeD z4H(Q@{L#|+*BgFQs)+pfr*jd|-Y8dlPtO12Afv#IStEbW6h62ax&)}!uK5%=w;yvL zJH0D>J#7}Tgy2v}(u`E)7f>d;7=~(R#E^p9DF87eD~h(p3+_9;@983QZ-KUPN-(Eu zGV8=zQaW8WMH)mDky&1H-}Q$ebGY;QXF?i0o1yh@z2f;0Ne3n1<68Ht-Fe&xe(-wd zII7W>HF?K*_omA6-9a;@On}RehQXrKRPh*g@BcmhjHx7a&6xaWg1sBfn)=!Fv?8w1 zw}SuAh5g@^&{wbqC~zf~Nl1dpfN>r`XE8iga)@X=m^7 zz$ZTQ)bn40hKT@csY%{|zN2eHhL@6jtizmX#&TR2VJXiFZ;Ci$xa0f5(MpQ*doKvM z(H|jn!{#~$LfpJp0p!54pcZ#BlQ*encrYugm>3r??BJ&e2zBY3*HevdBQH-=cqQzv68Lu0H{TqcOC0mu1+yYBeOl-1uag! zcAZtqr3HJ+{q=LfRhxsyt&N?}vs6#S7lkBzVXJ2kl=mD@bg8eSKl1I}5HXZ^q3f

    UkXpx;n`fX=%H}GT6z!)UM~Cq)#z_c~W8IKCKQ2cLfkZBBUXn z92ie@C{yxZl>Oce>TyhMljQ6#0-`Q&!Poqfns6#UO(GrsIJBf4T}n`F*Ukt)`z3UV zVeNJ22gC=1hX!Y3cY&)l-`bl`%B%{$tAelEBR<-F5%Fhq>M2dRu!76SK^cATq&fnJ z)yU%eNeOa9R19~NK}{FEryCvK;8eP{Xk^M}Y|V2nXt!sQGU*a2SXZx;h0_3gfR{Po ztfsO;gl#os?`FZ;-qsp|mF)k|2oR7MZhorU>{u!4ZOGKf2DQx3=Oo_`^Z1f~;8aQl zJFuS~XRMZaeP&6&koY)|p%I&4F0G6uh3VeS)qJm1pC6lBsEc+a%f>?IqBl=ZUsPmJ^ z>+9*tECn)Vxo00_&L}tCfbWX=&H6tQ?OeE{%WrQSAA7f4L71wFZ3s^W#^{!4Ka!}r zdFs0jItyKIOv{@-c3XfopIZ+9_3KiXAJzhkULHOX8&1A*ul6|0uQ~~~tF*?**eo_! zs^UHQ#y!G4wy+T!o7umtf1ah9rVT4S-~7!ipK*oy7ikfM6W!+8u|FOGvGpz>vZ+?w~z$q$<%9z4eI+I=vNG@&u z;2!Rl-}~-&)X-Ehsi+vx(TZ;b7#+|vixjr3}5A7X-E&uA12II)r4us12~r{!&@xIu?^g(o;h3<=GcZ= zeRaTCpFB*mha<7Ea82X5}|>Rhg@lPjtX9{X!+Mg{Jb5#c|Z0#`t|Je zyJ>O6pqLZTz8g#qPmjO5(=I)g75M*XddKj%8n$aV6Wg|Jqp{JXvD4UgV>@YVH@1z5 z8{4+k*xy{w{k=ct{~UWC`@}jI9+Mt3qZ~dD($3pAQcpPsRJmtnE+@1gw{o#}{faEOYy z?SQ>UwQB31f^8enJ?(qI335}>PNytVO5*FMFPK@S0B9MohzfUz>b-oN*Dw3Q$RNa> z+)M0ro5x@V1tu%`Tv$YtfT{rI7armQL)#?^&u*^n@u>GiL^r&Df=hH)joQxIM5FXH zA70-3-m=P4>+04|!u9iQAH4NtMhr0R5VK!3mc$r<-+(SQWXvv$0n5m9fO+mGc7-q2%3Z?s`^=5)wem5Gj zD}=oeamVDCx;>^9+Z~2!vzrj1%)?VcSY})%s9{|-S_=k6wn4U7Z5O4B67KQ?HkMYl zs7x52x)Xq${~oQNRL&(@vy+n^6#U;5#EQNfUvogc=hE>&D%&k6CUoWsdg`RW=z zuX*7=5`IYUn#Kf++cMjGEPln=Soq``#LH`gE%m#(u(Ti7u~5tBTa9z8?Tv|Bip>Y3 zLmFQ3>*G_9P=dJ`E|l(oMUOI>ntAm-{6*Wy<{cw|k_S#5B2@-6(o$x3o>}*=ypudt z)+u<}-L_*Y!I$zEF_g6+_T)DOzEfMz!{BJ|z{d;FAixM77mT95u(X{3daiSA7w{u+ zwM2&Xjjc8mGk?%nqlXn@VYXuWBz!( zoKAMa_d4VGBs5R-WJpzATlMx&I!hXzJHZNQ=N$$5eGYZKvHbKzUgBiNDMhar_E1;I zsdP)FMhsS5lhT9v4|rF|b1UOLz#XZbs`;5g_sszP99t;(vHE;yGtNPu0;oUn#`4&n zl3ccTX-e6li0H-<7p$v7JuzpCm}|T2u*GDIaw(b&r00`ab|SMg*7tXE{FC?$MR#Uq)jLbl$gNHA4M~O%vfDPA5 zDaXz=WR#gMANp5|mSI2&j}E>KGBKHb*VfJxNmql*QUETAK8SMRZ$vt`B+`#s-ga2D~rbYl*vZ;-N@RFg za%BOnp9ZKh>sv{H(avf@-QNWmCG}`(D=iaYA>HstklAi}09+p)oYGO0vx@>4joQ(i5WG9&tjhPUGz0K`!=R4+g*$?kPLsz z4`I8fYrcyY{KzecnT}g_xonyi!E$Ff|yB_dpg3q5DJ_}klE6_~T z&xQAUnyZ^pnWl$8)N956Gbe!YEGw+>Q?$@bcU%0A@rww2-tx|R9J7UdHGp)tA7#U* zwlVO;)zxI&Fu{u3l$>G=KZFwPXsFSk0uXgfD=b`im+3s3-4j&C{*1s475U!oz(W)N zmbTw9*N^e1%}xz&Pg+N_EAIPv8f+F>AD4HNh=noVkHoPlsb+9$<@Hz$AVT^+L;m3N zUz6xxAP!-{O+{GLPZLJ)j4d({84!&*5L4srU^~;6-N|f{V|6V^Deof}bAXm$AY}ib zwD*gkA{+_LTMx;X!XCB4_U}S1t{w`jfrhgy-5O+F;x`@TSn81c-z^Dp4$(WkXGt$ z_?$*}y;CM+e?Or@%S5S0$@yk_c>jiK#UWfteGORPD5L&+Oilbkl%Cz!Uz>`%`I)+r1sW{OM^(`#K$q;vk7-vJ3w z4@5`$9==hE=Okgh&$rLAD|q#hwxrE$lh<`M)cA?D0+JkW_vTv8JiYy+qq<250*$3X zx;>r1#38$Q3HFRZ(5W3#c%|m>p4@>B8Gu1x74Eblxs{~QlVqE`$@8dvv{r>K-3EB#_ zzAi2~al1P0Od*_WkKmQ$r}gT*^b}S`q_F5ht=}0TCl8l->~C!?LXSB*5CK!O2z%)j znJ&cAbVQ*724G{wgt~eXg_1?Zw#Ea~IGgptoYK zpLpaAm*X#_gK5DoDTBpCz(@QCS%6RcnYmh!Y_wW!qb=f^kktq(p$Z*7M|p_r^xOSp z(f{KD&Ux}uF?q)L*i|7ef{mHTH3 zVG&zLBq>D!a&jN(4hrLxQ@J@>(35Q_>2RlhQeP{R|Yt9eid^p(d$|YIt-Z_)r0a%f-yKp(<8bLJ!DIF zW4k{@)qB<RcG)ZgKk(7&^CBopIvqM&9%Tg2_V9(y?yoqMo;P33W7Z(- zm|$~6K$rqQ>fs+6xOk&<>I_m#W<&&|FW6Yg^_+C`bZ!!%){^5ZN%?*D=Mz+QCb#2R z;E2|_TR^RpM z$;=898VqB!5c`Qo$#pEQe$L_2t)USr6U81uq4YVdQ|};%f}yP?>8T{;eKLoqjbkhq z={!*y_RG=qp_`p};;F&&z##`3s?S z|4&}4*_f)O#sT{hw|;P<(8w4J9pattjkW`nUlOC4avD`6NwU2?Kcl|=AdGN{=@~3i3YQ|?-{K4zl!qOKHlPT zM^)K15Y5{Kl@N_|DM96vagfG<(z6S8Zv`*^m<)jY4LN^iV0CflGBj{duW+D(VeId= zP^{G633AOzO=iZGLsGet}S zj^&+(9XX%wPn2vfC78@_ehB$cN|E?xVlpKg{qdrv>uweFO?dR-2LBKQCsV8@RQG?n zvTvMccL%u+$%}^wUtY5{JXuiG9aH2ZNHKpUDO|KT4Cy|-YeS9DifEW(hh___{I<9p zaq}6Zw_$a<(pE;PcA_;L4^uo56Erubjk?c~UWf>jQzVEyNzk8bap&S@_EXMr0{>3? z^7JDSI+p`SbXD*R^bhgA%OeAzsdE&X_78R-ndQP`L?)XCDA|e_kotJRwZf(*ZlxwM zpp>(d-D6Is+sHCCnMSt#o@~B7-DA*2)m7565cG5uz_r&YUhK-yB&jbEXD)uXf+rFO`Eaw z7lOh@7Tuyu8M0!fRY8 z9uSB}9+$Ao3uU&QD5H)&tAw1$?06yrcqJ`^<4D z>9Z4&DIG7ozyCUy`A1l}b64vD)sF6A&++53@QFNzVvRZ602zwPtR(6_GXi1+(#N7} zm3}Ou_Gbeafq}1%OHCP*f@HoLxRIXjJ1}6E0^jb@_s@A==cTy zN<-TYbX&W~XyFznLzQ=n852#?4x$hXH`VaU2sT>MHtFKKlU6I5EK-G?1n;ll-p^O) zrqp)b_L^>s*ELn9G=7jUD}GNDD0EpWsvcgQiAMHz($B9i9H1EBo`HXq%qYm>>T zufN!gsEE|D5?ZL)h*b;3Mc}qeRjL}wP#d2Gyohm=yz{K%Dny!vk`cuW3dPR*p9cGW ztIp1P#sJv?a4?w1fwC3d1~gh{NKDop%9Ys;I0s=zhP{h%#aCEC>SRg9bWgwOaEi}3 zWyAW(;m{ zf%o@m`VNLT2$k4Hw&#`2ufc2kE`v4u2KApDfoLu{(6poPn*x5=%}{W?Icwmv6jPA; z?oflK%(fwg-GMJ3tQZqSS@(fCXX`=3C5MSexvy++!=d`%Vm$NUiH3# z5c)46-TKK`kim&##dS)P4DT_TGyR?(V*fx#^Y`aVw`JqqaTfSW+v6u`YLSLJZz<9! z*aIpJlZ(+q++i*{bn8t!c0%8+rYqM+*8@RFX-aWnx7%Z^lZY&JXUHWz1Q9D)gqneBw2>;xRzclh+wrjB=W{XEHNZM7pP)l8yPj>f7*N!v}S+PW!h19KmEGKLu$G% zZGUfpOamV+dONH64O?lvlU^S3wpW^@(F9c#snfayZ9vjO(6HNVR|8=C{Q{~GV<3!( z`dr}0x&YkWREmCMyz(R_l$k3@HM5NkvVUo_1)9eMs-Z%wTZXl92f1zBq;PqkSf;o3 zFDT}=cbjylXWQoT`)rv!symnW8Yo9&O#PVG18-5eZ#&YpmN>;})Jqy|Uoo%)1{Ban zJ@fEW^z+fvnap$sJEH=7L#4zc4t}moEzJ%9^n#YUi=abuq3NfHlW5bXotvD0ikFPO zX_pfr<1zPFTFyCwNOnA!FSefch}+$})G@dMk~%{79gQ6KEe@8$YdlBeR_?YV%11jQ zTPN-kNHu62#}TlM;uTeTv=HpmshC18%Wg9*J#Y-fy{g(x2@iFt4N;xNItAh+15X0r z;!hcLOj0qCmeu#Eg!OGk4Hm6vw62gXYDr4>B+>RBL<++5>zeW$pb!0AooU5R5Xdm#i+3I(o>S{8l zO0eOCi9b!R_X>>;&Vi6KIXPCZVZspNq{}H)A&n=h7sNmk12-rG-&;KE3vy~^q}8N{ zO#oH-341xm$9~DbEFH#jv(lEMqG_{=mM}EqxaLZ^MvZE>+5T<+n+*h~Gi?%81{I@Z zTu18pN1YKp{I=7dCIz*dv1aM_%`~ZR4_7nbG#YpC>HoTmka?|ja}golk6V7VeH{Jl ze*k}$)v3Dt{AlDbG@eT8VRu8}=+A-wTLMVZ-xNLaNqVU{y|5qR7PRIqBp?24L>|KV zI{s3zlV08G1=pG45~7yn@-jh5;OQs&0Fo5a z`VUb)q1JVI7{)2lQ&`-QrGOI0!(jDe1-Qabi~w0q3r300MThXXZZ?9zF7h21DhlXW z;%@sim!Ye;jSjDuKF8qWfBcOfb^n2S%oO>l9%O5+RU=X1U#SKb){}CSM^Wug{YT)L z{&6eUw1}$~(5RH;ld#miFU4+h%SS|EDw|e5pF*VC8{W+3U7cR`Nh?`{iB&~f>ReKa z!UnmjEypHRcxf!Z5H$6@dZ^DSF=UIGyv157qb}p3V`Z|a8y+yLu}qjQiio^bMr0pK z32cm@kUeN(XoPXLx=|hwV~rl+X!hU7d(Z*Y_{z)^?s}}+X~i{h&ADsa;M9Uxt6NTb zAD<=b2cGIa1Eo!|{a~#dHyGdUxBX%NlI`sYuu8eVe`a;gU2_D^x;pi7Dw|p-N2Kz$ zdnC9=O>mQ^c2h(&aERm~SoZVDSIrJhhPb5vw()an)G9bGG$OwcV2N`>ARd0K)`et+ zgJ>{<=5HPRW@h%?>z4P-Jco4u?}SzR8ob9N6YC4k@AhA}@|HT!YGLAW@SoT&>luga zpU)gWRJas|VOF#L=bu{u3wcGB@@GVNn+jM|-M%Ys6mc(C6J9e(yd-5vDg{*IU1IV< zKF6890kNK>^DNkZaD;54~-o0{EXTFUr<@H zUnS3nqvF|T`N3{W2@*r7(Yv(Qxwf&UKdlouedYKEkqlB^(Q79Okp0qhb=OW$4^?(0 zkW!_@vnndmcbO=pWtzw=xh!3G-aHvum4Kh>1Y$!!-S|BBfA@qR6TjBJXH8M5v9r~1 zf>_7kMAwi?lhY4x-G7eYw4G0%WV`^`;2Q2=mL5%1Q&iT@C_YLJWuzi5;50c-%u}Dw zl5|c}Q*jhbvT@oZEjDA2r=t6(y}d8IaQs*% z>g|S*zsiH5S!MRJgIx3)kYbISa`S^-xDdnul_ov&B{9pt4`FYO%OHDP0*W18-tNMd z&qrneHPa;0Pgk+`e4efNZfb(S9%6ttBcxEOpeMnaZVM0&JwTH@K-M80l-I4zXN@jJ z7rny4T`eV08qH*lCHb5YkVjU!{rmgze;+IG{xVgtorVNH-_(-_a7Hkb3kw<_q4 z^WQjpTyLaTaW7!M^+f)L|Jrt#COq`v@u7MIGQN@CHfk9DCe1YLvBkd4cH{vMv~&v8 zIQD_LiD28cL^qxF2a2dpJ^Z+?r89)4Q=YEWHEdxFpv7ifX zb*wz5XY^6Y6-lQ^9;R0+izGeB@GMD*SN_w0b#@(GzeF%5R>VI_;$f%;U4oD-ip{Y(X^S4zFLHSFKZ#OisBNBsRX3(0;hy(y{N_l}D zY$hP6@kRjM7^lNXA7hD=+jumq*5tNux!&m#|BR%xqW^kIK>q?Oakv z3|eUGZZ_KSRojBzY->I=Imjntyj1Y6=tA55Kjz8(c0vN20zQG0)o<|t0f$})kIzpF z6);B-z`_WM7PA>iCU|!$8(6WL^HKc$WF`5(XWds4WfQ-IH4Hx zMfO0mA3NyW^6O|Y#zNXQ3v#*I&WED;p@_Et((e|9v~5l~a)$5mS#Qk_mIqKA+K zW|me0Qb3s+_#TqWtO;~lpks3l6zdhJ_Gt(*;@5JEk3Gg*g6L`;7$60?QYA=1ULy~p zyZ>*2+2kwuhyk@9upy2NFi9-hien1spE|kf>GlJK$912vX>I+{)S?xRQtHVQLq@+L zIZ)wXwHc+|grMwv3i?zc78#gCKRTx{@VQoDb&98z#d8JM5+ge35`@JY&B3ebj3SVt ze-5@ZSGt!yqb1{=v_!2Ex5uT+U@PuHAyx>Zs{a{2?Wc$yMjSa>ip{!txl_cb#z$jI zzRllX1Vaqu#Vf}SIDRg}|At;e(9b~EH)AxQEMU$!{5?Bp)LUt2aMZhxi7q9TY2ak# z!?#G?tL(7Rd3D|MGgA6?rrX10Jj@MmCn8ALOOPIOoRVF49aS_*zV}66LHOMgFZgVs z&xxo$-F8{Cg=}fRw>3cacX(SF4eMTwDP>q-a5}~gNHz&n>UA;GFtURBe%~#16wx&o zV=uFi%VD|VNa(Rg$9r&M!sgz8fGB!=;gW2HV!gc-)Qa8BY&ce7CSO20*M%>P50?7lm&Z{zWsxW>)BO)DiDHlxl-6BeUms0! zXza{*xw&&mf4#$IxjDMK=CBmjU9BoV0F+s>5Q0rg8FuTgpD zE9t!lyztbGk!*w3L$yh6zejT`c2!_ zb?UiC8h6gbOl=$S@?So~)R>l9$OUWb2+Qc^r$WWFHXwL?ojw7mha|TLfUI`%b^yD; zS8WjhbLs>!(*t6Jqr9ldx3)d&Fv5~LZq4wAPIn)A1hcS=T!QHP{WVOwPRMD!FXz3GNGAk8J4 zhlfpvgIc7BxO%DCS11vE{Lmc_Cy^$Kd>GzW%{9R@^(AQvTmWc8FR!31q^V>{IyLnVhHtg#Yg!TULZzhhHzbRA4Om?DQ!Y(4k1II-+wrJf1ben)xd9>R;wL02j!x5-oI19=S=$9eSeaS zcOzx{w*@R|!$5$%6Gq(%HY(emL?uFkJl*l4fY1hkzzADL-4+?&35Wk~I5b_xL-6w( zzw7x`D%8Vx=n}SnY|20{6Ph$sjdC=cPWI!LY1iX{Nm28)yBCd z3~dNV7$JdW%me3KW6t%I0z|3HpoYHR--)GjD7Sx`O6w)p8-o1ACoD z{IqN*@>2M*EeUVT%e2Ddp-wy-R@os!9X67WZA?Y^nC8#f?gJ7v=AR+43`e(p>3NzI zbu)>_(wn}jh!_rejZ6m*n@|~>2uAUaZLI=}(^3}$ZJC;S8GqgD%;upPvmWK-E)Wmm zB)=Q2$t@1T!nAn(#*dEC^JT2uE<5jRg4$~UzFq|N$F08}a(7EvOlD@wbvnD~{azBD z!=Ax@j)n4(R``?!!x-%;nDmH>0ymN~_Yb6H;;=u}bdQUnRgflHd>E{l zAEu`YC$d9W-Fz*u%M-mKqv9S238;`)6abtrV{r`WAwxRD=0imDKD^^72$YHg2W@Ib z?B8PU34NmG{uLBxl<#Qe3&bz)^0IE`h3e1xV@{w%cq`o3JpLF zrk7oGDz{LP@Z1PNaN5bEWv3Cz8@m3^Oj>SXZ~Nbe+7g?2&T{bf$E^S0`aNmXVK?LJ zGhCBVskLZoO44YBOc965(d=eslXW+7d{(Fzp>(i}sPJ*kDCx|FR!G@d=a1<}1zg)- zq2rx!haMorS6gl%36^2J+uX7u`cc-!HW9!3kiJq6E)Imqqcp*xykB3*o@6dNj0-WR zWj|Po@n-zI=^9y)nR&r}gz|;JAcV}&t2^xvL()y(G*-N5AwRr?sPB7qT!)80BCUiy zhcDdsbLh*7&Kxm||(-Gf|!n{VAh`OtpG>57rZpz;23(xISbc(=bJovljxxZSPT{mg(?NVMId_UWqqX>2I34OR2af{;7SZYN}c zv(?mAe=?e%+9ns3)M+I>$!X)62!)0tckkVBuN;We9<&`$?-7^dB>V zv;@#wetzg%KA&`oU#g_+fWJZrl3-c@VMfGtUrOe#TN0;UU*?qip0Z^vsWD)VI~UYPwV%wYv9!z z;Gae!gG?D#eX?^#5|v|h2Or1Uwn=zY_Eze1=JEH0k?xdV=-2>dq2ic7YHay)ZoX2# zC3!1zvZN@>5yy2HA^2HsNH4PcImr$SI~aWG0GMYxP=xI{4Agi|45aqj)h2duJLJ}y4BSW+4+d-FMv z;wwb;)5|GX&C`0Skve6q29TtN9~)*D4NiI@;IkVUe*2lla`!3*>_ShiIgd>q6E`~o ziO|TTNc<2PM-HyHn(QPj?Hoh@+LS)h%~0lk$ewCC>hc9$2bbR;!+iY`H1~VpLu^II zJI#^M>&5_A_Nfbb6o>IAbit1kysT=&MU66Rx4&9mQE9134U_$cSArz4Hu@_Q9@5b; z;0VID>2eLh?(GtNrm$kWQyq)D_?NiV9HkdA6N~t4ILpFy0g@NaWh>@FA)i&fk|kRS zhE$%ol4#p^jo_Z|!V0<~y1>=|6W;Jc*Hez>mhUa6iyFz8IZ!)Jb|U|qjRLqmoY(&L zQS`A>-OKs6TCM6O`+UKP6>tj8M21BWUcpx7C#Or%F;oqj%R0ubS!?+?Dvq;=xje}ipn4vXehk+=F%&E|0T{WsWTURubu|w z1C;m}vrP&OGI|?fTrjk~RWvID`eK zS(lU_j8=I?p$hN&2^K$o%*4+7`rK*?j%SX6+=ngG)*NMAlUV6=!C@oIRTC03kRFrkS zY2_F(zFcbtvodd^i^f#T_xlkbs*e5VAqp(%uBHR7^V$V0xV=ewxWf`j@9u+BqB7)V z5>a01OzqlV&Nkc8MJ|smmQ{fxq^6SucA!dtiX-(B3qmW<9Py}~0I%M^lDjJMA)@G0 zAaqI%EEXR8Zx_NqoYaifbD-t6x1-8-ElCa2%ovlSySwNvMzdX=9nkb)j$ntEr^Pw= z^vVW-(hx8k%*w|_nnQ8m8c#X9oU*Mbd3aWAZ$`MZp4MfH-exii8|69V-iB^TD3EoJ z9HmE_KkWJ!?z?y?nKxs~*|djv6Y1{7`aPTBP|*XZV+Fkyn0l3U5B6~S*r=(>`?`w}#+eZjI6NT2#~-%Dc; zKuV{yA4v8EPnqQU-gN`=nc2Bq<^v=N$V$o##;M;P6F zGqbrDYGbggDmnN<9es765KLZF)5Jx{&jQQUix~8sek?@=+sr4b7F*iy&o9+4fT9mE zY3R^ONkY;|)`Z@DSkohqNCZ^U@El;R%Wpx<1j}a49!&r>J6+jABY(b3(ZkvLXK-LA z;?tPZ-20;(go`9x=JhDl`={GS%JZ+IwCoFWRf0|SziR)IjL=&X!HJqAT!4FgA9Y!mIQUwD-si$P z_-_jwOvN(arxrZW`g)zPq|yDe*kJ+N@(}w+mQ%W_T}ZCNY+zKP8SST+vz%5qj~?Hq zGd?7nF8i8?__XiuIEHEp4H`B4-*svSsCMdhqPI_ZatjhaA6i5v89fM)i9`qyv^Qb$ zeXoi3z!fYN(N~<_%rMyexAcC*2?bhKs30RH^c5pTqAJ*z4b3isnj)G_5N!@RR61>` zDzN`Kd+8P5(8UU_=J_1bwtVB@ycU z6k(7tk?YyIf$z2hQ$8T+NPq#?p%vsUpPaaX9+qM0{@wRZeTk*upGMbEdb%?%*~kddn^T^t68_Wz#1yaZW)epCd8L+UgS3#Ouxc( znQ{mJ*^0rdxh)b?hCxqiBp5a4Cugmu-wSt3YK=K-P{qCH-urvw@J!nJT-9S zh={kTf0fsVX~$5`eYt;NA3{Mc$`6vY=;cwPRZlnHiYZ@0 z#YpyE*Ur|)!ar(K-p~BkVo6U|LzG%=Tn-q4zB^uMwovds>Sa~u13ma?VJ@>F__*ld z8M&?Ad!tY~HScrs)IqS~p7DI%JU=F>|H$SZzAzpI#`HH&9HESNf1i9b|Cw5MaWoD0 z13KU69dwG259BY3;XDtke4P-vS~65IWT|?(+eo~Cwa*u6)tiOQ)?c&MpHni)Y=nD% zSxd9ql?{tA7P>WsH{N$lxLiHo=l=Q)#SZF}UdN4qT4dyiT=@$@3iN(sgO5IgI^ZZZ zn#TAxC{O(tuePohO{9qS9yH|KSA_bm7VksQxD&8IdI;{B+MM9Gk=OzN++~APWvwx{ z?HJkTq0d{-Spy7%R8E0gOj}Qis8Nab`z%0;$PZI7$FrOvo2XL-chz!pdYfFQBU4os zO9B{fFo)q%IZCxOaOC~u01lpVlt(iSGU?i;`p4 z_{^o@UT5aD)K!L7yamyi#8esvW=VhUh>dK+0O7w11!#u2%0S zc>QnhENg}G8)K&3Xn)*XpJk<^4-I~N@Js1Y*3Dnk1=hyxN6!J|h5U$T|4q^v6QO5w zQNgUcDZddr!^ccyw;^x1xruSIQ@)Dg9FqwkYfNV#R~9l#zHa+up}EqImh;&1*YV0s zkBW!uKSiIi!XrpHHlWb-2I7$PZ2!ruyvGL@`X)UGWqLv+2y+oZaP@29tu^0R&ICZc z;K$#z$$G0$rBx4#*|8-ZOExu<*G8mAyZxE1x1O3@C_v&5(1-7ENK-D%ppL!Mw*(eB zU1Z0!);)W~Rr}XYK7(bKmtO+iPZ;kjnj{4GX;5^xjSV5@Iqw zl||kg=V4A&e#=8oEg3lCI?fB+qe9q?cMmzJlsglT9cYeF#rWYn_L8;(9EixE+bgJF zQwkV;UCsN`;qwR9J`0k6+@Ktfx(A8(VYGUoguXq&cdlW*aK7fv3k<&W0CMouWVN^C zq>bgZG9cxODVg>)$LwY|HMjJxDhl z;SOgvg=cp+yB~moDV#zvq7(8&A{c8Bvp1rQrSXgr_Bs^+Mo>;4+dWY^5Jq(!~CW z$F>Y3YHZ)t@-Q6!_=)Lb&jiTc<&tnwY>R4S2GcooMWyBX02jFvxkLd8dUPZ5n+ad} z!g>A=vA8WyGB{OALJ+EJAk!rSeh4S+fuqCO zFl;3kg}}%Oi|FQu>X0JXImZNnqwoBy+4gzTU1lUPTwSVVT7d4*T?3Cb2FzZ^yJD)> z*x&7u)E|vZ^Xbec|Eja5K(>EBV09;Mpjku0?Gup}KLpOXi~`7*(qbj=lv~a;$$t)5 z_J7-v$^et~kDLo2n-QZwDyuX+@sk<1*0n&uG!#Q#T4Fln^|+X2?8j9Y+5NRgf5(s@ z?sn6DmvB5&Zo}iQ=zFXX8k%&iNFSc|Z?ZO<75Q9FE+C$S?w$*SlHOJaS@jI=0FToY zvZm|uYWs1K>9X2QAyMep;f`|UJALe_x<4OYrF@hLx5(tYayVh&JWHEc6AXA2onRQ- z_w*T*pjTmV&ar(=TIb~l&7D$`9w$k4ah1qH!9}@t2jPd`pBpveFdGjC<5ho($PeMT zScfMQRVb}^`|_cSXKEOALe819cZw0qKjti=Uhi?tlX-!EYI}lXxV4QTpkvMrASxNS zjUFyoz;k)o*x?X=&~;T4v6u4&h%V(BBOKim26Pz+{NttfXD~%Dp~E)(q1&XjbrkGz zU)m75Z8E8}%{mYYhLIAtsD+4O7HAht&CP$^MY8rtG-f3>Sf{L4?un~7`rdNi*bJo; z1SMu}X_z%7hy(fdFH7B5{xwY;Fo{XsxkxtkW zBeZwJ6xcm|y7iF$WhKi$Xz0xjdSKA>gi$&yDz~hYo3BTds|BBGKa+Yl>P@I3DLk1L zlED=S?*({WYjgm%yms;4uU|?f(r4YgKEyLZQ4fH_%5q?KbL%_1nl#?C0^rKY0cLhU z+FSQC8r$jrmcA_)3RqH9?Ed0?ak9_UDS=baOj&iq6{4r?Bv%Pb3|U^HzQFCcF>0}s z?z9gYCK3%2Hssxf<%qC=5&_6M;w9a}P)b|g787UM@Df)u-7udYCoYKDbwqnIqjb9M zsAiHyhmwfc#(MPMk$xgjw|^*ol#a;7ayB;1x-BOd=tMEFp{EJyuu@f)fC!?07*tw_ zCFeh32BJC)^PqTDraI~Y+Db4i`7Ei6^#UCqyR7>hw;=NdyP&<-uaCO@+&1(z00L^ZJX-=uQnF6YMM z4#vq^C5&Oo(88A`Zl$cZY^wx1(?Pxh@U!vv2dKM#(31>m10wM_C!+5IHAjMEU#Y@k z3%swRqibGhYGVxoNW-AVU!jBz&)2ZFGAF5Q_0d+fL_`Pfg%|VoXbx>FbBQn6TCD12 ze04P9)V}SZFB&a1M3q)_%Z;j}qW%zr%aiB7jrwf>Or6Zq#z3etOQinFI;i9p>F40g z&l`BNrA6{Z5hkKmZ#5ato#;IXj+MRY^6P35f!6{Ca4=WqPe=EayoVX7^mLrC5A^BN z%@}M#+69{10l<-L<+SVUl52lPrp#|ATxx}iW!8B#eMJuk6E@v>Y!DGaBYSL0N99w( zpR^UWs&TQK=2xB2sMTnV#l>JZ%lqu`9p@5K;>1vV$Bj~(Yco4;lH96!dtHn?iSHLH zJNWGU^~4-c1r{F6^Aj@_`a`UqfFOLOF{i$B|x6 zlf^=((>Q5i@sne!6Z4J8kMl{tc!EteOyzV#Tz~IRQQnUb&F%Ik*MqDnI0FEjkf~?<{i=iyQ<`>Bn+jx_aoH)?$sG0(jHc5X$hvAi$oQYvI37UKA1raN2oJwT3W-~XUhS`DG z#ght&E5v=%t3W@GOvOH(MSB_}M;Kl~`|JEkOZZv*^<7~4B_K&u;{x&dT~d2^y~77OGNlqL?Ic+}UoZm5GqZ+|B=lGA9d zw_ZASY>5x1h53-!1 zUp`+9j83>K_t&}!?w0K<_0^Z=49%KFvR6ilh*{a&j=9NaB=we(;IqC6F3ELo(-WZz zl{DCg2ONAofsmA!xp_7M#`Bn9!6$;)NKHMIJ$-nsthN)+i8Pp^Wh_InCkY}1oNU@t z2{-*M{8QYvn~p42TcwH>^u4!%t`77dMw@DI1-1LU)T%u^5^@!F{Xaf+wQ^XU53e|T z(xISX@Vv&mk+Sl_r5_qTs%>dn101MkuNRFqZ*csjQG80EdhhmTSLzowV-Iw6CG6^K zwW!RO-214_TfEm_17{in4-59UaASJctrPC$!%|Ph6ubu8*O4oA6K;aa><90er&)B? z`0kC6LJ%b>5~G5hS*RT7fo_OiazV<^-XbfVH!ys+n}*zhq?)RTJasVm!!3VrHP0nk zN{+@lPF5W8s|A38H(=j+`TK_#x9$2rFpOWNdHakKH1zA1#`>~s%mP^|4SOc({~t}~ z6c||-ZR=EQ+qUhbV_O~Dw%xJav2Ckk8y$CS+dB21d(T5X)=TYOYt1?4H^x*FzAnJp z7E`d-N9ZetR9Z&P`8UJ%mqaoU*YGT>Zf}^1aPMnqkhwr~-Jq^LE>B@zx-qCRK8l~J z;q`4^`=RCMET9BX(3858NAx~x_j0%Re11W6$#KRfa9SP7{h(;Vzr)%tK`|>ez`To* zxboxGfi@ht<&=u_Kx1Ql>pkT1`+1+KP&6GB3A?~BB=2gs)UzIhKh+qqzp}Qk5-0D@ zAvg%k8nmvrGgudYkP%E`T~9CkD#THv3ld5$<-76aPnnUrdOwIdJ1oh7RmFx3dQ{OG z!V}tU!NNUn!SPpsM22lYy&_k{+yS9^h@0AflXYo&Ll7oY4D?)l-&f!?G@f85kkYEa zzoJzbt|9PRn76)ANBLpvo*q-eYobDlBK!v&*$|$s{Vw7Ow=27dy}doZ+3Oxq)v#aH zWhcU@!esf>rUjJC3*?raYy*X?-e1`V4jIN*++#%C@M{EJEW#qn27tlh%s}ISxd0a{ z!%BI0u;Uz0a#~tCo@q)<*^olpl`VfJ$gAcmI#=rI;t}ARClt{y{`qD#qS=0YWV0&< zLmV}YeA>2;tm|>?$B{w)LjX+RJjnqt%`Dv$oBRmb(!2Cw4j$D0SQ&kL{%_5#XI;_C z$#H!9JIKiA>KO3Y&q3>Tna-iO3Qa2jm2tad;kmPnXWYBoxEm^GYGJn9pT2cy@v=9c zR9o;?;98KPAv4^mPW|~9e%VOx#!b@tietOC8Xa;$_?f7~Ewzwk8?xw+W(NI+(I!`& z`-#HIki&FQCfriCS|fMGloH|9OEzODfVQ?Ro~OYkmt^Df`H?%D?FY9z;<| zg?RvY>(`?>fxnniwGh;u@k-E#!_mrj(`x>|Q%Fn)?34A$jm`N~go@8|B}uDvNU|-_ zCAh)0BH_ZFLSrYowJ|kj-{3XOD59HL215lhu`500t#kecygp@HQ^2SHoWr|(zc`>d zx$oXTLooKBKt7(99_+i+lpE^qaQUrLOAGPW31ruVH7S6C8nqDU1fme7YY3fQ?iub(KCaRUbrlg!4!=`Nn7x# zsGLeY-Y^=|86seaWaNOn(jIbwh|rUsz1baDuI#ioXK4F{Zuyp zUlgFG{0$2A7dXi3Pd&~JUZT@ne$^gkE_lE4zN2tG)9u?Ps*z68NYL#QYmm{3SgH{e zu^AQMG6-1%hMS-IW)I+nAho&^m6xxRbMf1zeN3RvHXV%7(&9dpu8m8EeRF9v z$%4<|)L&p`TvzP8oW(pMmK9IsG8mAH1 zS*21YnDvI3+j))1)KYd8wtli?L2TcCt=vW$RM^Tj^$|HL<=RgAiSo8RoyD~u?8F|A z^Av$YaGXobX%1GNAZFGw<{-;?Z7}IGFZX9K z9rN8>k*;}6;9L?S$wg@Sk5PMdak=G@rKVC6m4@HLvrFnaljLiT%Jdt>Z@qNxk@9^2 z+k>Zd6g!`XW1g{tWpFS-nYoNf3_eH=xd6P>bIlHlUs?XHYHs|XuM5t1O5ENtbj;b@ zeB4W;`fZ9j`3>|5EyLsNZx3sgTbd@C>y6e<4jb&zxK%7~0>C?Z2~>GdVwKfUyw!L& zrOe2=V}TjD5xd;dx-`-#D?dT(YiDz=;M<-t=0~`EueB7Z$>19{NxtcmX8BfkVh%3J z+?@>%out8IoA72JjA3y}fnmI;Zhq*5xy(c)sNBgkE0icReAd3zBrv=(Ha&MA;N#XZ zQ_m2}+IV|ob4?tJgjHxjs%eXm`1Z{2NtJ$L6qNRO&bi~T{|&Eh&#Doq4WP{JiPkay zJ;SW4&;293%jj*TF|Y7HX}Sj#7+V`mTU0dxFmNBq$Owe71JQ+Cg5EVy>WggkVSQ2_GCmOK1mDR>b6AG z_n%l`3|(+0AMU!|-A_!*g#$xbRk#TJQ5jcdpWZ4=`?Ih4a$w5d@6X3LZk3GL z?VbSs;0I+YZuJI`n!;xgMnp|T+v;{E(eQf~qz@q_v6q2O6+GOxLDN4-Swr;3=f<>i z-WWtgNh7n@>n=3v{|hA~sk6YkN)Ts1e0DA9#37sUZ{oYOFPZYfFFJrD73-?|K38hi zYF1eu_a`W5`3u&SF#gnD>&ka4dZsdUC$@E3v?lUGT6E|rmxqIq9FJO)3m}0;VwCQt5$Y@PLw!RRJA(l=!zgtm3)@E@N z(xow(z}fo5*JD%fvarMd^L;KlS*jBXXd~Z~b0K|&M>ATZ*+kbS3&<5f^U(ESX=7Lx z4{We2-A~lq{*lFL2O1;b@$52Oeo6oryu3!(z8TU(EyJ>+M68Vi)~e(0}V#C z=^+H7pq&K?kn`*fg^)2W`L1Qui9gKio-oU&xmh~+!h_g^UqAfC@Xw@8G-0!aDZBoM zmwxQc=ManV8`V1K^gqxrlk4A0E!S<8cpMof<0burssAFD@izs`bQWEV6#OJ}XHSLzTX5$a)h6*UeBl&d#ncwDmUX zk*?u%g$Jl|1kab=jseAPXP>9K0+@W#K@lHKC|rP|C4C*g1^;q2brjnGY_`kmMhX=Z`u7 z3Iuf$+E+h^FNgo+OG44q;G#Z>)ETeQC9K_JB8w&NW{78~)U?W;(dh3lB=}7egXL&T zXm?>>jnoHhP)l;Nk-qnD9~>ruSHpksT{8l(PQOs?8~%?47$uu+?@OpuAPvl+T~oML zaxeU{*XlsV5Wjy6;_UfRd9N8YD+R!Y9XWU=isH=aYEaND#I?1a;(i!3)y0e63Ls3J za7KjnbSuZpCxQ_gU`|-^pyox|LQ7logs%zRs3FQ{NVvlUx&#=-9d7SU!!_s zf7}dxI~YDPu_^sAiiJa3tH%c`kQkG9Kz?Vx4^PmS^DeWu6mo2*>X#hSsu__Cm_x4o-}FLHS8W?CSnM=#`eb# z%N4g7uSo|DLN53n8zQm%ZR+hOk5E7&s=IByV6Kp%Z*A2AedW!SyM|H+8boEyE5{EZ)@5- zDfyM)SA2#LjSh=^M5I=tt)TSbcvr==muf*6>t&cvHSfoVw2hFyb?4Bg+i-%K;6lSo zJl@5R0D;Z#LDYLpl<{>d$yD6Dnel3lcaOF8~Z+XX$@u#IStuIr6{rUg6EH z23{fpGlDK6eV_m({O-HICZ5-^SOPmgSbBo#(dN}qZ|;!DB#j2lxCVe@5Y1q&4k$r; zJ^-h(ks7L@^PpFm@oQs=llod=4}QSJ8n^Yu_!V&_J86JCg--^jRXU0+Ftm6fue8Y9 zqykb7HT$hlox&v)1WiVPWpO>Ie?<9-C+lbX;pCCgWp(_HMvp>0ROIH& zDR->~Oh|eGGbEuqY<9C;t_v=+^i8E!*;F#2o_P^oE z5WR4C&_q(I*5jj&eorf}C?%IWWN1{X}+hgBOmc#r^B>uR{k0;WWguvZBc=C>lMrjG-}NnJ}F%P4y5MiAD3-7hI2R z@(KnwJ?o2&D*9G{C9>g4li_W|^$XsGeq_L<&kLr z#KcB5%7{=Uuz+Stg>3%aB0j;$YsuvZ?ace+On0~nU3G?@JE-v2GmIO2jx`WY;e(8J zf@}1mL2Mge*L_iM)$8R7G=o_Ry4!QeSLD{!_1NKo&*V!m6i2o zPWC&zxtU#)eVIx0bUCupq3OY|cMv%2cqJH->CamRA5R5o3X*c;pv-k;*W4^r`f=%y z&{?=}sMZ$8dj%fD<3jq~z_N_QYq8KH=|gzwm)G;nm<#;G^B~(GP0frCe=>dMd2q+_ zrggPK%2qA%{mrx~GQMQB)#BztyfTMHbdTbQtd@&GHP)cc3;tqcV8hc3i<9G~2w$dD z#NK2FR1#ZeY6Oy8$v(9sYr%;a+Ebz7Z$3IWY#Hs%^M=@U1cq$c^J|oRuI+)fsU3Me z^&;&Qc^G&+${K4nZdi@Yv_Cw(du+o&g7|>Sm5*@1^oHTX0Y#$`u7e4>6KFF#v3u6;tZ8B2w9eq)__Af?WP~ zvWE_mJn$Iv%aJh@^qgn404ZR8xTzUNYWz-tK2wT@_LheKC4*Z*=B*=jWEHR$?X70r zA5kqAYiYM5%<{TNP>{pVJrks`41eKcYuq83R<8($3vt1MQNaUur;dQ?qZ9h4oo7#w zB-R@KWy%F3I{B~pk<-?rrDm6UlQz*DGU`KK3?X9bDE@m+k; z;^O>Ucun6xawF*UAJdZ?I*YkWgZ^f6oF$MszCmcVyNJqYb3uxdn1kuOA_;oFyYW9~ zfWY2uCfzmnzY&9{&9&jU!;5Vu)f7uP9Sv(5e}}|5a-g~x&X3)(l|!Sayx2G}!(NAH7dlNZ zwrYk4tc0Sfy~awe35h>)mHlDfiN^+@bkez>D1EX}<6)CaNHgyN)Py6Aq-4lsH0TF` z+SnOb4ZdLl7(-CHN{Ivrvic9oI#Ixtw=t>+Wkj&0BAA?@w}`scKD)YL<#5Z zkdX0t+Qhcnn#vBM=E80im&(Y;Lv&r=S2#XoG;M0T$a+!|H82FWT=kF`C0T(@t~!$g zVd*f-2)U>U#WzsQF6HbQisGO{1`z-q7c@1qnaE{G9S;UG&`C~=vRmS0;k4HY;DX4g zhi=cBsK8d6Ec+8yV^+dwN<|FQZhaUFO1;0Q7VC8 z6k|V=!@6N?#Un8Vti-W+++HG>q_Q_#jQcOX!bwIlH1C!Jgy?cgaf7i6rNF7EYr$ZY z`BV^8R!6XZw)5SxlftvR?}IQU9cDtme*bV$PsPR@3B#A5*7P}S9Bv0Hz<UyIcBM^B-rsEG2M$U4ZM==6jkFh1w^*GT4zH>D5M$cyjC#*nPe?ZY> z$>Q?WHZyn3xk{;4)AHWHV|T-Sebv3=k&6&iA-!#%1D7($Y2U#+IZhrP8}-k+fU1jI zUfw?U5E~jNytEtby)4cQD39jRZVN7AL9i#PR15^my4opgXjVknL~HKdxhVWHk&QH3 zYlKKuK8z2k@NY)k1YR~L^JPqRzoR;+z5-_n)dOMJ2(qEmreEL{ilY|QO02Vc&TIgw zNkz2R<1V%m!#OdWCk?jI7pccWPi&b1+`DJVwRnx$SA4wmDYs)*r=o*9 z-|mrhy%RF0ejE&9n++di*f2sZgQm0h|BhVipZT<#6O*&oZIQiBj}AJTOy?FnPa<{< z{}t$-^g9coJnF*Pypdv36^mv>e?p~RB?t^wW)?81Q(SMThArE&}qE-dGGz-T6eP+*xNO6Y}-{M8U4dT4)YTv5` zj{{d70Dsu)7!QYlQXr3l86}#T5g>4+=V|loRXt_A0^f7$z5S9@TD1sd76K)0jC7Me z1%u8Pb+uk*Ai4dMO6R!wYEe+xx!~q6Z~hw@LZ^p~YdWSmB%7LkP^=S>?c1Nqy^}DA zH(4TI{m$@VkC4%P0r)!j9QVBX;%o1WkV#cNPg;O=E?0@AK=E1-h5f~LGYds1T1NN_ zy2HvdWhZ~t$(W^gUBQom`Vu)N;7D`Pal3}AaZ5%iOIAQGoUXSwknk2Q%R$MbPSZ;m1ZipzV!$!`_W=Vob(Go1gux;4;1qE3?0GK>8g|NMtXlEx z1xlHUMsDG(c3b02L`gBLNzNI^DmQ-T5cq8XHv;zn4FdI08TEu9s=E}%r6Y;vFg#yk zs=Y@aY)ajx1yC7|*3ll0w=|FZy>?I*dhQ%gJUhtG%&I0f6`EWSuF5X5;^1aI>YD1i zd764L6lzWb&Sc>av1^oId{gX36D`aN(99%y$;}V&|K105#$*(+z@-f2t%1Njd&O(= zyYuKsniMz|u<9gTQYVIttnV#`r}xWJ=AG*7BpNVA3%VHqgg9PaJ`)RwvJ{BVhAz`C zvbW#GRGz7CD}bx|=?6SHb$?FW2j~7pje7z?H?BvSgy4krejK(#QoL)H&!`awYIaP; z7UeDKH7#azM<$D`+KRuQOY6WHgn5}cCVR7pB`8=zWnLGmvHVsq#gWJxR1oK`k)N_S zA^H!zA8HK*SkzSq3vU0tv8IcPjtdO(FxjpRC}7BE$d|cMQHvrq?EcxY=ekr<)$no8 z<=OP~OViInu0bKmYB=9Ls;vNzb78$%v{zKYoTPcD1abP}qC;3p?@|?ogTl28f9SDy zYG@gu*r0H8z%ikbmtiB(DZTOyy5U_#E_0*Tk1ek9k8k!S^1guPMlbK&{rKTc6L7a;{3 zYd}_!KQw;JGpJW@{aI=<>Ew58%XbPgZHXfw-Qev#v{csfZivq;>uaHOeU z)RRUuC@ogBk~^+cOH?|b0$Zw3yyz%c zW*(5{djndCfmgzt0(xwf=LDuO&KV~2t$clJvjzBnfJUdgWaFr?P;aVMUw`779vs!m z4eq2SlfaT=wuN>ij4M|Q1Zrbo6hBR$7^2agw4D|^-uaRLVHt1xDBJM5A+AMHM9*s? zQdH;SE=$`=+=<`^2!`B7DYq7XU}Uzk_+JHeW~U44C<}j3DpcvQ*0-Y}1|Tqpc-$;n zrYGs0$<_iub0URtL>^55Nv?3{2~H>UN%-rI%}m0gWv!K>m(vOw z6G@$)e~4u@xuD1!46ygb_2=!Sb+kk{4G!39tze=!IR*(&+2r zuGSz^o$7ML32s=$?K!?&pg+RnUN5l;^&cJHhYmwmrjWlEb)B=T^o?yF{u-wTbk2x= z1wMUt%akLS*?;2O1!-6TMwv&BT~9x4W7UfqO~;23W4d%o#9hl;ApFZ9$R&Rpfwg7l zm%phZ`yW;-)_bkhb^n(6$%h)4FQ4TvuaKd0|KQPc|NNm#ij2}H9c~6{#0Q%};`+~x z{LUKz)pAsR6y;`+NdTFTK$6r3-^fKS1D&$jR;*2}&~tf|`7&X~^F<&eHFW!}Rt|L-(DlO}9|ShQu)x5s_8X6n6u@@SxRZ z@|2N%(9c{7l%R;8YazdcDQv;I8u~w+vHNwe7}uNj0TR?riaF_JUhGxV?m<_7bYR|O zbpJ(_(sNdhT_i_%_MxWsKitZ>EO_CD*so|M*9YF=&qFmcmuZvJGZBE(j0j`boCf3y zlrAo4UqKKIn1Mru&3j@2;u?D_6y#8LY zzuU|eXDMnYMgcQ!bQ@2&5w(L7RJJCcApgOPM;Ura>T}10Un40$XrrR-!-9Hk!2a{f z0FU58+sc2|&hRw}b6lE!AEd4J=E{eZf5tvjl6pz7-N9Q?Bp7>VKGUZCgq)C*P=ORx*oucff6xF^@dcEyAklhnrkppt)TIvP8!kEZG^%p z3XUvsH)w%{9(Vgh>`V_Xi5S%nF#jhXCT^3&kM@?HtgO@=NLQ&84`b4%xE_Ms*@v?h#* zG&Hwf_}rjyo9t0Q|60^_2S%zY^ORR6^;GVqgLKkPQ)(SbEO-w+-J4Gj=&k4vT^n%{ zbPa*7Vy83@cG9BbBP*qSy>A_FiRtUV^Fqy981On)(lt0Am1S#-RY-$pFs~NY75@yB zs2APtAEQ2*?m-M9;Ezk863-6^);uh2(Yigg>BiG;MrtUHf(YlzlVD`HxEe0bk-O)o zYEIo6+-PA8mqR+_ZsNr zcW4P`lcLTYsA(*-7D&C+CFhy%Hk5W-r?>A{f?L@!-_)xb{W|UYZ5S~VYXdHOWtS}k zr?XtMzyXr!ytCSN?8#JEq5atBG z4PNG+YZMqQJu+{$uJe7)s@o7@E_7ph<>6uA`|Hj`kg6A#bD&d>Hqr@Oy}39FVf#L2 zwXPV%zlddVKhm3cVcg^vuz_sJs}SDGe=KdY4J^A8c=fDQ6M!UA!LXn@q-V0Vfs)UHT$x<-7lSH zUB06`{NDMCfZayzV%Z9n`W>mzS6(R5vP;tsi}T#p_7kgktBIG)a9 zg^AE$nG{WZ#&}b`nT6@GJ#uH&bd%eW0&uH^}Ry{AHH1u@+Ck!KS}8;vKt~ zBOrK3N{+B%=-;-}8SdZY(hXYM4xmb8gK+bKU*MPdaby1WD3t!)srmQq(Fc5@YXW(`G-jQe2I9OIA3(d4F!kB|6$k6m2WR?$yb@YrvW{E|sEP@ht1D1#(@%C0<1 z)O)VsdwYvc)aNv;7nzFl_f92noN>^7u!QTI?g)2)M(E1B!+tk@wb7hMq!N?>Li+(X zWh#K!g9HD zIrv;f1{zBw+g+%1btN`zGMzp`x@nuP5b&?%r3I9@CupeoDs^ z?1KK*gTNW_)_#TT8;Z^=YH?Y3$69KtHvdJ-C=socrL*65&}=4ZMAC$cNKHbin*Q3= z5WBvpIn;XmWG~PiRW_qqzJKhcvIY<_7eL!-+Y9m{tYrlWfa0~Io9Cp5Xi^D8c^LR8 zXDf!^wNcR0Poa+IVaB3>r6jekj3vHIrgC{75{BT@aS)yEh|H88gxp(6o&2ngaCEi7 z5cCe9E$#lo=S-<}o7Cu1hmCN-PqN0V>3cWzo|nUp{@ ztMnGH{-UxD@C%^-FJL3>SLSsuTRtJI6LV0HBB<~Lr^84rR$jl!3{b>I-_bbiS&WgXX zswJW=e^2H$@8}I(oHbW=q53S7PeGwrvCu45U~g337F~g^KQw&Vhh1uFh+Mu{xG^7F zrd#JvhkJ6o5ky%tS=hE?o0DpVd0tlT|)ov zkWd{+HOpIIj?hJr4xxA0F`hc3lB<^ngrm!oRqb4p2xsyRj%~Dty3vjC5cSb!5QOAGU^ z^07>%CL3G78Yk~!u{@wJ7Vf!}j%<_kVAK8@)>&22zEB61^5<*)h7{z6lwo}mJV7tEXx*(OLvX5y zO}{glO#cYJ+ZzV90nme-eQeaya@H!)eBisx>B+5&3%@h*`6iAGml{jj&G&Goq)GaM zp+|Kw!mH+$+~fPbDM4dGvB|v-0#p+*XYz$u?!_W6=lP@+O_!p~GT!&`>GfXdG#D8~ z#v4hs60OBZ)gyR02g0~>)qVzBz1DKVWDP|{nOKJL6DNGFd!Qc@i}y|Z#?p&Rgd)Ik zMBE%i0;3)GFvl~5*7+d&ubd6n>X9C$<6{cvO$J2P3B7~Ff4y@e-I%hdYggD-&>kBU zPUp*n(uHM_me8^2GEt6r>L_hD@JbR>iwV?}VbyJ%0PzLa%@3|LfbpsYJr9 z(b9a%m*|x4js*edzc=4l7eyMPL-l^R(6fY*Oc$Lom{Gs&K(wKfN?%LyBEo0tjT7vy z8%ob*{%xK5U_9yAZU{mrH?WZlhKhU?dMzs31|lb{m|7WnO5FLJhK-oQqbXK}_7SbZ zGCIP@K8Mhai-*`RZgWR`pbpU6Muw zpR%uPymuxPvSs)m5Q@NLOWC-JK>KB4?#Q!Mk76vGvWC|hO9Nc%hD9k5SFgvA4VOOt z14(6Iq1jxzgg$-bv=nushYrdBl0D*w#06^`MzbKY=VV{K6)6=JR1UA3#B2{={&jx; zs@v+7>PD!&|NlhxX;lNk!kFPD&fi!22byF~k z31hbgS?*8z>>&T}yd&$2NdNc~!t=l%cjh_%&TuV#oj_Vx!FO4epqiQnbz8+?9dsSk z>8Eg^65}umVr8p_$?3bISI4rG0J*e~F>wgK!~_DD$QUqmXH$Z3(9FC;*El$RB1AoL zDAhm_Ls>Cyq60%4)i=CHfCUaYP&gc21&##QQ{&lx>{@`Du}@fe&EbzFaGhE9C=}Lm z8B56mn7Gf9!wGf28LM<4M-f7kIDA$HaStSj11CTp`Twh=qKmkJIXK@^l zD3PtPuNwa+sX#_`I2Q6h_9)vCQatw4n){5e{_fuMacvYkgLp@@28I^7e_bqF{y3ei&d(5DV!}_4VIE(33PT3| z?wPW}NFg9SIV<+=&Kc6NeU9bYpr@~;a?8Ypukd8WgSfW$8b;7_WFb)H-Q;w^YqilC zfDf9j&ViPbl>87`my~OH(RuAeEdsuZ<1bz!20%+A=7LZ0{Srz^uXS4NGu3x|EF({k zt<4EW`-hk6<<#6%+(^jUjH8(oQciy z3`Gu|SnHtUZ6G{ilqHY}?fBy5_;`mDll5mC6^y^QUhT@y5iX=yJ$@p#UqZr59{=#U zahl&%%NZio^@T2BV-2jFV6D#k>|h@yxosL5-?h_*D|_02p@(Z)q0WaXnKC_a6Au63 z0}CNw{?iDw2cO^LJLkppOikv(C?mG7o)|lco-P8q7{8EPd^D#PK7Up0Q8O?ig}pTf zIgY>s^2>F>Gp8u0`iIrdv2|Z@5W;#4VOd`+&>kF&mFuYl`@;G{bEv#@rKaQX!zz)Q zne(R}<|nH3Em`>am5`3bPzSI~eidg{3PllCQ z47e9-mKT!B zv@o^UK;&Dm^FXrt`&M?|LuzLn!KrEm5^aQ{b`j%Nt>ksU&ooZ_$(qQies|g zYZo8ooQyF<+6p65pqIpUE;Dbp$+uV=MDO&coiej6Ib82Zc0nr`ovGn^SKa>a@ay9c z(a@^J7nD`g_4J~t12<>FxWQ&Gh(hpwG*DU;nbA`$-MCLg-cW!X8NTtix zdLeIe`_cDVH7hu<@39RKt2E4dxPf+w}%g~WpR zWcti#=Gx**YD`c^aODrc^2mwZrH7IZFVY$wFxu&&DWAtryTLYdUDOV?>cj(R@&x+6 z%pPaXwj6K*IDl`Z2dCk5#dgtuMyQ%aP)_lFQ4&ZwXl||h&oXMACs}Lk!RdGR2$UU= zUqy-{+U`DF>FNt4s2!&J7;mQ|5KT%Q_7H4H!80} z5rKw`3oD({%>qvMdrhQ*pI$>=n-)bkV0-aosjauF0lll5`4ytd!Z%bZ)K#0hDWZUI z9!0j1+Hx|RL=lGl1^uz>H*nQnYLS~n&*jEv*NA|78w z!(=VHp$|6i^BYq#dvt>=|! zpt;#JL#S+mqMId1VV4M3XFgE^b8r-J5YSMj$>gX){Ux&@LMlO+A3JtI&1_+Rj_6%T>OE7*eby$PuK4}rjQ%DB-94B6q+!XbQxQ<*D@ zy}G2NqGpwo`r<(3%8jPuFR0yz$n<=91w=W;{m{QKLv~A=);hvqlobMk39vA#F5%y{I-J9vE-kqw9)iaoKSk59-}q!0@n?+CJ^}L zej4I9%TsUvmLyO@E`_}cAQ+jh#PRySa7B8lYDy;2!=^f z{bPCI?@C||MW$z`&SPrdiAI+$gUx=~)OC#$!hQPM1s&M~7C9x&-OnF+z$h^&WaB}z zziqB^7A{vXE$QJR!XhKoVL!L~3!f?b<7^MD2`bTzOb zVhp>@P_>a!zdrei(JOzgG&E5XIkf>)Fv1p!s2#RgDSpv*9V3oi@(?r5i^y;lot#mr zZVwi}f5R+7hpe8U7sz<0tRyy$sbPd~W03Aj%%h$xl+cYRa082b+;PcxcGR{Od~+X~ zGVU}9*~%Cd8~bqJNcj51#TY@di$Xk@T}~=ILJLR8pO0Wx@C`&pMh2Nx`i3VeVOJPB z#|odKtRs0Udf_|cw`5<gtnVY!XXdB-K`WdSw-+nj z0$S({_Ruidi?(wEOSoooIP8EaAdMVXd{E8E`}^TjTjkl+pcx{`2H>=+R>4{34TmY` z71r=!N0UL-#<1bT8$?E8`g}5rONo%)OLt8s$))|D<0t?SOJ-KbxC%#ULA&srryt?|qQ!r$Lyqcr%c*~c#YRhiNf}%2 z-JMlcFeq)<6{X-Ob;~*|LIRDHNE_8%&CL^DX%7rgbZLwOvFX|ImTnmMybJAbq~m8) za1ZkyrhJxJ+bBS)h#!&rBR<=IkV2#a1U;wfUjj)PA&=_~t5N+-Q0}jB+^jI~S|GnY zku-hHGk~1f@{9C7B!6Lj_|&<-D(a*jf2ppJ~BftsH?pOGi;zUM)j{ zF(z|%}W5-0GlTH+eGMA(du^B^twqIn5xN@s0%JR(Xs;Yveb)OhaLO*nY z;WOD>tB!~C{EjP02 z=_KM%m?(G}F{r$K(1VdKLxwhC(yZa7{kb)OWJor%CLblGP*ij5R?+-m-Ls9-Zw-p! zobq2pJvng>f}hYr{?8nhg|5u)+nsoL1#xE*U}Xii+Z7MMFQ9Bb{Z za{hkKV@jn#XdN1yjX4b`a0vMg%SD$mQkA_;ig>I2>;v~EaE4@EH)Yi#Jv)iS62vT< z9|C5$D0Ng!&CX+{b5Ru1kK?`{-RR;1%#D#_vjdS95B_3+qB-BMlX%SaK&y7hB{%;t zWu((Xjmkx7M?LcOi2}isqoRs1-OB#mem%3H)Zmn30olVuJV$LHo+9fEyCL%cA|;iG z2wy4+g;cLZcltTE{mTyT5)PKd^F#?AhZjC1{3uOlQ|1b*MD9_w-e>pnA3_mNsC%8O1)(zT7B&dUHQ)(jD{+%LV@=>GAph? zr+JbcfCxKr(__hlD8JCtsnOv5J=X!7d4S|W=t8bGp$L&$Og1)LLw9Aey}BL&J>Z+9 zaA^rh;`)&-Quk^obJALz29XRg%D@$!*OD2PmU)RpQxY)KS5}j$r<{eV=8(D;fQd37o#(bi*d)Q+9`QxBAMiFXwz44_eWfW$}|HP zL!y^^+-Y4rIQU}FKa5(lOLEYXswyScV;3!yPMt03OXM^nY2oqCvbqE9K%;=xrdTBj zN?3`QqXrvf_nNK%Cz;=NCgUm6^@U6IRtm)+hNM0XzbZ3+qoz6@-fW zb(r?oBXJ@_??^Z_PU(4urM+~eANGW_W`3k`uBqEu&@N1JI``zN<>(!(Ez0pPccbImuew*Ck zVwy~@#%T_}^$tbO4LGou^La*C7HPmw3gyt+hSorbeys>;EXC<2M1lKd-AQAvHyUh@ z-MP|(?RJ84vfNY$*GY{@)7v1S&hH(^OTXw{zN`c)FLOLAa=4D6FB8$M${6Ma3gT`< zurhMe1}cZ2%LWO|+{A@0qrj(Ev3p+7kVg|I>W!&vT=;90anrU(oU#b`RW#apTGjaN zj4xIe$}xie_u7&M6Uad{c0KXPv&elx?X0FPaBU*l1)1s)LuVx1w>sV}*4Hr5py(<2 zm6=#{5q>H&?-9r4RtTtYP7aa5>u}cecXn)hl|IQ(QEt4vy|OUmFE~Y*71jdBGtj^0 zt&RmyChU)+u%am=jFgHw2G%Laai&0E7H1=qX2g>E3d9jn*uN(yChFbgVMukVxKqOx z{DBd23Lh_<>2mQ@ERvP0qLTkZ)K{>z)pfx_2oQ=xp=fa{7K*#Ow-k4$NO70o?i4RB zZE?2(!QI{6-5qY;?>_gr{~+gN@3Usjnwf=^=Ep^n;rMU>N6`$|m(2w){rX^v@o|Zz zKac+MF%H|QKVt=BDr2oVUFC4O;MWtk;dPPzGyZ4vs9rNU|5L+(-@lN_M~V5!jNU=xDYQEJ=1XEsXX6bG7k;^m3VOBG!#6Y>iylVG&$zxL^dKF#Di)^i!48r+qc(=OqD31@ z=3vqJ`N4I8!Y(N3?^Naer=z%g%1+1r9Dz41eV;>7*bq{39%BZYGfjd@`*kh9)Ch;t z4qSMIRY(fWdLj#QVr?H~COt&(9DJDeq-C})hq=zpqAkR4Y4J0nVgl9FGiPH^mHCKv zGPpad7-mAY|Llwp(oC$FNfZJSJ`UWttp>gZx?UhI>Zy~KnUy|BRI*f9SF;T0E6+6O zo(IciwH$CO(RT;?(0_{`?LYE+z|i4N0@kL8{d>J^CNS*hC@8zGskilqsf<6vEY7Pa zO)KxVa89DlzNXA0_5aO1sa||4MYmFT6kc}a~ zJt+C8In3Nwu~KnzZYMV+Fo+9Shx!n>Hm;S6HV598{liSCBviTi`oV6J1T-WiE|{Fx z|4xH_9IjrJr^k774Q8@R(rqU{oBxJ2HoZKw`5!udctx7cJ-GADvw0aeDlF+Lj!9R>ah2pkc9; zN11OpEIyeEiObI*n8wFm2Dtb)BI?A9TwfBcinAjSuM7zRC1?4BN0~~x znaoOCtXAkbu@>(LO_02Dmsx13R%Ox+g>iWLn$dz>fgcRUmY*qX4&ufq1>AT!l_ z5sVSeoBU}}ZBYj1AH!e%NPmBO^1E$A5GX%f^jt|(O<`V2uo?JP&os~)peVZ!RKS@e z7a>BSjtg@BNL@gOCDt#mtWV_s92*3cm&qj(LnRILif>siGuC1`OmDh-yItK|_L7!K zuace|mf77~3#~K&z!Qx2$Abv$gXZqHJM7`DH>ZfY2i>ZdJH-7#1bqht~J{^DSg*27V~{ z8%JyPu0`f`pUW_>k^tZoIbVCh)D30r@WafTG~iN}Y;aI|+Q-bxycU=?My`~8o`vj)>kdLji39S4*+`7;a0 zVG3-km!~Gw51XhBuV|va^&T1RK$$mn-R9b-6jVR^Cd^i4aU}?|cFUr+gZtFGApZ11 zQtZey=2MS*WI)J)?w7no_vS1jlcc|8<7Sq(n|PwNcQle+ktLL||TE4w$*ch{%>Q zE(uh*Nz(33JSz}dB)FvcZq%`xff^5=5TM1I>Uj~WcF8yl_s0OwB1xiNrV$<4z)xNM z2Ty*{41N#C#Y<*C=WrFm2l({jbkzjWHT5PcRX!(*xU>rTAxdW%*RFq;f6Z&*f(6!n zxRlt_?b=SeEPt;IK~QF{?JqkAf`&ife>EMfrGB6N_;^>jeO-f8zO_5dfD4b1S}?3q zpeH_GC9t{v_VTDC(DLj6@8ls0Nu^WM&nIbJb|eX{OJec8+iASS%?@wsJmnq0Rv{6E zR!>+3W921~*3;B`E z4BhTFF^`D@S%&PLaQh+YlyEmfP!JdnC%OwEawYOdNxDx9Z=Go$TB&FaI}NLh_pm<% zuVZTGScK5(tzb|r`w~QF%)$1QcOJ|6CMQ5Rh1tIv4RjCV8-qWCD|#K5pBu>8W3R1o zh{@ompYdBUZUyeh7h|~^1KI~-+K?0+`;Jx zX2@Z+-?EJHkYqbDV<-(&-~znv6Y|kK@p$xg<|Ny|bB=TLdk07RemQ%cmg%jQ2=h!C`vAI_ zK$;)C$l0%#4Y>F;9}B?gL)2KX^GJ>L&&c;T5{F&m;g?ztG7YhbyijU1t{*jFcw)1= zaBaSOtSUk#t~Mcsk~tt|Z=UB;s`KDX`%Yb<{hU@K;dED9QR>NF5mx^;fov3QTJ$2* z6jQXT2ho+g!5~4wG`63p@fvFBV8cB5Z-|h%AAg&u)bpUaA13jZ`x^(i=mq0ChYLm5et3eyQW&k-uOt{CS6G?hFA zJ8(qm-1cwnSD)&sL1G^PY_9@&l==isiWec% z;J9yU0TWZZPz-a2*7imKOqsibF`+@`;WAf$ad@S?!7copr4y5XMlAQ8K3){u&4gdg zP$W?7JW1{S=GULMWFsyJKmrpUQVH0<+ggkGvm zut-QZOdpEVj>7fS{^yowt$K z;%|+5y|S{P(*nep01Ll8~zqjO`NKQ(z8t6qPFSkmn{bh3#-!}lM7Bd}>Ty_e;C*dDf zz@^(HH<5sM>{ad!tHNEM#}6aM{0Rxh zvIYb-ZHB^0BR9M}e^j8)NUohvMa5JCq8WbXarhXaK>^(k4<+k^60_a!Mpi zsjGMsg1`H#8fb7oipetⅇ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�r2`Pz*N!o&j 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 literal 0 HcmV?d00001 diff --git a/apps/expo/assets/images/splash.png b/apps/expo/assets/images/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..0e89705a9436743e42954d3744a0e7ff0d3d4701 GIT binary patch literal 47346 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 literal 0 HcmV?d00001 diff --git a/apps/expo/babel.config.js b/apps/expo/babel.config.js new file mode 100644 index 000000000..22eb9351e --- /dev/null +++ b/apps/expo/babel.config.js @@ -0,0 +1,7 @@ +module.exports = function (api) { + api.cache(true) + return { + plugins: ['nativewind/babel', 'react-native-reanimated/plugin'], + presets: ['babel-preset-expo'], + } +} diff --git a/apps/expo/index.js b/apps/expo/index.js new file mode 100644 index 000000000..60973a208 --- /dev/null +++ b/apps/expo/index.js @@ -0,0 +1,5 @@ +import { registerRootComponent } from 'expo' + +import { AppEntry } from './src/AppEntry' + +registerRootComponent(AppEntry) diff --git a/apps/expo/metro.config.js b/apps/expo/metro.config.js new file mode 100644 index 000000000..89b788fef --- /dev/null +++ b/apps/expo/metro.config.js @@ -0,0 +1,22 @@ +// Learn more https://docs.expo.dev/guides/monorepos +const { getDefaultConfig } = require('expo/metro-config') +const path = require('path') + +// Find the project and workspace directories +const projectRoot = __dirname +const workspaceRoot = path.resolve(projectRoot, '../..') + +const config = getDefaultConfig(projectRoot) + +// 1. Watch all files within the monorepo +config.watchFolders = [workspaceRoot] +// 2. Let Metro know where to resolve packages and in what order +config.resolver.nodeModulesPaths = [ + path.resolve(projectRoot, 'node_modules'), + path.resolve(workspaceRoot, 'node_modules'), +] +// 3. Force Metro to resolve (sub)dependencies only from the `nodeModulesPaths` +// TODO: Needs fix - Although not ideal, this must be set to `false` in order to avoid a dependency collision on uuid +config.resolver.disableHierarchicalLookup = false + +module.exports = config diff --git a/apps/expo/package.json b/apps/expo/package.json new file mode 100644 index 000000000..7484e9fed --- /dev/null +++ b/apps/expo/package.json @@ -0,0 +1,53 @@ +{ + "main": "index.js", + "scripts": { + "start": "expo start", + "android": "expo start --android", + "ios": "expo start --ios", + "web": "expo start --web" + }, + "dependencies": { + "@hookform/resolvers": "^3.3.2", + "@react-native-async-storage/async-storage": "1.21.0", + "@react-navigation/bottom-tabs": "^6.5.12", + "@react-navigation/native": "^6.1.10", + "@react-navigation/native-stack": "^6.9.18", + "@stump/api": "*", + "@tanstack/react-query": "^4.20.4", + "class-variance-authority": "^0.7.0", + "clsx": "^2.0.0", + "expo": "^50.0.6", + "expo-constants": "~15.4.5", + "expo-image": "^1.10.6", + "expo-splash-screen": "~0.26.4", + "expo-status-bar": "~1.11.1", + "lucide-react-native": "^0.330.0", + "nativewind": "^2.0.11", + "phosphor-react-native": "^1.1.2", + "react": "18.2.0", + "react-dom": "18.2.0", + "react-hook-form": "^7.50.1", + "react-native": "0.73.4", + "react-native-gesture-handler": "~2.14.1", + "react-native-reanimated": "~3.6.2", + "react-native-safe-area-context": "4.8.2", + "react-native-screens": "~3.29.0", + "react-native-svg": "14.1.0", + "react-native-web": "~0.19.10", + "tailwind-merge": "^1.14.0", + "zod": "^3.22.4", + "zustand": "^4.5.0" + }, + "devDependencies": { + "@babel/core": "^7.19.3", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "babel-preset-expo": "^10.0.1", + "metro": "^0.80.5", + "metro-core": "^0.80.5", + "react-native-url-polyfill": "^1.3.0", + "tailwindcss": "3.3.2" + }, + "name": "@stump/mobile", + "version": "0.0.1", + "private": true +} diff --git a/apps/expo/src/App.tsx b/apps/expo/src/App.tsx new file mode 100644 index 000000000..87e2fbe9e --- /dev/null +++ b/apps/expo/src/App.tsx @@ -0,0 +1,130 @@ +import { NavigationContainer } from '@react-navigation/native' +import { createNativeStackNavigator } from '@react-navigation/native-stack' +import { checkUrl, initializeApi, isAxiosError, isUrl } from '@stump/api' +import { useAuthQuery } from '@stump/client' +import * as SplashScreen from 'expo-splash-screen' +import { useEffect, useState } from 'react' +import { SafeAreaProvider } from 'react-native-safe-area-context' + +import { AuthenticatedNavigator } from './screens/authenticated' +import LoginOrClaim from './screens/LoginOrClaim' +import ServerNotAccessible from './screens/ServerNotAccessible' +import { useAppStore, useUserStore } from './stores' + +const Stack = createNativeStackNavigator() + +export default function AppWrapper() { + const { baseUrl, setBaseUrl, setPlatform } = useAppStore((store) => ({ + baseUrl: store.baseUrl, + setBaseUrl: store.setBaseUrl, + setPlatform: store.setPlatform, + })) + + const { storeUser, setStoreUser } = useUserStore((state) => ({ + setStoreUser: state.setUser, + storeUser: state.user, + })) + const { isConnectedToServer, setIsConnectedToServer } = useAppStore((store) => ({ + isConnectedToServer: store.isConnectedWithServer, + setIsConnectedToServer: store.setIsConnectedWithServer, + })) + + const [isReady, setIsReady] = useState(false) + + const { error } = useAuthQuery({ + enabled: !storeUser && !!baseUrl && isConnectedToServer, + onSuccess: setStoreUser, + }) + + // TODO: This might not be needed anymore after refactoring the client, check this + useEffect(() => { + if (!error) return + + const axiosError = isAxiosError(error) ? error : null + const isNetworkError = axiosError?.code === 'ERR_NETWORK' + if (isNetworkError) { + setIsConnectedToServer(false) + } + }, [error, setIsConnectedToServer]) + + useEffect(() => { + // TODO: ios vs androind? + setPlatform('mobile') + }, [setPlatform]) + + // TODO: remove, just debugging stuff + useEffect(() => { + setBaseUrl('https://demo.stumpapp.dev') + // setBaseUrl('http://localhost:10801') + }, [setBaseUrl]) + + useEffect(() => { + if (isReady) { + SplashScreen.hideAsync() + } + }, [isReady]) + + // console.log({ baseUrl, isConnectedToServer, isReady, storeUser }) + + /** + * An effect that will verify the baseUrl is accessible to the app. + */ + useEffect(() => { + // TODO: handle errors! + async function handleVerifyConnection() { + if (!isUrl(baseUrl)) { + console.error('Invalid URL') + } else { + const isValid = await checkUrl(baseUrl) + + if (!isValid) { + console.error(`Failed to connect to ${baseUrl}`) + } else { + initializeApi(baseUrl, 'v1') + setIsConnectedToServer(true) + } + } + + setIsReady(true) + } + + if (baseUrl) { + handleVerifyConnection() + } else { + setIsReady(true) + } + }, [baseUrl, setIsConnectedToServer]) + + // TODO: An offline-only stack which allows for reading of downloaded content + const renderApp = () => { + if (!isConnectedToServer) { + return ( + + ) + } else if (!storeUser) { + return + } else { + return ( + + ) + } + } + + if (!isReady) return null + + return ( + + + {renderApp()} + + + ) +} diff --git a/apps/expo/src/AppEntry.tsx b/apps/expo/src/AppEntry.tsx new file mode 100644 index 000000000..2b124949e --- /dev/null +++ b/apps/expo/src/AppEntry.tsx @@ -0,0 +1,41 @@ +import { StumpClientContextProvider } from '@stump/client' +import { useFonts } from 'expo-font' +import * as SplashScreen from 'expo-splash-screen' +import { useEffect } from 'react' + +import App from './App' +import { useAppStore, useUserStore } from './stores' + +// Prevent the splash screen from auto-hiding before asset loading is complete. +SplashScreen.preventAutoHideAsync() + +export function AppEntry() { + const [loaded, error] = useFonts({ + SpaceMono: require('../assets/fonts/SpaceMono-Regular.ttf'), + }) + + const setUser = useUserStore((store) => store.setUser) + const setIsConnectedWithServer = useAppStore((store) => store.setIsConnectedWithServer) + + // Expo Router uses Error Boundaries to catch errors in the navigation tree. + useEffect(() => { + if (error) throw error + }, [error]) + + const handleUnauthenticatedResponse = () => setUser(null) + const handleConnectionWithServerChanged = (isConnected: boolean) => + setIsConnectedWithServer(isConnected) + + if (!loaded) { + return null + } + + return ( + + + + ) +} diff --git a/apps/expo/src/components/EntityImage.tsx b/apps/expo/src/components/EntityImage.tsx new file mode 100644 index 000000000..310e0da06 --- /dev/null +++ b/apps/expo/src/components/EntityImage.tsx @@ -0,0 +1,64 @@ +import { queryClient } from '@stump/client' +import { Image, ImageProps } from 'expo-image' +import { useCallback, useEffect, useState } from 'react' +import { Platform } from 'react-native' + +type Props = { + url: string +} & Omit + +const isAndroid = Platform.OS === 'android' + +export default function EntityImage({ url, ...props }: Props) { + const [base64Image, setBase64Image] = useState(null) + + // TODO: handle error and display fallback + const handleFetchImage = useCallback(async (url: string) => { + try { + const base64Image = await fetchImage(url) + setBase64Image(base64Image) + } catch (e) { + console.error(e) + } + }, []) + + useEffect(() => { + if (!base64Image && isAndroid) { + handleFetchImage(url) + } + }, [base64Image, handleFetchImage, url]) + + if (!base64Image && isAndroid) { + return null + } + + return ( + + ) +} + +export const fetchImage = async (url: string) => { + const response = await queryClient.fetchQuery([url], async () => fetch(url)) + if (!response.bodyUsed) { + const blob = await response.blob() + const reader = new FileReader() + return new Promise((resolve, reject) => { + reader.onloadend = () => { + resolve(reader.result as string) + } + reader.onerror = reject + reader.readAsDataURL(blob) + }) + } else { + return response.url + } +} + +export const prefetchImage = async (url: string) => { + if (isAndroid) { + const base64Image = await fetchImage(url) + return Image.prefetch(base64Image) + } else { + return Image.prefetch(url) + } +} diff --git a/apps/expo/src/components/book/BookListItem.tsx b/apps/expo/src/components/book/BookListItem.tsx new file mode 100644 index 000000000..42b8300d2 --- /dev/null +++ b/apps/expo/src/components/book/BookListItem.tsx @@ -0,0 +1,31 @@ +import { getMediaThumbnail } from '@stump/api' +import { Media } from '@stump/types' +import React from 'react' +import { TouchableOpacity } from 'react-native' + +import EntityImage from '../EntityImage' +import { Text, View } from '../primitives' + +export const BOOK_LIST_ITEM_HEIGHT = 75 + +type BookListItemProps = { + book: Media + navigate: (id: string) => void +} +export const BookListItem = React.memo(({ book, navigate }: BookListItemProps) => ( + navigate(book.id)} + > + + + {book.name} + + +)) +BookListItem.displayName = 'BookListItem' diff --git a/apps/expo/src/components/book/index.ts b/apps/expo/src/components/book/index.ts new file mode 100644 index 000000000..849a2107a --- /dev/null +++ b/apps/expo/src/components/book/index.ts @@ -0,0 +1 @@ +export { BOOK_LIST_ITEM_HEIGHT, BookListItem } from './BookListItem' diff --git a/apps/expo/src/components/index.ts b/apps/expo/src/components/index.ts new file mode 100644 index 000000000..ac1aac4c4 --- /dev/null +++ b/apps/expo/src/components/index.ts @@ -0,0 +1,2 @@ +export { default as EntityImage } from './EntityImage' +export { Input, Link, ScreenRootView, Text, View } from './primitives' diff --git a/apps/expo/src/components/primitives/Input.tsx b/apps/expo/src/components/primitives/Input.tsx new file mode 100644 index 000000000..dcafc875e --- /dev/null +++ b/apps/expo/src/components/primitives/Input.tsx @@ -0,0 +1,15 @@ +import { forwardRef } from 'react' +import { TextInput, TextInputProps } from 'react-native' + +import { cn } from '../utils' + +export const Input = forwardRef(({ className, ...props }, ref) => { + return ( + + ) +}) +Input.displayName = 'Input' diff --git a/apps/expo/src/components/primitives/Link.tsx b/apps/expo/src/components/primitives/Link.tsx new file mode 100644 index 000000000..a47828652 --- /dev/null +++ b/apps/expo/src/components/primitives/Link.tsx @@ -0,0 +1,28 @@ +import { Link as NativeLink, ParamListBase } from '@react-navigation/native' +import { styled, StyledProps } from 'nativewind' +import { ComponentProps, forwardRef } from 'react' + +import { cn } from '../utils' +import { TextProps, textVariants } from './Text' + +type Props = { + underline?: boolean +} & TextProps & + StyledProps>> +const StyledLink = styled(NativeLink) + +export const Link = forwardRef( + ({ className, muted, size, underline, ...props }, ref) => ( + + ), +) +Link.displayName = 'Link' diff --git a/apps/expo/src/components/primitives/Text.tsx b/apps/expo/src/components/primitives/Text.tsx new file mode 100644 index 000000000..5b01feacd --- /dev/null +++ b/apps/expo/src/components/primitives/Text.tsx @@ -0,0 +1,54 @@ +import { cva, VariantProps } from 'class-variance-authority' +import { styled, StyledProps } from 'nativewind' +import { forwardRef } from 'react' +import { Text as NativeText, TextProps as NativeTextProps } from 'react-native' + +import { cn } from '../utils' + +const StyledText = styled(NativeText) + +export type TextProps = { + muted?: boolean +} & VariantProps +type Props = TextProps & StyledProps +export const Text = forwardRef(({ className, size, muted, ...props }, ref) => { + return ( + + ) +}) +Text.displayName = 'Text' + +// FIXME: any dark variant classes defined here seem to be pruned... +export const textVariants = cva('', { + defaultVariants: { + size: 'md', + // variant: 'default', + }, + variants: { + size: { + '2xl': 'text-2xl', + '3xl': 'text-3xl', + '4xl': 'text-4xl', + lg: 'text-lg', + md: 'text-base', + sm: 'text-sm', + xl: 'text-xl', + xs: 'text-xs', + }, + // variant: { + // danger: 'text-red-600 dark:text-red-400', + // default: 'dark:text-white text-black', + // label: + // 'font-medium leading-none text-contrast-200 peer-disabled:cursor-not-allowed peer-disabled:opacity-70', + // muted: 'text-gray-400 dark:text-gray-300', + // }, + }, +}) diff --git a/apps/expo/src/components/primitives/View.tsx b/apps/expo/src/components/primitives/View.tsx new file mode 100644 index 000000000..5c772805e --- /dev/null +++ b/apps/expo/src/components/primitives/View.tsx @@ -0,0 +1,55 @@ +import { StatusBar } from 'expo-status-bar' +import { styled, StyledProps, useColorScheme } from 'nativewind' +import { forwardRef, useMemo } from 'react' +import { View as NativeView, ViewProps } from 'react-native' +import { useSafeAreaInsets } from 'react-native-safe-area-context' + +import { cn } from '../utils' + +const StyledView = styled(NativeView) + +export const View = StyledView + +type ScreenRootViewProps = StyledProps & { + classes?: string +} +export const ScreenRootView = forwardRef( + ({ className, children, classes, ...props }, ref) => { + const { colorScheme } = useColorScheme() + const insets = useSafeAreaInsets() + + const defaultStyle = useMemo( + () => ({ + paddingBottom: insets.bottom, + paddingLeft: insets.left, + paddingRight: insets.right, + paddingTop: insets.top, + }), + [insets], + ) + + // console.log({ + // className, + // classes, + // merged: cn('flex-1 items-center justify-center dark:bg-gray-950', className, classes), + // props: props, + // }) + + return ( + + {children} + + + ) + }, +) +ScreenRootView.displayName = 'ScreenRootView' diff --git a/apps/expo/src/components/primitives/index.ts b/apps/expo/src/components/primitives/index.ts new file mode 100644 index 000000000..cd61a086f --- /dev/null +++ b/apps/expo/src/components/primitives/index.ts @@ -0,0 +1,4 @@ +export { Input } from './Input' +export { Link } from './Link' +export { Text } from './Text' +export { ScreenRootView, View } from './View' diff --git a/apps/expo/src/components/utils.ts b/apps/expo/src/components/utils.ts new file mode 100644 index 000000000..dd169c6cc --- /dev/null +++ b/apps/expo/src/components/utils.ts @@ -0,0 +1,15 @@ +import { ClassValue, clsx } from 'clsx' +import { twMerge } from 'tailwind-merge' + +export type PickSelect = T[K] +export type Without = { [P in Exclude]?: never } +export type XOR = T | U extends object ? (Without & U) | (Without & T) : T | U + +/** Normalize class names using clsx and tailwind-merge */ +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)) +} + +export function cx(...inputs: ClassValue[]) { + return clsx(...inputs) +} diff --git a/apps/expo/src/constants/colors.ts b/apps/expo/src/constants/colors.ts new file mode 100644 index 000000000..36822392c --- /dev/null +++ b/apps/expo/src/constants/colors.ts @@ -0,0 +1,16 @@ +/* eslint-disable sort-keys-fix/sort-keys-fix */ + +export const gray = { + DEFAULT: '#292C30', + 50: '#E2E4E6', + 100: '#CCCFD3', + 200: '#A0A6AE', + 300: '#747D88', + 400: '#4F545C', + 500: '#292C30', + 600: '#242628', + 700: '#1F2123', + 800: '#1B1C1D', + 900: '#161719', + 950: '#0F1011', +} diff --git a/packages/client/src/hooks/useLayoutMode.ts b/apps/expo/src/hooks/useLayoutMode.ts similarity index 94% rename from packages/client/src/hooks/useLayoutMode.ts rename to apps/expo/src/hooks/useLayoutMode.ts index 7f37a2d2c..d03021f11 100644 --- a/packages/client/src/hooks/useLayoutMode.ts +++ b/apps/expo/src/hooks/useLayoutMode.ts @@ -1,7 +1,7 @@ import type { LayoutMode } from '@stump/types' import { useEffect, useMemo, useState } from 'react' -import { useUserStore } from '../stores' +import { useUserStore } from '@/stores' export function useLayoutMode() { const { userPreferences } = useUserStore((state) => ({ diff --git a/packages/client/src/hooks/usePreferences.ts b/apps/expo/src/hooks/usePreferences.ts similarity index 87% rename from packages/client/src/hooks/usePreferences.ts rename to apps/expo/src/hooks/usePreferences.ts index efceb6609..808d4adcb 100644 --- a/packages/client/src/hooks/usePreferences.ts +++ b/apps/expo/src/hooks/usePreferences.ts @@ -1,8 +1,8 @@ +import { useUpdatePreferences } from '@stump/client' import { UpdateUserPreferences, UserPreferences } from '@stump/types' import { useCallback } from 'react' -import { useUpdatePreferences } from '../queries/user' -import { useUserStore } from '../stores/user' +import { useUserStore } from '@/stores' export function usePreferences() { const { preferences, setPreferences } = useUserStore((state) => ({ diff --git a/apps/expo/src/screens/LoginOrClaim.tsx b/apps/expo/src/screens/LoginOrClaim.tsx new file mode 100644 index 000000000..544d831bd --- /dev/null +++ b/apps/expo/src/screens/LoginOrClaim.tsx @@ -0,0 +1,130 @@ +import { zodResolver } from '@hookform/resolvers/zod' +import { useLoginOrRegister } from '@stump/client' +import React, { useCallback } from 'react' +import { Controller, useForm } from 'react-hook-form' +import { Image, Text, TouchableOpacity, View } from 'react-native' +import { z } from 'zod' + +import { Input, ScreenRootView } from '@/components' +import { useUserStore } from '@/stores' + +export default function LoginOrClaim() { + const setUser = useUserStore((store) => store.setUser) + const { isClaimed, isCheckingClaimed, loginUser, registerUser, isLoggingIn, isRegistering } = + useLoginOrRegister({ + onSuccess: setUser, + }) + + // TODO: generalize common form schemas between clients to the client package + // TODO: move i18n to isolated package to be used between clients + + const schema = z.object({ + password: z.string().min(1, { message: 'Password must be at least 2 characters long' }), + username: z.string().min(1, { message: 'Username is required' }), + }) + type FormValues = z.infer + + const { + control, + formState: { errors }, + handleSubmit, + } = useForm({ + resolver: zodResolver(schema), + }) + + const onSubmit = useCallback( + async ({ username, password }: FormValues) => { + try { + if (isClaimed) { + await loginUser({ password, username }) + } else { + await registerUser({ password, username }) + await loginUser({ password, username }) + } + } catch (error) { + // TODO: alert error or set error somewhere + } + }, + [isClaimed, loginUser, registerUser], + ) + + const renderHeader = () => { + if (isClaimed) { + // just return a view with the icon.png: + return ( + + + + ) + } else { + return ( + + This server is uninitialized + + Enter a username and password to claim it + + + + ) + } + } + + const isLoading = isCheckingClaimed || isLoggingIn || isRegistering + + return ( + + {renderHeader()} + + + ( + + )} + name="username" + /> + {errors.username && {errors.username.message}} + + + + ( + + )} + name="password" + /> + {errors.password && {errors.password.message}} + + + + {isClaimed ? 'Log in' : 'Create account'} + + + ) +} diff --git a/apps/expo/src/screens/ServerNotAccessible.tsx b/apps/expo/src/screens/ServerNotAccessible.tsx new file mode 100644 index 000000000..5362b7dc0 --- /dev/null +++ b/apps/expo/src/screens/ServerNotAccessible.tsx @@ -0,0 +1,17 @@ +import React from 'react' + +import { ScreenRootView, Text } from '@/components' + +// TODO: This component needs to be aware: +// 1. If there is no server set, which is either first launch or the user initiates a reset +// 2. There is a server set, but the server is not accessible +// +// In either situation, a form should be presented to the user to enter the server URL. + +export default function ServerNotAccessible() { + return ( + + I cannot connect to the server + + ) +} diff --git a/apps/expo/src/screens/authenticated/AuthenticatedNavigator.tsx b/apps/expo/src/screens/authenticated/AuthenticatedNavigator.tsx new file mode 100644 index 000000000..0db64dc03 --- /dev/null +++ b/apps/expo/src/screens/authenticated/AuthenticatedNavigator.tsx @@ -0,0 +1,20 @@ +import { createNativeStackNavigator } from '@react-navigation/native-stack' +import React from 'react' + +import { BookStackNavigator } from './book' +import MainTabNavigator from './MainTabNavigator' + +const Stack = createNativeStackNavigator() + +export default function AuthenticatedNavigator() { + return ( + + + + + ) +} diff --git a/apps/expo/src/screens/authenticated/Home.tsx b/apps/expo/src/screens/authenticated/Home.tsx new file mode 100644 index 000000000..c36479637 --- /dev/null +++ b/apps/expo/src/screens/authenticated/Home.tsx @@ -0,0 +1,30 @@ +import { authApi } from '@stump/api' +import { queryClient } from '@stump/client' +import React from 'react' +import { Button } from 'react-native' + +import { ScreenRootView, Text } from '@/components' +import { useUserStore } from '@/stores' + +export default function Home() { + const setUser = useUserStore((state) => state.setUser) + + const handleLogout = async () => { + try { + await authApi.logout() + setUser(null) + } catch (err) { + console.error(err) + } finally { + setUser(null) + queryClient.clear() + } + } + + return ( + + I am home +