@jpkme/diff-review 0.1.15 → 0.1.17

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 (164) hide show
  1. package/README.md +22 -14
  2. package/bin/diff-review.mjs +192 -21
  3. package/lib/acp-policy.mjs +10 -2
  4. package/lib/acp-policy.test.mjs +27 -0
  5. package/lib/acp.mjs +86 -10
  6. package/lib/agent-login.mjs +848 -36
  7. package/lib/agent-login.test.mjs +538 -0
  8. package/lib/agents.mjs +0 -39
  9. package/lib/agents.test.mjs +17 -24
  10. package/lib/extract-cache.test.mjs +162 -162
  11. package/lib/git.mjs +25 -9
  12. package/lib/model-label.mjs +20 -4
  13. package/lib/model-label.test.mjs +15 -2
  14. package/lib/output-name.mjs +7 -0
  15. package/lib/prompt.mjs +14 -11
  16. package/lib/prompt.test.mjs +49 -0
  17. package/lib/review-dir.mjs +14 -1
  18. package/lib/review-meta.mjs +11 -3
  19. package/lib/review-meta.test.mjs +19 -2
  20. package/lib/review-prep.mjs +63 -63
  21. package/lib/review.mjs +36 -4
  22. package/lib/review.test.mjs +35 -0
  23. package/lib/validate.mjs +11 -1
  24. package/lib/validate.test.mjs +47 -0
  25. package/lib/wait-output.test.mjs +1 -1
  26. package/package.json +2 -2
  27. package/schema.json +16 -1
  28. package/web/build/client/_app/immutable/assets/0.B04dzd8P.css +1 -0
  29. package/web/build/client/_app/immutable/assets/0.B04dzd8P.css.br +0 -0
  30. package/web/build/client/_app/immutable/assets/0.B04dzd8P.css.gz +0 -0
  31. package/web/build/client/_app/immutable/assets/2.CQmxVXnC.css +1 -0
  32. package/web/build/client/_app/immutable/assets/2.CQmxVXnC.css.br +0 -0
  33. package/web/build/client/_app/immutable/assets/2.CQmxVXnC.css.gz +0 -0
  34. package/web/build/client/_app/immutable/assets/3.BVJgADrM.css +1 -0
  35. package/web/build/client/_app/immutable/assets/3.BVJgADrM.css.br +0 -0
  36. package/web/build/client/_app/immutable/assets/3.BVJgADrM.css.gz +0 -0
  37. package/web/build/client/_app/immutable/assets/storage.Ztmr3s84.css +1 -0
  38. package/web/build/client/_app/immutable/assets/storage.Ztmr3s84.css.br +0 -0
  39. package/web/build/client/_app/immutable/assets/storage.Ztmr3s84.css.gz +0 -0
  40. package/web/build/client/_app/immutable/chunks/B-2kfLeA.js +1 -0
  41. package/web/build/client/_app/immutable/chunks/B-2kfLeA.js.br +0 -0
  42. package/web/build/client/_app/immutable/chunks/B-2kfLeA.js.gz +0 -0
  43. package/web/build/client/_app/immutable/chunks/B4SiKXUO.js +2 -0
  44. package/web/build/client/_app/immutable/chunks/B4SiKXUO.js.br +0 -0
  45. package/web/build/client/_app/immutable/chunks/B4SiKXUO.js.gz +0 -0
  46. package/web/build/client/_app/immutable/chunks/{D8WOD_eS.js → DA0YnpGR.js} +3 -3
  47. package/web/build/client/_app/immutable/chunks/DA0YnpGR.js.br +0 -0
  48. package/web/build/client/_app/immutable/chunks/DA0YnpGR.js.gz +0 -0
  49. package/web/build/client/_app/immutable/chunks/{BpVtXA-T.js → Dv85Hz5p.js} +1 -1
  50. package/web/build/client/_app/immutable/chunks/Dv85Hz5p.js.br +2 -0
  51. package/web/build/client/_app/immutable/chunks/Dv85Hz5p.js.gz +0 -0
  52. package/web/build/client/_app/immutable/chunks/b-BaDYIc.js +215 -0
  53. package/web/build/client/_app/immutable/chunks/b-BaDYIc.js.br +0 -0
  54. package/web/build/client/_app/immutable/chunks/b-BaDYIc.js.gz +0 -0
  55. package/web/build/client/_app/immutable/entry/app.DPUME9Z_.js +2 -0
  56. package/web/build/client/_app/immutable/entry/app.DPUME9Z_.js.br +0 -0
  57. package/web/build/client/_app/immutable/entry/app.DPUME9Z_.js.gz +0 -0
  58. package/web/build/client/_app/immutable/entry/start.hH87UZsD.js +1 -0
  59. package/web/build/client/_app/immutable/entry/start.hH87UZsD.js.br +0 -0
  60. package/web/build/client/_app/immutable/entry/start.hH87UZsD.js.gz +0 -0
  61. package/web/build/client/_app/immutable/nodes/0.BhHA-Ohy.js +1 -0
  62. package/web/build/client/_app/immutable/nodes/0.BhHA-Ohy.js.br +0 -0
  63. package/web/build/client/_app/immutable/nodes/0.BhHA-Ohy.js.gz +0 -0
  64. package/web/build/client/_app/immutable/nodes/1.jjvGFUxu.js +1 -0
  65. package/web/build/client/_app/immutable/nodes/1.jjvGFUxu.js.br +2 -0
  66. package/web/build/client/_app/immutable/nodes/1.jjvGFUxu.js.gz +0 -0
  67. package/web/build/client/_app/immutable/nodes/2.CJTh6CGA.js +12 -0
  68. package/web/build/client/_app/immutable/nodes/2.CJTh6CGA.js.br +0 -0
  69. package/web/build/client/_app/immutable/nodes/2.CJTh6CGA.js.gz +0 -0
  70. package/web/build/client/_app/immutable/nodes/3.DYAPRc_2.js +340 -0
  71. package/web/build/client/_app/immutable/nodes/3.DYAPRc_2.js.br +0 -0
  72. package/web/build/client/_app/immutable/nodes/3.DYAPRc_2.js.gz +0 -0
  73. package/web/build/client/_app/version.json +1 -1
  74. package/web/build/client/_app/version.json.br +0 -0
  75. package/web/build/client/_app/version.json.gz +0 -0
  76. package/web/build/handler.js +3 -3
  77. package/web/build/index.js +3 -3
  78. package/web/build/server/chunks/0-8NUeB9cB.js +11 -0
  79. package/web/build/server/chunks/{0-DUStDOsr.js.map → 0-8NUeB9cB.js.map} +1 -1
  80. package/web/build/server/chunks/1-BApN-ILJ.js +7 -0
  81. package/web/build/server/chunks/{1-DUj63QTT.js.map → 1-BApN-ILJ.js.map} +1 -1
  82. package/web/build/server/chunks/2-Bq7iMeQx.js +7 -0
  83. package/web/build/server/chunks/2-Bq7iMeQx.js.map +1 -0
  84. package/web/build/server/chunks/3-W0cqofyE.js +7 -0
  85. package/web/build/server/chunks/{3-C7UD6rei.js.map → 3-W0cqofyE.js.map} +1 -1
  86. package/web/build/server/chunks/_server.ts-Bu1fdGSB.js +123 -0
  87. package/web/build/server/chunks/_server.ts-Bu1fdGSB.js.map +1 -0
  88. package/web/build/server/chunks/{_server.ts-4RcoUd0l.js → _server.ts-BuUNechu.js} +5 -4
  89. package/web/build/server/chunks/_server.ts-BuUNechu.js.map +1 -0
  90. package/web/build/server/chunks/{agent-sessions-C_hlZJKN.js → agent-sessions-BArYLTW6.js} +1103 -146
  91. package/web/build/server/chunks/agent-sessions-BArYLTW6.js.map +1 -0
  92. package/web/build/server/chunks/{git-review-Bh1w0gak.js → git-review-BJ_JrFNP.js} +87 -26
  93. package/web/build/server/chunks/git-review-BJ_JrFNP.js.map +1 -0
  94. package/web/build/server/chunks/{handler-e2lEvjVT.js → handler-Df_bJiCq.js} +3 -3
  95. package/web/build/server/chunks/{handler-e2lEvjVT.js.map → handler-Df_bJiCq.js.map} +1 -1
  96. package/web/build/server/chunks/{hooks.server-Um1Sknmz.js → hooks.server-BEl7rVad.js} +4 -3
  97. package/web/build/server/chunks/{hooks.server-Um1Sknmz.js.map → hooks.server-BEl7rVad.js.map} +1 -1
  98. package/web/build/server/chunks/{index.js-C3-YX8SA.js → index.js-Bb0CZLZ_.js} +884 -881
  99. package/web/build/server/chunks/index.js-Bb0CZLZ_.js.map +1 -0
  100. package/web/build/server/chunks/manifest.js-j442duM7.js +65 -0
  101. package/web/build/server/chunks/manifest.js-j442duM7.js.map +1 -0
  102. package/web/build/server/chunks/{remote-1g4ayag-DMiPy1mT.js → remote-1g4ayag-BxKnZQPn.js} +6 -6
  103. package/web/build/server/chunks/remote-1g4ayag-BxKnZQPn.js.map +1 -0
  104. package/web/build/server/chunks/{remote-wh6t6j-RlIVOUe-.js → remote-wh6t6j-B-AHrGaN.js} +58 -12
  105. package/web/build/server/chunks/remote-wh6t6j-B-AHrGaN.js.map +1 -0
  106. package/web/build/server/chunks/{validate-CAQ31C7k.js → validate-CXjTRGnR.js} +67 -21
  107. package/web/build/server/chunks/validate-CXjTRGnR.js.map +1 -0
  108. package/web/build/client/_app/immutable/assets/0.BKRG1f36.css +0 -1
  109. package/web/build/client/_app/immutable/assets/0.BKRG1f36.css.br +0 -0
  110. package/web/build/client/_app/immutable/assets/0.BKRG1f36.css.gz +0 -0
  111. package/web/build/client/_app/immutable/assets/2.C4whE4xz.css +0 -1
  112. package/web/build/client/_app/immutable/assets/2.C4whE4xz.css.br +0 -0
  113. package/web/build/client/_app/immutable/assets/2.C4whE4xz.css.gz +0 -0
  114. package/web/build/client/_app/immutable/assets/3.Cw1J6YTM.css +0 -1
  115. package/web/build/client/_app/immutable/assets/3.Cw1J6YTM.css.br +0 -0
  116. package/web/build/client/_app/immutable/assets/3.Cw1J6YTM.css.gz +0 -0
  117. package/web/build/client/_app/immutable/assets/storage.TlsiS-AP.css +0 -1
  118. package/web/build/client/_app/immutable/assets/storage.TlsiS-AP.css.br +0 -0
  119. package/web/build/client/_app/immutable/assets/storage.TlsiS-AP.css.gz +0 -0
  120. package/web/build/client/_app/immutable/chunks/BpVtXA-T.js.br +0 -2
  121. package/web/build/client/_app/immutable/chunks/BpVtXA-T.js.gz +0 -0
  122. package/web/build/client/_app/immutable/chunks/CUhrLa7d.js +0 -210
  123. package/web/build/client/_app/immutable/chunks/CUhrLa7d.js.br +0 -0
  124. package/web/build/client/_app/immutable/chunks/CUhrLa7d.js.gz +0 -0
  125. package/web/build/client/_app/immutable/chunks/D8WOD_eS.js.br +0 -0
  126. package/web/build/client/_app/immutable/chunks/D8WOD_eS.js.gz +0 -0
  127. package/web/build/client/_app/immutable/chunks/QvO6K-HK.js +0 -2
  128. package/web/build/client/_app/immutable/chunks/QvO6K-HK.js.br +0 -0
  129. package/web/build/client/_app/immutable/chunks/QvO6K-HK.js.gz +0 -0
  130. package/web/build/client/_app/immutable/chunks/lUYXRDtZ.js +0 -1
  131. package/web/build/client/_app/immutable/chunks/lUYXRDtZ.js.br +0 -0
  132. package/web/build/client/_app/immutable/chunks/lUYXRDtZ.js.gz +0 -0
  133. package/web/build/client/_app/immutable/entry/app.BjJsHui4.js +0 -2
  134. package/web/build/client/_app/immutable/entry/app.BjJsHui4.js.br +0 -0
  135. package/web/build/client/_app/immutable/entry/app.BjJsHui4.js.gz +0 -0
  136. package/web/build/client/_app/immutable/entry/start.D4unRHC4.js +0 -1
  137. package/web/build/client/_app/immutable/entry/start.D4unRHC4.js.br +0 -0
  138. package/web/build/client/_app/immutable/entry/start.D4unRHC4.js.gz +0 -0
  139. package/web/build/client/_app/immutable/nodes/0.Dj97JW46.js +0 -1
  140. package/web/build/client/_app/immutable/nodes/0.Dj97JW46.js.br +0 -0
  141. package/web/build/client/_app/immutable/nodes/0.Dj97JW46.js.gz +0 -0
  142. package/web/build/client/_app/immutable/nodes/1.C8JJYlWG.js +0 -1
  143. package/web/build/client/_app/immutable/nodes/1.C8JJYlWG.js.br +0 -1
  144. package/web/build/client/_app/immutable/nodes/1.C8JJYlWG.js.gz +0 -0
  145. package/web/build/client/_app/immutable/nodes/2.CDI0Ipi4.js +0 -10
  146. package/web/build/client/_app/immutable/nodes/2.CDI0Ipi4.js.br +0 -0
  147. package/web/build/client/_app/immutable/nodes/2.CDI0Ipi4.js.gz +0 -0
  148. package/web/build/client/_app/immutable/nodes/3.DVC22CDg.js +0 -171
  149. package/web/build/client/_app/immutable/nodes/3.DVC22CDg.js.br +0 -0
  150. package/web/build/client/_app/immutable/nodes/3.DVC22CDg.js.gz +0 -0
  151. package/web/build/server/chunks/0-DUStDOsr.js +0 -11
  152. package/web/build/server/chunks/1-DUj63QTT.js +0 -7
  153. package/web/build/server/chunks/2-B4PSKe5P.js +0 -7
  154. package/web/build/server/chunks/2-B4PSKe5P.js.map +0 -1
  155. package/web/build/server/chunks/3-C7UD6rei.js +0 -7
  156. package/web/build/server/chunks/_server.ts-4RcoUd0l.js.map +0 -1
  157. package/web/build/server/chunks/agent-sessions-C_hlZJKN.js.map +0 -1
  158. package/web/build/server/chunks/git-review-Bh1w0gak.js.map +0 -1
  159. package/web/build/server/chunks/index.js-C3-YX8SA.js.map +0 -1
  160. package/web/build/server/chunks/manifest.js-CmbRPv0j.js +0 -58
  161. package/web/build/server/chunks/manifest.js-CmbRPv0j.js.map +0 -1
  162. package/web/build/server/chunks/remote-1g4ayag-DMiPy1mT.js.map +0 -1
  163. package/web/build/server/chunks/remote-wh6t6j-RlIVOUe-.js.map +0 -1
  164. package/web/build/server/chunks/validate-CAQ31C7k.js.map +0 -1
