postext 0.3.28 → 0.3.30

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 (119) hide show
  1. package/dist/__tests__/columnBalancing.test.js +78 -1
  2. package/dist/__tests__/columnBalancing.test.js.map +1 -1
  3. package/dist/__tests__/exports.test.js +2 -0
  4. package/dist/__tests__/exports.test.js.map +1 -1
  5. package/dist/__tests__/pipeline/calloutOverflow.test.d.ts +2 -0
  6. package/dist/__tests__/pipeline/calloutOverflow.test.d.ts.map +1 -0
  7. package/dist/__tests__/pipeline/calloutOverflow.test.js +189 -0
  8. package/dist/__tests__/pipeline/calloutOverflow.test.js.map +1 -0
  9. package/dist/__tests__/pipeline/colonBalancing.test.d.ts +2 -0
  10. package/dist/__tests__/pipeline/colonBalancing.test.d.ts.map +1 -0
  11. package/dist/__tests__/pipeline/colonBalancing.test.js +124 -0
  12. package/dist/__tests__/pipeline/colonBalancing.test.js.map +1 -0
  13. package/dist/__tests__/pipeline/floatFirstSlot.test.js +33 -0
  14. package/dist/__tests__/pipeline/floatFirstSlot.test.js.map +1 -1
  15. package/dist/__tests__/pipeline/headingShortBand.test.d.ts +2 -0
  16. package/dist/__tests__/pipeline/headingShortBand.test.d.ts.map +1 -0
  17. package/dist/__tests__/pipeline/headingShortBand.test.js +89 -0
  18. package/dist/__tests__/pipeline/headingShortBand.test.js.map +1 -0
  19. package/dist/__tests__/pipeline/spanBoxHeadAfterCut.test.d.ts +2 -0
  20. package/dist/__tests__/pipeline/spanBoxHeadAfterCut.test.d.ts.map +1 -0
  21. package/dist/__tests__/pipeline/spanBoxHeadAfterCut.test.js +96 -0
  22. package/dist/__tests__/pipeline/spanBoxHeadAfterCut.test.js.map +1 -0
  23. package/dist/__tests__/pipeline/spanFloatAtCut.test.d.ts +2 -0
  24. package/dist/__tests__/pipeline/spanFloatAtCut.test.d.ts.map +1 -0
  25. package/dist/__tests__/pipeline/spanFloatAtCut.test.js +155 -0
  26. package/dist/__tests__/pipeline/spanFloatAtCut.test.js.map +1 -0
  27. package/dist/__tests__/pipeline/tableCellImages.test.d.ts +2 -0
  28. package/dist/__tests__/pipeline/tableCellImages.test.d.ts.map +1 -0
  29. package/dist/__tests__/pipeline/tableCellImages.test.js +166 -0
  30. package/dist/__tests__/pipeline/tableCellImages.test.js.map +1 -0
  31. package/dist/__tests__/pipeline/tableCellLists.test.d.ts +2 -0
  32. package/dist/__tests__/pipeline/tableCellLists.test.d.ts.map +1 -0
  33. package/dist/__tests__/pipeline/tableCellLists.test.js +91 -0
  34. package/dist/__tests__/pipeline/tableCellLists.test.js.map +1 -0
  35. package/dist/__tests__/pipeline/tableSlice.test.d.ts +2 -0
  36. package/dist/__tests__/pipeline/tableSlice.test.d.ts.map +1 -0
  37. package/dist/__tests__/pipeline/tableSlice.test.js +226 -0
  38. package/dist/__tests__/pipeline/tableSlice.test.js.map +1 -0
  39. package/dist/__tests__/pipeline/tableSplit.test.d.ts +2 -0
  40. package/dist/__tests__/pipeline/tableSplit.test.d.ts.map +1 -0
  41. package/dist/__tests__/pipeline/tableSplit.test.js +154 -0
  42. package/dist/__tests__/pipeline/tableSplit.test.js.map +1 -0
  43. package/dist/__tests__/pipeline/trailingCalloutBalance.test.d.ts +2 -0
  44. package/dist/__tests__/pipeline/trailingCalloutBalance.test.d.ts.map +1 -0
  45. package/dist/__tests__/pipeline/trailingCalloutBalance.test.js +60 -0
  46. package/dist/__tests__/pipeline/trailingCalloutBalance.test.js.map +1 -0
  47. package/dist/canvas-backend/headerFooter.d.ts.map +1 -1
  48. package/dist/canvas-backend/headerFooter.js +2 -6
  49. package/dist/canvas-backend/headerFooter.js.map +1 -1
  50. package/dist/canvas-backend/index.d.ts +1 -1
  51. package/dist/canvas-backend/index.d.ts.map +1 -1
  52. package/dist/canvas-backend/renderResourceBlock.d.ts +15 -1
  53. package/dist/canvas-backend/renderResourceBlock.d.ts.map +1 -1
  54. package/dist/canvas-backend/renderResourceBlock.js +117 -9
  55. package/dist/canvas-backend/renderResourceBlock.js.map +1 -1
  56. package/dist/defaults/calloutStyles.d.ts +1 -0
  57. package/dist/defaults/calloutStyles.d.ts.map +1 -1
  58. package/dist/defaults/calloutStyles.js +6 -0
  59. package/dist/defaults/calloutStyles.js.map +1 -1
  60. package/dist/defaults/headings.d.ts +2 -0
  61. package/dist/defaults/headings.d.ts.map +1 -1
  62. package/dist/defaults/headings.js +14 -0
  63. package/dist/defaults/headings.js.map +1 -1
  64. package/dist/defaults/index.d.ts +1 -1
  65. package/dist/defaults/index.d.ts.map +1 -1
  66. package/dist/defaults/index.js +1 -1
  67. package/dist/defaults/index.js.map +1 -1
  68. package/dist/defaults/tableStyle.d.ts +7 -1
  69. package/dist/defaults/tableStyle.d.ts.map +1 -1
  70. package/dist/defaults/tableStyle.js +35 -1
  71. package/dist/defaults/tableStyle.js.map +1 -1
  72. package/dist/html-backend.d.ts.map +1 -1
  73. package/dist/html-backend.js +32 -19
  74. package/dist/html-backend.js.map +1 -1
  75. package/dist/index.d.ts +5 -5
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/index.js +2 -2
  78. package/dist/index.js.map +1 -1
  79. package/dist/knuthPlass/breakpoints.d.ts.map +1 -1
  80. package/dist/knuthPlass/breakpoints.js +6 -2
  81. package/dist/knuthPlass/breakpoints.js.map +1 -1
  82. package/dist/knuthPlass/constants.d.ts +3 -1
  83. package/dist/knuthPlass/constants.d.ts.map +1 -1
  84. package/dist/knuthPlass/constants.js +3 -1
  85. package/dist/knuthPlass/constants.js.map +1 -1
  86. package/dist/pipeline/bandCaps.d.ts +4 -2
  87. package/dist/pipeline/bandCaps.d.ts.map +1 -1
  88. package/dist/pipeline/bandCaps.js +5 -3
  89. package/dist/pipeline/bandCaps.js.map +1 -1
  90. package/dist/pipeline/build.d.ts.map +1 -1
  91. package/dist/pipeline/build.js +710 -107
  92. package/dist/pipeline/build.js.map +1 -1
  93. package/dist/pipeline/calloutLayout.d.ts +7 -0
  94. package/dist/pipeline/calloutLayout.d.ts.map +1 -1
  95. package/dist/pipeline/calloutLayout.js +36 -6
  96. package/dist/pipeline/calloutLayout.js.map +1 -1
  97. package/dist/pipeline/columnBalancing.d.ts +46 -5
  98. package/dist/pipeline/columnBalancing.d.ts.map +1 -1
  99. package/dist/pipeline/columnBalancing.js +142 -6
  100. package/dist/pipeline/columnBalancing.js.map +1 -1
  101. package/dist/pipeline/config.js +1 -1
  102. package/dist/pipeline/config.js.map +1 -1
  103. package/dist/pipeline/floatPlacement.d.ts +4 -0
  104. package/dist/pipeline/floatPlacement.d.ts.map +1 -1
  105. package/dist/pipeline/floatPlacement.js.map +1 -1
  106. package/dist/pipeline/resourceLayout.d.ts +55 -1
  107. package/dist/pipeline/resourceLayout.d.ts.map +1 -1
  108. package/dist/pipeline/resourceLayout.js +394 -30
  109. package/dist/pipeline/resourceLayout.js.map +1 -1
  110. package/dist/table/model.d.ts +7 -1
  111. package/dist/table/model.d.ts.map +1 -1
  112. package/dist/table/model.js +22 -0
  113. package/dist/table/model.js.map +1 -1
  114. package/dist/types.d.ts +56 -5
  115. package/dist/types.d.ts.map +1 -1
  116. package/dist/vdt.d.ts +55 -0
  117. package/dist/vdt.d.ts.map +1 -1
  118. package/dist/vdt.js.map +1 -1
  119. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  import { describe, it, expect } from 'vitest';
