@epic-web/workshop-app 5.18.2 → 5.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,18 +1,19 @@
1
1
  import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
2
  import { PassThrough } from "stream";
3
- import { createReadableStreamFromReadable, unstable_data as unstable_data$1, createCookieSessionStorage, redirect as redirect$1 } from "@remix-run/node";
4
- import { RemixServer, Link, useRouteError, useParams, isRouteErrorResponse, useNavigation, useFetchers, useRouteLoaderData, useRevalidator, useLocation, unstable_data, redirect, useFetcher, useLoaderData, Outlet, Meta, Links, ScrollRestoration, Scripts, NavLink, Form, Await, useSearchParams, useSubmit, useNavigate } from "@remix-run/react";
3
+ import { createReadableStreamFromReadable, json, unstable_data as unstable_data$1, createCookieSessionStorage, redirect as redirect$1 } from "@remix-run/node";
4
+ import { RemixServer, Link, useRouteError, useParams, isRouteErrorResponse, useNavigation, useFetchers, useFetcher, useRouteLoaderData, useRevalidator, useLocation, unstable_data, redirect, useLoaderData, Outlet, Meta, Links, ScrollRestoration, Scripts, NavLink, Form, Await, useSearchParams, useSubmit, useNavigate } from "@remix-run/react";
5
5
  import { isbot } from "isbot";
6
6
  import { renderToPipeableStream, renderToStaticMarkup } from "react-dom/server";
7
7
  import path from "node:path";
8
8
  import { makeSingletonCache, cachified, deleteCache, compiledCodeCache, shouldForceFresh, fsCache, getAllFileCacheEntries, ogCache } from "@epic-web/workshop-utils/cache.server";
9
9
  import { getWorkshopConfig } from "@epic-web/workshop-utils/config.server";
10
- import { getAuthInfo, getPreferences, readOnboardingData, requireAuthInfo, deleteDb, setPreferences, PlayerPreferencesSchema, setAuthInfo, markOnboardingVideoWatched } from "@epic-web/workshop-utils/db.server";
10
+ import { getAuthInfo, getPreferences, getMutedNotifications, muteNotification, readOnboardingData, requireAuthInfo, deleteDb, setPreferences, PlayerPreferencesSchema, setAuthInfo, markOnboardingVideoWatched } from "@epic-web/workshop-utils/db.server";
11
11
  import { getUserInfo, userHasAccessToWorkshop, getProgress, updateProgress, getEpicVideoInfos } from "@epic-web/workshop-utils/epic-api.server";
12
12
  import { getUserId, getSetClientIdCookieHeader } from "@epic-web/workshop-utils/user.server";
13
13
  import { z } from "zod";
14
14
  import { getApps, getExercises, getPlaygroundAppName, extractNumbersAndTypeFromAppNameOrPath, getAppFromFile, getAppByName, isProblemApp, isPlaygroundApp, isExerciseStepApp, getExercise, isSolutionApp, isExampleApp, getRelativePath as getRelativePath$1, getWorkshopRoot, setPlayground, requireExerciseApp, requireExercise, getExerciseApp, getAppDisplayName, getNextExerciseApp, getPrevExerciseApp, getAppPageRoute, getWorkshopFinished, getWorkshopInstructions } from "@epic-web/workshop-utils/apps.server";
15
15
  import { getEnv } from "@epic-web/workshop-utils/env.server";
16
+ import { checkForUpdates, updateLocalRepo, getCommitInfo, getLatestWorkshopAppVersion } from "@epic-web/workshop-utils/git.server";
16
17
  import { makeTimings, getServerTimeHeader, combineServerTimings, time } from "@epic-web/workshop-utils/timing.server";
17
18
  import { checkConnectionCached, dayjs } from "@epic-web/workshop-utils/utils.server";
18
19
  import { cssBundleHref } from "@remix-run/css-bundle";
@@ -27,6 +28,7 @@ import React__default, { useRef, useEffect, useMemo, useState, useSyncExternalSt
27
28
  import { extendTailwindMerge } from "tailwind-merge";
28
29
  import { Toaster, toast } from "sonner";
29
30
  import * as TooltipPrimitive from "@radix-ui/react-tooltip";
31
+ import child_process, { spawn } from "child_process";
30
32
  import { useForm, getFormProps } from "@conform-to/react";
31
33
  import { parseWithZod } from "@conform-to/zod";
32
34
  import { getHintUtils } from "@epic-web/client-hints";
@@ -51,7 +53,6 @@ import { getDirModifiedTime } from "@epic-web/workshop-utils/modified-time.serve
51
53
  import * as esbuild from "esbuild";
52
54
  import { ElementScrollRestoration } from "@epic-web/restore-scroll";
53
55
  import RealMuxPlayer, { MinResolution, MaxResolution } from "@mux/mux-player-react";
54
- import child_process from "child_process";
55
56
  import os from "os";
56
57
  import shellQuote from "shell-quote";
57
58
  import { LRUCache } from "lru-cache";
@@ -70,7 +71,6 @@ import { EventEmitter } from "events";
70
71
  import { remember } from "@epic-web/remember";
71
72
  import * as client from "openid-client";
72
73
  import inspector from "node:inspector";
73
- import { getCommitInfo, getLatestWorkshopAppVersion } from "@epic-web/workshop-utils/git.server";
74
74
  import { Resvg } from "@resvg/resvg-js";
75
75
  import satori from "satori";
76
76
  import { generateRobotsTxt, generateSitemap } from "@nasa-gcn/remix-seo";
@@ -762,6 +762,169 @@ function SimpleTooltip({
762
762
  /* @__PURE__ */ jsx(TooltipContent, { children: content })
763
763
  ] });
764
764
  }
