@commentray/render 0.0.2 → 0.0.4

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.
Files changed (47) hide show
  1. package/dist/block-stretch-layout.d.ts +30 -0
  2. package/dist/block-stretch-layout.d.ts.map +1 -0
  3. package/dist/block-stretch-layout.js +116 -0
  4. package/dist/block-stretch-layout.js.map +1 -0
  5. package/dist/build-commentray-nav-search.d.ts +52 -0
  6. package/dist/build-commentray-nav-search.d.ts.map +1 -0
  7. package/dist/build-commentray-nav-search.js +79 -0
  8. package/dist/build-commentray-nav-search.js.map +1 -0
  9. package/dist/code-browser-client.bundle.js +7 -5
  10. package/dist/code-browser-client.js +428 -69
  11. package/dist/code-browser-client.js.map +1 -1
  12. package/dist/code-browser-embedded-payload.d.ts +10 -0
  13. package/dist/code-browser-embedded-payload.d.ts.map +1 -0
  14. package/dist/code-browser-embedded-payload.js +18 -0
  15. package/dist/code-browser-embedded-payload.js.map +1 -0
  16. package/dist/code-browser-encoding.d.ts +9 -0
  17. package/dist/code-browser-encoding.d.ts.map +1 -0
  18. package/dist/code-browser-encoding.js +24 -0
  19. package/dist/code-browser-encoding.js.map +1 -0
  20. package/dist/code-browser-scroll-sync.d.ts +6 -0
  21. package/dist/code-browser-scroll-sync.d.ts.map +1 -1
  22. package/dist/code-browser-scroll-sync.js +1 -0
  23. package/dist/code-browser-scroll-sync.js.map +1 -1
  24. package/dist/code-browser-web-storage.d.ts +7 -0
  25. package/dist/code-browser-web-storage.d.ts.map +1 -0
  26. package/dist/code-browser-web-storage.js +21 -0
  27. package/dist/code-browser-web-storage.js.map +1 -0
  28. package/dist/code-browser.d.ts +47 -0
  29. package/dist/code-browser.d.ts.map +1 -1
  30. package/dist/code-browser.js +307 -37
  31. package/dist/code-browser.js.map +1 -1
  32. package/dist/index.d.ts +2 -0
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +1 -0
  35. package/dist/index.js.map +1 -1
  36. package/dist/markdown-pipeline.d.ts.map +1 -1
  37. package/dist/markdown-pipeline.js +13 -1
  38. package/dist/markdown-pipeline.js.map +1 -1
  39. package/dist/mermaid-runtime-html.d.ts +7 -0
  40. package/dist/mermaid-runtime-html.d.ts.map +1 -0
  41. package/dist/mermaid-runtime-html.js +26 -0
  42. package/dist/mermaid-runtime-html.js.map +1 -0
  43. package/dist/side-by-side.d.ts +2 -0
  44. package/dist/side-by-side.d.ts.map +1 -1
  45. package/dist/side-by-side.js +7 -7
  46. package/dist/side-by-side.js.map +1 -1
  47. package/package.json +6 -4
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Read base64-embedded raw source + commentray markdown from the static HTML shell.
3
+ *
4
+ * Older pages put `data-raw-*-b64` on `#code-pane`; current markup puts them on `#shell`.
5
+ */
6
+ export declare function readEmbeddedRawB64Strings(shell: Pick<HTMLElement, "getAttribute">, codePane: Pick<HTMLElement, "getAttribute">): {
7
+ rawCodeB64: string;
8
+ rawMdB64: string;
9
+ };
10
+ //# sourceMappingURL=code-browser-embedded-payload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-browser-embedded-payload.d.ts","sourceRoot":"","sources":["../src/code-browser-embedded-payload.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,EACxC,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,GAC1C;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAU1C"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Read base64-embedded raw source + commentray markdown from the static HTML shell.
3
+ *
4
+ * Older pages put `data-raw-*-b64` on `#code-pane`; current markup puts them on `#shell`.
5
+ */
6
+ export function readEmbeddedRawB64Strings(shell, codePane) {
7
+ function pick(name) {
8
+ const fromShell = shell.getAttribute(name);
9
+ if (fromShell !== null && fromShell.trim() !== "")
10
+ return fromShell;
11
+ return codePane.getAttribute(name)?.trim() ?? "";
12
+ }
13
+ return {
14
+ rawCodeB64: pick("data-raw-code-b64"),
15
+ rawMdB64: pick("data-raw-md-b64"),
16
+ };
17
+ }
18
+ //# sourceMappingURL=code-browser-embedded-payload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-browser-embedded-payload.js","sourceRoot":"","sources":["../src/code-browser-embedded-payload.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CACvC,KAAwC,EACxC,QAA2C;IAE3C,SAAS,IAAI,CAAC,IAAY;QACxB,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,OAAO,SAAS,CAAC;QACpE,OAAO,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACnD,CAAC;IACD,OAAO;QACL,UAAU,EAAE,IAAI,CAAC,mBAAmB,CAAC;QACrC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC;KAClC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Decode base64 payload embedded in HTML attributes (UTF-8 bytes, as produced by Node
3
+ * `Buffer.from(str, "utf8").toString("base64")`).
4
+ *
5
+ * Avoids `decodeURIComponent(escape(atob(...)))`, which is fragile for some Unicode
6
+ * in modern browsers and can fail silently in edge cases.
7
+ */
8
+ export declare function decodeBase64Utf8(b64: string): string;
9
+ //# sourceMappingURL=code-browser-encoding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-browser-encoding.d.ts","sourceRoot":"","sources":["../src/code-browser-encoding.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAapD"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Decode base64 payload embedded in HTML attributes (UTF-8 bytes, as produced by Node
3
+ * `Buffer.from(str, "utf8").toString("base64")`).
4
+ *
5
+ * Avoids `decodeURIComponent(escape(atob(...)))`, which is fragile for some Unicode
6
+ * in modern browsers and can fail silently in edge cases.
7
+ */
8
+ export function decodeBase64Utf8(b64) {
9
+ const t = b64.trim();
10
+ if (t === "")
11
+ return "";
12
+ try {
13
+ const bin = atob(t);
14
+ const u8 = new Uint8Array(bin.length);
15
+ for (let i = 0; i < bin.length; i++) {
16
+ u8[i] = bin.charCodeAt(i);
17
+ }
18
+ return new TextDecoder("utf-8", { fatal: false }).decode(u8);
19
+ }
20
+ catch {
21
+ return "";
22
+ }
23
+ }
24
+ //# sourceMappingURL=code-browser-encoding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-browser-encoding.js","sourceRoot":"","sources":["../src/code-browser-encoding.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACrB,IAAI,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,EAAE,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -1,3 +1,9 @@
1
+ /**
2
+ * Static browser scroll helpers: proportional mirror plus block pickers from
3
+ * `@commentray/core/block-scroll-pickers` (small browser bundle entry).
4
+ */
5
+ export type { BlockScrollLink } from "@commentray/core/block-scroll-pickers";
6
+ export { pickCommentrayLineForSourceScroll, pickSourceLine0ForCommentrayScroll, } from "@commentray/core/block-scroll-pickers";
1
7
  /**
2
8
  * Maps one pane’s scroll position to the other for **proportional** scroll sync
3
9
  * (static code browser). Mirrors the ratio fallback used while editing when
@@ -1 +1 @@
1
- {"version":3,"file":"code-browser-scroll-sync.d.ts","sourceRoot":"","sources":["../src/code-browser-scroll-sync.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,eAAe,EAAE,MAAM,EACvB,kBAAkB,EAAE,MAAM,EAC1B,kBAAkB,EAAE,MAAM,EAC1B,kBAAkB,EAAE,MAAM,EAC1B,kBAAkB,EAAE,MAAM,GACzB,MAAM,CAMR"}
1
+ {"version":3,"file":"code-browser-scroll-sync.d.ts","sourceRoot":"","sources":["../src/code-browser-scroll-sync.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,YAAY,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EACL,iCAAiC,EACjC,kCAAkC,GACnC,MAAM,uCAAuC,CAAC;AAE/C;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,eAAe,EAAE,MAAM,EACvB,kBAAkB,EAAE,MAAM,EAC1B,kBAAkB,EAAE,MAAM,EAC1B,kBAAkB,EAAE,MAAM,EAC1B,kBAAkB,EAAE,MAAM,GACzB,MAAM,CAMR"}
@@ -1,3 +1,4 @@
1
+ export { pickCommentrayLineForSourceScroll, pickSourceLine0ForCommentrayScroll, } from "@commentray/core/block-scroll-pickers";
1
2
  /**
2
3
  * Maps one pane’s scroll position to the other for **proportional** scroll sync
3
4
  * (static code browser). Mirrors the ratio fallback used while editing when
@@ -1 +1 @@
1
- {"version":3,"file":"code-browser-scroll-sync.js","sourceRoot":"","sources":["../src/code-browser-scroll-sync.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,eAAuB,EACvB,kBAA0B,EAC1B,kBAA0B,EAC1B,kBAA0B,EAC1B,kBAA0B;IAE1B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,kBAAkB,GAAG,kBAAkB,CAAC,CAAC;IACvE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,kBAAkB,GAAG,kBAAkB,CAAC,CAAC;IACvE,IAAI,SAAS,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAG,eAAe,GAAG,SAAS,CAAC;IAC1C,OAAO,KAAK,GAAG,SAAS,CAAC;AAC3B,CAAC"}
1
+ {"version":3,"file":"code-browser-scroll-sync.js","sourceRoot":"","sources":["../src/code-browser-scroll-sync.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,iCAAiC,EACjC,kCAAkC,GACnC,MAAM,uCAAuC,CAAC;AAE/C;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,eAAuB,EACvB,kBAA0B,EAC1B,kBAA0B,EAC1B,kBAA0B,EAC1B,kBAA0B;IAE1B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,kBAAkB,GAAG,kBAAkB,CAAC,CAAC;IACvE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,kBAAkB,GAAG,kBAAkB,CAAC,CAAC;IACvE,IAAI,SAAS,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAG,eAAe,GAAG,SAAS,CAAC;IAC1C,OAAO,KAAK,GAAG,SAAS,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * `localStorage` / `sessionStorage` can throw on `file:` URLs and in hardened browsers
3
+ * (Safari, strict privacy). Treat failures as "no persisted value".
4
+ */
5
+ export declare function readWebStorageItem(storage: Storage, key: string): string | null;
6
+ export declare function writeWebStorageItem(storage: Storage, key: string, value: string): void;
7
+ //# sourceMappingURL=code-browser-web-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-browser-web-storage.d.ts","sourceRoot":"","sources":["../src/code-browser-web-storage.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM/E;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAMtF"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * `localStorage` / `sessionStorage` can throw on `file:` URLs and in hardened browsers
3
+ * (Safari, strict privacy). Treat failures as "no persisted value".
4
+ */
5
+ export function readWebStorageItem(storage, key) {
6
+ try {
7
+ return storage.getItem(key);
8
+ }
9
+ catch {
10
+ return null;
11
+ }
12
+ }
13
+ export function writeWebStorageItem(storage, key, value) {
14
+ try {
15
+ storage.setItem(key, value);
16
+ }
17
+ catch {
18
+ // ignore — e.g. file://, private mode, quota
19
+ }
20
+ }
21
+ //# sourceMappingURL=code-browser-web-storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-browser-web-storage.js","sourceRoot":"","sources":["../src/code-browser-web-storage.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAgB,EAAE,GAAW;IAC9D,IAAI,CAAC;QACH,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAgB,EAAE,GAAW,EAAE,KAAa;IAC9E,IAAI,CAAC;QACH,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,6CAA6C;IAC/C,CAAC;AACH,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { type CommentrayIndex } from "@commentray/core";
1
2
  import { type CommentrayOutputUrlOptions } from "./markdown-pipeline.js";
