agent-relay 3.1.0 → 3.1.2

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 (159) hide show
  1. package/bin/agent-relay-broker-linux-x64 +0 -0
  2. package/package.json +9 -9
  3. package/packages/acp-bridge/package.json +2 -2
  4. package/packages/config/package.json +1 -1
  5. package/packages/hooks/package.json +4 -4
  6. package/packages/memory/package.json +2 -2
  7. package/packages/openclaw/README.md +78 -0
  8. package/packages/openclaw/bin/relay-openclaw.mjs +2 -0
  9. package/packages/openclaw/bridge/bridge.mjs +305 -0
  10. package/packages/openclaw/dist/__tests__/gateway-control.test.d.ts +2 -0
  11. package/packages/openclaw/dist/__tests__/gateway-control.test.d.ts.map +1 -0
  12. package/packages/openclaw/dist/__tests__/gateway-control.test.js +250 -0
  13. package/packages/openclaw/dist/__tests__/gateway-control.test.js.map +1 -0
  14. package/packages/openclaw/dist/__tests__/gateway-threads.test.d.ts +2 -0
  15. package/packages/openclaw/dist/__tests__/gateway-threads.test.d.ts.map +1 -0
  16. package/packages/openclaw/dist/__tests__/gateway-threads.test.js +937 -0
  17. package/packages/openclaw/dist/__tests__/gateway-threads.test.js.map +1 -0
  18. package/packages/openclaw/dist/__tests__/naming.test.d.ts +2 -0
  19. package/packages/openclaw/dist/__tests__/naming.test.d.ts.map +1 -0
  20. package/packages/openclaw/dist/__tests__/naming.test.js +21 -0
  21. package/packages/openclaw/dist/__tests__/naming.test.js.map +1 -0
  22. package/packages/openclaw/dist/__tests__/spawn-manager.test.d.ts +2 -0
  23. package/packages/openclaw/dist/__tests__/spawn-manager.test.d.ts.map +1 -0
  24. package/packages/openclaw/dist/__tests__/spawn-manager.test.js +155 -0
  25. package/packages/openclaw/dist/__tests__/spawn-manager.test.js.map +1 -0
  26. package/packages/openclaw/dist/__tests__/ws-client.test.d.ts +2 -0
  27. package/packages/openclaw/dist/__tests__/ws-client.test.d.ts.map +1 -0
  28. package/packages/openclaw/dist/__tests__/ws-client.test.js +324 -0
  29. package/packages/openclaw/dist/__tests__/ws-client.test.js.map +1 -0
  30. package/packages/openclaw/dist/auth/converter.d.ts +28 -0
  31. package/packages/openclaw/dist/auth/converter.d.ts.map +1 -0
  32. package/packages/openclaw/dist/auth/converter.js +64 -0
  33. package/packages/openclaw/dist/auth/converter.js.map +1 -0
  34. package/packages/openclaw/dist/cli.d.ts +2 -0
  35. package/packages/openclaw/dist/cli.d.ts.map +1 -0
  36. package/packages/openclaw/dist/cli.js +230 -0
  37. package/packages/openclaw/dist/cli.js.map +1 -0
  38. package/packages/openclaw/dist/config.d.ts +27 -0
  39. package/packages/openclaw/dist/config.d.ts.map +1 -0
  40. package/packages/openclaw/dist/config.js +97 -0
  41. package/packages/openclaw/dist/config.js.map +1 -0
  42. package/packages/openclaw/dist/control.d.ts +22 -0
  43. package/packages/openclaw/dist/control.d.ts.map +1 -0
  44. package/packages/openclaw/dist/control.js +58 -0
  45. package/packages/openclaw/dist/control.js.map +1 -0
  46. package/packages/openclaw/dist/gateway.d.ts +97 -0
  47. package/packages/openclaw/dist/gateway.d.ts.map +1 -0
  48. package/packages/openclaw/dist/gateway.js +836 -0
  49. package/packages/openclaw/dist/gateway.js.map +1 -0
  50. package/packages/openclaw/dist/identity/contract.d.ts +11 -0
  51. package/packages/openclaw/dist/identity/contract.d.ts.map +1 -0
  52. package/packages/openclaw/dist/identity/contract.js +40 -0
  53. package/packages/openclaw/dist/identity/contract.js.map +1 -0
  54. package/packages/openclaw/dist/identity/files.d.ts +33 -0
  55. package/packages/openclaw/dist/identity/files.d.ts.map +1 -0
  56. package/packages/openclaw/dist/identity/files.js +145 -0
  57. package/packages/openclaw/dist/identity/files.js.map +1 -0
  58. package/packages/openclaw/dist/identity/model.d.ts +11 -0
  59. package/packages/openclaw/dist/identity/model.d.ts.map +1 -0
  60. package/packages/openclaw/dist/identity/model.js +28 -0
  61. package/packages/openclaw/dist/identity/model.js.map +1 -0
  62. package/packages/openclaw/dist/identity/naming.d.ts +5 -0
  63. package/packages/openclaw/dist/identity/naming.d.ts.map +1 -0
  64. package/packages/openclaw/dist/identity/naming.js +7 -0
  65. package/packages/openclaw/dist/identity/naming.js.map +1 -0
  66. package/packages/openclaw/dist/index.d.ts +20 -0
  67. package/packages/openclaw/dist/index.d.ts.map +1 -0
  68. package/packages/openclaw/dist/index.js +27 -0
  69. package/packages/openclaw/dist/index.js.map +1 -0
  70. package/packages/openclaw/dist/inject.d.ts +14 -0
  71. package/packages/openclaw/dist/inject.d.ts.map +1 -0
  72. package/packages/openclaw/dist/inject.js +66 -0
  73. package/packages/openclaw/dist/inject.js.map +1 -0
  74. package/packages/openclaw/dist/mcp/server.d.ts +8 -0
  75. package/packages/openclaw/dist/mcp/server.d.ts.map +1 -0
  76. package/packages/openclaw/dist/mcp/server.js +105 -0
  77. package/packages/openclaw/dist/mcp/server.js.map +1 -0
  78. package/packages/openclaw/dist/mcp/tools.d.ts +17 -0
  79. package/packages/openclaw/dist/mcp/tools.d.ts.map +1 -0
  80. package/packages/openclaw/dist/mcp/tools.js +145 -0
  81. package/packages/openclaw/dist/mcp/tools.js.map +1 -0
  82. package/packages/openclaw/dist/runtime/openclaw-config.d.ts +20 -0
  83. package/packages/openclaw/dist/runtime/openclaw-config.d.ts.map +1 -0
  84. package/packages/openclaw/dist/runtime/openclaw-config.js +50 -0
  85. package/packages/openclaw/dist/runtime/openclaw-config.js.map +1 -0
  86. package/packages/openclaw/dist/runtime/patch.d.ts +24 -0
  87. package/packages/openclaw/dist/runtime/patch.d.ts.map +1 -0
  88. package/packages/openclaw/dist/runtime/patch.js +92 -0
  89. package/packages/openclaw/dist/runtime/patch.js.map +1 -0
  90. package/packages/openclaw/dist/runtime/setup.d.ts +26 -0
  91. package/packages/openclaw/dist/runtime/setup.d.ts.map +1 -0
  92. package/packages/openclaw/dist/runtime/setup.js +58 -0
  93. package/packages/openclaw/dist/runtime/setup.js.map +1 -0
  94. package/packages/openclaw/dist/setup.d.ts +29 -0
  95. package/packages/openclaw/dist/setup.d.ts.map +1 -0
  96. package/packages/openclaw/dist/setup.js +300 -0
  97. package/packages/openclaw/dist/setup.js.map +1 -0
  98. package/packages/openclaw/dist/spawn/docker.d.ts +58 -0
  99. package/packages/openclaw/dist/spawn/docker.d.ts.map +1 -0
  100. package/packages/openclaw/dist/spawn/docker.js +222 -0
  101. package/packages/openclaw/dist/spawn/docker.js.map +1 -0
  102. package/packages/openclaw/dist/spawn/manager.d.ts +45 -0
  103. package/packages/openclaw/dist/spawn/manager.d.ts.map +1 -0
  104. package/packages/openclaw/dist/spawn/manager.js +140 -0
  105. package/packages/openclaw/dist/spawn/manager.js.map +1 -0
  106. package/packages/openclaw/dist/spawn/process.d.ts +16 -0
  107. package/packages/openclaw/dist/spawn/process.d.ts.map +1 -0
  108. package/packages/openclaw/dist/spawn/process.js +241 -0
  109. package/packages/openclaw/dist/spawn/process.js.map +1 -0
  110. package/packages/openclaw/dist/spawn/types.d.ts +42 -0
  111. package/packages/openclaw/dist/spawn/types.d.ts.map +1 -0
  112. package/packages/openclaw/dist/spawn/types.js +2 -0
  113. package/packages/openclaw/dist/spawn/types.js.map +1 -0
  114. package/packages/openclaw/dist/types.d.ts +41 -0
  115. package/packages/openclaw/dist/types.d.ts.map +1 -0
  116. package/packages/openclaw/dist/types.js +2 -0
  117. package/packages/openclaw/dist/types.js.map +1 -0
  118. package/packages/openclaw/package.json +63 -0
  119. package/packages/openclaw/skill/SKILL.md +216 -0
  120. package/packages/openclaw/src/__tests__/SPEC-ws-client-testing.md +192 -0
  121. package/packages/openclaw/src/__tests__/gateway-control.test.ts +288 -0
  122. package/packages/openclaw/src/__tests__/gateway-threads.test.ts +1130 -0
  123. package/packages/openclaw/src/__tests__/naming.test.ts +24 -0
  124. package/packages/openclaw/src/__tests__/spawn-manager.test.ts +189 -0
  125. package/packages/openclaw/src/__tests__/ws-client.test.ts +395 -0
  126. package/packages/openclaw/src/auth/converter.ts +90 -0
  127. package/packages/openclaw/src/cli.ts +269 -0
  128. package/packages/openclaw/src/config.ts +124 -0
  129. package/packages/openclaw/src/control.ts +100 -0
  130. package/packages/openclaw/src/gateway.ts +1014 -0
  131. package/packages/openclaw/src/identity/contract.ts +44 -0
  132. package/packages/openclaw/src/identity/files.ts +198 -0
  133. package/packages/openclaw/src/identity/model.ts +27 -0
  134. package/packages/openclaw/src/identity/naming.ts +6 -0
  135. package/packages/openclaw/src/index.ts +59 -0
  136. package/packages/openclaw/src/inject.ts +77 -0
  137. package/packages/openclaw/src/mcp/server.ts +121 -0
  138. package/packages/openclaw/src/mcp/tools.ts +174 -0
  139. package/packages/openclaw/src/runtime/openclaw-config.ts +64 -0
  140. package/packages/openclaw/src/runtime/patch.ts +103 -0
  141. package/packages/openclaw/src/runtime/setup.ts +89 -0
  142. package/packages/openclaw/src/setup.ts +336 -0
  143. package/packages/openclaw/src/spawn/docker.ts +261 -0
  144. package/packages/openclaw/src/spawn/manager.ts +181 -0
  145. package/packages/openclaw/src/spawn/process.ts +272 -0
  146. package/packages/openclaw/src/spawn/types.ts +43 -0
  147. package/packages/openclaw/src/types.ts +42 -0
  148. package/packages/openclaw/templates/SOUL.md.template +34 -0
  149. package/packages/openclaw/tsconfig.json +12 -0
  150. package/packages/policy/package.json +2 -2
  151. package/packages/sdk/package.json +2 -2
  152. package/packages/sdk-py/pyproject.toml +1 -1
  153. package/packages/telemetry/package.json +1 -1
  154. package/packages/trajectory/package.json +2 -2
  155. package/packages/user-directory/package.json +2 -2
  156. package/packages/utils/package.json +2 -2
  157. package/bin/agent-relay-broker-darwin-arm64 +0 -0
  158. package/bin/agent-relay-broker-darwin-x64 +0 -0
  159. package/bin/agent-relay-broker-linux-arm64 +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway-threads.test.js","sourceRoot":"","sources":["../../src/__tests__/gateway-threads.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEzE,8EAA8E;AAC9E,0DAA0D;AAC1D,8EAA8E;AAE9E,yDAAyD;AACzD,MAAM,aAAa,GAAwD,EAAE,CAAC;AAE9E,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,CAAC,OAAqC,EAAE,EAAE;QAC/C,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;YAAE,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QACrD,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnC,OAAO,GAAG,EAAE;YACV,aAAa,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC;QAC3E,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,KAAa,EAAE,GAAG,IAAe;IAClD,KAAK,MAAM,OAAO,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QACjD,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,eAAe,GAAG;IACtB,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;IAChB,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;IAChD,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE;IAClB,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE;IACpB,QAAQ,EAAE;QACR,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;QAChD,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;QAC/C,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;KAClD;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QAC7C,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;KACvD;IACD,EAAE,EAAE;QACF,SAAS,EAAE,eAAe,CAAC,WAAW,CAAC;QACvC,cAAc,EAAE,eAAe,CAAC,gBAAgB,CAAC;QACjD,WAAW,EAAE,eAAe,CAAC,aAAa,CAAC;QAC3C,UAAU,EAAE,eAAe,CAAC,YAAY,CAAC;QACzC,eAAe,EAAE,eAAe,CAAC,iBAAiB,CAAC;QACnD,cAAc,EAAE,eAAe,CAAC,gBAAgB,CAAC;QACjD,aAAa,EAAE,eAAe,CAAC,eAAe,CAAC;QAC/C,eAAe,EAAE,eAAe,CAAC,iBAAiB,CAAC;QACnD,YAAY,EAAE,eAAe,CAAC,cAAc,CAAC;QAC7C,YAAY,EAAE,eAAe,CAAC,cAAc,CAAC;QAC7C,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC;QAC/B,GAAG,EAAE,eAAe,CAAC,KAAK,CAAC;KAC5B;CACF,CAAC;AAEF,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAC;IAC/B,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3C,MAAM,EAAE;YACN,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;SAC1F;QACD,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;QAC3D,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE;QACjD,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,eAAe,CAAC;KAC7C,CAAC,CAAC;CACJ,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE,GAAG,EAAE,CAAC,CAAC;IACpC,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC;QAC9C,IAAI,EAAE,CAAC;QACP,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;QACd,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;QAChB,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE;QACtB,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;QAChD,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC;QACjC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;KACb,CAAC,CAAC;CACJ,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,CAAC;IACjC,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,eAAe,CAAC;IACpD,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;IAC/C,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;CAC5C,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;IACxB,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC;CAC3C,CAAC,CAAC,CAAC;AAEJ,gDAAgD;AAChD,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE;IAC5C,MAAM,MAAM,GAAG,MAAM,cAAc,EAA8B,CAAC;IAClE,OAAO;QACL,GAAG,MAAM;QACT,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC;YACpC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,KAAa,EAAE,KAAa,EAAE,EAAc,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YACrE,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAe,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;YACzC,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;SAClD,CAAC;KACH,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,SAAS,aAAa,CAAC,SAGtB;IACC,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IACrE,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC;QACjC,MAAM,EAAE;YACN,MAAM,EAAE,cAAc;YACtB,QAAQ,EAAE,SAAS,EAAE,QAAQ,IAAI,WAAW;YAC5C,OAAO,EAAE,2BAA2B;YACpC,QAAQ,EAAE,SAAS,EAAE,QAAQ,IAAI,CAAC,SAAS,CAAC;SAC7C;QACD,WAAW,EAAE,EAAE,WAAW,EAAE;KAC7B,CAAC,CAAC;IACH,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;AAClC,CAAC;AAED,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E,QAAQ,CAAC,yCAAyC,EAAE,GAAG,EAAE;IACvD,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YAC7C,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,EAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;YAC5E,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,aAAa,EAAE,CAAC;YACjD,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAEtB,SAAS,CAAC,gBAAgB,EAAE;gBAC1B,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,SAAS;gBAClB,OAAO,EAAE;oBACP,EAAE,EAAE,OAAO;oBACX,SAAS,EAAE,OAAO;oBAClB,IAAI,EAAE,aAAa;oBACnB,WAAW,EAAE,EAAE;iBAChB;aACF,CAAC,CAAC;YAEH,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;gBACpB,MAAM,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;YAClE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAE5C,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;YACjE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,aAAa,EAAE,CAAC;YACjD,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAEtB,SAAS,CAAC,aAAa,EAAE;gBACvB,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,SAAS;gBAClB,QAAQ,EAAE,cAAc;gBACxB,OAAO,EAAE;oBACP,EAAE,EAAE,aAAa;oBACjB,SAAS,EAAE,KAAK;oBAChB,IAAI,EAAE,oBAAoB;iBAC3B;aACF,CAAC,CAAC;YAEH,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;gBACpB,MAAM,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;YAEhF,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;QAC3C,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;YACtE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;YACjF,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAEtB,SAAS,CAAC,aAAa,EAAE;gBACvB,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,SAAS;gBACnB,OAAO,EAAE;oBACP,EAAE,EAAE,SAAS;oBACb,SAAS,EAAE,OAAO;oBAClB,IAAI,EAAE,uBAAuB;iBAC9B;aACF,CAAC,CAAC;YAEH,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;gBACpB,MAAM,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;YAC/C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAEtC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;YACvE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAC1E,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAEtB,SAAS,CAAC,aAAa,EAAE;gBACvB,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,QAAQ;gBACjB,QAAQ,EAAE,SAAS;gBACnB,OAAO,EAAE;oBACP,EAAE,EAAE,SAAS;oBACb,SAAS,EAAE,MAAM;oBACjB,IAAI,EAAE,kBAAkB;iBACzB;aACF,CAAC,CAAC;YAEH,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAC5C,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YAE3C,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;YACjF,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,aAAa,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;YACxE,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAEtB,SAAS,CAAC,aAAa,EAAE;gBACvB,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,SAAS;gBAClB,QAAQ,EAAE,SAAS;gBACnB,OAAO,EAAE;oBACP,EAAE,EAAE,SAAS;oBACb,SAAS,EAAE,SAAS;oBACpB,IAAI,EAAE,cAAc;iBACrB;aACF,CAAC,CAAC;YAEH,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAC5C,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YAE3C,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;YACnE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,aAAa,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;YACxE,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAEtB,SAAS,CAAC,aAAa,EAAE;gBACvB,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,SAAS;gBAClB,QAAQ,EAAE,SAAS;gBACnB,OAAO,EAAE;oBACP,EAAE,EAAE,SAAS;oBACb,SAAS,EAAE,gBAAgB;oBAC3B,IAAI,EAAE,aAAa;iBACpB;aACF,CAAC,CAAC;YAEH,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAC5C,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YAE3C,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;YAC1E,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,aAAa,EAAE,CAAC;YACjD,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAEtB,MAAM,KAAK,GAAG;gBACZ,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,SAAS;gBAClB,QAAQ,EAAE,SAAS;gBACnB,OAAO,EAAE;oBACP,EAAE,EAAE,SAAS;oBACb,SAAS,EAAE,KAAK;oBAChB,IAAI,EAAE,gBAAgB;iBACvB;aACF,CAAC;YAEF,SAAS,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;YAChC,SAAS,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;YAEhC,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;gBACpB,MAAM,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAC5C,MAAM,CAAC,WAAW,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAE7C,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;QACjD,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;YACvE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,aAAa,EAAE,CAAC;YACjD,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAEtB,SAAS,CAAC,gBAAgB,EAAE;gBAC1B,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,SAAS;gBAClB,OAAO,EAAE;oBACP,EAAE,EAAE,SAAS;oBACb,SAAS,EAAE,OAAO;oBAClB,IAAI,EAAE,kBAAkB;oBACxB,WAAW,EAAE,EAAE;iBAChB;aACF,CAAC,CAAC;YAEH,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;gBACpB,MAAM,CAAC,WAAW,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;YAEH,SAAS,CAAC,aAAa,EAAE;gBACvB,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,SAAS;gBAClB,QAAQ,EAAE,SAAS;gBACnB,OAAO,EAAE;oBACP,EAAE,EAAE,SAAS;oBACb,SAAS,EAAE,OAAO;oBAClB,IAAI,EAAE,gBAAgB;iBACvB;aACF,CAAC,CAAC;YAEH,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;gBACpB,MAAM,CAAC,WAAW,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;YAEH,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/C,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;YAE5E,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAChD,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;YAEpF,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;YACnE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,aAAa,EAAE,CAAC;YACjD,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAEtB,SAAS,CAAC,aAAa,EAAE;gBACvB,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,SAAS;gBAClB,QAAQ,EAAE,gBAAgB;gBAC1B,OAAO,EAAE;oBACP,EAAE,EAAE,SAAS;oBACb,SAAS,EAAE,OAAO;oBAClB,IAAI,EAAE,gBAAgB;iBACvB;aACF,CAAC,CAAC;YAEH,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;gBACpB,MAAM,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAE5C,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,aAAa,EAAE,CAAC;YACjD,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAEtB,SAAS,CAAC,YAAY,EAAE;gBACtB,IAAI,EAAE,aAAa;gBACnB,cAAc,EAAE,QAAQ;gBACxB,OAAO,EAAE;oBACP,EAAE,EAAE,MAAM;oBACV,SAAS,EAAE,OAAO;oBAClB,IAAI,EAAE,WAAW;iBAClB;aACF,CAAC,CAAC;YAEH,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;gBACpB,MAAM,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;YAE3D,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;YACtE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,aAAa,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;YACxE,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAEtB,SAAS,CAAC,YAAY,EAAE;gBACtB,IAAI,EAAE,aAAa;gBACnB,cAAc,EAAE,QAAQ;gBACxB,OAAO,EAAE;oBACP,EAAE,EAAE,MAAM;oBACV,SAAS,EAAE,SAAS;oBACpB,IAAI,EAAE,MAAM;iBACb;aACF,CAAC,CAAC;YAEH,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAC5C,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YAE3C,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,aAAa,EAAE,CAAC;YACjD,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAEtB,MAAM,KAAK,GAAG;gBACZ,IAAI,EAAE,aAAa;gBACnB,cAAc,EAAE,QAAQ;gBACxB,OAAO,EAAE;oBACP,EAAE,EAAE,MAAM;oBACV,SAAS,EAAE,KAAK;oBAChB,IAAI,EAAE,cAAc;iBACrB;aACF,CAAC;YAEF,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YAC/B,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YAE/B,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;gBACpB,MAAM,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAC5C,MAAM,CAAC,WAAW,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAE7C,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACvC,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACxE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,aAAa,EAAE,CAAC;YACjD,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAEtB,SAAS,CAAC,iBAAiB,EAAE;gBAC3B,IAAI,EAAE,mBAAmB;gBACzB,cAAc,EAAE,SAAS;gBACzB,OAAO,EAAE;oBACP,EAAE,EAAE,OAAO;oBACX,SAAS,EAAE,OAAO;oBAClB,IAAI,EAAE,eAAe;iBACtB;aACF,CAAC,CAAC;YAEH,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;gBACpB,MAAM,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;YAEpE,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;QAC3C,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;YACtE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,aAAa,EAAE,CAAC;YACjD,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAEtB,SAAS,CAAC,gBAAgB,EAAE;gBAC1B,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,QAAQ;gBACjB,OAAO,EAAE,SAAS;gBAClB,SAAS,EAAE,MAAM;gBACjB,cAAc,EAAE,SAAS;gBACzB,IAAI,EAAE,oBAAoB;gBAC1B,UAAU,EAAE,IAAI;aACjB,CAAC,CAAC;YAEH,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;gBACpB,MAAM,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;YAEvF,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,aAAa,EAAE,CAAC;YACjD,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAEtB,SAAS,CAAC,gBAAgB,EAAE;gBAC1B,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,QAAQ;gBACjB,OAAO,EAAE,SAAS;gBAClB,SAAS,EAAE,KAAK;gBAChB,cAAc,EAAE,SAAS;gBACzB,IAAI,EAAE,IAAI;gBACV,UAAU,EAAE,IAAI;aACjB,CAAC,CAAC;YAEH,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;gBACpB,MAAM,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;YAEnE,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;YACjE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAC1E,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAEtB,SAAS,CAAC,gBAAgB,EAAE;gBAC1B,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,QAAQ;gBACjB,OAAO,EAAE,QAAQ;gBACjB,SAAS,EAAE,MAAM;gBACjB,cAAc,EAAE,SAAS;gBACzB,IAAI,EAAE,IAAI;gBACV,UAAU,EAAE,IAAI;aACjB,CAAC,CAAC;YAEH,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAC5C,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YAE3C,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACvC,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,aAAa,EAAE,CAAC;YACjD,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAEtB,SAAS,CAAC,eAAe,EAAE;gBACzB,IAAI,EAAE,gBAAgB;gBACtB,SAAS,EAAE,SAAS;gBACpB,KAAK,EAAE,UAAU;gBACjB,SAAS,EAAE,KAAK;aACjB,CAAC,CAAC;YAEH,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;gBACpB,MAAM,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,uGAAuG,CAAC,CAAC;YAEhI,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;YACpE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,aAAa,EAAE,CAAC;YACjD,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAEtB,SAAS,CAAC,iBAAiB,EAAE;gBAC3B,IAAI,EAAE,kBAAkB;gBACxB,SAAS,EAAE,SAAS;gBACpB,KAAK,EAAE,QAAQ;gBACf,SAAS,EAAE,OAAO;aACnB,CAAC,CAAC;YAEH,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;gBACpB,MAAM,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,yGAAyG,CAAC,CAAC;YAElI,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;YAC1D,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,aAAa,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;YACxE,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAEtB,SAAS,CAAC,eAAe,EAAE;gBACzB,IAAI,EAAE,gBAAgB;gBACtB,SAAS,EAAE,UAAU;gBACrB,KAAK,EAAE,OAAO;gBACd,SAAS,EAAE,SAAS;aACrB,CAAC,CAAC;YAEH,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAC5C,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YAE3C,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;YACzE,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;YACvE,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC;gBACjC,MAAM,EAAE;oBACN,MAAM,EAAE,cAAc;oBACtB,QAAQ,EAAE,WAAW;oBACrB,OAAO,EAAE,2BAA2B;oBACpC,QAAQ,EAAE,CAAC,SAAS,CAAC;oBACrB,oBAAoB,EAAE,aAAa;oBACnC,mBAAmB,EAAE,KAAK;iBAC3B;gBACD,WAAW,EAAE,EAAE,WAAW,EAAE;aAC7B,CAAC,CAAC;YACH,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAEtB,SAAS,CAAC,gBAAgB,EAAE;gBAC1B,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,SAAS;gBAClB,OAAO,EAAE;oBACP,EAAE,EAAE,UAAU;oBACd,SAAS,EAAE,OAAO;oBAClB,IAAI,EAAE,eAAe;oBACrB,WAAW,EAAE,EAAE;iBAChB;aACF,CAAC,CAAC;YAEH,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;gBACpB,MAAM,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,qEAAqE;YACrE,wEAAwE;YACxE,oEAAoE;YACpE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAE5C,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2EAA2E,EAAE,KAAK,IAAI,EAAE;YACzF,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;YACvE,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC;gBACjC,MAAM,EAAE;oBACN,MAAM,EAAE,cAAc;oBACtB,QAAQ,EAAE,WAAW;oBACrB,OAAO,EAAE,2BAA2B;oBACpC,QAAQ,EAAE,CAAC,SAAS,CAAC;iBACtB;gBACD,WAAW,EAAE,EAAE,WAAW,EAAE;aAC7B,CAAC,CAAC;YACH,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAEtB,uDAAuD;YACvD,SAAS,CAAC,gBAAgB,EAAE;gBAC1B,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,SAAS;gBAClB,OAAO,EAAE;oBACP,EAAE,EAAE,UAAU;oBACd,SAAS,EAAE,OAAO;oBAClB,IAAI,EAAE,WAAW;oBACjB,WAAW,EAAE,EAAE;iBAChB;aACF,CAAC,CAAC;YAEH,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;gBACpB,MAAM,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAC5C,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;YACtE,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,uBAAuB,EAAE,CAAC,CAAC;YACrF,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC;gBACjC,MAAM,EAAE;oBACN,MAAM,EAAE,cAAc;oBACtB,QAAQ,EAAE,WAAW;oBACrB,OAAO,EAAE,2BAA2B;oBACpC,QAAQ,EAAE,CAAC,SAAS,CAAC;iBACtB;gBACD,WAAW,EAAE,EAAE,WAAW,EAAE;aAC7B,CAAC,CAAC;YACH,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAEtB,SAAS,CAAC,gBAAgB,EAAE;gBAC1B,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,SAAS;gBAClB,OAAO,EAAE;oBACP,EAAE,EAAE,aAAa;oBACjB,SAAS,EAAE,KAAK;oBAChB,IAAI,EAAE,kBAAkB;oBACxB,WAAW,EAAE,EAAE;iBAChB;aACF,CAAC,CAAC;YAEH,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;gBACpB,MAAM,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,yEAAyE;YACzE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAC5C,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;YAC7E,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;YAC1E,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC;gBACjC,MAAM,EAAE;oBACN,MAAM,EAAE,cAAc;oBACtB,QAAQ,EAAE,WAAW;oBACrB,OAAO,EAAE,2BAA2B;oBACpC,QAAQ,EAAE,CAAC,SAAS,CAAC;iBACtB;gBACD,WAAW,EAAE,EAAE,WAAW,EAAE;aAC7B,CAAC,CAAC;YACH,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAEtB,SAAS,CAAC,gBAAgB,EAAE;gBAC1B,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,SAAS;gBAClB,OAAO,EAAE;oBACP,EAAE,EAAE,aAAa;oBACjB,SAAS,EAAE,OAAO;oBAClB,IAAI,EAAE,YAAY;oBAClB,WAAW,EAAE,EAAE;iBAChB;aACF,CAAC,CAAC;YAEH,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;gBACpB,MAAM,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAC5C,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;QAC5C,EAAE,CAAC,wEAAwE,EAAE,KAAK,IAAI,EAAE;YACtF,wEAAwE;YACxE,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC;gBACjC,MAAM,EAAE;oBACN,MAAM,EAAE,cAAc;oBACtB,QAAQ,EAAE,WAAW;oBACrB,OAAO,EAAE,2BAA2B;oBACpC,QAAQ,EAAE,CAAC,SAAS,CAAC;iBACtB;gBACD,0BAA0B;aAC3B,CAAC,CAAC;YACH,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAEtB,SAAS,CAAC,gBAAgB,EAAE;gBAC1B,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,SAAS;gBAClB,OAAO,EAAE;oBACP,EAAE,EAAE,gBAAgB;oBACpB,SAAS,EAAE,MAAM;oBACjB,IAAI,EAAE,iBAAiB;oBACvB,WAAW,EAAE,EAAE;iBAChB;aACF,CAAC,CAAC;YAEH,0DAA0D;YAC1D,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAC7C,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;QAC3C,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,aAAa,EAAE,CAAC;YACjD,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAEtB,SAAS,CAAC,YAAY,EAAE;gBACtB,IAAI,EAAE,aAAa;gBACnB,cAAc,EAAE,YAAY;gBAC5B,OAAO,EAAE;oBACP,EAAE,EAAE,UAAU;oBACd,SAAS,EAAE,OAAO;oBAClB,IAAI,EAAE,gBAAgB;iBACvB;aACF,CAAC,CAAC;YAEH,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;gBACpB,MAAM,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;YAEhE,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;YACrE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,aAAa,EAAE,CAAC;YACjD,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAEtB,SAAS,CAAC,iBAAiB,EAAE;gBAC3B,IAAI,EAAE,mBAAmB;gBACzB,cAAc,EAAE,aAAa;gBAC7B,OAAO,EAAE;oBACP,EAAE,EAAE,WAAW;oBACf,SAAS,EAAE,KAAK;oBAChB,IAAI,EAAE,sBAAsB;iBAC7B;aACF,CAAC,CAAC;YAEH,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;gBACpB,MAAM,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;YAEzE,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;YACtE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,aAAa,EAAE,CAAC;YACjD,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAEtB,SAAS,CAAC,gBAAgB,EAAE;gBAC1B,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,OAAO;gBAChB,OAAO,EAAE,SAAS;gBAClB,SAAS,EAAE,OAAO;gBAClB,cAAc,EAAE,aAAa;gBAC7B,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,IAAI;aACjB,CAAC,CAAC;YAEH,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;gBACpB,MAAM,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;YAE3E,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;YACvE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,aAAa,EAAE,CAAC;YACjD,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAEtB,SAAS,CAAC,eAAe,EAAE;gBACzB,IAAI,EAAE,gBAAgB;gBACtB,SAAS,EAAE,eAAe;gBAC1B,KAAK,EAAE,MAAM;gBACb,SAAS,EAAE,MAAM;aAClB,CAAC,CAAC;YAEH,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;gBACpB,MAAM,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,0GAA0G,CAAC,CAAC;YAEnI,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,aAAa,EAAE,CAAC;YACjD,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAEtB,SAAS,CAAC,aAAa,EAAE;gBACvB,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,SAAS;gBAClB,QAAQ,EAAE,gBAAgB;gBAC1B,OAAO,EAAE;oBACP,EAAE,EAAE,gBAAgB;oBACpB,SAAS,EAAE,KAAK;oBAChB,IAAI,EAAE,oBAAoB;iBAC3B;aACF,CAAC,CAAC;YAEH,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;gBACpB,MAAM,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;YAEhF,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;YACrE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,aAAa,EAAE,CAAC;YACjD,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAEtB,SAAS,CAAC,gBAAgB,EAAE;gBAC1B,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,SAAS;gBAClB,OAAO,EAAE;oBACP,EAAE,EAAE,cAAc;oBAClB,SAAS,EAAE,OAAO;oBAClB,IAAI,EAAE,qBAAqB;oBAC3B,WAAW,EAAE,EAAE;iBAChB;aACF,CAAC,CAAC;YAEH,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;gBACpB,MAAM,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;YAE1E,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,8CAA8C,EAAE,GAAG,EAAE;QAC5D,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC5D,qEAAqE;YACrE,IAAI,YAAY,GAAwB,IAAI,CAAC;YAC7C,MAAM,gBAAgB,GAAG,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,EAAE,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzE,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,EAAE;iBACxB,sBAAsB,CAAC,KAAK,IAAI,EAAE;gBACjC,kCAAkC;gBAClC,MAAM,gBAAgB,CAAC;gBACvB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;YAC/B,CAAC,CAAC;iBACD,iBAAiB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;YAE5C,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC;gBACjC,MAAM,EAAE;oBACN,MAAM,EAAE,cAAc;oBACtB,QAAQ,EAAE,WAAW;oBACrB,OAAO,EAAE,2BAA2B;oBACpC,QAAQ,EAAE,CAAC,SAAS,CAAC;iBACtB;gBACD,WAAW,EAAE,EAAE,WAAW,EAAE;aAC7B,CAAC,CAAC;YACH,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAEtB,sCAAsC;YACtC,SAAS,CAAC,gBAAgB,EAAE;gBAC1B,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,SAAS;gBAClB,OAAO,EAAE;oBACP,EAAE,EAAE,gBAAgB;oBACpB,SAAS,EAAE,OAAO;oBAClB,IAAI,EAAE,uBAAuB;oBAC7B,WAAW,EAAE,EAAE;iBAChB;aACF,CAAC,CAAC;YAEH,6EAA6E;YAC7E,SAAS,CAAC,gBAAgB,EAAE;gBAC1B,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,SAAS;gBAClB,OAAO,EAAE;oBACP,EAAE,EAAE,gBAAgB;oBACpB,SAAS,EAAE,OAAO;oBAClB,IAAI,EAAE,uBAAuB;oBAC7B,WAAW,EAAE,EAAE;iBAChB;aACF,CAAC,CAAC;YAEH,yBAAyB;YACzB,YAAa,EAAE,CAAC;YAEhB,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;gBACpB,MAAM,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAC5C,iEAAiE;YACjE,MAAM,CAAC,WAAW,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAE7C,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;QAC9C,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YACzD,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,aAAa,EAAE,CAAC;YACjD,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YACtB,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YAErB,8CAA8C;YAC9C,SAAS,CAAC,gBAAgB,EAAE;gBAC1B,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,SAAS;gBAClB,OAAO,EAAE;oBACP,EAAE,EAAE,eAAe;oBACnB,SAAS,EAAE,OAAO;oBAClB,IAAI,EAAE,oBAAoB;oBAC1B,WAAW,EAAE,EAAE;iBAChB;aACF,CAAC,CAAC;YAEH,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAC5C,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;YAC9D,MAAM,EAAE,OAAO,EAAE,GAAG,aAAa,EAAE,CAAC;YACpC,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAEtB,gEAAgE;YAChE,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YAErB,iDAAiD;YACjD,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;YAC5E,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,aAAa,EAAE,CAAC;YACjD,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAEtB,oDAAoD;YACpD,SAAS,CAAC,gBAAgB,EAAE;gBAC1B,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,SAAS;gBAClB,OAAO,EAAE;oBACP,EAAE,EAAE,aAAa;oBACjB,SAAS,EAAE,OAAO;oBAClB,IAAI,EAAE,iBAAiB;oBACvB,WAAW,EAAE,EAAE;iBAChB;aACF,CAAC,CAAC;YAEH,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;gBACpB,MAAM,CAAC,WAAW,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;YAEH,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YAErB,0EAA0E;YAC1E,sCAAsC;YACtC,WAAW,CAAC,SAAS,EAAE,CAAC;YACxB,uDAAuD;YACvD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC7C,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YAC1B,CAAC;YACD,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAEtB,SAAS,CAAC,gBAAgB,EAAE;gBAC1B,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,SAAS;gBAClB,OAAO,EAAE;oBACP,EAAE,EAAE,aAAa;oBACjB,SAAS,EAAE,OAAO;oBAClB,IAAI,EAAE,iBAAiB;oBACvB,WAAW,EAAE,EAAE;iBAChB;aACF,CAAC,CAAC;YAEH,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;gBACpB,MAAM,CAAC,WAAW,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;YAEH,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,aAAa,EAAE,CAAC;YACjD,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAEtB,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YAErB,2DAA2D;YAC3D,SAAS,CAAC,gBAAgB,EAAE;gBAC1B,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,SAAS;gBAClB,OAAO,EAAE;oBACP,EAAE,EAAE,aAAa;oBACjB,SAAS,EAAE,OAAO;oBAClB,IAAI,EAAE,+BAA+B;oBACrC,WAAW,EAAE,EAAE;iBAChB;aACF,CAAC,CAAC;YAEH,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAC5C,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;QAC1C,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC5D,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAC3E,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAEtB,SAAS,CAAC,gBAAgB,EAAE;gBAC1B,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,SAAS;gBAClB,OAAO,EAAE;oBACP,EAAE,EAAE,YAAY;oBAChB,SAAS,EAAE,OAAO;oBAClB,IAAI,EAAE,oBAAoB;oBAC1B,WAAW,EAAE,EAAE;iBAChB;aACF,CAAC,CAAC;YAEH,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;gBACpB,MAAM,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;YAEzE,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=naming.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"naming.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/naming.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,21 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { buildAgentName } from '../identity/naming.js';