765
+ const NOTIFICATIONS = [
766
+ {
767
+ id: "introducing-mcp-server-2025-05-30",
768
+ title: "Introducing the epicshop MCP Server",
769
+ message: "Use natural language to interact with this workshop and enhance your learning experience.",
770
+ type: "info",
771
+ link: "https://www.epicai.pro/introducing-the-epic-workshop-mcp-dj11t",
772
+ expiresAt: null
773
+ }
774
+ ];
775
+ async function getUnmutedNotifications() {
776
+ const muted = await getMutedNotifications();
777
+ const visibleNotifications = NOTIFICATIONS.filter((n) => {
778
+ if (n.expiresAt && n.expiresAt < /* @__PURE__ */ new Date()) {
779
+ return false;
780
+ }
781
+ return true;
782
+ }).filter((n) => !muted.includes(n.id));
783
+ return visibleNotifications;
784
+ }
785
+ async function action$e({ request }) {
786
+ const formData = await request.formData();
787
+ const intent = formData.get("intent");
788
+ const id = formData.get("id");
789
+ if (typeof id !== "string") {
790
+ return json({ error: "Invalid notification id" }, { status: 400 });
791
+ }
792
+ if (intent === "mute") {
793
+ await muteNotification(id);
794
+ return json({ success: true });
795
+ }
796
+ return json({ error: "Invalid intent" }, { status: 400 });
797
+ }
798
+ function Notifications({
799
+ unmutedNotifications
800
+ }) {
801
+ const fetcher = useFetcher();
802
+ const fetcherRef = useRef(fetcher);
803
+ useEffect(() => {
804
+ for (const notification of unmutedNotifications) {
805
+ toast.info(notification.title, {
806
+ description: /* @__PURE__ */ jsxs("div", { children: [
807
+ /* @__PURE__ */ jsx("p", { children: notification.message }),
808
+ notification.link && /* @__PURE__ */ jsx(
809
+ "a",
810
+ {
811
+ href: notification.link,
812
+ target: "_blank",
813
+ className: "text-xs underline",
814
+ children: "Learn more"
815
+ }
816
+ )
817
+ ] }),
818
+ duration: Infinity,
819
+ action: {
820
+ label: "Dismiss",
821
+ onClick: () => {
822
+ fetcherRef.current.submit(
823
+ { intent: "mute", id: notification.id },
824
+ { method: "post", action: "/admin/notifications" }
825
+ );
826
+ }
827
+ }
828
+ });
829
+ }
830
+ }, [unmutedNotifications]);
831
+ return null;
832
+ }
833
+ const route30 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
834
+ __proto__: null,
835
+ Notifications,
836
+ action: action$e
837
+ }, Symbol.toStringTag, { value: "Module" }));
838
+ async function action$d() {
839
+ const updates = await checkForUpdates();
840
+ if (!updates.updatesAvailable) {
841
+ return json({ type: "error", error: "No updates available" }, {
842
+ status: 400
843
+ });
844
+ }
845
+ await updateLocalRepo();
846
+ spawn(process.argv[0], process.argv.slice(1), {
847
+ detached: true,
848
+ stdio: "inherit",
849
+ env: {
850
+ ...process.env,
851
+ EPICSHOP_SLOW_START: "true"
852
+ }
853
+ });
854
+ setTimeout(() => {
855
+ console.log("exiting the old server process");
856
+ process.exit(0);
857
+ }, 200);
858
+ return json({ type: "success" });
859
+ }
860
+ function UpdateToast({
861
+ repoUpdates
862
+ }) {
863
+ const updateFetcher = useFetcher();
864
+ const updateFetcherRef = useRef(updateFetcher);
865
+ const { updatesAvailable, diffLink } = repoUpdates;
866
+ useEffect(() => {
867
+ if (updatesAvailable) {
868
+ toast.info("New workshop updates available", {
869
+ duration: Infinity,
870
+ description: /* @__PURE__ */ jsxs("div", { children: [
871
+ `Get the latest updates by clicking the update button. `,
872
+ diffLink ? /* @__PURE__ */ jsx(
873
+ "a",
874
+ {
875
+ href: diffLink,
876
+ target: "_blank",
877
+ rel: "noreferrer",
878
+ className: "text-xs underline",
879
+ children: "View changes"
880
+ }
881
+ ) : null
882
+ ] }),
883
+ action: {
884
+ label: "Update",
885
+ onClick: () => {
886
+ updateFetcherRef.current.submit(null, {
887
+ method: "post",
888
+ action: "/admin/update-repo"
889
+ });
890
+ }
891
+ }
892
+ });
893
+ }
894
+ }, [updatesAvailable, diffLink]);
895
+ const fetcherResponse = updateFetcher.data;
896
+ useEffect(() => {
897
+ if (!fetcherResponse) return;
898
+ if (fetcherResponse.type === "error") {
899
+ toast.error("Failed to update workshop", {
900
+ description: fetcherResponse.error
901
+ });
902
+ } else if (fetcherResponse.type === "success") {
903
+ toast.success("Workshop updated", {
904
+ description: "Refreshing the page in 5 seconds...",
905
+ action: {
906
+ label: "Refresh now",
907
+ onClick: () => {
908
+ window.location.reload();
909
+ }
910
+ }
911
+ });
912
+ setTimeout(() => {
913
+ window.location.reload();
914
+ }, 5e3);
915
+ } else {
916
+ toast.error("Failed to update workshop", {
917
+ description: "Unknown error"
918
+ });
919
+ }
920
+ }, [fetcherResponse]);
921
+ return null;
922
+ }
923
+ const route31 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
924
+ __proto__: null,
925
+ UpdateToast,
926
+ action: action$d
927
+ }, Symbol.toStringTag, { value: "Module" }));
765
928
  function useRequestInfo() {
766
929
  const data = useRouteLoaderData("root");
767
930
  return data.requestInfo;
@@ -927,7 +1090,7 @@ function useTheme() {
927
1090
  }
928
1091
  return requestInfo.session.theme ?? hints.theme;
929
1092
  }
930
- const route45 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1093
+ const route47 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
931
1094
  __proto__: null,
932
1095
  ThemeSwitch,
933
1096
  action: action$c,
@@ -1288,7 +1451,9 @@ async function loader$y({ request }) {
1288
1451
  }),
1289
1452
  user: getUserInfo(),
1290
1453
  userHasAccess: userHasAccessToWorkshop({ request, timings }),
1291
- apps: getApps({ request, timings })
1454
+ apps: getApps({ request, timings }),
1455
+ repoUpdates: checkForUpdates(),
1456
+ unmutedNotifications: getUnmutedNotifications()
1292
1457
  });
1293
1458
  const presentUsers = await getPresentUsers({
1294
1459
  request,
@@ -1389,7 +1554,9 @@ function App$1() {
1389
1554
  /* @__PURE__ */ jsx(Outlet, {}),
1390
1555
  /* @__PURE__ */ jsx(Confetti, { id: data2.confettiId }),
1391
1556
  /* @__PURE__ */ jsx(EpicToaster, { toast: data2.toast }),
1392
- /* @__PURE__ */ jsx(EpicProgress, {})
1557
+ /* @__PURE__ */ jsx(UpdateToast, { repoUpdates: data2.repoUpdates }),
1558
+ /* @__PURE__ */ jsx(EpicProgress, {}),
1559
+ /* @__PURE__ */ jsx(Notifications, { unmutedNotifications: data2.unmutedNotifications })
1393
1560
  ]
1394
1561
  }
1395
1562
  );
@@ -1986,7 +2153,7 @@ function ProgressToggle({
1986
2153
  )
1987
2154
  ] });
1988
2155
  }
1989
- const route39 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
2156
+ const route41 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1990
2157
  __proto__: null,
1991
2158
  ProgressToggle,
1992
2159
  action: action$b,
@@ -4364,7 +4531,7 @@ function getMaxResolutionValue(resolution) {
4364
4531
  if (resolution <= 1440) return MaxResolution.upTo1440p;
4365
4532
  return MaxResolution.upTo2160p;
4366
4533
  }
4367
- const route46 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
4534
+ const route48 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
4368
4535
  __proto__: null,
4369
4536
  MuxPlayer,
4370
4537
  action: action$8,
@@ -5468,7 +5635,7 @@ function EditFileOnGitHub({
5468
5635
  );
5469
5636
  }
5470
5637
  const LaunchEditor = ENV.EPICSHOP_DEPLOYED ? LaunchGitHub : LaunchEditorImpl;
5471
- const route34 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
5638
+ const route36 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
5472
5639
  __proto__: null,
5473
5640
  EditFileOnGitHub,
5474
5641
  LaunchEditor,
@@ -6106,7 +6273,7 @@ function SetAppToPlayground({ appName }) {
6106
6273
  }
6107
6274
  );
6108
6275
  }
6109
- const route41 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
6276
+ const route43 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
6110
6277
  __proto__: null,
6111
6278
  PlaygroundChooser,
6112
6279
  SetAppToPlayground,
@@ -6854,7 +7021,7 @@ function AppStarter({ name }) {
6854
7021
  fetcher.state === "idle" ? /* @__PURE__ */ jsx(Button, { type: "submit", name: "intent", value: "start", varient: "mono", children: "Start App" }) : /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(Loading, { children: "Starting App" }) })
6855
7022
  ] });
6856
7023
  }
6857
- const route43 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
7024
+ const route45 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
6858
7025
  __proto__: null,
