postext 1.46.4 → 1.48.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (353) hide show
  1. package/dist/__tests__/bundle/designOverflowPin.test.js +1 -1
  2. package/dist/__tests__/bundle/gridBreakRulesPin.test.js +2 -2
  3. package/dist/__tests__/bundle/shapingLanguagePin.test.js +3 -3
  4. package/dist/__tests__/bundle/taskBoxPin.test.js +1 -1
  5. package/dist/__tests__/bundle.test.js +1 -1
  6. package/dist/__tests__/codeBlocks.test.js +1 -1
  7. package/dist/__tests__/comics/config.test.js +20 -0
  8. package/dist/__tests__/comics/config.test.js.map +1 -1
  9. package/dist/__tests__/composed/cardShapes.test.d.ts +2 -0
  10. package/dist/__tests__/composed/cardShapes.test.d.ts.map +1 -0
  11. package/dist/__tests__/composed/cardShapes.test.js +82 -0
  12. package/dist/__tests__/composed/cardShapes.test.js.map +1 -0
  13. package/dist/__tests__/composed/connectors.test.d.ts +2 -0
  14. package/dist/__tests__/composed/connectors.test.d.ts.map +1 -0
  15. package/dist/__tests__/composed/connectors.test.js +349 -0
  16. package/dist/__tests__/composed/connectors.test.js.map +1 -0
  17. package/dist/__tests__/composed/decorationSidePoints.test.d.ts +2 -0
  18. package/dist/__tests__/composed/decorationSidePoints.test.d.ts.map +1 -0
  19. package/dist/__tests__/composed/decorationSidePoints.test.js +164 -0
  20. package/dist/__tests__/composed/decorationSidePoints.test.js.map +1 -0
  21. package/dist/__tests__/composed/fit.test.js +2 -1
  22. package/dist/__tests__/composed/fit.test.js.map +1 -1
  23. package/dist/__tests__/composed/fixtures/connectors.d.ts +33 -0
  24. package/dist/__tests__/composed/fixtures/connectors.d.ts.map +1 -0
  25. package/dist/__tests__/composed/fixtures/connectors.js +142 -0
  26. package/dist/__tests__/composed/fixtures/connectors.js.map +1 -0
  27. package/dist/__tests__/composed/fixtures/grid.d.ts +32 -0
  28. package/dist/__tests__/composed/fixtures/grid.d.ts.map +1 -0
  29. package/dist/__tests__/composed/fixtures/grid.js +53 -0
  30. package/dist/__tests__/composed/fixtures/grid.js.map +1 -0
  31. package/dist/__tests__/composed/fixtures/legendMap.d.ts +24 -0
  32. package/dist/__tests__/composed/fixtures/legendMap.d.ts.map +1 -0
  33. package/dist/__tests__/composed/fixtures/legendMap.js +117 -0
  34. package/dist/__tests__/composed/fixtures/legendMap.js.map +1 -0
  35. package/dist/__tests__/composed/fixtures/mapParts.d.ts +58 -0
  36. package/dist/__tests__/composed/fixtures/mapParts.d.ts.map +1 -0
  37. package/dist/__tests__/composed/fixtures/mapParts.js +192 -0
  38. package/dist/__tests__/composed/fixtures/mapParts.js.map +1 -0
  39. package/dist/__tests__/composed/fixtures/modules.d.ts +55 -0
  40. package/dist/__tests__/composed/fixtures/modules.d.ts.map +1 -0
  41. package/dist/__tests__/composed/fixtures/modules.js +123 -0
  42. package/dist/__tests__/composed/fixtures/modules.js.map +1 -0
  43. package/dist/__tests__/composed/grid.test.d.ts +2 -0
  44. package/dist/__tests__/composed/grid.test.d.ts.map +1 -0
  45. package/dist/__tests__/composed/grid.test.js +357 -0
  46. package/dist/__tests__/composed/grid.test.js.map +1 -0
  47. package/dist/__tests__/composed/groups.test.js +6 -3
  48. package/dist/__tests__/composed/groups.test.js.map +1 -1
  49. package/dist/__tests__/composed/labelLegend.test.d.ts +2 -0
  50. package/dist/__tests__/composed/labelLegend.test.d.ts.map +1 -0
  51. package/dist/__tests__/composed/labelLegend.test.js +268 -0
  52. package/dist/__tests__/composed/labelLegend.test.js.map +1 -0
  53. package/dist/__tests__/composed/labelsChecks.test.js.map +1 -1
  54. package/dist/__tests__/composed/leaders.test.d.ts +2 -0
  55. package/dist/__tests__/composed/leaders.test.d.ts.map +1 -0
  56. package/dist/__tests__/composed/leaders.test.js +372 -0
  57. package/dist/__tests__/composed/leaders.test.js.map +1 -0
  58. package/dist/__tests__/composed/modules.test.d.ts +2 -0
  59. package/dist/__tests__/composed/modules.test.d.ts.map +1 -0
  60. package/dist/__tests__/composed/modules.test.js +352 -0
  61. package/dist/__tests__/composed/modules.test.js.map +1 -0
  62. package/dist/__tests__/composed/overConnectors.test.d.ts +2 -0
  63. package/dist/__tests__/composed/overConnectors.test.d.ts.map +1 -0
  64. package/dist/__tests__/composed/overConnectors.test.js +232 -0
  65. package/dist/__tests__/composed/overConnectors.test.js.map +1 -0
  66. package/dist/__tests__/composed/overlap.test.d.ts +2 -0
  67. package/dist/__tests__/composed/overlap.test.d.ts.map +1 -0
  68. package/dist/__tests__/composed/overlap.test.js +339 -0
  69. package/dist/__tests__/composed/overlap.test.js.map +1 -0
  70. package/dist/__tests__/composed/viewerLeaf.test.d.ts +2 -0
  71. package/dist/__tests__/composed/viewerLeaf.test.d.ts.map +1 -0
  72. package/dist/__tests__/composed/viewerLeaf.test.js +106 -0
  73. package/dist/__tests__/composed/viewerLeaf.test.js.map +1 -0
  74. package/dist/__tests__/composedTemplates.test.js +1 -1
  75. package/dist/__tests__/design/boxShape.test.d.ts +2 -0
  76. package/dist/__tests__/design/boxShape.test.d.ts.map +1 -0
  77. package/dist/__tests__/design/boxShape.test.js +126 -0
  78. package/dist/__tests__/design/boxShape.test.js.map +1 -0
  79. package/dist/__tests__/design/boxShapePaint.test.d.ts +2 -0
  80. package/dist/__tests__/design/boxShapePaint.test.d.ts.map +1 -0
  81. package/dist/__tests__/design/boxShapePaint.test.js +130 -0
  82. package/dist/__tests__/design/boxShapePaint.test.js.map +1 -0
  83. package/dist/__tests__/design/openerBottomAnchor.test.js.map +1 -1
  84. package/dist/__tests__/design/pathBlock.test.d.ts +2 -0
  85. package/dist/__tests__/design/pathBlock.test.d.ts.map +1 -0
  86. package/dist/__tests__/design/pathBlock.test.js +194 -0
  87. package/dist/__tests__/design/pathBlock.test.js.map +1 -0
  88. package/dist/__tests__/design/pathElement.test.d.ts +2 -0
  89. package/dist/__tests__/design/pathElement.test.d.ts.map +1 -0
  90. package/dist/__tests__/design/pathElement.test.js +257 -0
  91. package/dist/__tests__/design/pathElement.test.js.map +1 -0
  92. package/dist/__tests__/design/svgPath.test.d.ts +2 -0
  93. package/dist/__tests__/design/svgPath.test.d.ts.map +1 -0
  94. package/dist/__tests__/design/svgPath.test.js +144 -0
  95. package/dist/__tests__/design/svgPath.test.js.map +1 -0
  96. package/dist/__tests__/exports.test.js +53 -0
  97. package/dist/__tests__/exports.test.js.map +1 -1
  98. package/dist/__tests__/fontUsage.test.js +46 -0
  99. package/dist/__tests__/fontUsage.test.js.map +1 -1
  100. package/dist/__tests__/hardBreaks.test.js +1 -1
  101. package/dist/__tests__/headingInlineMarks.test.js +1 -1
  102. package/dist/__tests__/labelGlyphPaint.test.d.ts +2 -0
  103. package/dist/__tests__/labelGlyphPaint.test.d.ts.map +1 -0
  104. package/dist/__tests__/labelGlyphPaint.test.js +86 -0
  105. package/dist/__tests__/labelGlyphPaint.test.js.map +1 -0
  106. package/dist/__tests__/mathSizeMigration.test.js +2 -2
  107. package/dist/__tests__/migrate/labelsOnPictures.test.js +1 -1
  108. package/dist/__tests__/migrate/labelsOnPictures.test.js.map +1 -1
  109. package/dist/__tests__/parse/containers.test.js +1 -1
  110. package/dist/__tests__/parse/containers.test.js.map +1 -1
  111. package/dist/__tests__/pipeline/calloutInlineResourceGap.test.js +1 -1
  112. package/dist/__tests__/pipeline/calloutLabelGlyph.test.d.ts +2 -0
  113. package/dist/__tests__/pipeline/calloutLabelGlyph.test.d.ts.map +1 -0
  114. package/dist/__tests__/pipeline/calloutLabelGlyph.test.js +198 -0
  115. package/dist/__tests__/pipeline/calloutLabelGlyph.test.js.map +1 -0
  116. package/dist/__tests__/pipeline/calloutShapes.test.d.ts +2 -0
  117. package/dist/__tests__/pipeline/calloutShapes.test.d.ts.map +1 -0
  118. package/dist/__tests__/pipeline/calloutShapes.test.js +159 -0
  119. package/dist/__tests__/pipeline/calloutShapes.test.js.map +1 -0
  120. package/dist/__tests__/pipeline/calloutSplitMinLinesChild.test.js +1 -1
  121. package/dist/__tests__/pipeline/colonListRoom.test.js +1 -1
  122. package/dist/__tests__/pipeline/compoundBreaks.test.js +1 -1
  123. package/dist/__tests__/pipeline/dashBreaks.test.js +1 -1
  124. package/dist/__tests__/pipeline/headingSplitOrphans.test.js +1 -1
  125. package/dist/__tests__/pipeline/inlineFigureSpace.test.js +1 -1
  126. package/dist/__tests__/pipeline/paragraphContainerTail.test.js +1 -1
  127. package/dist/__tests__/pipeline/raggedOptimal.test.js +1 -1
  128. package/dist/__tests__/prepareFonts.test.js +8 -6
  129. package/dist/__tests__/prepareFonts.test.js.map +1 -1
  130. package/dist/__tests__/verseLines.test.js +1 -1
  131. package/dist/bundle/configVersion.d.ts +12 -3
  132. package/dist/bundle/configVersion.d.ts.map +1 -1
  133. package/dist/bundle/configVersion.js +16 -5
  134. package/dist/bundle/configVersion.js.map +1 -1
  135. package/dist/canvas-backend/blockRender.js +3 -3
  136. package/dist/canvas-backend/blockRender.js.map +1 -1
  137. package/dist/canvas-backend/composed.d.ts +4 -2
  138. package/dist/canvas-backend/composed.d.ts.map +1 -1
  139. package/dist/canvas-backend/composed.js +12 -7
  140. package/dist/canvas-backend/composed.js.map +1 -1
  141. package/dist/canvas-backend/headerFooter.d.ts +17 -1
  142. package/dist/canvas-backend/headerFooter.d.ts.map +1 -1
  143. package/dist/canvas-backend/headerFooter.js +64 -1
  144. package/dist/canvas-backend/headerFooter.js.map +1 -1
  145. package/dist/canvas-backend/index.d.ts.map +1 -1
  146. package/dist/canvas-backend/index.js +7 -1
  147. package/dist/canvas-backend/index.js.map +1 -1
  148. package/dist/canvas-backend/renderResourceBlock.d.ts.map +1 -1
  149. package/dist/canvas-backend/renderResourceBlock.js +17 -6
  150. package/dist/canvas-backend/renderResourceBlock.js.map +1 -1
  151. package/dist/canvas-backend/swatch.d.ts +20 -1
  152. package/dist/canvas-backend/swatch.d.ts.map +1 -1
  153. package/dist/canvas-backend/swatch.js +51 -1
  154. package/dist/canvas-backend/swatch.js.map +1 -1
  155. package/dist/comics/fonts.d.ts +19 -0
  156. package/dist/comics/fonts.d.ts.map +1 -1
  157. package/dist/comics/fonts.js +70 -17
  158. package/dist/comics/fonts.js.map +1 -1
  159. package/dist/comics/layoutPage.d.ts.map +1 -1
  160. package/dist/comics/layoutPage.js +6 -1
  161. package/dist/comics/layoutPage.js.map +1 -1
  162. package/dist/composed/continuation.d.ts +10 -2
  163. package/dist/composed/continuation.d.ts.map +1 -1
  164. package/dist/composed/continuation.js +10 -2
  165. package/dist/composed/continuation.js.map +1 -1
  166. package/dist/composed/document.d.ts +45 -1
  167. package/dist/composed/document.d.ts.map +1 -1
  168. package/dist/composed/document.js +76 -17
  169. package/dist/composed/document.js.map +1 -1
  170. package/dist/composed/labelText.d.ts +9 -1
  171. package/dist/composed/labelText.d.ts.map +1 -1
  172. package/dist/composed/labelText.js +23 -1
  173. package/dist/composed/labelText.js.map +1 -1
  174. package/dist/composed/labels.d.ts +57 -3
  175. package/dist/composed/labels.d.ts.map +1 -1
  176. package/dist/composed/labels.js +261 -12
  177. package/dist/composed/labels.js.map +1 -1
  178. package/dist/composed/modules.d.ts +30 -0
  179. package/dist/composed/modules.d.ts.map +1 -0
  180. package/dist/composed/modules.js +194 -0
  181. package/dist/composed/modules.js.map +1 -0
  182. package/dist/composed/overlap.d.ts +52 -0
  183. package/dist/composed/overlap.d.ts.map +1 -0
  184. package/dist/composed/overlap.js +611 -0
  185. package/dist/composed/overlap.js.map +1 -0
  186. package/dist/composed/paint.d.ts +28 -5
  187. package/dist/composed/paint.d.ts.map +1 -1
  188. package/dist/composed/paint.js +26 -5
  189. package/dist/composed/paint.js.map +1 -1
  190. package/dist/composed/reflowLog.d.ts +6 -1
  191. package/dist/composed/reflowLog.d.ts.map +1 -1
  192. package/dist/composed/reflowLog.js +43 -0
  193. package/dist/composed/reflowLog.js.map +1 -1
  194. package/dist/composed/repeat.d.ts +66 -0
  195. package/dist/composed/repeat.d.ts.map +1 -0
  196. package/dist/composed/repeat.js +217 -0
  197. package/dist/composed/repeat.js.map +1 -0
  198. package/dist/composed/slotChecks.d.ts +1 -1
  199. package/dist/composed/slotChecks.d.ts.map +1 -1
  200. package/dist/composed/slotChecks.js +114 -8
  201. package/dist/composed/slotChecks.js.map +1 -1
  202. package/dist/composed/sourceMap.d.ts.map +1 -1
  203. package/dist/composed/sourceMap.js +16 -4
  204. package/dist/composed/sourceMap.js.map +1 -1
  205. package/dist/composed/spread.d.ts.map +1 -1
  206. package/dist/composed/spread.js +6 -2
  207. package/dist/composed/spread.js.map +1 -1
  208. package/dist/composed/templates.d.ts +22 -2
  209. package/dist/composed/templates.d.ts.map +1 -1
  210. package/dist/composed/templates.js +159 -9
  211. package/dist/composed/templates.js.map +1 -1
  212. package/dist/composed/types.d.ts +140 -7
  213. package/dist/composed/types.d.ts.map +1 -1
  214. package/dist/composed/validate.d.ts +1 -1
  215. package/dist/composed/validate.d.ts.map +1 -1
  216. package/dist/composed/validate.js +101 -4
  217. package/dist/composed/validate.js.map +1 -1
  218. package/dist/composed/wrap.d.ts.map +1 -1
  219. package/dist/composed/wrap.js +95 -17
  220. package/dist/composed/wrap.js.map +1 -1
  221. package/dist/configWarnings.d.ts +7 -1
  222. package/dist/configWarnings.d.ts.map +1 -1
  223. package/dist/configWarnings.js +275 -4
  224. package/dist/configWarnings.js.map +1 -1
  225. package/dist/contrast.d.ts.map +1 -1
  226. package/dist/contrast.js +8 -0
  227. package/dist/contrast.js.map +1 -1
  228. package/dist/defaults/calloutStyles.d.ts +10 -1
  229. package/dist/defaults/calloutStyles.d.ts.map +1 -1
  230. package/dist/defaults/calloutStyles.js +46 -7
  231. package/dist/defaults/calloutStyles.js.map +1 -1
  232. package/dist/defaults/comics.d.ts +2 -1
  233. package/dist/defaults/comics.d.ts.map +1 -1
  234. package/dist/defaults/comics.js +18 -3
  235. package/dist/defaults/comics.js.map +1 -1
  236. package/dist/defaults/headerFooter.d.ts.map +1 -1
  237. package/dist/defaults/headerFooter.js +38 -0
  238. package/dist/defaults/headerFooter.js.map +1 -1
  239. package/dist/design/boxShape.d.ts +101 -0
  240. package/dist/design/boxShape.d.ts.map +1 -0
  241. package/dist/design/boxShape.js +398 -0
  242. package/dist/design/boxShape.js.map +1 -0
  243. package/dist/design/connector.d.ts +75 -0
  244. package/dist/design/connector.d.ts.map +1 -0
  245. package/dist/design/connector.js +325 -0
  246. package/dist/design/connector.js.map +1 -0
  247. package/dist/design/layout.d.ts +56 -3
  248. package/dist/design/layout.d.ts.map +1 -1
  249. package/dist/design/layout.js +214 -12
  250. package/dist/design/layout.js.map +1 -1
  251. package/dist/design/logicalEdges.d.ts +7 -0
  252. package/dist/design/logicalEdges.d.ts.map +1 -1
  253. package/dist/design/logicalEdges.js +28 -0
  254. package/dist/design/logicalEdges.js.map +1 -1
  255. package/dist/design/pathBlock.d.ts +69 -0
  256. package/dist/design/pathBlock.d.ts.map +1 -0
  257. package/dist/design/pathBlock.js +286 -0
  258. package/dist/design/pathBlock.js.map +1 -0
  259. package/dist/design/svgPath.d.ts +48 -0
  260. package/dist/design/svgPath.d.ts.map +1 -0
  261. package/dist/design/svgPath.js +402 -0
  262. package/dist/design/svgPath.js.map +1 -0
  263. package/dist/fonts/usage.d.ts +5 -0
  264. package/dist/fonts/usage.d.ts.map +1 -1
  265. package/dist/fonts/usage.js +81 -11
  266. package/dist/fonts/usage.js.map +1 -1
  267. package/dist/html-backend.d.ts.map +1 -1
  268. package/dist/html-backend.js +127 -22
  269. package/dist/html-backend.js.map +1 -1
  270. package/dist/index.d.ts +19 -9
  271. package/dist/index.d.ts.map +1 -1
  272. package/dist/index.js +13 -5
  273. package/dist/index.js.map +1 -1
  274. package/dist/measure/cache.js +1 -1
  275. package/dist/measure/cache.js.map +1 -1
  276. package/dist/measure/inlineIcon.d.ts +34 -0
  277. package/dist/measure/inlineIcon.d.ts.map +1 -0
  278. package/dist/measure/inlineIcon.js +89 -0
  279. package/dist/measure/inlineIcon.js.map +1 -0
  280. package/dist/measure/rich.d.ts +2 -1
  281. package/dist/measure/rich.d.ts.map +1 -1
  282. package/dist/measure/rich.js +6 -0
  283. package/dist/measure/rich.js.map +1 -1
  284. package/dist/migrate/pageDesign.d.ts.map +1 -1
  285. package/dist/migrate/pageDesign.js +4 -2
  286. package/dist/migrate/pageDesign.js.map +1 -1
  287. package/dist/migrate/textToMarkdown.js +2 -0
  288. package/dist/migrate/textToMarkdown.js.map +1 -1
  289. package/dist/parse/blockParser.d.ts.map +1 -1
  290. package/dist/parse/blockParser.js +171 -20
  291. package/dist/parse/blockParser.js.map +1 -1
  292. package/dist/parse/index.d.ts +1 -1
  293. package/dist/parse/index.d.ts.map +1 -1
  294. package/dist/parse/index.js.map +1 -1
  295. package/dist/parse/inlineFormatting.d.ts +11 -3
  296. package/dist/parse/inlineFormatting.d.ts.map +1 -1
  297. package/dist/parse/inlineFormatting.js +63 -5
  298. package/dist/parse/inlineFormatting.js.map +1 -1
  299. package/dist/parse/inlineSnippet.d.ts +2 -1
  300. package/dist/parse/inlineSnippet.d.ts.map +1 -1
  301. package/dist/parse/inlineSnippet.js +3 -2
  302. package/dist/parse/inlineSnippet.js.map +1 -1
  303. package/dist/parse/sourceMapping.d.ts.map +1 -1
  304. package/dist/parse/sourceMapping.js +8 -1
  305. package/dist/parse/sourceMapping.js.map +1 -1
  306. package/dist/parse/types.d.ts +71 -1
  307. package/dist/parse/types.d.ts.map +1 -1
  308. package/dist/pipeline/build.d.ts.map +1 -1
  309. package/dist/pipeline/build.js +67 -13
  310. package/dist/pipeline/build.js.map +1 -1
  311. package/dist/pipeline/buildHelpers.d.ts +10 -0
  312. package/dist/pipeline/buildHelpers.d.ts.map +1 -1
  313. package/dist/pipeline/buildHelpers.js +17 -0
  314. package/dist/pipeline/buildHelpers.js.map +1 -1
  315. package/dist/pipeline/buildMeasurement.d.ts.map +1 -1
  316. package/dist/pipeline/buildMeasurement.js +23 -11
  317. package/dist/pipeline/buildMeasurement.js.map +1 -1
  318. package/dist/pipeline/calloutLayout.d.ts.map +1 -1
  319. package/dist/pipeline/calloutLayout.js +142 -32
  320. package/dist/pipeline/calloutLayout.js.map +1 -1
  321. package/dist/pipeline/composedLayout.d.ts +1 -33
  322. package/dist/pipeline/composedLayout.d.ts.map +1 -1
  323. package/dist/pipeline/composedLayout.js +526 -36
  324. package/dist/pipeline/composedLayout.js.map +1 -1
  325. package/dist/pipeline/config.d.ts.map +1 -1
  326. package/dist/pipeline/config.js +12 -0
  327. package/dist/pipeline/config.js.map +1 -1
  328. package/dist/pipeline/contentWarnings.d.ts.map +1 -1
  329. package/dist/pipeline/contentWarnings.js +46 -1
  330. package/dist/pipeline/contentWarnings.js.map +1 -1
  331. package/dist/pipeline/continuation.d.ts.map +1 -1
  332. package/dist/pipeline/continuation.js +3 -2
  333. package/dist/pipeline/continuation.js.map +1 -1
  334. package/dist/pipeline/headerFooter.d.ts +19 -1
  335. package/dist/pipeline/headerFooter.d.ts.map +1 -1
  336. package/dist/pipeline/headerFooter.js +169 -17
  337. package/dist/pipeline/headerFooter.js.map +1 -1
  338. package/dist/pipeline/partPalette.d.ts.map +1 -1
  339. package/dist/pipeline/partPalette.js +40 -1
  340. package/dist/pipeline/partPalette.js.map +1 -1
  341. package/dist/pipeline/resourceLayout.d.ts +1 -1
  342. package/dist/pipeline/resourceLayout.d.ts.map +1 -1
  343. package/dist/pipeline/resourceLayout.js +44 -15
  344. package/dist/pipeline/resourceLayout.js.map +1 -1
  345. package/dist/preflight.d.ts.map +1 -1
  346. package/dist/preflight.js +36 -1
  347. package/dist/preflight.js.map +1 -1
  348. package/dist/types.d.ts +319 -22
  349. package/dist/types.d.ts.map +1 -1
  350. package/dist/vdt.d.ts +392 -12
  351. package/dist/vdt.d.ts.map +1 -1
  352. package/dist/vdt.js.map +1 -1
  353. package/package.json +1 -1
