cotutor 0.1.0 → 0.3.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 (845) hide show
  1. package/LICENSE +247 -21
  2. package/NOTICE +42 -0
  3. package/README.md +107 -24
  4. package/bin/cotutor.js +4 -4
  5. package/cards/canvas/card.css +8 -0
  6. package/cards/canvas/card.md +68 -0
  7. package/cards/choice/card.css +18 -0
  8. package/cards/choice/card.md +55 -0
  9. package/cards/code/card.css +5 -0
  10. package/cards/code/card.md +46 -0
  11. package/cards/dictation/card.css +10 -0
  12. package/cards/dictation/card.md +97 -0
  13. package/cards/image/card.css +10 -0
  14. package/cards/image/card.md +52 -0
  15. package/cards/lecture/card.css +9 -0
  16. package/cards/lecture/card.md +69 -0
  17. package/cards/paint/card.css +20 -0
  18. package/cards/paint/card.md +77 -0
  19. package/cards/photo/card.css +15 -0
  20. package/cards/photo/card.md +61 -0
  21. package/cards/read/card.css +6 -0
  22. package/cards/read/card.md +51 -0
  23. package/cards/text/card.css +3 -0
  24. package/cards/text/card.md +69 -0
  25. package/cards/tianzige/card.css +17 -0
  26. package/cards/tianzige/card.md +78 -0
  27. package/cards/tutor/card.css +66 -0
  28. package/cards/tutor/card.md +148 -0
  29. package/cards/word/card.css +24 -0
  30. package/cards/word/card.md +91 -0
  31. package/cards//346/235/277/344/271/246/346/200/216/344/271/210/345/206/231.md +159 -0
  32. package/dist/app/activity-eval-rules.d.ts +62 -0
  33. package/dist/app/activity-eval-rules.js +276 -0
  34. package/dist/app/activity-eval.d.ts +65 -0
  35. package/dist/app/activity-eval.js +158 -0
  36. package/dist/app/build.d.ts +11 -0
  37. package/dist/app/build.js +45 -0
  38. package/dist/app/cli/activities.d.ts +63 -0
  39. package/dist/app/cli/activities.js +158 -0
  40. package/dist/app/cli/cert.d.ts +7 -0
  41. package/dist/app/cli/cert.js +36 -0
  42. package/dist/app/cli/chalk/bake.d.ts +10 -0
  43. package/dist/app/cli/chalk/bake.js +58 -0
  44. package/dist/app/cli/chalk/browser.d.ts +16 -0
  45. package/dist/app/cli/chalk/browser.js +142 -0
  46. package/dist/app/cli/chalk/build.d.ts +14 -0
  47. package/dist/app/cli/chalk/build.js +100 -0
  48. package/dist/app/cli/chalk/dub.d.ts +51 -0
  49. package/dist/app/cli/chalk/dub.js +106 -0
  50. package/dist/app/cli/chalk/load-scene.d.ts +34 -0
  51. package/dist/app/cli/chalk/load-scene.js +117 -0
  52. package/dist/app/cli/chalk/main.d.ts +7 -0
  53. package/dist/app/cli/chalk/main.js +198 -0
  54. package/dist/app/cli/chalk/serve.d.ts +4 -0
  55. package/dist/app/cli/chalk/serve.js +28 -0
  56. package/dist/app/cli/chalk/snap.d.ts +65 -0
  57. package/dist/app/cli/chalk/snap.js +103 -0
  58. package/dist/app/cli/chalk/typecheck.d.ts +7 -0
  59. package/dist/app/cli/chalk/typecheck.js +51 -0
  60. package/dist/app/cli/doctor.d.ts +23 -0
  61. package/dist/app/cli/doctor.js +617 -0
  62. package/dist/app/cli/grades.d.ts +14 -0
  63. package/dist/app/cli/grades.js +44 -0
  64. package/dist/{cli → app/cli}/init.d.ts +3 -1
  65. package/dist/app/cli/init.js +155 -0
  66. package/dist/app/cli/main.js +715 -0
  67. package/dist/app/cli/migrate.d.ts +58 -0
  68. package/dist/app/cli/migrate.js +253 -0
  69. package/dist/app/cli/serve.d.ts +37 -0
  70. package/dist/app/cli/serve.js +98 -0
  71. package/dist/app/cli/shipped.d.ts +30 -0
  72. package/dist/app/cli/shipped.js +47 -0
  73. package/dist/app/cli/skeleton.d.ts +38 -0
  74. package/dist/app/cli/skeleton.js +161 -0
  75. package/dist/app/cli/skills.d.ts +55 -0
  76. package/dist/app/cli/skills.js +189 -0
  77. package/dist/app/cli/themes.d.ts +52 -0
  78. package/dist/app/cli/themes.js +148 -0
  79. package/dist/app/cli/tutors.d.ts +73 -0
  80. package/dist/app/cli/tutors.js +250 -0
  81. package/dist/app/cli/usage.d.ts +2 -0
  82. package/dist/app/cli/usage.js +30 -0
  83. package/dist/app/dictation/recognize.d.ts +18 -0
  84. package/dist/app/dictation/recognize.js +6 -0
  85. package/dist/app/dictation/route.d.ts +52 -0
  86. package/dist/app/dictation/route.js +510 -0
  87. package/dist/app/diff.d.ts +11 -0
  88. package/dist/app/diff.js +71 -0
  89. package/dist/app/http/access.d.ts +62 -0
  90. package/dist/app/http/access.js +180 -0
  91. package/dist/app/http/app.d.ts +246 -0
  92. package/dist/app/http/app.js +1212 -0
  93. package/dist/app/http/dev-activities.d.ts +115 -0
  94. package/dist/app/http/dev-activities.js +193 -0
  95. package/dist/app/http/dev-overview.d.ts +108 -0
  96. package/dist/app/http/dev-overview.js +209 -0
  97. package/dist/app/http/dev-tutor-files.d.ts +80 -0
  98. package/dist/app/http/dev-tutor-files.js +151 -0
  99. package/dist/app/http/parent-home.d.ts +37 -0
  100. package/dist/app/http/parent-home.js +203 -0
  101. package/dist/app/http/range.d.ts +9 -0
  102. package/dist/app/http/range.js +19 -0
  103. package/dist/app/http/raw-view.d.ts +117 -0
  104. package/dist/app/http/raw-view.js +149 -0
  105. package/dist/app/http/send-file.d.ts +7 -0
  106. package/dist/app/http/send-file.js +29 -0
  107. package/dist/app/http/stage.d.ts +24 -0
  108. package/dist/app/http/stage.js +97 -0
  109. package/dist/app/http/theme.d.ts +13 -0
  110. package/dist/app/http/theme.js +41 -0
  111. package/dist/app/machine/bailian.d.ts +28 -0
  112. package/dist/app/machine/bailian.js +88 -0
  113. package/dist/app/mock/mock-live.d.ts +16 -0
  114. package/dist/app/mock/mock-live.js +140 -0
  115. package/dist/app/mock/mock.d.ts +89 -0
  116. package/dist/app/mock/mock.js +1117 -0
  117. package/dist/app/replay.d.ts +94 -0
  118. package/dist/app/replay.js +170 -0
  119. package/dist/app/skills/analyze-doc.d.ts +3 -0
  120. package/dist/app/skills/analyze-doc.js +47 -0
  121. package/dist/app/skills/home-doc.d.ts +5 -0
  122. package/dist/app/skills/home-doc.js +112 -0
  123. package/dist/app/skills/tune-doc.d.ts +3 -0
  124. package/dist/app/skills/tune-doc.js +80 -0
  125. package/dist/app/talk/list.d.ts +11 -0
  126. package/dist/app/talk/list.js +9 -0
  127. package/dist/app/talk/route.d.ts +16 -0
  128. package/dist/app/talk/route.js +142 -0
  129. package/dist/app/workspace.d.ts +58 -0
  130. package/dist/{cli → app}/workspace.js +82 -36
  131. package/dist/app/ws/route.d.ts +25 -0
  132. package/dist/app/ws/route.js +29 -0
  133. package/dist/app/ws/ws.d.ts +31 -0
  134. package/dist/app/ws/ws.js +169 -0
  135. package/dist/board/canvas-chat.d.ts +97 -0
  136. package/dist/board/canvas-chat.js +175 -0
  137. package/dist/board/card-guards.d.ts +15 -0
  138. package/dist/board/card-guards.js +38 -0
  139. package/dist/board/cards/canvas.d.ts +41 -0
  140. package/dist/board/cards/canvas.js +83 -0
  141. package/dist/board/cards/choice.d.ts +20 -0
  142. package/dist/board/cards/choice.js +64 -0
  143. package/dist/board/cards/code.d.ts +9 -0
  144. package/dist/board/cards/code.js +10 -0
  145. package/dist/board/cards/dictation.d.ts +42 -0
  146. package/dist/board/cards/dictation.js +105 -0
  147. package/dist/board/cards/docs.d.ts +47 -0
  148. package/dist/board/cards/docs.js +152 -0
  149. package/dist/board/cards/image.d.ts +13 -0
  150. package/dist/board/cards/image.js +26 -0
  151. package/dist/board/cards/index.d.ts +62 -0
  152. package/dist/board/cards/index.js +144 -0
  153. package/dist/board/cards/kind.d.ts +33 -0
  154. package/dist/board/cards/kind.js +9 -0
  155. package/dist/board/cards/lecture.d.ts +26 -0
  156. package/dist/board/cards/lecture.js +62 -0
  157. package/dist/board/cards/paint.d.ts +38 -0
  158. package/dist/board/cards/paint.js +85 -0
  159. package/dist/board/cards/photo.d.ts +15 -0
  160. package/dist/board/cards/photo.js +29 -0
  161. package/dist/board/cards/read.d.ts +8 -0
  162. package/dist/board/cards/read.js +18 -0
  163. package/dist/board/cards/text.d.ts +20 -0
  164. package/dist/board/cards/text.js +59 -0
  165. package/dist/board/cards/tianzige.d.ts +16 -0
  166. package/dist/board/cards/tianzige.js +64 -0
  167. package/dist/board/cards/tutor.d.ts +72 -0
  168. package/dist/board/cards/tutor.js +134 -0
  169. package/dist/board/cards/word.d.ts +20 -0
  170. package/dist/board/cards/word.js +76 -0
  171. package/dist/board/lecture.d.ts +100 -0
  172. package/dist/board/lecture.js +204 -0
  173. package/dist/board/paper.d.ts +20 -0
  174. package/dist/board/paper.js +76 -0
  175. package/dist/board/parse.d.ts +120 -0
  176. package/dist/board/parse.js +330 -0
  177. package/dist/board/presentation.d.ts +295 -0
  178. package/dist/board/presentation.js +615 -0
  179. package/dist/board/sections.d.ts +16 -0
  180. package/dist/board/sections.js +130 -0
  181. package/dist/brain/api-tools.d.ts +8 -0
  182. package/dist/brain/api-tools.js +190 -0
  183. package/dist/brain/api.d.ts +62 -0
  184. package/dist/brain/api.js +411 -0
  185. package/dist/brain/cli/adapters.d.ts +60 -0
  186. package/dist/brain/cli/adapters.js +91 -0
  187. package/dist/brain/cli/qwen.d.ts +11 -0
  188. package/dist/brain/cli/qwen.js +141 -0
  189. package/dist/brain/cli/run-plan.d.ts +59 -0
  190. package/dist/brain/cli/run-plan.js +71 -0
  191. package/dist/brain/cli/run.d.ts +35 -0
  192. package/dist/brain/cli/run.js +256 -0
  193. package/dist/brain/cli/stream-json.d.ts +18 -0
  194. package/dist/brain/cli/stream-json.js +86 -0
  195. package/dist/brain/cli/types.d.ts +144 -0
  196. package/dist/brain/cli/types.js +3 -0
  197. package/dist/brain/cli/warm.d.ts +53 -0
  198. package/dist/brain/cli/warm.js +103 -0
  199. package/dist/brain/index.d.ts +145 -0
  200. package/dist/brain/index.js +74 -0
  201. package/dist/brain/stream.d.ts +20 -0
  202. package/dist/brain/stream.js +70 -0
  203. package/dist/brain/transcript.d.ts +45 -0
  204. package/dist/brain/transcript.js +132 -0
  205. package/dist/chalk/actions.d.ts +37 -0
  206. package/dist/chalk/actions.js +69 -0
  207. package/dist/chalk/bundle.d.ts +26 -0
  208. package/dist/chalk/bundle.js +69 -0
  209. package/dist/chalk/check.d.ts +28 -0
  210. package/dist/chalk/check.js +291 -0
  211. package/dist/chalk/circle.d.ts +64 -0
  212. package/dist/chalk/circle.js +193 -0
  213. package/dist/chalk/clock.d.ts +84 -0
  214. package/dist/chalk/clock.js +84 -0
  215. package/dist/chalk/geometry.d.ts +44 -0
  216. package/dist/chalk/geometry.js +139 -0
  217. package/dist/chalk/glyphs/capitals.d.ts +12 -0
  218. package/dist/chalk/glyphs/capitals.js +264 -0
  219. package/dist/chalk/glyphs/index.d.ts +21 -0
  220. package/dist/chalk/glyphs/index.js +18 -0
  221. package/dist/chalk/glyphs/letters.d.ts +13 -0
  222. package/dist/chalk/glyphs/letters.js +280 -0
  223. package/dist/chalk/glyphs/metrics.d.ts +33 -0
  224. package/dist/chalk/glyphs/metrics.js +28 -0
  225. package/dist/chalk/glyphs/registry.d.ts +7 -0
  226. package/dist/chalk/glyphs/registry.js +8 -0
  227. package/dist/chalk/glyphs/sample.d.ts +32 -0
  228. package/dist/chalk/glyphs/sample.js +102 -0
  229. package/dist/chalk/glyphs/skeleton.d.ts +64 -0
  230. package/dist/chalk/glyphs/skeleton.js +126 -0
  231. package/dist/chalk/glyphs/types.d.ts +58 -0
  232. package/dist/chalk/glyphs/types.js +17 -0
  233. package/dist/chalk/index.d.ts +23 -0
  234. package/dist/chalk/index.js +15 -0
  235. package/dist/chalk/manifest.d.ts +41 -0
  236. package/dist/chalk/manifest.js +6 -0
  237. package/dist/chalk/paint.d.ts +180 -0
  238. package/dist/chalk/paint.js +210 -0
  239. package/dist/chalk/pointer.d.ts +8 -0
  240. package/dist/chalk/pointer.js +21 -0
  241. package/dist/chalk/prepare.d.ts +11 -0
  242. package/dist/chalk/prepare.js +15 -0
  243. package/dist/chalk/scene-schema.d.ts +199 -0
  244. package/dist/chalk/scene-schema.js +91 -0
  245. package/dist/chalk/seed.d.ts +3 -0
  246. package/dist/chalk/seed.js +10 -0
  247. package/dist/chalk/text-metrics.d.ts +8 -0
  248. package/dist/chalk/text-metrics.js +156 -0
  249. package/dist/chalk/timeline.d.ts +47 -0
  250. package/dist/chalk/timeline.js +84 -0
  251. package/dist/chalk/types.d.ts +150 -0
  252. package/dist/chalk/types.js +8 -0
  253. package/dist/lib/index.d.ts +14 -8
  254. package/dist/lib/index.js +14 -8
  255. package/dist/media/draw.d.ts +23 -0
  256. package/dist/media/draw.js +44 -0
  257. package/dist/media/mp3.d.ts +6 -0
  258. package/dist/media/mp3.js +58 -0
  259. package/dist/media/mp4.d.ts +1 -0
  260. package/dist/media/mp4.js +58 -0
  261. package/dist/media/tts-voices.d.ts +18 -0
  262. package/dist/media/tts-voices.js +606 -0
  263. package/dist/media/tts.d.ts +56 -0
  264. package/dist/media/tts.js +174 -0
  265. package/dist/media/vision.d.ts +25 -0
  266. package/dist/media/vision.js +71 -0
  267. package/dist/memory/commit.d.ts +67 -0
  268. package/dist/memory/commit.js +130 -0
  269. package/dist/memory/context.d.ts +86 -0
  270. package/dist/memory/context.js +97 -0
  271. package/dist/memory/diary.d.ts +84 -0
  272. package/dist/memory/diary.js +183 -0
  273. package/dist/memory/grade.d.ts +2 -0
  274. package/dist/memory/grade.js +7 -0
  275. package/dist/{lib → memory}/plan.d.ts +3 -1
  276. package/dist/{lib → memory}/plan.js +10 -1
  277. package/dist/memory/proposals.d.ts +11 -0
  278. package/dist/memory/proposals.js +43 -0
  279. package/dist/memory/retrieval.d.ts +44 -0
  280. package/dist/memory/retrieval.js +157 -0
  281. package/dist/memory/timetable.d.ts +19 -0
  282. package/dist/memory/timetable.js +95 -0
  283. package/dist/memory/vault-notes.d.ts +165 -0
  284. package/dist/memory/vault-notes.js +359 -0
  285. package/dist/memory/vault.d.ts +70 -0
  286. package/dist/memory/vault.js +169 -0
  287. package/dist/realtime/bailian.d.ts +120 -0
  288. package/dist/realtime/bailian.js +288 -0
  289. package/dist/realtime/cues.d.ts +51 -0
  290. package/dist/realtime/cues.js +94 -0
  291. package/dist/realtime/listen.d.ts +32 -0
  292. package/dist/realtime/listen.js +53 -0
  293. package/dist/realtime/preview.d.ts +23 -0
  294. package/dist/realtime/preview.js +38 -0
  295. package/dist/realtime/prompt.d.ts +8 -0
  296. package/dist/realtime/prompt.js +13 -0
  297. package/dist/realtime/voices.d.ts +19 -0
  298. package/dist/realtime/voices.js +71 -0
  299. package/dist/runtime/activities.d.ts +17 -0
  300. package/dist/runtime/activities.js +46 -0
  301. package/dist/runtime/activity-state.d.ts +22 -0
  302. package/dist/runtime/activity-state.js +83 -0
  303. package/dist/runtime/activity.d.ts +63 -0
  304. package/dist/runtime/activity.js +428 -0
  305. package/dist/runtime/agent-file.d.ts +24 -0
  306. package/dist/runtime/agent-file.js +59 -0
  307. package/dist/runtime/auto-bookkeep.d.ts +30 -0
  308. package/dist/runtime/auto-bookkeep.js +84 -0
  309. package/dist/{lib → runtime/context}/context-pack.d.ts +3 -3
  310. package/dist/runtime/context/context-pack.js +182 -0
  311. package/dist/runtime/context/thread-digest.d.ts +4 -0
  312. package/dist/runtime/context/thread-digest.js +35 -0
  313. package/dist/runtime/context/tutor-rules.d.ts +25 -0
  314. package/dist/runtime/context/tutor-rules.js +47 -0
  315. package/dist/runtime/delivery/delivery.d.ts +94 -0
  316. package/dist/runtime/delivery/delivery.js +145 -0
  317. package/dist/runtime/delivery/playback.d.ts +25 -0
  318. package/dist/runtime/delivery/playback.js +29 -0
  319. package/dist/runtime/delivery/player.d.ts +145 -0
  320. package/dist/runtime/delivery/player.js +221 -0
  321. package/dist/runtime/delivery/queue.d.ts +89 -0
  322. package/dist/runtime/delivery/queue.js +59 -0
  323. package/dist/runtime/home/edit.d.ts +39 -0
  324. package/dist/runtime/home/edit.js +132 -0
  325. package/dist/runtime/home/home.d.ts +180 -0
  326. package/dist/runtime/home/home.js +311 -0
  327. package/dist/runtime/home/store.d.ts +142 -0
  328. package/dist/runtime/home/store.js +440 -0
  329. package/dist/runtime/journal/conversation.d.ts +46 -0
  330. package/dist/runtime/journal/conversation.js +89 -0
  331. package/dist/runtime/journal/events.d.ts +27 -0
  332. package/dist/runtime/journal/events.js +136 -0
  333. package/dist/runtime/journal/kid-log.d.ts +105 -0
  334. package/dist/runtime/journal/kid-log.js +133 -0
  335. package/dist/runtime/journal/ledger.d.ts +17 -0
  336. package/dist/{lib → runtime/journal}/ledger.js +7 -32
  337. package/dist/runtime/journal/mix.d.ts +33 -0
  338. package/dist/runtime/journal/mix.js +88 -0
  339. package/dist/runtime/journal/mouth-index.d.ts +26 -0
  340. package/dist/runtime/journal/mouth-index.js +34 -0
  341. package/dist/runtime/journal/mouth.d.ts +54 -0
  342. package/dist/runtime/journal/mouth.js +102 -0
  343. package/dist/runtime/journal/recorder.d.ts +46 -0
  344. package/dist/runtime/journal/recorder.js +58 -0
  345. package/dist/runtime/journal/store.d.ts +123 -0
  346. package/dist/runtime/journal/store.js +316 -0
  347. package/dist/runtime/kid-input.d.ts +16 -0
  348. package/dist/runtime/kid-input.js +195 -0
  349. package/dist/runtime/kid-view.d.ts +124 -0
  350. package/dist/runtime/kid-view.js +157 -0
  351. package/dist/runtime/lecture.d.ts +86 -0
  352. package/dist/runtime/lecture.js +237 -0
  353. package/dist/runtime/live/call.d.ts +219 -0
  354. package/dist/runtime/live/call.js +1211 -0
  355. package/dist/runtime/live/turns.d.ts +48 -0
  356. package/dist/runtime/live/turns.js +102 -0
  357. package/dist/runtime/runner.d.ts +289 -0
  358. package/dist/runtime/runner.js +898 -0
  359. package/dist/runtime/talk-run.d.ts +21 -0
  360. package/dist/runtime/talk-run.js +34 -0
  361. package/dist/scenes/dictation/match.d.ts +57 -0
  362. package/dist/scenes/dictation/match.js +255 -0
  363. package/dist/scenes/dictation/recognize.d.ts +86 -0
  364. package/dist/scenes/dictation/recognize.js +163 -0
  365. package/dist/scenes/dictation/store.d.ts +112 -0
  366. package/dist/scenes/dictation/store.js +99 -0
  367. package/dist/scenes/look.d.ts +26 -0
  368. package/dist/scenes/look.js +1 -0
  369. package/dist/scenes/paint/painter.d.ts +84 -0
  370. package/dist/scenes/paint/painter.js +170 -0
  371. package/dist/scenes/paint/prompt.d.ts +23 -0
  372. package/dist/scenes/paint/prompt.js +36 -0
  373. package/dist/scenes/talk/en-words.d.ts +8 -0
  374. package/dist/scenes/talk/en-words.js +44 -0
  375. package/dist/scenes/talk/list.d.ts +44 -0
  376. package/dist/scenes/talk/list.js +88 -0
  377. package/dist/scenes/talk/store.d.ts +27 -0
  378. package/dist/scenes/talk/store.js +61 -0
  379. package/dist/scenes/talk/warmup.d.ts +16 -0
  380. package/dist/scenes/talk/warmup.js +39 -0
  381. package/dist/schema/activity.d.ts +149 -0
  382. package/dist/schema/activity.js +113 -0
  383. package/dist/schema/board.d.ts +200 -0
  384. package/dist/schema/board.js +42 -0
  385. package/dist/schema/config.d.ts +353 -80
  386. package/dist/schema/config.js +293 -76
  387. package/dist/schema/context-pack.d.ts +82 -13
  388. package/dist/schema/context-pack.js +97 -10
  389. package/dist/schema/conversation-files.d.ts +43 -0
  390. package/dist/schema/conversation-files.js +26 -0
  391. package/dist/schema/conversation.d.ts +459 -13
  392. package/dist/schema/conversation.js +148 -8
  393. package/dist/schema/events.d.ts +138 -0
  394. package/dist/schema/events.js +1 -0
  395. package/dist/schema/home.d.ts +46 -0
  396. package/dist/schema/home.js +30 -0
  397. package/dist/schema/index.d.ts +19 -4
  398. package/dist/schema/index.js +19 -4
  399. package/dist/schema/json-schema.d.ts +2 -0
  400. package/dist/schema/json-schema.js +23 -0
  401. package/dist/schema/kid-device.d.ts +20 -0
  402. package/dist/schema/kid-device.js +32 -0
  403. package/dist/schema/ledger.d.ts +9 -64
  404. package/dist/schema/ledger.js +7 -31
  405. package/dist/schema/memory.d.ts +73 -0
  406. package/dist/schema/memory.js +47 -0
  407. package/dist/schema/plan.d.ts +2 -2
  408. package/dist/schema/plan.js +2 -2
  409. package/dist/schema/sections.d.ts +32 -25
  410. package/dist/schema/sections.js +21 -22
  411. package/dist/schema/theme.d.ts +25 -0
  412. package/dist/schema/theme.js +26 -0
  413. package/dist/schema/timetable.d.ts +26 -0
  414. package/dist/schema/timetable.js +18 -0
  415. package/dist/schema/workspace.d.ts +41 -0
  416. package/dist/schema/workspace.js +9 -0
  417. package/dist/shared/errors.d.ts +8 -0
  418. package/dist/shared/errors.js +13 -0
  419. package/dist/shared/home.d.ts +2 -0
  420. package/dist/shared/home.js +16 -0
  421. package/dist/shared/human-notes.d.ts +5 -0
  422. package/dist/shared/human-notes.js +7 -0
  423. package/dist/shared/qianwen.d.ts +50 -0
  424. package/dist/shared/qianwen.js +109 -0
  425. package/dist/shared/time.d.ts +9 -0
  426. package/dist/shared/time.js +22 -0
  427. package/dist/shared/tokens.d.ts +18 -0
  428. package/dist/shared/tokens.js +11 -0
  429. package/dist/shared/wav.d.ts +10 -0
  430. package/dist/shared/wav.js +50 -0
  431. package/dist/stage/Assistant-Bold-ZDZZ6JHA.woff2 +0 -0
  432. package/dist/stage/Assistant-Medium-DZ25RZU3.woff2 +0 -0
  433. package/dist/stage/Assistant-Regular-PLF2XOGW.woff2 +0 -0
  434. package/dist/stage/Assistant-SemiBold-CZ5MX6FK.woff2 +0 -0
  435. package/dist/stage/chunk-226TNLQA.js +129 -0
  436. package/dist/stage/chunk-24LGQEKE.js +1 -0
  437. package/dist/stage/chunk-25XV6UY3.js +10 -0
  438. package/dist/stage/chunk-2AZI3NHJ.js +1 -0
  439. package/dist/stage/chunk-2BQZTTBE.js +1 -0
  440. package/dist/stage/chunk-2M7CGY3Y.js +11 -0
  441. package/dist/stage/chunk-2VR4WFQ7.js +10 -0
  442. package/dist/stage/chunk-2ZYXBUWG.js +9 -0
  443. package/dist/stage/chunk-32LAWMGY.js +1 -0
  444. package/dist/stage/chunk-3LEMTSOO.js +11 -0
  445. package/dist/stage/chunk-3QCKGZYE.js +32 -0
  446. package/dist/stage/chunk-44P66WFA.js +1 -0
  447. package/dist/stage/chunk-4AM6FRR6.js +7 -0
  448. package/dist/stage/chunk-4QDE4SUK.js +1 -0
  449. package/dist/stage/chunk-4QESHV3U.js +1 -0
  450. package/dist/stage/chunk-4SG5QPHB.js +2 -0
  451. package/dist/stage/chunk-4T4UVCOC.js +1 -0
  452. package/dist/stage/chunk-4WUEPPG3.js +34 -0
  453. package/dist/stage/chunk-4YCN6UZ5.js +99 -0
  454. package/dist/stage/chunk-5V7ZY2AP.js +1 -0
  455. package/dist/stage/chunk-5VS5Y2VJ.js +6 -0
  456. package/dist/stage/chunk-5W4NO2ZD.js +62 -0
  457. package/dist/stage/chunk-65CRNICM.js +1 -0
  458. package/dist/stage/chunk-66MULO7F.js +5 -0
  459. package/dist/stage/chunk-6COFQTBS.js +162 -0
  460. package/dist/stage/chunk-6VZG3M3I.js +8 -0
  461. package/dist/stage/chunk-7HVDH43T.js +1 -0
  462. package/dist/stage/chunk-7JLJN4EZ.js +8 -0
  463. package/dist/stage/chunk-7QDSP4LN.js +1 -0
  464. package/dist/stage/chunk-7R6OQAO3.js +1 -0
  465. package/dist/stage/chunk-7VTTHZKW.js +7 -0
  466. package/dist/stage/chunk-ATHR5KEN.js +10 -0
  467. package/dist/stage/chunk-B6R5LTP2.js +36 -0
  468. package/dist/stage/chunk-BD4WE264.js +1 -0
  469. package/dist/stage/chunk-BONANU47.js +206 -0
  470. package/dist/stage/chunk-BTVW7OFK.js +89 -0
  471. package/dist/stage/chunk-BUTJIDHG.js +8 -0
  472. package/dist/stage/chunk-C2IPYMML.js +84 -0
  473. package/dist/stage/chunk-C54FTPPV.js +9 -0
  474. package/dist/stage/chunk-C6LOUF2Z.js +90 -0
  475. package/dist/stage/chunk-CFF3PILO.js +339 -0
  476. package/dist/stage/chunk-CI2FQ2JY.js +9 -0
  477. package/dist/stage/chunk-CW5O4RV7.js +12 -0
  478. package/dist/stage/chunk-CYABNQYD.js +1 -0
  479. package/dist/stage/chunk-D7FFA4NS.js +15 -0
  480. package/dist/stage/chunk-DUNNXU6Z.js +8 -0
  481. package/dist/stage/chunk-E3E4Q6JF.js +6 -0
  482. package/dist/stage/chunk-EB3U3LH7.js +9 -0
  483. package/dist/stage/chunk-EGSZ736B.js +8 -0
  484. package/dist/stage/chunk-EOBXW5VQ.js +2 -0
  485. package/dist/stage/chunk-ERZC3B7Y.js +11 -0
  486. package/dist/stage/chunk-ESDOOBIH.js +11 -0
  487. package/dist/stage/chunk-EVU4QAL4.js +178 -0
  488. package/dist/stage/chunk-EVVZI2NY.js +39 -0
  489. package/dist/stage/chunk-FBKAZUKD.js +39 -0
  490. package/dist/stage/chunk-FDVKYQJN.js +1 -0
  491. package/dist/stage/chunk-FGPVYHVR.js +5 -0
  492. package/dist/stage/chunk-FHUD4AZC.js +1 -0
  493. package/dist/stage/chunk-FKUJ2DMY.js +96 -0
  494. package/dist/stage/chunk-FNZGVIJV.js +1 -0
  495. package/dist/stage/chunk-GBYSEGYM.js +78 -0
  496. package/dist/stage/chunk-GCO4TDHX.js +1 -0
  497. package/dist/stage/chunk-GKTML2LG.js +10 -0
  498. package/dist/stage/chunk-GMDIHHXQ.js +11 -0
  499. package/dist/stage/chunk-GOUNACI3.js +10 -0
  500. package/dist/stage/chunk-GXAYATPF.js +3 -0
  501. package/dist/stage/chunk-H2K2DDXV.js +8 -0
  502. package/dist/stage/chunk-H3UJI6ZY.js +13 -0
  503. package/dist/stage/chunk-H6PUGCME.js +7 -0
  504. package/dist/stage/chunk-HNBUIMIG.js +1 -0
  505. package/dist/stage/chunk-HRZY2BJQ.js +10 -0
  506. package/dist/stage/chunk-HSPJGALW.js +30 -0
  507. package/dist/stage/chunk-IBYORHIP.js +25 -0
  508. package/dist/stage/chunk-IHF4EWTY.js +1 -0
  509. package/dist/stage/chunk-ISBRPNKI.js +1 -0
  510. package/dist/stage/chunk-IZ3OI3C2.js +2 -0
  511. package/dist/stage/chunk-JEFZAC2R.js +1 -0
  512. package/dist/stage/chunk-JFIGRDPO.js +1 -0
  513. package/dist/stage/chunk-JFVYBOOC.js +9 -0
  514. package/dist/stage/chunk-JGD4TUTQ.js +1 -0
  515. package/dist/stage/chunk-JO4BEHDH.js +4 -0
  516. package/dist/stage/chunk-JOWBS42C.js +1 -0
  517. package/dist/stage/chunk-JP3TM2TG.js +1 -0
  518. package/dist/stage/chunk-JVK2C52O.js +1 -0
  519. package/dist/stage/chunk-K4I76XBX.js +14 -0
  520. package/dist/stage/chunk-KA6CZZ4M.js +1 -0
  521. package/dist/stage/chunk-KESSJ36M.js +1 -0
  522. package/dist/stage/chunk-LKATEVRU.js +1 -0
  523. package/dist/stage/chunk-LS4EJ2EI.js +1 -0
  524. package/dist/stage/chunk-LUKJQC2X.js +70 -0
  525. package/dist/stage/chunk-LWULR3SM.js +1 -0
  526. package/dist/stage/chunk-LWVRFMKX.js +2 -0
  527. package/dist/stage/chunk-LXC4ZBPZ.js +1 -0
  528. package/dist/stage/chunk-M2UP255H.js +1 -0
  529. package/dist/stage/chunk-MAPPXUZQ.js +231 -0
  530. package/dist/stage/chunk-MBMPW7Z5.js +1 -0
  531. package/dist/stage/chunk-MD3HMMTK.js +1 -0
  532. package/dist/stage/chunk-MLPCUIKR.js +17 -0
  533. package/dist/stage/chunk-MNQIRPDQ.js +8 -0
  534. package/dist/stage/chunk-MRG7MJVS.js +1 -0
  535. package/dist/stage/chunk-MU6EXW72.js +10 -0
  536. package/dist/stage/chunk-MVU2X6LU.js +4 -0
  537. package/dist/stage/chunk-N6UA5CZV.js +36 -0
  538. package/dist/stage/chunk-NLZIT2TJ.js +7 -0
  539. package/dist/stage/chunk-NOJR3J7M.js +1 -0
  540. package/dist/stage/chunk-NT7ARDOL.js +1 -0
  541. package/dist/stage/chunk-NWOGMPZH.js +1 -0
  542. package/dist/stage/chunk-NXE4KMG3.js +40 -0
  543. package/dist/stage/chunk-O4YCZXD2.js +257 -0
  544. package/dist/stage/chunk-OAJZ7HLK.js +1 -0
  545. package/dist/stage/chunk-OCFCFASO.js +1 -0
  546. package/dist/stage/chunk-ODGPG5RY.js +7 -0
  547. package/dist/stage/chunk-ODUEA52Q.js +3 -0
  548. package/dist/stage/chunk-OGDJ3FCI.js +1 -0
  549. package/dist/stage/chunk-OLDJ55TT.js +1 -0
  550. package/dist/stage/chunk-OOCL4ATI.js +2 -0
  551. package/dist/stage/chunk-OQEFDUDV.js +1 -0
  552. package/dist/stage/chunk-OQWVEWG7.js +4 -0
  553. package/dist/stage/chunk-OUIX6BGK.js +1 -0
  554. package/dist/stage/chunk-OV7OZYUO.js +7 -0
  555. package/dist/stage/chunk-PFGDY33O.js +1 -0
  556. package/dist/stage/chunk-PFJDUJB3.js +139 -0
  557. package/dist/stage/chunk-PGEW76ER.js +1 -0
  558. package/dist/stage/chunk-PP76TAQX.js +32 -0
  559. package/dist/stage/chunk-PTBOP4OT.js +2 -0
  560. package/dist/stage/chunk-PX2RVHCK.js +1 -0
  561. package/dist/stage/chunk-Q7K3PNAD.js +1 -0
  562. package/dist/stage/chunk-QDDPLZDB.js +1 -0
  563. package/dist/stage/chunk-QLGLZ77F.js +1 -0
  564. package/dist/stage/chunk-QOPFDFHI.js +1 -0
  565. package/dist/stage/chunk-QXT4KAEJ.js +1 -0
  566. package/dist/stage/chunk-R4YVZCIT.js +1 -0
  567. package/dist/stage/chunk-R6P6EHWA.js +62 -0
  568. package/dist/stage/chunk-RCH3OXBI.js +9 -0
  569. package/dist/stage/chunk-RHPE44I2.js +1 -0
  570. package/dist/stage/chunk-RJ2R4FVC.js +1 -0
  571. package/dist/stage/chunk-RJH2YVTD.js +1 -0
  572. package/dist/stage/chunk-RLWWW5OB.js +6 -0
  573. package/dist/stage/chunk-S3WO35Z7.js +120 -0
  574. package/dist/stage/chunk-S7ZGX6MW.js +1 -0
  575. package/dist/stage/chunk-SIAWX27B.js +1 -0
  576. package/dist/stage/chunk-SLG4X622.js +1 -0
  577. package/dist/stage/chunk-SLJRBC77.js +168 -0
  578. package/dist/stage/chunk-SRORWQJZ.js +1 -0
  579. package/dist/stage/chunk-STZTUIIF.js +2 -0
  580. package/dist/stage/chunk-SVQ6MWNV.js +9 -0
  581. package/dist/stage/chunk-TL3HLL2S.js +132 -0
  582. package/dist/stage/chunk-U3DOE6SF.js +24 -0
  583. package/dist/stage/chunk-UABQIZKW.js +6 -0
  584. package/dist/stage/chunk-UDK3R764.js +1 -0
  585. package/dist/stage/chunk-UFF4E54B.js +41 -0
  586. package/dist/stage/chunk-UFP5Q4AY.js +1 -0
  587. package/dist/stage/chunk-UMH2TSW2.js +72 -0
  588. package/dist/stage/chunk-UTASVNF5.js +10 -0
  589. package/dist/stage/chunk-UW7ML5ML.js +88 -0
  590. package/dist/stage/chunk-V3J7F6OP.js +1 -0
  591. package/dist/stage/chunk-VEHP5B5Q.js +5 -0
  592. package/dist/stage/chunk-VRXWB733.js +9 -0
  593. package/dist/stage/chunk-VVDHBBS5.js +5 -0
  594. package/dist/stage/chunk-VYFOH6FU.js +106 -0
  595. package/dist/stage/chunk-W3VZTLQS.js +3 -0
  596. package/dist/stage/chunk-W7WNRWTZ.js +8 -0
  597. package/dist/stage/chunk-WHUCV53C.js +1 -0
  598. package/dist/stage/chunk-WULMYHIF.js +1 -0
  599. package/dist/stage/chunk-X54EX7AW.js +9 -0
  600. package/dist/stage/chunk-X565ISZM.js +1 -0
  601. package/dist/stage/chunk-XGZMDECB.js +1 -0
  602. package/dist/stage/chunk-XHONC4RF.js +172 -0
  603. package/dist/stage/chunk-XIK4XQ6E.js +24 -0
  604. package/dist/stage/chunk-XJQQWFTE.js +1 -0
  605. package/dist/stage/chunk-XM4WOU3I.js +13 -0
  606. package/dist/stage/chunk-XM7Y5HP5.js +38 -0
  607. package/dist/stage/chunk-XNYYRGD5.js +292 -0
  608. package/dist/stage/chunk-XOYVR3SV.js +1 -0
  609. package/dist/stage/chunk-XQIW5HCE.js +1 -0
  610. package/dist/stage/chunk-YEWL7FUW.js +8 -0
  611. package/dist/stage/chunk-YI55PY3V.js +1 -0
  612. package/dist/stage/chunk-YM63HI6W.js +1 -0
  613. package/dist/stage/chunk-YNLGLU4P.js +9 -0
  614. package/dist/stage/chunk-YTNMNOWP.js +1 -0
  615. package/dist/stage/chunk-YV62XKTC.js +1 -0
  616. package/dist/stage/chunk-YVBA3QW6.js +1 -0
  617. package/dist/stage/chunk-Z2SY2HOC.js +1 -0
  618. package/dist/stage/chunk-ZBTCQEBK.js +10 -0
  619. package/dist/stage/chunk-ZCUFN74D.js +1 -0
  620. package/dist/stage/chunk-ZHOULXEJ.js +11 -0
  621. package/dist/stage/chunk-ZTRZIET2.js +1 -0
  622. package/dist/stage/index.html +11 -0
  623. package/dist/stage/stage.css +1 -0
  624. package/dist/stage/stage.js +1 -0
  625. package/dist/ui/dev/dev-page.d.ts +1 -0
  626. package/dist/ui/dev/dev-page.js +2248 -0
  627. package/dist/ui/dev/dev-theme.d.ts +6 -0
  628. package/dist/ui/dev/dev-theme.js +67 -0
  629. package/dist/ui/dev/qr-page.d.ts +8 -0
  630. package/dist/ui/dev/qr-page.js +61 -0
  631. package/dist/ui/dev/voice-gallery-page.d.ts +1 -0
  632. package/dist/ui/dev/voice-gallery-page.js +121 -0
  633. package/dist/ui/dev/voice-scenes.d.ts +21 -0
  634. package/dist/ui/dev/voice-scenes.js +30 -0
  635. package/dist/ui/dictation/en-box.d.ts +2 -0
  636. package/dist/ui/dictation/en-box.js +86 -0
  637. package/dist/ui/dictation/en-page.d.ts +1 -0
  638. package/dist/ui/dictation/en-page.js +484 -0
  639. package/dist/ui/dictation/page.d.ts +1 -0
  640. package/dist/ui/dictation/page.js +1084 -0
  641. package/dist/ui/dictation/parent-page.d.ts +1 -0
  642. package/dist/ui/dictation/parent-page.js +234 -0
  643. package/dist/ui/dictation/reel-mode.d.ts +1 -0
  644. package/dist/ui/dictation/reel-mode.js +87 -0
  645. package/dist/ui/dictation/reel-page.d.ts +1 -0
  646. package/dist/ui/dictation/reel-page.js +62 -0
  647. package/dist/ui/dictation/reel.d.ts +163 -0
  648. package/dist/ui/dictation/reel.js +436 -0
  649. package/dist/ui/dictation/ui.d.ts +44 -0
  650. package/dist/ui/dictation/ui.js +80 -0
  651. package/dist/ui/dictation/unlock.d.ts +7 -0
  652. package/dist/ui/dictation/unlock.js +16 -0
  653. package/dist/ui/kid/audio-client.d.ts +11 -0
  654. package/dist/ui/kid/audio-client.js +74 -0
  655. package/dist/ui/kid/board-mark-art.d.ts +37 -0
  656. package/dist/ui/kid/board-mark-art.js +5 -0
  657. package/dist/ui/kid/board-mark.d.ts +24 -0
  658. package/dist/ui/kid/board-mark.js +58 -0
  659. package/dist/ui/kid/kid-log.d.ts +15 -0
  660. package/dist/ui/kid/kid-log.js +87 -0
  661. package/dist/ui/kid/kid-nav.d.ts +11 -0
  662. package/dist/ui/kid/kid-nav.js +22 -0
  663. package/dist/ui/kid/kid-page.d.ts +9 -0
  664. package/dist/ui/kid/kid-page.js +3719 -0
  665. package/dist/ui/kid/letters.d.ts +26 -0
  666. package/dist/ui/kid/letters.js +51 -0
  667. package/dist/ui/kid/photo-edit.d.ts +83 -0
  668. package/dist/ui/kid/photo-edit.js +106 -0
  669. package/dist/ui/kid/photo-ui.d.ts +23 -0
  670. package/dist/ui/kid/photo-ui.js +60 -0
  671. package/dist/ui/kid/reel.d.ts +419 -0
  672. package/dist/ui/kid/reel.js +648 -0
  673. package/dist/ui/kid/tianzige.d.ts +8 -0
  674. package/dist/ui/kid/tianzige.js +45 -0
  675. package/dist/ui/kid/tutor-face.d.ts +35 -0
  676. package/dist/ui/kid/tutor-face.js +84 -0
  677. package/dist/ui/kid/voice-ui.d.ts +70 -0
  678. package/dist/ui/kid/voice-ui.js +316 -0
  679. package/dist/ui/kid/voice-view.d.ts +71 -0
  680. package/dist/ui/kid/voice-view.js +75 -0
  681. package/dist/ui/kid/word-draw.d.ts +2 -0
  682. package/dist/ui/kid/word-draw.js +107 -0
  683. package/dist/ui/kid/word-emoji.d.ts +10 -0
  684. package/dist/ui/kid/word-emoji.js +66 -0
  685. package/dist/ui/kid/word-layout.d.ts +25 -0
  686. package/dist/ui/kid/word-layout.js +29 -0
  687. package/dist/ui/parent/parent-home-page.d.ts +1 -0
  688. package/dist/ui/parent/parent-home-page.js +414 -0
  689. package/dist/ui/parent/parent-page.d.ts +2 -0
  690. package/dist/ui/parent/parent-page.js +507 -0
  691. package/dist/ui/shared/brand.d.ts +36 -0
  692. package/dist/ui/shared/brand.js +51 -0
  693. package/dist/ui/shared/favicon.d.ts +12 -0
  694. package/dist/ui/shared/favicon.js +96 -0
  695. package/dist/ui/shared/icon.d.ts +9 -0
  696. package/dist/ui/shared/icon.js +35 -0
  697. package/dist/ui/shared/inline-lib.d.ts +1 -0
  698. package/dist/ui/shared/inline-lib.js +28 -0
  699. package/dist/ui/shared/logo.d.ts +31 -0
  700. package/dist/ui/shared/logo.js +43 -0
  701. package/dist/ui/shared/page-dom.d.ts +12 -0
  702. package/dist/ui/shared/page-dom.js +36 -0
  703. package/dist/ui/shared/png.d.ts +1 -0
  704. package/dist/ui/shared/png.js +45 -0
  705. package/dist/ui/shared/qr-svg.d.ts +3 -0
  706. package/dist/ui/shared/qr-svg.js +32 -0
  707. package/dist/ui/shared/qr.d.ts +14 -0
  708. package/dist/ui/shared/qr.js +281 -0
  709. package/dist/ui/shared/reel-dock.d.ts +22 -0
  710. package/dist/ui/shared/reel-dock.js +365 -0
  711. package/dist/ui/shared/tutor-color.d.ts +15 -0
  712. package/dist/ui/shared/tutor-color.js +47 -0
  713. package/dist/ui/talk/page.d.ts +6 -0
  714. package/dist/ui/talk/page.js +294 -0
  715. package/grades/grade-2/README.md +11 -0
  716. package/grades/grade-2/VALIDATION.md +41 -0
  717. package/grades/grade-2/agents/chinese-tutor/activities//344/275/240/350/257/264/346/210/221/347/224/273.md +157 -0
  718. package/grades/grade-2/agents/chinese-tutor/activities//344/275/240/350/257/264/346/210/221/347/224/273./344/276/213/345/255/220.md +78 -0
  719. package/grades/grade-2/agents/chinese-tutor/activities//344/276/213/345/255/220/345/233/276//345/200/237/344/274/236.jpg +0 -0
  720. package/grades/grade-2/agents/chinese-tutor/activities//344/276/213/345/255/220/345/233/276//345/260/217/347/214/264/346/221/230/346/241/203.jpg +0 -0
  721. package/grades/grade-2/agents/chinese-tutor/activities//345/206/231/350/257/235.md +64 -0
  722. package/grades/grade-2/agents/chinese-tutor/activities//345/206/231/350/257/235./344/276/213/345/255/220.md +31 -0
  723. package/grades/grade-2/agents/chinese-tutor/activities//345/220/254/345/206/231.md +48 -0
  724. package/grades/grade-2/agents/chinese-tutor/activities//345/244/215/344/271/240.md +79 -0
  725. package/grades/grade-2/agents/chinese-tutor/activities//345/244/215/344/271/240./344/276/213/345/255/220.md +35 -0
  726. package/grades/grade-2/agents/chinese-tutor/activities//345/260/217/350/257/276/345/240/202.md +53 -0
  727. package/grades/grade-2/agents/chinese-tutor/activities//346/211/271/346/224/271.md +81 -0
  728. package/grades/grade-2/agents/chinese-tutor/activities//346/211/271/346/224/271./344/276/213/345/255/220.md +35 -0
  729. package/grades/grade-2/agents/chinese-tutor/activities//347/234/213/345/233/276/350/257/264/350/257/235.md +94 -0
  730. package/grades/grade-2/agents/chinese-tutor/activities//347/234/213/345/233/276/350/257/264/350/257/235./344/276/213/345/255/220.md +63 -0
  731. package/grades/grade-2/agents/chinese-tutor/activities//351/242/204/344/271/240.md +82 -0
  732. package/grades/grade-2/agents/chinese-tutor/activities//351/242/204/344/271/240./344/276/213/345/255/220.md +35 -0
  733. package/grades/grade-2/agents/chinese-tutor.md +59 -0
  734. package/grades/grade-2/agents/english-tutor/activities//345/217/243/350/257/255/350/257/276.md +149 -0
  735. package/grades/grade-2/agents/english-tutor/activities//345/217/243/350/257/255/350/257/276./344/276/213/345/255/220.md +13 -0
  736. package/grades/grade-2/agents/english-tutor/activities//345/220/254/345/206/231.md +47 -0
  737. package/grades/grade-2/agents/english-tutor/activities//345/244/215/344/271/240.md +78 -0
  738. package/grades/grade-2/agents/english-tutor/activities//345/244/215/344/271/240./344/276/213/345/255/220.md +35 -0
  739. package/grades/grade-2/agents/english-tutor/activities//345/260/217/350/257/276/345/240/202.md +53 -0
  740. package/grades/grade-2/agents/english-tutor/activities//346/211/271/346/224/271.md +80 -0
  741. package/grades/grade-2/agents/english-tutor/activities//346/211/271/346/224/271./344/276/213/345/255/220.md +35 -0
  742. package/grades/grade-2/agents/english-tutor/activities//351/242/204/344/271/240.md +86 -0
  743. package/grades/grade-2/agents/english-tutor/activities//351/242/204/344/271/240./344/276/213/345/255/220.md +35 -0
  744. package/grades/grade-2/agents/english-tutor.md +57 -0
  745. package/grades/grade-2/agents/math-tutor/activities//345/244/215/344/271/240.md +78 -0
  746. package/grades/grade-2/agents/math-tutor/activities//345/244/215/344/271/240./344/276/213/345/255/220.md +35 -0
  747. package/grades/grade-2/agents/math-tutor/activities//345/260/217/350/257/276/345/240/202.md +56 -0
  748. package/grades/grade-2/agents/math-tutor/activities//345/260/217/350/257/276/345/240/202./344/276/213/345/255/220.md +52 -0
  749. package/grades/grade-2/agents/math-tutor/activities//346/211/271/346/224/271.md +80 -0
  750. package/grades/grade-2/agents/math-tutor/activities//346/211/271/346/224/271./344/276/213/345/255/220.md +35 -0
  751. package/grades/grade-2/agents/math-tutor/activities//351/242/204/344/271/240.md +81 -0
  752. package/grades/grade-2/agents/math-tutor/activities//351/242/204/344/271/240./344/276/213/345/255/220.md +35 -0
  753. package/grades/grade-2/agents/math-tutor.md +51 -0
  754. package/grades/grade-2/examples/2026-10-27-pingjunfen/audio/index.json +44 -0
  755. package/grades/grade-2/examples/2026-10-27-pingjunfen/audio/step-1.mp3 +0 -0
  756. package/grades/grade-2/examples/2026-10-27-pingjunfen/audio/step-2.mp3 +0 -0
  757. package/grades/grade-2/examples/2026-10-27-pingjunfen/audio/step-3.mp3 +0 -0
  758. package/grades/grade-2/examples/2026-10-27-pingjunfen/audio/step-4.mp3 +0 -0
  759. package/grades/grade-2/examples/2026-10-27-pingjunfen/audio/step-5.mp3 +0 -0
  760. package/grades/grade-2/examples/2026-10-27-pingjunfen/bake.json +1 -0
  761. package/grades/grade-2/examples/2026-10-27-pingjunfen/manifest.json +63 -0
  762. package/grades/grade-2/examples/2026-10-27-pingjunfen/scene.json +247 -0
  763. package/grades/grade-2/examples/2026-10-27-pingjunfen.md +40 -0
  764. package/grades/grade-2/examples/2026-10-27-pingjunfen.ts +26 -0
  765. package/grades/grade-2/examples//345/271/263/345/235/207/345/210/206./344/276/213/345/255/220.md +24 -0
  766. package/grades/grade-2/examples//346/225/260/345/255/246/345/271/263/345/235/207/345/210/206.md +42 -0
  767. package/grades/grade-2/validation/2026-10-27.json +4410 -0
  768. package/package.json +32 -12
  769. package/skills/chalk-cli/SKILL.md +62 -0
  770. package/skills/chalk-scene/SKILL.md +91 -0
  771. package/skills/chalk-teaching/SKILL.md +82 -0
  772. package/skills/chalk-teaching/models//344/272/244/351/224/231/346/225/260/345/210/227/345/210/206/350/241/214.md +8 -0
  773. package/skills/chalk-teaching/models//345/207/221/345/215/201.md +7 -0
  774. package/skills/chalk-teaching/models//345/221/250/346/234/237/350/247/204/345/276/213.md +6 -0
  775. package/skills/chalk-teaching/models//345/256/236/347/211/251/345/233/276-/345/242/236/345/207/217.md +6 -0
  776. package/skills/chalk-teaching/models//345/256/236/347/211/251/345/233/276-/346/257/224/345/244/232/345/260/221-/346/261/202/345/244/247/346/225/260/346/261/202/345/260/217/346/225/260.md +7 -0
  777. package/skills/chalk-teaching/models//345/256/236/347/211/251/345/233/276-/346/257/224/345/244/232/345/260/221-/346/261/202/345/267/256.md +6 -0
  778. package/skills/chalk-teaching/models//345/260/217/346/243/222/350/277/233/344/275/215/345/212/240.md +7 -0
  779. package/skills/chalk-teaching/models//345/260/217/346/243/222/351/200/200/344/275/215/345/207/217.md +6 -0
  780. package/skills/chalk-teaching/models//346/216/222/351/230/237/347/202/271/351/230/265.md +7 -0
  781. package/skills/chalk-teaching/models//346/227/266/351/227/264/346/225/260/350/275/264.md +6 -0
  782. package/skills/chalk-teaching/models//346/245/274/345/261/202/351/227/264/351/232/224/345/233/276.md +7 -0
  783. package/skills/chalk-teaching/models//347/240/264/345/215/201.md +7 -0
  784. package/skills/chalk-teaching/models//347/253/226/345/274/217/351/200/200/344/275/215.md +6 -0
  785. package/skills/chalk-teaching/models//347/272/277/346/256/265/345/233/276.md +7 -0
  786. package/skills/chalk-teaching/models-index.md +24 -0
  787. package/skills/chalk-teaching/references//350/256/262/350/247/243/346/250/241/346/235/277/344/270/211/346/241/243.md +32 -0
  788. package/skills/chalk-teaching/references//350/257/264/346/230/216/346/226/207/344/273/266.md +102 -0
  789. package/skills/chalk-verify/SKILL.md +57 -0
  790. package/skills/chalk-verify/references//350/257/204/345/210/244/346/240/207/345/207/206.md +69 -0
  791. package/skills/cotutor-analyze/SKILL.md +106 -0
  792. package/skills/cotutor-analyze/references//345/221/275/344/273/244/344/270/216/346/226/207/344/273/266.md +31 -0
  793. package/skills/cotutor-board/SKILL.md +373 -0
  794. package/skills/cotutor-board/references/README.md +38 -0
  795. package/skills/cotutor-board/references/canvas.md +68 -0
  796. package/skills/cotutor-board/references/choice.md +55 -0
  797. package/skills/cotutor-board/references/code.md +46 -0
  798. package/skills/cotutor-board/references/image.md +52 -0
  799. package/skills/cotutor-board/references/lecture.md +69 -0
  800. package/skills/cotutor-board/references/paint.md +77 -0
  801. package/skills/cotutor-board/references/photo.md +61 -0
  802. package/skills/cotutor-board/references/read.md +51 -0
  803. package/skills/cotutor-board/references/text.md +69 -0
  804. package/skills/cotutor-board/references/tianzige.md +78 -0
  805. package/skills/cotutor-board/references/word.md +91 -0
  806. package/skills/cotutor-home/SKILL.md +169 -0
  807. package/skills/cotutor-home/references/dictation.md +97 -0
  808. package/skills/cotutor-home/references/tutor.md +148 -0
  809. package/skills/cotutor-home/references//345/221/275/344/273/244.md +21 -0
  810. package/skills/cotutor-home/references//351/246/226/351/241/265/350/257/255/346/263/225.md +142 -0
  811. package/skills/cotutor-tune/SKILL.md +147 -0
  812. package/skills/cotutor-tune/references//345/255/227/346/256/265.md +50 -0
  813. package/skills/cotutor-tutor/SKILL.md +261 -0
  814. package/skills/cotutor-tutor/references//344/270/212/344/270/213/346/226/207/345/214/205.md +78 -0
  815. package/themes/default/kid.css +86 -0
  816. package/themes/default/theme.json +26 -0
  817. package/agents/chinese-teacher.md +0 -19
  818. package/agents/homework-aide.md +0 -17
  819. package/agents/math-teacher.md +0 -19
  820. package/agents/planner.md +0 -18
  821. package/agents/reading-teacher.md +0 -19
  822. package/dist/cli/doctor.d.ts +0 -19
  823. package/dist/cli/doctor.js +0 -190
  824. package/dist/cli/init.js +0 -114
  825. package/dist/cli/main.js +0 -123
  826. package/dist/cli/serve.d.ts +0 -19
  827. package/dist/cli/serve.js +0 -22
  828. package/dist/cli/skeleton.d.ts +0 -21
  829. package/dist/cli/skeleton.js +0 -82
  830. package/dist/cli/workspace.d.ts +0 -61
  831. package/dist/lib/agent-file.d.ts +0 -10
  832. package/dist/lib/agent-file.js +0 -16
  833. package/dist/lib/context-pack.js +0 -46
  834. package/dist/lib/conversation.d.ts +0 -28
  835. package/dist/lib/conversation.js +0 -44
  836. package/dist/lib/kid-view.d.ts +0 -26
  837. package/dist/lib/kid-view.js +0 -38
  838. package/dist/lib/ledger.d.ts +0 -21
  839. package/dist/lib/sections.d.ts +0 -12
  840. package/dist/lib/sections.js +0 -151
  841. package/dist/lib/transcript.d.ts +0 -36
  842. package/dist/lib/transcript.js +0 -95
  843. package/dist/server/app.d.ts +0 -13
  844. package/dist/server/app.js +0 -45
  845. /package/dist/{cli → app/cli}/main.d.ts +0 -0