3
+ describe('buildAgentName', () => {
4
+ it('should build agent name from workspace and claw name', () => {
5
+ const result = buildAgentName('ws123', 'researcher');
6
+ expect(result).toBe('claw-ws123-researcher');
7
+ });
8
+ it('should handle hyphens in workspace id', () => {
9
+ const result = buildAgentName('ws-abc-123', 'coder');
10
+ expect(result).toBe('claw-ws-abc-123-coder');
11
+ });
12
+ it('should handle hyphens in claw name', () => {
13
+ const result = buildAgentName('workspace', 'code-reviewer');
14
+ expect(result).toBe('claw-workspace-code-reviewer');
15
+ });
16
+ it('should handle empty strings', () => {
17
+ const result = buildAgentName('', '');
18
+ expect(result).toBe('claw--');
19
+ });
20
+ });
21
+ //# sourceMappingURL=naming.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"naming.test.js","sourceRoot":"","sources":["../../src/__tests__/naming.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QACrD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,MAAM,GAAG,cAAc,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,MAAM,GAAG,cAAc,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QAC5D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=spawn-manager.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawn-manager.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/spawn-manager.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,155 @@
1
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
2
+ import { SpawnManager } from '../spawn/manager.js';
3
+ // Mock the spawn providers
4
+ vi.mock('../spawn/docker.js', () => ({
5
+ DockerSpawnProvider: vi.fn().mockImplementation(() => ({
6
+ spawn: vi.fn().mockResolvedValue({
7
+ id: 'test-id-1',
8
+ displayName: 'test-claw',
9
+ agentName: 'claw-ws123-test-claw',
10
+ gatewayPort: 18789,
11
+ destroy: vi.fn().mockResolvedValue(undefined),
12
+ }),
13
+ destroy: vi.fn().mockResolvedValue(undefined),
14
+ list: vi.fn().mockResolvedValue([]),
15
+ })),
16
+ }));
17
+ vi.mock('../spawn/process.js', () => ({
18
+ ProcessSpawnProvider: vi.fn().mockImplementation(() => {
19
+ let callCount = 0;
20
+ return {
21
+ spawn: vi.fn().mockImplementation((options) => {
22
+ callCount++;
23
+ return Promise.resolve({
24
+ id: `test-id-${callCount}`,
25
+ displayName: options.name,
26
+ agentName: `claw-ws123-${options.name}`,
27
+ gatewayPort: 18790,
28
+ destroy: vi.fn().mockResolvedValue(undefined),
29
+ });
30
+ }),
31
+ destroy: vi.fn().mockResolvedValue(undefined),
32
+ list: vi.fn().mockResolvedValue([]),
33
+ };
34
+ }),
35
+ }));
36
+ // Mock fs operations
37
+ vi.mock('node:fs/promises', () => ({
38
+ readFile: vi.fn().mockResolvedValue('{"spawns":[]}'),
39
+ writeFile: vi.fn().mockResolvedValue(undefined),
40
+ mkdir: vi.fn().mockResolvedValue(undefined),
41
+ }));
42
+ vi.mock('node:fs', () => ({
43
+ existsSync: vi.fn().mockReturnValue(false),
44
+ }));
45
+ describe('SpawnManager', () => {
46
+ beforeEach(() => {
47
+ vi.clearAllMocks();
48
+ });
49
+ it('should initialize with default values', () => {
50
+ const manager = new SpawnManager({ mode: 'process' });
51
+ expect(manager.size).toBe(0);
52
+ });
53
+ it('should enforce maxSpawns limit', async () => {
54
+ const manager = new SpawnManager({ mode: 'process', maxSpawns: 1 });
55
+ // First spawn should succeed
56
+ await manager.spawn({
57
+ name: 'claw-1',
58
+ relayApiKey: 'rk_live_test',
59
+ });
60
+ expect(manager.size).toBe(1);
61
+ // Second spawn should fail due to limit
62
+ await expect(manager.spawn({
63
+ name: 'claw-2',
64
+ relayApiKey: 'rk_live_test',
65
+ })).rejects.toThrow(/Maximum concurrent spawns reached/);
66
+ });
67
+ it('should enforce maxDepth limit', async () => {
68
+ const manager = new SpawnManager({
69
+ mode: 'process',
70
+ maxDepth: 2,
71
+ spawnDepth: 2, // Already at max depth
72
+ });
73
+ await expect(manager.spawn({
74
+ name: 'claw-1',
75
+ relayApiKey: 'rk_live_test',
76
+ })).rejects.toThrow(/Spawn depth limit reached/);
77
+ });
78
+ it('should prevent duplicate spawns by name', async () => {
79
+ const manager = new SpawnManager({ mode: 'process' });
80
+ await manager.spawn({
81
+ name: 'researcher',
82
+ relayApiKey: 'rk_live_test',
83
+ });
84
+ await expect(manager.spawn({
85
+ name: 'researcher',
86
+ relayApiKey: 'rk_live_test',
87
+ })).rejects.toThrow(/already running/);
88
+ });
89
+ it('should list spawned handles', async () => {
90
+ const manager = new SpawnManager({ mode: 'process' });
91
+ await manager.spawn({
92
+ name: 'worker-1',
93
+ relayApiKey: 'rk_live_test',
94
+ });
95
+ const list = manager.list();
96
+ expect(list).toHaveLength(1);
97
+ expect(list[0].displayName).toBe('worker-1');
98
+ });
99
+ it('should release by id', async () => {
100
+ const manager = new SpawnManager({ mode: 'process' });
101
+ const handle = await manager.spawn({
102
+ name: 'worker-1',
103
+ relayApiKey: 'rk_live_test',
104
+ });
105
+ expect(manager.size).toBe(1);
106
+ const released = await manager.release(handle.id);
107
+ expect(released).toBe(true);
108
+ expect(manager.size).toBe(0);
109
+ });
110
+ it('should release by name', async () => {
111
+ const manager = new SpawnManager({ mode: 'process' });
112
+ await manager.spawn({
113
+ name: 'worker-1',
114
+ relayApiKey: 'rk_live_test',
115
+ });
116
+ const released = await manager.releaseByName('worker-1');
117
+ expect(released).toBe(true);
118
+ expect(manager.size).toBe(0);
119
+ });
120
+ it('should return false when releasing non-existent spawn', async () => {
121
+ const manager = new SpawnManager({ mode: 'process' });
122
+ const released = await manager.release('non-existent-id');
123
+ expect(released).toBe(false);
124
+ });
125
+ it('should return handle by id via get()', async () => {
126
+ const manager = new SpawnManager({ mode: 'process' });
127
+ const handle = await manager.spawn({
128
+ name: 'getter-test',
129
+ relayApiKey: 'rk_live_test',
130
+ });
131
+ expect(manager.get(handle.id)).toBeDefined();
132
+ expect(manager.get(handle.id).displayName).toBe('getter-test');
133
+ expect(manager.get('nonexistent')).toBeUndefined();
134
+ });
135
+ it('should persist state on spawn', async () => {
136
+ const { writeFile } = await import('node:fs/promises');
137
+ const manager = new SpawnManager({ mode: 'process' });
138
+ await manager.spawn({
139
+ name: 'persist-test',
140
+ relayApiKey: 'rk_live_test',
141
+ });
142
+ expect(writeFile).toHaveBeenCalled();
143
+ const writeCall = vi.mocked(writeFile).mock.calls[0];
144
+ expect(writeCall[0]).toContain('spawns.json');
145
+ const written = JSON.parse(writeCall[1]);
146
+ expect(written.spawns).toHaveLength(1);
147
+ expect(written.spawns[0].displayName).toBe('persist-test');
148
+ });
149
+ it('should return empty array from loadPersistedState when no file exists', async () => {
150
+ const manager = new SpawnManager({ mode: 'process' });
151
+ const state = await manager.loadPersistedState();
152
+ expect(state).toEqual([]);
153
+ });
154
+ });
155
+ //# sourceMappingURL=spawn-manager.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawn-manager.test.js","sourceRoot":"","sources":["../../src/__tests__/spawn-manager.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,2BAA2B;AAC3B,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC;IACnC,mBAAmB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC;QACrD,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC;YAC/B,EAAE,EAAE,WAAW;YACf,WAAW,EAAE,WAAW;YACxB,SAAS,EAAE,sBAAsB;YACjC,WAAW,EAAE,KAAK;YAClB,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;SAC9C,CAAC;QACF,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;QAC7C,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC;KACpC,CAAC,CAAC;CACJ,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE,GAAG,EAAE,CAAC,CAAC;IACpC,oBAAoB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE;QACpD,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,OAAO;YACL,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,OAAyB,EAAE,EAAE;gBAC9D,SAAS,EAAE,CAAC;gBACZ,OAAO,OAAO,CAAC,OAAO,CAAC;oBACrB,EAAE,EAAE,WAAW,SAAS,EAAE;oBAC1B,WAAW,EAAE,OAAO,CAAC,IAAI;oBACzB,SAAS,EAAE,cAAc,OAAO,CAAC,IAAI,EAAE;oBACvC,WAAW,EAAE,KAAK;oBAClB,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;iBAC9C,CAAC,CAAC;YACL,CAAC,CAAC;YACF,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;YAC7C,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC;SACpC,CAAC;IACJ,CAAC,CAAC;CACH,CAAC,CAAC,CAAC;AAEJ,qBAAqB;AACrB,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,CAAC;IACjC,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,eAAe,CAAC;IACpD,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;IAC/C,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;CAC5C,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;IACxB,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC;CAC3C,CAAC,CAAC,CAAC;AAEJ,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QACtD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;QAEpE,6BAA6B;QAC7B,MAAM,OAAO,CAAC,KAAK,CAAC;YAClB,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,cAAc;SAC5B,CAAC,CAAC;QAEH,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAE7B,wCAAwC;QACxC,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;YACzB,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,cAAc;SAC5B,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC;YAC/B,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,CAAC;YACX,UAAU,EAAE,CAAC,EAAG,uBAAuB;SACxC,CAAC,CAAC;QAEH,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;YACzB,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,cAAc;SAC5B,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAEtD,MAAM,OAAO,CAAC,KAAK,CAAC;YAClB,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,cAAc;SAC5B,CAAC,CAAC;QAEH,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;YACzB,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,cAAc;SAC5B,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QAC3C,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAEtD,MAAM,OAAO,CAAC,KAAK,CAAC;YAClB,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,cAAc;SAC5B,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACpC,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAEtD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC;YACjC,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,cAAc;SAC5B,CAAC,CAAC;QAEH,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAE7B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClD,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAEtD,MAAM,OAAO,CAAC,KAAK,CAAC;YAClB,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,cAAc;SAC5B,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACzD,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAEtD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAC1D,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAEtD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC;YACjC,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,cAAc;SAC5B,CAAC,CAAC;QAEH,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAC7C,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAE,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAChE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAEvD,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QACtD,MAAM,OAAO,CAAC,KAAK,CAAC;YAClB,IAAI,EAAE,cAAc;YACpB,WAAW,EAAE,cAAc;SAC5B,CAAC,CAAC;QAEH,MAAM,CAAC,SAAS,CAAC,CAAC,gBAAgB,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACrD,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAW,CAA+C,CAAC;QACjG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;QACrF,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAEtD,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,kBAAkB,EAAE,CAAC;QACjD,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ws-client.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws-client.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/ws-client.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,324 @@
1
+ import { describe, it, expect, vi, afterEach } from 'vitest';
2
+ import { WebSocketServer } from 'ws';
3
+ // Mock spawn/manager and relaycast SDK to prevent side-effects from gateway.ts module load
4
+ vi.mock('../spawn/manager.js', () => ({
5
+ SpawnManager: vi.fn().mockImplementation(() => ({
6
+ size: 0,
7
+ spawn: vi.fn(),
8
+ release: vi.fn(),
9
+ releaseByName: vi.fn(),
10
+ releaseAll: vi.fn().mockResolvedValue(undefined),
11
+ list: vi.fn().mockReturnValue([]),
12
+ get: vi.fn(),
13
+ })),
14
+ }));
15
+ vi.mock('@relaycast/sdk', () => ({
16
+ RelayCast: vi.fn().mockImplementation(() => ({
17
+ agents: { registerOrGet: vi.fn().mockResolvedValue({ name: 'viewer-test', token: 'tok' }) },
18
+ as: vi.fn().mockReturnValue({
19
+ connect: vi.fn(),
20
+ disconnect: vi.fn().mockResolvedValue(undefined),
21
+ subscribe: vi.fn(),
22
+ on: {
23
+ connected: vi.fn().mockReturnValue(() => { }),
24
+ messageCreated: vi.fn().mockReturnValue(() => { }),
25
+ threadReply: vi.fn().mockReturnValue(() => { }),
26
+ dmReceived: vi.fn().mockReturnValue(() => { }),
27
+ groupDmReceived: vi.fn().mockReturnValue(() => { }),
28
+ commandInvoked: vi.fn().mockReturnValue(() => { }),
29
+ reactionAdded: vi.fn().mockReturnValue(() => { }),
30
+ reactionRemoved: vi.fn().mockReturnValue(() => { }),
31
+ reconnecting: vi.fn().mockReturnValue(() => { }),
32
+ disconnected: vi.fn().mockReturnValue(() => { }),
33
+ error: vi.fn().mockReturnValue(() => { }),
34
+ },
35
+ }),
36
+ })),
37
+ }));
38
+ vi.mock('node:fs/promises', () => ({
39
+ readFile: vi.fn().mockResolvedValue('{"spawns":[]}'),
40
+ writeFile: vi.fn().mockResolvedValue(undefined),
41
+ mkdir: vi.fn().mockResolvedValue(undefined),
42
+ }));
43
+ vi.mock('node:fs', () => ({
44
+ existsSync: vi.fn().mockReturnValue(false),
45
+ }));
46
+ import { OpenClawGatewayClient } from '../gateway.js';
47
+ class MockOpenClawServer {
48
+ wss;
49
+ clients = new Set();
50
+ port = 0;
51
+ acceptAuth;
52
+ challengeDelay;
53
+ sendChallenge;
54
+ chatDelay;
55
+ chatOk;
56
+ constructor(options = {}) {
57
+ this.acceptAuth = options.acceptAuth ?? true;
58
+ this.challengeDelay = options.challengeDelay ?? 0;
59
+ this.sendChallenge = options.sendChallenge ?? true;
60
+ this.chatDelay = options.chatDelay ?? 0;
61
+ this.chatOk = options.chatOk ?? true;
62
+ this.wss = new WebSocketServer({ port: 0 });
63
+ this.port = this.wss.address().port;
64
+ this.wss.on('connection', (ws) => {
65
+ this.clients.add(ws);
66
+ ws.on('close', () => this.clients.delete(ws));
67
+ if (this.sendChallenge) {
68
+ const challenge = JSON.stringify({
69
+ type: 'event',
70
+ event: 'connect.challenge',
71
+ payload: { nonce: 'test-nonce-123', ts: Date.now() },
72
+ });
73
+ if (this.challengeDelay > 0) {
74
+ setTimeout(() => ws.send(challenge), this.challengeDelay);
75
+ }
76
+ else {
77
+ ws.send(challenge);
78
+ }
79
+ }
80
+ ws.on('message', (data) => {
81
+ const msg = JSON.parse(data.toString());
82
+ // Handle connect request
83
+ if (msg.method === 'connect' && msg.id === 'connect-1') {
84
+ if (this.acceptAuth) {
85
+ ws.send(JSON.stringify({ type: 'res', id: 'connect-1', ok: true }));
86
+ }
87
+ else {
88
+ ws.send(JSON.stringify({
89
+ type: 'res',
90
+ id: 'connect-1',
91
+ ok: false,
92
+ error: { code: 'auth_failed', message: 'Invalid token' },
93
+ }));
94
+ }
95
+ return;
96
+ }
97
+ // Handle chat.send RPC
98
+ if (msg.method === 'chat.send') {
99
+ const respond = () => {
100
+ if (this.chatOk) {
101
+ ws.send(JSON.stringify({
102
+ type: 'res',
103
+ id: msg.id,
104
+ ok: true,
105
+ payload: { runId: 'run-1', status: 'accepted' },
106
+ }));
107
+ }
108
+ else {
109
+ ws.send(JSON.stringify({
110
+ type: 'res',
111
+ id: msg.id,
112
+ ok: false,
113
+ error: { code: 'rate_limited', message: 'Too many requests' },
114
+ }));
115
+ }
116
+ };
117
+ if (this.chatDelay > 0) {
118
+ setTimeout(respond, this.chatDelay);
119
+ }
120
+ else {
121
+ respond();
122
+ }
123
+ }
124
+ });
125
+ });
126
+ }
127
+ /** Force-close all connected clients. */
128
+ closeAllClients(code = 1000) {
129
+ for (const ws of this.clients) {
130
+ ws.close(code);
131
+ }
132
+ }
133
+ async close() {
134
+ this.closeAllClients();
135
+ return new Promise((resolve) => {
136
+ this.wss.close(() => resolve());
137
+ });
138
+ }
139
+ }
140
+ // ---------------------------------------------------------------------------
141
+ // Tests
142
+ // ---------------------------------------------------------------------------
143
+ describe('OpenClawGatewayClient', () => {
144
+ let server = null;
145
+ afterEach(async () => {
146
+ if (server) {
147
+ await server.close();
148
+ server = null;
149
+ }
150
+ });
151
+ it('should connect and authenticate (happy path)', async () => {
152
+ server = new MockOpenClawServer();
153
+ const client = new OpenClawGatewayClient('test-token', server.port);
154
+ await client.connect();
155
+ // Should resolve without throwing
156
+ await client.disconnect();
157
+ });
158
+ it('should reject when auth is rejected', async () => {
159
+ server = new MockOpenClawServer({ acceptAuth: false });
160
+ const client = new OpenClawGatewayClient('bad-token', server.port);
161
+ await expect(client.connect()).rejects.toThrow(/auth failed/i);
162
+ await client.disconnect();
163
+ });
164
+ it('should no-op when already connected', async () => {
165
+ server = new MockOpenClawServer();
166
+ const client = new OpenClawGatewayClient('test-token', server.port);
167
+ await client.connect();
168
+ // Second connect should be a no-op (early return)
169
+ await client.connect();
170
+ await client.disconnect();
171
+ });
172
+ it('should timeout when no challenge is sent', async () => {
173
+ server = new MockOpenClawServer({ sendChallenge: false });
174
+ const client = new OpenClawGatewayClient('test-token', server.port);
175
+ // Monkey-patch the timeout to be short for the test
176
+ OpenClawGatewayClient.CONNECT_TIMEOUT_MS = 200;
177
+ await expect(client.connect()).rejects.toThrow(/timed out/i);
178
+ await client.disconnect();
179
+ // Restore
180
+ OpenClawGatewayClient.CONNECT_TIMEOUT_MS = 30_000;
181
+ });
182
+ it('should reject connect when WS closes before auth', async () => {
183
+ server = new MockOpenClawServer({ sendChallenge: false });
184
+ const client = new OpenClawGatewayClient('test-token', server.port);
185
+ // Start connecting, then close server connections immediately
186
+ const connectPromise = client.connect();
187
+ // Give the WS time to establish before closing
188
+ await new Promise((r) => setTimeout(r, 50));
189
+ server.closeAllClients(1000);
190
+ await expect(connectPromise).rejects.toThrow(/closed before authentication|timed out/i);
191
+ await client.disconnect();
192
+ });
193
+ it('should return true on successful sendChatMessage', async () => {
194
+ server = new MockOpenClawServer();
195
+ const client = new OpenClawGatewayClient('test-token', server.port);
196
+ await client.connect();
197
+ const result = await client.sendChatMessage('hello world');
198
+ expect(result).toBe(true);
199
+ await client.disconnect();
200
+ });
201
+ it('should pass idempotencyKey in sendChatMessage params', async () => {
202
+ let receivedParams = {};
203
+ server = new MockOpenClawServer();
204
+ // Intercept the server to capture params
205
+ const origWss = server.wss;
206
+ const origListeners = origWss.listeners('connection');
207
+ origWss.removeAllListeners('connection');
208
+ origWss.on('connection', (ws) => {
209
+ // Re-emit for original handler
210
+ for (const listener of origListeners) {
211
+ listener(ws);
212
+ }
213
+ ws.on('message', (data) => {
214
+ const msg = JSON.parse(data.toString());
215
+ if (msg.method === 'chat.send') {
216
+ receivedParams = msg.params;
217
+ }
218
+ });
219
+ });
220
+ const client = new OpenClawGatewayClient('test-token', server.port);
221
+ await client.connect();
222
+ await client.sendChatMessage('test', 'idem-key-123');
223
+ expect(receivedParams.idempotencyKey).toBe('idem-key-123');
224
+ await client.disconnect();
225
+ });
226
+ it('should return false on RPC error', async () => {
227
+ server = new MockOpenClawServer({ chatOk: false });
228
+ const client = new OpenClawGatewayClient('test-token', server.port);
229
+ await client.connect();
230
+ const result = await client.sendChatMessage('hello');
231
+ expect(result).toBe(false);
232
+ await client.disconnect();
233
+ });
234
+ it('should return false on sendChatMessage when not connected', async () => {
235
+ // No server at all — connect should fail
236
+ const client = new OpenClawGatewayClient('test-token', 1);
237
+ const result = await client.sendChatMessage('hello');
238
+ expect(result).toBe(false);
239
+ await client.disconnect();
240
+ });
241
+ it('should reject pending RPCs on disconnect', async () => {
242
+ // Use a server that never responds to chat.send
243
+ server = new MockOpenClawServer();
244
+ // Override: don't respond to chat.send
245
+ const origWss = server.wss;
246
+ origWss.removeAllListeners('connection');
247
+ origWss.on('connection', (ws) => {
248
+ // Send challenge
249
+ ws.send(JSON.stringify({
250
+ type: 'event',
251
+ event: 'connect.challenge',
252
+ payload: { nonce: 'nonce-1', ts: Date.now() },
253
+ }));
254
+ ws.on('message', (data) => {
255
+ const msg = JSON.parse(data.toString());
256
+ if (msg.method === 'connect') {
257
+ ws.send(JSON.stringify({ type: 'res', id: 'connect-1', ok: true }));
258
+ }
259
+ // Deliberately don't respond to chat.send
260
+ });
261
+ });
262
+ const client = new OpenClawGatewayClient('test-token', server.port);
263
+ await client.connect();
264
+ // Send a message that won't get a response
265
+ const chatPromise = client.sendChatMessage('will be rejected');
266
+ // Disconnect while the RPC is pending
267
+ await client.disconnect();
268
+ const result = await chatPromise;
269
+ expect(result).toBe(false);
270
+ });
271
+ it('should not reconnect after disconnect()', async () => {
272
+ server = new MockOpenClawServer();
273
+ const client = new OpenClawGatewayClient('test-token', server.port);
274
+ await client.connect();
275
+ await client.disconnect();
276
+ // After disconnect, the stopped flag should prevent reconnection.
277
+ // Verify by checking that sendChatMessage returns false without hanging.
278
+ const result = await client.sendChatMessage('should fail');
279
+ expect(result).toBe(false);
280
+ });
281
+ it('should handle non-JSON messages gracefully', async () => {
282
+ server = new MockOpenClawServer({ sendChallenge: false });
283
+ const origWss = server.wss;
284
+ origWss.removeAllListeners('connection');
285
+ origWss.on('connection', (ws) => {
286
+ // Send garbage first, then a proper challenge
287
+ ws.send('not json at all');
288
+ ws.send(JSON.stringify({
289
+ type: 'event',
290
+ event: 'connect.challenge',
291
+ payload: { nonce: 'nonce-2', ts: Date.now() },
292
+ }));
293
+ ws.on('message', (data) => {
294
+ const msg = JSON.parse(data.toString());
295
+ if (msg.method === 'connect') {
296
+ ws.send(JSON.stringify({ type: 'res', id: 'connect-1', ok: true }));
297
+ }
298
+ });
299
+ });
300
+ const client = new OpenClawGatewayClient('test-token', server.port);
301
+ await client.connect();
302
+ await client.disconnect();
303
+ });
304
+ it('should silently ignore unrecognized event messages', async () => {
305
+ server = new MockOpenClawServer();
306
+ const origWss = server.wss;
307
+ const origListeners = origWss.listeners('connection');
308
+ origWss.removeAllListeners('connection');
309
+ origWss.on('connection', (ws) => {
310
+ for (const listener of origListeners) {
311
+ listener(ws);
312
+ }
313
+ // Send some random event after auth
314
+ setTimeout(() => {
315
+ ws.send(JSON.stringify({ type: 'event', event: 'chat.tick', payload: {} }));
316
+ }, 100);
317
+ });
318
+ const client = new OpenClawGatewayClient('test-token', server.port);
319
+ await client.connect();
320
+ await new Promise((r) => setTimeout(r, 150));
321
+ await client.disconnect();
322
+ });
323
+ });
324
+ //# sourceMappingURL=ws-client.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws-client.test.js","sourceRoot":"","sources":["../../src/__tests__/ws-client.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAc,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,eAAe,EAA4B,MAAM,IAAI,CAAC;AAE/D,2FAA2F;AAC3F,EAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE,GAAG,EAAE,CAAC,CAAC;IACpC,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC;QAC9C,IAAI,EAAE,CAAC;QACP,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;QACd,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;QAChB,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE;QACtB,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;QAChD,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC;QACjC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;KACb,CAAC,CAAC;CACJ,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAC;IAC/B,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3C,MAAM,EAAE,EAAE,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE;QAC3F,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC;YAC1B,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;YAChB,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;YAChD,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE;YAClB,EAAE,EAAE;gBACF,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;gBAC5C,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;gBACjD,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;gBAC9C,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;gBAC7C,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;gBAClD,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;gBACjD,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;gBAChD,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;gBAClD,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;gBAC/C,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;gBAC/C,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;aACzC;SACF,CAAC;KACH,CAAC,CAAC;CACJ,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,CAAC;IACjC,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,eAAe,CAAC;IACpD,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;IAC/C,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;CAC5C,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;IACxB,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC;CAC3C,CAAC,CAAC,CAAC;AAEJ,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAmBtD,MAAM,kBAAkB;IACd,GAAG,CAAkB;IACrB,OAAO,GAAgB,IAAI,GAAG,EAAE,CAAC;IACzC,IAAI,GAAG,CAAC,CAAC;IAED,UAAU,CAAU;IACpB,cAAc,CAAS;IACvB,aAAa,CAAU;IACvB,SAAS,CAAS;IAClB,MAAM,CAAU;IAExB,YAAY,UAA6B,EAAE;QACzC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC;QAC7C,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC;QACnD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC;QAErC,IAAI,CAAC,GAAG,GAAG,IAAI,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAuB,CAAC,IAAI,CAAC;QAE1D,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE;YAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACrB,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YAE9C,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACvB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;oBAC/B,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,mBAAmB;oBAC1B,OAAO,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE;iBACrD,CAAC,CAAC;gBAEH,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC;oBAC5B,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;gBAC5D,CAAC;qBAAM,CAAC;oBACN,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC;YAED,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE;gBACxB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAA4B,CAAC;gBAEnE,yBAAyB;gBACzB,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,EAAE,KAAK,WAAW,EAAE,CAAC;oBACvD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;wBACpB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;oBACtE,CAAC;yBAAM,CAAC;wBACN,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;4BACrB,IAAI,EAAE,KAAK;4BACX,EAAE,EAAE,WAAW;4BACf,EAAE,EAAE,KAAK;4BACT,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAE;yBACzD,CAAC,CAAC,CAAC;oBACN,CAAC;oBACD,OAAO;gBACT,CAAC;gBAED,uBAAuB;gBACvB,IAAI,GAAG,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;oBAC/B,MAAM,OAAO,GAAG,GAAG,EAAE;wBACnB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;4BAChB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;gCACrB,IAAI,EAAE,KAAK;gCACX,EAAE,EAAE,GAAG,CAAC,EAAE;gCACV,EAAE,EAAE,IAAI;gCACR,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE;6BAChD,CAAC,CAAC,CAAC;wBACN,CAAC;6BAAM,CAAC;4BACN,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;gCACrB,IAAI,EAAE,KAAK;gCACX,EAAE,EAAE,GAAG,CAAC,EAAE;gCACV,EAAE,EAAE,KAAK;gCACT,KAAK,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,mBAAmB,EAAE;6BAC9D,CAAC,CAAC,CAAC;wBACN,CAAC;oBACH,CAAC,CAAC;oBAEF,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;wBACvB,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;oBACtC,CAAC;yBAAM,CAAC;wBACN,OAAO,EAAE,CAAC;oBACZ,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,yCAAyC;IACzC,eAAe,CAAC,IAAI,GAAG,IAAI;QACzB,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC9B,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,IAAI,MAAM,GAA8B,IAAI,CAAC;IAE7C,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACrB,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,IAAI,qBAAqB,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAEpE,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,kCAAkC;QAClC,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,GAAG,IAAI,kBAAkB,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,IAAI,qBAAqB,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAEnE,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAC/D,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,IAAI,qBAAqB,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAEpE,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,kDAAkD;QAClD,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACxD,MAAM,GAAG,IAAI,kBAAkB,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,IAAI,qBAAqB,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAEpE,oDAAoD;QACnD,qBAA2D,CAAC,kBAAkB,GAAG,GAAG,CAAC;QAEtF,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC7D,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;QAE1B,UAAU;QACT,qBAA2D,CAAC,kBAAkB,GAAG,MAAM,CAAC;IAC3F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAChE,MAAM,GAAG,IAAI,kBAAkB,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,IAAI,qBAAqB,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAEpE,8DAA8D;QAC9D,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QACxC,+CAA+C;QAC/C,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5C,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAE7B,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC;QACxF,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAChE,MAAM,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,IAAI,qBAAqB,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QACpE,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QAEvB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;QAC3D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE1B,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,IAAI,cAAc,GAA4B,EAAE,CAAC;QACjD,MAAM,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAElC,yCAAyC;QACzC,MAAM,OAAO,GAAI,MAA8C,CAAC,GAAG,CAAC;QACpE,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACtD,OAAO,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;QACzC,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE;YAC9B,+BAA+B;YAC/B,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;gBACpC,QAAiC,CAAC,EAAE,CAAC,CAAC;YACzC,CAAC;YACD,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE;gBACxB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAA4B,CAAC;gBACnE,IAAI,GAAG,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;oBAC/B,cAAc,GAAG,GAAG,CAAC,MAAiC,CAAC;gBACzD,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,qBAAqB,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QACpE,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QAEvB,MAAM,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QACrD,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAE3D,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,GAAG,IAAI,kBAAkB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,IAAI,qBAAqB,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QACpE,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QAEvB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACrD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE3B,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,yCAAyC;QACzC,MAAM,MAAM,GAAG,IAAI,qBAAqB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QAE1D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACrD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE3B,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACxD,gDAAgD;QAChD,MAAM,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAClC,uCAAuC;QACvC,MAAM,OAAO,GAAI,MAA8C,CAAC,GAAG,CAAC;QACpE,OAAO,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;QACzC,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE;YAC9B,iBAAiB;YACjB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;gBACrB,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,mBAAmB;gBAC1B,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE;aAC9C,CAAC,CAAC,CAAC;YACJ,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE;gBACxB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAA4B,CAAC;gBACnE,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBAC7B,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBACtE,CAAC;gBACD,0CAA0C;YAC5C,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,qBAAqB,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QACpE,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QAEvB,2CAA2C;QAC3C,MAAM,WAAW,GAAG,MAAM,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;QAE/D,sCAAsC;QACtC,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;QAE1B,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;QACjC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,IAAI,qBAAqB,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QACpE,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;QAE1B,kEAAkE;QAClE,yEAAyE;QACzE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;QAC3D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,GAAG,IAAI,kBAAkB,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAI,MAA8C,CAAC,GAAG,CAAC;QACpE,OAAO,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;QACzC,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE;YAC9B,8CAA8C;YAC9C,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC3B,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;gBACrB,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,mBAAmB;gBAC1B,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE;aAC9C,CAAC,CAAC,CAAC;YACJ,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE;gBACxB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAA4B,CAAC;gBACnE,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBAC7B,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBACtE,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,qBAAqB,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QACpE,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAClC,MAAM,OAAO,GAAI,MAA8C,CAAC,GAAG,CAAC;QACpE,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACtD,OAAO,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;QACzC,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE;YAC9B,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;gBACpC,QAAiC,CAAC,EAAE,CAAC,CAAC;YACzC,CAAC;YACD,oCAAoC;YACpC,UAAU,CAAC,GAAG,EAAE;gBACd,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAC9E,CAAC,EAAE,GAAG,CAAC,CAAC;QACV,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,qBAAqB,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QACpE,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7C,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}