gitx.do 0.1.1 → 0.1.3

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 (376) hide show
  1. package/README.md +40 -353
  2. package/dist/do/logger.d.ts +50 -0
  3. package/dist/do/logger.d.ts.map +1 -0
  4. package/dist/do/logger.js +122 -0
  5. package/dist/do/logger.js.map +1 -0
  6. package/dist/{durable-object → do}/schema.d.ts +3 -3
  7. package/dist/do/schema.d.ts.map +1 -0
  8. package/dist/{durable-object → do}/schema.js +4 -3
  9. package/dist/do/schema.js.map +1 -0
  10. package/dist/do/types.d.ts +267 -0
  11. package/dist/do/types.d.ts.map +1 -0
  12. package/dist/do/types.js +62 -0
  13. package/dist/do/types.js.map +1 -0
  14. package/dist/index.d.ts +15 -469
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +39 -481
  17. package/dist/index.js.map +1 -1
  18. package/dist/mcp/auth.d.ts +77 -0
  19. package/dist/mcp/auth.d.ts.map +1 -0
  20. package/dist/mcp/auth.js +278 -0
  21. package/dist/mcp/auth.js.map +1 -0
  22. package/dist/mcp/index.d.ts +13 -0
  23. package/dist/mcp/index.d.ts.map +1 -0
  24. package/dist/mcp/index.js +19 -0
  25. package/dist/mcp/index.js.map +1 -0
  26. package/dist/mcp/server.d.ts +200 -0
  27. package/dist/mcp/server.d.ts.map +1 -0
  28. package/dist/mcp/server.js +275 -0
  29. package/dist/mcp/server.js.map +1 -0
  30. package/dist/mcp/tool-registry.d.ts +47 -0
  31. package/dist/mcp/tool-registry.d.ts.map +1 -0
  32. package/dist/mcp/tool-registry.js +284 -0
  33. package/dist/mcp/tool-registry.js.map +1 -0
  34. package/dist/mcp/tools.d.ts +103 -515
  35. package/dist/mcp/tools.d.ts.map +1 -1
  36. package/dist/mcp/tools.js +676 -3087
  37. package/dist/mcp/tools.js.map +1 -1
  38. package/dist/mcp/types.d.ts +124 -0
  39. package/dist/mcp/types.d.ts.map +1 -0
  40. package/dist/mcp/types.js +9 -0
  41. package/dist/mcp/types.js.map +1 -0
  42. package/package.json +19 -21
  43. package/dist/cli/commands/add.d.ts +0 -176
  44. package/dist/cli/commands/add.d.ts.map +0 -1
  45. package/dist/cli/commands/add.js +0 -979
  46. package/dist/cli/commands/add.js.map +0 -1
  47. package/dist/cli/commands/blame.d.ts +0 -259
  48. package/dist/cli/commands/blame.d.ts.map +0 -1
  49. package/dist/cli/commands/blame.js +0 -609
  50. package/dist/cli/commands/blame.js.map +0 -1
  51. package/dist/cli/commands/branch.d.ts +0 -249
  52. package/dist/cli/commands/branch.d.ts.map +0 -1
  53. package/dist/cli/commands/branch.js +0 -693
  54. package/dist/cli/commands/branch.js.map +0 -1
  55. package/dist/cli/commands/checkout.d.ts +0 -73
  56. package/dist/cli/commands/checkout.d.ts.map +0 -1
  57. package/dist/cli/commands/checkout.js +0 -725
  58. package/dist/cli/commands/checkout.js.map +0 -1
  59. package/dist/cli/commands/commit.d.ts +0 -182
  60. package/dist/cli/commands/commit.d.ts.map +0 -1
  61. package/dist/cli/commands/commit.js +0 -457
  62. package/dist/cli/commands/commit.js.map +0 -1
  63. package/dist/cli/commands/diff.d.ts +0 -464
  64. package/dist/cli/commands/diff.d.ts.map +0 -1
  65. package/dist/cli/commands/diff.js +0 -959
  66. package/dist/cli/commands/diff.js.map +0 -1
  67. package/dist/cli/commands/log.d.ts +0 -239
  68. package/dist/cli/commands/log.d.ts.map +0 -1
  69. package/dist/cli/commands/log.js +0 -535
  70. package/dist/cli/commands/log.js.map +0 -1
  71. package/dist/cli/commands/merge.d.ts +0 -106
  72. package/dist/cli/commands/merge.d.ts.map +0 -1
  73. package/dist/cli/commands/merge.js +0 -852
  74. package/dist/cli/commands/merge.js.map +0 -1
  75. package/dist/cli/commands/review.d.ts +0 -457
  76. package/dist/cli/commands/review.d.ts.map +0 -1
  77. package/dist/cli/commands/review.js +0 -558
  78. package/dist/cli/commands/review.js.map +0 -1
  79. package/dist/cli/commands/stash.d.ts +0 -157
  80. package/dist/cli/commands/stash.d.ts.map +0 -1
  81. package/dist/cli/commands/stash.js +0 -655
  82. package/dist/cli/commands/stash.js.map +0 -1
  83. package/dist/cli/commands/status.d.ts +0 -269
  84. package/dist/cli/commands/status.d.ts.map +0 -1
  85. package/dist/cli/commands/status.js +0 -492
  86. package/dist/cli/commands/status.js.map +0 -1
  87. package/dist/cli/commands/web.d.ts +0 -199
  88. package/dist/cli/commands/web.d.ts.map +0 -1
  89. package/dist/cli/commands/web.js +0 -697
  90. package/dist/cli/commands/web.js.map +0 -1
  91. package/dist/cli/fs-adapter.d.ts +0 -656
  92. package/dist/cli/fs-adapter.d.ts.map +0 -1
  93. package/dist/cli/fs-adapter.js +0 -1177
  94. package/dist/cli/fs-adapter.js.map +0 -1
  95. package/dist/cli/fsx-cli-adapter.d.ts +0 -359
  96. package/dist/cli/fsx-cli-adapter.d.ts.map +0 -1
  97. package/dist/cli/fsx-cli-adapter.js +0 -619
  98. package/dist/cli/fsx-cli-adapter.js.map +0 -1
  99. package/dist/cli/index.d.ts +0 -387
  100. package/dist/cli/index.d.ts.map +0 -1
  101. package/dist/cli/index.js +0 -579
  102. package/dist/cli/index.js.map +0 -1
  103. package/dist/cli/ui/components/DiffView.d.ts +0 -12
  104. package/dist/cli/ui/components/DiffView.d.ts.map +0 -1
  105. package/dist/cli/ui/components/DiffView.js +0 -11
  106. package/dist/cli/ui/components/DiffView.js.map +0 -1
  107. package/dist/cli/ui/components/ErrorDisplay.d.ts +0 -10
  108. package/dist/cli/ui/components/ErrorDisplay.d.ts.map +0 -1
  109. package/dist/cli/ui/components/ErrorDisplay.js +0 -11
  110. package/dist/cli/ui/components/ErrorDisplay.js.map +0 -1
  111. package/dist/cli/ui/components/FuzzySearch.d.ts +0 -15
  112. package/dist/cli/ui/components/FuzzySearch.d.ts.map +0 -1
  113. package/dist/cli/ui/components/FuzzySearch.js +0 -12
  114. package/dist/cli/ui/components/FuzzySearch.js.map +0 -1
  115. package/dist/cli/ui/components/LoadingSpinner.d.ts +0 -10
  116. package/dist/cli/ui/components/LoadingSpinner.d.ts.map +0 -1
  117. package/dist/cli/ui/components/LoadingSpinner.js +0 -10
  118. package/dist/cli/ui/components/LoadingSpinner.js.map +0 -1
  119. package/dist/cli/ui/components/NavigationList.d.ts +0 -14
  120. package/dist/cli/ui/components/NavigationList.d.ts.map +0 -1
  121. package/dist/cli/ui/components/NavigationList.js +0 -11
  122. package/dist/cli/ui/components/NavigationList.js.map +0 -1
  123. package/dist/cli/ui/components/ScrollableContent.d.ts +0 -13
  124. package/dist/cli/ui/components/ScrollableContent.d.ts.map +0 -1
  125. package/dist/cli/ui/components/ScrollableContent.js +0 -11
  126. package/dist/cli/ui/components/ScrollableContent.js.map +0 -1
  127. package/dist/cli/ui/components/index.d.ts +0 -7
  128. package/dist/cli/ui/components/index.d.ts.map +0 -1
  129. package/dist/cli/ui/components/index.js +0 -9
  130. package/dist/cli/ui/components/index.js.map +0 -1
  131. package/dist/cli/ui/terminal-ui.d.ts +0 -85
  132. package/dist/cli/ui/terminal-ui.d.ts.map +0 -1
  133. package/dist/cli/ui/terminal-ui.js +0 -121
  134. package/dist/cli/ui/terminal-ui.js.map +0 -1
  135. package/dist/do/BashModule.d.ts +0 -871
  136. package/dist/do/BashModule.d.ts.map +0 -1
  137. package/dist/do/BashModule.js +0 -1143
  138. package/dist/do/BashModule.js.map +0 -1
  139. package/dist/do/FsModule.d.ts +0 -612
  140. package/dist/do/FsModule.d.ts.map +0 -1
  141. package/dist/do/FsModule.js +0 -1120
  142. package/dist/do/FsModule.js.map +0 -1
  143. package/dist/do/GitModule.d.ts +0 -635
  144. package/dist/do/GitModule.d.ts.map +0 -1
  145. package/dist/do/GitModule.js +0 -784
  146. package/dist/do/GitModule.js.map +0 -1
  147. package/dist/do/GitRepoDO.d.ts +0 -281
  148. package/dist/do/GitRepoDO.d.ts.map +0 -1
  149. package/dist/do/GitRepoDO.js +0 -479
  150. package/dist/do/GitRepoDO.js.map +0 -1
  151. package/dist/do/bash-ast.d.ts +0 -246
  152. package/dist/do/bash-ast.d.ts.map +0 -1
  153. package/dist/do/bash-ast.js +0 -888
  154. package/dist/do/bash-ast.js.map +0 -1
  155. package/dist/do/container-executor.d.ts +0 -491
  156. package/dist/do/container-executor.d.ts.map +0 -1
  157. package/dist/do/container-executor.js +0 -731
  158. package/dist/do/container-executor.js.map +0 -1
  159. package/dist/do/index.d.ts +0 -53
  160. package/dist/do/index.d.ts.map +0 -1
  161. package/dist/do/index.js +0 -91
  162. package/dist/do/index.js.map +0 -1
  163. package/dist/do/tiered-storage.d.ts +0 -403
  164. package/dist/do/tiered-storage.d.ts.map +0 -1
  165. package/dist/do/tiered-storage.js +0 -689
  166. package/dist/do/tiered-storage.js.map +0 -1
  167. package/dist/do/withBash.d.ts +0 -231
  168. package/dist/do/withBash.d.ts.map +0 -1
  169. package/dist/do/withBash.js +0 -244
  170. package/dist/do/withBash.js.map +0 -1
  171. package/dist/do/withFs.d.ts +0 -237
  172. package/dist/do/withFs.d.ts.map +0 -1
  173. package/dist/do/withFs.js +0 -387
  174. package/dist/do/withFs.js.map +0 -1
  175. package/dist/do/withGit.d.ts +0 -180
  176. package/dist/do/withGit.d.ts.map +0 -1
  177. package/dist/do/withGit.js +0 -271
  178. package/dist/do/withGit.js.map +0 -1
  179. package/dist/durable-object/object-store.d.ts +0 -633
  180. package/dist/durable-object/object-store.d.ts.map +0 -1
  181. package/dist/durable-object/object-store.js +0 -1164
  182. package/dist/durable-object/object-store.js.map +0 -1
  183. package/dist/durable-object/schema.d.ts.map +0 -1
  184. package/dist/durable-object/schema.js.map +0 -1
  185. package/dist/durable-object/wal.d.ts +0 -416
  186. package/dist/durable-object/wal.d.ts.map +0 -1
  187. package/dist/durable-object/wal.js +0 -445
  188. package/dist/durable-object/wal.js.map +0 -1
  189. package/dist/mcp/adapter.d.ts +0 -772
  190. package/dist/mcp/adapter.d.ts.map +0 -1
  191. package/dist/mcp/adapter.js +0 -895
  192. package/dist/mcp/adapter.js.map +0 -1
  193. package/dist/mcp/sandbox/miniflare-evaluator.d.ts +0 -22
  194. package/dist/mcp/sandbox/miniflare-evaluator.d.ts.map +0 -1
  195. package/dist/mcp/sandbox/miniflare-evaluator.js +0 -140
  196. package/dist/mcp/sandbox/miniflare-evaluator.js.map +0 -1
  197. package/dist/mcp/sandbox/object-store-proxy.d.ts +0 -32
  198. package/dist/mcp/sandbox/object-store-proxy.d.ts.map +0 -1
  199. package/dist/mcp/sandbox/object-store-proxy.js +0 -30
  200. package/dist/mcp/sandbox/object-store-proxy.js.map +0 -1
  201. package/dist/mcp/sandbox/template.d.ts +0 -17
  202. package/dist/mcp/sandbox/template.d.ts.map +0 -1
  203. package/dist/mcp/sandbox/template.js +0 -71
  204. package/dist/mcp/sandbox/template.js.map +0 -1
  205. package/dist/mcp/sandbox.d.ts +0 -764
  206. package/dist/mcp/sandbox.d.ts.map +0 -1
  207. package/dist/mcp/sandbox.js +0 -1362
  208. package/dist/mcp/sandbox.js.map +0 -1
  209. package/dist/mcp/sdk-adapter.d.ts +0 -835
  210. package/dist/mcp/sdk-adapter.d.ts.map +0 -1
  211. package/dist/mcp/sdk-adapter.js +0 -974
  212. package/dist/mcp/sdk-adapter.js.map +0 -1
  213. package/dist/mcp/tools/do.d.ts +0 -32
  214. package/dist/mcp/tools/do.d.ts.map +0 -1
  215. package/dist/mcp/tools/do.js +0 -117
  216. package/dist/mcp/tools/do.js.map +0 -1
  217. package/dist/ops/blame.d.ts +0 -551
  218. package/dist/ops/blame.d.ts.map +0 -1
  219. package/dist/ops/blame.js +0 -1037
  220. package/dist/ops/blame.js.map +0 -1
  221. package/dist/ops/branch.d.ts +0 -766
  222. package/dist/ops/branch.d.ts.map +0 -1
  223. package/dist/ops/branch.js +0 -950
  224. package/dist/ops/branch.js.map +0 -1
  225. package/dist/ops/commit-traversal.d.ts +0 -349
  226. package/dist/ops/commit-traversal.d.ts.map +0 -1
  227. package/dist/ops/commit-traversal.js +0 -821
  228. package/dist/ops/commit-traversal.js.map +0 -1
  229. package/dist/ops/commit.d.ts +0 -555
  230. package/dist/ops/commit.d.ts.map +0 -1
  231. package/dist/ops/commit.js +0 -826
  232. package/dist/ops/commit.js.map +0 -1
  233. package/dist/ops/merge-base.d.ts +0 -397
  234. package/dist/ops/merge-base.d.ts.map +0 -1
  235. package/dist/ops/merge-base.js +0 -691
  236. package/dist/ops/merge-base.js.map +0 -1
  237. package/dist/ops/merge.d.ts +0 -855
  238. package/dist/ops/merge.d.ts.map +0 -1
  239. package/dist/ops/merge.js +0 -1551
  240. package/dist/ops/merge.js.map +0 -1
  241. package/dist/ops/tag.d.ts +0 -247
  242. package/dist/ops/tag.d.ts.map +0 -1
  243. package/dist/ops/tag.js +0 -649
  244. package/dist/ops/tag.js.map +0 -1
  245. package/dist/ops/tree-builder.d.ts +0 -178
  246. package/dist/ops/tree-builder.d.ts.map +0 -1
  247. package/dist/ops/tree-builder.js +0 -271
  248. package/dist/ops/tree-builder.js.map +0 -1
  249. package/dist/ops/tree-diff.d.ts +0 -291
  250. package/dist/ops/tree-diff.d.ts.map +0 -1
  251. package/dist/ops/tree-diff.js +0 -705
  252. package/dist/ops/tree-diff.js.map +0 -1
  253. package/dist/pack/delta.d.ts +0 -248
  254. package/dist/pack/delta.d.ts.map +0 -1
  255. package/dist/pack/delta.js +0 -740
  256. package/dist/pack/delta.js.map +0 -1
  257. package/dist/pack/format.d.ts +0 -446
  258. package/dist/pack/format.d.ts.map +0 -1
  259. package/dist/pack/format.js +0 -572
  260. package/dist/pack/format.js.map +0 -1
  261. package/dist/pack/full-generation.d.ts +0 -612
  262. package/dist/pack/full-generation.d.ts.map +0 -1
  263. package/dist/pack/full-generation.js +0 -1378
  264. package/dist/pack/full-generation.js.map +0 -1
  265. package/dist/pack/generation.d.ts +0 -441
  266. package/dist/pack/generation.d.ts.map +0 -1
  267. package/dist/pack/generation.js +0 -707
  268. package/dist/pack/generation.js.map +0 -1
  269. package/dist/pack/index.d.ts +0 -502
  270. package/dist/pack/index.d.ts.map +0 -1
  271. package/dist/pack/index.js +0 -833
  272. package/dist/pack/index.js.map +0 -1
  273. package/dist/refs/branch.d.ts +0 -683
  274. package/dist/refs/branch.d.ts.map +0 -1
  275. package/dist/refs/branch.js +0 -881
  276. package/dist/refs/branch.js.map +0 -1
  277. package/dist/refs/storage.d.ts +0 -833
  278. package/dist/refs/storage.d.ts.map +0 -1
  279. package/dist/refs/storage.js +0 -1023
  280. package/dist/refs/storage.js.map +0 -1
  281. package/dist/refs/tag.d.ts +0 -860
  282. package/dist/refs/tag.d.ts.map +0 -1
  283. package/dist/refs/tag.js +0 -996
  284. package/dist/refs/tag.js.map +0 -1
  285. package/dist/storage/backend.d.ts +0 -425
  286. package/dist/storage/backend.d.ts.map +0 -1
  287. package/dist/storage/backend.js +0 -41
  288. package/dist/storage/backend.js.map +0 -1
  289. package/dist/storage/fsx-adapter.d.ts +0 -204
  290. package/dist/storage/fsx-adapter.d.ts.map +0 -1
  291. package/dist/storage/fsx-adapter.js +0 -518
  292. package/dist/storage/fsx-adapter.js.map +0 -1
  293. package/dist/storage/lru-cache.d.ts +0 -691
  294. package/dist/storage/lru-cache.d.ts.map +0 -1
  295. package/dist/storage/lru-cache.js +0 -813
  296. package/dist/storage/lru-cache.js.map +0 -1
  297. package/dist/storage/object-index.d.ts +0 -585
  298. package/dist/storage/object-index.d.ts.map +0 -1
  299. package/dist/storage/object-index.js +0 -532
  300. package/dist/storage/object-index.js.map +0 -1
  301. package/dist/storage/r2-pack.d.ts +0 -1257
  302. package/dist/storage/r2-pack.d.ts.map +0 -1
  303. package/dist/storage/r2-pack.js +0 -1773
  304. package/dist/storage/r2-pack.js.map +0 -1
  305. package/dist/tiered/cdc-pipeline.d.ts +0 -1888
  306. package/dist/tiered/cdc-pipeline.d.ts.map +0 -1
  307. package/dist/tiered/cdc-pipeline.js +0 -1880
  308. package/dist/tiered/cdc-pipeline.js.map +0 -1
  309. package/dist/tiered/migration.d.ts +0 -1104
  310. package/dist/tiered/migration.d.ts.map +0 -1
  311. package/dist/tiered/migration.js +0 -1217
  312. package/dist/tiered/migration.js.map +0 -1
  313. package/dist/tiered/parquet-writer.d.ts +0 -1145
  314. package/dist/tiered/parquet-writer.d.ts.map +0 -1
  315. package/dist/tiered/parquet-writer.js +0 -1183
  316. package/dist/tiered/parquet-writer.js.map +0 -1
  317. package/dist/tiered/read-path.d.ts +0 -835
  318. package/dist/tiered/read-path.d.ts.map +0 -1
  319. package/dist/tiered/read-path.js +0 -487
  320. package/dist/tiered/read-path.js.map +0 -1
  321. package/dist/types/capability.d.ts +0 -1385
  322. package/dist/types/capability.d.ts.map +0 -1
  323. package/dist/types/capability.js +0 -36
  324. package/dist/types/capability.js.map +0 -1
  325. package/dist/types/index.d.ts +0 -13
  326. package/dist/types/index.d.ts.map +0 -1
  327. package/dist/types/index.js +0 -18
  328. package/dist/types/index.js.map +0 -1
  329. package/dist/types/interfaces.d.ts +0 -673
  330. package/dist/types/interfaces.d.ts.map +0 -1
  331. package/dist/types/interfaces.js +0 -26
  332. package/dist/types/interfaces.js.map +0 -1
  333. package/dist/types/objects.d.ts +0 -692
  334. package/dist/types/objects.d.ts.map +0 -1
  335. package/dist/types/objects.js +0 -837
  336. package/dist/types/objects.js.map +0 -1
  337. package/dist/types/storage.d.ts +0 -603
  338. package/dist/types/storage.d.ts.map +0 -1
  339. package/dist/types/storage.js +0 -191
  340. package/dist/types/storage.js.map +0 -1
  341. package/dist/types/worker-loader.d.ts +0 -60
  342. package/dist/types/worker-loader.d.ts.map +0 -1
  343. package/dist/types/worker-loader.js +0 -62
  344. package/dist/types/worker-loader.js.map +0 -1
  345. package/dist/utils/hash.d.ts +0 -198
  346. package/dist/utils/hash.d.ts.map +0 -1
  347. package/dist/utils/hash.js +0 -272
  348. package/dist/utils/hash.js.map +0 -1
  349. package/dist/utils/sha1.d.ts +0 -325
  350. package/dist/utils/sha1.d.ts.map +0 -1
  351. package/dist/utils/sha1.js +0 -635
  352. package/dist/utils/sha1.js.map +0 -1
  353. package/dist/wire/capabilities.d.ts +0 -1044
  354. package/dist/wire/capabilities.d.ts.map +0 -1
  355. package/dist/wire/capabilities.js +0 -941
  356. package/dist/wire/capabilities.js.map +0 -1
  357. package/dist/wire/path-security.d.ts +0 -157
  358. package/dist/wire/path-security.d.ts.map +0 -1
  359. package/dist/wire/path-security.js +0 -307
  360. package/dist/wire/path-security.js.map +0 -1
  361. package/dist/wire/pkt-line.d.ts +0 -345
  362. package/dist/wire/pkt-line.d.ts.map +0 -1
  363. package/dist/wire/pkt-line.js +0 -381
  364. package/dist/wire/pkt-line.js.map +0 -1
  365. package/dist/wire/receive-pack.d.ts +0 -1059
  366. package/dist/wire/receive-pack.d.ts.map +0 -1
  367. package/dist/wire/receive-pack.js +0 -1414
  368. package/dist/wire/receive-pack.js.map +0 -1
  369. package/dist/wire/smart-http.d.ts +0 -799
  370. package/dist/wire/smart-http.d.ts.map +0 -1
  371. package/dist/wire/smart-http.js +0 -945
  372. package/dist/wire/smart-http.js.map +0 -1
  373. package/dist/wire/upload-pack.d.ts +0 -727
  374. package/dist/wire/upload-pack.d.ts.map +0 -1
  375. package/dist/wire/upload-pack.js +0 -1141
  376. package/dist/wire/upload-pack.js.map +0 -1
