@simplysm/excel 14.0.100 → 14.0.101

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 (184) hide show
  1. package/dist/biff/biff-model-factory.d.ts +32 -0
  2. package/dist/biff/biff-model-factory.d.ts.map +1 -0
  3. package/dist/biff/biff-model-factory.js +88 -0
  4. package/dist/biff/biff-model-factory.js.map +1 -0
  5. package/dist/biff/biff-ptg.d.ts +14 -0
  6. package/dist/biff/biff-ptg.d.ts.map +1 -0
  7. package/dist/biff/biff-ptg.js +277 -0
  8. package/dist/biff/biff-ptg.js.map +1 -0
  9. package/dist/biff/biff-records.d.ts +163 -0
  10. package/dist/biff/biff-records.d.ts.map +1 -0
  11. package/dist/biff/biff-records.js +579 -0
  12. package/dist/biff/biff-records.js.map +1 -0
  13. package/dist/biff/biff-shared-string-model.d.ts +13 -0
  14. package/dist/biff/biff-shared-string-model.d.ts.map +1 -0
  15. package/dist/biff/biff-shared-string-model.js +41 -0
  16. package/dist/biff/biff-shared-string-model.js.map +1 -0
  17. package/dist/biff/biff-style-model.d.ts +39 -0
  18. package/dist/biff/biff-style-model.d.ts.map +1 -0
  19. package/dist/biff/biff-style-model.js +182 -0
  20. package/dist/biff/biff-style-model.js.map +1 -0
  21. package/dist/biff/biff-workbook-model.d.ts +17 -0
  22. package/dist/biff/biff-workbook-model.d.ts.map +1 -0
  23. package/dist/biff/biff-workbook-model.js +64 -0
  24. package/dist/biff/biff-workbook-model.js.map +1 -0
  25. package/dist/biff/biff-worksheet-model.d.ts +69 -0
  26. package/dist/biff/biff-worksheet-model.d.ts.map +1 -0
  27. package/dist/biff/biff-worksheet-model.js +495 -0
  28. package/dist/biff/biff-worksheet-model.js.map +1 -0
  29. package/dist/biff/biff12-codec.d.ts +149 -0
  30. package/dist/biff/biff12-codec.d.ts.map +1 -0
  31. package/dist/biff/biff12-codec.js +262 -0
  32. package/dist/biff/biff12-codec.js.map +1 -0
  33. package/dist/excel-cell.d.ts +0 -6
  34. package/dist/excel-cell.d.ts.map +1 -1
  35. package/dist/excel-cell.js +2 -24
  36. package/dist/excel-cell.js.map +1 -1
  37. package/dist/excel-col.js.map +1 -1
  38. package/dist/excel-row.js.map +1 -1
  39. package/dist/excel-workbook.d.ts +4 -21
  40. package/dist/excel-workbook.d.ts.map +1 -1
  41. package/dist/excel-workbook.js +16 -49
  42. package/dist/excel-workbook.js.map +1 -1
  43. package/dist/excel-worksheet.d.ts +0 -11
  44. package/dist/excel-worksheet.d.ts.map +1 -1
  45. package/dist/excel-worksheet.js +9 -46
  46. package/dist/excel-worksheet.js.map +1 -1
  47. package/dist/excel-wrapper.d.ts +0 -10
  48. package/dist/excel-wrapper.d.ts.map +1 -1
  49. package/dist/excel-wrapper.js +0 -10
  50. package/dist/excel-wrapper.js.map +1 -1
  51. package/dist/models/excel-format.d.ts +3 -0
  52. package/dist/models/excel-format.d.ts.map +1 -0
  53. package/dist/models/excel-format.js +2 -0
  54. package/dist/models/excel-format.js.map +1 -0
  55. package/dist/models/excel-model-factory.d.ts +33 -0
  56. package/dist/models/excel-model-factory.d.ts.map +1 -0
  57. package/dist/models/excel-model-factory.js +2 -0
  58. package/dist/models/excel-model-factory.js.map +1 -0
  59. package/dist/models/excel-model.d.ts +12 -0
  60. package/dist/models/excel-model.d.ts.map +1 -0
  61. package/dist/models/excel-model.js +2 -0
  62. package/dist/models/excel-model.js.map +1 -0
  63. package/dist/models/i-content-type-model.d.ts +7 -0
  64. package/dist/models/i-content-type-model.d.ts.map +1 -0
  65. package/dist/models/i-content-type-model.js +2 -0
  66. package/dist/models/i-content-type-model.js.map +1 -0
  67. package/dist/models/i-drawing-model.d.ts +23 -0
  68. package/dist/models/i-drawing-model.d.ts.map +1 -0
  69. package/dist/models/i-drawing-model.js +2 -0
  70. package/dist/models/i-drawing-model.js.map +1 -0
  71. package/dist/models/i-relationship-model.d.ts +16 -0
  72. package/dist/models/i-relationship-model.d.ts.map +1 -0
  73. package/dist/models/i-relationship-model.js +2 -0
  74. package/dist/models/i-relationship-model.js.map +1 -0
  75. package/dist/models/i-shared-string-model.d.ts +9 -0
  76. package/dist/models/i-shared-string-model.d.ts.map +1 -0
  77. package/dist/models/i-shared-string-model.js +2 -0
  78. package/dist/models/i-shared-string-model.js.map +1 -0
  79. package/dist/models/i-style-model.d.ts +18 -0
  80. package/dist/models/i-style-model.d.ts.map +1 -0
  81. package/dist/models/i-style-model.js +2 -0
  82. package/dist/models/i-style-model.js.map +1 -0
  83. package/dist/models/i-workbook-model.d.ts +17 -0
  84. package/dist/models/i-workbook-model.d.ts.map +1 -0
  85. package/dist/models/i-workbook-model.js +2 -0
  86. package/dist/models/i-workbook-model.js.map +1 -0
  87. package/dist/models/i-worksheet-model.d.ts +39 -0
  88. package/dist/models/i-worksheet-model.d.ts.map +1 -0
  89. package/dist/models/i-worksheet-model.js +2 -0
  90. package/dist/models/i-worksheet-model.js.map +1 -0
  91. package/dist/models/shared/excel-cf-spec.d.ts +13 -0
  92. package/dist/models/shared/excel-cf-spec.d.ts.map +1 -0
  93. package/dist/models/shared/excel-cf-spec.js +2 -0
  94. package/dist/models/shared/excel-cf-spec.js.map +1 -0
  95. package/dist/models/shared/excel-style.d.ts +24 -0
  96. package/dist/models/shared/excel-style.d.ts.map +1 -0
  97. package/dist/models/shared/excel-style.js +38 -0
  98. package/dist/models/shared/excel-style.js.map +1 -0
  99. package/dist/types.d.ts +0 -13
  100. package/dist/types.d.ts.map +1 -1
  101. package/dist/types.js.map +1 -1
  102. package/dist/utils/excel-style-data.d.ts +3 -5
  103. package/dist/utils/excel-style-data.d.ts.map +1 -1
  104. package/dist/utils/excel-style-data.js +2 -16
  105. package/dist/utils/excel-style-data.js.map +1 -1
  106. package/dist/utils/zip-cache.d.ts +46 -9
  107. package/dist/utils/zip-cache.d.ts.map +1 -1
  108. package/dist/utils/zip-cache.js +138 -52
  109. package/dist/utils/zip-cache.js.map +1 -1
  110. package/dist/xml/excel-xml-content-type.d.ts +8 -4
  111. package/dist/xml/excel-xml-content-type.d.ts.map +1 -1
  112. package/dist/xml/excel-xml-content-type.js +13 -6
  113. package/dist/xml/excel-xml-content-type.js.map +1 -1
  114. package/dist/xml/excel-xml-drawing.d.ts +8 -4
  115. package/dist/xml/excel-xml-drawing.d.ts.map +1 -1
  116. package/dist/xml/excel-xml-drawing.js +14 -7
  117. package/dist/xml/excel-xml-drawing.js.map +1 -1
  118. package/dist/xml/excel-xml-relationship.d.ts +12 -4
  119. package/dist/xml/excel-xml-relationship.d.ts.map +1 -1
  120. package/dist/xml/excel-xml-relationship.js +22 -12
  121. package/dist/xml/excel-xml-relationship.js.map +1 -1
  122. package/dist/xml/excel-xml-shared-string.d.ts +8 -4
  123. package/dist/xml/excel-xml-shared-string.d.ts.map +1 -1
  124. package/dist/xml/excel-xml-shared-string.js +16 -9
  125. package/dist/xml/excel-xml-shared-string.js.map +1 -1
  126. package/dist/xml/excel-xml-style.d.ts +11 -22
  127. package/dist/xml/excel-xml-style.d.ts.map +1 -1
  128. package/dist/xml/excel-xml-style.js +66 -92
  129. package/dist/xml/excel-xml-style.js.map +1 -1
  130. package/dist/xml/excel-xml-unknown.d.ts +6 -5
  131. package/dist/xml/excel-xml-unknown.d.ts.map +1 -1
  132. package/dist/xml/excel-xml-unknown.js +7 -4
  133. package/dist/xml/excel-xml-unknown.js.map +1 -1
  134. package/dist/xml/excel-xml-workbook.d.ts +9 -4
  135. package/dist/xml/excel-xml-workbook.d.ts.map +1 -1
  136. package/dist/xml/excel-xml-workbook.js +28 -20
  137. package/dist/xml/excel-xml-workbook.js.map +1 -1
  138. package/dist/xml/excel-xml-worksheet.d.ts +12 -7
  139. package/dist/xml/excel-xml-worksheet.d.ts.map +1 -1
  140. package/dist/xml/excel-xml-worksheet.js +65 -50
  141. package/dist/xml/excel-xml-worksheet.js.map +1 -1
  142. package/dist/xml/xml-model-factory.d.ts +25 -0
  143. package/dist/xml/xml-model-factory.d.ts.map +1 -0
  144. package/dist/xml/xml-model-factory.js +66 -0
  145. package/dist/xml/xml-model-factory.js.map +1 -0
  146. package/package.json +2 -2
  147. package/src/biff/biff-model-factory.ts +101 -0
  148. package/src/biff/biff-ptg.ts +289 -0
  149. package/src/biff/biff-records.ts +686 -0
  150. package/src/biff/biff-shared-string-model.ts +52 -0
  151. package/src/biff/biff-style-model.ts +219 -0
  152. package/src/biff/biff-workbook-model.ts +83 -0
  153. package/src/biff/biff-worksheet-model.ts +545 -0
  154. package/src/biff/biff12-codec.ts +286 -0
  155. package/src/excel-cell.ts +12 -46
  156. package/src/excel-col.ts +3 -3
  157. package/src/excel-row.ts +3 -3
  158. package/src/excel-workbook.ts +26 -69
  159. package/src/excel-worksheet.ts +36 -107
  160. package/src/excel-wrapper.ts +0 -10
  161. package/src/models/excel-format.ts +2 -0
  162. package/src/models/excel-model-factory.ts +33 -0
  163. package/src/models/excel-model.ts +12 -0
  164. package/src/models/i-content-type-model.ts +7 -0
  165. package/src/models/i-drawing-model.ts +13 -0
  166. package/src/models/i-relationship-model.ts +13 -0
  167. package/src/models/i-shared-string-model.ts +9 -0
  168. package/src/models/i-style-model.ts +18 -0
  169. package/src/models/i-workbook-model.ts +17 -0
  170. package/src/models/i-worksheet-model.ts +40 -0
  171. package/src/models/shared/excel-cf-spec.ts +24 -0
  172. package/src/models/shared/excel-style.ts +65 -0
  173. package/src/types.ts +0 -13
  174. package/src/utils/excel-style-data.ts +4 -25
  175. package/src/utils/zip-cache.ts +189 -58
  176. package/src/xml/excel-xml-content-type.ts +18 -8
  177. package/src/xml/excel-xml-drawing.ts +19 -9
  178. package/src/xml/excel-xml-relationship.ts +28 -14
  179. package/src/xml/excel-xml-shared-string.ts +20 -11
  180. package/src/xml/excel-xml-style.ts +74 -116
  181. package/src/xml/excel-xml-unknown.ts +8 -4
  182. package/src/xml/excel-xml-workbook.ts +34 -22
  183. package/src/xml/excel-xml-worksheet.ts +73 -53
  184. package/src/xml/xml-model-factory.ts +83 -0