6859
7026
  AppStarter,
6860
7027
  AppStopper,
@@ -8597,7 +8764,7 @@ function StopTest({
8597
8764
  )
8598
8765
  ] });
8599
8766
  }
8600
- const route44 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
8767
+ const route46 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
8601
8768
  __proto__: null,
8602
8769
  ClearTest,
8603
8770
  StopTest,
@@ -9669,7 +9836,7 @@ async function loader$e({ request }) {
9669
9836
  };
9670
9837
  });
9671
9838
  }
9672
- const route35 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
9839
+ const route37 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
9673
9840
  __proto__: null,
9674
9841
  EventSchema,
9675
9842
  loader: loader$e
@@ -10426,7 +10593,7 @@ function Version() {
10426
10593
  ] })
10427
10594
  ] });
10428
10595
  }
10429
- const route30 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
10596
+ const route32 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
10430
10597
  __proto__: null,
10431
10598
  default: Version,
10432
10599
  handle: handle$1,
@@ -10441,7 +10608,7 @@ async function loader$7({ request }) {
10441
10608
  { headers: { "Server-Timing": getServerTimeHeader(timings) } }
10442
10609
  );
10443
10610
  }
10444
- const route31 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
10611
+ const route33 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
10445
10612
  __proto__: null,
10446
10613
  loader: loader$7
10447
10614
  }, Symbol.toStringTag, { value: "Module" }));
@@ -10530,7 +10697,7 @@ function DiffViewer() {
10530
10697
  }
10531
10698
  );
10532
10699
  }
10533
- const route32 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
10700
+ const route34 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
10534
10701
  __proto__: null,
10535
10702
  default: DiffViewer,
10536
10703
  loader: loader$6
@@ -10543,7 +10710,7 @@ async function loader$5({ request }) {
10543
10710
  { headers: { "Server-Timing": getServerTimeHeader(timings) } }
10544
10711
  );
10545
10712
  }
10546
- const route33 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
10713
+ const route35 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
10547
10714
  __proto__: null,
10548
10715
  loader: loader$5
10549
10716
  }, Symbol.toStringTag, { value: "Module" }));
@@ -10874,7 +11041,7 @@ function OgLayout({
10874
11041
  }
10875
11042
  );
10876
11043
  }
10877
- const route36 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11044
+ const route38 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
10878
11045
  __proto__: null,
10879
11046
  loader: loader$4
10880
11047
  }, Symbol.toStringTag, { value: "Module" }));
@@ -10922,7 +11089,7 @@ function Onboarding() {
10922
11089
  /* @__PURE__ */ jsx(Form, { method: "post", className: "pb-4", children: /* @__PURE__ */ jsx(Button, { name: "intent", value: "complete", varient: "primary", children: "I've watched it. Let's go!" }) })
10923
11090
  ] });
10924
11091
  }
10925
- const route37 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11092
+ const route39 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
10926
11093
  __proto__: null,
10927
11094
  action,
10928
11095
  default: Onboarding,
@@ -10948,7 +11115,7 @@ async function loader$2() {
10948
11115
  }
10949
11116
  return Response.json({ processes, testProcesses });
10950
11117
  }
10951
- const route38 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11118
+ const route40 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
10952
11119
  __proto__: null,
10953
11120
  loader: loader$2
10954
11121
  }, Symbol.toStringTag, { value: "Module" }));
@@ -10957,7 +11124,7 @@ function loader$1({ request }) {
10957
11124
  { type: "sitemap", value: `${getDomainUrl(request)}/sitemap.xml` }
10958
11125
  ]);
10959
11126
  }
10960
- const route40 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11127
+ const route42 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
10961
11128
  __proto__: null,
10962
11129
  loader: loader$1
10963
11130
  }, Symbol.toStringTag, { value: "Module" }));
@@ -10970,11 +11137,11 @@ async function loader({ request, context }) {
10970
11137
  }
10971
11138
  });
10972
11139
  }
10973
- const route42 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11140
+ const route44 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
10974
11141
  __proto__: null,
10975
11142
  loader
10976
11143
  }, Symbol.toStringTag, { value: "Module" }));
