From 137ad669fb41d6cb3e3893b679c45e349d37be39 Mon Sep 17 00:00:00 2001 From: Kenzuya Date: Thu, 6 Nov 2025 07:45:37 +0000 Subject: [PATCH] feat(web-client): rewrite frontend implementation using tanstack router --- apps/web-client/.gitignore | 10 + apps/web-client/.prettierignore | 3 + apps/web-client/README.md | 310 ++++++++ apps/web-client/components.json | 21 + apps/web-client/index.html | 19 + apps/web-client/package.json | 68 ++ apps/web-client/public/favicon.ico | Bin 0 -> 3518 bytes apps/web-client/public/logo.png | 1 + apps/web-client/public/logo.svg | 431 +++++++++++ apps/web-client/public/manifest.json | 15 + apps/web-client/public/movie-placeholder.svg | 28 + apps/web-client/public/people-placeholder.svg | 26 + apps/web-client/public/robots.txt | 3 + apps/web-client/src/assets/logo.png | Bin 0 -> 471465 bytes apps/web-client/src/assets/logo.svg | 431 +++++++++++ apps/web-client/src/components/Header.tsx | 265 +++++++ apps/web-client/src/components/SignInForm.tsx | 157 ++++ apps/web-client/src/components/SignUpForm.tsx | 219 ++++++ .../src/components/ThemeModeSwitcher.tsx | 41 + apps/web-client/src/components/UserMenu.tsx | 103 +++ .../components/dashboard/DashboardHeader.tsx | 81 ++ .../dashboard/UserAccountDropdown.tsx | 132 ++++ .../src/components/nontara/CastSection.tsx | 42 + .../src/components/nontara/CrewSection.tsx | 51 ++ .../src/components/nontara/EpisodeCard.tsx | 51 ++ .../src/components/nontara/EpisodeList.tsx | 82 ++ .../nontara/MediaTracksSelector.tsx | 282 +++++++ .../src/components/nontara/MovieCard.tsx | 46 ++ .../src/components/nontara/PersonCard.tsx | 23 + .../nontara/RecentlyAddedSections.tsx | 174 +++++ .../nontara/SimilarTitlesSection.tsx | 44 ++ .../src/components/nontara/TitleDetails.tsx | 217 ++++++ .../nontara/layout/HorizontalScrollList.tsx | 92 +++ .../src/components/player/HLSPlayer.tsx | 97 +++ .../player/hooks/usePlaybackSession.tsx | 95 +++ .../player/states/PlayerErrorState.tsx | 33 + .../player/states/PlayerLoadingState.tsx | 12 + .../components/providers/OnboardProvider.tsx | 15 + .../components/providers/ThemeProvider.tsx | 51 ++ .../src/components/setup/FolderExplorer.tsx | 222 ++++++ .../src/components/setup/LibraryDialog.tsx | 272 +++++++ .../src/components/setup/header.tsx | 43 ++ apps/web-client/src/components/ui/alert.tsx | 66 ++ apps/web-client/src/components/ui/avatar.tsx | 51 ++ apps/web-client/src/components/ui/badge.tsx | 46 ++ apps/web-client/src/components/ui/button.tsx | 60 ++ apps/web-client/src/components/ui/card.tsx | 92 +++ apps/web-client/src/components/ui/dialog.tsx | 143 ++++ .../src/components/ui/dropdown-menu.tsx | 255 ++++++ apps/web-client/src/components/ui/empty.tsx | 104 +++ apps/web-client/src/components/ui/input.tsx | 21 + apps/web-client/src/components/ui/label.tsx | 24 + .../src/components/ui/scroll-area.tsx | 56 ++ apps/web-client/src/components/ui/select.tsx | 187 +++++ .../src/components/ui/separator.tsx | 26 + apps/web-client/src/components/ui/sheet.tsx | 139 ++++ apps/web-client/src/components/ui/sidebar.tsx | 726 ++++++++++++++++++ .../web-client/src/components/ui/skeleton.tsx | 13 + apps/web-client/src/components/ui/sonner.tsx | 40 + apps/web-client/src/components/ui/stepper.tsx | 478 ++++++++++++ apps/web-client/src/components/ui/tooltip.tsx | 59 ++ apps/web-client/src/hooks/use-mobile.ts | 19 + apps/web-client/src/hooks/useOnboard.ts | 14 + apps/web-client/src/hooks/useTheme.ts | 25 + apps/web-client/src/lib/api.ts | 24 + apps/web-client/src/lib/auth-client.ts | 38 + apps/web-client/src/lib/utils.ts | 27 + apps/web-client/src/logo.svg | 12 + apps/web-client/src/main.tsx | 62 ++ apps/web-client/src/reportWebVitals.ts | 13 + apps/web-client/src/routeTree.gen.ts | 462 +++++++++++ apps/web-client/src/routes/__root.tsx | 14 + apps/web-client/src/routes/dashboard.tsx | 169 ++++ .../src/routes/dashboard/extensions.tsx | 9 + .../web-client/src/routes/dashboard/index.tsx | 9 + .../src/routes/dashboard/libraries.tsx | 9 + .../web-client/src/routes/dashboard/users.tsx | 9 + apps/web-client/src/routes/home.tsx | 25 + .../src/routes/home/details/$id.tsx | 87 +++ apps/web-client/src/routes/home/index.tsx | 14 + .../src/routes/home/library/$id.tsx | 181 +++++ apps/web-client/src/routes/home/search.tsx | 162 ++++ apps/web-client/src/routes/index.tsx | 56 ++ apps/web-client/src/routes/login.tsx | 14 + apps/web-client/src/routes/onboard.tsx | 144 ++++ .../src/routes/onboard/complete.tsx | 163 ++++ apps/web-client/src/routes/onboard/index.tsx | 210 +++++ .../src/routes/onboard/language.tsx | 180 +++++ apps/web-client/src/routes/onboard/setup.tsx | 265 +++++++ apps/web-client/src/routes/signup.tsx | 9 + apps/web-client/src/routes/watch/$id.tsx | 30 + apps/web-client/src/services/onboard.ts | 114 +++ apps/web-client/src/styles.css | 142 ++++ apps/web-client/src/utils/codec-detection.ts | 65 ++ apps/web-client/tsconfig.json | 29 + apps/web-client/vite.config.ts | 27 + biome.json | 11 +- 97 files changed, 9730 insertions(+), 7 deletions(-) create mode 100644 apps/web-client/.gitignore create mode 100644 apps/web-client/.prettierignore create mode 100644 apps/web-client/README.md create mode 100644 apps/web-client/components.json create mode 100644 apps/web-client/index.html create mode 100644 apps/web-client/package.json create mode 100644 apps/web-client/public/favicon.ico create mode 100644 apps/web-client/public/logo.png create mode 100644 apps/web-client/public/logo.svg create mode 100644 apps/web-client/public/manifest.json create mode 100644 apps/web-client/public/movie-placeholder.svg create mode 100644 apps/web-client/public/people-placeholder.svg create mode 100644 apps/web-client/public/robots.txt create mode 100644 apps/web-client/src/assets/logo.png create mode 100644 apps/web-client/src/assets/logo.svg create mode 100644 apps/web-client/src/components/Header.tsx create mode 100644 apps/web-client/src/components/SignInForm.tsx create mode 100644 apps/web-client/src/components/SignUpForm.tsx create mode 100644 apps/web-client/src/components/ThemeModeSwitcher.tsx create mode 100644 apps/web-client/src/components/UserMenu.tsx create mode 100644 apps/web-client/src/components/dashboard/DashboardHeader.tsx create mode 100644 apps/web-client/src/components/dashboard/UserAccountDropdown.tsx create mode 100644 apps/web-client/src/components/nontara/CastSection.tsx create mode 100644 apps/web-client/src/components/nontara/CrewSection.tsx create mode 100644 apps/web-client/src/components/nontara/EpisodeCard.tsx create mode 100644 apps/web-client/src/components/nontara/EpisodeList.tsx create mode 100644 apps/web-client/src/components/nontara/MediaTracksSelector.tsx create mode 100644 apps/web-client/src/components/nontara/MovieCard.tsx create mode 100644 apps/web-client/src/components/nontara/PersonCard.tsx create mode 100644 apps/web-client/src/components/nontara/RecentlyAddedSections.tsx create mode 100644 apps/web-client/src/components/nontara/SimilarTitlesSection.tsx create mode 100644 apps/web-client/src/components/nontara/TitleDetails.tsx create mode 100644 apps/web-client/src/components/nontara/layout/HorizontalScrollList.tsx create mode 100644 apps/web-client/src/components/player/HLSPlayer.tsx create mode 100644 apps/web-client/src/components/player/hooks/usePlaybackSession.tsx create mode 100644 apps/web-client/src/components/player/states/PlayerErrorState.tsx create mode 100644 apps/web-client/src/components/player/states/PlayerLoadingState.tsx create mode 100644 apps/web-client/src/components/providers/OnboardProvider.tsx create mode 100644 apps/web-client/src/components/providers/ThemeProvider.tsx create mode 100644 apps/web-client/src/components/setup/FolderExplorer.tsx create mode 100644 apps/web-client/src/components/setup/LibraryDialog.tsx create mode 100644 apps/web-client/src/components/setup/header.tsx create mode 100644 apps/web-client/src/components/ui/alert.tsx create mode 100644 apps/web-client/src/components/ui/avatar.tsx create mode 100644 apps/web-client/src/components/ui/badge.tsx create mode 100644 apps/web-client/src/components/ui/button.tsx create mode 100644 apps/web-client/src/components/ui/card.tsx create mode 100644 apps/web-client/src/components/ui/dialog.tsx create mode 100644 apps/web-client/src/components/ui/dropdown-menu.tsx create mode 100644 apps/web-client/src/components/ui/empty.tsx create mode 100644 apps/web-client/src/components/ui/input.tsx create mode 100644 apps/web-client/src/components/ui/label.tsx create mode 100644 apps/web-client/src/components/ui/scroll-area.tsx create mode 100644 apps/web-client/src/components/ui/select.tsx create mode 100644 apps/web-client/src/components/ui/separator.tsx create mode 100644 apps/web-client/src/components/ui/sheet.tsx create mode 100644 apps/web-client/src/components/ui/sidebar.tsx create mode 100644 apps/web-client/src/components/ui/skeleton.tsx create mode 100644 apps/web-client/src/components/ui/sonner.tsx create mode 100644 apps/web-client/src/components/ui/stepper.tsx create mode 100644 apps/web-client/src/components/ui/tooltip.tsx create mode 100644 apps/web-client/src/hooks/use-mobile.ts create mode 100644 apps/web-client/src/hooks/useOnboard.ts create mode 100644 apps/web-client/src/hooks/useTheme.ts create mode 100644 apps/web-client/src/lib/api.ts create mode 100644 apps/web-client/src/lib/auth-client.ts create mode 100644 apps/web-client/src/lib/utils.ts create mode 100644 apps/web-client/src/logo.svg create mode 100644 apps/web-client/src/main.tsx create mode 100644 apps/web-client/src/reportWebVitals.ts create mode 100644 apps/web-client/src/routeTree.gen.ts create mode 100644 apps/web-client/src/routes/__root.tsx create mode 100644 apps/web-client/src/routes/dashboard.tsx create mode 100644 apps/web-client/src/routes/dashboard/extensions.tsx create mode 100644 apps/web-client/src/routes/dashboard/index.tsx create mode 100644 apps/web-client/src/routes/dashboard/libraries.tsx create mode 100644 apps/web-client/src/routes/dashboard/users.tsx create mode 100644 apps/web-client/src/routes/home.tsx create mode 100644 apps/web-client/src/routes/home/details/$id.tsx create mode 100644 apps/web-client/src/routes/home/index.tsx create mode 100644 apps/web-client/src/routes/home/library/$id.tsx create mode 100644 apps/web-client/src/routes/home/search.tsx create mode 100644 apps/web-client/src/routes/index.tsx create mode 100644 apps/web-client/src/routes/login.tsx create mode 100644 apps/web-client/src/routes/onboard.tsx create mode 100644 apps/web-client/src/routes/onboard/complete.tsx create mode 100644 apps/web-client/src/routes/onboard/index.tsx create mode 100644 apps/web-client/src/routes/onboard/language.tsx create mode 100644 apps/web-client/src/routes/onboard/setup.tsx create mode 100644 apps/web-client/src/routes/signup.tsx create mode 100644 apps/web-client/src/routes/watch/$id.tsx create mode 100644 apps/web-client/src/services/onboard.ts create mode 100644 apps/web-client/src/styles.css create mode 100644 apps/web-client/src/utils/codec-detection.ts create mode 100644 apps/web-client/tsconfig.json create mode 100644 apps/web-client/vite.config.ts diff --git a/apps/web-client/.gitignore b/apps/web-client/.gitignore new file mode 100644 index 0000000..58b8598 --- /dev/null +++ b/apps/web-client/.gitignore @@ -0,0 +1,10 @@ +node_modules +.DS_Store +dist +dist-ssr +*.local +count.txt +.env +.nitro +.tanstack +.wrangler diff --git a/apps/web-client/.prettierignore b/apps/web-client/.prettierignore new file mode 100644 index 0000000..5322d7f --- /dev/null +++ b/apps/web-client/.prettierignore @@ -0,0 +1,3 @@ +package-lock.json +pnpm-lock.yaml +yarn.lock \ No newline at end of file diff --git a/apps/web-client/README.md b/apps/web-client/README.md new file mode 100644 index 0000000..9b1d223 --- /dev/null +++ b/apps/web-client/README.md @@ -0,0 +1,310 @@ +Welcome to your new TanStack app! + +# Getting Started + +To run this application: + +```bash +bun install +bun --bun run start +``` + +# Building For Production + +To build this application for production: + +```bash +bun --bun run build +``` + +## Testing + +This project uses [Vitest](https://vitest.dev/) for testing. You can run the tests with: + +```bash +bun --bun run test +``` + +## Styling + +This project uses [Tailwind CSS](https://tailwindcss.com/) for styling. + + +## Linting & Formatting + + +This project uses [eslint](https://eslint.org/) and [prettier](https://prettier.io/) for linting and formatting. Eslint is configured using [tanstack/eslint-config](https://tanstack.com/config/latest/docs/eslint). The following scripts are available: + +```bash +bun --bun run lint +bun --bun run format +bun --bun run check +``` + + +## Shadcn + +Add components using the latest version of [Shadcn](https://ui.shadcn.com/). + +```bash +pnpx shadcn@latest add button +``` + + + +## Routing +This project uses [TanStack Router](https://tanstack.com/router). The initial setup is a file based router. Which means that the routes are managed as files in `src/routes`. + +### Adding A Route + +To add a new route to your application just add another a new file in the `./src/routes` directory. + +TanStack will automatically generate the content of the route file for you. + +Now that you have two routes you can use a `Link` component to navigate between them. + +### Adding Links + +To use SPA (Single Page Application) navigation you will need to import the `Link` component from `@tanstack/react-router`. + +```tsx +import { Link } from "@tanstack/react-router"; +``` + +Then anywhere in your JSX you can use it like so: + +```tsx +About +``` + +This will create a link that will navigate to the `/about` route. + +More information on the `Link` component can be found in the [Link documentation](https://tanstack.com/router/v1/docs/framework/react/api/router/linkComponent). + +### Using A Layout + +In the File Based Routing setup the layout is located in `src/routes/__root.tsx`. Anything you add to the root route will appear in all the routes. The route content will appear in the JSX where you use the `` component. + +Here is an example layout that includes a header: + +```tsx +import { Outlet, createRootRoute } from '@tanstack/react-router' +import { TanStackRouterDevtools } from '@tanstack/react-router-devtools' + +import { Link } from "@tanstack/react-router"; + +export const Route = createRootRoute({ + component: () => ( + <> +
+ +
+ + + + ), +}) +``` + +The `` component is not required so you can remove it if you don't want it in your layout. + +More information on layouts can be found in the [Layouts documentation](https://tanstack.com/router/latest/docs/framework/react/guide/routing-concepts#layouts). + + +## Data Fetching + +There are multiple ways to fetch data in your application. You can use TanStack Query to fetch data from a server. But you can also use the `loader` functionality built into TanStack Router to load the data for a route before it's rendered. + +For example: + +```tsx +const peopleRoute = createRoute({ + getParentRoute: () => rootRoute, + path: "/people", + loader: async () => { + const response = await fetch("https://swapi.dev/api/people"); + return response.json() as Promise<{ + results: { + name: string; + }[]; + }>; + }, + component: () => { + const data = peopleRoute.useLoaderData(); + return ( +
    + {data.results.map((person) => ( +
  • {person.name}
  • + ))} +
+ ); + }, +}); +``` + +Loaders simplify your data fetching logic dramatically. Check out more information in the [Loader documentation](https://tanstack.com/router/latest/docs/framework/react/guide/data-loading#loader-parameters). + +### React-Query + +React-Query is an excellent addition or alternative to route loading and integrating it into you application is a breeze. + +First add your dependencies: + +```bash +bun install @tanstack/react-query @tanstack/react-query-devtools +``` + +Next we'll need to create a query client and provider. We recommend putting those in `main.tsx`. + +```tsx +import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; + +// ... + +const queryClient = new QueryClient(); + +// ... + +if (!rootElement.innerHTML) { + const root = ReactDOM.createRoot(rootElement); + + root.render( + + + + ); +} +``` + +You can also add TanStack Query Devtools to the root route (optional). + +```tsx +import { ReactQueryDevtools } from "@tanstack/react-query-devtools"; + +const rootRoute = createRootRoute({ + component: () => ( + <> + + + + + ), +}); +``` + +Now you can use `useQuery` to fetch your data. + +```tsx +import { useQuery } from "@tanstack/react-query"; + +import "./App.css"; + +function App() { + const { data } = useQuery({ + queryKey: ["people"], + queryFn: () => + fetch("https://swapi.dev/api/people") + .then((res) => res.json()) + .then((data) => data.results as { name: string }[]), + initialData: [], + }); + + return ( +
+
    + {data.map((person) => ( +
  • {person.name}
  • + ))} +
+
+ ); +} + +export default App; +``` + +You can find out everything you need to know on how to use React-Query in the [React-Query documentation](https://tanstack.com/query/latest/docs/framework/react/overview). + +## State Management + +Another common requirement for React applications is state management. There are many options for state management in React. TanStack Store provides a great starting point for your project. + +First you need to add TanStack Store as a dependency: + +```bash +bun install @tanstack/store +``` + +Now let's create a simple counter in the `src/App.tsx` file as a demonstration. + +```tsx +import { useStore } from "@tanstack/react-store"; +import { Store } from "@tanstack/store"; +import "./App.css"; + +const countStore = new Store(0); + +function App() { + const count = useStore(countStore); + return ( +
+ +
+ ); +} + +export default App; +``` + +One of the many nice features of TanStack Store is the ability to derive state from other state. That derived state will update when the base state updates. + +Let's check this out by doubling the count using derived state. + +```tsx +import { useStore } from "@tanstack/react-store"; +import { Store, Derived } from "@tanstack/store"; +import "./App.css"; + +const countStore = new Store(0); + +const doubledStore = new Derived({ + fn: () => countStore.state * 2, + deps: [countStore], +}); +doubledStore.mount(); + +function App() { + const count = useStore(countStore); + const doubledCount = useStore(doubledStore); + + return ( +
+ +
Doubled - {doubledCount}
+
+ ); +} + +export default App; +``` + +We use the `Derived` class to create a new store that is derived from another store. The `Derived` class has a `mount` method that will start the derived store updating. + +Once we've created the derived store we can use it in the `App` component just like we would any other store using the `useStore` hook. + +You can find out everything you need to know on how to use TanStack Store in the [TanStack Store documentation](https://tanstack.com/store/latest). + +# Demo files + +Files prefixed with `demo` can be safely deleted. They are there to provide a starting point for you to play around with the features you've installed. + +# Learn More + +You can learn more about all of the offerings from TanStack in the [TanStack documentation](https://tanstack.com). diff --git a/apps/web-client/components.json b/apps/web-client/components.json new file mode 100644 index 0000000..6998bdf --- /dev/null +++ b/apps/web-client/components.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "new-york", + "rsc": false, + "tsx": true, + "tailwind": { + "config": "", + "css": "src/styles.css", + "baseColor": "zinc", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + }, + "iconLibrary": "lucide" +} \ No newline at end of file diff --git a/apps/web-client/index.html b/apps/web-client/index.html new file mode 100644 index 0000000..02f178b --- /dev/null +++ b/apps/web-client/index.html @@ -0,0 +1,19 @@ + + + + + + + + + + Nontara + + +
+ + + diff --git a/apps/web-client/package.json b/apps/web-client/package.json new file mode 100644 index 0000000..fc04ecd --- /dev/null +++ b/apps/web-client/package.json @@ -0,0 +1,68 @@ +{ + "name": "web-client", + "private": true, + "type": "module", + "scripts": { + "dev": "vite --port 3001", + "build": "vite build && tsc", + "serve": "vite preview", + "test": "vitest run", + "lint": "eslint", + "format": "prettier", + "check": "prettier --write . && eslint --fix", + "shadcn": "bunx --bun shadcn@latest" + }, + "dependencies": { + "@nontara/language-codes": "workspace:*", + "@nontara/server": "workspace:*", + "@radix-ui/react-avatar": "^1.1.11", + "@radix-ui/react-dialog": "^1.1.15", + "@radix-ui/react-dropdown-menu": "^2.1.16", + "@radix-ui/react-label": "^2.1.8", + "@radix-ui/react-scroll-area": "^1.2.10", + "@radix-ui/react-select": "^2.2.6", + "@radix-ui/react-separator": "^1.1.8", + "@radix-ui/react-slot": "^1.2.4", + "@radix-ui/react-tooltip": "^1.2.8", + "@tailwindcss/vite": "^4.0.6", + "@tanstack/react-devtools": "^0.7.0", + "@tanstack/react-query": "^5.66.5", + "@tanstack/react-query-devtools": "^5.84.2", + "@tanstack/react-router": "^1.132.0", + "@tanstack/react-router-devtools": "^1.132.0", + "@tanstack/router-plugin": "^1.132.0", + "axios": "^1.13.2", + "better-auth": "^1.3.34", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "eslint": "^9.39.1", + "lodash": "^4.17.21", + "lucide-react": "^0.552.0", + "media-chrome": "^4.15.1", + "next-themes": "^0.4.6", + "react": "^19.2.0", + "react-dom": "^19.2.0", + "react-player": "^3.3.3", + "sonner": "^2.0.7", + "tailwind-merge": "^3.0.2", + "tailwindcss": "^4.0.6", + "tw-animate-css": "^1.3.6", + "zod": "^4.1.12" + }, + "devDependencies": { + "@tanstack/eslint-config": "^0.3.0", + "@testing-library/dom": "^10.4.0", + "@testing-library/react": "^16.2.0", + "@types/node": "^22.10.2", + "@types/react": "^19.2.0", + "@types/react-dom": "^19.2.0", + "@vitejs/plugin-react": "^5.0.4", + "babel-plugin-react-compiler": "^1.0.0", + "jsdom": "^27.0.0", + "prettier": "^3.5.3", + "typescript": "^5.7.2", + "vite": "^7.1.7", + "vitest": "^3.0.5", + "web-vitals": "^5.1.0" + } +} diff --git a/apps/web-client/public/favicon.ico b/apps/web-client/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..656d31d8fc15d21f0af4da1c7965cdff030c4f27 GIT binary patch literal 3518 zcmbuCd2keU7RP^mP0vhUGZB@=-SS#jtK4$SKUS@{Dp>y-@Z=7tK3D(-_&=0J>C6# zpZ>o0x~m5v0zRW2Lh$_%IxHY`A42E}&?wMokg|Vhz_Fi>kEiNabWhV?K0ifgITNp+ zfAozJ6wVcpA#Q|J|K{PWSh$Ka13fH+3j4R&&?!Z!fT8cOoD}|Lj7FaB%-v9e*iF ztg)ql$0Pw;r-8oZnI=ouyWW-xjQ`&FB>eqj{x0BO^`#X}k7d}ejUN||0AF=)A z7|NU~)GGe$X}oMt;T4{2ncr+)9H_s=C+fGan9}Z5JP|diX zY33i$&8vlH9IN?t&XwBj)@6M5h56zm7c%)2%PgVSHiQ4SEkn3zOXqLd-Vv}ZO^_9j zHt+~cYy+7R#h%Vd(p!7R@T#`AMYQcj{s+;&-|Wrd&iZmR*tbrNz1do9U&e1)`wB<4 zCkqdBBymr7B?+A-r$j%`0+j9-l!Sy<*Ko711t9d%dwIxPm6t&I5$K5i+Pq%YRVLLcP5KZb|edr zS*HsT$4vgK3+eoXQ&aiJp?3n#49G9!7MO5fh^8|M!ldF?IJR@Lgtm|VzE9kn)mQyn zSnS`#%DxS1>{_EOYk4O|u+A0QT=RJBoXul%rchp=AjLo~J6v-)Y@fqoobt zGxUOeA>Y-zfWxkN9ESJ}CF4iZrg!-S*COrb?u8oMy8!f_M(&-fkzI4NvP$%%U8%;#QlZP9FX<*AFDn>4wX*J_?f*GtH}h@0qG%$>C@ z;5xf!@vj}9#i6#DJm*}lY4a>+v1chOdzP@Wdm$_L&Q}lfW&>{q@G`&~^bI`A{&Oxt zDs23x?%r>zXv8p25!izeK7>$UhYHm%7OA|n7^*d$6OPZ+ik}xKHGPceTBg0HcMW@@ zFI$DZt5mXgg-Z4;Rmtwfz?%=ed5Sj;i$3RQ>g`Kp)QD_CUT#QxEp$L{fLWY73EFkkxC)41<_M()dIWQFHh z4gyy10`*|;JhkisUrNoOKV*9<+}Bg3XnzT9jUJ?MpoA&A_@QQGpqMd*_fj}q1p5l< zGZ%7Lowq<$*uRa&fqc*w3j1>@?E8S0ed}nsZw)PbS2Mt3WcLzw(7izM^(|}qQ2u0d zvh;Q6AmxgdlQ?*gK4jmmems1D3P(#x9N7>1iYTWkPxU}wAzc;P1>7CDH*)Uink%w3e})eH}^uQmy*L-N+0t0QmW_(R#4{X5r}z+DlzZW#01N!Q_%_n zM-CD=u#ar$%uxxxBC0yHkHnrrX167edDgp?ZVMCucQbHuzhx=DvQ&dg&A=D*2K3?_ zxbLU)pPo$?ruUUIZ}=;y_1-c%7N0}NT|z(AS4w7k_mf%fV(N({(;g=LrBq!QxZYxV zgLx}G(pyMX1$K})P(aFlg|!iKIP7b1IEO5DFVbM=JZ-oqlb=)fw#ees2%Ra`aON^b z>Mm8QqcsG&Wq{s0fl${jmDYWL`cvo-X^Viz;6d_6|31>$Urc<_znhTz3rYDq)&|Jm zdSIK>m7qcE~_>g$+ax%#FTU>bWtG#3El6H7-<3 zoDNqL{%92%j2uOB_z)q7%Lp7Q1?FDh?77W?T5X2j*a(cZDw}1wI^(0+8qxlq7PTd5 zhaRTkCNeb8g79sH8p)l|L{e=26erwK{;cF844)ULR=d-j_}nJNLJ=ZGkKt62hT$+D1EzdunMEHc-d|&-d&=sZDP;>B6+F2~Ik!GrPz(@>n zf^}r;*4xLg&*0i)7g z%{-6L2gvZD9$hFE(AgpZRcC$w&hl$uG{)`dCD4N)7DRy%ZoiJQV15uJfhZ6GLZj)2 s5HgO2t!&T_hElmL%JHG|*!JOdFSXMU3lX^eOC`3#QIv(-6|MyOF9kjdS^xk5 literal 0 HcmV?d00001 diff --git a/apps/web-client/public/logo.png b/apps/web-client/public/logo.png new file mode 100644 index 0000000..17975c0 --- /dev/null +++ b/apps/web-client/public/logo.png @@ -0,0 +1 @@ +This is a placeholder for the logo.png file. \ No newline at end of file diff --git a/apps/web-client/public/logo.svg b/apps/web-client/public/logo.svg new file mode 100644 index 0000000..41b917e --- /dev/null +++ b/apps/web-client/public/logo.svg @@ -0,0 +1,431 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/web-client/public/manifest.json b/apps/web-client/public/manifest.json new file mode 100644 index 0000000..ff22bb4 --- /dev/null +++ b/apps/web-client/public/manifest.json @@ -0,0 +1,15 @@ +{ + "short_name": "Nontara", + "name": "Nontara Media Server", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/apps/web-client/public/movie-placeholder.svg b/apps/web-client/public/movie-placeholder.svg new file mode 100644 index 0000000..40619f1 --- /dev/null +++ b/apps/web-client/public/movie-placeholder.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/web-client/public/people-placeholder.svg b/apps/web-client/public/people-placeholder.svg new file mode 100644 index 0000000..589946b --- /dev/null +++ b/apps/web-client/public/people-placeholder.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/web-client/public/robots.txt b/apps/web-client/public/robots.txt new file mode 100644 index 0000000..e9e57dc --- /dev/null +++ b/apps/web-client/public/robots.txt @@ -0,0 +1,3 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/apps/web-client/src/assets/logo.png b/apps/web-client/src/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..27b62e943cdf8127f4de4f7a2689636d645ab8ac GIT binary patch literal 471465 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

TZ3p=0k{?s|9 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 KIv@apyjR1p8^%x$Efb)n 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%0Da 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

`uPuV{x@_ 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
!7j7E*tipIb@F<)JQfDwP(1@_TS{p@_8dnp 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 z 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
ulct(uX*Q> zj#1d;xf<1FN+xTLJ|y{V&5)r4{GU=t?*=!tX*jTunkX;G8hTS*4HMy{Zyo*~F9F9l zi%VWt(H>UsVm5lSz6fMj9kpgnKFyqD%0AHgGMl!Il2X772ifsqb6N9};iYya<@=Zb zIGclhgSO>0{Xo5`;J_rgq6<`VlEvo1YKJ1LrWUv5!P<3PejYl{^*Loy`R^(DVpVIe zsflJIe6+jj-!DUvb(a9lIUJeCg&M7Bnfi<)hcEIxnSdmSvf7?z+<)%o{@$~{j;F7F zpA`^}L3qsXf{Sf2awHdmSTX}d6p~@iDA=O$1V>dZ8f#jjMl)XAklc|MJ1(aWnEPSJ zkDjyEGDw~l={R0ijkl&`z6+KPSnGzo=IgDk7^)jpmz>pRYD9l0rAAgO=7XXeJ%{Yk zNKDU-Y!-cmq2=ouo-|!O4`c3zfT5@Bj_~D@!+-;3Kt}*K7)9j8+0%o&{esPiOhfH# zsa!H*$>qxZGJ1CEOf~V+oLPGefA09mxBM6J>8&?DC#G?yO!x#Y0EsPWRz_mq_Cwd}-&*JEub~n<{y>z7?6B)m3kj=@vUsh`tqYROC7%j(GOw@z)v+?2RP7 zf@Nw4x8RmLU1uC?CJ#0 z*MT_RM&G{li8^0@^j7&^2A)OTVs{)54~w6p_5n%rV#O2KPet#iH~6+U0*6cCGa|7& z>#@(h*JI!C^d3Gq-^_;v)R*6T28wN<1sJv19!f0su}3!I%f?-n~Wtl4~qc6F*qJVeW*NJwNe?wOTjz=S9S?@e`45{5+O1Mu(` zb|(70zjnO;*Z$Lge1G{D|C#m9H^2Mh8~?^!AN}5^eBOobSie-kJS$ z3)B%6SjUka2Pz*cqmm0K4kR8c`nDpT>gm;car^2ocYo=}j#pp)>8Fg>zwp*K{O*7J z#ixJQzqjKV`g{+uU*X8cUXM8X6?5Av^m%P6aQv>5F)7d2xV`_Y-&N~lpUHju$vBS3 zj;Duxi`6R+?7cehx{)uU>s74iu0D?S_zc*)aUOxV^^ONby`=IK{qXSO3%9DqetJA| z?N_f}LUw~u3M8pldb_C9dT-Cke+{m?`s#q)5E^M4w$D0fLy%%qM>|1}V zSOD{xZAmfHKx(O^*U(BHS7xY&%&on3$nh)0K7=OUK?9IsTE_@Xm6vC#V+LJtQxS@J z>uIx=iA9s^L%RYtBPifOWk~8%sy720FU0Uky#DGJzU6Db_;3B+@cK7?=fm6I_SUoC z^xrx2?cW>^Z+#qicq=1u>)Wl)r}rM}c8grc4OJ^~f<0Lv@leRhN@U+2UdPIal@DvJ z-gQQQ@Ijwn`LXr#^FMTS`Uw1^-%q^8+cX~Mm>&$gL#_{~s)acA6WedZs@iA9>hsJf z1R`kPS=~){_I$w8K06a-)H1rTDj%PBR^>Y1L;U=IaXkI{FWruB`mR6r_}#zrf4gr_ zKy4h=c!(MeY6*QhgL)J8wF|FbyoLVK=imL>pZ&N0D&GB$ci#QJ?|=2G*6t5Jc#QKr zlzyYDIHzSJMo#Z0{U-o!pN|vCF zarVN)C%?HKzW(`m|0ngRY)iQjkM8%>Y1|F3)c2iG>ZtY<=kV8lPoni~@P!U0Q zd9I`^>^ zx7+j7gtFXV_K8>rYTppKaG>Hms}GzwMHH`2tV2qG26_bn81CAD!R=_<0gP>~tP7%p#^SE=z zcO%z<#zA?@K}kY(A&!N;7d5&4AZDrnzZOuV^B$Va`94HZidB14>Vg$3o;uGP_6B5N zL?bH!SmR#OG`Ek6I}Z-&ezn0R$x)|_rPNru@#lzIo)w3{fY3g@!VP5F&>-{>i*^xk z&^xA$6ekm{a~knL85$C?Z#duk$&cnozWLn`e)&hf@9C>Q_m9;FU;NHEZ*SM}>{;aV zTyOrSBR>9JINtbV9dCX%;^9Tb!((^k7GvZ%jt6u+>#oY&XP>tZqF%q3`}QTotM?G~ z)qeWY&quxd;@RgH&-3-y-_LmS7al(Tz5k~-Kl2^`{^Lh~%dZv|YQN?*3a8foDF@X_ zpPX9&kK70D2_je4gC>3ayX#zL^)bNsq;bewUDt;rD{6!e2SIUO6 z3xSQZo+I`RSdXZ>A&*B+%WLD74}=xGt;LL^Dj91&pjKj&rmeSZ-8m`a*4B5VfK<}r z5{;EN05^}V2_~+>8Hu%-sZ;(DTvfM63XvZ44-Y85G>HLW2}vksgiJ{RIi^c@oJi~}xulcnml-&3 zkLYCHYfWUGZ;%N*zJtt1tfw#I_VNpFKfV9nw}0@tKmAXiFTe1+yYWr={F{#T{Nup! zRvd4B4C{?gHy+-K>%~XAcO%yGCOoxQpRePr*IBo(0k_@t<)4pw{p&bie-Zor zU)}qI&%KWI{EH7C`}RNekxzctzua$p=BL&hpZH+m0QL=ge-JzNv9NEH21q{Fa_C8* zY5{Q){FVp8fXPJ}qv@r)Sn~|68~*vX2Z0>@*jj+LaX8+$z$Pp;a}5WUq#Ci+;~JVdy>tDF1PIkB#NU`vj< z=q!!>^c6Py6*vwxzZq!fPstwX2W+<9(q@@L9*1%?4QDNLVm;fa;P=VnKoz$f%_>Xj z|LAwOxLiQ-2iiqf2+$Ah%jh^f+L;24>_AEkt3x$cN+uKXX99gO6r);+F~Yt;0d!tl zZd5lAd=F9n>B!H`IsqwsX`l;WH3!S>zpNqG499lh!~-fC4`L-cCax$H7WTsf@@zz| zqjsEe99Rz@L7gAq{QOUR^Vk3CfAo*+r}zH8T5r4?Z+_FW;hk?jk&(x< zk9XvX?#GJgRn;dc{I}?*58`pX-1Yj^v-ABg?0WBK*V7mN^6hrM|K7vf-}2)h`G)WP z$8P)S^DjR6TYnw(9H_6Muz@;*`^FzI`m?xDby~IWE28hgJ!dfD-dgM9Pxx(FT6NtU>x83FZ~EM zNQZp&@N6bYs6aeEqQCzBar@%0|G`&Z`i+0`{V%-td)8Z@czpcWHv(_I3%va%fK|0g zkf=A_&dAtZ+BXEL`}Zxosvh2WyR!?py>8rIuc}+u2QTyK^PdC0`d4p9)>mJA_S^pc z{fTe+caJyU0$zO`bt@Vv7x0iL4z;j-%Hdk*Fe31Jy^Z|JuRr_ppa1thw|>jt^zNJA z_B&ti_ur3t`E}4MlA?-S>1iXYX5RkL-uY;H+DbzdtOL5Z3bREAC)GfMgWZ9(YP2v} zyhY2@T&}q(YQ}80#^s_ziVRfmF}CH5c6Vepb&?X|C;c$GV+E+e+Z9M8SIQAkrv*`T zAgiO2wf6Spwz@dJzcOpUAk^JN?l=>5dzVegH{ zhjZvj^kTUdi9kt%^yHqRf=;ENQ$5z$r*rikh$?RkN*TsdZZL-q(Wg2iTzYEg&#KW& ztGXPhrJawyiWnC!IgK3mEXPvwQUdRG!68#r1@|m7In{ZrTqive78W+*Z0uY}>iA5k;WM_v^A1f}lmK3EU!Sw921aolh$;$@|Z^ytP`{3=cQNtYL; zR@a-)EoGu5;H{gWs{J+4Vzle-NiJ1QDcJ7TDmzHpr8}%R(A}u5z1%i@T>zbDkyTym zaeYXajA&AMQB=L#)h>cD#Qg%mGsLmb zc;p$%2gLD!^X1C}@BhqqpC5ev)BA(p_&rY_eD!zjmtXqLIA0$X=i3p_I*-RVZ~NfT z@~k)>zP|eSNrzapz zpibt6+f+}$D&*ea{zPrP*aS2xNbyH-3wl-|)|Knq&lDK{1j=4FmVkgW4%YQc+o@uK z>hEV*al!z zRUa?j%k}J+^TnHg>3HMQ|86{c{)-RKKmFD9_~utjz6>h^*iUF|iXd2^a!?`}V9^$8*4>Yrv%1GZjNCp?5HC5KXx3= zmwbZadJc+~1{}N}n&w)LP{1h~?^bP;T@?G(4Lf8;>0Z8oT#{QB>&Q4fF{Hb3N6(PH zvjZ~7u)|27L#!+@oU8Yk0MmGtcW%k#7jc=| zZq<$@CP0{}qaj@9q4$@1H>zWlYRv-m;48ajG|ZajtVM>W2cfE%(A+ee@hH%q0h(L$ z9-UT;M{+pRS# zeLlV5Ldq=E*M1|9*I#~o=R5xV!@J-9pB?Xf!;c;7-Cx7wo5=Nm><@T<@d{>3GrC7s z?Rv=8mM%2{r)!~`Ob)qu?u?D2^P%IstxXBttpe3FX{(Itokzs(=JI>~#s8Ajs|G%ZXVi7dFbrLR$H&G_#N)#IpZmf? zyng!D+pE{V{d{`)H`WI)e`nPGEIK|K$207&d=XfWYvn=Pv5ehJr+OhJ#e0cX0|H}H+V+wY?H4eRzk9&(XZNf#qLj}vDB2h*|kW*2EJ zEAX@)@!p^L6My>I$G`3OK7P;lzk2dLH23P76!| zv~dh^%C$RPdw|i|Nsa`2(Fh)3YW4e6!=(vXRR@av{7e*fu1L0J8&O&G2_jUcB0xf# zG3Ju{d#nO>cy%a*_k^`-)UrtVaSCugyLjq*U33&th+Uy9*^)X+|JsA<1y@C&LCv7)R3uI)xyz~cnoyJ` z9MW^k9{?R9RP_{STPU&lDWM587SLzlAwlds*ECBdzXgIFYzWhdh$9~E3GIotDr~Pp z7NS}oLE3#sUel>^f??BSCO>gAnbeJ(Vd?V+YO|;@4ZgwkY!3QC!^4%8`>YeO9#z!I z*i-!4j*I<}4~KN^rrDaxE$w$K>~{OCF;x=uDQM~Nk||Cl*5b;fE%wO6x(TKCWLQ^E z8w+RyWz#NBvPjdV(MrqF+)RU5$!V)iAMef~@wzr2god0lHC@vEhZ^|kQ*VGxLs&*) zF}4dVJ^!^-z^srqo`z)96XzvS(4G~8MqKW_E>KP&L`i?LO+x~7g>8N#FoQ&Bz8Q| zH{jrB+L2iLK-GcH2cQBgPE^vDp*$@upyLUh&w!HKHQqq3M6ZRl9&jGdL16htO62Wp zsM`~8zI@zOJ0Ff6ow3Axtz3N90EuK8s3#U}Wcmahz)vw9_#CpgG}d{+WCg4|g%@$U z>`ff80=pVVr~?#mG;7ue2JNBq>+K65_Zfqz?{)os?X!nYz1J>A_+YZ3Mg(e$A#*g& zGZ8pBEQ$lWTQ;c&R+d)u@}Kkycv^@Z=+W3anCQO8f!Hn6OiH~_Ks_XIKH=FRmy886 z&N3+{TNg7+p@ne8f{dauU>F-s{(DK)+{91RiIst^HCq{ht$50Jby4H#a?j^RkB-18 z%ZkhtLk9Z!jo6KRSnvq3dk&74ACW{G=0@}0)P_)2|(R=ox~9*4~k zQCJJueej2`2fpuz2dsQ#!HMh?ZkRm=y(M3#((?iHTHgu<9I~w;$o=CsAKht2cVvSeAHlr`_`jh zGlw;@`&5}gprKS(#Zl<<;?*7TqzSllv(KvL_h+KTINDV>y3oxnlN|*d&&Cv(z8#W4 zB-udmcuX(Bfk;oJ+OZLRTn4+a3^KVI8iC^>E*BWpmke+6k->owWAt{CA(vPXfV%8%s+s3j|AO7)?GS zBoCwn^fJ5U=g=mhpv)_R&c7i+0akhbs%I8R&$n_@Tc!rASh{xw#Vf*S!K%Wtu7$-8T zBk&M`jt6pYj~D3M`+(}i-cRU$37iGsHDW!2#-gd>rWLn3R&_4~`T?k6c_tbs=zqz< zLT0hf!Omc-hw7TY;O_HJ8|p;~@#+E{aq#rWHeX;~^naNrHtm?klX#d-C}3 ziZT6r|HU7X#%v8pw&jitXqvYIjRX0xNP|fg`v3wbY`~hwqcfiLd@2QmaJ484CFfpF zBWsY#+$V{-YFMnz?ARvkD$$S#*REe;bk|($+nwUv#e8Nq%0{`QE$!@%-aSnfPjhrGE)+y}M-c{$ zStyTcK729Ks9=olPA*yI7bsfeca5cVhhVwt&ftEHthj3ptl;nN0L>KPsT-&Ca-FT% zW2$eXut2hF)Yo+3#O}1WqN&C8=!h&H79#J&P{gIGeyZm#J~CQ z?4zIjUqAaz|IL2^&p(1yUt_bWLX%Z2yN4j2wc5Qje#A{lGLRa6^c~ zQnHSs7OQ1!_F zP27T4Q%U;|(GX2NU2EL9S@X(+Uu=eDvTO6K0j6Jbs*ysTV57fa!27x8W!A{SdwCjdIXdje_Y%!vS*$kL8jg}|s`tz2Njm=8{rKmXf*hP}x~nzbokCPuh7BK!i3z3~kniZ7N9m z0Adrqt3n?bnE}Hph8_s$tlm-k`V7P&$x90el5_qTRf=VB8Mle@3;{KX0Z2?IoD0wd zL3b}TCYUJ$q1o^?)?m?qDJS*0IlZ2`_nJ?Lhjk!ot9j?#IOIC4@TzGfE^x?G-$<+q zv>mpg?I1F>97aNz4q512^JjeBYKZ3d$HX!=h&8OG1`unZtF+RqC$`vJlp4;yp3OE} z$SY2hxmRB?RgF(GJjhkDKSO^e(3;5GX`eSc!QQx+}D# zCHRtJ>$JQwTHvYKCY$$p)xF~m=3}WCuhrCo%DgbrN>|RiFWNT}gXi>bwEaWVNB) z>0%xc1{km;CFvqFQ;$gT(sW|V`IN`SDBxx%GQc{4K2IFEMG8Aue-x@uC$JIuoL-Kqih!#~{ykQyM7PXKy_ z0V5q7;5iBUuQq!wuECJ*6=fOWS0J{6a*og3#PkGCeWon2HF<^&vZn*P?j#vy8%sbA zL21^WuIbg~%-YWwExhX2hWxKMOpJhZ{t(NJKzQld({JdCgP8B^caJNeH06lsHLEy> zbl8E>IH@LIc~{qHZFNgpK~Od4{J^zR0yKuc&Nk-wNKO_QW{?e}Q!)p@Ib3yT#IS2W zv`q;>+FVLFX>ElSuO@Wf*8qa-npExJT1{J>qKLqDGh3E`**jmd)^lc^BQyHG3>abB zb-3MXAQqxdJ_PMXTePCv4Sk-dQ~&q2`Oo%=xZQB>LhloOasp8|B4Du_ebY)CQ4u6?(xFTZd=y0b zE?7X9piX?{$A9!cd*io%|68wW?R@%LU`4AYPBh!1;JyfZz3kxrH~LM~kWN95$*M5+ zQPI&A*Sa)KI|PEY#qC&^uCzg6I1qhiWRf=;x(DdgoFQa^zY$m@kFprbPDSe zs-`XPWiv{*O$~{*L%}m6qPr`S!hVtpkHO0|#=Zh&I$k8W9Dus~<`mPQ1v0REFRpLV z&wApH>5h)5%mDfB&tkoJe0kK){fqzk@#>fU++Tk2?Z5B)UVP*C{>fesK;5u#UdX=+ zMLs;Qjq|l=P2hb?iS%Z-#1fNrA!IYd){oD$*i{6@o5Q zUUaL_)HtK2cy}|z9%Ig#^v*L-WztxZ)wp<44trhW-QZP=_mldd`hmgax8 z-~_U`V$7h$@+92NSkxfK_Td_Kkz<~kP*0<{mt9~}s1cJ{TdHK&Fd% zH^`+k#|ctg@vXIUev@U9#bBw?b1OJz$8H zrs*=zCh6g%_!~c+hDxOyi%K`+8{G%47fz6EF{k2Md8j+?Vz!I=-E^Me{V~44T3e3% zLDmwD{Z%MXY)U@>Bpb3jkevWTZ*^NXRR}sCAzco zcM&$_5mSB9v}a^4KZ%#SK56Iey1>!eil=S_#V(YLp#=m@eOmxl4QueO2NGE5+J}EX zZBXN$1M+1E=Ea)yAtk)ti|OvTtFc3fxXHs&B{>g3f#;PUS^3qhq)f-P)bNkv{<}&{ zdT=$cxRdFcS)#&<=h3--SQ0#6j+v7etc6!>4AnSu!En_8>n{7-S7~0a^SMlfclkSn za`Z-I;@ZVyHVn^As225a^SF#I#f$}+KEFQCr@9Wv14(gzU-@Xcz6jnymS>JH+Mktu zf$O;9!SZ=)-7Ac^3Kg!K`Ms^}4})?>X#}E07Ce{85EDr(J|i+~o~{6Lvrq3BVv;fN zo@61;)L*=s`Vd?qRB2egP<|Wx1LtTBiVm?8Ed6PtJF_w5s=XNmD6|54>J(>`>sQmDKHq(h5Pbh$?xGnV^<9erL<}>f{t1a3k~I=frIw|WDOuB zHI0T?eDt7+3an56fgj@6Jg>v6uZg%Xq5#++WRiywm~;Qvig}MwjAI)~iQRJ`b1E`k z>-72V!m;Vl&*_(55JGP4Aq1USEgll})vtWR?REUo{Pb_F{@}~KG9sI$GAKDkfcki9 zUYf|Q^J-B}6Uqz`(b0&NoqZCb524(Wta6#FFG4i?c0Q0ca=z$q&~BmhYhAK<_z^_$ zO=_g7H@IzW@n_R&hm({Z&#EQtF%jq$8O$KYq9g}yqWQU^w$@d&;DDY!&y8Y4uNKS{ z>9ei=g4-He>-d0Pu~Ph|;8TkN_CXQt%JZpveY76levb9kUwQVy&;GySc=3rp{QNtA z@BcKPz47(#jqDTjYG*OFU=&v&X9A?A21br`aX^y;O>o&5`g{^BsBtkbSsPv}@AgbH zhLY?C4PL=ln%rppU$j~GoW4wh85hE=>3j+Whnmb30_Yd-q!m%fUDzwI8fejI*XBM9 zejf)_fph2q23Y^PS>Fg?)~rM^_$)W1=mGb<4Ix#WdkQ(tpb~Bamve9lJ=XNQ<0`^^ zS5wGuPGTd)h!c_v87{qZ7p>MxWCO9>0J%j-A6ykhLnU_}R{Zp*v|T$4szKtsji=TN4rp|ZQsi@9%Y4Q{It5U67HSj=U)8fh2Z z0Tw-M!nX!hfhCrgtPf!!eyAumWlz}BG|q7Itv=mmMQsDH0Sri6k9{>nUU}%L9(S9N zmS;dFG@0loP<0HW0h+ezXCPSsE)1^=5KD zJSnP?e&@E%BQ#6q3>(V@d6_6~rZ8Bq)Vqr1ru5}*8ewzDHGTzl;ZJRpI9WK{0UN#u zv!6Lb6Bca~aWb#IlVkCBUZA}iKTWd&v$$rWaHz=u`g%TrD_*PN2(9&uGH55X9+D&B zME4=^U`tGp*QC6`i7RkPnZh!wtKex#NOI61OmkR@(R?1toYOmxHCr}F2r-1KsVH!ibK=j7+`c_gw9TD zmJAiP^Y!TnvXAL-adcsKdrVylyN)cf~`4B+#sX8D=A0J|C49MLAAlrAr=<7+2-2=++84TXu`u0E5F%NVM^f>?^TqTUIH1|d+52lhj4sQ2oH$8p)=0o zX%>d>yBisU2X&e6PAczV!E)mmf5z$!uhC9+pje;$13%2m9-P>z4!98cjtL=d0^H!Z z5g`hhL*X0U68f5krJ4d<^c?>$vx#~TgWv?BL-ajJcg;i~v;9GP^YIP5_tSszpI;yU zw%>*4AC0)Zmsm?iz}cvxvqe`?4ptHEO}PN=&nLZIkSaQ{6A>-Xz>vPaA_b9CR^KTH z1H@9PDaL;UcW?k5ooOhB4)&aAMQVSB{gE|wEB70M0!jhB5Set*FA97(|6lyLcD7=D zL=syxIS)m55toY51jIdBsLYj(Mny$zHJP+L3*}eW8XcP5m2e0IQIi!5o%!?=SYv$VYyP2LS#D%AU($@7AI2uw+ z_QuvE{AytLRp@}IzO~+*TGoJX)mQO8!7i=A@+22SlMhV=(XF#-FgC8DG09B`RUtfo zO&uJ&*h#ok!O_=s>`Ake4VZ2rm9yP$@RVTAi^TgI22iY2- zB5G;iV|uvX-x6(75Kgul^}Ax*AkWapEsM}ZMnyF48=^3ki@pO}g+ujatYU_`(R98C zOq_%#=k$N&nO+pTC#2uJ*WH>nJMW+WQ*OHbo8<*zYVl>8=;D%eznT6irZc>`NEU6@ zf1{FK6YV8`> zTyyy<|0n%Abyp(olOjV<>H1Co_cXR*&$A=-{AvbLIY-t=(!}dIbW;bLW|NrRaUzbG zzN2l(RgFyD5hZZ5Pz+!~R83b^JZqLYaSEW`2TRk@tppno{WY}K@b3PM#6?s6ipJ3Z z^3-_?>CUJB9Xjmp9$7+!Cm*=tcd}4lcYqE`@1(0-e!vm{d0u`2%Vj`X42V~w;Y!jfrK+Zs!`k2y?rM&}sq$-v_%^q*BZ=Lvt$=OJGq3G_h z;P<3bi-Ro!51O$uF6Ep}#>6#1?ee?9FRq-N5e-8s_FM7yq-zazX12d13yd*}2~m&8rHU*F|nFzJa84W}-K zg4jMWV7>nt*-VV%TAyqw`wUX{on(^Rr_3S>1S&6}&UFIxy9%l+ie6wsbP+`sK!pu+ z{krY~Xvx%a)rVPG5t2K!&YoEefHxkIrKhZZ8ZcsPXTz?)E8yJRoQS5>E_yc2MAdvQ zg3RuWwmgpveuU1SM$wW9@hppNg$7;vfH-}xOEFjg;cA37a3PvL7gd^{-{s_@Tr9o8 zOV53M>JR+GCW1_Z?t-}0^bhi`PBaJTztg@Mbx=I>gBX8-Xc*DgLenX%btM zu6y&aLB{W1A{3lnyujE0@{jzn;}hTg89Y2g++L<=+tF0SHxLn(-K`W6E3zYdMR1oo zOPGl26%pMTf!<^+n^S{^7k+d^(1n}6Y!PupcW;fy`=ZMuJ>Nk^c1koDX0b8IWzc>H zQj2kHw}Msy!IqnICUX@1bI@5Cjf~EwI=LgULM=NCF)>~#CF-I0{s&gnuH@c7G!_N< zhk-6i*-2`O`>%IPHDSD~rth@0DMRUBdA zi`tI?3{s!p$=y^x2Vwqyf=aq1y-@RN;e?*wJRfPL7$5x%^}Ozyn^XgS0lYmD?(v7H zm?Cpo8sXv(#=&cuL6O4jV974xU5ZK`9Vl0AGML| zj@8!AflWzUq!`=OAsTQXJyw&o=5xukc~K9&QL2aW0C8Lheco#OPN=~xXx*piSliFn z-&@a5ehfSxqT!YRxgPy>EM7{zCXR8D=`}M(faDURyoqiNUr=_1gZsC zu=!nydBv7h5)I$)0G611)k)($-(vtmbnfDm0g_8XF?Rx(do;jC-mTvh(&Xu+~QQsetbmpBiE_{-boxuI~U% zd+Kx(mx??06U7kt$2fnq8&Ajco-^%9Si9NQu58NVmMR=c8M1-hbbq(^M*xRdEM7kv zV!EVq`A9ROu&@w&tMG^cYzS`e!J+6!VDE=PF~};LSpaiTs8)^D*bz8dEF?{Q^9m?D ze|JrF2km4#p@zRN)|%NF4jcj!DAfuAWLYzG>UI`3=zrA)#By6Xohg1fvd5Ro1St@9Q$5oDDmhxEH`C-h_hW*Xd$Tz(#y*!dxrt!c3v zV$%5D1sMb#@`>0VlKo`fO-?87tL`v!=nkL>4=F?+41L!$P%Yrj0|qYPlKH6VKZ?=* z4CPqi=b&1^63nI<51+lj;>-;i$nu}9xCT@`bxmJ&9C2smcE$Q?0kdR#5#-eG3^(n} zlj(Rlcbl~P@H^E+83z0W!skp;1p;c*O7565RYT~n>vPKo!pyH_-g4ZrQ=NY`$SHxj zq)5BI^WEd;Vj7N1f?5rGRrQeCmD&PnL6s*A6k^L1$|%=j{sWI1q){r1qca9G=VMa5D5AQIh=%0wMd> z9+p02=6BV3EY8*MB(FnvkOt0@tOLE#z&W;wO{Ac&;6-9 zKmU_|;;rBMgTH-!^f&)R^b@de{1`H?*`6lr0Ef&in)Z`K|6&ajB-(t4zK+o@(P?GS z6n9f9@JvHSY5!;?aI@Ln^T0OYvU+pQQYX}|x zs>ZQeG_AWDrA76!0tM_)I&we?{+i9Hje>K6tNfywU?R>j*7ElY-w7T@L~Ph=sY?M` z4ar4sh8p%gg;^{Xwv(KsV;lNo>c2+|p_YP^cG55}>_bL_U}5Psg;0@HO39Hz%^%XH|{6mioTL)SQY>k!l?qFLpr(D zYW9T`C*jSA)CNm6b;bBb)2T2=|`;fV0 z2<%W1btynEN+$ti?Kj0tZ-fmjl56t^4OsB6kzp3w4KR4Lio{Ve&pjzP8bE(V|#NURK6S^;PV z#fNnCD*j`_l-G8tAyJ8R2MddZrYWI7jb>iQ+EpUZRZV#MI>(v@_c z)*W1T#r))Rr~qRw-J6q=7}0P$dJpgn*O31H+XcBNlRejw_n_nI@zs;E-m62F?s(+gP-xxh*sL((;q5 zspE0%s}WOaIZT1kbzTja8IBrBVJ7mb;ZHT+%k{j^8}b4eyBMGDiXjgPhhY|ZnH;-i zxCe4Sl|=W4@4R-n&n6to`{)x-K(CVkBneGone=Xc{(?FUPG|1b(XW>(E) zwhu^Kr@3>v0h?L`aM;xIEzd$P$r<`$C#23UKVNg=?dMi%V8TE)k#gKiBx0CKu1ggE z#CBPvZ32sRWg%xGZ_~=`3yn{(r&*-_jV#ALm>$|>I`1jU>CPq&T)qPK%JQEV)~El# zKQvTABY!2mT51odi^SG6s0Wr&q0(;LN&kf=Q5iiCz?3@nD5NSg-|2#|+&+U(W+p}Jeg?cJF*Kt`#14nd32W{9JbmYHdBy<2-)yNf% zT^$`VI%emoEYo zGBUC^IH#|OVOnD$x;q+2XJkZINAhZIB`AJ!8vOIpilL;EiU(OUn#L9vCA+aAIlMpz zye_44rUe0zihu|_d#9g&>{GRW<;U}bzwm$U1j=4+PJSq%ck@_aR~}67+R;j0fZ_#*oSCD0;AIUdKK>0kU0VI{f%F%Xh1fQ z0rkTv$fJFrgyjf*H${5N4*EQmK@g6e_XNt0i_XHPAyMB+3Ja`Scprpc1HaT%p`TfAkLQ58QfgsRSpz2YiAUvul>`733p z>Ba z&VKc|17KZV5n7puHAXq4iPshPeSp1A6xQMDf$BbVlEFE? z&NQ{vdG7Ar@v&Z}SJrD9az6xA)ig|+@-4-ugJr@@)s;UP7%$CX*zNvqg44q9-H?@w z){sFNOvk^bugWL70iJqcRt;qswDohDsKI|@AqqX&2*ejkciHO}gQ*bJt8 zhU34VuO>4(lM|boRd*?_T+KJXXQ>g0QXE5GFSFpO4Mxp}dBzub>T{y$V@F4R81lvGt9Wh{W1VMp}ODrQjk-j(P zzT9OM7%UEf$j;>qwW=ee85p0SC{dsJ0~gG+Vh*TbykI^r{F&6;n-%O~g=K7>T!(5L z|2y>KHe@1}OS&$>u;(rVt24)r8_uJ*??{+9@zhr>FnN zou3|k8(Q^#)KKLCXj6>AWPcZ(1B9)?rh#9c5v1$w81T0N99)8~8krz7dQB~Ez*CN& zYBlv7mA^wV!PaS9FqV_=hsl}-CpD`zINX*aXk;uPZ9A@t)r1Oe`EZZ>p&D8Bkyw7N zRd^h)`a9w>OXU`izQ7Lp!_AOGgJ5Mdnc$lp?e`mv3JnBY$0hH*`=<5DzvUmE>%H|- zLvEGrOQn@ik&RDWb`kZAuAr<_)0pZd2@oH`=HCee1qQf4vyp7!F@*P;g!00thG%*W< z4eoa1Lb4s;hZ-1`Aqd$G#x%R4dl8utKF^etr?lIf&az9g0Ya&oA`3vs4ryXB#xE^{ zr%Tz`cZj*3X}EwFZQhYbhdshguqNO(35pBIV+u3+?q{jIJ?wXZ4oFVg9XB*(gaR&m zKqG2818rc$lqp>Q3D0s|RQMa#d)4 z+QatwQ&UiP?1A~*eF0IbEJx=IecwSm+~5ST_e`D)&Q$w*rh;DJuE(Cg8?cW6=Glgl zRB2*VLYi}9=>MLomZ;Lmx{{VOq0uaG$)76jlbIl?b1dGyO{v12X=jt7IBW6rhc&(~`f-Ixi9(?Aieb`Sk{-q&5cGDSXjV9yUU8{sM{ zTLmQtM4`K&7$>O!i_k>jRD;?`O(-v_pH?vHE@NxOTxg=Fcw|Vq9sGo|CnmBFE?)}g(})*$no#@t^rvBV|>V2UZr z*HcsLYx;+~W(E=HlfXj`nCn-z<+%~COty3%w;S1P^wUPJ#XOUBr*{w1)hDf_st!$Q zOzNA@GxO)U&)fjBXzVGSg@4qT>gcny3w&?Poi`zm1bDKjc%-;!(@w7KY@CGj1_*=- zMN-JF8p~@OG4FtqyY{ve|H~~v!c%ikvOs7}U~a=Y-SJn*D_4;D-Sb&OfOE39IBraAWzuP&r&H!=>uC2DJN~Uza7y`J4Y0;uhoxh{Cm_vylj2xsepyO_dDko zf9;RpBj5R~>WRX?s)*`lQyi%7K6;@y=iXcauNJTemksD=D~FMxY{LSm_z6U}m+c7j zh;Dk`lIlmUEu_M4ym&foRU_x`{?a~uyl;x%#=R&K0pWZaM?O*1y43rB1$-0tX8*W`sDxDk3y z1m?!CnPNCqcrR(dnrt>jZt*hLe08o{x~A1gi%4Vw5=1aljjK_-G#66nwROa3>tK!k z3kbNGm|j&s(^~jv%=_O-<-0~l z?ZR3~8$Al3D|za}mkLko;(6c}*XT({I)AXY?y+56Dw42(7wT^Zqce0xG zRGSGt)!YFL>i5sv+X;+vNA63zh>Hp}uES8XlOfCajTsoBr)eoQtlW9)0@?3ZLE6Q= zY1J@9-cwZBWF=#(m=g#Dj7b-k^p=?IzC$zSnfCj+0|4|+TC~duf*9#083wQ}N~n_{ zYg$ij)If_}k|PbF<9Yfswu;l)wh_3d%4#x_6Hj{%TNw+ z-+iZxPFEiSfro8zcelorQlD>0k74>H-?85dCxQ0(;&-Xh8Jd~ECW9a)V+|X-mDWxB zTo-cn-80lV7zPUF4AI=PG<}uaqzT|GF$xmeaw5-)NPkZj!7B^3@7NeVABvEvDf5^k z!cr+sBAP{vw{h&WMoRvJuN@+mbQ;-H?VapkMO_#3K zRYM!yiVux|R$D0s5AcV=8k0U1k804cw~R2a33sU3Wt`l=VMzmBtlbB$F63eG_I8=Z z4scUs8zLxMnF8MD>T1kJ=PVHM+GwElTWT;$1$3*v@>)wMZgEQ7)@6)uhtFA0T*DNe z1#0u5bK4onHk0K9M^>%4%uliAS-H{MQ^dORO+7z16>hAS3MhD*=muE#K6J|!A@DHDgi-CLb)#5rfXy_lJ7$iyb<6-F*kqTii_#kp!nw!iL((sqrHwoxF48;e zPG?ZAA}n<{G>}Z#FDBK%?*xv!JkPp3fH*&Ne#YMd%JUjTHTnYN+BGT%IP~tgR_e`K zyNOAZl00R_9={3gua-Z{g z7Wxjz=77UBN(un!)&{5C1FSlBKsA`-1HiR?mKmk|F=Dy4XynoJTvIiwss3iLP!6}% zvk<_y4K1vBC-J+Uba=hNV=*u-xOA zhmzlJM69T;T9MUh>BR+mWk*F;L`5-=kw}1IlOA?6OO*zvB#|A>)w5C2mB!!;$XryV z%=fD%c|Q=1j@8v|2dRk2?jp@GGP*0|HB!i;`5oKWNO1&!h-}L|08~dtM|Vid5V@kF ztDAO)slp?y2t=$M`%L7~c>d9StUg}-)St}$(l7kNM}FJi{0)yE{mkd;_5|QWY|%ue z(@yD?a+FM^$*mg(HAtGUQ@^Z3wiN*N{G%@uAi5gtNy;9#IQg0~?UZ7)tnUz1H=fJ% z*)D2=w$RBw6=-oaEx5Fk|QZ)51OrYuU_9D>FrJPqg=? zs%X3l3s2d)_5fN2!!qdqKq>9!G2AIn3Z1FCYZKJS#g?ih`YJlDsUCpElumvAGTkyi zLothbE@cXvqw$@pg734EuPz7P|DDQw_JqLTF=*76_9`S@4KK48; zIoRvhxLCVEv=-cqjM=CHAYy?IMtskFof_hZ{pR~?h7^4jVth>y_b~%(pbgS^qOED7 zvM}@7C{NVDP7c7F=MUX2)e2-=*kj3cgukYq7o2_S$Zjz0P%>-m_PXtZ?IVPo+m~nT#8DsK~@O#$=D4Of>`|NVuG(h9$!CXi7<&|Z9 zYW+Mc$ACesiCEr#0G%5H_U=!;VqV5HP|fvS~Jc znZ=f4B0Ndb&#b9i$57cnXWs$FVi3+c&(^ksP`%^3>R9gl=ekr(TbCY$0?Ev2xmNma zMtT4xAZX-9ce1fDeYlts(B}!W$JN24zo!Qh`o6PyVqzmfCy4cEC(Y1azX9)c2Xf_y zu32b<%a|4lgn;tF(53IIiO>Ze)e6A2Y@9BU)fvW&P+K~TdYt2 z;14N51zHAt6KHjWt=H#I6Z%^hP~Z<2T4B&CiW@2b(MlK?eWd8}3{>7S7eL8U``86&bO3oSkR*6!6f z5HuOAj7V&W1u|$C!B3PK-5E>vUoI=0 zpA@mdy(p79nPY^=;e+Vc<+XM57!hsPe8&9hx`ylX2|YbhH`9sL<}=*UF9GZ|{S&`i zX-Wt{gJ@EZeXh3vsQ(Im?P39W>QX%a>FJ`%sJNP`DjD3!RLlh#+I|<(MhbYTzAGxk zejzJ3V3~uBxyUGSxy!hE2ld|3aSd8sQyTt0{aFID`=j~1*J6A(W~Z>FpI%z;wy}^C za(JKl9a3?3wbt8=6St<&naDmT<=s=iN>i_Cmf_z&SJbjqHF_Is*}fW4HvU$*75Kk%A_;5b~olW#1EclGGHXxp2Pjnw*_wcI@~sw4cwv%ux!6y-Ch*943k~ttKRc;+}oRC*iA0>uV*YGBfq0`LTleOlj-k5 z9q`ih(CoTY401zZNX!iRcJYoL&j9DK4(qH{cq#YA^%nWub*tPQ*i_O}{g{S_-?hWw zsf%`Q+u55EF-JrW8CCqJJP}ZcSR;{YteG5Ij%XlafCkmHJO%=W;DTOpT!%0H{akN1 zhOL;UOgG3}(a=D~PrNVQ65y7}Af@QfGH`|`aUozUnpSt80{i`MzCaw;>R&@8rpRE;acn zuK^P@NGea}d*VJPyLZ6UlvkotL-nNcq0I>|phfNj0`Lo5fW7X3kW>s0(MwwKsx0Hw zMA@5yC<$XzUdk=4?|YGE#A&SyEN3sKv+d^t&$CDT(MK8DlAk<#XM_UEI*j z=BgS^;XC*8Z61$xb&|$6sSVo|?RCbm{?gAOGO8*fjevzVpa#xH=*~5L6e>#n!wQ?F z&&Y>elh-kk?Hw7~UsqxYM9N*EGJ1q98SJGL5q4&fGo^C3A@_ZL0agEe3e240be~hc|Nc5Z|I7NS6hv*$g_d0C}bwEO*`b{-3sOovKS57 zg~Ejk#x@4YOR!5ji9L~Yv1S7^O+{ueuxrsYDw>1z``*ZFXbO`VS>I zi<)foz9z=lQi#)77o%4qx+}wnYvSU}@2uTmD(_v0?Tm0HmY8m9cL9PI7pS-z=<-xk z=fEhcLy~BD2c6b)%9z>3{LHQI6E>-n_O+^L#3kxrMO+EaOojyd=rM{S z*e41%XtFW}SWa4^3n%QvZMlcQfZp@L9WMbk8F2`)8SUmJehE)Rx9_>0Z(E-zgUtbK zE=#2~(+phAoth5yhPv-3o82(*=f;Vj|6&mEd!=&QFwByX>Y7kGKDg-t>LhKR`e2<& zh5lY%-{@(suA`*~uu+_UuJ58^T5c8Uj1MWpz>)Ll9j5N%k|sD(TLYk%Xd1RAfHr9K zO2%kT*eLP96wiUu8c2u~s3Cz6_zK6i=7c@27!cBQn_Xl>s|&zdsN5>XbS|`KnSL9X zqScYsd7?wBDnme3FObOuZ3z+OIXB~Fxs31mZub%wH+Qq1)3@l5mRdAm8#2Z6nY+#d zyy`P1iw(OZwEf1eca~Xlm7gRl&Slq_a=y3ovZZn3_ztfX43t(nI?vJh+x{CVz(_HV zhh*|YO#F-i$H#qX9FQ%E&^y<)*#K7OG?cA6a`l=9*)e8vL`th0J==ArP!8z3UJanx zQd~QR$*l3?%S(^W_qokA@FBv1?8s{`^oGTTdx_Gb%Pd*j79q{w1Cb7q7ny- z`%?X4!_R=4WYdX5k%oPsRM|I z8&}=c>TyQure@r19)nW!k`TRK6MR%$XIMy%$c0e+0*Cd3ez-=5uVXb z4OKjEGgz72bg_p<7Hg(phK8Fdh92v`X)xO$QeO8$waxNb(yBeP2x2G{`uy7TbF59- zwrP2ObyKhD&KWuOnb@iuQc})fV;>9S7tz(%5DM##^=Ys~A4ku;(^9;PiFYyl3{LVr zrk<;y-0SRz>nxw6P}3)H7XGO>n&UYHDmS#J`%H25-E0_4!}>Bk_@MK9C(*J2p8bk(=cJe;q${Fk2>8 z=*Xm8*qB8#I42!Ns7M`BnJPN<(C@10qrR9f(l<~V`xShf%N0i2;7*Fq4hAZ_qd0}-)2|ZZP|*=(kCfu0Rhn#Kj{qm*`KqJaJ=TV96qJ=;% z8LHT%M$VyT4vd>_U5U^@jSJtadX+oBzRPYxPg6v@x0G3!Z8^#>L8vZknvDp7dU8-s z>*FMdVZqGFc}a`DOJ`Mas;5e#Q+MSxp|jI=SL=Mo71(8VWs{vLTJ&r~vCIZGJq3yD zaB2S9Yt-C;#T1%oV66gnT<_hcO6cJk*_dlU_F$toMO$N@nG^JCXdPw`@|`kwg{h}= zoB58GWexE8PEEw(?mes26{yr>K6$}gT&+mJ2%&w$zE3V9(o;)Sqh2#)fXz3uFUo4y zU3^J8pTk9xz-K^bH|t{1jC?{XECVuP3<4lK_4C9A=|&{u9~RH_Ogw_kz8O#@qZV}$-AV3%wlYtEhi|-Q9W3UVbO^Pn?%Y>A5=cSSG z&o4FdJwQN-n8Z3|SSSYO=9w#|i>c_ioAw{kIdZXYuq{>Sdz#67d^I*P&Cm5dC%Fkf z_vZ`Ug{3KODF68`#$CL!-$X}f^MaZ;n|*1630E|G@`x)A4^>XNcIy6S{(|qFwi#K1 zr1KSVx$OtG^w^;os~TwN{$_9}RteDOov8teXneIV)}o$KWMRucfuKym29OhnTu=GF z2v`p^ddIc;&3`u}ps*b8zTRsOsT5b`T{7Ewv9B`%y|=z3a~EsJ>R-&c4(H@{L&xW` zBdOhn45xJzA&JtgMOE|bL5hK5Q|WOB>O(aLWa=D7b2Paxlz`i~h8Cc4U`Vn#vCtrT zYM|hEBwDVw@esqW0SZ=10-5$MVH-A@`q&?0O--}!<{FlT`8ztl$*W1vi1mj)P8uv> zowUIGoOzvVps}@q&J4~R|0v1%QjNc9{(&)oOjGnhPn*)v$$(_fxor7LVAkY@C00$A zQJOulT=(#N)VfxUUPJQIwqHpY0%#d2IySFQ{=h#3Pw*RyaWysZQM1Ln7#BKY8a_z5 zEhP!=A+&0dNp_nBXryM7SHQV)@)CQV8VeWDWm;}2tX~P9>vDi2w7;_BjoYvP>L13t z-+XX>!tJ<5WIMWm#r({XhZtgP;$sIF{Ao8ykh@PJK=h{4f9Zuuq1nQl!bA^LM+CNr zb36s@FqmMBQ4A**t9Cnp9nq^Jkfm9O7g}d^Z&EWV<;W2TI(8LWj&IQ=KiYDdB;O!Y z=)h{&GN6*7TwgR?A_r2mmI_oZ?A?WqH{Ly8ym-tHe&+wvPrvb#zx3vJ{kK2+_^EIE z4{9Z1zfzHvSXsci5q+R~Q|qlDodvmM@{N`frV;t*TA(GIDB7X5)%!&rrlOS zB)XZ5r$(jTcN2ywhRs$eY_9<`?LQh9E!#R<)4xa&+F-LmN>PYz#pt)fhI1->aOntV zTp@7gnoip7SqWNNteN`9HR%`^St0EmOAXQzNF#%!EigdIxg(Gp1R$jGI;UKk11{7%?&$EI(CX*MlEGtOrjE>T zniOCu49Q@}Iy25!_3l+{-&0V-MJmJ+sA(dmxCuWG-pBH{YBwmhT-!5w5(7xDyM;Py zn%|Jw6q`d*sP&x>)3%w6HezVn)rBQGVk=3)TH|F}V@U7EGLO3Sx`{;Z zx=fYKNE6WQsR^aEYP1B3bCSKr#k;&~S-a!OvRL4@UllWOa~f(Q-DOI}7FRIyR>?!i6;(V|l3JI8_(5 zrj8|m;|@`nfr=Y(7&Ftf*Gz+ucZ1nxt(ic&;b_Y)uls`{gs|N3mJQPGCjJI2o2;tk zm11Uv=wGARk`~MuR_rb@-ZW_-w5JBW(+5qHI}9*4 zH0^t0Ntz@=TV7Fa4q%zgMnc)9ZmCY4dr_1*2Pt1 zZuZJXuFfc)rq+}=UWJy;Rij?Fywzx`%v8Qmb3cvsC2ezEHarJUsSVJnF~*z&13#(e zp7jqjR4}V@Hh>y@8m5WP0N}1+Hq{;)FsQk7(|J{) zl;QC?7Flb$A53c-9#yHyfDK4phfe*6(8duyi`^+1V8|C`3;1k=SKK*|=`NJ(tpRX) zh8eS+LV%3zkrZXI!1bv!xUiguC-wp(XA<5zqwL=@wG}QK>uhZM3WaN`i{;Vq`vq3& z^K*8F5ymVv zgMpS(#Ko%c3UWuKVai5fE%y>N@ixSgs4jt<&NG;Pi2vTk60LJefaCyYed=%dA(r`~ z*M`t&JCXCHFZH{c$k_Zw6Kr5?!Ts1BmK^2ACZV;CJDJq79tLUl-=1C)J`uNL>4;a z7Dkdg6;VP@2!)7BAMn>nU1jChABDU4&1>QXv_A0ufnF_$^S46`A5$MR!+MX1cW~bVMfKO3HNxW@2hRMECJV zJb&}!-LJoNeDO#B)%EPHcmCL$-~Ii6&+RzQtXFiiJVk*mIdiU_3z-e>%T~j->V&E4 zLq!2#Csylscz|OP?v-kVEo;)(x~*G3YqbpKs^{lGsIk|wxZv?ru%V{>o+{ZbozI0h zw~ADvHcC96eyHiHzAn8{)%0a`W2q!L#z$y)Kys))+-5U)BDMmdf`;EnjEALSPTh6h z8S^lhiCWy$>XLd*+G%IXo+Gr<%UUjlAJf#}1Z{-(iUao-IpxSZAcTDb4C=sBX47h~ z`YK)UTJxd+i4IZrwM#mUW=`M2B6lPgPL^8}2|s833I!t9~ju59`8#r(OaiYc8M zhYcdeht8Fq>w|^5S2h|p80u$ipq7d&{b70%VY4WV45X)6)0wv40j`|kO%pVL!!SL_ zRbs+D!`l=@_p@nb8?fQ|^BTKri-HQ%VPjY?*YixrTqhhq^qtNeAYy2%;X?bvcRb>X z10i>7?J&J7I`;kOVG5z1O%UZ2&wcI)HS@Rt1XVhrROTt?lDuI6sKw`8{<~-dE{(lo zs~K`ONxd46`!guIu$WYJ0=-HF*rls<0aBjeDt_6}$)-d@mzTFon@QyJ=Au&1BC6;2 z%?sL|4qL*3OG{mbIt3f`)mT91()!ERD0E~yYW^oKiIEfsW4EO}GbL_)??ph~k;cGZ zsi~r$f;SU5E(zd34+R)u?+u+)#ZBuxMJ@tOrcP{43}&Z0tOsYYU45#sR^z!+HJaX# z{(r96!~~~R#W6{98h35U(Q8mmTLN>pnr-ju9tqDKU6pmShB;%%eT-geTs-qpm(4%JXQy6;FAi!}4Hl!0x z{sMtC;PR+4OkL-LN;uE=<+alE;^}VIqXyJ;xYIeoYp?+ga`+qxyaqgU$!Kilw}e3^ zOe|0+bA@{coMHwC_skm?@8RbxnHbERQSJ5-sj(D-$%&_ybah-V= z8=}w@dkg5XT&}NsF`t?LET?`wl?NmrL&!tNOfd|2FxLm82S{Rr#{bOgQ>798l>$-tB5~$7y{UolNW>a85 zq*y4&DqRdx`z_UwgqZI5fzDDBFZ5ayc0yMvm^R4MM^KvYY*~Vm6S>@^Mx$5sYQhyA zQNrCyp}ab|#4iCZ3?MT=C5Ygy;A$nHaYV1|O0@`yMNoW z-}J5jMm@bkw$_jo^>GJVRU&s=MW2GS^*5`FO=)iJv1c(*b~P2^Un*L$Y`mh&U0hY= z3uBE6c3r4!^aS4=z^s(?*r+@3b%QG`V6xS zI?F}Y^z4v~fC#aX*0=+>oK#fIs0fp#0C(N3kW zo$ASz2@7YaNMvtE#smMppP4~O{_>i5B)HL&5Jk}ru;9a`>Ffp;E6)#sLA7hp+(F_u z?x=$e#O9uOHB1^Y8K4z)vaj=1sZ9w6pG=dMghUT>+T8AmOD+yG(3C1;=0z{w$r6a$SzuI>fixDKm% zXU+p7GcaP3`u$Z`5!hEkoONm`c2N^iUrxekJ+JHiaY`vI@!~V+zWdH?O5i+jV5qK) z0B=B$zmI9^_1)AVm)LGQfY@ppxTb3w8zcIPksWSq1UPM6yR`=|6;ReKAW_tFPoG*E z=Wa-Q05>%`bWazw1g0Qh|47rpRombKvNoW!wh@~wk=49ka<(0pZ8juC0a+()#ey|W z{nEW_-3y#*j2!y`okKQ41a3&1cd($D)Sa`3N6F5({?40yV5C zpK}+(m*lg%$Q1QGPBS+kxfa=vLkE`}h_wSowg5FHX4ttQcY~bz8KR2o-RhmTD#rlcVO2WC@&2Is_&X0ff@XxedVbE69fo% zVb)L?yz>Fy>{?oE?rl-V+8#4L4~{bcPz0>)DRu!4an+1y z<+zKQ?#47bXBuq(3)UtZod+x@$h?eo**JF=#mXw zg9@|npq!8fM`o1R+3;G=NZi4HeKWP;`vDyfsCYo(K*a-gJVeI=aG-mk z^FZSf)ek^CL-zwJQib6HO)ZwBO^dWbaOxJt>2->RICL5@4(I@?t{vKhdb_=Oe);qN zC_eJd&pVz1F){<5b7sH2!0~29Mr>FbC^pj4zuanyNf(R0TdSj_)}|K<0bI!Fu8wYZ z3y7UD+NT8A_e2FcwMwb8C7&1mAT2#tDl&@z4Xz?!G1=L)(&!3AOXnZWK67!4IX`qn z?+CBm(WNK$y0T^9v@&2VLKk?>o{k?y8yz`MS zKjIaRC}eItL}A6ou{Kgvw8+i9wAv+2n)238$-0m*1T&ka)#=Hz1Fjl^?Md}aF|AR? zP^{CG_XsuiJQZ?I97HY@NJHpfAXQAT*jwI4;k7Rr(v&Bv_w1;5Ftb7{-3b|GRY56m zNy$#SO;L*ZQn=3(ONINQF&ZhyH8i^D<~p}_g=lnMpn{&s2?iRsXDLo~3KWzbdQ`^w>~%IKpN$? zwnhUtj{CKNxONkV1Ac>shIyC#Ov$qOqW&4FPb!8{*m<%EQNUi(j#7(P7h10Ur#*=H z)%=S6gB7NU7Q9=v^fSgcL5&6X+EXib&Bo*$f5)6?QR;wex3|<+n)uW-Nl};kYd0IB zN*&Lxart&*9yW2b+k4jBqcKhznzfyIW9ZIVrsUndTNhyRQveoX@9E?&{H89j5J1GK zBq~u#Y=V3$I=QQxpS^}QD(L90(ctq@Jn(c0Kx3=!IGGd zdvpiaE~Y4tu@k@(GE9}^i?vCnW7ar&>s_aH#brRTv@g5SI02jT?8Im{LqQhn;vqI_)z%@Pd4or08(4}*t!ZI+L(Dpg>z1FV#bd#uw`oeS~)3{iu zH4wNpq9CB;b&gS&=9;X58uK+{WZ?#T0G)!(yX^44u(dYo@`MOng>O_NS75h3Ta?z` zHqcjLZ8lVz?d84j<8xB;+^#NU^U=6SE3+mvND#Q~^F8a$e8%8mK}Vpq+%%DeaDSd1Vrk^=ZH)U1cyQwipLuMGP0XWj1LuYDRpKfzhI4Abh@ZRF# zUliKMKJ~~XGUq7fEar#2fDm_j(EfJai;LZ$)w!-^RU6P4lf$dDR?hOa;oW;^<(E_uREEM8;7dYS? zd1T^XNuUjAG4*EP#QMY!{E%@gZQ5RH5N3lfs%TS#b=*Nmn1HYq*Or?zMJlowt?L8O zC)c(^Q-ikBMF*!!iI)ejN=QgoIWh={mf>z*s4lxDDj$0Suz7sNow>oU zNWdWSS`^i!adJ;l2;dyndmFTb=t_^E&Qc>1-!@N;kfw!iB;9zOjY|7j>u1E-p+)>jwWCu-je<w@pF3Fd{= zO32Jfor0iu%`Q8N>fIEaa6`d?h1fQbpu*IS-!2f!MfG?Iv{3(?;OIT@)QDqTZygy* zKuh%1IE<#sNH8wo24;!eHMTMTyf0+b2(p`-G)~-CBk5_Anr*XCI3?-pY${-P4Fbqo zJ`Er=Y!>09l|IRdS^E~~p>sB?KjXthrjsc0tOAjK?A{gEMVTqnA%M!pW&Zuw-xt_n zS|=QD-CZmt!)s#!^zY4jwdSO53(z6mp2mU12B~THg#3N+5K95WRU0xaB2@^O)zIK?-+mxHDWkg47n{EXqKJTe;cKpDJS*J*wU94%-~+nOTs zA;mlcgM+?%I+l$~*5Jv9K@EXKt(fnM^lHEqAGRtEZv_x9eKg{FTh@X@%q98-w7-DP z;+-TW)x36N7ytfDBf~S|3;cz^Dw}r7HOC#BVy|*UdiELDN-fyv)`hpH*FZ1F8x@dl zaK&umpBqSo0C2MoI9X(RW-j@J5d8J}O7EyIF*_)WDeN-M+KE8rtMb4cR@~)C zNV?*NwoPx>T}xosqO<=dL&(n%V%@mm)yvcUt62$48h-$N<6EAAir7>krbltjvY*2} z(`(FC1%{jLL&Gu5eGPeYloGw4Ujh?bXHYt|O?)UgbIq}0n-Bs6i2hj@xJMr2tYHIY z1tiNX%W--@H8WsZXTFr*8$j+oxy12n*1V~THxkQ%o|rn4a1Cv|xyJ9r5r;A< zvHsLQ@!g3jr=bm3ix+w=Z7$Ie#!@)P8Q1|&-Y~kuVJ{~e+6Gqx`u^vf;Y;F>0&~XR zBG}V1Cg>d4e<@@fEdMIkVC$2={~v_Jtk`uZ`7wE}Oz!I1x zToBrumkfO}&X4HqSP-jb*hc6`p`G2(PP;_(u1GNqkXexhY%Ulh`q+G4%69zv4o_5q zBq}yJ8auNyB9=L(U7_A8&9ufmy3lqv@`1Cs>qC}Kk&WI_nMk%COF}wLabgAEo7k39 zWMxMHCu+UXk8ix)`}05f_})+a>-p?spZrJP{u}=8|4FTUh4UslF^dwON4v#}%CA$I z#U#I)MP)6bfxUpPbC6C?)drM<7y@ddtF3A0o5^IRH3$_y^(d2-EoJEdxcy&NID?F4Z0`$Mni?jB4pO%!ue__ujv>Q z1{QZ_PeUj(uN;l0ip99|X^N}xZ!=;v9*@$!aB>S36JtyvFAsIqb9X%r6o>)cJr}zv zq%^9vM^!o4Oo#TQIkax+0&x&7lK$-H@2(RihycKqirDT;e{t$22lfF%r>YtC%{>pX))T z(-c&Y(yXfl0x0n{fMrn>O+hZR9e6j1fd3o{y6NXR$w%FJa!MFg{4PUDRw`{ZOfEQE ztd0QC3tYG7O}eSO4QcR=R$q+)83fcVcMXO&cdvRQ7oYvie3zRCGQq-=r8yb8$E6}7 z8EWYKTjBG=dz@+r>$GKp)C$# z9Kd~T+}*LwzQUUf=AJGCFlyF(&ZDpMr}||8$-X2c*Ut|c&x(0hSF&SY!&^M2p(|u# zp1#$bqEptjuQQ^%9=pZZbdgJq7TkpiN1y@Ri1P?h|HdEgkA6!a zpE4PZXCe`7_CpGTCNOaCgF2l~OvTyg=(g-HXz=4gt@RDto1Xa3?W9^9xT^zC+&WMVTxnOUWa1oUVPA`&Pek20t(s%7lE_QAp z4$fHC$~Qh4&*~Mv{_}roz50d!@M|CYzW?5*j?et||E!;0W9^q%(F6?ie$s*FZW>Nh zoD=4N*QF$KpIS9z3N@2UWs?~kCktF%+@UA~vkJ>}?zxCIz)|yMoz=4b9-0J1qU#*= z5^=4$>97IZp0=vO%}dSCx%BQ}V;~w{;dgq*cWA&^~9!^_btOc+El!qzEw{tY_bjlUE8uE)0zuUa{Gjl~9o~Y;@t5;2A53 zy8Yn>+vYxSyk8g^Jw%mk$s;H^*}CVcuVywyDo+_?&>EY_Ifr2yj_VZ_yH4a4fy}$& z6p)LtnjEKPMXyz%-0dL( zroK4(V#nM~YurFuKEsD1hFHx!T=Bfs0O`*=(OySnfXi*5bgXV@u7=bFwS`Wm((myw zX%|K%W2^f;@oMBruhoYyNPc0&kdw|@26|m56#|D=(Mb}ZCd3Zp#>c%nY1U31Ws(HE zdelA)S&cXxPx)@Vhu-hj@isN(Sq5KSif0W#ciNUt~5=89l@{FZJunE&SV>SQ}CXKNV-&hCKX*;Yss+gse4>9tqANWjE9o$qbJ_m zaoY#Tnq8frjHHK%-;aJK0X)gjvUq31{wdZ8=fwn?TBXOcWoYA29pU0xdCqHd?a^}G zcO8f{o8SVZ%v_lwQ_s+hfnlZTcaB+c8ayu_4ZU;yv-{#+wMiw!Msf{r1I25o@uAhF zko?ijN@yrh7f|f@5GwHez9HbzdCW$>5f|{_rn`ah$cQ+_&)-=&q;+}&loYcYWc z7w9Aa$xKDdS3-B*@oX1@j(7veHm>iE!rTK7Z+MP)U&{yGtz?L{E#N!{<*s>&ArKRt zWFWNfq=5$-K9`XP*o-$uHfp9v518u##05qTn4NY-5pz$*pE1L&r0i7emaz%(&l=#^ zpKfz%KaILT9iM}VEs%*Q2MyH=(lxU#GvFZe-o(93(_OWO$(o2eJ`dnm2Gw-bH6-XT zdxOq7wXdI@%kQ>_&1p)0xRwR(*c?khvg#+D-{sY~I?a6dP%Nkc6)$NY>ordN6`Y*+ z4#>NVa7Bckv5g!mnQQOpZ5m%b@B%zMA|9Rrv9MdKhmZm^cqtxwYx_pe zPET~|UwCD?fv;|Mb5f$FuyWKJk5j z`ycA#t=H@6Yp_GN+p}Gw05xeRoX`s?ER)oAsMT1VN*oUIEE4yfu1FWSIDyMnp^ZC3 z8lhUPqGIE60f(lFM;6YmtMS(nxg29@V&g`P#%U$Sh-k6W+n0(BPXMfut+KYeVdFKg z)yt~c+sGt(J-ZMfV)g>_EX}P3t?m;QIR(0az-dZLI8>?tpj7KZ_6IeM8kgari6X`< zFzym!7}pRnrJ}U)_GHdYBJfk=#6f&ydtmN5VaGSYZZM)0HdRX&xk3c*1I{e zIO$pD(|mW{T7Wx!-xMZS8z3(Xo=Z(o+f7F&nGde<<0^8}30}>yX^wrjUz_jJ#zcW5 zYIMdV)%29(9s5G_efEXMlHRT)B?CP(6fW~qClnR#<%uvjUAF|prkI|VXj0UsJ-3=U zZD|26FoQYi?oPm(T2bPQ-`B3a-7d1!h|gKq{gf^?`b12oN?kgUO%Gn_kxsK~I z`^-A_O#Jjg@%dDdY-+o{kDDYL{h2io4e84HOlQ576N zU7)uHHrN-9eWfr00!d?Zgo`b5t?@D&;l7#Dzh|>DTwtsHZI0HR^K*pU#~lQ9#l6KP zaT%9ILtAu|OSkKfm>l~6ZK4@nE5Cp29-tCtV%f+s9Zv(RDMMS@XU#k*hJx125_e-f zyX1X*uLhhPa^p_Em$5EpVO;-yo9Z2bJX`25jRHE6OLyTq=U;Lrb6qI0{p z-&+lZDw6_PUCJqtH;4kx)jXcPvSQk7p^=PTxjGd0EBD}VJTnH8_8q7x zwwc!jdctn7M>TlBgF5#s7mL8giCInmsbc+W>CS9saG`c5zZl7|nAN5JiaDX>FVZ8m z=3C>&q-HpM&HZ_)UyZF%csW={_0QvEib?D%YP4Ezxpn`dioA@A9cGucK7Ot z+Gln?I||Pp5QSc~fxS@?x7bxUUqAKZvtK_x_U=zS`|P*>AK&=+H~$EZMxC#4o`nY; z?wt#(OdEuX2p+@~Ffhts4Xt-Ks&K5pK@AyzibP}Qs)`O&c4uF5U1ZuXEfHN^9V@tv zYei&{J}53qA!;dLH3oUiWQ*7zpGm}as{a9 zD|Ulp<{4eF7b2=_p>Xz!$f%BCDzq3llSnJZI9LT4-U=EA za-E}S^!j{y7Tf>7SAani>dYx}hdvslX_deS$8#RQHJ{HYYKr2AqE0Jf%lVe*X*Q_s zXP2h0S=d7N62Ps+5I{oJD|T&7_37@sx`y_DX=bTe+@h>U1@+TnM|dJs9b6ZNr6Q3D zi-D!3-}m%IJCl`YvlDyauGu1LUs%YyXF0SxsMt`#Jlenz_oPz?rTZ@fsI8f8`u!<} z5GM@Ox}-}xPI(YmBN~t=;7njs%|;mjDkVXu@!o^w@@m>x656AV(dHbYhWS}A===OP z_ZVx#Lsbg0F73HapiUt8=R=*VO}eHEbGUI-&MGWTJV{Zb2C!>mt(I35DY&-^N+YOX(lneC_8e*^Gjw6k^W+m{fjaMh1=hLI z2OE*>!cNMCP>EiR0~;p@n#B%OE+B4XkBBX?Q7FZ)Z9p$=0xH^dFW@HavkKWR72;^@ z^7O;byQ!wlO}+rhuylv_dL`+c8gycZa~c0;iYi>Xb1f~i9jjMRKIf9BHN6Nd?7m5c z!08Sra5CK!`cJt62;661F{%?|Y8UjRSfB*Vjhs0?U0b9A87~TqBIwd=d^M=hjyH2{_m~QQ!&m+7Kd!CB{DhL z-7<<|v8z>vaf-f4V=>Ci7Pg+B86{bgBUT~<0!M&--e4i2rAd9S-&RwA#iIFQvh&Y( zUh$wzuRk}iRLIp0XD?)GoucWY{{6Mo1k3DlJI`U_O4u;7FUbiDZlE_e{QY zT~pN7y*Vu@P##!|ejDv(GYWBr?icm2X9MSl*0(i)L#$7$HkeaOz+T{9r;nM0(mN#( zJ8`PnO9aj;am@?2!l+bS+u8w3Hy z)wlBOZH#Vt_c@dCYcd)FW;S*OV(EPK$=IEg8by;*&FvzV7O6$*P1eFRlvktI@-c`u zt(hR=O@LG(SxfaEO7-f6oiYEu*M@3_%v{_ubBi9Jj?B)$3YrPG?mJmTp*6Innjxp* z_5h#+ZNm&vF@K_6Tc{rNIy0}#t!9^~xOy4jLd+tu@zmU{O=+Z^Yh!`ZpAB>d7S*}} znG9H7Q(6WT`~58Xm)$paGNz^6&_?5=fb&KgaMnXAfqk(Nl`?S6i`k>vqf3T}eGW5- zgQCm)62-dcMB)fwx3)}(*#-bds8)=|-UsU+#c?yc%5pemWrC3*{}&GA$kyO@Xgl=B z<~t9}Fecj&x%va;BC<8RAr$s2Ys568At2$ERbd+7AVc&x?|fxS6}FAcz=Qt!>D zpap^?DrqEMuARmB1cFu@3<@a>r$``8|L1KgU)< zR&n5|5^+3Wzk2<~m;b__{(tWGzxsEskAG*bw?2k50(kZ|;@M-Z^(^Z+I{KjzYj@SE z{TdJKdlB)l3e}wlL)7h6zIgw0FJFJ|=kmOL>5FfD>+kqqz4@7M`&XV;cf5K{m&|?6 z#KjZOJ%}lt`bmTEREifpU%&c>um8+X{gwKb-}gNFRU@*yTGIC1*_EAvE|QJ2yU)&` z`BZGw&QhCPGGpk92zC{0$3oO+dnknD_8r<_V`HbNs-n?#E_nZFb~g^d5x? zb++sq17Qa%WHY}zxqobTEM>}~HGiQxDmi?0aOC2E2sc;Nu@UFPfj8cM_dMVG0zUXl z|BoY|z5B1d_1pg7{|Fg~+e;kzN{QEpnMse&x$t0}YkS%tblVydqmtv`U04b_-7KOz z8og_DrbgNLoeoWfbU0JfFb8t4plCMfvE=sN1R0J9*ufui#w<4)B?`C@N9*@ZkBhRV zHV`;TwZR=is_8{!%oL2jCdL%2EV94T?%{5F-Z-zqR7C@eQ&O}usmU!-maM(cXzIO_ zL3!(vgIEeRtJQ1*oe%_ogeH$;jFZ+!dy2Y7@7N|fTPuD9&3}?Q^Qz4z52UF@Z|q(~ z8q>4Yg}|0h3GiB%RfV$?u~NW!OUoD<_NajHj58Es4Kf&U4!v-p&s?hn#Fi1M5oT3j z+?j2#S^rF0)CC&`#Wi_qHTQYxXSt_Y2yatfpvSZTwQ=o5^dXrQzf5;k*DC{asblAEuXsRQE09c~#Ct3T~7| zIcq&@k*euzvIXuT1rlJWiX|#CG?fcI7AH+3`DQ~@UVa9YfOxX6rlyM?D*pNg8^e#? zn-Z4Z)xIXj(zmiW3%>&X+$_Yl&Q#w)`-SUn>cB_R@}CLWG{}iNctb-D?^y?WVPqzD zzwe0IvcOtteK?l-lNr(VYLHlL1wVLqf2M#M2hNvKV_fDu2Zoo(dyR7nN#+&w7=f^)MQ-I!d?E%P~oYy zR0Nln8kv~flBQtSk}rk;-!_ffg{R|bOpYYj>@Uh@C5x*gxvnv%VVLvd96f~~Ur(Ym z-DLc)3iOezu(~`v8P-mVW^0B{%=1%mJQVnt{Eemk_SuMDYD66uTla7cd!2xUyd1RI z#uH!FF#;y9DdrftN%quBYx_3A7Y+~j9lc_79P=%W3wNuM2EmPqChfUsFt-TII!79O zr%9r}gz`)mO4MI&Pz)>^IpQ+u^+!R6ntGkT)EVB2OLuht4YL@OGbL>kH4g**W@4Xw z56c4@Ju^2KoFX1Tc|(bNun@x&s(ApcQ$w2=rb$~eAXdRV14)I-8zMAp$V}Duj&C`G zB~S1JfJ}q5l_91+@w!@PbDsr*Mi)?@9Rd?IOgVu#%-rGGk)(Y5$j&nND=4m&==*Q&vs^+`WfMe+%l?GOsS3ZR&-5o%E`tjFY|~n~ae2^y%JvV>SZfts=z*-q$Fq(XZ{P6h z)$#S8`m^il3qSvrPyVjI?QeX1_v62C-Wtb#c}@9s;JhKzCJ3CynU)fWwb8F`pZ(fT z{p8Q#TmDe5x|roQ(bh$T^FJVO=dko z6H2FxYNS6khozowYp@%;v18#tMRWUA*G5N{s=>x(pu@(Z5Z&AYn0caW1xLXhA&U}b zHMn|o@@!gSJtbBt@DRMcbD8zH3>dMpZ9-a z5LeM-Eft6srN)KfRp6TzTabZAG69afqy!O1;fNBwDwwiYN=v#sk;*5x)WNxl~>;PGaVKDnjuEKLqV$-E7g;i8Y(529wuH(vpl(VE)u;AEEmpelCm&IImgeizCC zwU0vicOVX6pVlVo+o|a1-zV)=>{m{J+T?sS)oqiuAaFBglKL(J4T3X&#*-qTWg2E7 zuvVg^?W2)v&1GX;bwbxv#d=TQIlUx$O0*`;jAsTG%GL%dzL%OG!D~ z%tk)o3Nwfbj42+ug(GGvr!&-B`_$Q3V=qK-?=p=*jV}eKhGj4WoCx-f)8)>QVEB8p zF%C_9bk^GLF=Ri~g(#_+H~6NzSB-j5Bfbo1EtK~hM*(i=cFg9V5pL^%_DuQjyi&Y* zBLcqMyjuGAKD2EG`0)QnFbSr&Hne?X3GAhwzcvtuSl%tbX$4SshLfUFZWI|#c_*o9 zpbrcKg+3K(W)A>oq1PecBZfjc<|8}MYtPiiCEdsXX#0kUH4LXr4LEw~-?4)MW)C|sXdimOWP6jd-B9;GPck?cUP`J1e=*q6-O6WR4H}L87pethYJXT+Q&HC5hAu zJ4R#Tq&2~g@%s)$lu%nu%!XMHTRP-cqZNz9EQFgF-hs6O*c-hPee&MrfOuqr)frf; zbRT5Q<+GTQ`&ee?^cOl0gQmvhn=YS~)_O?Y$K}R0$D_lWgfo*Xilc#3|6T|@-V z@q5tyy)HbPgD-+4aokChKz+PEE$&6}INsmoUJTOv+3Gac$cT%_t;H{IdoyTcF6Jf8ualB`6>ur(>GNoWJQ207|p#@u(o9Ss5bEud--qoBol zGysXd&c7wi^k3#$&MG(Z11SJn2^t#4g+M|ZAxcwAkgoF1r-+T}UYvNd9yfg-inkYl zL>IGlZE6Ue(?j*ThYR!kQ(j&KY^$~2u~c6HqkP2{7@O`<6jx6mm(EWuzWXJ463kc; z@ZQ&^hiDC~=gw+CwiB^V_5($amRXTF;j)2Kem+_+O0Y&ixOCs|2Kc_mp=FBo_*I3KHyW|fwMBt+qquf&SO-Os=J=OwB>k(=;SEG>)(;KLOt%f`!%|bLVz<8m`@XY4Q@{p=VMB0b;>|H$E^-;NI<(`n zqgB>NN4K!+-mwTRL&JS4nmYQ(S37F2BY{<&y=%wwBOc%WWM{wEU;nfJhjkoJ|HQ}t zhCld+9^ZcVOL=~Phq_@MGEt1;fr-+zmJa$EjU_r9!L9V5a}0MN^CarQa*#rMs`n$B~Tm^FX;>|qrV28|yRF=)578c*sPtq2m*8>t|pLeGt-il(%whm)btlM0Cj z%|E;Yc{P8=pu}L&ux+|D#q(X_K~4~BO}a0@#U?ixeZDoYZG#s;dqz3++~5>8lpvE5 z8;=l}fL$TLJFiKAvkW6Mt`#+!inN}WHTqnixrZ&#ZiYK9I@mqvJi(st{hli6i8m!J z4w|?o;hK6A{d1zwd^`;cxQO)3L;B`~WEd{e^alJhG%0F1wq8Kc6@ZLfPXrOw&sr|8 z1#0#A%am;WESTosYIcjC4^BJ=)V%u8zeC?Smh`%IwzdIZ835Jv{0;jwMX$DOiM%x*wf#z zt1;9ZUTlcFyYF)zYBsJx3%q8oGy zAA8DhNjhW8Xs!y!zk#1|OjZScOdrFdzC?=*Z42`6glPBn+~KMwo@MXf_I-0q^ZSZ+ zPPzOgrl?IysbXF7aT@@Ri@MHK&V*qP74)Ju$Hdodxxr+z3k>vgHSH<1Myh>}a8W@` zBPHegVwZ&g#gx=8yRU5s1~{(^2(>G)2M4^ess-|xdD8nbJVcU(0KM~!0U+`|m+5g* zCFq^T2SJ>`)=)Pt zCPKup7RInl4OuCsn>sx+w?1dMkox?A)-fjlHi_!)eNrEE`DHkLaP1_eE3CQhrqU_4 zgiV1VU@`CBtImVHU{VRn4HRVw(q9LF%}KFWoVw)o>QQzv{O92zN{Gqmy99`xaxI0l z%u6csiC_GbUK=NxJIt==i_oX_Zn<;x+y29d%^J!%6b``hHqeKv0BVQiA-LEkM*0VD z&`q5D??Q0W`A9IAJc<^(JI1Vpg(D*!f~0d0PH6K!`!2L&ZL>CEjps`4RINf5DjerM z^a@OU06$-Z>L|rH)pNsI^1akQ3mdenk?dhO#MBTmF$cqfn0i0~pDV}-CZ-4P4Zy~+ zVFsNI_xN+Oq1wmw7W+WgU_5kY9v0%@A;^HFGXgsF%q;uFE>7PapEI3=HJG{vdZjaG zK@I!urV+Q|OQvf?f^Dl?ShnJ6*cS{YCSCbW;Fo0s1U;Eo&@pi^6nl(YIUbM!L_mS9 zRw}nk>p!UH#`@Ur`(YJz&+zo#m%sU|Kljsr>ESznfA@=btDnAx?276}ba~b7E%w%a zBY>p&vZ-MR)`*B|Y%~qNghxivQ@1*C?mFLiE8hOb@2Ri-?4SF)9^d%nzjM6v#^-QT zK!@qp+@na%UrZv015qS;<3)Y>bN}S|_P0MYUT-$?k=6BOg9o>-CC9Ualp8-e6Q zCN|WOwVKIzLo14VZalOG%9XFYYMQlJ8n;pjdpVi}Dx+!8szx-qI{*V8gUw!xc{UKe!5x()7kipAoHv3D6GQakqQbWe`zRg=GOGC^y4GV$~2V2%&8y z3pXcj$b=A^YQto`r-7LzW!7Y?5%ju~?905xCQv#5r9|W~JndxOcz`B9TL_}Sicq0j z`W$XpIe=#3+Y_*_y{N6`DfPK|ANAZ_fVGoYi~)}g!E9FJziYE7H#81(MsH1dD!Vr$ z?wV9H3#0@zf~(~20x`pGrb1}PAfoT?pJG-|nJ7T0Cn1zkNKY)`$z=;YmewiNINeYA z0~ggfuQTOcsSK8E1gZO#_d|;jlKM;z_ zVtJjDhDXF)_3kT&Hb$^R*>v&$_oQSD56fpnEE*+J`#gmk2{qn6pZwmQ5Aj)c(nzXx zW(zTi-lj0#FYWs_li>8Uk5v7PB9$FA%mOz})mszJ1=EUsWZMOn8gtWUr`ajpWSO5i zH-+xUYG8{!!q>4~>8X)zPMU(nMV>k@s+F%IXQN65aA+-8@%eB(ArmkCMb+8D+6?u% zpyD%TL4)}m-DZjKvn}|X=6Dt?No`!*`VO(MY841-_Ki9-c`{F*nue{dvT##+5(Wyc zXASTS&F7V;!2Cz=xXYlIUYOi~SH+cP?_@9DNnM`WDfVM=^2;p%0y7nQP-At6*tjSoODgoCMtn&ErrVxc2k5R>EWgQR z1~}8_LUDk1fqSyybFazJ)u_dl3tVMKUtoj_O1KHveO%X``)L39hns))G(G0Bkrzng z|CZ5KsdV>sPb=)Pay4#CB8Qyw z2h56;@^i~sy~aeZO*O+@>+5a_5WZ(Bg5g`YY8+mwXT-@A94SHYl&n zoPXyo4%|Vr$`5AYD(2d22r>)TAS%4ELb;&TA9!0(3T)sop^%xA53F_Y8db+AgG-!W zol`?Pu2Fg?(_Qst0m@!dU%>TjWs%{a!y9ni5-^mZc(8TH1|4Hf^@-p2!!i;}eD(kL zqd&5~<@bDazxfXE!B=uck7mIbIcOQ*GXGMHVYS4Zml53@&1HHJ+{rl!RNEEM)vsRW z`TWg#c=oa5gP;13{_c-_`ZxWb!XHd}~9S3N(!^eca)KK9*@ zu|H6?Bv>sXwKsN$r1hOkLa|sffFrz+8Bs-(J(%#iJCh=LYrH9yuZUg-OS_{oi`W9t z%^md|i&OdEVhyvLW%CmPS39+CAvSye3RI>S)a&^zA`wv$CoP;}aV6RA$cQ-3U4`u9 zv5vPs+4Z$weR%qb|2JN}|M~y>yMNu^@q5-sKKenudLOaR(aPLYK3AWUri{$4yJBO| z&1g|6;ph}x@0B1P~-CCt>^ceMm>xCFYFekdIjYDOI_uYG%&E8;7Z3a+}W{n#umO|`{5*Gxx0!&WX zJ0J&NVD_{s!OtG`DD8(f+8v@~$`j&(%VrO$0);gBEvl!OIIVNpe%gDU{OBA-4YZ+B z>qWRBqM@P!y2iyWipcy^T);I=Uabj=HUzXgUKL4MqA=Pds${dJ7Zm#a)~XqZL<;OE z8>3;K$A>1E9jLgt{N1hpPHi!-Qz2_jJaE(=BQQ7Q_X#(8K#N_z%Qbh=#rNE$!L2pT z&pV1`Tolg>Od~+#=0df(jFmJcUoqi|F}9|eN;Q^Zm+`;PrU(~NEV%4gpD8`Bm`gM3 zz0)MRakK6|+a^?WBA#23=ACQ6R@Z)G7qe5MsXFk!?bQGd(Yi}|5+V+l+$LJ*UAL~N z?W{Q;Y*^B;?cLS~8_05froCQV{7QZxVB9PaPmbpt#R*8Vv*-R9#M8ev|D}drY*v+j zCSCO%)BJaMmttEopgWWhqeNF6W`quz9fBr;XNgt!taKRCHX#MG0K`|$6pfxAU4ZeV01;3F( z)RpTmosJ839i zzz9$>=J(QljcSS%u;F-K zfz#|c13=0JWF_^0nFLAwn;4&2|EXTRW3wPI&(n1aqGa6UzJ;nqme?QiUF}SYS#j`0O+b$ozabbMp8=I-QjI!(dGpx z>tuJ(wY;=iP&AV>GKvj(NHyvFET_ewgXr!o^wAy3>Ul@U?$FGo)LQGX6ki%=lUlXh zkwLGHu5L6A)XL8GztYqvWZh!zJdTGK=keCN>-N|FlYIG?{`Ie{Pk!fjy!$);(EqGr zp#Np)D|fG|GE16*lpMBIt*HSU-$1l?>T4YocZvK$C-}Z#7^S4CV_n5CL|>- z-x36BkRU?hLxKntp$Li)l`16uKuG*Sg@lMeL8ui%rBc;EQKb^8QWKJj#z|Wn$4+Xw zb{v0?rokIq&=XJSL1CwMVj+^XwFXo_6~306015p^%GMhUe^ zp~)U@O`955vxwND0C_7$X|m0jwpGxThL1O6No`HGdUU1Fh_vn^!EERb!|1Z~aRO`H zgmsX$P}r07Q<4kr&{n`~sBuwPR?$LV4W`yaiOF&cK-klypr2^7jajpTE}*s;1viss zY!o)1iC7hgeRQ46ba0V?wIzTB^UdFq{452~M@9gEU4XZ~L*_Y;t)+jS?)!{SBAepR z^wYu;$b%#xhUUMgWQ6xFW%MK1g|s>~;ut1K0r#yUaHBUTzyx1zfg+YBY@J~>&?=%M zdywmvoF|&A&W!NPj8%Y}??QO`tYVQ(xTmD0n8o#J`lcR4GkUlnsRrU!a^`;I*qiYq z&rWDWaW6AAI&aZLYt~S)08l`$zxU?5;<+mo4&^RY6Q&0cz(en`B#+1``ia1^;k$L$ zjS|t}fQ2CVIo<3e9qb81d*$dJDVfL{Gy~O&y#=l}LmR9uF<#u;2;GlTL2ckVZh!iSb{ z6g&5Tzuct4)lW9ovlmcwBG*Q*Qj@P@eK&fU3B$8jDpnnXEk{|Y{8UX(m~O6wOBctA zALZ=?J-{BN5oR<&#$GP-^{#aG!|bZlvI@T|ZlTDMu>FChI9vkNJW20*9A|s%Vc8IP z>uJgZj=Q{P+xZ*NYEMOyFu-=p7_QX(ORI0%ae!v9&NnjO1n!$`!+?;boOa1PyPN-j-PLt6-@VO0Ks7!u7Go!j{!P}gCd zrt05RZZPYuVLvbB1T|`uV?V$*v)D|B>#7^MYnW4^`qqsjN`EeSZyaHB7(E0qJrrds z(7T8HZ|5i<*Gb;Jg8ea}RU*df>eAQ=+X5LnejquXq`{WDx zDzNT-kR8!ApeY0Zd7~2qXxj9*Wd>e)ms?=KVG!N|4z&4bBr^Q&D_#FHchLb=05Fp4 z3e%tw#V)!9vXB*-`a7Xqxjz4={v6`vJ$&t_|LwnVeff_@?Otc3Wr2_A z8`btm6}xU|4T&Y}RC{L{5my+RhR|T_Ku2=~6*So2kt@;pD)P7g?w8*A{Fndv_4-q9 z(YLku;5xgUMrGE87**FAUZlji|!<3>*|iktR_I*O!aszy9#EANS)s@!h}qf4CkWeeM79`9JuRfAZDme(1ON zg)qhR_n!Kyf_G0x^Fq{$DWD*rY?~Q?3+cubf{kS_jg9>@t1Z8oDvE z6A~bBC^W^I_Zc;svIR|$kh2ag)f6~s`)a}yDkG)3sk5>Pm_~SfI{Q{YgwTH%biqBX zMZ7$9XL6jLt*=v9XeS(N7da6+le!p+{>hLndien`L_LuKza=)(Y$8xdQCl?y2_wj& zdNv!p(v)pYbIhv24$P$a3oK|?>ZT!kT4ZL9rrZKnb4;Pef7+uL*L+jjGG8h_K>P(a z>t))tctuZ>GwXGyAohe+fnZE62QuiPpL(K{Dp;NgsC?`Oc}{UPhMg{=X98#m4X4sH zt(JQ;tb>&%+SF+5nIg~hM2@-ThSRadDHZ}kG+ha;E7iXkN~jCrTgBk4$eec{qTad* zH{CLyz%T7tk9sPGRmm6cA0;-L%&bCeU}YUDa??A(G+3{CY=L)`_UkCIzeqXd!Wk9r z^PGC7PeW%_LF6KBj53F9$YvyT_QQE&z#}CL@+c?%?sfn}J;NZP04zRH!H(<2=qW;V^pm8e*MTgFVnKg|l zu50Y2XG^%sn_}O|u#X_i=3pQQ>^j%_dhVGBT)&RgIAVIOBp!2ckTsp6}mQI^L zJ!juFTzGY|*%7`!erL-6PpncJsZw?8jV-M61n`Up3&9N@k{m|(p_&WG(EYYKcem^Q z*-L)TabVbz?pOR-)A4olpLtF3`TD=Z!^w5;Fg)B;pJ7Mftd=&TV%W^8?MC7|fHZSu zDfXUtMWA$m(_r2RY~^+V6Hh=FBDjvVIgBH4tM{@fF!zwgU$XpHTxe z+jXRgKMfh}?bHjNdVns8fhbV;l$yh8H z5avlVIwGPv(79OFt?3mrLU38;tA6+K@w)GC{K`9@`N~h#{Xj%wS54y;TKB*OBsgm) zI^Mg#_N)Js`26pEsrxPa>EjxONRj4-aB!5G0uuC?1#}cBB`9=fbW}uSc1Hy&6`#j+ zY&+50(?ms3KebI9US@i6fYe{@+}}==U7cFM5)nyG3Kux{PHr1ltBC9!dvB~yeQCdw zkNWuU|C{l>pa0jt_3l^x_#c1&_x>0DQU|c_Z*x+NWOIfZny`z?G5#4!CWBY{!?hZ_ zhLUi3FePM80V_cBli;3EnX~d;)uCZAB<+zEz=bcCv{RwWj-er2^BVhT6Mfs;!w8#$ zOdod;Xlvo@uFhZ@vo0{7iaqxfAy8!Qr;TJ>&_fgQCsaPrGD>43eWtRlCRqv}OEK~6&JTN2b4&-W88G~7hE zK#3<>C8infDPHY~ptme`1Uy0Tb1$t5)0v(S7_Gu430nBfsc15WaS{%!RS@8EG;A<~ z1J;PCIhXF*pcm1&K<}*vWnPf_LOo{{sOd&ZO(c^gX5|ixK|QVXXKMFYyy6<0c#pgj z2JFmkEu+{UsYyil66i)(vkR`drc2jdTmt}7%3{Ev1^VcBcb~=$HFP1`sd>zj1Vg?Q6u-xGjsY0UVnqjDB2G zk7d9}>jhC-5q2aD^jlF@-zr?px)E44?@3V(pd4*<@#RloaB};PD;Xhn6@ z^sChnU!cJ$r_~ofd*R7|j*r#rS3T@#{T#EmTruz;1afKZmE=?hpoLbr0a+JIB37 zU@T4vXyZ;5m}cjU>=+?ud>k&Y+5nqkLV2D!&kd^YkYdaQ8PuKc@0u@S&ETTTn+~|@ zc8&g6&sk>6sh#j_y7?T)@`cQ%ouxZADWqW+@6(^>J zz#tUC=8WLbOI=jg z1VeRJF0N-;j-zll!fIbYY!B5&YPb-G8cjAu9>5x{Rcxkj%kVYNpe2T8?rAyZxo@Ap za!fc=d&kcwp0skc^$FT_;i3fz!C~=e1YXPB?CK|5&M3+ z_BQz2T3K!LRh{``OIu=tZjUL(JE4Ps&Q?R2?K+OnSs7QcqP6bWELX>6fpJsbZT&fW zQUKCzHZCvyPbI8lf=DXMB(HslEfo=#eGIxDmjE zp)1aM>sCIP&*-wpbog%c6^vn8>!`i)$D>6c%=+9v_2==OuYUC}WWN7T)Q4Y0-sG5* zq9TY~ABiTy1O|Zv&=gn8Y`WNuI-~GDlEwg;}Vu8cY?2#o0xJs9S;EH>y z5R&$TKm@&(R)(4gvI6+kB2<7fp4tacGDX3Bl)41EBQ7=sXLjMecmxzEquH?Z7wnJP zg=_^fvi6kntGjO5R=x9?f28;Kem%eSQ-A5@{^+}Z<-ZFc#$e8Fdc78poW^=VlBuDad}BctMhZt)vzynlmPFpGIF4^=uHabqVdpnLlI9 z*ji0joaV;s(lL}H718McE1)2@7G3a}&F`_H-}7@xa1~J;xq-D_YQH8;QKyT4` zqYc;Ti5!!h4DGm9K$zzehmL5iWX*a%PU=Q4sNrNj6{b!yqt!F5X~iJf2bFE<&qZfX zQ_S;BB<#ekL+2th`ye%w#)f*z-#n|@=Pm2+tC(vy(IXlZa|3Ep!t4L^RtA+e#Ziex z&4;!*iV1U)qyZT=x;35`Tg8D1BnNhK0nh2TkKHk;nVJ=!(3$Hyks-^^pI$9=1s&F> zAa+BB3EirGq=|I%8Zr-~WWneVCmMZLONI;Kvjf}PA?E#U>!fwnG~qrzJ(|3MMe{-m zNb|IUT0v{rIQ;@5H?MieoIMtkDHcF8r;JXs^;~&}N<|i`u@-mdb_#qmGsnh3F6a#K z;H>)$xwFUIvw*h~ut##t)t^zpEC(FY5>4q9vgG&0sdi~?Sz)b~>1a&MhRQ50Th}w_ zCp7vdizLiEflT@M9)WwBcizoB4T!XXUUvw6Cw>{7fz^1P+Jp?-gZCh&fy&+F4##oz&A9TIa7ErCFsGxBUq zd-8_BUoo-5a*#=Kmo`?&56lp%dZPSCXvI{Y)y!c4 zbt7}Znshk#I(}FZ0yYtNx^vUu`}cmL;WXf}pU$-^YyS?dw&Y%HQjQ6J;;h_s9b#I) zyl5g)hF@Zm1sFqDO#Ze&$vz4*y#*W5*;x^oO*obqwu^r?sPtqZ`={jKKR!Ipw~G0k zV!H{{XVLFpPOMQAm*-ikSu`86%e3r}39YHfIz?(~p?I5dCbJ#!$yLSGBjqbGN2cit zsQ&N6YzePIo3A$jB*I{%fhGT!Iuc>S8cML`ydoJ|-0rYqe5FVYx9E;h7(G`K4qeEGroxI@xi^#Xp@I!nykCB~P%uR^7j`j&iR>mW}q7br~1y?Y~m*Jy8( z^1#*M@4P!GZ+Yb_zw?ZS;X#&H>t>%E=-4rv!yH#)BfZ@OK<2`=dg0@*fAybu|J|=V z9y?ZFxT7}D%Z`i{un$M})>5KzI2f)g&%(_ec`gXu6?z;7WV8e(-8Z@~2Fx3cYhSNl z$NuPh|48qTULn_8w_MhkkjlU{3!d(F+z7lP8Dz@{U{L{C(avpXjs}(ylhkM0absbH zQGZT3ifi6CF#;Oq=Qvb`4v`7qp?wyl3vl%wv4jdQQbCZ!zpJ$GbF-AnO4$te;+i4; z_^yap$inKlb><>>bZorD%gfc*J1^IFe(|rw+h6(r{>J-X`BOjf{y+M=|Nh%I8&`cB z9UD~_4|t^F+}S7|_bIk_-AXp1O)UU7ySUo%G%=*U&3mjviE@mYMBi&saDwpiCnl{C zY#2)ctPJ3Ihq{{F-5aY|A>BfCt4>o=a4`2uJ5jFNrW$JQcA>AFBD7o2qxKY#tzrgh zDsn5yCJ@%Ir%m2Ae|~{`!TTV=h~W0O%QRYt+%1>(*4|ych1`?$*HbV~wAOF-B+Sgx z6hYM2J+TNj*eTH*12xX-tx3AOid8Ht~L3K;dYEJ>8RZmye5_O_F^i*A=e`W}5`7uobjKvVmVuA%)=ZXkLs zw35%SH<|yo8~-{*_|Xa)0YA^Bu(>+3v<4gWw%F{bFb0!Q0^Lv3fK2SINt7C1hVq`o zRQ`J+KP)v-*gX_UBq`uX0C!W5Tnn)Z+tV~H5VoE@MCtRsd+U%{g51bWW1KO%+G+|s zUeXI*0=IgrfDWK%tr4X-28zaqLBN{;bJD3d0m*$g!8T97s-*?zgkx{9$&<-FK^iT| zpjyRf*$5I@YN#QJ(&V>1nFa0A4n>+?@Hb*Lfwh>E$Xu`=(z@nVNjK4IaSctKFvKF znwv1Sz6bN*(iF|C6UO~5Ne+P?HfCdn)p{FvHn=dx{+%!zM9H= ztI6$T-D6z*sUb*tYV_u&lwy4jZUsr^)@q&)>b|CWt}=Ca!N$HbvM&I*1vW24-H2R@ z^#<-v-AE^H{`^W&?&~3Wi*}Thq+pBjpWlQJJ(`AaoJjJVI^KmmpgNMc;8F~$f+2lQ zQ@KgT8%Kz*h-ZH07JPoL!@^k49+0l}52H%M5-OWB?z0WH2pCrcu7)-=nM;5t1h0W$ z{#?mgbr*2Od5&DCcx(DxGZ5O;FC&r$%?UFdRI7+l$@R|6t28A{hIVKjo@irc;5C*8 zO8jRmr+PquPcV;Qy1Zgn(bzT=E89gw89Z^#Y__!|kn&T4K$~5u``$C0NmY*?=y`Zj z2;d=8+TF7O#s#YZbFa^&bYk;8sTq%L7O|KEca2dg^KTtlW}M&c4F^@09;^X>#~gPC zNp-Vgq8z1o_Au5W?F|j(Tx{~^mma*rm;*@_!m!A#XQsoZdW%{dFE&9w8 zXIfLMs_slZc29$e*e1F=x~meAu@%g=!cP?CDtTAzh|CD?885^lPo<;rsz1K3{R-FT zK8*g}Z`~jLyZ_?5FR$MDmp}Mp|E2#ru1_QC+j!@SIVh2DnOI;a)|x5JN(Z}*G51lE z)RhotSG!x4AR~Ym>F?Y0+a+ojFG^suTdAd0P&&|}lMZ&5c2rNHW^pKA?Z$%?l}o{7 zW@A}1y`hX=sBkoD6K$naIYpbfYl5_$0oKyR?`B!nnvN@ZX1G`lMBeD;Vm>!?tpJ$f z0yi+O%6s?NVtCb*sum%6TEozsATMbVIam{jkZL|kjXP3PM^UDXvX9o51xNJaq{!22 z$qMdOntrqqJOjKeCHC*fqD?fH^uEJ?b3xFb%zf!x)UA!t` zN#lK}no{INaX)zN0T!TS>-$gY7Jxb{K8IBrKy=Ltt9Al+o)*Z|W$JdJFRq)TJf(rF zXMzmLiVkYfM+d0}#OSOiFwp0-F4jI5@Z_AA0OIm8A!JX1oMk;H6aAsFEB<95H#K-I zLyZ=tyTa5m6?cQ?TPrEJ!iG=*HGYL{C+zS(X*B>^J(ij*@We1y(A;fHlCxOtC_#<8 zbKJfVx(fTa<7(e_1hg7UOaLW!M4suErlDMDQ8OLnrS!zRrpoDJkxFAC(y81;PfYWq zbt#F*0SWUdW`(5#DiXR>8pxP41ws^36uujylV-|1)7IG|AF~q9-?gK;+ZiPTKQS#@ zz}BRp>i`s~ETLM!W=KZ*(p)xrEcCrsc@fsX4XwqVB;ohM)?U#fJgJ*wT)Z_5PxFhN-XN$Gu4=io#%Q}&1Gir zT`P~4biyT>q^ZE;`6A793HZttY*6H5(vrLc61xf9`HY(t3Rd|?gC>XOZzw&bHz!TZx54o!_vk{web*?kP9 z-GngIB)Zm9Ll4{_uxEb_cCljYq30ZQ1uQ=tnM9i94b?6L1X8b4>Si)G+8O%P+m@t` zgZ&JyHI05^&82{d=EQ>k*#kNO77J87OYK6>uSf!0fK1@%selDG`peQk{rmuGH{ylE zPA|ZnHM;^xmd+1zX3W|0d(UM6-{5Lboil4HB~g#nfDDs06xQPxfZwjYBw=^0K9V5k z5FlQJK!vU3Tm70DntHWie=NT9*ubT|vhO2TmX?xsW3B2e(rvppH?;~le?;^PsJ1QgAX^*4iHxD$$dQG12BLY`P(d2f5!OqHcW#pswe!aSJZwE)4?C3&w4;4;K z+r5D+qa!+syEEC11y=X&mHZFY!I?%f;M_Eg44^tX8aon~D&uZ+ayrQwzujNE=yAj% zoz^RD@;m>xNm_{L-aN_T1?)h1pyF**E@cvl2LjhdL^o>1is+p{cE0<$etCJR@BPx> zc=_Hh{k3nt|6_mp_rLqOAN-ZQAHeA$4%+?tp} z2#A`UCUR=GeVY<(9Yi`-mUuOC=#1101>xplm#ze3{51xE7-}Xc1}^7+aZvJN=U10ciWQQG?WagGv*)X;HAfg3eb&elQ$SK@($i_y;!dko~JAu44QM86tCV-?Cv+3sc z4)5yr=hDwEmC!<)J5NJhz0~Yl;|tN_m?-w<3d{ zTa>QsHPabkfS7TEwqtC7?&qLfV=v`gxvOr-EKOjL2XXg2QzZyB1Bt-y(l&w6zxUcb z1Eek(`JY#A+?9vw7pn56U!tj27h*So5F~IPw!^S)l zuxY@a&N(K8>r6{xc8ZeCCS|6NZ5iQKOnJKh)_Vbd$QnI**6leiN=!EDx)~3F8_OUmQn4{L-C2BRqJ#TZPQhm2SWU*TDprB( zn_Rzhol{4U$)SwQLjP7FPO$P!)672FFn@W5k=hm6Al=^+TBa&w6R&Buvc?BiojA~%O-83dx_0eGhxhOOi6;`=8OX;)hP0FXr2#G z2%|RoVh*JL3-54o;XM1&xLwu**eKN^;arez(wVz_!uO_`;uhdw9WwnuF2&Q03N@@A zYN}IWgSS6%Uk(FIjEvY`HuVJ963p4VEmPIA!>NfXHT`yD_DokMNK+NarJ4XW_n4Y; z9y^PfOI}VXxzaRsxKMa2pCMrFn-Z)PyHR`M?ZDq~y|D0r9ME%#l>{`j9@=z&kOjF) z`C}NIs)sg%Nbgcl*8~M~u};)Q{`L(SPd<^Yd;sRJTYEEiVD}eQeC+^+MNu z$q+^c;Q!$ywNf&g4uLB^gZ8t)FyuVpRS8YgMZwej12-i@ny8r76jVwBcfd>2@6)oXR)m2IfeSBdsQX(iLNjN!!6#6wzJtR~=Kz0yE_RbF zZ4V!2C~auIHJGkb`;>f)DuIjV zZh?{={ub6^soH0EBOgs>UN6Dif!cvrm$r-qaCKK?=1X)UBUU%6mK|zB14W;hOmw|) z5|gcSvjWxBEX-m~t#c0X<~3YIW+{^gvV`13RCia^!aKEIUUl4$_X9MValzGSTuW$a z0=TV{R8Qr0y@0&3cki9hNCeTN$?HzzdM@A$b8+gg-F+{O|o~wNSMZ7{bYB$9T1IFz~_Vw=lvT{Yey}t1` z|Aj`r`R70T$A0pE*4Mk}`wgNWlPs5XHFeQR{DPK5?LF@G;`Hi6okC!V@(4At=_!#D zd73BfRa7>1leV{6tjB$*cGz3FYL7OE*UzhF?2cM&(52@y3*cy#*)ZKo&My9~>1s4^ zt8r;go|clw==^U_FcfG383XOp*o1rvo{sTk6xf=AnR@PtaD&LW!0*c~t=D zvwz)5vpqDHA&@*Fyn-e>R76OVo1&v>3X8p%ti3El6R}v*@!m1c#ZFq*rS*uWH2JY# zTo*1pnY^{9fimCGyDc{k^9~w!CN51Ih#6@W&Gs1sq8`9?@$;37WP%i_^+fs9=rwwn z68WTG>>|)om)Ql(8Z~DqCXvNmoZ6^%tuEx^w37vT9rF)wx@f8}S+seA9jIa}?*@My zXcdvs$FMB0u(d59^v^o_#Esd#sA7Lh$GKwU3}tW-E|N%RElqu`L+jX@=sF*MmnR>pjOixxR8$qSw>3rc;McyPF1t@I)t0W73QM z3-H9$WuH+Dd80@}M>?T}Fg4R*$DkI4*#W=` zRPpTTgNk^vN-&-yp*vf>v2n3*i)O=lZ|poPYduBq@`&mjan?Cv)7y#bWdDe zEyEg33Ox~K7`OjKOmoh)sFJdvi4+%?xR3=z(_DKz=*E-$8I0qxYUB))6ZiHU3Erd- z>J(aXIUC!x3k0#Z%oyiEp}GTmJo-B|O#cOzel8dZa`kyx$OqMHCL z*(aK^7Tu%nH63 zhMl+7WrDWUdo*!uIwW(9Z3ATf%(P4o@<5s9ABRa)W(UyEqR|8bU0(=*tH6^kzmOH! z;aDG(@u)@v9s){l4I~)5*VY-RCl;dV=?vil+LiOA>t|iTbGN{|yx@s#Porz;5*Z5@ zwg5?oT>^v#K$(MbNp=++-Vo?3Z2{o-+uL;)G+}PszK_wc#v(&2Qnx`T0UYgZP&ETK zeFC%xl4hZZVcVTzi5@8oJOC0+yJlLuBx$Wfix0{_Qnfp~TN^5alyTPpzyRN@>2CN3 zg@7Zk1Ju=%r_dAoBm;Th=(t#CX!;Cjo0`58w{A%`?7X4j#p>3bDNh@4HYn*XD5sOP z#5yy@EW~Yj2D{MPY=veFjqRFNxx#s>2neA$lw1Wyl;HbG#rRBMW3ztP>_4E--RWA( zeUbigOTvUrQV(`_EV?y6<-Z6}y_?t}O&>CLO+%i5nGF z7eh?O+Eu+0rNG(2rFWcJWcTih?3CM1v~7@UFu2U*lG7qI1))b-KfS)xiHvS5&YHK(6YWCguc5P%!JHxS}&o8_;8|mg=yT}8g%fz5u5{XKO z#fIOS7EV5j)BmZ@TkAChkc0}yA_eL;0I)R$nBA#LNE!m#?RPu`lrRQZMx!kw2taOx zqHiz0r*$-I+_0deR17959T(R}ss%1J$qt_504HOq=Cf=+AA=03#$13}3(Ak=dG$)a zG#Inl5L5psx-s@lz?|fV8m-L=Q;_a6*}`)I9vzq%N|r4}>%1wBLg0^9nDPC&k?Wz{ zW!kJ#8m*b8sesmMNB2Hz&9Fuhwdut` zd$o-4-toE$vsIWhcC?IP3?ORCX`c?%toG?K7`g>)T=43-j7xqVLg_mR0%%A1PCnyE z0b1-_X`@{%2ypO5g-_C5Z_#x_R9pdc1+J(pPVY-ierY4hy>G}-jx^X}`=44VSm6n? zSKEnY5QZ%!OHlkkHa!4(VXd2CI7rKei;I-6O#-*{uq`?(<-%f6@xLloNn0PLA&bk> zo1sCp)xN>^UIB=XZc&8klEXS{X&E=C$!$Q$G}rYOcU<%%xo?HOjSE^-6=reh@2PC) zWC7V?;;^7%qZrcf2Y^~E#Ira@$uvL>F+S+|LU~R-KjnH+(ZPQ9hU z2=829B`Jp*3hVb}fJvxGLf>GNfyt#siv%J~3k2cY*#=y8FCG;oL3*L39vsS7XcaME^WBWC#L; zq;G3ACqU3uHO|2^qyg7px->+HVBM8t>_b^sJ;_{bT9%S8LViVTocAy!4N`k5%{-!* zjoDPjSnfEk__@M#@W~#GDC!?l^bWH`3K!cN)dxk6Fgli`Qj#gDp$jt&A_XKfA31lj zu5-PcsGvg+R0l4t7fXbu4A<19=ola)EiH@?K%E0jw46m#^Z`mrZvAIJGq4W#3dxq7 zrNt_gvuJKJK5t~OMx+O-r|urY2;hTPKe`}^L(cHOYkOneJfpwUn6DZe3s-MROK&|7 zfvmfjf5b91t={UbzNw2(SSG6GHC2hYrQrHYvU`> zJ@{Nmt`WsNG>n@KGVkQ1-y{Dm%~@o+rxRSNPt9!PHi1F;w4r3h{bv7;wlob{ew zA=x)$tlMM7k=d>!-?^*1V^#9xRaW(lj7aRR<}BK?UFDMqM6c-Xiq%=2y%N2;qoPW# z`Q1pG`HM@jDB`B(R#jWEm5e}D1XkoO)Q;$nVeP4s+a16wI)mUUI+T+-0$h!z`wvUl z>_S&?v&znK-iYp9=*(f@gkqUzT>|H#qe4RbKzBuM2CV`*BDgt^(-NKx&wHtLMq09xQoj(xK)IqTcptAj^8klC!7+Z>ad#D7y|b2U2l zG-d`mqPNz;5QXZdeteI>=^%ThRc}NY?YPTkW+^a-kmih3a+2npKc~{VKxShO6k?k2jN`^X%%j#b z@PtggFbncNe_l-uL3fq7atWs~ZvxN%9rFTs`K{foEgib16`-cc2)~_q+lkVJIfSrk zf=A%Sr<#d_=8#FFn_l`ptmZb723j&CBUQL($ls9WP@i!?Mbl5kiYSo-mJ_v*|Dj0f zJfR1TU?Hl8=Lq{%aH>ct%KYn6OL7L$mVjD>oL&}wtQcdzYF87c$xrsk| zU6a6Ieg+I<(H;jJ5)*I`4+N+i5g}b=kIp>I9PmVa95p4m(Yc)|U}L6wDbI^glMo5q z)rPV-!6=zO>5heY+$pVcH697PK+n%WY*=cd22}J?f+?)fdx`R8s)p7gwa#Y8S>w5O z;07m2!kCSuu|`^&J_=x~IQy_?m81Z-+m!(ExtK3g4 zf=GC`52q}Qe`3kbwAid9QZ!XGD5l*DxQhF;OU79@yt2%`5Cq`1Ks*9+@(F-fM0ps} zsJIDS=--8E-ra?;rI+Hy6!;Ajc=_jM%Y_%z(hc3(q@CKXr_+Us#4O84_*J;@$%qA0N#GS`6k zOrI#jhCBub#9U z8BJ=Nv0;p;V$;+xZ#5S{c@64#2WcAZ!GRcNu}cgc@N=js>3bpb23oSCNL?zaUl_T2s?6e>lsUXBaJh?su=yMn%_MSm60g~ypg?eLg2X@+HL?B|!*XKrpHUl68 z9P$2@n?HfqUQ?L5@Al0B>t6prZHsWNN!G?``OX@;hFC_?YTi_PmVT!sCi4iiBVN2Q zem|M@&GVePOYfxJXeviIUbuOd=Sfx&nQ9GBqG5AV`pC#9!F)_LR>tll&hP8{R_^0D zUXrUGO8Jv_00Ommr>o>XqB7=4>vSH+v_rvj-;|ly6fO)J9q@oMJJvGW%s}~Aq3QKO z-#iY?3eGvM`&E-Io)d$lklzfAxe0m$eiy9MQENbCgR@@$+gKcaNRraCVmH`xEDe;@ zlrzO1pb7pS>Luv!#QNOzF7Qx2urydP&~j>(hyd*yZf!Stigs<2)2GI{k`jaG!B)ut zbmUwOn{i~9Hg#ZzYFlv(QL}A~YIz&-={~PpcYeV$`Ov%TC5EFIJWIK9u%RYnl%HMi zimar4-5LC3*%@6K5vYs|kEuy56bGvj&2l=~IP!_?t_oZ12(jw|4e$$rs$L;e=+L~0 zX=nvC7>jU&+>5qv{*Gs)*cGbfYUta?kFlpo3mSv9Ih5y5O`l z5?#^V+!97ka#$RN)3hSmWgXiSQ9CPgvuTRjBIZ+)Srw7J8@17Qc2|w2p(~<-MMqUf z??fT$&fXQ*r@!>}<(*gi@gM$M`Msb2SAOliFZ}RV-v0xC`k$-y8u<7dbm?velDi%g zn7VW^I)J(btt)V$*qA%J)z(hT)|3Xg!>+_lI?zmVw=S@CG1>zgQ^ro?K&sQ?o_O!_ zZX)@2H2U_;-_&rS*xMTQrwAX7#siJU)dn`0NXtbt9%}wiVYn_8gVt5ZB(IGBNDFFR zv#UN*stzp;0-NR%!_BFhA_W)(v=h6Ba_Zr>b$w3Sig%@u*wZ1fC?)%Nnz9(^GDkwwafW&5? zN72tntN0J<_@@9wj!rubusk(zNd0Fy>bJftbQW3wS>;WA+hrZ%6FVs& zS|N*%!VPQ!O?u5VRqK)mFOxkLC5^Rmw8dr~^_ZoR_{B%P1w;fgZhpTlqIN;(gQf!l z*2Zw{-iHX?x5htP-L|JZOw82}K)8RzmUltVW`tgQ8Vp82t^kX=F%H`g%oGaAiFPZd zV#mBoJNvRtuTxyaMoEv#SfS<+Tg4FrXl!Y@v5~k5h_;&n2!z9cxf?e@g?r0?gGFMf z%ib=$8V8V*EGuMQ*rRXM1m1ZJ2K-9WB*kEDpCIMBNK=-vCv<+dVuIg2r@o5a0~Svy%Fnm<`p5YS}6b9^u$ zgi-f**O|A+#9HPFHZ(O}B`t6+nl$L`4Js{H>XO-9@=R@kn5}7<&u6PXKsq*S>%bAG z;cmN&E1#$UEinKL{HET2fs(D9=WjrtOp}&xLZi5j&iM_VhpVCNLgS{#N82;w$!JY0 z<;Z;Sbf4#>Z~uAzvrd}>mnPh&EadsU2?%f2g$ByAZtTAKU3a6(?+frcuv`D0{yT1l zZN|&9-9GFlFQ==n%_(7eyOE_woaVBoVS{<0_58eXpw&Q^jN{scg#c;i;8N9F0-Ag7 zo+sA^!2KM#-BwMk-l`?KtTp0k7*xZ)D?OVMh>~LOG)m7$%{n{?*pm7bEaP+#Y7}zq zsVUjGZ~eVN5Lid9Ew&Vn>P-U#vakzY(Pw$W7)#p$UNVC)i!lYVd+SxxT)E|EOSVvB zr(*`@f zylS4>uvQ%DE2j5gKJ@wUUryBvntvtGA(Ov$7rbY%<)gpTtht_Q&ywbF6R*3I+otG+ zQvK8Z3~D^03%3SmCQ_#aok)+8aaaRD z1|)$|V7d_T!b=eeU`5dLH452u6-aBRo85T?D>MyrRs_kxm!x)R?m%OzSU~SM8=1Pf zNRNSmIAaU8Ds*MWu6kLXoXMS*6SFb+*g?jwMzndTb2Y-3p`R>2)>3{4$_upBs-$Q-x+gR%j;_^BVY7;NHdl$AS zc!1r|5nfSbr2ocXNXZE>+Eb{;HF_;htx=o0`0y_A?benibk1%%uz?ayQ-!EK$uSBEquNBN9F7wck%9rZBvsHGEQ?AHP7&L6k7laD3ECvtc!R-Xn=XGdZS`V8b1%!~cRj~F^xQc3(Ta$|( zb_q8kD0%Li`?PHW6>QI=6N#HBa;BynDx!x1tHMbQ^o&*H+2BO6;QEC3xgvlEH(!K{ zHBAP9){&IX^O;bqvo+>PODY0Q-NdERID8{xp_(r0W`}SRr&`pjH)qNjI=eJqYc)H) zto?J7&gqq@%C&?}izVZAaH$v3y+m175$Y*^G`eY$X8kgYNU;S}IJgK1*n@&!V%(&q z8`(JWAX2TV&jqMwZ8`SmqGq@WWDAIHO?b;>9f1hk=bf$)z1~a6I{9RZO{VRJt|MxS zkHrse;IxF353MA=LecnjjmpO426~ zgB0_iil7~VZ?dmUCly8f`J8h)Ejp*qhribi>TThFZ(vmN8c|5wn*F-ZDkH>`;i_Vk z_0=-v;nYjNQif18;?-HXw&&Qfo zuZTYx@1kk`1;<)G!xRWPGA1={v06-tnyDn&jjb&!IHrNMS)Zq5NR=ba3}nkx3>=N69=nxIMG88r|G=XANbGX3)FIW1)PO zTmpU`Epp~PsP2ed(v8z-tD>VTYN$sU5x%P%h^!rA9WvltLb3`WLjtXl(#VKwVERHt zdH;1Xi;7_qTs?#+Y@YIn? zWwrzh+VGl=tp(q#7c>G`nW(F;*Y8%o|GK{Y^Z(D)zxj7Rdi9k*@+Uv|(vSQ*d%p$V zejDW#ezhj4AObr!q7o}plNZ}{crqcqhu5<}y6Y{fyJ)Ad_FM_2g8^{gTJ>R9;Bxad zEu@mJChyy{y{Dw9|7UkzPdkjakXmZem<@@9L?;8z7WFGkPj{?Vv%@tbJ?_*{(H5Hy z44!WC{DiLs84#7EB9@*(+lZ~?ZcTKVx~SXTEoqFQ=jQ|>J$Ks|L(PWJ4W8rPz@5hj zU||sAmIQ`z*(hgB0klK3pgYh@4YwdGZ=1_0Otz9U&&%b4uT5Q6A@@6`bfllh(9x%8 z9}fUFX0t9%1tsDVRS`suWm;FeL|;E9WdZQ!$moxMKd`l8&7X}6AkK3LQ^;(hrDV)= zyRkb71bWuQAjKkDs5UnzVD@a68t;|h?+-Rer9j?V3rNTBn5m<3+cY-j>zVn$;~4^r zWP#O%yakTHfPkKDuH$B_@wgj(z)Th0p)ToEIV}v+{i;Nh!|Z9V-ZD{&nbx~m;#5LS zD*#(Sq`$0N^VtYBq&3ZHONSqupiCGl-EQbv;4+%iOMn#Q@$Kf%lE-RjA{1rkb_h@c zyy=6JfE;?M>MREy#{AYKSdDr?Ya>g|c))WWO-rbGrV((9up<~@&#*$DnC~KGP6TLZ zzkp$1h}C45VY4c_c&eIC2r7gZde#J)4bVH}QcjX?SCLkYz*=N)(HQVBGFB277;DidLFbN^ zNu|a=X44CL3B1ts&#Nxw&C~OIPM!w(Y}3)19fQmkgF{U~MUFYJ#9E9T5pwPU2G=#Z z)rD2-cw@9;p9V49Gj9n1|L!(}GYv_E08{~FfB*@#y)tj=HYg*LM8aQ^Smw~BkMX4* zL%5DhJrBR%Rt+F9rcdo!L3xpf7-U+pUP)~104~l8)yP9WATdBR8CX77`Ye)gRu{?a zVvEq2P-`qToi{)*n{uXY?lJpqnJuTgU~Ngt*2+%?T);Ax0ml{QRWtj@SUL~_h+D9> zW^ar!kX%5$#}X@ZTh8KltDnE7SB_!mamLw_*YKPZ^l8Op#*x|_h-7nDP?RVhqoF^IX`y<;+9Os zx_t-?NDsH{A?4wwST)%)2^3&zkC(0OBWWps`rl0T7h)4i&OvPE7;?k4JO~`x*fH_; zqxXBSO4P;<;-=lJgXw=*)g7G?5wRA}Wj6}dN%9}6D(_Ygl2MId!+#tj(b2IpJ32c$ zvQRB|zJ~NU+-`Hx4!hB{K*eL^W`7OpLZ7;1Uh0`iA|9Ao_n|^PlwvyEe1GBd>*ZQNRx5L=*XYc6*7#3ATzSqggh6 ziH1F*!pqRFa!>NjCWt{+Mhy^v7gM`T(es3OABq$X6T-;0TZU4w<)76%71eob5*jkk zoc-hrl8~rSvI}xIs+Qc`AycMC-TWQdp$!lG@7smyEks-NKWnlI)U(@2=uDJrinFt8 zS=6YRUT{?u&4n5uD5%fO2_mPFd_UWbL-rudTrF7yV{p%|dKAqOD+A_A_1wpPT)9(0=Q)g$JBBvs?UHmi~)QYV_yM+8}g1Voi z01%zTiOrNZNPE~o+J~|&;cXXfPCDlN42e;nq25IbJ zlPuA$*R4OVRZqd^?_!($3x1zLw+rw@+D1wU8aI1)xQKM1*+?L(LOs1H3 zg!!44(6o$}GMK0C&S{D$1t^+9HuK;ZC01x6Ad@E1nBn`O^Soqm8bbIh4S;b?kcOxN zL)D;|Yi?TdKsr7DZ|FHARchcS$Wj3IqLCuDm`0MK+%g&6rG{VZj}#sBHcP50F^J7G z#Ue$k1(jx_7iv3lD*iRUU(1Nm{u`zLZBQ)is9s!C`f`z3Q38Ir3sznkmJtk1Sz6&V zYYc1{9c!e4rjLsz^-U^jYhwarbQMLEC_*&P5ct0Bd(paXGA<0qHR3SnTmLfU+vvoLFvzK;8y&rmN9BcMzn9$ z1zQu_6yvaG;t0pT3Tb)+|%n6B1<{odPyO5(Jr>6~SO=i$!aCPFVuIBJ6N~{EpoGieeqk zLp&F^*%zv}+`5H3@UV@bc?VBSf>3lEBS8W!tS2{YN9`4e?cC}0o`EwEf_#hu%KZev z=(z#K9t>E7Fl(SDMvY7n8zJu-hV$*j!SAZ!9J*)CtG%#G_u8xeNvI|<03|uti7{-37_h_cVa$~z8y+;Y*`-Ms&_KQ zz*~82wr7t89^2BUmRO4Ot+ln$Bf+B=hS*9W7KbG&K~O0(v`$zxU2HL%*vn8>Dmj*F zqJ19_j=9(d#0g7kbGAKb02_N)%rMD6SSR}amhw`OAP>167#2b)f7x`FLkZ_q2pA|_ z=z1`r$nm9nqj9aw?&|K0aBPq{*4wOlh0N&aTTHza<2*W|vWwVm2mKm)k+fAiuyRw~ z9$C?qt>tgs2;|D#J94iGHh{StNl4Ea6fLMHxuVe>H#%Z>^o6L#9odm&ha|c>I?Cpf z9bC&-UDXwlxr2s{=qS$bd+E{d$YcRoF>C60>6$x%$#!U}Ab{?Qxbs5bj_8V&;0n4- ztW6f^8|-)&FYkT^3*F!Oxxf5Uzx_-9;B!CzPyP7IXTJQ+{oU`(!LIN@DXa-Un`^SV z)jROnv=K5<3+Xvxl$?QrMVIMWhf=%B<)DK;rpyZ1tf@w8Vw0CATez80Z%=xxZ+AwO zi+Nf@3rFfu6V8`gn&@PEqRYUzgAxH!viD5VYQ+S%WtZB%^(&2{dXWl^GE!Pen|Up` z35W4y70O})tXmrm=#mNPzJ(^Rn1_tlj5IpQdVeX@AZl8{wN7Legb_te`FepaxO#ra zv0BrWnE-^?6$}@vnUpg?txzq3S6(+40Gi+BR>5K&HH&FAc8!w=^triXRmr%lDKj;> zhGAFX>4{bVCeCv-1xw#sB|QIqlRZJ~$<)0Wg|TSfIa>&T2LTH;e(ebu0IaQbF=9U~ zov9Grljb7Ed9WHs=j+KqA77DNDT#un(&55u`dI}Oz zl_P+=X`00*gO#}5?nBcJzR4WmEI+}5u?g4HuTM|D^mEndORhx_YH#fD)UuF!5iC^U z)jl3oLM%i5TBy-=Gt12cB&Tc@cx?P5OOuvcW=GyneKyBH1y{+vp7^yq09vdHn;Qjp zlUD^BD~=4te9_DrC$bGP9@e71om1H6nlast8#ITcqpzB4RxpfX4?=@3AdnkDN%IT?!!x)yM=SMTiWAR6s2jyqVKLV1x`#Qo5{^^bdrb3e- z$v9W4bYnYDfPMxX7Kz1a&k3=3qR6|VWQ#T3#*uFS#&3$Aq_Ds##2jVysg6q zwxRWsyBfU$t8f3N19CMe^FqyMfrlA8>EFbmE8}mvIjyPbi0=w;gx1k5{+(?DO?aa1 zp@4_AAy7!{4kbV~-vmAe__Ud%@+Y?~5nV~*__q^-G*LX3eHpEKO>Ikd5k}*wOx5=tNg{ z?C2=$lu=>8<~0B>>k`ctGUVY7!|IBi$qpr=qdQ`A1sAk%Fe+Olh|p-KGt(mE%_?Kj z&ww+e&dAb8ql@+lEa+N!g9MFa3g_X<+{muZN;*yl@dv(>z2985K8<%j{KD?9|6F|h zxBlYGTKUg@@Q44*SFTV0u5a$|eOo$M1t(2!7o=m-B)c?uW&?gG zhvgo+hUTs8nIL= z)Ku~rn@+~*+7_a|XNql40Cgp>!Jkx$80T)p({mRWxHv84HldoLE>!4tr?w>=v>3t3 zk`J04)Hyw`3ApaM#46&SPoAN?Wp#81a_=!yT5Vb>5z*3;@2v?XCuKC-+NIdA#V&EB zt-7WYXT^+I0#E@G<$Es0RVZk0o-1-roC^H@kUv9r5fBoXNh8+~_@KC@DPq{LT5&J+{=4iS1H~pf-lthv z`c9N{?YV!YMoWDQ01re2=DM-ijsQG6<$6x_Le0;x+_On<*5JbDtIV)z4?@HpyC&%XOcUWHXOXNu>aYmhi(C>!CX19gYwVrC~; zmc*RJwTCpEBQ7DCt%g#i_e(H9#aUQNCYDfZcu)!SV+@4NggyWSW}r-yPRm4=YJAby zC;xlcBY+4N+X~3B)D;AW5VvaB;0B;7A+xUI&p@rw92}WpDzjMhEzhrzgsYy05SxIX z0DK5cVDBy_pIL$WqTad_!F#v0?l^qzu_Ukd9DO#!GdHS}_Ze;Xa}kKG4Nh^uQUl>F zX@l!=!FSp~16?!iqI=%&y+TD>e8R=vfi9GPu|-*dw;-Cy`Ouz&U6`^LLJ`k(&sm(P9aH}Lj5xZix2 zD6E3R<1So;GLELt6c-h%z%|pKRf(-j5h+cSE+hl9s=iffF4)Yjw3!_6lAH8Y(KXpW z)1jSfvU>D6C|HRHY&oXs5V zcd?Gi2>uvCrN$LlVlVIlZX1=UFSX|YY3zXajE5Q(0#PpXLII8NW~>IJC-t-BbLaOf zu@EX~^m3Kd%8^1WiLUkyniICCY6i|XXdv~`$46YTC7F8^YvI}=Q$a<1a8o!-*teu@=I9d}` zCm65SGu@RfXh z-Lpy+(WX9v4cRq-n3>KOxnwaiN!T_)@Hjw8dD=!cSi~!Qjyft&OSp3 zPY&IzkluQuQ^uYi=-?pqWg1`?xN$>Gw^rt~HSDD%YcOZn28;zmjfKFVWD#j##YI4u zi$!yshJP2E)?L5su?H{ z{A=BlBm+o!fwCSo!`^BE1DPj&LPHkFCq^U*1hn=GF)XJ}nbC5Fd1m9zn{ z9tJSYDMPiY&!Z;un%u&D9575$d+xAl6|x&^e!mOCm^zi8Nn3S|>H-@KF`G{_*^N`kYAK)U0f0ov|c%WXB4>mq(Lp%XB>< z1KO12YLMA%`iCtjP9~P}fXNMgH~P{q$ksY%u_w%mP(_yQ;TBl|Az5Yig@^~xOAhl5 zz@I`2usx;p@zM1Aw#RWSEBFI=Q%wG?kf(faEdj`K^Jo5Lei7`b0fg4cMocPsISu&l|+-FV`8{cs4aYuNzVux;vtYS0*g(;PVgW!o$X@p0A7C< z?|t~`Hy{1>FTZ;H^uLyU#sA~efB3)hXZzI$Z}RQ8X!Pa1m^=@hK55G46)#=|rbsCk zKuxn9b$|gr+B``_g+R-6j~W&w<7};c)7pb{Qz<$=JgH-a*|Xc11g{%sDxvWhAs;ZH z?9#?Z?bq&LAee#|WCv^o1-oB=!u4PD9;^m#UPRQUNtcobMkB{UukX<6sW^!CCiUG8 zn?~8%V%uAEa}^e(@-AIY1uyb;gy4}{ia67o85e8%lc}kD$Cy6RY?Gh2kjPb|mAPH; zkI@~*kc-LEll~f~Fl($4n0=k8{bS{1QjOb9yv;>y=oV_~8zb>(8G}%~Rx)36QL(4- zr{k@tb*-XZF7bJ@(8w{hVW5hgLnCiJs|A5EZLe3agIjX4KQfk*c#5D4-B%o9K%xMT{$qEzyhUaCGq7em~zKT6- z;0%>{{n_jlW>u|;wTv#KBvdb}W(CCMP$OM63_Wpa$_vuwYjMYR+(y|gkEr>6%c(X= z<17^l*^~n~8QVetGNnu;c9%946i|l_ohlLmQWV{Mk2A8S?$2@?X8||kXU!Xv_s&H& zi0J8#)1Iyx^)Ee_NC3BrKRMrbZGseNWhurkMKL&i*W?Hl?#d4?aIs3XaK8ejBu%&& zLf6rg@4_A0Sqy@6tF?mA)O_tDuCM{&K4xb@@Q^EmLxq_>Z!dWt2%OQ@f$rogP{q6g za3v|OSEMFLVv7NEz`qExEjNS>0j~A*dxPLmxp}r!M!p`)11|xR2t?eR#vrjJG3l#h zk|emZAV!M0Qswdwvvs`#HEqJy7=YhzZ#@r9YgibGX@ce|*#R*WkGv<^tC6%Bh8sv4 zd9gu#@njPX+ysrYt?zd{S3WZh8KQPn!dpf*ZZ)e%I+kLo?G3JY(rlxn6+Z(Dn-aGz zpwweWJH=}9Pe2W#R@1K`BWbjnqrjWz(9+jpwlt`w;1>}z%I9w!qAWX@ec;?XPJ0(M z9oeYco+bpb*mS7@&CNT4kT-{$fh3E-)40VDc-;&yoir>>>#l7+hz9l=%`SmKz|zBv zCQBxrgU&V=e#65a7`I%sm}Zk`Rj0+-2;o}Q6T^rZI+*!@NW?A8b88AMe-I&aN;J)) zFrL6d8(ePX4(Gp|44`J&6V{&G+4KFFbMKaf2+q$Kv&@tkvUe4FsKny&rZg=!?6KC0 z-yum-=BCD4&9gmFTqosjnv%xxpPAg{20dc_3T)&VDPN}&kl}{babHucC)N6Kojr?L`HWt zV$mgNt*niR)+Duab#!B+YJKpf$Ga=~yTABXULHUDfB)#+ANWH*{{D~s(?1z6uis#Q zi|D(N(P+7$lKOSq{l0Ixn3FU?nlfqI)Gcp53!90dafueh)jg(==w+hEFa?)rfLPd@ z0kO7GLr!P^XmA?UX zS*6{SbbJ?n!*`dyiR?m^Z= zE~PtIlw%*q_t-2Ds5vh++czEar6#chsf)wFCgVjxH2iZZy_sUd%!le58HKk`jSdt2 z^SU_c{2If25JyXAoQ2fv+})=DZc!??-RDmZ_e_Y%H`QDw#<4ymA&9kSoRAemd-pn& zCCB6n@2Nf#2|;&Cbbwvt0SuUw(p7FkntX>v+S%@>zvC5NV_uR%Q(-d`(ei7iFZPLO zO~O+qlo2`i*du*Uac!C>`UsW`|2zTVcdwZ~Mcnjd2mo~-d5J@MN*7xMCt3(^f`#Xb zn6okRm0=MSCr@#T#gP?lc4nC}Wed_wH#Q|c0{t?%OS)Br?bwK$4Lzq&X4EiwofU3N z>;sHkiFd9Mk8_^WY_*{}#&pumQe-<70vwYWTOfWSM7Gs4j-`E76=;qsqerPJx zu$y-VWlxTOJSzf(3ZRv~Cg*0dXo?EUCISM#WF%PxP+H(Ey(yrd!iK?qNEVP=UTM* zknw30I-9wo-pYW?^jTGJLt!;txMb$&;#jg5)Ab#5 zbK?C0s-QUU2G7+snLKU=$~CuSD?tOcWI=r6X8!4u8<%M6@@8a1l4dDDn=V+8a$TxG zOR%8B7z*;=?Ur|ufGNTEJP+VxJ#Vt|cKEq4hn6OdQ5(192_>is-PoE;uht!L`~!>l z@erv)Y3FUOX;SRYLs=hK6osB%f1X^4oKsD@TAn|wOLyG*XgbZ5GVnL zC4)_Y6C-bvtfo^GbH%m5(b-o@Qdy~5M|F_yX9*Cq6q99b49E*t1l{xd*~}jp96qZ; zQpb6qZDQ9$Q*YFqsgN{*PVG1`6DsLMizohC+9V@sq3hYc#YmDw#_vut!^&b$P=(f3 ziXf+W7$`P#BZ!-myW(!_+-w}n)bys(rMWfB{i?UzXsFK5SVf~!HI}YJQEKM1X~q&w z)?)}nY;brNd*YzRzRXGXEd!=jPSr^)(KH+_#-|d4t^ITK{E}2)#M-$08ZDi8V%2a( zYDrRUk1OGob+&@Q|DKZ}v1E9eTTOVi&l=aRnrYkRzwh2g!vfrp{mw9yT@S8k;G(p8 z0rK<+4avkRwGp9=utn3>1=@N(?h6R$#%2RPCX0%w!n<|Pl#EMEnkU+0=Gn;QhTp|U z#2IGVhb_W}*{}?#V@DFnci|`k5xMy$xWwYEO-i%`!e(cI{qzgEQ`_lU8q7vSwJOW5 zWNhO%U}onXSNSY0gA!Bfv$Ay<59mmb1(O`wI6RYuTS^u&-_sDfB5%azVTE4 zr`TWr<-hjsf8@XVVSN58Kim5|$n`M|)_UPCUjClLhe>cyuG9rU&apFCuQ3}R>i$|5h56g{4!CwJMIy17vl#aR2WnLwzo3hU>Z?xS3>P1Cx8 zTNQwp*b9hzD0O{{1Sa{0!h;OXLJc^n;|tBe2P1kdshk^~5O}!{bw`B&HKUpgS(^q3 zDKAuR7IJOR0VeV_=rD9s)D)W9)-~P(Zc^=b&l2glgOAF%$#6(%o*e9LoY$~hQ>3Vne>y;W@Wp<+hQepiEFmhglUL^X?!$}Q6-X{HsEY}$!;gtUgyqWd{UECOLtF<;&X+440KoqcBR2IkeUhdd7Cf=dugOd=HP9A5uG z#?AMy4Ggtw!b_`B^@JL3E`1N;9$oWtD_J%W6BnyW=kB4v%(`U3(@QlQ_Lv#)k5jK0 zDM|@!(eKVU`g(zgJ4>$RdC_LPgca%HOt64fUB+Zrwtg;5QW6p zEw2X+LbUm4_Apj!BLvUF^X_?sOuTBB2lW2=c3rn04mSyDpre1^O)!G>oxlNk3$*~H zYe`b2TxoeM!4plLdyCQ1XFw9JhtBktcWDn*xK-28k0MZFscd^TNj5g;+SKLnc8b$* zhMU2ORa@*OOtq6}ErHg% zIqrFHW>(nCMu`rF)hszG0YsXR%%CvD-t6$Y^n0+6mGY9(d#^b87y+^yDzPoG3|CO6 z9b>R6`O-KPS5YW1dnoLtAMK&`tIan;_tOvT?wPQ1{C)e#lk zPbwB|u0-9zeW?lbeHEfscXWh3pfkEUkUP4vAGi_uhNz{eRdOm#c>k%UF-mq>mFT`> z-;KS3vwLrUuO(Esllw@pGdn4KMMXuf2pg%iiaGCsty;0Nnmz`-Xe^|LoXF>5j3Cuc zFFfA);0LhkJNfOO`+wp7+TZ)?XMX&@{0G)M`|I~gWWS}h<2HB`Q+#kIxYy^n;AWz^ zsdXm*R^7cW4$K0#THt+<9 zfu%%;diDpXE%fm2VIwffu-NvxUnUZ*M(mVfO>sB0CJg0fMs(t6Q|~p&)X(k?!6af?fd4FX*q}M5mJ*lE})m7$gI`=17l;u*Pue@TK zGlJ`?XoM(GYp9@dwpXDS9k>;@NU3M>LyrNzi}KV;i7V7Bks_&;WCir1kH?t8Jxv3$ zE`o19_qs3Mnd`zWK$!qpgi68%pfA# zOFooUPP^L-l#raGawa{oa)7=tMN`yaYorMxs;Mu{48qfK?H}1&y8J{uL{--6j8aiS z$9VrF-=$mA{+^<&D%qrO#?+1rfrn%O!GN$t3m0HW|KbCBbnr7Qv30^m45mlIaxno{ z0=~Q+6Bn5&EuRL3Z?- zE&`!D@DjW)6H)ZfaRJ!e4_|WJj=K>rdRAJKbqU1vK5wst3l-EpUpnlFY5M67?It;L z52FEEsn)HX_Pu2k#&es^ZAMT*++~AKRo1H%L(V!{8r0p$)K&_`*9m7~23KqPYEb)x z!BTw|0QOd$0xow<9Em{e2Lcy!i6){`1gEzP1oGbUH46DzXy-IE!P=Wl9rVQ4P;B8Q z30D;Yio@~`y-nr2p-%(!;Sm!q`skelWOmw&- zgN4Iyf^}||YpnucNv`z{90drRH3OB!$vc zj#>mkPmJ=2Z4hzS`UdPZnCQ*#f9pD2MTn^P_zP%P1i^?FbD@TZrUG{ZI|k@%-`A~a zxvpvk8JxRrq!>{&(G2XZ6@X|i0pWD;fRu~PJ?PzjK%~h&}l7Q^=D^$i}Jf$?SWlFOLlm{<~46ib^U-93kYvg5ft-bdj-Ag)S}7x*O=q zwPl6C%N7xWA_XnJ#Yq`+3A;hZc8F^G&>sS8E4haE|*+!@gwZ*axi z`zBhX}uXppHLL}?MEywWjL2^egMqU@61 znkL22$zTn5stB;@TL&*nib9-v7Alg7ERpJ#(%Pg=WlC$HOtTua^@%`h1iv?TpNF(Q zYK~H!TUEZUMZ`{~* z3hr$xq>?e4o@0tsAo9<^LI8*BA;s%T>(=c)Z`xX^IKd#EHZy_}U51$nnp!6(q%^@2 z9ZtmqS0;HX+ge#?Y_a6zyFamGHU&aqwVcAw^r_U)mL^~jRXzKF9u56py+m0Z~6Zx)yTx*mT&p$B3N`r#BzeqAyN$(@3C8A(XQQ8CYH`m5&jypdYZ?;7 zLzDPh0GaNW?&J!slPon>x8k#;7JTr*zn}UZqLF&)9coJ0;4)r^Obn~Zo-;$RYNMo4 z4e630R*$DyC^FQ>_W_voYh2L^(Z!h`Rs>!|FOB;iNeNs)J^|1+R&w!WvrKq!fF2F9 z>GX)Ee@eLlQalDwxPe$hSp{xwjqy~zCeCmQv<%$zH4tdL}^3tK>jji{7?2{>(nDdkmHThsbo zb59CD-8?hiD&zICcDX;(-PVxSQ#j?E^4ehP&0!Xf00T1$mm&$mn;clT?6Sl}OqJp~ z(9#B(0;QT4oFhx=u8+pNXcU}^uZ-iWO$f(5-vAz1@em{KA)g1;B9a`~sI|)M5H)hODPdIYQrW8i#A&LB z&W%vIIx)(ZJL1X7-oTUj9FAX>@|r1RnUtvIdugbr$+bbw1jOWJojfw!tW$UR-U!%b zGbvL@W7BP!iH*Nmw_ITm8e>^D8#wB?gmNykB*23T4@sIsQ)vXz(48ZfrToTNU?Od!do`z~d zwVIhDA$Aw))TC%!YvC>WMn$h)UA?=bdR-CNvFZ0*<~JaMFjuVL92_0pr5&!p*HW=tEX7thg&Up;R{=72VhF zM&$dIFY9f-_mXe^!C!y%-CzENttQ?&wyFK3i`-0-%WKy7FI@vc+Qrdqdy?v0k|lS}9yGfk zN=t3-J@&*s0v)#!ne>}(Bn>8n61XX|yR~sZfz(OR-XdW-veiTSdtImC5GBq9?Ct4P ztqIm>C#74+ywOZ1-kf(5li}k5GVZ+?g^? zjG35G2iZ20rM6Zh2J>PVgK8#MkuE0q@0{dk>w!R10t7k5La5%Mept_54Ynt1CB2)g zV6UeEK&mw(I7m^tIVG*8sgmfrh=uTed|sjUkKdwU_;)QCd7izTr1RmVoo^jsmWi*Jj;?KBxltn^T{oi0zGl9Ep!q8 zG-WPo+CsnrnzYT@GU^1hix+4t`JC)AFWS(QEB2Y}3S3ARvufa#i>4@m*c_^7(Rm}i zGH=J2qR~gy;IF9B^F0(FcIfWLxfiKAB1?RN#R-~NG8s3|iVG|k^stsrMfyGzPUfJE z&P5rUP0#u;W2#jcX&4Bvq|#$gX$g^gzQ&3D7&eXzU#Rh4)iQ&nIb(T}1fZKh&`tx! zLMv`J*KwSri!8-n)OlNi0^HawmuSQ^0R;IBtn_I@vva~us#mkDBD{C)eDjM8&DQHKl1N5&;= zkm=T5Xd9lvprV00r8eb^IA!1B#?9H4Xm9-v(#H&Wr{ z<`sDGJhWGy?E{?N{5hPK@|&)1>^xo=l-h6rRLSitrq6dRMBFn-P{%SgKtYr0T4F2l zSlt56BDuz~T#Nw(GR$Ui-0D(J<@zK3^BgG+H0(&_Zq|Ct(;0<3Ic;t=T&bbeZZ+1L z;`{mA$ndVfr3L32x9HDLqJk;>1?lOBxk8YZs|go@0oSC8No4~%gL$63wpe#)4&GEh z!vHHFfKOU%#rm+fO*9z_1_Cmtxwd)KRy^fU)u1!MY>~rZpR0;vEN#*h%!aZ2Nio7p z^Q!%4wm4kc2%u(L?sPik@&OZA!0#uflD7br*)FZkN;zHv6$hBtt@&iVzk_}V4Q!Bs z#2KK>ueVq@ntP_T@)}66rrg~8V>8k_WW$SQrhj>yVnXMx_)9gz#s^b(b$K4{{P9rD_XSfQ1L2q25(u+BhbN5w3K zDK>SnG?}dumm;c)U4HC9cHaEh2?aX{@lx@;z~WR}1+lX5&S$^)f4qP5@8WuS6~)EH zRV3$BW(U7nriY=#Z@5n(LdGO~Az9s3jg3eG^lh{iK(7o$%Mhl!Zp6Evd8~Ke+p*ui z{?_0Ai|^cD`&<9=7k}cv@r9Sq|DIpDKl(bn<2pna4Mmg!uolrIuia}GGB&Hi9*Va2 zw}ubq)baYy(9gFqjV7m)yyPtE6+X_f-K4m$va_rvg%P6N=~4;F=1z8Llsyr(_8cw8 zX({BTo3ri=pP=7!B0qab3)*?!3WBG|D}6uGarEOf#H~0?MA&ZF0>1e>R%-&ODabTr4X;I`jL4Ktz2_7#l4g)Fuq^u=NcQ4ss~Zun zJQNUsV$-bzwxxTEcGJ=}*UqIEklZT&fZU1*IwC%#JGYj1iPAV>D&g3FCz$$q=x z;v4c6Yg}>`PEQA%YAdn(A;ZAHOWpQ38i`7Y8R4mlDlo;lJX+wgPYWr+90aqlx-!PK zcXvF+C`cM1RKG~uEX67pY%1F!GB{34-SSJ|HW)v0NcpB8+|WL1m(0G2I8o3wb76%uu){uVDlc8p5IEXVeFea{p}Mc z%BSK-1sOE0IAO!e+KiQ@{Nmh@&NIqUZe3Dmj9~v}bGX&ZYZ~o;UlW(?fg%}B2zYNd z&3hO>Hi~sHZZ{d$!M3NbX2*C3_F*ZY35=kDhZ@u9jod8iOKyLG$FS?LZk_|hjB*TJ zWCoFfkLtd0>+x4Dp$fx3IpR&kaHjFk#hMgPl_O8 zDlJJ&4+5m$cl`n}TU5vclD!0Ls%1!^{JkuN+Kek=FbrfG?k&nK(8Q%sgNj|F?_FwM z$&TZGa8ZSrXU&W#u>RsWAd8F~hZ&_tAx{!PrKJR@W3SRP2Q-tDP-#P)LTDfb(^C)Kz5j#Edv9B)hh#$zA^ z^vHk1pugpOHak^cW2suG)?5ZhRO9NQPac6SvE$aTOc6|R+VZQ#i^}>@zzxD|nA4Ai z@89;njseqshP@sW4#Q=1=c)HnhY(kkL|21R+BT4;s-KGq2KftzvPWfo>|s z>}H8b#CxCnJNMuJcR!9F`o~|z`f%0#wdlU6u&X;T)L6_a=N1!k1s!>Csbie^(Cai&)z1CHlB$g@rq}%|8$JIEP4xXZx7^%}G zDR_F%Gkpb(bjW?(H~>I{%PL{`T?vjw*p`+FGnGo|ZZ!b_X3AW0W?fx_E~cg>KE4{a zQ3o_;P@;!BS%QVIq|hpSSgg`$LiEzL)EwIgP0u>aynxmoZz0QS;sj1u1IPGgdZ3$d zjLG5Fo_a?!G6dY1TbC&Mb_cXYo<)RrEiVNDMn-f}8-F`F3;3xFI;BHXDD9q3Q2pIIHs;P5}J*IFrOL0CjO|mo{?m2s*AkXHzWhj|ShOTZq5{(B;3+vqy1>&$&-UTxevxEjqeiP>9iIzEuGP+MLL;bxQQ_YSSDE6k=3Y$lLyNgPsV!~1Qw z8j0S(+Sq-mp<*!^4MZ-*b4`IFxHA?yPnueK>NckIEjnSSfZv+X&2&$6ZUH(g%%S3x zz$^JOMS8mT#0(b(7z!&q%o6oEqnY1uJBDWZ+^EDJ&Jy5u_!DWL9bw7^C{8 z?M*FBEmO_O6E(#qL9iKAW83$`y2PS3xEGWD2KCRqY1S6GXVT&6-Y_r>sv@vTHWBea zW1-f@C7pU?V5^|Mv$=;Ix3~zfJ`-0U)rp*C~-@K`#zAkh#SAnP$i)d!mt!v`5s?#r{6GCUj|L z8K=pWGP>QDrn1&WmyD^j1q6YseSY~f76MogYJ7KSTZ6!%RcFe$6;Fm9DmIYlzzuLh zn8lpEIm^s(>SK|Q>&2l610n<=Blkg>8oVVW!7#HI^Q zSO|0`*c4$Yha283O*1XeF%SX?y3a;|7ML3;9W$WMsCPTfzV2OVk~*s zNiL)5tsG{~M4N$E`MqaPy(qHkruN7p%C&4W_cJFf^xDT)A_BM9Ql|0~3VmS!xW1j2 z3)Sn1owa9OUGGco_wG1v{UpVOlBDK2Uf>LrG^rTaL>hht<4WD0qH z0r0ZRUhH>N_pETHR(+$Zj!hOsUNtMg6VLTGUnExzvo<5Z6Ba9fqx9r30f{Swz_e^=ul{=%#8{M^6xcD?@8PyWDv{J-|)>oZ^Z`Ro2RVt=f| zacM1&l5RKF?nyvxlLuX9PBc}-w1eGXa)`dEa}rk3(qx&+m7c=n9)x@46AFx@)3pO8 z%1A-%@nE&e(nbr`6&|y=`(#RiIjD)E4 zIp7l;)|iRUt*M5ocdS&>uHF>8kCSX@O3rg`q*by8)9^LXqZ2+8W!OL~r5oQhdsjPv zb(hu&LEoD?`p`Sc`x#+(QjbB&+32Z=aaI0=Sf@0mxioF7lE%)g1is@`K}YJ|tplYA zj2fDy_{IiR&&8?AQxY*LSY!rf7ZCdV%o4r4x2C`<=R*_I;B<1i$((8!YP?wB%DO{S z2qCUAq_Lwky#F@llETDKPkkX4h_(4*Wpc8wgq`A9a1wG;)9G^>k_14LT-3yX6p)y! z4;w`9F1Gd14kxXZKsOmOVokVu?>-X}H_kCsX@PRu^^Rc-oU_U)Tn-x}G<7b`b}>wf z6XObQ804klbE1tAp5mbQ{PhsTIgP>M_6UUrO+{naBQYj&C6KL0)*EUn2Sfo;z%l(x zF+9{1(5&@-I+rzf%iBJHt-^<(S1B%SNFyuCs7RLZ6LM@Av`ahE?bv+xCiM>+CGE{h zIb7F1lM*vPkRypQ(+p^x=fn2k|7TowgT7R3vwo&e#|_}xl4*otTAw*WB4poUp31qcA9Xp#|yx^F&v++tV&FGe)iEr3hfPaJ2sHL{K75i2sS#pc*%pm+0_cgqHS3NmZSa_}Vr$hcn$jGsr3s#i+NUu&tg>6| z3g)HfHFg!&ykaC~tDAYXHwtSe*mk+6iRUq39Jg}UKQ_9>W~?k7C*Ad|<~fSfd}VmT z-@5DkE}a|Ffa^*;ebd|k-MkAO`P{L z3_4G+pW;?}>W?BzFwgmc>H~z_?fv(g(`IOL?Gcdg^Sme6;IehBoR0;#fpt&}15Q85 zti}1cs+Dm(X6(IFUJ)k=OSPq*dOl)|km2IE=Sg_YL>;PGMgQQrmf?0TvJ^vcFT|KZ zV+^oo!-pHzS<7_Z;#}^W3=O^b}$y(2!7`Dz0x_ca8S};oixg0KCNr!|rgO zfME`}UqP6GKr~1Dtn^IOE9qStNE<+Y*QuMr&9NrT}MrU`+Uc4w* z6aDMa{q}9HcfW7H`s@$H{s(_OzW4Y3^51^_13&itufOsK|JB;B5FdYs1+u8F8=IOW zl`)}pIwz<)5Z_`A)*MC}ft2Wu_i64$GYtiScH!8?=}|z9%}F4<=x*xNSi%>}+DXV< z1PXpWL@rD)v>8tMlu_bb>fMc~C4Dqz0^nfOE~@nXOLW=g!~*wjE^2IQr@BGKE9M;N z`){IsDHr=Ol$oNC4FMTRwV+pd>x$8ANDAq5RaOVEMYU_oc$}y)G

|cJ<}? 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 Z;p6+iMez1`@ZL25MOihOS}D`e{{weZrYHaa literal 0 HcmV?d00001 diff --git a/apps/web-client/src/assets/logo.svg b/apps/web-client/src/assets/logo.svg new file mode 100644 index 0000000..41b917e --- /dev/null +++ b/apps/web-client/src/assets/logo.svg @@ -0,0 +1,431 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/web-client/src/components/Header.tsx b/apps/web-client/src/components/Header.tsx new file mode 100644 index 0000000..ae18bea --- /dev/null +++ b/apps/web-client/src/components/Header.tsx @@ -0,0 +1,265 @@ +import type { Models } from "@nontara/server/models"; +import { useQuery } from "@tanstack/react-query"; +import { Link, useLocation, useRouter } from "@tanstack/react-router"; +import { + ArrowLeft, + Film, + Folder, + FolderTree, + Home, + Image, + LayoutDashboard, + Menu, + Search, + ShieldCheck, + Tv, +} from "lucide-react"; +import type { PropsWithChildren } from "react"; +import { memo, useCallback, useState } from "react"; +import logoSrc from "@/assets/logo.png"; +import { Button } from "@/components/ui/button"; +import { Sheet, SheetContent, SheetTrigger } from "@/components/ui/sheet"; +import { http } from "@/lib/api"; +import { ThemeModeSwitcher } from "./ThemeModeSwitcher"; +import UserMenu from "./UserMenu"; + +type NavigationSheetContentProps = { + onNavigate?: () => void; +}; + +const NavigationSheetContent = memo(function NavigationSheetContent({ + onNavigate, +}: NavigationSheetContentProps) { + const { + data: libraries, + isLoading, + isError, + } = useQuery({ + queryKey: ["library-all"], + queryFn: async () => { + const response = + await http.get("library/all"); + return response.data; + }, + }); + + return ( +

+ ); +}); + +NavigationSheetContent.displayName = "NavigationSheetContent"; + +function HeaderBar() { + const [open, setOpen] = useState(false); + const handleNavigate = useCallback(() => setOpen(false), []); + const { pathname } = useLocation(); + const router = useRouter(); + + return ( +
+
+ {pathname !== "/home" && ( + <> + + + + )} + + + + + + + + + {pathname === "/home" && ( + + Nontara logo + + )} +
+
+ + + +
+
+ ); +} + +const Header = memo(function Header({ children }: PropsWithChildren) { + return ( +
+ + {children} +
+ ); +}); + +Header.displayName = "Header"; + +export default Header; diff --git a/apps/web-client/src/components/SignInForm.tsx b/apps/web-client/src/components/SignInForm.tsx new file mode 100644 index 0000000..f90d154 --- /dev/null +++ b/apps/web-client/src/components/SignInForm.tsx @@ -0,0 +1,157 @@ +import { useForm } from "@tanstack/react-form"; +import { Link, useNavigate } from "@tanstack/react-router"; +import { useEffect, useEffectEvent } from "react"; +import { toast } from "sonner"; +import z from "zod"; +import { authClient } from "@/lib/auth-client"; +// import Loader from "./loader"; +import { Button } from "./ui/button"; +import { + Card, + CardContent, + CardDescription, + CardFooter, + CardHeader, + CardTitle, +} from "./ui/card"; +import { Input } from "./ui/input"; +import { Label } from "./ui/label"; + +export default function SignInForm() { + const navigate = useNavigate(); + const { isPending, data } = authClient.useSession(); + + const onRendered = useEffectEvent(() => { + if (data) { + navigate({ to: "/home" }); + } + }); + useEffect(() => { + onRendered(); + }, []); + const form = useForm({ + defaultValues: { + email: "", + password: "", + }, + onSubmit: async ({ value }) => { + await authClient.signIn.email( + { + email: value.email, + password: value.password, + }, + { + onSuccess: () => { + navigate({ to: "/home" }); + toast.success("Sign in successful"); + }, + onError: (error) => { + toast.error(error.error.message || error.error.statusText); + }, + }, + ); + }, + validators: { + onSubmit: z.object({ + email: z.email(), + password: z.string().min(8, "Password must be at least 8 characters"), + }), + }, + }); + + if (isPending) { + return Loading...; + } + + return ( + + + Welcome to Nontara + + Sign in to access your media library and start streaming + + + +
{ + e.preventDefault(); + e.stopPropagation(); + form.handleSubmit(); + }} + className="space-y-4" + > +
+ + {(field) => ( +
+ + field.handleChange(e.target.value)} + /> + {field.state.meta.errors.map((error) => ( +

+ {error?.message} +

+ ))} +
+ )} +
+
+ +
+ + {(field) => ( +
+ + field.handleChange(e.target.value)} + /> + {field.state.meta.errors.map((error) => ( +

+ {error?.message} +

+ ))} +
+ )} +
+
+ + + {(state) => ( + + )} + +
+
+ +

+ Don't have an account?{" "} + + Sign up + +

+
+
+ ); +} diff --git a/apps/web-client/src/components/SignUpForm.tsx b/apps/web-client/src/components/SignUpForm.tsx new file mode 100644 index 0000000..4da4526 --- /dev/null +++ b/apps/web-client/src/components/SignUpForm.tsx @@ -0,0 +1,219 @@ +import { useForm } from "@tanstack/react-form"; +import { Link, useNavigate } from "react-router"; +import { toast } from "sonner"; +import z from "zod"; +import { authClient } from "@/lib/auth-client"; +// import Loader from "./loader"; +import { Button } from "./ui/button"; +import { + Card, + CardContent, + CardDescription, + CardFooter, + CardHeader, + CardTitle, +} from "./ui/card"; +import { Input } from "./ui/input"; +import { Label } from "./ui/label"; + +export default function SignUpForm() { + const navigate = useNavigate(); + const { isPending } = authClient.useSession(); + + const form = useForm({ + defaultValues: { + email: "", + username: "", + password: "", + confirmPassword: "", + }, + onSubmit: async ({ value }) => { + await authClient.signUp.email( + { + email: value.email, + name: value.username, + username: value.username, + password: value.password, + }, + { + onSuccess: () => { + navigate("/home"); + toast.success("Account created successfully"); + }, + onError: (error) => { + toast.error(error.error.message || error.error.statusText); + }, + }, + ); + }, + validators: { + onSubmit: z + .object({ + email: z.string().email("Invalid email address"), + username: z + .string() + .min(3, "Username must be at least 3 characters") + .max(20, "Username must be less than 20 characters") + .regex( + /^[a-zA-Z0-9_]+$/, + "Username can only contain letters, numbers, and underscores", + ), + password: z.string().min(8, "Password must be at least 8 characters"), + confirmPassword: z.string(), + }) + .superRefine((data, ctx) => { + if (data.password !== data.confirmPassword) { + ctx.addIssue({ + code: "custom", + message: "Passwords must match", + path: ["confirmPassword"], + }); + } + }), + }, + }); + + if (isPending) { + return Loading...; + } + + return ( + + + Join Nontara + + Create your account to build your personal media library + + + +
{ + e.preventDefault(); + e.stopPropagation(); + form.handleSubmit(); + }} + className="space-y-4" + > +
+ + {(field) => ( +
+ + field.handleChange(e.target.value)} + /> + {field.state.meta.errors.map((error) => ( +

+ {error?.message} +

+ ))} +
+ )} +
+
+ +
+ + {(field) => ( +
+ + field.handleChange(e.target.value)} + /> + {field.state.meta.errors.map((error) => ( +

+ {error?.message} +

+ ))} +
+ )} +
+
+ +
+ + {(field) => ( +
+ + field.handleChange(e.target.value)} + /> + {field.state.meta.errors.map((error) => ( +

+ {error?.message} +

+ ))} +
+ )} +
+
+ +
+ + {(field) => ( +
+ + field.handleChange(e.target.value)} + /> + {field.state.meta.errors.map((error) => ( +

+ {error?.message} +

+ ))} +
+ )} +
+
+ + + {(state) => ( + + )} + +
+
+ +

+ Already have an account?{" "} + + Sign in + +

+
+
+ ); +} diff --git a/apps/web-client/src/components/ThemeModeSwitcher.tsx b/apps/web-client/src/components/ThemeModeSwitcher.tsx new file mode 100644 index 0000000..b16795b --- /dev/null +++ b/apps/web-client/src/components/ThemeModeSwitcher.tsx @@ -0,0 +1,41 @@ +"use client"; + +import { Moon, Sun } from "lucide-react"; +import { useTheme } from "next-themes"; +import * as React from "react"; + +import { Button } from "@/components/ui/button"; + +export function ThemeModeSwitcher() { + const { theme, setTheme } = useTheme(); + const [mounted, setMounted] = React.useState(false); + + React.useEffect(() => { + setMounted(true); + }, []); + + if (!mounted) { + return ( + + ); + } + + const isDark = theme === "dark"; + + return ( + + ); +} diff --git a/apps/web-client/src/components/UserMenu.tsx b/apps/web-client/src/components/UserMenu.tsx new file mode 100644 index 0000000..28086f7 --- /dev/null +++ b/apps/web-client/src/components/UserMenu.tsx @@ -0,0 +1,103 @@ +import { Link, useNavigate } from "@tanstack/react-router"; +import { LayoutDashboard, LogOutIcon } from "lucide-react"; +import React from "react"; +import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuGroup, + DropdownMenuItem, + DropdownMenuLabel, + DropdownMenuSeparator, + DropdownMenuTrigger, +} from "@/components/ui/dropdown-menu"; +import { Skeleton } from "@/components/ui/skeleton"; +import { authClient } from "@/lib/auth-client"; + +export default function UserMenu() { + const navigate = useNavigate(); + const { data: session, isPending } = authClient.useSession(); + const [open, setOpen] = React.useState(false); + + if (isPending) { + return ; + } + + if (!session) { + return null; + } + + const user = session.user; + const userInitials = user.name + ? user.name + .split(" ") + .map((n) => n[0]) + .join("") + .toUpperCase() + : user.email?.charAt(0).toUpperCase() || "U"; + + return ( + + + + + {userInitials} + + + + +
+ + + + {userInitials} + + +
+ + {user.name || "User"} + + + {user.email} + +
+
+
+ + + + setOpen(false)}> + + Dashboard + + + + + { + authClient.signOut({ + fetchOptions: { + onSuccess: () => { + navigate({ to: "/" }); + }, + }, + }); + }} + > + + Log out + +
+
+ ); +} diff --git a/apps/web-client/src/components/dashboard/DashboardHeader.tsx b/apps/web-client/src/components/dashboard/DashboardHeader.tsx new file mode 100644 index 0000000..9ba3929 --- /dev/null +++ b/apps/web-client/src/components/dashboard/DashboardHeader.tsx @@ -0,0 +1,81 @@ +import { useLocation, useRouter } from "@tanstack/react-router"; +import type { LucideIcon } from "lucide-react"; +import { + ArrowLeft, + Database, + LayoutDashboard, + Puzzle, + Users, +} from "lucide-react"; +import UserMenu from "@/components/UserMenu"; +import { Button } from "@/components/ui/button"; +import { SidebarTrigger } from "@/components/ui/sidebar"; +import type { FileRoutesByTo } from "@/routeTree.gen"; + +type DashboardRoute = Extract< + keyof FileRoutesByTo, + | "/dashboard" + | "/dashboard/users" + | "/dashboard/libraries" + | "/dashboard/extensions" +>; + +interface MenuItem { + readonly title: string; + readonly url: DashboardRoute; + readonly icon: LucideIcon; +} + +const menuItems: readonly MenuItem[] = [ + { + title: "Dashboard", + url: "/dashboard", + icon: LayoutDashboard, + }, + { + title: "Users", + url: "/dashboard/users", + icon: Users, + }, + { + title: "Libraries", + url: "/dashboard/libraries", + icon: Database, + }, + { + title: "Extensions", + url: "/dashboard/extensions", + icon: Puzzle, + }, +]; + +export function DashboardHeader() { + const router = useRouter(); + const location = useLocation(); + const pathname = location.pathname; + + const getHeaderTitle = () => { + const menuItem = menuItems.find((item) => item.url === pathname); + return menuItem?.title || "Dashboard"; + }; + + return ( +
+
+ + +
+
+

{getHeaderTitle()}

+ +
+
+ ); +} diff --git a/apps/web-client/src/components/dashboard/UserAccountDropdown.tsx b/apps/web-client/src/components/dashboard/UserAccountDropdown.tsx new file mode 100644 index 0000000..f3aa714 --- /dev/null +++ b/apps/web-client/src/components/dashboard/UserAccountDropdown.tsx @@ -0,0 +1,132 @@ +import { useNavigate } from "@tanstack/react-router"; +import { ChevronUp, LogOut, Settings, User } from "lucide-react"; +import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuGroup, + DropdownMenuItem, + DropdownMenuLabel, + DropdownMenuSeparator, + DropdownMenuTrigger, +} from "@/components/ui/dropdown-menu"; +import { SidebarMenuButton } from "@/components/ui/sidebar"; +import { Skeleton } from "@/components/ui/skeleton"; +import { authClient } from "@/lib/auth-client"; + +export function UserAccountDropdown() { + const navigate = useNavigate(); + const { data: session, isPending } = authClient.useSession(); + + if (isPending) { + return ( +
+ +
+ + +
+
+ ); + } + + if (!session) { + return null; + } + + const user = session.user; + const userInitials = user.name + ? user.name + .split(" ") + .map((n) => n[0]) + .join("") + .toUpperCase() + : user.email?.charAt(0).toUpperCase() || "U"; + + return ( + + + + + + + {userInitials} + + +
+ + {user.name || "User"} + + + {user.email} + +
+ +
+
+ + +
+ + + + {userInitials} + + +
+ + {user.name || "User"} + + + {user.email} + +
+
+
+ + + + + Profile + + + + Settings + + + + { + authClient.signOut({ + fetchOptions: { + onSuccess: () => { + navigate({ + to: "/", + }); + }, + }, + }); + }} + > + + Log out + +
+
+ ); +} diff --git a/apps/web-client/src/components/nontara/CastSection.tsx b/apps/web-client/src/components/nontara/CastSection.tsx new file mode 100644 index 0000000..b4e3e81 --- /dev/null +++ b/apps/web-client/src/components/nontara/CastSection.tsx @@ -0,0 +1,42 @@ +import { ChevronRight } from "lucide-react"; +import { Button } from "@/components/ui/button"; +import PersonCard from "./PersonCard"; + +type CastMember = { + id: string; + name: string; + character: string | null; + profilePicture: string | null; + order: number | null; +}; + +type CastSectionProps = { + cast: CastMember[]; +}; + +export default function CastSection({ cast }: CastSectionProps) { + return ( +
+
+

Cast

+ +
+
+ {cast.map((actor) => ( + + ))} +
+
+ ); +} diff --git a/apps/web-client/src/components/nontara/CrewSection.tsx b/apps/web-client/src/components/nontara/CrewSection.tsx new file mode 100644 index 0000000..b2847a8 --- /dev/null +++ b/apps/web-client/src/components/nontara/CrewSection.tsx @@ -0,0 +1,51 @@ +import { ChevronRight } from "lucide-react"; +import { Button } from "@/components/ui/button"; +import PersonCard from "./PersonCard"; + +type CrewMember = { + id: string; + name: string; + job: string | null; + department: string | null; + profilePicture: string | null; + order: number | null; +}; + +type CrewSectionProps = { + crew: CrewMember[]; +}; + +export default function CrewSection({ crew }: CrewSectionProps) { + return ( +
+
+

Crew

+ +
+
+ {crew.map((member) => { + const role = member.job + ? member.department + ? `${member.job} (${member.department})` + : member.job + : "Unknown"; + + return ( + + ); + })} +
+
+ ); +} diff --git a/apps/web-client/src/components/nontara/EpisodeCard.tsx b/apps/web-client/src/components/nontara/EpisodeCard.tsx new file mode 100644 index 0000000..1a20337 --- /dev/null +++ b/apps/web-client/src/components/nontara/EpisodeCard.tsx @@ -0,0 +1,51 @@ +import type { Models } from "@nontara/server/models"; +import { Card } from "@/components/ui/card"; + +type EpisodeCardProps = { + episode: Models.GetSeasonEpisodesOutput["episodes"][number]; +}; + +function formatDuration(seconds: number | null): string { + if (!seconds) return "N/A"; + const minutes = Math.floor(seconds / 60); + return `${minutes}m`; +} + +export function EpisodeCard({ episode }: EpisodeCardProps) { + return ( + +
+ {/* Episode Number */} +
+ + {episode.episodeNumber} + +
+ + {/* Thumbnail */} +
+ {episode.title} +
+ + {/* Episode Info */} +
+

{episode.title}

+

+ {episode.overview || "No description available"} +

+
+ + {/* Duration */} +
+ + {formatDuration(episode.runtimeSeconds)} + +
+
+
+ ); +} diff --git a/apps/web-client/src/components/nontara/EpisodeList.tsx b/apps/web-client/src/components/nontara/EpisodeList.tsx new file mode 100644 index 0000000..f8f9868 --- /dev/null +++ b/apps/web-client/src/components/nontara/EpisodeList.tsx @@ -0,0 +1,82 @@ +import type { Models } from "@nontara/server/models"; +import { useQuery } from "@tanstack/react-query"; +import { useState } from "react"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/components/ui/select"; +import { http } from "@/lib/api"; +import { EpisodeCard } from "./EpisodeCard"; + +type EpisodesListProps = { + titleId: string; + seasons: Models.SeriesSeason[]; +}; + +export function EpisodesList({ titleId, seasons }: EpisodesListProps) { + const [selectedSeason, setSelectedSeason] = useState( + seasons[0]?.seasonId || "1", + ); + + const { data: episodesData, isLoading } = useQuery({ + queryKey: ["episodes", titleId, selectedSeason], + queryFn: async () => { + const response = await http.get( + `title/${titleId}/seasons/${selectedSeason}`, + ); + return response.data; + }, + }); + + return ( +
+ {/* Header */} +
+

Episodes

+ +
+ + {/* Episodes List */} +
+ {isLoading ? ( +
+

Loading episodes...

+
+ ) : episodesData?.episodes.length === 0 ? ( +
+

+ No episodes available +

+
+ ) : ( + episodesData?.episodes.map((episode) => ( + + )) + )} +
+
+ ); +} diff --git a/apps/web-client/src/components/nontara/MediaTracksSelector.tsx b/apps/web-client/src/components/nontara/MediaTracksSelector.tsx new file mode 100644 index 0000000..11df40e --- /dev/null +++ b/apps/web-client/src/components/nontara/MediaTracksSelector.tsx @@ -0,0 +1,282 @@ +import { findBy } from "@nontara/language-codes"; +import type { Models } from "@nontara/server/models"; +import { useQuery } from "@tanstack/react-query"; +import { FileVideo, Languages, Volume2 } from "lucide-react"; +import { useEffect, useMemo, useState } from "react"; +import { Card } from "@/components/ui/card"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/components/ui/select"; +import { http } from "@/lib/api"; + +type MediaTracksSelectorProps = { + titleId: string; + onTracksChange?: (tracks: { + video?: number; + audio?: number; + subtitle?: number; + }) => void; +}; + +export default function MediaTracksSelector({ + titleId, + onTracksChange, +}: MediaTracksSelectorProps) { + const { data, isLoading, error } = useQuery({ + queryKey: ["media-tracks", titleId], + queryFn: async () => { + const response = await http.get( + "/media/tracks", + { + params: { + titleId, + }, + }, + ); + + return response.data; + }, + }); + + const [selectedVideo, setSelectedVideo] = useState(""); + const [selectedAudio, setSelectedAudio] = useState(""); + const [selectedSubtitle, setSelectedSubtitle] = useState(""); + + // Set default selections when data loads + useEffect(() => { + if (!data || data.length === 0) return; + + const mediaItem = data[0]; + + // Set default video track (first one) + if (mediaItem.tracks.video.length > 0 && !selectedVideo) { + setSelectedVideo(mediaItem.tracks.video[0].streamIndex.toString()); + } + + // Set default audio track (default or first one) + if (mediaItem.tracks.audio.length > 0 && !selectedAudio) { + const defaultAudio = mediaItem.tracks.audio.find((t) => t.isDefault); + const audioToSelect = defaultAudio || mediaItem.tracks.audio[0]; + setSelectedAudio(audioToSelect.streamIndex.toString()); + } + + // Set default subtitle track if there's a default one + if (mediaItem.tracks.subtitle.length > 0 && !selectedSubtitle) { + const defaultSubtitle = mediaItem.tracks.subtitle.find( + (t) => t.isDefault, + ); + if (defaultSubtitle) { + setSelectedSubtitle(defaultSubtitle.streamIndex.toString()); + } + } + }, [data, selectedVideo, selectedAudio, selectedSubtitle]); + + // Notify parent of track changes + useEffect(() => { + if (onTracksChange) { + onTracksChange({ + video: selectedVideo ? Number.parseInt(selectedVideo, 10) : undefined, + audio: selectedAudio ? Number.parseInt(selectedAudio, 10) : undefined, + subtitle: + selectedSubtitle && selectedSubtitle !== "none" + ? Number.parseInt(selectedSubtitle, 10) + : undefined, + }); + } + }, [selectedVideo, selectedAudio, selectedSubtitle, onTracksChange]); + + // Memoized language name lookup to avoid unnecessary re-renders + const languageNames = useMemo(() => { + const cache = new Map(); + + const getLanguageName = (code: string | null): string | null => { + if (!code) return null; + + // Check cache first + const cached = cache.get(code); + if (cached) { + return cached; + } + + const lowerCode = code.toLowerCase().trim(); + + // Try to find language by code length + let language: ReturnType | undefined; + if (lowerCode.length === 3) { + // Try ISO 639-3 first, then ISO 639-2 + language = findBy("3", lowerCode) || findBy("2", lowerCode); + } else if (lowerCode.length === 2) { + // Try ISO 639-1 first, then ISO 639-2 + language = findBy("1", lowerCode) || findBy("2", lowerCode); + } + + // Get name or fallback to uppercase code + const name = language?.name || code.toUpperCase(); + cache.set(code, name); + return name; + }; + + return getLanguageName; + }, []); + + // If loading or error, don't render anything + if (isLoading || error || !data || data.length === 0) { + return null; + } + + // Get the first media item (usually there's only one) + const mediaItem = data[0]; + + const formatVideoTrack = ( + track: (typeof mediaItem.tracks.video)[number], + ): string => { + const parts = []; + if (track.width && track.height) { + parts.push(`${track.width}x${track.height}`); + } + if (track.codecName) { + parts.push(track.codecName.toUpperCase()); + } + return parts.length > 0 ? parts.join(" • ") : `Stream ${track.streamIndex}`; + }; + + const formatAudioTrack = ( + track: (typeof mediaItem.tracks.audio)[number], + ): string => { + const parts = []; + if (track.language) { + const langName = languageNames(track.language); + if (langName) { + parts.push(langName); + } + } + if (track.title) { + parts.push(track.title); + } + if (track.channels) { + parts.push(`${track.channels}ch`); + } + if (track.codecName) { + parts.push(track.codecName.toUpperCase()); + } + if (track.isDefault) { + parts.push("(Default)"); + } + return parts.length > 0 ? parts.join(" • ") : `Stream ${track.streamIndex}`; + }; + + const formatSubtitleTrack = ( + track: (typeof mediaItem.tracks.subtitle)[number], + ): string => { + const parts = []; + if (track.language) { + const langName = languageNames(track.language); + if (langName) { + parts.push(langName); + } + } + if (track.title) { + parts.push(track.title); + } + if (track.isForced) { + parts.push("(Forced)"); + } + if (track.isDefault) { + parts.push("(Default)"); + } + return parts.length > 0 ? parts.join(" • ") : `Stream ${track.streamIndex}`; + }; + + return ( +
+

Media Tracks

+ + +
+ {/* Video Tracks */} + {mediaItem.tracks.video.length > 0 && ( +
+
+ + Video Track +
+ +
+ )} + + {/* Audio Tracks */} + {mediaItem.tracks.audio.length > 0 && ( +
+
+ + Audio Track +
+ +
+ )} + + {/* Subtitle Tracks */} + {mediaItem.tracks.subtitle.length > 0 && ( +
+
+ + Subtitle Track +
+ +
+ )} +
+
+
+ ); +} diff --git a/apps/web-client/src/components/nontara/MovieCard.tsx b/apps/web-client/src/components/nontara/MovieCard.tsx new file mode 100644 index 0000000..8ad462b --- /dev/null +++ b/apps/web-client/src/components/nontara/MovieCard.tsx @@ -0,0 +1,46 @@ +import { Link } from "@tanstack/react-router"; + +type MovieCardProps = { + id: string; + imageUrl?: string; + title: string; + description: string | number; +}; + +export default function MovieCard({ + id, + title, + imageUrl, + description, +}: MovieCardProps) { + return ( +
+ +
+ 10 + ? imageUrl + : "/movie-placeholder.svg" + } + alt={title} + className="rounded-sm" + /> +
+

+ {title} +

+
+
+ +
+

+ {title} +

+
+ {description} +
+
+
+ ); +} diff --git a/apps/web-client/src/components/nontara/PersonCard.tsx b/apps/web-client/src/components/nontara/PersonCard.tsx new file mode 100644 index 0000000..5bc9a81 --- /dev/null +++ b/apps/web-client/src/components/nontara/PersonCard.tsx @@ -0,0 +1,23 @@ +type PersonCardProps = { + name: string; + role: string; + imageUrl: string; +}; + +export default function PersonCard({ name, role, imageUrl }: PersonCardProps) { + return ( +
+
+ {name} +
+
+

{name}

+

{role}

+
+
+ ); +} diff --git a/apps/web-client/src/components/nontara/RecentlyAddedSections.tsx b/apps/web-client/src/components/nontara/RecentlyAddedSections.tsx new file mode 100644 index 0000000..e5f4ba4 --- /dev/null +++ b/apps/web-client/src/components/nontara/RecentlyAddedSections.tsx @@ -0,0 +1,174 @@ +import type { Models } from "@nontara/server/models"; +import { useQuery } from "@tanstack/react-query"; +import * as React from "react"; +import { Button } from "@/components/ui/button"; +import { Skeleton } from "@/components/ui/skeleton"; +import { http } from "@/lib/api"; +import { + HorizontalScrollList, + type HorizontalScrollListRef, +} from "./layout/HorizontalScrollList"; +import MovieCard from "./MovieCard"; + +const RecentlyAddedSections: React.FC = () => { + const scrollListRef = React.useRef(null); + const [canScrollLeft, setCanScrollLeft] = React.useState(false); + const [canScrollRight, setCanScrollRight] = React.useState(false); + + const handleScrollableChange = React.useCallback( + (left: boolean, right: boolean) => { + setCanScrollLeft(left); + setCanScrollRight(right); + }, + [], + ); + const { + data: recentlyAddedMovies, + isLoading, + error, + refetch, + } = useQuery({ + queryKey: ["recentlyAddedMovies"], + queryFn: async () => { + const response = await http.get( + "/media/recentlyAdded", + { + params: { + limit: 10, + }, + }, + ); + return response.data; + }, + retry: 3, + retryDelay: (attemptIndex: number) => + Math.min(1000 * 2 ** attemptIndex, 30000), + staleTime: 5 * 60 * 1000, // 5 minutes + refetchOnWindowFocus: false, + }); + + // Loading skeleton + if (isLoading) { + return ( +
+
+

+ Recently Added +

+
+
+
+ {Array.from({ length: 5 }).map((_, index) => ( +
+ + + +
+ ))} +
+
+
+ ); + } + + // Error state with retry + if (error) { + return ( +
+
+

+ Recently Added +

+
+
+
+

+ Failed to load recently added movies +

+ +
+
+
+ ); + } + + // Empty state + if (!recentlyAddedMovies || recentlyAddedMovies.length === 0) { + return ( +
+
+

+ Recently Added +

+
+
+
+

No recently added movies

+
+
+
+ ); + } + + return ( +
+
+
+

+ Recently Added +

+
+ + +
+
+
+
+ + {recentlyAddedMovies.map((movie) => ( +
+ +
+ ))} +
+
+
+ ); +}; + +export default RecentlyAddedSections; diff --git a/apps/web-client/src/components/nontara/SimilarTitlesSection.tsx b/apps/web-client/src/components/nontara/SimilarTitlesSection.tsx new file mode 100644 index 0000000..da2e5f3 --- /dev/null +++ b/apps/web-client/src/components/nontara/SimilarTitlesSection.tsx @@ -0,0 +1,44 @@ +import { ChevronRight } from "lucide-react"; +import MovieCard from "@/components/nontara/MovieCard"; +import { Button } from "@/components/ui/button"; + +type SimilarTitle = { + id: string; + title: string; + year: number | null; + poster: string | null; +}; + +type SimilarTitlesSectionProps = { + titles: SimilarTitle[]; +}; + +export default function SimilarTitlesSection({ + titles, +}: SimilarTitlesSectionProps) { + return ( +
+
+

Similar Titles

+ +
+
+ {titles.map((similarTitle) => ( + + ))} +
+
+ ); +} diff --git a/apps/web-client/src/components/nontara/TitleDetails.tsx b/apps/web-client/src/components/nontara/TitleDetails.tsx new file mode 100644 index 0000000..fe10ce2 --- /dev/null +++ b/apps/web-client/src/components/nontara/TitleDetails.tsx @@ -0,0 +1,217 @@ +import { useNavigate } from "@tanstack/react-router"; +import { + Bookmark, + Calendar, + Clock, + Film, + Play, + Share2, + Star, +} from "lucide-react"; +import { useState } from "react"; +import { Badge } from "@/components/ui/badge"; +import { Button } from "@/components/ui/button"; +import { Card } from "@/components/ui/card"; +import { formatRuntime } from "@/lib/utils"; +import type { GetTitleDetailsOutput } from "../../../../server/src/models/trpc/titles"; +import CastSection from "./CastSection"; +import CrewSection from "./CrewSection"; +import { EpisodesList } from "./EpisodeList"; +import MediaTracksSelector from "./MediaTracksSelector"; +import SimilarTitlesSection from "./SimilarTitlesSection"; + +type TitleDetailsProps = { + data: GetTitleDetailsOutput; +}; + +export default function TitleDetails({ data }: TitleDetailsProps) { + const navigate = useNavigate(); + const [selectedTracks, setSelectedTracks] = useState<{ + video?: number; + audio?: number; + subtitle?: number; + }>({}); + + const getEndTime = (runtimeSeconds: number) => { + const endTime = new Date(Date.now() + runtimeSeconds * 1000); + return endTime.toLocaleTimeString(undefined, { + hour: "2-digit", + minute: "2-digit", + }); + }; + + const handlePlay = () => { + navigate({ + to: "/watch/$id", + params: { id: data.id }, + search: { + asi: selectedTracks.audio, + ssi: selectedTracks.subtitle, + }, + }); + }; + + return ( +
+ {/* Backdrop with gradient overlay */} +
+ {data.backdrop && ( + {`${data.title} + )} +
+
+
+ + {/* Content */} +
+ {/* Main Content */} +
+
+ {/* Poster */} +
+ + {`${data.title} + +
+ + {/* Movie Info */} +
+ {/* Title and Basic Info */} +
+

+ {data.title} +

+ + {data.originalTitle && data.originalTitle !== data.title && ( +
+ {data.originalTitle} +
+ )} + +
+ {data.year && ( + + + {data.year} + + )} + + {data.type === "MOVIE" && data.runtimeSeconds && ( + <> + + + {formatRuntime(data.runtimeSeconds)} + + + • Ends at {getEndTime(data.runtimeSeconds)} + + + )} + + {data.type === "SERIES" && ( + + + {data.seasonsCount}{" "} + {data.seasonsCount === 1 ? "Season" : "Seasons"} •{" "} + {data.episodesCount}{" "} + {data.episodesCount === 1 ? "Episode" : "Episodes"} + + )} + + {data.rating && ( +
+ + + {data.rating.toFixed(1)} + +
+ )} +
+ +
+ {data.genres.map((genre) => ( + + {genre.name} + + ))} +
+
+ + {/* Action Buttons */} +
+ + + +
+ + {/* Synopsis */} +
+

Synopsis

+

+ {data.synopsis ?? "No synopsis available."} +

+
+ + {/* Media Tracks - Only for Movies */} + {data.type === "MOVIE" && ( + + )} + + {/* Episodes - Only for Series */} + {data.type === "SERIES" && data.seasons.length > 0 && ( + + )} + + {/* Cast */} + {data.cast.length > 0 && } + + {/* Crew */} + {data.crew.length > 0 && } + + {/* Similar Titles */} + {data.similarTitles.length > 0 && ( + + )} +
+
+
+
+
+ ); +} diff --git a/apps/web-client/src/components/nontara/layout/HorizontalScrollList.tsx b/apps/web-client/src/components/nontara/layout/HorizontalScrollList.tsx new file mode 100644 index 0000000..e932d20 --- /dev/null +++ b/apps/web-client/src/components/nontara/layout/HorizontalScrollList.tsx @@ -0,0 +1,92 @@ +import * as React from "react"; +import { cn } from "@/lib/utils"; + +interface HorizontalScrollListProps { + children: React.ReactNode; + className?: string; + scrollStep?: number; + onScrollableChange?: ( + canScrollLeft: boolean, + canScrollRight: boolean, + ) => void; +} + +export interface HorizontalScrollListRef { + scrollLeft: () => void; + scrollRight: () => void; +} + +export const HorizontalScrollList = React.forwardRef< + HorizontalScrollListRef, + HorizontalScrollListProps +>(({ children, className, scrollStep = 200, onScrollableChange }, ref) => { + const scrollRef = React.useRef(null); + + const checkScrollable = React.useCallback(() => { + if (!scrollRef.current || !onScrollableChange) return; + + const { scrollLeft, scrollWidth, clientWidth } = scrollRef.current; + const canScrollLeft = scrollLeft > 0; + const canScrollRight = scrollLeft + clientWidth < scrollWidth; + + onScrollableChange(canScrollLeft, canScrollRight); + }, [onScrollableChange]); + + const scrollLeft = React.useCallback(() => { + if (!scrollRef.current) return; + scrollRef.current.scrollBy({ left: -scrollStep, behavior: "smooth" }); + }, [scrollStep]); + + const scrollRight = React.useCallback(() => { + if (!scrollRef.current) return; + scrollRef.current.scrollBy({ left: scrollStep, behavior: "smooth" }); + }, [scrollStep]); + + React.useEffect(() => { + checkScrollable(); + }, [checkScrollable]); + + React.useEffect(() => { + const element = scrollRef.current; + if (!element) return; + + const handleScroll = () => { + checkScrollable(); + }; + + const handleResize = () => { + checkScrollable(); + }; + + element.addEventListener("scroll", handleScroll); + window.addEventListener("resize", handleResize); + + return () => { + element.removeEventListener("scroll", handleScroll); + window.removeEventListener("resize", handleResize); + }; + }, [checkScrollable]); + + React.useImperativeHandle( + ref, + () => ({ + scrollLeft, + scrollRight, + }), + [scrollLeft, scrollRight], + ); + + return ( +
+
+ {children} +
+
+ ); +}); + +HorizontalScrollList.displayName = "HorizontalScrollList"; diff --git a/apps/web-client/src/components/player/HLSPlayer.tsx b/apps/web-client/src/components/player/HLSPlayer.tsx new file mode 100644 index 0000000..6f93667 --- /dev/null +++ b/apps/web-client/src/components/player/HLSPlayer.tsx @@ -0,0 +1,97 @@ +import { + MediaCaptionsButton, + MediaControlBar, + MediaController, + MediaFullscreenButton, + MediaMuteButton, + MediaPlayButton, + MediaSeekBackwardButton, + MediaSeekForwardButton, + MediaTimeDisplay, + MediaTimeRange, + MediaVolumeRange, +} from "media-chrome/react"; +import { useMemo } from "react"; +import ReactPlayer from "react-player"; +import { PlayerErrorState } from "@/components/player/states/PlayerErrorState"; +import { PlayerLoadingState } from "@/components/player/states/PlayerLoadingState"; +import { detectCodecSupport } from "@/utils/codec-detection"; +import { usePlaybackSession } from "./hooks/usePlaybackSession"; + +type SelectedTracks = { + audio?: number; + subtitle?: number; +}; + +interface HLSPlayerProps { + titleId: string; + episodeId?: string; + selectedTracks?: SelectedTracks; +} + +export function HLSPlayer({ + titleId, + episodeId, + selectedTracks, +}: HLSPlayerProps) { + const supportedCodecs = useMemo(() => detectCodecSupport(), []); + + const { isLoading, isError, data, error } = usePlaybackSession({ + titleId, + episodeId, + supportedCodecs, + selectedTracks, + }); + + if (isLoading) { + return ; + } + + if (isError) { + return ; + } + + if (!data) { + return ; + } + + return ( + + + + + + + + + + + + + + + ); +} diff --git a/apps/web-client/src/components/player/hooks/usePlaybackSession.tsx b/apps/web-client/src/components/player/hooks/usePlaybackSession.tsx new file mode 100644 index 0000000..eb603c5 --- /dev/null +++ b/apps/web-client/src/components/player/hooks/usePlaybackSession.tsx @@ -0,0 +1,95 @@ +import type { Models } from "@nontara/server/models"; +import { useMutation } from "@tanstack/react-query"; +import { useEffect, useEffectEvent, useRef } from "react"; +import { toast } from "sonner"; +import { http } from "@/lib/api"; +import type { AudioCodec, VideoCodec } from "@/utils/codec-detection"; + +interface UsePlaybackSessionOptions { + titleId?: string; + episodeId?: string; + supportedCodecs: { + video: VideoCodec[]; + audio: AudioCodec[]; + }; + selectedTracks?: { + audio?: number; + subtitle?: number; + }; + maxResolution?: "480p" | "720p" | "1080p" | "2160p"; +} + +export function usePlaybackSession(options: UsePlaybackSessionOptions) { + const sessionId = useRef( + sessionStorage.getItem("activePlaybackSessionId"), + ); + const { mutate, isError, data, error, isPending } = useMutation({ + mutationFn: async (variables: Models.API.PlaybackCreateInput) => { + const response = await http.post( + "/playback/create", + variables, + ); + return response.data; + }, + onError: (error) => { + toast.error(`Failed to create playback session: ${error.message}`); + }, + onSuccess: (data) => { + sessionId.current = data.sessionId; + sessionStorage.setItem("activePlaybackSessionId", data.sessionId); + }, + }); + const { mutate: mutateStopSession } = useMutation({ + mutationFn: async (variables: Models.API.PlaybackStopInput) => { + const response = await http.delete( + "playback/stop", + { + params: variables, + }, + ); + return response.data; + }, + }); + + const onCreateSession = useEffectEvent(() => { + mutate({ + titleId: options.titleId, + episodeId: options.episodeId, + supportedVideoCodecs: options.supportedCodecs.video, + supportedAudioCodecs: options.supportedCodecs.audio, + subtitleStreamIndex: options.selectedTracks?.subtitle, + maxResolution: options.maxResolution || "1080p", + burnInSubtitle: false, + }); + }); + + const onDisposed = useEffectEvent(() => { + if (!sessionId.current) return; + mutateStopSession({ + sessionId: sessionId.current, + }); + sessionStorage.removeItem("activePlaybackSessionId"); + }); + useEffect(() => { + if (sessionId.current) return; + onCreateSession(); + return () => { + onDisposed(); + }; + }, []); + + if (isError) { + return { + isLoading: isPending, + isError: isError, + error: error, + }; + } + + return { + isLoading: isPending, + isError: isError, + error: error, + data: data, + }; +} diff --git a/apps/web-client/src/components/player/states/PlayerErrorState.tsx b/apps/web-client/src/components/player/states/PlayerErrorState.tsx new file mode 100644 index 0000000..dfe7aaf --- /dev/null +++ b/apps/web-client/src/components/player/states/PlayerErrorState.tsx @@ -0,0 +1,33 @@ +import { useNavigate } from "@tanstack/react-router"; +import { AlertCircle, ArrowLeft } from "lucide-react"; +import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert"; +import { Button } from "@/components/ui/button"; + +interface PlayerErrorStateProps { + error: Error; +} + +export function PlayerErrorState({ error }: PlayerErrorStateProps) { + const navigate = useNavigate(); + + return ( +
+
+ + + Playback Error + {error.message} + + + +
+
+ ); +} diff --git a/apps/web-client/src/components/player/states/PlayerLoadingState.tsx b/apps/web-client/src/components/player/states/PlayerLoadingState.tsx new file mode 100644 index 0000000..0419acd --- /dev/null +++ b/apps/web-client/src/components/player/states/PlayerLoadingState.tsx @@ -0,0 +1,12 @@ +import { Loader2 } from "lucide-react"; + +export function PlayerLoadingState() { + return ( +
+
+ +

Preparing playback...

+
+
+ ); +} diff --git a/apps/web-client/src/components/providers/OnboardProvider.tsx b/apps/web-client/src/components/providers/OnboardProvider.tsx new file mode 100644 index 0000000..85d55d3 --- /dev/null +++ b/apps/web-client/src/components/providers/OnboardProvider.tsx @@ -0,0 +1,15 @@ +import type React from "react"; +import { OnboardProviderContext } from "@/hooks/useOnboard"; +import { OnboardSessionService } from "@/services/onboard"; + +type OnboardProviderProps = { + children: React.ReactNode; +}; + +export function OnboardProvider({ children, ...props }: OnboardProviderProps) { + return ( + + {children} + + ); +} diff --git a/apps/web-client/src/components/providers/ThemeProvider.tsx b/apps/web-client/src/components/providers/ThemeProvider.tsx new file mode 100644 index 0000000..07a3413 --- /dev/null +++ b/apps/web-client/src/components/providers/ThemeProvider.tsx @@ -0,0 +1,51 @@ +import { useEffect, useState } from "react"; +import { type Theme, ThemeProviderContext } from "@/hooks/useTheme"; + +type ThemeProviderProps = { + children: React.ReactNode; + defaultTheme?: Theme; + storageKey?: string; +}; + +export function ThemeProvider({ + children, + defaultTheme = "system", + storageKey = "vite-ui-theme", + ...props +}: ThemeProviderProps) { + const [theme, setTheme] = useState( + () => (localStorage.getItem(storageKey) as Theme) || defaultTheme, + ); + + useEffect(() => { + const root = window.document.documentElement; + + root.classList.remove("light", "dark"); + + if (theme === "system") { + const systemTheme = window.matchMedia("(prefers-color-scheme: dark)") + .matches + ? "dark" + : "light"; + + root.classList.add(systemTheme); + return; + } + + root.classList.add(theme); + }, [theme]); + + const value = { + theme, + setTheme: (theme: Theme) => { + localStorage.setItem(storageKey, theme); + setTheme(theme); + }, + }; + + return ( + + {children} + + ); +} diff --git a/apps/web-client/src/components/setup/FolderExplorer.tsx b/apps/web-client/src/components/setup/FolderExplorer.tsx new file mode 100644 index 0000000..a4e3d54 --- /dev/null +++ b/apps/web-client/src/components/setup/FolderExplorer.tsx @@ -0,0 +1,222 @@ +import type { Models } from "@nontara/server/models"; +import { useMutation } from "@tanstack/react-query"; +import { ChevronRightIcon, FolderIcon, HomeIcon } from "lucide-react"; +import { useCallback, useEffect, useState } from "react"; +import { toast } from "sonner"; +import { Button } from "@/components/ui/button"; +import { Label } from "@/components/ui/label"; +import { http } from "@/lib/api"; + +interface FolderExplorerProps { + onPathSelect: (path: string) => void; + initialPath?: string; +} + +export function FolderExplorer({ + onPathSelect, + initialPath, +}: FolderExplorerProps) { + const [currentFolderPath, setCurrentFolderPath] = useState(() => { + if (initialPath?.trim()) { + return initialPath.split("/").filter(Boolean); + } + return []; + }); + const [folderContents, setFolderContents] = useState< + Models.API.OnboardFolderOutput[] + >([]); + const [errorMessage, setErrorMessage] = useState(null); + + // const trpc = useTRPC(); + const folderExplorerMutation = useMutation({ + mutationFn: async (variables: Models.API.OnboardFolderInput) => { + const response = await http.post( + "onboard/folder", + variables, + ); + return response.data; + }, + }); + + useEffect(() => { + // Clear any previous errors when path changes + setErrorMessage(null); + + const timeoutId = setTimeout(() => { + folderExplorerMutation.mutate( + { path: currentFolderPath }, + { + onSuccess: (data) => { + setFolderContents(data); + setErrorMessage(null); + }, + onError: (error) => { + // Clear folder contents on error + setFolderContents([]); + + // Extract error message + const message = error.message || "Failed to load folders"; + + // Set error message for display + setErrorMessage(message); + + // Show toast with appropriate message based on error type + if ( + message.includes("Access denied") || + message.includes("permission") + ) { + toast.error("Access Denied", { + description: + "You don't have permission to access this directory.", + }); + } else if ( + message.includes("not found") || + message.includes("does not exist") + ) { + toast.error("Directory Not Found", { + description: "The directory no longer exists or was moved.", + }); + // Go back to parent directory if current path doesn't exist + if (currentFolderPath.length > 0) { + setCurrentFolderPath(currentFolderPath.slice(0, -1)); + } + } else if (message.includes("not a directory")) { + toast.error("Invalid Path", { + description: "The selected path is not a directory.", + }); + // Go back to parent directory + if (currentFolderPath.length > 0) { + setCurrentFolderPath(currentFolderPath.slice(0, -1)); + } + } else if (message.includes("too long")) { + toast.error("Path Too Long", { + description: "The path exceeds the maximum allowed length.", + }); + } else if (message.includes("I/O error")) { + toast.error("Filesystem Error", { + description: + "Unable to read from the filesystem. Please try again.", + }); + } else if (message.includes("symbolic links")) { + toast.error("Invalid Path", { + description: + "Unable to resolve path due to circular symbolic links.", + }); + } else { + // Generic error + toast.error("Failed to Load Folders", { + description: message, + }); + } + + console.error("Folder loading error:", error); + }, + }, + ); + }, 100); + return () => clearTimeout(timeoutId); + }, [currentFolderPath, folderExplorerMutation.mutate]); + + const handleFolderClick = useCallback( + (folderName: string) => { + const newPath = [...currentFolderPath, folderName]; + setCurrentFolderPath(newPath); + const pathString = newPath.join("/"); + onPathSelect(pathString); + }, + [currentFolderPath, onPathSelect], + ); + + const handlePathClick = useCallback( + (index: number) => { + const newPath = currentFolderPath.slice(0, index + 1); + setCurrentFolderPath(newPath); + const pathString = newPath.join("/"); + onPathSelect(pathString); + }, + [currentFolderPath, onPathSelect], + ); + + const handleHomeClick = useCallback(() => { + setCurrentFolderPath([]); + onPathSelect(""); + }, [onPathSelect]); + + return ( +
+ +
+ {/* Breadcrumb navigation */} +
+ +
+ {currentFolderPath.map((folder, index) => ( +
+ + +
+ ))} +
+
+ + {/* Folder list */} +
+ {folderExplorerMutation.isPending ? ( +
+ Loading folders... +
+ ) : errorMessage ? ( +
+ + Unable to load folders + + + {errorMessage} + +
+ ) : folderContents.length === 0 ? ( +
+ No folders found +
+ ) : ( + folderContents.map((folder) => ( + + )) + )} +
+
+
+ ); +} diff --git a/apps/web-client/src/components/setup/LibraryDialog.tsx b/apps/web-client/src/components/setup/LibraryDialog.tsx new file mode 100644 index 0000000..6a1a092 --- /dev/null +++ b/apps/web-client/src/components/setup/LibraryDialog.tsx @@ -0,0 +1,272 @@ +import type { Models } from "@nontara/server/models"; +import { useForm } from "@tanstack/react-form"; +import { Loader2, Plus, Save } from "lucide-react"; +import { useCallback, useEffect, useMemo, useRef } from "react"; +import { Button } from "@/components/ui/button"; +import { + Dialog, + DialogClose, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogTitle, +} from "@/components/ui/dialog"; +import { Input } from "@/components/ui/input"; +import { Label } from "@/components/ui/label"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/components/ui/select"; +import { FolderExplorer } from "./FolderExplorer"; + +const LIBRARY_TYPE_OPTIONS = [ + { label: "Movies", value: "MOVIE" as Models.LibraryData["type"] }, + { label: "Series", value: "SERIES" as Models.LibraryData["type"] }, +] as const; + +interface LibraryDialogProps { + mode: "NEW" | "EDITING"; + open: boolean; + onOpenChange: (open: boolean) => void; + onSubmit: (library: Omit & { id?: string }) => void; + defaultLibraryType: Models.LibraryData["type"]; + initialLibrary?: Models.LibraryData; +} + +export function LibraryDialog({ + mode, + open, + onOpenChange, + onSubmit, + defaultLibraryType, + initialLibrary, +}: LibraryDialogProps) { + const libraryPathRef = useRef(null); + const isEditing = useMemo(() => mode === "EDITING", [mode]); + + const form = useForm({ + defaultValues: useMemo(() => { + return { + type: initialLibrary?.type || defaultLibraryType, + name: initialLibrary?.name || "", + path: initialLibrary?.path || "", + }; + }, [initialLibrary, defaultLibraryType]), + onSubmit: async ({ value }) => { + const libraryData = { + ...(initialLibrary?.id && { id: initialLibrary.id }), + name: value.name, + path: value.path, + type: value.type, + }; + onSubmit(libraryData); + handleDialogOpenChange(false); + }, + validators: { + onSubmit: ({ value }) => { + const errors: Record = {}; + if (!value.name?.trim()) { + errors.name = "Display name is required"; + } + if (!value.path?.trim()) { + errors.path = "Folder path is required"; + } + return Object.keys(errors).length > 0 ? errors : undefined; + }, + }, + }); + + const handleDialogOpenChange = useCallback( + (newOpen: boolean) => { + onOpenChange(newOpen); + if (!newOpen) { + form.reset(); + } + }, + [onOpenChange, form.reset], + ); + + const handlePathSelect = useCallback( + (path: string) => { + form.setFieldValue("path", path); + if (libraryPathRef.current) { + libraryPathRef.current.value = path; + } + }, + [form.setFieldValue], + ); + + // Reset form when dialog opens with new data + useEffect(() => { + if (open) { + if (initialLibrary) { + form.setFieldValue("type", initialLibrary.type); + form.setFieldValue("name", initialLibrary.name); + form.setFieldValue("path", initialLibrary.path); + if (libraryPathRef.current) { + libraryPathRef.current.value = initialLibrary.path; + } + } else { + form.reset(); + if (libraryPathRef.current) { + libraryPathRef.current.value = ""; + } + } + } + }, [open, initialLibrary, form.setFieldValue, form.reset]); + + return ( + + + + + {isEditing ? "Edit media library" : "Add a media library"} + + + {isEditing + ? "Adjust the details below to keep this library in sync." + : "Point us to the folders you'd like Nontara to manage."} + + +
{ + event.preventDefault(); + event.stopPropagation(); + form.handleSubmit(); + }} + className="space-y-6" + > + + {(field) => ( +
+ + + {field.state.meta.errors.map((error) => ( +

+ {error} +

+ ))} +
+ )} +
+ + + {(field) => ( +
+ + field.handleChange(event.target.value)} + onBlur={field.handleBlur} + placeholder="e.g. Family Movies" + aria-invalid={field.state.meta.errors.length > 0} + /> + {field.state.meta.errors.map((error) => ( +

+ {error} +

+ ))} +
+ )} +
+ + + {(field) => ( +
+ + { + field.handleChange(event.target.value); + if (libraryPathRef.current) { + libraryPathRef.current.value = event.target.value; + } + }} + onBlur={field.handleBlur} + placeholder="/media/movies" + aria-invalid={field.state.meta.errors.length > 0} + /> + {field.state.meta.errors.map((error) => ( +

+ {error} +

+ ))} +
+ )} +
+ + + + + + + + {(state) => { + const hasErrors = Object.keys(state.errors).length > 0; + const isEmpty = + !state.values.name?.trim() || !state.values.path?.trim(); + const canSubmit = state.canSubmit && !hasErrors && !isEmpty; + + return ( + + ); + }} + + + +
+
+ ); +} diff --git a/apps/web-client/src/components/setup/header.tsx b/apps/web-client/src/components/setup/header.tsx new file mode 100644 index 0000000..2c66b80 --- /dev/null +++ b/apps/web-client/src/components/setup/header.tsx @@ -0,0 +1,43 @@ +import { ArrowLeft } from "lucide-react"; +import { memo, useCallback } from "react"; + +import logoSrc from "@/assets/logo.svg"; +import { Button } from "@/components/ui/button"; + +const SetupHeader = memo(function SetupHeader() { + const handleBack = useCallback(() => { + if (typeof window === "undefined") { + return; + } + + window.history.back(); + }, []); + + return ( +
+ + Nontara logo +
+ ); +}); + +SetupHeader.displayName = "SetupHeader"; + +export default SetupHeader; diff --git a/apps/web-client/src/components/ui/alert.tsx b/apps/web-client/src/components/ui/alert.tsx new file mode 100644 index 0000000..1421354 --- /dev/null +++ b/apps/web-client/src/components/ui/alert.tsx @@ -0,0 +1,66 @@ +import * as React from "react" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const alertVariants = cva( + "relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current", + { + variants: { + variant: { + default: "bg-card text-card-foreground", + destructive: + "text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90", + }, + }, + defaultVariants: { + variant: "default", + }, + } +) + +function Alert({ + className, + variant, + ...props +}: React.ComponentProps<"div"> & VariantProps) { + return ( +
+ ) +} + +function AlertTitle({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function AlertDescription({ + className, + ...props +}: React.ComponentProps<"div">) { + return ( +
+ ) +} + +export { Alert, AlertTitle, AlertDescription } diff --git a/apps/web-client/src/components/ui/avatar.tsx b/apps/web-client/src/components/ui/avatar.tsx new file mode 100644 index 0000000..b7224f0 --- /dev/null +++ b/apps/web-client/src/components/ui/avatar.tsx @@ -0,0 +1,51 @@ +import * as React from "react" +import * as AvatarPrimitive from "@radix-ui/react-avatar" + +import { cn } from "@/lib/utils" + +function Avatar({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function AvatarImage({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function AvatarFallback({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +export { Avatar, AvatarImage, AvatarFallback } diff --git a/apps/web-client/src/components/ui/badge.tsx b/apps/web-client/src/components/ui/badge.tsx new file mode 100644 index 0000000..fd3a406 --- /dev/null +++ b/apps/web-client/src/components/ui/badge.tsx @@ -0,0 +1,46 @@ +import * as React from "react" +import { Slot } from "@radix-ui/react-slot" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const badgeVariants = cva( + "inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden", + { + variants: { + variant: { + default: + "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90", + secondary: + "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90", + destructive: + "border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60", + outline: + "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground", + }, + }, + defaultVariants: { + variant: "default", + }, + } +) + +function Badge({ + className, + variant, + asChild = false, + ...props +}: React.ComponentProps<"span"> & + VariantProps & { asChild?: boolean }) { + const Comp = asChild ? Slot : "span" + + return ( + + ) +} + +export { Badge, badgeVariants } diff --git a/apps/web-client/src/components/ui/button.tsx b/apps/web-client/src/components/ui/button.tsx new file mode 100644 index 0000000..21409a0 --- /dev/null +++ b/apps/web-client/src/components/ui/button.tsx @@ -0,0 +1,60 @@ +import * as React from "react" +import { Slot } from "@radix-ui/react-slot" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const buttonVariants = cva( + "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", + { + variants: { + variant: { + default: "bg-primary text-primary-foreground hover:bg-primary/90", + destructive: + "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60", + outline: + "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50", + secondary: + "bg-secondary text-secondary-foreground hover:bg-secondary/80", + ghost: + "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50", + link: "text-primary underline-offset-4 hover:underline", + }, + size: { + default: "h-9 px-4 py-2 has-[>svg]:px-3", + sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5", + lg: "h-10 rounded-md px-6 has-[>svg]:px-4", + icon: "size-9", + "icon-sm": "size-8", + "icon-lg": "size-10", + }, + }, + defaultVariants: { + variant: "default", + size: "default", + }, + } +) + +function Button({ + className, + variant, + size, + asChild = false, + ...props +}: React.ComponentProps<"button"> & + VariantProps & { + asChild?: boolean + }) { + const Comp = asChild ? Slot : "button" + + return ( + + ) +} + +export { Button, buttonVariants } diff --git a/apps/web-client/src/components/ui/card.tsx b/apps/web-client/src/components/ui/card.tsx new file mode 100644 index 0000000..681ad98 --- /dev/null +++ b/apps/web-client/src/components/ui/card.tsx @@ -0,0 +1,92 @@ +import * as React from "react" + +import { cn } from "@/lib/utils" + +function Card({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function CardHeader({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function CardTitle({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function CardDescription({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function CardAction({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function CardContent({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function CardFooter({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +export { + Card, + CardHeader, + CardFooter, + CardTitle, + CardAction, + CardDescription, + CardContent, +} diff --git a/apps/web-client/src/components/ui/dialog.tsx b/apps/web-client/src/components/ui/dialog.tsx new file mode 100644 index 0000000..d9ccec9 --- /dev/null +++ b/apps/web-client/src/components/ui/dialog.tsx @@ -0,0 +1,143 @@ +"use client" + +import * as React from "react" +import * as DialogPrimitive from "@radix-ui/react-dialog" +import { XIcon } from "lucide-react" + +import { cn } from "@/lib/utils" + +function Dialog({ + ...props +}: React.ComponentProps) { + return +} + +function DialogTrigger({ + ...props +}: React.ComponentProps) { + return +} + +function DialogPortal({ + ...props +}: React.ComponentProps) { + return +} + +function DialogClose({ + ...props +}: React.ComponentProps) { + return +} + +function DialogOverlay({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function DialogContent({ + className, + children, + showCloseButton = true, + ...props +}: React.ComponentProps & { + showCloseButton?: boolean +}) { + return ( + + + + {children} + {showCloseButton && ( + + + Close + + )} + + + ) +} + +function DialogHeader({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function DialogFooter({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function DialogTitle({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function DialogDescription({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +export { + Dialog, + DialogClose, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogOverlay, + DialogPortal, + DialogTitle, + DialogTrigger, +} diff --git a/apps/web-client/src/components/ui/dropdown-menu.tsx b/apps/web-client/src/components/ui/dropdown-menu.tsx new file mode 100644 index 0000000..eaed9ba --- /dev/null +++ b/apps/web-client/src/components/ui/dropdown-menu.tsx @@ -0,0 +1,255 @@ +import * as React from "react" +import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu" +import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react" + +import { cn } from "@/lib/utils" + +function DropdownMenu({ + ...props +}: React.ComponentProps) { + return +} + +function DropdownMenuPortal({ + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function DropdownMenuTrigger({ + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function DropdownMenuContent({ + className, + sideOffset = 4, + ...props +}: React.ComponentProps) { + return ( + + + + ) +} + +function DropdownMenuGroup({ + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function DropdownMenuItem({ + className, + inset, + variant = "default", + ...props +}: React.ComponentProps & { + inset?: boolean + variant?: "default" | "destructive" +}) { + return ( + + ) +} + +function DropdownMenuCheckboxItem({ + className, + children, + checked, + ...props +}: React.ComponentProps) { + return ( + + + + + + + {children} + + ) +} + +function DropdownMenuRadioGroup({ + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function DropdownMenuRadioItem({ + className, + children, + ...props +}: React.ComponentProps) { + return ( + + + + + + + {children} + + ) +} + +function DropdownMenuLabel({ + className, + inset, + ...props +}: React.ComponentProps & { + inset?: boolean +}) { + return ( + + ) +} + +function DropdownMenuSeparator({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function DropdownMenuShortcut({ + className, + ...props +}: React.ComponentProps<"span">) { + return ( + + ) +} + +function DropdownMenuSub({ + ...props +}: React.ComponentProps) { + return +} + +function DropdownMenuSubTrigger({ + className, + inset, + children, + ...props +}: React.ComponentProps & { + inset?: boolean +}) { + return ( + + {children} + + + ) +} + +function DropdownMenuSubContent({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +export { + DropdownMenu, + DropdownMenuPortal, + DropdownMenuTrigger, + DropdownMenuContent, + DropdownMenuGroup, + DropdownMenuLabel, + DropdownMenuItem, + DropdownMenuCheckboxItem, + DropdownMenuRadioGroup, + DropdownMenuRadioItem, + DropdownMenuSeparator, + DropdownMenuShortcut, + DropdownMenuSub, + DropdownMenuSubTrigger, + DropdownMenuSubContent, +} diff --git a/apps/web-client/src/components/ui/empty.tsx b/apps/web-client/src/components/ui/empty.tsx new file mode 100644 index 0000000..df91e9d --- /dev/null +++ b/apps/web-client/src/components/ui/empty.tsx @@ -0,0 +1,104 @@ +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +function Empty({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function EmptyHeader({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +const emptyMediaVariants = cva( + "flex shrink-0 items-center justify-center mb-2 [&_svg]:pointer-events-none [&_svg]:shrink-0", + { + variants: { + variant: { + default: "bg-transparent", + icon: "bg-muted text-foreground flex size-10 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-6", + }, + }, + defaultVariants: { + variant: "default", + }, + } +) + +function EmptyMedia({ + className, + variant = "default", + ...props +}: React.ComponentProps<"div"> & VariantProps) { + return ( +
+ ) +} + +function EmptyTitle({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function EmptyDescription({ className, ...props }: React.ComponentProps<"p">) { + return ( +
a:hover]:text-primary text-sm/relaxed [&>a]:underline [&>a]:underline-offset-4", + className + )} + {...props} + /> + ) +} + +function EmptyContent({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +export { + Empty, + EmptyHeader, + EmptyTitle, + EmptyDescription, + EmptyContent, + EmptyMedia, +} diff --git a/apps/web-client/src/components/ui/input.tsx b/apps/web-client/src/components/ui/input.tsx new file mode 100644 index 0000000..8916905 --- /dev/null +++ b/apps/web-client/src/components/ui/input.tsx @@ -0,0 +1,21 @@ +import * as React from "react" + +import { cn } from "@/lib/utils" + +function Input({ className, type, ...props }: React.ComponentProps<"input">) { + return ( + + ) +} + +export { Input } diff --git a/apps/web-client/src/components/ui/label.tsx b/apps/web-client/src/components/ui/label.tsx new file mode 100644 index 0000000..fb5fbc3 --- /dev/null +++ b/apps/web-client/src/components/ui/label.tsx @@ -0,0 +1,24 @@ +"use client" + +import * as React from "react" +import * as LabelPrimitive from "@radix-ui/react-label" + +import { cn } from "@/lib/utils" + +function Label({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +export { Label } diff --git a/apps/web-client/src/components/ui/scroll-area.tsx b/apps/web-client/src/components/ui/scroll-area.tsx new file mode 100644 index 0000000..9376f59 --- /dev/null +++ b/apps/web-client/src/components/ui/scroll-area.tsx @@ -0,0 +1,56 @@ +import * as React from "react" +import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area" + +import { cn } from "@/lib/utils" + +function ScrollArea({ + className, + children, + ...props +}: React.ComponentProps) { + return ( + + + {children} + + + + + ) +} + +function ScrollBar({ + className, + orientation = "vertical", + ...props +}: React.ComponentProps) { + return ( + + + + ) +} + +export { ScrollArea, ScrollBar } diff --git a/apps/web-client/src/components/ui/select.tsx b/apps/web-client/src/components/ui/select.tsx new file mode 100644 index 0000000..25e5439 --- /dev/null +++ b/apps/web-client/src/components/ui/select.tsx @@ -0,0 +1,187 @@ +"use client" + +import * as React from "react" +import * as SelectPrimitive from "@radix-ui/react-select" +import { CheckIcon, ChevronDownIcon, ChevronUpIcon } from "lucide-react" + +import { cn } from "@/lib/utils" + +function Select({ + ...props +}: React.ComponentProps) { + return +} + +function SelectGroup({ + ...props +}: React.ComponentProps) { + return +} + +function SelectValue({ + ...props +}: React.ComponentProps) { + return +} + +function SelectTrigger({ + className, + size = "default", + children, + ...props +}: React.ComponentProps & { + size?: "sm" | "default" +}) { + return ( + + {children} + + + + + ) +} + +function SelectContent({ + className, + children, + position = "popper", + align = "center", + ...props +}: React.ComponentProps) { + return ( + + + + + {children} + + + + + ) +} + +function SelectLabel({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function SelectItem({ + className, + children, + ...props +}: React.ComponentProps) { + return ( + + + + + + + {children} + + ) +} + +function SelectSeparator({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function SelectScrollUpButton({ + className, + ...props +}: React.ComponentProps) { + return ( + + + + ) +} + +function SelectScrollDownButton({ + className, + ...props +}: React.ComponentProps) { + return ( + + + + ) +} + +export { + Select, + SelectContent, + SelectGroup, + SelectItem, + SelectLabel, + SelectScrollDownButton, + SelectScrollUpButton, + SelectSeparator, + SelectTrigger, + SelectValue, +} diff --git a/apps/web-client/src/components/ui/separator.tsx b/apps/web-client/src/components/ui/separator.tsx new file mode 100644 index 0000000..bb3ad74 --- /dev/null +++ b/apps/web-client/src/components/ui/separator.tsx @@ -0,0 +1,26 @@ +import * as React from "react" +import * as SeparatorPrimitive from "@radix-ui/react-separator" + +import { cn } from "@/lib/utils" + +function Separator({ + className, + orientation = "horizontal", + decorative = true, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +export { Separator } diff --git a/apps/web-client/src/components/ui/sheet.tsx b/apps/web-client/src/components/ui/sheet.tsx new file mode 100644 index 0000000..84649ad --- /dev/null +++ b/apps/web-client/src/components/ui/sheet.tsx @@ -0,0 +1,139 @@ +"use client" + +import * as React from "react" +import * as SheetPrimitive from "@radix-ui/react-dialog" +import { XIcon } from "lucide-react" + +import { cn } from "@/lib/utils" + +function Sheet({ ...props }: React.ComponentProps) { + return +} + +function SheetTrigger({ + ...props +}: React.ComponentProps) { + return +} + +function SheetClose({ + ...props +}: React.ComponentProps) { + return +} + +function SheetPortal({ + ...props +}: React.ComponentProps) { + return +} + +function SheetOverlay({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function SheetContent({ + className, + children, + side = "right", + ...props +}: React.ComponentProps & { + side?: "top" | "right" | "bottom" | "left" +}) { + return ( + + + + {children} + + + Close + + + + ) +} + +function SheetHeader({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function SheetFooter({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function SheetTitle({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function SheetDescription({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +export { + Sheet, + SheetTrigger, + SheetClose, + SheetContent, + SheetHeader, + SheetFooter, + SheetTitle, + SheetDescription, +} diff --git a/apps/web-client/src/components/ui/sidebar.tsx b/apps/web-client/src/components/ui/sidebar.tsx new file mode 100644 index 0000000..30638ac --- /dev/null +++ b/apps/web-client/src/components/ui/sidebar.tsx @@ -0,0 +1,726 @@ +"use client" + +import * as React from "react" +import { Slot } from "@radix-ui/react-slot" +import { cva, type VariantProps } from "class-variance-authority" +import { PanelLeftIcon } from "lucide-react" + +import { useIsMobile } from "@/hooks/use-mobile" +import { cn } from "@/lib/utils" +import { Button } from "@/components/ui/button" +import { Input } from "@/components/ui/input" +import { Separator } from "@/components/ui/separator" +import { + Sheet, + SheetContent, + SheetDescription, + SheetHeader, + SheetTitle, +} from "@/components/ui/sheet" +import { Skeleton } from "@/components/ui/skeleton" +import { + Tooltip, + TooltipContent, + TooltipProvider, + TooltipTrigger, +} from "@/components/ui/tooltip" + +const SIDEBAR_COOKIE_NAME = "sidebar_state" +const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7 +const SIDEBAR_WIDTH = "16rem" +const SIDEBAR_WIDTH_MOBILE = "18rem" +const SIDEBAR_WIDTH_ICON = "3rem" +const SIDEBAR_KEYBOARD_SHORTCUT = "b" + +type SidebarContextProps = { + state: "expanded" | "collapsed" + open: boolean + setOpen: (open: boolean) => void + openMobile: boolean + setOpenMobile: (open: boolean) => void + isMobile: boolean + toggleSidebar: () => void +} + +const SidebarContext = React.createContext(null) + +function useSidebar() { + const context = React.useContext(SidebarContext) + if (!context) { + throw new Error("useSidebar must be used within a SidebarProvider.") + } + + return context +} + +function SidebarProvider({ + defaultOpen = true, + open: openProp, + onOpenChange: setOpenProp, + className, + style, + children, + ...props +}: React.ComponentProps<"div"> & { + defaultOpen?: boolean + open?: boolean + onOpenChange?: (open: boolean) => void +}) { + const isMobile = useIsMobile() + const [openMobile, setOpenMobile] = React.useState(false) + + // This is the internal state of the sidebar. + // We use openProp and setOpenProp for control from outside the component. + const [_open, _setOpen] = React.useState(defaultOpen) + const open = openProp ?? _open + const setOpen = React.useCallback( + (value: boolean | ((value: boolean) => boolean)) => { + const openState = typeof value === "function" ? value(open) : value + if (setOpenProp) { + setOpenProp(openState) + } else { + _setOpen(openState) + } + + // This sets the cookie to keep the sidebar state. + document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}` + }, + [setOpenProp, open] + ) + + // Helper to toggle the sidebar. + const toggleSidebar = React.useCallback(() => { + return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open) + }, [isMobile, setOpen, setOpenMobile]) + + // Adds a keyboard shortcut to toggle the sidebar. + React.useEffect(() => { + const handleKeyDown = (event: KeyboardEvent) => { + if ( + event.key === SIDEBAR_KEYBOARD_SHORTCUT && + (event.metaKey || event.ctrlKey) + ) { + event.preventDefault() + toggleSidebar() + } + } + + window.addEventListener("keydown", handleKeyDown) + return () => window.removeEventListener("keydown", handleKeyDown) + }, [toggleSidebar]) + + // We add a state so that we can do data-state="expanded" or "collapsed". + // This makes it easier to style the sidebar with Tailwind classes. + const state = open ? "expanded" : "collapsed" + + const contextValue = React.useMemo( + () => ({ + state, + open, + setOpen, + isMobile, + openMobile, + setOpenMobile, + toggleSidebar, + }), + [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar] + ) + + return ( + + +
+ {children} +
+
+
+ ) +} + +function Sidebar({ + side = "left", + variant = "sidebar", + collapsible = "offcanvas", + className, + children, + ...props +}: React.ComponentProps<"div"> & { + side?: "left" | "right" + variant?: "sidebar" | "floating" | "inset" + collapsible?: "offcanvas" | "icon" | "none" +}) { + const { isMobile, state, openMobile, setOpenMobile } = useSidebar() + + if (collapsible === "none") { + return ( +
+ {children} +
+ ) + } + + if (isMobile) { + return ( + + + + Sidebar + Displays the mobile sidebar. + +
{children}
+
+
+ ) + } + + return ( +
+ {/* This is what handles the sidebar gap on desktop */} +
+ +
+ ) +} + +function SidebarTrigger({ + className, + onClick, + ...props +}: React.ComponentProps) { + const { toggleSidebar } = useSidebar() + + return ( + + ) +} + +function SidebarRail({ className, ...props }: React.ComponentProps<"button">) { + const { toggleSidebar } = useSidebar() + + return ( + + ); +} + +function StepperIndicator({ + children, + className, +}: React.ComponentProps<"div">) { + const { state, isLoading } = useStepItem(); + const { indicators } = useStepper(); + + return ( +
+
+ {indicators && + ((isLoading && indicators.loading) || + (state === "completed" && indicators.completed) || + (state === "active" && indicators.active) || + (state === "inactive" && indicators.inactive)) + ? (isLoading && indicators.loading) || + (state === "completed" && indicators.completed) || + (state === "active" && indicators.active) || + (state === "inactive" && indicators.inactive) + : children} +
+
+ ); +} + +function StepperSeparator({ className }: React.ComponentProps<"div">) { + const { state } = useStepItem(); + + return ( +
+ ); +} + +function StepperTitle({ children, className }: React.ComponentProps<"h3">) { + const { state } = useStepItem(); + + return ( +

+ {children} +

+ ); +} + +function StepperDescription({ + children, + className, +}: React.ComponentProps<"div">) { + const { state } = useStepItem(); + + return ( +
+ {children} +
+ ); +} + +function StepperNav({ children, className }: React.ComponentProps<"nav">) { + const { activeStep, orientation } = useStepper(); + + return ( + + ); +} + +function StepperPanel({ children, className }: React.ComponentProps<"div">) { + const { activeStep } = useStepper(); + + return ( +
+ {children} +
+ ); +} + +interface StepperContentProps extends React.ComponentProps<"div"> { + value: number; + forceMount?: boolean; +} + +function StepperContent({ + value, + forceMount, + children, + className, +}: StepperContentProps) { + const { activeStep } = useStepper(); + const isActive = value === activeStep; + + if (!forceMount && !isActive) { + return null; + } + + return ( + + ); +} + +export { + useStepper, + useStepItem, + Stepper, + StepperItem, + StepperTrigger, + StepperIndicator, + StepperSeparator, + StepperTitle, + StepperDescription, + StepperPanel, + StepperContent, + StepperNav, + type StepperProps, + type StepperItemProps, + type StepperTriggerProps, + type StepperContentProps, +}; diff --git a/apps/web-client/src/components/ui/tooltip.tsx b/apps/web-client/src/components/ui/tooltip.tsx new file mode 100644 index 0000000..715bf76 --- /dev/null +++ b/apps/web-client/src/components/ui/tooltip.tsx @@ -0,0 +1,59 @@ +import * as React from "react" +import * as TooltipPrimitive from "@radix-ui/react-tooltip" + +import { cn } from "@/lib/utils" + +function TooltipProvider({ + delayDuration = 0, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function Tooltip({ + ...props +}: React.ComponentProps) { + return ( + + + + ) +} + +function TooltipTrigger({ + ...props +}: React.ComponentProps) { + return +} + +function TooltipContent({ + className, + sideOffset = 0, + children, + ...props +}: React.ComponentProps) { + return ( + + + {children} + + + + ) +} + +export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider } diff --git a/apps/web-client/src/hooks/use-mobile.ts b/apps/web-client/src/hooks/use-mobile.ts new file mode 100644 index 0000000..2b0fe1d --- /dev/null +++ b/apps/web-client/src/hooks/use-mobile.ts @@ -0,0 +1,19 @@ +import * as React from "react" + +const MOBILE_BREAKPOINT = 768 + +export function useIsMobile() { + const [isMobile, setIsMobile] = React.useState(undefined) + + React.useEffect(() => { + const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`) + const onChange = () => { + setIsMobile(window.innerWidth < MOBILE_BREAKPOINT) + } + mql.addEventListener("change", onChange) + setIsMobile(window.innerWidth < MOBILE_BREAKPOINT) + return () => mql.removeEventListener("change", onChange) + }, []) + + return !!isMobile +} diff --git a/apps/web-client/src/hooks/useOnboard.ts b/apps/web-client/src/hooks/useOnboard.ts new file mode 100644 index 0000000..07ddff9 --- /dev/null +++ b/apps/web-client/src/hooks/useOnboard.ts @@ -0,0 +1,14 @@ +import { createContext, useContext } from "react"; +import { OnboardSessionService } from "@/services/onboard"; + +export const OnboardProviderContext = createContext( + new OnboardSessionService(), +); + +export const useOnboard = () => { + const context = useContext(OnboardProviderContext); + if (context === undefined) { + throw new Error("useOnboard must be used within a OnboardProvider"); + } + return context; +}; diff --git a/apps/web-client/src/hooks/useTheme.ts b/apps/web-client/src/hooks/useTheme.ts new file mode 100644 index 0000000..0a6ec74 --- /dev/null +++ b/apps/web-client/src/hooks/useTheme.ts @@ -0,0 +1,25 @@ +import { createContext, useContext } from "react"; + +export type Theme = "dark" | "light" | "system"; + +export type ThemeProviderState = { + theme: Theme; + setTheme: (theme: Theme) => void; +}; + +export const initialState: ThemeProviderState = { + theme: "system", + setTheme: () => null, +}; + +export const ThemeProviderContext = + createContext(initialState); + +export const useTheme = () => { + const context = useContext(ThemeProviderContext); + + if (context === undefined) + throw new Error("useTheme must be used within a ThemeProvider"); + + return context; +}; diff --git a/apps/web-client/src/lib/api.ts b/apps/web-client/src/lib/api.ts new file mode 100644 index 0000000..3124699 --- /dev/null +++ b/apps/web-client/src/lib/api.ts @@ -0,0 +1,24 @@ +import axios from "axios"; + +export const http = axios.create({ + baseURL: import.meta.env.VITE_SERVER_URL as string, + headers: { + Authorization: localStorage.getItem("session_token") + ? `Bearer ${localStorage.getItem("session_token")}` + : "", + }, +}); + +interface HTTPErrorResponse { + error: { + message: string; + context?: C; + } +} + +export function parseHTTPError(error: unknown): HTTPErrorResponse { + if (axios.isAxiosError(error) && error.response) { + return error.response.data as HTTPErrorResponse; + } + return { error: { message: "Unknown error" } }; +} \ No newline at end of file diff --git a/apps/web-client/src/lib/auth-client.ts b/apps/web-client/src/lib/auth-client.ts new file mode 100644 index 0000000..4df67f4 --- /dev/null +++ b/apps/web-client/src/lib/auth-client.ts @@ -0,0 +1,38 @@ +import { + adminRole, + moderatorRole, + statement, + userRole, +} from "@nontara/server/shared"; +import { adminClient, usernameClient } from "better-auth/client/plugins"; +import { createAccessControl } from "better-auth/plugins/access"; +import { createAuthClient } from "better-auth/react"; + +const ac = createAccessControl(statement); + +export const authClient = createAuthClient({ + baseURL: import.meta.env.VITE_SERVER_URL, + plugins: [ + usernameClient(), + adminClient({ + ac, + roles: { + admin: adminRole, + moderator: moderatorRole, + user: userRole, + }, + }), + ], + fetchOptions: { + auth: { + type: "Bearer", + token: () => localStorage.getItem("session_token") || "", + }, + onSuccess: (ctx) => { + const authToken = ctx.response.headers.get("set-auth-token"); + if (authToken) { + localStorage.setItem("session_token", authToken); + } + }, + }, +}); diff --git a/apps/web-client/src/lib/utils.ts b/apps/web-client/src/lib/utils.ts new file mode 100644 index 0000000..42569bc --- /dev/null +++ b/apps/web-client/src/lib/utils.ts @@ -0,0 +1,27 @@ +import type { Models } from "@nontara/server/models"; +import { type ClassValue, clsx } from "clsx"; +import { twMerge } from "tailwind-merge"; +import { http } from "./api"; + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)); +} + +export async function isOnboardNeeded() { + const response = + await http.get("/onboard/status"); + return response.data; +} + +export function formatRuntime(seconds: number | null): string { + if (!seconds) return "N/A"; + + const hours = Math.floor(seconds / 3600); + const minutes = Math.floor((seconds % 3600) / 60); + + if (hours > 0) { + return `${hours}h ${minutes}m`; + } + + return `${minutes}m`; +} diff --git a/apps/web-client/src/logo.svg b/apps/web-client/src/logo.svg new file mode 100644 index 0000000..fe53fe8 --- /dev/null +++ b/apps/web-client/src/logo.svg @@ -0,0 +1,12 @@ + + + logo + + \ No newline at end of file diff --git a/apps/web-client/src/main.tsx b/apps/web-client/src/main.tsx new file mode 100644 index 0000000..8a52660 --- /dev/null +++ b/apps/web-client/src/main.tsx @@ -0,0 +1,62 @@ +import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; +import { createRouter, RouterProvider } from "@tanstack/react-router"; +import { StrictMode } from "react"; +import ReactDOM from "react-dom/client"; +// Import the generated route tree +import { ThemeProvider } from "./components/providers/ThemeProvider.tsx"; +import reportWebVitals from "./reportWebVitals.ts"; +import { routeTree } from "./routeTree.gen"; +import "./styles.css"; + +const queryClient = new QueryClient({ + defaultOptions: { + queries: { + retry: false, + retryDelay: 2, + refetchOnWindowFocus: false, + }, + }, +}); + +// Create a new router instance +const router = createRouter({ + routeTree, + context: { + queryClient, + }, + defaultPreload: "intent", + scrollRestoration: true, + defaultStructuralSharing: true, + defaultPreloadStaleTime: 0, + Wrap: ({ children }) => { + return ( + + {children} + + ); + }, +}); + +// Register the router instance for type safety +declare module "@tanstack/react-router" { + interface Register { + router: typeof router; + } +} + +// Render the app +const rootElement = document.getElementById("app"); +if (rootElement && !rootElement.innerHTML) { + const root = ReactDOM.createRoot(rootElement); + + root.render( + + + , + ); +} + +// If you want to start measuring performance in your app, pass a function +// to log results (for example: reportWebVitals(console.log)) +// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals +reportWebVitals(); diff --git a/apps/web-client/src/reportWebVitals.ts b/apps/web-client/src/reportWebVitals.ts new file mode 100644 index 0000000..16b66b5 --- /dev/null +++ b/apps/web-client/src/reportWebVitals.ts @@ -0,0 +1,13 @@ +const reportWebVitals = (onPerfEntry?: () => void) => { + if (onPerfEntry && onPerfEntry instanceof Function) { + import('web-vitals').then(({ onCLS, onINP, onFCP, onLCP, onTTFB }) => { + onCLS(onPerfEntry) + onINP(onPerfEntry) + onFCP(onPerfEntry) + onLCP(onPerfEntry) + onTTFB(onPerfEntry) + }) + } +} + +export default reportWebVitals diff --git a/apps/web-client/src/routeTree.gen.ts b/apps/web-client/src/routeTree.gen.ts new file mode 100644 index 0000000..bfb0e3b --- /dev/null +++ b/apps/web-client/src/routeTree.gen.ts @@ -0,0 +1,462 @@ +/* eslint-disable */ + +// @ts-nocheck + +// noinspection JSUnusedGlobalSymbols + +// This file was automatically generated by TanStack Router. +// You should NOT make any changes in this file as it will be overwritten. +// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified. + +import { Route as rootRouteImport } from './routes/__root' +import { Route as SignupRouteImport } from './routes/signup' +import { Route as OnboardRouteImport } from './routes/onboard' +import { Route as LoginRouteImport } from './routes/login' +import { Route as HomeRouteImport } from './routes/home' +import { Route as DashboardRouteImport } from './routes/dashboard' +import { Route as IndexRouteImport } from './routes/index' +import { Route as OnboardIndexRouteImport } from './routes/onboard/index' +import { Route as HomeIndexRouteImport } from './routes/home/index' +import { Route as DashboardIndexRouteImport } from './routes/dashboard/index' +import { Route as WatchIdRouteImport } from './routes/watch/$id' +import { Route as OnboardSetupRouteImport } from './routes/onboard/setup' +import { Route as OnboardLanguageRouteImport } from './routes/onboard/language' +import { Route as OnboardCompleteRouteImport } from './routes/onboard/complete' +import { Route as HomeSearchRouteImport } from './routes/home/search' +import { Route as DashboardUsersRouteImport } from './routes/dashboard/users' +import { Route as DashboardLibrariesRouteImport } from './routes/dashboard/libraries' +import { Route as DashboardExtensionsRouteImport } from './routes/dashboard/extensions' +import { Route as HomeLibraryIdRouteImport } from './routes/home/library/$id' +import { Route as HomeDetailsIdRouteImport } from './routes/home/details/$id' + +const SignupRoute = SignupRouteImport.update({ + id: '/signup', + path: '/signup', + getParentRoute: () => rootRouteImport, +} as any) +const OnboardRoute = OnboardRouteImport.update({ + id: '/onboard', + path: '/onboard', + getParentRoute: () => rootRouteImport, +} as any) +const LoginRoute = LoginRouteImport.update({ + id: '/login', + path: '/login', + getParentRoute: () => rootRouteImport, +} as any) +const HomeRoute = HomeRouteImport.update({ + id: '/home', + path: '/home', + getParentRoute: () => rootRouteImport, +} as any) +const DashboardRoute = DashboardRouteImport.update({ + id: '/dashboard', + path: '/dashboard', + getParentRoute: () => rootRouteImport, +} as any) +const IndexRoute = IndexRouteImport.update({ + id: '/', + path: '/', + getParentRoute: () => rootRouteImport, +} as any) +const OnboardIndexRoute = OnboardIndexRouteImport.update({ + id: '/', + path: '/', + getParentRoute: () => OnboardRoute, +} as any) +const HomeIndexRoute = HomeIndexRouteImport.update({ + id: '/', + path: '/', + getParentRoute: () => HomeRoute, +} as any) +const DashboardIndexRoute = DashboardIndexRouteImport.update({ + id: '/', + path: '/', + getParentRoute: () => DashboardRoute, +} as any) +const WatchIdRoute = WatchIdRouteImport.update({ + id: '/watch/$id', + path: '/watch/$id', + getParentRoute: () => rootRouteImport, +} as any) +const OnboardSetupRoute = OnboardSetupRouteImport.update({ + id: '/setup', + path: '/setup', + getParentRoute: () => OnboardRoute, +} as any) +const OnboardLanguageRoute = OnboardLanguageRouteImport.update({ + id: '/language', + path: '/language', + getParentRoute: () => OnboardRoute, +} as any) +const OnboardCompleteRoute = OnboardCompleteRouteImport.update({ + id: '/complete', + path: '/complete', + getParentRoute: () => OnboardRoute, +} as any) +const HomeSearchRoute = HomeSearchRouteImport.update({ + id: '/search', + path: '/search', + getParentRoute: () => HomeRoute, +} as any) +const DashboardUsersRoute = DashboardUsersRouteImport.update({ + id: '/users', + path: '/users', + getParentRoute: () => DashboardRoute, +} as any) +const DashboardLibrariesRoute = DashboardLibrariesRouteImport.update({ + id: '/libraries', + path: '/libraries', + getParentRoute: () => DashboardRoute, +} as any) +const DashboardExtensionsRoute = DashboardExtensionsRouteImport.update({ + id: '/extensions', + path: '/extensions', + getParentRoute: () => DashboardRoute, +} as any) +const HomeLibraryIdRoute = HomeLibraryIdRouteImport.update({ + id: '/library/$id', + path: '/library/$id', + getParentRoute: () => HomeRoute, +} as any) +const HomeDetailsIdRoute = HomeDetailsIdRouteImport.update({ + id: '/details/$id', + path: '/details/$id', + getParentRoute: () => HomeRoute, +} as any) + +export interface FileRoutesByFullPath { + '/': typeof IndexRoute + '/dashboard': typeof DashboardRouteWithChildren + '/home': typeof HomeRouteWithChildren + '/login': typeof LoginRoute + '/onboard': typeof OnboardRouteWithChildren + '/signup': typeof SignupRoute + '/dashboard/extensions': typeof DashboardExtensionsRoute + '/dashboard/libraries': typeof DashboardLibrariesRoute + '/dashboard/users': typeof DashboardUsersRoute + '/home/search': typeof HomeSearchRoute + '/onboard/complete': typeof OnboardCompleteRoute + '/onboard/language': typeof OnboardLanguageRoute + '/onboard/setup': typeof OnboardSetupRoute + '/watch/$id': typeof WatchIdRoute + '/dashboard/': typeof DashboardIndexRoute + '/home/': typeof HomeIndexRoute + '/onboard/': typeof OnboardIndexRoute + '/home/details/$id': typeof HomeDetailsIdRoute + '/home/library/$id': typeof HomeLibraryIdRoute +} +export interface FileRoutesByTo { + '/': typeof IndexRoute + '/login': typeof LoginRoute + '/signup': typeof SignupRoute + '/dashboard/extensions': typeof DashboardExtensionsRoute + '/dashboard/libraries': typeof DashboardLibrariesRoute + '/dashboard/users': typeof DashboardUsersRoute + '/home/search': typeof HomeSearchRoute + '/onboard/complete': typeof OnboardCompleteRoute + '/onboard/language': typeof OnboardLanguageRoute + '/onboard/setup': typeof OnboardSetupRoute + '/watch/$id': typeof WatchIdRoute + '/dashboard': typeof DashboardIndexRoute + '/home': typeof HomeIndexRoute + '/onboard': typeof OnboardIndexRoute + '/home/details/$id': typeof HomeDetailsIdRoute + '/home/library/$id': typeof HomeLibraryIdRoute +} +export interface FileRoutesById { + __root__: typeof rootRouteImport + '/': typeof IndexRoute + '/dashboard': typeof DashboardRouteWithChildren + '/home': typeof HomeRouteWithChildren + '/login': typeof LoginRoute + '/onboard': typeof OnboardRouteWithChildren + '/signup': typeof SignupRoute + '/dashboard/extensions': typeof DashboardExtensionsRoute + '/dashboard/libraries': typeof DashboardLibrariesRoute + '/dashboard/users': typeof DashboardUsersRoute + '/home/search': typeof HomeSearchRoute + '/onboard/complete': typeof OnboardCompleteRoute + '/onboard/language': typeof OnboardLanguageRoute + '/onboard/setup': typeof OnboardSetupRoute + '/watch/$id': typeof WatchIdRoute + '/dashboard/': typeof DashboardIndexRoute + '/home/': typeof HomeIndexRoute + '/onboard/': typeof OnboardIndexRoute + '/home/details/$id': typeof HomeDetailsIdRoute + '/home/library/$id': typeof HomeLibraryIdRoute +} +export interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: + | '/' + | '/dashboard' + | '/home' + | '/login' + | '/onboard' + | '/signup' + | '/dashboard/extensions' + | '/dashboard/libraries' + | '/dashboard/users' + | '/home/search' + | '/onboard/complete' + | '/onboard/language' + | '/onboard/setup' + | '/watch/$id' + | '/dashboard/' + | '/home/' + | '/onboard/' + | '/home/details/$id' + | '/home/library/$id' + fileRoutesByTo: FileRoutesByTo + to: + | '/' + | '/login' + | '/signup' + | '/dashboard/extensions' + | '/dashboard/libraries' + | '/dashboard/users' + | '/home/search' + | '/onboard/complete' + | '/onboard/language' + | '/onboard/setup' + | '/watch/$id' + | '/dashboard' + | '/home' + | '/onboard' + | '/home/details/$id' + | '/home/library/$id' + id: + | '__root__' + | '/' + | '/dashboard' + | '/home' + | '/login' + | '/onboard' + | '/signup' + | '/dashboard/extensions' + | '/dashboard/libraries' + | '/dashboard/users' + | '/home/search' + | '/onboard/complete' + | '/onboard/language' + | '/onboard/setup' + | '/watch/$id' + | '/dashboard/' + | '/home/' + | '/onboard/' + | '/home/details/$id' + | '/home/library/$id' + fileRoutesById: FileRoutesById +} +export interface RootRouteChildren { + IndexRoute: typeof IndexRoute + DashboardRoute: typeof DashboardRouteWithChildren + HomeRoute: typeof HomeRouteWithChildren + LoginRoute: typeof LoginRoute + OnboardRoute: typeof OnboardRouteWithChildren + SignupRoute: typeof SignupRoute + WatchIdRoute: typeof WatchIdRoute +} + +declare module '@tanstack/react-router' { + interface FileRoutesByPath { + '/signup': { + id: '/signup' + path: '/signup' + fullPath: '/signup' + preLoaderRoute: typeof SignupRouteImport + parentRoute: typeof rootRouteImport + } + '/onboard': { + id: '/onboard' + path: '/onboard' + fullPath: '/onboard' + preLoaderRoute: typeof OnboardRouteImport + parentRoute: typeof rootRouteImport + } + '/login': { + id: '/login' + path: '/login' + fullPath: '/login' + preLoaderRoute: typeof LoginRouteImport + parentRoute: typeof rootRouteImport + } + '/home': { + id: '/home' + path: '/home' + fullPath: '/home' + preLoaderRoute: typeof HomeRouteImport + parentRoute: typeof rootRouteImport + } + '/dashboard': { + id: '/dashboard' + path: '/dashboard' + fullPath: '/dashboard' + preLoaderRoute: typeof DashboardRouteImport + parentRoute: typeof rootRouteImport + } + '/': { + id: '/' + path: '/' + fullPath: '/' + preLoaderRoute: typeof IndexRouteImport + parentRoute: typeof rootRouteImport + } + '/onboard/': { + id: '/onboard/' + path: '/' + fullPath: '/onboard/' + preLoaderRoute: typeof OnboardIndexRouteImport + parentRoute: typeof OnboardRoute + } + '/home/': { + id: '/home/' + path: '/' + fullPath: '/home/' + preLoaderRoute: typeof HomeIndexRouteImport + parentRoute: typeof HomeRoute + } + '/dashboard/': { + id: '/dashboard/' + path: '/' + fullPath: '/dashboard/' + preLoaderRoute: typeof DashboardIndexRouteImport + parentRoute: typeof DashboardRoute + } + '/watch/$id': { + id: '/watch/$id' + path: '/watch/$id' + fullPath: '/watch/$id' + preLoaderRoute: typeof WatchIdRouteImport + parentRoute: typeof rootRouteImport + } + '/onboard/setup': { + id: '/onboard/setup' + path: '/setup' + fullPath: '/onboard/setup' + preLoaderRoute: typeof OnboardSetupRouteImport + parentRoute: typeof OnboardRoute + } + '/onboard/language': { + id: '/onboard/language' + path: '/language' + fullPath: '/onboard/language' + preLoaderRoute: typeof OnboardLanguageRouteImport + parentRoute: typeof OnboardRoute + } + '/onboard/complete': { + id: '/onboard/complete' + path: '/complete' + fullPath: '/onboard/complete' + preLoaderRoute: typeof OnboardCompleteRouteImport + parentRoute: typeof OnboardRoute + } + '/home/search': { + id: '/home/search' + path: '/search' + fullPath: '/home/search' + preLoaderRoute: typeof HomeSearchRouteImport + parentRoute: typeof HomeRoute + } + '/dashboard/users': { + id: '/dashboard/users' + path: '/users' + fullPath: '/dashboard/users' + preLoaderRoute: typeof DashboardUsersRouteImport + parentRoute: typeof DashboardRoute + } + '/dashboard/libraries': { + id: '/dashboard/libraries' + path: '/libraries' + fullPath: '/dashboard/libraries' + preLoaderRoute: typeof DashboardLibrariesRouteImport + parentRoute: typeof DashboardRoute + } + '/dashboard/extensions': { + id: '/dashboard/extensions' + path: '/extensions' + fullPath: '/dashboard/extensions' + preLoaderRoute: typeof DashboardExtensionsRouteImport + parentRoute: typeof DashboardRoute + } + '/home/library/$id': { + id: '/home/library/$id' + path: '/library/$id' + fullPath: '/home/library/$id' + preLoaderRoute: typeof HomeLibraryIdRouteImport + parentRoute: typeof HomeRoute + } + '/home/details/$id': { + id: '/home/details/$id' + path: '/details/$id' + fullPath: '/home/details/$id' + preLoaderRoute: typeof HomeDetailsIdRouteImport + parentRoute: typeof HomeRoute + } + } +} + +interface DashboardRouteChildren { + DashboardExtensionsRoute: typeof DashboardExtensionsRoute + DashboardLibrariesRoute: typeof DashboardLibrariesRoute + DashboardUsersRoute: typeof DashboardUsersRoute + DashboardIndexRoute: typeof DashboardIndexRoute +} + +const DashboardRouteChildren: DashboardRouteChildren = { + DashboardExtensionsRoute: DashboardExtensionsRoute, + DashboardLibrariesRoute: DashboardLibrariesRoute, + DashboardUsersRoute: DashboardUsersRoute, + DashboardIndexRoute: DashboardIndexRoute, +} + +const DashboardRouteWithChildren = DashboardRoute._addFileChildren( + DashboardRouteChildren, +) + +interface HomeRouteChildren { + HomeSearchRoute: typeof HomeSearchRoute + HomeIndexRoute: typeof HomeIndexRoute + HomeDetailsIdRoute: typeof HomeDetailsIdRoute + HomeLibraryIdRoute: typeof HomeLibraryIdRoute +} + +const HomeRouteChildren: HomeRouteChildren = { + HomeSearchRoute: HomeSearchRoute, + HomeIndexRoute: HomeIndexRoute, + HomeDetailsIdRoute: HomeDetailsIdRoute, + HomeLibraryIdRoute: HomeLibraryIdRoute, +} + +const HomeRouteWithChildren = HomeRoute._addFileChildren(HomeRouteChildren) + +interface OnboardRouteChildren { + OnboardCompleteRoute: typeof OnboardCompleteRoute + OnboardLanguageRoute: typeof OnboardLanguageRoute + OnboardSetupRoute: typeof OnboardSetupRoute + OnboardIndexRoute: typeof OnboardIndexRoute +} + +const OnboardRouteChildren: OnboardRouteChildren = { + OnboardCompleteRoute: OnboardCompleteRoute, + OnboardLanguageRoute: OnboardLanguageRoute, + OnboardSetupRoute: OnboardSetupRoute, + OnboardIndexRoute: OnboardIndexRoute, +} + +const OnboardRouteWithChildren = + OnboardRoute._addFileChildren(OnboardRouteChildren) + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + DashboardRoute: DashboardRouteWithChildren, + HomeRoute: HomeRouteWithChildren, + LoginRoute: LoginRoute, + OnboardRoute: OnboardRouteWithChildren, + SignupRoute: SignupRoute, + WatchIdRoute: WatchIdRoute, +} +export const routeTree = rootRouteImport + ._addFileChildren(rootRouteChildren) + ._addFileTypes() diff --git a/apps/web-client/src/routes/__root.tsx b/apps/web-client/src/routes/__root.tsx new file mode 100644 index 0000000..b3f3b26 --- /dev/null +++ b/apps/web-client/src/routes/__root.tsx @@ -0,0 +1,14 @@ +import type { QueryClient } from "@tanstack/react-query"; +import { createRootRouteWithContext, Outlet } from "@tanstack/react-router"; + +interface MyRouterContext { + queryClient: QueryClient; +} + +export const Route = createRootRouteWithContext()({ + component: () => ( + <> + + + ), +}); diff --git a/apps/web-client/src/routes/dashboard.tsx b/apps/web-client/src/routes/dashboard.tsx new file mode 100644 index 0000000..6133ebc --- /dev/null +++ b/apps/web-client/src/routes/dashboard.tsx @@ -0,0 +1,169 @@ +import logoSrc from "@/assets/logo.png"; +import { DashboardHeader } from "@/components/dashboard/DashboardHeader"; +import { UserAccountDropdown } from "@/components/dashboard/UserAccountDropdown"; +import { Button } from "@/components/ui/button"; +import { + Empty, + EmptyContent, + EmptyDescription, + EmptyHeader, + EmptyMedia, + EmptyTitle, +} from "@/components/ui/empty"; +import { + Sidebar, + SidebarContent, + SidebarFooter, + SidebarGroup, + SidebarGroupContent, + SidebarHeader, + SidebarInset, + SidebarMenu, + SidebarMenuButton, + SidebarMenuItem, + SidebarProvider, +} from "@/components/ui/sidebar"; +import { authClient } from "@/lib/auth-client"; +import type { FileRoutesByTo } from "@/routeTree.gen"; +import { createFileRoute, Link, Outlet, useMatchRoute } from '@tanstack/react-router'; +import type { LucideIcon } from "lucide-react"; +import { + ArrowLeft, + Database, + LayoutDashboard, + Puzzle, + Settings, + Users, +} from "lucide-react"; + +type DashboardRoute = Extract< + keyof FileRoutesByTo, + | "/dashboard" + | "/dashboard/users" + | "/dashboard/libraries" + | "/dashboard/extensions" +>; + +interface MenuItem { + readonly title: string; + readonly url: DashboardRoute; + readonly icon: LucideIcon; +} + +const menuItems: readonly MenuItem[] = [ + { + title: "Dashboard", + url: "/dashboard", + icon: LayoutDashboard, + }, + { + title: "Users", + url: "/dashboard/users", + icon: Users, + }, + { + title: "Libraries", + url: "/dashboard/libraries", + icon: Database, + }, + { + title: "Extensions", + url: "/dashboard/extensions", + icon: Puzzle, + }, +]; + +export const Route = createFileRoute('/dashboard')({ + component: RouteComponent, + loader: async () => { + const hasAccess = await authClient.admin.hasPermission({ + permissions: { + dashboard: ["access"], + }, + }); + return { hasAccess: hasAccess.data?.success ?? false }; + } +}) + +function RouteComponent() { + const matchRoute = useMatchRoute(); + const loaderData = Route.useLoaderData(); + if (!loaderData.hasAccess) { + return ( +
+ + + + + + Access Denied + + You do not have permission to access the dashboard. Please contact + an administrator if you believe this is an error. + + + + + + +
+ ); + } + + return ( + + + + + Nontara + + + + + + + {menuItems.map((item) => { + const isActive = !!matchRoute({ to: item.url, fuzzy: false }); + return ( + + + + + {item.title} + + + + ); + })} + + + + + + + + + + + + + + + + + + ); +} diff --git a/apps/web-client/src/routes/dashboard/extensions.tsx b/apps/web-client/src/routes/dashboard/extensions.tsx new file mode 100644 index 0000000..e925f17 --- /dev/null +++ b/apps/web-client/src/routes/dashboard/extensions.tsx @@ -0,0 +1,9 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/dashboard/extensions')({ + component: RouteComponent, +}) + +function RouteComponent() { + return
Hello "/dashboard/extensions"!
+} diff --git a/apps/web-client/src/routes/dashboard/index.tsx b/apps/web-client/src/routes/dashboard/index.tsx new file mode 100644 index 0000000..c82d325 --- /dev/null +++ b/apps/web-client/src/routes/dashboard/index.tsx @@ -0,0 +1,9 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/dashboard/')({ + component: RouteComponent, +}) + +function RouteComponent() { + return
Hello "/dashboard/"!
+} diff --git a/apps/web-client/src/routes/dashboard/libraries.tsx b/apps/web-client/src/routes/dashboard/libraries.tsx new file mode 100644 index 0000000..ee5be21 --- /dev/null +++ b/apps/web-client/src/routes/dashboard/libraries.tsx @@ -0,0 +1,9 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/dashboard/libraries')({ + component: RouteComponent, +}) + +function RouteComponent() { + return
Hello "/dashboard/libraries"!
+} diff --git a/apps/web-client/src/routes/dashboard/users.tsx b/apps/web-client/src/routes/dashboard/users.tsx new file mode 100644 index 0000000..fd7e712 --- /dev/null +++ b/apps/web-client/src/routes/dashboard/users.tsx @@ -0,0 +1,9 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/dashboard/users')({ + component: RouteComponent, +}) + +function RouteComponent() { + return
Hello "/dashboard/users"!
+} diff --git a/apps/web-client/src/routes/home.tsx b/apps/web-client/src/routes/home.tsx new file mode 100644 index 0000000..edf8487 --- /dev/null +++ b/apps/web-client/src/routes/home.tsx @@ -0,0 +1,25 @@ +import { createFileRoute, Outlet } from "@tanstack/react-router"; +import Header from "@/components/Header"; + +export const Route = createFileRoute("/home")({ + component: RouteComponent, + head() { + return { + meta: [ + { + title: "Home - Nontara", + }, + ], + }; + }, +}); + +function RouteComponent() { + return ( +
+
+ +
+
+ ); +} diff --git a/apps/web-client/src/routes/home/details/$id.tsx b/apps/web-client/src/routes/home/details/$id.tsx new file mode 100644 index 0000000..746c124 --- /dev/null +++ b/apps/web-client/src/routes/home/details/$id.tsx @@ -0,0 +1,87 @@ +import type { Models } from "@nontara/server/models"; +import { useQuery } from "@tanstack/react-query"; +import { createFileRoute, Link } from "@tanstack/react-router"; +import { AlertCircle, ArrowLeft, Loader2 } from "lucide-react"; +import TitleDetails from "@/components/nontara/TitleDetails"; +import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert"; +import { Button } from "@/components/ui/button"; +import { http, parseHTTPError } from "@/lib/api"; +export const Route = createFileRoute("/home/details/$id")({ + component: RouteComponent, +}); + +function RouteComponent() { + const { id } = Route.useParams(); + const { + data, + isLoading, + isError, + error: httpError, + } = useQuery({ + queryKey: ["title", id], + queryFn: async () => { + const response = await http.get( + `/title/details/${id}`, + ); + return response.data; + }, + }); + // Loading state + if (isLoading) { + return ( +
+
+ +

Loading title details...

+
+
+ ); + } + + // Error state + if (isError) { + const { error } = parseHTTPError(httpError); + return ( +
+ + + Error + {error.message} + +
+ + + +
+
+ ); + } + + // Success state + if (!data) { + return ( +
+ + + No Data + + No title data was returned from the server. + + +
+ + + +
+
+ ); + } + + return ; +} diff --git a/apps/web-client/src/routes/home/index.tsx b/apps/web-client/src/routes/home/index.tsx new file mode 100644 index 0000000..27a0cba --- /dev/null +++ b/apps/web-client/src/routes/home/index.tsx @@ -0,0 +1,14 @@ +import { createFileRoute } from "@tanstack/react-router"; +import RecentlyAddedSections from "@/components/nontara/RecentlyAddedSections"; + +export const Route = createFileRoute("/home/")({ + component: RouteComponent, +}); + +function RouteComponent() { + return ( +
+ +
+ ); +} diff --git a/apps/web-client/src/routes/home/library/$id.tsx b/apps/web-client/src/routes/home/library/$id.tsx new file mode 100644 index 0000000..df8d49a --- /dev/null +++ b/apps/web-client/src/routes/home/library/$id.tsx @@ -0,0 +1,181 @@ +import type { Models } from "@nontara/server/models"; +import { useQuery } from "@tanstack/react-query"; +import { createFileRoute, Link, useNavigate } from "@tanstack/react-router"; +import { + AlertCircle, + ArrowLeft, + ChevronLeft, + ChevronRight, +} from "lucide-react"; +import z from "zod"; +import MovieCard from "@/components/nontara/MovieCard"; +import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert"; +import { Button } from "@/components/ui/button"; +import { Skeleton } from "@/components/ui/skeleton"; +import { http, parseHTTPError } from "@/lib/api"; + +const LibrarySearchParamsSchema = z.object({ + page: z.coerce.number().int().positive().optional(), +}); + +export const Route = createFileRoute("/home/library/$id")({ + component: RouteComponent, + validateSearch: LibrarySearchParamsSchema, +}); + +function RouteComponent() { + const { id } = Route.useParams(); + const libraryId = Number.parseInt(id, 10); + const { page = 1 } = Route.useSearch(); + const navigate = useNavigate(); + + const { data, isLoading, error } = useQuery({ + queryKey: ["library", libraryId], + queryFn: async () => { + const response = await http.get( + "library/titles", + { + params: { + libraryId, + page, + limit: 20, + }, + }, + ); + return response.data; + }, + }); + + const updatePage = (newPage: number) => { + navigate({ + from: Route.id, + search: (prev) => ({ + ...prev, + page: newPage === 1 ? undefined : newPage, + }), + }); + }; + + // Loading state + if (isLoading) { + return ( +
+ +
+ {Array.from( + { length: 12 }, + (_, i) => `skeleton-${Date.now()}-${i}`, + ).map((key) => ( +
+ + + +
+ ))} +
+
+ ); + } + + // Error state + if (error) { + const { error: errorInfo } = parseHTTPError(error); + + return ( +
+ + + Error + {errorInfo.message} + +
+ + + +
+
+ ); + } + + // Empty state + if (!data || data.titles.length === 0) { + return ( +
+

Library Titles

+ + + No Titles Found + + This library doesn't have any titles yet. + + +
+ + + +
+
+ ); + } + + const { titles, pagination } = data; + + return ( +
+
+

Library Titles

+
+ {pagination.total} {pagination.total === 1 ? "title" : "titles"} +
+
+ + {/* Titles Grid */} +
+ {titles.map((title) => ( + + ))} +
+ + {/* Pagination Controls */} + {pagination.totalPages > 1 && ( +
+ + + Page {page} of {pagination.totalPages} + + +
+ )} +
+ ); +} diff --git a/apps/web-client/src/routes/home/search.tsx b/apps/web-client/src/routes/home/search.tsx new file mode 100644 index 0000000..8df1e84 --- /dev/null +++ b/apps/web-client/src/routes/home/search.tsx @@ -0,0 +1,162 @@ +import { useQuery } from "@tanstack/react-query"; +import { createFileRoute, useNavigate } from "@tanstack/react-router"; +import { AlertCircle, Search } from "lucide-react"; +import * as React from "react"; +import MovieCard from "@/components/nontara/MovieCard"; +import { + Empty, + EmptyDescription, + EmptyHeader, + EmptyMedia, + EmptyTitle, +} from "@/components/ui/empty"; +import { Input } from "@/components/ui/input"; +import { Skeleton } from "@/components/ui/skeleton"; +import { http } from "@/lib/api"; + +type TitleSearchParams = { + q?: string; +}; + +export const Route = createFileRoute("/home/search")({ + component: RouteComponent, + validateSearch: (search: Record): TitleSearchParams => { + return { + q: typeof search.q === "string" ? search.q : undefined, + }; + }, +}); + +function RouteComponent() { + const navigate = useNavigate({ from: Route.fullPath }); + const { q: searchQuery = "" } = Route.useSearch(); + const [inputValue, setInputValue] = React.useState(searchQuery); + + // Sync input value with URL param when it changes externally + React.useEffect(() => { + setInputValue(searchQuery); + }, [searchQuery]); + + // Debounce URL update + React.useEffect(() => { + const timer = setTimeout(() => { + navigate({ + search: (prev) => ({ ...prev, q: inputValue || undefined }), + replace: true, + }); + }, 300); + + return () => clearTimeout(timer); + }, [inputValue, navigate]); + + const { data, isLoading, error } = useQuery({ + queryKey: ["search", searchQuery], + queryFn: async () => { + const response = await http.get("/search"); + return response.data; + }, + }); + + return ( +
+ {/* Centered Search Input */} +
+
+ + setInputValue(e.target.value)} + className="h-12 pl-10 text-base" + /> +
+
+ + {/* Results Section */} +
+ {/* Empty State */} + {!searchQuery && ( + + + + + + Search for titles + + Start typing to search for movies and series + + + + )} + + {/* Loading State */} + {searchQuery && isLoading && ( +
+ {Array.from( + { length: 12 }, + (_, i) => `skeleton-${Date.now()}-${i}`, + ).map((key) => ( +
+ + + +
+ ))} +
+ )} + + {/* Error State */} + {searchQuery && error && ( + + + + + + Failed to load results + + Something went wrong. Please try again. + + + + )} + + {/* Results State */} + {searchQuery && !isLoading && data && data.length > 0 && ( +
+

+ Found {data.length} result{data.length > 1 ? "s" : ""} for " + {searchQuery}" +

+
+ {data.map((title) => ( + + ))} +
+
+ )} + + {/* No Results State */} + {searchQuery && !isLoading && data && data.length === 0 && ( + + + + + + No results found + + No titles found for "{searchQuery}" + + + + )} +
+
+ ); +} diff --git a/apps/web-client/src/routes/index.tsx b/apps/web-client/src/routes/index.tsx new file mode 100644 index 0000000..b0cc0f0 --- /dev/null +++ b/apps/web-client/src/routes/index.tsx @@ -0,0 +1,56 @@ +import { createFileRoute, useNavigate } from "@tanstack/react-router"; +import { useEffect, useEffectEvent } from "react"; +import { isOnboardNeeded } from "@/lib/utils"; +import logo from "../logo.svg"; + +export const Route = createFileRoute("/")({ + component: App, + loader: async () => { + return await isOnboardNeeded(); + }, +}); + +function App() { + const loaderData = Route.useLoaderData(); + const navigate = useNavigate(); + const onRendered = useEffectEvent(() => { + if (loaderData.needsOnboarding) { + navigate({ to: "/onboard" }); + } else { + navigate({ to: "/login" }); + } + }); + useEffect(() => { + onRendered(); + }, []); + return ( +
+
+ logo +

+ Edit src/routes/index.tsx and save to reload. +

+ + Learn React + + + Learn TanStack + +
+
+ ); +} diff --git a/apps/web-client/src/routes/login.tsx b/apps/web-client/src/routes/login.tsx new file mode 100644 index 0000000..78afcd7 --- /dev/null +++ b/apps/web-client/src/routes/login.tsx @@ -0,0 +1,14 @@ +import SignInForm from "@/components/SignInForm"; +import { createFileRoute } from "@tanstack/react-router"; + +export const Route = createFileRoute("/login")({ + component: RouteComponent, +}); + +function RouteComponent() { + return ( +
+ +
+ ); +} diff --git a/apps/web-client/src/routes/onboard.tsx b/apps/web-client/src/routes/onboard.tsx new file mode 100644 index 0000000..130b6bd --- /dev/null +++ b/apps/web-client/src/routes/onboard.tsx @@ -0,0 +1,144 @@ +import { + createFileRoute, + Outlet, + useLocation, + useNavigate, +} from "@tanstack/react-router"; +import { + Check, + FolderCog, + Languages as LanguagesIcon, + LoaderCircleIcon, + PartyPopper, + UserRoundPlus, +} from "lucide-react"; +import { useEffect, useEffectEvent, useMemo } from "react"; +import { OnboardProvider } from "@/components/providers/OnboardProvider"; +import SetupHeader from "@/components/setup/header"; +import { + Stepper, + StepperIndicator, + StepperItem, + StepperNav, + StepperSeparator, + StepperTitle, + StepperTrigger, +} from "@/components/ui/stepper"; +import { useOnboard } from "@/hooks/useOnboard"; + +const steps = [ + { + title: "Create your account", + description: + "Set up the primary administrator credentials for your server.", + icon: UserRoundPlus, + to: "/onboard" as const, + }, + { + title: "Add media libraries", + description: + "Point Nontara to your movie and series folders so we can keep them in sync.", + icon: FolderCog, + to: "/onboard/setup" as const, + }, + { + title: "Language preferences", + description: + "Choose metadata languages from providers like TMDB or OMDB and add a fallback.", + icon: LanguagesIcon, + to: "/onboard/language" as const, + }, + { + title: "Wrap things up", + description: + "Review your setup summary and mark everything as complete before launch.", + icon: PartyPopper, + to: "/onboard/complete" as const, + }, +] as const; + +let intialized = false; + +export const Route = createFileRoute("/onboard")({ + component: RouteComponent, +}); + +function RouteComponent() { + const { pathname } = useLocation(); + const navigate = useNavigate(); + const onboard = useOnboard(); + const activeIndex = useMemo(() => { + const index = steps.findIndex((step) => step.to === pathname); + const currentStep = onboard.getCurrentStep(); + // Allow navigation to previous or current steps, but not future steps + if (index !== -1 && index <= currentStep) { + return index; + } + return currentStep; + }, [pathname, onboard]); + const onCurrentStepChecking = useEffectEvent(() => { + if (steps[activeIndex].to !== pathname) { + console.debug( + "Current page is not match with onboard current step, navigating...", + ); + navigate({ to: steps[activeIndex].to }); + } + }); + useEffect(() => { + if (!intialized) onCurrentStepChecking(); + intialized = true; + }); + return ( + +
+ +
+ , + loading: , + }} + className="w-full space-y-8" + > + + {steps.map((step, index) => { + const stepNumber = index + 1; + + return ( + + event.preventDefault()} + onKeyDown={(event) => event.preventDefault()} + className="flex cursor-default items-center justify-start gap-1.5" + > + + {stepNumber} + + + {step.title} + + + + {index < steps.length - 1 ? ( + + ) : null} + + ); + })} + + + +
+ +
+
+
+
+ ); +} diff --git a/apps/web-client/src/routes/onboard/complete.tsx b/apps/web-client/src/routes/onboard/complete.tsx new file mode 100644 index 0000000..b97f6f9 --- /dev/null +++ b/apps/web-client/src/routes/onboard/complete.tsx @@ -0,0 +1,163 @@ +import { Button } from "@/components/ui/button"; +import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; +import { useOnboard } from "@/hooks/useOnboard"; +import { http } from "@/lib/api"; +import type { Models } from "@nontara/server/models"; +import { useMutation } from "@tanstack/react-query"; +import { createFileRoute, useNavigate } from '@tanstack/react-router'; +import lodash from "lodash"; +import { Loader2Icon } from "lucide-react"; +import { useState } from "react"; +import { toast } from "sonner"; +export const Route = createFileRoute('/onboard/complete')({ + component: RouteComponent, +}) + +function RouteComponent() { + const onboard = useOnboard(); + const navigate = useNavigate(); + const [data] = useState(() => onboard.dump()); + const onboardCompletedMutation = useMutation({ + mutationFn: async (variables: Models.API.OnboardCompletedInput) => { + const response = await http.post( + "/onboard/complete", + variables, + ); + return response.data; + }, + }); + const handleCompletionOnboard = async () => { + try { + const onboardResult = onboard.dump(); + await onboardCompletedMutation.mutateAsync(onboardResult); + navigate({ to: "/login" }); + } catch (error) { + if (error instanceof Error) { + toast.error(error.message); + } + } + }; + + const handleBackClick = () => { + navigate({ to : "/onboard/language", }); + }; + + return ( +
+
+

+ Setup complete +

+

+ You're all set! Review the summary below and jump into your + dashboard when you're ready. +

+
+ +
+ + + + Account + + + +

+ {data.account.name ?? "Not set"} +

+

+ Primary administrator +

+ {lodash.isEmpty(data.account) ? ( + + ) : null} +
+
+ + + + + Libraries + + + +

+ {data.libraries.length === 0 + ? "None configured" + : `${data.libraries.length} ${data.libraries.length === 1 ? "library" : "libraries"}`} +

+ {data.libraries.map((library) => ( +

+ {library.name} +

+ ))} + {data.libraries.length === 0 ? ( + + ) : null} +
+
+ + + + + Languages + + + +

+ Primary: {data.languages.primary?.toUpperCase() ?? "Not set"} +

+

+ Fallback: {data.languages?.fallback?.toUpperCase() ?? "Not set"} +

+ {lodash.isEmpty(data.languages) ? ( + + ) : null} +
+
+
+ +
+ + +
+
+ ); +} diff --git a/apps/web-client/src/routes/onboard/index.tsx b/apps/web-client/src/routes/onboard/index.tsx new file mode 100644 index 0000000..abd0fce --- /dev/null +++ b/apps/web-client/src/routes/onboard/index.tsx @@ -0,0 +1,210 @@ +import { Models } from "@nontara/server/models"; +import { useForm } from "@tanstack/react-form"; +import { createFileRoute, useNavigate } from "@tanstack/react-router"; +import { useMemo } from "react"; +import { toast } from "sonner"; +import { Button } from "@/components/ui/button"; +import { + Card, + CardContent, + CardDescription, + CardFooter, + CardHeader, + CardTitle, +} from "@/components/ui/card"; +import { Input } from "@/components/ui/input"; +import { Label } from "@/components/ui/label"; +import { useOnboard } from "@/hooks/useOnboard"; + +export const Route = createFileRoute("/onboard/")({ + component: RouteComponent, +}); + +function RouteComponent() { + const onboard = useOnboard(); + const account = onboard.getAccount(); + const navigate = useNavigate(); + const form = useForm({ + defaultValues: useMemo(() => { + return { + email: account?.email ?? "", + name: account?.name ?? "", + password: account?.password ?? "", + confirmPassword: account?.confirmPassword ?? "", + } as Models.AccountData; + }, [account]), + onSubmit: async ({ value }) => { + onboard.updateAccount(value); + toast.success(`Welcome aboard, ${value.name}!`); + navigate({ to: "/onboard/setup" }); + }, + validators: { + onSubmit: Models.AccountData, + }, + }); + return ( +
+
+

+ Welcome to Nontara +

+

+ Thanks for choosing Nontara Media Server—we're so glad you're here. +

+
+ + + + + Create your secure account + + + Enter your email, choose a username, and create a password to set up + your account. + + +
{ + event.preventDefault(); + event.stopPropagation(); + form.handleSubmit(); + }} + className="flex flex-col gap-6" + > + + + {(field) => ( +
+ + field.handleChange(event.target.value)} + placeholder="e.g. user@gmail.com" + className="w-full text-lg" + type="email" + /> + {field.state.meta.errors.map((error) => ( +

+ {error?.message} +

+ ))} +
+ )} +
+ + + {(field) => ( +
+ + field.handleChange(event.target.value)} + placeholder="e.g. nontara" + className="w-full text-lg" + /> + {field.state.meta.errors.map((error) => ( +

+ {error?.message} +

+ ))} +
+ )} +
+ + + {(field) => ( +
+ + field.handleChange(event.target.value)} + placeholder="Pick something memorable" + className="w-full text-lg" + /> + {field.state.meta.errors.map((error) => ( +

+ {error?.message} +

+ ))} +
+ )} +
+ + + {(field) => ( +
+ + field.handleChange(event.target.value)} + placeholder="Re-enter your password" + className="w-full text-lg" + /> + {field.state.meta.errors.map((error) => ( +

+ {error?.message} +

+ ))} +
+ )} +
+
+ + + {(state) => ( + + )} + +

+ We never share your credentials. You're in full control here. +

+
+
+
+
+ ); +} diff --git a/apps/web-client/src/routes/onboard/language.tsx b/apps/web-client/src/routes/onboard/language.tsx new file mode 100644 index 0000000..2b6b5b3 --- /dev/null +++ b/apps/web-client/src/routes/onboard/language.tsx @@ -0,0 +1,180 @@ +import { languages as languageList } from "@nontara/language-codes/language-list"; +import type { Models } from "@nontara/server/models"; +import { createFileRoute, useNavigate } from "@tanstack/react-router"; +import { useCallback, useState } from "react"; +import { toast } from "sonner"; +import { Button } from "@/components/ui/button"; +import { + Card, + CardContent, + CardDescription, + CardFooter, + CardHeader, + CardTitle, +} from "@/components/ui/card"; +import { Label } from "@/components/ui/label"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/components/ui/select"; +import { useOnboard } from "@/hooks/useOnboard"; + +type LanguageOption = { + value: string; + label: string; + local?: string; +}; + +const LANGUAGE_OPTIONS: readonly LanguageOption[] = (() => { + const dedup = new Map(); + + for (const language of languageList) { + const code = language["1"]?.trim(); + if (!code || dedup.has(code)) continue; + + dedup.set(code, { + value: code, + label: language.name, + local: language.local, + }); + } + + return Array.from(dedup.values()).sort((a, b) => + a.label.localeCompare(b.label), + ); +})(); + +export const Route = createFileRoute("/onboard/language")({ + component: RouteComponent, +}); + +function RouteComponent() { + const onboard = useOnboard(); + const language = onboard.getLanguage(); + const navigate = useNavigate(); + const [selection, setSelection] = useState({ + primary: language?.primary ?? "en", + fallback: language?.fallback ?? "en", + }); + + const handlePrimaryChange = useCallback((value: string) => { + setSelection((prev: Models.MetadataLanguage) => ({ + ...prev, + primary: value, + })); + }, []); + + const handleFallbackChange = useCallback((value: string) => { + setSelection((prev: Models.MetadataLanguage) => ({ + ...prev, + fallback: value, + })); + }, []); + + const handleSubmit = (event: React.FormEvent) => { + event.preventDefault(); + event.stopPropagation(); + onboard.updateLanguage(selection); + toast.success("Language preferences saved"); + navigate({ to: "/onboard/complete" }); + }; + + const handleBackClick = () => { + navigate({ to: "/onboard/setup" }); + }; + + const fallbackDisabled = selection.primary === selection.fallback; + + return ( +
+ + + + Choose metadata languages + + + Select the language Nontara should prioritise when fetching metadata + from providers like TMDB and OMDB. You can also pick a fallback + language in case information isn't available. + + + +
+ + +
+ +
+ + + {fallbackDisabled ? ( +

+ Fallback language matches the primary language by default. +

+ ) : null} +
+
+ +
+ +
+ Primary: {selection.primary.toUpperCase()} • Fallback:{" "} + {selection.fallback.toUpperCase()} +
+
+ +
+
+
+ ); +} diff --git a/apps/web-client/src/routes/onboard/setup.tsx b/apps/web-client/src/routes/onboard/setup.tsx new file mode 100644 index 0000000..bf214b1 --- /dev/null +++ b/apps/web-client/src/routes/onboard/setup.tsx @@ -0,0 +1,265 @@ +import { LibraryDialog } from "@/components/setup/LibraryDialog"; +import { Button } from "@/components/ui/button"; +import { + Card, + CardAction, + CardContent, + CardDescription, + CardHeader, + CardTitle, +} from "@/components/ui/card"; +import { Dialog, DialogTrigger } from "@/components/ui/dialog"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuTrigger, +} from "@/components/ui/dropdown-menu"; +import { useOnboard } from "@/hooks/useOnboard"; +import type { Models } from "@nontara/server/models"; +import { createFileRoute, useNavigate } from '@tanstack/react-router'; +import { + FilmIcon, + FolderIcon, + MonitorPlayIcon, + MoreVerticalIcon, + PlusIcon, +} from "lucide-react"; +import { useCallback, useMemo, useState } from "react"; +import { toast } from "sonner"; + +const PAGE_TITLE = "Add media libraries"; +const PAGE_DESCRIPTION = + "Point Nontara to the folders you want us to manage so we can keep them organised and up to date."; + +const LIBRARY_TYPE_LABEL: Record = { + MOVIE: "Movie", + SERIES: "Serie", +}; + +function createId() { + if (typeof crypto !== "undefined" && "randomUUID" in crypto) { + return crypto.randomUUID(); + } + + return `${Date.now()}-${Math.random().toString(16).slice(2)}`; +} + +export const Route = createFileRoute('/onboard/setup')({ + component: RouteComponent, +}) + +function RouteComponent() { + const onboardSession = useOnboard(); + const navigate = useNavigate(); + + const [libraries, setLibraries] = useState(() => + onboardSession.getLibraries(), + ); + const [dialogOpen, setDialogOpen] = useState(false); + const [editingLibrary, setEditingLibrary] = + useState(null); + + const defaultLibraryType = useMemo(() => { + const existingTypes = libraries.map((lib) => lib.type); + if (!existingTypes.includes("MOVIE")) return "MOVIE"; + if (!existingTypes.includes("SERIES")) return "SERIES"; + return "MOVIE"; + }, [libraries]); + + const librariesCountLabel = useMemo(() => { + const count = libraries.length; + if (count === 0) return "No libraries added yet"; + if (count === 1) return "1 library added"; + return `${count} libraries added`; + }, [libraries.length]); + + const handleDialogOpenChange = useCallback((open: boolean) => { + setDialogOpen(open); + if (!open) { + setEditingLibrary(null); + } + }, []); + + const handleEditLibrary = useCallback((library: Models.LibraryData) => { + setEditingLibrary(library); + setDialogOpen(true); + }, []); + + const handleDeleteLibrary = useCallback( + (library: Models.LibraryData) => { + const nextLibraries = libraries.filter((item) => item.id !== library.id); + setLibraries(nextLibraries); + onboardSession.updateLibraries(nextLibraries); + toast.success(`${library.name} library deleted`); + + if (editingLibrary?.id === library.id) { + setDialogOpen(false); + setEditingLibrary(null); + } + }, + [libraries, onboardSession, editingLibrary?.id], + ); + + const handleLibrarySubmit = useCallback( + (libraryData: Omit & { id?: string }) => { + let nextLibraries: Models.LibraryData[]; + + if (libraryData.id) { + // Editing existing library + nextLibraries = libraries.map((item) => + item.id === libraryData.id + ? { ...item, ...libraryData, id: libraryData.id } + : item, + ); + toast.success(`${libraryData.name} library updated`); + } else { + // Adding new library + const library: Models.LibraryData = { + id: createId(), + name: libraryData.name, + path: libraryData.path, + type: libraryData.type, + }; + + nextLibraries = [...libraries, library]; + toast.success(`${library.name} library added`); + } + + setLibraries(nextLibraries); + onboardSession.updateLibraries(nextLibraries); + }, + [libraries, onboardSession], + ); + + const handleCompleteClick = () => { + if (libraries.length === 0) { + toast.error("Add at least one library before continuing."); + return; + } + + navigate({to: "/onboard/language"}); + }; + + const handleBackClick = () => { + navigate({to: "/onboard"}); + }; + + return ( +
+
+
+

+ {PAGE_TITLE} +

+

+ {PAGE_DESCRIPTION} +

+
+
+ {librariesCountLabel} +
+ + + + + + +
+ +
+ {libraries.length === 0 ? ( +
+ Your libraries will appear here once you create them. +
+ ) : ( + libraries.map((library) => { + const Icon = library.type === "MOVIE" ? FilmIcon : MonitorPlayIcon; + const libraryTypeLabel = + LIBRARY_TYPE_LABEL[library.type] ?? library.type; + return ( + + +
+
+ +
+
+ {library.name} + + {libraryTypeLabel} • Folder path + +
+
+ + + + + + + handleEditLibrary(library)} + > + Edit + + handleDeleteLibrary(library)} + > + Delete + + + + +
+ +

+ Folder +

+
+ + + {library.path} + +
+
+
+ ); + }) + )} +
+ +
+ + +
+
+ ); +} diff --git a/apps/web-client/src/routes/signup.tsx b/apps/web-client/src/routes/signup.tsx new file mode 100644 index 0000000..5c97d9a --- /dev/null +++ b/apps/web-client/src/routes/signup.tsx @@ -0,0 +1,9 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/signup')({ + component: RouteComponent, +}) + +function RouteComponent() { + return
Hello "/signup"!
+} diff --git a/apps/web-client/src/routes/watch/$id.tsx b/apps/web-client/src/routes/watch/$id.tsx new file mode 100644 index 0000000..0e020f8 --- /dev/null +++ b/apps/web-client/src/routes/watch/$id.tsx @@ -0,0 +1,30 @@ +import { createFileRoute } from "@tanstack/react-router"; +import { z } from "zod"; +import { HLSPlayer } from "@/components/player/HLSPlayer"; + +// Search params schema for audio and subtitle stream indices +const watchSearchSchema = z.object({ + asi: z.number().optional(), // audioStreamIndex + ssi: z.number().optional(), // subtitleStreamIndex +}); + +export const Route = createFileRoute("/watch/$id")({ + component: RouteComponent, + validateSearch: watchSearchSchema, +}); + +function RouteComponent() { + const { id } = Route.useParams(); + const { asi, ssi } = Route.useSearch(); + + // Build selected tracks from search params + const selectedTracks = { + audio: asi, + subtitle: ssi, + }; + return ( +
+ +
+ ); +} diff --git a/apps/web-client/src/services/onboard.ts b/apps/web-client/src/services/onboard.ts new file mode 100644 index 0000000..4741060 --- /dev/null +++ b/apps/web-client/src/services/onboard.ts @@ -0,0 +1,114 @@ +import type { Models } from "@nontara/server/models"; + +type OnboardStorage = + | { + currentStep: 0; + } + | { + currentStep: 1; + account: Models.AccountData; + } + | { + currentStep: 2; + account: Models.AccountData; + libraries: Models.LibraryData[]; + } + | { + currentStep: 3; + account: Models.AccountData; + libraries: Models.LibraryData[]; + languages: Models.MetadataLanguage; + }; + +export class OnboardSessionService { + // private account: Models.AccountData | null = null; + // private libraries: Models.LibraryData[] = []; + // private languages: Models.MetadataLanguage | null = null; + private readonly ONBOARD_STORAGE_KEY = "onboard-session"; + private onboardStorage: OnboardStorage = { + currentStep: 0, + }; + constructor() { + try { + const onboardStorage = sessionStorage.getItem(this.ONBOARD_STORAGE_KEY); + if (!onboardStorage) return; + this.onboardStorage = JSON.parse(onboardStorage) as OnboardStorage; + } catch (error) { + console.error("Failed to parse onboard session storage. ", error); + } + } + + public getAccount() { + if (this.onboardStorage.currentStep === 1) { + return this.onboardStorage.account; + } + } + + public updateAccount(account: Models.AccountData) { + this.onboardStorage = { + currentStep: 1, + account, + }; + this.updateStorage(); + } + + public updateLibraries(libraries: Models.LibraryData[]) { + if (this.onboardStorage.currentStep === 1) { + this.onboardStorage = { + currentStep: 2, + account: this.onboardStorage.account, + libraries, + }; + } + this.updateStorage(); + } + + public getLibraries(): Models.LibraryData[] { + if (this.onboardStorage.currentStep === 2) { + return this.onboardStorage.libraries.map((library) => ({ ...library })); + } + return []; + } + + public getLanguage() { + if (this.onboardStorage.currentStep === 3) { + return this.onboardStorage.languages ?? ({} as Models.MetadataLanguage); + } + } + + public updateLanguage(languages: Models.MetadataLanguage) { + if (this.onboardStorage.currentStep === 2) { + this.onboardStorage = { + currentStep: 3, + account: this.onboardStorage.account, + libraries: this.onboardStorage.libraries, + languages, + }; + } + this.updateStorage(); + } + + public dump(): Models.OnboardConfigurationData { + if (this.onboardStorage.currentStep === 3) { + return { + account: this.onboardStorage.account, + languages: this.onboardStorage.languages, + libraries: this.onboardStorage.libraries, + }; + } + throw new Error( + "Cannot dump onboard session because steps is not completed.", + ); + } + + public getCurrentStep() { + return this.onboardStorage.currentStep; + } + + private updateStorage() { + sessionStorage.setItem( + this.ONBOARD_STORAGE_KEY, + JSON.stringify(this.onboardStorage), + ); + } +} diff --git a/apps/web-client/src/styles.css b/apps/web-client/src/styles.css new file mode 100644 index 0000000..8f788b7 --- /dev/null +++ b/apps/web-client/src/styles.css @@ -0,0 +1,142 @@ +@import "tailwindcss"; + +@import "tw-animate-css"; + +@custom-variant dark (&:is(.dark *)); + +body { + @apply m-0; + font-family: + -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", + "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +code { + font-family: + source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace; +} + +:root { + --background: oklch(1 0 0); + --foreground: oklch(0.141 0.005 285.823); + --card: oklch(1 0 0); + --card-foreground: oklch(0.141 0.005 285.823); + --popover: oklch(1 0 0); + --popover-foreground: oklch(0.141 0.005 285.823); + --primary: oklch(0.21 0.006 285.885); + --primary-foreground: oklch(0.985 0 0); + --secondary: oklch(0.967 0.001 286.375); + --secondary-foreground: oklch(0.21 0.006 285.885); + --muted: oklch(0.967 0.001 286.375); + --muted-foreground: oklch(0.552 0.016 285.938); + --accent: oklch(0.967 0.001 286.375); + --accent-foreground: oklch(0.21 0.006 285.885); + --destructive: oklch(0.577 0.245 27.325); + --destructive-foreground: oklch(0.577 0.245 27.325); + --border: oklch(0.92 0.004 286.32); + --input: oklch(0.92 0.004 286.32); + --ring: oklch(0.871 0.006 286.286); + --chart-1: oklch(0.646 0.222 41.116); + --chart-2: oklch(0.6 0.118 184.704); + --chart-3: oklch(0.398 0.07 227.392); + --chart-4: oklch(0.828 0.189 84.429); + --chart-5: oklch(0.769 0.188 70.08); + --radius: 0.625rem; + --sidebar: oklch(0.985 0 0); + --sidebar-foreground: oklch(0.141 0.005 285.823); + --sidebar-primary: oklch(0.21 0.006 285.885); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.967 0.001 286.375); + --sidebar-accent-foreground: oklch(0.21 0.006 285.885); + --sidebar-border: oklch(0.92 0.004 286.32); + --sidebar-ring: oklch(0.871 0.006 286.286); +} + +.dark { + --background: oklch(0.141 0.005 285.823); + --foreground: oklch(0.985 0 0); + --card: oklch(0.141 0.005 285.823); + --card-foreground: oklch(0.985 0 0); + --popover: oklch(0.141 0.005 285.823); + --popover-foreground: oklch(0.985 0 0); + --primary: oklch(0.985 0 0); + --primary-foreground: oklch(0.21 0.006 285.885); + --secondary: oklch(0.274 0.006 286.033); + --secondary-foreground: oklch(0.985 0 0); + --muted: oklch(0.274 0.006 286.033); + --muted-foreground: oklch(0.705 0.015 286.067); + --accent: oklch(0.274 0.006 286.033); + --accent-foreground: oklch(0.985 0 0); + --destructive: oklch(0.396 0.141 25.723); + --destructive-foreground: oklch(0.637 0.237 25.331); + --border: oklch(0.274 0.006 286.033); + --input: oklch(0.274 0.006 286.033); + --ring: oklch(0.442 0.017 285.786); + --chart-1: oklch(0.488 0.243 264.376); + --chart-2: oklch(0.696 0.17 162.48); + --chart-3: oklch(0.769 0.188 70.08); + --chart-4: oklch(0.627 0.265 303.9); + --chart-5: oklch(0.645 0.246 16.439); + --sidebar: oklch(0.21 0.006 285.885); + --sidebar-foreground: oklch(0.985 0 0); + --sidebar-primary: oklch(0.488 0.243 264.376); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.274 0.006 286.033); + --sidebar-accent-foreground: oklch(0.985 0 0); + --sidebar-border: oklch(0.274 0.006 286.033); + --sidebar-ring: oklch(0.442 0.017 285.786); +} + +@theme inline { + --color-background: var(--background); + --color-foreground: var(--foreground); + --color-card: var(--card); + --color-card-foreground: var(--card-foreground); + --color-popover: var(--popover); + --color-popover-foreground: var(--popover-foreground); + --color-primary: var(--primary); + --color-primary-foreground: var(--primary-foreground); + --color-secondary: var(--secondary); + --color-secondary-foreground: var(--secondary-foreground); + --color-muted: var(--muted); + --color-muted-foreground: var(--muted-foreground); + --color-accent: var(--accent); + --color-accent-foreground: var(--accent-foreground); + --color-destructive: var(--destructive); + --color-destructive-foreground: var(--destructive-foreground); + --color-border: var(--border); + --color-input: var(--input); + --color-ring: var(--ring); + --color-chart-1: var(--chart-1); + --color-chart-2: var(--chart-2); + --color-chart-3: var(--chart-3); + --color-chart-4: var(--chart-4); + --color-chart-5: var(--chart-5); + --radius-sm: calc(var(--radius) - 4px); + --radius-md: calc(var(--radius) - 2px); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) + 4px); + --color-sidebar: var(--sidebar); + --color-sidebar-foreground: var(--sidebar-foreground); + --color-sidebar-primary: var(--sidebar-primary); + --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); + --color-sidebar-accent: var(--sidebar-accent); + --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); + --color-sidebar-border: var(--sidebar-border); + --color-sidebar-ring: var(--sidebar-ring); +} + +@layer base { + * { + @apply border-border outline-ring/50; + } + body { + @apply bg-background text-foreground; + } +} + +@utility no-scrollbar { + @apply [scrollbar-width:none] [&::-webkit-scrollbar]:hidden; +} diff --git a/apps/web-client/src/utils/codec-detection.ts b/apps/web-client/src/utils/codec-detection.ts new file mode 100644 index 0000000..929ca95 --- /dev/null +++ b/apps/web-client/src/utils/codec-detection.ts @@ -0,0 +1,65 @@ +export type VideoCodec = "H264" | "H265" | "VP9" | "AV1"; +export type AudioCodec = "AAC" | "MP3" | "OPUS" | "VORBIS"; + +export interface CodecSupport { + video: VideoCodec[]; + audio: AudioCodec[]; +} + +export function detectCodecSupport(): CodecSupport { + const video = document.createElement("video"); + + const videoCodecs: VideoCodec[] = []; + const audioCodecs: AudioCodec[] = []; + + // Test video codecs + if (video.canPlayType('video/mp4; codecs="avc1.42E01E"') !== "") { + videoCodecs.push("H264"); + } + if (video.canPlayType('video/mp4; codecs="hev1.1.6.L93.B0"') !== "") { + videoCodecs.push("H265"); + } + if (video.canPlayType('video/webm; codecs="vp9"') !== "") { + videoCodecs.push("VP9"); + } + if (video.canPlayType('video/mp4; codecs="av01.0.04M.08"') !== "") { + videoCodecs.push("AV1"); + } + + // Fallback: if no codecs detected, add H264 (most compatible) + if (videoCodecs.length === 0) { + videoCodecs.push("H264"); + } + + // Test audio codecs + if (video.canPlayType('audio/mp4; codecs="mp4a.40.2"') !== "") { + audioCodecs.push("AAC"); + } + if (video.canPlayType("audio/mpeg") !== "") { + audioCodecs.push("MP3"); + } + if (video.canPlayType('audio/webm; codecs="opus"') !== "") { + audioCodecs.push("OPUS"); + } + if (video.canPlayType('audio/ogg; codecs="vorbis"') !== "") { + audioCodecs.push("VORBIS"); + } + + // Fallback: if no audio codecs detected, add AAC (most compatible) + if (audioCodecs.length === 0) { + audioCodecs.push("AAC"); + } + + return { video: videoCodecs, audio: audioCodecs }; +} + +export function formatTime(seconds: number): string { + const hours = Math.floor(seconds / 3600); + const minutes = Math.floor((seconds % 3600) / 60); + const secs = Math.floor(seconds % 60); + + if (hours > 0) { + return `${hours}:${minutes.toString().padStart(2, "0")}:${secs.toString().padStart(2, "0")}`; + } + return `${minutes}:${secs.toString().padStart(2, "0")}`; +} diff --git a/apps/web-client/tsconfig.json b/apps/web-client/tsconfig.json new file mode 100644 index 0000000..7654273 --- /dev/null +++ b/apps/web-client/tsconfig.json @@ -0,0 +1,29 @@ +{ + "include": ["**/*.ts", "**/*.tsx", "eslint.config.js", "prettier.config.js", "vite.config.js"], + + "compilerOptions": { + "target": "ES2022", + "jsx": "react-jsx", + "module": "ESNext", + "lib": ["ES2022", "DOM", "DOM.Iterable"], + "types": ["vite/client"], + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "noEmit": true, + + /* Linting */ + "skipLibCheck": true, + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true, + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"], + } + } +} diff --git a/apps/web-client/vite.config.ts b/apps/web-client/vite.config.ts new file mode 100644 index 0000000..0eacc1c --- /dev/null +++ b/apps/web-client/vite.config.ts @@ -0,0 +1,27 @@ +import { defineConfig } from 'vite' +import viteReact from '@vitejs/plugin-react' +import tailwindcss from '@tailwindcss/vite' + +import { tanstackRouter } from '@tanstack/router-plugin/vite' +import { fileURLToPath, URL } from 'node:url' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [ + tanstackRouter({ + target: 'react', + autoCodeSplitting: true, + }), + viteReact({ + babel: { + plugins: ['babel-plugin-react-compiler'], + }, + }), + tailwindcss(), + ], + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)), + }, + }, +}) diff --git a/biome.json b/biome.json index a223953..641b5c7 100644 --- a/biome.json +++ b/biome.json @@ -1,5 +1,5 @@ { - "$schema": "https://biomejs.dev/schemas/2.2.0/schema.json", + "$schema": "https://biomejs.dev/schemas/2.3.1/schema.json", "vcs": { "enabled": false, "clientKind": "git", @@ -44,11 +44,7 @@ "level": "warn", "fix": "safe", "options": { - "functions": [ - "clsx", - "cva", - "cn" - ] + "functions": ["clsx", "cva", "cn"] } } }, @@ -76,4 +72,5 @@ "tailwindDirectives": true } } -} \ No newline at end of file +} +