@@ -0,0 +1,579 @@
1
+ import { ExcelUtils } from "../utils/excel-utils.js";
2
+ import { concatBytes, decodeRkNumber, encodeRecord, encodeXLWideString, readAllRecords, readCellPrefix, readUint32LE, readXLWideString, REC, writeCellPrefix, writeUint32LE, } from "./biff12-codec.js";
3
+ import { encodeFormula } from "./biff-ptg.js";
4
+ /**
5
+ * BIFF12 레코드 단위 reader.
6
+ * adtek `biff12.ts` 의 reader 로직을 포팅. 프리미티브는 `biff12-codec.ts`.
7
+ */
8
+ /** `"rId1"` → `1`. 형식 불일치 시 undefined. */
9
+ export function parseRelId(relId) {
10
+ const m = /^rId(\d+)$/.exec(relId);
11
+ return m ? parseInt(m[1], 10) : undefined;
12
+ }
13
+ /**
14
+ * workbook.bin → 시트 항목 (BrtBundleSh) 순서대로.
15
+ *
16
+ * BrtBundleSh payload ([MS-XLSB] 2.4.301): hsState(4) + iTabID(4) + XLWideString strRelID + XLWideString strName.
17
+ */
18
+ export function readWorkbookSheets(buf) {
19
+ const out = [];
20
+ for (const rec of readAllRecords(buf)) {
21
+ if (rec.type !== REC.BrtBundleSh)
22
+ continue;
23
+ const rel = readXLWideString(rec.payload, 8);
24
+ const name = readXLWideString(rec.payload, 8 + rel.bytesRead);
25
+ out.push({ name: name.value, relId: rel.value });
26
+ }
27
+ return out;
28
+ }
29
+ /** sharedStrings.bin → 문자열 배열 (BrtSSTItem 만 순서대로). payload: flags(1) + XLWideString. */
30
+ export function readSharedStrings(buf) {
31
+ const out = [];
32
+ for (const rec of readAllRecords(buf)) {
33
+ if (rec.type !== REC.BrtSSTItem)
34
+ continue;
35
+ const { value } = readXLWideString(rec.payload, 1);
36
+ out.push(value);
37
+ }
38
+ return out;
39
+ }
40
+ function readFloat64(payload, off) {
41
+ const view = new DataView(payload.buffer, payload.byteOffset + off, 8);
42
+ return view.getFloat64(0, true);
43
+ }
44
+ /**
45
+ * Cell record 1개를 OOXML 시맨틱으로 디코드.
46
+ *
47
+ * - Full cell (Brt*) : payload 첫 4 byte = col, 8 byte prefix 후 값.
48
+ * - Short cell (BrtShort*) : col 정보 없음 (이전 셀 + 1), 4 byte prefix 후 값.
49
+ *
50
+ * SST 인덱스 셀(Isst)은 `cellType="s"`, `val=인덱스문자열` 로 반환 — SST 조회는 상위(ExcelCell)가 수행.
51
+ * inline string(St)은 `cellType="str"`. 숫자(Real/Rk)는 `cellType=undefined`(number).
52
+ *
53
+ * 대상 외 record 는 undefined.
54
+ */
55
+ export function decodeBiffCell(rec, prevCol) {
56
+ const p = rec.payload;
57
+ const fullStyle = () => readCellPrefix(p).iStyleRef;
58
+ switch (rec.type) {
59
+ case REC.BrtCellIsst:
60
+ return {
61
+ col: readUint32LE(p, 0),
62
+ styleId: fullStyle(),
63
+ cellType: "s",
64
+ val: readUint32LE(p, 8).toString(),
65
+ };
66
+ case REC.BrtShortIsst:
67
+ return { col: prevCol + 1, styleId: 0, cellType: "s", val: readUint32LE(p, 4).toString() };
68
+ case REC.BrtCellSt:
69
+ return {
70
+ col: readUint32LE(p, 0),
71
+ styleId: fullStyle(),
72
+ cellType: "str",
73
+ val: readXLWideString(p, 8).value,
74
+ };
75
+ case REC.BrtShortSt:
76
+ return { col: prevCol + 1, styleId: 0, cellType: "str", val: readXLWideString(p, 4).value };
77
+ case REC.BrtCellReal:
78
+ return {
79
+ col: readUint32LE(p, 0),
80
+ styleId: fullStyle(),
81
+ cellType: undefined,
82
+ val: readFloat64(p, 8).toString(),
83
+ };
84
+ case REC.BrtShortReal:
85
+ return { col: prevCol + 1, styleId: 0, cellType: undefined, val: readFloat64(p, 4).toString() };
86
+ case REC.BrtCellRk:
87
+ return {
88
+ col: readUint32LE(p, 0),
89
+ styleId: fullStyle(),
90
+ cellType: undefined,
91
+ val: decodeRkNumber(readUint32LE(p, 8)).toString(),
92
+ };
93
+ case REC.BrtShortRk:
94
+ return {
95
+ col: prevCol + 1,
96
+ styleId: 0,
97
+ cellType: undefined,
98
+ val: decodeRkNumber(readUint32LE(p, 4)).toString(),
99
+ };
100
+ case REC.BrtCellBool:
101
+ return { col: readUint32LE(p, 0), styleId: fullStyle(), cellType: "b", val: p[8] ? "1" : "0" };
102
+ case REC.BrtCellBlank:
103
+ return { col: readUint32LE(p, 0), styleId: fullStyle(), cellType: undefined, val: undefined };
104
+ case REC.BrtShortBlank:
105
+ return { col: prevCol + 1, styleId: 0, cellType: undefined, val: undefined };
106
+ default:
107
+ return undefined;
108
+ }
109
+ }
110
+ //#region Encoders (Stage 3 writer)
111
+ /** payload 없는 begin/end 마커 record. */
112
+ export function encodeMarker(type) {
113
+ return encodeRecord(type, new Uint8Array(0));
114
+ }
115
+ /**
116
+ * BrtBundleSh — 워크북의 시트 항목.
117
+ * payload: hsState(4) + iTabID(4) + XLWideString strRelID + XLWideString strName.
118
+ */
119
+ export function encodeBrtBundleSh(relId, name, tabId) {
120
+ const rel = encodeXLWideString(relId);
121
+ const nm = encodeXLWideString(name);
122
+ const payload = new Uint8Array(8 + rel.length + nm.length);
123
+ writeUint32LE(payload, 0, 0); // hsState = visible
124
+ writeUint32LE(payload, 4, tabId);
125
+ payload.set(rel, 8);
126
+ payload.set(nm, 8 + rel.length);
127
+ return encodeRecord(REC.BrtBundleSh, payload);
128
+ }
129
+ /** BrtBeginSst — count(4) + uniqueCount(4). */
130
+ export function encodeBrtBeginSst(count, uniqueCount) {
131
+ const payload = new Uint8Array(8);
132
+ writeUint32LE(payload, 0, count);
133
+ writeUint32LE(payload, 4, uniqueCount);
134
+ return encodeRecord(REC.BrtBeginSst, payload);
135
+ }
136
+ /** BrtSSTItem — flags(1) + XLWideString. */
137
+ export function encodeBrtSSTItem(value) {
138
+ const wide = encodeXLWideString(value);
139
+ const payload = new Uint8Array(1 + wide.length);
140
+ payload[0] = 0; // flags
141
+ payload.set(wide, 1);
142
+ return encodeRecord(REC.BrtSSTItem, payload);
143
+ }
144
+ /** BrtCellIsst — cell prefix(8) + sharedString 인덱스(4). */
145
+ export function encodeBrtCellIsst(col, iStyleRef, sstIndex) {
146
+ const payload = new Uint8Array(8 + 4);
147
+ writeCellPrefix(payload, 0, col, iStyleRef);
148
+ writeUint32LE(payload, 8, sstIndex);
149
+ return encodeRecord(REC.BrtCellIsst, payload);
150
+ }
151
+ /** BrtCellReal — cell prefix(8) + IEEE754 double(8). */
152
+ export function encodeBrtCellReal(col, iStyleRef, value) {
153
+ const payload = new Uint8Array(8 + 8);
154
+ writeCellPrefix(payload, 0, col, iStyleRef);
155
+ new DataView(payload.buffer, payload.byteOffset + 8, 8).setFloat64(0, value, true);
156
+ return encodeRecord(REC.BrtCellReal, payload);
157
+ }
158
+ /** BrtCellSt — cell prefix(8) + XLWideString (inline string). */
159
+ export function encodeBrtCellSt(col, iStyleRef, value) {
160
+ const wide = encodeXLWideString(value);
161
+ const payload = new Uint8Array(8 + wide.length);
162
+ writeCellPrefix(payload, 0, col, iStyleRef);
163
+ payload.set(wide, 8);
164
+ return encodeRecord(REC.BrtCellSt, payload);
165
+ }
166
+ /** BrtCellBool — cell prefix(8) + boolean(1). */
167
+ export function encodeBrtCellBool(col, iStyleRef, value) {
168
+ const payload = new Uint8Array(9);
169
+ writeCellPrefix(payload, 0, col, iStyleRef);
170
+ payload[8] = value ? 1 : 0;
171
+ return encodeRecord(REC.BrtCellBool, payload);
172
+ }
173
+ /** BrtCellBlank — cell prefix(8) (style 만 가진 빈 셀). */
174
+ export function encodeBrtCellBlank(col, iStyleRef) {
175
+ const payload = new Uint8Array(8);
176
+ writeCellPrefix(payload, 0, col, iStyleRef);
177
+ return encodeRecord(REC.BrtCellBlank, payload);
178
+ }
179
+ /**
180
+ * BrtRowHdr — [MS-XLSB] 2.4.726.
181
+ * payload(25): rwT(4) + ixfe(4) + miyRw(2) + 패딩/flags(3) + ncolspan(4) + colFirst(4) + colLast(4).
182
+ */
183
+ export function encodeBrtRowHdr(rowIndex, colFirst, colLast) {
184
+ const payload = new Uint8Array(25);
185
+ writeUint32LE(payload, 0, rowIndex);
186
+ writeUint32LE(payload, 4, 0); // ixfe
187
+ payload[8] = 0x40; // miyRw 0x0140 = 16pt
188
+ payload[9] = 0x01;
189
+ writeUint32LE(payload, 13, 1); // ncolspan
190
+ writeUint32LE(payload, 17, colFirst);
191
+ writeUint32LE(payload, 21, colLast);
192
+ return encodeRecord(REC.BrtRowHdr, payload);
193
+ }
194
+ /** begin 컨테이너 레코드 (count u32 payload). */
195
+ export function encodeBeginCount(type, count) {
196
+ const payload = new Uint8Array(4);
197
+ writeUint32LE(payload, 0, count);
198
+ return encodeRecord(type, payload);
199
+ }
200
+ /** BrtFmt — numFmtId(u16) + XLWideString formatCode. */
201
+ export function encodeBrtFmt(numFmtId, formatCode) {
202
+ const code = encodeXLWideString(formatCode);
203
+ const payload = new Uint8Array(2 + code.length);
204
+ payload[0] = numFmtId & 0xff;
205
+ payload[1] = (numFmtId >>> 8) & 0xff;
206
+ payload.set(code, 2);
207
+ return encodeRecord(REC.BrtFmt, payload);
208
+ }
209
+ /**
210
+ * cellXF용 BrtXF(16B). ixfeParent=0(cellStyleXFs[0] 참조), iFmt=numFmtId, font/fill/border=0.
211
+ * flags(@12)=0x1010 은 정답지 기본값.
212
+ */
213
+ export function encodeCellXF(numFmtId) {
214
+ const p = new Uint8Array(16);
215
+ p[2] = numFmtId & 0xff;
216
+ p[3] = (numFmtId >>> 8) & 0xff;
217
+ p[12] = 0x10;
218
+ p[13] = 0x10;
219
+ return encodeRecord(REC.BrtXF, p);
220
+ }
221
+ /** BrtWsDim — UncheckedRfX(16): rwFirst, rwLast, colFirst, colLast. */
222
+ export function encodeBrtWsDim(rwFirst, rwLast, colFirst, colLast) {
223
+ const payload = new Uint8Array(16);
224
+ writeUint32LE(payload, 0, rwFirst);
225
+ writeUint32LE(payload, 4, rwLast);
226
+ writeUint32LE(payload, 8, colFirst);
227
+ writeUint32LE(payload, 12, colLast);
228
+ return encodeRecord(REC.BrtWsDim, payload);
229
+ }
230
+ /** BrtMergeCell — UncheckedRfX(16): rwFirst, rwLast, colFirst, colLast. */
231
+ export function encodeBrtMergeCell(s, e) {
232
+ const payload = new Uint8Array(16);
233
+ writeUint32LE(payload, 0, s.r);
234
+ writeUint32LE(payload, 4, e.r);
235
+ writeUint32LE(payload, 8, s.c);
236
+ writeUint32LE(payload, 12, e.c);
237
+ return encodeRecord(REC.BrtMergeCell, payload);
238
+ }
239
+ /**
240
+ * BrtColInfo — colFirst(u32) + colLast(u32) + coldx(u32) + ixfe(u32) + flags(u16).
241
+ * coldx 는 1/256 문자 단위 너비. flags bit1(fUserSet)=커스텀 너비.
242
+ */
243
+ export function encodeBrtColInfo(colFirst, colLast, coldx) {
244
+ const payload = new Uint8Array(18);
245
+ writeUint32LE(payload, 0, colFirst);
246
+ writeUint32LE(payload, 4, colLast);
247
+ writeUint32LE(payload, 8, coldx);
248
+ writeUint32LE(payload, 12, 0); // ixfe
249
+ payload[16] = 0x02; // fUserSet
250
+ payload[17] = 0x00;
251
+ return encodeRecord(REC.BrtColInfo, payload);
252
+ }
253
+ /** BrtFileVersion — 빈 새 워크북(통합 문서1.xlsb) 정답지 byte. */
254
+ export function encodeBrtFileVersion() {
255
+ return encodeRecord(REC.BrtFileVersion, Uint8Array.from([
256
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
257
+ 0x00, 0x02, 0x00, 0x00, 0x00, 0x78, 0x00, 0x6c, 0x00, 0x01, 0x00, 0x00, 0x00, 0x37, 0x00,
258
+ 0x01, 0x00, 0x00, 0x00, 0x37, 0x00, 0x05, 0x00, 0x00, 0x00, 0x33, 0x00, 0x30, 0x00, 0x30,
259
+ 0x00, 0x32, 0x00, 0x36, 0x00,
260
+ ]));
261
+ }
262
+ /** BrtWbProp — 통합 문서 속성. 빈 새 워크북 정답지 byte(12B, codeName 없음). */
263
+ export function encodeBrtWbProp() {
264
+ return encodeRecord(REC.BrtWbProp, Uint8Array.from([0x20, 0x00, 0x01, 0x00, 0x3c, 0x16, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00]));
265
+ }
266
+ /** BrtBookView — workbook 창 뷰. 빈 새 워크북 정답지 byte. */
267
+ export function encodeBrtBookView() {
268
+ return encodeRecord(REC.BrtBookView, Uint8Array.from([
269
+ 0x65, 0x04, 0x00, 0x00, 0x93, 0x12, 0x00, 0x00, 0xfc, 0x6c, 0x00, 0x00, 0x95, 0x5b, 0x00,
270
+ 0x00, 0x58, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78,
271
+ ]));
272
+ }
273
+ /** BrtSheetFormatPr — 시트 기본 서식(행높이 등). 빈 새 워크북 정답지 byte. Excel 필수. */
274
+ export function encodeBrtSheetFormatPr() {
275
+ return encodeRecord(REC.BrtSheetFormatPr, Uint8Array.from([0xff, 0xff, 0xff, 0xff, 0x08, 0x00, 0x4a, 0x01, 0x00, 0x00, 0x00, 0x00]));
276
+ }
277
+ /** BrtSel — worksheet 선택 영역. boa-sample 정답지 byte 템플릿(pane bottomRight, A1 선택). */
278
+ export function encodeBrtSel() {
279
+ return encodeRecord(REC.BrtSel, Uint8Array.from([
280
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
281
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
282
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
283
+ ]));
284
+ }
285
+ /** BrtBeginAFilter — ref RfX(16): autoFilter 범위. */
286
+ export function encodeBrtBeginAFilter(s, e) {
287
+ const payload = new Uint8Array(16);
288
+ writeUint32LE(payload, 0, s.r);
289
+ writeUint32LE(payload, 4, e.r);
290
+ writeUint32LE(payload, 8, s.c);
291
+ writeUint32LE(payload, 12, e.c);
292
+ return encodeRecord(REC.BrtBeginAFilter, payload);
293
+ }
294
+ // 빈 새 워크북 정답지(통합 문서1.xlsb) BrtBeginWsView. grbit 0x03dc(격자선 ON). @18 wScale 은 encode 가 덮어쓴다.
295
+ const WSVIEW_TEMPLATE = Uint8Array.from("dc 03 00 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00 64 00 00 00 00 00 00 00 00 00 00 00"
296
+ .split(" ")
297
+ .map((x) => parseInt(x, 16)));
298
+ /**
299
+ * BrtBeginWsView — 정답지(boa-sample) 30B 템플릿. wScale(zoom, u16@18)만 치환.
300
+ * @param zoom 확대비율(%). 0/100 은 기본.
301
+ */
302
+ export function encodeBrtBeginWsView(zoom) {
303
+ const p = WSVIEW_TEMPLATE.slice();
304
+ p[18] = zoom & 0xff;
305
+ p[19] = (zoom >>> 8) & 0xff;
306
+ return encodeRecord(REC.BrtBeginWsView, p);
307
+ }
308
+ /**
309
+ * BrtPane(29B) — xnumXSplit(double@0) + ynumYSplit(double@8) + rwTop(u32@16) + colLeft(u32@20)
310
+ * + pnnAcc(u32@24) + flags(u8@28). flags=3(fFrozen|fFrozenNoSplit).
311
+ * pnnAcc: 0=bottomRight, 1=topRight, 2=bottomLeft, 3=topLeft.
312
+ */
313
+ export function encodeBrtPane(xSplit, ySplit, rwTop, colLeft, pnnAcc) {
314
+ const p = new Uint8Array(29);
315
+ const dv = new DataView(p.buffer);
316
+ dv.setFloat64(0, xSplit, true);
317
+ dv.setFloat64(8, ySplit, true);
318
+ writeUint32LE(p, 16, rwTop);
319
+ writeUint32LE(p, 20, colLeft);
320
+ writeUint32LE(p, 24, pnnAcc);
321
+ p[28] = 0x03;
322
+ return encodeRecord(REC.BrtPane, p);
323
+ }
324
+ /**
325
+ * BrtWsProp — [MS-XLSB] 2.4.823. 레이아웃(23B): flags(3B@0) + brtcolorTab(BrtColor 8B@3)
326
+ * + 상수영역(8B@11, ff×8) + codeName(XLWideString@19, 빈 문자열 4B).
327
+ * BrtColor(@3): byteA(bit0=fValidRGB, bits1-7=xColorType) + index(1) + nTintAndShade(i16)
328
+ * + R + G + B + A.
329
+ *
330
+ * 정답지(`.tmp/탭색.xlsb` sheet1.bin BrtWsProp): 빈 워크북 대비 byte0 bit1(0x02) set,
331
+ * @3=07(theme), @4=05(theme idx accent2), @7-10=E9 71 32 FF(resolved RGBA). 본 함수는 사용자
332
+ * 입력 RGB 를 RGB type(0x05)으로 인코딩(index 0, tint 0).
333
+ */
334
+ export function encodeBrtWsProp(tabColorArgb) {
335
+ // 빈 새 워크북(통합 문서1.xlsb) 정답지 byte(23B, tabColor auto, codeName 없음).
336
+ const p = Uint8Array.from([
337
+ 0xc9, 0x04, 0x02, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
338
+ 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
339
+ ]);
340
+ if (tabColorArgb != null) {
341
+ // 정답지 색상상태 flag: byte0 bit1 set.
342
+ p[0] |= 0x02;
343
+ // brtcolorTab(@3, 8B): byteA + index + nTintAndShade(2) + R + G + B + A
344
+ p[3] = 0x05; // fValidRGB(0x01) | xColorType=RGB(2<<1)
345
+ p[4] = 0x00; // index (RGB 에서는 무시)
346
+ p[5] = 0x00;
347
+ p[6] = 0x00; // nTintAndShade = 0
348
+ p[7] = parseInt(tabColorArgb.slice(2, 4), 16); // R
349
+ p[8] = parseInt(tabColorArgb.slice(4, 6), 16); // G
350
+ p[9] = parseInt(tabColorArgb.slice(6, 8), 16); // B
351
+ p[10] = parseInt(tabColorArgb.slice(0, 2), 16); // A
352
+ }
353
+ return encodeRecord(REC.BrtWsProp, p);
354
+ }
355
+ /** BrtDrawing — XLWideString(r:id). 워크시트의 drawing 파트 참조. */
356
+ export function encodeBrtDrawing(relId) {
357
+ return encodeRecord(REC.BrtDrawing, encodeXLWideString(relId));
358
+ }
359
+ /**
360
+ * BrtFmlaNum — 수식 셀(숫자 결과).
361
+ * cellprefix(8) + xnum(double 8, 캐시값=0) + grbit(2) + CellParsedFormula(cce u32 + rgce + cb u32=0).
362
+ */
363
+ export function encodeBrtFmlaNum(col, iStyleRef, rgce) {
364
+ const payload = new Uint8Array(8 + 8 + 2 + 4 + rgce.length + 4);
365
+ writeCellPrefix(payload, 0, col, iStyleRef);
366
+ // xnum(8) = 0, grbit(2) = 0
367
+ writeUint32LE(payload, 18, rgce.length); // cce
368
+ payload.set(rgce, 22);
369
+ writeUint32LE(payload, 22 + rgce.length, 0); // cb
370
+ return encodeRecord(REC.BrtFmlaNum, payload);
371
+ }
372
+ // --- 조건부 서식 / dxf : [MS-XLSB] 정확 인코딩 ---
373
+ /**
374
+ * XFPropColor([MS-XLSB] 2.5.161, 8B) — A|xclrType(1) + icv(1) + nTintShade(i16) + LongRGBA(R,G,B,A).
375
+ * ARGB "AARRGGBB" 를 RGB type(xclrType=2)으로 인코딩.
376
+ */
377
+ function encodeXFPropColor(argb) {
378
+ return Uint8Array.from([
379
+ 0x05, // fValidRGBA(0x01) | xclrType=RGB(2<<1)
380
+ 0x00, // icv (RGB 에서 무시)
381
+ 0x00,
382
+ 0x00, // nTintShade = 0
383
+ parseInt(argb.slice(2, 4), 16), // R
384
+ parseInt(argb.slice(4, 6), 16), // G
385
+ parseInt(argb.slice(6, 8), 16), // B
386
+ parseInt(argb.slice(0, 2), 16), // A
387
+ ]);
388
+ }
389
+ /** XFProp([MS-XLSB] 2.5.159) — xfPropType(u16) + cb(u16, 구조체 전체 크기=4+blob) + blob. */
390
+ function encodeXFProp(type, blob) {
391
+ const out = new Uint8Array(4 + blob.length);
392
+ out[0] = type & 0xff;
393
+ out[1] = (type >>> 8) & 0xff;
394
+ const cb = 4 + blob.length;
395
+ out[2] = cb & 0xff;
396
+ out[3] = (cb >>> 8) & 0xff;
397
+ out.set(blob, 4);
398
+ return out;
399
+ }
400
+ /**
401
+ * BrtDXF — [MS-XLSB] 2.4.359. header(u16, @bit15 fNewBorder) + XFProps(reserved u16 + cprops u16 + XFProp[]).
402
+ * background → FillPattern(0x00=solid) + bgColor(0x02), fontColor → text color(0x05), bold → Bold(0x19, 700).
403
+ * CF 채우기는 xlsx dxf 와 동일하게 patternType=solid + bgColor 조합(색은 bgColor 에). XFPropColor(RGB), ARGB "AARRGGBB".
404
+ */
405
+ export function encodeBrtDXF(background, fontColor, bold) {
406
+ const props = [];
407
+ if (background != null) {
408
+ props.push(encodeXFProp(0x00, Uint8Array.from([0x01]))); // FillPattern = solid(1)
409
+ props.push(encodeXFProp(0x02, encodeXFPropColor(background))); // bgColor (채우기 색)
410
+ }
411
+ if (fontColor != null) {
412
+ props.push(encodeXFProp(0x05, encodeXFPropColor(fontColor))); // text color
413
+ }
414
+ if (bold === true) {
415
+ props.push(encodeXFProp(0x19, Uint8Array.from([0xbc, 0x02]))); // Bold = 700
416
+ }
417
+ const body = concatBytes(props);
418
+ const payload = new Uint8Array(6 + body.length);
419
+ payload[1] = 0x80; // header: fNewBorder(bit15) — 빈 워크북/boa 정답지 기본값
420
+ payload[4] = props.length & 0xff; // cprops
421
+ payload[5] = (props.length >>> 8) & 0xff;
422
+ payload.set(body, 6);
423
+ return encodeRecord(REC.BrtDXF, payload);
424
+ }
425
+ /**
426
+ * BrtBeginConditionalFormatting — [MS-XLSB] 2.4.34.
427
+ * ccf(u32, 규칙 수) + flags(u32, fPivot 등=0) + SqRfX(crfx u32 + crfx×RfX{rwFirst,rwLast,colFirst,colLast}).
428
+ * sqref 는 공백 구분 다중 범위 가능.
429
+ */
430
+ export function encodeBrtBeginConditionalFormatting(sqref, ccf) {
431
+ const ranges = sqref
432
+ .trim()
433
+ .split(/\s+/)
434
+ .filter((s) => s.length > 0)
435
+ .map((s) => ExcelUtils.parseRangeAddr(s));
436
+ const payload = new Uint8Array(8 + 4 + ranges.length * 16);
437
+ writeUint32LE(payload, 0, ccf);
438
+ writeUint32LE(payload, 4, 0); // flags
439
+ writeUint32LE(payload, 8, ranges.length); // crfx
440
+ let off = 12;
441
+ for (const r of ranges) {
442
+ writeUint32LE(payload, off, r.s.r); // rwFirst
443
+ writeUint32LE(payload, off + 4, r.e.r); // rwLast
444
+ writeUint32LE(payload, off + 8, r.s.c); // colFirst
445
+ writeUint32LE(payload, off + 12, r.e.c); // colLast
446
+ off += 16;
447
+ }
448
+ return encodeRecord(REC.BrtBeginConditionalFormatting, payload);
449
+ }
450
+ /** CFParsedFormula([MS-XLSB] 2.5.98.6) — cce(u32) + rgce + cb(u32=rgcb 길이=0). */
451
+ function encodeCFParsedFormula(rgce) {
452
+ const out = new Uint8Array(4 + rgce.length + 4);
453
+ writeUint32LE(out, 0, rgce.length);
454
+ out.set(rgce, 4);
455
+ // 끝 4byte(rgcb 길이) = 0
456
+ return out;
457
+ }
458
+ /** XLNullableWideString — NULL 은 cchCharacters=0xFFFFFFFF, 그 외는 XLWideString 과 동일. */
459
+ function encodeXLNullableWideString(s) {
460
+ if (s == null)
461
+ return Uint8Array.from([0xff, 0xff, 0xff, 0xff]);
462
+ return encodeXLWideString(s);
463
+ }
464
+ /** CFOper([MS-XLSB] 2.5.15) — cellIs operator → iParam. */
465
+ const CF_OPER = {
466
+ between: 1,
467
+ notBetween: 2,
468
+ equal: 3,
469
+ notEqual: 4,
470
+ greaterThan: 5,
471
+ lessThan: 6,
472
+ greaterThanOrEqual: 7,
473
+ lessThanOrEqual: 8,
474
+ };
475
+ /** CFTextOper([MS-XLSB] 2.5.17) — text rule operator → iParam. */
476
+ const CF_TEXTOPER = {
477
+ containsText: 0,
478
+ notContains: 1,
479
+ beginsWith: 2,
480
+ endsWith: 3,
481
+ };
482
+ /**
483
+ * CONTAINSTEXT 규칙의 구현 수식 rgce. Ptg 시퀀스([MS-XLS] Ftab / [MS-XLSB] 2.5.97).
484
+ * PtgRefN row/col=0(상대) → 범위 내 각 셀이 자기 자신을 참조(범위 무관). ref-class 토큰(0x41/0x42/0x4c).
485
+ *
486
+ * - contains(0): NOT(ISERROR(SEARCH(text, 셀))) ← boa 정답지 검증
487
+ * - notContains(1): ISERROR(SEARCH(text, 셀)) ← boa 정답지 검증
488
+ * - beginsWith(2): LEFT(셀, LEN(text)) = text ← Ftab LEFT=0x73, LEN=0x20 ([MS-XLSB] 확정)
489
+ * - endsWith(3): RIGHT(셀, LEN(text)) = text ← Ftab RIGHT=0x74, LEN=0x20 ([MS-XLSB] 확정)
490
+ *
491
+ * @param textOper CF_TEXTOPER (0=contains, 1=notContains, 2=beginsWith, 3=endsWith)
492
+ */
493
+ function encodeCfTextRgce(textOper, text) {
494
+ const ptgStr = (s) => {
495
+ const b = [0x17, s.length & 0xff, (s.length >>> 8) & 0xff];
496
+ for (const ch of s) {
497
+ const c = ch.charCodeAt(0);
498
+ b.push(c & 0xff, (c >>> 8) & 0xff);
499
+ }
500
+ return b;
501
+ };
502
+ const ptgRefN = [0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0]; // row u32=0 + col u16=0xC000(상대)
503
+ if (textOper === 0 || textOper === 1) {
504
+ const out = [...ptgStr(text), ...ptgRefN, 0x42, 0x02, 0x52, 0x00, 0x41, 0x03, 0x00]; // SEARCH(82),ISERROR(3)
505
+ if (textOper === 0)
506
+ out.push(0x41, 0x26, 0x00); // NOT(38) — contains 만
507
+ return Uint8Array.from(out);
508
+ }
509
+ // beginsWith / endsWith: LEFT|RIGHT(셀, LEN(text)) = text
510
+ const fn = textOper === 2 ? 0x73 : 0x74; // LEFT=0x73 / RIGHT=0x74
511
+ return Uint8Array.from([
512
+ ...ptgRefN, // 셀
513
+ ...ptgStr(text), // text
514
+ 0x41, 0x20, 0x00, // PtgFunc LEN(32) → LEN(text)
515
+ 0x42, 0x02, fn, 0x00, // PtgFuncVar LEFT|RIGHT argc=2 → LEFT/RIGHT(셀, LEN(text))
516
+ ...ptgStr(text), // text
517
+ 0x0b, // PtgEq → ... = text
518
+ ]);
519
+ }
520
+ /**
521
+ * BrtBeginCFRule — [MS-XLSB] 2.4.23.
522
+ * iType(4) + iTemplate(4) + dxfId(4) + iPri(4) + iParam(4) + reserved1(4) + reserved2(4)
523
+ * + flags(2) + cbFmla1(4) + cbFmla2(4) + cbFmla3(4) + strParam(XLNullableWideString)
524
+ * + rgce1?(CFParsedFormula) + rgce2?.
525
+ *
526
+ * - cellIs: iType=CELLIS(1), iTemplate=EXPR(0), iParam=CFOper, rgce1(+between/notBetween 시 rgce2).
527
+ * - expression: iType=EXPRIS(2), iTemplate=FMLA(1), rgce1.
528
+ * - text(contains/notContains/begins/ends): iType=EXPRIS(2), iTemplate=CONTAINSTEXT(8),
529
+ * iParam=CFTextOper, strParam=text. rgce1(검색식)은 함수 Ptg 라 미인코딩(cbFmla1=0) — Excel 이
530
+ * strParam+CFTextOper 로 규칙을 재구성하도록 위임(Excel 호환 검증 대상).
531
+ */
532
+ export function encodeBrtBeginCFRule(dxfId, priority, spec) {
533
+ let iType;
534
+ let iTemplate;
535
+ let iParam = 0;
536
+ let strParam;
537
+ let rgce1;
538
+ let rgce2;
539
+ if (spec.type === "cellIs") {
540
+ iType = 1; // CF_TYPE_CELLIS
541
+ iTemplate = 0; // CF_TEMPLATE_EXPR
542
+ iParam = CF_OPER[spec.operator ?? "equal"];
543
+ rgce1 = encodeFormula(spec.formula[0]);
544
+ if (spec.operator === "between" || spec.operator === "notBetween") {
545
+ rgce2 = encodeFormula(spec.formula[1]);
546
+ }
547
+ }
548
+ else if (spec.type === "expression") {
549
+ iType = 2; // CF_TYPE_EXPRIS
550
+ iTemplate = 1; // CF_TEMPLATE_FMLA
551
+ rgce1 = encodeFormula(spec.formula[0]);
552
+ }
553
+ else {
554
+ iType = 2; // CF_TYPE_EXPRIS
555
+ iTemplate = 8; // CF_TEMPLATE_CONTAINSTEXT
556
+ iParam = CF_TEXTOPER[spec.operator ?? "containsText"];
557
+ strParam = spec.text;
558
+ // contains/notContains 는 boa 검증, beginsWith/endsWith 는 Ftab 추측(Excel 검증 대상).
559
+ rgce1 = encodeCfTextRgce(iParam, spec.text ?? "");
560
+ }
561
+ const cf1 = encodeCFParsedFormula(rgce1);
562
+ const cf2 = rgce2 != null ? encodeCFParsedFormula(rgce2) : undefined;
563
+ const head = new Uint8Array(42);
564
+ writeUint32LE(head, 0, iType);
565
+ writeUint32LE(head, 4, iTemplate);
566
+ writeUint32LE(head, 8, dxfId);
567
+ writeUint32LE(head, 12, priority);
568
+ writeUint32LE(head, 16, iParam);
569
+ // reserved1@20, reserved2@24, flags@28(2byte) = 0
570
+ writeUint32LE(head, 30, cf1.length); // cbFmla1
571
+ writeUint32LE(head, 34, cf2 != null ? cf2.length : 0); // cbFmla2
572
+ writeUint32LE(head, 38, 0); // cbFmla3
573
+ const parts = [head, encodeXLNullableWideString(strParam), cf1];
574
+ if (cf2 != null)
575
+ parts.push(cf2);
576
+ return encodeRecord(REC.BrtBeginCFRule, concatBytes(parts));
577
+ }
578
+ //#endregion
579
+ //# sourceMappingURL=biff-records.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"biff-records.js","sourceRoot":"","sources":["../../src/biff/biff-records.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { Bytes } from "@simplysm/core-common";
2
+ import type { ISharedStringModel } from "../models/i-shared-string-model";
3
+ /** sharedStrings.bin (BIFF12) 읽기/쓰기 모델. */
4
+ export declare class BiffSharedStringModel implements ISharedStringModel {
5
+ private readonly _strings;
6
+ private readonly _indexMap;
7
+ constructor(bytes?: Bytes);
8
+ getStringById(id: number): string | undefined;
9
+ getIdByString(str: string): number | undefined;
10
+ add(str: string): number;
11
+ serialize(): Bytes;
12
+ }
13
+ //# sourceMappingURL=biff-shared-string-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"biff-shared-string-model.d.ts","sourceRoot":"","sources":["../../src/biff/biff-shared-string-model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAS1E,2CAA2C;AAC3C,qBAAa,qBAAsB,YAAW,kBAAkB;IAC9D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6B;gBAE3C,KAAK,CAAC,EAAE,KAAK;IASzB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI7C,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI9C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASxB,SAAS,IAAI,KAAK;CAUnB"}