10977
- const serverManifest = { "entry": { "module": "/assets/entry.client-CQusg5Iz.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/components-DrvY4pal.js"], "css": [] }, "routes": { "root": { "id": "root", "parentId": void 0, "path": "", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/root-DF5m7yW1.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/components-DrvY4pal.js", "/assets/misc-BK2EiKtY.js", "/assets/pe-DXT2FOp1.js", "/assets/error-boundary-De7jJlR5.js", "/assets/progress-bar-Q9l2dtTg.js", "/assets/index-CB8bjE90.js", "/assets/tooltip-leWCE50J.js", "/assets/index-BZWIdOoA.js", "/assets/presence-CPOTHCHm.js", "/assets/seo-pBpFCWsy.js", "/assets/online-CHlOuJG-.js"], "css": [] }, "routes/$": { "id": "routes/$", "parentId": "root", "path": "*", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_-BDcQ_M2J.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/error-boundary-De7jJlR5.js", "/assets/misc-BK2EiKtY.js", "/assets/components-DrvY4pal.js"], "css": [] }, "routes/_app+/_layout": { "id": "routes/_app+/_layout", "parentId": "root", "path": void 0, "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_layout-DuDUPWax.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/misc-BK2EiKtY.js", "/assets/pe-DXT2FOp1.js", "/assets/product-BkDgAOLQ.js", "/assets/revalidation-ws-CLolY6Iu.js", "/assets/tooltip-leWCE50J.js", "/assets/index-BE3KRz8n.js", "/assets/user-C0j04V55.js", "/assets/workshop-config-oL_FWDKq.js", "/assets/online-CHlOuJG-.js", "/assets/presence-CPOTHCHm.js", "/assets/progress-CnHFlUmF.js", "/assets/index-BZWIdOoA.js", "/assets/components-DrvY4pal.js"], "css": [] }, "routes/_app+/account": { "id": "routes/_app+/account", "parentId": "routes/_app+/_layout", "path": "account", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/account-BwQvf4AS.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/button-DVPKzWkn.js", "/assets/misc-BK2EiKtY.js", "/assets/tooltip-leWCE50J.js", "/assets/user-C0j04V55.js", "/assets/workshop-config-oL_FWDKq.js", "/assets/components-DrvY4pal.js"], "css": [] }, "routes/_app+/app.$appName+/$": { "id": "routes/_app+/app.$appName+/$", "parentId": "routes/_app+/_layout", "path": "app/:appName/*", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/api.$": { "id": "routes/_app+/app.$appName+/api.$", "parentId": "routes/_app+/_layout", "path": "app/:appName/api/*", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/api._-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/epic_ws[.js]": { "id": "routes/_app+/app.$appName+/epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/:appName/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/index": { "id": "routes/_app+/app.$appName+/index", "parentId": "routes/_app+/_layout", "path": "app/:appName/", "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/test.$testName": { "id": "routes/_app+/app.$appName+/test.$testName", "parentId": "routes/_app+/_layout", "path": "app/:appName/test/:testName", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test._testName-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/test.epic_ws[.js]": { "id": "routes/_app+/app.$appName+/test.epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/:appName/test/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test.epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.epic_ws[.js]": { "id": "routes/_app+/app.epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/app.epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/discord": { "id": "routes/_app+/discord", "parentId": "routes/_app+/_layout", "path": "discord", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/discord-CFZUT74L.js", "imports": ["/assets/discord-CoBo5eVK.js", "/assets/index-CGzylDPY.js", "/assets/misc-BK2EiKtY.js", "/assets/components-DrvY4pal.js", "/assets/user-C0j04V55.js", "/assets/workshop-config-oL_FWDKq.js"], "css": [] }, "routes/_app+/exercise+/_layout": { "id": "routes/_app+/exercise+/_layout", "parentId": "routes/_app+/_layout", "path": "exercise", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_layout-CwTidn3v.js", "imports": ["/assets/index-CGzylDPY.js"], "css": [] }, "routes/_app+/exercise+/$exerciseNumber": { "id": "routes/_app+/exercise+/$exerciseNumber", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_exerciseNumber-CG2AFTtQ.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/index-egcHQOpF.js", "/assets/epic-video-DRZssA4U.js", "/assets/revalidation-ws-CLolY6Iu.js", "/assets/mdx-Z4bEoKXn.js", "/assets/progress-CnHFlUmF.js", "/assets/misc-BK2EiKtY.js", "/assets/seo-pBpFCWsy.js", "/assets/components-DrvY4pal.js", "/assets/index-BZWIdOoA.js", "/assets/tooltip-leWCE50J.js", "/assets/pe-DXT2FOp1.js", "/assets/online-CHlOuJG-.js", "/assets/loading-ClL22bF9.js", "/assets/user-C0j04V55.js", "/assets/workshop-config-oL_FWDKq.js", "/assets/progress-bar-Q9l2dtTg.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber/:stepNumber", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_exerciseNumber_._stepNumber-COWC332q.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/misc-BK2EiKtY.js", "/assets/components-DrvY4pal.js"], "css": [] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber", "path": ":type", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_layout-DKC1JUTc.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/index-egcHQOpF.js", "/assets/error-boundary-De7jJlR5.js", "/assets/nav-chevrons-DVD_0i2a.js", "/assets/revalidation-ws-CLolY6Iu.js", "/assets/mdx-Z4bEoKXn.js", "/assets/progress-CnHFlUmF.js", "/assets/set-playground-ZcPraYj5.js", "/assets/misc-BK2EiKtY.js", "/assets/seo-pBpFCWsy.js", "/assets/epic-video-DRZssA4U.js", "/assets/tooltip-leWCE50J.js", "/assets/index-BZWIdOoA.js", "/assets/components-DrvY4pal.js", "/assets/index-BE3KRz8n.js", "/assets/progress-bar-Q9l2dtTg.js", "/assets/pe-DXT2FOp1.js", "/assets/index-6Hu4Lmzn.js", "/assets/online-CHlOuJG-.js", "/assets/loading-ClL22bF9.js", "/assets/user-C0j04V55.js", "/assets/workshop-config-oL_FWDKq.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": "app", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/app-XHqxOZfy.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/preview-B2BxDDhi.js", "/assets/components-DrvY4pal.js", "/assets/misc-BK2EiKtY.js", "/assets/index-BZWIdOoA.js", "/assets/tooltip-leWCE50J.js", "/assets/pe-DXT2FOp1.js", "/assets/button-DVPKzWkn.js", "/assets/loading-ClL22bF9.js", "/assets/progress-bar-Q9l2dtTg.js"], "css": [] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/index-M647UyZv.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/tooltip-leWCE50J.js", "/assets/index-6Hu4Lmzn.js", "/assets/misc-BK2EiKtY.js", "/assets/diff-C7Zh3uuA.js", "/assets/error-boundary-De7jJlR5.js", "/assets/loading-ClL22bF9.js", "/assets/discord-CoBo5eVK.js", "/assets/online-CHlOuJG-.js", "/assets/components-DrvY4pal.js", "/assets/index-CB8bjE90.js", "/assets/set-playground-ZcPraYj5.js", "/assets/tests-CmjMQrMj.js", "/assets/preview-B2BxDDhi.js", "/assets/index-BE3KRz8n.js", "/assets/accordion-BPyhq471.js", "/assets/mdx-Z4bEoKXn.js", "/assets/epic-video-DRZssA4U.js", "/assets/index-BZWIdOoA.js", "/assets/pe-DXT2FOp1.js", "/assets/user-C0j04V55.js", "/assets/workshop-config-oL_FWDKq.js", "/assets/progress-bar-Q9l2dtTg.js", "/assets/revalidation-ws-CLolY6Iu.js", "/assets/use-event-source-AZJtQsFX.js", "/assets/button-DVPKzWkn.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": "test", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test-Bt9AuCey.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/tests-CmjMQrMj.js", "/assets/components-DrvY4pal.js", "/assets/epic-video-DRZssA4U.js", "/assets/index-BZWIdOoA.js", "/assets/misc-BK2EiKtY.js", "/assets/tooltip-leWCE50J.js", "/assets/pe-DXT2FOp1.js", "/assets/online-CHlOuJG-.js", "/assets/loading-ClL22bF9.js", "/assets/user-C0j04V55.js", "/assets/workshop-config-oL_FWDKq.js", "/assets/accordion-BPyhq471.js", "/assets/index-6Hu4Lmzn.js", "/assets/index-BE3KRz8n.js", "/assets/use-event-source-AZJtQsFX.js", "/assets/set-playground-ZcPraYj5.js", "/assets/progress-bar-Q9l2dtTg.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_exerciseNumber_._stepNumber.index-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/exercise+/$exerciseNumber_.finished": { "id": "routes/_app+/exercise+/$exerciseNumber_.finished", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber/finished", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_exerciseNumber_.finished-BgGBYU74.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/index-egcHQOpF.js", "/assets/epic-video-DRZssA4U.js", "/assets/misc-BK2EiKtY.js", "/assets/loading-ClL22bF9.js", "/assets/nav-chevrons-DVD_0i2a.js", "/assets/revalidation-ws-CLolY6Iu.js", "/assets/mdx-Z4bEoKXn.js", "/assets/progress-CnHFlUmF.js", "/assets/index-BZWIdOoA.js", "/assets/online-CHlOuJG-.js", "/assets/seo-pBpFCWsy.js", "/assets/components-DrvY4pal.js", "/assets/user-C0j04V55.js", "/assets/workshop-config-oL_FWDKq.js", "/assets/progress-bar-Q9l2dtTg.js", "/assets/pe-DXT2FOp1.js", "/assets/tooltip-leWCE50J.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/finished": { "id": "routes/_app+/finished", "parentId": "routes/_app+/_layout", "path": "finished", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/finished-6JNE1a1E.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/index-egcHQOpF.js", "/assets/epic-video-DRZssA4U.js", "/assets/misc-BK2EiKtY.js", "/assets/loading-ClL22bF9.js", "/assets/nav-chevrons-DVD_0i2a.js", "/assets/revalidation-ws-CLolY6Iu.js", "/assets/mdx-Z4bEoKXn.js", "/assets/online-CHlOuJG-.js", "/assets/seo-pBpFCWsy.js", "/assets/progress-CnHFlUmF.js", "/assets/index-BZWIdOoA.js", "/assets/components-DrvY4pal.js", "/assets/user-C0j04V55.js", "/assets/workshop-config-oL_FWDKq.js", "/assets/progress-bar-Q9l2dtTg.js", "/assets/pe-DXT2FOp1.js", "/assets/tooltip-leWCE50J.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/index": { "id": "routes/_app+/index", "parentId": "routes/_app+/_layout", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/index-CyFsiCNp.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/index-egcHQOpF.js", "/assets/epic-video-DRZssA4U.js", "/assets/error-boundary-De7jJlR5.js", "/assets/mdx-Z4bEoKXn.js", "/assets/misc-BK2EiKtY.js", "/assets/progress-CnHFlUmF.js", "/assets/components-DrvY4pal.js", "/assets/index-BZWIdOoA.js", "/assets/tooltip-leWCE50J.js", "/assets/pe-DXT2FOp1.js", "/assets/online-CHlOuJG-.js", "/assets/loading-ClL22bF9.js", "/assets/user-C0j04V55.js", "/assets/workshop-config-oL_FWDKq.js", "/assets/progress-bar-Q9l2dtTg.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/login": { "id": "routes/_app+/login", "parentId": "routes/_app+/_layout", "path": "login", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/login-C3I5NCrj.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/use-event-source-AZJtQsFX.js", "/assets/button-DVPKzWkn.js", "/assets/loading-ClL22bF9.js", "/assets/product-BkDgAOLQ.js", "/assets/workshop-config-oL_FWDKq.js", "/assets/index-BZWIdOoA.js", "/assets/components-DrvY4pal.js", "/assets/misc-BK2EiKtY.js", "/assets/tooltip-leWCE50J.js", "/assets/pe-DXT2FOp1.js"], "css": [] }, "routes/_app+/preferences": { "id": "routes/_app+/preferences", "parentId": "routes/_app+/_layout", "path": "preferences", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/preferences-BmwlU5EC.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/button-DVPKzWkn.js", "/assets/misc-BK2EiKtY.js", "/assets/tooltip-leWCE50J.js", "/assets/components-DrvY4pal.js"], "css": [] }, "routes/_app+/support": { "id": "routes/_app+/support", "parentId": "routes/_app+/_layout", "path": "support", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/support-CW3-Iilk.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/components-DrvY4pal.js"], "css": [] }, "routes/admin+/_layout": { "id": "routes/admin+/_layout", "parentId": "root", "path": "admin", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_layout-DV29dlKr.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/components-DrvY4pal.js"], "css": [] }, "routes/admin+/apps": { "id": "routes/admin+/apps", "parentId": "routes/admin+/_layout", "path": "apps", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/apps-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/admin+/cache": { "id": "routes/admin+/cache", "parentId": "routes/admin+/_layout", "path": "cache", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/cache-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/admin+/index": { "id": "routes/admin+/index", "parentId": "routes/admin+/_layout", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-Cnxrq9Ny.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/misc-BK2EiKtY.js", "/assets/tooltip-leWCE50J.js", "/assets/progress-CnHFlUmF.js", "/assets/components-DrvY4pal.js", "/assets/pe-DXT2FOp1.js"], "css": [] }, "routes/admin+/version": { "id": "routes/admin+/version", "parentId": "routes/admin+/_layout", "path": "version", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/version-D61Qvt0X.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/workshop-config-oL_FWDKq.js", "/assets/components-DrvY4pal.js"], "css": [] }, "routes/apps": { "id": "routes/apps", "parentId": "root", "path": "apps", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/apps-DP2rzg_V.js", "imports": [], "css": [] }, "routes/diff": { "id": "routes/diff", "parentId": "root", "path": "diff", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/diff-DVOUmaq6.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/misc-BK2EiKtY.js", "/assets/diff-C7Zh3uuA.js", "/assets/nav-chevrons-DVD_0i2a.js", "/assets/components-DrvY4pal.js", "/assets/accordion-BPyhq471.js", "/assets/tooltip-leWCE50J.js", "/assets/index-6Hu4Lmzn.js", "/assets/index-BE3KRz8n.js", "/assets/mdx-Z4bEoKXn.js", "/assets/epic-video-DRZssA4U.js", "/assets/index-BZWIdOoA.js", "/assets/pe-DXT2FOp1.js", "/assets/online-CHlOuJG-.js", "/assets/loading-ClL22bF9.js", "/assets/user-C0j04V55.js", "/assets/workshop-config-oL_FWDKq.js", "/assets/progress-bar-Q9l2dtTg.js", "/assets/revalidation-ws-CLolY6Iu.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/exercises": { "id": "routes/exercises", "parentId": "root", "path": "exercises", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/exercises-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/launch-editor": { "id": "routes/launch-editor", "parentId": "root", "path": "launch-editor", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/launch-editor-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/login-sse": { "id": "routes/login-sse", "parentId": "root", "path": "login-sse", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/login-sse-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/og": { "id": "routes/og", "parentId": "root", "path": "og", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/og-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/onboarding": { "id": "routes/onboarding", "parentId": "root", "path": "onboarding", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/onboarding-DjyKxkKx.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/button-DVPKzWkn.js", "/assets/epic-video-DRZssA4U.js", "/assets/components-DrvY4pal.js", "/assets/misc-BK2EiKtY.js", "/assets/index-BZWIdOoA.js", "/assets/tooltip-leWCE50J.js", "/assets/pe-DXT2FOp1.js", "/assets/online-CHlOuJG-.js", "/assets/loading-ClL22bF9.js", "/assets/user-C0j04V55.js", "/assets/workshop-config-oL_FWDKq.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/processes": { "id": "routes/processes", "parentId": "root", "path": "processes", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/processes-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/progress": { "id": "routes/progress", "parentId": "root", "path": "progress", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/progress-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/robots[.]txt": { "id": "routes/robots[.]txt", "parentId": "root", "path": "robots.txt", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/robots_._txt-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/set-playground": { "id": "routes/set-playground", "parentId": "root", "path": "set-playground", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/set-playground-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/sitemap[.]xml": { "id": "routes/sitemap[.]xml", "parentId": "root", "path": "sitemap.xml", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/sitemap_._xml-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/start": { "id": "routes/start", "parentId": "root", "path": "start", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/start-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/test": { "id": "routes/test", "parentId": "root", "path": "test", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/theme/index": { "id": "routes/theme/index", "parentId": "root", "path": "theme", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-DP2rzg_V.js", "imports": [], "css": [] }, "routes/video-player/index": { "id": "routes/video-player/index", "parentId": "root", "path": "video-player", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-K6Dvbx-E.js", "imports": [], "css": [] } }, "url": "/assets/manifest-a58be1e7.js", "version": "a58be1e7" };
11144
+ const serverManifest = { "entry": { "module": "/assets/entry.client-CQusg5Iz.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/components-DrvY4pal.js"], "css": [] }, "routes": { "root": { "id": "root", "parentId": void 0, "path": "", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/root-CvN3DiLu.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/components-DrvY4pal.js", "/assets/misc-BK2EiKtY.js", "/assets/pe-DXT2FOp1.js", "/assets/error-boundary-De7jJlR5.js", "/assets/progress-bar-Q9l2dtTg.js", "/assets/index-CB8bjE90.js", "/assets/tooltip-leWCE50J.js", "/assets/index-BZWIdOoA.js", "/assets/presence-CPOTHCHm.js", "/assets/seo-pBpFCWsy.js", "/assets/online-CHlOuJG-.js"], "css": [] }, "routes/$": { "id": "routes/$", "parentId": "root", "path": "*", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_-BDcQ_M2J.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/error-boundary-De7jJlR5.js", "/assets/misc-BK2EiKtY.js", "/assets/components-DrvY4pal.js"], "css": [] }, "routes/_app+/_layout": { "id": "routes/_app+/_layout", "parentId": "root", "path": void 0, "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_layout-DuDUPWax.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/misc-BK2EiKtY.js", "/assets/pe-DXT2FOp1.js", "/assets/product-BkDgAOLQ.js", "/assets/revalidation-ws-CLolY6Iu.js", "/assets/tooltip-leWCE50J.js", "/assets/index-BE3KRz8n.js", "/assets/user-C0j04V55.js", "/assets/workshop-config-oL_FWDKq.js", "/assets/online-CHlOuJG-.js", "/assets/presence-CPOTHCHm.js", "/assets/progress-CnHFlUmF.js", "/assets/index-BZWIdOoA.js", "/assets/components-DrvY4pal.js"], "css": [] }, "routes/_app+/account": { "id": "routes/_app+/account", "parentId": "routes/_app+/_layout", "path": "account", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/account-BwQvf4AS.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/button-DVPKzWkn.js", "/assets/misc-BK2EiKtY.js", "/assets/tooltip-leWCE50J.js", "/assets/user-C0j04V55.js", "/assets/workshop-config-oL_FWDKq.js", "/assets/components-DrvY4pal.js"], "css": [] }, "routes/_app+/app.$appName+/$": { "id": "routes/_app+/app.$appName+/$", "parentId": "routes/_app+/_layout", "path": "app/:appName/*", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/api.$": { "id": "routes/_app+/app.$appName+/api.$", "parentId": "routes/_app+/_layout", "path": "app/:appName/api/*", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/api._-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/epic_ws[.js]": { "id": "routes/_app+/app.$appName+/epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/:appName/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/index": { "id": "routes/_app+/app.$appName+/index", "parentId": "routes/_app+/_layout", "path": "app/:appName/", "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/test.$testName": { "id": "routes/_app+/app.$appName+/test.$testName", "parentId": "routes/_app+/_layout", "path": "app/:appName/test/:testName", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test._testName-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/test.epic_ws[.js]": { "id": "routes/_app+/app.$appName+/test.epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/:appName/test/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test.epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.epic_ws[.js]": { "id": "routes/_app+/app.epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/app.epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/discord": { "id": "routes/_app+/discord", "parentId": "routes/_app+/_layout", "path": "discord", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/discord-CFZUT74L.js", "imports": ["/assets/discord-CoBo5eVK.js", "/assets/index-CGzylDPY.js", "/assets/misc-BK2EiKtY.js", "/assets/components-DrvY4pal.js", "/assets/user-C0j04V55.js", "/assets/workshop-config-oL_FWDKq.js"], "css": [] }, "routes/_app+/exercise+/_layout": { "id": "routes/_app+/exercise+/_layout", "parentId": "routes/_app+/_layout", "path": "exercise", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_layout-CwTidn3v.js", "imports": ["/assets/index-CGzylDPY.js"], "css": [] }, "routes/_app+/exercise+/$exerciseNumber": { "id": "routes/_app+/exercise+/$exerciseNumber", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_exerciseNumber-CG2AFTtQ.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/index-egcHQOpF.js", "/assets/epic-video-DRZssA4U.js", "/assets/revalidation-ws-CLolY6Iu.js", "/assets/mdx-Z4bEoKXn.js", "/assets/progress-CnHFlUmF.js", "/assets/misc-BK2EiKtY.js", "/assets/seo-pBpFCWsy.js", "/assets/components-DrvY4pal.js", "/assets/index-BZWIdOoA.js", "/assets/tooltip-leWCE50J.js", "/assets/pe-DXT2FOp1.js", "/assets/online-CHlOuJG-.js", "/assets/loading-ClL22bF9.js", "/assets/user-C0j04V55.js", "/assets/workshop-config-oL_FWDKq.js", "/assets/progress-bar-Q9l2dtTg.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber/:stepNumber", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_exerciseNumber_._stepNumber-COWC332q.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/misc-BK2EiKtY.js", "/assets/components-DrvY4pal.js"], "css": [] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber", "path": ":type", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_layout-DKC1JUTc.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/index-egcHQOpF.js", "/assets/error-boundary-De7jJlR5.js", "/assets/nav-chevrons-DVD_0i2a.js", "/assets/revalidation-ws-CLolY6Iu.js", "/assets/mdx-Z4bEoKXn.js", "/assets/progress-CnHFlUmF.js", "/assets/set-playground-ZcPraYj5.js", "/assets/misc-BK2EiKtY.js", "/assets/seo-pBpFCWsy.js", "/assets/epic-video-DRZssA4U.js", "/assets/tooltip-leWCE50J.js", "/assets/index-BZWIdOoA.js", "/assets/components-DrvY4pal.js", "/assets/index-BE3KRz8n.js", "/assets/progress-bar-Q9l2dtTg.js", "/assets/pe-DXT2FOp1.js", "/assets/index-6Hu4Lmzn.js", "/assets/online-CHlOuJG-.js", "/assets/loading-ClL22bF9.js", "/assets/user-C0j04V55.js", "/assets/workshop-config-oL_FWDKq.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": "app", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/app-XHqxOZfy.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/preview-B2BxDDhi.js", "/assets/components-DrvY4pal.js", "/assets/misc-BK2EiKtY.js", "/assets/index-BZWIdOoA.js", "/assets/tooltip-leWCE50J.js", "/assets/pe-DXT2FOp1.js", "/assets/button-DVPKzWkn.js", "/assets/loading-ClL22bF9.js", "/assets/progress-bar-Q9l2dtTg.js"], "css": [] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/index-M647UyZv.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/tooltip-leWCE50J.js", "/assets/index-6Hu4Lmzn.js", "/assets/misc-BK2EiKtY.js", "/assets/diff-C7Zh3uuA.js", "/assets/error-boundary-De7jJlR5.js", "/assets/loading-ClL22bF9.js", "/assets/discord-CoBo5eVK.js", "/assets/online-CHlOuJG-.js", "/assets/components-DrvY4pal.js", "/assets/index-CB8bjE90.js", "/assets/set-playground-ZcPraYj5.js", "/assets/tests-CmjMQrMj.js", "/assets/preview-B2BxDDhi.js", "/assets/index-BE3KRz8n.js", "/assets/accordion-BPyhq471.js", "/assets/mdx-Z4bEoKXn.js", "/assets/epic-video-DRZssA4U.js", "/assets/index-BZWIdOoA.js", "/assets/pe-DXT2FOp1.js", "/assets/user-C0j04V55.js", "/assets/workshop-config-oL_FWDKq.js", "/assets/progress-bar-Q9l2dtTg.js", "/assets/revalidation-ws-CLolY6Iu.js", "/assets/use-event-source-AZJtQsFX.js", "/assets/button-DVPKzWkn.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": "test", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test-Bt9AuCey.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/tests-CmjMQrMj.js", "/assets/components-DrvY4pal.js", "/assets/epic-video-DRZssA4U.js", "/assets/index-BZWIdOoA.js", "/assets/misc-BK2EiKtY.js", "/assets/tooltip-leWCE50J.js", "/assets/pe-DXT2FOp1.js", "/assets/online-CHlOuJG-.js", "/assets/loading-ClL22bF9.js", "/assets/user-C0j04V55.js", "/assets/workshop-config-oL_FWDKq.js", "/assets/accordion-BPyhq471.js", "/assets/index-6Hu4Lmzn.js", "/assets/index-BE3KRz8n.js", "/assets/use-event-source-AZJtQsFX.js", "/assets/set-playground-ZcPraYj5.js", "/assets/progress-bar-Q9l2dtTg.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_exerciseNumber_._stepNumber.index-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/exercise+/$exerciseNumber_.finished": { "id": "routes/_app+/exercise+/$exerciseNumber_.finished", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber/finished", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_exerciseNumber_.finished-BgGBYU74.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/index-egcHQOpF.js", "/assets/epic-video-DRZssA4U.js", "/assets/misc-BK2EiKtY.js", "/assets/loading-ClL22bF9.js", "/assets/nav-chevrons-DVD_0i2a.js", "/assets/revalidation-ws-CLolY6Iu.js", "/assets/mdx-Z4bEoKXn.js", "/assets/progress-CnHFlUmF.js", "/assets/index-BZWIdOoA.js", "/assets/online-CHlOuJG-.js", "/assets/seo-pBpFCWsy.js", "/assets/components-DrvY4pal.js", "/assets/user-C0j04V55.js", "/assets/workshop-config-oL_FWDKq.js", "/assets/progress-bar-Q9l2dtTg.js", "/assets/pe-DXT2FOp1.js", "/assets/tooltip-leWCE50J.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/finished": { "id": "routes/_app+/finished", "parentId": "routes/_app+/_layout", "path": "finished", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/finished-6JNE1a1E.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/index-egcHQOpF.js", "/assets/epic-video-DRZssA4U.js", "/assets/misc-BK2EiKtY.js", "/assets/loading-ClL22bF9.js", "/assets/nav-chevrons-DVD_0i2a.js", "/assets/revalidation-ws-CLolY6Iu.js", "/assets/mdx-Z4bEoKXn.js", "/assets/online-CHlOuJG-.js", "/assets/seo-pBpFCWsy.js", "/assets/progress-CnHFlUmF.js", "/assets/index-BZWIdOoA.js", "/assets/components-DrvY4pal.js", "/assets/user-C0j04V55.js", "/assets/workshop-config-oL_FWDKq.js", "/assets/progress-bar-Q9l2dtTg.js", "/assets/pe-DXT2FOp1.js", "/assets/tooltip-leWCE50J.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/index": { "id": "routes/_app+/index", "parentId": "routes/_app+/_layout", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/index-CyFsiCNp.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/index-egcHQOpF.js", "/assets/epic-video-DRZssA4U.js", "/assets/error-boundary-De7jJlR5.js", "/assets/mdx-Z4bEoKXn.js", "/assets/misc-BK2EiKtY.js", "/assets/progress-CnHFlUmF.js", "/assets/components-DrvY4pal.js", "/assets/index-BZWIdOoA.js", "/assets/tooltip-leWCE50J.js", "/assets/pe-DXT2FOp1.js", "/assets/online-CHlOuJG-.js", "/assets/loading-ClL22bF9.js", "/assets/user-C0j04V55.js", "/assets/workshop-config-oL_FWDKq.js", "/assets/progress-bar-Q9l2dtTg.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/login": { "id": "routes/_app+/login", "parentId": "routes/_app+/_layout", "path": "login", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/login-C3I5NCrj.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/use-event-source-AZJtQsFX.js", "/assets/button-DVPKzWkn.js", "/assets/loading-ClL22bF9.js", "/assets/product-BkDgAOLQ.js", "/assets/workshop-config-oL_FWDKq.js", "/assets/index-BZWIdOoA.js", "/assets/components-DrvY4pal.js", "/assets/misc-BK2EiKtY.js", "/assets/tooltip-leWCE50J.js", "/assets/pe-DXT2FOp1.js"], "css": [] }, "routes/_app+/preferences": { "id": "routes/_app+/preferences", "parentId": "routes/_app+/_layout", "path": "preferences", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/preferences-BmwlU5EC.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/button-DVPKzWkn.js", "/assets/misc-BK2EiKtY.js", "/assets/tooltip-leWCE50J.js", "/assets/components-DrvY4pal.js"], "css": [] }, "routes/_app+/support": { "id": "routes/_app+/support", "parentId": "routes/_app+/_layout", "path": "support", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/support-CW3-Iilk.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/components-DrvY4pal.js"], "css": [] }, "routes/admin+/_layout": { "id": "routes/admin+/_layout", "parentId": "root", "path": "admin", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_layout-DV29dlKr.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/components-DrvY4pal.js"], "css": [] }, "routes/admin+/apps": { "id": "routes/admin+/apps", "parentId": "routes/admin+/_layout", "path": "apps", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/apps-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/admin+/cache": { "id": "routes/admin+/cache", "parentId": "routes/admin+/_layout", "path": "cache", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/cache-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/admin+/index": { "id": "routes/admin+/index", "parentId": "routes/admin+/_layout", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-Cnxrq9Ny.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/misc-BK2EiKtY.js", "/assets/tooltip-leWCE50J.js", "/assets/progress-CnHFlUmF.js", "/assets/components-DrvY4pal.js", "/assets/pe-DXT2FOp1.js"], "css": [] }, "routes/admin+/notifications": { "id": "routes/admin+/notifications", "parentId": "routes/admin+/_layout", "path": "notifications", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/notifications-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/admin+/update-repo": { "id": "routes/admin+/update-repo", "parentId": "routes/admin+/_layout", "path": "update-repo", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/update-repo-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/admin+/version": { "id": "routes/admin+/version", "parentId": "routes/admin+/_layout", "path": "version", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/version-D61Qvt0X.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/workshop-config-oL_FWDKq.js", "/assets/components-DrvY4pal.js"], "css": [] }, "routes/apps": { "id": "routes/apps", "parentId": "root", "path": "apps", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/apps-DP2rzg_V.js", "imports": [], "css": [] }, "routes/diff": { "id": "routes/diff", "parentId": "root", "path": "diff", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/diff-DVOUmaq6.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/misc-BK2EiKtY.js", "/assets/diff-C7Zh3uuA.js", "/assets/nav-chevrons-DVD_0i2a.js", "/assets/components-DrvY4pal.js", "/assets/accordion-BPyhq471.js", "/assets/tooltip-leWCE50J.js", "/assets/index-6Hu4Lmzn.js", "/assets/index-BE3KRz8n.js", "/assets/mdx-Z4bEoKXn.js", "/assets/epic-video-DRZssA4U.js", "/assets/index-BZWIdOoA.js", "/assets/pe-DXT2FOp1.js", "/assets/online-CHlOuJG-.js", "/assets/loading-ClL22bF9.js", "/assets/user-C0j04V55.js", "/assets/workshop-config-oL_FWDKq.js", "/assets/progress-bar-Q9l2dtTg.js", "/assets/revalidation-ws-CLolY6Iu.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/exercises": { "id": "routes/exercises", "parentId": "root", "path": "exercises", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/exercises-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/launch-editor": { "id": "routes/launch-editor", "parentId": "root", "path": "launch-editor", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/launch-editor-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/login-sse": { "id": "routes/login-sse", "parentId": "root", "path": "login-sse", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/login-sse-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/og": { "id": "routes/og", "parentId": "root", "path": "og", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/og-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/onboarding": { "id": "routes/onboarding", "parentId": "root", "path": "onboarding", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/onboarding-DjyKxkKx.js", "imports": ["/assets/index-CGzylDPY.js", "/assets/button-DVPKzWkn.js", "/assets/epic-video-DRZssA4U.js", "/assets/components-DrvY4pal.js", "/assets/misc-BK2EiKtY.js", "/assets/index-BZWIdOoA.js", "/assets/tooltip-leWCE50J.js", "/assets/pe-DXT2FOp1.js", "/assets/online-CHlOuJG-.js", "/assets/loading-ClL22bF9.js", "/assets/user-C0j04V55.js", "/assets/workshop-config-oL_FWDKq.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/processes": { "id": "routes/processes", "parentId": "root", "path": "processes", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/processes-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/progress": { "id": "routes/progress", "parentId": "root", "path": "progress", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/progress-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/robots[.]txt": { "id": "routes/robots[.]txt", "parentId": "root", "path": "robots.txt", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/robots_._txt-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/set-playground": { "id": "routes/set-playground", "parentId": "root", "path": "set-playground", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/set-playground-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/sitemap[.]xml": { "id": "routes/sitemap[.]xml", "parentId": "root", "path": "sitemap.xml", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/sitemap_._xml-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/start": { "id": "routes/start", "parentId": "root", "path": "start", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/start-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/test": { "id": "routes/test", "parentId": "root", "path": "test", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/theme/index": { "id": "routes/theme/index", "parentId": "root", "path": "theme", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-DP2rzg_V.js", "imports": [], "css": [] }, "routes/video-player/index": { "id": "routes/video-player/index", "parentId": "root", "path": "video-player", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-K6Dvbx-E.js", "imports": [], "css": [] } }, "url": "/assets/manifest-864bde97.js", "version": "864bde97" };
10978
11145
  const mode = "production";
10979
11146
  const assetsBuildDirectory = "build/client";
10980
11147
  const basename = "/";
@@ -11223,13 +11390,29 @@ const routes = {
11223
11390
  caseSensitive: void 0,
11224
11391
  module: route29
11225
11392
  },
11393
+ "routes/admin+/notifications": {
11394
+ id: "routes/admin+/notifications",
11395
+ parentId: "routes/admin+/_layout",
11396
+ path: "notifications",
11397
+ index: void 0,
11398
+ caseSensitive: void 0,
11399
+ module: route30
11400
+ },
11401
+ "routes/admin+/update-repo": {
11402
+ id: "routes/admin+/update-repo",
11403
+ parentId: "routes/admin+/_layout",
11404
+ path: "update-repo",
11405
+ index: void 0,
11406
+ caseSensitive: void 0,
11407
+ module: route31
11408
+ },
11226
11409
  "routes/admin+/version": {
11227
11410
  id: "routes/admin+/version",
11228
11411
  parentId: "routes/admin+/_layout",
11229
11412
  path: "version",
11230
11413
  index: void 0,
11231
11414
  caseSensitive: void 0,
11232
- module: route30
11415
+ module: route32
11233
11416
  },
11234
11417
  "routes/apps": {
11235
11418
  id: "routes/apps",
@@ -11237,7 +11420,7 @@ const routes = {
11237
11420
  path: "apps",
11238
11421
  index: void 0,
11239
11422
  caseSensitive: void 0,
11240
- module: route31
11423
+ module: route33
11241
11424
  },
11242
11425
  "routes/diff": {
11243
11426
  id: "routes/diff",
@@ -11245,7 +11428,7 @@ const routes = {
11245
11428
  path: "diff",
11246
11429
  index: void 0,
11247
11430
  caseSensitive: void 0,
11248
- module: route32
11431
+ module: route34
11249
11432
  },
11250
11433
  "routes/exercises": {
11251
11434
  id: "routes/exercises",
@@ -11253,7 +11436,7 @@ const routes = {
11253
11436
  path: "exercises",
11254
11437
  index: void 0,
11255
11438
  caseSensitive: void 0,
11256
- module: route33
11439
+ module: route35
11257
11440
  },
11258
11441
  "routes/launch-editor": {
11259
11442
  id: "routes/launch-editor",
@@ -11261,7 +11444,7 @@ const routes = {
11261
11444
  path: "launch-editor",
11262
11445
  index: void 0,
11263
11446
  caseSensitive: void 0,
11264
- module: route34
11447
+ module: route36
11265
11448
  },
11266
11449
  "routes/login-sse": {
11267
11450
  id: "routes/login-sse",
@@ -11269,7 +11452,7 @@ const routes = {
11269
11452
  path: "login-sse",
11270
11453
  index: void 0,
11271
11454
  caseSensitive: void 0,
11272
- module: route35
11455
+ module: route37
11273
11456
  },
11274
11457
  "routes/og": {
11275
11458
  id: "routes/og",
@@ -11277,7 +11460,7 @@ const routes = {
11277
11460
  path: "og",
11278
11461
  index: void 0,
11279
11462
  caseSensitive: void 0,
11280
- module: route36
11463
+ module: route38
11281
11464
  },
11282
11465
  "routes/onboarding": {
11283
11466
  id: "routes/onboarding",
@@ -11285,7 +11468,7 @@ const routes = {
11285
11468
  path: "onboarding",
11286
11469
  index: void 0,
11287
11470
  caseSensitive: void 0,
11288
- module: route37
11471
+ module: route39
11289
11472
  },
11290
11473
  "routes/processes": {
11291
11474
  id: "routes/processes",
@@ -11293,7 +11476,7 @@ const routes = {
11293
11476
  path: "processes",
11294
11477
  index: void 0,
11295
11478
  caseSensitive: void 0,
11296
- module: route38
11479
+ module: route40
11297
11480
  },
11298
11481
  "routes/progress": {
11299
11482
  id: "routes/progress",
@@ -11301,7 +11484,7 @@ const routes = {
11301
11484
  path: "progress",
11302
11485
  index: void 0,
11303
11486
  caseSensitive: void 0,
11304
- module: route39
11487
+ module: route41
11305
11488
  },
11306
11489
  "routes/robots[.]txt": {
11307
11490
  id: "routes/robots[.]txt",
@@ -11309,7 +11492,7 @@ const routes = {
11309
11492
  path: "robots.txt",
11310
11493
  index: void 0,
11311
11494
  caseSensitive: void 0,
11312
- module: route40
11495
+ module: route42
11313
11496
  },
11314
11497
  "routes/set-playground": {
11315
11498
  id: "routes/set-playground",
@@ -11317,7 +11500,7 @@ const routes = {
11317
11500
  path: "set-playground",
11318
11501
  index: void 0,
11319
11502
  caseSensitive: void 0,
11320
- module: route41
11503
+ module: route43
11321
11504
  },
11322
11505
  "routes/sitemap[.]xml": {
11323
11506
  id: "routes/sitemap[.]xml",
@@ -11325,7 +11508,7 @@ const routes = {
11325
11508
  path: "sitemap.xml",
11326
11509
  index: void 0,
11327
11510
  caseSensitive: void 0,
11328
- module: route42
11511
+ module: route44
11329
11512
  },
11330
11513
  "routes/start": {
11331
11514
  id: "routes/start",
@@ -11333,7 +11516,7 @@ const routes = {
11333
11516
  path: "start",
11334
11517
  index: void 0,
11335
11518
  caseSensitive: void 0,
11336
- module: route43
11519
+ module: route45
11337
11520
  },
11338
11521
  "routes/test": {
11339
11522
  id: "routes/test",
@@ -11341,7 +11524,7 @@ const routes = {
11341
11524
  path: "test",
11342
11525
  index: void 0,
11343
11526
  caseSensitive: void 0,
11344
- module: route44
11527
+ module: route46
11345
11528
  },
11346
11529
  "routes/theme/index": {
11347
11530
  id: "routes/theme/index",
@@ -11349,7 +11532,7 @@ const routes = {
11349
11532
  path: "theme",
11350
11533
  index: void 0,
11351
11534
  caseSensitive: void 0,
11352
- module: route45
11535
+ module: route47
11353
11536
  },
11354
11537
  "routes/video-player/index": {
11355
11538
  id: "routes/video-player/index",
@@ -11357,7 +11540,7 @@ const routes = {
11357
11540
  path: "video-player",
11358
11541
  index: void 0,
11359
11542
  caseSensitive: void 0,
11360
- module: route46
11543
+ module: route48
11361
11544
  }
11362
11545
  };
11363
11546
  export {