@@ -0,0 +1,398 @@
1
+ import { createBoundingBox } from '../vdt';
2
+ export const SHAPE_SIDES = ['top', 'right', 'bottom', 'left'];
3
+ /** Kappa: the control-point distance of a cubic quarter circle, as a
4
+ * fraction of its radius. */
5
+ const KAPPA = 0.5522847498307936;
6
+ /** A tab closer to the box's side than this (px) is flush with it. */
7
+ const FLUSH_EPS = 0.5;
8
+ /** The outline of a box `(x, y, w, h)` with corner radii `[tl, tr, br,
9
+ * bl]` and, optionally, a joined tab. The radii are clamped so two
10
+ * corners never take more than their edge (each scaled by the edge's
11
+ * share, as CSS does per edge). */
12
+ export function boxOutline(box, radii, tab) {
13
+ const { x, y, width: w, height: h } = box;
14
+ const [tl, tr, br, bl] = radii.map((r) => Math.max(0, r));
15
+ const right = x + w;
16
+ const foot = y + h;
17
+ if (!tab || tab.x1 - tab.x0 <= 0 || tab.height <= 0) {
18
+ return clampOutline({
19
+ vertices: [{ x, y, r: tl }, { x: right, y, r: tr }, { x: right, y: foot, r: br }, { x, y: foot, r: bl }],
20
+ sides: ['top', 'right', 'bottom', 'left'],
21
+ });
22
+ }
23
+ const a = Math.max(x, Math.min(tab.x0, right));
24
+ const b = Math.max(a, Math.min(tab.x1, right));
25
+ const flushL = a - x <= FLUSH_EPS;
26
+ const flushR = right - b <= FLUSH_EPS;
27
+ const th = tab.height;
28
+ // Room beside the tab: the box's corner and the fillet share it.
29
+ const gapL = a - x;
30
+ const gapR = right - b;
31
+ const top = tab.edge === 'top';
32
+ const cornerL = top ? tl : bl;
33
+ const cornerR = top ? tr : br;
34
+ const fL = flushL ? 0 : Math.min(tab.fillet, gapL / 2);
35
+ const fR = flushR ? 0 : Math.min(tab.fillet, gapR / 2);
36
+ const rL = flushL ? 0 : Math.min(cornerL, gapL - fL);
37
+ const rR = flushR ? 0 : Math.min(cornerR, gapR - fR);
38
+ const f = Math.max(0, Math.min(Math.max(fL, fR), th));
39
+ const rt = Math.max(0, Math.min(tab.radius, (b - a) / 2, th - f));
40
+ const fl = Math.min(fL, f);
41
+ const fr = Math.min(fR, f);
42
+ const vertices = [];
43
+ const sides = [];
44
+ const push = (v, side) => {
45
+ vertices.push(v);
46
+ sides.push(side);
47
+ };
48
+ if (top) {
49
+ const ty = y - th;
50
+ // Clockwise from the top-left: along the top, up round the tab.
51
+ if (!flushL) {
52
+ push({ x, y, r: rL }, 'top');
53
+ push({ x: a, y, r: fl, concave: true }, 'top');
54
+ }
55
+ push({ x: a, y: ty, r: rt }, 'top');
56
+ push({ x: b, y: ty, r: rt }, flushR ? 'right' : 'top');
57
+ if (!flushR) {
58
+ push({ x: b, y, r: fr, concave: true }, 'top');
59
+ push({ x: right, y, r: rR }, 'right');
60
+ }
61
+ push({ x: right, y: foot, r: br }, 'bottom');
62
+ push({ x, y: foot, r: bl }, 'left');
63
+ }
64
+ else {
65
+ const ty = foot + th;
66
+ push({ x, y, r: tl }, 'top');
67
+ push({ x: right, y, r: tr }, 'right');
68
+ if (!flushR) {
69
+ push({ x: right, y: foot, r: rR }, 'bottom');
70
+ push({ x: b, y: foot, r: fr, concave: true }, 'bottom');
71
+ }
72
+ push({ x: b, y: ty, r: rt }, 'bottom');
73
+ push({ x: a, y: ty, r: rt }, flushL ? 'left' : 'bottom');
74
+ if (!flushL) {
75
+ push({ x: a, y: foot, r: fl, concave: true }, 'bottom');
76
+ push({ x, y: foot, r: rL }, 'left');
77
+ }
78
+ }
79
+ return clampOutline({ vertices, sides });
80
+ }
81
+ function clampOutline(o) {
82
+ const n = o.vertices.length;
83
+ const len = (i) => {
84
+ const p = o.vertices[i];
85
+ const q = o.vertices[(i + 1) % n];
86
+ return Math.abs(q.x - p.x) + Math.abs(q.y - p.y);
87
+ };
88
+ const vertices = o.vertices.map((v, i) => {
89
+ if (v.r <= 0)
90
+ return { ...v, r: 0 };
91
+ const prev = o.vertices[(i + n - 1) % n];
92
+ const next = o.vertices[(i + 1) % n];
93
+ const before = len((i + n - 1) % n);
94
+ const after = len(i);
95
+ const k = Math.min(1, before / (v.r + prev.r), after / (v.r + next.r));
96
+ return { ...v, r: v.r * k };
97
+ });
98
+ return { vertices, sides: o.sides };
99
+ }
100
+ /** Direction of the edge from vertex `i` (a unit axis vector). */
101
+ function edgeDir(o, i) {
102
+ const n = o.vertices.length;
103
+ const p = o.vertices[i];
104
+ const q = o.vertices[(i + 1) % n];
105
+ const dx = q.x - p.x;
106
+ const dy = q.y - p.y;
107
+ const l = Math.hypot(dx, dy) || 1;
108
+ return { x: dx / l, y: dy / l };
109
+ }
110
+ /** The rounded corner at vertex `i` with every edge moved in by its
111
+ * side's inset: from the point on the incoming edge to the point on the
112
+ * outgoing one, as a cubic. */
113
+ function cornerArc(o, i, inset) {
114
+ const n = o.vertices.length;
115
+ const v = o.vertices[i];
116
+ const inI = (i + n - 1) % n;
117
+ const dA = inset[o.sides[inI]];
118
+ const dB = inset[o.sides[i]];
119
+ const a = edgeDir(o, inI);
120
+ const b = edgeDir(o, i);
121
+ // Inward normals of a clockwise outline on a y-down sheet.
122
+ const k = { x: v.x - a.y * dA - b.y * dB, y: v.y + a.x * dA + b.x * dB };
123
+ const ra = v.r <= 0 ? 0 : v.concave ? v.r + dB : Math.max(0, v.r - dB);
124
+ const rb = v.r <= 0 ? 0 : v.concave ? v.r + dA : Math.max(0, v.r - dA);
125
+ const p0 = { x: k.x - a.x * ra, y: k.y - a.y * ra };
126
+ const p3 = { x: k.x + b.x * rb, y: k.y + b.y * rb };
127
+ return {
128
+ p0,
129
+ p1: { x: p0.x + (k.x - p0.x) * KAPPA, y: p0.y + (k.y - p0.y) * KAPPA },
130
+ p2: { x: p3.x + (k.x - p3.x) * KAPPA, y: p3.y + (k.y - p3.y) * KAPPA },
131
+ p3,
132
+ flat: ra <= 0 && rb <= 0,
133
+ };
134
+ }
135
+ const lerp = (p, q, t) => ({ x: p.x + (q.x - p.x) * t, y: p.y + (q.y - p.y) * t });
136
+ /** An arc cut at `t` (de Casteljau): the part before and the part after. */
137
+ function splitArc(c, t) {
138
+ const p01 = lerp(c.p0, c.p1, t);
139
+ const p12 = lerp(c.p1, c.p2, t);
140
+ const p23 = lerp(c.p2, c.p3, t);
141
+ const p012 = lerp(p01, p12, t);
142
+ const p123 = lerp(p12, p23, t);
143
+ const m = lerp(p012, p123, t);
144
+ return [
145
+ { p0: c.p0, p1: p01, p2: p012, p3: m, flat: c.flat },
146
+ { p0: m, p1: p123, p2: p23, p3: c.p3, flat: c.flat },
147
+ ];
148
+ }
149
+ const ZERO = { top: 0, right: 0, bottom: 0, left: 0 };
150
+ function curve(out, c) {
151
+ if (c.flat)
152
+ return;
153
+ out.push({ op: 'C', x1: c.p1.x, y1: c.p1.y, x2: c.p2.x, y2: c.p2.y, x: c.p3.x, y: c.p3.y });
154
+ }
155
+ /** The closed outline, moved in by `inset` per side (none: the outer
156
+ * edge). */
157
+ export function outlineSubpath(o, inset = ZERO) {
158
+ const arcs = o.vertices.map((_, i) => cornerArc(o, i, inset));
159
+ const out = [{ op: 'M', x: arcs[0].p3.x, y: arcs[0].p3.y }];
160
+ for (let i = 1; i <= arcs.length; i++) {
161
+ const c = arcs[i % arcs.length];
162
+ out.push({ op: 'L', x: c.p0.x, y: c.p0.y });
163
+ curve(out, c);
164
+ }
165
+ out.push({ op: 'Z' });
166
+ return out;
167
+ }
168
+ /** Where a corner between sides is split: the part of its arc on the
169
+ * incoming side is `wA / (wA + wB)` of it (all of it to a side whose
170
+ * neighbour has no width, half when both have none). */
171
+ function splitAt(wA, wB) {
172
+ return wA + wB > 0 ? wA / (wA + wB) : 0.5;
173
+ }
174
+ /** The pieces of border, one closed subpath per run of edges on a side
175
+ * that has a width in `widths`. */
176
+ export function borderPieces(o, widths) {
177
+ const n = o.vertices.length;
178
+ const outer = o.vertices.map((_, i) => cornerArc(o, i, ZERO));
179
+ const inner = o.vertices.map((_, i) => cornerArc(o, i, widths));
180
+ // The corners where the side changes, split where the widths meet.
181
+ const cut = (arcs, i) => {
182
+ const wA = widths[o.sides[(i + n - 1) % n]];
183
+ const wB = widths[o.sides[i]];
184
+ return splitArc(arcs[i], splitAt(wA, wB));
185
+ };
186
+ const pieces = new Map();
187
+ const starts = o.vertices.map((_, i) => i).filter((i) => o.sides[(i + n - 1) % n] !== o.sides[i]);
188
+ for (const s of starts) {
189
+ const side = o.sides[s];
190
+ if (!(widths[side] > 0))
191
+ continue;
192
+ let e = s;
193
+ while (o.sides[(e + 1) % n] === side && (e + 1) % n !== s)
194
+ e = (e + 1) % n;
195
+ const endV = (e + 1) % n;
196
+ // The outer edge from the start corner's split to the end corner's.
197
+ const path = [];
198
+ const [, oStart] = cut(outer, s);
199
+ const [oEnd] = cut(outer, endV);
200
+ path.push({ op: 'M', x: oStart.p0.x, y: oStart.p0.y });
201
+ curve(path, oStart);
202
+ for (let i = (s + 1) % n; i !== endV; i = (i + 1) % n) {
203
+ path.push({ op: 'L', x: outer[i].p0.x, y: outer[i].p0.y });
204
+ curve(path, outer[i]);
205
+ }
206
+ path.push({ op: 'L', x: oEnd.p0.x, y: oEnd.p0.y });
207
+ curve(path, oEnd);
208
+ // Across to the inner edge and back along it, the other way round.
209
+ const [iEnd] = cut(inner, endV);
210
+ const [, iStart] = cut(inner, s);
211
+ path.push({ op: 'L', x: iEnd.p3.x, y: iEnd.p3.y });
212
+ reverseCurve(path, iEnd);
213
+ for (let i = (endV + n - 1) % n; i !== s; i = (i + n - 1) % n) {
214
+ path.push({ op: 'L', x: inner[i].p3.x, y: inner[i].p3.y });
215
+ reverseCurve(path, inner[i]);
216
+ }
217
+ path.push({ op: 'L', x: iStart.p3.x, y: iStart.p3.y });
218
+ reverseCurve(path, iStart);
219
+ path.push({ op: 'Z' });
220
+ const list = pieces.get(side) ?? [];
221
+ list.push(path);
222
+ pieces.set(side, list);
223
+ }
224
+ return pieces;
225
+ }
226
+ function reverseCurve(out, c) {
227
+ if (c.flat)
228
+ return;
229
+ out.push({ op: 'C', x1: c.p2.x, y1: c.p2.y, x2: c.p1.x, y2: c.p1.y, x: c.p0.x, y: c.p0.y });
230
+ }
231
+ /** The ink box of `subpaths` (points and control points). */
232
+ function boundsOf(subpaths) {
233
+ let x0 = Infinity;
234
+ let y0 = Infinity;
235
+ let x1 = -Infinity;
236
+ let y1 = -Infinity;
237
+ const add = (x, y) => {
238
+ x0 = Math.min(x0, x);
239
+ y0 = Math.min(y0, y);
240
+ x1 = Math.max(x1, x);
241
+ y1 = Math.max(y1, y);
242
+ };
243
+ for (const sp of subpaths) {
244
+ for (const c of sp) {
245
+ if (c.op === 'Z')
246
+ continue;
247
+ add(c.x, c.y);
248
+ if (c.op === 'C') {
249
+ add(c.x1, c.y1);
250
+ add(c.x2, c.y2);
251
+ }
252
+ }
253
+ }
254
+ return x0 <= x1 ? createBoundingBox(x0, y0, x1 - x0, y1 - y0) : createBoundingBox(0, 0, 0, 0);
255
+ }
256
+ /** The path blocks that paint `outline` filled in `fill` with `border`
257
+ * inside it: the fill, then the border — one ring when all four sides
258
+ * have a border of one colour, else the pieces of each colour. A border that
259
+ * leaves no room inside fills the shape in its colour. */
260
+ export function shapePathBlocks(outline, fill, border) {
261
+ const widths = { top: 0, right: 0, bottom: 0, left: 0 };
262
+ const colors = new Map();
263
+ for (const side of SHAPE_SIDES) {
264
+ const b = border?.[side];
265
+ if (!b || !(b.widthPx > 0) || !b.color)
266
+ continue;
267
+ widths[side] = b.widthPx;
268
+ const list = colors.get(b.color) ?? [];
269
+ list.push(side);
270
+ colors.set(b.color, list);
271
+ }
272
+ const outer = outlineSubpath(outline);
273
+ const bbox = boundsOf([outer]);
274
+ const out = [];
275
+ const solid = colors.size > 0 && (widths.left + widths.right >= bbox.width || widths.top + widths.bottom >= bbox.height);
276
+ const widest = (sides) => Math.max(...sides.map((s) => widths[s]));
277
+ if (solid) {
278
+ const first = SHAPE_SIDES.find((s) => widths[s] > 0);
279
+ return [{ kind: 'path', bbox: { ...bbox }, subpaths: [outer], fill: border[first].color, boxPart: 'border', borderWidthPx: widest(SHAPE_SIDES) }];
280
+ }
281
+ // Each block its own box: the passes that move blocks move them in place.
282
+ if (fill)
283
+ out.push({ kind: 'path', bbox: { ...bbox }, subpaths: [outer], fill, boxPart: 'fill' });
284
+ // One ring when every side has a border of one colour; otherwise the
285
+ // pieces, so no edge of the inner outline lies on the outer one (a
286
+ // rasteriser draws such an edge as a hairline).
287
+ if (colors.size === 1 && SHAPE_SIDES.every((side) => widths[side] > 0)) {
288
+ const [[color, sides]] = [...colors];
289
+ out.push({
290
+ kind: 'path', bbox: { ...bbox }, subpaths: [outer.map((c) => ({ ...c })), outlineSubpath(outline, widths)], fill: color, fillRule: 'evenodd',
291
+ boxPart: 'border', borderWidthPx: widest(sides),
292
+ });
293
+ }
294
+ else if (colors.size > 0) {
295
+ const pieces = borderPieces(outline, widths);
296
+ for (const [color, sides] of colors) {
297
+ const subpaths = sides.flatMap((s) => pieces.get(s) ?? []);
298
+ if (subpaths.length > 0)
299
+ out.push({ kind: 'path', bbox: boundsOf(subpaths), subpaths, fill: color, boxPart: 'border', borderWidthPx: widest(sides) });
300
+ }
301
+ }
302
+ return out;
303
+ }
304
+ /** Whether a box style needs the shape painter: corners of more than one
305
+ * radius, or a border that differs per side. A box with neither paints
306
+ * as it always has. */
307
+ export function boxNeedsShape(style) {
308
+ return style.borderRadiiPx !== undefined || style.borderSides !== undefined;
309
+ }
310
+ /** The per-side border of a box style: its `borderSides`, else the whole
311
+ * border on every side. */
312
+ export function boxStyleBorder(style) {
313
+ if (style.borderSides)
314
+ return style.borderSides;
315
+ const whole = style.borderColor && style.borderWidthPx > 0 ? { color: style.borderColor, widthPx: style.borderWidthPx } : null;
316
+ return { top: whole, right: whole, bottom: whole, left: whole };
317
+ }
318
+ /** The corner radii of a box style. */
319
+ export function boxStyleRadii(style) {
320
+ const r = style.borderRadiusPx;
321
+ return style.borderRadiiPx ?? [r, r, r, r];
322
+ }
323
+ /** The path blocks of a box style painted at `(x, y, w, h)`: what the
324
+ * backends draw for a box that {@link boxNeedsShape}. */
325
+ export function boxStylePathBlocks(x, y, w, h, style) {
326
+ if (w <= 0 || h <= 0)
327
+ return [];
328
+ const outline = boxOutline(createBoundingBox(x, y, w, h), boxStyleRadii(style));
329
+ return shapePathBlocks(outline, style.backgroundColor, boxStyleBorder(style));
330
+ }
331
+ /** A box style with its corners and sides folded down to the plain fields
332
+ * when they say no more than those (every corner one radius, every side
333
+ * the same border), so a style that sets them alike paints as before. */
334
+ export function normalizeBoxStyle(style) {
335
+ const out = { ...style };
336
+ const radii = style.borderRadiiPx;
337
+ if (radii) {
338
+ out.borderRadiusPx = Math.max(...radii);
339
+ if (radii.every((r) => r === radii[0]))
340
+ delete out.borderRadiiPx;
341
+ }
342
+ const sides = style.borderSides;
343
+ if (sides) {
344
+ const list = SHAPE_SIDES.map((s) => sides[s]);
345
+ const first = list.find((b) => b !== null);
346
+ out.borderColor = first?.color;
347
+ out.borderWidthPx = Math.max(0, ...list.map((b) => b?.widthPx ?? 0));
348
+ if (!first) {
349
+ delete out.borderColor;
350
+ out.borderWidthPx = 0;
351
+ delete out.borderSides;
352
+ }
353
+ else if (list.every((b) => b !== null && b.color === first.color && b.widthPx === first.widthPx)) {
354
+ delete out.borderSides;
355
+ }
356
+ }
357
+ return out;
358
+ }
359
+ /** Whether a corner radius names its corners (`{ topLeft, … }`) rather
360
+ * than being one length for all four. */
361
+ export function isCornerRadii(r) {
362
+ return typeof r === 'object' && r !== null && !('value' in r && 'unit' in r);
363
+ }
364
+ /** The radius of every corner when a corner radius is one length; absent
365
+ * when it names its corners. */
366
+ export function uniformRadius(r) {
367
+ return r === undefined || isCornerRadii(r) ? undefined : r;
368
+ }
369
+ /** The four radii (px), top-left, top-right, bottom-right, bottom-left, of
370
+ * a corner radius: one length on every corner, or each corner's own (a
371
+ * corner left out is square). */
372
+ export function cornerRadiiPx(r, toPx) {
373
+ if (r === undefined)
374
+ return [0, 0, 0, 0];
375
+ if (!isCornerRadii(r)) {
376
+ const v = Math.max(0, toPx(r));
377
+ return [v, v, v, v];
378
+ }
379
+ const one = (d) => (d && typeof d === 'object' ? Math.max(0, toPx(d)) : 0);
380
+ return [one(r.topLeft), one(r.topRight), one(r.bottomRight), one(r.bottomLeft)];
381
+ }
382
+ /** The border per side of a box (px / hex): each side over the whole
383
+ * border's `enabled`, colour and width; a side is drawn when it is on and
384
+ * has a colour and a width. */
385
+ export function borderSidesPx(whole, sides, toPx) {
386
+ const out = {};
387
+ for (const side of SHAPE_SIDES) {
388
+ const own = sides && typeof sides === 'object' ? sides[side] : undefined;
389
+ const o = own && typeof own === 'object' ? own : undefined;
390
+ const enabled = o?.enabled ?? whole.enabled;
391
+ const color = o?.color ?? whole.color;
392
+ const width = o?.width ?? whole.width;
393
+ const widthPx = width ? toPx(width) : 0;
394
+ out[side] = enabled && color?.hex && widthPx > 0 ? { color: color.hex, widthPx } : null;
395
+ }
396
+ return out;
397
+ }
398
+ //# sourceMappingURL=boxShape.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boxShape.js","sourceRoot":"","sources":["../../src/design/boxShape.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAI3C,MAAM,CAAC,MAAM,WAAW,GAAyB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AA+BpF;8BAC8B;AAC9B,MAAM,KAAK,GAAG,kBAAkB,CAAC;AACjC,sEAAsE;AACtE,MAAM,SAAS,GAAG,GAAG,CAAC;AAKtB;;;oCAGoC;AACpC,MAAM,UAAU,UAAU,CAAC,GAAgB,EAAE,KAAgD,EAAE,GAAc;IAC3G,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC;IAC1C,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;IACpB,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACpD,OAAO,YAAY,CAAC;YAClB,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;YACxG,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC;SAC1C,CAAC,CAAC;IACL,CAAC;IACD,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC;IAClC,MAAM,MAAM,GAAG,KAAK,GAAG,CAAC,IAAI,SAAS,CAAC;IACtC,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;IACtB,iEAAiE;IACjE,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB,MAAM,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC;IACvB,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC;IAC/B,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9B,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;IACvD,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;IACvD,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;IACrD,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;IACrD,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACtD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IAClE,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3B,MAAM,QAAQ,GAAkB,EAAE,CAAC;IACnC,MAAM,KAAK,GAAgB,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAG,CAAC,CAAc,EAAE,IAAe,EAAE,EAAE;QAC/C,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC,CAAC;IACF,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;QAClB,gEAAgE;QAChE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;YAC7B,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;YAC/C,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC7C,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,MAAM,EAAE,GAAG,IAAI,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;YAC7C,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;YACxD,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IACD,OAAO,YAAY,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,YAAY,CAAC,CAAe;IACnC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC5B,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE;QACxB,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC;QACzB,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;QACnC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACvC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;QACtC,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACpC,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;AACtC,CAAC;AAED,kEAAkE;AAClE,SAAS,OAAO,CAAC,CAAe,EAAE,CAAS;IACzC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC;IACzB,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;IACnC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IAClC,OAAO,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC;AAClC,CAAC;AAED;;gCAEgC;AAChC,SAAS,SAAS,CAAC,CAAe,EAAE,CAAS,EAAE,KAAgC;IAC7E,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC;IACzB,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAE,CAAC,CAAC;IAChC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;IAC9B,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC1B,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxB,2DAA2D;IAC3D,MAAM,CAAC,GAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;IAC7E,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IACvE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IACvE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;IACpD,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;IACpD,OAAO;QACL,EAAE;QACF,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE;QACtE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE;QACtE,EAAE;QACF,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;KACzB,CAAC;AACJ,CAAC;AAED,MAAM,IAAI,GAAG,CAAC,CAAK,EAAE,CAAK,EAAE,CAAS,EAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAEvG,4EAA4E;AAC5E,SAAS,QAAQ,CAAC,CAAM,EAAE,CAAS;IACjC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAChC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAChC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IAC/B,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC9B,OAAO;QACL,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;QACpD,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;KACrD,CAAC;AACJ,CAAC;AAED,MAAM,IAAI,GAA8B,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAEjF,SAAS,KAAK,CAAC,GAAqB,EAAE,CAAM;IAC1C,IAAI,CAAC,CAAC,IAAI;QAAE,OAAO;IACnB,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9F,CAAC;AAED;aACa;AACb,MAAM,UAAU,cAAc,CAAC,CAAe,EAAE,QAAmC,IAAI;IACrF,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAqB,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAChF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAE,CAAC;QACjC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAC5C,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAChB,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;IACtB,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;yDAEyD;AACzD,SAAS,OAAO,CAAC,EAAU,EAAE,EAAU;IACrC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC5C,CAAC;AAED;oCACoC;AACpC,MAAM,UAAU,YAAY,CAAC,CAAe,EAAE,MAAiC;IAC7E,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC5B,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IAChE,mEAAmE;IACnE,MAAM,GAAG,GAAG,CAAC,IAAW,EAAE,CAAS,EAAc,EAAE;QACjD,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,CAAC;QAC7C,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;QAC/B,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAiC,CAAC;IACxD,MAAM,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAClG,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC;QACzB,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAAE,SAAS;QAClC,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAC3E,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACzB,oEAAoE;QACpE,MAAM,IAAI,GAAqB,EAAE,CAAC;QAClC,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACvD,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACpB,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YACtD,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAC7D,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;QACzB,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACnD,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClB,mEAAmE;QACnE,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACnD,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACzB,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9D,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAC7D,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;QAChC,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACvD,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QACvB,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,YAAY,CAAC,GAAqB,EAAE,CAAM;IACjD,IAAI,CAAC,CAAC,IAAI;QAAE,OAAO;IACnB,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9F,CAAC;AAKD,6DAA6D;AAC7D,SAAS,QAAQ,CAAC,QAAqC;IACrD,IAAI,EAAE,GAAG,QAAQ,CAAC;IAClB,IAAI,EAAE,GAAG,QAAQ,CAAC;IAClB,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC;IACnB,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC;IACnB,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE;QACnC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACrB,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACrB,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACrB,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACvB,CAAC,CAAC;IACF,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;QAC1B,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YACnB,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG;gBAAE,SAAS;YAC3B,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACd,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC;gBACjB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;gBAChB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAChG,CAAC;AAED;;;2DAG2D;AAC3D,MAAM,UAAU,eAAe,CAAC,OAAqB,EAAE,IAAwB,EAAE,MAA+B;IAC9G,MAAM,MAAM,GAA8B,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IACnF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC9C,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;YAAE,SAAS;QACjD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;QACzB,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC;IACD,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAyB,EAAE,CAAC;IACrC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;IACzH,MAAM,MAAM,GAAG,CAAC,KAA2B,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzF,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;QACtD,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAO,CAAC,KAAK,CAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACtJ,CAAC;IACD,0EAA0E;IAC1E,IAAI,IAAI;QAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAClG,qEAAqE;IACrE,mEAAmE;IACnE,gDAAgD;IAChD,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACvE,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;QACrC,GAAG,CAAC,IAAI,CAAC;YACP,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS;YAC5I,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC;SAChD,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7C,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3D,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;gBAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACxJ,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;wBAEwB;AACxB,MAAM,UAAU,aAAa,CAAC,KAAwB;IACpD,OAAO,KAAK,CAAC,aAAa,KAAK,SAAS,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC;AAC9E,CAAC;AAED;4BAC4B;AAC5B,MAAM,UAAU,cAAc,CAAC,KAAwB;IACrD,IAAI,KAAK,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC,WAAW,CAAC;IAChD,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/H,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAClE,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,aAAa,CAAC,KAAwB;IACpD,MAAM,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC;IAC/B,OAAO,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED;0DAC0D;AAC1D,MAAM,UAAU,kBAAkB,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,KAAwB;IACrG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAChC,MAAM,OAAO,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IAChF,OAAO,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,eAAe,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;AAChF,CAAC;AAED;;0EAE0E;AAC1E,MAAM,UAAU,iBAAiB,CAAC,KAAwB;IACxD,MAAM,GAAG,GAAsB,EAAE,GAAG,KAAK,EAAE,CAAC;IAC5C,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC;IAClC,IAAI,KAAK,EAAE,CAAC;QACV,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;QACxC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,GAAG,CAAC,aAAa,CAAC;IACnE,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC;IAChC,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QAC3C,GAAG,CAAC,WAAW,GAAG,KAAK,EAAE,KAAK,CAAC;QAC/B,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,WAAW,CAAC;YACvB,GAAG,CAAC,aAAa,GAAG,CAAC,CAAC;YACtB,OAAO,GAAG,CAAC,WAAW,CAAC;QACzB,CAAC;aAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACnG,OAAO,GAAG,CAAC,WAAW,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;0CAC0C;AAC1C,MAAM,UAAU,aAAa,CAAC,CAA2B;IACvD,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED;iCACiC;AACjC,MAAM,UAAU,aAAa,CAAC,CAA2B;IACvD,OAAO,CAAC,KAAK,SAAS,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED;;kCAEkC;AAClC,MAAM,UAAU,aAAa,CAAC,CAA2B,EAAE,IAA8B;IACvF,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACzC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACtB,CAAC;IACD,MAAM,GAAG,GAAG,CAAC,CAAwB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AAClF,CAAC;AAED;;gCAEgC;AAChC,MAAM,UAAU,aAAa,CAC3B,KAAwF,EACxF,KAA8B,EAC9B,IAA8B;IAE9B,MAAM,GAAG,GAAG,EAAiB,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACzE,MAAM,CAAC,GAAG,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3D,MAAM,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC;QAC5C,MAAM,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC;QACtC,MAAM,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC;QACtC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,IAAI,KAAK,EAAE,GAAG,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1F,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Connectors of a composed page's decoration (#1056, DESIGN §12.3): the
3
+ * lines of a tree diagram, an org chart, a timeline, a flow chart, laid
4
+ * between the final boxes of the frames they join and painted as a
5
+ * `VDTDesignPathBlock`.
6
+ *
7
+ * Pure geometry: the boxes come in (sheet px), the outline and the end
8
+ * marks go out. Routing:
9
+ * - `straight`: one segment from end to end;
10
+ * - `elbow`: across, along, across again between two sides that face the
11
+ * same way or each other (the middle run `trunk` of the way), an L
12
+ * between a side and one across it;
13
+ * - `tree`: a trunk from the parent (`from`) to a bar `trunk` of the way to
14
+ * the nearest child, the bar over the children's points (and the
15
+ * parent's when it stands outside them), one drop to each child; a child
16
+ * whose point is on the bar's line has none.
17
+ * A bend is rounded by `radius` (a quarter circle as a cubic), held to what
18
+ * the segments beside it leave.
19
+ */
20
+ import type { ConnectorEnd, Dimension, LineCap, ResolvedDesignConnectorElement } from '../types';
21
+ import type { VDTPathCommand, VDTPathMarker } from '../vdt';
22
+ import type { ResolvedPathPrimitive } from './layout';
23
+ export interface ConnectorRect {
24
+ x: number;
25
+ y: number;
26
+ width: number;
27
+ height: number;
28
+ }
29
+ type Side = 'top' | 'bottom' | 'left' | 'right';
30
+ /** Line width of a connector that sets none: 0.75 pt. */
31
+ export declare const DEFAULT_CONNECTOR_WIDTH: Dimension;
32
+ /** A cap's size against the line width when `capSize` is not set. */
33
+ export declare const DEFAULT_CAP_SIZE_PER_WIDTH = 3;
34
+ export declare const CONNECTOR_ROUTINGS: readonly ["straight", "elbow", "tree"];
35
+ export declare const CONNECTOR_CAPS: readonly ["none", "dot", "arrow"];
36
+ export declare const CONNECTOR_SIDES: readonly ["top", "bottom", "left", "right", "start", "end"];
37
+ /** How a label's leader runs (#1057). */
38
+ export declare const LEADER_ROUTINGS: readonly ["straight", "elbow"];
39
+ /** The side of `a` that faces `b`: the axis with the wider clear gap
40
+ * between the two (a tie goes to the vertical one), else, for boxes that
41
+ * overlap on both axes, the axis their centres are further apart on. */
42
+ export declare function facingSide(a: ConnectorRect, b: ConnectorRect): Side;
43
+ export interface Pt {
44
+ x: number;
45
+ y: number;
46
+ }
47
+ /** The commands of a polyline, each bend rounded by `radius` (held to half
48
+ * a segment between two bends, the whole of an end segment). */
49
+ export declare function polylineCommands(points: readonly Pt[], radius: number): VDTPathCommand[];
50
+ /** An end of a polyline marked with a cap: the mark, and the line pulled
51
+ * back inside an arrowhead. `ends`: 0 the first point, 1 the last. */
52
+ export declare function capEnd(points: Pt[], which: 0 | 1, cap: LineCap, size: number, color: string, marks: VDTPathMarker[]): void;
53
+ /** One end ready to be laid: its box and what it asks of the side. */
54
+ export interface ConnectorEndBox {
55
+ name: string;
56
+ box: ConnectorRect;
57
+ end: ConnectorEnd;
58
+ }
59
+ export interface ConnectorLayoutOptions {
60
+ dpi: number;
61
+ /** The page's lines start on the right (`start` / `end` sides, `at` along
62
+ * a horizontal side). */
63
+ startRight: boolean;
64
+ }
65
+ /** Whether a connector is painted over the frames (#1076): its `over`
66
+ * when it is a boolean, else whether an end as written (`from`, any `to`)
67
+ * names a picture's `anchor`, a point inside a frame that would cover a
68
+ * line painted under it. Read from the element, not from the ends the
69
+ * page keeps, so a dropped end does not change the layer. */
70
+ export declare function connectorPaintsOver(el: Pick<ResolvedDesignConnectorElement, 'over' | 'from' | 'to'>): boolean;
71
+ /** The outline and marks of `el` between `from` and `to` (every end that
72
+ * the page has, in order), or undefined when nothing is left to draw. */
73
+ export declare function layoutConnector(el: ResolvedDesignConnectorElement, from: ConnectorEndBox, to: readonly ConnectorEndBox[], opts: ConnectorLayoutOptions): ResolvedPathPrimitive | undefined;
74
+ export {};
75
+ //# sourceMappingURL=connector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connector.d.ts","sourceRoot":"","sources":["../../src/design/connector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,8BAA8B,EAAE,MAAM,UAAU,CAAC;AACjG,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAI5D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAEtD,MAAM,WAAW,aAAa;IAC5B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,KAAK,IAAI,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAEhD,yDAAyD;AACzD,eAAO,MAAM,uBAAuB,EAAE,SAAuC,CAAC;AAC9E,qEAAqE;AACrE,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAO5C,eAAO,MAAM,kBAAkB,wCAAyC,CAAC;AACzE,eAAO,MAAM,cAAc,mCAAoC,CAAC;AAChE,eAAO,MAAM,eAAe,6DAA8D,CAAC;AAC3F,yCAAyC;AACzC,eAAO,MAAM,eAAe,gCAAiC,CAAC;AAyB9D;;yEAEyE;AACzE,wBAAgB,UAAU,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,IAAI,CAenE;AAkBD,MAAM,WAAW,EAAE;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AA2BD;iEACiE;AACjE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc,EAAE,CA0BxF;AAED;uEACuE;AACvE,wBAAgB,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,IAAI,CAc1H;AAED,sEAAsE;AACtE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,aAAa,CAAC;IACnB,GAAG,EAAE,YAAY,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ;8BAC0B;IAC1B,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;;8DAI8D;AAC9D,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,IAAI,CAAC,8BAA8B,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,OAAO,CAO7G;AAED;0EAC0E;AAC1E,wBAAgB,eAAe,CAAC,EAAE,EAAE,8BAA8B,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,SAAS,eAAe,EAAE,EAAE,IAAI,EAAE,sBAAsB,GAAG,qBAAqB,GAAG,SAAS,CA8I1L"}