2
3
  export type CodeBrowserPageOptions = {
3
4
  title?: string;
@@ -37,6 +38,52 @@ export type CodeBrowserPageOptions = {
37
38
  * Free-form label for `<meta name="generator">` (e.g. package versions). Omitted when unset.
38
39
  */
39
40
  generatorLabel?: string;
41
+ /**
42
+ * When set and index blocks align with `<!-- commentray:block id=… -->` markers,
43
+ * emits a two-column **blame-style** table: **one row per block** (plus gap rows for
44
+ * unmapped lines). Code and commentary cells share the **same row height** (the taller
45
+ * side wins; the shorter side is top-aligned with natural padding below). One shell
46
+ * scroll keeps both columns aligned.
47
+ */
48
+ blockStretchRows?: {
49
+ index: CommentrayIndex;
50
+ sourceRelative: string;
51
+ commentrayPathRel: string;
52
+ };
53
+ /**
54
+ * `auto` (default): when `blockStretchRows` is set and a block-stretch table can be built,
55
+ * use the stretch layout; otherwise dual panes.
56
+ * `dual`: always use side-by-side panes (skips stretch), so block markers + index can drive
57
+ * **block-aware** scroll sync and separator lines in the commentray pane.
58
+ */
59
+ codeBrowserLayout?: "auto" | "dual";
60
+ /**
61
+ * `full` (default): in-page search indexes every source line and every commentray line.
62
+ * `commentray-and-paths`: search only **toolbar path labels** plus commentray Markdown (no code-body line corpus).
63
+ */
64
+ staticSearchScope?: "full" | "commentray-and-paths";
65
+ /** Repo-relative companion Markdown path; used with `staticSearchScope: "commentray-and-paths"` for path labels. */
66
+ commentrayPathForSearch?: string;
67
+ /**
68
+ * GitHub **blob** URL for the primary `filePath` (static hub). Shown in the toolbar when set
69
+ * (`http`/`https` only).
70
+ */
71
+ sourceOnGithubUrl?: string;
72
+ /**
73
+ * GitHub **blob** URL for the companion commentray Markdown (same constraints as `sourceOnGithubUrl`).
74
+ */
75
+ commentrayOnGithubUrl?: string;
76
+ /**
77
+ * Relative URL to a nav JSON document (e.g. `./commentray-nav-search.json`) that includes
78
+ * `documentedPairs` — enables the **Documented files** tree in the toolbar.
79
+ */
80
+ documentedNavJsonUrl?: string;
81
+ /**
82
+ * Base64 UTF-8 JSON array of documented pairs (same shape as `documentedPairs` in the nav JSON).
83
+ * When set on `#shell`, the tree loads **without** fetching `documentedNavJsonUrl` — works offline
84
+ * and with `file://` where `fetch` to a sidecar JSON is unavailable.
85
+ */
86
+ documentedPairsEmbeddedB64?: string;
40
87
  };
41
88
  /**
42
89
  * Static HTML shell for a minimal “code browser”: code + rendered commentray,
@@ -1 +1 @@
1
- {"version":3,"file":"code-browser.d.ts","sourceRoot":"","sources":["../src/code-browser.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,0BAA0B,EAGhC,MAAM,wBAAwB,CAAC;AAEhC,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,0BAA0B,CAAC;IAClD;;;OAGG;IACH,gBAAgB,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACrD;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAsVF;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,CA0CzF"}
1
+ {"version":3,"file":"code-browser.d.ts","sourceRoot":"","sources":["../src/code-browser.ts"],"names":[],"mappings":"AAIA,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,kBAAkB,CAAC;AAK1B,OAAO,EACL,KAAK,0BAA0B,EAGhC,MAAM,wBAAwB,CAAC;AAEhC,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,0BAA0B,CAAC;IAClD;;;OAGG;IACH,gBAAgB,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACrD;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE;QACjB,KAAK,EAAE,eAAe,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;QACvB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,GAAG,sBAAsB,CAAC;IACpD,oHAAoH;IACpH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;OAIG;IACH,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACrC,CAAC;AAwoBF;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,CA+CzF"}