@@ -1,655 +0,0 @@
1
- /**
2
- * @fileoverview gitx stash command
3
- *
4
- * This module implements the `gitx stash` command which temporarily stores
5
- * modified working directory contents. Features include:
6
- * - stash push - save changes to a new stash
7
- * - stash list - list all stashes
8
- * - stash apply - apply a stash without removing it
9
- * - stash pop - apply and remove a stash
10
- * - stash drop - remove a stash
11
- * - stash show - show stash contents
12
- * - stash clear - remove all stashes
13
- *
14
- * @module cli/commands/stash
15
- */
16
- import * as fs from 'fs/promises';
17
- import * as path from 'path';
18
- // ============================================================================
19
- // Helper Functions
20
- // ============================================================================
21
- /**
22
- * Find the .git directory from a given path
23
- */
24
- async function findGitDir(cwd) {
25
- const gitDir = path.join(cwd, '.git');
26
- try {
27
- const stat = await fs.stat(gitDir);
28
- if (stat.isDirectory()) {
29
- return gitDir;
30
- }
31
- }
32
- catch {
33
- // Not found
34
- }
35
- throw new Error('not a git repository (or any of the parent directories): .git');
36
- }
37
- /**
38
- * Get the current branch name
39
- */
40
- async function getCurrentBranch(gitDir) {
41
- try {
42
- const headContent = await fs.readFile(path.join(gitDir, 'HEAD'), 'utf8');
43
- const match = headContent.match(/^ref: refs\/heads\/(.+)\n?$/);
44
- if (match) {
45
- return match[1];
46
- }
47
- return 'HEAD';
48
- }
49
- catch {
50
- return 'HEAD';
51
- }
52
- }
53
- /**
54
- * Parse a stash reference like 'stash@{0}' or just '0' into an index
55
- */
56
- function parseStashRef(ref) {
57
- if (ref.startsWith('stash@{') && ref.endsWith('}')) {
58
- const indexStr = ref.slice(7, -1);
59
- const index = parseInt(indexStr, 10);
60
- if (isNaN(index) || index < 0) {
61
- throw new Error(`invalid stash reference: ${ref}`);
62
- }
63
- return index;
64
- }
65
- // Try to parse as a number
66
- const index = parseInt(ref, 10);
67
- if (isNaN(index) || index < 0) {
68
- throw new Error(`invalid stash reference: ${ref}`);
69
- }
70
- return index;
71
- }
72
- /**
73
- * Format a stash index as a reference
74
- */
75
- function formatStashRef(index) {
76
- return `stash@{${index}}`;
77
- }
78
- /**
79
- * Read the stash reflog to get all stash entries
80
- */
81
- async function readStashReflog(gitDir) {
82
- const reflogPath = path.join(gitDir, 'logs', 'refs', 'stash');
83
- try {
84
- const content = await fs.readFile(reflogPath, 'utf8');
85
- const lines = content.trim().split('\n').filter(line => line.length > 0);
86
- return lines.map(line => {
87
- // Format: sha sha message (for reflog)
88
- // Or: sha sha WIP on branch: message
89
- const parts = line.split(' ');
90
- const sha = parts[0] || parts[1] || '';
91
- const message = parts.slice(2).join(' ');
92
- return { sha, message };
93
- });
94
- }
95
- catch {
96
- return [];
97
- }
98
- }
99
- /**
100
- * Write the stash reflog
101
- */
102
- async function writeStashReflog(gitDir, entries) {
103
- const reflogPath = path.join(gitDir, 'logs', 'refs', 'stash');
104
- await fs.mkdir(path.dirname(reflogPath), { recursive: true });
105
- if (entries.length === 0) {
106
- try {
107
- await fs.unlink(reflogPath);
108
- }
109
- catch {
110
- // Ignore if doesn't exist
111
- }
112
- return;
113
- }
114
- const content = entries.map(e => `${e.sha} ${e.sha} ${e.message}`).join('\n') + '\n';
115
- await fs.writeFile(reflogPath, content);
116
- }
117
- /**
118
- * Read mock stash data (for testing)
119
- */
120
- async function readMockStashData(gitDir, index) {
121
- const stashDataDir = path.join(gitDir, 'mock-stash-data', `stash@{${index}}`);
122
- try {
123
- const files = [];
124
- const entries = await fs.readdir(stashDataDir);
125
- let message = '';
126
- let sha = '';
127
- for (const entry of entries) {
128
- if (entry === 'message') {
129
- message = await fs.readFile(path.join(stashDataDir, entry), 'utf8');
130
- }
131
- else if (entry === 'sha') {
132
- sha = await fs.readFile(path.join(stashDataDir, entry), 'utf8');
133
- }
134
- else if (entry !== 'timestamp') {
135
- const content = await fs.readFile(path.join(stashDataDir, entry), 'utf8');
136
- // Convert underscore-separated path back to slashes
137
- files.push({ path: entry.replace(/_/g, '/'), content });
138
- }
139
- }
140
- return { files, message, sha: sha.trim() };
141
- }
142
- catch {
143
- return null;
144
- }
145
- }
146
- /**
147
- * Write mock stash data (for testing)
148
- */
149
- async function writeMockStashData(gitDir, index, data) {
150
- const stashDataDir = path.join(gitDir, 'mock-stash-data', `stash@{${index}}`);
151
- await fs.mkdir(stashDataDir, { recursive: true });
152
- await fs.writeFile(path.join(stashDataDir, 'message'), data.message);
153
- await fs.writeFile(path.join(stashDataDir, 'sha'), data.sha);
154
- await fs.writeFile(path.join(stashDataDir, 'timestamp'), Date.now().toString());
155
- for (const file of data.files) {
156
- await fs.writeFile(path.join(stashDataDir, file.path.replace(/\//g, '_')), file.content);
157
- }
158
- }
159
- /**
160
- * Delete mock stash data
161
- */
162
- async function deleteMockStashData(gitDir, index) {
163
- const stashDataDir = path.join(gitDir, 'mock-stash-data', `stash@{${index}}`);
164
- try {
165
- await fs.rm(stashDataDir, { recursive: true, force: true });
166
- }
167
- catch {
168
- // Ignore
169
- }
170
- }
171
- /**
172
- * Get modified/staged files in working directory
173
- */
174
- async function getWorkingDirChanges(cwd, gitDir) {
175
- const changes = [];
176
- // Read files in the working directory (excluding .git)
177
- async function scanDir(dir, relativePath = '') {
178
- const entries = await fs.readdir(dir, { withFileTypes: true });
179
- for (const entry of entries) {
180
- if (entry.name === '.git')
181
- continue;
182
- const fullPath = path.join(dir, entry.name);
183
- const relPath = relativePath ? `${relativePath}/${entry.name}` : entry.name;
184
- if (entry.isDirectory()) {
185
- await scanDir(fullPath, relPath);
186
- }
187
- else if (entry.isFile()) {
188
- const content = await fs.readFile(fullPath, 'utf8');
189
- // Check if staged
190
- const stagedPath = path.join(gitDir, 'mock-staged');
191
- let staged = false;
192
- try {
193
- const stagedFiles = await fs.readFile(stagedPath, 'utf8');
194
- staged = stagedFiles.split('\n').includes(relPath);
195
- }
196
- catch {
197
- // No staged files
198
- }
199
- changes.push({ path: relPath, content, staged });
200
- }
201
- }
202
- }
203
- await scanDir(cwd);
204
- return changes;
205
- }
206
- /**
207
- * Generate a random SHA for mock stashes
208
- */
209
- function generateSha() {
210
- const hex = '0123456789abcdef';
211
- let sha = '';
212
- for (let i = 0; i < 40; i++) {
213
- sha += hex[Math.floor(Math.random() * 16)];
214
- }
215
- return sha;
216
- }
217
- /**
218
- * Rename stash directories after drop/pop
219
- */
220
- async function renumberStashes(gitDir, droppedIndex, totalCount) {
221
- const mockDataDir = path.join(gitDir, 'mock-stash-data');
222
- // Shift all stashes after the dropped one
223
- for (let i = droppedIndex + 1; i < totalCount; i++) {
224
- const oldDir = path.join(mockDataDir, `stash@{${i}}`);
225
- const newDir = path.join(mockDataDir, `stash@{${i - 1}}`);
226
- try {
227
- await fs.rename(oldDir, newDir);
228
- }
229
- catch {
230
- // Directory might not exist
231
- }
232
- }
233
- }
234
- // ============================================================================
235
- // Exported Functions
236
- // ============================================================================
237
- /**
238
- * Get the count of stash entries.
239
- */
240
- export async function getStashCount(cwd) {
241
- const gitDir = await findGitDir(cwd);
242
- // Check for mock stash count file first (for testing)
243
- const mockCountPath = path.join(gitDir, 'mock-stash-count');
244
- try {
245
- const count = await fs.readFile(mockCountPath, 'utf8');
246
- return parseInt(count.trim(), 10);
247
- }
248
- catch {
249
- // No mock count, check reflog
250
- }
251
- // Check the stash reflog
252
- const entries = await readStashReflog(gitDir);
253
- return entries.length;
254
- }
255
- /**
256
- * Update the mock stash count
257
- */
258
- async function updateStashCount(gitDir, count) {
259
- const mockCountPath = path.join(gitDir, 'mock-stash-count');
260
- if (count > 0) {
261
- await fs.writeFile(mockCountPath, count.toString());
262
- }
263
- else {
264
- try {
265
- await fs.unlink(mockCountPath);
266
- }
267
- catch {
268
- // Ignore
269
- }
270
- }
271
- // Also update refs/stash
272
- const stashRefPath = path.join(gitDir, 'refs', 'stash');
273
- if (count === 0) {
274
- try {
275
- await fs.unlink(stashRefPath);
276
- }
277
- catch {
278
- // Ignore
279
- }
280
- }
281
- }
282
- /**
283
- * List all stash entries.
284
- */
285
- export async function stashList(cwd) {
286
- const gitDir = await findGitDir(cwd);
287
- const branch = await getCurrentBranch(gitDir);
288
- const count = await getStashCount(cwd);
289
- if (count === 0) {
290
- return [];
291
- }
292
- const entries = [];
293
- // Read reflog for messages and SHAs
294
- const reflogEntries = await readStashReflog(gitDir);
295
- for (let i = 0; i < count; i++) {
296
- const reflogEntry = reflogEntries[i];
297
- const mockData = await readMockStashData(gitDir, i);
298
- const sha = mockData?.sha || reflogEntry?.sha || generateSha();
299
- const message = reflogEntry?.message || mockData?.message || `WIP on ${branch}`;
300
- entries.push({
301
- ref: formatStashRef(i),
302
- index: i,
303
- branch,
304
- message,
305
- sha,
306
- shortSha: sha.substring(0, 7),
307
- date: new Date(),
308
- files: mockData?.files.map(f => f.path) || []
309
- });
310
- }
311
- return entries;
312
- }
313
- /**
314
- * Push changes to a new stash entry.
315
- */
316
- export async function stashPush(cwd, options) {
317
- const gitDir = await findGitDir(cwd);
318
- const branch = await getCurrentBranch(gitDir);
319
- // Get working directory changes
320
- const changes = await getWorkingDirChanges(cwd, gitDir);
321
- if (changes.length === 0) {
322
- throw new Error('Nothing to stash - working tree clean');
323
- }
324
- // Get current stash count
325
- const currentCount = await getStashCount(cwd);
326
- // Shift existing stashes (they all move up by one)
327
- for (let i = currentCount - 1; i >= 0; i--) {
328
- const oldData = await readMockStashData(gitDir, i);
329
- if (oldData) {
330
- await writeMockStashData(gitDir, i + 1, oldData);
331
- }
332
- // Also rename the mock data directory
333
- const mockDataDir = path.join(gitDir, 'mock-stash-data');
334
- const oldDir = path.join(mockDataDir, `stash@{${i}}`);
335
- const newDir = path.join(mockDataDir, `stash@{${i + 1}}`);
336
- try {
337
- // Read all files and rewrite to new location
338
- const entries = await fs.readdir(oldDir);
339
- await fs.mkdir(newDir, { recursive: true });
340
- for (const entry of entries) {
341
- const content = await fs.readFile(path.join(oldDir, entry), 'utf8');
342
- await fs.writeFile(path.join(newDir, entry), content);
343
- }
344
- }
345
- catch {
346
- // Ignore
347
- }
348
- }
349
- // Create the new stash at index 0
350
- const sha = generateSha();
351
- const message = options?.message
352
- ? `On ${branch}: ${options.message}`
353
- : `WIP on ${branch}`;
354
- await writeMockStashData(gitDir, 0, {
355
- files: changes.map(c => ({ path: c.path, content: c.content })),
356
- message,
357
- sha
358
- });
359
- // Update reflog
360
- const reflogEntries = await readStashReflog(gitDir);
361
- reflogEntries.unshift({ sha, message });
362
- await writeStashReflog(gitDir, reflogEntries);
363
- // Update stash count
364
- const newCount = currentCount + 1;
365
- await updateStashCount(gitDir, newCount);
366
- // Write refs/stash
367
- const stashRefPath = path.join(gitDir, 'refs', 'stash');
368
- await fs.mkdir(path.dirname(stashRefPath), { recursive: true });
369
- await fs.writeFile(stashRefPath, sha + '\n');
370
- return {
371
- success: true,
372
- stashRef: formatStashRef(0),
373
- message
374
- };
375
- }
376
- /**
377
- * Apply a stash entry without removing it.
378
- */
379
- export async function stashApply(cwd, options) {
380
- const gitDir = await findGitDir(cwd);
381
- const count = await getStashCount(cwd);
382
- if (count === 0) {
383
- throw new Error('No stash entries');
384
- }
385
- // Determine which stash to apply
386
- let index = 0;
387
- if (options?.ref) {
388
- index = parseStashRef(options.ref);
389
- }
390
- if (index >= count) {
391
- throw new Error(`stash@{${index}} does not exist`);
392
- }
393
- // Read stash data
394
- const stashData = await readMockStashData(gitDir, index);
395
- if (!stashData) {
396
- throw new Error(`stash@{${index}} does not exist`);
397
- }
398
- // Apply the stash files to working directory
399
- for (const file of stashData.files) {
400
- const filePath = path.join(cwd, file.path);
401
- await fs.mkdir(path.dirname(filePath), { recursive: true });
402
- await fs.writeFile(filePath, file.content);
403
- }
404
- return {
405
- success: true,
406
- appliedRef: formatStashRef(index)
407
- };
408
- }
409
- /**
410
- * Apply and remove a stash entry.
411
- */
412
- export async function stashPop(cwd, options) {
413
- const gitDir = await findGitDir(cwd);
414
- const count = await getStashCount(cwd);
415
- if (count === 0) {
416
- throw new Error('No stash entries');
417
- }
418
- // Determine which stash to pop
419
- let index = 0;
420
- if (options?.ref) {
421
- index = parseStashRef(options.ref);
422
- }
423
- if (index >= count) {
424
- throw new Error(`stash@{${index}} does not exist`);
425
- }
426
- // Apply the stash first
427
- const applyResult = await stashApply(cwd, { ref: formatStashRef(index), index: options?.index });
428
- if (!applyResult.success) {
429
- return applyResult;
430
- }
431
- // Remove the stash
432
- await deleteMockStashData(gitDir, index);
433
- // Renumber remaining stashes
434
- await renumberStashes(gitDir, index, count);
435
- // Update reflog
436
- const reflogEntries = await readStashReflog(gitDir);
437
- reflogEntries.splice(index, 1);
438
- await writeStashReflog(gitDir, reflogEntries);
439
- // Update count
440
- await updateStashCount(gitDir, count - 1);
441
- // Update refs/stash to point to new top stash
442
- if (count - 1 > 0) {
443
- const newTopData = await readMockStashData(gitDir, 0);
444
- if (newTopData) {
445
- const stashRefPath = path.join(gitDir, 'refs', 'stash');
446
- await fs.writeFile(stashRefPath, newTopData.sha + '\n');
447
- }
448
- }
449
- return {
450
- success: true,
451
- appliedRef: formatStashRef(index)
452
- };
453
- }
454
- /**
455
- * Remove a specific stash entry.
456
- */
457
- export async function stashDrop(cwd, ref) {
458
- const gitDir = await findGitDir(cwd);
459
- const count = await getStashCount(cwd);
460
- if (count === 0) {
461
- throw new Error('No stash entries');
462
- }
463
- // Determine which stash to drop
464
- let index = 0;
465
- if (ref) {
466
- index = parseStashRef(ref);
467
- }
468
- if (index >= count) {
469
- throw new Error(`stash@{${index}} does not exist`);
470
- }
471
- // Get the SHA before deleting
472
- const stashData = await readMockStashData(gitDir, index);
473
- const sha = stashData?.sha || '';
474
- // Delete the stash
475
- await deleteMockStashData(gitDir, index);
476
- // Renumber remaining stashes
477
- await renumberStashes(gitDir, index, count);
478
- // Update reflog
479
- const reflogEntries = await readStashReflog(gitDir);
480
- reflogEntries.splice(index, 1);
481
- await writeStashReflog(gitDir, reflogEntries);
482
- // Update count
483
- await updateStashCount(gitDir, count - 1);
484
- // Update refs/stash
485
- if (count - 1 > 0) {
486
- const newTopData = await readMockStashData(gitDir, 0);
487
- if (newTopData) {
488
- const stashRefPath = path.join(gitDir, 'refs', 'stash');
489
- await fs.writeFile(stashRefPath, newTopData.sha + '\n');
490
- }
491
- }
492
- return {
493
- success: true,
494
- droppedRef: formatStashRef(index),
495
- droppedSha: sha
496
- };
497
- }
498
- /**
499
- * Show the contents of a stash entry.
500
- */
501
- export async function stashShow(cwd, ref) {
502
- const gitDir = await findGitDir(cwd);
503
- const count = await getStashCount(cwd);
504
- if (count === 0) {
505
- throw new Error('No stash entries');
506
- }
507
- // Determine which stash to show
508
- let index = 0;
509
- if (ref) {
510
- index = parseStashRef(ref);
511
- }
512
- if (index >= count) {
513
- throw new Error(`stash@{${index}} does not exist`);
514
- }
515
- // Get stash data
516
- const stashData = await readMockStashData(gitDir, index);
517
- if (!stashData) {
518
- throw new Error(`stash@{${index}} does not exist`);
519
- }
520
- return {
521
- files: stashData.files.map(f => ({ path: f.path }))
522
- };
523
- }
524
- /**
525
- * Remove all stash entries.
526
- */
527
- export async function stashClear(cwd) {
528
- const gitDir = await findGitDir(cwd);
529
- const count = await getStashCount(cwd);
530
- // Delete all stash data
531
- for (let i = 0; i < count; i++) {
532
- await deleteMockStashData(gitDir, i);
533
- }
534
- // Clear reflog
535
- await writeStashReflog(gitDir, []);
536
- // Clear count
537
- await updateStashCount(gitDir, 0);
538
- // Delete refs/stash
539
- const stashRefPath = path.join(gitDir, 'refs', 'stash');
540
- try {
541
- await fs.unlink(stashRefPath);
542
- }
543
- catch {
544
- // Ignore
545
- }
546
- }
547
- /**
548
- * Command handler for `gitx stash`.
549
- */
550
- export async function stashCommand(context) {
551
- const { cwd, args, options, stdout, stderr } = context;
552
- // Parse subcommand
553
- const subcommand = args[0] || 'push';
554
- // Handle --help
555
- if (options.help || options.h) {
556
- stdout(`gitx stash - Stash changes in a dirty working directory
557
-
558
- Usage: gitx stash [push [-m <message>]] [-u|--include-untracked]
559
- gitx stash list
560
- gitx stash show [<stash>]
561
- gitx stash apply [--index] [<stash>]
562
- gitx stash pop [--index] [<stash>]
563
- gitx stash drop [<stash>]
564
- gitx stash clear
565
-
566
- Subcommands:
567
- push Save local modifications to a new stash (default)
568
- list List all stashes
569
- show Show the changes recorded in a stash
570
- apply Apply a stash to the working directory
571
- pop Apply and remove a stash
572
- drop Remove a single stash
573
- clear Remove all stashes`);
574
- return;
575
- }
576
- try {
577
- switch (subcommand) {
578
- case 'push': {
579
- const message = options.m || options.message;
580
- const result = await stashPush(cwd, {
581
- message,
582
- includeUntracked: options.u || options.includeUntracked,
583
- keepIndex: options.keepIndex,
584
- all: options.all || options.a
585
- });
586
- stdout(`Saved working directory and index state ${result.message}`);
587
- break;
588
- }
589
- case 'list': {
590
- const entries = await stashList(cwd);
591
- for (const entry of entries) {
592
- stdout(`${entry.ref}: ${entry.message}`);
593
- }
594
- break;
595
- }
596
- case 'show': {
597
- const ref = args[1];
598
- const result = await stashShow(cwd, ref);
599
- for (const file of result.files) {
600
- stdout(` ${file.path}`);
601
- }
602
- break;
603
- }
604
- case 'apply': {
605
- const ref = args[1];
606
- const result = await stashApply(cwd, { ref, index: options.index });
607
- if (result.success) {
608
- stdout(`Applied ${result.appliedRef}`);
609
- }
610
- break;
611
- }
612
- case 'pop': {
613
- const ref = args[1];
614
- const result = await stashPop(cwd, { ref, index: options.index });
615
- if (result.success) {
616
- stdout(`Dropped ${result.appliedRef}`);
617
- }
618
- break;
619
- }
620
- case 'drop': {
621
- const ref = args[1];
622
- const result = await stashDrop(cwd, ref);
623
- stdout(`Dropped ${result.droppedRef} (${result.droppedSha.substring(0, 7)})`);
624
- break;
625
- }
626
- case 'clear': {
627
- await stashClear(cwd);
628
- break;
629
- }
630
- default: {
631
- // Check if it might be an option like -m
632
- if (subcommand.startsWith('-')) {
633
- // Treat as push with options
634
- const message = options.m || options.message;
635
- const result = await stashPush(cwd, {
636
- message,
637
- includeUntracked: options.u || options.includeUntracked,
638
- keepIndex: options.keepIndex,
639
- all: options.all || options.a
640
- });
641
- stdout(`Saved working directory and index state ${result.message}`);
642
- }
643
- else {
644
- throw new Error(`Unknown stash subcommand: ${subcommand}`);
645
- }
646
- }
647
- }
648
- }
649
- catch (error) {
650
- const err = error instanceof Error ? error : new Error(String(error));
651
- stderr(err.message);
652
- throw err;
653
- }
654
- }
655
- //# sourceMappingURL=stash.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stash.js","sourceRoot":"","sources":["../../../src/cli/commands/stash.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAkH5B,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;GAEG;AACH,KAAK,UAAU,UAAU,CAAC,GAAW;IACnC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IACrC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAClC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,OAAO,MAAM,CAAA;QACf,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,YAAY;IACd,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAA;AAClF,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,gBAAgB,CAAC,MAAc;IAC5C,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAA;QACxE,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAA;QAC9D,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,KAAK,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAA;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,GAAW;IAChC,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACnD,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACjC,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;QACpC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,EAAE,CAAC,CAAA;QACpD,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IACD,2BAA2B;IAC3B,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;IAC/B,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,EAAE,CAAC,CAAA;IACpD,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,KAAa;IACnC,OAAO,UAAU,KAAK,GAAG,CAAA;AAC3B,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,eAAe,CAAC,MAAc;IAK3C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7D,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;QACrD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACxE,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACtB,uCAAuC;YACvC,qCAAqC;YACrC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC7B,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;YACtC,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACxC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,CAAA;QACzB,CAAC,CAAC,CAAA;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,gBAAgB,CAAC,MAAc,EAAE,OAG9C;IACA,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7D,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAE7D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,0BAA0B;QAC5B,CAAC;QACD,OAAM;IACR,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IACpF,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;AACzC,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,iBAAiB,CAAC,MAAc,EAAE,KAAa;IAK5D,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,iBAAiB,EAAE,UAAU,KAAK,GAAG,CAAC,CAAA;IAC7E,IAAI,CAAC;QACH,MAAM,KAAK,GAA6C,EAAE,CAAA;QAC1D,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;QAE9C,IAAI,OAAO,GAAG,EAAE,CAAA;QAChB,IAAI,GAAG,GAAG,EAAE,CAAA;QAEZ,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,CAAA;YACrE,CAAC;iBAAM,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;gBAC3B,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,CAAA;YACjE,CAAC;iBAAM,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;gBACjC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,CAAA;gBACzE,oDAAoD;gBACpD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;YACzD,CAAC;QACH,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,CAAA;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,kBAAkB,CAAC,MAAc,EAAE,KAAa,EAAE,IAIhE;IACC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,iBAAiB,EAAE,UAAU,KAAK,GAAG,CAAC,CAAA;IAC7E,MAAM,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAEjD,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;IACpE,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;IAC5D,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAA;IAE/E,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,EACtD,IAAI,CAAC,OAAO,CACb,CAAA;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,mBAAmB,CAAC,MAAc,EAAE,KAAa;IAC9D,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,iBAAiB,EAAE,UAAU,KAAK,GAAG,CAAC,CAAA;IAC7E,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,oBAAoB,CAAC,GAAW,EAAE,MAAc;IAK7D,MAAM,OAAO,GAA8D,EAAE,CAAA;IAE7E,uDAAuD;IACvD,KAAK,UAAU,OAAO,CAAC,GAAW,EAAE,eAAuB,EAAE;QAC3D,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;QAC9D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;gBAAE,SAAQ;YAEnC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;YAC3C,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAA;YAE3E,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,MAAM,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;YAClC,CAAC;iBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC1B,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;gBACnD,kBAAkB;gBAClB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;gBACnD,IAAI,MAAM,GAAG,KAAK,CAAA;gBAClB,IAAI,CAAC;oBACH,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;oBACzD,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;gBACpD,CAAC;gBAAC,MAAM,CAAC;oBACP,kBAAkB;gBACpB,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAA;YAClD,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,OAAO,CAAC,GAAG,CAAC,CAAA;IAClB,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,WAAW;IAClB,MAAM,GAAG,GAAG,kBAAkB,CAAA;IAC9B,IAAI,GAAG,GAAG,EAAE,CAAA;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;IAC5C,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,eAAe,CAAC,MAAc,EAAE,YAAoB,EAAE,UAAkB;IACrF,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;IAExD,0CAA0C;IAC1C,KAAK,IAAI,CAAC,GAAG,YAAY,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACnD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,GAAG,CAAC,CAAA;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACzD,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACjC,CAAC;QAAC,MAAM,CAAC;YACP,4BAA4B;QAC9B,CAAC;IACH,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAW;IAC7C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAA;IAEpC,sDAAsD;IACtD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAA;IAC3D,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;QACtD,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAA;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,8BAA8B;IAChC,CAAC;IAED,yBAAyB;IACzB,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,CAAA;IAC7C,OAAO,OAAO,CAAC,MAAM,CAAA;AACvB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,gBAAgB,CAAC,MAAc,EAAE,KAAa;IAC3D,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAA;IAC3D,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,MAAM,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;IACrD,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IAED,yBAAyB;IACzB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;IACvD,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAW;IACzC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAA;IACpC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAA;IAE7C,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAA;IACtC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAChB,OAAO,EAAE,CAAA;IACX,CAAC;IAED,MAAM,OAAO,GAAiB,EAAE,CAAA;IAEhC,oCAAoC;IACpC,MAAM,aAAa,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,CAAA;IAEnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,CAAA;QACpC,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QAEnD,MAAM,GAAG,GAAG,QAAQ,EAAE,GAAG,IAAI,WAAW,EAAE,GAAG,IAAI,WAAW,EAAE,CAAA;QAC9D,MAAM,OAAO,GAAG,WAAW,EAAE,OAAO,IAAI,QAAQ,EAAE,OAAO,IAAI,UAAU,MAAM,EAAE,CAAA;QAE/E,OAAO,CAAC,IAAI,CAAC;YACX,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;YACtB,KAAK,EAAE,CAAC;YACR,MAAM;YACN,OAAO;YACP,GAAG;YACH,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;YAC7B,IAAI,EAAE,IAAI,IAAI,EAAE;YAChB,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;SAC9C,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,GAAW,EACX,OAA0B;IAE1B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAA;IACpC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAA;IAE7C,gCAAgC;IAChC,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IAEvD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;IAC1D,CAAC;IAED,0BAA0B;IAC1B,MAAM,YAAY,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAA;IAE7C,mDAAmD;IACnD,KAAK,IAAI,CAAC,GAAG,YAAY,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QAClD,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,kBAAkB,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAA;QAClD,CAAC;QACD,sCAAsC;QACtC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,GAAG,CAAC,CAAA;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACzD,IAAI,CAAC;YACH,6CAA6C;YAC7C,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;YACxC,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YAC3C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,CAAA;gBACnE,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,CAAA;YACvD,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IAED,kCAAkC;IAClC,MAAM,GAAG,GAAG,WAAW,EAAE,CAAA;IACzB,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO;QAC9B,CAAC,CAAC,MAAM,MAAM,KAAK,OAAO,CAAC,OAAO,EAAE;QACpC,CAAC,CAAC,UAAU,MAAM,EAAE,CAAA;IAEtB,MAAM,kBAAkB,CAAC,MAAM,EAAE,CAAC,EAAE;QAClC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/D,OAAO;QACP,GAAG;KACJ,CAAC,CAAA;IAEF,gBAAgB;IAChB,MAAM,aAAa,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,CAAA;IACnD,aAAa,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAA;IACvC,MAAM,gBAAgB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAE7C,qBAAqB;IACrB,MAAM,QAAQ,GAAG,YAAY,GAAG,CAAC,CAAA;IACjC,MAAM,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAExC,mBAAmB;IACnB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;IACvD,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC/D,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,GAAG,GAAG,IAAI,CAAC,CAAA;IAE5C,OAAO;QACL,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC;QAC3B,OAAO;KACR,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,GAAW,EACX,OAA2B;IAE3B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAA;IAEpC,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAA;IACtC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;IACrC,CAAC;IAED,iCAAiC;IACjC,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,OAAO,EAAE,GAAG,EAAE,CAAC;QACjB,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IACpC,CAAC;IAED,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,kBAAkB,CAAC,CAAA;IACpD,CAAC;IAED,kBAAkB;IAClB,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IACxD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,kBAAkB,CAAC,CAAA;IACpD,CAAC;IAED,6CAA6C;IAC7C,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1C,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC3D,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;IAC5C,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,cAAc,CAAC,KAAK,CAAC;KAClC,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,GAAW,EACX,OAA2B;IAE3B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAA;IAEpC,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAA;IACtC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;IACrC,CAAC;IAED,+BAA+B;IAC/B,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,OAAO,EAAE,GAAG,EAAE,CAAC;QACjB,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IACpC,CAAC;IAED,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,kBAAkB,CAAC,CAAA;IACpD,CAAC;IAED,wBAAwB;IACxB,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;IAEhG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;QACzB,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,mBAAmB;IACnB,MAAM,mBAAmB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAExC,6BAA6B;IAC7B,MAAM,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;IAE3C,gBAAgB;IAChB,MAAM,aAAa,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,CAAA;IACnD,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IAC9B,MAAM,gBAAgB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAE7C,eAAe;IACf,MAAM,gBAAgB,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;IAEzC,8CAA8C;IAC9C,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAClB,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QACrD,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;YACvD,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,CAAA;QACzD,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,cAAc,CAAC,KAAK,CAAC;KAClC,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,GAAW,EACX,GAAY;IAEZ,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAA;IAEpC,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAA;IACtC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;IACrC,CAAC;IAED,gCAAgC;IAChC,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,GAAG,EAAE,CAAC;QACR,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;IAC5B,CAAC;IAED,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,kBAAkB,CAAC,CAAA;IACpD,CAAC;IAED,8BAA8B;IAC9B,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IACxD,MAAM,GAAG,GAAG,SAAS,EAAE,GAAG,IAAI,EAAE,CAAA;IAEhC,mBAAmB;IACnB,MAAM,mBAAmB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAExC,6BAA6B;IAC7B,MAAM,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;IAE3C,gBAAgB;IAChB,MAAM,aAAa,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,CAAA;IACnD,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IAC9B,MAAM,gBAAgB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAE7C,eAAe;IACf,MAAM,gBAAgB,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;IAEzC,oBAAoB;IACpB,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAClB,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QACrD,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;YACvD,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,CAAA;QACzD,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,cAAc,CAAC,KAAK,CAAC;QACjC,UAAU,EAAE,GAAG;KAChB,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,GAAW,EACX,GAAY;IAEZ,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAA;IAEpC,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAA;IACtC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;IACrC,CAAC;IAED,gCAAgC;IAChC,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,GAAG,EAAE,CAAC;QACR,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;IAC5B,CAAC;IAED,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,kBAAkB,CAAC,CAAA;IACpD,CAAC;IAED,iBAAiB;IACjB,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IACxD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,kBAAkB,CAAC,CAAA;IACpD,CAAC;IAED,OAAO;QACL,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;KACpD,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAW;IAC1C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAA;IAEpC,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAA;IAEtC,wBAAwB;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,MAAM,mBAAmB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;IACtC,CAAC;IAED,eAAe;IACf,MAAM,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IAElC,cAAc;IACd,MAAM,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;IAEjC,oBAAoB;IACpB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;IACvD,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAuB;IACxD,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAEtD,mBAAmB;IACnB,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAA;IAEpC,gBAAgB;IAChB,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC;QAC9B,MAAM,CAAC;;;;;;;;;;;;;;;;;8BAiBmB,CAAC,CAAA;QAC3B,OAAM;IACR,CAAC;IAED,IAAI,CAAC;QACH,QAAQ,UAAU,EAAE,CAAC;YACnB,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,OAAO,CAAA;gBAC5C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE;oBAClC,OAAO;oBACP,gBAAgB,EAAE,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,gBAAgB;oBACvD,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC;iBAC9B,CAAC,CAAA;gBACF,MAAM,CAAC,2CAA2C,MAAM,CAAC,OAAO,EAAE,CAAC,CAAA;gBACnE,MAAK;YACP,CAAC;YAED,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,CAAA;gBACpC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;oBAC5B,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;gBAC1C,CAAC;gBACD,MAAK;YACP,CAAC;YAED,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;gBACnB,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;gBACxC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBAChC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;gBACzB,CAAC;gBACD,MAAK;YACP,CAAC;YAED,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;gBACnB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAA;gBACnE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,MAAM,CAAC,WAAW,MAAM,CAAC,UAAU,EAAE,CAAC,CAAA;gBACxC,CAAC;gBACD,MAAK;YACP,CAAC;YAED,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;gBACnB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAA;gBACjE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,MAAM,CAAC,WAAW,MAAM,CAAC,UAAU,EAAE,CAAC,CAAA;gBACxC,CAAC;gBACD,MAAK;YACP,CAAC;YAED,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;gBACnB,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;gBACxC,MAAM,CAAC,WAAW,MAAM,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAA;gBAC7E,MAAK;YACP,CAAC;YAED,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,UAAU,CAAC,GAAG,CAAC,CAAA;gBACrB,MAAK;YACP,CAAC;YAED,OAAO,CAAC,CAAC,CAAC;gBACR,yCAAyC;gBACzC,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC/B,6BAA6B;oBAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,OAAO,CAAA;oBAC5C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE;wBAClC,OAAO;wBACP,gBAAgB,EAAE,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,gBAAgB;wBACvD,SAAS,EAAE,OAAO,CAAC,SAAS;wBAC5B,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC;qBAC9B,CAAC,CAAA;oBACF,MAAM,CAAC,2CAA2C,MAAM,CAAC,OAAO,EAAE,CAAC,CAAA;gBACrE,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,KAAK,CAAC,6BAA6B,UAAU,EAAE,CAAC,CAAA;gBAC5D,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QACrE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QACnB,MAAM,GAAG,CAAA;IACX,CAAC;AACH,CAAC"}