@usejunior/docx-core 0.18.0 → 0.20.1

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 (142) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/core-types.d.ts +1 -139
  3. package/dist/core-types.d.ts.map +1 -1
  4. package/dist/core-types.js +1 -3
  5. package/dist/core-types.js.map +1 -1
  6. package/dist/generation/emit/borders.d.ts +14 -0
  7. package/dist/generation/emit/borders.d.ts.map +1 -0
  8. package/dist/generation/emit/borders.js +45 -0
  9. package/dist/generation/emit/borders.js.map +1 -0
  10. package/dist/generation/emit/properties.d.ts +1 -1
  11. package/dist/generation/emit/properties.d.ts.map +1 -1
  12. package/dist/generation/emit/properties.js +4 -0
  13. package/dist/generation/emit/properties.js.map +1 -1
  14. package/dist/generation/emit/table.d.ts.map +1 -1
  15. package/dist/generation/emit/table.js +3 -31
  16. package/dist/generation/emit/table.js.map +1 -1
  17. package/dist/generation/index.d.ts +1 -1
  18. package/dist/generation/index.d.ts.map +1 -1
  19. package/dist/generation/types.d.ts +9 -0
  20. package/dist/generation/types.d.ts.map +1 -1
  21. package/dist/generation/types.js.map +1 -1
  22. package/dist/generation/validate-spec.d.ts.map +1 -1
  23. package/dist/generation/validate-spec.js +2 -0
  24. package/dist/generation/validate-spec.js.map +1 -1
  25. package/dist/index.d.ts +3 -0
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +11 -0
  28. package/dist/index.js.map +1 -1
  29. package/dist/integration/generation-probes.d.ts +36 -2
  30. package/dist/integration/generation-probes.d.ts.map +1 -1
  31. package/dist/integration/generation-probes.js +137 -15
  32. package/dist/integration/generation-probes.js.map +1 -1
  33. package/dist/integration/libreoffice-oracle.js +1 -1
  34. package/dist/integration/synthetic-docx-fixture.d.ts.map +1 -1
  35. package/dist/integration/synthetic-docx-fixture.js +37 -20
  36. package/dist/integration/synthetic-docx-fixture.js.map +1 -1
  37. package/dist/primitives/accept_ai_edits.js +14 -2
  38. package/dist/primitives/accept_ai_edits.js.map +1 -1
  39. package/dist/primitives/accept_changes.d.ts +7 -0
  40. package/dist/primitives/accept_changes.d.ts.map +1 -1
  41. package/dist/primitives/accept_changes.js +92 -4
  42. package/dist/primitives/accept_changes.js.map +1 -1
  43. package/dist/primitives/bookmarks.d.ts +1 -0
  44. package/dist/primitives/bookmarks.d.ts.map +1 -1
  45. package/dist/primitives/bookmarks.js +1 -1
  46. package/dist/primitives/bookmarks.js.map +1 -1
  47. package/dist/primitives/comments.d.ts +31 -4
  48. package/dist/primitives/comments.d.ts.map +1 -1
  49. package/dist/primitives/comments.js +111 -12
  50. package/dist/primitives/comments.js.map +1 -1
  51. package/dist/primitives/document.d.ts +47 -1
  52. package/dist/primitives/document.d.ts.map +1 -1
  53. package/dist/primitives/document.js +198 -13
  54. package/dist/primitives/document.js.map +1 -1
  55. package/dist/primitives/document_view-headings.d.ts +3 -1
  56. package/dist/primitives/document_view-headings.d.ts.map +1 -1
  57. package/dist/primitives/document_view-headings.js +5 -5
  58. package/dist/primitives/document_view-headings.js.map +1 -1
  59. package/dist/primitives/document_view.d.ts +2 -0
  60. package/dist/primitives/document_view.d.ts.map +1 -1
  61. package/dist/primitives/document_view.js +18 -4
  62. package/dist/primitives/document_view.js.map +1 -1
  63. package/dist/primitives/field_evaluation.d.ts +70 -0
  64. package/dist/primitives/field_evaluation.d.ts.map +1 -0
  65. package/dist/primitives/field_evaluation.js +462 -0
  66. package/dist/primitives/field_evaluation.js.map +1 -0
  67. package/dist/primitives/footnotes.d.ts +17 -3
  68. package/dist/primitives/footnotes.d.ts.map +1 -1
  69. package/dist/primitives/footnotes.js +64 -17
  70. package/dist/primitives/footnotes.js.map +1 -1
  71. package/dist/primitives/formatting_tags.js +2 -2
  72. package/dist/primitives/formatting_tags.js.map +1 -1
  73. package/dist/primitives/index.d.ts +8 -1
  74. package/dist/primitives/index.d.ts.map +1 -1
  75. package/dist/primitives/index.js +8 -1
  76. package/dist/primitives/index.js.map +1 -1
  77. package/dist/primitives/merge_runs.d.ts +3 -1
  78. package/dist/primitives/merge_runs.d.ts.map +1 -1
  79. package/dist/primitives/merge_runs.js +12 -2
  80. package/dist/primitives/merge_runs.js.map +1 -1
  81. package/dist/primitives/namespaces.d.ts +12 -2
  82. package/dist/primitives/namespaces.d.ts.map +1 -1
  83. package/dist/primitives/namespaces.js +13 -2
  84. package/dist/primitives/namespaces.js.map +1 -1
  85. package/dist/primitives/note_conversion.d.ts +11 -0
  86. package/dist/primitives/note_conversion.d.ts.map +1 -0
  87. package/dist/primitives/note_conversion.js +12 -0
  88. package/dist/primitives/note_conversion.js.map +1 -0
  89. package/dist/primitives/opc-target.d.ts +24 -0
  90. package/dist/primitives/opc-target.d.ts.map +1 -0
  91. package/dist/primitives/opc-target.js +99 -0
  92. package/dist/primitives/opc-target.js.map +1 -0
  93. package/dist/primitives/paragraph_numbering.d.ts +40 -0
  94. package/dist/primitives/paragraph_numbering.d.ts.map +1 -0
  95. package/dist/primitives/paragraph_numbering.js +198 -0
  96. package/dist/primitives/paragraph_numbering.js.map +1 -0
  97. package/dist/primitives/reject_changes.d.ts +7 -0
  98. package/dist/primitives/reject_changes.d.ts.map +1 -1
  99. package/dist/primitives/reject_changes.js +133 -10
  100. package/dist/primitives/reject_changes.js.map +1 -1
  101. package/dist/primitives/sectPrAudit.d.ts +18 -1
  102. package/dist/primitives/sectPrAudit.d.ts.map +1 -1
  103. package/dist/primitives/sectPrAudit.js +120 -34
  104. package/dist/primitives/sectPrAudit.js.map +1 -1
  105. package/dist/primitives/sections.d.ts +134 -0
  106. package/dist/primitives/sections.d.ts.map +1 -0
  107. package/dist/primitives/sections.js +644 -0
  108. package/dist/primitives/sections.js.map +1 -0
  109. package/dist/primitives/serialize_html.d.ts.map +1 -1
  110. package/dist/primitives/serialize_html.js +18 -7
  111. package/dist/primitives/serialize_html.js.map +1 -1
  112. package/dist/primitives/styles.d.ts +60 -0
  113. package/dist/primitives/styles.d.ts.map +1 -1
  114. package/dist/primitives/styles.js +206 -25
  115. package/dist/primitives/styles.js.map +1 -1
  116. package/dist/primitives/symbol_run_content.d.ts +42 -0
  117. package/dist/primitives/symbol_run_content.d.ts.map +1 -0
  118. package/dist/primitives/symbol_run_content.js +79 -0
  119. package/dist/primitives/symbol_run_content.js.map +1 -0
  120. package/dist/primitives/text.d.ts +29 -0
  121. package/dist/primitives/text.d.ts.map +1 -1
  122. package/dist/primitives/text.js +354 -44
  123. package/dist/primitives/text.js.map +1 -1
  124. package/dist/primitives/track-changes-emitter.d.ts +9 -0
  125. package/dist/primitives/track-changes-emitter.d.ts.map +1 -1
  126. package/dist/primitives/track-changes-emitter.js +40 -2
  127. package/dist/primitives/track-changes-emitter.js.map +1 -1
  128. package/dist/primitives/validate_document.d.ts.map +1 -1
  129. package/dist/primitives/validate_document.js +22 -1
  130. package/dist/primitives/validate_document.js.map +1 -1
  131. package/dist/shared/docx/DocxArchive.d.ts.map +1 -1
  132. package/dist/shared/docx/DocxArchive.js +7 -0
  133. package/dist/shared/docx/DocxArchive.js.map +1 -1
  134. package/dist/shared/field-semantics.d.ts +26 -0
  135. package/dist/shared/field-semantics.d.ts.map +1 -0
  136. package/dist/shared/field-semantics.js +232 -0
  137. package/dist/shared/field-semantics.js.map +1 -0
  138. package/dist/shared/field-structure.d.ts +14 -0
  139. package/dist/shared/field-structure.d.ts.map +1 -1
  140. package/dist/shared/field-structure.js +98 -7
  141. package/dist/shared/field-structure.js.map +1 -1
  142. package/package.json +3 -5
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Text projection of `<w:sym>` run content.
3
+ *
4
+ * A symbol glyph has two legal spellings in WordprocessingML and Word renders
5
+ * them identically:
6
+ *
7
+ * 1. `<w:sym w:font="Wingdings" w:char="F0A8"/>`, and
8
+ * 2. the same codepoint written literally inside a `<w:t>`, with the symbol
9
+ * font carried on the run's `<w:rFonts>`.
10
+ *
11
+ * Any text projection that walks `w:t`/`w:delText` alone therefore sees a
12
+ * document that *lost* a symbol and a document that *kept* it as the same
13
+ * string, and sees the two spellings of one glyph as different strings. This
14
+ * module is the single place the projection resolves spelling (1) into the
15
+ * characters spelling (2) would have contributed.
16
+ *
17
+ * The font is deliberately **not** part of the projected value. The projections
18
+ * that consume this are text projections: they already exclude `w:rFonts`, so
19
+ * folding `w:sym/@w:font` in would make the same font signal visible for one
20
+ * spelling of a glyph and invisible for the other, and would make the two
21
+ * spellings compare unequal by construction — the exact false difference this
22
+ * resolution exists to remove. A font-only change is a formatting change and
23
+ * belongs to the formatting-fidelity surface, not the round-trip text gate;
24
+ * that residual is tracked separately.
25
+ *
26
+ * @conformance ECMA-376 edition 5, Part 1 § 17.3.3.30
27
+ * @see https://github.com/UseJunior/safe-docx/issues/793
28
+ * @see https://github.com/UseJunior/safe-docx/issues/799
29
+ */
30
+ /** Local name of the symbol-character run-content element. */
31
+ export declare const SYM_LOCAL_NAME = "sym";
32
+ /**
33
+ * Project a `<w:sym>` element to the text it contributes, or `undefined` when
34
+ * `element` is not a `w:sym`.
35
+ *
36
+ * For a resolvable `@w:char` the result is exactly the character the glyph
37
+ * stands for — what it would have contributed had it been spelled as literal
38
+ * `w:t` content. Otherwise it is a framed, projection-only identity that keeps
39
+ * the element's presence visible without colliding with authored text.
40
+ */
41
+ export declare function projectSymbolRun(element: Element): string | undefined;
42
+ //# sourceMappingURL=symbol_run_content.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbol_run_content.d.ts","sourceRoot":"","sources":["../../src/primitives/symbol_run_content.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAIH,8DAA8D;AAC9D,eAAO,MAAM,cAAc,QAAQ,CAAC;AAkCpC;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAMrE"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Text projection of `<w:sym>` run content.
3
+ *
4
+ * A symbol glyph has two legal spellings in WordprocessingML and Word renders
5
+ * them identically:
6
+ *
7
+ * 1. `<w:sym w:font="Wingdings" w:char="F0A8"/>`, and
8
+ * 2. the same codepoint written literally inside a `<w:t>`, with the symbol
9
+ * font carried on the run's `<w:rFonts>`.
10
+ *
11
+ * Any text projection that walks `w:t`/`w:delText` alone therefore sees a
12
+ * document that *lost* a symbol and a document that *kept* it as the same
13
+ * string, and sees the two spellings of one glyph as different strings. This
14
+ * module is the single place the projection resolves spelling (1) into the
15
+ * characters spelling (2) would have contributed.
16
+ *
17
+ * The font is deliberately **not** part of the projected value. The projections
18
+ * that consume this are text projections: they already exclude `w:rFonts`, so
19
+ * folding `w:sym/@w:font` in would make the same font signal visible for one
20
+ * spelling of a glyph and invisible for the other, and would make the two
21
+ * spellings compare unequal by construction — the exact false difference this
22
+ * resolution exists to remove. A font-only change is a formatting change and
23
+ * belongs to the formatting-fidelity surface, not the round-trip text gate;
24
+ * that residual is tracked separately.
25
+ *
26
+ * @conformance ECMA-376 edition 5, Part 1 § 17.3.3.30
27
+ * @see https://github.com/UseJunior/safe-docx/issues/793
28
+ * @see https://github.com/UseJunior/safe-docx/issues/799
29
+ */
30
+ import { OOXML } from './namespaces.js';
31
+ /** Local name of the symbol-character run-content element. */
32
+ export const SYM_LOCAL_NAME = 'sym';
33
+ /**
34
+ * `w:sym/@w:char` is `ST_ShortHexNumber` — `xsd:hexBinary` restricted to
35
+ * `length="2"`, i.e. exactly two bytes, four hexadecimal digits. Every legal
36
+ * value is therefore a BMP codepoint and `String.fromCharCode` is total over
37
+ * the domain. Four digits exactly: `A` and `ABC` are outside the lexical space
38
+ * and must not be read as characters.
39
+ */
40
+ const SHORT_HEX_NUMBER = /^[0-9A-Fa-f]{4}$/u;
41
+ /**
42
+ * Projection identity for a `w:sym` whose `@w:char` is absent or outside
43
+ * `ST_ShortHexNumber`. Both `CT_Sym` attributes are optional in the vendored
44
+ * schema, so such an element is not schema-invalid — it is semantically
45
+ * unresolvable, and it is still *content*. Projecting nothing would reopen the
46
+ * blindness this module closes.
47
+ *
48
+ * It is a framed token rather than a character (U+FFFD was the obvious choice
49
+ * and is wrong: a document may author U+FFFD literally, and an unresolvable
50
+ * symbol would then compare equal to that text). The framing follows the
51
+ * `__safe_docx_pageref__|` convention already used for stable comparison
52
+ * identities in `docx-compare`.
53
+ */
54
+ const UNRESOLVED_SYMBOL_IDENTITY = '__safe_docx_sym__|unresolved';
55
+ function isSymElement(element) {
56
+ // The namespace check alone is sufficient, and a qualified-name fallback
57
+ // would be dead code: `parseXml` rejects an undeclared prefix outright
58
+ // (`NamespaceError: prefix is non-null and namespace is null`), so nothing
59
+ // reaching this function can be named `w:sym` with a null namespace.
60
+ return element.namespaceURI === OOXML.W_NS && element.localName === SYM_LOCAL_NAME;
61
+ }
62
+ /**
63
+ * Project a `<w:sym>` element to the text it contributes, or `undefined` when
64
+ * `element` is not a `w:sym`.
65
+ *
66
+ * For a resolvable `@w:char` the result is exactly the character the glyph
67
+ * stands for — what it would have contributed had it been spelled as literal
68
+ * `w:t` content. Otherwise it is a framed, projection-only identity that keeps
69
+ * the element's presence visible without colliding with authored text.
70
+ */
71
+ export function projectSymbolRun(element) {
72
+ if (!isSymElement(element))
73
+ return undefined;
74
+ const raw = element.getAttributeNS(OOXML.W_NS, 'char') ?? element.getAttribute('w:char');
75
+ if (raw === null || !SHORT_HEX_NUMBER.test(raw))
76
+ return UNRESOLVED_SYMBOL_IDENTITY;
77
+ return String.fromCharCode(Number.parseInt(raw, 16));
78
+ }
79
+ //# sourceMappingURL=symbol_run_content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbol_run_content.js","sourceRoot":"","sources":["../../src/primitives/symbol_run_content.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAExC,8DAA8D;AAC9D,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC;AAEpC;;;;;;GAMG;AACH,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAE7C;;;;;;;;;;;;GAYG;AACH,MAAM,0BAA0B,GAAG,8BAA8B,CAAC;AAElE,SAAS,YAAY,CAAC,OAAgB;IACpC,yEAAyE;IACzE,uEAAuE;IACvE,2EAA2E;IAC3E,qEAAqE;IACrE,OAAO,OAAO,CAAC,YAAY,KAAK,KAAK,CAAC,IAAI,IAAI,OAAO,CAAC,SAAS,KAAK,cAAc,CAAC;AACrF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC;IAC7C,MAAM,GAAG,GACP,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC/E,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,0BAA0B,CAAC;IACnF,OAAO,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;AACvD,CAAC"}
@@ -3,7 +3,17 @@ export type TextRun = {
3
3
  r: Element;
4
4
  text: string;
5
5
  isFieldResult: boolean;
6
+ fieldResultId?: number | null;
7
+ fieldInstruction?: string | null;
6
8
  };