@@ -0,0 +1,3 @@
1
+ import{a as V}from"./chunk-UFP5Q4AY.js";import{a as j}from"./chunk-ODUEA52Q.js";import"./chunk-RHPE44I2.js";import"./chunk-BD4WE264.js";import"./chunk-JOWBS42C.js";import"./chunk-OAJZ7HLK.js";import"./chunk-OCFCFASO.js";import"./chunk-LWULR3SM.js";import"./chunk-MBMPW7Z5.js";import"./chunk-EOBXW5VQ.js";import"./chunk-IZ3OI3C2.js";import"./chunk-YTNMNOWP.js";import"./chunk-OOCL4ATI.js";import"./chunk-WHUCV53C.js";import"./chunk-MRG7MJVS.js";import"./chunk-7HVDH43T.js";import"./chunk-HNBUIMIG.js";import{f as X}from"./chunk-EVU4QAL4.js";import{i as w,l as G,o as L}from"./chunk-PTBOP4OT.js";import"./chunk-44P66WFA.js";import{H as v,T as D,U as N,V as C,W as O,X as I,Y as W,Z as H,_ as M,ca as U,k as $,u as b}from"./chunk-TL3HLL2S.js";import{b as f,h as _}from"./chunk-SRORWQJZ.js";import{a as o}from"./chunk-XOYVR3SV.js";import"./chunk-RJ2R4FVC.js";var Y="position frame",z="frame positioned",k="position relation",K="relation positioned",we=o(function(e){f.debug("options str",e)},"setOptions"),ye=o(function(){return{}},"getOptions"),Pe=o(function(){q(),D()},"clear");function q(){E={}}o(q,"reset");var Se=$.eventmodeling,Me=o(()=>L({...Se,...b().eventmodeling}),"getConfig"),E={};function J(){let e=ke,{ast:n}=E,t=A();if(!n)throw new Error("No data for EventModel");return n.frames.forEach((i,r)=>{let a=re(i,n.dataEntities,t);e=P(e,{$kind:Y,index:r,frame:i,textProps:a});let d;ce(i)?(f.debug("source frame",i.sourceFrames),d=n.frames.filter(l=>i.sourceFrames.some(c=>c.$refText===l.name)),d.forEach(l=>{e=P(e,{$kind:k,index:r,frame:i,sourceFrame:l})})):e=P(e,{$kind:k,index:r,frame:i})}),e={...e,sortedSwimlanesArray:R(e.swimlanes)},e}o(J,"getState");function Q(e){E.ast=e}o(Q,"setAst");var s={swimlaneMinHeight:70,swimlanePadding:15,swimlaneGap:10,boxPadding:10,boxOverlap:90,boxDefaultY:0,boxMinWidth:80,boxMaxWidth:450,boxMinHeight:80,boxMaxHeight:750,contentStartX:250,textMaxWidth:430,boxTextFontWeight:"bold",boxTextPadding:10,swimlaneTextFontWeight:"bold",labelUiAutomation:"UI/Automation",labelUiAutomationPrefix:"UI/A: ",labelCommandReadModel:"Command/Read Model",labelCommandReadModelPrefix:"C/RM: ",labelEvents:"Events",labelEventsPrefix:"Stream: "};function A(){return s}o(A,"getDiagramProps");var ke={boxes:[],swimlanes:{},relations:[],maxR:0,sortedSwimlanesArray:[]};function Z(e){let n=e.split(".");if(n.length===2)return n[0]}o(Z,"extractNamespace");function ee(e){let n=e.split(".");return n.length===2?n[1]:e}o(ee,"extractName");function te(e,n){if(!(!n||n.length===0))return Object.values(e).find(t=>t.namespace===n)}o(te,"findSwimlaneByNamespace");function y(e,n,t){return Math.max(n,...Object.keys(e).filter(i=>{let r=Number.parseInt(i);return r>n&&r<t}).map(i=>Number.parseInt(i)))+1}o(y,"findNextAvailableIndex");function ne(e,n){let t=Z(e.entityIdentifier),i=te(n,t);switch(e.modelEntityType){case"ui":case"pcr":case"processor":return i?{index:i.index,label:i.namespace||s.labelUiAutomation}:t?{index:y(n,0,100),label:s.labelUiAutomationPrefix+t}:{index:0,label:s.labelUiAutomation};case"rmo":case"readmodel":case"cmd":case"command":return i?{index:i.index,label:i.namespace||s.labelCommandReadModel}:t?{index:y(n,100,200),label:s.labelCommandReadModelPrefix+t}:{index:100,label:s.labelCommandReadModel};default:return i?{index:i.index,label:i.namespace||s.labelEvents}:t?{index:y(n,200,300),label:s.labelEventsPrefix+t}:{index:200,label:s.labelEvents}}}o(ne,"calculateSwimlaneProps");function ie(e){let{themeVariables:n}=b();switch(e.modelEntityType){case"ui":return{fill:n.emUiFill??"white",stroke:n.emUiStroke??"#dbdada"};case"pcr":case"processor":return{fill:n.emProcessorFill??"#edb3f6",stroke:n.emProcessorStroke??"#b88cbf"};case"rmo":case"readmodel":return{fill:n.emReadModelFill??"#d3f1a2",stroke:n.emReadModelStroke??"#a3b732"};case"cmd":case"command":return{fill:n.emCommandFill??"#bcd6fe",stroke:n.emCommandStroke??"#679ac3"};case"evt":case"event":return{fill:n.emEventFill??"#ffb778",stroke:n.emEventStroke??"#c19a0f"};default:return{fill:"red",stroke:"black"}}}o(ie,"calculateEntityVisualProps");function re(e,n,t){let i=b(),r=v(ee(e.entityIdentifier)??"",i),a,d={fontSize:16,fontWeight:700,fontFamily:'"trebuchet ms", verdana, arial, sans-serif',joinWith:"<br/>"},c=`<b>${w(r,t.textMaxWidth,d)}</b>`;if(e.dataInlineValue&&(a=e.dataInlineValue,a=a.substring(a.indexOf("{")+1),a=a.substring(0,a.lastIndexOf("}")-1),a=v(a,i),a=w(a,t.textMaxWidth,d),a=a.replaceAll(" ","&nbsp;")),e.dataReference){let p=n.find(S=>S.name===e.dataReference?.$refText);p&&(a=p.dataBlockValue,a=a.substring(a.indexOf(`{
2
+ `)+2),a=a.substring(0,a.lastIndexOf("}")-1),a=v(a,i),a=w(a,t.textMaxWidth,d),a=a.replaceAll(" ","&nbsp;"),a+="<br/>")}let m=a!==void 0;m&&(c+=`<br/><br/><code style="text-align: left; display: block;max-width:${t.textMaxWidth}px">${a}</code>`);let x={fontSize:d.fontSize,fontWeight:d.fontWeight,fontFamily:d.fontFamily},u=G(c,x),h=m?u.width/3:u.width,g={content:c,width:h,height:u.height};return f.debug(`[${e.name}] ${e.entityIdentifier} text`,g),g}o(re,"calculateTextProps");function ae(e,n){let t=n,i=ie(t.frame),r={width:t.textProps.width+2*s.boxTextPadding,height:t.textProps.height+2*s.boxTextPadding};return[{$kind:z,frame:t.frame,index:t.index,visual:i,dimension:r,textProps:t.textProps}]}o(ae,"decidePositionFrame");function oe(e,n,t){return n===void 0?s.contentStartX:n.index===e.index&&e.r?e.r+s.boxPadding:t===void 0?s.contentStartX:t.r-s.boxOverlap+s.boxPadding}o(oe,"calculateX");function se(e,n){let t=[...e.map(i=>i.r),n];return Math.max(...t)}o(se,"calculateMaxRight");function R(e){return Object.values(e).sort((n,t)=>n.index-t.index)}o(R,"sortedSwimlanesArray");function de(e,n){let t=n,i=ne(t.frame,e.swimlanes),r;i.index in e.swimlanes?r=e.swimlanes[i.index]:r={index:i.index,label:i.label,r:0,y:i.index*s.swimlaneMinHeight+s.swimlaneGap,height:s.swimlaneMinHeight,maxHeight:s.swimlaneMinHeight};let a=e.boxes.length>0?e.boxes[e.boxes.length-1]:void 0,d=e.previousSwimlaneNumber!==void 0?e.swimlanes[e.previousSwimlaneNumber]:void 0,l={width:Math.max(s.boxMinWidth,Math.min(s.boxMaxWidth,t.dimension.width))+2*s.boxPadding,height:Math.max(s.boxMinHeight,Math.min(s.boxMaxHeight,t.dimension.height))+2*s.boxPadding},c=oe(r,d,a),m=c+l.width+s.boxPadding,x=se(Object.values(e.swimlanes),m);r.r=c+l.width,r.maxHeight=Math.max(r.maxHeight,l.height),r.height=Math.max(s.swimlaneMinHeight,r.maxHeight)+2*s.swimlanePadding;let u={x:c,y:s.swimlanePadding+r.y,r:m,dimension:l,leftSibling:!1,swimlane:r,visual:t.visual,text:t.textProps.content,frame:t.frame,index:t.index},h={...e,boxes:[...e.boxes,u],swimlanes:{...e.swimlanes,[`${r.index}`]:r},previousSwimlaneNumber:i.index,previousFrame:t.frame,maxR:x},g=R(h.swimlanes);g.length>0&&(g[0].y=0);for(let p=1;p<g.length;p++){let S=g[p],T=g[p-1];S.y=T.y+T.height+s.swimlaneGap}return h}o(de,"evolveFramePositioned");function le(e,n){return e===0&&n.sourceFrames.length===0}o(le,"isFirstFrame");function ce(e){return e.sourceFrames!==void 0&&e.sourceFrames!==null&&e.sourceFrames.length>0}o(ce,"hasSourceFrame");function F(e,n){if(n!=null)return e.find(t=>t.frame.name===n.name)}o(F,"findBoxByFrame");function me(e,n,t){if(!(t<0))for(let i=t;i>=0;i--){let r=e[i];if(r.swimlane.index!==n)return r}}o(me,"findBoxByLineIndex");function ue(e,n){let t=n;if(X(t.frame)||le(t.index,t.frame))return[];let i=F(e.boxes,t.frame);if(i===void 0)throw new Error(`Target box not found for frame ${t.frame.name}`);let r;return t.sourceFrame?r=F(e.boxes,t.sourceFrame):r=me(e.boxes,i.swimlane.index,t.index-1),r===void 0?[]:[{$kind:K,frame:t.frame,index:t.index,sourceBox:r,targetBox:i}]}o(ue,"decidePositionRelation");function xe(e,n){let t=n,i={visual:{fill:"none",stroke:"#000"},source:{x:t.sourceBox.x,y:t.sourceBox.y},target:{x:t.targetBox.x,y:t.targetBox.y},sourceBox:t.sourceBox,targetBox:t.targetBox};return{...e,relations:[...e.relations,i]}}o(xe,"evolveRelationPositioned");var Fe={[Y]:ae,[k]:ue},Be={[z]:de,[K]:xe};function fe(e,n){let t=Fe[n.$kind];if(t==null)return[];let i=t(e,n);return f.debug("decided events",i),i}o(fe,"decide");function ge(e,n){let t=n.reduce((i,r)=>{let a=Be[r.$kind];return a==null?i:a(i,r)},e);return f.debug("evolve events",{state:e,newState:t,events:n}),t}o(ge,"evolve");function P(e,n){let t=fe(e,n);return ge(e,t)}o(P,"dispatch");var B={getConfig:Me,setOptions:we,getOptions:ye,clear:Pe,setAccTitle:N,getAccTitle:C,getAccDescription:I,setAccDescription:O,setDiagramTitle:W,getDiagramTitle:H,setAst:Q,getDiagramProps:A,getState:J},Ee={parse:o(async e=>{let n=await j("eventmodeling",e);f.debug(n),B.setAst(n),V(n,B)},"parse")},Ae=M(),Re=Ae?.eventmodeling;function he(e,n){return t=>{let i=t.swimlane.y+n.swimlanePadding,r=e.append("g").attr("class","em-box");r.append("rect").attr("x",t.x).attr("y",i).attr("rx","3").attr("width",t.dimension.width).attr("height",t.dimension.height).attr("stroke",t.visual.stroke).attr("fill",t.visual.fill),r.append("foreignObject").attr("x",t.x+n.boxPadding).attr("y",i+10).attr("width",t.dimension.width-2*n.boxPadding).attr("height",t.dimension.height-2*n.boxPadding).append("xhtml:div").style("display","table").style("height","100%").style("width","100%").append("span").style("display","table-cell").style("text-align","center").style("vertical-align","middle").html(t.text)}}o(he,"renderD3Box");function pe(e,n){return e>n}o(pe,"dirUpwards");function be(e,n,t,i){return r=>{let a=r.sourceBox.swimlane.y+n.swimlanePadding,d=r.targetBox.swimlane.y+n.swimlanePadding,l=pe(a,d),c=r.sourceBox.x+r.sourceBox.dimension.width*2/3,m=r.targetBox.x+r.targetBox.dimension.width/3,x,u;f.debug(`rendering relation up=${l} for `,{sourceBox:r.sourceBox,targetBox:r.targetBox}),l?(x=a,u=d+r.targetBox.dimension.height):(x=a+r.sourceBox.dimension.height,u=d);let h=i.emRelationStroke??r.visual.stroke;e.append("path").attr("class","em-relation").attr("fill",r.visual.fill).attr("stroke",h).attr("stroke-width","1").attr("marker-end",`url(#${t})`).attr("d",`M${c} ${x} L${m} ${u}`)}}o(be,"renderD3Relation");function ve(e,n,t,i){return r=>{let a=e.append("g").attr("class","em-swimlane"),d=i.emSwimlaneBackgroundOdd??"rgb(250,250,250)",l=i.emSwimlaneBackgroundStroke??"rgb(240,240,240)";a.append("rect").attr("x",0).attr("y",r.y).attr("rx","3").attr("width",n+t.swimlanePadding).attr("height",r.height).attr("fill",d).attr("stroke",l),a.append("text").attr("font-weight",t.swimlaneTextFontWeight).attr("x",30).attr("y",r.y+30).text(r.label)}}o(ve,"renderD3Swimlane");var Te=o(function(e,n,t,i){if(f.debug("in eventmodeling renderer",e+`
3
+ `,"id:",n,t),!Re)throw new Error("EventModeling config not found");let r=i.db,{themeVariables:a,eventmodeling:d}=M(),l=_(`[id="${n}"]`),c=r.getDiagramProps(),m=r.getState(),x=`em-arrowhead-${n}`,u=a.emArrowhead??"#000000";m.sortedSwimlanesArray.forEach(ve(l,m.maxR,c,a)),m.boxes.forEach(he(l,c)),m.relations.forEach(be(l,c,x,a)),l.append("defs").append("marker").attr("id",x).attr("markerWidth","10").attr("markerHeight","7").attr("refX","10").attr("refY","3.5").attr("orient","auto").append("polygon").attr("points","0 0, 10 3.5, 0 7").attr("fill",u),U(void 0,l,d?.padding??30,d?.useMaxWidth)},"draw"),$e={draw:Te},De=o(e=>"","getStyles"),Ne=De,Le={parser:Ee,db:B,renderer:$e,styles:Ne};export{Le as diagram};
@@ -0,0 +1,8 @@
1
+ import{a as o,b as e}from"./chunk-SLJRBC77.js";import"./chunk-PP76TAQX.js";import"./chunk-D7FFA4NS.js";import"./chunk-YI55PY3V.js";import"./chunk-5V7ZY2AP.js";import"./chunk-LS4EJ2EI.js";import"./chunk-YVBA3QW6.js";import"./chunk-MD3HMMTK.js";import"./chunk-25XV6UY3.js";import"./chunk-FDVKYQJN.js";import"./chunk-R6P6EHWA.js";import"./chunk-4QDE4SUK.js";import"./chunk-R4YVZCIT.js";import"./chunk-UMH2TSW2.js";import"./chunk-ZTRZIET2.js";import"./chunk-PTBOP4OT.js";import"./chunk-44P66WFA.js";import"./chunk-TL3HLL2S.js";import"./chunk-SRORWQJZ.js";import{a as r}from"./chunk-XOYVR3SV.js";import"./chunk-RJ2R4FVC.js";var m=r(t=>`${o(t)}
2
+ .swimlane.cluster rect {
3
+ stroke: ${t.clusterBorder} !important;
4
+ }
5
+ [data-look="neo"].cluster rect {
6
+ filter: none;
7
+ }
8
+ `,"getStyles"),i=m,B=e({defaultLayout:"swimlane",styles:i});export{B as diagram};
@@ -0,0 +1 @@
1
+ import{a as r,b as a,c as i,d as n,e as s,g as u,l as d,x as l,y as c}from"./chunk-EVU4QAL4.js";var e,m=(e=class extends c{constructor(){super(["info","showInfo"])}},r(e,"InfoTokenBuilder"),e),v={parser:{TokenBuilder:r(()=>new m,"TokenBuilder"),ValueConverter:r(()=>new l,"ValueConverter")}};function I(f=s){let o=n(i(f),u),t=n(a({shared:o}),d,v);return o.ServiceRegistry.register(t),{shared:o,Info:t}}r(I,"createInfoServices");export{v as a,I as b};
@@ -0,0 +1 @@
1
+ import{a as r,b as e}from"./chunk-OCFCFASO.js";import"./chunk-EVU4QAL4.js";import"./chunk-RJ2R4FVC.js";export{r as GitGraphModule,e as createGitGraphServices};
@@ -0,0 +1,9 @@
1
+ import"./chunk-GCO4TDHX.js";import"./chunk-RJ2R4FVC.js";var e={paste:"Colar",pasteAsPlaintext:"Colar como texto sem formata\xE7\xE3o",pasteCharts:"Colar gr\xE1ficos",selectAll:"Selecionar tudo",multiSelect:"Adicionar elemento \xE0 sele\xE7\xE3o",moveCanvas:"Mover tela",cut:"Recortar",copy:"Copiar",copyAsPng:"Copiar para a \xE1rea de transfer\xEAncia como PNG",copyAsSvg:"Copiar para a \xE1rea de transfer\xEAncia como SVG",copyText:"Copiar para \xE1rea de transfer\xEAncia como texto",copySource:"",convertToCode:"",bringForward:"Trazer para a frente",sendToBack:"Enviar para o fundo",bringToFront:"Trazer para o primeiro plano",sendBackward:"Enviar para tr\xE1s",delete:"Apagar",copyStyles:"Copiar os estilos",pasteStyles:"Colar os estilos",stroke:"Contorno",background:"Fundo",fill:"Preenchimento",strokeWidth:"Espessura do tra\xE7o",strokeStyle:"Estilo de tra\xE7o",strokeStyle_solid:"S\xF3lido",strokeStyle_dashed:"Tracejado",strokeStyle_dotted:"Pontilhado",sloppiness:"Precis\xE3o do tra\xE7o",opacity:"Opacidade",textAlign:"Alinhamento do texto",edges:"Arestas",sharp:"Pontudo",round:"Arredondado",arrowheads:"Pontas",arrowhead_none:"Nenhuma",arrowhead_arrow:"Flecha",arrowhead_bar:"Barra",arrowhead_circle:"",arrowhead_circle_outline:"",arrowhead_triangle:"Tri\xE2ngulo",arrowhead_triangle_outline:"",arrowhead_diamond:"",arrowhead_diamond_outline:"",fontSize:"Tamanho da fonte",fontFamily:"Fam\xEDlia da fonte",addWatermark:'Adicionar "Feito com Excalidraw"',handDrawn:"Manuscrito",normal:"Normal",code:"C\xF3digo",small:"Pequeno",medium:"M\xE9dio",large:"Grande",veryLarge:"Muito grande",solid:"S\xF3lido",hachure:"Hachura",zigzag:"Zigue-zague",crossHatch:"Hachura cruzada",thin:"Fino",bold:"Espesso",left:"Esquerda",center:"Centralizar",right:"Direita",extraBold:"Muito espesso",architect:"Arquiteto",artist:"Artista",cartoonist:"Cartunista",fileTitle:"Nome do arquivo",colorPicker:"Seletor de cores",canvasColors:"Usado na tela",canvasBackground:"Fundo da tela",drawingCanvas:"Tela de desenho",layers:"Camadas",actions:"A\xE7\xF5es",language:"Idioma",liveCollaboration:"Colabora\xE7\xE3o ao vivo...",duplicateSelection:"Duplicar",untitled:"Sem t\xEDtulo",name:"Nome",yourName:"Seu nome",madeWithExcalidraw:"Feito com Excalidraw",group:"Agrupar sele\xE7\xE3o",ungroup:"Desagrupar sele\xE7\xE3o",collaborators:"Colaboradores",showGrid:"Mostrar grade",addToLibrary:"Adicionar \xE0 biblioteca",removeFromLibrary:"Remover da biblioteca",libraryLoadingMessage:"Carregando biblioteca\u2026",libraries:"Procurar bibliotecas",loadingScene:"Carregando cena\u2026",align:"Alinhamento",alignTop:"Alinhar ao topo",alignBottom:"Alinhar embaixo",alignLeft:"Alinhar \xE0 esquerda",alignRight:"Alinhar \xE0 direita",centerVertically:"Centralizar verticalmente",centerHorizontally:"Centralizar horizontalmente",distributeHorizontally:"Distribuir horizontalmente",distributeVertically:"Distribuir verticalmente",flipHorizontal:"Inverter horizontalmente",flipVertical:"Inverter verticalmente",viewMode:"Modo de visualiza\xE7\xE3o",share:"Compartilhar",showStroke:"Exibir seletor de cores do tra\xE7o",showBackground:"Exibir seletor de cores do fundo",toggleTheme:"Alternar tema",personalLib:"Biblioteca Pessoal",excalidrawLib:"Biblioteca do Excalidraw",decreaseFontSize:"Diminuir o tamanho da fonte",increaseFontSize:"Aumentar o tamanho da fonte",unbindText:"Desvincular texto",bindText:"Vincular texto ao cont\xEAiner",createContainerFromText:"Envolver texto em um cont\xEAiner",link:{edit:"Editar link",editEmbed:"",create:"Criar link",createEmbed:"",label:"Link",labelEmbed:"",empty:""},lineEditor:{edit:"Editar linha",exit:"Sair do editor de linha"},elementLock:{lock:"Bloquear",unlock:"Desbloquear",lockAll:"Bloquear tudo",unlockAll:"Desbloquear tudo"},statusPublished:"Publicado",sidebarLock:"Manter barra lateral aberta",selectAllElementsInFrame:"Selecionar todos os elementos no quadro",removeAllElementsFromFrame:"Remover todos os elementos do quadro",eyeDropper:"Escolher cor da tela",textToDiagram:"",prompt:""},a={noItems:"Nenhum item adicionado ainda...",hint_emptyLibrary:"Selecione um item na tela para adicion\xE1-lo aqui, ou instale uma biblioteca do reposit\xF3rio p\xFAblico, abaixo.",hint_emptyPrivateLibrary:"Selecione um item na tela para adicion\xE1-lo aqui."},o={clearReset:"Limpar o canvas e redefinir a cor de fundo",exportJSON:"Exportar arquivo",exportImage:"Exportar imagem...",export:"Salvar como...",copyToClipboard:"Copiar para o clipboard",save:"Salvar para o arquivo atual",saveAs:"Salvar como",load:"Abrir",getShareableLink:"Obter um link de compartilhamento",close:"Fechar",selectLanguage:"Selecionar idioma",scrollBackToContent:"Voltar para o conte\xFAdo",zoomIn:"Aumentar zoom",zoomOut:"Diminuir zoom",resetZoom:"Redefinir zoom",menu:"Menu",done:"Conclu\xEDdo",edit:"Editar",undo:"Desfazer",redo:"Refazer",resetLibrary:"Redefinir biblioteca",createNewRoom:"Criar nova sala",fullScreen:"Tela cheia",darkMode:"Modo escuro",lightMode:"Modo claro",zenMode:"Modo Zen",objectsSnapMode:"",exitZenMode:"Sair do modo zen",cancel:"Cancelar",clear:"Limpar",remove:"Remover",embed:"",publishLibrary:"Publicar",submit:"Enviar",confirm:"Confirmar",embeddableInteractionButton:""},r={clearReset:"Isto ir\xE1 limpar toda a tela. Voc\xEA tem certeza?",couldNotCreateShareableLink:"N\xE3o foi poss\xEDvel criar um link de compartilhamento.",couldNotCreateShareableLinkTooBig:"N\xE3o foi poss\xEDvel criar um link compartilh\xE1vel: a cena \xE9 muito grande",couldNotLoadInvalidFile:"N\xE3o foi poss\xEDvel carregar o arquivo inv\xE1lido",importBackendFailed:"A importa\xE7\xE3o do servidor falhou.",cannotExportEmptyCanvas:"N\xE3o \xE9 poss\xEDvel exportar um canvas vazio.",couldNotCopyToClipboard:"N\xE3o foi poss\xEDvel copiar para a \xE1rea de transfer\xEAncia.",decryptFailed:"N\xE3o foi poss\xEDvel descriptografar os dados.",uploadedSecurly:"O upload foi protegido com criptografia de ponta a ponta, o que significa que o servidor do Excalidraw e terceiros n\xE3o podem ler o conte\xFAdo.",loadSceneOverridePrompt:"Carregar um desenho externo substituir\xE1 o seu conte\xFAdo existente. Deseja continuar?",collabStopOverridePrompt:`Ao interromper a sess\xE3o, voc\xEA substituir\xE1 seu desenho anterior, armazenado localmente. Voc\xEA tem certeza?
2
+
3
+ (Se voc\xEA deseja manter seu desenho local, simplesmente feche a aba do navegador.)`,errorAddingToLibrary:"N\xE3o foi poss\xEDvel adicionar o item \xE0 biblioteca",errorRemovingFromLibrary:"N\xE3o foi poss\xEDvel remover o item da biblioteca",confirmAddLibrary:"Isso adicionar\xE1 {{numShapes}} forma(s) \xE0 sua biblioteca. Tem certeza?",imageDoesNotContainScene:"Esta imagem parece n\xE3o conter dados de cenas. Voc\xEA ativou a incorpora\xE7\xE3o da cena durante a exporta\xE7\xE3o?",cannotRestoreFromImage:"N\xE3o foi poss\xEDvel restaurar a cena deste arquivo de imagem",invalidSceneUrl:"N\xE3o foi poss\xEDvel importar a cena da URL fornecida. Ela est\xE1 incompleta ou n\xE3o cont\xE9m dados JSON v\xE1lidos do Excalidraw.",resetLibrary:"Isto limpar\xE1 a sua biblioteca. Voc\xEA tem certeza?",removeItemsFromsLibrary:"Excluir {{count}} item(ns) da biblioteca?",invalidEncryptionKey:"A chave de encripta\xE7\xE3o deve ter 22 caracteres. A colabora\xE7\xE3o ao vivo est\xE1 desabilitada.",collabOfflineWarning:`Sem conex\xE3o com a internet dispon\xEDvel.
4
+ Suas altera\xE7\xF5es n\xE3o ser\xE3o salvas!`},i={unsupportedFileType:"Tipo de arquivo n\xE3o suportado.",imageInsertError:"N\xE3o foi poss\xEDvel inserir imagem. Tente novamente mais tarde...",fileTooBig:"O arquivo \xE9 muito grande. O tamanho m\xE1ximo permitido \xE9 {{maxSize}}.",svgImageInsertError:"N\xE3o foi poss\xEDvel inserir a imagem SVG. A marca\xE7\xE3o SVG parece inv\xE1lida.",failedToFetchImage:"",invalidSVGString:"SVG Inv\xE1lido.",cannotResolveCollabServer:"N\xE3o foi poss\xEDvel conectar-se ao servidor colaborativo. Por favor, recarregue a p\xE1gina e tente novamente.",importLibraryError:"N\xE3o foi poss\xEDvel carregar a biblioteca",collabSaveFailed:"N\xE3o foi poss\xEDvel salvar no banco de dados do servidor. Se os problemas persistirem, salve o arquivo localmente para garantir que n\xE3o perca o seu trabalho.",collabSaveFailed_sizeExceeded:"N\xE3o foi poss\xEDvel salvar no banco de dados do servidor, a tela parece ser muito grande. Se os problemas persistirem, salve o arquivo localmente para garantir que n\xE3o perca o seu trabalho.",imageToolNotSupported:"",brave_measure_text_error:{line1:"Parece que voc\xEA est\xE1 usando o navegador Brave com a configura\xE7\xE3o <bold>Bloquear Impress\xF5es Digitais</bold> no modo agressivo.",line2:"Isso pode acabar quebrando <bold>Elementos de Texto</bold> em seus desenhos.",line3:"Recomendamos fortemente desativar essa configura\xE7\xE3o. Voc\xEA pode acessar o <link>passo a passo</link> sobre como fazer isso.",line4:"Se desativar essa configura\xE7\xE3o n\xE3o corrigir a exibi\xE7\xE3o de elementos de texto, por favor abra uma <issueLink>issue</issueLink> em nosso GitHub, ou mande uma mensagem em nosso <discordLink>Discord</discordLink>"},libraryElementTypeError:{embeddable:"",iframe:"",image:""},asyncPasteFailedOnRead:"",asyncPasteFailedOnParse:"",copyToSystemClipboardFailed:""},t={selection:"Sele\xE7\xE3o",image:"Inserir imagem",rectangle:"Ret\xE2ngulo",diamond:"Losango",ellipse:"Elipse",arrow:"Flecha",line:"Linha",freedraw:"Desenhar",text:"Texto",library:"Biblioteca",lock:"Manter ativa a ferramenta selecionada ap\xF3s desenhar",penMode:"Modo caneta \u2014 impede o toque",link:"Adicionar/Atualizar link para uma forma selecionada",eraser:"Borracha",frame:"Ferramenta de quadro",magicframe:"",embeddable:"",laser:"",hand:"M\xE3o (ferramenta de rolagem)",extraTools:"Mais ferramentas",mermaidToExcalidraw:"",magicSettings:""},s={canvasActions:"A\xE7\xF5es da tela",selectedShapeActions:"A\xE7\xF5es das formas selecionadas",shapes:"Formas"},n={canvasPanning:"Para mover a tela, segure a roda do mouse ou a barra de espa\xE7o enquanto arrasta ou use a ferramenta de m\xE3o",linearElement:"Clique para iniciar v\xE1rios pontos, arraste para uma \xFAnica linha",freeDraw:"Toque e arraste, solte quando terminar",text:"Dica: voc\xEA tamb\xE9m pode adicionar texto clicando duas vezes em qualquer lugar com a ferramenta de sele\xE7\xE3o",embeddable:"",text_selected:"Clique duplo ou tecle ENTER para editar o texto",text_editing:"Pressione Esc ou Ctrl/Cmd+ENTER para encerrar a edi\xE7\xE3o",linearElementMulti:"Clique no \xFAltimo ponto ou pressione Escape ou Enter para terminar",lockAngle:"Voc\xEA pode restringir o \xE2ngulo segurando o SHIFT",resize:`Voc\xEA pode restringir propor\xE7\xF5es segurando SHIFT enquanto redimensiona,
5
+ segure ALT para redimensionar do centro`,resizeImage:`Voc\xEA pode redimensionar livremente segurando SHIFT,
6
+ segure ALT para redimensionar a partir do centro`,rotate:"Voc\xEA pode restringir os \xE2ngulos segurando SHIFT enquanto gira",lineEditor_info:"Pressione CtrlOuCmd e duplo-clique ou pressione CtrlOuCmd + Enter para editar pontos",lineEditor_pointSelected:`Pressione Delete para remover o(s) ponto(s),
7
+ Ctrl/Cmd+D para duplicar ou arraste para mover`,lineEditor_nothingSelected:"Selecione um ponto para editar (segure SHIFT para selecionar v\xE1rios) ou segure Alt e clique para adicionar novos pontos",placeImage:"Clique para colocar a imagem, ou clique e arraste para definir manualmente o seu tamanho",publishLibrary:"Publicar sua pr\xF3pria biblioteca",bindTextToElement:"Pressione Enter para adicionar o texto",deepBoxSelect:"Segure Ctrl/Cmd para sele\xE7\xE3o profunda e para evitar arrastar",eraserRevert:"Segure a tecla Alt para inverter os elementos marcados para exclus\xE3o",firefox_clipboard_write:'Esse recurso pode ser ativado configurando a op\xE7\xE3o "dom.events.asyncClipboard.clipboardItem" como "true". Para alterar os sinalizadores do navegador no Firefox, visite a p\xE1gina "about:config".',disableSnapping:""},l={cannotShowPreview:"N\xE3o \xE9 poss\xEDvel mostrar pr\xE9-visualiza\xE7\xE3o",canvasTooBig:"A tela pode ser muito grande.",canvasTooBigTip:"Dica: tente aproximar um pouco os elementos mais distantes."},d={headingMain:"Foi encontrado um erro. Tente <button>recarregar a p\xE1gina.</button>",clearCanvasMessage:"Se recarregar a p\xE1gina n\xE3o funcionar, tente <button>limpando a tela.</button>",clearCanvasCaveat:" Isso resultar\xE1 em perda de trabalho ",trackedToSentry:"O erro com o identificador {{eventId}} foi rastreado no nosso sistema.",openIssueMessage:"Fomos muito cautelosos para n\xE3o incluir suas informa\xE7\xF5es de cena no erro. Se sua cena n\xE3o for privada, por favor, considere seguir nosso <button>rastreador de bugs.</button> Por favor, inclua informa\xE7\xF5es abaixo, copiando e colando para a issue do GitHub.",sceneContent:"Conte\xFAdo da cena:"},c={desc_intro:"Voc\xEA pode convidar pessoas para sua cena atual para colaborar com voc\xEA.",desc_privacy:"N\xE3o se preocupe, a sess\xE3o usa criptografia de ponta a ponta; portanto, o que voc\xEA desenhar permanecer\xE1 privado. Nem mesmo nosso servidor poder\xE1 ver o que voc\xEA cria.",button_startSession:"Iniciar sess\xE3o",button_stopSession:"Parar sess\xE3o",desc_inProgressIntro:"A sess\xE3o de colabora\xE7\xE3o ao vivo est\xE1 agora em andamento.",desc_shareLink:"Compartilhe este link com qualquer pessoa com quem voc\xEA queira colaborar:",desc_exitSession:"Interrompendo a sess\xE3o voc\xEA ir\xE1 se desconectar da sala, mas voc\xEA poder\xE1 continuar trabalhando com a cena localmente. Observe que isso n\xE3o afetar\xE1 outras pessoas, e elas ainda poder\xE3o colaborar em suas vers\xF5es.",shareTitle:"Participe de uma sess\xE3o ao vivo de colabora\xE7\xE3o no Excalidraw"},m={title:"Erro"},x={disk_title:"Salvar no computador",disk_details:"Exportar os dados da cena para um arquivo que voc\xEA poder\xE1 importar mais tarde.",disk_button:"Salvar em um arquivo",link_title:"Link compartilh\xE1vel",link_details:"Exportar como link de apenas leitura.",link_button:"Exportar link",excalidrawplus_description:"Salvar a cena na sua \xE1rea de trabalho Excalidraw+.",excalidrawplus_button:"Exportar",excalidrawplus_exportError:"N\xE3o \xE9 poss\xEDvel exportar para o Excalidraw+ neste momento..."},u={blog:"Leia o nosso blog",click:"clicar",deepSelect:"Sele\xE7\xE3o profunda",deepBoxSelect:"Use a sele\xE7\xE3o profunda dentro da caixa para previnir arrastar",curvedArrow:"Seta curva",curvedLine:"Linha curva",documentation:"Documenta\xE7\xE3o",doubleClick:"clique duplo",drag:"arrastar",editor:"Editor",editLineArrowPoints:"Editar linha/ponta da seta",editText:"Editar texto / adicionar etiqueta",github:"Encontrou algum problema? Nos informe",howto:"Siga nossos guias",or:"ou",preventBinding:"Evitar fixa\xE7\xE3o de seta",tools:"Ferramentas",shortcuts:"Atalhos de teclado",textFinish:"Encerrar edi\xE7\xE3o (editor de texto)",textNewLine:"Adicionar nova linha (editor de texto)",title:"Ajudar",view:"Visualizar",zoomToFit:"Ampliar para encaixar todos os elementos",zoomToSelection:"Ampliar a sele\xE7\xE3o",toggleElementLock:"Bloquear/desbloquear sele\xE7\xE3o",movePageUpDown:"Mover a p\xE1gina para cima/baixo",movePageLeftRight:"Mover a p\xE1gina para esquerda/direita"},p={title:"Limpar a tela"},E={title:"Publicar biblioteca",itemName:"Nome do item",authorName:"Nome do autor",githubUsername:"Nome de usu\xE1rio do GitHub",twitterUsername:"Nome de usu\xE1rio do Twitter",libraryName:"Nome da Biblioteca",libraryDesc:"Descri\xE7\xE3o da biblioteca",website:"Site",placeholder:{authorName:"Seu nome ou nome de usu\xE1rio",libraryName:"Nome da sua biblioteca",libraryDesc:"Descri\xE7\xE3o para ajudar as pessoas a entenderem o uso da sua da sua biblioteca",githubHandle:"Identificador do GitHub (opcional), para que voc\xEA possa editar a biblioteca depois de enviar para revis\xE3o",twitterHandle:"Nome de usu\xE1rio do Twitter (opcional), para que saibamos quem deve ser creditado se promovermos no Twitter",website:"Link para o seu site pessoal ou outro lugar (opcional)"},errors:{required:"Obrigat\xF3rio",website:"Informe uma URL v\xE1lida"},noteDescription:"Envie sua biblioteca para ser inclu\xEDda no <link>reposit\xF3rio de biblioteca p\xFAblica</link>para outras pessoas usarem em seus desenhos.",noteGuidelines:"A biblioteca precisa ser aprovada manualmente primeiro. Por favor leia o <link>orienta\xE7\xF5es</link> antes de enviar. Voc\xEA precisar\xE1 de uma conta do GitHub para se comunicar e fazer altera\xE7\xF5es quando solicitado, mas n\xE3o \xE9 estritamente necess\xE1rio.",noteLicense:"Ao enviar, voc\xEA concorda que a biblioteca ser\xE1 publicada sob a <link>Licen\xE7a MIT, </link>o que, em suma, significa que qualquer pessoa pode utiliz\xE1-los sem restri\xE7\xF5es.",noteItems:"Cada item da biblioteca deve ter seu pr\xF3prio nome para que seja filtr\xE1vel. Os seguintes itens da biblioteca ser\xE3o inclu\xEDdos:",atleastOneLibItem:"Por favor, selecione pelo menos um item da biblioteca para come\xE7ar",republishWarning:"Nota: alguns dos itens selecionados est\xE3o marcados como j\xE1 publicado/enviado. Voc\xEA s\xF3 deve reenviar itens ao atualizar uma biblioteca existente ou submiss\xE3o."},b={title:"Biblioteca enviada",content:"Obrigado {{authorName}}. Sua biblioteca foi enviada para an\xE1lise. Voc\xEA pode acompanhar o status<link>aqui</link>"},v={resetLibrary:"Redefinir biblioteca",removeItemsFromLib:"Remover itens selecionados da biblioteca"},g={header:"Exportar imagem",label:{withBackground:"Fundo",onlySelected:"Somente selecionados",darkMode:"Modo escuro",embedScene:"Incorporar cena",scale:"Escala",padding:"Margem interna"},tooltip:{embedScene:`Os dados da cena ser\xE3o salvos no arquivo PNG/SVG exportado para que a cena possa ser restaurada a partir dele.
8
+ Isso aumentar\xE1 o tamanho do arquivo exportado.`},title:{exportToPng:"Exportar como PNG",exportToSvg:"Exportar como SVG",copyPngToClipboard:"Copiar PNG para \xE1rea de transfer\xEAncia"},button:{exportToPng:"PNG",exportToSvg:"SVG",copyPngToClipboard:"Copiar para a \xE1rea de transfer\xEAncia"}},h={tooltip:"Seus desenhos s\xE3o criptografados de ponta a ponta, ent\xE3o os servidores do Excalidraw nunca os ver\xE3o.",link:"Publica\xE7\xE3o de blog com criptografia de ponta a ponta no Excalidraw"},f={angle:"\xC2ngulo",element:"Elemento",elements:"Elementos",height:"Altura",scene:"Cena",selected:"Selecionado",storage:"Armazenamento",title:"Estat\xEDsticas para nerds",total:"Total",version:"Vers\xE3o",versionCopy:"Clique para copiar",versionNotAvailable:"Vers\xE3o n\xE3o dispon\xEDvel",width:"Largura"},S={addedToLibrary:"Adicionado \xE0 biblioteca",copyStyles:"Estilos copiados.",copyToClipboard:"Copiado para \xE1rea de transfer\xEAncia.",copyToClipboardAsPng:"{{exportSelection}} copiado para a \xE1rea de transfer\xEAncia como PNG ({{exportColorScheme}})",fileSaved:"Arquivo salvo.",fileSavedToFilename:"Salvo em {filename}",canvas:"tela",selection:"sele\xE7\xE3o",pasteAsSingleElement:`Use {{shortcut}} para colar como um \xFAnico elemento,
9
+ ou cole em um editor de texto j\xE1 existente`,unableToEmbed:"",unrecognizedLinkFormat:""},A={transparent:"Transparente",black:"Preto",white:"Branco",red:"Vermelho",pink:"Rosa",grape:"Uva",violet:"Violeta",gray:"Cinza",blue:"Azul",cyan:"Ciano",teal:"Verde-azulado",green:"Verde",yellow:"Amarelo",orange:"Laranja",bronze:"Bronze"},C={app:{center_heading:"Todos os dados s\xE3o salvos localmente no seu navegador.",center_heading_plus:"Voc\xEA queria ir para o Excalidraw+ em vez disso?",menuHint:"Exportar, prefer\xEAncias, idiomas..."},defaults:{menuHint:"Exportar, prefer\xEAncias e mais...",center_heading:"Diagramas, Feito. Simples.",toolbarHint:"Escolha uma ferramenta e comece a desenhar!",helpHint:"Atalhos e ajuda"}},F={mostUsedCustomColors:"Cores personalizadas mais usadas",colors:"Cores",shades:"Tons",hexCode:"C\xF3digo hexadecimal",noShades:"Sem tons dispon\xEDveis para essa cor"},q={action:{exportToImage:{title:"Exportar como imagem",button:"Exportar como imagem",description:"Exportar os dados da cena para um arquivo que voc\xEA poder\xE1 importar mais tarde."},saveToDisk:{title:"Salvar no computador",button:"Salvar no computador",description:"Exportar os dados da cena para um arquivo que voc\xEA poder\xE1 importar mais tarde."},excalidrawPlus:{title:"Excalidraw+",button:"Exportar para Excalidraw+",description:"Salvar a cena na sua \xE1rea de trabalho Excalidraw+."}},modal:{loadFromFile:{title:"Carregar de arquivo",button:"Carregar de arquivo",description:"Carregar de um arquivo ir\xE1 <bold> substituir o conte\xFAdo existente</bold>.<br></br>Voc\xEA pode salvar seu desenho primeiro usando uma das op\xE7\xF5es abaixo."},shareableLink:{title:"Carregar de um link",button:"Substituir meu conte\xFAdo",description:"Carregar um desenho externo ir\xE1 <bold> substituir seu conte\xFAdo existente</bold>.<br></br>Voc\xEA pode salvar seu desenho antes utilizando uma das op\xE7\xF5es abaixo."}}},y={title:"",button:"",description:"",syntax:"",preview:""},k={labels:e,library:a,buttons:o,alerts:r,errors:i,toolBar:t,headings:s,hints:n,canvasError:l,errorSplash:d,roomDialog:c,errorDialog:m,exportDialog:x,helpDialog:u,clearCanvasDialog:p,publishDialog:E,publishSuccessDialog:b,confirmDialog:v,imageExportDialog:g,encrypted:h,stats:f,toast:S,colors:A,welcomeScreen:C,colorPicker:F,overwriteConfirm:q,mermaid:y};export{r as alerts,o as buttons,l as canvasError,p as clearCanvasDialog,F as colorPicker,A as colors,v as confirmDialog,k as default,h as encrypted,m as errorDialog,d as errorSplash,i as errors,x as exportDialog,s as headings,u as helpDialog,n as hints,g as imageExportDialog,e as labels,a as library,y as mermaid,q as overwriteConfirm,E as publishDialog,b as publishSuccessDialog,c as roomDialog,f as stats,S as toast,t as toolBar,C as welcomeScreen};
@@ -0,0 +1 @@
1
+ import{a as e,b as o}from"./chunk-LWULR3SM.js";import"./chunk-EVU4QAL4.js";import"./chunk-RJ2R4FVC.js";export{e as EventModelingModule,o as createEventModelingServices};
@@ -0,0 +1 @@
1
+ import{g as Ao}from"./chunk-OUIX6BGK.js";import"./chunk-K4I76XBX.js";import"./chunk-MD3HMMTK.js";import{a as xn}from"./chunk-25XV6UY3.js";import"./chunk-FDVKYQJN.js";import"./chunk-R6P6EHWA.js";import"./chunk-4QDE4SUK.js";import"./chunk-R4YVZCIT.js";import"./chunk-UMH2TSW2.js";import"./chunk-ZTRZIET2.js";import"./chunk-PTBOP4OT.js";import"./chunk-44P66WFA.js";import"./chunk-TL3HLL2S.js";import{b as Xe}from"./chunk-SRORWQJZ.js";import{a as f}from"./chunk-XOYVR3SV.js";import"./chunk-RJ2R4FVC.js";var wo=5,Ye=1e-5,Ge=1e-6;function We(t){let e=[];for(let n=0;n<t.length-1;n++)e.push({a:t[n],b:t[n+1]});return e}f(We,"buildSegmentList");function Po(t,e,n,o){let s=e.x-t.x,r=e.y-t.y,i=o.x-n.x,g=o.y-n.y,l=s*g-r*i;if(l===0)return null;let a=n.x-t.x,u=n.y-t.y,y=(a*g-u*i)/l,L=(a*r-u*s)/l;return y<=Ge||y>=1-Ge||L<=Ge||L>=1-Ge?null:{point:{x:t.x+y*s,y:t.y+y*r},tA:y,tB:L}}f(Po,"segmentIntersection");function Cn(t){return Math.abs(t.b.x-t.a.x)>=Math.abs(t.b.y-t.a.y)}f(Cn,"isHorizontalSeg");function ko(t){let e=[];for(let n=0;n<t.length;n++){let o=t[n],s=We(o.points);for(let r=n+1;r<t.length;r++){let i=t[r],g=We(i.points);for(let[l,a]of s.entries())for(let[u,y]of g.entries()){let L=Po(a.a,a.b,y.a,y.b);if(!L)continue;let m=Cn(a),h=Cn(y);(m!==h?m:!1)?e.push({jumpEdgeId:o.id,otherEdgeId:i.id,segIndex:l,t:L.tA,point:L.point}):e.push({jumpEdgeId:i.id,otherEdgeId:o.id,segIndex:u,t:L.tB,point:L.point})}}}return e}f(ko,"findEdgeIntersections");function re(t){let e=Math.round(t*1e3)/1e3;return Number.isInteger(e)?`${e}`:`${e}`}f(re,"fmt");function Ae(t){return`${re(t.x)},${re(t.y)}`}f(Ae,"pointToString");function _o(t){let e=t.b.x-t.a.x,n=t.b.y-t.a.y;return Math.abs(e)>=Math.abs(n)?e>=0?1:0:n>=0?1:0}f(_o,"getArcSweepFlag");var vr=.001;function Do(t,e){if(t.length<2)return t.map(r=>({...r}));let n=t.map(r=>({...r})),o=e.arrowTypeStart&&xn[e.arrowTypeStart];if(o){let r=t[0],i=t[1],g=Math.atan2(i.y-r.y,i.x-r.x);n[0].x=r.x+o*Math.cos(g),n[0].y=r.y+o*Math.sin(g)}let s=e.arrowTypeEnd&&xn[e.arrowTypeEnd];if(s){let r=t.length,i=t[r-2],g=t[r-1],l=Math.atan2(g.y-i.y,g.x-i.x);n[r-1].x=g.x-s*Math.cos(l),n[r-1].y=g.y-s*Math.sin(l)}return n}f(Do,"applyMarkerOffsets");function Ho(t,e,n,o,s){let r=t.point.x,i=t.point.y,g={x:r-e*t.r,y:i-n*t.r},l={x:r+e*t.r,y:i+n*t.r},a=[`L${Ae(g)}`];return s==="arc"?a.push(`A${re(t.r)},${re(t.r)} 0 0 ${o} ${Ae(l)}`):a.push(`M${Ae(l)}`),a}f(Ho,"emitJump");function vn(t,e,n,o){let s=e.x-t.x,r=e.y-t.y,i=n.x-e.x,g=n.y-e.y,l=Math.hypot(s,r),a=Math.hypot(i,g);if(l<Ye||a<Ye)return null;let u=s/l,y=r/l,L=i/a,m=g/a,h=u*L+y*m,c=Math.max(-1,Math.min(1,h)),p=Math.acos(c);if(p<Ye||Math.abs(Math.PI-p)<Ye)return null;let C=Math.min(o/Math.sin(p/2),l/2,a/2);return{startX:e.x-u*C,startY:e.y-y*C,endX:e.x+L*C,endY:e.y+m*C,ctrlX:e.x,ctrlY:e.y,cutLen:C}}f(vn,"computeRoundedCorner");function Xo(t,e,n){let o=t.points;if(o.length<2)return"";let s=Do(o,t),r=t.curve==="rounded",i=We(s),g=new Map;for(let a of e){let u=i[a.segIndex];if(!u)continue;let y=Math.hypot(u.b.x-u.a.x,u.b.y-u.a.y),L=g.get(a.segIndex)??[];L.push({t:a.t,point:a.point,d:a.t*y,r:n.jumpRadius}),g.set(a.segIndex,L)}let l=[`M${Ae(s[0])}`];for(let a=0;a<i.length;a++){let u=i[a],y=Math.hypot(u.b.x-u.a.x,u.b.y-u.a.y),L=y===0?0:(u.b.x-u.a.x)/y,m=y===0?0:(u.b.y-u.a.y)/y,h=_o(u),c=0;if(r&&a>0){let v=vn(s[a-1],s[a],s[a+1]??s[a],wo);v&&(c=v.cutLen)}let p=y,C=null;r&&a<i.length-1&&(C=vn(s[a],s[a+1],s[a+2]??s[a+1],wo),C&&(p=y-C.cutLen));let M=[...g.get(a)??[]].sort((v,R)=>v.t-R.t);for(let v of M)v.r=Math.min(v.r,v.d-c,p-v.d);for(let v=0;v<M.length-1;v++){let R=M[v+1].d-M[v].d;if(M[v].r+M[v+1].r>R){let I=R/2;M[v].r=Math.min(M[v].r,I),M[v+1].r=Math.min(M[v+1].r,I)}}for(let v of M)v.r<vr||l.push(...Ho(v,L,m,h,n.jumpStyle));r&&C?(l.push(`L${re(C.startX)},${re(C.startY)}`),l.push(`Q${re(C.ctrlX)},${re(C.ctrlY)} ${re(C.endX)},${re(C.endY)}`)):l.push(`L${Ae(u.b)}`)}return l.join(" ")}f(Xo,"rewriteEdgePath");function Yo(t){return/^[\d\s+,.LMelm-]*$/.test(t)}f(Yo,"isStraightPath");function Go(t){return t?t==="linear"||t==="rounded"||t==="step"||t==="stepBefore"||t==="stepAfter":!0}f(Go,"curveSupportsLineHops");function $o(t){if(!t)return null;try{let e=typeof atob=="function"?atob(t):Buffer.from(t,"base64").toString(),n=JSON.parse(e);if(!Array.isArray(n))return null;let o=[];for(let s of n)s&&typeof s.x=="number"&&typeof s.y=="number"&&o.push({x:s.x,y:s.y});return o.length>=2?o:null}catch{return null}}f($o,"decodeDataPoints");function zo(t,e,n){if(!n.enabled)return;let o=t.node();if(!o)return;let s=new Map;for(let a of e)s.set(a.id,a);let r=[],i=new Map;for(let a of e){let u=typeof CSS<"u"&&CSS.escape?CSS.escape(a.id):a.id,y=o.querySelector(`path[data-id="${u}"]`);if(!y)continue;i.set(a.id,y);let m=$o(y.getAttribute("data-points"))??a.points;r.push({...a,points:m})}let g=ko(r);if(g.length===0)return;let l=new Map;for(let a of g){let u=l.get(a.jumpEdgeId)??[];u.push(a),l.set(a.jumpEdgeId,u)}for(let a of r){let u=l.get(a.id);if(!u||u.length===0)continue;let L=s.get(a.id)?.curve;if(L!==void 0&&!Go(L))continue;let m=i.get(a.id);if(!m)continue;if(L===void 0){let v=m.getAttribute("d")??"";if(!Yo(v))continue}let h=m.getAttribute("style")??"",c=/stroke-dasharray\s*:\s*0\s+([\d.]+)\s+[\d.]+\s+([\d.]+)/.exec(h),p=c?Number.parseFloat(c[1]):null,C=c?Number.parseFloat(c[2]):null,M=Xo(a,u,n);if(m.setAttribute("d",M),p!==null&&C!==null&&typeof m.getTotalLength=="function"){let v=m.getTotalLength(),R=Math.max(0,v-p-C),I=`0 ${p} ${R} ${C}`,b=h.replace(/stroke-dasharray\s*:[^;]*;?/g,`stroke-dasharray: ${I};`).replace(/;\s*;+/g,";");m.setAttribute("style",b)}}}f(zo,"applyLineJumpsToSvg");function Vo(t,{measure:e}){let n=t.config?.swimlane?.lineHops;if(n===!1)return;let o=n==="gap"?"gap":"arc",s=t.edges.filter(r=>Array.isArray(r.points)&&r.points.length>=2).map(r=>({id:r.id,points:r.points,curve:r.curve,arrowTypeStart:r.arrowTypeStart,arrowTypeEnd:r.arrowTypeEnd}));zo(e.groups.edgePaths,s,{enabled:!0,jumpRadius:6,jumpStyle:o})}f(Vo,"applySwimlaneLineJumps");var bn="__swimlane_default__",Lr=21,Ro=20;function Ln(t){return Math.max(t.padding??Ro,Ro)}f(Ln,"topLaneHorizontalPadding");function Uo(t){let{x:e,y:n,width:o,height:s}=t,r=t.swimlaneContentTop;if(typeof e!="number"||typeof n!="number"||typeof o!="number"||typeof s!="number"||typeof r!="number"||!Number.isFinite(e)||!Number.isFinite(n)||!Number.isFinite(o)||!Number.isFinite(s)||!Number.isFinite(r)||o<=0||s<=0){delete t.groupTitleRect;return}let i=n-s/2,g=Math.min(r,n+s/2),l=Math.min(Lr,Math.max(0,g-i)),a=i+l;if(a<=i){delete t.groupTitleRect;return}t.groupTitleRect={left:e-o/2,right:e+o/2,top:i,bottom:a}}f(Uo,"assignTopLaneTitleRect");function jo(t){let e=t.direction,n=t.nodes??(t.nodes=[]);for(let r of t.nodes??[])r.isGroup&&!r.parentId&&(r.shape="swimlane",e&&(r.direction=e));let o=n.filter(r=>!r.isGroup&&!r.parentId);if(o.length===0)return;let s=n.find(r=>r.id===bn);s?s.isGroup&&(s.shape="swimlane",e&&(s.direction=e)):(s={id:bn,label:"",isGroup:!0,shape:"swimlane",padding:20,...e?{direction:e}:{}},n.push(s));for(let r of o)r.parentId=bn}f(jo,"prepareLayoutForSwimlanes");function Wo(t){let e=new Map;for(let l of t.nodes??[])e.set(l.id,l);let n=[];for(let l of t.edges??[]){let a=typeof l.start=="string"?l.start:void 0,u=typeof l.end=="string"?l.end:void 0;!a||!u||l.labelNodeId||n.push({id:l.id,src:a,dst:u,ref:l})}let o=t.nodes??[],s=o.filter(l=>l.isGroup),r=o.filter(l=>!l.isGroup);return{nodes:[...[...s].reverse(),...r].map(l=>l.id),edges:n,layout:t,nodeById:e}}f(Wo,"toGraphView");function Ko(t,e,n,o){let{layout:s}=t,r=t.nodeById,i=o?.layerGap??100,g=o?.nodeGap??40,l=0;for(let L of e.layers){let m=0;for(let h of L){let c=r.get(h);if(!c){m++;continue}c.layer=l,c.order=m;let p=n.x[h]??m*g,C=n.y[h]??l*i;c.x=p,c.y=C,m++}l++}let a=s.nodes??[],u=new Map,y=[];for(let L of a){if(!L?.isGroup)continue;L.parentId||y.push(L);let m=a.filter(M=>M.parentId===L.id),h=1/0,c=-1/0,p=1/0,C=-1/0;for(let M of m){let v=M.x??n.x[M.id],R=M.y??n.y[M.id],I=M.width??0,b=M.height??0;v!=null&&R!=null&&(h=Math.min(h,v-I/2),c=Math.max(c,v+I/2),p=Math.min(p,R-b/2),C=Math.max(C,R+b/2))}if(h===1/0||p===1/0)L.x=L.x??0,L.y=L.y??0,L.width=L.width??0,L.height=L.height??0;else{let M=L.padding??20,v=L.parentId?M:2*Ln(L),R=M,I=Math.max(0,c-h)+v,b=Math.max(0,C-p)+R,T=(h+c)/2,N=(p+C)/2;L.x=T,L.y=N,L.width=I,L.height=b,u.set(L.id,{minX:h,maxX:c,minY:p,maxY:C})}}if(y.length>0&&u.size>0){let L=1/0,m=-1/0,h=0;for(let c of y){let p=c.padding??20;p>h&&(h=p);let C=u.get(c.id);C&&(L=Math.min(L,C.minY),m=Math.max(m,C.maxY))}if(L!==1/0&&m!==-1/0){let c=Math.max(0,m-L),C=Math.max(h,36),M=c+2*C,v=(L+m)/2;for(let F of y)F.y=v,F.height=M,F.swimlaneContentTop=L;let R=[...y].sort((F,w)=>{let _=F.x??0,k=w.x??0;return _-k}),I=[],b=[],T=[];for(let F of R){let w=u.get(F.id);if(!w)continue;let _=Math.max(0,w.maxX-w.minX)+2*Ln(F),k=(w.minX+w.maxX)/2;I.push(F.id),b.push(k),T.push(_)}let N=I.length;if(N>0){let F=new Map;if(N===1)F.set(I[0],T[0]);else{let w=[];for(let $=0;$<N-1;$++)w.push(b[$+1]-b[$]);let _=new Array(N);_[0]=0;for(let $=0;$<N-1;$++)_[$+1]=2*w[$]-_[$];let k=0,B=Number.POSITIVE_INFINITY;for(let $=0;$<N;$++){let K=T[$];$%2===0?k=Math.max(k,K-_[$]):B=Math.min(B,_[$]-K)}let X=k;k<=B?X=(k+B)/2:X=k;for(let $=0;$<N;$++){let K=_[$]+($%2===0?X:-X),ct=Math.max(T[$],K);F.set(I[$],ct)}}for(let w of y){let _=F.get(w.id);_!=null&&(w.width=_),Uo(w)}}}}}f(Ko,"writeBackToLayoutData");var Er="[EdgeLabelNodes]";function qo(t){let e=[],n=[],o=new Map;for(let i of t.nodes)o.set(i.id,i);for(let i of t.edges){if(!i.label||i.label.length===0||i.isLayoutOnly||i.labelNodeId)continue;let g=i.start?o.get(i.start):void 0,l=i.end?o.get(i.end):void 0;if(!g||!l){Xe.warn(Er,`Edge ${i.id} has missing source or target node`);continue}let a=`edge-label-${i.start}-${i.end}-${i.id}`,y=g.parentId!==l.parentId?l.parentId:g.parentId,L={id:a,label:i.label,edgeStart:i.start??"",edgeEnd:i.end??"",shape:"labelRect",width:0,height:0,isEdgeLabel:!0,isDummy:!0,parentId:y,isGroup:!1,labelStyle:Array.isArray(i.labelStyle)?i.labelStyle[0]:i.labelStyle??"",...g.dir?{dir:g.dir}:{}};e.push(L),i.labelNodeId=a,i.label=void 0,i.text=void 0;let m={id:`${i.id}-to-label`,start:i.start,end:a,type:"normal",isLayoutOnly:!0},h={id:`${i.id}-from-label`,start:a,end:i.end,type:"normal",isLayoutOnly:!0};n.push(m,h)}let s=[...t.nodes,...e],r=[...t.edges,...n];return{...t,nodes:s,edges:r}}f(qo,"createEdgeLabelNodes");var _t=.001;function no(t){let e=t.x??0,n=t.y??0,o=t.width??0,s=t.height??0;return o>0&&s>0?{cx:e,cy:n,rect:we(e,n,o,s)}:void 0}f(no,"measuredNodeRect");function oo(t){if(t.isGroup)return;let e=no(t);return e?{id:String(t.id??""),cx:e.cx,cy:e.cy,rect:e.rect}:void 0}f(oo,"nodeBoundsInfoFor");function oe(t,e,n=_t){return Math.abs(t.x-e.x)<n&&Math.abs(t.y-e.y)<n}f(oe,"samePoint");function dt(t,e,n=_t){return Math.abs(t.x-e.x)<n}f(dt,"sameX");function ht(t,e,n=_t){return Math.abs(t.y-e.y)<n}f(ht,"sameY");function Tt(t,e,n=_t){return ht(t,e,n)&&Math.abs(t.x-e.x)>n}f(Tt,"isHorizontalSegment");function At(t,e,n=_t){return dt(t,e,n)&&Math.abs(t.y-e.y)>n}f(At,"isVerticalSegment");function zt(t,e,n,o){return Math.max(0,Math.min(Math.max(t,e),Math.max(n,o))-Math.max(Math.min(t,e),Math.min(n,o)))}f(zt,"overlapLength");function ce(t,e,n=_t){return t.horizontal&&e.horizontal&&ht(t.a,e.a,n)?zt(t.a.x,t.b.x,e.a.x,e.b.x):t.vertical&&e.vertical&&dt(t.a,e.a,n)?zt(t.a.y,t.b.y,e.a.y,e.b.y):0}f(ce,"sameAxisSegmentOverlapLength");function Re(t,e=_t){let n=[];for(let o=0;o<t.length-1;o++){let s=t[o],r=t[o+1],i=Tt(s,r,e),g=At(s,r,e);(i||g)&&n.push({index:o,a:s,b:r,horizontal:i,vertical:g})}return n}f(Re,"orthogonalSegmentsForPoints");function Qt(t,e=_t){let n=Re(t,e),o=0;for(let s=1;s<n.length;s++)n[s-1].horizontal!==n[s].horizontal&&o++;return o}f(Qt,"countOrthogonalBends");function pt(t,e=_t){let n=[];for(let o of t){let s=n.length>0?n[n.length-1]:void 0;(!s||!oe(s,o,e))&&n.push({x:o.x,y:o.y})}return n}f(pt,"dedupeConsecutivePoints");function so(t,e=_t){if(!t||t.length!==4)return;let[n,o,s,r]=t;return Tt(n,o,e)&&At(o,s,e)&&Tt(s,r,e)?{kind:"HVH",p0:n,p1:o,p2:s,p3:r}:At(n,o,e)&&Tt(o,s,e)&&At(s,r,e)?{kind:"VHV",p0:n,p1:o,p2:s,p3:r}:void 0}f(so,"classifyThreeSegmentRoute");function sn(t,e,n,o=0){let s=Math.min(t.x,e.x),r=Math.max(t.x,e.x),i=Math.min(t.y,e.y),g=Math.max(t.y,e.y);return r>n.left-o&&s<n.right+o&&g>n.top-o&&i<n.bottom+o}f(sn,"segmentBoundsOverlapRect");function ro(t,e,n=0){return t.x>e.left+n&&t.x<e.right-n&&t.y>e.top+n&&t.y<e.bottom-n}f(ro,"pointInsideRect");function Jo(t,e){return t.left<=e.left&&t.right>=e.right&&t.top<=e.top&&t.bottom>=e.bottom}f(Jo,"rectContainsRect");function Ke(t,e){return t.left<e.right&&t.right>e.left&&t.top<e.bottom&&t.bottom>e.top}f(Ke,"rectsOverlap");function En(t,e){return{left:t.left-e,right:t.right+e,top:t.top-e,bottom:t.bottom+e}}f(En,"inflateRect");function we(t,e,n,o){return{left:t-n/2,right:t+n/2,top:e-o/2,bottom:e+o/2}}f(we,"rectFromCenterSize");function qt(t){return no(t)?.rect}f(qt,"rectOfNodeBounds");function Ie(t,e){switch(e){case"top":return{x:t.cx,y:t.rect.top};case"bottom":return{x:t.cx,y:t.rect.bottom};case"left":return{x:t.rect.left,y:t.cy};case"right":return{x:t.rect.right,y:t.cy}}}f(Ie,"portForRectSide");function io(t,e,n,o,s,r=_t){let i=e==="left"||e==="right",g=o==="left"||o==="right";if(i&&g){if(e==="right"&&o==="left"&&t.x<n.x||e==="left"&&o==="right"&&t.x>n.x){if(ht(t,n,r))return[t,n];let y=(t.x+n.x)/2;return[t,{x:y,y:t.y},{x:y,y:n.y},n]}if(e===o){if(ht(t,n,r))return;let y=e==="left"?Math.min(t.x,n.x)-s:Math.max(t.x,n.x)+s;return[t,{x:y,y:t.y},{x:y,y:n.y},n]}return}if(!i&&!g){if(e===o){if(dt(t,n,r))return;let L=e==="top"?Math.min(t.y,n.y)-s:Math.max(t.y,n.y)+s;return[t,{x:t.x,y:L},{x:n.x,y:L},n]}if(!(e==="bottom"&&o==="top"&&t.y<n.y||e==="top"&&o==="bottom"&&t.y>n.y))return;if(dt(t,n,r))return[t,n];let y=(t.y+n.y)/2;return[t,{x:t.x,y},{x:n.x,y},n]}if(i&&!g){let u=e==="right"&&n.x>t.x||e==="left"&&n.x<t.x,y=o==="top"&&t.y<n.y||o==="bottom"&&t.y>n.y;return u&&y?[t,{x:n.x,y:t.y},n]:void 0}let l=e==="bottom"&&n.y>t.y||e==="top"&&n.y<t.y,a=o==="left"&&t.x<n.x||o==="right"&&t.x>n.x;return l&&a?[t,{x:t.x,y:n.y},n]:void 0}f(io,"buildOrthogonalPortPath");function co(t,e,n,o){return e==="left"||e==="right"?[t,{x:o,y:t.y},{x:o,y:n.y},n]:[t,{x:t.x,y:o},{x:n.x,y:o},n]}f(co,"buildSameSideTrackPath");function rn(t){let e=new Map,n=[];for(let o of t){if(o.isEdgeLabel)continue;let s=oo(o);s&&(e.set(s.id,s),n.push({id:s.id,rect:s.rect}))}return{nodeInfoById:e,realNodeRects:n}}f(rn,"collectRealNodeBounds");function me(t){let e=[],n=[];for(let o of t){let s=oo(o);if(!s)continue;let r={id:s.id,rect:s.rect};o.isEdgeLabel?n.push(r):e.push(r)}return{realNodeRects:e,labelNodeRects:n}}f(me,"collectNodeRectEntries");function Zo(t,{includeEdgeLabels:e=!0}={}){let n=[];for(let o of t){if(o.isGroup||!e&&o.isEdgeLabel)continue;let s=o.x??0,r=o.y??0,i=o.width??0,g=o.height??0;n.push({nodeId:o.id,...we(s,r,i,g)})}return n}f(Zo,"collectLayoutNodeRects");function ao(t,e,n=_t){let o=t.start,s=t.end;if(!o||!s)return;let r=e.get(o),i=e.get(s);if(!(!r||!i))return{srcId:o,dstId:s,srcInfo:r,dstInfo:i,collinearX:Math.abs(r.cx-i.cx)<n,collinearY:Math.abs(r.cy-i.cy)<n}}f(ao,"getNodePairGeometry");function wt(t,e,n,o=[],s=0){for(let r of n)if(!o.includes(r.id)&&sn(t,e,r.rect,-s))return!0;return!1}f(wt,"segmentHitsAnyRect");function lo(t,e,n,o,s=_t,r=1e-6){let i=ht(t,e,s),g=dt(t,e,s),l=ht(n,o,s),a=dt(n,o,s);if(i&&l||g&&a||!(i||g)||!(l||a))return!1;let u=i?{a:t,b:e}:{a:n,b:o},y=g?{a:t,b:e}:{a:n,b:o},L=u.a.y,m=Math.min(u.a.x,u.b.x),h=Math.max(u.a.x,u.b.x),c=y.a.x,p=Math.min(y.a.y,y.b.y),C=Math.max(y.a.y,y.b.y);if(c<m||c>h||L<p||L>C)return!1;let M=Math.abs(c-u.a.x)<r&&Math.abs(L-u.a.y)<r||Math.abs(c-u.b.x)<r&&Math.abs(L-u.b.y)<r,v=Math.abs(c-y.a.x)<r&&Math.abs(L-y.a.y)<r||Math.abs(c-y.b.x)<r&&Math.abs(L-y.b.y)<r;return!(M&&v)}f(lo,"orthogonalSegmentsCross");function Qo(t,e,n,o,s=_t){let r=ht(t,e,s),i=dt(t,e,s),g=ht(n,o,s),l=dt(n,o,s);return i&&l&&dt(t,n,s)?zt(t.y,e.y,n.y,o.y)>s:r&&g&&ht(t,n,s)?zt(t.x,e.x,n.x,o.x)>s:!1}f(Qo,"sameAxisSegmentsOverlap");function qe(t,e,n,o,{epsilon:s=_t,skipDegenerateOther:r=!1}={}){for(let i of n){if(i===o||i.isLayoutOnly)continue;let g=i.points;if(!(!g||g.length<2))for(let l=0;l<g.length-1;l++){let a=g[l],u=g[l+1];if(!(r&&oe(a,u,s))&&(lo(t,e,a,u,s)||Qo(t,e,a,u,s)))return!0}}return!1}f(qe,"segmentConflictsWithAnyEdge");function le(t,e,n,o,s=_t){let r=ht(t,e,s),i=dt(t,e,s),g=ht(n,o,s),l=dt(n,o,s);if(!(r&&l||i&&g))return!1;let a=r?{a:t,b:e}:{a:n,b:o},u=r?{a:n,b:o}:{a:t,b:e},y=a.a.y,L=Math.min(a.a.x,a.b.x),m=Math.max(a.a.x,a.b.x),h=u.a.x,c=Math.min(u.a.y,u.b.y),p=Math.max(u.a.y,u.b.y);return h>L+s&&h<m-s&&y>c+s&&y<p-s}f(le,"orthogonalSegmentsStrictlyCross");function Tn(t,e,n){let o=Math.min(e,n),s=Math.max(e,n);return t>o+_t&&t<s-_t}f(Tn,"strictlyBetween");function ts(t,e,n){return dt(t,e)&&dt(e,n)?Tn(e.y,t.y,n.y):ht(t,e)&&ht(e,n)?Tn(e.x,t.x,n.x):!1}f(ts,"isCollinearIntermediate");function es(t){let e=!1,n=[];for(let o=0;o<t.length;o++){let s=n[n.length-1],r=t[o],i=o+1<t.length?t[o+1]:void 0;if(s&&i){if(oe(s,i)){o++,e=!0;continue}if(ts(s,r,i)){e=!0;continue}}n.push(r)}return{points:n,changed:e}}f(es,"simplifyPolylineOnce");function Je(t){let e=[t[0]];for(let o=1;o<t.length;o++){let s=e[e.length-1],r=t[o];if(!dt(s,r)&&!ht(s,r)){let i=e.length>=2?e[e.length-2]:void 0,l=(i?dt(i,s):!1)?{x:s.x,y:r.y}:{x:r.x,y:s.y};e.push(l)}e.push(r)}let n=[];for(let o of e){let s=n[n.length-1];(!s||!oe(s,o))&&n.push(o)}return n}f(Je,"orthogonalizePolyline");function ae(t){if(t.length<3)return t;let e=[...t];for(let n=0;n<32;n++){let o=es(e);if(e=o.points,!o.changed)break}return e}f(ae,"simplifyPolyline");var nt=.001,Tr=.5,No=4;function fo(t,e,n){let o=t;if(o.isLayoutOnly||!o.points||o.points.length<n)return;let s=o.start?e.get(o.start):void 0,r=o.end?e.get(o.end):void 0;return{edge:o,points:o.points,srcRect:s?qt(s):void 0,dstRect:r?qt(r):void 0}}f(fo,"endpointContextFor");function ns(t,e,n){if(ht(t,e,nt))return{x:t.x<n.left?n.left:n.right,y:t.y};if(dt(t,e,nt)){let o=t.y<n.top?n.top:n.bottom;return{x:t.x,y:o}}return{x:Math.min(n.right,Math.max(n.left,t.x)),y:Math.min(n.bottom,Math.max(n.top,t.y))}}f(ns,"segmentEnterPoint");function An(t,e,n){let o=n?1:-1,s=n?0:t.length-1;for(;s>=0&&s<t.length&&ro(t[s],e,Tr);)s+=o;if(s<0||s>=t.length)return t;let r=s-o;if(r<0||r>=t.length)return t;let i=ns(t[s],t[r],e);return n?[i,...t.slice(s)]:[...t.slice(0,s+1),i]}f(An,"clipEndpoint");function os(t,e){for(let n of t){let o=fo(n,e,2);if(!o)continue;let s=[...o.points];o.srcRect&&(s=An(s,o.srcRect,!0)),o.dstRect&&(s=An(s,o.dstRect,!1)),s=ae(Je(s)),s=uo(s,o.srcRect,o.dstRect),o.edge.points=ae(Je(s))}}f(os,"clipEdgeEndpointsToNodeBoundaries");function wn(t,e,n,o=!1){if(ht(t,e,nt)){if(e.y<n.top-nt||e.y>n.bottom+nt)return e;if(o){if(t.x<n.left-nt)return{x:n.left,y:t.y};if(t.x>n.right+nt)return{x:n.right,y:t.y}}return{x:Math.abs(e.x-n.left)<=Math.abs(e.x-n.right)?n.left:n.right,y:t.y}}if(dt(t,e,nt)){if(e.x<n.left-nt||e.x>n.right+nt)return e;if(o){if(t.y<n.top-nt)return{x:t.x,y:n.top};if(t.y>n.bottom+nt)return{x:t.x,y:n.bottom}}let s=Math.abs(e.y-n.top)<=Math.abs(e.y-n.bottom);return{x:t.x,y:s?n.top:n.bottom}}return e}f(wn,"snapEndpointToBoundary");function Ze(t,e,n){let o=t[e];for(let s=e+n;s>=0&&s<t.length;s+=n){let r=t[s];if(!oe(r,o,nt))return r}return t[e+n]}f(Ze,"firstDistinctAdjacent");function Qe(t,e){let n=t+No,o=e-No;return n<=o?{lo:n,hi:o}:{lo:(t+e)/2,hi:(t+e)/2}}f(Qe,"cornerClearanceRange");function Rn(t,e,n){let{lo:o,hi:s}=Qe(e,n);return Math.min(s,Math.max(o,t))}f(Rn,"clampToCornerClearance");function ss(t){let e=Math.max(...t.map(o=>o.lo)),n=Math.min(...t.map(o=>o.hi));if(!(e>n))return{lo:e,hi:n}}f(ss,"intersectRanges");function Nn(t,e){return e==="left"||e==="right"?Qe(t.top,t.bottom):Qe(t.left,t.right)}f(Nn,"clearanceRangeForSide");function tn(t,e,n){let o=t.y>=n.top-nt&&t.y<=n.bottom+nt,s=t.x>=n.left-nt&&t.x<=n.right+nt;if(ht(t,e,nt)&&o){if(Math.abs(t.x-n.left)<nt)return"left";if(Math.abs(t.x-n.right)<nt)return"right"}if(dt(t,e,nt)&&s){if(Math.abs(t.y-n.top)<nt)return"top";if(Math.abs(t.y-n.bottom)<nt)return"bottom"}}f(tn,"terminalSideForSegment");function Oe(t){return t==="left"||t==="right"}f(Oe,"isHorizontalSide");function rs(t,e,n,o,s){let r=[],i=n?tn(t,e,n):void 0,g=o?tn(e,t,o):void 0;return n&&i&&Oe(i)===s&&r.push(Nn(n,i)),o&&g&&Oe(g)===s&&r.push(Nn(o,g)),r.length>0?ss(r):void 0}f(rs,"straightClearanceRange");function On(t,e,n,o,s){let r=rs(t,e,n,o,s);if(!r)return;let i=s?t.y:t.x,g=Math.min(r.hi,Math.max(r.lo,i));if(!(Math.abs(g-i)<nt))return s?[{x:t.x,y:g},{x:e.x,y:g}]:[{x:g,y:t.y},{x:g,y:e.y}]}f(On,"clearStraightEndpointCornerAxis");function uo(t,e,n){if(t.length!==2)return t;let[o,s]=t;return ht(o,s,nt)?On(o,s,e,n,!0)??t:dt(o,s,nt)?On(o,s,e,n,!1)??t:t}f(uo,"clearStraightEndpointCornerConnections");function is(t,e,n){return Oe(n)?{x:t.x,y:Rn(t.y,e.top,e.bottom)}:{x:Rn(t.x,e.left,e.right),y:t.y}}f(is,"cornerClearedEndpoint");function cs(t,e,n,o,s,r){let i=t.map(g=>({...g}));for(let g=e;g>=0&&g<t.length;g+=n){let l=t[g];if(r&&!ht(l,o,nt)||!r&&!dt(l,o,nt))break;r?i[g].y=s.y:i[g].x=s.x}return i}f(cs,"moveCollinearEndpointRun");function Bn(t,e,n){if(t.length<2)return t;let o=n?0:t.length-1,s=n?1:-1,r=t[o],i=Ze(t,o,s);if(!i)return t;let g=tn(r,i,e);if(!g)return t;let l=Oe(g),a=is(r,e,g);return oe(r,a,nt)?t:cs(t,o,s,r,a,l)}f(Bn,"clearEndpointCornerConnection");function Fn(t,e,n){let o=Math.min(t.x,e.x)>=n.left-nt&&Math.max(t.x,e.x)<=n.right+nt,s=Math.min(t.y,e.y)>=n.top-nt&&Math.max(t.y,e.y)<=n.bottom+nt;if(Math.abs(t.y-n.top)<nt&&Math.abs(e.y-n.top)<nt&&o)return"top";if(Math.abs(t.y-n.bottom)<nt&&Math.abs(e.y-n.bottom)<nt&&o)return"bottom";if(Math.abs(t.x-n.left)<nt&&Math.abs(e.x-n.left)<nt&&s)return"left";if(Math.abs(t.x-n.right)<nt&&Math.abs(e.x-n.right)<nt&&s)return"right"}f(Fn,"borderSideForSegment");function Pn(t,e,n,o){switch(t){case"top":return dt(e,n,nt)&&n.y<o.top-nt;case"bottom":return dt(e,n,nt)&&n.y>o.bottom+nt;case"left":return ht(e,n,nt)&&n.x<o.left-nt;case"right":return ht(e,n,nt)&&n.x>o.right+nt}}f(Pn,"leavesOutward");function kn(t,e,n){if(t.length<3)return t;if(n){let r=Fn(t[0],t[1],e);return r&&Pn(r,t[1],t[2],e)?t.slice(1):t}let o=t.length-1,s=Fn(t[o-1],t[o],e);return s&&Pn(s,t[o-1],t[o-2],e)?t.slice(0,o):t}f(kn,"collapseOwnBorderStub");function as(t,e,n){let o=t;if(e){let r=Ze(o,0,1);if(r){let i=wn(r,o[0],e);i!==o[0]&&(o=[i,...o.slice(1)])}o=kn(o,e,!0)}if(n){let r=o.length-1,i=Ze(o,r,-1);if(i){let g=wn(i,o[r],n,!0);g!==o[r]&&(o=[...o.slice(0,r),g])}o=kn(o,n,!1)}let s=uo(o,e,n);return s!==o||o.length===2?s:(e&&(o=Bn(o,e,!0)),n&&(o=Bn(o,n,!1)),o)}f(as,"snapAndCollapseEndpoints");function _n(t,e){for(let n of t){let o=fo(n,e,2);if(!o)continue;let s=pt(o.points,nt),r=as(s,o.srcRect,o.dstRect);if(r.length<3){o.edge.points=r;continue}let i=[r[0],{...r[0]},...r.slice(1,-1),r[r.length-1],{...r[r.length-1]}];o.edge.points=i}}f(_n,"prepareEdgeEndpointsForRenderer");function ho(t){return new Map(t.map(e=>[e.id,e]))}f(ho,"buildNodeMap");function ls(t,e){let n=t.parentId,o=null;for(;n;){let s=e.get(n);if(!s?.isGroup)break;o=s.id,n=s.parentId}return o}f(ls,"resolveTopLevelGroupId");function Dn(t,e){let n=0,o=t.parentId;for(;o;){let s=e.get(o);if(!s?.isGroup)break;n++,o=s.parentId}return n}f(Dn,"groupDepth");function go(t){let e=1/0,n=-1/0,o=1/0,s=-1/0;for(let r of t){let i=r.x,g=r.y;if(typeof i!="number"||typeof g!="number")continue;let l=r.width??0,a=r.height??0;e=Math.min(e,i-l/2),n=Math.max(n,i+l/2),o=Math.min(o,g-a/2),s=Math.max(s,g+a/2)}return e===1/0||o===1/0?null:{minX:e,maxX:n,minY:o,maxY:s}}f(go,"boundsForChildren");function fs(t,e){let n=t.padding??20;t.x=(e.minX+e.maxX)/2,t.y=(e.minY+e.maxY)/2,t.width=Math.max(0,e.maxX-e.minX)+n,t.height=Math.max(0,e.maxY-e.minY)+n}f(fs,"applyGroupBounds");function ds(t){let e=ho(t),n=t.filter(o=>o.isGroup&&o.parentId).sort((o,s)=>Dn(s,e)-Dn(o,e));for(let o of n){let s=t.filter(i=>i.parentId===o.id),r=go(s);r&&fs(o,r)}}f(ds,"recomputeNestedGroupBounds");function en(t,e){let n=t.nodes??[],o=t.edges??[],s=n.filter(l=>!l.isGroup),r=1/0,i=-1/0;for(let l of s){let a=l[e];typeof a=="number"&&(r=Math.min(r,a),i=Math.max(i,a))}if(!Number.isFinite(r)||!Number.isFinite(i))return!1;let g=f(l=>r+i-l,"mirror");for(let l of n){let a=l[e];typeof a=="number"&&(l[e]=g(a));let u=l.groupTitleRect;u&&(l.groupTitleRect=e==="x"?{...u,left:g(u.right),right:g(u.left)}:{...u,top:g(u.bottom),bottom:g(u.top)})}for(let l of o)for(let a of l.points??[])a[e]=g(a[e]);return!0}f(en,"mirrorAxis");function us(t){return(t.nodes??[]).some(n=>!n.isGroup)?en(t,"y"):!0}f(us,"applyBtDirectionTransform");function hs(t,e="LR"){let n=t.nodes??[],o=t.edges??[],s=n.filter(B=>!B.isGroup),r=1/0,i=1/0;for(let B of s){let X=B.x??0,$=B.y??0;X<r&&(r=X),$<i&&(i=$)}if(!Number.isFinite(r)||!Number.isFinite(i))return!1;let g=36,l=0,a=0;for(let B of s)l+=B.width??0,a+=B.height??0;let u=l/s.length,y=a/s.length,L=y>0?Math.max(1,u/y):1;for(let B of s){let X=B.x??0,K=((B.y??0)-i)*L+g,ct=X-r;B.x=K,B.y=ct}for(let B of o)if(B.points)for(let X of B.points){let $=X.x,ct=(X.y-i)*L+g,mt=$-r;X.x=ct,X.y=mt}ds(n);let m=n.filter(B=>B.isGroup&&!B.parentId);if(m.length===0)return e==="RL"&&en(t,"x"),!0;let h=ho(n),c=new Map;for(let B of n){if(B.isGroup)continue;let X=ls(B,h);if(!X)continue;let $=c.get(X)??[];$.push(B),c.set(X,$)}let p=0;for(let B of m){let X=B.padding??0;X>p&&(p=X)}let C=[],M=1/0,v=-1/0;for(let B of m){let X=c.get(B.id)??[],$=go(X);$&&(M=Math.min(M,$.minX),v=Math.max(v,$.maxX),C.push({lane:B,contentTop:$.minY,contentBottom:$.maxY,centerY:($.minY+$.maxY)/2}))}if(M===1/0||v===-1/0)return!0;let R=Math.max(0,v-M),I=Math.max(p,10),b=R+2*I,T=g+b,w=(M+v)/2-b/2-g,_=w+T/2,k=Math.max(p,g);C.sort((B,X)=>B.centerY-X.centerY);for(let B=0;B<C.length;B++){let X=C[B],$,K;if(B===0?$=X.contentTop-k:$=(C[B-1].contentBottom+X.contentTop)/2,B===C.length-1)K=X.contentBottom+k;else{let Rt=C[B+1];K=(X.contentBottom+Rt.contentTop)/2}let ct=Math.max(0,K-$),mt=($+K)/2;X.lane.x=_,X.lane.y=mt,X.lane.width=T,X.lane.height=ct,X.lane.swimlaneContentTop=X.contentTop,X.lane.groupTitleRect={left:w,right:w+g,top:$,bottom:K}}return e==="RL"&&en(t,"x"),!0}f(hs,"applyLrDirectionTransform");var se=1e-6,Ar=8,$e=Ar,wr=[0,$e,-$e,2*$e,-2*$e];function gs(t,e){let{nodeInfoById:n,realNodeRects:o}=rn(e);for(let s of t){if(s.isLayoutOnly)continue;let r=s.points;if(!r||r.length<4)continue;let i=so(pt(r,se),se);if(!i)continue;let{p3:g}=i,l=i.kind==="HVH",a=ao(s,n,se);if(!a)continue;let{srcId:u,dstId:y,srcInfo:L,dstInfo:m,collinearX:h,collinearY:c}=a;if(h||c)continue;let p,C=L.rect;for(let M of wr){let v,R,I;if(l){let _=m.cy>L.cy?C.bottom:C.top,k=L.cx+M;if(k<=C.left+se||k>=C.right-se)continue;v={x:k,y:_},R={x:k,y:g.y},I={x:g.x,y:g.y}}else{let _=m.cx>L.cx?C.right:C.left,k=L.cy+M;if(k<=C.top+se||k>=C.bottom-se)continue;v={x:_,y:k},R={x:g.x,y:k},I={x:g.x,y:g.y}}let b=oe(v,R,se),T=oe(R,I,se);if(b&&T||!b&&wt(v,R,o,[u],1)||!T&&wt(R,I,o,[y],1))continue;let N=!b&&qe(v,R,t,s,{epsilon:se,skipDegenerateOther:!0}),F=!T&&qe(R,I,t,s,{epsilon:se,skipDegenerateOther:!0});if(!(N||F)){b?p=[R,I]:T?p=[v,R]:p=[v,R,I];break}}p&&(s.points=p)}}f(gs,"portSwapToLShape");function ps(t,e){let{realNodeRects:r,labelNodeRects:i}=me(e.values());for(let g of t){if(g.isLayoutOnly)continue;let l=g.points;if(!l||l.length<4)continue;let a=pt(l,.001);if(a.length<4)continue;let u=a.length-1,y=a[u],L=a[u-1],m=a[u-2],h=y.x-L.x,c=y.y-L.y,p=Math.hypot(h,c);if(p>=10||p<.001)continue;let C=L.x-m.x,M=L.y-m.y;if(Math.hypot(C,M)<.001)continue;let R=Tt(L,y,.001),I=At(L,y,.001),b=Tt(m,L,.001),T=At(m,L,.001);if(!(R&&T||I&&b))continue;let N=g.end,F=g.start,w=N?e.get(N):void 0;if(!w)continue;let _=w.x??0,k=w.y??0,B=qt(w);if(!B)continue;let X,$;if(T){let W=M<0;X={x:_,y:m.y},$={x:_,y:W?B.bottom:B.top}}else{let W=C>0;X={x:m.x,y:k},$={x:W?B.right:B.left,y:k}}if(wt(X,$,r,N?[N]:[],-2)||wt(X,$,i,[],-2))continue;if(F){let W=e.get(F),et=W?qt(W):void 0;if(et&&ro(X,et,2))continue}let K=f((W,et)=>`${W.x.toFixed(3)},${W.y.toFixed(3)}|${et.x.toFixed(3)},${et.y.toFixed(3)}`,"ownSegmentKey"),ct=new Set;for(let W=0;W<a.length-1;W++)ct.add(K(a[W],a[W+1]));let mt=f((W,et)=>{for(let lt of t){if(lt===g||lt.isLayoutOnly)continue;let gt=lt.points;if(!(!gt||gt.length<2))for(let xt=0;xt<gt.length-1;xt++){let vt=gt[xt],Vt=gt[xt+1];if(!ct.has(K(vt,Vt))&&le(W,et,vt,Vt,.001))return!0}}return!1},"segmentCrossesOtherEdge");if(mt(X,$))continue;if(u-3>=0){let W=a[u-3],et=[F,N].filter(lt=>!!lt);if(wt(W,X,r,et,-2)||mt(W,X))continue}let Ft=[...a.slice(0,u-2),X,$];g.points=Ft;let Q=g.labelNodeId;if(Q){let W=e.get(Q);if(W){let et=W.width??0,lt=W.height??0;if(et>0&&lt>0){let gt,xt,vt=-1;for(let Vt=0;Vt<Ft.length-1;Vt++){let Ut=Ft[Vt],jt=Ft[Vt+1],te=Math.hypot(jt.x-Ut.x,jt.y-Ut.y),Se=ht(Ut,jt,.001),de=dt(Ut,jt,.001);(Se&&te>=et+2||de&&te>=lt+2)&&te>vt&&(vt=te,gt=(Ut.x+jt.x)/2,xt=(Ut.y+jt.y)/2)}gt!==void 0&&xt!==void 0&&(W.x=gt,W.y=xt)}}}}}f(ps,"collapseShortTerminalStub");var Z=.001,kt=8,it=Re,Mn=f((t,e)=>dt(t,e,Z)||ht(t,e,Z),"orthogonallyAligned");function ms(t,e){let s=f((m,h)=>{let c=m.x??0,p=m.y??0,C=h.x-c,M=h.y-p,v=(m.width??0)/2,R=(m.height??0)/2;return Math.abs(M)*v>Math.abs(C)*R?(M<0&&(R=-R),{x:c+(M===0?0:R*C/M),y:p+R}):(C<0&&(v=-v),{x:c+v,y:p+(C===0?0:v*M/C)})},"rectIntersect"),r=f((m,h)=>{let c=pt(m.points??[]);if(c.length<2)return;let p=h?m.start:m.end,C=p?e.get(p):void 0,M=C?qt(C):void 0;if(!C||!p||!M)return;let v=h?c[0]:c[c.length-1],R=h?c[1]:c[c.length-2],I=s(C,v),b=v;if(Mn(R,I)&&(b=R),dt(I,b,Z))return{edge:m,edgeId:String(m.id??""),nodeId:p,atStart:h,orientation:"V",coord:I.x,min:Math.min(I.y,b.y),max:Math.max(I.y,b.y),boundary:I,railEnd:b,rect:M};if(ht(I,b,Z))return{edge:m,edgeId:String(m.id??""),nodeId:p,atStart:h,orientation:"H",coord:I.y,min:Math.min(I.x,b.x),max:Math.max(I.x,b.x),boundary:I,railEnd:b,rect:M}},"terminalLaneFor"),i=f((m,h)=>Math.max(0,Math.min(m.max,h.max)-Math.max(m.min,h.min)),"projectedOverlapLength"),g=f((m,h)=>m.nodeId!==h.nodeId||m.orientation!==h.orientation?!1:m.orientation==="H"?(Math.abs(m.boundary.x-m.rect.left)<1||Math.abs(m.boundary.x-m.rect.right)<1)&&dt(m.boundary,h.boundary,1):(Math.abs(m.boundary.y-m.rect.top)<1||Math.abs(m.boundary.y-m.rect.bottom)<1)&&ht(m.boundary,h.boundary,1),"sameTerminalFace"),l=f((m,h)=>m.nodeId!==h.nodeId||m.orientation!==h.orientation?!1:i(m,h)>=kt&&Math.abs(m.coord-h.coord)<.5,"exactTerminalLaneConflict"),a=f((m,h)=>{if(m.nodeId!==h.nodeId||m.orientation!==h.orientation||m.orientation!=="H"||m.atStart===h.atStart)return!1;let c=i(m,h);if(c<kt)return!1;let p=m.rect.bottom-m.rect.top;return c<p||c>2*p?!1:g(m,h)&&Math.abs(m.coord-h.coord)<16},"nearTerminalLaneConflict"),u=f((m,h)=>{let c=pt(m.edge.points??[]);if(c.length<2)return;let p=m.orientation==="V"?{x:m.boundary.x+h,y:m.boundary.y}:{x:m.boundary.x,y:m.boundary.y+h},C=m.orientation==="V"?{x:m.railEnd.x+h,y:m.railEnd.y}:{x:m.railEnd.x,y:m.railEnd.y+h};if(!f(()=>Math.abs(m.boundary.y-m.rect.top)<1||Math.abs(m.boundary.y-m.rect.bottom)<1?ht(p,m.boundary,Z)&&p.x>=m.rect.left+1&&p.x<=m.rect.right-1:Math.abs(m.boundary.x-m.rect.left)<1||Math.abs(m.boundary.x-m.rect.right)<1?dt(p,m.boundary,Z)&&p.y>=m.rect.top+1&&p.y<=m.rect.bottom-1:!1,"boundaryStaysOnSameFace")())return;if(m.atStart){let b=c.length>1&&oe(c[1],m.railEnd,Z),T=c.slice(b?2:1),N=T[0];return N&&!Mn(N,C)?void 0:[p,C,...T]}let v=c.length>1&&oe(c[c.length-2],m.railEnd,Z),R=c.slice(0,v?-2:-1),I=R[R.length-1];if(!(I&&!Mn(I,C)))return[...R,C,p]},"shiftedCandidate"),y=f(m=>{let h=m.edge,c=pt(h.points??[]);if(c.length!==2)return!1;let p=h.start,C=h.end,M=p?e.get(p):void 0,v=C?e.get(C):void 0;if(!M||!v)return!1;let R=M.x??0,I=M.y??0,b=v.x??0,T=v.y??0,[N,F]=c;return ht(N,F,Z)&&Math.abs(I-T)<1&&Math.abs(R-b)>1||dt(N,F,Z)&&Math.abs(R-b)<1&&Math.abs(I-T)>1},"laneIsStraightCollinearConnector"),L=[-7,7,-14,14,-21,21];for(let m=0;m<8;m++){let h=t.filter(p=>!p.isLayoutOnly).flatMap(p=>[r(p,!0),r(p,!1)]).filter(p=>!!p),c=!1;for(let p=0;p<h.length&&!c;p++)for(let C=p+1;C<h.length&&!c;C++){let M=h[p],v=h[C];if(M.edge===v.edge||!(l(M,v)||a(M,v)))continue;let R=!l(M,v),I=[M,v].sort((b,T)=>{let N=y(b),F=y(T);return N!==F?Number(N)-Number(F):+!T.atStart-+!b.atStart});for(let b of I){for(let T of L){let N=u(b,T);if(!N)continue;let F=r({...b.edge,points:N},b.atStart);if(!(!F||h.some(w=>w.edge!==b.edge&&(l(F,w)||R&&a(F,w))))){b.edge.points=N,c=!0;break}}if(c)break}}if(!c)return}}f(ms,"separateSharedRenderedTerminalLanes");function ys(t,e){let{realNodeRects:s,labelNodeRects:r}=me(e.values()),i=f((l,a)=>{let u=l.start,y=l.end,L=it(a);if(L.length!==a.length-1)return!1;let m=[u,y].filter(h=>!!h);for(let h of L)if(wt(h.a,h.b,s,m,-2)||wt(h.a,h.b,r,[],-2))return!1;for(let h of t){if(h===l||h.isLayoutOnly)continue;let c=h.points;if(!(!c||c.length<2)){for(let p of L)for(let C of it(pt(c)))if(ce(p,C,.5)>=kt||le(p.a,p.b,C.a,C.b,Z))return!1}}return!0},"candidateIsSafe"),g=f((l,a)=>{if(a+4>=l.length)return;let u=l[a],y=l[a+1],L=l[a+2],m=l[a+3],h=l[a+4],c=Tt(u,y)&&At(y,L)&&Tt(L,m)&&At(m,h)&&dt(u,m,Z)&&dt(u,h,Z)&&dt(y,L,Z)&&(y.x-u.x)*(m.x-L.x)<0,p=At(u,y)&&Tt(y,L)&&At(L,m)&&Tt(m,h)&&ht(u,m,Z)&&ht(u,h,Z)&&ht(y,L,Z)&&(y.y-u.y)*(m.y-L.y)<0;if(c||p)return pt([...l.slice(0,a+1),h,...l.slice(a+5)]);if(a+5>=l.length)return;let C=l[a+5],M=At(u,y)&&Tt(y,L)&&At(L,m)&&Tt(m,h)&&At(h,C)&&dt(u,h,Z)&&dt(u,C,Z)&&dt(L,m,Z)&&(L.x-y.x)*(h.x-m.x)<0,v=Tt(u,y)&&At(y,L)&&Tt(L,m)&&At(m,h)&&Tt(h,C)&&ht(u,h,Z)&&ht(u,C,Z)&&ht(L,m,Z)&&(L.y-y.y)*(h.y-m.y)<0;if(!(!M&&!v))return pt([...l.slice(0,a+1),C,...l.slice(a+6)])},"withoutDogleg");for(let l=0;l<8;l++){let a=!1;for(let u of t){if(u.isLayoutOnly)continue;let y=pt(u.points??[]);for(let L=0;L<=y.length-5;L++){let m=g(y,L);if(!(!m||!i(u,m))){u.points=m,a=!0;break}}if(a)break}if(!a)return}}f(ys,"collapseRedundantRectangularDoglegs");function Hn(t,e){let{realNodeRects:r,labelNodeRects:i}=me(e.values()),g=t.filter(h=>!h.isLayoutOnly),l=f((h,c,p)=>pt(h===c?p??[]:h.points??[]),"pointsFor"),a=f((h,c)=>{let p=0;for(let C=0;C<g.length;C++){let M=it(l(g[C],h,c));for(let v=C+1;v<g.length;v++){let R=it(l(g[v],h,c));for(let I of M)for(let b of R)le(I.a,I.b,b.a,b.b,Z)&&p++}}return p},"strictCrossingCount"),u=f(h=>{let c=it(h);if(c.length!==3)return;let p=c[1];if(!(c[0].horizontal===p.horizontal||c[2].horizontal===p.horizontal))return{index:p.index,horizontal:p.horizontal,vertical:p.vertical,segment:p}},"middleRail"),y=f((h,c)=>{let p=[h.start,h.end].filter(C=>!!C);return r.filter(C=>{if(p.includes(C.id))return!1;let M=C.rect;return c.horizontal?zt(c.a.x,c.b.x,M.left,M.right)>=kt&&c.a.y>=M.top-2&&c.a.y<=M.bottom+2:zt(c.a.y,c.b.y,M.top,M.bottom)>=kt&&c.a.x>=M.left-2&&c.a.x<=M.right+2})},"blockingRectsFor"),L=f((h,c,p)=>{let C=h.map(v=>({...v}));if(c.horizontal)C[c.index].y=p,C[c.index+1].y=p;else if(c.vertical)C[c.index].x=p,C[c.index+1].x=p;else return;let M=ae(pt(C));return it(M).length===M.length-1?M:void 0},"candidateByMovingRail"),m=f((h,c,p)=>{let C=[h.start,h.end].filter(v=>!!v),M=it(c);if(M.length!==c.length-1)return!1;for(let v of M)if(wt(v.a,v.b,r,C,-2)||wt(v.a,v.b,i,[],-2))return!1;for(let v of g)if(v!==h){for(let R of M)for(let I of it(l(v)))if(ce(R,I,.5)>=kt)return!1}return a(h,c)<=p},"candidateIsSafe");for(let h=0;h<8;h++){let c=a(),p=!1;for(let C of g){let M=l(C),v=u(M);if(!v)continue;let R=y(C,v.segment);if(R.length===0)continue;let I=v.horizontal?[Math.min(...R.map(b=>b.rect.top))-20,Math.max(...R.map(b=>b.rect.bottom))+20]:[Math.min(...R.map(b=>b.rect.left))-20,Math.max(...R.map(b=>b.rect.right))+20];for(let b of I){let T=L(M,v.segment,b);if(!(!T||!m(C,T,c))){C.points=T,p=!0;break}}if(p)break}if(!p)return}}f(Hn,"liftObstacleHuggingSameSideRails");function Xn(t,e){let o=f(l=>{let a=l.groupTitleRect;if(!(!a||typeof a.left!="number"||typeof a.right!="number"||typeof a.top!="number"||typeof a.bottom!="number"||!Number.isFinite(a.left)||!Number.isFinite(a.right)||!Number.isFinite(a.top)||!Number.isFinite(a.bottom)||a.right<=a.left||a.bottom<=a.top))return{left:a.left,right:a.right,top:a.top,bottom:a.bottom}},"validTitleRect"),s=f(l=>{if(!l.isGroup||l.parentId)return;let a=l.direction,u=typeof a=="string"?a.toUpperCase():"";if(u==="LR"||u==="RL"||u==="BT")return;let y=o(l),L=l.y,m=l.height;if(!y||typeof L!="number"||typeof m!="number"||!Number.isFinite(L)||!Number.isFinite(m)||m<=0)return;let h=y.right-y.left,c=y.bottom-y.top;if(!(c<=0||h<c))return{node:l,rect:y}},"topLaneTitleFor"),r=f((l,a)=>{if(!l.horizontal)return!1;let u=l.a.y;return u<=a.top+Z||u>=a.bottom-Z?!1:zt(l.a.x,l.b.x,a.left,a.right)>=kt},"horizontalSegmentIntersectsTitle"),i=[...e.values()].map(s).filter(l=>!!l);if(i.length===0)return;let g=0;for(let l of t){if(l.isLayoutOnly)continue;let a=pt(l.points??[]);for(let u of it(a))for(let y of i)r(u,y.rect)&&(g=Math.max(g,y.rect.bottom-u.a.y+4))}if(!(g<=Z))for(let l of i){let a=l.node.y,u=l.node.height;typeof a!="number"||typeof u!="number"||!Number.isFinite(a)||!Number.isFinite(u)||u<=0||(l.node.y=a-g/2,l.node.height=u+g,l.node.groupTitleRect={...l.rect,top:l.rect.top-g,bottom:l.rect.bottom-g})}}f(Xn,"liftTopLaneTitleBandsAboveRails");function Yn(t,e){let o=f(a=>{let u=a.groupTitleRect;if(!(!u||typeof u.left!="number"||typeof u.right!="number"||typeof u.top!="number"||typeof u.bottom!="number"||!Number.isFinite(u.left)||!Number.isFinite(u.right)||!Number.isFinite(u.top)||!Number.isFinite(u.bottom)||u.right<=u.left||u.bottom<=u.top))return{left:u.left,right:u.right,top:u.top,bottom:u.bottom}},"validTitleRect"),s=f(a=>{if(!a.isGroup||a.parentId||a.direction!=="LR")return;let y=o(a),L=a.x,m=a.width;if(!y||typeof L!="number"||typeof m!="number"||!Number.isFinite(L)||!Number.isFinite(m)||m<=0)return;let h=y.right-y.left,c=y.bottom-y.top;if(!(h<=0||c<h))return{node:a,rect:y}},"leftLaneTitleFor"),r=f((a,u)=>{if(!a.vertical)return!1;let y=a.a.x;return y<=u.left+Z||y>=u.right-Z?!1:zt(a.a.y,a.b.y,u.top,u.bottom)>=kt},"verticalSegmentIntersectsTitle"),i=f((a,u)=>{if(!a.horizontal)return!1;let y=a.a.y;return y<=u.top+Z||y>=u.bottom-Z?!1:zt(a.a.x,a.b.x,u.left,u.right)>=kt},"horizontalSegmentIntersectsTitle"),g=[...e.values()].map(s).filter(a=>!!a);if(g.length===0)return;let l=0;for(let a of t){if(a.isLayoutOnly)continue;let u=pt(a.points??[]);for(let y of it(u))for(let L of g)if(r(y,L.rect))l=Math.max(l,L.rect.right-y.a.x+4);else if(i(y,L.rect)){let m=Math.min(y.a.x,y.b.x);l=Math.max(l,L.rect.right-m+4)}}if(!(l<=Z))for(let a of g){let u=a.node.x,y=a.node.width;typeof u!="number"||typeof y!="number"||!Number.isFinite(u)||!Number.isFinite(y)||y<=0||(a.node.x=u-l/2,a.node.width=y+l,a.node.groupTitleRect={...a.rect,left:a.rect.left-l,right:a.rect.right-l})}}f(Yn,"shiftLeftLaneTitleBandsLeftOfRails");function xs(t,e){let{realNodeRects:s}=me(e.values()),r=t.filter(c=>!c.isLayoutOnly),i=f((c,p=new Map)=>pt(p.get(c)??c.points??[]),"replacementPointsFor"),g=f((c=new Map)=>{let p=0;for(let C=0;C<r.length;C++){let M=it(i(r[C],c));for(let v=C+1;v<r.length;v++){let R=it(i(r[v],c));for(let I of M)for(let b of R)le(I.a,I.b,b.a,b.b,Z)&&p++}}return p},"crossingCount"),l=f((c=new Map)=>r.reduce((p,C)=>p+Qt(i(C,c)),0),"totalBends"),a=f(c=>{let p=i(c);if(p.length<4)return;let C=p[p.length-2],M=p[p.length-1];if(!(!Tt(C,M,Z)&&!At(C,M,Z)))return{tailStart:C,terminal:M}},"terminalTailFor"),u=f((c,p)=>{let C=i(c);if(C.length<3)return;let M=C[0],v=C[1],R;if(Tt(M,v,Z))R={x:v.x,y:p.tailStart.y};else if(At(M,v,Z))R={x:p.tailStart.x,y:v.y};else return;let I=ae(pt([M,v,R,p.tailStart,p.terminal]));return it(I).length===I.length-1?I:void 0},"candidateWithDestinationTail"),y=f((c,p)=>{let C=[c.start,c.end].filter(M=>!!M);for(let M of it(p))if(wt(M.a,M.b,s,C,-2))return!0;return!1},"pathHasNodeHit"),L=f((c,p,C)=>{for(let M of r)if(M!==c){for(let v of it(p))for(let R of it(i(M,C)))if(ce(v,R,.5)>=kt)return!0}return!1},"pathHasSharedTrack"),m=f((c,p,C)=>!y(c,p)&&!L(c,p,C),"candidateIsSafe"),h=f(()=>{let c=new Map;for(let p of r){let C=p.end;if(!C||!e.has(C)||i(p).length<4)continue;let v=c.get(C)??[];v.push(p),c.set(C,v)}return c},"edgesByDestination");for(let c=0;c<4;c++){let p=g();if(p===0)return;let C=l(),M,v=p,R=C;for(let I of h().values())for(let b=0;b<I.length;b++)for(let T=b+1;T<I.length;T++){let N=I[b],F=I[T],w=a(N),_=a(F);if(!w||!_)continue;let k=u(N,_),B=u(F,w);if(!k||!B)continue;let X=new Map([[N,k],[F,B]]);if(!m(N,k,X)||!m(F,B,X))continue;let $=g(X),K=l(X);$>=p||$>v||$===v&&K>=R||(M=X,v=$,R=K)}if(!M)return;for(let[I,b]of M)I.points=b}}f(xs,"swapDestinationTerminalTailsToReduceCrossings");function bs(t,e){let{realNodeRects:i,labelNodeRects:g}=me(e.values()),l=t.filter(I=>!I.isLayoutOnly),a=f((I,b=new Map)=>pt(b.get(I)??I.points??[]),"replacementPointsFor"),u=f((I=new Map)=>{let b=0;for(let T=0;T<l.length;T++){let N=it(a(l[T],I));for(let F=T+1;F<l.length;F++){let w=it(a(l[F],I));for(let _ of N)for(let k of w)le(_.a,_.b,k.a,k.b,Z)&&b++}}return b},"strictCrossingCount"),y=f((I=new Map)=>l.reduce((b,T)=>b+Qt(a(T,I)),0),"totalBends"),L=f(I=>{let b=I.start,T=I.end,N=b?e.get(b):void 0,F=T?e.get(T):void 0,w=N?qt(N):void 0,_=F?qt(F):void 0;return w&&_?{src:w,dst:_}:void 0},"endpointRectsFor"),m=f((I,b,T)=>{if(T.index<=0||T.index+1>=b.length-1)return;let N=L(I);if(N){if(T.vertical){let F=T.a.x,w=Math.min(N.src.left,N.dst.left),_=Math.max(N.src.right,N.dst.right),k=F<w-Z?"left":F>_+Z?"right":void 0;return k?{edge:I,points:b,segmentIndex:T.index,axis:"vertical",side:k,coord:F,min:Math.min(T.a.y,T.b.y),max:Math.max(T.a.y,T.b.y)}:void 0}if(T.horizontal){let F=T.a.y,w=Math.min(N.src.top,N.dst.top),_=Math.max(N.src.bottom,N.dst.bottom),k=F<w-Z?"top":F>_+Z?"bottom":void 0;return k?{edge:I,points:b,segmentIndex:T.index,axis:"horizontal",side:k,coord:F,min:Math.min(T.a.x,T.b.x),max:Math.max(T.a.x,T.b.x)}:void 0}}},"externalRailForSegment"),h=f(()=>{let I=[];for(let b of l){let T=a(b);for(let N of it(T)){let F=m(b,T,N);F&&I.push(F)}}return I},"collectExternalRails"),c=f((I,b)=>I.edge!==b.edge&&I.axis===b.axis&&I.side===b.side&&zt(I.min,I.max,b.min,b.max)>=kt,"railsInteract"),p=f(I=>{let b=[],T=new Set;for(let N of I){if(T.has(N))continue;let F=[N],w=[];for(T.add(N);F.length>0;){let _=F.pop();w.push(_);for(let k of I)!T.has(k)&&c(_,k)&&(T.add(k),F.push(k))}w.length>1&&b.push(w)}return b},"connectedComponents"),C=f(I=>{let b=[];for(let T of I)b.some(N=>Math.abs(N-T.coord)<Z)||b.push(T.coord);for(;b.length<I.length;){let T=Math.min(...b),N=Math.max(...b),F=I[0].side;b.push(F==="left"||F==="top"?T-12*(I.length-b.length):N+12*(I.length-b.length))}return b},"uniqueCoordsFor"),M=f(I=>{let b=I.map(F=>F.coord),T=C(I),N=[];if(I.length<=6){let F=new Array(T.length).fill(!1),w=[],_=f(()=>{if(w.length===I.length){w.some((k,B)=>Math.abs(k-b[B])>=Z)&&N.push([...w]);return}for(let[k,B]of T.entries())F[k]||(F[k]=!0,w.push(B),_(),w.pop(),F[k]=!1)},"visit");return _(),N}for(let F=0;F<b.length;F++)for(let w=F+1;w<b.length;w++){let _=[...b];[_[F],_[w]]=[_[w],_[F]],N.push(_)}return N},"coordinateAssignmentsFor"),v=f((I,b)=>{let T=new Map;for(let[F,w]of I.entries()){let _=b[F],k=T.get(w.edge)??w.points.map(B=>({x:B.x,y:B.y}));w.axis==="vertical"?(k[w.segmentIndex].x=_,k[w.segmentIndex+1].x=_):(k[w.segmentIndex].y=_,k[w.segmentIndex+1].y=_),T.set(w.edge,k)}let N=new Map;for(let[F,w]of T){let _=ae(pt(w));if(it(_).length!==_.length-1)return;N.set(F,_)}return N},"replacementsForAssignment"),R=f(I=>{for(let[b,T]of I){let N=[b.start,b.end].filter(F=>!!F);for(let F of it(T))if(wt(F.a,F.b,i,N,-2)||wt(F.a,F.b,g,[],-2))return!1}for(let b=0;b<l.length;b++){let T=l[b],N=I.has(T),F=it(a(T,I));for(let w=b+1;w<l.length;w++){let _=l[w];if(!N&&!I.has(_))continue;let k=it(a(_,I));for(let B of F)for(let X of k)if(ce(B,X,.5)>=kt)return!1}}return!0},"candidateIsSafe");for(let I=0;I<4;I++){let b=u();if(b===0)return;let T,N=b,F=y(),w=Number.POSITIVE_INFINITY;for(let _ of p(h()))for(let k of M(_)){let B=v(_,k);if(!B||!R(B))continue;let X=u(B);if(X>=b)continue;let $=y(B),K=_.reduce((ct,mt,Rt)=>ct+Math.abs(k[Rt]-mt.coord),0);X>N||X===N&&($>F||$===F&&K>=w)||(T=B,N=X,F=$,w=K)}if(!T)return;for(let[_,k]of T)_.points=k}}f(bs,"reassignCrossingExternalRailChannels");function Ms(t,e){let{realNodeRects:s,labelNodeRects:r}=me(e.values()),i=t.filter(h=>!h.isLayoutOnly),g=f((h,c,p)=>pt(h===c?p??[]:h.points??[]),"pointsFor"),l=f(h=>it(h).reduce((c,p)=>{let C=p.a.x-p.b.x,M=p.a.y-p.b.y;return c+Math.hypot(C,M)},0),"pathLength"),a=f((h,c)=>{let p=0;for(let C=0;C<i.length;C++){let M=it(g(i[C],h,c));for(let v=C+1;v<i.length;v++){let R=it(g(i[v],h,c));for(let I of M)for(let b of R)le(I.a,I.b,b.a,b.b,Z)&&p++}}return p},"strictCrossingCount"),u=f((h,c)=>{if(h.horizontal){let p=h.a.y;return(Math.abs(p-c.top)<1||Math.abs(p-c.bottom)<1)&&zt(h.a.x,h.b.x,c.left,c.right)>=kt}if(h.vertical){let p=h.a.x;return(Math.abs(p-c.left)<1||Math.abs(p-c.right)<1)&&zt(h.a.y,h.b.y,c.top,c.bottom)>=kt}return!1},"segmentRunsAlongRectBorder"),y=f(h=>{let c=[h.start,h.end].filter(C=>!!C),p=[];for(let C of c){let M=e.get(C),v=M?qt(M):void 0;v&&p.push(v)}return p},"endpointRectsFor"),L=f((h,c)=>{if(c+3>=h.length)return[];let p=h[c],C=h[c+1],M=h[c+2],v=h[c+3],R=Tt(p,C,Z)&&At(C,M,Z)&&Tt(M,v,Z),I=At(p,C,Z)&&Tt(C,M,Z)&&At(M,v,Z);if(!R&&!I)return[];if(!(R?Math.sign(C.x-p.x)!==Math.sign(v.x-M.x):Math.sign(C.y-p.y)!==Math.sign(v.y-M.y)))return[];let T=dt(p,v,Z)||ht(p,v,Z)?[]:[{x:p.x,y:v.y},{x:v.x,y:p.y}],N=T.length===0?[[...h.slice(0,c+1),...h.slice(c+3)]]:T.map(w=>[...h.slice(0,c+1),w,...h.slice(c+3)]),F=new Set;return N.map(w=>ae(pt(w))).filter(w=>{if(it(w).length!==w.length-1||!w.some(k=>oe(k,v,Z)))return!1;let _=w.map(k=>`${k.x.toFixed(3)},${k.y.toFixed(3)}`).join("|");return F.has(_)?!1:(F.add(_),!0)})},"shortcutCandidatesAt"),m=f((h,c,p)=>{let C=[h.start,h.end].filter(v=>!!v),M=y(h);for(let v of it(c))if(wt(v.a,v.b,s,C,-2)||wt(v.a,v.b,r,[],-2)||M.some(R=>u(v,R)))return!1;for(let v of i)if(v!==h){for(let R of it(c))for(let I of it(g(v)))if(ce(R,I,.5)>=kt)return!1}return a(h,c)<=p},"candidateIsSafe");for(let h=0;h<8;h++){let c=a(),p,C,M=c,v=Number.POSITIVE_INFINITY,R=Number.POSITIVE_INFINITY;for(let I of i){let b=g(I),T=Qt(b,Z),N=l(b);for(let F=0;F<=b.length-4;F++)for(let w of L(b,F)){let _=Qt(w,Z),k=l(w);if(!(_<T||_===T&&k<N-Z)||!m(I,w,c))continue;let X=a(I,w);X>M||X===M&&(_>v||_===v&&k>=R)||(p=I,C=w,M=X,v=_,R=k)}}if(!p||!C)return;p.points=C}}f(Ms,"shortcutRedundantOrthogonalJogs");function Is(t,e){let i=[];for(let O of e.values()){if(O.isGroup||O.isEdgeLabel)continue;let D=O.x??0,H=O.y??0,U=qt(O);U&&i.push({id:String(O.id??""),cx:D,cy:H,rect:U})}if(i.length===0)return;let g=new Map(i.map(O=>[O.id,O])),l=i.map(O=>({id:O.id,rect:O.rect})),a=["top","bottom","left","right"],u={top:Math.min(...i.map(O=>O.rect.top))-20,bottom:Math.max(...i.map(O=>O.rect.bottom))+20,left:Math.min(...i.map(O=>O.rect.left))-20,right:Math.max(...i.map(O=>O.rect.right))+20},y=t.filter(O=>!O.isLayoutOnly),L=new Map(y.map((O,D)=>[O,D])),m=f(O=>{let D=O==="left"||O==="top"?-1:1,H=[];for(let U=0;U<=2;U++)H.push(u[O]+D*20*U);return H},"outwardTracksForSide"),h=f((O,D=new Map)=>pt(D.get(O)??O.points??[]),"replacementPointsFor"),c=f((O,D)=>{let H=0;for(let U of O)for(let d of D)le(U.a,U.b,d.a,d.b,Z)&&H++;return H},"crossingCountBetweenSegments"),p=f((O,D)=>c(it(O),it(D)),"crossingCountBetweenPaths"),C=f((O=new Map)=>{let D=0,H=[],U=new Set,d=[],x=f(S=>{U.has(S)||(U.add(S),d.push(S))},"addEdge");for(let S=0;S<y.length;S++){let E=y[S],A=h(E,O);for(let P=S+1;P<y.length;P++){let j=y[P],J=p(A,h(j,O));J>0&&(D+=J,H.push({first:E,second:j,count:J}),x(E),x(j))}}return d.sort((S,E)=>(L.get(S)??0)-(L.get(E)??0)),{count:D,pairs:H,edgeSet:U,edges:d}},"crossingSnapshot"),M=f((O,D)=>{let H=new Set(D.keys());if(H.size===0)return O.count;let U=0;for(let x of O.pairs)(H.has(x.first)||H.has(x.second))&&(U+=x.count);let d=0;for(let x=0;x<y.length;x++){let S=y[x],E=H.has(S),A=h(S,D);for(let P=x+1;P<y.length;P++){let j=y[P];!E&&!H.has(j)||(d+=p(A,h(j,D)))}}return O.count-U+d},"crossingCountWithReplacements"),v=f(O=>{let D=new Map;for(let d of O.pairs){let x=D.get(d.first)??new Set;x.add(d.second),D.set(d.first,x);let S=D.get(d.second)??new Set;S.add(d.first),D.set(d.second,S)}let H=[],U=new Set;for(let d of O.edges){if(U.has(d))continue;let x=[d],S=[];for(U.add(d);x.length>0;){let E=x.pop();S.push(E);for(let A of D.get(E)??[])U.has(A)||(U.add(A),x.push(A))}S.sort((E,A)=>(L.get(E)??0)-(L.get(A)??0)),S.length>1&&H.push(S)}return H},"crossingComponents"),R=f(O=>[O.start,O.end].filter(D=>!!D),"endpointIdsFor"),I=f(O=>{let D=[];for(let H of v(O)){let U=new Set(H),d=new Set(H.flatMap(S=>R(S))),x=[...H];for(let S of y)U.has(S)||R(S).some(E=>d.has(E))&&x.push(S);x.sort((S,E)=>(L.get(S)??0)-(L.get(E)??0)),D.push(x)}return D},"pairSearchGroups"),b=f((O,D,H)=>M(O,new Map([[D,H]])),"crossingCountWithSingleReplacement"),T=f(O=>{let D=new Map;for(let H of O.pairs)D.set(H.first,(D.get(H.first)??0)+H.count),D.set(H.second,(D.get(H.second)??0)+H.count);return D},"currentCrossingsByEdge"),N=f(O=>O.slice(1).reduce((D,H,U)=>{let d=O[U];return D+Math.abs(H.x-d.x)+Math.abs(H.y-d.y)},0),"pathLength"),F=f((O=new Map)=>y.reduce((D,H)=>D+Qt(h(H,O)),0),"totalBends"),w=f((O=new Map)=>y.reduce((D,H)=>D+N(h(H,O)),0),"totalLength"),_=f((O,D,H=new Map)=>{let U=it(D);for(let d of y)if(d!==O){for(let x of U)for(let S of it(h(d,H)))if(ce(x,S,.5)>=kt)return!0}return!1},"pathHasSegmentConflict"),k=f((O,D)=>{let H=[O.start,O.end].filter(U=>!!U);for(let U of it(D))if(wt(U.a,U.b,l,H,-2))return!0;return!1},"pathHitsNode"),B=f((O,D)=>{let H=ae(pt(D));it(H).length===H.length-1&&O.push(H)},"pushOrthogonalCandidate"),X=f(O=>O==="left"||O==="right","sideIsHorizontal"),$=f((O,D,H)=>{switch(D){case"left":return Math.min(O.x,H.x)-20;case"right":return Math.max(O.x,H.x)+20;case"top":return Math.min(O.y,H.y)-20;case"bottom":return Math.max(O.y,H.y)+20}},"localTrackForSameSide"),K=f((O,D,H,U)=>{let d=H==="left"||H==="top"?-1:1,x=[$(D,H,U),u[H]];for(let S of x)for(let E=0;E<=2;E++)B(O,co(D,H,U,S+d*20*E))},"addSameSideCandidates"),ct=f((O,D,H,U,d)=>{for(let x of m(H))for(let S of m(d))B(O,[D,{x,y:D.y},{x,y:S},{x:U.x,y:S},U])},"addHorizontalToVerticalCandidates"),mt=f((O,D,H,U,d)=>{for(let x of m(H))for(let S of m(d))B(O,[D,{x:D.x,y:x},{x:S,y:x},{x:S,y:U.y},U])},"addVerticalToHorizontalCandidates"),Rt=f((O,D,H,U,d)=>{let x=[...m("top"),...m("bottom")];for(let S of m(H))for(let E of m(d))for(let A of x)B(O,[D,{x:S,y:D.y},{x:S,y:A},{x:E,y:A},{x:E,y:U.y},U])},"addHorizontalPairCandidates"),Ft=f((O,D,H,U,d)=>{let x=[...m("left"),...m("right")];for(let S of m(H))for(let E of m(d))for(let A of x)B(O,[D,{x:D.x,y:S},{x:A,y:S},{x:A,y:E},{x:U.x,y:E},U])},"addVerticalPairCandidates"),Q=f(O=>{let D=new Set;return O.map(H=>pt(H)).filter(H=>{let U=H.map(d=>`${d.x.toFixed(3)},${d.y.toFixed(3)}`).join("|");return D.has(U)||H.length<2?!1:(D.add(U),!0)})},"dedupeCandidatePaths"),W=f((O,D,H,U)=>{let d=[],x=io(O,D,H,U,20,Z);x&&B(d,x),D===U&&K(d,O,D,H);let S=X(D),E=X(U);return S&&!E?ct(d,O,D,H,U):!S&&E?mt(d,O,D,H,U):S?Rt(d,O,D,H,U):Ft(d,O,D,H,U),Q(d)},"buildCandidatesForSides"),et=f((O,D,H,U)=>{let d=[...m("left"),...m("right")],x=[...m("top"),...m("bottom")];for(let S of a){let E=Ie(U,S),A=S==="top"||S==="bottom"?m(S):x;for(let P of d){B(O,[D,H,{x:P,y:H.y},{x:P,y:E.y},E]);for(let j of A)B(O,[D,H,{x:P,y:H.y},{x:P,y:j},{x:E.x,y:j},E])}}},"addVerticalDepartureOuterTrackCandidates"),lt=f((O,D,H,U)=>{let d=[...m("left"),...m("right")],x=[...m("top"),...m("bottom")];for(let S of a){let E=Ie(U,S),A=S==="left"||S==="right"?m(S):d;for(let P of x){B(O,[D,H,{x:H.x,y:P},{x:E.x,y:P},E]);for(let j of A)B(O,[D,H,{x:H.x,y:P},{x:j,y:P},{x:j,y:E.y},E])}}},"addHorizontalDepartureOuterTrackCandidates"),gt=f(O=>{let D=O.start,H=O.end,U=H?g.get(H):void 0;if(!D||!U)return[];let d=pt(O.points??[]);if(d.length<4)return[];let x=d[0],S=d[1],E=[];return At(x,S,Z)?et(E,x,S,U):Tt(x,S,Z)&&lt(E,x,S,U),E},"terminalPreservingOuterTrackCandidates"),xt=f(O=>{let D=O.start,H=O.end,U=D?g.get(D):void 0,d=H?g.get(H):void 0;if(!U||!d)return[];let x=[];for(let S of a){let E=Ie(U,S);for(let A of a)x.push(...W(E,S,Ie(d,A),A))}return x.push(...gt(O)),x},"candidatePathsFor"),vt=f(()=>new Map(y.map(O=>[O,it(h(O))])),"currentSegmentsByEdge"),Vt=f((O,D,H)=>{let U=new Set;for(let d of y){if(d===O)continue;let x=H.get(d)??it(h(d));D.some(S=>x.some(E=>ce(S,E,.5)>=kt))&&U.add(d)}return U},"sharedTrackConflictsFor"),Ut=f((O,D,H,U)=>{let d=new Set;return xt(O).map(S=>ae(pt(S))).filter(S=>{if(k(O,S))return!1;let E=S.map(A=>`${A.x.toFixed(3)},${A.y.toFixed(3)}`).join("|");return d.has(E)||S.length<2?!1:(d.add(E),!0)}).map(S=>{let E=it(S),A=0;for(let P of y)P!==O&&(A+=c(E,H.get(P)??it(h(P))));return{candidate:S,candidateSegments:E,crossings:D.count-(U.get(O)??0)+A,bends:Qt(S,Z),totalBends:Qt(S),length:N(S)}}).filter(({crossings:S})=>S<=D.count).sort((S,E)=>S.crossings-E.crossings||S.bends-E.bends||S.length-E.length).slice(0,48).map(S=>({path:S.candidate,segments:S.candidateSegments,sharedTrackConflicts:Vt(O,S.candidateSegments,H),totalBends:S.totalBends,length:S.length}))},"pairCandidatesFor"),jt=f((O,D,H,U,d,x)=>{let S=0;for(let A of O.pairs)(A.first===D||A.second===D||A.first===U||A.second===U)&&(S+=A.count);let E=c(H.segments,d.segments);for(let A of y){if(A===D||A===U)continue;let P=x.get(A)??it(h(A));E+=c(H.segments,P)+c(d.segments,P)}return O.count-S+E},"pairCrossingCount"),te=f((O,D)=>{for(let H of O.sharedTrackConflicts)if(H!==D)return!1;return!0},"conflictsOnlyWith"),Se=f((O,D)=>O.segments.some(H=>D.segments.some(U=>ce(H,U,.5)>=kt)),"candidatesShareTrack"),de=f((O,D,H,U)=>te(D,H.edge)&&te(U,O.edge)&&!Se(D,U),"pairCandidatesAreCompatible"),Ce=f((O,D,H,U,d)=>{let x=jt(O.current,D.edge,H,U.edge,d,O.baseSegments);if(!(x>=O.current.count))return{replacements:new Map([[D.edge,H.path],[U.edge,d.path]]),crossings:x,bends:O.currentBends-(O.baseBendsByEdge.get(D.edge)??0)-(O.baseBendsByEdge.get(U.edge)??0)+H.totalBends+d.totalBends,length:O.currentLength-(O.baseLengthByEdge.get(D.edge)??0)-(O.baseLengthByEdge.get(U.edge)??0)+H.length+d.length}},"scorePairReplacement"),ln=f((O,D)=>O.crossings<D.crossings||O.crossings===D.crossings&&(O.bends<D.bends||O.bends===D.bends&&O.length<D.length),"pairScoreIsBetter"),fn=f((O,D,H,U)=>{let d=U;for(let x of D.candidates)for(let S of H.candidates){if(!de(D,x,H,S))continue;let E=Ce(O,D,x,H,S);E&&ln(E,d)&&(d=E)}return d},"bestScoreForOptionPair"),dn=f(O=>{let D=F(),H=w(),U=vt(),d=T(O),x=new Map(y.map(J=>[J,Qt(h(J))])),S=new Map(y.map(J=>[J,N(h(J))])),E=new Map,A=I(O);for(let J of A)for(let V of J){if(E.has(V))continue;let G=Ut(V,O,U,d);G.length>0&&E.set(V,{edge:V,candidates:G})}let P={replacements:new Map,crossings:O.count,bends:D,length:H},j={current:O,currentBends:D,currentLength:H,baseBendsByEdge:x,baseLengthByEdge:S,baseSegments:U};for(let J of A){let V=new Set(J.filter(ot=>O.edgeSet.has(ot))),G=J.map(ot=>E.get(ot)).filter(ot=>!!ot);for(let ot=0;ot<G.length;ot++){let rt=G[ot];for(let st=ot+1;st<G.length;st++){let tt=G[st];!V.has(rt.edge)&&!V.has(tt.edge)||(P=fn(j,rt,tt,P))}}}return P.replacements.size>0?P.replacements:void 0},"bestPairedReplacement");for(let O=0;O<4;O++){let D=C(),H=D.count;if(H===0)return;let U,d,x=H,S=Number.POSITIVE_INFINITY;for(let A of D.edges){let P=Qt(h(A),Z);for(let j of xt(A)){let J=k(A,j),V=!J&&_(A,j),G=b(D,A,j),ot=Qt(j,Z);J||V||!(G<H||G===H&&ot<P)||G>x||G===x&&ot>=S||(U=A,d=j,x=G,S=ot)}}if(U&&d){U.points=d;continue}let E=dn(D);if(!E)return;for(let[A,P]of E)A.points=P}}f(Is,"resolveRenderedOrthogonalCrossings");var pe=.001,Rr=8;function Ss(t,e){let{nodeInfoById:n,realNodeRects:o}=rn(e),s=["top","bottom","left","right"],r=20,i={top:Math.min(...o.map(c=>c.rect.top))-r,bottom:Math.max(...o.map(c=>c.rect.bottom))+r,left:Math.min(...o.map(c=>c.rect.left))-r,right:Math.max(...o.map(c=>c.rect.right))+r},g=f((c,p,C,M)=>{let v=[],R=io(c,p,C,M,r,pe);return R&&v.push(R),p===M&&v.push(co(c,p,C,i[p])),v},"buildOrthogonalPathCandidates"),l=f((c,p)=>{for(let C=0;C<c.length-1;C++){let M=c[C],v=c[C+1];if(wt(M,v,o,p,1))return!0}return!1},"pathHitsNode"),a=f((c,p,C=!1)=>{let M=0,v=Re(c,pe),R=p.start,I=p.end;for(let b of t){if(b===p||b.isLayoutOnly)continue;let T=b.start,N=b.end;if(!C&&R&&I&&(T===R||T===I||N===R||N===I))continue;let F=b.points;if(!(!F||F.length<2))for(let w of v)for(let _ of Re(F,pe)){if(lo(w.a,w.b,_.a,_.b,pe,pe)){M++;continue}ce(w,_,pe)>=Rr&&M++}}return M},"pathConflictCount"),u=4,y=f((c,p)=>{let C=Math.abs(c.y-p.rect.top),M=Math.abs(c.y-p.rect.bottom),v=Math.abs(c.x-p.rect.left),R=Math.abs(c.x-p.rect.right),I="top",b=C;return M<b&&(I="bottom",b=M),v<b&&(I="left",b=v),R<b&&(I="right",b=R),I},"nearestSideOfRect"),L=new Map,m=f((c,p,C)=>{let M=L.get(c)??[];M.push({side:p,edgeId:C}),L.set(c,M)},"addFaceClaim");for(let c of t){if(c.isLayoutOnly)continue;let p=c.points??[];if(p.length<1)continue;let C=c.id??"",M=c.start,v=c.end;if(M){let R=n.get(M);R&&m(M,y(p[0],R),C)}if(v){let R=n.get(v);R&&m(v,y(p[p.length-1],R),C)}}let h=f((c,p,C)=>L.get(c)?.some(M=>M.edgeId!==C&&M.side===p)??!1,"faceIsClaimed");for(let c of t){if(c.isLayoutOnly)continue;let p=c.points;if(!p||p.length<2)continue;let C=Qt(p,pe);if(C<u)continue;let M=c.start,v=c.end;if(!M||!v)continue;let R=n.get(M),I=n.get(v);if(!R||!I)continue;let b=c.id??"",T=a(p,c,!0),N=a(p,c),F,w=T,_=C;for(let k of s){if(h(M,k,b))continue;let B=Ie(R,k);for(let X of s){if(h(v,X,b))continue;let $=Ie(I,X);for(let K of g(B,k,$,X)){if(l(K,[M,v]))continue;let ct=Qt(K,pe);if(T>0){let mt=a(K,c,!0);if(mt>w||mt===w&&ct>=_)continue;w=mt,_=ct,F=K;continue}a(K,c)>N||ct<_&&(_=ct,F=K)}}}if(F){c.points=F;let k=L.get(M);k&&L.set(M,k.filter(X=>X.edgeId!==b));let B=L.get(v);B&&L.set(v,B.filter(X=>X.edgeId!==b)),m(M,y(F[0],R),b),m(v,y(F[F.length-1],I),b)}}}f(Ss,"simplifyDetouredEdges");var Kt=.001,Oo=10,ze=7;function Gn(t,e){let n=e?0:t.length-1,o=e?1:-1,s=t[n],r=t[n+o];if(!s||!r)return;let i=r.x-s.x,g=r.y-s.y;if(!(Math.abs(i)+Math.abs(g)<Kt)){if(Math.abs(g)<=Kt){let a=s.x+Math.sign(i)*Oo;return{left:Math.min(s.x,a),right:Math.max(s.x,a),top:s.y-ze,bottom:s.y+ze}}if(Math.abs(i)<=Kt){let a=s.y+Math.sign(g)*Oo;return{left:s.x-ze,right:s.x+ze,top:Math.min(s.y,a),bottom:Math.max(s.y,a)}}return{left:Math.min(s.x,r.x),right:Math.max(s.x,r.x),top:Math.min(s.y,r.y),bottom:Math.max(s.y,r.y)}}}f(Gn,"markerClearanceRectFor");function Cs(t){return{left:Math.min(t.left,t.right),right:Math.max(t.left,t.right),top:Math.min(t.top,t.bottom),bottom:Math.max(t.top,t.bottom)}}f(Cs,"normalizeRect");function $n(t,e){let n=pt(e),o=Gn(n,!0),s=Gn(n,!1);return[o,s].some(r=>r&&Ke(t,Cs(r)))}f($n,"labelOverlapsOwnMarker");function Ue(t,e){let n=[];for(let h of t){if(h.isLayoutOnly)continue;let c=h.points;if(!(!c||c.length<2))for(let p=0;p<c.length-1;p++)n.push({edgeId:h.id,p1:c[p],p2:c[p+1]})}let o=[],s=[];for(let h of e.values()){let c=h.isGroup,p=h.parentId;if(c&&!p){let M=qt(h);M&&s.push({id:h.id,rect:M});continue}if(c||h.isEdgeLabel)continue;let C=qt(h);C&&o.push({nodeId:h.id,rect:C})}let r=3,i=1,g=12,l=f((h,c)=>{let p=En(c,r);for(let{nodeId:C,rect:M}of o)if(C!==h&&Ke(p,M))return!0;return!1},"labelOverlapsForeignNode"),a=f((h,c)=>{let p=En(c,r);for(let C of n)if(C.edgeId!==h&&sn(C.p1,C.p2,p))return!0;return!1},"labelOverlapsForeignEdge"),u=f((h,c,p)=>l(h,p)||a(c,p),"labelOverlapsAnything"),y=[],L=f(h=>{for(let{id:c,rect:p}of s)if(Jo(p,h))return c},"findContainingLane"),m=f((h,c)=>y.some(p=>p.labelId!==h&&Ke(c,p.rect)),"overlapsPlacedLabel");for(let h of t){if(h.isLayoutOnly)continue;let c=h.labelNodeId;if(!c)continue;let p=e.get(c);if(!p)continue;let C=h.points;if(!C||C.length<2)continue;let M=p.width??0,v=p.height??0;if(M<=0||v<=0)continue;let R=[];for(let Q=0;Q<C.length-1;Q++){let W=C[Q],et=C[Q+1],lt=Math.abs(W.x-et.x),gt=Math.abs(W.y-et.y);lt<Kt&&gt<Kt||lt>=Kt&&gt>=Kt||R.push({idx:Q,length:lt+gt,orientation:lt>=Kt?"horizontal":"vertical",midX:(W.x+et.x)/2,midY:(W.y+et.y)/2})}if(R.length===0)continue;let I=R.length>=3?R.filter(Q=>Q.idx>0&&Q.idx<R.length-1):R,b=I.length>0?I:R,T=M>=v?"horizontal":"vertical",N=f(Q=>[...Q].sort((W,et)=>{let lt=W.orientation===T,gt=et.orientation===T;if(lt!==gt)return lt?-1:1;let xt=W.length>=(W.orientation==="horizontal"?M:v)+2,vt=et.length>=(et.orientation==="horizontal"?M:v)+2;return xt!==vt?xt?-1:1:et.length-W.length}),"rankSegments"),F=R[0],w=R[R.length-1],_=[.5,.25,.75,.05,.95,.15,.85,.1,.9],k=f((Q,W)=>{let et=C[Q.idx],lt=C[Q.idx+1];return{midX:et.x+(lt.x-et.x)*W,midY:et.y+(lt.y-et.y)*W}},"anchorAtT"),B=f((Q,W,et)=>Math.min(et,Math.max(W,Q)),"clamp"),X=f((Q,W)=>Q.midX>=W.left-Kt&&Q.midX<=W.right+Kt&&Q.midY>=W.top-Kt&&Q.midY<=W.bottom+Kt,"pointInsideRectInclusive"),$=f(Q=>{let W=we(Q.midX,Q.midY,M,v),et=L(W);if(et)return{laneId:et,anchor:Q,rect:W};let lt=s.find(({rect:te})=>X(Q,te));if(!lt)return;let gt=lt.rect.left+M/2+i,xt=lt.rect.right-M/2-i,vt=lt.rect.top+v/2+i,Vt=lt.rect.bottom-v/2-i;if(gt>xt||vt>Vt)return;let Ut={midX:B(Q.midX,gt,xt),midY:B(Q.midY,vt,Vt)},jt=we(Ut.midX,Ut.midY,M,v);return X(Q,jt)?{laneId:lt.id,anchor:Ut,rect:jt}:void 0},"placementForAnchor"),K=f((Q,W,et)=>Q.orientation==="horizontal"?Math.abs(W.midX-et.x):Math.abs(W.midY-et.y),"distanceAlongSegment"),ct=f((Q,W)=>{let lt=(Q.orientation==="horizontal"?M/2:v/2)+g;if(Q===F){let gt=C[Q.idx];if(K(Q,W,gt)+Kt<lt)return!1}if(Q===w){let gt=C[Q.idx+1];if(K(Q,W,gt)+Kt<lt)return!1}return!0},"labelClearsTerminalEndpoints"),mt=f(Q=>{let W=N(Q);for(let et of W)for(let lt of _){let gt=k(et,lt);if(!ct(et,gt))continue;let xt=$(gt);if(xt&&!$n(xt.rect,C)&&!m(c,xt.rect)&&!u(c,h.id,xt.rect))return{laneId:xt.laneId,anchor:xt.anchor}}},"tryPool"),Rt=f((Q,W,et=!1)=>{let lt=N(Q);for(let gt of lt){let xt={midX:gt.midX,midY:gt.midY};if(W&&!ct(gt,xt))continue;let vt=$(xt);if(vt&&!$n(vt.rect,C)&&!m(c,vt.rect)&&!l(c,vt.rect)&&(et||!a(h.id,vt.rect)))return{laneId:vt.laneId,anchor:vt.anchor}}},"findLaneContainingFallback"),Ft=mt(b)??(b.length<R.length?mt(R):void 0)??Rt(R,!0)??Rt(R,!1)??Rt(R,!1,!0);if(Ft){p.x=Ft.anchor.midX,p.y=Ft.anchor.midY,p.parentId=Ft.laneId;let Q=we(Ft.anchor.midX,Ft.anchor.midY,M,v),W=y.findIndex(et=>et.labelId===c);W>=0?y[W]={labelId:c,rect:Q}:y.push({labelId:c,rect:Q})}}}f(Ue,"anchorLabelsToPolyline");var In=1e-6,Nr=8,Bo=Nr/2,Or=3;function zn(t,e){return t<e?`${t}::${e}`:`${e}::${t}`}f(zn,"pairKey");function vs(t,e){let{nodeInfoById:n,realNodeRects:o}=rn(e),s=new Map;for(let i of e){let g=i.id;if(!i.isGroup&&i.isEdgeLabel){s.set(g,{w:i.width??0,h:i.height??0});continue}}let r=f((i,g,l,a)=>{let u=zn(g,l),y=0,L=f(m=>{if(!m)return;let h=s.get(m);if(!h)return;let c=a==="x"?h.w/2:h.h/2;c>y&&(y=c)},"consider");L(i.labelNodeId);for(let m of t){if(m===i||m.isLayoutOnly)continue;let h=m.start,c=m.end;!h||!c||zn(h,c)===u&&L(m.labelNodeId)}return y>0?y+Or:0},"labelClearanceFor");for(let i of t){if(i.isLayoutOnly)continue;let g=i.points;if(!so(g,In))continue;let l=ao(i,n,In);if(!l)continue;let{srcId:a,dstId:u,srcInfo:y,dstInfo:L,collinearX:m,collinearY:h}=l;if(m===h)continue;let c,p;if(m){let I=L.cy>y.cy;c={x:y.cx,y:I?y.rect.bottom:y.rect.top},p={x:L.cx,y:I?L.rect.top:L.rect.bottom}}else{let I=L.cx>y.cx;c={x:I?y.rect.right:y.rect.left,y:y.cy},p={x:I?L.rect.left:L.rect.right,y:L.cy}}if(wt(c,p,o,[a,u],1))continue;let M=r(i,a,u,m?"x":"y"),v=M>Bo?M:Bo,R=[0,v,-v];for(let I of R){let b={...c},T={...p};if(m){if(b.x+=I,T.x+=I,b.x<=y.rect.left||b.x>=y.rect.right||T.x<=L.rect.left||T.x>=L.rect.right)continue}else if(b.y+=I,T.y+=I,b.y<=y.rect.top||b.y>=y.rect.bottom||T.y<=L.rect.top||T.y>=L.rect.bottom)continue;if(!wt(b,T,o,[a,u],1)&&!qe(b,T,t,i,{epsilon:In})){i.points=[b,T];break}}}}f(vs,"straightenCollinearSiblingDetours");function Vn(t,e){let{realNodeRects:a,labelNodeRects:u}=me(e.values()),y=f((b,T)=>Re(T,.001).map(N=>({...N,edge:b,interior:N.index>=1&&N.index<=T.length-3})),"segmentsFor"),L=f(()=>{let b=[];for(let T of t){if(T.isLayoutOnly)continue;let N=T.points;!N||N.length<2||b.push(...y(T,pt(N)))}return b},"allSegments"),m=f((b,T)=>b.horizontal&&T.horizontal?zt(b.a.x,b.b.x,T.a.x,T.b.x)>=8&&Math.abs(b.a.y-T.a.y)<7:b.vertical&&T.vertical?zt(b.a.y,b.b.y,T.a.y,T.b.y)>=8&&Math.abs(b.a.x-T.a.x)<7:!1,"hasCrowdedParallelTrack"),h=f((b,T)=>{let N=b.start,F=b.end,w=y(b,T);if(w.length!==T.length-1)return!1;let _=[N,F].filter(B=>!!B),k=b.labelNodeId?[b.labelNodeId]:[];for(let B of w)if(wt(B.a,B.b,a,_,-2)||wt(B.a,B.b,u,k,-2))return!1;for(let B of t){if(B===b||B.isLayoutOnly)continue;let X=B.points;if(!(!X||X.length<2)){for(let $ of w)for(let K of y(B,pt(X)))if(m($,K)||le($.a,$.b,K.a,K.b,.001))return!1}}return!0},"candidateIsSafe"),c=f((b,T)=>{let N=pt(b.edge.points??[]);if(N.length<4||b.index>=N.length-1)return;let F=N.map(w=>({...w}));if(b.horizontal)F[b.index].y+=T,F[b.index+1].y+=T;else if(b.vertical)F[b.index].x+=T,F[b.index+1].x+=T;else return;return y(b.edge,F).length===F.length-1?F:void 0},"shiftedCandidate"),p=f((b,T)=>({x:b.x??(T.left+T.right)/2,y:b.y??(T.top+T.bottom)/2}),"nodeCenter"),C=f(b=>{let T=b.edge,N=pt(T.points??[]);if(N.length!==4||b.index!==1)return;let F=T.start?e.get(T.start):void 0,w=T.end?e.get(T.end):void 0,_=F?qt(F):void 0,k=w?qt(w):void 0,B=N.slice(b.index+2);if(!(!F||!w||!_||!k||B.length===0))return{sourceCenter:p(F,_),targetCenter:p(w,k),sourceRect:_,tail:B}},"sourceDetourContextFor"),M=f((b,T,N,F,w,_)=>{let k=F.y>=N.y,B=k?w.bottom:w.top,X=B+(k?20:-20);if(k&&b.b.y<=X+.001||!k&&b.b.y>=X-.001)return;let $=b.a.x+T;return pt([{x:N.x,y:B},{x:N.x,y:X},{x:$,y:X},{x:$,y:b.b.y},..._],.001)},"verticalSourceDetour"),v=f((b,T,N,F,w,_)=>{let k=F.x>=N.x,B=k?w.right:w.left,X=B+(k?20:-20);if(k&&b.b.x<=X+.001||!k&&b.b.x>=X-.001)return;let $=b.a.y+T;return pt([{x:B,y:N.y},{x:X,y:N.y},{x:X,y:$},{x:b.b.x,y:$},..._],.001)},"horizontalSourceDetour"),R=f((b,T)=>{let N=C(b);if(N){if(b.vertical)return M(b,T,N.sourceCenter,N.targetCenter,N.sourceRect,N.tail);if(b.horizontal)return v(b,T,N.sourceCenter,N.targetCenter,N.sourceRect,N.tail)}},"sourceDetourCandidate"),I=[-7,7,-14,14,-21,21];for(let b=0;b<12;b++){let T=L(),N=!1;for(let F=0;F<T.length&&!N;F++)for(let w=F+1;w<T.length&&!N;w++){let _=T[F],k=T[w];if(_.edge===k.edge||!m(_,k))continue;let B=[_,k].filter(X=>X.interior);for(let X of B){for(let $ of I){let K=c(X,$);if(K&&h(X.edge,K)){X.edge.points=K,N=!0;break}let ct=R(X,$);if(ct&&h(X.edge,ct)){X.edge.points=ct,N=!0;break}}if(N)break}}if(!N)return}}f(Vn,"nudgeSharedInteriorSubpaths");function Ls(t,e,n,o){let s=e.x-t.x,r=e.y-t.y,i=o.x-n.x,g=o.y-n.y,l=s*g-r*i;if(Math.abs(l)<1e-10)return!1;let a=n.x-t.x,u=n.y-t.y,y=(a*g-u*i)/l,L=(a*r-u*s)/l,m=.01;return y>m&&y<1-m&&L>m&&L<1-m}f(Ls,"segmentsIntersect");function Es(t){let e=t.nodes??[],n=t.edges??[],o=[];if(!n.length||!e.length)return o;let s=Zo(e),r=1,i=[];for(let l of n){if(l.isLayoutOnly)continue;let a=l.points;if(!a||a.length<2)continue;let u=l.start,y=l.end,L=l.labelNodeId,m=l.id??`${u}->${y}`;for(let h of s)if(!(h.nodeId===u||h.nodeId===y)&&!(L&&h.nodeId===L)){for(let c=0;c<a.length-1;c++)if(sn(a[c],a[c+1],h,-r)){o.push({type:"edge-node-overlap",edgeId:m,targetId:h.nodeId,detail:`segment ${c} passes through node "${h.nodeId}"`});break}}for(let h=0;h<a.length-1;h++)i.push({edgeId:m,start:u,end:y,p1:a[h],p2:a[h+1]})}let g=new Set;for(let l=0;l<i.length;l++)for(let a=l+1;a<i.length;a++){let u=i[l],y=i[a];if(u.edgeId!==y.edgeId&&!(u.start===y.start||u.start===y.end||u.end===y.start||u.end===y.end)&&Ls(u.p1,u.p2,y.p1,y.p2)){let L=u.edgeId<y.edgeId?`${u.edgeId}|${y.edgeId}`:`${y.edgeId}|${u.edgeId}`;g.has(L)||(g.add(L),o.push({type:"edge-edge-crossing",edgeId:u.edgeId,targetId:y.edgeId,detail:`edges "${u.edgeId}" and "${y.edgeId}" cross`}))}}if(o.length>0){let l=o.filter(u=>u.type==="edge-node-overlap").length,a=o.filter(u=>u.type==="edge-edge-crossing").length;Xe.warn(`[SWIMLANE_VALIDATE] ${o.length} issue(s) detected: ${l} edge-node overlap(s), ${a} edge crossing(s)`);for(let u of o)Xe.warn(`[SWIMLANE_VALIDATE] ${u.type}: ${u.detail}`)}return o}f(Es,"validateSwimlanesLayout");function Ts(t,e){let n=t.nodes??[],o=t.edges??[],s=n.filter(g=>!g.isGroup);if((e==="LR"||e==="RL")&&s.length>0&&!hs(t,e)||e==="BT"&&s.length>0&&!us(t))return;for(let g of o){if(g.isLayoutOnly)continue;let l=g.points;!l||l.length<2||(g.points=ae(Je(l)))}Ss(o,n),vs(o,n),gs(o,n);let r=new Map;for(let g of n)r.set(String(g.id),g);Ue(o,r),os(o,r),ps(o,r),Vn(o,r),ms(o,r),ys(o,r),Hn(o,r),xs(o,r);let i=f(()=>{Is(o,r),bs(o,r),Ms(o,r),Ue(o,r),_n(o,r),Hn(o,r),Ue(o,r),_n(o,r)},"finalizeRenderedEdges");i(),Vn(o,r),i(),Xn(o,r),Yn(o,r),Xn(o,r),Yn(o,r)}f(Ts,"postProcessSwimlaneLayout");function ye(t){let e=new Map(t.nodeById),n=new Set,o=[];for(let r of t.edges){if(!e.has(r.src)||!e.has(r.dst))continue;let i=`${r.id}:${r.src}->${r.dst}`;n.has(i)||(n.add(i),o.push(r))}return{nodes:[...e.keys()],edges:o,layout:t.layout,nodeById:e}}f(ye,"normalizeGraph");function po(t,e){return t.edges.filter(n=>n.dst===e)}f(po,"incoming");function As(t){let e=new Map;for(let n of t.nodes)e.set(n,[]);for(let n of t.edges)e.get(n.src).push(n.dst);return e}f(As,"buildSuccessorMap");function mo(t){let e=As(t);for(let n of e.values())n.sort((o,s)=>o.localeCompare(s));return e}f(mo,"buildSortedSuccessorMap");function yo(t){let e=new Map;for(let n of t.nodes)e.set(n,0);for(let n of t.edges)e.set(n.dst,(e.get(n.dst)??0)+1);return e}f(yo,"buildInDegreeMap");function xo(t){return[...t.entries()].filter(([,e])=>e===0).map(([e])=>e).sort((e,n)=>e.localeCompare(n))}f(xo,"sortedZeroInDegreeNodes");function cn(t,e=()=>!0){let n=new Map,o=new Map;for(let s of t.nodes)n.set(s,[]),o.set(s,[]);for(let s of t.edges)e(s)&&(o.get(s.src).push(s.dst),n.get(s.dst).push(s.src));return{preds:n,succs:o}}f(cn,"buildPredecessorSuccessorMaps");function bo(t,e,n,o){let s=0;for(let i of t.nodes)o?.skipGroups&&t.nodeById.get(i)?.isGroup||(s=Math.max(s,n[i]??0));let r=Array.from({length:s+1},()=>[]);for(let i of e)o?.skipGroups&&t.nodeById.get(i)?.isGroup||r[Math.max(0,n[i]??0)].push(i);return r}f(bo,"buildLayersFromRanks");function Be(t){let e=yo(t),n=xo(e),o=[],s=mo(t);for(;n.length;){let r=n.shift();o.push(r);for(let i of s.get(r)??[])if(e.set(i,(e.get(i)??0)-1),(e.get(i)??0)===0){let g=0;for(;g<n.length&&n[g]<i;)g++;n.splice(g,0,i)}}return o.length===t.nodes.length?o:null}f(Be,"topoSortIfAcyclic");function Ne(t){let e=new Map,n=0;for(let o of t)e.set(o,n),n++;return e}f(Ne,"buildLayerIndex");function Mo(t){let e=new Array(t.length),n=f((o,s)=>{if(s-o<=1)return 0;let r=o+s>>1,i=n(o,r)+n(r,s),g=o,l=r,a=o;for(;g<r||l<s;)l>=s||g<r&&t[g]<=t[l]?e[a++]=t[g++]:(e[a++]=t[l++],i+=r-g);for(let u=o;u<s;u++)t[u]=e[u];return i},"count");return n(0,t.length)}f(Mo,"countInversions");function ws(t){let e=ye(t),n=new Map;for(let u of e.nodes)n.set(u,[]);for(let u of e.edges)n.get(u.src).push(u);for(let u of n.values())u.sort((y,L)=>y.dst===L.dst?y.id.localeCompare(L.id):y.dst.localeCompare(L.dst));let o=Object.create(null);for(let u of e.nodes)o[u]=0;let s=[],r=f(u=>{o[u]=1;for(let y of n.get(u)??[]){let L=y.dst;o[L]===0?r(L):o[L]===1&&s.push(y)}o[u]=2},"dfs"),i=[...e.nodes].sort((u,y)=>u.localeCompare(y));for(let u of i)o[u]===0&&r(u);let g=new Set(s.map(u=>`${u.id}:${u.src}->${u.dst}`)),l=e.edges.map(u=>g.has(`${u.id}:${u.src}->${u.dst}`)?{id:u.id,src:u.dst,dst:u.src,weight:u.weight,ref:u.ref}:u);return{acyclic:{nodes:[...e.nodes],edges:l,layout:e.layout,nodeById:new Map(e.nodeById)},reversed:s}}f(ws,"removeCycles_DFS");function Rs(t){let e=new Map,n=f(o=>{if(e.has(o))return e.get(o);let s=t.nodeById.get(o);if(!s)return e.set(o,null),null;let r=s.parentId;if(!r)return e.set(o,null),null;let g=n(r)??r;return e.set(o,g),g},"resolve");for(let o of t.nodes)n(o);return e}f(Rs,"buildTopLaneMap");function fe(t){let e=Rs(t);return n=>e.get(n)??null}f(fe,"createTopLaneResolver");function an(t){let e=[];for(let n of t.layout.nodes??[])n.isGroup&&!n.parentId&&e.push(n.id);return[...new Set(e)].reverse()}f(an,"buildTopLaneOrder");function Io(t,e){let n=an(t);if(!e||e.length===0)return n;let o=new Set(n),s=new Set,r=[];for(let i of e)!o.has(i)||s.has(i)||(s.add(i),r.push(i));for(let i of n)s.has(i)||r.push(i);return r}f(Io,"resolveTopLaneOrder");var Br={EPSILON:1e-6},nn={GRAVITY_ITERATIONS:8,MAX_CROSSING_OPTIMIZATION_PASSES:4,DEFAULT_COMPACT_SINGLE_INPUT:!0},Fo={DEFAULT_LAYER_GAP:100,DEFAULT_NODE_GAP:40};function Ns(t,e){let n=ye(t),o=e?.laneOf??(()=>null),s=e?.rankHint,{preds:r}=cn(n);for(let I of r.values())I.sort((b,T)=>b.localeCompare(T));let i=Be(n)??[...n.nodes].sort((I,b)=>I.localeCompare(b)),g=new Map;for(let[I,b]of i.entries())g.set(b,I);let l=new Map,a=new Map;for(let I of n.nodes)a.set(I,[]);for(let I of i){let b=(r.get(I)??[]).filter(T=>l.has(T));if(b.length>0){let T=Os(I,b,{laneOf:o,rankHint:s,topoIndex:g});l.set(I,T),a.get(T).push(I)}else l.has(I)||l.set(I,null)}for(let I of n.nodes)l.has(I)||l.set(I,null);let u=new Set;for(let I of n.nodes)(l.get(I)??null)===null&&u.add(I);let y=[...u].sort((I,b)=>{let T=g.get(I)??0,N=g.get(b)??0;return T===N?I.localeCompare(b):T-N}),L=Bs(n),m=new Map;for(let[I,b]of L.entries())m.set(I,[...b].sort((T,N)=>T.localeCompare(N)));let h=Fs(m),c=Ps(m),p=new Map;for(let I of n.nodes)p.set(I,[]);for(let I of c)for(let b of I.nodes){let T=p.get(b);T?T.push(I.id):p.set(b,[I.id])}let C=[],M=[],v=new Set,R=f(I=>{if(!v.has(I)){v.add(I),C.push(I);for(let b of a.get(I)??[])R(b);M.push(I)}},"walk");for(let I of y)R(I);for(let I of i)R(I);return{parent:l,children:a,roots:y,componentOf:h,blocks:c,nodeBlocks:p,adjacency:m,preorder:C,postorder:M,topologicalOrder:i}}f(Ns,"buildDrivingTree");function Os(t,e,n){let o=n.laneOf(t);return[...e].sort((r,i)=>{let g=n.laneOf(r),l=n.laneOf(i),a=g!=null&&g===o,u=l!=null&&l===o;if(a!==u)return a?-1:1;let y=n.rankHint?.[r],L=n.rankHint?.[i];if(y!=null&&L!=null&&y!==L)return L-y;let m=n.topoIndex.get(r)??0,h=n.topoIndex.get(i)??0;return m!==h?m-h:r.localeCompare(i)})[0]}f(Os,"chooseParent");function Bs(t){let e=new Map;for(let n of t.nodes)e.set(n,new Set);for(let n of t.edges)e.get(n.src).add(n.dst),e.get(n.dst).add(n.src);return e}f(Bs,"buildAdjacency");function Fs(t){let e=new Map,n=0;for(let o of t.keys()){if(e.has(o))continue;let s=[o];for(;s.length>0;){let r=s.pop();if(!e.has(r)){e.set(r,n);for(let i of t.get(r)??[])e.has(i)||s.push(i)}}n++}return e}f(Fs,"assignComponents");function Ps(t){let e=new Map,n=new Map,o=[],s=[],r=0,i=f((g,l)=>{e.set(g,++r),n.set(g,r);for(let a of t.get(g)??[])a!==l&&(e.has(a)?(e.get(a)??0)<(e.get(g)??0)&&(o.push([g,a]),n.set(g,Math.min(n.get(g)??r,e.get(a)??r))):(o.push([g,a]),i(a,g),n.set(g,Math.min(n.get(g)??r,n.get(a)??r)),(n.get(a)??0)>=(e.get(g)??0)&&s.push(ks(g,a,o,s.length))))},"visit");for(let g of t.keys())e.has(g)||i(g,null);return s}f(Ps,"computeBlocks");function ks(t,e,n,o){let s=[],r=new Set;for(;n.length>0;){let i=n.pop();if(s.push(i),r.add(i[0]),r.add(i[1]),i[0]===t&&i[1]===e||i[0]===e&&i[1]===t)break}return{id:o,edges:s,nodes:[...r]}}f(ks,"popBlock");function _s(t,e,n){let o=[...t.nodes],s=new Map;for(let[M,v]of o.entries())s.set(v,M);let r=o.length,i=new Array(r).fill(-1),g=new Array(r).fill(0),l=[],a=new Set;for(let M of o){let v=n.parent.get(M)??null,R=s.get(M);R!=null&&v==null&&(i[R]=-1,g[R]=0,a.has(M)||(a.add(M),l.push(M)))}for(;l.length>0;){let M=l.shift(),v=s.get(M);if(v==null)continue;let R=n.children.get(M)??[];for(let I of R){if(a.has(I))continue;let b=s.get(I);b!=null&&(i[b]=v,g[b]=g[v]+1,a.add(I),l.push(I))}}for(let M of o){if(a.has(M))continue;let v=s.get(M);v!=null&&(i[v]=-1,g[v]=0,a.add(M))}let u=Math.max(1,Math.ceil(Math.log2(Math.max(1,r)))+1),y=Array.from({length:u},()=>new Array(r).fill(-1));for(let M=0;M<r;M++)y[0][M]=i[M];for(let M=1;M<u;M++)for(let v=0;v<r;v++){let R=y[M-1][v];y[M][v]=R===-1?-1:y[M-1][R]}let L=f((M,v)=>{if(M===-1||v===-1)return-1;g[M]<g[v]&&([M,v]=[v,M]);let R=g[M]-g[v];for(let I=0;I<u;I++)if(R>>I&1&&(M=y[I][M],M===-1))return-1;if(M===v)return M;for(let I=u-1;I>=0;I--){let b=y[I][M],T=y[I][v];b===-1||T===-1||b!==T&&(M=b,v=T)}return y[0][M]},"lcaIndex"),m=Array.from({length:r},()=>new Map);for(let M of t.edges){let v=M.src,R=M.dst,I=e[v],b=e[R];if(I==null||b==null||(I>b&&([v,R]=[R,v],[I,b]=[b,I]),I==null||b==null||I===b))continue;let T=s.get(v),N=s.get(R);if(T==null||N==null)continue;let F=L(T,N);if(F===-1)continue;let w=m[F];for(let _=I;_<b;_++)w.set(_,(w.get(_)??0)+1)}let h=new Map,c=f((M,v)=>{if(v.size!==0)for(let[R,I]of v)M.set(R,(M.get(R)??0)+I)},"mergeInto"),p=new Set,C=f(M=>{let v=s.get(M);p.add(M);let R=v==null?void 0:m[v],I=R?new Map(R):new Map,b=n.children.get(M)??[];for(let T of b){let N=C(T),F=e[M];if(F!=null){let w=h.get(M);w||(w=new Map,h.set(M,w));let _=N.get(F)??0,k=e[T];k!=null&&k>F&&(_+=1),w.set(T,_)}c(I,N)}return I},"dfs");for(let M of n.roots)p.has(M)||C(M);for(let M of o)p.has(M)||C(M);return h}f(_s,"computeSubtreeCrossCounts");function Ds(t,e,n){let o=new Map,s=f(r=>{let i=n[r]??0,g=[...e.get(r)??[]];g.sort(So(n));for(let l of g){s(l);let a=o.get(l);a!=null&&(i=Math.min(i,a))}o.set(r,i)},"annotate");for(let r of t)s(r);return o}f(Ds,"annotateMinimumLayers");function So(t){return(e,n)=>{let o=t[e]??0,s=t[n]??0;return o===s?e.localeCompare(n):o-s}}f(So,"compareByRankThenId");function Hs(t,e,n,o){let s=0;for(let l of e){let a=n[l]??0;a>s&&(s=a)}let r=Array.from({length:s+1},()=>[]),i=new Set,g=f(l=>{if(i.has(l))return;i.add(l);let a=n[l]??0;r[a]||(r[a]=[]),r[a].push(l);for(let u of o(l))g(u)},"emit");for(let l of t)g(l);for(let l of e)if(!i.has(l)){let a=n[l]??0;r[a]||(r[a]=[]),r[a].push(l),i.add(l)}return r}f(Hs,"emitNodesInTreeOrder");function Xs(t){let e=[];for(let n of t){let o=new Set,s=[];for(let r of n)o.has(r)||(o.add(r),s.push(r));e.push(s)}return e}f(Xs,"deduplicateLayers");function Ys(t,e,n,o){return s=>{let r=t.get(s)??[];if(r.length===0)return[];let i=e[s]??0,g=[],l=[],a=n.get(s);for(let u of r){let y=o.get(u)??i;y>i?g.push({child:u,min:y}):l.push(u)}return g.sort((u,y)=>u.min===y.min?u.child.localeCompare(y.child):u.min-y.min),l.sort((u,y)=>{let L=a?.get(u)??0,m=a?.get(y)??0;if(L!==m)return L-m;let h=o.get(u)??i,c=o.get(y)??i;return h!==c?h-c:u.localeCompare(y)}),[...g.map(u=>u.child),...l]}}f(Ys,"createChildOrderer");function on(t,e,n){let o=Ns(t,{rankHint:e,laneOf:n}),{children:s,roots:r}=o;for(let y of t.nodes)s.has(y)||s.set(y,[]);let i=_s(t,e,o),g=[...r].sort(So(e)),l=Ds(g,s,e),a=Ys(s,e,i,l),u=Hs(g,t.nodes,e,a);return u=Xs(u),u}f(on,"buildMultitreeLayerOrder");function Gs(t,e,n){let o=new Set(t),s=new Set(e),r=Ne(e),i=[];for(let g of n)o.has(g.src)&&s.has(g.dst)&&i.push(r.get(g.dst));return Mo(i)}f(Gs,"countCrossingsBetweenAdjacent");function Un(t,e,n){let o=[];for(let r of e){let i=n[r.src],g=n[r.dst];if(i==null||g==null||i===g)continue;let l=r.src,a=r.dst,u=i,y=g;i>g&&(l=r.dst,a=r.src,u=g,y=i);for(let L=u;L<y;L++)o.push({id:`${r.id}@${L}`,src:l,dst:a,ref:r.ref})}let s=0;for(let r=0;r+1<t.length;r++)s+=Gs(t[r],t[r+1],o);return s}f(Un,"totalCrossings");function $s(t,e){let n={...e},{preds:o}=cn(t),s=fe(t),r=on(t,n,s),i=Un(r,t.edges,n),g=nn.MAX_CROSSING_OPTIMIZATION_PASSES;for(let l=0;l<g;l++){let a=!1,u=[...t.nodes].sort((y,L)=>(n[L]??0)-(n[y]??0));for(let y of u){let L=n[y]??0;if(L===0)continue;let m=0;for(let C of o.get(y)??[])m=Math.max(m,(n[C]??0)+1);if(m>=L)continue;let h=L;n[y]=m;let c=on(t,n,s),p=Un(c,t.edges,n);p<i?(i=p,a=!0):n[y]=h}if(!a)break}return n}f($s,"optimizeRanksByCrossings");function zs(t,e){let n=fe(t),o=[...t.nodes].sort((s,r)=>(e[s]??0)-(e[r]??0)||s.localeCompare(r));for(let s of o){let r=n(s);if(!r)continue;let i=t.edges.filter(c=>c.src===s);if(i.length===0)continue;let g=!1,l=0;for(let c of i){let p=n(c.dst);p==null||p===r?g=!0:l++}if(l===0||g)continue;let a=0,u=!1;for(let c of t.edges){if(c.dst!==s)continue;let p=n(c.src);p&&(p===r?u=!0:a++)}if(a>0||!u)continue;let y=e[s]??0,L=y+l,m=0;for(let c of t.edges)c.dst===s&&(m=Math.max(m,(e[c.src]??0)+1));let h=Math.max(y,m,L);h!==y&&(e[s]=h)}}f(zs,"adjustCrossLaneSources");function Vs(t,e){let n=ye(t),o=Be(n)??[...n.nodes].sort(),s=e?.compactSingleInput??!1,r=fe(n),i=Object.create(null);for(let l of o){let a=po(n,l),u=e?.ignoreCrossLaneEdges?a.filter(y=>{let L=r(y.src),m=r(l);return!L||!m?!0:L===m}):a;if(u.length===0)i[l]=0;else if(s&&u.length===1){let y=u[0].src,L=r(y),m=r(l);L!==m?i[l]=i[y]??0:i[l]=(i[y]??0)+1}else{let y=-1/0;for(let L of u)y=Math.max(y,(i[L.src]??0)+1);i[l]=y===-1/0?0:y}}return(e?.optimizeRanksByCrossings??!1)&&(i=$s(n,i)),e?.ignoreCrossLaneEdges&&zs(n,i),{layers:on(n,i,r),rankOf:i,dummy:new Set}}f(Vs,"assignLayers_LongestPath");function Us(t,e){let n=ye(t),s={...Vs(n,{compactSingleInput:e?.compactSingleInput,ignoreCrossLaneEdges:e?.ignoreCrossLaneEdges,optimizeRanksByCrossings:e?.optimizeRanksByCrossings}).rankOf},r=fe(n),{preds:i,succs:g}=cn(n,h=>{if(e?.ignoreCrossLaneEdges){let c=r(h.src),p=r(h.dst);if(c&&p&&c!==p)return!1}return!0}),l=Be(n)??[...n.nodes],a=[...l].reverse(),u=f((h,c)=>{let p=0;for(let v of i.get(h)??[])p=Math.max(p,(s[v]??0)+1);let C=Number.POSITIVE_INFINITY,M=g.get(h)??[];return M.length>0&&(C=Math.min(...M.map(v=>(s[v]??0)-1))),Number.isFinite(C)||(C=Math.max(p,c)),Math.min(Math.max(c,p),C)},"clampFeasible"),y=nn.GRAVITY_ITERATIONS,L=f(h=>{let c=!1;for(let p of h){let C=i.get(p)??[],M=g.get(p)??[];if(C.length===0&&M.length===0)continue;let v=C.length>0?C.reduce((T,N)=>T+(s[N]??0)+1,0)/C.length:s[p]??0,R=M.length>0?M.reduce((T,N)=>T+(s[N]??0)-1,0)/M.length:s[p]??0,I=Math.round((v+R)/2),b=u(p,I);b!==s[p]&&(s[p]=b,c=!0)}return c},"relaxOrder");for(let h=0;h<y;h++){let c=L(l),p=L(a);if(!c&&!p)break}for(let h of l){let c=0;for(let p of i.get(h)??[])c=Math.max(c,(s[p]??0)+1);(s[h]??0)<c&&(s[h]=c)}for(let h of a){let c=g.get(h)??[];if(c.length>0){let p=Math.min(...c.map(C=>(s[C]??0)-1));(s[h]??0)>p&&(s[h]=p)}}return{layers:bo(n,l,s),rankOf:s,dummy:new Set}}f(Us,"assignLayers_Gravity");function js(t){let e=yo(t),n=mo(t),o=xo(e),s=[];for(;o.length>0;){let r=[];for(let i of o){s.push(i);for(let g of n.get(i)??[])e.set(g,(e.get(g)??0)-1),(e.get(g)??0)===0&&r.push(g)}o=r.sort((i,g)=>i.localeCompare(g))}return s.length===t.nodes.length?s:null}f(js,"topoSortByGenerationIfAcyclic");function Ws(t,e){let n=ye(t),o=e?.direction==="LR"?js(n)??[...n.nodes].sort():Be(n)??[...n.nodes].sort(),s=fe(n),r=f(u=>s(u)??u,"laneOf"),i=Object.create(null),g=new Map,l=f((u,y)=>e?.ignoreCrossLaneEdges??!0?r(u)===r(y)?1:0:1,"edgeWeight");for(let u of o){if(n.nodeById.get(u)?.isGroup)continue;let L=po(n,u),m=0;if(L.length>0)for(let C of L){let M=C.src,v=i[M]??0;m=Math.max(m,v+l(M,u))}let h=r(u),c=g.get(h)??0,p=Math.max(m,c);i[u]=p,g.set(h,p+1)}return{layers:bo(n,o,i,{skipGroups:!0}),rankOf:i,dummy:new Set}}f(Ws,"assignLayers_LaneAwareCompact");function Ks(t,e){let n=ye(e),{rankOf:o}=t,s=t.layers.map(m=>[...m]),r=new Set(t.dummy?[...t.dummy]:[]),i=0,g=new Map(n.nodeById),l=f(m=>{let h=`placeholder-${i++}`,c={id:h,isGroup:!1,isDummy:!0,width:0,height:0};for(g.set(h,c),r.add(h);s.length<=m;)s.push([]);return s[m].push(h),o[h]=m,h},"addDummyAt"),a=[...n.edges].sort((m,h)=>m.id===h.id?m.src===h.src?m.dst.localeCompare(h.dst):m.src.localeCompare(h.src):m.id.localeCompare(h.id)),u=[];for(let m of a){let h=o[m.src]??0,c=o[m.dst]??0;if(c-h<=1){u.push(m);continue}let p=m.src;for(let M=h+1,v=0;M<c;M++,v++){let R=l(M);u.push({id:`${m.id}#${v}`,src:p,dst:R,weight:m.weight,ref:m.ref}),p=R}let C=c-h-2;u.push({id:`${m.id}#${Math.max(C+1,0)}`,src:p,dst:m.dst,weight:m.weight,ref:m.ref})}let L={nodes:[...n.nodes,...[...r].filter(m=>!n.nodes.includes(m))],edges:u,layout:n.layout,nodeById:g};return{layering:{layers:s,rankOf:o,dummy:r},graphWithDummies:L}}f(Ks,"makeProperLayering");function jn(t){let e=t.length;if(e===0)return Number.POSITIVE_INFINITY;let n=[...t].sort((o,s)=>o-s);return e%2===1?n[(e-1)/2]:.5*(n[e/2-1]+n[e/2])}f(jn,"median");function Wn(t){return t.length===0?Number.POSITIVE_INFINITY:t.reduce((n,o)=>n+o,0)/t.length}f(Wn,"barycenter");function qs(t,e,n,o){let s=new Map;for(let r of t)s.set(r,[]);for(let r of n)o==="down"?e.has(r.src)&&s.has(r.dst)&&s.get(r.dst).push(e.get(r.src)):e.has(r.dst)&&s.has(r.src)&&s.get(r.src).push(e.get(r.dst));return s}f(qs,"neighborPositionsFor");function Js(t,e,n){let o=n.get(t)??0,s=n.get(e)??0;return o!==s?o-s:t.localeCompare(e)}f(Js,"currentOrderTieBreak");function Kn(t,e,n){let o=new Set(t),s=new Set(e),r=Ne(t),i=Ne(e),g=[];for(let a of n)o.has(a.src)&&s.has(a.dst)&&g.push({u:r.get(a.src),v:i.get(a.dst)});g.sort((a,u)=>a.u===u.u?a.v-u.v:a.u-u.u);let l=g.map(a=>a.v);return Mo(l)}f(Kn,"countCrossingsBetweenAdjacent");function je(t,e,n){return[...t].sort((o,s)=>{let r=jn(e.get(o)??[]),i=jn(e.get(s)??[]);return r===i?Js(o,s,n):isFinite(r)?isFinite(i)?r-i:-1:1})}f(je,"sortByHeuristic");function qn(t,e,n,o,s,r){let i=Ne(t),g=Ne(e),l=qs(e,i,n,o);if(!s||!r||r.length===0)return je(e,l,g);let a=new Map;for(let L of e){let m=s(L),h=a.get(m)??[];h.push(L),a.set(m,h)}let u=[];for(let L of r){let m=a.get(L);if(!m||m.length===0)continue;let h=je(m,l,g);u.push(...h)}let y=a.get(null);if(y&&y.length>0){let L=je(y,l,g);for(let m of L){let h=Wn(l.get(m)??[]),c=u.length;if(isFinite(h))for(let[p,C]of u.entries()){let M=Wn(l.get(C)??[]);if(h<M){c=p;break}}u.splice(c,0,m)}}return u}f(qn,"reorderLayer");function Jn(t,e,n,o,s){let r=[...e],i=new Set(t),g=new Set(e),l=o?new Set(o):null,a=n.filter(c=>i.has(c.src)&&g.has(c.dst)),u=l?n.filter(c=>g.has(c.src)&&l.has(c.dst)):void 0,y=f(c=>{let p=Kn(t,c,a);return u&&o&&(p+=Kn(c,o,u)),p},"crossingScore"),L=s?new Map:null;if(s&&L)for(let c of e)L.set(c,s(c));let m=!0,h=y(r);for(;m;){m=!1;for(let c=0;c+1<r.length;c++){if(L){let M=L.get(r[c]),v=L.get(r[c+1]);if(M!==v)continue}let p=h;[r[c],r[c+1]]=[r[c+1],r[c]];let C=y(r);C<p?(h=C,m=!0):[r[c],r[c+1]]=[r[c+1],r[c]]}}return r}f(Jn,"transposeImprove");function Zs(t,e,n){let o=t.layers.map(g=>[...g]),s=e.edges,r=fe(e),i=Io(e,n?.laneOrder);for(let g=0;g<3;g++){for(let l=1;l<o.length;l++)o[l]=qn(o[l-1],o[l],s,"down",r,i),o[l]=Jn(o[l-1],o[l],s,o[l+1],r);for(let l=o.length-2;l>=0;l--)o[l]=qn(o[l+1],o[l],s,"up",r,i),o[l]=Jn(o[l+1],o[l],s,o[l-1],r)}return{layers:o}}f(Zs,"orderLayers");function Qs(t,e,n){let o=n?.layerGap??Fo.DEFAULT_LAYER_GAP,s=n?.nodeGap??Fo.DEFAULT_NODE_GAP,r=n?.laneGap??s*2,i=n?.direction??"TB",g=i==="LR"||i==="RL",l=t.layers,a=Object.create(null),u=Object.create(null),y=f(w=>e.nodeById.get(w),"getNode"),L=f(w=>y(w)?.width??0,"getWidth"),m=f(w=>y(w)?.height??0,"getHeight"),h=fe(e),c=Io(e,n?.laneOrder),p=l.map(w=>w.reduce((_,k)=>Math.max(_,m(k)),0)),C=[];if(g)for(let w=0;w+1<l.length;w++){let _=l[w].reduce((mt,Rt)=>Math.max(mt,L(Rt)),0),k=l[w+1].reduce((mt,Rt)=>Math.max(mt,L(Rt)),0),B=p[w],X=p[w+1],$=B/2+X/2,K=(_+k)/2,ct=Math.max(0,K-$-o);C.push(ct)}let M=new Set;for(let w of l)for(let _ of w)M.add(h(_));let v=M.has(null),R=c.filter(w=>M.has(w)),I=[...v?[null]:[],...R],b=Object.create(null);for(let w of R)b[w]=0;v&&(b.null=0);for(let w of l){let _=Object.create(null),k=[];for(let B of w){let X=h(B);X===null?k.push(B):(_[X]||(_[X]=[])).push(B)}for(let[B,X]of Object.entries(_)){let $=X.reduce((K,ct)=>K+L(ct),0)+s*Math.max(0,X.length-1);b[B]=Math.max(b[B]??0,$)}if(v&&k.length){let B=k.reduce((X,$)=>X+L($),0)+s*Math.max(0,k.length-1);b.null=Math.max(b.null??0,B)}}let T=new Map;{let w=I.map(B=>(B===null?b.null:b[B])??0),k=-(w.reduce((B,X)=>B+X,0)+r*Math.max(0,I.length-1))/2;for(let B=0;B<I.length;B++){let X=I[B],$=w[B]??0,K=k+$/2;T.set(X,K),k+=$,B<I.length-1&&(k+=r)}}let N=0;for(let[w,_]of l.entries()){let k=p[w]??0,B=new Map;for(let $ of _){let K=h($),ct=B.get(K)??[];ct.push($),B.set(K,ct)}for(let $ of I){let K=B.get($)??[];if(K.length===0)continue;let ct=T.get($);if(K.length===1){let mt=K[0];a[mt]=ct,u[mt]=N+k/2}else{let mt=K.map(Q=>L(Q)),Rt=mt.reduce((Q,W)=>Q+W,0)+s*(K.length-1),Ft=ct-Rt/2;for(let[Q,W]of K.entries()){let et=mt[Q];a[W]=Ft+et/2,u[W]=N+k/2,Ft+=et+s}}}let X=C[w]??0;N+=k+o+X}let F=new Map;for(let w of e.edges){let _=w.ref.id;F.has(_)||F.set(_,[]),F.get(_).push(w)}for(let[,w]of F){if(w.length===0)continue;let _=w[0].ref,k=_.start,B=_.end;if(k==null||B==null)continue;let X=Math.round(((a[k]??0)+(a[B]??0))/2),$=new Set;for(let K of w)$.add(K.src),$.add(K.dst);for(let K of $){if(K===k||K===B)continue;e.nodeById.get(K)?.isDummy&&(a[K]=X)}}return{x:a,y:u}}f(Qs,"assignCoordinates");var tr=8;function er(t){let e=2166136261;for(let n=0;n<t.length;n++)e^=t.charCodeAt(n),e=Math.imul(e,16777619);return e>>>0}f(er,"hashString");function nr(t){let e=t>>>0;return()=>{e+=1831565813;let n=e;return n=Math.imul(n^n>>>15,n|1),n^=n+Math.imul(n^n>>>7,n|61),((n^n>>>14)>>>0)/4294967296}}f(nr,"mulberry32");function or(t,e){let n=[...t],o=nr(e);for(let s=n.length-1;s>0;s--){let r=Math.floor(o()*(s+1));[n[s],n[r]]=[n[r],n[s]]}return n}f(or,"deterministicShuffle");function sr(t,e){let n=0;for(let[o,s]of t.entries())n+=Math.abs(o-(e.get(s)??o));return n}f(sr,"sourceDistance");function Zn(t,e){let n=new Map;for(let[s,r]of t.entries())n.set(r,s);let o=0;for(let{a:s,b:r,weight:i}of e){let g=n.get(s),l=n.get(r);g==null||l==null||(o+=i*Math.abs(g-l))}return o}f(Zn,"laneArrangementCost");function rr(t){let e=an(t);if(e.length<2)return[];let n=new Map(e.map((r,i)=>[r,i])),o=fe(t),s=new Map;for(let r of t.layout.edges??[]){if(r.isLayoutOnly)continue;let i=typeof r.start=="string"?r.start:void 0,g=typeof r.end=="string"?r.end:void 0;if(!i||!g||!t.nodeById.has(i)||!t.nodeById.has(g))continue;let l=o(i),a=o(g);if(!l||!a||l===a)continue;let u=n.get(l),y=n.get(a);if(u==null||y==null)continue;let[L,m]=u<=y?[l,a]:[a,l],h=`${L}\0${m}`,c=s.get(h);c?c.weight++:s.set(h,{a:L,b:m,weight:1})}return[...s.values()]}f(rr,"buildWeightedLaneEdges");function Qn(t,e,n){let o=[...t],s=Zn(o,e),r=!0,i=0,g=Math.max(1,o.length);for(;r&&i<g;){r=!1,i++;for(let l=0;l+1<o.length;l++){[o[l],o[l+1]]=[o[l+1],o[l]];let a=Zn(o,e);a<s?(s=a,r=!0):[o[l],o[l+1]]=[o[l+1],o[l]]}}return{order:o,cost:s,sourceDistance:sr(o,n)}}f(Qn,"greedySwitch");function ir(t,e){return t.cost!==e.cost?t.cost<e.cost:t.sourceDistance<e.sourceDistance}f(ir,"isBetterCandidate");function cr(t,e,n){let o=[...e].sort((s,r)=>s.a===r.a?s.b.localeCompare(r.b):s.a.localeCompare(r.a)).map(({a:s,b:r,weight:i})=>`${s}:${r}:${i}`).join("|");return er(`${t.join("|")}#${o}#${n}`)}f(cr,"seedForRestart");function ar(t,e={}){let n=an(t);if(n.length<2)return n;let o=rr(t);if(o.length===0)return n;let s=new Map(n.map((g,l)=>[g,l])),r=Qn(n,o,s),i=Math.max(0,e.restarts??tr);for(let g=0;g<i;g++){let l=cr(n,o,g),a=or(n,l),u=Qn(a,o,s);ir(u,r)&&(r=u)}return r.order}f(ar,"optimizeTopLaneOrder");function lr(t,e){let n=e?.ignoreCrossLaneEdges??!0,o=e?.optimizeRanksByCrossings??!0,s=ye(t),r=e?.automaticLaneOrdering?ar(s,{restarts:tr}):void 0,i=ws(s),g=i.acyclic,l=n?Ws(g,{compactSingleInput:e?.compactSingleInput??nn.DEFAULT_COMPACT_SINGLE_INPUT,ignoreCrossLaneEdges:!0,direction:e?.direction}):Us(g,{compactSingleInput:e?.compactSingleInput??nn.DEFAULT_COMPACT_SINGLE_INPUT,ignoreCrossLaneEdges:!1,optimizeRanksByCrossings:o}),{layering:a,graphWithDummies:u}=Ks(l,g),y=Zs(a,u,{laneOrder:r}),L=Qs(y,u,{layerGap:e?.layerGap,nodeGap:e?.nodeGap,direction:e?.direction,laneOrder:r});return{acyclic:g,reversed:i.reversed,layering:a,ordered:y,coordinates:L}}f(lr,"sugiyamaLayout");var at=Br.EPSILON,Fr=8,be=15,Te=15,Ve=25,ne=20,Sn=10;function to(t,e,n){let o=t.x??0,s=t.y??0,r=e.x-o,i=e.y-s,g=Math.abs(r),l=Math.abs(i);return g<at&&l<at?n:l>at&&l*3>=g?i>0?"bottom":"top":g>at?r>0?"right":"left":n}f(to,"chooseOrthogonalSide");function eo(t,e){return Math.abs(t.to-e.from)<at||Math.abs(t.to-e.to)<at?t.to:t.from}f(eo,"sharedLineEndpointCoord");function Me(t,e){return t.orient==="vertical"?{x:t.coord,y:e}:{x:e,y:t.coord}}f(Me,"pointOnLine");function fr(t,e){let n=t.nodes??[],o=t.edges??[],s=[];for(let d of o)d.isLayoutOnly||s.push({...d,__originalEdge:d});let r=new Map,i=new Map,g=[],l=e==="LR";for(let d of n)r.set(d.id,d);let a=n.filter(d=>d.isGroup&&!d.parentId);for(let d of a){let x={id:d.id},S=f(E=>{i.set(E.id,x),n.filter(A=>A.parentId===E.id).forEach(S)},"assignLane");S(d)}let u=n.filter(d=>!d.isGroup&&!d.isEdgeLabel).map(d=>{let x=d.width??10,S=d.height??10,E=d.x??0,A=d.y??0,P=Fr;return{nodeId:d.id,minX:E-x/2-P,maxX:E+x/2+P,minY:A-S/2-P,maxY:A+S/2+P,visualXHalfExtent:l?S/2+P:x/2+P}}),y=f((d,x,S,E)=>{let A=g.find(P=>P.orientation===d&&Math.abs(P.coord-x)<1);return A||(A={id:`pipe-${d}-${x.toFixed(0)}`,orientation:d,coord:x,spanMin:S,spanMax:E,tracks:[]},g.push(A)),A.spanMin=Math.min(A.spanMin,S),A.spanMax=Math.max(A.spanMax,E),A},"getOrAddPipe"),L=f((d,x)=>{let S=d.width??10,E=d.height??10,A=d.x??0,P=d.y??0;switch(x){case"top":return{x:A,y:P-E/2};case"bottom":return{x:A,y:P+E/2};case"left":return{x:A-S/2,y:P};case"right":return{x:A+S/2,y:P}}},"portForSide"),m=f((d,x,S)=>L(d,to(d,x,S?"bottom":"top")),"getOrthogonalPort"),h=[],c=[],p=new Set,C=1e3,M=f((d,x,S)=>{if(h.length===0)return 0;let E=Math.abs(x.y-S.y)<at,A=Math.abs(x.x-S.x)<at;if(!E&&!A)return 0;let P=0;if(E){let j=x.y,J=Math.min(x.x,S.x)-at,V=Math.max(x.x,S.x)+at;if(V<=J)return 0;for(let G of h)G.edgeIndex===d||G.orientation!=="vertical"||G.pipe.coord<J||G.pipe.coord>V||G.from-at<=j&&G.to+at>=j&&(P+=C)}else if(A){let j=x.x,J=Math.min(x.y,S.y)-at,V=Math.max(x.y,S.y)+at;if(V<=J)return 0;for(let G of h)G.edgeIndex===d||G.orientation!=="horizontal"||G.pipe.coord<J||G.pipe.coord>V||G.from-at<=j&&G.to+at>=j&&(P+=C)}return P},"crossingPenalty"),v=s.map((d,x)=>{if(!d.start||!d.end)return{idx:x,crossLane:0,dx:0,dy:0};let S=r.get(d.start),E=r.get(d.end),A=i.get(d.start),P=i.get(d.end),j=A&&P&&A.id!==P.id?1:0,J=S&&E?Math.abs((E.x??0)-(S.x??0)):0,V=S&&E?Math.abs((E.y??0)-(S.y??0)):0;return{idx:x,crossLane:j,dx:J,dy:V}}).sort((d,x)=>{if(d.crossLane!==x.crossLane)return x.crossLane-d.crossLane;let S=d.dx+d.dy,E=x.dx+x.dy;return Math.abs(S-E)>1?S-E:d.idx-x.idx}).map(d=>d.idx),R=f((d,x,S,E)=>{let A=Math.min(d.x,x.x),P=Math.max(d.x,x.x),j=Math.min(d.y,x.y),J=Math.max(d.y,x.y);return!!u.find(G=>S&&G.nodeId===S||E&&G.nodeId===E?!1:Math.abs(d.x-x.x)>at?G.minY<d.y&&G.maxY>d.y&&G.maxX>A&&G.minX<P:G.minX<d.x&&G.maxX>d.x&&G.maxY>j&&G.minY<J)},"isSegmentBlocked"),I=new Map,b=new Map;for(let d of s)!d.start||!d.end||d.start===d.end||(b.set(d.start,(b.get(d.start)??0)+1),b.set(d.end,(b.get(d.end)??0)+1));let T=f((d,x)=>to(d,x,"bottom"),"determineSide"),N=new Map;for(let[d,x]of s.entries()){if(!x.start||!x.end||x.start===x.end||x.points&&x.points.length>0)continue;let S=r.get(x.start),E=r.get(x.end);if(!S||!E)continue;let A=(E.x??0)-(S.x??0),P=(E.y??0)-(S.y??0);N.set(d,{edgeIdx:d,srcId:x.start,dstId:x.end,srcSide:T(S,{x:E.x??0,y:E.y??0}),dstSide:T(E,{x:S.x??0,y:S.y??0}),absDx:Math.abs(A),absDy:Math.abs(P),dxSign:Math.sign(A),dySign:Math.sign(P)})}let F=f(d=>d.srcSide==="top"||d.srcSide==="bottom"?d.absDx===0?1/0:d.absDy/d.absDx:d.absDy===0?1/0:d.absDx/d.absDy,"preferenceStrength"),w=f(d=>d.srcSide==="top"||d.srcSide==="bottom"?d.dxSign>=0?"right":"left":d.dySign>=0?"bottom":"top","secondarySide"),_=new Map;for(let d of N.values()){let x=`${d.srcId}:${d.srcSide}`;_.has(x)||_.set(x,[]),_.get(x).push(d)}let k=new Map,B=f((d,x)=>`${d}:${x}`,"loadKey");for(let d of N.values())k.set(B(d.srcId,d.srcSide),(k.get(B(d.srcId,d.srcSide))??0)+1),k.set(B(d.dstId,d.dstSide),(k.get(B(d.dstId,d.dstSide))??0)+1);for(let d of _.values())if(!(d.length<2)){d.sort((x,S)=>{let E=F(x),A=F(S);return Math.abs(E-A)>1e-9?A-E:x.edgeIdx-S.edgeIdx});for(let x=1;x<d.length;x++){let S=d[x],E=w(S),A=k.get(B(S.srcId,S.srcSide))??0,P=k.get(B(S.srcId,E))??0;P>=A||(k.set(B(S.srcId,S.srcSide),A-1),k.set(B(S.srcId,E),P+1),S.srcSide=E)}}let X=f(d=>{let x=d?.shape;return x==="question"||x==="diamond"},"isDiamondNode"),$=new Map;for(let d of N.values())$.has(d.dstId)||$.set(d.dstId,new Set),$.get(d.dstId).add(d.dstSide);for(let d of N.values()){if(!X(r.get(d.srcId)))continue;let x=$.get(d.srcId);if(!x?.has(d.srcSide))continue;let S=w(d);if(x.has(S)||(k.get(B(d.srcId,S))??0)>0)continue;let E=k.get(B(d.srcId,d.srcSide))??0;k.set(B(d.srcId,d.srcSide),Math.max(0,E-1)),k.set(B(d.srcId,S),1),d.srcSide=S}for(let d of N.values()){let{edgeIdx:x,srcId:S,dstId:E,srcSide:A,dstSide:P}=d,j=r.get(S),J=r.get(E),V=`${S}:${A}:src`,G=A==="top"||A==="bottom"?J.x??0:J.y??0;I.has(V)||I.set(V,[]),I.get(V).push({edgeIdx:x,oppositeCoord:G});let ot=`${E}:${P}:dst`,rt=P==="top"||P==="bottom"?j.x??0:j.y??0;I.has(ot)||I.set(ot,[]),I.get(ot).push({edgeIdx:x,oppositeCoord:rt})}let K=new Map,ct=8;for(let[d,x]of I){if(x.length<2)continue;x.sort((Lt,Dt)=>Lt.oppositeCoord-Dt.oppositeCoord);let S=d.split(":"),E=S.slice(0,-2).join(":"),A=S[S.length-2],P=S[S.length-1],j=r.get(E);if(!j)continue;let V=A==="left"||A==="right"?j.height??10:j.width??10,G=j.shape,rt=G==="question"||G==="diamond"?V*.3:V,tt=Math.min(20,Math.max(ct,rt/(x.length+1))),Nt=-(tt*(x.length-1))/2;for(let[Lt,Dt]of x.entries()){let Jt=Nt+Lt*tt,un=`${Dt.edgeIdx}:${P}`;K.set(un,Jt)}}let mt=f(d=>!!s[d]?.labelNodeId,"edgeHasLabelNode"),Rt=f((d,x)=>d?(I.get(`${d}:${x}:src`)??[]).some(({edgeIdx:S})=>mt(S))||(I.get(`${d}:${x}:dst`)??[]).some(({edgeIdx:S})=>mt(S)):!1,"faceHasLabelNode"),Ft=f((d,x,S)=>x==="top"||x==="bottom"?{x:d.x+S,y:d.y}:{x:d.x,y:d.y+S},"applyPortOffset"),Q=f((d,x,S)=>{let E=N.get(d),A={x:S.x??0,y:S.y??0},P={x:x.x??0,y:x.y??0},j=E?.srcSide??T(x,A),J=E?.dstSide??T(S,P),V=E?L(x,E.srcSide):m(x,A,!0),G=E?L(S,E.dstSide):m(S,P,!1),ot=K.get(`${d}:src`),rt=K.get(`${d}:dst`);return ot!==void 0&&(V=Ft(V,j,ot)),rt!==void 0&&(G=Ft(G,J,rt)),{pSrcPort:V,pDstPort:G,srcSide:j,dstSide:J}},"portsForEdge");for(let d of v){let x=s[d];if(c[d]=[],!x.start||!x.end||x.points&&x.points.length>0||x.start===x.end)continue;let S=r.get(x.start),E=r.get(x.end);if(!S||!E)continue;let{pSrcPort:A,pDstPort:P,srcSide:j,dstSide:J}=Q(d,S,E),V={...A},G={...P},ot=j==="top"||j==="bottom",rt=J==="top"||J==="bottom";if(ot){let Y=A.y>(S.y??0);V.y=Y?A.y+ne:A.y-ne}else{let Y=A.x>(S.x??0);V.x=Y?A.x+ne:A.x-ne}if(rt){let Y=P.y>(E.y??0);G.y=Y?P.y+ne:P.y-ne}else{let Y=P.x>(E.x??0);G.x=Y?P.x+ne:P.x-ne}let st=f((Y,z)=>{for(let q of u)if(!z.includes(q.nodeId)&&Y.x>q.minX&&Y.x<q.maxX&&Y.y>q.minY&&Y.y<q.maxY)return{inside:!0,obstacle:q};return{inside:!1}},"isPointInObstacle"),tt=f((Y,z,q,ft,Ct)=>{if(Ct){let Ot=Y.y>(z.y??0);return{x:(q.x??0)>=Y.x?ft.maxX+be:ft.minX-be,y:Ot?ft.maxY+Te:ft.minY-Te,leavesPositiveSide:Ot}}let bt=Y.x>(z.x??0),Et=(q.y??0)>=Y.y;return{x:bt?ft.maxX+be:ft.minX-be,y:Et?ft.maxY+Te:ft.minY-Te,leavesPositiveSide:bt}},"obstacleDetour"),yt=[],Nt=[x.start,x.end],Lt=st(V,Nt);if(Lt.inside&&Lt.obstacle){let Y=Lt.obstacle;if(ot){let z=tt(A,S,E,Y,!0);V.x=z.x,V.y=z.y;let q=z.leavesPositiveSide?Math.min(Y.minY-2,A.y+ne):Math.max(Y.maxY+2,A.y-ne);yt=[{x:A.x,y:q},{x:z.x,y:q},{x:z.x,y:z.y}]}else{let z=tt(A,S,E,Y,!1),q=z.leavesPositiveSide?Math.min(Y.minX-2,A.x+ne):Math.max(Y.maxX+2,A.x-ne);V.x=z.x,V.y=z.y,yt=[{x:q,y:A.y},{x:q,y:z.y},{x:z.x,y:z.y}]}}let Dt=[],Jt=st(G,Nt);if(Jt.inside&&Jt.obstacle){let Y=Jt.obstacle;if(rt){let z=tt(P,E,S,Y,!0);G.x=z.x,G.y=z.y,Dt=[{x:z.x,y:z.y},{x:P.x,y:z.y}]}else{let z=tt(P,E,S,Y,!1);G.x=z.x,G.y=z.y,Dt=[{x:z.x,y:z.y},{x:z.x,y:P.y}]}}if(yt.length===0&&Dt.length===0){let Y=be,z=Math.abs(V.x-G.x)<Y,q=Math.abs(V.y-G.y)<Y,ft=K.get(`${d}:src`)!==void 0||K.get(`${d}:dst`)!==void 0,Ct=(I.get(`${x.start??""}:${j}:src`)?.length??0)+(I.get(`${x.start??""}:${j}:dst`)?.length??0),bt=(I.get(`${x.end??""}:${J}:src`)?.length??0)+(I.get(`${x.end??""}:${J}:dst`)?.length??0),Et=Ct>1||bt>1,Ot=b.get(x.start??"")??0,ut=b.get(x.end??"")??0,Yt=Ct>1&&Rt(x.start,j)||bt>1&&Rt(x.end,J),ee=Ct<=1||Ot<=2,Pt=bt<=1||ut<=2;if((z||q)&&!ft&&(!Et||Et&&!Yt&&ee&&Pt)&&!R(A,P,x.start,x.end)){x.points=[{...A},{...V},{...G},{...P}],p.add(d);let Mt=q?"horizontal":"vertical",$t=q?A.y:A.x,It=q?Math.min(A.x,P.x):Math.min(A.y,P.y),St=q?Math.max(A.x,P.x):Math.max(A.y,P.y),Wt={id:`fast-path-${Mt}-${$t.toFixed(0)}-${d}`,orientation:Mt,coord:$t,spanMin:It,spanMax:St,tracks:[]};h.push({edgeIndex:d,segmentIndex:0,orientation:Mt,pipe:Wt,trackIndex:0,from:It,to:St});continue}}let un=y("vertical",V.x,V.y,V.y);V.x=un.coord;let gr=y("vertical",G.x,G.y,G.y);G.x=gr.coord;let ue=Math.min(V.x,G.x)-50,he=Math.max(V.x,G.x)+50,ve=Math.min(V.y,G.y)-50,Le=Math.max(V.y,G.y)+50;for(let Y of u){let z=Math.min(V.x,G.x),q=Math.max(V.x,G.x),ft=Math.min(V.y,G.y),Ct=Math.max(V.y,G.y);Y.minX<q&&Y.maxX>z&&Y.minY<Ct&&Y.maxY>ft&&(ue=Math.min(ue,Y.minX-Ve),he=Math.max(he,Y.maxX+Ve),ve=Math.min(ve,Y.minY-Ve),Le=Math.max(Le,Y.maxY+Ve))}for(let Y of u){if(Y.maxX<ue||Y.minX>he||Y.maxY<ve||Y.minY>Le)continue;let z=be;y("horizontal",Y.minY-z,ue,he),y("horizontal",Y.maxY+z,ue,he);let q=Te;y("vertical",Y.minX-q,ve,Le),y("vertical",Y.maxX+q,ve,Le)}y("horizontal",V.y,ue,he),y("horizontal",G.y,ue,he);let pr=g.filter(Y=>Y.orientation==="horizontal"&&Y.coord>=ve&&Y.coord<=Le),mr=g.filter(Y=>Y.orientation==="vertical"&&Y.coord>=ue&&Y.coord<=he),Fe=f((Y,z)=>`${Y.toFixed(1)},${z.toFixed(1)}`,"getKey"),Pe=Fe(V.x,V.y),Co=Fe(G.x,G.y),ke=new Map,hn=new Map,gn=new Map,_e=new Set,xe=[];ke.set(Pe,0),gn.set(Pe,"n"),xe.push({key:Pe,f:Math.hypot(G.x-V.x,G.y-V.y),pt:V}),_e.add(Pe);let Ht=[],ge=f((Y,z)=>R(Y,z,x.start,x.end),"checkSegmentBlocked"),pn={x:G.x,y:V.y},yr=ge(V,pn),xr=ge(pn,G),br=yr||xr,mn={x:V.x,y:G.y},Mr=ge(V,mn),Ir=ge(mn,G);if(br?Mr||Ir||(Math.abs(V.x-G.x)<at?Ht=[V,G]:Ht=[V,mn,G]):Math.abs(V.y-G.y)<at||Math.abs(V.x-G.x)<at?Ht=[V,G]:Ht=[V,pn,G],Ht.length===0)for(;xe.length>0;){xe.sort((ut,Yt)=>ut.f-Yt.f);let Y=xe.shift();if(_e.delete(Y.key),Y.key===Co){let ut=Co,Yt=G;for(Ht=[Yt];hn.has(ut);){let ee=hn.get(ut);Ht.unshift(ee),Yt=ee,ut=Fe(ee.x,ee.y)}break}let z=Y.pt.x,q=Y.pt.y,ft=mr.sort((ut,Yt)=>ut.coord-Yt.coord),Ct=ft.findIndex(ut=>Math.abs(ut.coord-z)<1),bt=pr.sort((ut,Yt)=>ut.coord-Yt.coord),Et=bt.findIndex(ut=>Math.abs(ut.coord-q)<1),Ot=[];Ct>0&&Ot.push({x:ft[Ct-1].coord,y:q}),Ct>=0&&Ct<ft.length-1&&Ot.push({x:ft[Ct+1].coord,y:q}),Et>0&&Ot.push({x:z,y:bt[Et-1].coord}),Et>=0&&Et<bt.length-1&&Ot.push({x:z,y:bt[Et+1].coord});for(let ut of Ot){let Yt=Math.min(z,ut.x),ee=Math.max(z,ut.x),Pt=Math.min(q,ut.y),Gt=Math.max(q,ut.y);if(u.some(Zt=>Zt.nodeId===x.start||Zt.nodeId===x.end?!1:Yt!==ee?Zt.minY<q&&Zt.maxY>q&&Zt.maxX>Yt&&Zt.minX<ee:Zt.minX<z&&Zt.maxX>z&&Zt.maxY>Pt&&Zt.minY<Gt))continue;let Mt=Fe(ut.x,ut.y),$t=Math.abs(ut.x-z)+Math.abs(ut.y-q),It=M(d,Y.pt,ut),St=0,Wt=G.x-V.x,Ee=G.y-V.y,De=ut.x-z,yn=ut.y-q;(Ee>10&&yn<-5||Ee<-10&&yn>5)&&(St=Math.abs(yn)*100),(Wt>10&&De<-5||Wt<-10&&De>5)&&(St+=Math.abs(De)*50);let vo=0,Lo=gn.get(Y.key)??"n",Eo=Math.abs(De)>at?"h":"v";Lo!=="n"&&Lo!==Eo&&(vo=50);let Sr=$t+It+St+vo,He=(ke.get(Y.key)??1/0)+Sr,To=Math.abs(G.x-ut.x)+Math.abs(G.y-ut.y);if(He<(ke.get(Mt)??1/0))if(hn.set(Mt,Y.pt),ke.set(Mt,He),gn.set(Mt,Eo),!_e.has(Mt))xe.push({key:Mt,f:He+To,pt:ut}),_e.add(Mt);else{let Zt=xe.findIndex(Cr=>Cr.key===Mt);Zt!==-1&&(xe[Zt].f=He+To)}}}if(Ht.length===0&&(Ht=[V,{x:V.x,y:G.y},G]),Ht.length>4){let Y=Ht[0],z=Ht[Ht.length-1],q=Math.min(Y.x,z.x),ft=Math.max(Y.x,z.x),Ct=Math.min(Y.y,z.y),bt=Math.max(Y.y,z.y);for(let Pt of Ht)q=Math.min(q,Pt.x),ft=Math.max(ft,Pt.x),Ct=Math.min(Ct,Pt.y),bt=Math.max(bt,Pt.y);let Et=ft>Math.max(Y.x,z.x),Ot=q<Math.min(Y.x,z.x);if(l){let Pt=Te;if(Et){let Gt=Math.max(Y.x,z.x),Bt=Math.min(Y.y,z.y),Mt=Math.max(Y.y,z.y),$t=u.filter(It=>It.minX<Gt&&It.maxX>Gt&&It.minY<Mt&&It.maxY>Bt);if($t.length>0){let It=Math.max(Y.x,z.x);for(let St of $t){let Wt=(St.minX+St.maxX)/2;if(St.visualXHalfExtent===void 0||isNaN(St.visualXHalfExtent))continue;let Ee=Wt+St.visualXHalfExtent+Pt;It=Math.max(It,Ee)}isNaN(It)||(ft=It)}}if(Ot){let Gt=u.filter(Bt=>Bt.minX<Math.min(Y.x,z.x)+Pt&&Bt.minY<Math.max(Y.y,z.y)&&Bt.maxY>Math.min(Y.y,z.y));if(Gt.length>0){let Bt=Math.min(Y.x,z.x);for(let Mt of Gt){let It=(Mt.minX+Mt.maxX)/2-Mt.visualXHalfExtent-Pt;Bt=Math.min(Bt,It)}q=Bt}}}let ut=f(Pt=>{let Gt=z.y>Y.y,Bt=u.filter(It=>{let St=Math.min(Y.x,z.x)<It.maxX&&Math.max(Y.x,z.x)>It.minX,Wt=Math.min(Y.y,z.y)<It.maxY&&Math.max(Y.y,z.y)>It.minY;return St&&Wt}),Mt=Bt;if(l&&Bt.length>0){let It=Bt.filter(St=>St.minX<Pt&&St.maxX>Pt);It.length>0&&(Mt=It)}if(Mt.length===0)return z.y;let $t=be;if(Gt){let St=Math.max(...Mt.map(Wt=>Wt.maxY))+$t;if(St<z.y-at)return St}else{let St=Math.min(...Mt.map(Wt=>Wt.minY))-$t;if(St>z.y+at)return St}return z.y},"findBestReturnY"),Yt=f(Pt=>{let Gt=ut(Pt),Bt={x:Pt,y:Y.y},Mt={x:Pt,y:Gt},$t={x:z.x,y:Gt},It=ge(Y,Bt),St=ge(Bt,Mt),Wt=ge(Mt,$t),Ee=Gt!==z.y?ge($t,z):!1;return!It&&!St&&!Wt&&!Ee?Math.abs(Gt-z.y)<at?[Y,Bt,Mt,z]:[Y,Bt,Mt,$t,z]:null},"trySimplifyWithDetourX"),ee=Et&&!Ot?Yt(ft):Ot&&!Et?Yt(q):null;ee&&(Ht=ee)}let Xt=[A,...yt,...Ht,...Dt.reverse(),P];if(Xt.length>=3){let Y=Xt[Xt.length-1],z=Xt[Xt.length-2],q=Xt[Xt.length-3],ft=Math.abs(q.y-z.y)<at&&Math.abs(z.y-Y.y)<at,Ct=Math.abs(q.x-z.x)<at&&Math.abs(z.x-Y.x)<at;if(ft){let bt=Math.sign(z.x-q.x),Et=Math.sign(Y.x-q.x);bt!==0&&bt===Et&&Math.abs(z.x-q.x)>Math.abs(Y.x-q.x)&&Xt.splice(-2,1)}else if(Ct){let bt=Math.sign(z.y-q.y),Et=Math.sign(Y.y-q.y);bt!==0&&bt===Et&&Math.abs(z.y-q.y)>Math.abs(Y.y-q.y)&&Xt.splice(-2,1)}}let ie=[Xt[0]];for(let Y=1;Y<Xt.length-1;Y++){if(Y===1){ie.push(Xt[Y]);continue}let z=ie[ie.length-1],q=Xt[Y],ft=Xt[Y+1];if(Math.abs(z.y-q.y)<at&&Math.abs(q.y-ft.y)<at){let Ct=q.x>z.x,bt=ft.x>q.x;if(Ct!==bt){ie.push(q);continue}continue}if(Math.abs(z.x-q.x)<at&&Math.abs(q.x-ft.x)<at){let Ct=q.y>z.y,bt=ft.y>q.y;if(Ct!==bt){ie.push(q);continue}continue}ie.push(q)}ie.push(Xt[Xt.length-1]);for(let Y=0;Y<ie.length-1;Y++){let z=ie[Y],q=ie[Y+1],ft=Math.abs(z.x-q.x)<at?"vertical":"horizontal",Ct=ft==="vertical"?z.x:z.y,bt=ft==="vertical"?Math.min(z.y,q.y):Math.min(z.x,q.x),Et=ft==="vertical"?Math.max(z.y,q.y):Math.max(z.x,q.x),Ot=y(ft,Ct,bt,Et),ut={edgeIndex:d,segmentIndex:Y,orientation:ft,pipe:Ot,trackIndex:0,from:bt,to:Et};h.push(ut),c[d].push(h.length-1),Ot.tracks[0]||(Ot.tracks[0]={index:0,coord:Ot.coord,segments:[]}),Ot.tracks[0].segments.push({edgeIndex:d,segmentIndex:Y,from:bt,to:Et})}}let W=f((d,x)=>d.from<x.to&&x.from<d.to,"segmentsOverlap"),et=f((d,x,S,E)=>{let A=!E.segments.some(j=>(j.edgeIndex!==x.edgeIndex||j.segmentIndex!==x.segmentIndex)&&W(j,d)),P=!S.segments.some(j=>(j.edgeIndex!==d.edgeIndex||j.segmentIndex!==d.segmentIndex)&&W(j,x));return A&&P?(d.trackIndex=E.index,x.trackIndex=S.index,S.segments=[...S.segments.filter(j=>j.edgeIndex!==d.edgeIndex||j.segmentIndex!==d.segmentIndex),{edgeIndex:x.edgeIndex,segmentIndex:x.segmentIndex,from:x.from,to:x.to}],E.segments=[...E.segments.filter(j=>j.edgeIndex!==x.edgeIndex||j.segmentIndex!==x.segmentIndex),{edgeIndex:d.edgeIndex,segmentIndex:d.segmentIndex,from:d.from,to:d.to}],!0):!1},"trySwapSegmentsAcrossTracks"),lt=f(d=>{let x=d.tracks.length;return d.tracks[x]={index:x,coord:d.coord,segments:[]},x},"createNewTrack"),gt=f((d,x)=>{let S=d.pipe.tracks[d.trackIndex];S.segments=S.segments.filter(A=>A.edgeIndex!==d.edgeIndex||A.segmentIndex!==d.segmentIndex),d.trackIndex=x,d.pipe.tracks[x].segments.push({edgeIndex:d.edgeIndex,segmentIndex:d.segmentIndex,from:d.from,to:d.to})},"moveSegmentToTrack"),xt=f((d,x)=>{let S=c[d.edgeIndex];for(let E of S){let A=h[E];A.pipe===d.pipe&&gt(A,x)}},"moveSegmentChainToTrack"),vt=f(d=>{let x=c[d.edgeIndex],S=x.indexOf(h.indexOf(d)),E=[];return S>0&&E.push(h[x[S-1]]),S<x.length-1&&E.push(h[x[S+1]]),E},"getAdjacentSegmentsAlongEdge"),Vt=f((d,x)=>{if(d.orientation===x.orientation)return!1;let S=d.orientation==="horizontal"?d:x,E=d.orientation==="horizontal"?x:d;return E.pipe.coord>S.from&&E.pipe.coord<S.to&&S.pipe.coord>E.from&&S.pipe.coord<E.to},"haveAnyCrossing"),Ut=f((d,x)=>{for(let S of d.tracks)if(!S.segments.some(A=>(A.edgeIndex!==x.edgeIndex||A.segmentIndex!==x.segmentIndex)&&W(A,x)))return S.index;return-1},"findAvailableTrack"),jt=f((d,x)=>{if(d.trackIndex===x.trackIndex)return W(d,x);let S=vt(d),E=vt(x);return S.some(A=>E.some(P=>Vt(A,P)))},"segmentsConflict"),te=f((d,x,S)=>{if(et(d,x,d.pipe.tracks[d.trackIndex],x.pipe.tracks[x.trackIndex]))return;let E=Ut(d.pipe,x);S(x,E!==-1?E:lt(d.pipe))},"resolveTrackConflict"),Se=f(d=>{let x=0;for(let S=0;S<d.length;S++)for(let E=S+1;E<d.length;E++){let A=d[S],P=d[E];A.pipe===P.pipe&&jt(A,P)&&(x++,te(A,P,xt))}return x},"resolveHandleConflicts"),de=new Map,Ce=f(d=>{if(de.has(d))return de.get(d);let x=c[d];if(x.length===0){let J={dest:0,deviation:0,base:0,delta:0};return de.set(d,J),J}let E=h[x[0]].pipe.coord,A=E;for(let J=1;J<x.length;J++){let V=h[x[J]];if(V.orientation==="horizontal"){let G=V.from,ot=V.to;A=Math.abs(G-E)>Math.abs(ot-E)?G:ot;break}}let P=Math.abs(A-E),j={dest:A,deviation:P,base:E,delta:A-E};return de.set(d,j),j},"getDestInfo"),ln=f(()=>{let d=0,x=new Map;for(let[E,A]of s.entries())c[E].length!==0&&A.start&&(x.has(A.start)||x.set(A.start,[]),x.get(A.start).push(E));let S=f(E=>{let A=s[E];if(!A.start||!A.end)return 0;let P=r.get(A.start),j=r.get(A.end);if(!P||!j)return 0;let J=(j.x??0)-(P.x??0),V=(j.y??0)-(P.y??0);return Math.abs(J)+Math.abs(V)},"getEdgeDistance");for(let E of x.values()){E.sort((P,j)=>{let J=Ce(P),V=Ce(j);if(Math.abs(J.deviation-V.deviation)>1)return J.deviation-V.deviation;if(Math.abs(J.dest-V.dest)>1)return J.dest-V.dest;let G=S(P),ot=S(j);if(Math.abs(G-ot)>1)return ot-G;let rt=c[P].length,st=c[j].length;if(rt!==st)return rt-st;if(rt===1){let tt=c[P][0],yt=c[j][0];if(h[tt]&&h[yt]){let Nt=h[tt],Lt=h[yt],Dt=Math.abs(Nt.to-Nt.from),Jt=Math.abs(Lt.to-Lt.from);if(Math.abs(Dt-Jt)>1)return Dt-Jt}}return 0});let A=E.map(P=>h[c[P][0]]);d+=Se(A)}return d},"fixSourceHandleCrossings"),fn=f(()=>{let d=0,x=new Map;for(let[S,E]of s.entries())c[S].length!==0&&E.end&&(x.has(E.end)||x.set(E.end,[]),x.get(E.end).push(S));for(let S of x.values()){S.sort((A,P)=>{let j=f(G=>{let ot=c[G];if(ot.length<2)return 0;let rt=h[ot[ot.length-2]];return Math.abs(rt.to-rt.from)},"getDist"),J=j(A),V=j(P);return Math.abs(J-V)>.1?J-V:A-P});let E=S.map(A=>h[c[A][c[A].length-1]]);d+=Se(E)}return d},"fixTargetHandleCrossings"),dn=f(()=>{let d=0;for(let x of g){let S=[];for(let E of x.tracks)for(let A of E.segments){let P=c[A.edgeIndex].find(j=>h[j].segmentIndex===A.segmentIndex);P!==void 0&&S.push(h[P])}S.sort((E,A)=>E.edgeIndex-A.edgeIndex||E.segmentIndex-A.segmentIndex);for(let E=0;E<S.length;E++)for(let A=E+1;A<S.length;A++){let P=S[E],j=S[A];jt(P,j)&&(d++,te(P,j,gt))}}return d},"fixPipeCrossings"),O=0,D=10;for(;O<D;){let d=0;if(d+=ln(),d+=fn(),d+=dn(),d===0)break;O++}let H=new Map;for(let d of g){let x=[];d.tracks.forEach(E=>{E.segments.forEach(A=>{x.push({edgeIndex:A.edgeIndex,segmentIndex:A.segmentIndex,trackIndex:E.index,from:A.from,to:A.to})})}),x.sort((E,A)=>E.from-A.from);let S=[];if(x.length>0){let E=[x[0]],A=x[0].to;for(let P=1;P<x.length;P++){let j=x[P];j.from<A?(E.push(j),A=Math.max(A,j.to)):(S.push(E),E=[j],A=j.to)}S.push(E)}for(let E of S){let A=new Set;E.forEach(tt=>A.add(tt.trackIndex));let P=new Map;E.forEach(tt=>{let yt=Ce(tt.edgeIndex);P.set(tt.trackIndex,(P.get(tt.trackIndex)??0)+yt.delta)});let j=[...A].filter(tt=>(P.get(tt)??0)<-1),J=[...A].filter(tt=>(P.get(tt)??0)>1),V=[...A].filter(tt=>Math.abs(P.get(tt)??0)<=1);j.sort((tt,yt)=>(P.get(yt)??0)-(P.get(tt)??0)),J.sort((tt,yt)=>(P.get(tt)??0)-(P.get(yt)??0));let G=f((tt,yt)=>{E.filter(Nt=>Nt.trackIndex===tt).forEach(Nt=>{let Lt=p.has(Nt.edgeIndex)?d.coord:yt;H.set(`${Nt.edgeIndex}-${Nt.segmentIndex}`,Lt)})},"assignCoord"),ot=0;for(let tt of j)ot++,G(tt,d.coord-ot*Sn);if(V.length===0&&A.size>0){let tt=[...A].sort((Lt,Dt)=>Math.abs(P.get(Lt)??0)-Math.abs(P.get(Dt)??0))[0],yt=j.indexOf(tt);yt!==-1&&j.splice(yt,1);let Nt=J.indexOf(tt);Nt!==-1&&J.splice(Nt,1),V.push(tt)}let rt=0;for(let tt of V){if(rt===0)G(tt,d.coord);else{let yt=rt%2===1?1:-1,Nt=Math.ceil(rt/2);G(tt,d.coord+yt*Nt*Sn*.5)}rt++}let st=0;for(let tt of J)st++,G(tt,d.coord+st*Sn)}}for(let[d,x]of s.entries()){let S=c[d]??[];if(S.length===0)continue;let E=[],A=r.get(x.start),P=r.get(x.end),{pSrcPort:j,pDstPort:J}=Q(d,A,P),V=S.map(rt=>{let st=h[rt],tt=H.get(`${st.edgeIndex}-${st.segmentIndex}`)??st.pipe.coord;return{orient:st.orientation,coord:tt,from:st.from,to:st.to}});E.push(j);for(let rt=0;rt<V.length;rt++){let st=V[rt],tt=E[E.length-1],yt=st.orient==="vertical"?tt.y:tt.x,Nt=st.orient==="vertical"?tt.x:tt.y,Lt=V[rt+1],Dt=rt<V.length-1;if(Math.abs(Nt-st.coord)>at&&E.push(Me(st,yt)),Dt&&Lt.orient===st.orient)if(Math.abs(st.coord-Lt.coord)>at){let Jt=st.orient==="vertical"?(yt+Lt.from)/2:eo(st,Lt);E.push(Me(st,Jt),Me(Lt,Jt))}else(rt===0||rt===V.length-2)&&E.push(Me(st,eo(st,Lt)));else if(Dt)E.push(Me(st,Lt.coord));else{let Jt=Math.abs(st.from-yt)<Math.abs(st.to-yt)?st.to:st.from;E.push(Me(st,Jt))}}let G=E[E.length-1];(Math.abs(G.x-J.x)>at||Math.abs(G.y-J.y)>at)&&E.push(J);let ot=[];E.length>0&&ot.push(E[0]);for(let rt=1;rt<E.length;rt++){let st=E[rt],tt=ot[ot.length-1];(Math.abs(st.x-tt.x)>at||Math.abs(st.y-tt.y)>at)&&ot.push(st)}x.points=ot}for(let d of s){let x=d.__originalEdge;x&&d.points&&(x.points=d.points)}t.edges=(t.edges??[]).filter(d=>!d.isLayoutOnly);let U=f((d,x)=>{let S=x.x??0,E=x.y??0,A=x.width??0,P=x.height??0;if(A<=0||P<=0)return d;let j=S-A/2,J=S+A/2,V=E-P/2,G=E+P/2;if(d.x<j||d.x>J||d.y<V||d.y>G)return d;let ot=d.x-j,rt=J-d.x,st=d.y-V,tt=G-d.y,yt=Math.min(ot,rt,st,tt);return yt===ot?{x:j,y:d.y}:yt===rt?{x:J,y:d.y}:yt===st?{x:d.x,y:V}:{x:d.x,y:G}},"nodeBoundaryClamp");for(let d of t.edges){let x=d.points;if(!x||x.length<2)continue;let S=d.start,E=d.end,A=S?r.get(S):void 0,P=E?r.get(E):void 0;A&&(x[0]=U(x[0],A)),P&&(x[x.length-1]=U(x[x.length-1],P))}return t}f(fr,"routeEdgesOrthogonal");function dr(t){return t.direction??"TB"}f(dr,"getSwimlaneDirection");function ur(t){let e=Wo(t),n=t.config.flowchart?.nodeSpacing??40,o=t.config.flowchart?.rankSpacing??100,s=t.config.swimlane?.ignoreCrossLaneEdges??!0,r=t.config.swimlane?.optimizeRanksByCrossings??!0,i=t.config.swimlane?.automaticLaneOrdering??!1,g=dr(t),{ordered:l,coordinates:a}=lr(e,{nodeGap:n,layerGap:o,ignoreCrossLaneEdges:s,optimizeRanksByCrossings:r,automaticLaneOrdering:i,direction:g});Ko(e,l,a,{nodeGap:n,layerGap:o});for(let u of t.edges??[])delete u.points;fr(t,g);for(let u of t.edges??[])(!u.curve||u.curve==="basis")&&(u.curve="rounded");return Ts(t,g),Es(t),g}f(ur,"runSwimlaneLayoutCore");function hr(t){jo(t);let e=qo(t);t.nodes=e.nodes,t.edges=e.edges}f(hr,"prepareSwimlaneLayout");var Wr=Ao({prepareLayout:hr,runLayoutCore:ur,afterPaint:Vo});export{Wr as render};