2
2
  import { buildDocument } from '../pipeline/build';
3
3
  import { createMeasurementCache } from '../measure';
4
- import { collectColumnGaps, proposeBalanceLines, } from '../pipeline/columnBalancing';
4
+ import { collectColumnGaps, proposeBalanceLines, firstDivergentColumn, } from '../pipeline/columnBalancing';
5
5
  import { createVDTPage } from '../vdt';
6
6
  // Deterministic text measurement stub (no DOM in the node test env).
7
7
  class StubCtx {
@@ -196,6 +196,8 @@ const baseOptions = (over) => ({
196
196
  maxLinesPerHeading: 2,
197
197
  stretchAfterLists: true,
198
198
  maxLinesAfterList: 1,
199
+ stretchAfterFloats: true,
200
+ maxLinesAfterFloat: 1,
199
201
  looseParagraphs: true,
200
202
  maxLooseParagraphs: 1,
201
203
  optimalLineBreaking: true,
@@ -287,6 +289,35 @@ describe('list-end and loose-paragraph levers', () => {
287
289
  const proposal = proposeBalanceLines(doc, NO_FORCED, emptyState(), baseOptions());
288
290
  expect(proposal.lines.get(50)).toBe(1); // cap 1 even though the gap is 2
289
291
  });
292
+ it('adds a line under a top float band when headings and list ends cannot', () => {
293
+ const doc = fakeDoc([
294
+ [
295
+ // Column 0 starts under a figure band: its top sits at y=300, the
296
+ // float ends right above it.
297
+ { blocks: [afterListPara(60), para()], availableHeight: 2 * 24 },
298
+ { blocks: [para()], availableHeight: 0 },
299
+ ],
300
+ [{ blocks: [para()], availableHeight: 0 }],
301
+ ]);
302
+ const col = doc.pages[0].columns[0];
303
+ col.bbox = { ...col.bbox, y: 300, height: 600 };
304
+ doc.pages[0].floats = [fakeBlock({ type: 'resource', bbox: { x: 0, y: 0, width: 480, height: 280 } })];
305
+ const proposal = proposeBalanceLines(doc, NO_FORCED, emptyState(), baseOptions());
306
+ expect(proposal.lines.get(60)).toBe(1); // cap 1 even though the gap is 2
307
+ // Off: the lever stays unused.
308
+ const off = proposeBalanceLines(doc, NO_FORCED, emptyState(), baseOptions({ stretchAfterFloats: false }));
309
+ expect(off.lines.get(60)).toBeUndefined();
310
+ // A column whose float sits below its text is not a candidate.
311
+ const bottom = fakeDoc([
312
+ [
313
+ { blocks: [afterListPara(61), para()], availableHeight: 2 * 24 },
314
+ { blocks: [para()], availableHeight: 0 },
315
+ ],
316
+ [{ blocks: [para()], availableHeight: 0 }],
317
+ ]);
318
+ bottom.pages[0].floats = [fakeBlock({ type: 'resource', bbox: { x: 0, y: 700, width: 480, height: 200 } })];
319
+ expect(proposeBalanceLines(bottom, NO_FORCED, emptyState(), baseOptions()).lines.get(61)).toBeUndefined();
320
+ });
290
321
  it('exhausts heading capacity before touching list ends', () => {
291
322
  const doc = fakeDoc([
292
323
  [
@@ -404,6 +435,52 @@ describe('list-end and loose-paragraph levers', () => {
404
435
  expect(turnedOff.loose.size).toBe(0);
405
436
  });
406
437
  });
438
+ describe('cascade containment', () => {
439
+ const para = (contentIndex, cont = false) => fakeBlock({ type: 'paragraph', contentIndex, id: cont ? `p-${contentIndex}-cont-1` : `p-${contentIndex}` });
440
+ const heading = (contentIndex) => fakeBlock({ type: 'heading', headingLevel: 2, contentIndex });
441
+ it('finds the first column whose blocks or floats changed', () => {
442
+ const a = fakeDoc([
443
+ [{ blocks: [para(1), heading(2), para(3)], availableHeight: 48 }, { blocks: [para(3, true), para(4)], availableHeight: 0 }],
444
+ [{ blocks: [para(5)], availableHeight: 0 }],
445
+ ]);
446
+ const same = fakeDoc([
447
+ [{ blocks: [para(1), heading(2), para(3)], availableHeight: 0 }, { blocks: [para(3, true), para(4)], availableHeight: 0 }],
448
+ [{ blocks: [para(5)], availableHeight: 0 }],
449
+ ]);
450
+ expect(firstDivergentColumn(a, same)).toBeNull();
451
+ // Paragraph 3 moved whole into the second column.
452
+ const moved = fakeDoc([
453
+ [{ blocks: [para(1), heading(2)], availableHeight: 0 }, { blocks: [para(3), para(4)], availableHeight: 0 }],
454
+ [{ blocks: [para(5)], availableHeight: 0 }],
455
+ ]);
456
+ expect(firstDivergentColumn(a, moved)).toEqual({ pageIndex: 0, columnIndex: 0 });
457
+ // Same blocks, a float left the second column: that column diverges.
458
+ const withFloat = fakeDoc([
459
+ [{ blocks: [para(1), heading(2), para(3)], availableHeight: 48 }, { blocks: [para(3, true), para(4)], availableHeight: 0 }],
460
+ [{ blocks: [para(5)], availableHeight: 0 }],
461
+ ]);
462
+ withFloat.pages[0].floats = [fakeBlock({ type: 'resource', columnIndex: 1, id: 'fig' })];
463
+ expect(firstDivergentColumn(a, withFloat)).toEqual({ pageIndex: 0, columnIndex: 1 });
464
+ // A page missing from the other layout diverges at its first column.
465
+ const shorter = fakeDoc([
466
+ [{ blocks: [para(1), heading(2), para(3)], availableHeight: 48 }, { blocks: [para(3, true), para(4)], availableHeight: 0 }],
467
+ ]);
468
+ expect(firstDivergentColumn(a, shorter)).toEqual({ pageIndex: 1, columnIndex: 0 });
469
+ });
470
+ it('a blacklisted spacing candidate takes no further lines', () => {
471
+ const doc = fakeDoc([
472
+ [{ blocks: [para(1), heading(2), para(3)], availableHeight: 2 * 24 }, { blocks: [para(4)], availableHeight: 0 }],
473
+ [{ blocks: [para(5)], availableHeight: 0 }],
474
+ ]);
475
+ const open = proposeBalanceLines(doc, NO_FORCED, emptyState(), baseOptions());
476
+ expect(open.lines.get(2)).toBe(2);
477
+ const blocked = proposeBalanceLines(doc, NO_FORCED, emptyState(), baseOptions({ failedLines: new Set([2]) }));
478
+ expect(blocked.lines.get(2)).toBeUndefined();
479
+ // Lines already applied stay; only the increase is refused.
480
+ const kept = proposeBalanceLines(doc, NO_FORCED, { lines: new Map([[2, 1]]), loose: new Map() }, baseOptions({ failedLines: new Set([2]) }));
481
+ expect(kept.lines.get(2)).toBe(1);
482
+ });
483
+ });
407
484
  describe('collectColumnGaps: room below a list tail', () => {
408
485
  const grid = 10;
409
486
  // One line per grid step, so the last line ends where the box does unless
@@ -1 +1 @@
1
- {"version":3,"file":"columnBalancing.test.js","sourceRoot":"","sources":["../../src/__tests__/columnBalancing.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EACL,iBAAiB,EACjB,mBAAmB,GAGpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,aAAa,EAAiE,MAAM,QAAQ,CAAC;AAGtG,qEAAqE;AACrE,MAAM,OAAO;IACX,IAAI,GAAG,EAAE,CAAC;IACV,WAAW,CAAC,CAAS;QACnB,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;IACjC,CAAC;CACF;AACA,UAAsD,CAAC,eAAe,GAAG;IACxE,UAAU;QACR,OAAO,IAAI,OAAO,EAAE,CAAC;IACvB,CAAC;CACF,CAAC;AAEF,MAAM,QAAQ,GACZ,4IAA4I,CAAC;AAE/I,SAAS,SAAS,CAAC,SAAiB;IAClC,OAAO,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;AAC3C,CAAC;AAED;4DAC4D;AAC5D,SAAS,cAAc;IACrB,MAAM,KAAK,GAAa,CAAC,uBAAuB,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACxE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACtE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;AAEpC,SAAS,SAAS,CAAC,GAAgB;IACjC,OAAO,iBAAiB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED,MAAM,SAAS,GAAG,IAAI,GAAG,EAAuB,CAAC;AACjD,SAAS,SAAS,CAAC,gBAAyB,EAAE,kBAA2B;IACvE,MAAM,GAAG,GAAG,GAAG,gBAAgB,IAAI,kBAAkB,IAAI,SAAS,EAAE,CAAC;IACrE,IAAI,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,MAAM,GAAkB;YAC5B,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,EAAE;SAC3E,CAAC;QACF,GAAG,GAAG,aAAa,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC,CAAC;QACtF,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,IAAI,GAAG,MAAM,CAAC;AAEpB,QAAQ,CAAC,2CAA2C,EAAE,GAAG,EAAE;IACzD,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QAC/B,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAEjC,wEAAwE;QACxE,wEAAwE;QACxE,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAClE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAE3C,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAE3D,sEAAsE;QACtE,sEAAsE;QACtE,wEAAwE;QACxE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,aAAa,GAAG,CAAC,GAAgB,EAAE,EAAE,CACzC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAClB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAE,GAAG,CAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAC9G,CAAC;QACJ,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QAE9D,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC,EAAE,IAAI,CAAC,CAAC;IAET,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE;QAC/E,sEAAsE;QACtE,4DAA4D;QAC5D,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACrC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACxD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC,EAAE,IAAI,CAAC,CAAC;IAET,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC;QACnC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YAClC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC/B,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;oBAC/B,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;wBAAE,SAAS;oBACzC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;wBAC/B,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;wBAChE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC;wBAC7C,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;oBAClC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,EAAE,IAAI,CAAC,CAAC;IAET,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QAC/B,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC,EAAE,IAAI,CAAC,CAAC;AACX,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,iEAAiE;AACjE,8EAA8E;AAE9E,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC;mDAC+C;IAC/C,MAAM,YAAY,GAAG,GAAW,EAAE;QAChC,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,oCAAoC,EAAE,+BAA+B,CAAC,EAAE,EAAE,uEAAuE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACpM,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC;IAEF;8EAC0E;IAC1E,MAAM,kBAAkB,GAAG,GAAW,EAAE;QACtC,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;YAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5E,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,CAAC,QAAgB,EAAE,SAA2C,EAAe,EAAE,CAC3F,aAAa,CACX,EAAE,QAAQ,EAAE,EACZ,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,SAAkB,EAAE,EAAE,EAC/C,sBAAsB,EAAE,CACzB,CAAC;IAEJ,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,EAAE,GAAG,YAAY,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3F,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;QAEzF,yEAAyE;QACzE,0BAA0B;QAC1B,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAClD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEvF,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,CAAC,EAAE,IAAI,CAAC,CAAC;IAET,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,EAAE,GAAG,kBAAkB,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3F,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;QAEzF,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAClD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE9F,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QAEnD,gDAAgD;QAChD,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC;QAC7B,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;YAC5B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC/B,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;oBAC/B,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;wBAAE,SAAS;oBACzC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;wBAC/B,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;wBAChE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC;wBAC7C,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;oBAClC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,EAAE,IAAI,CAAC,CAAC;AACX,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,yEAAyE;AACzE,uEAAuE;AACvE,4DAA4D;AAC5D,8EAA8E;AAE9E,SAAS,SAAS,CAAC,OAA0B;IAC3C,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,EAAE,IAAI,GAAG;QACrB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,WAAW;QACjC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;QAC5C,KAAK,EAAE,EAAE;QACT,SAAS,EAAE,CAAC;QACZ,WAAW,EAAE,CAAC;QACd,KAAK,EAAE,KAAK;QACZ,aAAa,EAAE,KAAK;QACpB,UAAU,EAAE,YAAY;QACxB,KAAK,EAAE,MAAM;QACb,SAAS,EAAE,MAAM;QACjB,GAAG,OAAO;KACX,CAAC;AACJ,CAAC;AAED,SAAS,OAAO,CAAC,OAAiE;IAChF,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE;QACrC,MAAM,IAAI,GAAG,aAAa,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAa,EAAE,CAAC,CAAC;YAC7C,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;YACpD,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,eAAe,EAAE,CAAC,CAAC,eAAe;YAClC,cAAc,EAAE,CAAC;SAClB,CAAC,CAAC,CAAC;QACJ,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,EAAiB,CAAC;AACpD,CAAC;AAED,SAAS,QAAQ;IACf,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AACtG,CAAC;AAED,MAAM,WAAW,GAAG,CAAC,IAAsC,EAA0B,EAAE,CAAC,CAAC;IACvF,kBAAkB,EAAE,CAAC;IACrB,iBAAiB,EAAE,IAAI;IACvB,iBAAiB,EAAE,CAAC;IACpB,eAAe,EAAE,IAAI;IACrB,kBAAkB,EAAE,CAAC;IACrB,mBAAmB,EAAE,IAAI;IACzB,WAAW,EAAE,IAAI,GAAG,EAAU;IAC9B,GAAG,IAAI;CACR,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG,GAAiB,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;AAEhF,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAChD,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,CAAC,YAAoB,EAAE,KAAa,EAAE,EAAE,CACtD,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;IAEpE,EAAE,CAAC,6EAA6E,EAAE,GAAG,EAAE;QACrF,uEAAuE;QACvE,gDAAgD;QAChD,MAAM,GAAG,GAAG,OAAO,CAAC;YAClB;gBACE,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC7F,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE;aACzC;YACD,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAW;SACjE,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;QAClF,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,kCAAkC;QAC1E,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,GAAG,GAAG,OAAO,CAAC;YAClB;gBACE,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC7F,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE;aACzC;YACD,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC;SAC3C,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;QAClF,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE;QAC/E,MAAM,GAAG,GAAG,OAAO,CAAC;YAClB;gBACE,mEAAmE;gBACnE,kEAAkE;gBAClE,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,GAAG,EAAE,EAAE;gBACpG,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE;aACzC;YACD,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC;SAC3C,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;QAClF,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QAC9C,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QAC/C,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,MAAM,GAAG,GAAG,OAAO,CAAC;YAClB;gBACE,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,GAAG,EAAE,EAAE;gBACrE,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,GAAG,EAAE,EAAE;aACtE;YACD,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;SACxE,CAAC,CAAC;QACH,sEAAsE;QACtE,uEAAuE;QACvE,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;QACrF,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QAC/C,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;IACnD,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,CAAC,YAAoB,EAAE,KAAa,EAAE,EAAE,CACtD,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;IAC5F,MAAM,aAAa,GAAG,CAAC,YAAoB,EAAE,EAAE,CAC7C,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE,EAAE,KAAK,YAAY,EAAE,EAAE,CAAC,CAAC;IAC1E,MAAM,QAAQ,GAAG,CAAC,YAAoB,EAAE,SAAiB,EAAE,EAAE,GAAG,KAAK,YAAY,EAAE,EAAE,EAAE,CACrF,SAAS,CAAC;QACR,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE,SAAS;QACpB,YAAY;QACZ,EAAE;QACF,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,QAAQ,CAAC;KACnD,CAAC,CAAC;IAEL,EAAE,CAAC,2EAA2E,EAAE,GAAG,EAAE;QACnF,MAAM,GAAG,GAAG,OAAO,CAAC;YAClB;gBACE,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,GAAG,EAAE,EAAE;gBACxF,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE;aACzC;YACD,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC;SAC3C,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;QAClF,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,iCAAiC;IAC3E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,GAAG,GAAG,OAAO,CAAC;YAClB;gBACE;oBACE,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC;oBACnF,eAAe,EAAE,CAAC,GAAG,EAAE;iBACxB;gBACD,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE;aACzC;YACD,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC;SAC3C,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;QAClF,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B;QACvE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,GAAG,GAAG,OAAO,CAAC;YAClB;gBACE,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE;gBACxE,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE;aACzC;YACD,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC;SAC3C,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,mBAAmB,CAClC,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,WAAW,CAAC,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CACxE,CAAC;QACF,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,GAAG,GAAG,OAAO,CAAC;YAClB;gBACE,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE;gBACpF,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE;aACzC;YACD,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC;SAC3C,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;QAClF,yEAAyE;QACzE,+CAA+C;QAC/C,MAAM,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACzD,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC9E,MAAM,GAAG,GAAG,OAAO,CAAC;YAClB;gBACE,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE;gBACpF,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE;aACzC;YACD,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC;SAC3C,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,mBAAmB,CACtC,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAC1E,CAAC;QACF,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,qBAAqB;QAE/E,MAAM,YAAY,GAAG,mBAAmB,CACtC,GAAG,EAAE,SAAS,EACd,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAC/C,WAAW,EAAE,CACd,CAAC;QACF,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B;QACrE,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qFAAqF,EAAE,GAAG,EAAE;QAC7F,MAAM,QAAQ,GAAG,OAAO,CAAC;YACvB;gBACE,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE;gBACpF,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE;aACzC;YACD,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC;SAC3C,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,mBAAmB,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,WAAW,CAAC,EAAE,kBAAkB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3G,oEAAoE;QACpE,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACpD,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9C,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc;QAE7E,kEAAkE;QAClE,MAAM,QAAQ,GAAG,OAAO,CAAC;YACvB;gBACE,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE;gBACpF,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE;aACzC;YACD,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC;SAC3C,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,mBAAmB,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,WAAW,CAAC,EAAE,kBAAkB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3G,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACpD,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAE9C,uEAAuE;QACvE,MAAM,IAAI,GAAG,mBAAmB,CAC9B,QAAQ,EAAE,SAAS,EACnB,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAC/C,WAAW,CAAC,EAAE,kBAAkB,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CACnE,CAAC;QACF,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/C,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,iCAAiC;IACjF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC3E,MAAM,UAAU,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QAC3C,MAAM,UAAU,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;QAClD,MAAM,WAAW,GAAG,SAAS,CAAC;YAC5B,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE;YACtD,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC;SAC3C,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,OAAO,CAAC;YAClB;gBACE,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE;gBAC1D,EAAE,MAAM,EAAE,CAAC,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE;aAC7C;YACD,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC;SAC3C,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;QAClF,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,MAAM,GAAG,GAAG,OAAO,CAAC;YAClB;gBACE,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE;gBACnE,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE;aACzC;YACD,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC;SAC3C,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,mBAAmB,CACnC,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,WAAW,CAAC,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,CAC1E,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,mBAAmB,CACnC,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,WAAW,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CACtE,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,2CAA2C,EAAE,GAAG,EAAE;IACzD,MAAM,IAAI,GAAG,EAAE,CAAC;IAChB,0EAA0E;IAC1E,0DAA0D;IAC1D,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,CAAS,EAAE,MAAc,EAAE,YAAoB,EAAE,QAAiC,EAAE,EAAE,QAAQ,GAAG,CAAC,EAAE,EAAE,CACjI,CAAC;QACC,EAAE,EAAE,IAAI,YAAY,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,EAAE;QACpG,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QAC3J,GAAG,KAAK;KACT,CAAC,CAAC;IACL,MAAM,IAAI,GAAG,CAAC,OAAkB,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/H,MAAM,OAAO,GAAG,CAAC,OAAkB,EAAE,EAAE,CACrC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAA6B,CAAA,CAAC;IAEzO,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,uEAAuE;QACvE,yEAAyE;QACzE,MAAM,IAAI,GAAG;YACX,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,eAAe,EAAE,CAAC;YACzF,MAAM,EAAE;gBACN,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC5B,KAAK,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;gBAChD,KAAK,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC5B,kEAAkE;gBAClE,sDAAsD;gBACtD,KAAK,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;aACrC;SACF,CAAC;QACF,MAAM,IAAI,GAAG;YACX,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,eAAe,EAAE,CAAC;YAC3F,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;SACxC,CAAC;QACF,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QACjE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;QAClF,MAAM,IAAI,GAAG;YACX,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,eAAe,EAAE,EAAE;YAC1F,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;SACxH,CAAC;QACF,MAAM,IAAI,GAAG;YACX,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,eAAe,EAAE,CAAC;YAC3F,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;SACxC,CAAC;QACF,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QACjE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"columnBalancing.test.js","sourceRoot":"","sources":["../../src/__tests__/columnBalancing.test.ts"],"names":[],"mappings":"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"}
@@ -71,6 +71,7 @@ describe("package exports", () => {
71
71
  "mergeCells",
72
72
  "unmergeCell",
73
73
  "setCellContent",
74
+ "setCellImage",
74
75
  "setAlignment",
75
76
  "parseTSV",
76
77
  "extractFrontmatter",
@@ -94,6 +95,7 @@ describe("package exports", () => {
94
95
  "stripHeadingsDefaults",
95
96
  "resolveTableStyleConfig",
96
97
  "stripTableStyleDefaults",
98
+ "defaultTableContinuationStrings",
97
99
  "resolveCaptionStyleConfig",
98
100
  "stripCaptionStyleDefaults",
99
101
  "mergeCaptionStyle",
@@ -1 +1 @@
1
- {"version":3,"file":"exports.test.js","sourceRoot":"","sources":["../../src/__tests__/exports.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exports.test.js","sourceRoot":"","sources":["../../src/__tests__/exports.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=calloutOverflow.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calloutOverflow.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/pipeline/calloutOverflow.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,189 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { buildDocument } from '../../pipeline/build';
3
+ import { createMeasurementCache } from '../../measure';
4
+ // Deterministic text measurement stub (no DOM in the node test env).
5
+ class StubCtx {
6
+ font = '';
7
+ measureText(s) {
8
+ return { width: s.length * 7 };
9
+ }
10
+ }
11
+ globalThis.OffscreenCanvas = class {
12
+ getContext() {
13
+ return new StubCtx();
14
+ }
15
+ };
16
+ const SENTENCE = 'La linterna del faro debe permanecer encendida toda la noche para guiar a los barcos que cruzan la bahía. ';
17
+ const filler = (n) => SENTENCE.repeat(n).trim();
18
+ const mm = (value) => ({ value, unit: 'mm' });
19
+ const ICON = '★';
20
+ const noteStyle = (extra = {}) => [{ id: 'note', title: '', span: 'column', icon: { kind: 'glyph', glyph: ICON }, ...extra }];
21
+ /** Small single-column page (~11 body lines). */
22
+ const SMALL_PAGE = (extra = {}) => ({
23
+ headings: { balancing: { enabled: false } },
24
+ page: { width: mm(120), height: mm(70), margins: { top: mm(10), bottom: mm(10), left: mm(10), right: mm(10) } },
25
+ layout: { layoutType: 'single' },
26
+ calloutStyles: noteStyle(extra),
27
+ });
28
+ /** Two-column page, ~23 grid lines tall, balancing off. */
29
+ const TWO_COL = (extra = {}) => ({
30
+ headings: { balancing: { enabled: false }, levels: [{ level: 1, breakBefore: { enabled: false } }] },
31
+ page: { width: mm(160), height: mm(120), margins: { top: mm(10), bottom: mm(10), left: mm(10), right: mm(10) } },
32
+ layout: { layoutType: 'double' },
33
+ calloutStyles: noteStyle(extra),
34
+ });
35
+ const note = (text) => [':::callout{type="note"}', text, ':::'].join('\n');
36
+ const figure = (id, w, h, span) => ({
37
+ id,
38
+ typeId: 'figure',
39
+ kind: 'bitmap',
40
+ caption: `Figure ${id}.`,
41
+ createdAt: 0,
42
+ updatedAt: 0,
43
+ bitmap: { fileId: `${id}.png`, format: 'png', width: w, height: h },
44
+ placement: { span },
45
+ });
46
+ const build = (md, config, resources = []) => buildDocument({ markdown: md, resources }, config, createMeasurementCache());
47
+ const frames = (doc) => doc.blocks.filter((b) => b.type === 'callout');
48
+ const childrenOf = (doc, frame) => doc.blocks.filter((b) => b.containerId === frame.containerId && b.type !== 'callout'
49
+ && b.pageIndex === frame.pageIndex && b.columnIndex === frame.columnIndex);
50
+ const linesOf = (doc, frame) => childrenOf(doc, frame).reduce((n, b) => n + b.lines.length, 0);
51
+ const iconBlocks = (frame) => (frame.designOverlay?.blocks ?? []).filter((b) => b.kind === 'text' && b.lines.some((l) => l.text.includes(ICON))).length;
52
+ const floatsOf = (doc) => doc.pages.flatMap((p) => (p.floats ?? []).map((b) => ({ page: p.index, block: b, id: b.resourceBlock.resource.id })));
53
+ describe('splittable box cut inside a paragraph', () => {
54
+ it('splits a one-paragraph note between its lines, at least two lines on each side', () => {
55
+ // 8 lines of text, then a note whose single paragraph runs 5 lines:
56
+ // three fit at the foot of the page, two go on.
57
+ const md = `${filler(8)}\n\n${note(filler(6))}`;
58
+ const doc = build(md, SMALL_PAGE({ keepTogether: false }));
59
+ const fs = frames(doc);
60
+ expect(fs.length).toBe(2);
61
+ const [head, tail] = fs;
62
+ expect(head.pageIndex).toBe(0);
63
+ expect(tail.pageIndex).toBe(1);
64
+ const headLines = linesOf(doc, head);
65
+ const tailLines = linesOf(doc, tail);
66
+ expect(headLines).toBeGreaterThanOrEqual(2);
67
+ expect(tailLines).toBeGreaterThanOrEqual(2);
68
+ // Same paragraph on both sides: one child each, the whole text once.
69
+ const whole = build(note(filler(6)), SMALL_PAGE({ keepTogether: false }));
70
+ expect(headLines + tailLines).toBe(linesOf(whole, frames(whole)[0]));
71
+ expect(childrenOf(doc, head)).toHaveLength(1);
72
+ expect(childrenOf(doc, tail)).toHaveLength(1);
73
+ // The continuation drops the icon; the head keeps it.
74
+ expect(iconBlocks(head)).toBe(1);
75
+ expect(iconBlocks(tail)).toBe(0);
76
+ // Both fragments sit inside their page.
77
+ for (const f of fs) {
78
+ const page = doc.pages[f.pageIndex];
79
+ expect(f.bbox.y + f.bbox.height).toBeLessThanOrEqual(page.contentArea.y + page.contentArea.height + 0.01);
80
+ }
81
+ }, 30000);
82
+ it('never leaves fewer than splitMinLines on a side: moves whole instead', () => {
83
+ // Same page: the 5-line note can leave 4 + 1 or 3 + 2 lines at the foot.
84
+ const md = `${filler(8)}\n\n${note(filler(6))}`;
85
+ const strict = build(md, SMALL_PAGE({ keepTogether: false, splitMinLines: 3 }));
86
+ const lax = build(md, SMALL_PAGE({ keepTogether: false, splitMinLines: 1 }));
87
+ // Minimum 1: the deepest cut, a lone line going on. Minimum 3: no cut
88
+ // leaves three lines on both sides, so the box moves whole.
89
+ const lf = frames(lax);
90
+ expect(lf).toHaveLength(2);
91
+ expect(linesOf(lax, lf[0])).toBe(4);
92
+ expect(linesOf(lax, lf[1])).toBe(1);
93
+ const sf = frames(strict);
94
+ expect(sf).toHaveLength(1);
95
+ expect(sf[0].pageIndex).toBe(1);
96
+ expect(linesOf(strict, sf[0])).toBe(5);
97
+ }, 30000);
98
+ });
99
+ describe('keep-together box in a column cut short by floats', () => {
100
+ it('moves to the next page instead of overflowing, and a box taller than a column warns', () => {
101
+ // Left column: a paragraph referencing a tall column figure and a
102
+ // page-span figure, then a short paragraph (so the floats settle before
103
+ // the box comes), then a keep-together note. The figure takes the head
104
+ // of the right column, the span figure the page foot; the note does not
105
+ // fit the sliver between them.
106
+ const resources = [figure('f1', 400, 700, 'column'), figure('f2', 400, 200, 'page')];
107
+ const md = `Intro :ref{id="f1"} and :ref{id="f2"} text. ${filler(14)}\n\nShort.\n\n${note(filler(7))}\n\n${filler(4)}`;
108
+ const doc = build(md, TWO_COL(), resources);
109
+ const fs = frames(doc);
110
+ expect(fs).toHaveLength(1);
111
+ const f = fs[0];
112
+ // The figure took the head of the right column, which is now too
113
+ // short for the box: it opens the next page instead of overflowing.
114
+ const f1 = floatsOf(doc).find((x) => x.id === 'f1');
115
+ expect(f1.page).toBe(0);
116
+ expect(f1.block.columnIndex).toBe(1);
117
+ expect(f.pageIndex).toBe(1);
118
+ const page = doc.pages[f.pageIndex];
119
+ // Placed whole inside its page, never past the column's foot.
120
+ expect(f.bbox.y + f.bbox.height).toBeLessThanOrEqual(page.contentArea.y + page.contentArea.height + 0.01);
121
+ const col = page.columns[f.columnIndex];
122
+ expect(f.bbox.y + f.bbox.height).toBeLessThanOrEqual(col.bbox.y + col.bbox.height + 0.01);
123
+ expect(doc.warnings ?? []).toHaveLength(0);
124
+ // A box taller than any column is placed anyway and reported.
125
+ const tall = build(note(filler(40)), SMALL_PAGE());
126
+ expect(frames(tall)).toHaveLength(1);
127
+ expect(tall.warnings).toBeDefined();
128
+ expect(tall.warnings[0].kind).toBe('calloutOverflow');
129
+ expect(tall.warnings[0].overflowPx).toBeGreaterThan(0);
130
+ expect(tall.warnings[0].sourceStart).toBe(0);
131
+ }, 30000);
132
+ });
133
+ describe('continuation fragment closing a column under a figure', () => {
134
+ it('is levered down so its foot meets the foot of the head in the column before', () => {
135
+ // Left column: text, then a splittable note whose head closes the
136
+ // column. Right column: a figure at the head, then the note's tail;
137
+ // a keep-together box after it does not fit and opens the next page,
138
+ // so the tail closes the column with a gap under it.
139
+ const resources = [figure('f1', 400, 500, 'column'), figure('f2', 400, 200, 'page')];
140
+ const config = {
141
+ ...TWO_COL({ keepTogether: false }),
142
+ headings: { levels: [{ level: 1, breakBefore: { enabled: false } }] },
143
+ };
144
+ config.calloutStyles = [...(config.calloutStyles ?? []), { id: 'kt', title: 'Puntos clave', span: 'column', keepTogether: true }];
145
+ const kt = [':::callout{type="kt"}', filler(12), ':::'].join('\n');
146
+ const md = `Intro :ref{id="f1"} and :ref{id="f2"} text. ${filler(18)}\n\n${note(filler(8))}\n\n${kt}\n\n${filler(4)}`;
147
+ const doc = build(md, config, resources);
148
+ const parts = frames(doc).filter((f) => f.callout?.styleId === 'note');
149
+ expect(parts).toHaveLength(2);
150
+ const [head, tail] = parts;
151
+ expect(head.pageIndex).toBe(0);
152
+ expect(head.columnIndex).toBe(0);
153
+ expect(tail.pageIndex).toBe(0);
154
+ expect(tail.columnIndex).toBe(1);
155
+ const f1 = floatsOf(doc).find((x) => x.id === 'f1');
156
+ expect(f1.page).toBe(0);
157
+ expect(f1.block.columnIndex).toBe(1);
158
+ // Under the figure, and bottom-aligned with the head's foot.
159
+ expect(tail.bbox.y).toBeGreaterThan(f1.block.bbox.y + f1.block.bbox.height);
160
+ const headFoot = head.bbox.y + head.bbox.height;
161
+ const tailFoot = tail.bbox.y + tail.bbox.height;
162
+ expect(Math.abs(tailFoot - headFoot)).toBeLessThan(0.5);
163
+ // Nothing else shares the column with the tail.
164
+ const col = doc.pages[0].columns[1];
165
+ expect(col.blocks.every((b) => b.containerId === tail.containerId)).toBe(true);
166
+ expect(doc.warnings ?? []).toHaveLength(0);
167
+ }, 60000);
168
+ });
169
+ describe('floats yield to a keep-together box', () => {
170
+ it('a column figure defers to the next page when its slot would push the box off the page', () => {
171
+ const resources = [figure('f1', 400, 700, 'column'), figure('f2', 400, 200, 'page')];
172
+ // The note comes right after the referencing paragraph, which fills the
173
+ // left column: without the yield rule f1 would take the head of the
174
+ // right column and the note could not follow it on this page.
175
+ const md = `Intro :ref{id="f1"} and :ref{id="f2"} text. ${filler(15)}\n\n${note(filler(7))}\n\n${filler(6)}`;
176
+ const doc = build(md, TWO_COL(), resources);
177
+ const f = frames(doc)[0];
178
+ const f1 = floatsOf(doc).find((x) => x.id === 'f1');
179
+ const f2 = floatsOf(doc).find((x) => x.id === 'f2');
180
+ expect(f2.page).toBe(0);
181
+ expect(f.pageIndex).toBe(0);
182
+ expect(f.columnIndex).toBe(1);
183
+ expect(f1.page).toBe(1);
184
+ // A splittable note takes no such precedence: the figure keeps its slot.
185
+ const split = build(md, TWO_COL({ keepTogether: false }), resources);
186
+ expect(floatsOf(split).find((x) => x.id === 'f1').page).toBe(0);
187
+ }, 30000);
188
+ });
189
+ //# sourceMappingURL=calloutOverflow.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calloutOverflow.test.js","sourceRoot":"","sources":["../../../src/__tests__/pipeline/calloutOverflow.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=colonBalancing.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colonBalancing.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/pipeline/colonBalancing.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,124 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { buildDocument } from '../../pipeline/build';
3
+ import { createMeasurementCache } from '../../measure';
4
+ import { collectColumnGaps } from '../../pipeline/columnBalancing';
5
+ // Deterministic text measurement stub (no DOM in the node test env).
6
+ class StubCtx {
7
+ font = '';
8
+ measureText(s) {
9
+ return { width: s.length * 7 };
10
+ }
11
+ }
12
+ globalThis.OffscreenCanvas = class {
13
+ getContext() {
14
+ return new StubCtx();
15
+ }
16
+ };
17
+ const SENTENCE = 'La composición tipográfica editorial exige columnas alineadas, rejilla base estable y márgenes consistentes en cada página del documento. ';
18
+ const paragraph = (n) => SENTENCE.repeat(n).trim();
19
+ const words = (n) => Array.from({ length: n }, (_, i) => `palabra${i % 7}`).join(' ');
20
+ const NO_FORCED = new Set();
21
+ /**
22
+ * A section whose lead-in paragraph ("… son:") is followed by a list item
23
+ * too tall to start in the room left under it, so the plain pass closes the
24
+ * column with the colon line and the list opens the next column. `filler`
25
+ * tunes how much room is left under the colon line.
26
+ */
27
+ function markdown(filler) {
28
+ return [
29
+ '# Documento de prueba',
30
+ '',
31
+ paragraph(3),
32
+ '',
33
+ '## Primera sección',
34
+ '',
35
+ paragraph(4),
36
+ '',
37
+ '### Detalle',
38
+ '',
39
+ words(filler),
40
+ '',
41
+ 'Las funciones del gerente de área son:',
42
+ '',
43
+ `- ${paragraph(2)}`,
44
+ `- ${paragraph(1)}`,
45
+ '',
46
+ paragraph(6),
47
+ '',
48
+ '## Segunda sección',
49
+ '',
50
+ paragraph(6),
51
+ '',
52
+ paragraph(6),
53
+ '',
54
+ '## Tercera sección',
55
+ '',
56
+ paragraph(6),
57
+ '',
58
+ paragraph(6),
59
+ '',
60
+ paragraph(6),
61
+ '',
62
+ '## Cuarta sección',
63
+ '',
64
+ paragraph(6),
65
+ '',
66
+ paragraph(6),
67
+ '',
68
+ ].join('\n');
69
+ }
70
+ function build(md, balancing) {
71
+ const config = { headings: { balancing: { enabled: balancing } } };
72
+ return buildDocument({ markdown: md }, config, createMeasurementCache());
73
+ }
74
+ /** The column the plain pass closed with the colon line, when it also left
75
+ * a gap under it that a heading above could absorb. Only on a page that
76
+ * flows on: the closing band of the document is levelled by a trailing
77
+ * cap, which re-cuts its columns on purpose. */
78
+ function colonColumn(doc) {
79
+ for (const gap of collectColumnGaps(doc, NO_FORCED)) {
80
+ if (gap.pageIndex >= doc.pages.length - 1)
81
+ continue;
82
+ const col = doc.pages[gap.pageIndex].columns[gap.columnIndex];
83
+ const last = col.blocks[col.blocks.length - 1];
84
+ if (!last || last.type !== 'paragraph' || last.contentIndex === undefined)
85
+ continue;
86
+ const text = last.lines.map((l) => l.text).join(' ');
87
+ if (!/:\s*$/.test(text))
88
+ continue;
89
+ if (!gap.candidates.some((c) => c.kind === 'heading'))
90
+ continue;
91
+ return { pageIndex: gap.pageIndex, columnIndex: gap.columnIndex, contentIndex: last.contentIndex, gapLines: gap.gapLines };
92
+ }
93
+ return null;
94
+ }
95
+ const LONG = 60_000;
96
+ describe('column balancing keeps a colon lead-in where the plain pass put it', () => {
97
+ it('fills the gap under the colon line instead of pushing the line to the next column', () => {
98
+ // Find a filler length whose plain layout shows the scenario.
99
+ let plain = null;
100
+ let md = '';
101
+ let target = null;
102
+ for (let filler = 200; filler <= 360 && !target; filler += 10) {
103
+ md = markdown(filler);
104
+ plain = build(md, false);
105
+ target = colonColumn(plain);
106
+ }
107
+ expect(target, 'no filler length reproduces the colon-at-column-foot scenario').not.toBeNull();
108
+ if (!target || !plain)
109
+ return;
110
+ const balanced = build(md, true);
111
+ // The colon line still closes the same column…
112
+ const col = balanced.pages[target.pageIndex].columns[target.columnIndex];
113
+ const last = col.blocks[col.blocks.length - 1];
114
+ expect(last?.contentIndex).toBe(target.contentIndex);
115
+ // …and the levers absorbed the gap the plain pass left under it.
116
+ const gapAfter = collectColumnGaps(balanced, NO_FORCED)
117
+ .find((g) => g.pageIndex === target.pageIndex && g.columnIndex === target.columnIndex);
118
+ expect(gapAfter?.gapLines ?? 0).toBeLessThan(target.gapLines);
119
+ // Balancing stayed local: every page holds the same content blocks.
120
+ const blocksPerPage = (doc) => doc.pages.map((p) => [...new Set(p.columns.flatMap((c) => c.blocks.map((b) => b.contentIndex)))].sort((a, b) => a - b).join(','));
121
+ expect(blocksPerPage(balanced)).toEqual(blocksPerPage(plain));
122
+ }, LONG);
123
+ });
124
+ //# sourceMappingURL=colonBalancing.test.js.map