9
+ /**
10
+ * Return the paragraph's visible runs while retaining enough complex-field
11
+ * provenance to distinguish a safe cached-result edit from a field-boundary
12
+ * rewrite.
13
+ *
14
+ * @conformance ECMA-376 edition 5, Part 1 § 17.16.18
15
+ * @see #651
16
+ */
7
17
  export declare function getParagraphRuns(p: Element): TextRun[];
8
18
  export declare function getParagraphText(p: Element): string;
9
19
  export declare function visibleLengthForEl(el: Element): number;
@@ -27,5 +37,24 @@ export type ReplacementPart = {
27
37
  addRunProps?: AddRunProps;
28
38
  clearHighlight?: boolean;
29
39
  };
40
+ /**
41
+ * Replace a visible paragraph range while keeping tracked runs inside their
42
+ * existing run container. In particular, edits wholly inside `w:hyperlink`
43
+ * remain nested there, while cross-container ranges are refused before the
44
+ * DOM is changed.
45
+ *
46
+ * Embedded content (`w:drawing`, `w:pict`, `w:object`, `w:contentPart`)
47
+ * inside the replaced range is preserved as live runs: it contributes no
48
+ * visible text, so no text match ever covers it and no text edit may delete
49
+ * it. Tracked deletions around preserved content are emitted as in-place
50
+ * segments so rejectChanges() restores the original content order exactly.
51
+ *
52
+ * @conformance ECMA-376 edition 5, Part 1 § 17.13.5.14
53
+ * @conformance ECMA-376 edition 5, Part 1 § 17.13.5.15
54
+ * @conformance ECMA-376 edition 5, Part 1 § 17.16.22
55
+ * @see #652
56
+ * @see #741
57
+ * @see #739
58
+ */
30
59
  export declare function replaceParagraphTextRange(p: Element, start: number, end: number, replacement: string | ReplacementPart[], ctx?: RevisionContext): void;