@@ -1,11 +1,12 @@
1
- import { j as startPendingAgentRun } from './agent-sessions-C_hlZJKN.js';
2
- import './validate-CAQ31C7k.js';
1
+ import { m as startPendingAgentRun } from './agent-sessions-BArYLTW6.js';
2
+ import './validate-CXjTRGnR.js';
3
3
  import 'node:fs';
4
4
  import 'node:child_process';
5
5
  import 'node:path';
6
6
  import 'node:os';
7
7
  import 'node:stream';
8
8
  import '@agentclientprotocol/sdk';
9
+ import 'node:crypto';
9
10
 
10
11
  //#region src/hooks.server.ts
11
12
  /**
@@ -39,4 +40,4 @@ var handleError = ({ error, message }) => {
39
40
  };
40
41
 
41
42
  export { handle, handleError, init };
42
- //# sourceMappingURL=hooks.server-Um1Sknmz.js.map
43
+ //# sourceMappingURL=hooks.server-BEl7rVad.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.server-Um1Sknmz.js","sources":["../../../.svelte-kit/output/server/entries/hooks.server.js"],"sourcesContent":["import { d as startPendingAgentRun } from \"../chunks/agent-sessions.js\";\n//#region src/hooks.server.ts\n/**\n* Hosts aceptados. La UI escucha en 127.0.0.1 y puede lanzar agentes: un Host ajeno (DNS rebinding: un dominio\n* que resuelve a 127.0.0.1) no debe llegar a la app. Los POST de otro origen ya los frena SvelteKit (CSRF).\n*/\nfunction allowedHost(host) {\n\tif (!host) return false;\n\tconst name = host.replace(/:\\d+$/, \"\").replace(/^\\[|\\]$/g, \"\").toLowerCase();\n\tif (name === \"127.0.0.1\" || name === \"localhost\" || name === \"::1\") return true;\n\tconst configured = String(process.env.HOST || \"\").trim().toLowerCase();\n\treturn Boolean(configured) && configured !== \"0.0.0.0\" && configured !== \"::\" && name === configured;\n}\n/** Si la CLI eligió un agente, la review arranca con el server (el navegador la sigue por `?agent=<id>`). */\nvar init = () => {\n\tstartPendingAgentRun();\n};\nvar handle = ({ event, resolve }) => {\n\tif (!allowedHost(event.request.headers.get(\"host\"))) return new Response(\"Host no permitido\", { status: 403 });\n\treturn resolve(event);\n};\n/** Herramienta local: conviene ver el error real (git, devalue, etc.) y no el 500 genérico. */\nvar handleError = ({ error, message }) => {\n\tconsole.error(\"[diff-review]\", error);\n\tif (error instanceof Error && error.message.trim()) return { message: error.message };\n\tif (error && typeof error === \"object\" && \"message\" in error) {\n\t\tconst detail = String(error.message || \"\").trim();\n\t\tif (detail) return { message: detail };\n\t}\n\treturn { message: message || \"Error interno\" };\n};\n//#endregion\nexport { handle, handleError, init };\n"],"names":[],"mappings":";;;;;;;;;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,WAAW,CAAC,IAAI,EAAE;AAC3B,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,KAAK;AACxB,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE;AAC7E,CAAC,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,KAAK,EAAE,OAAO,IAAI;AAChF,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;AACvE,CAAC,OAAO,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI,IAAI,IAAI,KAAK,UAAU;AACrG;AACA;AACG,IAAC,IAAI,GAAG,MAAM;AACjB,CAAC,oBAAoB,EAAE;AACvB;AACG,IAAC,MAAM,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK;AACrC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,IAAI,QAAQ,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC/G,CAAC,OAAO,OAAO,CAAC,KAAK,CAAC;AACtB;AACA;AACG,IAAC,WAAW,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK;AAC1C,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC;AACtC,CAAC,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE;AACtF,CAAC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,IAAI,KAAK,EAAE;AAC/D,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;AACnD,EAAE,IAAI,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE;AACxC,CAAC;AACD,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE;AAC/C;;"}
1
+ {"version":3,"file":"hooks.server-BEl7rVad.js","sources":["../../../.svelte-kit/output/server/entries/hooks.server.js"],"sourcesContent":["import { p as startPendingAgentRun } from \"../chunks/agent-sessions.js\";\n//#region src/hooks.server.ts\n/**\n* Hosts aceptados. La UI escucha en 127.0.0.1 y puede lanzar agentes: un Host ajeno (DNS rebinding: un dominio\n* que resuelve a 127.0.0.1) no debe llegar a la app. Los POST de otro origen ya los frena SvelteKit (CSRF).\n*/\nfunction allowedHost(host) {\n\tif (!host) return false;\n\tconst name = host.replace(/:\\d+$/, \"\").replace(/^\\[|\\]$/g, \"\").toLowerCase();\n\tif (name === \"127.0.0.1\" || name === \"localhost\" || name === \"::1\") return true;\n\tconst configured = String(process.env.HOST || \"\").trim().toLowerCase();\n\treturn Boolean(configured) && configured !== \"0.0.0.0\" && configured !== \"::\" && name === configured;\n}\n/** Si la CLI eligió un agente, la review arranca con el server (el navegador la sigue por `?agent=<id>`). */\nvar init = () => {\n\tstartPendingAgentRun();\n};\nvar handle = ({ event, resolve }) => {\n\tif (!allowedHost(event.request.headers.get(\"host\"))) return new Response(\"Host no permitido\", { status: 403 });\n\treturn resolve(event);\n};\n/** Herramienta local: conviene ver el error real (git, devalue, etc.) y no el 500 genérico. */\nvar handleError = ({ error, message }) => {\n\tconsole.error(\"[diff-review]\", error);\n\tif (error instanceof Error && error.message.trim()) return { message: error.message };\n\tif (error && typeof error === \"object\" && \"message\" in error) {\n\t\tconst detail = String(error.message || \"\").trim();\n\t\tif (detail) return { message: detail };\n\t}\n\treturn { message: message || \"Error interno\" };\n};\n//#endregion\nexport { handle, handleError, init };\n"],"names":[],"mappings":";;;;;;;;;;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,WAAW,CAAC,IAAI,EAAE;AAC3B,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,KAAK;AACxB,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE;AAC7E,CAAC,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,KAAK,EAAE,OAAO,IAAI;AAChF,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;AACvE,CAAC,OAAO,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI,IAAI,IAAI,KAAK,UAAU;AACrG;AACA;AACG,IAAC,IAAI,GAAG,MAAM;AACjB,CAAC,oBAAoB,EAAE;AACvB;AACG,IAAC,MAAM,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK;AACrC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,IAAI,QAAQ,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC/G,CAAC,OAAO,OAAO,CAAC,KAAK,CAAC;AACtB;AACA;AACG,IAAC,WAAW,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK;AAC1C,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC;AACtC,CAAC,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE;AACtF,CAAC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,IAAI,KAAK,EAAE;AAC/D,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;AACnD,EAAE,IAAI,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE;AACxC,CAAC;AACD,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE;AAC/C;;"}