31
60
  //# sourceMappingURL=text.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/primitives/text.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,4BAA4B,CAAC;AAEpC,MAAM,MAAM,OAAO,GAAG;IACpB,CAAC,EAAE,OAAO,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,EAAE,CAsDtD;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAInD;AAoGD,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,CAMtD;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,EAAE,CAWhE;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAgEvG;AA0BD,MAAM,MAAM,WAAW,GAAG;IAGxB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AA2KF,wBAAgB,yBAAyB,CACvC,CAAC,EAAE,OAAO,EACV,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,GAAG,eAAe,EAAE,EACvC,GAAG,CAAC,EAAE,eAAe,GACpB,IAAI,CAsJN"}
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/primitives/text.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,4BAA4B,CAAC;AAEpC,MAAM,MAAM,OAAO,GAAG;IACpB,CAAC,EAAE,OAAO,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,EAAE,CAqGtD;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAInD;AA6GD,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,CAMtD;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,EAAE,CAWhE;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAgEvG;AAkDD,MAAM,MAAM,WAAW,GAAG;IAGxB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAyRF;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,yBAAyB,CACvC,CAAC,EAAE,OAAO,EACV,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,GAAG,eAAe,EAAE,EACvC,GAAG,CAAC,EAAE,eAAe,GACpB,IAAI,CAkSN"}